1588 P2P链路延迟测量机制
扫描二维码
随时随地手机看文章
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。看下图。整个过程是这样的:
- 发起端发送报文Pdelay_req,并记录发送时间戳t1。响应端收到后,记录接收时间戳t2。
- 响应端立即回复报文Pdelay_resp,把t2写在Pdelay_resp报文上,告诉发起端。同时记录发送时间戳t3。
- 发起端收到Pdelay_resp,记录接收时间戳t4。
- 紧随Pdelay_resp报文,响应端又发送一个叫作Pdelay_resp_follow_up的报文,将t3写在该报文上,告诉发起端。
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软件通常把时钟同步解耦成两个任务:
- 第一个任务是通过P2P机制测链路延迟。
- 第二个任务就是通过Sync/Follow_up报文同步时钟。
t2 - t1 = delay offset