NTP - ¿Cómo son tan precisos los servidores NTP?


52

Me di cuenta de que en mis servidores y otras máquinas el reloj siempre se mueve, por lo que debe sincronizarse para mantenerse preciso.

¿Cómo los relojes del servidor NTP no se desvían y siempre permanecen correctos?


3
Yo, por mi parte, estaría específicamente interesado en un resumen sobre cómo los protocolos NTP permiten que dos computadoras sincronicen su tiempo en una red poco confiable ...
Xavier Nodet

@XavierNodet Aunque estoy seguro de que lo harías, esa no es la pregunta de esta pregunta. Te sugiero que hagas una pregunta tuya (suponiendo que aún no se haya hecho; asegúrate de buscar primero). Esta pregunta es cómo los relojes de los servidores NTP no pueden derivar, mientras que los relojes de hardware contemporáneos se desvían.
un CVn

@XavierNodet Igual aquí. ¡Me gusta aprender cómo y por qué las cosas funcionan como lo hacen! :)
Jason

Respuestas:


58

Los servidores NTP se basan en relojes de alta precisión para el cronometraje de precisión. Una fuente de tiempo común para los servidores centrales de NTP son los relojes atómicos o receptores GPS (recuerde que los satélites GPS tienen relojes atómicos a bordo). Estos relojes se definen como precisos ya que proporcionan una referencia de tiempo muy exacta. No hay nada mágico sobre el GPS o los relojes atómicos que les hagan decir exactamente qué hora es; Debido a cómo funcionan los relojes atómicos, simplemente son muy buenos, ya que una vez se les ha dicho qué hora es, siguen diciendo la hora exacta (ya que el segundo se define en términos de efectos atómicos ). De hecho, vale la pena señalar que el tiempo de GPS es distinto del UTC que estamos más acostumbrados a ver. Estos relojes atómicos a su vez están sincronizados contraHora Atómica Internacional o TAI para no solo decir con precisión el paso del tiempo sino también el tiempo.

Una vez que tiene una hora exacta en un sistema conectado a una red como Internet, es cuestión de ingeniería de protocolos que permite la transferencia de tiempos precisos entre hosts a través de una red poco confiable. A este respecto, un servidor NTP del estrato 2 (o más alejado de la fuente de tiempo real) no es diferente de la sincronización de su sistema de escritorio con un conjunto de servidores NTP.

Para cuando tenga unas pocas horas precisas (obtenidas de los servidores NTP o en otro lugar) y conozca la velocidad de avance de su reloj local (que es fácil de determinar), puede calcular la velocidad de deriva de su reloj local en relación con la "precisión exacta" " paso del tiempo. Una vez bloqueado, este valor se puede usar para ajustar continuamente el reloj local para que informe valores muy cercanos al paso preciso del tiempo, incluso si el reloj local en tiempo real es altamente inexacto; siempre que su reloj local no sea muy errático, esto debería permitir mantener la hora exacta durante algún tiempo, incluso si su fuente de tiempo ascendente no está disponible por algún motivo. Algunas implementaciones de clientes NTP (probablemente la mayoría de ntpdlas implementaciones de servicios de sistema o daemon) hacen esto, y otras (como el compañero de ntpdntpdateque simplemente pone el reloj una vez) no. Esto se conoce comúnmente como un archivo de deriva porque almacena persistentemente una medida de la deriva del reloj, pero estrictamente hablando no tiene que almacenarse como un archivo específico en el disco.

En NTP, el estrato 0 es, por definición, una fuente de tiempo precisa. El estrato 1 es un sistema que utiliza una fuente de tiempo del estrato 0 como su fuente de tiempo (y, por lo tanto, es un poco menos precisa que la fuente de tiempo del estrato 0). El estrato 2 nuevamente es ligeramente menos preciso que el estrato 1 porque está sincronizando su tiempo con la fuente del estrato 1. Y así. En la práctica, esta pérdida de precisión es tan pequeña que es completamente insignificante en todos los casos, excepto en los más extremos.


