La sincronización de relojes es un tema de la ciencia informática y la ingeniería que tiene como objetivo coordinar relojes que de otro modo serían independientes . Incluso cuando inicialmente se configuran con precisión, los relojes reales diferirán después de cierto tiempo debido a la deriva del reloj , causada por relojes que cuentan el tiempo a velocidades ligeramente diferentes. Hay varios problemas que ocurren como resultado de las diferencias en la velocidad del reloj y varias soluciones, algunas de las cuales son más aceptables que otras en ciertos contextos. [1]
En la comunicación en serie , la sincronización de reloj puede referirse a la recuperación de reloj que logra la sincronización de frecuencia, a diferencia de la sincronización de fase completa . Dicha sincronización de reloj se utiliza en la sincronización en telecomunicaciones y la detección automática de velocidad en baudios . [2]
El funcionamiento plesiócrono o isócrono se refiere a un sistema con sincronización de frecuencia y restricciones flexibles en cuanto a la sincronización de fase. El funcionamiento sincrónico implica una sincronización más estricta basada en el tiempo, tal vez además de la frecuencia.
Como resultado de las dificultades para gestionar el tiempo a escalas más pequeñas, existen problemas asociados con el desfase horario que adquieren mayor complejidad en la computación distribuida , en la que varias computadoras necesitarán obtener la misma hora global. Por ejemplo, en los sistemas Unix, el comando make se utiliza para compilar código nuevo o modificado y busca evitar la recompilación del código sin cambios. El comando make utiliza el reloj de la máquina en la que se ejecuta para determinar qué archivos fuente necesitan ser recompilados. Si las fuentes residen en un servidor de archivos separado y las dos máquinas tienen relojes no sincronizados, el programa make podría no producir los resultados correctos. [3]
La sincronización es necesaria para una reproducción precisa de contenido multimedia . La sincronización del reloj es un componente importante de los sistemas de audio por Ethernet .
En un sistema con un servidor central, la solución de sincronización es trivial: el servidor dictará la hora del sistema. El algoritmo de Cristian y el algoritmo de Berkeley son soluciones potenciales al problema de sincronización del reloj en este entorno.
En la computación distribuida, el problema se vuelve más complejo porque no es fácil conocer la hora global. La solución de sincronización de relojes más utilizada en Internet es el Protocolo de Tiempo de Red (NTP), que es una arquitectura cliente-servidor en capas basada en el paso de mensajes del Protocolo de Datagramas de Usuario (UDP). Las marcas de tiempo de Lamport y los relojes vectoriales son conceptos del reloj lógico en la computación distribuida.
En una red inalámbrica , el problema se vuelve aún más desafiante debido a la posibilidad de colisión de los paquetes de sincronización en el medio inalámbrico y la mayor tasa de deriva de los relojes en los dispositivos inalámbricos de bajo costo. [4] [5]
El algoritmo de Berkeley es adecuado para sistemas en los que no hay un reloj de radio . Este sistema no tiene forma de asegurarse de la hora real, salvo manteniendo una hora promedio global como hora global. Un servidor de hora obtendrá periódicamente la hora de todos los clientes de hora, promediará los resultados y luego informará a los clientes sobre el ajuste que se debe realizar en sus relojes locales para lograr el promedio. Este algoritmo resalta el hecho de que los relojes internos pueden variar no solo en la hora que contienen, sino también en la frecuencia del reloj .
La sincronización mutua de redes por muestreo de reloj (CS-MNS) es adecuada para aplicaciones distribuidas y móviles. Se ha demostrado que es escalable en redes en malla que incluyen nodos no adyacentes vinculados indirectamente y es compatible con IEEE 802.11 y estándares similares. Puede tener una precisión del orden de unos pocos microsegundos, pero requiere conectividad inalámbrica física directa con un retraso de enlace insignificante (menos de 1 microsegundo) en los enlaces entre nodos adyacentes, lo que limita la distancia entre nodos vecinos a unos pocos cientos de metros. [6]
El algoritmo de Cristian se basa en la existencia de un servidor de tiempo. [7] El servidor de tiempo mantiene su reloj mediante un reloj de radio u otra fuente de tiempo precisa, y luego todos los demás equipos del sistema permanecen sincronizados con él. Un cliente de tiempo mantendrá su reloj realizando una llamada de procedimiento al servidor de tiempo. Las variaciones de este algoritmo permiten realizar cálculos de tiempo más precisos al tener en cuenta el tiempo de propagación de radio de la red .
Además de su uso en la navegación, el Sistema de Posicionamiento Global (GPS) también se puede utilizar para la sincronización de relojes. La precisión de las señales horarias del GPS es de ±10 nanosegundos. [8] El uso del GPS (u otros sistemas de navegación por satélite ) para la sincronización requiere un receptor conectado a una antena con una vista despejada del cielo.
Los códigos de tiempo IRIG son formatos estándar para transferir información de sincronización. Los estándares de frecuencia atómica y los receptores GPS diseñados para sincronización de precisión suelen estar equipados con una salida IRIG. Los estándares fueron creados por el Grupo de Trabajo de Telecomunicaciones del Grupo de Instrumentación Inter-Range (IRIG) del ejército de los Estados Unidos, el organismo de normalización del Consejo de Comandantes de Campo. El trabajo sobre estos estándares comenzó en octubre de 1956, y los estándares originales fueron aceptados en 1960. [9]
El Protocolo de Tiempo de Red (NTP) es un protocolo muy robusto, ampliamente utilizado en Internet. Probado a lo largo de los años, generalmente se lo considera el protocolo de sincronización de tiempo distribuido de última generación para redes no confiables . Puede reducir los desfases de sincronización a tiempos del orden de unos pocos milisegundos en Internet pública y a niveles inferiores a milisegundos en redes de área local .
También se puede utilizar una versión simplificada del protocolo NTP, el Protocolo simple de tiempo de red (SNTP), como protocolo de sincronización primaria/secundaria sin estado de disparo único puro , pero carece de las características sofisticadas de NTP y, por lo tanto, tiene niveles de rendimiento y confiabilidad mucho más bajos.
El Protocolo de Tiempo de Precisión (PTP) es un protocolo maestro/esclavo para la entrega de hora altamente precisa a través de redes de área local.
El algoritmo de sincronización de tiempo de transmisión de referencia (RBS) se utiliza a menudo en redes inalámbricas y redes de sensores. En este esquema, un iniciador transmite un mensaje de referencia para instar a los receptores a ajustar sus relojes.
El protocolo Reference Broadcast Infrastructure Synchronization (RBIS) [10] es un protocolo de sincronización maestro/esclavo, como RBS, basado en un paradigma de sincronización receptor/receptor. Está diseñado específicamente para su uso en redes inalámbricas IEEE 802.11 configuradas en modo infraestructura (es decir, coordinadas por un punto de acceso). El protocolo no requiere ninguna modificación en el punto de acceso.
Ethernet síncrono utiliza Ethernet de manera sincrónica , de modo que cuando se combina con protocolos de sincronización como PTP en el caso del Proyecto White Rabbit , se logra una precisión de sincronización de subnanosegundos.
La sincronización se logra en redes inalámbricas ad hoc mediante el envío de mensajes de sincronización en forma de múltiples saltos y cada nodo se sincroniza progresivamente con el nodo que es el remitente inmediato de un mensaje de sincronización. Algunos ejemplos incluyen el Protocolo de sincronización de tiempo de inundación (FTSP), [4] y Harmonia, [5] ambos capaces de lograr la sincronización con una precisión del orden de microsegundos.
Investigadores de Stanford y Google presentaron Huygens, un algoritmo de sincronización de reloj de extremo a extremo basado en sondas. Huygens se implementa en software y, por lo tanto, se puede implementar en centros de datos o en entornos de nube pública . Al aprovechar algunos aspectos clave de los centros de datos modernos y aplicar algoritmos de estimación y técnicas de procesamiento de señales novedosos, el algoritmo Huygens logró una precisión de decenas de nanosegundos incluso con una carga de red alta. [11] Los hallazgos de esta investigación se están probando en aplicaciones del mercado financiero. [12]