1588协议原理介绍

精确时间协议PTP (precision time protocol) 是一种对标准以太网设备进行时间和频率同步的协议,由于定义在IEEE 1588标准中,所以也称之为IEEE 1588,简称1588。

在通信网络中,许多业务的正常运行都要求网络时钟同步,即整个网络中各设备之间的时间或频率差保持在一个合理的误差水平内。网络时钟同步包括以下两个概念:

  • ​ 时间同步:也叫相位同步(Phase synchronization),是指信号之间的频率和相位都保持一致,即信号之间的相位差恒为零。

  • ​ 频率同步(Frequency synchronization):也叫时钟同步,是指信号之间在频率或相位上保持某种严格的特定关系,信号在其对应的有效瞬间以同一平均速率出现,以保证通信网络中的所有设备都以相同的速率运行,即信号之间保持恒定的相位差。

​ 图 1 时间同步和频率同步示意图

如图 1所示,有两个表Watch A与Watch B,如果这两个表的时间每时每刻都保持一致,这个状态就是时间同步;如果这两个表的时间不一致,但保持一个恒定的差值(如图中的Watch B总比Watch A晚6个小时),这个状态就是频率同步。

PTP(Precision Time Protocol,精确时间协议)是一种时间同步的协议,其本身只是用于设备之间的高精度时间同步,但也可被借用于设备之间的频率同步。相比现有的各种时间同步机制,PTP具备以下优势:

  1. ​ 相比NTP(Network Time Protocol,网络时间协议),PTP能够满足更高精度的时间同步要求:NTP一般只能达到毫秒级的时间同步精度,而PTP则可达到纳秒级。
  2. ​ 相比GPS(Global Positioning System,全球定位系统),PTP具备更低的建设和维护成本,不需要架设天线,无场地环境要求。

PTP基本概念

1. PTP域

我们将应用了PTP协议的网络称为PTP域。PTP域内有且只有一个grandmaster同步时钟,域内的所有设备都与该时钟保持同步。

2. PTP端口

我们将设备上运行了PTP协议的端口称为PTP端口。如图 2所示,PTP端口的角色可分为以下三种:

  1. ​ 主端口(Master Port):发布同步时间的端口,可存在于BC或OC上。
  2. ​ 从端口(Slave Port):接收同步时间的端口,可存在于BC或OC上。
  3. ​ 被动端口(Passive Port):既不接收同步时间、也不对外发布同步时间的端口,只存在于BC上。

3. 时钟节点

PTP域中的节点称为时钟节点,PTP协议定义了以下三种类型的基本时钟节点:

(1) OC(Ordinary Clock,普通时钟):该节点在同一个PTP域内只有一个PTP端口,只工作在master或slave状态,该端口可以作为slave接收上游时钟同步,也可以作为slave给下游设备发布时间。

(2) BC(Boundary Clock,边界时钟):该节点在同一个PTP域内拥有多个PTP端口,其中一个可作为slave端口从上游时钟节点同步时间,并通过其余端口向下游时钟节点发布时间。此外,当时钟节点作为时钟源时,可以通过多个PTP端口向下游时钟节点发布时间的,我们也称其为BC,如图 2中的BC 1。

(3) TC(Transparent clock,透明时钟):与BC/OC相比,TC则不与其它时钟节点保持时间同步。TC有多个PTP端口,但它只在这些端口间转发PTP协议报文并对其进行转发延时校正,而不会通过任何一个端口同步时间。TC包括以下两种类型:

  • ​ E2ETC(End-to-End Transparent Clock,端到端透明时钟):直接转发网络中非P2P(Peer-to-Peer,点到点)类型的协议报文,并参与计算整条链路的延时。

  • ​ P2PTC(Peer-to-Peer Transparent Clock,点到点透明时钟):只直接转发Sync报文、Follow_Up报文和Announce报文,而终结其它PTP协议报文,并参与计算整条链路上每一段链路的延时。

如图 2所示,是上述三种基本时钟节点在PTP域中的位置。

​ 图 2 基本时钟节点示意图

GrandMaster的时钟来自于哪里?

如下图3所示,一般GrandMaster的时钟来自于精确的时钟模块,时钟模块的时钟是采用的GPS授时校准。

​ 图3 GrandMaster时间同步

