当前位置:首页 > 通信技术 > 鲜枣课堂
[导读]E2E和P2P上一篇文章介绍了1588的E2E链路延迟测量机制,本文顺带把P2P的链路延迟测量机制也一起介绍一下,这也便于以后介绍E2E透明时钟和P2P透明时钟。E2E就是End-to-End,它是由Slaveclock发起的测量链路延迟的机制,而P2P(Peer-to-Peer...

E2E和P2P

上一篇文章介绍了1588的E2E链路延迟测量机制,本文顺带把P2P的链路延迟测量机制也一起介绍一下,这也便于以后介绍E2E透明时钟和P2P透明时钟。E2E就是End-to-End,它是由Slave clock发起的测量链路延迟的机制,而P2P(Peer-to-Peer)则是把每一个clock看作是对等的,每一个clock都会发起的链路延迟测量机制。说白了就是E2E的机制下,只有slave clock测量链路延迟,而P2P的机制下,每个clock都会测量链路延迟。

P2P链路延迟测量机制

P2P链路延迟的测量,使用了和E2E不同的报文。E2E使用的是Delay_req和Delay_resp,而P2P使用了Pdelay_req,Pdelay_resp和Pdelay_resp_follow_up。看下图。

整个过程是这样的:

  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报文的参与。

对于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,你就不这么想了。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