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

介绍

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

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

PTPv2 使用的主要领域是:

  • 活力;
  • 控制和测量设备;
  • 军工联合体;
  • 电信;
  • 金融部门。

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

我们在工业上有更多的经验,在能源应用中经常看到这个协议。 因此,我们将谨慎进行审查 用于能源.

为什么有必要?

目前,PJSC Rosseti 的 STO 34.01-21-004-2019 和 PJSC FGC UES 的 STO 56947007-29.240.10.302-2020 包含通过 PTPv2 组织具有时间同步功能的过程总线的要求。

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

继电保护终端利用这些值来实现间隔保护。 如果时间测量的准确度很小,那么某些保护可能会误动作。

例如,绝对选择性的防御可能会成为“弱”时间同步的受害者。 这种防御的逻辑通常基于两个数量的比较。 如果这些值相差足够大的值,则会触发保护。 如果这些值是用 1 ms 的时间精度测量的,那么如果用 1 μs 的精度测量的话,你会得到一个很大的差异,而这些值实际上是正常的。

PTP 版本

PTP 协议最初于 2002 年在 IEEE 1588-2002 标准中进行了描述,被称为“网络测量和控制系统的精密时钟同步协议标准”。 2008年,更新的IEEE 1588-2008标准发布,其中描述了PTP版本2。该版本的协议提高了准确性和稳定性,但没有保持与第一版本协议的向后兼容性。 此外,2019 年发布了 IEEE 1588-2019 标准版本,描述了 PTP v2.1。 该版本对 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的接口。

普通时钟

可以是主设备(主时钟)或从设备(从时钟)的单端口设备

主时钟(主时钟)

它们是其他时钟同步的准确时间的来源

从时钟

从主时钟同步的终端设备

边界时钟

具有多个端口的设备,可以是主设备或从设备。

也就是说,这些时钟可以同步上级主时钟并同步下级从时钟。

端到端透明时钟

具有多个端口的设备,既不是主时钟也不是从时钟。 它在两个手表之间传输 PTP 数据。

传输数据时,透明时钟会纠正所有 PTP 消息。

通过将该设备上的延迟时间添加到所传输消息的标头中的校正字段来进行校正。

点对点透明时钟

具有多个端口的设备,既不是主时钟也不是从时钟。
它在两个手表之间传输 PTP 数据。

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

该校正是通过将发送设备上的延迟和数据传输通道上的延迟添加到发送分组的校正字段来实现的。

管理节点

配置和诊断其他手表的设备

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

  • 事件消息是同步消息,涉及在发送消息和接收消息时生成时间戳。
  • 一般消息 - 这些消息不需要时间戳,但可能包含相关消息的时间戳

活动讯息

一般讯息

Sync
延迟请求
延迟请求
延迟响应

宣布
跟进
延迟响应
Pdelay_Resp_Follow_Up
管理
发信号

下面将更详细地讨论所有类型的消息。

基本同步问题

当同步数据包通过本地网络传输时,它会在交换机和数据链路中发生延迟。 任何切换都会产生大约10微秒的延迟,这对于PTPv2来说是不可接受的。 毕竟,我们需要在最终设备上实现 1 μs 的精度。 (这是如果我们谈论的是能源。其他应用可能需要更高的精度。)

IEEE 1588v2 描述了几种允许您记录时间延迟并纠正它的操作算法。

工作算法
在正常运行期间,协议分两个阶段运行。

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

第一阶段——建立主从层次结构

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

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

该算法可以让手表在上游大师手表失去GPS信号、离线等情况下接管大师手表的职责。

下图总结了根据 BMCA 的状态转换:
PTPv2时间同步协议的实现细节

有关“线路”另一端手表的信息通过特殊消息(公告消息)发送。 一旦收到此信息,状态机算法就会运行并进行比较,以确定哪个时钟更好。 最好的手表上的端口成为主表。

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

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

第 2 阶段 - 同步常规时钟和边缘时钟

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

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

主时钟可以是:

  • 单级;
  • 两阶段。

单级时钟发送一条Sync消息进行同步。

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

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

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

首先,让我们看看最简单的情况下的这些机制——不使用透明手表的情况。

延迟请求响应机制

该机制涉及两个步骤:

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

延迟测量
PTPv2时间同步协议的实现细节

