• Inicio
  • Recursos
  • Blog
  • La redundancia en el protocolo NTP
La redundancia en el protocolo NTP

Averías y fallos son ineluctables para las redes y equipos. También es el caso para los mecanismos de sincronización horaria en los que dependen varios servicios y aplicaciones. Si es imposible hacer que una red sea completamente tolerante a las averías, es posible hacer que sea resistente a un gran número de fallos con una buena planificación.

Para resistir a averías y fallos, el método más eficaz es implementar una redundancia de los equipos y de las conexiones. De hecho, la avería de un equipo no tendrá consecuencias si otro toma el relevo inmediatamente. En el caso específico de las redes que utilizan el NTP (Network Time Protocol) como sistema de sincronización horaria, es posible y recomendable utilizar mecanismos de redundancia para hacer que el sistema esté más robusto.

Cuando se habla de redundancia, es importante evaluar todos los aspectos de la red que pueden fallar, tal como cada alimentación eléctrica, cada servidor, cada router, etc. Por ejemplo, resulta importante tener varias fuentes de alimentación eléctrica, con algunas independientes de la red eléctrica.

Cuando uno quiere instalar una red NTP, es esencial conocer las medidas que implementar para hacerla más resistente contra las averías de los diferentes equipos de red (servidores y routers por ejemplo).

Redundancia de las fuentes de tiempo

Lo primero que hay que hacer para garantizar la continuidad de la sincronización horaria en caso de fallos es sincronizar una red con varias fuentes de tiempo. El protocolo NTP ha sido creado para funcionar con varias fuentes de tiempo. Esta redundancia asegurará la continuidad de operación en caso de fallo y/o de avería de una fuente de tiempo. Hace falta utilizar muchas fuentes de tiempo y de todos tipos. De hecho, al sólo utilizar fuentes de tiempo públicas como servidores de estrato 1, uno se vuelve dependiente de la red Internet y por tanto, de sus averías. Idealmente, hace falta utilizar fuentes de tiempo de estrato 0, como el GPS.

En el caso en el que cada reloj se sincroniza cuando recibe un mensaje, parece evidente que conectarse a varias fuentes de tiempo no permite impedir los desfases de una o varias fuentes de tiempo. Entonces, hace falta elegir la fuente de tiempo más adecuada o calcular un tiempo medio satisfactorio para garantizar la mejor sincronización con los relojes de referencia.

Para ello, el protocolo NTP utiliza una variante del algoritmo de Marzullo, llamado algoritmo de intersección. El algoritmo tiene como objetivo encontrar el mejor servidor que utilizar para sincronizar el reloj local. A partir de las características de los diferentes servidores que envían sus marcas de tiempo, el algoritmo crea una lista de servidores entre los que elegirá el más adecuado.

Después, el algoritmo filtra esta lista para rechazar los servidores que no responden a los criterios de elegibilidad, como una distancia excesiva, o el hecho de que un servidor pertenezca a un estrato demasiado lejos en la jerarquía NTP.

Una vez limpiada la lista, el algoritmo busca el mejor servidor de la lista para actualizar el reloj local.

Para cada servidor, se considera un intervalo de tiempo basado en la marca de tiempo enviada, extendido según la distancia entre el reloj y el servidor. El objetivo es encontrar una intersección de intervalos que incluya al menos la mitad de los servidores. Si tal intersección existe, los servidores que la componen se tienen en cuenta para el resto del algoritmo. Después, estos servidores se clasifican en función de la calidad de su reloj, que depende del desfase, la distancia al servidor y el jitter (la variación de la latencia). Se trata de un algoritmo iterativo: elimina un valor atípico en cada ronda, hasta que desaparezcan todos.

En caso de que ya no hay valores atípicos, si queda un número suficiente de servidores según los parámetros del algoritmo (1 por defecto: para mayor seguridad, se puede aumentar este valor), entonces se elige el servidor más adecuado entre los que quedan, para sincronizar el reloj local.

