Detalles de implementación del protocolo de sincronización de tiempo PTPv2

Introducción

El concepto de construir una "Subestación digital" en la industria de la energía eléctrica requiere sincronización con una precisión de 1 μs. Las transacciones financieras también requieren precisión de microsegundos. En estas aplicaciones, la precisión del tiempo NTP ya no es suficiente.

El protocolo de sincronización PTPv2, descrito por el estándar IEEE 1588v2, permite una precisión de sincronización de varias decenas de nanosegundos. PTPv2 le permite enviar paquetes de sincronización a través de redes L2 y L3.

Las principales áreas donde se utiliza PTPv2 son:

  • Ingeniería de la Energía;
  • equipos de control y medición;
  • complejo militar-industrial;
  • Telecom
  • sector financiero.

Esta publicación analiza cómo funciona el protocolo de sincronización PTPv2.

Tenemos más experiencia en la industria y a menudo nos encontramos con este protocolo en aplicaciones de energía. En consecuencia, haremos la revisión con un ojo puesto en la energía .

¿Por qué es necesario?

Actualmente, STO 34.01-21-004-2019 PJSC Rosseti y STO 56947007-29.240.10.302-2020 PJSC FGC UES contienen requisitos para la organización del bus de proceso con la provisión de sincronización de tiempo a través de PTPv2.

Esto se debe al hecho de que los terminales de protección de relé y los dispositivos de medición están conectados al bus de proceso, que transmiten valores instantáneos de corriente y voltaje utilizando los llamados flujos SV (flujos de multidifusión) a través del bus de proceso.

Los terminales de protección de relé utilizan estos valores para implementar la protección de conexión. Si la precisión de las mediciones a lo largo del tiempo es pequeña, algunas protecciones pueden fallar.

Por ejemplo, la protección de la selectividad absoluta puede convertirse en una víctima de sincronización de tiempo "débil". A menudo, la lógica de tales defensas se basa en una comparación de dos valores. Si los valores divergen a un valor suficientemente grande, entonces se activa la protección. Si estos valores se miden con una precisión de 1 ms, puede obtener una gran diferencia donde los valores son realmente normales, si los mide con una precisión de 1 μs.

Versiones PTP

El protocolo PTP se describió originalmente en 2002 en el estándar IEEE 1588-2002 y se denominó "Estándar para un protocolo de sincronización de reloj de precisión para sistemas de control y medición en red". En 2008, se lanzó el estándar IEEE 1588-2008 actualizado, que describe la versión 2 del PTP. En esta versión del protocolo, se mejoró la precisión y la estabilidad, pero no se mantuvo la compatibilidad con la primera versión del protocolo. Además, en 2019, se lanzó una versión del estándar IEEE 1588-2019 que describe PTP v2.1. Esta versión agrega mejoras menores a PTPv2 y es compatible con versiones anteriores de PTPv2.

En otras palabras, tenemos la siguiente imagen con las versiones:
PTPv1
(IEEE 1588-2002)
PTPv2
(IEEE 1588-2008)
PTPv2.1
(IEEE 1588-2019)
PTPv1 (IEEE 1588-2002)
-Incompatible
Incompatible
PTPv2 (IEEE 1588-2008)


PTPv2.1 (IEEE 1588-2019)



Pero, como siempre, hay matices.

La incompatibilidad entre PTPv1 y PTPv2 sugiere que un dispositivo con soporte PTPv1 no podrá sincronizarse desde el reloj exacto que se ejecuta en PTPv2. Usan diferentes formatos de mensajes para la sincronización.

Pero aún puede combinar dispositivos con PTPv1 y dispositivos con PTPv2 en la misma red. Para hacer esto, algunos fabricantes le permiten seleccionar la versión del protocolo en los puertos del reloj fronterizo. Es decir, el reloj de límite se puede sincronizar a través de PTPv2 y al mismo tiempo sincronizar otros relojes conectados a él tanto por PTPv1 como por PTPv2.

Dispositivos PTP. ¿Qué son y en qué se diferencian?