1
Respetuosamente, "estrato alto" no significa que el número de estrato bajo deba eliminarse de la respuesta. S2 es más alto que S1. Para evidencia, mire la explicación del Prof. Mills (también conocido como Prof NTP) "La subred NTP opera con una jerarquía de niveles, donde a cada nivel se le asigna un número llamado estrato. Los servidores del Estrato 1 (primario) en el nivel más bajo se sincronizan directamente a los servicios horarios nacionales ... Los servidores del estrato 2 (secundario) en el siguiente nivel superior se sincronizan con los servidores del estrato 1 y así sucesivamente ". eecis.udel.edu/~mills/ntp/html/warp.html
dfc

2
Es mejor, pero no creo que el estrato 0 sea "por definición una fuente de tiempo precisa". El estrato 0 simplemente significa que es un reloj de referencia de algún tipo. El hecho de que sea un reloj S0 no significa que esté funcionando correctamente. El nivel del estrato se trata de la distancia desde los relojes de referencia, no se garantiza precisión.
DFC

@dfc Agradezco el aporte ya que me permite mejorar aún más la respuesta. Dicho esto, no estoy de acuerdo con su afirmación de que S0 no significa que sea precisa. Tal vez sea así en un sentido estrictamente estricto, pero si el tiempo dado por un reloj S0 es inexacto, ese reloj es inútil en la práctica como fuente S0. Ergo, los relojes S0 son precisos. O dicho de otra manera, si tiene un conjunto aislado de hosts, uno de los cuales está conectado a una fuente de tiempo S0 y todos los demás se sincronizan con eso, el tiempo dado por la fuente S0 es la hora correcta en lo que respecta a esos hosts. No hay que preocuparse por TAI entonces.
un CVn

10

En el cronometraje de la red, la especificación que le dice cómo un servidor obtiene su fuente de tiempo se llama Nivel de Estrato. Cuanto más bajo sea el nivel, mejor será el tiempo de ese servidor.

Los dispositivos de nivel 0 del estrato no están conectados directamente a la red. Son el dispositivo de cronometraje en sí mismo, y deben conectarse a una computadora para obtener el tiempo real. Esta computadora se convierte en un servidor NTP de nivel 1 de Stratum.

Una computadora que se conecta a un nivel de Estrato 1 también puede convertirse en un servidor de tiempo, pero luego sería un nivel de estrato 2. A medida que las computadoras se conectan a servidores de tiempo, cuanto más bajo sea su nivel de estrato, más preciso puede ser su mantenimiento de tiempo.

Los dispositivos de nivel 0 del estrato incluyen relojes atómicos que participan en TAI (hora atómica internacional)o sincronizado con él, y los receptores de señal horaria enviados por dicho reloj. Los más comunes son los receptores de cronometraje GPS con una interfaz apropiada que incluye la señal GPS PPS. La señal PPS, cuando el GPS tiene un buen bloqueo en varios satélites, envía un pulso por segundo, y el borde de ataque de ese pulso está dentro de los nanosegundos del inicio real de ese segundo. Dependiendo de la especificación del receptor GPS, la señal PPS puede ser más o menos precisa. Esto se debe a que cada satélite GPS tiene un reloj atómico. Una vez que el receptor GPS ha encontrado su propia posición y la ubicación de los satélites GPS que está escuchando, puede corregir la propagación de RF y darle un tiempo casi tan preciso como tener un reloj atómico justo en el receptor GPS.

Entonces, los servidores de nivel 1 de Stratum se conectan a relojes atómicos o receptores GPS, y los servidores NTP se conectan a ellos. Incluso conectarse a un servidor de nivel 2 o 3 de estrato con ajustes frecuentes proporcionará a su computadora una precisión de tiempo medida en nanosegundos. Pero si necesita una mejor sincronización, conéctese a un servidor de nivel uno de estrato o compre un receptor GPS de cronometraje apropiado y conviértase en una fuente de nivel uno de estrato.


