Posted in: PTP

PTP(1588v2)

1588v2简介

定义

1588协议由IEEE定义,全称为“网络测量和控制系统的精密时钟同步协议”(Precision Clock Synchronization Protocol for Networked Measurement and Control Systems),简称PTP(Precision Time Protocol)协议。

1588分为1588v1和1588v2两个版本,1588v1只能达到亚毫秒级的时间同步精度,而1588v2可以达到亚微秒级同步精度。1588v2被定义为时间同步的协议,本来只是用于设备之间的高精度时间同步,随着技术的发展,1588v2也具备频率同步的功能。

现在1588v1基本已被1588v2取代,以下非特殊说明,PTP即表示1588v2。

目的

在数据中心网络中,随着硬件技术的不断发展,交换机和服务器需要更精确的时间,以满足客户在网络时延测量、运维问题分析、分布式计算等业务方面对时间的高精度要求。
网络设备对时钟频率、时间相位的同步要求,可以通过多种手段来满足,包括:直连全球定位系统GPS(Global Positioning System)、网络时间协议NTP(Network Time Protocol)、以太时钟同步等。但是,使用GPS需要给每个设备安装天线,施工、维护的成本比较高;NTP只能达到亚秒级的时间同步精度,不能满足设备的精度要求;以太时钟同步只能对频率进行同步。
1588v2借助硬件辅助处理,可以达到亚微秒级的时间同步精度;同时成本更低,减小了对GPS的依赖,具有战略上的意义。

受益

  • 对网络设备提供亚微秒级的时间同步。
  • 无需为每个设备部署和维护GPS接收设备,因而时间同步的建设和维护成本更低。
  • 可以摆脱对GPS的依赖,在国家安全方面具备特殊意义。

1588v2原理描述

基本概念

应用时间同步的网络,称为时间同步网。时间同步网的结构如图6-1所示。时间同步网分为两级,其中一级节点采用1级时间同步设备,二级节点采用2级时间同步设备,二级节点以下是客户端设备,即为包括服务器在内的需要时间同步的设备。
图6-1 分级时间同步网

同步的概念

在现代通信网络中,大多数电信业务的正常运行要求全网设备之间的频率或时间差异保持在合理的误差水平内,即网络时钟同步。

网络时钟同步包括频率同步和相位同步两个概念。

  • 频率同步(Frequency synchronization,也称为时钟同步)

频率同步,是指信号的频率保持一致,相位不一致,但是保持一定的相位差。即信号的平均速率一致,能够保持网络中的所有设备以相同的速率运行。

  • 相位同步(Phase synchronization,也称为时间同步)

时间同步,是指信号之间的频率和相位都保持一致,即信号之间相位差恒定为零。

图6-2给出了频率同步与相位同步的区别。如果两个表(Watch A与Watch B)的时间不一样,但是保持一个恒定的差,那么这个状态称为频率同步;如果两个表每时每刻的时间都保持一致,那么这个状态称为相位同步。
图6-2 频率同步与相位同步示意图

PTP域

应用了PTP协议的网络称为PTP域。网络中可以含有多个PTP域,每个PTP域内有且只有一个时钟源,域内的所有设备都与该时钟源保持同步。不同时钟域各有自己的同步时间,相互之间独立。

时钟节点

PTP域中的节点称为时钟节点。目前,设备仅支持1588v2协议定义的两种时钟节点类型:

  • 普通时钟OC(Ordinary clock)

同一个PTP域内,只存在单个物理端口参与PTP时间同步的节点。设备通过该端口从上游节点同步时间,或者向下游节点发布时间。

  • 边界时钟BC(Boundary clock)

同一个PTP域内,存在两个或两个以上物理端口参与PTP时间同步的节点。设备通过其中一个端口从上游设备同步时间,通过其余端口向下游设备发布时间。

此外,当时钟节点作为时钟源,同时通过多个PTP端口向下游时钟节点发布时间,也称其为BC。

PTP端口

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

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

主从关系

PTP域的节点设备按照一定的主从关系(Master-Slave)进行时间同步。主从关系是相对而言的,发布时间的节点设备称为主节点,同步时间的节点设备称为从节点;主节点上的时钟称为主时钟,从节点上的时钟称为从时钟;发布同步时间的端口称为主端口,接收同步时间的端口称为从端口。