El estándar IEEE 1588v2 describe varios tipos de dispositivos. Todos ellos se dan en la tabla.

Los dispositivos se comunican entre sí a través de LAN mediante PTP.

Los dispositivos PTP se llaman relojes. Todos los relojes toman la hora exacta del reloj Grandmaster.

Hay 5 tipos de relojes:
Reloj de gran maestro
La principal fuente de tiempo preciso. A menudo equipado con una interfaz para conectar GPS.
Reloj ordinario
Un dispositivo de puerto único que puede ser maestro (reloj maestro) o esclavo (reloj maestro)
Horas principales (master)
Son la fuente de la hora exacta en la que se sincronizan otros relojes.
Reloj esclavo (esclavo)
El dispositivo final que se sincroniza desde el reloj maestro
Reloj límite
Un dispositivo con múltiples puertos, que puede ser maestro o esclavo.

Es decir, este reloj puede sincronizarse desde un reloj maestro superior y sincronizar un reloj esclavo inferior.
End-to-end Transparent Clock ( , End-to-End)
, , . PTP .

PTP-.

.
Peer-to-Peer Transparent Clock ( , Peer-to-Peer)
Un dispositivo con múltiples puertos que no es ni un reloj maestro ni un esclavo.
Transmite datos PTP entre dos horas.

Al transmitir datos, el reloj transparente corrige todos los mensajes PTP Sync y Follow_Up (a continuación se describe más sobre ellos).

La corrección se logra agregando al campo del ajuste del paquete de retraso transmitido en el dispositivo de transmisión y el retraso en el canal de datos.
Nodo de gestión
Un dispositivo que configura y diagnostica otros relojes.

Los relojes maestro y esclavo se sincronizan mediante marcas de tiempo en mensajes PTP. Hay dos tipos de mensajes en el protocolo PTP:

  • Los mensajes de evento son mensajes sincronizados que implican la generación de una marca de tiempo en el momento en que se envía un mensaje y en el momento en que se recibe.
  • General Messages – ,

Event Messages
General Messages
Sync
Delay_Req
Pdelay_Req
Pdelay_Resp
Announce
Follow_Up
Delay_Resp
Pdelay_Resp_Follow_Up
Management
Signaling

A continuación, consideraremos todos los tipos de mensajes con más detalle.

Principales problemas de sincronización

Cuando se transmite un paquete de sincronización a través de una red local, se retrasa en el conmutador y en el canal de transmisión de datos. Cualquier cambio dará un retraso de aproximadamente 10 μs, lo cual es inaceptable para PTPv2. Después de todo, necesitamos obtener una precisión de 1 μs en el dispositivo final. (Esto es cuando se trata de energía. Otras aplicaciones pueden requerir más precisión).

IEEE 1588v2 describe varios algoritmos de operación que le permiten registrar el retraso de tiempo y ajustarlo.

Algoritmo operativo
Durante la operación normal, el protocolo opera en dos fases.

  • Fase 1 - Establecimiento de la jerarquía "Reloj líder - Reloj esclavo".
  • Fase 2: sincronización del reloj utilizando el mecanismo de extremo a extremo o punto a punto.

Fase 1: configuración de la jerarquía de esclavos maestros

Cada puerto de un reloj regular o de límite tiene un cierto número de estados (reloj esclavo y reloj maestro). El estándar describe el algoritmo de transición entre estos estados. En programación, dicho algoritmo se llama máquina de estados o máquina de estados (más en la Wiki).

Esta máquina de estado utiliza el Mejor algoritmo de reloj maestro (BMCA) para configurar el maestro cuando se conectan dos horas.

Este algoritmo permite que el reloj asuma las obligaciones de un reloj de gran maestro cuando un reloj de gran maestro superior pierde su señal GPS, se desconecta de la red, etc.

Las transiciones de estado de acuerdo con BMCA se muestran brevemente en el siguiente diagrama:


La información sobre el reloj en el otro extremo del "cable" se envía en un mensaje especial (Mensaje de anuncio). Cuando se recibe esta información, el algoritmo de la máquina de estado procesa y compara qué reloj es mejor. El puerto de los mejores relojes se convierte en el reloj líder.

