IEEE 1588-PTP简介
Posted a746742897
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IEEE 1588-PTP简介相关的知识,希望对你有一定的参考价值。
IEEE 1588-PTP简介
参考链接:https://blog.csdn.net/weixin_40407893/article/details/103297158
1. PTP简介
网络测控系统精确时钟同步协议PTP(Precision Time Protocol)是一种对标准以太网终端设备进行时间和频率同步的协议,也称为IEEE 1588,简称为1588。
1588分为1588v1和1588v2两个版本,1588v1只能达到亚毫秒级的时间同步精度,而1588v2可以达到亚微秒级同步精度。1588v2被定义为时间同步的协议,本来只是用于设备之间的高精度时间同步,随着技术的发展,1588v2也具备频率同步的功能。现在1588v1基本已被1588v2取代,以下非特殊说明,PTP即表示1588v2。
2. 原理描述
2.1 基本原理
同步的概念
在现代通信网络中,大多数电信业务的正常运行要求全网设备之间的频率或时间差异保持在合理的误差水平内,即网络时钟同步。
网络时钟同步包括相位同步和频率同步两个概念。
- 相位同步 -
相位同步(Phase synchronization),也称为时间同步,是指信号之间的频率和相位都保持一致,即信号之间相位差恒定为零。
- 频率同步 -
频率同步(Frequency synchronization),是指信号之间的频率或相位上保持某种严格的特定关系,信号在其相对应的有效瞬间以同一速率出现,以维持通信网络中所有的设备以相同的速率运行,即信号之间保持恒定相位差。
为防止概念混淆,下文中时间同步统一表示相位同步,时钟同步表示同时进行相位同步和频率同步。
图1 时间同步与频率同步示意图
时钟同步原理
应用网络时钟同步的网络,称为时钟同步网。时钟同步网的结构如图2所示。时钟同步网分为两级,其中一级节点采用1级时钟同步设备,二级节点采用2级时钟同步设备,二级节点以下是客户端设备,即为包括基站在内的需要时钟同步的设备。
客户端时间同步链路是时钟同步网节点至客户端的时钟同步链路,因为这段链路需进行包括以太时钟同步、NTP在内的多种同步方式,它包括NTP传送方式在内的各种传输链路。节点时钟同步链路是时钟同步网节点之间的时钟同步链路,它包括除NTP传送方式以外的各种传输链路,主要采用DCLS(DC Level Shifter,是IRIG-B码的另一种传输码形,用直流电位来携带码元信息,比较适用于双绞线局内传输)传送方式的专线链路。
整个PTP网络中,所有时钟都会按照主从(Master-Slave)层次关系组织在一起,各节点向系统的最优时钟Grandmaster上逐级同步时钟。整个同步的过程是通过交换PTP报文来完成的。从时钟通过PTP报文中携带的时间戳信息计算与主时钟之间的偏移和延时,据此调整本地时钟达到与主时钟的同步。
图2 分级时钟同步网
PTP基本概念
-
PTP域
应用了PTP协议的网络称为PTP域。网络中可能含有多个PTP域,PTP域是独立PTP时钟同步系统,一个PTP域内有且只有一个时钟源,域内的所有设备都与该时钟源保持同步。 -
时钟节点
PTP域中的节点称为时钟节点,PTP协议定义了以下三种类型的基本时钟节点:
普通时钟OC(Ordinary Clock):同一个PTP域内,只存在单个物理端口参与PTP时间同步。设备通过该端口从上游节点同步时间,或者向下游节点发布时间。
边界时钟BC(Boundary Clock):同一个PTP域内,可以存在两个或两个以上物理端口参与PTP时间同步。其中一个端口从上游设备同步时间,其余多个端口向下游设备发布时间。此外,当时钟节点作为时钟源,同时通过多个PTP端口向下游时钟节点发布时间,也称其为BC。
透明时钟TC(Transparent Clock):TC与BC、OC最大的不同是BC和OC都要保持本设备与其他设备的时间同步,但TC则不与其他设备保持时间同步。TC有多个PTP端口,它只是在这些PTP端口之间转发PTP报文,对其进行转发时延校正,并不从任何一个端口同步时间。
-
PTP端口
设备上运行了PTP协议的端口称为PTP端口,PTP端口的按角色可分为以下三种。
主端口(Master Port):发布同步时间的端口,可存在于BC或OC上。
从端口(Slave Port):接收同步时间的端口,可存在于BC或OC上。
被动端口(Passive Port):不接收同步时间,也不对外发布同步时间,闲置备用的端口,只存在于BC上。 -
主从关系
PTP域的节点设备按照一定的主从关系(Master-Slave)进行时钟同步。主从关系是相对而言的,同步时钟的节点设备称为从节点,发布时钟的节点设备称为主节点,一台设备可能同时从上层节点设备同步时钟,然后向下层节点设备发布时钟。
对于相互同步的一对时钟节点来说,存在如下主从关系:
发布同步时间的节点称为主节点,而接收同步时间的节点则称为从节点。
主节点上的时钟称为主时钟,而从节点上的时钟则称为从时钟。
发布同步时间的端口称为主端口,而接收同步时间的端口则称为从端口。
- 最优时钟
PTP域中所有的时钟节点都按一定层次组织在一起,整个域的参考时钟就是最优时钟GMC(Grandmaster Clock),即最高层次的时钟。通过各时钟节点间PTP报文的交互,最优时钟的时间最终将被同步到整个PTP域中,因此也称其为时钟源。最优时钟可以通过手工配置静态指定,也可以通过最佳主时钟BMC(Best Master Clock)算法动态选举。
- PTP报文
PTP通过主从节点间交互报文,实现主从关系的建立、时间和频率同步。根据报文是否携带时间戳,可以将PTP报文分为两类,事件报文和通用报文。
事件报文:时间概念报文,进出设备端口时打上精确的时间戳,PTP根据事件报文携带的时间戳,计算链路延迟。事件报文包含以下4种:Sync、Delay_Req、Pdelay_Req和Pdelay_Resp。
通用报文:非时间概念报文,进出设备不会产生时间戳,用于主从关系的建立、时间信息的请求和通告。通用报文包含以下6种:Announce、Follow_Up、Delay_Resp、Pdelay_Resp_Follow_Up、Management和Signaling,目前设备不支持Management、Signaling报文。
时钟同步步骤
时钟同步的实现主要包括3个步骤:
1. 建立主从关系,选取最优时钟、协商端口主从状态等。
2. 频率同步,实现从节点频率与主节点同步。
3. 时间同步,实现从节点时间与主节点同步。
2.2 建立主从关系
建立主从关系阶段,PTP主要完成最优时钟选取、端口主从关系确定。
主从关系建立步骤
PTP是通过端口接收到和发送Announce报文,实现端口数据集和端口状态机信息的交互。BMC(Best Master Clock)算法通过比较端口数据集和端口状态机,实现时钟主从跟踪关系。一般按照下面几个步骤来建立:
-
接收和处理来自对端设备端口的Announce报文。
-
利用BMC算法决策出最优时钟和端口的推荐状态,包括Master、Slave或者Passive状态。
-
根据端口推荐状态,更新端口数据集合。
-
按照推荐状态和状态决策事件,根据端口状态机决定端口的实际状态,实现时钟同步网络的建立。状态决策事件包括Announce报文的接收事件和接收Announce报文的超时时间结束事件,当接口接收Announce报文的时间间隔大于超时时间间隔时,将此PTP接口状态置为Master。
BMC算法
在PTP域中,最优时钟的选取,端口主从关系的确立,都是依靠最优时钟BMC算法来完成的。BMC算法比较各时钟节点之间通过交互的Announce报文中所携带的数据集,来选取最优时钟,并且决定各PTP端口状态。
BMC算法用来选取最优时钟和决定PTP端口状态的数据集包括以下信息:
- Priority1:时钟优先级1,支持用户配置,取值范围是0~255,取值越小优先级越高。
- ClockClass:时钟级别,定义时钟的时间或频率的国际原子时-TAI(International Atomic Time)跟踪能力。
- ClockAccuracy:时钟精度,取值越低精确度越高。
- OffsetScaledLogVariance:时钟稳定性。
- Priority2:时钟优先级2,支持用户配置,取值范围是0~255,取值越小优先级越高。
PTP设备在执行动态BMC选源算法时,优先级选择的排序是priority1>clock-class>clock-accuracy>OffsetScaledLogVariance>priority2,即先比较参选时间源的priority1,若priority1相同再比较clock-class,以此类推,优先级高、级别高、精度好的时钟成为最优时钟。
通过改变时钟的优先级、级别等属性,用户影响PTP系统主时钟的选取,从而选中自己希望同步的时钟信号。BMC算法可以实现PTP时钟同步分配和保护。
2.3 PTP频率同步
在主从关系建立后,即可以进行频率同步和时间同步。PTP本来只是用户设备之间的高精度时间同步,但也可以被用来进行设备之间的频率同步。
PTP通过记录主从设备之间事件报文交换时产生的时间戳,计算出主从设备之间的路径延迟和时间偏移,实现主从设备之间的时间和频率同步,设备支持两种携带时间戳的模式,分别为:
- 单步时钟模式(One step),指事件报文Sync和Pdelay_Resp带有本报文发送时刻的时间戳,报文发送和接收的同时也完成了时间信息的通告。
- 两步时钟模式(Two step),指事件报文Sync和Pdelay_Resp不带有本报文发送时刻的时间戳,而分别由后续的通用报文Follow_Up和Pdelay_Resp_Follow_Up带上该Sync和PDelay_Resp报文的发送时间信息。两步时钟模式中,时间信息的产生和通告分两步完成,这样可以兼容一些不支持给事件报文打时间戳的设备。
频率同步原理
PTP的主节点定时向从节点发送同步Sync报文,报文中有主节点发送Sync报文的时间戳。从节点每接收到一个Sync报文,都会产生一个接收时间戳。显然,如果从节点接收到两个Sync报文,可以通过比较两个接收时间戳的间隔与报文中记录的主节点发送时间戳的间隔的大小,调整从节点的频率。
假设时钟节点A要同步到时钟节点B。不考虑路径延时和驻留时间的变化,如果A和B的时钟频率相等,则在相同的时间间隔内,A和B的时间累积的偏差应该是一样的,也就是说t2N-t20 = t1N-t10。如果t2N-t20大于t1N-t10,说明A的时钟频率比B快,要调慢A的时钟频率;如果t2N-t20小于t1N-t10,说明A的时钟频率比B慢,则要调快A的时钟频率。(t1n为B点的第n个Sync报文发送的时间,t2n为A点接收第n个Sync报文的时间点。)
图3 频率同步原理
上述是通过PTP报文来实现频率同步的基本原理。对于一个实际的PTP同步系统,通常还需要考虑路径延时和驻留时间的变化。图中Follow_Up报文为两步时钟模式发送的通用报文,携带Sync报文的发送时间戳。
2.4 PTP时间同步
PTP时间同步有两种不同的同步方式:Delay方式和Pdelay方式,如此划分主要是由于PTP计算路径延时有两种机制。
- 延时请求-请求响应机制E2E(End to End):根据主从时钟之间的整体路径延时时间计算时间差。
- 对端延时机制P2P(Peer to Peer):根据主从时钟之间的每一条链路延时时间计算时间差。
延时请求-响应机制E2E(End to End)
图4是PTP采用E2E机制计算主、从设备之间平均路径延时和时间偏移的过程和原理。
图4 延时请求-响应机制
-
主设备在时刻t1发送Sync报文。如果主设备为one-step模式,t1随Sync报文传送到从设备;如果主设备为two-step模式,则t1在随后的Follow_Up报文中传送到从设备;
-
从设备在时刻t2接收到Sync报文,并从Sync报文(one-step)或者Follow_Up报文(two-step)中获取t1。
-
从设备在时刻t3发送延时请求报文Delay_Req给主设备。
-
主设备在时刻t4接收到Delay_Req报文。
-
主设备随后通过延时回答报文Delay_Resp将t4发送给从设备。
上述报文离开和到达时打戳的时钟都是基于本设备内部的系统时钟的,PTP协议规定时间戳的长度为80bit。通过上述报文传递过程,从设备获取t1、t2、t3、t4 4个时间,并利用这4个时间计算出主从设备之间的平均路径延时,进而计算出时间偏移;然后利用这个时间偏移修正本地时间,使主从设备之间的时间实现同步。计算平均路径延时和时间偏移的公式如下所示:
- 平均路径延时:Delay=[(t4 – t1) – (t3 – t2)]/2
则t2= t1 + Delay + Offset=t1 + [(t4 – t1) – (t3 – t2)]/2 + Offset,那么:
- 时间偏移:Offset =[(t2 – t1) + (t3 – t4)]/2
如图5所示,通过PTP协议计算出本地时钟和主时钟源的时间偏移,再修正本地时钟。
图5 时间校正
对端延时机制P2P(Peer to Peer)
P2P机制是利用延时请求Pdelay_Req报文、延时回答Pdelay_Resp报文和可能的Pdelay_Resp_Follow_Up报文,计算两个支持P2P机制的通信端口之间测量端口到端口的传播时间,也就是路径延时。与延时请求-响应机制相比,路径延时测量原理并无不同,只是路径延时测量在每段链路之间进行,主从节点间每段链路的链路延时累计在Pdelay_Resp或Pdelay_Resp_Follow_Up报文中,向下游传递,同时传递信息还包括同步报文在透明时钟TC上的驻留时间。从节点每段链路的链路延时和在透明时钟TC上的驻留时间,计算主从节点的平均路径延时。
在对端延时机制中,延时测量和端口的主从属性无关,在支持Pdelay机制的两个相连端口之间进行。
图6 Pdelay机制原理
时间戳t1和t2是Pdelay_Req消息发送时间戳和接收时间戳,时间戳t3和t4是Pdelay_Resp消息的发送时间戳和接收时间戳。计算单段链路延时的公式如下所示:
单段链路延时=[(t2-t1) + (t4-t3)]/2 = [(t2-t3) + (t4-t1)]/2。
以上是关于IEEE 1588-PTP简介的主要内容,如果未能解决你的问题,请参考以下文章