良许Linux教程网 干货合集 1588 P2P链路延迟测量机制

1588 P2P链路延迟测量机制

E2E和P2P

在之前的文章中,我们介绍了1588中的E2E(End-to-End)链路延迟测量机制。在本文中,我们将顺便介绍一下P2P(Peer-to-Peer)的链路延迟测量机制,这也有助于以后的E2E透明时钟和P2P透明时钟的介绍。E2E机制是由从节点时钟(Slave clock)发起的链路延迟测量,而P2P机制则将每个时钟视为对等的,并且每个时钟都会发起链路延迟测量。简而言之,E2E机制中,只有从节点时钟进行链路延迟测量,而在P2P机制中,每个时钟都会进行链路延迟测量。

P2P链路延迟测量机制

P2P链路延迟的测量使用了与E2E不同的报文。E2E使用的是Delay_req和Delay_resp报文,而P2P使用了Pdelay_req、Pdelay_resp和Pdelay_resp_follow_up报文。请看下图。
image-20231015154640586
整个过程是这样的:

  1. 发起端发送报文Pdelay_req,并记录发送时间戳t1。响应端收到后,记录接收时间戳t2。
  2. 响应端立即回复报文Pdelay_resp,把t2写在Pdelay_resp报文上,告诉发起端。同时记录发送时间戳t3。
  3. 发起端收到Pdelay_resp,记录接收时间戳t4。
  4. 紧随Pdelay_resp报文,响应端又发送一个叫作Pdelay_resp_follow_up的报文,将t3写在该报文上,告诉发起端。

完成整个过程后,发起端已经知道t1,t2,t3和t4这四个时间戳。和E2E类似,我们又得到两个等式。

t2 - t1 = delay - offset
t4 - t3 = delay + offset

t2和t1的时间差值包含了链路延迟delay和两个clock的时间偏差。t4和t3的时间差值包含了链路延迟delay和刚提到的时间偏差的相反数。于是链路延迟和时间偏差可以被计算出来了。

2 * delay = (t2 - t1) + (t4 - t3)
2 * offset = (t4 - t3) - (t2 - t1)

时钟同步的实现

通过上面的介绍我们又学习到了P2P链路延迟的测量机制,上面的两个等式可以计算出链路延迟和时间偏差。然而真正的1588软件就是用这个时间偏差值来调整clock的吗?答案并不是这样。不要忘了,P2P机制下,1588同步还有Sync和Follow_up报文的参与。
image-20231015154644779
对于P2P机制下的时钟同步,1588软件通常是怎么做的呢?重点来了。1588软件通常把时钟同步解耦成两个任务:

  1. 第一个任务是通过P2P机制测链路延迟。
  2. 第二个任务就是通过Sync/Follow_up报文同步时钟。

这两个任务独立执行,并可以以不同的周期定时运行。第一个任务周期性的测量链路延迟,并可以辅助一些滤波算法,降低一些偶然的抖动带来的影响。第二个任务中,Slave clock收到Sync/Follow_up后,即可利用第一个任务最新计算出的链路延迟的值delay,来计算时间偏差offset,调整Slave clock与Master clock同步。别忘了下面等式。同样,对offset的值也可以使用一些滤波算法。

t2 - t1 = delay + offset

结束语

至此,P2P的链路测量机制也介绍完了,是不是就是这么回事,就是这么简单。其实越深入越复杂,以后了解到报文的格式,P2P透明时钟,尤其是不局限于1588还想了解802.1AS协议的Time-aware bridge,你就不这么想了。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部