IEEE1588v2解析(4)--透明时钟/一步时钟/二步时钟

透明时钟是PTP协议里面最复杂和最难理解的部分;下面是全网最清晰的透明时钟介绍。

在介绍透明时钟之前,需要先介绍下PTP协议的报文类型:

PTP报文分两种大类

一类是Event报文:

  • Sync, 同步消息 , 由主设备发送给从设备 , 消息中可以包含 Sync 发送时间标签 , 也可以在后续的Follow UP 消息中包含 ;
  •  Delay_Req,请求对端返回接收到 Delay Req消息时的时间标签 , 时间标签嵌入在响应消息Delay Resp
  •  Pdelay_Req,用于发起链路延时测量请求 , 带发送时间标签。
  •  Pdelay_Resp

这类型报文有个特别的要求,即发送和接收这些报文的端口需要记录发送时间点或者接收时间点。

另一类是general报文:

  • Announce
  • Follow_Up
  • Delay_Resp
  • Pdelay_Resp_Follow_Up
  • Management 
  • Signaling 

报文的公共header: 

  • sourcePort Identity用来区分请求发起方的端口
  • correctionField用来存储时间信息,单位为纳秒,具体取值除以2的16次方以后是真正的值,也就是最低的16bit可以表示小于纳秒的值
  • flagField里面的twostep标志位,可以用来标识是否采用二步时钟

 不同消息内容的定义:

 一步时钟 one-step clock:使用单个Event报文(比如Sync)来提供时间信息的时钟;

二步时钟 two-step clock:使用一个Event报文(比如Sync)和紧接着的一个general报文(比如follow up)来提供时间信息的时钟。

比如普通时钟/边界时钟作为主时钟时候,可以是一步时钟,也可以是二步时钟,一般取决于硬件标记时间戳的性能,能力强的可以一步,这个在前面的文章中提到过。

透明时钟:一个设备,可以测量PTP event报文经过自己的所花费时间(residence time),并且将此时间添加到PTP报文里面。本身并不需要和grandmater进行时间同步,通常保持频率同步即可。需要转发所有非PTP报文。

透明时钟的分类:

  • 端到端的时钟 E2E TC
    • 转发所有PTP报文
    • 对于Sync, Follow_Up和Delay_Req报文按照规范要求进行residence time的处理
    • 不支持PeertoPeer的路径测量
  • 点到点的时钟 P2P TC
    • 执行PeertoPeer的路径测量
    • 转发Announce, Sync, Follow_Up, Management, Signaling 报文;
    • 扔掉Delay_Req 和 Delay_Resp报文
    • Sync 和 Follow_Up报文需要按照规范要求进行residence time的处理。

上面两种时钟,可以是一步时钟,也可以是二步时钟;

在同一通信链路上,不允许同时存在E2E TC和P2P TC。

下面谈一下透明时钟的作用:

      透明时钟通常是网络交换机类型的设备,当交换机上有大量数据流量时候,会出现报文排队,每个端口的排队情况都不会一样,PTP的路径计算假设了链路时延是对称的,也就是主时钟到从时钟的时延和从时钟到主时钟的时延相等,对于线路上,这种假设一般是成立的,但是线路上还存在交换机类设备,那么由于排队情况的存在,两个方向的时延并不一定是相同的,这样就会引入误差,通过在交换机的端口上启用透明时钟,可以把经过自身的排队时间放在PTP报文上,这样从时钟在处理PTP报文时候,可以消除两个方向上排队时间带来的差异,这样能大大提高时间同步的准确度。

下面是透明时钟如何消除差异的原理分析,

