李曉珍,蘇建峰
(①中國科學院國家授時中心,陜西 西安 710600;②中國科學院研究生院,北京 100080 )
隨著網絡技術的快速發展和分布式系統的大規模應用,使得各個控制節點之間的時鐘同步變得越來越重要,因此對時鐘同步精度提出了更高的要求。現有的一些時鐘同步協議如NTP并不適用于分布式測控領域,它主要應用于較大規模系統的同步,精度一般只能達到毫秒級[1]。
針對局域網多播環境和更高的同步精度要求,2002年IEEE1588精密時鐘同步協議IEEE1588V1.0應運而生。為了解決V1.0中雙時鐘機制不能獨立執行、時間戳表示局限性、全球IP枯竭等問題,2008年頒布IEEE1588V2.0。V2.0比V1.0有較大的改進,下面主要對IEEE1588V2.0所引入的新技術進行分析。
一套 IEEE1588系統由許多設備(節點)組成,每個設備都有自己的時鐘系統,時鐘之間通過網絡相連,通過周期性地發布帶有時間戳的信息包,使各個節點的時鐘得到同步。
按照工作原理可以將 IEEE1588的時鐘分為兩類:普通時鐘(Ordinary Clock)和邊界時鐘(Boundary Clock)。只有一個PTP通信端口的時鐘是普通時鐘,有一個以上PTP通信端口的時鐘是邊界時鐘,每個PTP端口提供獨立的PTP通信。按照通信關系又可將時鐘分為主時鐘和從時鐘,理論上任何時鐘都能實現主時鐘和從時鐘的功能,但一個PTP子網內只能有一個主時鐘。主時鐘擔當時間發布者的角色,從時鐘擔當接收者的角色。
PTP采用主從(Master-Slve)模式,主要定義了四種多點傳送的時鐘報文類型:同步報文 Sync、跟隨報文Follow_Up、延遲請求報文 Delay_Req和延遲請求響應報文Delay_Resp,其實現原理如圖1所示。
在進行時鐘同步時,首先子網中的所有時鐘通過最佳主時鐘算法(BMC,Bestmaster Clock)確定自己的狀態,從而確定子網中的主時鐘[2]。整個系統中的最優時鐘為最高級時鐘(GMC,Grandmaster Clock),有著最好的穩定性、精確性、確定性等。

圖1 IEEE1588時鐘同步基本原理
同步過程分為兩個階段:偏移測量階段和延遲測量階段。
第一階段:偏移測量階段,修正主時鐘和從時鐘之間的時間偏差。主時鐘周期性(一般為2 s)地給從時鐘發送Sync報文,這個同步報文包括該報文離開主時鐘的時間估計值。主時鐘隨后發送Follow_Up報文,該報文攜帶Sync報文準確的發送時刻t1。從時鐘在收到Sync報文后記下報文的精確到達時間t2。根據t1和t2可計算出主時鐘和從時鐘之間的時間偏差(Offset),由于此時對同步報文的傳輸延時(Delay)未知,先假設為零[3]。
第二階段:延遲測量階段。從時鐘向主時鐘發送一個延遲請求Delay_Req報文,同時記錄該報文的實際發送時間t3。主時鐘記錄延遲請求報文到達的準確時間t4,然后在延遲請求響應報文Delay_Resp中把t4送回到從時鐘。根據t3和t4可計算出報文的傳輸延時 Delay,再次對本地時鐘進行調整。延遲測量是不規則進行的,其測量間隔時間為4~60 s之間的隨機值,這樣可以使網絡的負荷不會太大[3]。
假設報文由主時鐘到從時鐘所用的時間與報文由從時鐘到主時鐘所用的時間相同,則:

從式(1)和式(2)計算出主從時鐘之間的 Delay和Offset,并根據此調整從設備的本地時鐘,完成一次時間同步。

因為IEEE1588V2.0在IEEE1588V1.0的基礎上從同步原理、同步過程等方面作了改進,使得 V2.0不能向下兼容,所以V1.0和V2.0時鐘不能直接進行同步。下面比較兩個版本,主要介紹V2.0相對V1.0的一些重要改進。
V1.0提供延遲請求-響應機制,V2.0提供兩種機制,延遲請求—響應機制和點延時機制,用于測量一對端口的平均路徑延時[4]。與V1.0相比,增加了Pdelay_Req、Pdelay_Resp、Pdelay_Resp_Follow_Up、Announce和Signaling報文,如圖2所示。