Una jerarquía simple se presenta en el diagrama a continuación. Las rutas 1, 2, 3, 4, 5 pueden contener un reloj transparente (Reloj transparente), pero no participan en el establecimiento de la jerarquía "Reloj líder - Reloj esclavo".



Fase 2 - Sincronización de un reloj normal y de límite

Inmediatamente después de que se establezca la jerarquía "Horas iniciales - Horas de esclavos", comienza la fase de sincronización de un reloj regular y de límite.

Para la sincronización, el reloj maestro envía un mensaje que contiene una marca de tiempo al reloj esclavo.

Los horarios principales pueden ser:

  • escenario único;
  • dos etapas

Un reloj de una sola etapa para la sincronización envía un mensaje de sincronización.

Un reloj de dos etapas utiliza dos mensajes para la sincronización: sincronización y seguimiento.

Se pueden usar dos mecanismos para la fase de sincronización:

  • Retraso del mecanismo de solicitud-respuesta.
  • Mecanismo de medición de retraso entre pares.

Para empezar, consideraremos estos mecanismos en el caso más simple, cuando no se utilizan relojes transparentes.

Retraso del mecanismo de solicitud-respuesta

El mecanismo tiene dos pasos:

  1. Medición del retraso en la transmisión de un mensaje entre un reloj maestro y un esclavo. Se realiza utilizando el mecanismo de solicitud-respuesta de retraso.
  2. Corrige el turno de la hora exacta.

Medición de retardo


t1: sincronización del tiempo de envío del mensaje por el reloj principal; t2 - Sincroniza el tiempo de recepción del mensaje por el reloj esclavo; t3 - Tiempo de envío de solicitud de retraso (Delay_Req) ​​por horas de esclavo; t4 - Tiempo de recepción de Retardo_Req por el reloj principal.

Cuando el reloj esclavo conoce el tiempo t1, t2, t3 y t4, puede calcular el retraso promedio en la transmisión del mensaje de sincronización (tmpd). Se calcula de la siguiente manera:



cuando se transmite un mensaje Sync y Follow_Up, se calcula el retraso de tiempo del maestro al esclavo - t-ms.

Cuando se transmiten los mensajes Delay_Req y Delay_Resp, se calcula el retraso de tiempo del esclavo al maestro, t-sm.

Si se produce cierta asimetría entre estos dos valores, aparece un error en la corrección de la salida de la hora exacta. El error es causado por el hecho de que el retraso calculado es el promedio de los retrasos t-ms y t-sm. Si los retrasos no son iguales entre sí, entonces ajustaremos el tiempo incorrectamente.

Corrección del desplazamiento de la hora exacta

Después de que se conoce el retraso entre el reloj principal y el reloj esclavo, el reloj esclavo realiza la corrección de tiempo.



El reloj esclavo utiliza el mensaje de sincronización y el mensaje opcional Follow_Up para calcular la diferencia horaria exacta al transmitir el paquete del reloj maestro al esclavo. El cambio se calcula utilizando la siguiente fórmula:



Mecanismo de medición de retraso entre pares

Este mecanismo también utiliza dos pasos para sincronizar:

  1. . peer delay mechanism.
  2. .

Medición de demora de

igual a igual La demora entre dispositivos habilitados de igual a igual se mide usando los siguientes mensajes:



Cuando el puerto 1 conoce los tiempos t1, t2, t3 y t4, puede calcular el retraso promedio (tmld ) Se calcula usando la siguiente fórmula:



Luego, el puerto usa este valor para calcular el campo de ajuste para cada mensaje de sincronización o mensaje de seguimiento opcional que pasa a través de este dispositivo.

El retraso total será igual a la suma del retraso durante la transmisión a través de este dispositivo, el retraso promedio durante la transmisión a través del canal de datos y el retraso ya contenido en este mensaje, incluido en los dispositivos superiores.

