基于IEEE 1588的時鐘同步技術在分布式系統中的應用
3影響同步精度的因素
(1)網絡對稱性從圖1看出,分布式系統為計算其網絡延遲和時鐘偏移所進行的4次測量都是建立在報文的傳輸延遲(Delay)在傳輸方向上是相同的基礎上。但這只是理想的情況,在大網絡負載的情況下,Delay在傳輸方向上的差異會越來越大。造成同步精度的下降。但由于工業上的分布式系統多為相對本地化、局域網的系統,子網或內部組件相對穩定的環境,因此可忽略Delay在傳輸方向上的差異。
(2)網絡拓撲結構系統測量時,點對點的傳輸能提供最高的精度,網絡的拓撲結構也會對同步精度造成影響,當采用Hub連接時,網絡延遲抖動為300~400 ns,當采用交換機時,由于存儲-轉發機制的影響,網絡延遲會隨著網絡負載的變化而變化,因此具有較大的抖動值,使得上述網絡傳輸延遲測量方法精度大大降低。為此,PTP采用邊界時鐘(Bounday Clock)的方法解決這一問題,如圖2所示。在交換機內部與主時鐘連接的端口可以看成從時鐘端口,在接收主時鐘發送的同步報文后調整自己的本地時鐘,然后用調整后的時鐘去同步所有與交換機主時鐘連接的從時鐘設備,這樣帶有拓撲結構的連接就變成簡單的點對點連接,從而有效去除交換機所造成的延遲抖動。

(3)晶振的頻率由于產生時鐘的不同晶體本身的速度是不同的,而且晶體容易受溫度等影響,產生晶振漂移,引起誤差增大,因此需時從時鐘的晶振頻率進行補償。使從時鐘的晶振頻率與主時鐘保持一致。
4 時間戳的生成
基于以上方法,可有效消除主、從時鐘偏差和報文在網絡中的傳輸延遲,從而實現分布式系統的時鐘同步。同步信息檢測和時間戳生成方法不同,時鐘同步精度也不一樣,IEEE802.3中規定以太網幀的基本結構:前導碼、幀起始定界符、目的MAC、源MAC、長度、數據和幀校驗序列。其中,前導碼由7個‘1 0’交替的8位字節組成,用于信號同步;而幀起始定界符包含6位交替的‘1 0’及末位的2個1,末位的2個1通知接收端,跟在后面的是幀的實際字段,表示一幀開始。在以太網中,IEEE 1588所定義的各種時鐘報文(Sync報文等)均以UDP/IP多播包形式發送的,報文的時標生成點位于幀起始定界符最后一位,如圖3所示。

IEEE 1588的同步原理決定了時鐘同步的精度主要取決于時間戳的精度。時間戳的加蓋有3種方法:
(1)硬件加蓋方式 時間戳主要加蓋在MAC層和PHY層之間的MII(media independent interface)層,這也是最精確的加蓋方式,需用硬件電路實現。
(2)軟件加蓋方式 時間戳加蓋在網絡的驅動層,在網絡接口的驅動程序中實現,精度略低。
(3)加蓋在應用層 因為這種方式無需修改其他系統軟件,所以協議棧的操作延遲和負載都能對同步精度造成影響,因此同步精度最低。無論在網絡驅動層還是在MII產生的時間戳都必須返回到PTP應用層并經由系統內核處理,然后才發送到PTP終端,由此可以看出時間戳的生成決定了PTP協議的運行。只有獲得精確的時間戳才能發揮IEEE 1588所能達到的時鐘同步精度。
以太網自身的CSMMCD機制、上一層通信(如TCP及UDP)上進行的誤差檢測及翻譯障礙等,都占用以太網的時間。因此,用軟件方式產生時間戳,必須優化加蓋時間戳的驅動程序以提高系統內核處理帶有時間戳報文的運算效率,同時優化報文發送前在網卡內部的排序,減小程序運行和網絡負載對收發報文的影響,從而降低報文發送過程中的軟件延遲和抖動。
在以太網中,也可以在物理層放置硬件電路加蓋時間戳,這樣可以避免協議棧上部較大的時間抖動,消除報文傳輸中的網絡延遲。由于主從時鐘不同步的原因除了網絡延遲外還有時鐘偏差,可以采用頻率可調時鐘來校正從時鐘相對主時鐘的時鐘偏差,根據從時鐘處得出的自身與主時鐘的偏差計算出相應的頻率補償值,從而控制時鐘計數器的數值達到與主時鐘的同步。硬件電路從物理層獲得每個發送和接收報文的比特流,并記錄時間戳信息,判斷其是否為IEEE 1588相關協議報文,如果是相關報文,則把時間戳信息傳送給上層軟件,否則丟棄該報文的時間戳信息。對于100 M以太網,由于采用4B/SB編碼和Scrambler技術,只能在物理層與數據鏈路層之間的MII層加蓋時間戳信息。IEEE 1588時鐘同步實現過程如圖4所示。
評論