一台设备可以同时从上层节点设备同步时间,然后向下层节点设备发布时间。

最优时钟

PTP域中所有的时钟节点都按一定层次组织在一起,整个域的参考时钟就是最优时钟GMC(Grandmaster Clock),即最高层次的时钟。通过各时钟节点间1588v2报文的交互,最优时钟的时间最终将被同步到整个PTP域中,因此最优时钟也称为该PTP域的时钟源。最优时钟可以通过手工配置静态指定,也可以通过最佳主时钟BMC(Best Master Clock)算法动态选举。

时钟选源

设备支持静态选源和BMC选源两种方式:

  • 静态选源:通过配置选择指定时钟源为设备的主时钟源。
  • BMC选源:通过BMC算法动态选择网络中的最佳主时钟,保证设备的时钟精度。
    1588v2协议定义的Announce消息,用于时钟节点之间交换时间源信息,包括:Grandmaster的优先级、时间等级、时间精度,距离Grandmaster的跳数等等。通过这些信息,各时钟节点就能选择一个节点作为Grandmaster,选择通过哪个端口来同步Grandmaster发布的时钟,并确定两个节点之间的主从关系。选源的结果,是建立一棵无环路、全连通、以Grandmaster为根的树,即生成树。

具备主从关系的两个节点,Master节点会定期发送Announce消息给Slave节点。如果一段时间内,Slave节点收不到Master节点发出的Announce消息,则认为该主从关系失效,重新进行选源,并倒换到另一个端口上,建立新的主从关系,进行时间同步。

虚拟时钟ID

1588v2设备编号,可唯一标识1588v2设备。

1588v2报文

整个PTP网络中,所有时钟都会按照主从(Master-Slave)层次关系组织在一起,各节点逐级同步时钟,最终完成与系统的最优时钟Grandmaster的同步。整个同步的过程是通过交换1588v2报文来完成的。从时钟通过1588v2报文中携带的时间戳信息计算与主时钟之间的时间偏移和路径延迟,据此调整本地时钟达到与主时钟的同步。

如图6-3所示,1588v2报文是在物理层上由芯片对其打上时间戳,而不是在上层网络,这样能最大程度上保证时间戳的准确。因此,与传统的应用层协议NTP(Network Time Protocol,网络时间协议)相比,1588v2的精度更高。
图6-3 1588v2报文时间戳的操作

报文类型

根据报文是否携带时间戳,可以将1588v2报文分为两类:事件报文和通用报文。

  • 事件报文

时间概念报文,进出设备端口时会打上精确的时间戳,用于计算主从时钟之间的时间偏移和路径延迟。事件报文包含以下4种:Sync、Delay_Req、Pdelay_Req和Pdelay_Resp。

  • 通用报文

非时间概念报文,进出设备端口时不会打上时间戳,用于主从关系的建立、时间信息的请求和通告。通用报文包含以下6种:Announce、Follow_Up、Delay_Resp、Pdelay_Resp_Follow_Up、Management和Signaling。目前设备不支持Management、Signaling报文。

报文格式

1588v2报文可以封装在二层和三层报文中进行传输。根据1588v2报文传输所采用的链路类型不同,1588v2报文可分为MAC封装和UDP封装。

  • MAC封装

1588v2报文在二层链路上传输时,选择此封装模式,对应的以太网类型Ethernet Type为0x88F7。此时可以设置1588v2报文封装时携带的VLAN ID和802.1p优先级。

图6-4 不带Tag的MAC封装报文

图6-5 带Tag的MAC封装报文

  • UDP封装

1588v2报文在三层链路上传输时,选择此封装模式,对应的目的UDP端口号为319(非Announce报文)或者320(Announce报文)。此时可以设置1588v2报文封装时携带的VLAN ID、802.1p优先级和DSCP优先级。

图6-6 不带Tag的UDP封装报文

图6-7 带Tag的UDP封装报文

建立主从关系

建立主从关系阶段,1588v2主要完成最优时钟选取、端口主从关系确定。

主从关系建立步骤

1588v2通过端口接收和发送Announce报文,实现端口数据集和端口状态机信息的交互。BMC(Best Master Clock)算法通过比较端口数据集和端口状态机,确定时钟主从跟踪关系。

