IEEE 1588協(xié)議簡單理解
? IEEE 1588 是一個精密時間協(xié)議 (PTP)竭钝,用于同步計算機網(wǎng)絡(luò)中的時鐘。 在局域網(wǎng)中雹洗,它能將時鐘精確度控制在亞微秒范圍內(nèi)香罐,使其適于測量和控制系統(tǒng)。 IEEE 1588 標準為時鐘分配定義了一個主從式架構(gòu)时肿,由一個或多個網(wǎng)段及一個或多個時鐘組成庇茫。
? TSN 網(wǎng)絡(luò)中時間同步協(xié)議使用 IEEE 802.1AS 協(xié)議,它基于 IEEE 1588 協(xié)議進行精簡和修改螃成,也稱為 gPTP 協(xié)議旦签。
? IEEE 1588 協(xié)議簡稱精確時鐘協(xié)議 PTP(Precision Timing Protocol),它的全稱是“網(wǎng)絡(luò)測量和控制系統(tǒng)的精密時鐘同步協(xié)議標準”(IEEE 1588 Precision Clock Synchronization Protocol)寸宏。其工作的基本原理宁炫,是通過主從節(jié)點之間進行同步數(shù)據(jù)幀的發(fā)送,記錄數(shù)據(jù)幀的發(fā)送時間和接收時間信息進行击吱,并且將該時間信息添加到該數(shù)據(jù)幀中淋淀。從節(jié)點獲取這些時間信息,并計算從節(jié)點本地時鐘與主時鐘的時間偏差和網(wǎng)絡(luò)節(jié)點之間的傳輸延時,對本地時鐘進行糾正朵纷,使之與主節(jié)點時鐘同步炭臭。一個 PTP 網(wǎng)絡(luò)只能存在一個主時鐘。
? PTP 協(xié)議主要分為兩大部分來實現(xiàn)時鐘同步功能:
? 1袍辞、建立同步體系:
? 協(xié)議使用最佳主時鐘算法(Best Master Clock Algorithm鞋仍,BMCA),通過選取主時鐘搅吁,建立主從拓撲關(guān)系威创,進而在整個 PTP 網(wǎng)絡(luò)中建立起同步體系。
? 2谎懦、同步本地時鐘:
? 協(xié)議使用本地時鐘同步算法(Local Clock Synchronization Algorithm肚豺,LCS),通過 PTP 數(shù)據(jù)報文在網(wǎng)絡(luò)主從節(jié)點之間的交換界拦,計算各從節(jié)點本地時鐘與主時鐘間的時間偏差吸申,調(diào)整本地時鐘,使之與主時鐘同步享甸。
IEEE 1588v1
? 整個 PTP 網(wǎng)絡(luò)內(nèi)的時鐘可按照其上 PTP 通信端口的數(shù)目來劃分成普通時鐘(Ordinary Clock截碴,OC)與邊界時鐘(Boundary Clock,BC):普通時鐘只存在一個蛉威,而邊界時鐘則存在多個日丹。一般在確定性不高的網(wǎng)絡(luò)節(jié)點處使用邊界時鐘,例如交換機或者路由器一般用作邊界時鐘蚯嫌,如下圖所示哲虾。在每個端口上,PTP 通信都是獨立進行的齐帚。
? 1妒牙、邊界時鐘:
? 邊界時鐘上只允許存在一個從端口,與上級節(jié)點的主端口通信对妄,將其本地時鐘與級主端口進行同步。其余端口為主端口敢朱,與下游節(jié)點的從端口進行通信剪菱。邊界時鐘可以連接不同的網(wǎng)絡(luò)協(xié)議。
? 2拴签、同步體系建立流程:
? (1)初始狀態(tài)孝常,各個節(jié)點端口會在指定的時間內(nèi)偵聽網(wǎng)絡(luò)中的 Sync 數(shù)據(jù)幀; 若接收到 Sync 數(shù)據(jù)幀蚓哩,節(jié)點端口將根據(jù)最佳主時鐘算法決定端口狀態(tài)构灸。若沒有收到 Sync 數(shù)據(jù)幀,該節(jié)點狀態(tài)變更為 Pre_Master岸梨,并將自己假定為主時鐘節(jié)點喜颁。此時節(jié)點端口狀態(tài)表現(xiàn)為主時鐘稠氮,但是并不發(fā)送 Sync 幀。
? (2)端口狀態(tài)在一定時間內(nèi)保持 Pre_Master:
若在端口指定時間內(nèi)接收到 Sync 數(shù)據(jù)幀半开,則該端口狀態(tài)由最佳主時鐘算法決定隔披。
若判定端口為主時鐘,則將周期性地發(fā)送 Sync 幀寂拆;若判定為從時鐘奢米,則接受 Sync 幀,并計算偏差纠永,糾正本地時鐘鬓长。
? 若在該時間段內(nèi)端口沒有收到 Sync 數(shù)據(jù)幀,則將狀態(tài)變更為主時鐘尝江,并且開始定時發(fā)送 Sync 數(shù)據(jù)幀涉波。
? (3)主時鐘和從時鐘的狀態(tài)隨著時鐘性能與運行狀態(tài)的變化而變化。下圖展示了 BMCA 中狀態(tài)轉(zhuǎn)移茂装。
? 3怠蹂、時間同步建立流程:
? 如下圖PTP同步原理
? 如圖所示,Master為網(wǎng)路中的同步時鐘源少态,可以認為其與UTC或者GPS時無限接近城侧。Slave為網(wǎng)絡(luò)中需要被同步設(shè)備。假設(shè)從Master到Slave的路徑符合對稱路徑彼妻,那么路徑上的延時我們設(shè)Delay嫌佑,然后設(shè)備Master和設(shè)備Slave之間待同步的時間差值為Offset,即Slave比Master在同一時刻慢Offset侨歉。
? 可以算出
? Slave設(shè)備根據(jù)算出的Offset即可以進行本地時鐘校準屋摇。但是1588V1協(xié)議依賴于鏈路的對稱性,即Master到Slave與Slave到Master時延一致幽邓,這在實際網(wǎng)絡(luò)狀況下很難滿足炮温,故需要額外的不對稱算法進行鏈路延時差計算和補償校準。
IEEE 1588v2
? IEEE1588V2在IEEE1588V1版本上做了改進和擴展牵舵。主要包括:
? 1.新增點到點路徑延時測量的獨立消息模式柒啤。
端口 A 與端口 B 間的路徑延遲時間 Delay 為
? 在 PTPv1 中,平均路徑延遲測量時通過 Sync 幀與 Delay_Req 幀配合使用的畸颅,但是在 PTPv2 中卻不需要 Sync 幀的參與担巩,僅通過 PDelay_Req 數(shù)據(jù)幀系列來進行測量。這是一個獨立的延遲測量過程没炒,不依賴 Sync 幀和同步體系建立的參與涛癌,使得測量精度有所提高,并且可以經(jīng)過多次測量求得平均值得到更為準確的路徑延遲。另一方面拳话,如果網(wǎng)絡(luò)中的同步體系發(fā)生改變先匪,這時不需要重新計算該節(jié)點間的路徑延遲,直接使用之前已測得的延遲數(shù)據(jù)假颇,大大增強了協(xié)議執(zhí)行的效率胚鸯,使得協(xié)議更為方便靈活。在PTPv2 中笨鸡,利用 PDelay_req 數(shù)據(jù)幀系列已成為主要的測量路徑延遲方法姜钳。
? 2、新增透明時鐘模型
? 在 PTPv1 中形耗,網(wǎng)絡(luò)中間節(jié)點均采用邊界時鐘模型哥桥。與網(wǎng)絡(luò)中唯一的主時鐘,即一個普通時鐘連接的邊界時鐘激涤,其上唯一的從端口接收主節(jié)點發(fā)送的同步數(shù)據(jù)幀拟糕,與主時鐘實現(xiàn)同步,其余的主端口和與之相連的其他邊界時鐘發(fā)送同步數(shù)據(jù)幀倦踢,最后同步到網(wǎng)絡(luò)邊緣的普通時鐘送滞,這樣便實現(xiàn)了整個網(wǎng)絡(luò)的時間同步。這種方法雖然可行辱挥,但是由于這種方式是逐級同步犁嗅,所以距離主時鐘越遠的節(jié)點,同步精度越低晤碘。
? 當網(wǎng)絡(luò)中的一些節(jié)點不需要進行時鐘同步或者不具備同步功能時褂微,便可采用透明時鐘模型。透明時鐘不像 BC/OC 模式那樣园爷,需要每個節(jié)點都與主時鐘進行同步宠蚂,它的端口只對協(xié)議數(shù)據(jù)幀進行轉(zhuǎn)發(fā),并將計算出的數(shù)據(jù)幀滯留時間添加在校正域中童社。這種方式將 PTP 數(shù)據(jù)幀的處理變得更為簡單求厕,降低了網(wǎng)絡(luò)中 PTP 協(xié)議的實施難度,同時提高了各從節(jié)點的同步精度扰楼。
? 透明時鐘有模型兩種:端對端透明時鐘甘改,和點對點透明時鐘。
? (1)端對端(E2E)透明時鐘
? E2E 透明時鐘對網(wǎng)絡(luò)中普通數(shù)據(jù)幀不做任何處理灭抑,僅進行轉(zhuǎn)達讓其正常通過。但是對于 PTP 事件數(shù)據(jù)幀抵代,則將他們從接收端口到發(fā)送端口間的駐留延遲時間累加到數(shù)據(jù)幀中的修正域腾节,用以彌補 PTP 數(shù)據(jù)幀在經(jīng)過其自身所帶來的延遲誤差。
? (2)點對點(P2P)透明時鐘
? 點對點(P2P)透明時鐘只轉(zhuǎn)發(fā)特定的 PTP 報文,包括 Sync 幀案腺、Follo_Up 幀和Announce 幀等庆冕。并且會采用 Pdelay_Req 數(shù)據(jù)幀系列計算每個端口與所連接的端口間的路徑延遲時間,再與端口間延遲時間合并添加到時間修正域劈榨,來補償數(shù)據(jù)幀從源端口到點對點透明時鐘出端口的時間延遲访递。
? 3、增加單步時鐘模型
? 單步時鐘模型解決了 Follow_Up 幀與 Sync 幀匹配問題同辣。PTP 協(xié)議基本的同步過程采用雙步模式拷姿,即主時鐘節(jié)點發(fā)送 Sync 幀,和帶有 Sync 幀發(fā)送時間的Follow_Up幀旱函。這種方式雖然能提高 Sync 幀時間戳標記的精度响巢,提高同步效果,但是在網(wǎng)絡(luò)負載較大的情況下棒妨,數(shù)據(jù)幀很有可能發(fā)生丟失或者阻塞踪古,造成兩種數(shù)據(jù)幀的匹配出現(xiàn)差錯。
? 在 PTP 數(shù)據(jù)幀中設(shè)置一個標志券腔,來使用單步模式伏穆,將 Sync 幀的發(fā)送時間與數(shù)據(jù)幀中的時間標簽的差值作為傳輸延遲,并將其累加到修正域中纷纫。這樣主時鐘便通過單獨的 Sync 幀而不需要 Follow_Up 進行時間的同步校準工作枕扫。
? 單步模式可以減少網(wǎng)絡(luò)流量,提高網(wǎng)絡(luò)負載較大時同步的可靠性涛酗。單步模式需要額外的輔助硬件铡原,來幫助計算時間修正值并將其累加到校正域中,這對網(wǎng)絡(luò)的實時性有比較高的要求商叹。
BMCA
? BMCA燕刻,即最佳主時鐘算法,它選擇網(wǎng)絡(luò)中性能最佳的時鐘作為主時鐘剖笙,并以
此建立網(wǎng)絡(luò)拓撲卵洗,生成同步體系,進而實現(xiàn)時鐘同步功能弥咪。
? 最佳主時鐘的選取是通過Announce幀在網(wǎng)絡(luò)中各節(jié)點的傳輸过蹂,比較各個節(jié)點上的時鐘屬性(比如是否將時鐘指定為主或者從時鐘),用于標識精度的時鐘等級聚至,以及用于標識時鐘源類型的時鐘類型(比如銣鐘酷勺、銫鐘等),還有表示時鐘偏移扳躬、方差等的時鐘特性脆诉、時鐘地址以及時鐘端口號等特征來選擇最佳主時鐘甚亭,當其他時鐘特征都一樣是,協(xié)議會將端口號最小的節(jié)點時鐘作為主時鐘击胜。IEEE 1588協(xié)議會以主時鐘節(jié)點作為根節(jié)點形成樹形拓撲結(jié)構(gòu)亏狰,并且為避免生成回路,那些競爭失敗的節(jié)點端口偶摔,協(xié)議將他們定義為被動或者禁用狀態(tài)暇唾。