PTPv2时间同步协议的实现细节

简介

在电力行业中构建“数字变电站”的概念要求同步精度为1μs。金融交易也需要毫秒级的精度。在这些应用中,NTP时间精度不再足够。

IEEE 1588v2标准所描述的PTPv2同步协议允许数十纳秒的同步精度。PTPv2允许您通过L2和L3网络发送同步数据包。

使用PTPv2的主要领域是:

  • 电力工程;
  • 控制和测量设备;
  • 军事工业综合体;
  • 电讯
  • 金融部门。

这篇文章介绍了PTPv2同步协议的工作原理。

我们拥有更多的行业经验,我们经常在能源应用中遇到此协议。因此,我们将着眼于精力进行审查

为什么有必要?

当前,STO 34.01-21-004-2019 PJSC Rosseti和STO 56947007-29.240.10.302-2020 PJSC FGC UES包含过程总线的组织要求,并通过PTPv2提供时间同步。

这是由于以下事实:继电器保护端子和测量设备连接到过程总线,它们使用所谓的SV流(多播流)通过过程总线传输电流和电压的瞬时值。

继电保护端子使用这些值来实现连接保护。如果随时间变化的测量精度很小,那么某些保护措施可能会错误地起作用。

例如,绝对选择性的保护可能成为“弱”时间同步的受害者。通常,此类防御的逻辑基于两个值的比较。如果值发散到足够大的值,则触发保护。如果以1 ms的精度测量这些值,则以1μs的精度测量它们会在实际值正常的地方产生很大的差异。

PTP版本

PTP协议最初于2002年在IEEE 1588-2002标准中进行了描述,被称为“用于网络测量和控制系统的精确时钟同步协议的标准”。2008年,发布了更新的描述PTP版本2的IEEE 1588-2008标准,该版本的协议提高了准确性和稳定性,但未保持与该协议第一个版本的向后兼容性。此外,在2019年,发布了描述PTP v2.1的IEEE 1588-2019标准版本。该版本对PTPv2进行了较小的改进,并且与PTPv2向后兼容。

换句话说,我们具有以下版本的图片:
PTPv1
(IEEE 1588-2002)
PTPv2
(IEEE 1588-2008)
PTPv2.1
(IEEE 1588-2019)
PTPv1(IEEE 1588-2002)
--不相容
不相容
PTPv2 (IEEE 1588-2008)


PTPv2.1 (IEEE 1588-2019)



但是,一如既往,有细微差别。

PTPv1和PTPv2之间的不兼容性表明,支持PTPv1的设备将无法与PTPv2上运行的确切时钟进行同步。他们使用不同的消息格式进行同步。

但是,您仍然可以在同一网络上将具有PTPv1的设备和具有PTPv2的设备组合在一起。为此,某些制造商允许您在边界时钟的端口上选择协议版本。也就是说,边界时钟可以通过PTPv2进行同步,并同时同步通过PTPv1和PTPv2连接到它的其他时钟。

PTP设备。它们是什么以及它们之间有何不同?

IEEE 1588v2标准描述了几种类型的设备。所有这些都在表中给出。

设备使用PTP通过LAN相互通信。

PTP设备称为时钟。所有手表都需要从大师钟表中获取准确的时间。

手表有5种类型:
大师钟
准确时间的主要来源。通常配备用于连接GPS的接口。
普通钟
单端口设备可以是主机(主机时钟)或从机(主机时钟)
领导时间(硕士)
它们是其他时钟同步的确切时间的来源。
从时钟(从)
从主时钟同步的终端设备
边界时钟
具有多个端口的设备,可以是主机或从机。

即,该手表可以从较高的主时钟同步,而从较低的从时钟同步。
End-to-end Transparent Clock ( , End-to-End)
, , . PTP .

PTP-.

.
Peer-to-Peer Transparent Clock ( , Peer-to-Peer)
具有多个端口的设备,它既不是主时钟也不是从时钟。
它在两个小时之间传输PTP数据。

传输数据时,透明时钟会更正所有PTP消息Sync和Follow_Up(有关它们的更多信息,请参见下文)。

通过在发送设备上发送的延迟数据包和数据通道上的延迟的调整字段中添加校正,可以实现校正。
管理节点
配置和诊断其他手表的设备