Los mensajes Pdelay_Req, Pdelay_Resp y Pdelay_Resp_Follow_Up opcionales le permiten obtener un retraso del maestro al esclavo y del esclavo al maestro (circular).

Cualquier asimetría entre estos dos valores introducirá un error de corrección de desplazamiento de tiempo preciso.

Corrección del desplazamiento de la hora exacta El



reloj esclavo utiliza el mensaje de sincronización y el mensaje opcional Follow_Up para calcular el desplazamiento de la hora exacta al transmitir el paquete desde el reloj principal al esclavo. El cambio se calcula de acuerdo con la siguiente fórmula:



Beneficios de ajuste entre pares: el retraso de cada mensaje de sincronización o seguimiento se calcula a medida que se transmite por la red. Por lo tanto, un cambio en la ruta de transmisión no afectará de ninguna manera la precisión del ajuste.

Cuando se usa este mecanismo, la sincronización de tiempo no requiere el cálculo del retraso de tiempo en el camino recorrido por el paquete de sincronización, como se hace con un intercambio básico. Aquellos. Los mensajes Delay_Req y Delay_Resp no se envían. En este método, la demora entre el reloj maestro y los seguidores simplemente se suma en el campo de ajuste de cada mensaje de sincronización o seguimiento.

Otra ventaja es que el reloj de conducción se descarga debido a la necesidad de procesar mensajes Delay_Req.

Modos de funcionamiento de relojes transparentes En

consecuencia, se examinaron ejemplos simples. Ahora suponga que los interruptores aparecen en la ruta de sincronización.

Si utiliza conmutadores sin compatibilidad con PTPv2, el paquete de sincronización se retrasará unos 10 μs en el conmutador.

Los conmutadores que admiten PTPv2 en la terminología IEEE 1588v2 se denominan relojes transparentes. El reloj transparente no está sincronizado con el reloj principal y no participa en la jerarquía "Reloj principal - Reloj esclavo", pero cuando transmiten mensajes de sincronización, recuerdan cuánto retrasaron el mensaje. Esto le permite ajustar el retraso de tiempo.

Un reloj transparente puede funcionar en dos modos:

  • De extremo a extremo.
  • De igual a igual.

End-to-End (E2E) El



reloj E2E transparente transmite mensajes Sync y los mensajes Follow_Up que lo acompañan a todos los puertos. Incluso aquellos que están bloqueados por algún protocolo (por ejemplo, RSTP).

El conmutador recuerda la marca de tiempo cuando se recibió el paquete Sync (Follow_Up) en el puerto y cuando se envió desde el puerto. En base a estas dos marcas de tiempo, se calcula el tiempo de procesamiento del interruptor para el mensaje. En el estándar, este tiempo se llama tiempo de residencia.

El tiempo de procesamiento se agrega al campo correctField del mensaje Sync (reloj de una etapa) o Follow_Up (reloj de dos etapas).



El reloj transparente E2E mide el tiempo de procesamiento de los mensajes Sync y Delay_Req que pasan por el conmutador. Pero es importante comprender que el retraso de tiempo entre el reloj principal y el reloj esclavo se calcula utilizando el mecanismo de solicitud-respuesta de retraso. Si el reloj maestro cambia o la ruta del reloj maestro al esclavo cambia, el retraso se mide nuevamente. Esto aumenta el tiempo de transición en caso de cambios en la red.



El reloj P2P transparente, además de medir el tiempo de procesamiento del mensaje por el interruptor, mide el retraso en el canal de datos al vecino más cercano utilizando el mecanismo de medición de retraso del nodo vecino.

El retraso se mide en cada canal en ambas direcciones, incluidos los canales que están bloqueados por un protocolo (por ejemplo, RSTP). Esto le permite calcular de inmediato un nuevo retraso en la ruta de sincronización si el reloj del gran maestro o la topología de la red ha cambiado.

El tiempo de procesamiento del interruptor y el tiempo de retraso se acumulan al transmitir mensajes de sincronización o seguimiento.

Tipos de soporte para conmutadores PTPv2 Los

conmutadores pueden admitir PTPv2:

  • programáticamente
  • hardware.

