?

基于NTP的ORBUS時間同步系統時鐘漂移研究

2020-08-27 07:38丁永紅
浙江水利水電學院學報 2020年4期
關鍵詞:偏移量服務端時鐘

丁永紅

(淮南聯合大學,安徽 淮南 232001)

在世界高精尖的軍事領域、航空航天領域、信息安全[1]以及物聯網[2]等應用中,網絡傳輸的確定性和精確性有非常高的要求。時間觸發機制網絡通信技術關鍵主要涉及全局系統時間同步與調度表的精確設計,其中全局系統時間同步最為關鍵?,F有的時間同步[3]方法有很多,各種時間同步方法會有不同的性能開銷、網絡開銷和時間同步精度[4],對不同的時間觸發網絡其性能效果的影響很大。本文主要研究基于NTP的ORBUS時間系統網絡時間同步中影響其時間同步精度的一個重要因素時鐘漂移。

1 NTP時間同步原理

NTP用于分布的時間服務器與客戶機之間同步,其定義了體系結構、算法、實體和協議,主要傾向于實現。即使是在多網關、高分散延遲和不可靠的英特網上,其通過特殊地設計能夠保持時間同步的準確性和魯棒性。服務環境包括實現模型和服務模型,實現模型基于多進程操作系統體系結構,服務模型基于可返回時間設計,這種設計只依靠測到的時鐘偏移量[5],而不需要可靠的消息傳遞。同步子網是一種自組織、主從層次結構,其同步路徑決定于最小加權生成樹,當多個原始時間服務器存在時,對選擇協議沒有要求。

NTP的通信方式是以C/S模式[6]進行??蛻舳税l送一個request請求數據包,服務端接收后回送一個respond應答數據包。兩個數據包都帶有發送時間戳t1、t3和接收時間戳t2、t4,在假設兩次交互過程中的時間延遲delay相等的情況下,根據這四個時間戳來確定客戶端和服務端之間的時間偏差offset和網絡延遲delay(見圖1)。

圖1 NTP協議的工作流程

客戶端在t1時刻發送查詢請求并記錄t1時間戳,服務端在t2時刻收到查詢請求并記錄t2時間戳,服務端在t3時刻回復時間信息并記錄t3時間戳,客戶端在t4時刻收到時間信息并記錄t4時間戳(t1、t4以客戶端的本機時間系統作為基準,t2、t3以服務端的本地時間系統為基準)。在不考慮客戶端和服務端時鐘漂移的情況下,可得通信信息在網絡上傳輸總時間為:Δ=(t4-t1)-(t3-t2)。如前所述在假定Request請求信息和Respond應答信息在網上傳輸時間相等時,則單程網絡時延delay為:

δ=[(t4-t1)-(t3-t2)]/2

(1)

時間偏差offset為:

θ=[(t2-t1)-(t4-t3)]/2

(2)

NTP本身提供了一個精確到納秒的同步時間協議機制。這個協議包括特定屬性的提供,估計本地和時間服務器的時鐘誤差,還包括原始參考源的數量。其中涉及的過濾算法有利于時鐘偏移實例的過濾,以及選擇算法選擇最優的若干個同步源。NTP的準確度依靠本地時鐘硬件的精度和設備及處理的延遲,還必須提供調整邏輯時鐘的時間及頻率的機制,在NTP協議中還描述了一個改進的本地時鐘設計。這個設計包括偏移快速定位、頻率補償以及過濾機制,即使在原始參考源丟失的情況下其能夠達到毫秒的準確度,但設計復雜,在ORBUS系統中不適用。本文為了調整本地邏輯時鐘與服務端時鐘速率一致,提出一種計數器調節機制。

2 基于NTP的ORBUS時間同步系統及其誤差分析

在基于NTP的ORBUS時間同步系統[7]中存在多處假設,包括時鐘穩定和網絡傳輸往返延遲相等,并且同步系統利用操作系統時間調用函數讀取時間也存在讀取誤差,基于NTP協議還引入了多種算法包括合并算法、時鐘過濾算法和時鐘選擇算法,由此衍生如下一系列的誤差。

2.1 時間戳誤差

用一隨機變量T表示時間戳,則:T=t+r+f×τ,其中τ為自時鐘讀數以來的時間間隔,t為讀取時鐘數。設ρ為最大讀數誤差,r為時鐘讀數誤差,則r[-ρ,0];設φ為最大頻率誤差,f為時鐘頻率誤差,f[-φ,φ]。假設時鐘讀數處理過程的其他計算不影響時鐘讀數過程的處理,則f滿足期望為零,方差為σ的高斯分布;r滿足[-ρ,0]的均勻分布。令f的概率密度為pf(t),r的概率密度為pr(t),則關于總的時間戳誤差其概率密度函數為這是一個杯狀曲線??紤]到頻率誤差f變化很慢,杯狀曲線的上下限為:

