Name

ntpd – Network Time Protocol (NTP) daemon

Synopsis

ntpd ]

Descripción

El programa ntpd es un demonio del sistema operativo que establece y mantiene la hora del día del sistema en sincronía con los servidores de hora estándar de Internet. Es una implementación completa de la versión 4 del Protocolo de Tiempo de Red (NTP), pero también mantiene la compatibilidad con la versión 3, definida por el RFC-1305, y con las versiones 1 y 2, definidas por el RFC-1059 y el RFC-1119, respectivamente. ntpd realiza la mayoría de los cálculos en aritmética de coma flotante de 64 bits y realiza operaciones relativamente torpes en coma fija de 64 bits sólo cuando es necesario para preservar la máxima precisión, unos 232 picosegundos. Aunque la máxima precisión no es alcanzable con las estaciones de trabajo y redes ordinarias de hoy en día, puede ser necesaria con futuros relojes de CPU de gigahercios y LANs de gigabits.

Cómo funciona Ntp

El programa ntpd funciona intercambiando mensajes con uno o más servidores configurados a intervalos de sondeo designados. Cuando se inicia, ya sea la primera vez o las siguientes, el programa requiere varios intercambios de la mayoría de estos servidores para que los algoritmos de procesamiento y mitigación de señales puedan acumular y preparar los datos y ajustar el reloj. Para proteger la red de las ráfagas, el intervalo de sondeo inicial de cada servidor se retrasa un intervalo aleatorio de varios segundos. Con el intervalo de sondeo inicial por defecto de 64s, pueden transcurrir varios minutos antes de que se configure el reloj. El retraso inicial para ajustar el reloj puede reducirse utilizando la palabra clave iburst con el comando de configuración del servidor, como se describe en la página de Opciones de Configuración.

La mayoría de los sistemas operativos y el hardware de hoy en día incorporan un chip de hora del año (TOY) para mantener la hora durante los períodos en los que la alimentación está apagada. Cuando la máquina arranca, el chip se utiliza para inicializar la hora del sistema operativo. Una vez que la máquina se ha sincronizado con un servidor NTP, el sistema operativo corrige el chip cada cierto tiempo. En caso de que no haya un chip TOY o que por alguna razón su hora esté a más de 1000s de la hora del servidor, ntpd asume que algo debe estar terriblemente mal y la única acción confiable es que el operador intervenga y ajuste el reloj a mano. Esto hace que ntpd salga con un mensaje de pánico en el registro del sistema. La opción -g anula esta comprobación y el reloj se ajustará a la hora del servidor independientemente de la hora del chip. Sin embargo, y para protegerse contra hardware roto, como cuando la batería del CMOS falla o el contador del reloj se vuelve defectuoso, una vez que el reloj ha sido ajustado, un error mayor a1000s causará que ntpd salga de todos modos.

En condiciones ordinarias, ntpd ajusta el reloj en pequeños pasos para que la escala de tiempo sea efectivamente continua y sin discontinuidades. En condiciones de congestión extrema de la red, la fluctuación del retardo de ida y vuelta puede superar los tres segundos y la distancia de sincronización, que es igual a la mitad del retardo de ida y vuelta más los términos del presupuesto de error, puede llegar a ser muy grande. Los algoritmos ntpd descartan los desplazamientos de muestra que superan los 128 ms, a menos que el intervalo durante el cual ningún desplazamiento de muestra es inferior a 128 ms supere los 900s. La primera muestra después de eso, sin importar el desfase, pone el reloj a la hora indicada. En la práctica, esto reduce la tasa de falsas alarmas en las que el reloj se mueve por error a una incidencia insignificante.

Como resultado de este comportamiento, una vez que el reloj ha sido ajustado, muy rara vez se desvía más de 128 ms, incluso en casos extremos de congestión de la ruta de la red y jitter. A veces, en particular cuando ntpd se inicia por primera vez, el error puede superar los 128 ms. En ocasiones, esto puede hacer que el reloj se retrase si la hora del reloj local está más de 128 s en el futuro con respecto al servidor. En algunas aplicaciones, este comportamiento puede ser inaceptable. Si se incluye la opción -x en la línea de comandos, el reloj nunca se escalonará y sólo se utilizarán las correcciones de giro.

