不同的网络中存在多种时间同步机制。其中最常见的标准是网络时间协议(NTP)和精确时间协议(PTP)。
NTP(Network Time Protocol,网络时间协议)最早由美国德拉瓦大学的David L. Mills教授在1985年提出,并随后发展成为一种基于时间协议、ICMP时间戳消息和IP时间戳选项的应用层协议。NTP主要用于实现亚毫秒级别的时间精度,并广泛应用于网络计时领域。
然而,由于NTP是基于无连接的IP协议和UDP协议的应用层协议,仅依靠软件时间戳实现毫秒级别的时钟同步,对于某些需要更高级别同步的工业应用来说,其精度可能无法满足要求。因此,为了满足对更高精确度时钟需求,精确时间协议(PTP)应运而生。
精确时间协议(PTP)是一种基于网络的时间同步标准,旨在通过使用数据包分配精确的时间和频率,以实现网络设备之间的同步。PTP利用硬件时间戳,并考虑到设备延迟,使得交换机和路由器能够提供比NTP更高精度的同步。
PTP也被称为IEEE 1588。该标准分为两个版本:1588v1和1588v2。1588v1只能实现亚毫秒级别的时间同步精度,而1588v2可以达到亚纳秒级别的同步精度。需要注意的是,本文中所提到的PTP一般指的是1588v2版本。最新发布的版本是2020年6月发布的IEEE1588-2019 D2.1版本。据了解,1588v3目前尚未发布。
在PTP中,存在几种不同的时钟类型,包括普通时钟(Ordinary Clock,OC)、边界时钟(Boundary Clock,BC)和透明时钟(Transparent Clock,TC)。透明时钟又可进一步分为E2E(End to End)透明时钟,也称为E2E-TC,以及P2P(Pear to Pear)透明时钟,也称为P2P-TC。这些时钟类型的功能和特点如下图所示:
边界时钟BC(Boundary Clock):作为主设备的从设备,同时也作为从设备的主设备。
普通时钟OC(Ordinary Clock):作为主时钟或从时钟运行的时钟。在从属情况下,时钟被同步的端点(通常是主机/服务器)。
透明时钟TC(Transparent Clock):计算PTP事件报文的传输时间并在转发消息之前更新事件消息的校正字段(Correlation Field,CF)的设备。透明时钟端口处于中立状态,不承担特定角色。
以上是关于NTP和PTP的简要介绍以及PTP中常见的时钟类型。这些协议和机制在网络中起着重要作用,确保了时间同步的准确性和精度。
在精确时间协议(PTP)中,还包括最高级时钟GMC(Grandmaster Clock)和主时钟MC(Master Clock)。GMC是从精确时钟源(例如GNSS驱动时钟,如GPS、GLONASS、GALILEO)获取的参考时间源。而MC作为主时钟运行,其时序能力从时钟链一直到GMC。通常,MC被用作边界时钟(BC)上的端口,连接到作为从属运行的主机。
边界时钟(BC)在连接到主时钟的端口上充当辅助时钟,将时间分配给所有其他下游设备。辅助端口通过与上游PTP设备同步时间来进行时间同步。透明时钟(TC)则在更新PTP事件消息的停留时间后转发PTP消息。
下图展示了PTP域中各个时钟类型的位置。在整个PTP网络中,所有时钟都按照主从(Master-Slave)层次关系组织在一起,各节点逐级同步时钟,最终完成与系统的最优时钟Grandmaster的同步。
PTP时钟类型
PTP时间戳(TimeStamp)
主时钟提供同步消息,从时钟用于校正其本地时钟。主时钟和从时钟捕获精确的时间戳,这些时间戳用于确定将从时钟同步到主时钟所需的网络延迟。通常,主时钟每两秒钟发送一条同步消息,从时钟每分钟发送一条延迟请求消息。
在主时钟和从时钟之间,四个时间戳被捕获,通常称为T1、T2、T3和T4。我们需要计算两条延迟路径:Master-Slave和Slave-Master。
首先,计算Master到Slave的差异:
T1是来自主时钟的同步消息的精确时间,该时间戳在后续消息中发送,并在以太网端口上传输同步消息时采样。
T2是从设备接收到的同步消息的准确时间。
一旦T1和T2在从时钟上可用,就可以计算Master-Slave的差异:
Master-Slave = T2 - T1
其次,计算Slave到Master的差异:
T3是来自从站的延迟请求消息的准确时间。
T4是主时钟收到延迟请求消息的准确时间。
一旦T3和T4在从时钟上可用,就可以计算Slave-Master的差异:
Slave-Master = T4 - T3
通过以上计算,我们可以得出主时钟和从时钟之间的时间差异,从而实现精确的时间同步。这些时间戳的使用对于PTP协议的正常运行至关重要。
一旦从站获得了主从时钟之间的差异以及从站到主站的差异,就可以计算出单向延迟:
单向延迟 = (主从差异 + 从主差异) / 2
偏移量(Offset)用于校正从时钟:
Offset = 主从差异 - 单向延迟
或者
Offset = ((T2 - T1) - (T4 - T3)) / 2
PTP和NTP具有相似的基本原理。NTP协议运行在应用层,测量的时间差除了包括实际物理网络上的时间延迟,还包括软件系统处理时间。而PTP报文是在物理芯片上打时间戳,而不是在上层网络,从而最大程度地保证了时间戳的准确性。因此,与传统的应用层协议NTP相比,PTP具有更高的精度。
PTP同步的实现机制
接口方式
PTP时间同步的实现可以通过带内接口(1588协议接口)和带外接口(1PPS+ToD接口)两种方式。
带外接口(1PPS+ToD接口)
带内接口(1588协议接口,即以太网业务接口)通过交换1588报文并实现1588协议栈来实现。
其中:
1PPS:指每秒一次的脉冲信号,上升沿标记着一秒的开始;
ToD:表示绝对时间的信息,按照GPS时钟格式进行表示,起始时间是1980年1月1日00:00:00。ToD消息可以分为时间信息消息和时间状态消息两种。ToD消息的帧格式如下图所示。
ToD帧格式
PTP报文
PTP协议定义了事件报文和通用报文。事件报文是定时消息,在发送和接收时都生成准确的时间戳。通用报文不需要准确的时间戳。
事件报文:
Sync(同步报文)
Delay_Req(延迟请求报文)
Pdelay_Req(路径延迟请求报文)
Pdelay_Resp(路径延迟响应报文)
通用报文(General 报文):
Announce(公告报文)
Follow_Up(跟随报文)
Delay_Resp(延迟响应报文)
Pdelay_Resp_Follow_Up(路径延迟响应跟随报文)
Management(可选,本规范暂不作具体报文内容规定)
Signaling(可选,本规范暂不作具体报文内容规定)
BMC算法
最优时间源算法BMC(Best Master Clock)是1588时间同步的应用层技术,它能够自动选择时间同步网络中的最优时间源,自动选择同步路径,并在时间源故障和链路故障时实现自动切换时间源和同步路径。通过BMC算法,系统可以保持高精度的时间同步。