圖2 點延時機制原理
點延時機制用于測量端口到端口的傳輸延時,如鏈路延時。此測量應在設備的所有端口中進行,包括被底層協議阻塞的端口。鏈路延時應獨立地在各個端口之間進行。在普通及邊界時鐘中,點延時機制應根據該端口是主時鐘還是從時鐘而獨立進行。
點延時機制操作步驟如下。
測量開始之后,端口A向被測端口B發送Pdelay_Req報文,記下發送時間t1,端口B在收到Pdelay_Req報文后記下接收時間t2。接著端口B發送Pdelay_Resp報文,記下發送時間t3,端口A在收到Pdelay_Resp報文后記下接收時間t4。端口 B之后將t3與t2的差值 Δt(Δ t=t3-t2)以Pdelay_Resp_Follow_Up報文的形式發送給端口A[2]。
從端口A到端口B的延時為:

從端口B到端口A的延時為:

假設從端口A到端口B的延時和從端口B到端口A的延時相等,即 tAB=tBA,則端口A與端口B之間的網絡延時t為:

由式(3)、式(4)、式(5)得:

線路延時主要由通信棧和物理網絡上傳輸的延時組成。NTP協議在應用層加入時間戳,由于通信棧軟件的執行過程中不確定性很大,使通信棧延時的抖動相對較大,對同步精度產生了較大的影響。PTP協議將時間戳下移到MAC層以下,PHY層以上的MII處,有效地提高了精度,如圖3所示[4]。

圖3 PTP時鐘同步模型(在MII處加入時間戳)
V1.0中時間戳的表示為:

Seconds表示時間戳的整秒部分,nanoseconds表示納秒部分,PTP協議的紀元是1970年1月1日0點0分0秒,只能表示到2106年。
V2.0中時間戳的表示為:

secondsField表示時間戳的整秒部分, nanosecondsField表示納秒部分, 納秒的表示范圍為0≤| nanosecondsField |≤109,并且,加入了一個新的數據類型——時間間隔數據類型[5]。

它是一個 64位有符號整型數,可以使時間分辨率達到納秒的 1/216,提高了同步精度。
大多數局域網的物理拓撲結構采用星形結構,當節點與節點通過邊界時鐘連接起來的時候,容易產生時間誤差的累積。為了更好的解決這個問題,在 V2.0中引入了透明時鐘模型。
透明時鐘模型分為兩種:端對端透明時鐘模型和點對點透明時鐘模型。這兩種模型都是讓通用報文正常通過,事件報文經過處理,將延遲時間累加到信息包的時間修正域中[6]。
端對端透明時鐘:事件報文從主時鐘發送到從時鐘的過程中,端對端透明時鐘接收端口到發送端口的延遲時間累加到時間修正域中。以同步報文為例,如圖4所示。

圖4 端對端透明時鐘同步報文的傳送
點對點透明時鐘:它是專門針對點延時機制而建立的,能夠自動測量每個端口與所連接端口間的平均網絡傳輸延遲時間。事件報文從主時鐘發送到從時鐘的過程中,除了將報文在透明時鐘內的滯留時間累加到修正域外,還將鏈路延時累加到修正域中。以同步報文為例,如圖5所示。
V1.0基于 IEEE802.3 標準支持 UDP/IPV4協議。V2.0在支持原有協議的基礎上,支持新的網絡協議,如UDP/IPV6、PROFINET、DeviceNet/ControlNet 等。
V1.0采用雙時鐘同步模型,即發送Sync之后要接著發送Follow_Up,Follow_Up包含Sync發送的精確時間。V2.0增加了單步時鐘模型,即在 Sync中直接包含了它本身發送的準確時間,不需要再發送一個跟隨報文。
V1.0不支持報文信息擴展,V2.0通過TLV支持報文的信息擴展[7]。
V2.0與V1.0相比,有了很大改進。提高了信息交換速率和同步精度,且具有較低的開銷,易于實現,V2.0將會逐漸取代V1.0。當然,V2.0中也存在一些尚待進一步研究的問題,如主時鐘容錯性能,振蕩器的穩定性對時鐘的影響等,相信今后會更加完善,會有功能更強大,精度更高的新版本被開發出來。
[1] IEEE Std 1588?-2002.IEEE Standard for a precision Clock Synchronization Protocol for Networked Measurement and Control Systems[S].
[2] 戴寶峰,崔少輝,常健.IEEE1588最佳主時鐘算法的分析與實現[J].儀表技術,2008(02):29-31,34.
[3] 趙紅,周春福,張春,等.IEEE1588在混合網絡中性能分析[J].通信技術,2010,43(10):89-91.
[4] IEEE Std 1588?-2008.IEEE Standard for a precision Clock Synchronization Protocol for Networked Measurement and Control Systems[S].
[5] 葉衛東,張潤東.IEEE 1588精密時鐘同步協議2.0版本淺析[J].測控技術,2010(02):1-4,15.
[6] John Eidson.IEEE1588 Version 2 Tutorial.[EB/OL].(2006-10-01)[2010-10-01].www.ieee802.org/1/files/.../as-garner-1588v2-summary-0908.pdf.
[7] 王璇,杜軍.CE/PTN中時鐘同步和實現的一種方法[J].通信技術,2009,42(02):88-90.