Gracias al algoritmo Marzullo, al conectar los equipos a un número suficiente de fuentes de tiempo, es poco probable encontrarse sin fuente de tiempo fiable para sincronizar los relojes de la red.

Redundancia en la red

Sin embargo, el hecho de utilizar varias fuentes de tiempo no es suficiente para asegurar la continuidad del servicio en caso de avería. De hecho, hace falta tener en cuenta todo lo que ocurre dentro de una red. Una de las soluciones para mantener la sincronización horaria cuando ya no funcionan los relojes de referencia es el emparejamiento.

El emparejamiento permite que dos equipos desempeñen alternativamente los papeles de cliente y de servidor el uno para el otro para mantener la sincronización. Cabe mencionar que en el caso del emparejamiento, los relojes juegan un papel simétrico al ser a la vez cliente y servidor. Esto ralentiza el proceso de sincronización, puesto que los servidores intercambian más mensajes. Puesto que ambos relojes están en pie de igualdad, tienen como objetivo sincronizarse entre sí y no con una fuente externa. El emparejamiento permite mantener una verdadera proximidad entre los pares de relojes. Aunque el emparejamiento es imprescindible en algunas aplicaciones, no garantiza una marca de tiempo coherente con una fuente externa, lo que puede ser problemático para aplicaciones como el registro de las manipulaciones de datos.

Otro mecanismo de redundancia en una red NTP es el modo Anycast. De hecho, en el modo Anycast, varios servidores comparten la misma dirección Anycast. Entonces, los clientes no saben exactamente qué servidor responderá a su solicitud. Los routers determinan qué servidor debe responder a qué solicitud al elegir el servidor más cercano, tanto topológicamente como en términos de latencia. El modo Anycast presenta otras ventajas además de la redundancia. De hecho, dado que la red de enrutamiento elige automáticamente el servidor más cercano para responder a la solicitud, la carga de red se ve reducida así como los tiempos de transmisión entre el cliente y el servidor. Por consiguiente, la precisión de la sincronización se ve mejorada.

Sin embargo, la configuración Anycast es más compleja de implementar con relación al modo cliente/servidor tradicional. Entonces, hace falta equiparse con servidores de tiempo y equipos compatibles. Además, es necesario asegurarse que los servidores que están conectados a una misma dirección Anycast se sincronicen correctamente entre sí para que la marca de tiempo recibida no dependa del servidor que responde a la solicitud.

Por estas razones, puede ser tentador utilizar servidores públicos «pool». Se trata del mismo principio de funcionamiento que el modo Anycast, es decir, varios servidores públicos están conectados a la misma dirección IP. Esto permite que siempre haya un servidor respondiendo cuando se envía una solicitud.

Sin embargo, aunque no resulta importante poder identificar qué servidor está respondiendo cuando uno controla las maquinas de su red, se vuelve imprescindible cuando uno utiliza servidores públicos que proporcionan una tarea tan fundamental como la sincronización horaria. Por consiguiente, no se recomienda utilizar este método.

Supervisión y seguridad

El hecho de implementar mecanismos de redundancia no nos debe hacer perder de vista la seguridad de la red. En efecto, es importante asegurar la seguridad de las conexiones entre los diferentes equipos para protegerse contra las averías y los ataques. Una supervisión eficaz permite sacar el máximo provecho de la redundancia NTP. De hecho, al vigilar la actividad de los servidores, se puede detectar cuanto antes los fallos que pueden ocurrir en un equipo. Por consiguiente, en caso de fallos de un servidor, es más fácil sincronizar los equipos con otros servidores de la red para no interromper el servicio, mientras se está reparando el equipo defectuoso.

Experto en gestión del tiempo y presente en más de 140 países, Bodet Time es el líder francés en sincronización horaria y tiempo frecuencia.

¿Necesita asistencia para diseñar una arquitectura de distribución horaria eficaz, segura y altamente disponible?

Contáctenos

Compartir el artículo