Las cuestiones deben explorarse cuidadosamente antes de decidir utilizar la opción -x. La máxima velocidad de giro posible está limitada a 500 partes por millón (PPM) como consecuencia de los principios de corrección en los que se basan el protocolo NTP y el diseño del algoritmo. Como resultado, el reloj local puede tardar mucho tiempo en converger a un desfase aceptable, unos 2.000 s por cada segundo que el reloj esté fuera del rango aceptable. Durante este intervalo, el reloj local no será coherente con ningún otro reloj de red y el sistema no puede utilizarse para aplicaciones distribuidas que requieran una hora de red correctamente sincronizada.

A pesar de las precauciones anteriores, a veces, cuando hay grandes errores de frecuencia, los desfases resultantes se alejan del rango de 128 ms y se requiere una corrección del tiempo de paso o de giro. Si después de dicha corrección el error de frecuencia es tan grande que la primera muestra está fuera del rango aceptable, ntpd entra en el mismo estado que cuando el archivo ntp.drift no está presente. La intención de este comportamiento es corregir rápidamente la frecuencia y restaurar el funcionamiento al modo de seguimiento normal. En los casos más extremos (me viene a la mente time.ien.it), puede haber correcciones ocasionales de escalón/deslizamiento y las subsiguientes correcciones de frecuencia. En estos casos ayuda utilizar la palabra clave burst al configurar el servidor.

Disciplina de frecuencia

El comportamiento de ntpd al arrancar depende de si existe el fichero de frecuencia, normalmente ntp.drift. Este archivo contiene la última estimación del error de frecuencia del reloj. Cuando el ntpd se inicia y el archivo no existe, el ntpd entra en un modo especial diseñado para adaptarse rápidamente al error de tiempo y frecuencia del oscilador del reloj del sistema en particular. Esto tarda aproximadamente 15 minutos, después de los cuales la hora y la frecuencia se ajustan a los valores nominales y el ntpd entra en el modo normal, donde la hora y la frecuencia se siguen continuamente en relación con el servidor. Después de una hora se crea el archivo de frecuencias y se escribe en él el desplazamiento de la frecuencia actual. Cuando el ntpd se inicia y el archivo existe, la frecuencia del ntpd se inicializa desde el archivo y entra en modo normal inmediatamente. Después, el desplazamiento de la frecuencia actual se escribe en el archivo a intervalos de una hora.

Modos de funcionamiento

El ntpd puede funcionar en cualquiera de varios modos, incluyendo activo/pasivo simétrico, broadcast/multicast cliente/servidor y manycast, como se describe en la página Gestión de la asociación. Normalmente funciona de forma continua, mientras vigila los pequeños cambios de frecuencia y recorta el reloj para obtener la máxima precisión. Sin embargo, puede funcionar en un modo puntual en el que la hora se ajusta desde un servidor externo y la frecuencia se ajusta desde un archivo de frecuencia previamente grabado. Un cliente de broadcast/multicast o manycast puede descubrir servidores remotos, calcular los factores de corrección del retardo de propagación servidor-cliente y configurarse a sí mismo de forma automática. Esto hace posible desplegar una flota de estaciones de trabajo sin especificar los detalles de configuración específicos del entorno local.

Por defecto, ntpd se ejecuta en modo continuo, donde cada uno de los posiblemente varios servidores externos es sondeado a intervalos determinados por una intrincada máquina de estados. La máquina de estado mide el retardo incidental de ida y vuelta y la frecuencia de oscilación del oscilador y determina el mejor intervalo de sondeo utilizando un algoritmo aheurístico. Normalmente, y en la mayoría de los entornos operativos, la máquina de estado comenzará con intervalos de 64s y eventualmente aumentará en pasos hasta 1024s.Se introduce una pequeña cantidad de variación aleatoria con el fin de evitar el amontonamiento en los servidores. Además, si un servidor se vuelve inalcanzable durante algún tiempo, el intervalo de sondeo se incrementa en pasos a 1024s con el fin de reducir la sobrecarga de la red.