En la implementación del software del protocolo PTPv2, el conmutador solicita una marca de tiempo del firmware. El problema es que el firmware funciona de forma cíclica, y debe esperar hasta que finalice el ciclo actual, procesar la solicitud y, una vez que expire el siguiente ciclo, emitirá una marca de tiempo. Todo esto también llevará tiempo, y obtendremos un retraso, aunque no tan significativo como sin el soporte de software PTPv2.

Solo el soporte de hardware para PTPv2 le permite mantener la precisión necesaria. En este caso, la emisión de la marca de tiempo se realiza mediante un ASIC especial, que está instalado en el puerto.

Formato del mensaje

Todos los mensajes PTP consisten en los siguientes campos:

  • Encabezado: 34 bytes.
  • Cuerpo: el tamaño depende del tipo de mensaje.
  • Sufijo (opcional.



Encabezado

El campo Encabezado es el mismo para todos los mensajes PTP. Su tamaño es de 34 bytes.

El formato del



campo Encabezado: mensajeTipo es el tipo del mensaje transmitido, por ejemplo, Sincronización, Delay_Req, PDelay_Req, etc.

messageLength : contiene el tamaño completo del mensaje PTP, incluidos el encabezado, el cuerpo y el sufijo (pero excluyendo los bytes de relleno).

domainNumber : determina a qué dominio PTP pertenece el mensaje.

Un dominio son unos pocos relojes diferentes ensamblados en un grupo lógico y sincronizados desde un reloj principal, pero no necesariamente sincronizados con un reloj que pertenece a otro dominio.

banderas : este campo contiene varias banderas para identificar el estado del mensaje.

correccióncampo- contiene el tiempo de retraso en nanosegundos. El tiempo de demora incluye la demora de transmisión a través del reloj transparente, así como la demora de transmisión a través del canal cuando se utiliza el modo punto a punto.

sourcePortIdentity : este campo contiene información sobre desde qué puerto se envió originalmente este mensaje.

ID de secuencia : contiene el número de identificación para mensajes individuales.

controlField - artifact field =) Permanece de la primera versión del estándar y contiene información sobre el tipo de este mensaje. Esencialmente lo mismo que messageType, pero con menos opciones.

logMessageInterval : este campo está determinado por el tipo de mensaje.

Cuerpo

Como se discutió anteriormente, hay varios tipos de mensajes. Estos tipos se describen a continuación:

Mensaje de anuncio El mensaje de anuncio
se utiliza para "informar" a otros relojes dentro del mismo dominio acerca de su configuración. Este mensaje le permite configurar la jerarquía "Reloj líder - Reloj esclavo".


Sincronización
mensaje de sincronización mensaje A (Sync) es enviado por el reloj maestro y contiene la hora del reloj maestro en el momento del mensaje de sincronización se ha creado. Si el reloj principal es de dos pasos, la marca de tiempo en el mensaje de sincronización se establecerá en 0 y la marca de tiempo actual se enviará en el mensaje de seguimiento emparejado. El mensaje de sincronización se usa para ambos mecanismos de medición de retardo.

El mensaje se transmite mediante multidifusión. Opcionalmente, puede usar Unicast.





Mensaje Delay_Req El formato del mensaje Delay_Req es idéntico al mensaje Sync. El reloj esclavo envía Delay_Req. Contiene el tiempo que Delay_Req fue enviado por el reloj esclavo. Este mensaje se usa solo para el mecanismo de solicitud-respuesta de retraso.

El mensaje se transmite mediante multidifusión. Opcionalmente, puede usar Unicast.



Mensaje de seguimiento El mensaje de seguimiento

es enviado opcionalmente por el reloj maestro y contiene la hora en que el maestro envió el mensaje de sincronización . El mensaje Follow_Up solo se envía mediante un reloj de conducción de dos etapas.

El mensaje Follow_Up se usa para ambos mecanismos de medición de retraso.

El mensaje se transmite mediante multidifusión. Opcionalmente, puede usar Unicast.



Mensaje Delay_Resp

