1588 P2P鏈路延遲測量機制
E2E和P2P
上一篇文章介紹了1588的E2E鏈路延遲測量機制,本文順帶把P2P的鏈路延遲測量機制也一起介紹一下,這也便于以后介紹E2E透明時鐘和P2P透明時鐘。E2E就是End-to-End,它是由Slave clock發(fā)起的測量鏈路延遲的機制,而P2P(Peer-to-Peer)則是把每一個clock看作是對等的,每一個clock都會發(fā)起的鏈路延遲測量機制。說白了就是E2E的機制下,只有slave clock測量鏈路延遲,而P2P的機制下,每個clock都會測量鏈路延遲。P2P鏈路延遲測量機制
P2P鏈路延遲的測量,使用了和E2E不同的報文。E2E使用的是Delay_req和Delay_resp,而P2P使用了Pdelay_req,Pdelay_resp和Pdelay_resp_follow_up??聪聢D。
整個過程是這樣的:
- 發(fā)起端發(fā)送報文Pdelay_req,并記錄發(fā)送時間戳t1。響應(yīng)端收到后,記錄接收時間戳t2。
- 響應(yīng)端立即回復(fù)報文Pdelay_resp,把t2寫在Pdelay_resp報文上,告訴發(fā)起端。同時記錄發(fā)送時間戳t3。
- 發(fā)起端收到Pdelay_resp,記錄接收時間戳t4。
- 緊隨Pdelay_resp報文,響應(yīng)端又發(fā)送一個叫作Pdelay_resp_follow_up的報文,將t3寫在該報文上,告訴發(fā)起端。
t2 - t1 = delay - offset
t4 - t3 = delay offset
t2和t1的時間差值包含了鏈路延遲delay和兩個clock的時間偏差。t4和t3的時間差值包含了鏈路延遲delay和剛提到的時間偏差的相反數(shù)。于是鏈路延遲和時間偏差可以被計算出來了。2 * delay = (t2 - t1) (t4 - t3)
2 * offset = (t4 - t3) - (t2 - t1)
時鐘同步的實現(xiàn)
通過上面的介紹我們又學(xué)習(xí)到了P2P鏈路延遲的測量機制,上面的兩個等式可以計算出鏈路延遲和時間偏差。然而真正的1588軟件就是用這個時間偏差值來調(diào)整clock的嗎?答案并不是這樣。不要忘了,P2P機制下,1588同步還有Sync和Follow_up報文的參與。
對于P2P機制下的時鐘同步,1588軟件通常是怎么做的呢?重點來了。1588軟件通常把時鐘同步解耦成兩個任務(wù):
- 第一個任務(wù)是通過P2P機制測鏈路延遲。
- 第二個任務(wù)就是通過Sync/Follow_up報文同步時鐘。
t2 - t1 = delay offset