Como os servidores NTP gerenciam para permanecerem tão precisos?
Muitos de nós tiveram o problema ocasional com nossos computadores e outros dispositivos mantendo as configurações de tempo precisas, mas uma rápida sincronização com um servidor NTP faz tudo bem novamente. Mas se nossos próprios dispositivos podem perder a precisão, como os servidores NTP conseguem ficar tão precisos??
A sessão de perguntas e respostas de hoje nos é oferecida por cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade..
Foto cedida por LEOL30 (Flickr).
A questão
O leitor do SuperUser, Frank Thornton, quer saber como os servidores NTP podem permanecer tão precisos:
Tenho notado que nos meus servidores e outras máquinas, os relógios sempre se movem para que eles tenham que sincronizar para permanecerem precisos. Como os relógios do servidor NTP se mantêm à deriva e sempre permanecem tão precisos??
Como os servidores NTP conseguem permanecer tão precisos??
A resposta
O colaborador do SuperUser Michael Kjorling tem a resposta para nós:
Servidores NTP contam com relógios altamente precisos para cronometragem de precisão. Uma fonte de tempo comum para os servidores NTP centrais são os relógios atômicos ou os receptores de GPS (lembre-se de que os satélites de GPS têm relógios atômicos a bordo). Esses relógios são definidos como precisos, pois fornecem uma referência de tempo altamente exata.
Não há nada mágico sobre GPS ou relógios atômicos que os façam dizer exatamente que horas são. Por causa de como os relógios atômicos funcionam, eles são simplesmente muito bons, tendo sido dito uma vez que horas são, guardando tempo exato (já que o segundo é definido em termos de efeitos atômicos). Na verdade, vale a pena notar que o horário do GPS é diferente do UTC que estamos mais acostumados a ver. Esses relógios atômicos, por sua vez, são sincronizados contra o Tempo Atômico Internacional ou TAI, a fim de não apenas dizer com precisão a passagem do tempo, mas também a Tempo.
Uma vez que você tenha um horário exato em um sistema conectado a uma rede como a Internet, é uma questão de engenharia de protocolo permitir a transferência de tempos precisos entre hosts em uma rede não confiável. A este respeito, um servidor NTP Stratum 2 (ou mais distante da fonte de tempo real) não é diferente do sistema de desktop sincronizado com um conjunto de servidores NTP.
No momento em que você tem alguns tempos precisos (como obtido em servidores NTP ou em outro lugar) e sabe a taxa de avanço de seu relógio local (que é fácil de determinar), você pode calcular a taxa de desvio do relógio local em relação à " passagem do tempo. Uma vez bloqueado, esse valor pode ser usado para ajustar continuamente o relógio local para que ele relate valores muito próximos da passagem precisa do tempo, mesmo que o próprio relógio local em tempo real seja altamente impreciso. Enquanto seu relógio local não for altamente errático, isso deve permitir manter o tempo exato por algum tempo, mesmo que sua fonte de tempo de upstream fique indisponível por qualquer motivo.
Algumas implementações de clientes NTP (provavelmente a maioria das implementações do daemon ntpd ou do serviço do sistema) fazem isso, e outras (como o ntpdate do ntpd, que simplesmente configura o relógio uma vez) não. Isso é comumente chamado de arquivo de desvio porque armazena persistentemente uma medida de desvio do relógio, mas estritamente falando não precisa ser armazenado como um arquivo específico no disco.
No NTP, o Estrato 0 é, por definição, uma fonte de tempo precisa. O Estrato 1 é um sistema que utiliza uma fonte de tempo Stratum 0 como sua fonte de tempo (e, portanto, é um pouco menos preciso do que a fonte de tempo Stratum 0). O estrato 2 é um pouco menos preciso que o Estrato 1 porque está sincronizando seu tempo com a fonte do Estrato 1 e assim por diante. Na prática, essa perda de precisão é tão pequena que é completamente insignificante em todos os casos, exceto nos mais extremos..
Tem algo a acrescentar à explicação? Som desligado nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.