[min(r)+min(fτ),max(r)+max(fτ)]=
[-ρ-φτ,φτ],

所以有時間戳誤差:

ε≡[min(r)+fτ,max(r)+fτ]=[-ρ,0]+fτ

這里的時鐘頻率誤差f主要原因就是時鐘漂移。

2.2 測量誤差

客戶端A和服務器端B(見圖1),τs是服務端t2到t3的時間差,τc是客戶端t1到t4的時間差,各時間戳的記錄是通過高精度計時API獲得,精度達到微秒級,所以不考慮讀數誤差。根據式(2)時間偏移量offset為:θ=t2-(2×t1+τc-τs)/2,根據式(1)測量的全程時延delay為:δ=τc-τs。則τc和τs、時間戳T1和T2的誤差表示如下:

ετc=fA(T4-T1),ετs=fB(T3-T2),
ε1=[-ρA,0],ε2=[-ρB,0]

整個傳輸過程時延的最大誤差為:εδ=φA(T4-T1)+φB(T3-T2),這里由于是兩臺固定機器,所以可以認為頻率的誤差不變。對于時間偏移量offset誤差范圍可以表示為:

[min(ε2)-(2×max(ε1)+φA(T4-T1)+φB(T3-T2))/2,

max(ε2)-(2×min(ε1)+φA(T4-T1)-φB(T3-T2))/2]=[-ρB-(φA(T4-T1)+φB(T3-T2))/2,

(2×ρA+φA(T4-T1)+φB(T3-T2))/2]

如果ρ=max(ρA,ρB),得到時間偏差offset的誤差最大絕對值:

εθ≡ρ+(φA(T4-T1)+φB(T3-T2))/2

2.3 網絡誤差

在時間戳消息的網絡傳輸過程中,由于網絡環境中設備的不確定性,流量不穩定等原因,不能靜態地描述網絡時延delay,而且在這個過程中主要的誤差來自于網絡時延delay的隨機性,所以要使用測量時間戳計算而得到時延delay來描述時間偏移量offset的上下限,從而獲取偏移量offset的誤差。由前面所述有,其中a=T2-T1,b=T3-T4。假設θ0為客戶端和服務端機器時鐘真實時間偏移,x為兩機器時鐘的真實時延,有x+θ0=T2-T1≡a,因為一定有x≥0,即x=a-θ0≥0,所以θ0≤a,同樣道理有b≤θ0,故b≤θ0≤a。我們可以改寫為成b=(a+b)/2-(a-b)/2≤θ0≤(a+b)/2+(a-b)/2=a,由于δ=a-b,θ=(a+b)/2,所以有θ-δ/2≤θ0≤θ+δ/2。根據測量誤差分析這里的時延δ和偏移量θ都存在誤差,設εδ是時延誤差的最大值,εθ是時間偏移誤差的最大值,上面的不等式表示為:θ-εθ-(δ+εδ)/2≤θ0≤θ+εθ+(δ+εδ)/2。再設ε=εθ+εδ/2=ρ+φA(T4-T1)+φB(T3-T2),則有時鐘偏移量offset的誤差是[θ-δ/2-ε,θ+δ/2+ε]之間,此處ε與時鐘頻率誤差有關。

2.4 繼承誤差

基于NTP的時間同步中,同步網是一個分層的結構,每一同步層在時間同步時都會有誤差,客戶機同步原始時間服務器之間要通過多層多個時間服務器尋求同步,同步期間就會繼承各個層的誤差(見圖2)。

圖2 誤差積累

時間同步處理過程中的誤差是一個誤差積累的過程?;贜TP的ORBUS時間同步系統中,通過各層之間的消息傳遞可以計算出上層服務端和本地客戶端時鐘的全程時延δ、時間偏移量θ,同時在消息中還包含有上層服務端的根誤差E′、根時延Δ′;上層服務端E′=E+ρ+φτ,其中ρ是服務端的最大讀誤差,φτ是上層服務端上次消息到現在消息時間間隔的頻率偏移最大誤差,E是服務端繼承的上層的誤差。從服務端和本地客戶端的時間戳計算的濾波樣值均存在誤差εi=ρ+φ(T4-T1)。另外濾波算法的存在,多個濾波樣值間的接收存在時間間隔τi,將產生多個φτi的頻率漂移誤差。經過濾波器的過濾,得到濾波誤差εσ、全程時延δ以及時間偏移量θ,濾波后可以得到某個上層服務端的時間偏移量offset的誤差ε=εi+εσ。最后通過選擇算法獲取單一同步源,從而得到相對于根服務器的全程時延Δ、時間偏移量Θ以及相應的全程誤差E。從圖2可以看出E=ε+φτ+εξ+|Θ|+E′,其中ε=εi+εσ,φτ是最近時間段τ內由于時鐘頻率漂移造成的最大誤差,εξ是本同步系統所采用的選擇算法而產生的自身誤差。|Θ|是在設置本地時鐘時的初始誤差的絕對值,這里主要原因是為了保證網絡中機器的穩定性,只修改本地時鐘同步頻率或者是不修改本地時鐘而需要將此時的整個偏移量|Θ|也作為誤差考慮。

