使用DP83640實(shí)現(xiàn)標(biāo)準(zhǔn)網(wǎng)絡(luò)IEEE1588的同步
1.0 簡(jiǎn)介
美國(guó)國(guó)家半導(dǎo)體的DP83640精密PHYTER?實(shí)現(xiàn)了IEEE 1588精密時(shí)間協(xié)議(PTP)的時(shí)鐘關(guān)鍵部分,允許高精度 IEEE 1588節(jié)點(diǎn)實(shí)現(xiàn)。當(dāng)使用包含IEEE1588功能器件、邊界時(shí)鐘和透明時(shí)鐘的網(wǎng)絡(luò)時(shí),利用非常簡(jiǎn)單的時(shí)鐘伺服算法 來(lái)確定速率調(diào)整和時(shí)間校正,可以獲得非常高的精度。不需 要復(fù)雜處理,只需要對(duì)協(xié)議測(cè)量進(jìn)行簡(jiǎn)單平均或?yàn)V波即可。 當(dāng)網(wǎng)路由不具有IEEE 1588能力的器件構(gòu)成時(shí),包延時(shí)偏差 (PDV)就很重要。簡(jiǎn)單時(shí)鐘伺服不會(huì)提供很高精度的同 步。
本文描述了一種同步方法,它可以為較大PDV系統(tǒng)帶 來(lái)更高的同步精度。這里描述的方法試圖檢測(cè)最小延時(shí),或 “幸運(yùn)包”。這個(gè)方法還利用了DP83640時(shí)鐘控制機(jī)理來(lái)獨(dú) 立控制時(shí)鐘速率和時(shí)間校正,從而將時(shí)鐘時(shí)間精度內(nèi)的過(guò)沖 和擺動(dòng)降低到最小。
2.0 背景
IEEE1588精確時(shí)間協(xié)議給從機(jī)提供了基本信息,用以確 定相對(duì)于最高級(jí)主時(shí)鐘的頻率以及時(shí)間偏差。基本算法包括 使用各自的同步和延時(shí)請(qǐng)求消息來(lái)測(cè)量主機(jī)到從機(jī)之間和從 機(jī)到主機(jī)的路徑延時(shí)。 圖1顯示了最基本的IEEE 1588的時(shí)序圖。
主機(jī)到從機(jī)和從機(jī)到主機(jī)的延時(shí)為:
MSdelay = t2 - t1
SMdelay = t4 –t3
單向延時(shí)或稱(chēng)為平均路徑延時(shí)正是這兩個(gè)延時(shí)的平均值
MeanPathDelay = (MSdelay + SMdelay)/2
理想情況下,時(shí)間偏移為:
offset_from_master = MSdelay – meanPathDelay
在包含支持IEEE-1588網(wǎng)絡(luò)元件(橋、開(kāi)關(guān)、路由器)的網(wǎng)絡(luò)中,包延時(shí)偏差基本上可以忽略。在邊界時(shí)鐘器件中,同步時(shí)鐘在網(wǎng)絡(luò)元件上得以保持,它與上游主機(jī)同步時(shí)間和速率,并充當(dāng)下游器件的主機(jī)。在透明時(shí)鐘器件中,因?yàn)镻TP報(bào)文要經(jīng)過(guò)這個(gè)器件,所以通過(guò)測(cè)量其停留時(shí)間來(lái)校 正包延時(shí)偏差。
在無(wú)1588能力的網(wǎng)絡(luò)中不做補(bǔ)償,導(dǎo)致包延時(shí)變量大概 是幾十或幾百微妙的數(shù)量級(jí)。這些延時(shí)變得非常明顯,使得 單一測(cè)量極度不正確。
在使用只有簡(jiǎn)單平均和濾波的基本算法的單開(kāi)關(guān)條件 下,得到了圖2在80%流量條件下的MTIE(最大時(shí)間間隔誤差)測(cè)試波形。很容易看到,這種方法提供了相對(duì)較差的同 步,其誤差達(dá)到100ms之大。
2.1 建議算法
在無(wú)1588能力元件的網(wǎng)絡(luò)中,包延時(shí)可能在每個(gè)器件 的最小物理延時(shí)和通過(guò)每個(gè)器件的最大延時(shí)總和的范圍內(nèi)變 化。實(shí)踐中,每個(gè)設(shè)備經(jīng)常會(huì)有最小傳輸延時(shí),因此主機(jī)到 從機(jī)產(chǎn)生最小的總包延時(shí)?;静僮魇菄L試檢測(cè)最小延時(shí), 或者“幸運(yùn)延時(shí)”,利用這些包的結(jié)果進(jìn)行速率和時(shí)間校 正。算法基本上可分為三級(jí):平均路徑延時(shí)測(cè)量、速率校正 和時(shí)間校正。
2.1.1 平均路徑延時(shí)測(cè)量
在大多數(shù)網(wǎng)絡(luò)中,最小路徑延時(shí)是相對(duì)恒定的值。再 次配置網(wǎng)絡(luò)能夠引起步長(zhǎng)變化,但是這種配置并不是經(jīng)常性 的。因此有可能采用長(zhǎng)期跟蹤最小環(huán)回延時(shí)(即全部的同步 延時(shí)請(qǐng)求計(jì)算)的方式來(lái)檢測(cè)最小平均路徑。這種方法保持 最后N個(gè)平均路徑延時(shí)測(cè)量記錄,并從中找到最小值:
Min_meanPathDelay(n) = min(meanPathDelay[n+1-N:n]
其中,Min_meanPathDelay(n)為第n次測(cè)量記錄中保留的N個(gè)數(shù)據(jù)中的最小值。
進(jìn)行速率校正和時(shí)間校正時(shí)確定最小平均路徑是關(guān)鍵。
[!--empirenews.page--]2.1.2 速率校正
速率校正通過(guò)測(cè)量跟隨的同步周期并測(cè)量每個(gè)消息從 主機(jī)開(kāi)始與到達(dá)從機(jī)之間的差異進(jìn)行。這給出了從機(jī)頻率相 對(duì)于主機(jī)頻率的一個(gè)基本比值并可以用來(lái)校正頻率差。因?yàn)?包延時(shí)偏差可能很明顯,這可能使任何單一的速率測(cè)量有很 大的不精確性。
例如,如果同步周期每秒8個(gè)同步,誤差在 125ms內(nèi)可能是100us或者接近1000ppm。如果算法是平均 所有速率測(cè)量,也許需要成百上千秒來(lái)測(cè)量速率以得到合理 的估算。使用低廉的振蕩器時(shí)會(huì)發(fā)生短期頻率變化,平均時(shí) 間較長(zhǎng)會(huì)導(dǎo)致不能對(duì)這種頻率變化進(jìn)行控制。 可替代的方法是,建議的算法利用平均路徑延時(shí)測(cè)量來(lái) 檢測(cè)短時(shí)等待包時(shí),只使用這些包檢測(cè)對(duì)主機(jī)的頻率偏移。
如果包滿足一個(gè)好的最小環(huán)回延時(shí)要求,通過(guò)比較上一個(gè) “好包”時(shí)間來(lái)測(cè)量速率。*估“好包”時(shí),需要在質(zhì)量和 數(shù)量上進(jìn)行權(quán)衡。如果質(zhì)量過(guò)于嚴(yán)格,就可能無(wú)法獲得足夠 的信息來(lái)跟蹤頻率變化。但如果不夠嚴(yán)格,速率計(jì)算結(jié)果中 可能包含過(guò)量的偏差。
圖3表明用于決定速率的同步消息之間的最基本的關(guān)系。
從這個(gè)圖中,速率比值為
rate_ratio(n) = (T2(n) – T2) / (T1(n) –T1)
另外,為準(zhǔn)備另一個(gè)測(cè)量,需要設(shè)置:
T1=T1(n),T2=T2(n)
由于測(cè)量中存在誤差,仍然需要一些平均或?yàn)V波測(cè)量。
為了簡(jiǎn)化,使用指數(shù)移動(dòng)平均或平滑函數(shù)來(lái)跟蹤速率。這個(gè)等式為:
rate_avg(n) = Rate_avg(n-1)
+α(rate_ratio(n) – rate_avg(n-1))
α的典型值通常設(shè)為0.1,但是在某些諸如提高或降低速率的延長(zhǎng)周期場(chǎng)合,這個(gè)值可能會(huì)有所增加。
2.1.3 時(shí)間校正
確定時(shí)間偏移的典型方法是使用同步消息來(lái)確定對(duì)主機(jī) 的偏差。常使用平均或?yàn)V波的方式來(lái)平滑連接,并避免每次 測(cè)量的過(guò)量校正。對(duì)于時(shí)間校正來(lái)說(shuō),利用兩個(gè)不同的機(jī)制 來(lái)檢測(cè)和校正時(shí)間偏差。
第一個(gè)機(jī)制的基本想法是尋找最小延時(shí)?;舅惴ㄊ窃?最近的延時(shí)中檢測(cè)最小的主機(jī)到從機(jī)的延時(shí)。為防止過(guò)量校 正,也對(duì)時(shí)間校正進(jìn)行了限制。這種算法依賴(lài)于大量的同步 消息,比IEEE-1588網(wǎng)絡(luò)本身需要的同步報(bào)文更多。另外, 在延時(shí)請(qǐng)求測(cè)量之后,算法可能使用主機(jī)到從機(jī)延時(shí)或從機(jī) 到主機(jī)延時(shí)中產(chǎn)生更小偏差的一個(gè)延時(shí)。在一個(gè)方向的流量 變得擁堵的情況下,另一個(gè)方向可以提供更精確的時(shí)間偏差 的測(cè)量。這個(gè)方法基于它擁有的最好信息而在每個(gè)周期都進(jìn) 行校正。如果沒(méi)有收到真實(shí)的最小延時(shí)消息報(bào)文,這將導(dǎo)致 不適當(dāng)?shù)男U?。原因是算法不能確定測(cè)量誤差是由時(shí)間偏差 還是由包延時(shí)偏差引起的。
第二個(gè)時(shí)間校正機(jī)制是嘗試只使用延時(shí)來(lái)進(jìn)行校正,前 提是這些延時(shí)已經(jīng)確定為真實(shí)最小延時(shí)包。它有助于避免對(duì) 時(shí)間值的無(wú)效校正。這個(gè)機(jī)制的基本想法是使用同步和延時(shí) 請(qǐng)求來(lái)進(jìn)行時(shí)間校正。對(duì)于同步消息,如果主機(jī)到從機(jī)延時(shí) 小于最小平均路徑延時(shí),測(cè)量結(jié)果就顯示至少有一個(gè)主機(jī)到 從機(jī)延時(shí)減去最小平均路徑延時(shí)的時(shí)間偏差。這種情況下, 時(shí)間校正是基于偏差測(cè)量進(jìn)行的。如果主機(jī)到從機(jī)的延時(shí)高 于最小平均路徑延時(shí),無(wú)法知道誤差是由時(shí)間偏差引起的還 是包延時(shí)偏差引起的,所以不會(huì)做校正。對(duì)于延時(shí)請(qǐng)求消息 也相似,如果從機(jī)到主機(jī)的延時(shí)小于最小平均路徑延時(shí),測(cè) 量結(jié)果就顯示有至少為平均路徑延時(shí)減去從機(jī)到主機(jī)延時(shí)的 時(shí)間偏差發(fā)生。注意,這里檢測(cè)到的時(shí)間偏差是正的,而主 機(jī)到從機(jī)延時(shí)測(cè)量中的結(jié)果是負(fù)的。
兩個(gè)方法都是通過(guò)調(diào)節(jié)一段時(shí)間內(nèi)的精準(zhǔn)時(shí)間協(xié)議的時(shí) 鐘速率來(lái)進(jìn)行時(shí)間校正。為了避免速率的大波動(dòng),每一個(gè)校 正都限制幅值。這將有助于降低由于時(shí)間偏移的快速校正而 引起的時(shí)間間隔誤差。在第二個(gè)機(jī)理中通過(guò)保持時(shí)間誤差值 進(jìn)行處理。當(dāng)因接收到的同步或延時(shí)請(qǐng)求引起的新誤差計(jì)算 出來(lái)時(shí),如果這個(gè)新誤差代表了一個(gè)更大的偏差,時(shí)間誤差 就更新為新值。否則,時(shí)間誤差保持不變?;跁r(shí)間誤差, 只能進(jìn)行有限的校正并從時(shí)間誤差中去除。因此,在完成校 正之前,偏移測(cè)量可能進(jìn)行多次校正。
第二個(gè)機(jī)理很少有無(wú)效的校正,但是呈現(xiàn)出更長(zhǎng)的無(wú)校 正周期;基于速率校正誤差,很可能會(huì)出現(xiàn)漂移。盡管第二 個(gè)機(jī)理在重流量和多開(kāi)關(guān)的條件下顯得更好,但兩者的總體 結(jié)果相似。由于第二個(gè)機(jī)理產(chǎn)生更好的結(jié)果,結(jié)論部分詳述 這些結(jié)果。
3.0 測(cè)試平臺(tái)
測(cè)試時(shí)鐘伺服算法的*估平臺(tái)是基于FPGA的常規(guī)*估 平臺(tái),ALP(模擬測(cè)試發(fā)射平臺(tái))。ALP平臺(tái)包含一個(gè)小的 FPGA來(lái)實(shí)現(xiàn)MAC接口、數(shù)據(jù)包緩沖和與DP83640以太網(wǎng)物 理層設(shè)備進(jìn)行通訊的MDIO管理界面。ALP板子包括與PC主 機(jī)通訊的USB接口。在PC主機(jī)上,ALP軟件運(yùn)行PTP協(xié)議來(lái) 建立和分析包并控制PHY中的PTP硬件的操作。ALP平臺(tái)合 并了支持兩個(gè)獨(dú)立的PHY器件的邏輯和連接。[!--empirenews.page--]
測(cè)試平臺(tái)對(duì)包和控制的處理能力進(jìn)行了限制,它限制了 可以處理的同步周期的數(shù)量。每秒多達(dá)8個(gè)同步脈沖時(shí)同步工 作良好,但是超過(guò)這個(gè)值則不能維持速率。由于電信和其它 的應(yīng)用需要的速率是每秒大約100個(gè)同步消息,這個(gè)平臺(tái)不 能提供嵌入式平臺(tái)能夠提供的相同等級(jí)下的同步。DP83640 硬件沒(méi)有限制器件工作在更高同步速率環(huán)境中的器件。
這個(gè) 限制特殊針對(duì)*估平臺(tái)。 ALP平臺(tái)提供了一個(gè)GUI和支持Python腳本語(yǔ)言的腳本 機(jī)理。通過(guò)ALP GUI,在Python中運(yùn)行PTPv2協(xié)議和時(shí)鐘伺服算法可以得到全面測(cè)試。
對(duì)于最簡(jiǎn)單的測(cè)試,由單HP網(wǎng)絡(luò)設(shè)備開(kāi)關(guān)組成網(wǎng)絡(luò)。使 用獨(dú)立的ALP平臺(tái)并設(shè)置為想提供網(wǎng)絡(luò)的規(guī)定比例利用率的 開(kāi)關(guān)發(fā)送廣播流量來(lái)產(chǎn)生額外的流量。針對(duì)有主機(jī)、從機(jī)之 間三個(gè)開(kāi)關(guān)組成的網(wǎng)絡(luò)的測(cè)試也做過(guò)。
PTP主機(jī)使用一個(gè)OCXO作為參考時(shí)鐘源,PTP從機(jī)使 用的是一個(gè)廉價(jià)TCXO參考。
4.0 測(cè)試結(jié)果
建議算法通過(guò)流量負(fù)載達(dá)到80%以上的單開(kāi)關(guān)或者多開(kāi)關(guān)來(lái)測(cè)試性能。設(shè)定主機(jī)每秒發(fā)送8個(gè)同步消息,而從機(jī)相對(duì) 于每個(gè)同步消息,發(fā)送一個(gè)延時(shí)-響應(yīng)消息。流量負(fù)荷通過(guò)隨 機(jī)大小的廣播包來(lái)產(chǎn)生,變化內(nèi)部包間隔以產(chǎn)生特定流量。 流量通過(guò)測(cè)試網(wǎng)絡(luò)中的一個(gè)開(kāi)關(guān)的可用端口引入。時(shí)間誤差 數(shù)據(jù)采用DP83640 PTP主機(jī)的事件時(shí)間戳能力來(lái)捕獲并保存以備*估。除計(jì)算標(biāo)準(zhǔn)偏差外,在每個(gè)流量條件下,還產(chǎn)生 MTIE和TDEV(時(shí)間偏差)圖。測(cè)試持續(xù)時(shí)間最短為4小時(shí), 最長(zhǎng)為8小時(shí)。
4.1 單開(kāi)關(guān)結(jié)果
下圖顯示了單開(kāi)關(guān)在20%,50%和80%流量負(fù)載時(shí)的 MTIE,TDEV的結(jié)果。除了測(cè)試結(jié)果,測(cè)試圖形還顯示了通 信規(guī)格中的兩個(gè)屏蔽。這個(gè)結(jié)論很容易滿足G.823對(duì)于PDH 接口的要求,但不能完全滿足G.811 PRC要求。需要進(jìn)一步 優(yōu)化,尤其是提高同步速度,來(lái)滿足PRC要求。
4.2 多開(kāi)關(guān)測(cè)試
測(cè)試是在三個(gè)開(kāi)關(guān)網(wǎng)絡(luò)中完成的,三個(gè)開(kāi)關(guān)由一個(gè)DLink DES1105 5端口開(kāi)關(guān)、一個(gè)Linksys SD205 5端口開(kāi)關(guān)和一個(gè) HP網(wǎng)絡(luò)設(shè)備8000M組成。測(cè)試結(jié)果是在三個(gè)開(kāi)關(guān)20%,50% 的利用率,流量注入到第三個(gè)開(kāi)關(guān)的條件下得到的。如所期 望,這個(gè)結(jié)果不如單開(kāi)關(guān)好,但是仍然顯示出所示滿足規(guī)格 的潛力。如下圖形表明不同流量條件下的MTIE和TDEV。
4.3 其它測(cè)試結(jié)果
雖然沒(méi)有得到具體的結(jié)果,但是算法表現(xiàn)為對(duì)流量在0到 80%之間變化的良好響應(yīng)。如果流量超過(guò)80%,算法仍然需要精簡(jiǎn)以便處理明顯更少的最小延時(shí)包。
[!--empirenews.page--]5.0 其它機(jī)會(huì)
這個(gè)文檔描述了一種工作算法,但仍有很大可能在將來(lái) 的開(kāi)發(fā)中提高和測(cè)試這種算法。以下列出了一些可能: 增加同步速率:增加同步速率需要將平臺(tái)移到可以支持 更高包速率,可能達(dá)到100同步/秒或者更高這樣的平臺(tái)上。 這可能需要移到諸如飛思卡爾的MCF5234BCCKIT Coldfire 這樣的嵌入式平臺(tái)。
這樣做允許對(duì)算法進(jìn)行很多改進(jìn),例如 為每個(gè)速率和時(shí)鐘校正做許多延時(shí)測(cè)量等。 改善速率適應(yīng)性:一些最大誤差是由于算法在跟蹤本地 振蕩器頻率變換時(shí)的響應(yīng)緩慢造成的。跟蹤速率并且進(jìn)行調(diào) 整的改進(jìn)算法在整體結(jié)果上具有很大的提高。 更大的網(wǎng)絡(luò)上測(cè)試:具有更多實(shí)際流量條件的更大網(wǎng)絡(luò) 上進(jìn)行擴(kuò)展測(cè)試。
VLAN標(biāo)簽上測(cè)試:使能VLAN標(biāo)簽、允許基于VLAN優(yōu) 先級(jí)域,處理PTP包的IEEE802.1Q優(yōu)先級(jí)可以提高測(cè)試結(jié) 果。
6.0 結(jié)論
這個(gè)文檔描述了由無(wú)IEEE1588能力的器件組成的網(wǎng)絡(luò) 中,使用DP83640以太網(wǎng)物理層設(shè)備來(lái)同步時(shí)鐘的一種算 法。此算法雖然不能在所有條件下提供完整的解決方案,但 表明了這種解決方案的可行性。每秒8個(gè)同步消息條件下,系統(tǒng)可以準(zhǔn)確的在重負(fù)載單開(kāi)關(guān)中進(jìn)行同步。在更大的同步 消息速度下,期望這個(gè)算法在更大的網(wǎng)絡(luò)中有更高的精確等級(jí)。