主时钟和从时钟使用PTP消息中的时间戳同步。PTP协议中有两种消息类型:

  • 事件消息是同步消息,涉及在发送消息时和接收消息时生成时间戳。
  • General Messages – ,

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

接下来,我们将更详细地考虑所有类型的消息。

同步的主要问题

通过本地网络传输同步数据包时,它在交换机和数据传输通道中会延迟。任何开关都会产生大约10μs的延迟,这对于PTPv2是不可接受的。毕竟,我们需要在最终设备上获得1μs的精度。(这是关于能量的。其他应用程序可能需要更高的精度。)

IEEE 1588v2描述了几种运算算法,这些算法可让您记录时间延迟并进行调整。

操作算法
在正常操作期间,协议分为两个阶段。

  • 阶段1-建立“前导时钟-从时钟”层次结构。
  • 阶段2-使用端到端机制或点对点的时钟同步。

阶段1-设置主从

时钟层次结构常规或边界时钟的每个端口都有一定数量的状态(从时钟和主时钟)。该标准描述了这些状态之间的转换算法。在编程中,这种算法称为状态机或状态机(更多信息请参见Wiki)。

连接两个小时后,此状态机使用最佳主机时钟算法(BMCA)来设置主机。

当上等大师级手表失去其GPS信号,与网络断开连接等时,此算法可使手表承担起大师级手表的义务。

下图简要显示了根据BMCA进行的状态转换:


有关“电线”另一端时钟的信息以特殊消息(“公告”消息)发送。收到此信息后,状态机算法将处理并比较哪个时钟更好。最好的手表上的端口成为领先的手表。

下图显示了一个简单的层次结构。路径1、2、3、4、5可能包含透明时钟(透明时钟),但它们不参与层次结构“ Leading clock-Slave Clock”的建立。



阶段2-正常时钟和边界时钟

的同步建立“领先时间-从机时间”层次结构之后,常规时钟和边界时钟的同步阶段立即开始。

为了同步,主时钟将包含时间戳的消息发送到从时钟。

前置时间可以是:

  • 单级;
  • 两阶段。

用于同步的单级时钟发送一个同步消息。

两级时钟使用两条消息进行同步-Sync和Follow_Up。

同步阶段可以使用两种机制:

  • 延迟请求-响应机制。
  • 对等延迟测量机制。

首先,我们将在最简单的情况下考虑这些机制-当不使用透明手表时。

延迟请求-响应机制

该机制包括两个步骤:

  1. 测量主时钟和从时钟之间传输消息的延迟。它使用延迟请求-响应机制执行。
  2. 校正准确时间的偏移。

延迟测量


t1-通过超前时钟同步消息发送时间; t2-通过从时钟同步消息接收时间; t3-延迟请求发送时间(Delay_Req)按从属小时; t4-前置时钟的Delay_Req接收时间。

当从时钟知道时间t1,t2,t3和t4时,他们可以计算发送同步消息(tmpd)的平均延迟。计算方法如下:



发送Sync and Follow_Up消息时,将计算从主机到从机的时间延迟-t-ms。

在发送Delay_Req和Delay_Resp消息时,将计算从站到主站的时间延迟t-sm。

如果这两个值之间出现一些不对称,则在准确时间偏差的校正中会出现错误。该错误是由于以下事实造成的:计算出的延迟是延迟t-ms和t-sm的平均值。如果延迟不相等,那么我们将不正确地调整时间。

校正精确时间的偏移量

在知道超前时钟和从时钟之间的延迟之后,从时钟将执行时间校正。



当从主时钟向从时钟发送数据包时,从时钟使用同步消息和可选的Follow_Up消息来计算确切的时间偏移。使用以下公式计算移位:



对等延迟测量机制

此机制还使用两个步骤进行同步:

  1. . peer delay mechanism.
  2. .

对等

延迟测量使用以下消息测量启用对等设备之间的延迟



当端口1知道时间t1,t2,t3和t4时,它可以计算平均延迟(tmld )使用以下公式进行计算:



然后,端口使用此值为通过此设备的每个同步消息或可选的Follow_Up消息计算调整字段。

总延迟等于通过该设备传输期间的延迟,通过数据信道传输期间的平均延迟以及此消息中已包含的延迟(包括在较高设备上)的总和。