t1——主时钟发送Sync消息的时间; t2——从时钟接收同步消息的时间; t3——从时钟发送延时请求(Delay_Req)的时间; t4 – 主时钟的 Delay_Req 接收时间。

当从时钟知道时间t1、t2、t3、t4时,就可以计算出传输同步消息时的平均延迟(tmpd)。 计算方法如下:

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

当传输 Sync 和 Follow_Up 消息时,计算从主设备到从设备的时间延迟 - t-ms。

当发送Delay_Req和Delay_Resp消息时,计算从机到主机的时间延迟——t-sm。

如果这两个值之间出现某种不对称,则在校正精确时间的偏差时会出现错误。 该错误是由于计算的延迟是 t-ms 和 t-sm 延迟的平均值而引起的。 如果延迟彼此不相等,那么我们将无法准确调整时间。

修正时移

一旦知道主时钟和从时钟之间的延迟,从时钟就会执行时间校正。

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

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

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

对端延迟测量机制

该机制也使用两个步骤进行同步:

  1. 设备通过所有端口测量到所有邻居的时间延迟。 为此,他们使用对等延迟机制。
  2. 修正准确的时移。

测量支持点对点模式的设备之间的延迟

支持对等机制的端口之间的延迟是使用以下消息测量的:

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

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

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

然后,端口在计算通过设备的每个 Sync 消息或可选 Follow_Up 消息的调整字段时使用该值。

总延迟将等于通过该设备传输期间的延迟、通过数据通道传输期间的平均延迟以及在上游设备上启用的该消息中已包含的延迟之和。

消息 Pdelay_Req、Pdelay_Resp 和可选的 Pdelay_Resp_Follow_Up 允许您获取从主设备到从设备以及从从设备到主设备的延迟(循环)。

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

调整准确的时移

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

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

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

对等机制的优点调整——每个Sync或Follow_Up消息的时间延迟是在网络中传输时计算的。 因此,改变传输路径不会以任何方式影响调整的准确性。

当使用这种机制时,时间同步不需要像基本交换中那样计算同步数据包所经过的路径上的时间延迟。 那些。 不发送Delay_Req和Delay_Resp消息。 在此方法中,主时钟和从时钟之间的延迟简单地在每个Sync或Follow_Up消息的调整字段中求和。

另一个优点是主时钟不再需要处理Delay_Req消息。

透明时钟的工作模式

因此,这些都是简单的例子。 现在假设交换机出现在同步路径上。

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

支持 PTPv2 的交换机在 IEEE 1588v2 术语中称为透明时钟。 透明时钟不与主时钟同步,也不参与“主时钟-从时钟”层次结构,但在传输同步消息时,它们会记住消息被它们延迟了多长时间。 这允许您调整时间延迟。

透明时钟可以以两种模式运行:

  • 端到端。
  • 点对点。

端到端(E2E)

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

E2E 透明时钟在所有端口上广播 Sync 消息和随附的 Follow_Up 消息。 即使是那些被某些协议(例如 RSTP)阻止的协议。

交换机会记住端口上接收到同步数据包 (Follow_Up) 以及从端口发送同步数据包时的时间戳。 根据这两个时间戳,计算出交换机处理该消息所需的时间。 在标准中,这个时间称为停留时间。

处理时间被添加到Sync(单步时钟)或Follow_Up(两步时钟)消息的 CorrectionField 字段中。

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

端到端透明时钟测量通过交换机的Sync和Delay_Req消息的处理时间。 但重要的是要了解主时钟和从时钟之间的时间延迟是使用延迟请求响应机制计算的。 如果主时钟发生变化或者从主时钟到从时钟的路径发生变化,则重新测量延迟。 这会增加网络发生变化时的转换时间。

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

P2P 透明时钟除了测量交换机处理消息所需的时间外,还使用邻居延迟机制来测量到其最近邻居的数据链路上的延迟。

延迟是在每个链路的两个方向上测量的,包括被某些协议(例如 RSTP)阻止的链路。 如果主时钟或网络拓扑发生变化,这使您可以立即计算同步路径中的新延迟。

发送 Sync 或 Follow_Up 消息时,交换机的消息处理时间和延迟会累积。

交换机支持的 ​​PTPv2 类型