En algunos casos puede no ser práctico que ntpd se ejecute continuamente. Una solución común ha sido ejecutar el programa ntpdate desde un cronjob a horas determinadas. Sin embargo, este programa no tiene los algoritmos de procesamiento de señales, comprobación de errores y mitigación de ntpd La opción-q está pensada para este propósito. La configuración de esta opción hará que ntpd salga justo después de ajustar el reloj por primera vez con los servidores configurados. El procedimiento para ajustar inicialmente el reloj es el mismo que en el modo continuo; la mayoría de las aplicaciones probablemente querrán especificar la palabra claveiburst con el comando de configuración del servidor. Con esta palabra clave se intercambian una serie de mensajes para preparar los datos y el reloj se ajusta en unos 10 s. Si no se oye nada después de un par de minutos, el demonio se desconecta y sale. Después de un período adecuado de luto, el programa ntpdate puede ser retirado.

Cuando el soporte del kernel está disponible para disciplinar la frecuencia del reloj, que es el caso de Solaris, Tru64, Linux y FreeBSD, una característica útil está disponible para disciplinar la frecuencia del reloj. En primer lugar, ntpd se ejecuta en modo continuo con los servidores seleccionados para medir y registrar el desplazamiento de la frecuencia intrínseca del reloj en el archivo de frecuencia. Pueden pasar algunas horas hasta que la frecuencia y el desfase se estabilicen. A continuación, el ntpd se detiene y se ejecuta en modo continuo según sea necesario. En cada arranque, la frecuencia se lee del archivo y se inicializa la frecuencia del kernel.

Control del intervalo de sondeo

Esta versión de NTP incluye una intrincada máquina de estados para reducir la carga de la red mientras se mantiene una calidad de sincronización consistente con el jitter y el wander observados. Hay varias formas de adaptar el funcionamiento para mejorar la precisión reduciendo el intervalo o para reducir la carga de la red aumentándola. Sin embargo, se aconseja al usuario que considere cuidadosamente las consecuencias de cambiar el intervalo de ajuste de sondeo desde el mínimo por defecto de 64 s hasta el máximo por defecto de 1.024 s. El mínimo por defecto puede cambiarse con el comando tinker minpoll a un valor no inferior a 16 s. Este valor se utiliza para todas las asociaciones configuradas, a menos que se anule con la opción minpoll en el comando de configuración. Tenga en cuenta que la mayoría de los controladores de dispositivos no funcionarán correctamente si el intervalo de sondeo es inferior a 64 s y que las asociaciones del servidor de difusión y del cliente de multidifusión también utilizarán el valor predeterminado, a menos que se anule.

En algunos casos relacionados con los servicios de acceso telefónico o de peaje, puede ser útil aumentar el intervalo mínimo a unas pocas decenas de minutos y el intervalo máximo a un día más o menos. En condiciones normales de funcionamiento, una vez que el bucle de disciplina del reloj se haya estabilizado, el intervalo se incrementará en pasos desde el mínimo hasta el máximo. Sin embargo, esto supone que el error de frecuencia de reloj intrínseco es lo suficientemente pequeño como para que el bucle de disciplina lo corrija. El rango de captura del bucle es de 500 PPM en un intervalo de 64s disminuyendo en un factor de dos por cada duplicación del intervalo. A un mínimo de 1.024 s, por ejemplo, el rango de captura es de sólo 31 PPM. Si el error intrínseco es mayor que esto, el archivo de deriva ntp.drift tendrá que ser especialmente adaptado para reducir el error residual por debajo de este límite.Una vez hecho esto, el archivo de deriva se actualiza automáticamente una vez por hora y está disponible para inicializar la frecuencia en los siguientes reinicios del demonio.

el filtro Huff-n’-puff

En los escenarios en los que una cantidad considerable de datos deben ser descargados o cargados a través de módems telefónicos, la calidad de la medición del tiempo puede ser seriamente degradada. Esto ocurre porque los retrasos diferenciales en las dos direcciones de transmisión pueden ser bastante grandes. En muchos casos, los errores de tiempo aparente son tan grandes como para exceder el umbral de paso y una corrección de paso puede ocurrir durante y después de la transferencia de datos está en progreso.