主从关系一般按照下面几个步骤来建立:

  1. 接收和处理来自对端设备端口的Announce报文。
  2. 利用BMC算法决策出最优时钟和端口的推荐状态,包括Master、Slave或者Passive状态。
  3. 根据端口推荐状态,更新端口数据集合。
  4. 按照推荐状态和状态决策事件,根据端口状态机决定端口的实际状态,实现时钟同步网络的建立。状态决策事件包括Announce报文的接收事件和接收Announce报文的超时时间结束事件,当接口接收Announce报文的时间间隔大于超时时间间隔时,将此接口状态置为Master。

BMC算法

在PTP域中,最优时钟的选取、端口主从关系的确立,都是依靠最优时钟BMC算法来完成的。BMC算法通过比较各时钟节点交互的Announce报文中所携带的数据集来选取最优时钟,并且决定各端口的状态。

BMC算法用来选取最优时钟和决定端口状态的数据集包括以下信息:

  • Priority1:时钟优先级1,支持用户配置,取值范围是0~255,取值越小优先级越高。
  • Clock-Class:时钟级别,取值越低级别越高。
  • Clock-Accuracy:时钟精度,取值越低精确度越高。
  • OffsetScaledLogVariance:时钟稳定性,取值越低稳定性越高。
  • Priority2:时钟优先级2,支持用户配置,取值范围是0~255,取值越小优先级越高。

在动态BMC选源算法中,优先级选择的排序是Priority1>Clock-Class>Clock-Accuracy>OffsetScaledLogVariance>Priority2,即先比较参选时间源的Priority1,若Priority1相同再比较Clock-Class,以此类推,优先级高、级别高、精度好的时钟成为最优时钟。

通过改变时钟的优先级、级别等属性,可以影响系统主时钟的选取,从而选中希望同步的时钟信号。BMC算法可以实现PTP时钟同步分配和保护。

时间同步原理

1588v2时间同步的基本原理和NTP相同,都是主从设备(Master-Slave)之间双向收发时间同步报文,根据报文的收发时间戳,计算得到两个设备之间的往返总时延。如果两个方向的时延相同,往返总时延除2就是单向时延,据此可以得到Slave到Master的时间偏差,Slave按照该时间差调整本地时间,就可以实现其与Master之间的时间同步。1588v2与NTP实现方法的区别在于:

  • NTP协议一般在主控板上运行,测量出来的通信时延除了链路时延外,还包括各种内部处理时延(内部拥塞排队、软件调度、软件处理等),因而时延抖动很大,双向时延对称性基本无法保证,从而导致最终得到的同步时间精度较低。
  • 1588v2协议假定链路时延延迟固定(或者变化缓慢,两次同步处理之间的变化可以忽略不计)、两个方向的链路时延相同。因此,1588v2协议在最靠近链路两端的地方打时间戳,进行链路时延度量,就可以获得较高的时间同步精度。

1588v2协议定义了两种具体的时延度量和时间同步方式:

  • Delay方式:用于端到端的时延度量。
  • Pdelay方式:用于在两个支持Pdelay机制的通信端口之间测量端口到端口的传播时间,也就是链路延时,其与端口的主从属性无关。

Delay方式

图6-8是1588v2采用Delay方式计算主从设备之间平均路径延时和时间偏移的过程与原理。

图6-8 Delay方式

说明:
报文在离开和到达设备时,基于本设备内部的系统时钟打时间戳。
one-step方式是指Delay方式下的Sync报文,带有本报文发送时刻的时间戳。
two-step方式是指Delay方式下的Sync报文,不带有本报文发送时刻的时间戳,设备只是记录Sync报文发送时的时间,由后续的Follow_Up报文带上Sync报文发送时刻的时间戳。

  1. 主设备在时刻t1发送Sync报文。如果主设备为one-step模式,则t1随Sync报文传送到从设备;如果主设备为two-step模式,则t1在随后的Follow_Up报文中传送到从设备。
  2. one-step模式下,从设备在时刻t2接收到Sync报文,并从Sync报文中获取t1;two-step模式下,从设备在时刻t2接收到Sync报文,并从Follow_Up报文中获取t1。
  3. 从设备在时刻t3发送延时请求报文Delay_Req给主设备。
  4. 主设备在时刻t4接收到Delay_Req报文。
  5. 主设备随后通过延时回答报文Delay_Resp将t4发送给从设备。

