NTP - Como os servidores NTP são tão precisos


52

Percebi que, nos meus servidores e outras máquinas, o relógio sempre muda, então ele precisa ser sincronizado para permanecer preciso.

Como os relógios do servidor NTP não são desviados e sempre permanecem corretos?


3
Eu, por exemplo, estaria interessado especificamente em um resumo sobre como os protocolos NTP permite que dois computadores para sincronizar seu tempo através de uma rede não confiável ...
Xavier Nodet

@XavierNodet Embora eu tenha certeza que sim, não é isso que esta pergunta está perguntando. Sugiro que você faça uma pergunta sua (supondo que ela ainda não tenha sido feita; pesquise primeiro). Esta pergunta está perguntando como os relógios dos servidores NTP não podem ser desviados, enquanto os relógios de hardware contemporâneos são desviados.
um CVn

@XavierNodet O mesmo aqui. Gosto de aprender sobre como e por que as coisas funcionam da maneira que funcionam! :)
Jason

Respostas:


58

Os servidores NTP contam com relógios de alta precisão para cronometrar com precisão. Uma fonte de tempo comum para servidores NTP centrais são relógios atômicos ou receptores de GPS (lembre-se de que os satélites GPS possuem 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 no GPS ou nos relógios atômicos que os fazem dizer exatamente a que horas são; por causa de como os relógios atômicos funcionam, eles são simplesmente muito bons, depois de saberem que horas são, continue dizendo a hora exata (já que o segundo é definido em termos de efeitos atômicos ). De fato, vale a pena notar que o tempo do GPS é distinto do UTC que estamos mais acostumados a ver. Esses relógios atômicos, por sua vez, são sincronizados contraHorário atômico internacional ou TAI para não apenas contar com precisão a passagem do tempo, mas também a hora.

Depois de ter um horário exato em um sistema conectado a uma rede como a Internet, é uma questão de engenharia de protocolo que permite a transferência de horários precisos entre hosts em uma rede não confiável. Nesse sentido, um servidor NTP do estrato 2 (ou mais distante da fonte de tempo real) não é diferente do sistema de desktop sincronizado com um conjunto de servidores NTP.

Quando você tiver alguns horários precisos (conforme obtido nos servidores NTP ou em outro local) e souber a taxa de avanço do relógio local (que é fácil de determinar), poderá calcular a taxa de desvio do relógio local em relação à "precisão exata" " 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 exata do tempo, mesmo que o relógio em tempo real local seja altamente impreciso; desde que o relógio local não seja muito irregular, isso deve permitir manter a hora exata por algum tempo, mesmo que sua fonte de horário upstream fique indisponível por qualquer motivo. Algumas implementações de clientes NTP (provavelmente a maioria ntpddas implementações de serviços daemon ou de sistema) fazem isso e outras (como a companheira do ntpdntpdateque simplesmente ajusta o relógio uma vez) não. Isso geralmente é 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 usa uma fonte de tempo do estrato 0 como fonte de tempo (e, portanto, é um pouco menos preciso que a fonte de tempo do estrato 0). O estrato 2 novamente é 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 desprezível em todos os casos, exceto nos mais extremos.


11
Respeitosamente, "estrato alto" não significa número baixo de estrato; isso deve ser removido da resposta. S2 é maior que S1. Para obter evidências, veja a explicação do Prof. Mills (também conhecido como Prof NTP) "A sub-rede NTP opera com uma hierarquia de níveis, onde cada nível recebe um número chamado estrato. Os servidores do estrato 1 (primário) no nível mais baixo são sincronizados diretamente aos serviços de horário nacional ... Os servidores do estrato 2 (secundário) no próximo nível superior são sincronizados com os servidores do estrato 1 e assim por diante. " eecis.udel.edu/~mills/ntp/html/warp.html
dfc

2
É melhor, mas não acho que o estrato 0 seja "por definição uma fonte de tempo precisa". O estrato 0 significa simplesmente que é algum tipo de relógio de referência. Só porque é um relógio S0, não significa que esteja funcionando corretamente. O nível do estrato está próximo da distância dos relógios de referência e não da precisão garantida.
dfc

@dfc Agradeço a contribuição, pois ela permite que a resposta seja ainda melhor. Dito isto, discordo de sua afirmação de que S0 não significa que seja preciso. Talvez seja assim em um sentido perfeitamente estrito, mas se o tempo dado por um relógio S0 for impreciso, esse relógio será inútil na prática como fonte S0. Portanto, os relógios S0 são precisos. Ou, de outra maneira, se você tiver um conjunto isolado de hosts, um dos quais está conectado a uma fonte de tempo S0 e todos os outros são sincronizados com isso, o tempo fornecido pela fonte S0 é o tempo correto no que diz respeito a esses hosts. Não precisa se preocupar com TAI então.
a CVn

10

Na cronometragem da rede, a especificação que informa como um servidor obtém sua fonte de tempo é chamada de Nível de Estrato. Quanto menor o nível, melhor o tempo de manutenção desse servidor.

Os dispositivos do nível 0 do estrato não estão conectados diretamente à rede. Eles são o próprio dispositivo de cronometragem e devem estar conectados a um computador para derivar o tempo real. Este computador se torna um servidor NTP Stratum nível 1.

Um computador que se conecta a um nível 1 do estrato também pode se tornar um servidor de horário, mas seria um nível 2 do estrato. À medida que os computadores se conectam a servidores de horário, quanto menor o nível do estrato, mais preciso pode ser o tempo.

Os dispositivos do nível 0 do estrato incluem relógios atômicos que participam do TAI (tempo atômico internacional)ou sincronizado com ele, e receptores de sinal de tempo enviados por esse relógio. Geralmente, esses são receptores de cronometragem GPS com uma interface apropriada que inclui o sinal GPS PPS. O sinal PPS, quando o GPS possui um bom bloqueio em vários satélites, envia um pulso por segundo, e a borda principal desse pulso fica em nanossegundos do início real desse segundo. Dependendo da especificação do receptor GPS, o sinal PPS pode ser mais ou menos preciso. Isso ocorre porque cada satélite GPS possui um relógio atômico. Depois que o receptor GPS encontra sua própria posição e a localização dos satélites GPS que está ouvindo, ele pode corrigir a propagação de RF e fornecer um tempo quase tão preciso quanto ter um relógio atômico no receptor GPS.

Portanto, os servidores do nível 1 do Stratum se conectam a relógios atômicos, ou receptores GPS, e os servidores NTP a eles. Mesmo a conexão a um servidor de nível 2 ou 3 do estrato, com ajustes frequentes, fornecerá ao computador precisão de tempo medida em nanossegundos. Porém, se você precisar de um tempo melhor, conecte-se a um servidor de nível um no estrato ou compre um receptor GPS de cronometragem apropriado e torne-se você mesmo uma fonte de nível um no estrato.


4
Existem muitas pessoas transformando computadores Raspberry PI em servidores NTP Stratum 1 com a adição de receptores GPS baratos. Você pode ter um servidor completa Estrato nível 1 na sua rede por menos de $ 80: google.com/search?q=raspberry+pi+ntp+gps+pps
Adam Davis

2
Então, em teoria, um smartphone com um receptor de GPS (praticamente todos agora) poderia ser um dispositivo estrato 0/1?
Bob

11
Se o telefone usou a saída pps do receptor GPS, sim. Observe que os telefones CDMA também precisam usar temporização precisa, portanto o chipset CDMA também pode ser uma fonte de nível 0 no nível estrato do processador do telefone. Um módulo oem gps e raspberry pi seria mais barato.
Adam Davis

2
Porém, um Raspberry Pi não é um ótimo servidor NTP, pois está usando um adaptador de rede um tanto esquisito e de baixa qualidade (o chip LAN9512).
duskwuff

11
@duskwuff Sim, mas é melhor do que muitos servidores Stratum nível 2 pela Internet, e com as configurações NTP adequadamente configuradas no servidor e no cliente, a instabilidade e o deslocamento introduzidos pelo chip LAN de baixa qualidade com base em USB podem ser superados. Pelo custo, é difícil de superar, mas gaste um pouco mais e você poderá corrigir esse pequeno problema.
Adam Davis

3

Todos os relógios flutuam até certo ponto, depende da fonte do sinal de temporização e de quão bem ele é rastreado. Em um PC, esse é o HPET hoje em dia, mas o PC pode perder o controle de quantos ticks passaram se sobrecarregados.

Os servidores NTP com os quais a máquina fala provavelmente também estão perdendo tempo; no entanto, eles retornam o tempo para uma fonte melhor.

Por fim, as melhores fontes são relógios altamente precisos, como relógios atômicos. Você pode pensar no NTP como uma rede de máquinas, cada uma com um número de fontes nas quais confia há tempo e inclina seu próprio tempo para o que é considerado mais preciso.

Isso é governado por uma fonte que declara seu estrato. Um relógio atômico ou GPS é o estrato 0 e a autoridade em que horas são. Cada camada que sai desse é o próximo estrato - estrato 1, e verificará várias fontes do estrato 0, juntamente com colegas do mesmo nível, para verificar as fontes de tempo.

É provável que você esteja conversando com uma fonte de tempo de 2 ou 3 estratos.


1

O que os outros escreveram é verdade: um servidor Stratum 1 obtém seu tempo com um dispositivo Stratum 0. Não sei em que intervalos de tempo isso acontece, mas acho que eles são bastante precisos lá.

Um servidor Stratum n com n> 1 obtém seu tempo via NTP a partir de um servidor Stratum n-1. Isso significa que ele é sincronizado com intervalos regulares. Ao iniciar o serviço NTP, a sincronização ocorre em intervalos muito curtos e, com o tempo, os intervalos começam a aumentar. Eventualmente, o intervalo é tão grande quanto 1024 s, cerca de 17 minutos.

O que não foi abordado é a questão do que acontece nesse período? Bem, existe uma instalação chamada arquivo de deriva . Ajuda o NTP a monitorar qualquer desvio entre o relógio local e o relógio de referência. A frequência do relógio local é então ajustada de acordo com o desvio detectado, para que a hora também seja precisa entre as pesquisas do servidor.

Outra implementação do NTP pode usar outras instalações, mas uma coisa é comum: a necessidade e a capacidade de ajustar a frequência do relógio.


No entanto, eu argumentaria que o arquivo deriva é um detalhe de implementação de uma implementação de software específica e não está relacionado a como o relógio de hardware do servidor NTP pode ser tão preciso.
um CVn
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.