El reloj maestro envía el mensaje Delay_Resp. Contiene la hora en que el reloj maestro recibe el Delay_Req. Este mensaje se usa solo para el mecanismo de solicitud-respuesta de retraso.

El mensaje se transmite mediante multidifusión. Opcionalmente, puede usar Unicast. Mensaje



Pdelay_Req Un

mensaje Pdelay_Req es enviado por un dispositivo que solicita un retraso. Contiene la hora en que se envió el mensaje desde el puerto de este dispositivo. Pdelay_Req se usa solo para el mecanismo de medición de retardo del nodo vecino.



Mensaje Pdelay_Resp El

dispositivo que recibió la solicitud de retraso envía el mensaje Pdelay_Resp . Contiene la hora en que este dispositivo recibió el mensaje Pdelay_Req. Los mensajes Pdelay_Resp se usan solo para el mecanismo de medición de retardo del nodo vecino.



Mensaje Pdelay_Resp_Follow_Up El mensaje Pdelay_Resp_Follow_Up

es enviado opcionalmente por el dispositivo que recibió la solicitud de retraso. Contiene la hora en que este dispositivo recibió el mensaje Pdelay_Req. El mensaje Pdelay_Resp_Follow_Up solo se envía mediante un reloj maestro de dos etapas.

Este mensaje también se puede usar para el tiempo de ejecución en lugar de una marca de tiempo. El tiempo de ejecución es el tiempo desde el momento en que se recibe Pdelay-Req hasta que se envía Pdelay_Resp.

Pdelay_Resp_Follow_Up se usan solo para el mecanismo de medición de retardo del nodo vecino.



Mensajes de control (Mensaje de administración)

Los mensajes de control PTP son necesarios para transferir información entre uno o más relojes y el nodo de control.



Transferencia a LV

Un mensaje PTP se puede transmitir a dos niveles:

  • Red: como parte de los datos de IP.
  • Enlace: como parte de una trama Ethernet.

Enviar un mensaje PTP sobre UDP sobre IP sobre Ethernet



PTP sobre UDP sobre Ethernet Los



perfiles

PTP tienen muchos parámetros "flexibles" que deben configurarse. Por ejemplo:

  • Opciones de BMCA.
  • El mecanismo de medición de retraso.
  • Intervalos y valores iniciales de todos los parámetros configurables, etc.

Y a pesar del hecho de que anteriormente dijimos que los dispositivos PTPv2 son compatibles entre sí, en el buen sentido no lo es. Los dispositivos deben tener la misma configuración para interactuar.

Por lo tanto, hay los llamados perfiles PTPv2. Los perfiles son grupos de ajustes configurados y ciertas restricciones de protocolo para que pueda implementar la sincronización de tiempo para una aplicación específica.

El estándar IEEE 1588v2 describe solo un perfil: el "Perfil predeterminado". Todos los demás perfiles son creados y descritos por varias organizaciones y asociaciones.

Por ejemplo, el Power Profile o PTPv2 Power Profile fue creado por el Power Systems Relaying Committee y el Substation Committee de la IEEE Power and Energy Society. El perfil en sí se llama IEEE C37.238-2011.

El perfil describe que PTP se puede transmitir:

  • Solo a través de redes L2 (es decir, Ethernet, HSR, PRP, no IP).
  • Los mensajes se transmiten solo por la lista de correo de multidifusión.
  • El mecanismo de medición de retraso de pares se utiliza como mecanismo de medición de retraso.

El dominio predeterminado es 0, el dominio recomendado es 93.

La filosofía de crear C37.238-2011 fue el deseo de reducir la cantidad de características opcionales y dejar solo las funciones necesarias para una interacción confiable entre dispositivos y aumentar la estabilidad del sistema.

Además, se determina la frecuencia de la transmisión de mensajes: de



hecho, solo hay un parámetro disponible para la selección: el tipo de reloj principal (de una o dos etapas).

La precisión no debe ser superior a 1 μs. En otras palabras, puede contener un máximo de 15 relojes transparentes o tres horas límite en una ruta de sincronización.


All Articles