通过上述报文传递过程,从设备可以根据获取的t1、t2、t3、t44个时间戳,计算出主从设备之间的平均路径延时Delay,以及自己和Master之间的时间偏差Offset,从而调整自身的时间以达到和Master的同步。详细的原理如下:

  1. 假设Master到Slave的发送路径延时是Delayms,Slave到Master的发送路径延时是Delaysm,Slave和Master之间的时间偏差为Offset,Master和Slave之间的平均路径延时为Delay = (Delayms + Delaysm) / 2。
  2. 因为t2 – t1 = Delayms + Offset、t4 – t3 = Delaysm – Offset,则(t2 – t1) – (t4 – t3) = (Delayms + Offset) – (Delaysm – Offset)。
  3. 由上述公式可得:
    • Delayms + Delaysm = (t2 – t1) + (t4 – t3)
    • Offset = [(t2 – t1) – (t4 – t3) -(Delayms – Delaysm)] / 2
  4. 如果Master和Slave之间的路径延时对称,即Delayms = Delaysm,则:
    • Delay = [(t2 – t1) + (t4 – t3)] / 2
    • Offset = [(t2 – t1) – (t4 – t3)] / 2

如图6-9所示,设备通过1588v2协议计算出本地时钟和主时钟源的时间偏移,然后修正本地时钟。这样周而复始、不断进行的同步过程,确保了Slave对Master的时间同步。

图6-9 时间校正

从上述原理可以看出,1588v2时间同步是建立在Master和Slave之间的路径延时是对称的基础之上。如果Master和Slave之间的路径延时不对称,则会引入同步误差,误差的大小为两个方向路径延时差值的二分之一。所以1588v2高精度时间同步的关键在于:两个节点之间的时延尽量稳定,没有抖动。链路时延一般都能满足这个条件,但设备的转发时延抖动很大,因此在IEEE标准的1588v2协议中需要将correctionField(时延校正)字段参与到Delay方式的计算中,从而得到正确的平均路径时延Delay和时间偏移Offset。

图6-10 转发时延校正处理原理图

如图6-10所示,设备在入端口和出端口处,分别对1588v2报文的correctionField字段进行修正,在入口处减去该时刻的时间戳,在出口处加上该时刻的时间戳。因此,最终效果就是给correctionField增加了该报文在本设备内的转发时延。 IEEE标准1588v2协议中,采用转发时延校正的Delay方式计算平均路径时延的简要过程为:

  1. Master向Slave发出Sync报文,其携带的correctionField字段CF1就包含了经过Master节点的转发时延。Slave节点收到Sync报文进行时间同步计算时,把CF1扣除掉,就只剩下了链路时延。

    说明:
    two-step模式下,Slave还需在时间同步计算中扣除Follow_Up报文中的correctionField字段。

  2. Slave向Master发出Delay_Req报文,同样携带了含有Slave节点转发时延的correctionField字段。
  3. Master收到Delay_Req报文后,计算新的correctionField,并且把Delay_Req消息的correctionField值加到新的correctionField字段中形成CF2。
  4. Master向Slave发出Delay_Resp报文,携带CF2。
  5. Slave节点收到Delay_Resp报文进行时间同步计算,将包含转发时延的correctionField值扣除,此时可以得到正确的Delay和Offset为:
    • Delay = [(t2-t1-CF1) + (t4-t3-CF2)]/2 = [(t2-t1)+(t4-t3) – (CF1+CF2)]/2
    • Offset = [(t2 – t1-CF1) – (t4 – t3-CF2)] / 2 = [(t2-t1) – (t4-t3) – (CF1– CF2)]/2

通过以上方式可以实现高精度的时间同步。

Peer Delay方式

图6-11是1588v2采用Peer Delay方式计算主从设备之间平均路径延时和时间偏移的过程与原理,其与Delay方式类似。

图6-11 Peer Delay方式