除了上述三种基本时钟节点以外,还有一些混合时钟节点,譬如融合了TC和OC各自特点的TC+OC:它在同一个PTP域内拥有多个PTP端口,其中一个端口为OC类型,其它端口则为TC类型。一方面,它通过TC类型的端口转发PTP协议报文并对其进行转发延时校正;另一方面,它通过OC类型的端口进行时间的同步。与TC的分类类似,TC+OC也包括两种类型:E2ETC+OC和P2PTC+OC。

4. 主从关系

主从关系(Master-Slave)是相对而言的,对于相互同步的一对时钟节点来说,存在如下主从关系:

  1. ​ 发布同步时间的节点称为主节点,而接收同步时间的节点则称为从节点。
  2. ​ 主节点上的时钟称为主时钟,而从节点上的时钟则称为从时钟。
  3. ​ 发布同步时间的端口称为主端口,而接收同步时间的端口则称为从端口。

5. 最优时钟GM

如图 2所示,PTP域中所有的时钟节点都按一定层次组织在一起,整个域的参考时间就是最优时钟(Grandmaster Clock,GM),即最高层次的时钟。通过各时钟节点间PTP协议报文的交互,最优时钟的时间最终将被同步到整个PTP域中,因此也称其为时钟源。

最优时钟可以通过手工配置静态指定,也可以通过BMC(Best Master Clock,最佳主时钟)协议动态选举,动态选举的过程如下:

(1) 各时钟节点之间通过交互的Announce报文中所携带的最优时钟优先级、时间等级、时间精度等信息,最终选出一个节点作为PTP域的最优时钟,与此同时,各节点之间的主从关系以及各节点上的主从端口也确定了下来。通过这个过程,整个PTP域中建立起了一棵无环路、全连通,并以最优时钟为根的生成树。

(2) 此后,主节点会定期发送Announce报文给从节点,如果在一段时间内,从节点没有收到主节点发来的Announce报文,便认为该主节点失效,于是重新进行最优时钟的选择。

6. PTP报文

PTP通过主从节点间交互报文,实现主从关系的建立、时间和频率同步。根据报文是否携带时间戳,可以将PTP报文分为两类,事件报文和通用报文。
    事件报文:时间概念报文,进出设备端口时打上精确的时间戳,PTP根据事件报文携带的时间戳,计算链路延迟。事件报文包含以下4种:

  • Sync 由GM发出,用于PTP域内做时间同步;
  • Delay_Req 由Slave发出,用于请求GM通过E2E测量机制建立同步;
  • Pdelay_Req 由PTP域中link partner A发出通过P2P测量机制建立同步;
  • Pdelay_Resp 由PTP域中link partner B发出的回应通过P2P测量机制建立同步;

通用报文:非时间概念报文,进出设备不会产生时间戳,用于主从关系的建立、时间信息的请求和通告。通用报文包含以下4种:

  • Announce 主要用于动态选举最优时钟;
  • Follow_Up 主要用于two-step模式下,跟随sync报文后发送t1时间;
  • Delay_Resp 由GM发出,用于回应slave的Delay_Req;
  • Pdelay_Resp_Follow_Up 由PTP域中link partner B 发出,跟随Pdelay_Resp消息;

7. 消息间隔

PTP定义了三种不同的时间间隔,应用于三种不同类型的报文:

Announce Interval:

Announce 报文的间隔的可配区间是:2-7 到 27

从区间上看, announce报文的发送频率可以从每秒128个到每128秒一个。

默认是设置成21, 就是每两秒发送一个announce报文。

Sync interval

Sync报文的配置间隔和announce报文一样。

默认是配置成20, 即一秒发送一次sync报文。

Delay Request interval

Delay Request报文的间隔和announce报文一样。

默认是配置成20, 即每秒发送一次Delay Request 报文。

PTP同步原理

主、从时钟之间交互同步报文并记录报文的收发时间,通过计算报文往返的时间差来计算主、从时钟之间的往返总延时,如果网络是对称的(即两个方向的传输延时相同),则往返总延时的一半就是单向延时,这个单向延时便是主、从时钟之间的时钟偏差,从时钟按照该偏差来调整本地时间,就可以实现其与主时钟的同步。

频率同步

频率同步可以只通过Sync和follow up报文来实现,通过计算对方收到报文和发送报文的时间差是否固定来判定频率是否同步,如不同步,两次报文之间的偏差就是频率的偏差,通过调整本地频率,就可以实现频率同步。

​ 图4 ptp频率同步

PTP时间同步