交换机可以支持 PTPv2:

  • 以编程方式;
  • 硬件。

在软件中实施 PTPv2 协议时,交换机会向固件请求时间戳。 问题是固件循环工作,您必须等到它完成当前周期、接受处理请求并在下一个周期后发出时间戳。 这也需要时间,我们也会遇到延迟,尽管没有 PTPv2 软件支持那么严重。

只有对 PTPv2 的硬件支持才能让您保持所需的精度。 在这种情况下,时间戳由安装在端口上的特殊 ASIC 发出。

消息格式

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

  • 标头 – 34 字节。
  • 正文 - 大小取决于消息的类型。
  • 后缀是可选的。

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

标题

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

标头字段格式:

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

消息类型 – 包含正在传输的消息类型,例如 Sync、Delay_Req、PDelay_Req 等。

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

域名号 – 确定消息属于哪个 PTP 域。

域名 - 这些是在一个逻辑组中收集的几个不同时钟,并从一个主时钟同步,但不一定与属于不同域的时钟同步。

标志 – 该字段包含各种标志来标识消息的状态。

校正场 – 包含以纳秒为单位的延迟时间。 延迟时间包括通过透明时钟传输时的延迟,以及使用Peer-to-Peer模式时通过通道传输时的延迟。

源端口标识 – 该字段包含有关该消息最初从哪个端口发送的信息。

序列号 – 包含单个消息的标识号。

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

日志消息间隔 – 该字段由消息类型决定。

Body

如上所述,存在多种类型的消息。 这些类型描述如下:

公告信息
公告消息用于“告知”同一域内的其他时钟其参数。 此消息允许您设置主时钟 - 从时钟层次结构。
PTPv2时间同步协议的实现细节

同步消息
Sync 消息由主时钟发送,包含生成 Sync 消息时主时钟的时间。 如果主时钟是两阶段的,则Sync消息中的时间戳将被设置为0,并且当前时间戳将在关联的Follow_Up消息中发送。 同步消息用于两种延迟测量机制。

该消息使用组播传输。 您可以选择使用单播。

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

Delay_Req消息

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

该消息使用组播传输。 您可以选择使用单播。

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

留言跟进

Follow_Up 消息可选地由主时钟发送,包含发送时间 同步消息 掌握。 只有两级主时钟发送Follow_Up消息。

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

该消息使用组播传输。 您可以选择使用单播。

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

Delay_Resp消息

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

该消息使用组播传输。 您可以选择使用单播。

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

Pdelay_Req消息

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

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

Pdelay_Resp消息

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

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

消息 Pdelay_Resp_Follow_Up

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

该消息还可用于代替时间戳来表示执行时间。 执行时间是从接收到Pdelay-Req 到发送Pdelay_Resp 的时间。

Pdelay_Resp_Follow_Up 仅用于邻居延迟测量机制。

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

管理信息

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

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

转移到LV

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

  • 网络 – 作为 IP 数据的一部分。
  • 通道——作为以太网帧的一部分。

通过 UDP、IP、以太网进行 PTP 消息传输

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

以太网上的 UDP 上的 PTP

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

型材

PTP有相当多的灵活参数需要配置。 例如:

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

尽管我们之前说过 PTPv2 设备彼此兼容,但事实并非如此。 设备必须具有相同的设置才能进行通信。

这就是所谓的 PTPv2 配置文件的原因。 配置文件是一组配置的设置和定义的协议限制,以便可以为特定应用程序实现时间同步。

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

例如,功率配置文件(Power Profile)或 PTPv2 功率配置文件(PTPv37.238 Power Profile)是由 IEEE 电力与能源协会的电力系统继电委员会和变电站委员会创建的。 该配置文件本身称为 IEEE C2011-XNUMX。

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

  • 仅通过 L2 网络(即以太网、HSR、PRP、非 IP)。
  • 消息仅通过组播广播传输。
  • 延迟测量机制采用对等延迟测量机制。

默认域名为0,推荐域名为93。

C37.238-2011背后的设计理念是减少可选功能的数量,仅保留设备之间可靠交互和提高系统稳定性所必需的功能。

此外,还确定了消息传输的频率:

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

事实上,只有一个参数可供选择——主时钟的类型(单级或两级)。

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

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

来源: habr.com

添加评论