La importancia del tiempo

Hola,

¿Te has parado a pensar alguna vez lo importante que es tener un reloj en tu sistema? Y lo más importante, ¿has pensando en la importancia de que ese reloj esté en hora?

Evidentemente no es igual de importante que el reloj de tu escritorio esté sincronizado, que los relojes de los sistemas de una central nuclear, o un SCADA industrial como el que puede regular una presa hidroeléctrica lo estén. En tu caso, quizás algún administrador de una lista de correo te pedirá que pongas tu reloj en hora, para no descuadrar el histórico de envíos. En una presa hidroeléctrica, si la apertura de una compuerta de descarga tiene que ejecutarse en paralelo con la parada de turbinas y la apertura de válvulas, y no hay sincronía, puede haber problemas muy serios. No imaginemos que puede pasar si en un reactor nuclear de agua presurizado fallan los mecanismos de inundación con agua pesada, o simplemente, se retrasan o adelantan por que un reloj no está sincronizado.

Al hilo del tiempo en sistemas de información, y habiendo ojeado recientemente Server Time Protocol NTP Client support, en el que se trata la integración, en máquinas en mainframe IBM System z, de la función Network Time Protocol (NTP) Client en el servidor Server Time Protocol (STP), se me ha ocurrido hablar un poco de lo importante que es el tiempo, refiriéndonos como es normal, al control de tiempo que debe existir en un sistema.

No haremos aquí reflexiones filosóficas, ni teorizaremos sobre curvar el espacio-tiempo y viajar al pasado o al futuro. Vamos a hacer sólo una reflexión sobre el tiempo, aplicado a los sistemas. Tampoco vamos a hablar de la gestión de relojes en entornos mainframe, porque son un caso mucho menos frecuente que el que nos puede interesar como usuarios, y como administradores de un sistema.

Protocolo NTP

Es el protocolo por antonomasia para sincronía de tiempos. NTP es un acrónimo que significa Network Time Protocol, y es un viejo protocolo que la IETF elevó a RFC hace bastante tiempo en el RFC-1305. Mediante NTP, podemos sincronizar los relojes de distintos sistemas previniendo los perniciosos efectos de la latencia variable, ya que la gestión de sincronía del tiempo se hace en red, y por tanto, está sujeta a la más que probable fluctuación de la velocidad de líneas de comunicación empleadas. Para los que os guste el horripilante modelo OSI, NTP opera en la séptima capa, la de aplicación. La comunicación se hace por el puerto 123 (TCP/UDP)

La idea de NTP es que si mi sistema operativo tiene soporte NTP, o un cliente NTP, yo pueda solicitar a un servidor NTP que me entregue la fecha, y sincronizar la de mi sistema empleando una teóricamente más fiable: la del servidor NTP.

Protocolo Daytime

Existe otro protocolo, que no debe confundirse con NTP, y que sonará más a los administradores que vienen de MS-DOS y entornos de por aquel entonces, como el OSR2 y similares. En este caso, cuando lanzamos una petición daytime, el servidor nos devuelve la fecha en un formato ASCII. Daytime está en prácticamente desuso, y es hasta desaconsejable operar con él. Se entiende que es para propósitos de experimentación únicamente. Daytime está narrado y documentado en el RFC-867. En cuanto a servicio, daytime comunica máquinas por el puerto 13 (TCP y UDP)

Protocolo Time

Otro protocolo minoritario, en el que el servidor devuelve al cliente que lo solicita una cadena numérica de 32 bit, sin formatear, que representa el número de segundos UTC que han transcurrido desde el 1 de enero de 1900. El RFC que recoge este protocolo es el RFC-868. El protocolo time emplea el puerto 37 en TCP/UDP para establecer escuchas.

Relojes atómicos

La mayoría de servidores NTP de alta fiabilidad son relojes atómicos. Un reloj atómico es un dispositivo de altísima precisión (atrasa un segundo cada 300.000 años) y cuyas manecillas son accionadas por un concepto nuclear: la frecuencia de resonancia atómica normal de un átomo frío, frecuentemente, Cesio-133. Los desarrollos modernos siguen orientándose al Cesio, enfriándolo mediante láser para obtener más precisión, llegando a ser de hasta un segundo de atraso cada 20 millones de años. Otras tecnologías están basadas en másers de hidrógeno, y en mercurio. Todo esto se cuenta estupendamente en la Wikipedia.

Así pues, no parece mala idea que un servidor NTP se abastezca de un reloj atómico, y por tanto, que nuestros servidores NTP se abastezcan de los mismos.

Servidores NTP públicos

Hay muchos, casi todos vinculados a I+D+i, y son bastante fiables, ya que algunos son relojes atómicos. En España tenemos dos buenos relojes NTP primarios:

ntp.i2t.ehu.es, operado por la Universidad del País Vasco
hora.roa.es, gestionado por el Real Instituto y Observatorio de la Armada

Cualquiera de los servidores NTP primarios y secundarios nos dará una sincronía de tiempo más que aceptable. Ya es cuestión de elegir, en función de la criticidad del factor tiempo, a dónde conectarnos. Evidentemente, también hay servicios NTP atómicos privados y/o restringidos.

Configurar y operar un servidor NTP en FreeBSD y en otros derivados de UNIX

1. Generamos el fichero /etc/ntp.conf y añadimos las siguientes líneas

#Listamos los servidores
server hora.roa.es prefer
server ntp.i2t.ehu.es

#Especificamos el fichero de deriva
driftfile /var/db/ntp.drift

#Restringimos a solo maquinas de nuestra red local
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

El fichero de deriva es para compensar aún cuando no tengamos conexión a Internet y exista falta de sincronía por no hacer consultas al servidor NTP. Tenéis más detalles sobre deriva (drift) en en ntpd(8)

2. Especificamos en /etc/rc.conf que se ejecute al iniciar el equipo, añadiendo la línea ntpdate_enable=»YES»

3. Arrancamos el servidor NTP ejecutando ntpd -p /var/run/ntpd.pid

¿Puedo sincronizar el reloj de Windows usando un servidor NTP externo?

Sí, se puede. Consulta la documentación.

Clientes Microsoft Windows para sincronizar con servidores NTP

AboutTime es un cliente de sincronía, que pese a no ser estrictamente necesario, ya que Microsoft Windows tiene sus propios mecanismos de conexión a servicios NTP, puede venir bien a los que quieren resultados rápidos. AboutTime puede ser obtenido gratuítamente en http://www.arachnoid.com/abouttime/.

Otros clientes son NetTime o TimeTools SNTP.

timetools

Un saludo,