El filtro huff-n’-puff está diseñado para corregir el desplazamiento de tiempo aparente en estos casos. Depende del conocimiento del retardo de propagación cuando no hay otro tráfico presente. En los escenarios comunes esto ocurre durante las horas que no son de trabajo. El filtro mantiene un registro de desplazamiento que recuerda el retraso mínimo durante el intervalo más reciente, medido normalmente en horas. En condiciones de retardo severo, el filtro corrige el desplazamiento aparente utilizando el signo del desplazamiento y la diferencia entre el retardo aparente y el retardo mínimo. El nombre del filtro refleja la corrección negativa (huff) y positiva (puff), que depende del signo del desfase.

El filtro se activa con el comando tinker y la palabra clave huffpuff, como se describe en la página de Opciones varias.

Notas

Si el soporte de NetInfo está incorporado en ntpd, entonces ntpd intentará leer su configuración desde el NetInfo si el archivo predeterminado ntp.conf no se puede leer y no se especifica ningún archivo con la opción -c.

En contextos donde se espera un nombre de host, un calificador -4 que precede al nombre de host fuerza la resolución DNS al espacio de nombres IPv4, mientras que un calificador -6 fuerza la resolución DNS al espacio de nombres IPv6.

Se pueden mostrar varias variables internas de ntpd y alterar las opciones de configuración mientras el ntpd se está ejecutando utilizando los programas de utilidad ntpq yntpdc.

Cuando ntpd se inicia mira el valor de umask, y si es cero ntpd pondrá el umask a 022

A menos que se use la opción -n, -d o -D, ntpd cambia el directorio de trabajo actual al directorio raíz, por lo que cualquier opción o comando que especifique rutas necesita usar una ruta absoluta o una ruta relativa a la raíz.

Opciones de línea de comandos

-4 Forzar la resolución DNS de los nombres de host al espacio de nombres IPv4. -6 Forzar la resolución DNS de los nombres de host en el espacio de nombres IPv6. -a Requerir autenticación criptográfica para el cliente de difusión, el cliente de multidifusión y las asociaciones pasivas simétricas. Este es el valor predeterminado. -A No requerir autenticación criptográfica para el cliente de difusión, el cliente de multidifusión y las asociaciones pasivas simétricas. Esto casi nunca es una buena idea. -b Permitir que el cliente se sincronice con los servidores de difusión. -c conffile Especificar el nombre y la ruta del archivo de configuración, por defecto /etc/ntp.conf -d Especificar el modo de depuración. Esta opción puede aparecer más de una vez, y cada vez que aparece indica un mayor detalle de visualización. -D level Especifica el nivel de depuración directamente. -f driftfile Especificar el nombre y la ruta del archivo de frecuencia. Esta es la misma operación que el comando de configuración driftfile driftfile. -g Normalmente, ntpd sale con un mensaje al registro del sistema si el desplazamiento supera el umbral de pánico, que es de 1000 s por defecto. Esta opción permite establecer el tiempo a cualquier valor sin restricción; sin embargo, esto sólo puede ocurrir una vez. Si el umbral se excede después de eso, ntpd saldrá con un mensaje al registro del sistema. Esta opción puede utilizarse con las opciones -q y -x. Vea el comando tinker para otras opciones. -Esta opción también implica que el servidor intente abandonar los privilegios de root en el arranque (de lo contrario, chroot ofrece muy poca seguridad adicional), y sólo está disponible si el sistema operativo admite ejecutar el servidor sin privilegios completos de root. Es posible que también tenga que especificar una opción -u. -I iface Escuchar en la interfaz. Esta opción puede aparecer un número ilimitado de veces. -k keyfile Especifica el nombre y la ruta del archivo de claves simétricas. Es la misma operación que el comando de configuración keys keyfile. -l logfile Especifica el nombre y la ruta del archivo de registro. El valor predeterminado es el archivo de registro del sistema. Esta es la misma operación que el comando de configuración logfile logfileconfiguration. -L No escuchar las IPs virtuales. El valor por defecto es escuchar. -m Bloquear la memoria. -n No hacer fork. -N En la medida en que lo permita el sistema operativo, ejecutar el ntpd con la máxima prioridad. -p pidfile Especifica el nombre y la ruta del archivo utilizado para registrar el ID del proceso ntpd. Esta es la misma operación que el comando pidfile pidfileconfiguration. -P prioridad En la medida en que lo permita el sistema operativo, ejecutar el ntpd con la prioridad especificada. -q Salir del ntpd justo después de la primera vez que se ajusta el reloj. Este comportamiento imita el del programa ntpdate, que debe ser retirado. Las opciones -g y -x pueden utilizarse con esta opción. Nota: La disciplina de tiempo del kernel se desactiva con esta opción. -r broadcastdelay Especifica el retardo de propagación por defecto desde el servidor de broadcast/multicast a este cliente. Esto es necesario sólo si el retraso no puede ser computado automáticamente por el protocolo. -s statsdir Especifica la ruta del directorio para los archivos creados por el servicio de estadísticas. Es la misma operación que el comando de configuración statsdir. -t key Añade un número de clave a la lista de claves de confianza. Esta opción puede aparecer más de una vez. -u usuario Especifica un usuario, y opcionalmente un grupo, para cambiar. Esta opción sólo está disponible si el sistema operativo admite ejecutar el servidor sin privilegios totales de root. Actualmente, esta opción se admite en NetBSD (configure con –enable-clockctl) y Linux (configure con –enable-linuxcaps). -U intervalo de actualización de la interfaz Número de segundos que hay que esperar entre los escaneos de la lista de interfaces para recoger las interfaces de red nuevas y eliminadas. Establezca el valor 0 para desactivar la actualización dinámica de la lista de interfaces. El valor predeterminado es escanear cada 5 minutos. -v variable-V Añade una variable del sistema que aparece por defecto. -x Normalmente, el tiempo es girado si el desplazamiento es menor que el umbral de paso, que es de 128 ms por defecto, y escalonado si está por encima del umbral. Esta opción establece el umbral a 600 s, que está bien dentro de la ventana de precisión para ajustar el reloj manualmente. Nota: Dado que la velocidad de giro de los núcleos típicos de Unix está limitada a 0,5 ms/s, cada segundo de ajuste requiere un intervalo de amortización de 2000 s. Así, un ajuste de 600 s tardará casi 14 días en completarse.Esta opción puede utilizarse con las opciones -g y -q. Consulte el comando tinker para conocer otras opciones. Nota: La disciplina de tiempo del kernel se desactiva con esta opción.

