Network Time Protocol
Network Time Protocol (NTP) es un protocolo de Internet para sincronizar los relojes de los sistemas informáticos a través del enrutamiento de paquetes en redes con latencia variable. NTP utiliza UDP como su capa de transporte, usando el puerto 123. Está diseñado para resistir los efectos de la latencia variable.
Network Time Protocol (NTP) | ||||||||
---|---|---|---|---|---|---|---|---|
Familia | Familia de protocolos de Internet | |||||||
Función | Sincronización de relojes de sistemas informáticos | |||||||
Puertos | 123/UDP | |||||||
Ubicación en la pila de protocolos | ||||||||
| ||||||||
Estándares | ||||||||
RFC 1305 (NTP) RFC 4330 (SNTP) RFC 5905 (versión 4, retrocompatible) | ||||||||
Historia
NTP es uno de los protocolos de internet más antiguos que siguen en uso, desarrollado en 1981 y descrito por primera vez en RFC 778. NTP fue diseñado originalmente por David L. Mills de la Universidad de Delaware,[12] el cual lo sigue manteniendo, en conjunto con un equipo de voluntarios.[cita requerida]
Los detalles operacionales de NTP se encuentran ilustrados en el RFC 778, RFC 891, RFC 956, RFC 958, RFC 1305, RFC 4330 y RFC 5905.
NTP no debe ser confundido con el protocolo daytime (RFC 867) o el Time Protocol (RFC 868).
La versión actual de NTP es la versión 4; hasta el 2005, solo las versiones superiores a la versión 3 han sido documentadas en los RFCs. El grupo de trabajo de NTP IETF ha sido formado para estandarizar el trabajo de la comunidad de NTP desde RFC 1305.
Hay una forma menos compleja de NTP que no requiere almacenar la información respecto a las comunicaciones previas que se conoce como Protocolo Simple de Tiempo de Red' o SNTP, que ha ganado popularidad en dispositivos incrustados y en aplicaciones en las que no se necesita una gran precisión y está regido por las normas RFC 1361, RFC 1769, y RFC 2030.
Descripción
NTP utiliza el algoritmo de Marzullo con la escala de tiempo Tiempo universal coordinado (UTC), incluyendo soporte para características como segundos intercalares. NTPv4 puede mantenerse sincronizado con una diferencia máxima de 10 milisegundos (1/100 segundos) a través de Internet, y puede llegar a acercarse hasta 200 microsegundos (1/5000 segundos) o más en redes de área local sobre condiciones ideales.
El demonio NTP de Unix es un proceso de nivel de usuario que se ejecuta continuamente en la máquina que soporta NTP, y la mayor parte del protocolo está implementado en este proceso de usuario. Para obtener el mejor rendimiento de NTP, es importante tener un reloj NTP estándar con lazo de seguimiento de fase implementado en el kernel del Sistema operativo, en vez de solo usar la intervención de un demonio NTP externo: todas las versiones actuales de GNU/Linux y Solaris soportan esta característica.
NTP utiliza un sistema de jerarquía de estratos de reloj, en donde los sistemas de estrato 1 están sincronizados con un reloj externo tal como un reloj GPS o algún reloj atómico. Los sistemas de estrato 2 de NTP derivan su tiempo de uno o más de los sistemas de estrato 1, y así consecutivamente (cabe mencionar que esto es diferente de los estrato de reloj utilizados en los sistemas de telecomunicaciones).
Las estampas de tiempo utilizadas por NTP consisten en un segundo de 32-bit y una parte fraccional de 32-bit, dando con esto una escala de 232 segundos (136 años), con una resolución teórica de 2−32 segundos (0.233 nanosegundos). Aunque las escalas de tiempo NTP se redondean cada 232 segundos, las implementaciones deberían desambiguar el tiempo NTP utilizando el tiempo aproximado de otras fuentes. Esto no es un problema en la utilización general ya que esto solamente requiere un tiempo cercano a unas cuantas décadas.
Descripción del paquete
Descripción del formato del paquete de la versión 4 de NTP/SNTP, que sigue después de las cabeceras de IP y de UDP.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LI | VN | Mode | Stratum | Poll | Precisión | ||||||||||||||||||||||||||
Root Delay | |||||||||||||||||||||||||||||||
Root Dispersion | |||||||||||||||||||||||||||||||
Reference Identifier | |||||||||||||||||||||||||||||||
Reference Timestamp (64) | |||||||||||||||||||||||||||||||
Originate Timestamp (64) | |||||||||||||||||||||||||||||||
Receive Timestamp (64) | |||||||||||||||||||||||||||||||
Transmit Timestamp (64) | |||||||||||||||||||||||||||||||
Key Identifier (optional) (32) | |||||||||||||||||||||||||||||||
Message Digest (optional) (128) |
- Leap Indicator (LI)
- código de 2 bits que sirve para indicar que al último minuto del presente día se le añadirá/quitará un segundo.
LI Valor Significado 00 0 sin modificación 01 1 el último minuto tiene 61 segundos 10 2 el último minuto tiene 59 segundos 11 3 condición de alarma (reloj no sincronizado)
- Version Number (VN)
- Entero de 3 bits que indica el número de versión. La versión 3, indica la versión 3 (solo IPv4) y la 4 para la versión 4 (IPv4, IPv6 y OSI). Si es necesario distinguir entre IPv4, IPv6 y OSI, se debe examinar el contexto encapsulado.
- Mode
- entero de tres bits que sirve para indicar el modo, definidos de la siguiente manera:
Mode Significado 0 reservado 1 simétrico activo 2 simétrico pasivo 3 cliente 4 servidor 5 broadcast 6 reservado para mensajes de control de NTP 7 reservado para uso privado
- Stratum
- Es un entero sin signo de 8 bits que indica el nivel (stratum) del servidor local, los valores definidos son los siguientes:
Stratum Significado 0 no especificado o no disponible 1 referencia primaria (ej., radio clock) 2-15 referencia secundaria (vía NTP o SNTP) 16-255 reservado
- Poll Interval
- es un entero de 8 bits con signo que indica el intervalo máximo de tiempo entre dos mensajes sucesivos, expresado en segundo y como la potencia de 2 más cercana. La mayoría de las aplicaciones usan el rango que va desde 6 bits (64") a 10 (1024")
- Precisión
- es un entero con signo que indica la precisión del reloj local expresado en segundo a la potencia de 2 más cercana.
Network Time Security
Network Time Security (NTS for NTP) está especificado en la norma RFC 8915 y utiliza el puerto 4460 para el intercambio de claves de cifrado.[13]
Implementaciones de software
Chrony
Chrony viene por defecto en las distribuciones de Red Hat[impl_soft 1] y está disponible en los repositorios de Ubuntu[impl_soft 2] Chrony está orientado a los ordenadores comunes y corrientes, los cuales son inestables, entran en modo de suspensión o tienen conexión de manera intermitente con internet. Chrony está pensado también para máquinas virtuales, un ambiente mucho más inestable. Se caracteriza por su bajo consumo de recursos (costo) y soporta ambos protocolos muy bien (NTP y PTP). Tiene dos componentes principales: chronyd un demonio que se ejecuta al iniciar la computadora y chronyc una interfaz por línea de comandos al usuario para su configuración. Ha sido evaluado como muy seguro y con apenas unas cuantas incidencias.[impl_soft 3] su ventaja es la versatilidad de su código, escrito desde cero para evitar la complejidad de código,[impl_soft 4] Chrony está escrito bajo licencia Licencia Pública General de GNU, versión 2 y fue escrito por Richard Curnow en 1997 con otros colaboradores y actualmente es mantenido por Miroslav Lichvar y el desarrollo y mantenimiento está patrocinado por Red Hat.[impl_soft 5]
Desde octubre de 2020 chrony utiliza el protocolo NTS para NTP.[13]
Referencias
- RFC 958 Network Time Protocol (NTP), septiembre 1985.
- RFC 1059 Network Time Protocol (Version 1) Specification and Implementation, julio 1988.
- RFC 1119 Network Time Protocol (Version 2) Specification and Implementation, septiembre 1989.
- RFC 1305 Network Time Protocol (Version 3) Specification, Implementation and Analysis, marzo 1992.
- RFC 5905 Network Time Protocol Version 4: Protocol and Algorithms Specification, junio 2010.
- RFC 7822 Network Time Protocol Version 4 (NTPv4) Extension Fields, marzo 2016.
- RFC 1361 Simple Network Time Protocol (SNTP), agosto 1992.
- RFC 1769 Simple Network Time Protocol (SNTP), marzo 1995.
- RFC 2030 Simple Network Time Protocol (SNTP) Version 4 for IPv4, IPv6 and OSI, octubre 1996.
- RFC 4330 Simple Network Time Protocol (SNTP) Version 4 for IPv4, IPv6 and OSI, enero 2006
- RFC 778 DCNET Internet Clock Service, abril 1981.
- . CAVSI. Archivado desde el original el 18 de marzo de 2015. Consultado el 19 de noviembre de 2017. «NTP es utilizado para sincronizar el tiempo del reloj en los equipos en una red de computadoras. Desarrollado por David Mills en la Universidad de Delaware, NTP se ha convertido en un estándar en Internet.»
- ↑ Ladd, Watson (1 de octubre de 2020). . Cloudflare (en inglés). Archivado desde el original el 3 de octubre de 2020. Consultado el 3 de octubre de 2020. «Earlier today the document describing Network Time Security for NTP officially became RFC 8915. This means that Network Time Security (NTS) is officially part of the collection of protocols that makes the Internet work. We’ve changed our time service to use the officially assigned port of 4460 for NTS key exchange, so you can use our service with ease.»
Referencias: implementaciones de software
- Lichvar, Miroslav (20 de julio de 2016). . Red Hat Enterprise Linux Blog (en inglés). Red Hat. Archivado desde el original el 30 de julio de 2017. Consultado el 19 de noviembre de 2017. «Starting with Red Hat Enterprise Linux 7.0 (and now in Red Hat Enterprise Linux 6.8) a more versatile NTP implementation is also provided via the chrony package».
- Lichtenheld, Frank. . Ubuntu Package (en inglés). Ubuntu Package. Archivado desde el original el 19 de noviembre de 2017. Consultado el 19 de noviembre de 2017. «Versatile implementation of the Network Time Protocol».
- Heiderich, Mario (August 2017). (pdf). Cure53.de Team (en inglés). wiki.mozilla.org, AKA MozillaWiki or WikiMO. Archivado desde el original el 5 de octubre de 2017. Consultado el 19 de noviembre de 2017. «Withstanding eleven full days of on-remote testing in August of 2017 means that Chrony is robust, strong, and developed with security in mind.»
- . Core Infrastructure Initiative, a Linux Foundation Collaborative Project (en inglés). Core Infrastructure Initiative. 27 de septiembre de 2017. Archivado desde el original el 28 de octubre de 2017. Consultado el 19 de noviembre de 2017. «In sum, the Chrony NTP software stands solid and can be seen as trustworthy».
- . TuxFamily, a non-profit organization. (en inglés). chrony. Archivado desde el original el 9 de diciembre de 2009. Consultado el 19 de noviembre de 2017. «The software is supported on Linux, FreeBSD, NetBSD, macOS, and Solaris.»
Véase también
Enlaces externos
- Proyecto de Servicios Públicos NTP El hogar de los servicios públicos NTP (Network Time Protocol).
- Repositorio público de Servidores NTP (en inglés)
- Tutorial para configurar servidor NTP en linux
- Página del proyecto NTP de David Mill
- Notas de liberación de NTP versión 4
- Aplicación en línea para probar servidores NTP
- http://horalegal.inm.gov.co/ Servidor NTP, Hora oficial de Colombia
- ntp.shoa.cl Servidor NTP, Hora oficial de chile
- hora.roa.es Servidor NTP, Hora oficial de España
- inocar.ntp.ec Servidor NTP, Hora oficial de Ecuador
- Software relacionado con NTP
- NetTime Cliente NTP Gratuito para Windows
- Abouttime Cliente de NTP para Windows
- Chrony Un programa de tiempo para Unix compatible con NTP
- Dimension 4 Cliente SNTP para Windows
- Port de NTP para Windows Portage libre de la implementación de ntp.org, incluye un instalador.
- NTP Server client Cliente SNTP para Windows
- OpenNTPD un programa con licencia BSD desarrollado por el proyecto OpenBSD
- NTP Client Software del cliente del NTP para la sincronización de toda la hora de computadoras en la red