消息Pdelay_Req,Pdelay_Resp和可选的Pdelay_Resp_Follow_Up允许您从主机到从机以及从机到主机(循环)获得延迟。

这两个值之间的任何不对称都会引入准确的时间偏移校正误差。

校正准确时间



的偏移量当从前导时钟向从属设备传输数据包时,从时钟使用Sync消息和可选的Follow_Up消息来计算准确时间的偏移。根据以下公式计算偏移量:



对等调整的好处-每个Sync消息或Follow_Up消息在网络上传输时的时间延迟都将计算出来。因此,传输路径的改变将不会以任何方式影响调节的准确性。

使用这种机制时,时间同步不需要像基本交换那样在同步数据包传播的路径上计算时间延迟。那些。不发送Delay_Req和Delay_Resp消息。在这种方法中,主时钟和跟随器之间的延迟仅在每个Sync或Follow_Up消息的调整字段中求和。

另一个优点是驱动时钟无需处理Delay_Req消息。

透明手表的操作模式

因此,研究了简单的示例。现在,假设开关出现在同步路径上。

如果使用不支持PTPv2的交换机,则同步数据包将在交换机上延迟约10μs。

IEEE 1588v2术语中支持PTPv2的交换机称为透明时钟。透明时钟不与前导时钟同步,也不参与“前导时钟-从站时钟”层​​次结构,但是在传输同步消息时,他们记住消息延迟了多少。这使您可以调整时间延迟。

透明手表可以在两种模式下工作:

  • 端到端。
  • 点对点。

端到端(E2E)



透明的E2E手表将Sync消息和随附的Follow_Up消息传输到所有端口。即使是那些被任何协议(例如,RSTP)阻止的协议。

当在端口上收到Sync数据包(Follow_Up)以及从端口发送该数据包时,交换机会记住该时间戳记。基于这两个时间戳,将计算消息的交换机处理时间。在标准中,此时间称为停留时间。

将处理时间添加到Sync消息(单级时钟)或Follow_Up(两级时钟)的correctionField字段中。



E2E透明手表测量通过交换机的Sync和Delay_Req消息的处理时间。但重要的是要了解,使用延迟请求-响应机制来计算前置时钟和从属时钟之间的时间延迟。如果主时钟改变或从主时钟到从时钟的路径改变,则再次测量延迟。在网络更改的情况下,这会增加过渡时间。



透明的P2P时钟除了通过交换机测量消息的处理时间外,还使用相邻节点的延迟测量机制来测量到最近邻居的数据通道上的延迟。

在每个通道的两个方向上测量延迟,包括被协议(例如,RSTP)阻塞的通道。如果主时钟或网络拓扑已更改,这使您可以立即在同步路径上计算新的延迟。

传输Sync或Follow_Up消息时,将累积开关处理时间和延迟时间。

对PTPv2交换机的支持类型

交换机可以支持PTPv2:

  • 以编程方式
  • 硬件。

在PTPv2协议的软件实现中,交换机从固件请求时间戳。问题是固件循环工作,您必须等到它结束当前周期后,才将请求处理,并且在下一个周期到期后,它将发出时间戳记。所有这一切都将花费一些时间,尽管没有PTPv2软件支持的影响并不那么重要,但我们会遇到延迟。

只有PTPv2的硬件支持才能使您保持必要的准确性。在这种情况下,时间戳的发布是由安装在端口上的特殊ASIC执行的。

消息格式

所有PTP消息均包含以下字段:

  • 标头-34个字节。
  • 正文-大小取决于邮件的类型。
  • 后缀-可选。



标头

所有PTP消息的标头字段均相同。它的大小是34个字节。

标头:



messageType字段的格式是传输的消息的类型,例如Sync,Delay_Req,PDelay_Req等。

messageLength-包含PTP消息的完整大小,包括标头,正文和后缀(但不包括填充字节)。

domainNumber —确定消息所属的PTP域。

是将几个不同的时钟组合成一个逻辑组并从一个前导时钟同步,但不一定与属于另一个域的时钟同步。

标志 -此字段包含各种标志以标识消息的状态。

CorrectionField-包含延迟时间(以纳秒为单位)。延迟时间包括通过透明时钟的传输延迟,以及使用对等模式时通过通道的传输延迟。

sourcePortIdentity-此字段包含有关此消息最初来自哪个端口的信息。