首先看E2E TC(二步时钟)的情况:

  1. 如果收到Sync报文的twoStepFlag 是FALSE,代表后续不会收到follow up报文。透明时钟转发Sync报文,并将twoStepFlag修改为True,并计算和记录Sync报文经过它时候花费的时间residence time(master到slave的方向的排队时间,记为C1
  2. 然后透明时钟需要自己产生follow_up报文,因为自己是二步时钟,此时需要把Sync报文的originTimestamp(也就是t1)放在follow_up的preciseOriginTimestamp;follow_up的twoStepFlag也是Ture。
  3. residence time需要放在follow_up的correctionField。
  4. 然后发送follow_up。
  5. 如果收到了Delay_req消息,那么需要计算Delay_req经过自己时候花费的时间residenceTime(slave到master的方向的排队时间,记为C2),然后转发Delay_req。
  6. 后续接收到Delay_resp的消息后,将residence time需要放在Delay_resp的correctionField,然后转发Delay_resp。

 路径时延计算:

<meanPathDelay> =[(t2 - t3) +(t4 - t1)]/2=   [(t2 - t3) + (receiveTimestamp of
Delay_Resp message(t4的纳秒以上部分) – preciseOriginTimestamp of Follow_Up message(t1的纳秒以上部分)) – correctionField of
Sync message(取值0)– correctionField of Follow_Up message(取值为:t1的小于纳秒的部分 + C1) – correctionField of Delay_Resp
message(取值为:C2 - t4的小于纳秒的部分)]/2  = [(t2 - t3) +(t4 - t1)]/2-(C1+C2)/2 =  [(t2 - t1) +(t4 - t3)]/2- (C1+C2)/2

时钟偏差值计算:

<offsetFromMaster> = t2-t1-<meanPathDelay> =  <syncEventIngressTimestamp>(即t2) - <preciseOriginTimestamp>(即t1大于纳秒部分) -
<meanPathDelay> - correctionField of Sync message(取值0) - correctionField of Follow_Up
message(t1小于纳秒部分+C1) = t2-t1-[(t2 - t1) +(t4 - t3)]/2-(C1+C2)/2 -C1= t2-t1-(D+C1)

上式假设

 t2 - t1 = D+C1   master到slave时延

 t4-t3 = D+C2;slave到master时延

假设线路时延两个方向都相等,都是D,C1为master到slave增加的排队时间,C2为slave到master的排队时延;

所以最终offsetFromMaster = t2-t1-(D+C1);也就是正好减去了master到slave的线路时延和排队时间。这样就消除了两个方向排队时间不对等带来的影响。

再看P2P TC(一步时钟)的情况:

  1. 如果收到Sync报文,记算Sync报文经过它时候花费的时间residence time(master到slave的方向的排队时间,记为C1),并放到correctionField,然后转发Sync报文
  2. 即使后续收到follow_up报文,直接转发,不做任何修改
  3. Pdelay_Req 和Pdelay_Resp 报文,终结于P2P TC,也就是P2P TC使用这两个报文进行z按正常的链路时延测量,t3-t2放入Pdelay_Resp的correctionField。
  4. 另外,透明时钟还需要把计算得到的路径时延增加加到Sync报文的correctionField。此时correctionFiled里面的值为(路径时延+C1)

 路径时延计算:

<meanPathDelay> = [(t4 − t1) − correctionField of Pdelay_Resp]/2 = [(t4 − t1) −(t3 − t2) ]/2 

按照以上公式,可以计算出Master到透明时钟的路径时延meanPathDelay_1,和透明时钟到slave的路径时延meanPathDelay_2;

时钟偏差值计算:

t2-t1-<meanPathDelay_2> =  <syncEventIngressTimestamp>(即t2) ─ <originTimestamp> (即t1)─
<meanPathDelay_2> ─ correctionField of Sync message(即meanPathDelay_1 + C1) = t2-t1-<meanPathDelay_2>-<meanPathDelay_1>-C1

可以看出,只有master时钟到slave时钟方向的排队时间C1参与了时间偏差值计算;所以消除了两个方向排队时间不一致的影响。

总结一下: 

P2P TC,如下图所示,Clock A和ClockC分别是master和slave时钟,ClockB是透明时钟;ClockB会使用PeertoPeer的时延测量方法(PDelayReq和PDelayResp)测出A到B的时延X,同样,ClockC会测量出B到C的时延Y;同时作为透明时钟的ClockB,需要测量Sync消息路过它的时候的内部排队时间C1,然后把C1+X放到Sync或Follow_Up消息的correctionField;当Clock C收到Sync或Follow_Up消息后,可以通过以下等式计算出和class A的时间偏差。

timeoffset = t2-t1-Y-(X+C1) = t2-t1-(X+Y+C1)

所以X+Y+C1正好是Clock A到Clock C的路径时延。


E2E TC,如下图所示,Clock A时master,Clock C是 Slave,Clock B是E2E透明时钟。

ClockA和Clock C之间采用DelayReq-Resp测量机制,测量A和C之间的平均时延M。C1和C2分别是A->C和C->A方向的排队时延。 C1是通过Sync报文经过ClockB时候测量出来的,C2是DelayReq报文经过CLockB测量出来的;C1会放在Sync或Follow_Up消息的correctionField,C2会放在DelayResp的correctionField。当Clock C收到C1和C2后,可以计算出和主时钟的时间偏差。

假设A到C的时延是D+C1,C到A的时延是D+C2

平均路径时延M = (D+C1+D+C2)/2

考虑correctionField的取值后的平均路径时延M = (D+C1+D+C2)/2 -  (C1+C2)/2 = D

可以看出,此时的平均路径时延M,去掉了C1和C2后的平均值;

而真正的A到C方向的路径时延应该是D+C1;

所以最终的TimeOffset = t2-t1 - M- C1 = t2-t1-D-C1 = t2-t1-(D+C1)

所以最终的TimeOffset只有C1的影响,没有了C2,消除了C2带来的误差;

  • 11
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: IEEE 1588 V2是一种用于实现时间同步的协议。它的全称是"Institute of Electrical and Electronics Engineers (IEEE) 1588 (V2) Precision Time Protocol (PTP)",是IEEE在2008年发布的第二个版本。 该协议的主要目标是通过网络实现高精度的时间同步。它通过在网络中的各个节点间传输和调整时间戳来实现时间的一致性。与传统的时间同步方法(如NTP)相比,它提供了更高的精度和更强的可靠性。 IEEE 1588 V2有一套完整的消息传输机制,其中包括时钟同步消息(Sync message)、延迟请求消息(Delay Request message)和延迟响应消息(Delay Response message)等。通过这些消息的交互,节点之间可以进行时间同步,并计算出网络延迟。 在IEEE 1588 V2中,有两个重要的角色:主时钟(Grandmaster Clock)和从时钟(Slave Clock)。主时钟是网络中的时间源,它通过发送Sync消息来同步从时钟。从时钟接收Sync消息,并使用延迟请求和延迟响应消息计算网络延迟。主时钟和从时钟之间的同步误差可以通过算法进行补偿,从而实现高精度的时间同步。 IEEE 1588 V2被广泛应用于许多领域,如工业自动化、通信网络、航空航天等。它可以提供高精度的时间信息,使得不同设备间的数据同步更加精确可靠。由于其广泛适用性和强大的功能,IEEE 1588 V2在实际应用中得到了广泛的认可和采用。 ### 回答2: IEEE 1588 V2是一种用于实现精确时间同步的网络协议。它的目标是在分布式控制系统中提供高精度的时钟同步,以确保系统中的各个设备具有相同的时间基准。 IEEE 1588 V2采用主从模式实现时钟同步。系统中的一个设备被指定为主设备(Master),其他设备则作为从设备(Slave)。主设备通过网络广播一个精确的时间戳,从设备接收到该时间戳后,根据延时信息来校正自身的时钟。通过周期性的广播和校正过程,所有从设备的时钟可以与主设备保持高度的一致性。 IEEE 1588 V2使用了时间戳(Timestamping)的概念来实现高精度的时钟同步。它通过在数据包中插入时间戳,以及测量和校正设备之间的传输延时来实现同步。通过在主设备和从设备之间传输时间戳,可以在微秒级别内实现高度的时钟同步。 IEEE 1588 V2在工业自动化、通信和数据中心等领域具有广泛的应用。它可以用于同步工业控制系统中的各个设备,确保数据采集和处理的准确性。在通信领域,它可以用于提供高精度的频率和时间同步,以支持高速网络的正常运行。在数据中心中,它可以用于同步服务器和存储设备的时钟,以提供准确的时间戳和数据访问。 总之,IEEE 1588 V2是一种用于实现高精度时间同步的网络协议。它通过主从模式和时间戳技术,实现了设备之间微秒级别的时钟同步,为各个领域的应用提供了可靠的时间基准。 ### 回答3: IEEE 1588v2,也称为精确时间协议(Precision Time Protocol,简称PTP),是一种用于实现时间同步的协议。它的主要应用领域是在计算机网络中实现高精度的时钟同步,特别是在需要进行时间精确同步的工业自动化系统中。 IEEE 1588v2协议的设计目标是实现网络中多个节点的高精度时钟同步,其中一个节点被定义为“主时钟”(Master Clock),其他节点则被定义为“从时钟”(Slave Clock)。主时钟通过发送同步信息和精确时钟时间到从时钟,从而实现网络节点之间的时间同步。 IEEE 1588v2协议的工作原理是通过周期性的同步消息和精确时间戳来实现时钟同步。具体而言,主时钟会发送同步消息(Sync Message)来告知从时钟当前时钟周期的起始时间,并在同步消息中携带一个时间戳。从时钟接收到同步消息后,会使用收到的时间戳和本地时钟时间进行比较,并计算出时钟偏差和延迟。 通过周期性地进行同步消息的发送和接收,从时钟逐渐调整自己的本地时钟,使其与主时钟保持同步。这样就能实现网络中多个节点之间的高精度时钟同步,甚至可以实现纳秒级别的精度。 IEEE 1588v2协议具有广泛的应用领域,特别是在需要时间同步的工业自动化系统中。例如,以太网通信系统、电力系统、航空航天系统等领域都可以使用该协议来实现高精度的时钟同步。它的出现极大地促进了分布式控制系统的实现和发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值