{"id":1517,"date":"2024-07-23T23:07:36","date_gmt":"2024-07-24T02:07:36","guid":{"rendered":"https:\/\/www.nerdadas.com\/blog\/?p=1517"},"modified":"2024-07-23T23:14:44","modified_gmt":"2024-07-24T02:14:44","slug":"ptp-ieee-1588-ntp-o-sntp","status":"publish","type":"post","link":"https:\/\/www.nerdadas.com\/blog\/ptp-ieee-1588-ntp-o-sntp\/","title":{"rendered":"PTP IEEE-1588, NTP o SNTP?"},"content":{"rendered":"\n<p>Tener fecha y hora correctamente configuradas en tu red es muy importante. No solo para tener datos precisos de inicios de sesi\u00f3n o eventos logueados sino tambi\u00e9n para sincronizar equipos que requieran precisi\u00f3n y no tener fallas o alteraciones en sus sincros. Certficados de seguridad, dispositivos de red o controladores de dominio necesitan mantener sus horas sincronizadas al detalle para funcionar pero hay sistemas que necesitan m\u00e1s precisi\u00f3n que un simple NTP. Hoy te cuento de algunos con los que estuve experimentando.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">NTP y SNTP<\/h2>\n\n\n\n<p><strong>Network Time Protocol<\/strong> es el protocolo  m\u00e1s utilizado para sincronizar la hora en Servidores, Terminales y dispositivos de red entre otros. <\/p>\n\n\n\n<p>NTP, fue creado por David L. Mills en 1981 en la universidad de Delaware. Es un protocolo dise\u00f1ado para sincronizar los relojes de los sistemas inform\u00e1ticos a trav\u00e9s de redes. Usa una estructura jer\u00e1rquica y un algoritmo de sincronizaci\u00f3n super preciso. NTP tiene varias versiones (NTPv1 en 1988, NTPv2 en 1989, NTPv3 en 1992 y NTPv4 en 2010). En cada versi\u00f3n ha mejorado su precisi\u00f3n, eficiencia y seguridad. El protocolo escucha el puerto UDP 123 y ahora se usa en todo el mundo.<\/p>\n\n\n\n<p>Tiene una versi\u00f3n m\u00e1s simple pero m\u00e1s insegura, SNTP (Simple..NTP) que se usa normalmente en dispositivos embebidos o que necesitan poca presici\u00f3n.<\/p>\n\n\n\n<p>Con NTP vas a poder sincronizar tus equipos al milisegundo. Es lo que m\u00e1s usamos en redes y servidores y seguramente ya lo probaste en alg\u00fan momento.<\/p>\n\n\n\n<p>C\u00f3mo configuramos un<strong> server NTP en Cisco<\/strong> y, porqu\u00e9 no, un cliente tambi\u00e9n.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#Modo exec privilegiado y configuramos el router normalmente\nenable\nconfigure terminal\ninterface gig0\/0\nip address 192.168.1.1 255.255.255.0\nno shutdown\nexit\n#Configuramos la hora\nclock set 12:00:00 Jul 17 2024\n#Seteamos la instancia como master\nntp master 1\nend\n#Revisamos si est\u00e1 funcionando bien\nshow ntp status\nshow ntp associations\n<\/code><\/pre>\n\n\n\n<p>Si fuera un <strong>cliente<\/strong> configuramos as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>enable\nconfigure terminal\ninterface gig0\/0\nip address 192.168.1.2 255.255.255.0\nno shutdown\nexit\n#Definimos el server horario de donde vendr\u00e1 la hora\nntp server 192.168.1.1\nend\n<\/code><\/pre>\n\n\n\n<p><strong>En Mikrotik<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#Modo Servidor\n\/system ntp server set enabled=yes\n#Si queremos configurar alguna opci\u00f3n m\u00e1s\n\/system ntp server set broadcast=no\n\/system ntp server set manycast=no\n\/system ntp server set multicast=no\n\/system ntp server set broadcast-address=0.0.0.0\n\n#Modo CLiente\n\/system ntp client set enabled=yes primary-ntp=192.168.1.1 secondary-ntp=192.168.1.2<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">PTP IEEE-1588<\/h2>\n\n\n\n<p>Que pasa si necesitamos m\u00e1s precisi\u00f3n? Si Si, NTP es precisa al milisegundo&#8230; pero si necesito precisi\u00f3n al Microsegundo?. Hoy en d\u00eda proliferan, entre otras, las redes EtherCat las cuales muchas veces necesitan una sincronizaci\u00f3n horaria m\u00e1s precisa. Para estos casos existe PTP (Precition Time Protocol). Se usa normalmente en redes que necesitan much\u00edsima precisi\u00f3n a muy bajo costo. <\/p>\n\n\n\n<p>El Protocolo de Tiempo de Precisi\u00f3n (PTP), fue creado por John C. Eidson de Hewlett-Packard y estandarizado como IEEE 158. Desde que fue creado en los 80s y la primera publicaci\u00f3n del est\u00e1ndar en 2002, ha evolucionado much\u00edsimo con mejoras fuertes en 2008 (PTPv2 la versi\u00f3n que m\u00e1s usamos) y 2019 (PTPv3). Funciona en un modelo maestro\/esclavo. PTP no incluye medidas de seguridad por defecto, hay que asegurarlo con tecnolog\u00edas adicionales (acl, monitoreo, etc). PTP utiliza los puertos UDP 319 y 320.<\/p>\n\n\n\n<p><strong>Modo de Funcionamiento<\/strong><\/p>\n\n\n\n<p>PTP utiliza un modelo maestro\/esclavo (master\/slave) para sincronizar los relojes en una red. La precisi\u00f3n de la sincronizaci\u00f3n se logra mediante el intercambio de mensajes de tiempo entre los dispositivos.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Roles de los Dispositivos<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Grandmaster<\/strong>: El reloj de referencia en la red, considerado el m\u00e1s preciso.<\/li>\n\n\n\n<li><strong>Slave<\/strong>: Los dispositivos que se sincronizan con el Grandmaster.<\/li>\n\n\n\n<li><strong>Boundary Clocks<\/strong>: Dispositivos que act\u00faan como intermediarios entre el Grandmaster y los Slaves para mejorar la precisi\u00f3n.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Mensajes Clave<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Sync<\/strong>: Mensaje enviado por el Grandmaster para indicar el tiempo actual.<\/li>\n\n\n\n<li><strong>Follow_Up<\/strong>: Mensaje que proporciona informaci\u00f3n adicional sobre el Sync.<\/li>\n\n\n\n<li><strong>Delay_Req<\/strong>: Enviado por los Slaves para medir el retraso en la red.<\/li>\n\n\n\n<li><strong>Delay_Resp<\/strong>: Respuesta del Grandmaster al Delay_Req.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Proceso de Sincronizaci\u00f3n<\/strong>:\n<ul class=\"wp-block-list\">\n<li>El Grandmaster env\u00eda un mensaje Sync.<\/li>\n\n\n\n<li>Los Slaves reciben el mensaje y registran la hora de llegada.<\/li>\n\n\n\n<li>El Grandmaster env\u00eda un mensaje Follow_Up con la marca de tiempo exacta del mensaje Sync.<\/li>\n\n\n\n<li>Los Slaves env\u00edan un mensaje Delay_Req al Grandmaster.<\/li>\n\n\n\n<li>El Grandmaster responde con un mensaje Delay_Resp, permitiendo a los Slaves calcular el retraso de ida y vuelta y ajustar sus relojes.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>Encontr\u00e9 este documento que explica con detalle el funcionamiento de PTP y su implementaci\u00f3n en Cisco: <a href=\"https:\/\/www.cisco.com\/c\/es_mx\/support\/docs\/ios-nx-os-software\/ios-xr-software\/217579-configure-ptp-and-synce-basics-with-cisc.html\">https:\/\/www.cisco.com\/c\/es_mx\/support\/docs\/ios-nx-os-software\/ios-xr-software\/217579-configure-ptp-and-synce-basics-with-cisc.html<\/a><\/p>\n\n\n\n<p>De igual forma, los ejemplos de como implementarlo no me funcionaron en packet tracer para Cisco y tampoco en gns3 con Mikrotik. En Cisco funciona en dispositivos con IOS-XE e IOS-XR. Al parecer necesita Hardware espec\u00edfico para hacerlo. En Mikrotik la documentaci\u00f3n es m\u00e1s clara:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/www.nerdadas.com\/blog\/wp-content\/uploads\/2024\/07\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"292\" src=\"https:\/\/www.nerdadas.com\/blog\/wp-content\/uploads\/2024\/07\/image-1024x292.png\" alt=\"\" class=\"wp-image-1530\" style=\"width:840px;height:auto\" srcset=\"https:\/\/www.nerdadas.com\/blog\/wp-content\/uploads\/2024\/07\/image-1024x292.png 1024w, https:\/\/www.nerdadas.com\/blog\/wp-content\/uploads\/2024\/07\/image-300x85.png 300w, https:\/\/www.nerdadas.com\/blog\/wp-content\/uploads\/2024\/07\/image-768x219.png 768w, https:\/\/www.nerdadas.com\/blog\/wp-content\/uploads\/2024\/07\/image.png 1240w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p><a href=\"https:\/\/help.mikrotik.com\/docs\/display\/ROS\/Precision+Time+Protocol\">https:\/\/help.mikrotik.com\/docs\/display\/ROS\/Precision+Time+Protocol<\/a><\/p>\n\n\n\n<p><strong>En RouterOS:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#Primero hay que crear un perfil\n\/system ptp add name=ptp1\n#o tambi\u00e9n se puede hacer en las versiones 7\n\/interface ptp add name=ptp1\n#As\u00ed vemos el estado\n\/system ptp print\nFlags: I - inactive, X - disabled\n0 name=\"ptp1\" priority1=auto delay-mode=auto transport=auto profile=default\n\n#Luego hay que agregarle las interfaces donde va a correr el servicio\n\/system ptp port add interface=ether1 ptp=ptp1\n\n#Para ver el estado de los puertos\n\/system ptp port print\nFlags: I - inactive\n0 ptp=ptp1 interface=ether8\n1 ptp=ptp1 interface=ether22<\/code><\/pre>\n\n\n\n<p><strong>En Cisco IOS (XE o XR)<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#modo exec priv y configuracion global\nenable\nconfigure terminal\n#ac\u00e1 empezamos, perfil e interface.\nclock protocol ptp\ninterface GigabitEthernet0\/1\nptp\ninterface GigabitEthernet0\/1\n#si va como master\nptp mode master\n#opci\u00f3n si va como esclavo\nptp mode slave\nend\n#As\u00ed revisamos el estado\nshow ptp clock\nshow ptp port state\n#con este comando vemos qui\u00e9n es el server que est\u00e1 propagando\nshow ptp parent<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Sistemas alternativos de precisi\u00f3n<\/h2>\n\n\n\n<p>Existen algunos sistemas de sincronizaci\u00f3n horario que se han vuelto rapidamente en los preferidos y se usan conjuntamente con NTP y PTP. <\/p>\n\n\n\n<p><strong>Global Positioning System (GPS)<\/strong>:<\/p>\n\n\n\n<p>No es un protocolo de red en s\u00ed, pero es una fuente de tiempo precisa que puede ser utilizada para sincronizar relojes. Los receptores GPS pueden proporcionar una se\u00f1al de tiempo precisa a otros dispositivos. Generalmente, el GPS puede ofrecer una precisi\u00f3n de sincronizaci\u00f3n del tiempo de alrededor de 10 a 40 nanosegundos (ns) en relaci\u00f3n con el tiempo del Sistema de Tiempo del GPS, que se mantiene mediante una red de relojes at\u00f3micos en los sat\u00e9lites GPS. De todas formas las condiciones atmosfericas y la ubicaci\u00f3n del receptor gps pueden alterar esta precisi\u00f3n.<\/p>\n\n\n\n<p>Se usa en sistemas de navegaci\u00f3n, telecomunicaciones, y como fuente de tiempo para otros protocolos de sincronizaci\u00f3n.<\/p>\n\n\n\n<p><strong>White Rabbit (WR)<\/strong>:<\/p>\n\n\n\n<p>Es una extensi\u00f3n del protocolo PTP, desarrollada para proporcionar sincronizaci\u00f3n de tiempo precisa en el rango de sub-nanosegundos. Fue desarrollado como una extensi\u00f3n de Ethernet para proporcionar sincronizaci\u00f3n sub-nanosegundo.Comenz\u00f3 como un proyecto en el CERN para satisfacer la necesidad de sincronizaci\u00f3n precisa en grandes aceleradores de part\u00edculas. (Ya se deben imaginar la precisi\u00f3n). Se basa en tecnolog\u00edas como IEEE 1588 Precision Time Protocol (PTP) y Synchronous Ethernet (SyncE). Es preciso  cerca de los 100 pico-segundos.<\/p>\n\n\n\n<p> Utiliza el protocolo PTP para la sincronizaci\u00f3n de tiempo, tambi\u00e9n <a href=\"https:\/\/en.wikipedia.org\/wiki\/Synchronous_Ethernet\" title=\"\">SyncE<\/a> para la sincronizaci\u00f3n de frecuencia a trav\u00e9s de la red e implementa correcci\u00f3n precisa de retardos en cables y switches para mejorar la precisi\u00f3n calculando los delays sobre ptp.<\/p>\n\n\n\n<p>Se usa en redes de distribuci\u00f3n de tiempo en instalaciones cient\u00edficas y experimentos de f\u00edsica de alta energ\u00eda.<\/p>\n\n\n\n<p><strong>Inter-range Instrumentation Group Time Code (IRIG-B)<\/strong>:<\/p>\n\n\n\n<p>Este es un protocolo de sincronizaci\u00f3n de tiempo usado principalmente en sistemas militares y de aviaci\u00f3n. Lo agrego para conocimiento general pero es usado m\u00e1s que nada en sistemas electr\u00f3nicos. Su precisi\u00f3n es de microsegundos. <\/p>\n\n\n\n<p>Se usa en sistemas de telemetr\u00eda, sistemas de radar y sistemas de control de vuelo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusiones<\/h2>\n\n\n\n<p>Cada uno de estos protocolos tiene sus propias ventajas y desventajas. En cuesti\u00f3n de redes es claro que NTP sigue siendo y ser\u00e1 por un tiempo m\u00e1s un estandar dificil de reemplazar. PTP es una curiosidad interesante hasta que tu red de producci\u00f3n necesita correci\u00f3n de errores, de ah\u00ed la necesidad de routers espec\u00edficos para implementar este protocolo.<\/p>\n\n\n\n<p>Quiero que te lleves un vistazo general de los diferentes protocolos de tiempo al terminar este texto y elijas con sabidur\u00eda!.<\/p>\n\n\n\n<p>Y si ten\u00e9s dudas o necesitas ayuda, no dudes en escribirme.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tener fecha y hora correctamente configuradas en tu red es muy importante. No solo para tener datos precisos de inicios de sesi\u00f3n o eventos logueados sino tambi\u00e9n para sincronizar equipos que requieran precisi\u00f3n y no tener fallas o alteraciones en sus sincros. Certficados de seguridad, dispositivos de red o controladores de dominio necesitan mantener sus [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1536,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[766,1223,161,1,17,804],"tags":[1332,10,37,242,841,1329,1303,1331,1325,569,1238,1333,869,1327,1328,316,1070],"class_list":["post-1517","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-curiosidades","category-redes","category-seguridad","category-sin-categoria","category-tecnologia","category-ti","tag-1332","tag-jeremias-palazzesi","tag-linux","tag-network","tag-ntp","tag-protocol","tag-protocolos","tag-protocols","tag-ptp","tag-redes","tag-routers","tag-ruteador","tag-seguridad","tag-sntp","tag-synce","tag-tiempo","tag-time"],"_links":{"self":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/1517","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/comments?post=1517"}],"version-history":[{"count":11,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/1517\/revisions"}],"predecessor-version":[{"id":1538,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/1517\/revisions\/1538"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/media\/1536"}],"wp:attachment":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/media?parent=1517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/categories?post=1517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/tags?post=1517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}