Fichero de configuración

Ordinariamente, ntpd lee el fichero de configuración ntp.conf en el momento del arranque para determinar las fuentes de sincronización y los modos de funcionamiento.También es posible especificar una configuración de trabajo, aunque limitada, completamente en la línea de comandos, obviando la necesidad de un fichero de configuración. Esto puede ser particularmente útil cuando el host local va a ser configurado como un cliente de difusión/multidifusión, con todos los compañeros que se determinan mediante la escucha de las emisiones a tiempo de ejecución.

Por lo general, el archivo de configuración se instala en el directorio /etc, pero podría ser instalado en otro lugar (véase la opción de línea de comandos -c conffile). El formato del archivo es similar al de otros archivos de configuración de Unix – los comentarios comienzan con un carácter # y se extienden hasta el final de la línea; las líneas en blanco son ignoradas.

Los comandos de configuración consisten en una palabra clave inicial seguida de una lista de argumentos, algunos de los cuales pueden ser opcionales, separados por espacios en blanco. Los comandos no pueden continuar en varias líneas. Los argumentos pueden ser nombres de host, direcciones de host escritas en forma numérica o de cuadrado de puntos, números enteros, números de punto flotante (cuando se especifican tiempos en segundos) y cadenas de texto. Los argumentos opcionales están delimitados por en las siguientes descripciones, mientras que los alternativos están separados por | La notación significa una repetición opcional e indefinida del último elemento antes del

Códigos de salida

Un código de salida distinto de cero indica un error. Cualquier mensaje de error se registra en el registro del sistema por defecto.

El código de salida es 0 sólo cuando ntpd es terminado por una señal, o cuando se utiliza la opción -q y ntpd ajusta con éxito el reloj del sistema.

Ver también

ntp.conf(5), ntpq(8), ntpdc(8)

Deja una respuesta

Tu dirección de correo electrónico no será publicada.