PTP高精度时钟同步协议及配置示例

PTP时间同步协议笔记

PTP简介

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

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

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

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

  • 相比NTP(Network Time Protocol,网络时间协议),PTP能够满足更高精度的时间同步要求:NTP一般只能达到亚秒级的时间同步精度,而PTP则可达到亚微秒级。

  • 相比GPS(Global Positioning System,全球定位系统),PTP具备更低的建设和维护成本,并且由于可以摆脱对GPS的依赖,在国家安全方面也具备特殊的意义。

PTP基本概念

PTP域

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

PTP端口

设备上运行了PTP协议的端口成为PTP端口。PTP端口角色分为以下三种:

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

时钟节点

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

  • OC(Ordinary Clock,普通时钟):该时钟节点在同一个PTP域内只有一个PTP端口参与时间同步,并通过该端口从上游时钟节点同步时间。此外,当时钟节点作为时钟源时,可以只通过一个PTP端口向下游时钟节点发布时间,我们也称其为OC。
  • BC(Boundary Clock,边界时钟):该时钟节点在同一个PTP域内拥有多个PTP端口参与时间同步。它通过其中一个端口从上游时钟节点同步时间,并通过其余端口向下游时钟节点发布时间。此外,当时钟节点作为时钟源时,可以通过多个PTP端口向下游时钟节点发布时间的,我们也称其为BC。
  • TC(Transparent clock,透明时钟):与BC/OC相比,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协议报文,并参与计算整条链路上每一段链路的延时。

PTP拓扑

最佳主时钟算法(BMCA)用于选择每条链路上的主时钟,并最终选择整个PTP域的根时钟。它在普通和边界时钟的每个端口本地运行,将本地数据集与从Announce消息接收的数据进行比较,以选择链路上的最佳时钟。

PTP同步原理

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

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

请求应答机制

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

(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报文,请求应答机制又分为单步模式和双步模式两种:

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

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

端延时机制

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

(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报文,端延时机制也分为单步模式和双步模式两种:

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

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

配置示例

交换机配置示例

以Nexus 3548交换机为例,大致配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
feature ptp
feature interface-vlan
ptp domain 0
ptp source 10.1.1.1
clock protocol ptp
clock timezone GMT 8 0

interface T1/48
no switchport
ip address 10.1.1.1/30
ptp
no shutdown

interface vlan1000
ip address 192.168.8.1/24
no shutdown

interface T1/1
switchport
switchport access vlan 1000
ptp
ptp vlan 1000
no shutdown

配置完上述命令后,如果有时钟同步源的话,可以使用以下命令查看相关信息。

1
2
3
4
show ptp corrections 检查 PTP 更正时间戳
show ptp clock 查看ptp同步的时间
show ptp parent PTP 父属性
show ptp brief ptp接口状态

在实验时可以搭建一台Linux系统做为PTP时钟源,让交换机与其进行PTP时间同步,这里以Ubuntu为例:

1
2
sudo apt install ptpd
sudo ptpd -MC -i eth0 此网卡为与交换机相连的网卡