sequenceID-包含单个消息的标识号。

controlField-构件字段=)它保留在标准的第一版中,并包含有关此消息类型的信息。本质上与messageType相同,但选项较少。

logMessageInterval-此字段由消息的类型确定。

身体

如上所述,有几种类型的消息。这些类型如下所述:

公告消息公告
消息用于“告诉”同一域中的其他手表有关其设置的信息。该消息允许您设置层次结构“ Leading Clock-Slave Clock”。


同步
消息同步消息(Sync)由主时钟发送,并包含创建同步消息时主时钟的时间。如果超前时钟是两步时钟,则同步消息中的时间戳将设置为0,并且当前时间戳将在成对的Follow_Up消息中发送。同步消息用于两种延迟测量机制。

该消息是使用多播发送的。您可以选择使用单播。



Delay_Req

消息Delay_Req消息的格式与Sync消息相同。从时钟发送Delay_Req。它包含从时钟发送Delay_Req的时间。该消息仅用于延迟请求-响应机制。

该消息是使用多播发送的。您可以选择使用单播。



Follow_Up消息Follow_Up

消息可选地由主时钟发送,并包含主时钟发送同步消息的时间。 Follow_Up消息仅由两级驱动时钟发送。

Follow_Up消息用于两种延迟测量机制。

该消息是使用多播发送的。您可以选择使用单播。



讯息Delay_Resp

Delay_Resp消息由主时钟发送。它包含主时钟接收Delay_Req的时间。该消息仅用于延迟请求-响应机制。

该消息是使用多播发送的。您可以选择使用单播。



Pdelay_Req

消息Pdelay_Req消息由请求延迟的设备发送。它包含从该设备的端口发送消息的时间。 Pdelay_Req仅用于相邻节点延迟测量机制。



Pdelay_Resp消息Pdelay_Resp

消息由接收到延迟请求的设备发送。它包含此设备接收Pdelay_Req消息的时间。 Pdelay_Resp消息仅用于相邻节点延迟测量机制。



Pdelay_Resp_Follow_Up消息Pdelay_Resp_Follow_Up

消息可选地由接收到延迟请求的设备发送。它包含此设备接收Pdelay_Req消息的时间。Pdelay_Resp_Follow_Up消息仅由两级主时钟发送。

该消息也可以用于运行时而不是时间戳。执行时间是从收到Pdelay-Req到发送Pdelay_Resp的时间。

Pdelay_Resp_Follow_Up仅用于相邻节点延迟测量机制。



控制消息(管理消息)

在一个或多个时钟与控制节点之间传输信息时,需要PTP控制消息。



转移到LV

PTP消息可以在两个级别上传输:

  • 网络-作为IP数据的一部分。
  • 链接-作为以太网帧的一部分。

通过以太网



上的UDP 上的UDP发送PTP消息通过以太网上的UDP 上的UDP发送 PTP



配置文件

具有许多需要配置的“灵活”参数。例如:

  • BMCA选项。
  • 延迟测量机制。
  • 所有可配置参数的间隔和初始值等

尽管我们早先说过PTPv2设备相互兼容,但实际上这不是很好。设备必须具有相同的设置才能进行交互。

因此,存在所谓的PTPv2配置文件。配置文件是一组配置的设置和某些协议限制,因此您可以为特定应用程序实现时间同步。

IEEE 1588v2标准本身仅描述一个配置文件-“默认配置文件”。所有其他配置文件由各种组织和协会创建和描述。

例如,Power Profile或PTPv2 Power Profile是由IEEE Power and Energy Society的电源系统中继委员会和变电站委员会创建的。该配置文件本身称为IEEE C37.238-2011。

该配置文件描述了可以传输PTP:

  • 仅通过L2网络(即以太网,HSR,PRP,而不是IP)。
  • 消息仅通过多播邮件列表发送。
  • 对等延迟测量机制用作延迟测量机制。

默认域为0,建议域为93。

创建C37.238-2011的理念是希望减少可选功能的数量,并仅保留必要的功能以实现设备之间的可靠交互并提高系统稳定性。

同样,确定消息传输的频率:



实际上,只有一个参数可供选择-超前时钟的类型(单级或两级)。

精度应不超过1μs。换句话说,一条同步路径中最多可以包含15个透明时钟或3个边界小时。


All Articles