如下图所示,我们可以通过报文的交互,计算出master和slave之间的传输delay和时钟误差offset,slave设备通过调整本地时钟,完成和GM设备的时钟同步。

​ 图 5 E2E测量机制的计算原理

时间校准的过程如下图所示,slave设备通过加入计算出的时钟误差offset,达到和GM设备的时钟同步。

​ 图6 时间校正

PTP协议定义了两种传播延时测量机制:请求应答(Requset_Response)机制和端延时(Peer Delay)机制,且这两种机制都以网络对称为前提。

1. E2E延时测量机制

​ 图 7 E2E机制实现过程

请求应答方式用于端到端的延时测量。如图 7所示,其实现过程如下:

(1) 主时钟向从时钟发送Sync报文,并记录发送时间t1;从时钟收到该报文后,记录接收时间t2。

(2) 主时钟发送Sync报文之后,紧接着发送一个携带有t1的Follow_Up报文。

(3) 从时钟向主时钟发送Delay_Req报文,用于发起反向传输延时的计算,并记录发送时间t3;主时钟收到该报文后,记录接收时间t4。

(4) 主时钟收到Delay_Req报文之后,回复一个携带有t4的Delay_Resp报文。

此时,从时钟便拥有了t1~t4这四个时间戳,由此可计算出主、从时钟间的往返总延时为[(t2 – t1) + (t4 – t3)],由于网络是对称的,所以主、从时钟间的单向延时为[(t2 – t1) + (t4 – t3)] / 2。因此,从时钟相对于主时钟的时钟偏差为:Offset = (t2 – t1) - [(t2 – t1) + (t4 – t3)] / 2 = [(t2 – t1) - (t4 – t3) ] / 2。

此外,根据是否需要发送Follow_Up报文,请求应答机制又分为单步模式和双步模式两种:

l 在单步模式下,Sync报文的发送时间戳t1由Sync报文自己携带,不发送Follow_Up报文。

l 在双步模式下,Sync报文的发送时间戳t1由Follow_Up报文携带。

BC/OC与E2E-TC的组网以及报文交互过程:

​ 图8 BC/OC与E2E-TC组网

2. P2P延时测量机制

​ 图 9 P2P机制实现过程

与请求应答机制相比,端延时机制不仅对转发延时进行扣除,还对上游链路的延时进行扣除。如图 9所示,其实现过程如下:

(1) 主时钟向从时钟发送Sync报文,并记录发送时间t1;从时钟收到该报文后,记录接收时间t2。

(2) 主时钟发送Sync报文之后,紧接着发送一个携带有t1的Follow_Up报文。

(3) 从时钟向主时钟发送Pdelay_Req报文,用于发起反向传输延时的计算,并记录发送时间t3;主时钟收到该报文后,记录接收时间t4。

(4) 主时钟收到Pdelay_Req报文之后,回复一个携带有t4的Pdelay_Resp报文,并记录发送时间t5;从时钟收到该报文后,记录接收时间t6。

(5) 主时钟回复Pdelay_Resp报文之后,紧接着发送一个携带有t5的Pdelay_Resp_Follow_Up报文。

此时,从时钟便拥有了t1~t6这六个时间戳,由此可计算出主、从时钟间的往返总延时为[(t4 – t3) + (t6 – t5)],由于网络是对称的,所以主、从时钟间的单向延时为[(t4 – t3) + (t6 – t5)] / 2。因此,从时钟相对于主时钟的时钟偏差为:Offset = (t2 – t1) - [(t4 – t3) + (t6 – t5)] / 2。

此外,根据是否需要发送Follow_Up报文,端延时机制也分为单步模式和双步模式两种:

l 在单步模式下,Sync报文的发送时间戳t1由Sync报文自己携带,不发送Follow_Up报文;而t5和t4的差值由Pdelay_Resp报文携带,不发送Pdelay_Resp_Follow_Up报文。

l 在双步模式下,Sync报文的发送时间戳t1由Follow_Up报文携带,而t4和t5则分别由Pdelay_Resp报文和Pdelay_Resp_Follow_Up报文携带。

BC/OC与P2P-TC的组网以及报文交互过程:

​ 图10 BC/OC与P2P-TC的组网

1588v2(PTP)报文格式

IEEE 1588v2协议报文封装格式如下所示:

  • PTP over Ethernet
  • PTP over UDP over IPv4
  • PTP over UDP over IPv6
  • PTP over MPLS

