美國國家半導(dǎo)體的DP83640精密PHYTER?實(shí)現(xiàn)了IEEE 1588精密時間協(xié)議(PTP)的時鐘關(guān)鍵部分,允許高精度 IEEE 1588節(jié)點(diǎn)實(shí)現(xiàn)。當(dāng)使用包含IEEE1588功能器件、邊 界時鐘和透明時鐘的網(wǎng)絡(luò)時,利用非常簡單的時鐘伺服算法來確定速率調(diào)整和時間校正,可以獲得非常高的精度。不需 要復(fù)雜處理,只需要對協(xié)議測量進(jìn)行簡單平均或?yàn)V波即可。 當(dāng)網(wǎng)路由不具有IEEE 1588能力的器件構(gòu)成時,包延時偏差 (PDV)就很重要。簡單時鐘伺服不會提供很高精度的同 步。
本文描述了一種同步方法,它可以為較大PDV系統(tǒng)帶 來更高的同步精度。這里描述的方法試圖檢測最小延時,或 “幸運(yùn)包”。這個方法還利用了DP83640時鐘控制機(jī)理來獨(dú) 立控制時鐘速率和時間校正,從而將時鐘時間精度內(nèi)的過沖 和擺動降低到最小。
2.0 背景
IEEE1588精確時間協(xié)議給從機(jī)提供了基本信息,用以確 定相對于最高級主時鐘的頻率以及時間偏差?;舅惴òㄊ褂酶髯缘耐胶脱訒r請求消息來測量主機(jī)到從機(jī)之間和從 機(jī)到主機(jī)的路徑延時。 圖1顯示了最基本的IEEE 1588的時序圖。
主機(jī)到從機(jī)和從機(jī)到主機(jī)的延時為:
MSdelay = t2 - t1
SMdelay = t4 –t3
單向延時或稱為平均路徑延時正是這兩個延時的平均值
MeanPathDelay = (MSdelay + SMdelay)/2
理想情況下,時間偏移為:
offset_from_master = MSdelay – meanPathDelay
在包含支持IEEE-1588網(wǎng)絡(luò)元件(橋、開關(guān)、路由器)的網(wǎng)絡(luò)中,包延時偏差基本上可以忽略。在邊界時鐘器件中,同步時鐘在網(wǎng)絡(luò)元件上得以保持,它與上游主機(jī)同步時間和速率,并充當(dāng)下游器件的主機(jī)。在透明時鐘器件中,因?yàn)镻TP報(bào)文要經(jīng)過這個器件,所以通過測量其停留時間來校正包延時偏差。
在無1588能力的網(wǎng)絡(luò)中不做補(bǔ)償,導(dǎo)致包延時變量大概 是幾十或幾百微妙的數(shù)量級。這些延時變得非常明顯,使得 單一測量極度不正確。
在使用只有簡單平均和濾波的基本算法的單開關(guān)條件 下,得到了圖2在80%流量條件下的MTIE(最大時間間隔誤差)測試波形。很容易看到,這種方法提供了相對較差的同 步,其誤差達(dá)到100ms之大。
2.1 建議算法
在無1588能力元件的網(wǎng)絡(luò)中,包延時可能在每個器件 的最小物理延時和通過每個器件的最大延時總和的范圍內(nèi)變化。實(shí)踐中,每個設(shè)備經(jīng)常會有最小傳輸延時,因此主機(jī)到 從機(jī)產(chǎn)生最小的總包延時?;静僮魇菄L試檢測最小延時,或者“幸運(yùn)延時”,利用這些包的結(jié)果進(jìn)行速率和時間校 正。算法基本上可分為三級:平均路徑延時測量、速率校正 和時間校正。
2.1.1 平均路徑延時測量
在大多數(shù)網(wǎng)絡(luò)中,最小路徑延時是相對恒定的值。再 次配置網(wǎng)絡(luò)能夠引起步長變化,但是這種配置并不是經(jīng)常性的。因此有可能采用長期跟蹤最小環(huán)回延時(即全部的同步 延時請求計(jì)算)的方式來檢測最小平均路徑。這種方法保持最后N個平均路徑延時測量記錄,并從中找到最小值:
Min_meanPathDelay(n) = min(meanPathDelay[n+1-N:n]
其中,Min_meanPathDelay(n)為第n次測量記錄中保留的N個數(shù)據(jù)中的最小值。
進(jìn)行速率校正和時間校正時確定最小平均路徑是關(guān)鍵。
2.1.2 速率校正
速率校正通過測量跟隨的同步周期并測量每個消息從 主機(jī)開始與到達(dá)從機(jī)之間的差異進(jìn)行。這給出了從機(jī)頻率相對于主機(jī)頻率的一個基本比值并可以用來校正頻率差。因?yàn)?包延時偏差可能很明顯,這可能使任何單一的速率測量有很 大的不精確性。
例如,如果同步周期每秒8個同步,誤差在 125ms內(nèi)可能是100us或者接近1000ppm。如果算法是平均所有速率測量,也許需要成百上千秒來測量速率以得到合理 的估算。使用低廉的振蕩器時會發(fā)生短期頻率變化,平均時間較長會導(dǎo)致不能對這種頻率變化進(jìn)行控制。 可替代的方法是,建議的算法利用平均路徑延時測量來檢測短時等待包時,只使用這些包檢測對主機(jī)的頻率偏移。
如果包滿足一個好的最小環(huán)回延時要求,通過比較上一個 “好包”時間來測量速率。*估“好包”時,需要在質(zhì)量和數(shù)量上進(jìn)行權(quán)衡。如果質(zhì)量過于嚴(yán)格,就可能無法獲得足夠 的信息來跟蹤頻率變化。但如果不夠嚴(yán)格,速率計(jì)算結(jié)果中 可能包含過量的偏差。
圖3表明用于決定速率的同步消息之間的最基本的關(guān)系。
從這個圖中,速率比值為
rate_ratio(n) = (T2(n) – T2) / (T1(n) –T1)
另外,為準(zhǔn)備另一個測量,需要設(shè)置:
T1=T1(n),T2=T2(n)
由于測量中存在誤差,仍然需要一些平均或?yàn)V波測量。
為了簡化,使用指數(shù)移動平均或平滑函數(shù)來跟蹤速率。這個等式為:
rate_avg(n) = Rate_avg(n-1)
+α(rate_ratio(n) – rate_avg(n-1))
α的典型值通常設(shè)為0.1,但是在某些諸如提高或降低速率的延長周期場合,這個值可能會有所增加。
2.1.3 時間校正
確定時間偏移的典型方法是使用同步消息來確定對主機(jī) 的偏差。常使用平均或?yàn)V波的方式來平滑連接,并避免每次測量的過量校正。對于時間校正來說,利用兩個不同的機(jī)制 來檢測和校正時間偏差。
第一個機(jī)制的基本想法是尋找最小延時。基本算法是在 最近的延時中檢測最小的主機(jī)到從機(jī)的延時。為防止過量校正,也對時間校正進(jìn)行了限制。這種算法依賴于大量的同步 消息,比IEEE-1588網(wǎng)絡(luò)本身需要的同步報(bào)文更多。另外,在延時請求測量之后,算法可能使用主機(jī)到從機(jī)延時或從機(jī) 到主機(jī)延時中產(chǎn)生更小偏差的一個延時。在一個方向的流量變得擁堵的情況下,另一個方向可以提供更精確的時間偏差 的測量。這個方法基于它擁有的最好信息而在每個周期都進(jìn)行校正。如果沒有收到真實(shí)的最小延時消息報(bào)文,這將導(dǎo)致 不適當(dāng)?shù)男U?。原因是算法不能確定測量誤差是由時間偏差 還是由包延時偏差引起的。
第二個時間校正機(jī)制是嘗試只使用延時來進(jìn)行校正,前 提是這些延時已經(jīng)確定為真實(shí)最小延時包。它有助于避免對時間值的無效校正。這個機(jī)制的基本想法是使用同步和延時 請求來進(jìn)行時間校正。對于同步消息,如果主機(jī)到從機(jī)延時小于最小平均路徑延時,測量結(jié)果就顯示至少有一個主機(jī)到 從機(jī)延時減去最小平均路徑延時的時間偏差。這種情況下,時間校正是基于偏差測量進(jìn)行的。如果主機(jī)到從機(jī)的延時高 于最小平均路徑延時,無法知道誤差是由時間偏差引起的還是包延時偏差引起的,所以不會做校正。對于延時請求消息 也相似,如果從機(jī)到主機(jī)的延時小于最小平均路徑延時,測量結(jié)果就顯示有至少為平均路徑延時減去從機(jī)到主機(jī)延時的 時間偏差發(fā)生。注意,這里檢測到的時間偏差是正的,而主機(jī)到從機(jī)延時測量中的結(jié)果是負(fù)的。
兩個方法都是通過調(diào)節(jié)一段時間內(nèi)的精準(zhǔn)時間協(xié)議的時 鐘速率來進(jìn)行時間校正。為了避免速率的大波動,每一個校正都限制幅值。這將有助于降低由于時間偏移的快速校正而 引起的時間間隔誤差。在第二個機(jī)理中通過保持時間誤差值進(jìn)行處理。當(dāng)因接收到的同步或延時請求引起的新誤差計(jì)算 出來時,如果這個新誤差代表了一個更大的偏差,時間誤差就更新為新值。否則,時間誤差保持不變。基于時間誤差, 只能進(jìn)行有限的校正并從時間誤差中去除。因此,在完成校正之前,偏移測量可能進(jìn)行多次校正。
第二個機(jī)理很少有無效的校正,但是呈現(xiàn)出更長的無校 正周期;基于速率校正誤差,很可能會出現(xiàn)漂移。盡管第二個機(jī)理在重流量和多開關(guān)的條件下顯得更好,但兩者的總體 結(jié)果相似。由于第二個機(jī)理產(chǎn)生更好的結(jié)果,結(jié)論部分詳述 這些結(jié)果。