44
Hay muchas, muchas personas convirtiendo las computadoras Raspberry PI en servidores NTP Stratum 1 con la adición de receptores GPS baratos. Puede tener un servidor Stratum nivel 1 completo en su red por menos de $ 80: google.com/search?q=raspberry+pi+ntp+gps+pps
Adam Davis

2
Entonces, en teoría, un teléfono inteligente con un receptor GPS (casi todos ahora) podría ser un dispositivo de estrato 0/1.
Bob

1
Si el teléfono utilizó la salida pps del receptor GPS, sí. Tenga en cuenta que los teléfonos CDMA también deben usar el tiempo preciso, por lo que el chipset CDMA también podría ser una fuente de nivel 0 para el procesador de teléfonos. Sin embargo, un módulo gps oem y raspberry pi sería más barato.
Adam Davis

2
Sin embargo, una Raspberry Pi no es un gran servidor NTP, ya que utiliza un adaptador de red un tanto escamoso y de baja calidad (el chip LAN9512).
duskwuff

1
@duskwuff Sí, pero es mejor que muchos servidores Stratum de nivel 2 a través de Internet, y con la configuración NTP configurada correctamente tanto en el servidor como en el cliente, se puede superar la fluctuación y el desplazamiento introducidos por el chip LAN basado en USB de baja calidad. Por el costo, es difícil de superar, pero gasta un poco más y puedes solucionar este problema menor.
Adam Davis

3

Todos los relojes se desvían hasta cierto punto, depende de la fuente de la señal de sincronización y de qué tan bien se rastrea. En una PC, este es el HPET en estos días, pero la PC puede perder la cuenta de cuántos tics han pasado si se sobrecarga.

Es probable que los servidores NTP con los que habla su máquina también estén perdiendo tiempo, sin embargo, vuelven su tiempo a una mejor fuente.

En última instancia, las mejores fuentes son los relojes de alta precisión como los relojes atómicos. Puede pensar en NTP como una red de máquinas, cada una tendrá una serie de fuentes en las que se basa el tiempo y sesga su propio tiempo a lo que se considera más preciso.

Esto se rige por una fuente que declara su estrato. Un reloj atómico o GPS es el estrato 0, y la autoridad sobre qué hora es. Cada capa a partir de eso es el siguiente estrato - estrato 1, y verificará una serie de fuentes de estrato 0 junto con sus pares en el mismo nivel, para verificar la cordura de las fuentes de tiempo.

Es probable que esté hablando con una fuente de tiempo de estrato 2 o 3.


1

Lo que escribieron los demás es cierto: un servidor Stratum 1 obtiene su tiempo de un dispositivo Stratum 0. No sé en qué intervalos de tiempo sucede eso, pero creo que son bastante precisos allí.

Un servidor Stratum n con n> 1 obtiene su tiempo a través de NTP desde un servidor Stratum n-1. Eso significa que se sincroniza a intervalos regulares. Al iniciar el servicio NTP, la sincronización ocurre en intervalos bastante cortos y, con el tiempo, los intervalos comienzan a aumentar. Finalmente, el intervalo es tan grande como 1024 s, aproximadamente 17 minutos.

Lo que no se ha abordado es la pregunta ¿qué sucede entre ese momento? Bueno, hay una instalación llamada archivo de deriva . Ayuda a NTP a monitorear cualquier deriva entre el reloj local y el reloj de referencia. La frecuencia del reloj local se ajusta de acuerdo con la deriva detectada, de modo que la hora también sea precisa entre las encuestas del servidor.

Otra implementación de NTP podría usar otras instalaciones, pero una cosa es común: la necesidad y la capacidad de ajustar la frecuencia del reloj.


Sin embargo, argumentaría que el archivo de deriva es un detalle de implementación de una implementación de software en particular, y no está relacionado con la forma en que el reloj de hardware del servidor NTP puede ser tan preciso.
un CVn
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.