PTP报文可以基于多种协议封装上,下面已以太网封装为例,看看PTP报文的一些特性。

以太封装的PTP (Precision Timing Protocol)报文,其帧头中以太类型值=0x88F7。

​ 图11 以太封装PTP报文 PTP over Ethernet

PTP消息头格式 Format of a PTP header

1588v2消息必须包含消息头、消息体和消息扩展字节,扩展字节长度可能为0。

​ 图12 PTP Header

字段 长度 含义
TranSpec 4bit 传送相关。0表示PTP消息由1588协议使用1表示PTP消息由802.1as协议使用
MsgType 4bit 表示消息类型。1588V2消息分为两类:事件消息(EVENT Message)和通用消息(General Message)。事件报文是时间概念报文,进出设备端口时需要打上精确的时间戳,而通用报文则是非时间概念报文,进出设备不会产生时戳。类型值03的为事件消息,8D为通用消息。0x00: Sync0x01: Delay_Req0x02: Pdelay_Req0x03: Pdelay_Resp0x04-7: Reserved0x08: Follow_Up0x09: Delay_Resp0x0A: Pdelay_Resp_Follow_Up0x0B: Announce0x0C: Signaling0x0D: Management0x0E-0x0F: Reserved
Reserved 4bit 保留字段。
VerPTP 4bit 表示1588协议的版本。
MsgLength 2Byte PTP消息的长度,即PTP消息的全部字节数目。计入字节始于报头的第一个字节,同时包含并收尾于任何尾标的最后一个字节,或是无尾标成员时收尾于消息的最后一个字节。
DomainNumber 1Byte 域编号,表示发送该消息时钟所属的域。
Reserved 1Byte 保留字段。
FlagField 2Byte 标志域。取值请参见表2。
CorrectionField 64bit 修正域,各报文都有,主要用在Sync报文中,用于补偿网络中的传输时延,E2E的频率同步。
Reserved 32bit 保留字段。
SourcePortIdentity 源端口标识符,发送该消息时钟的ID和端口号。
SequenceID 2Byte 序列号ID,表示消息的序列号,以及关联消息的对应关系。
ControlField 1Byte 控制域,由消息类型决定:0x00:Sync0x01:Delay_Req0x02:Follow_Up0x03:Delay_Resp0x04:Management0x05:All others0x06-0xFF:reserved
LogMsgInterval 1Byte 录入消息周期,PTP消息的发送时间间隔,由消息类型决定。
PTP Specified Message Field 变长 PTP消息体和消息扩展字节。
字节 比特位 消息类型 消息名 说明
0 0 Announce, Sync, Follow_Up, Delay_Resp alternateMasterFlag 如果发送侧端口处于MASTER状态,则为FALSE。
0 1 Sync, Pdelay_Resp twoStepFlag 对于一步时钟,twoStepFlag取值要求为FALSE。对于双步时钟,twoStepFlag取值要求为TRUE。
0 2 ALL unicastFlag 如果此消息发送到的传送层协议地址是一个单播地址,则置为TRUE。如果此消息发送到的传送层协议地址是一个多播地址,则置为FALSE。
0 5 ALL PTP profile Specific 1 由一个备选PTP模板定义;否则置为FALSE。
0 6 ALL PTP profile Specific 2 由一个备选PTP模板定义;否则置为FALSE。
0 7 ALL Reserved 此比特保留用于实验性安全机制.
1 0 Announce leap61 -
1 1 Announce leap59 -
1 2 Announce currentUtcOffsetValid -
1 3 Announce ptpTimescale -
1 4 Announce timeTraceable -
1 5 Announce frequencyTraceable -

PTP误差参考标准

查了一下相关标准,对PTP的误差有如下的定义,目前应用比较多的判定标准应该是class C,主从设备的时钟误差在±10 ns之内。

ITU-T G.8273.2 T-BC/T-TSC Permissible Range of Constant Time Error

T-BC/T-TSC Class Permissible Range of Constant Time Error-cTE(ns)
A ±50
B ±20
C ±10
D For further study

BCM PHY实现方案

如下图所示,BCM PHY的方案中,主要由BCM PHY中的 NSE模块实现对经过PHY的1588报文,打上相应的时间戳信息,具体协议报文的处理,还需要上层软件实现1588协议栈的相关功能。

​ 图13 bcm phy

posted @ 2022-09-17 08:54  Silly-man  阅读(8796)  评论(0编辑  收藏  举报