3 時鐘漂移及同步系統中時鐘漂移調節技術方案

3.1 時鐘漂移

在上述時間戳誤差、測量誤差、網絡誤差以及繼承誤差的分析中,我們發現所有的誤差都與機器的時鐘頻率誤差有關系,因此有必要對時鐘本身的這種不穩定因素加以研究,從而有效提高時間εi同步精度,減少誤差。這種時鐘的不穩定稱之為時鐘漂移。其受到多種因素的影響,包括構成時鐘晶振本身的材料不同,制造工藝不同,外界的環境溫度不同以及由晶振構成計時時鐘的電路設計各異等。也就是時鐘漂移是固定存在的,且在每個時鐘周期其值是固定的。

3.2 時鐘漂移調節技術方案

在圖3所示時間同步系統中,通常把時鐘模型[8]表示為C(t)=kx+b(k表示時鐘漂移快慢,x為單位時間,b為時鐘偏移),要達到時鐘同步通??紤]通過相關的機制來調整時鐘速率k和偏移量b使得不同的時鐘模型一致走時。

圖3 從時鐘計數調節后貼合主時鐘的效果圖

在基于NTP的ORBUS時間同步層次化結構系統中,通過過濾、選擇等算法得到一個周期的偏移量offset修正本地時鐘同步之后,可以認為客戶端時鐘與服務端時鐘達到一致。但也只能保證在修正的這個時刻,兩個時鐘完全同步。時鐘的漂移快慢仍然存在,在下一個修正周期到來之前,客戶端和服務端的時鐘之間的偏移會繼續增大,如圖3中所示未調節的從時鐘逐漸偏離主時鐘,這樣不能滿足某些時間觸發系統的要求。NTP協議提出一種鎖相環的方法控制本地時鐘的快慢,但此方法是基于硬件電路,過于復雜,不易實現。固此,研究一種調整系統計數的方法來修正本地時鐘,使得客戶端時鐘以周期a個單位時間接近服務端時鐘模型,以減少客戶端請求服務端時鐘同步周期還沒有到來之前由于時鐘漂移帶來的誤差(見圖4)。

圖4 主從時鐘調節程序流程圖

(1)對服務端主時鐘和客戶端從時鐘分別周期計數M_counter和C_counter;

(2)主從時鐘的相鄰周期的系統時鐘計數器作差,其中M_counter1中讀數為m1,以此類推,故分別記為m2-m1和c2-c1;

(3)在周期內由于主從時鐘快慢不一致,其計數差值也一定不相等,故計算(c2-c1)-(m2-m1),即周期內計數的差值,為了獲得調節從時鐘的條件,構造變量a=(m2-m1)/|((c2-c1)-(m2-m1))|。

(4)在和counter執行計數的同時,另外設立一個計數器adjust_counter,每當adjust_counter值達到構造變量a時,首先將adjust_counter清零,再分兩種情況對當前計數器counter操作:當從時鐘慢于主時鐘,從時鐘counter=counter+1,當比主時鐘快時,從時鐘counter=counter-1。

通過a個單位時間自動調節計數器計數的方法可以把由于時鐘漂移帶來的誤差有效減小,如圖3所示,其主要是在客戶端和服務端時鐘同步周期到來之前,及時讓客戶端時鐘先驗貼合服務端時鐘。為了驗證計數器調節技術可以減少誤差,實驗測試了基于NTP的無調節時間同步和基于計數器調節的時間同步,記錄時鐘偏移量并對其進行比較。測試同步10個小時,相同拓撲網絡,比較結果(見表1)。

表1 計數器調節同步實驗結果

從表1可知,在誤差積累分析中得到時鐘偏移量是誤差分析中主要誤差來源,調節后的時鐘偏移量明顯變小,故計數器調節技術改善時鐘頻率漂移從而有效減少誤差,使得基于NTP的ORBUS時間同步系統得到了更高的同步精度。

猜你喜歡
偏移量服務端時鐘
基于格網坐標轉換法的矢量數據脫密方法研究
別樣的“時鐘”
古代的時鐘
基于AutoLISP的有軌起重機非圓軌道動態仿真
新時期《移動Web服務端開發》課程教學改革的研究
卷煙硬度與卷接、包裝工序相關性分析
有趣的時鐘
以南北地震帶為例研究面向地震應急的宏觀震中與微觀震中偏移模型
時鐘會開“花”
摸清黑客套路防范木馬侵入
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合