说明:
报文在离开和到达设备时,基于本设备内部的系统时钟打时间戳。
图6-11中的tab、tba分别为两个方向上的时延值,这里假定其相同。
one-step方式是指Pdelay方式下的Pdelay_Resp报文,带有本报文发送时刻的时间戳。
two-step方式是指Pdelay方式下的Pdelay_Resp报文,不带有本报文发送时刻的时间戳,设备只是记录Pdelay_Resp报文发送时的时间,由后续的Pdelay_Resp_Follow_Up报文带上Pdelay_Resp报文发送时刻的时间戳。

  1. 节点A在时刻t1发送Pdelay-Req报文。

  2. 节点B在时刻t2接收到Pdelay-Req报文,并从Pdelay-Req报文中获取t1。

  3. 节点B在时刻t3发送延时应答报文Pdelay_Resp给节点A。如果节点B为one-step模式,则t3、t3与t2之间的时间差值(t3 – t2)随Pdelay_Resp报文传送到节点A;如果节点B为two-step模式,则t3、t3与t2之间的时间差值(t3 – t2)在随后的Pdelay_Resp_Follow_Up报文中传送到节点A。

  4. 节点A在时刻t4接收到Pdelay_Resp报文,并从Pdelay_Resp报文(one-step)或者Pdelay_Resp_Follow_Up报文(two-step)中获取t3、t3与t2之间的时间差值(t3 – t2)。

通过上述报文传递过程,A设备可以根据获取的t1、t3、t4、t3与t2之间的时间差值(t3 – t2)4个时间戳。此时,A、B设备之间的平均路径延时Delay的计算公式如下:

Delay = [(t4 – t1) – (t3 – t2)]/2

上述协议过程只是不断地实时计算和更新相连链路时延,并不进行时间同步。时间同步,还需要有Master到Slave的Sync报文。Master节点向Slave节点周期发送Sync报文,经过Slave节点的时延校正后,就是Slave相对Master的时间差异。Slave节点可以据此对本地时间进行偏差调整,从而实现了与Master的时间同步。

非对称校正

1588v2在原理上要求链路的往返时延对称,否则1588v2时间同步的各种算法都不能成立。 但现实中的链路是可能双向时延不对称的。这可能是链路本身的属性,也可能是设备的属性导致(比如打时间戳的位置到链路这一小段处理,两个方向的时延不一致等等)。1588v2提供了非对称时延校正机制,来解决这个问题。非对称延迟校正机制如图6-12所示。

图6-12 非对称延迟校正机制

一般情况下,tms与tsm应该相等。如果不相等,只要该时延差值是固定的、事先可以得到的,用户就可以将两者的差异配置为非对称校正值。1588v2时间同步计算时,将这种非对称校正值一并计算在内,从而对时延非对称链路也能达到时间同步精度。

时钟同步原理

说明:
通过1588v2报文恢复频率,其精度比以太时钟同步低。所以,在可能的情况下,建议用户采用以太时钟同步进行频率同步,通过1588v2进行时间同步。
1588v2的时钟同步的详细内容,请参见以太时钟同步配置。

1588v2除了用作时间同步外,也可以用来进行时钟同步,即通过1588v2报文来恢复频率。

1588v2的主节点定时向从节点发送同步Sync报文,报文中有主节点发送Sync报文的时间戳。同样的,从节点每接收到一个Sync报文,都会产生一个接收时间戳。在路径时延稳定的情况下,两个时间戳的变化应该是保持一致。如果接收时间戳变化较快或较慢,则表明接收设备的时钟比发送设备的时钟快或慢,此时需要调整接收设备的本地时钟。通过这种方式,可以实现两个设备之间的频率同步。

如图6-13所示,假设时钟节点A要同步时钟节点B的时间。不考虑路径延时和驻留时间的变化,如果A和B的时钟频率相等,则在相同的时间间隔内,A和B的时间累积的偏差应该是一样的,即t2N – t20 = t1N – t10。如果t2N – t20大于t1N – t10,则说明A的时钟频率比B快,要调慢A的时钟频率;如果t2N – t20小于t1N-t10,则说明A的时钟频率比B慢,要调快A的时钟频率。调整的值大小为[(t2N – t20) – (t1N – t10)]/2。

图6-13 时钟同步原理

1588v2网络的保护倒换

1588v2时间同步网支持网络级的保护倒换和设备单点故障保护,如图6-14所示,网络正常时,时间来自于GPS-1,按照箭头方向依次向下层网络传送。如图6-15所示,当GPS-1与时钟同步网络之间的连接故障时,时间切换到GPS-2,按照箭头方向依次向下层网络传递。

图6-14 网络正常

图6-15 网络故障

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to Top