石環環,毛 臻,葛成華,耿 琪
(中國電子科技集團公司第五十八研究所,江蘇無錫 214072)
時間敏感網絡(Time-Sensitive Network,TSN)[1]是IEEE 802.1 工作組中TSN 工作組開發的一套協議標準[2-3],該工作組在2011 年發布了IEEE 802.1AS 精確時間協議(general Precise Time Protocol,gPTP)[4],建立起TSN 時鐘同步標準,該標準通過在網絡中選取主時鐘,構建以主時鐘為根節點的時鐘同步生成樹來實現整個網絡的時鐘同步。
近年來,國內外專家學者對網絡及時鐘同步機制進行了大量的研究,文獻[5]對時間同步特性進行了梳理和介紹。文獻[6-7]介紹了同源時鐘及其同步在傳感器中的應用,文獻[8]介紹了一種基于FPGA 平臺實現時鐘同步的軟硬件協同設計方案。文獻[9-10]各提出一種提高時鐘同步可靠性的方法,并進行了仿真驗證。現有文獻對時鐘同步算法的研究及仿真較多,對其實際應用的介紹較少,分析時鐘同步的實現機制并給予驗證,對時間敏感網絡的實際落地具有重要的現實意義和應用價值。
時間敏感網絡起源于以太網音視頻橋接技術(Audio Video Bridge,AVB),其應用范圍現已從原來的音視頻橋接領域擴展到車載網絡、工業互聯網、航空電子網絡以及移動前傳網絡等各種對傳輸時間的穩定性要求比較高的網絡[11]。該標準定義了以太網數據傳輸的時間敏感機制,有效地解決了數據在以太網傳輸中的時序性、低延時和流量整形問題,同時又保持了100%向后兼容傳統以太網,從而為標準以太網增加了確定性和可靠性[12]。TSN 協議族包括時鐘同步、流量調度、網絡管理等標準,對于通信、工業控制等領域而言,所有的任務都是基于時間基準的,因此,精確時鐘同步是基礎的標準。
該文所述TSN交換機具有五個10 M/100 M/1 000 M自適應電口,單端口最大帶寬為1 Gbps,可通過自適應方式與對端設備協商端口速率及雙工模式,支持的時間敏感網絡基礎協議包括:IEEE 802.1AS Time Synchronization、IEEE 802.1Qbv Scheduled Traffic[13]、IEEE 802.1Qci Per-Stream Filtering and Policing[14]、IEEE 802.1Qbu Frame Preemption[15]、IEEE 802.1Qav Forwarding and Queuing Enhancements 等,其他協議的實現也在持續研發中。
時鐘同步技術旨在解決網絡系統中各節點物理或邏輯時鐘不一的問題。IEEE 802.1AS 協議要求在其定義的同步gPTP 域內每一個節點都是時間感知系統。時間感知系統有兩種,時間感知終端站和時間感知橋。其中,終端站節點只有一個端口(主或從端口)連入gPTP 域內,相當于IEEE 1588 協議(簡稱時鐘同步協議,Precision Time Protocol,PTP)中定義的普通時鐘。橋節點一般是交換機,有兩個以上端口連入gPTP 域,相當于1588 協議中的邊界時鐘或透明時鐘。
一個gPTP 域只需要也只允許有一個時間基準,即主時鐘。802.1AS 協議通過最佳主時鐘算法(Best Master Clock Algorithm,BMCA)選擇域內的主時鐘,同時以最佳主時鐘的時間為基準,通過報文傳遞時間信息給域內其他節點,各感知系統周期性地從接收到的報文中獲得時間戳、頻率比率等信息,根據點對點(peer to peer,p2p)的機制計算出主從時鐘的鏈路延遲和駐留延遲,并進行時延補償,從而計算出系統本地時鐘的時間,并進行時間偏差的校正,使域內各節點與最佳主時鐘的時間偏差始終保持在允許的誤差范圍內,從而達到整個gPTP 域內的時鐘同步[16]。
gPTP 協議是完全基于L2 層進行傳輸的,在開放系統互連參考模型(Open System Interconnect,OSI)中,L2 是MAC(Media Access Control)層,為了測量更精確的時間,必須精準地知道接收到一個MAC 幀的時間和發出一個MAC 幀的時間。
gPTP 消息由一個PTP 實例中的PTP 應用程序代碼發出,并由另一個PTP 實例中的PTP 應用程序代碼接收和處理。對于此類傳輸機制,PTP 事件消息中有一個特定點,稱為消息時間戳。時間戳是gPTP的核心機制。時鐘同步報文在進出支持gPTP 機制的端口時,會按照機制觸發對時間感知系統本地時鐘的采樣,得到一個時間戳。如圖1 所示,這個點可以在應用層中(圖1 的C 點),在內核或中斷服務例程中(圖1 的B 點),或在協議棧的物理層(Physical Layer,PHY) 中(圖1 的A 點)。一般來說,這個點越接近實際的網絡連接,誤差就越小,且如果通過軟件來獲取時間,進出終端,任務搶占的時間是不可測的。該文所述TSN 交換機在物理層中生成時間戳,即圖1 中的A 點。這種情況下,時間戳通過正常路徑之外的輔助路徑傳遞給PTP 代碼,隨后得到PTP 事件消息。為了確保時間戳與正確的PTP 消息相關聯,硬件輔助通常從PTP 事件消息中捕獲附加信息,隨時間戳一起傳遞給PTP 代碼。

圖1 時間戳生成模型
交換機使用LinuxPTP 軟件包進行精確時鐘協議的實施,并以此作為802.1AS 協議的具體外在表現。該軟件包包含用于時鐘同步的ptp4l 程序,可將硬件時鐘同步到主時鐘,TSN 交換機在此基礎上完成最佳主時鐘的選擇及時間同步樹的建立,并使用兩步法,運用點對點機制將主時鐘傳遞給網絡內的其他節點。系統運行流程如圖2 所示。包括以下幾個主要部分:

圖2 時鐘同步實現機制示意圖
1)初始化。系統上電后首先進行初始化工作,如將各端口開啟,啟用硬件時間戳等,為時鐘同步做準備。
2)判斷時鐘同步開關是否開啟。若AS 開關開啟,則繼續下面的流程,否則流程結束。
3)選擇最佳主時鐘。通過報文收發運行BMCA算法,根據節點的時鐘屬性選出最佳主時鐘節點,建立時鐘同步樹,同時各節點保存主時鐘信息。
4)時鐘同步。從時鐘根據主時鐘的sync 消息計算駐留時間,同時定期發送基于p2p 的Pdelay 消息,計算路徑延遲時間,并據此進行時延補償,修正自己的本地時鐘。
5)定期更新。對從時鐘節點,定期更新本地時鐘信息和主時鐘信息,同時,主時鐘周期性地發送Announce 消息報告自己的狀態,若其他從時鐘節點在一定時間內未收到,則認為主時鐘掉線,重新運行BMCA 算法選取主時鐘。
該文使用兩臺TSN 交換機來驗證時鐘同步功能,查看兩臺TSN 交換機分別做主時鐘的情況下,是否可以實現時鐘同步,同時檢驗同步報文及最佳主時鐘算法是否與協議一致。該文通過抓包驗證協議一致性,通過命令行(Command Line Interface,CLI)查看時鐘同步結果及BMCA 算法,通過從時鐘上的時延查看單跳時鐘同步精度,通過TSN 交換機WEB頁面查看主時鐘的時鐘屬性信息是否正確。
實驗拓撲圖如圖3 所示,TSN 交換機1 和2 的MAC 分別為8e:db:85:83:a4:8a 和2e:1e:ef:ee:d8:84,兩交換機的第5 口通過RJ45 接口的網線直連,計算機1 和2 分別為兩臺交換機的控制機,通過網線與控制口連接。

圖3 時鐘同步實驗拓撲圖
2.1.1 觸發條件
按照圖3 的網絡拓撲搭建環境,802.1AS 是總開關(以下簡稱“總開關”),第5 口的802.1AS 開關(以下簡稱“端口開關”)及AS 開關的關系如表1 所示,按照表2 設置TSN 交換機1(以下簡稱“交換機1”)和TSN 交換機2(以下簡稱“交換機2”)的AS 開關,查看兩交換機發出時鐘同步報文的觸發條件。

表1 時鐘同步開關關系

表2 AS開關設置
2.1.2 BMCA算法及同步精度
根據BMCA 算法,由圖4 的時鐘同步生成樹優先級向量確定最佳主時鐘和時間同步的方向。

圖4 時鐘同步生成樹優先級向量
其中,rootSystemIdentity 用于比較兩個時間感知系統,確定哪個更適合做根節點,stepsRemoved 表示從根節點到相應時間感知系統路徑中的鏈接數。priority1 和priority2 為時鐘同步的兩個優先級,在該文所述交換機中分別默認為246 和248,clockClass表示在成為最佳主時鐘時分配的同步時間的可追溯性,默認與priority1 取值相同,clockAccuracy 表示預期時間精度,offsetScaledLogVariance 是PTP 方差估計值的縮放偏移表示,PTP 方差表征了主時鐘的精度和頻率穩定性,默認設置為16640(0x4100),clockIdentity 用于標識不同的設備,默認為交換機的MAC 地址。該向量由時鐘同步報文中的Announce消息來確定,越靠近上方的部分越重要,且值越小,優先級越高,也就越可能成為最佳主時鐘。
使用圖3 的拓撲,保持交換機1 的時鐘同步優先級不變,按照表3 設置交換機2 的優先級,分別驗證場景1-5 下最佳主時鐘及時鐘同步生成樹的建立是否符合預期。

表3 交換機2同步優先級設置表
2.1.3 協議一致性
在兩TSN 交換機之間增加一個集線器,用于測量時鐘同步協議報文的通信過程,如圖5 所示。通過在計算機3 處抓包查看協議報文的格式、參數,分析通信行為是否符合協議規定的交互流程,并評估與協議報文的符合度。

圖5 協議一致性驗證拓撲
2.2.1 觸發條件
根據時鐘同步機制的邏輯設計,當802.1AS 總開關和1/5 端口的時鐘同步開關同時開啟時,交換機開啟時鐘同步功能,當且僅當兩交換機的AS 開關均開啟時進行同步報文的交互,觸發時鐘同步流程。
2.2.2 BMCA算法及同步精度
根據時鐘同步生成樹優先級向量,按照從上往下的順序依次進行比較,比較值越小優先級越高,場景1、2 中交換機1 優先級高,為主時鐘,場景3、4 中交換機2 為主時鐘,場景5 中兩交換機優先級相同,根 據clockIdentity 選 取MAC 為8e:db:85:83:a4:8a 的TSN 交換機1 為主時鐘,均與預期相符。任選兩個場景1 和4,查看從時鐘的單跳同步精度,經過時間鎖定后,隨機取500 個值得到散點圖,分別如圖6(a)和6(b)所示。圖中可以看到,從時鐘穩定同步于主時鐘,同步精度在30 ns 以內。

圖6 單跳時鐘同步精度
2.2.3 協議一致性
在計算機3 處使用wireshark 工具抓取兩TSN 交換機之間的交互報文,發現sync 同步報文中包含發送時刻的估計值OriginTimeStamp,Follow_up 跟隨報文中包含發送時刻精確值PreciseOriginTimeStamp,Delay_req 延遲請求報文,Delay_resp 延遲請求響應報文,主時鐘周期性的Announce 通知報文及攜帶的時鐘信息參數,報頭及端口標識均符合設置及標準,時鐘同步樹的建立及對鏈路時延和駐留時間的測量過程符合p2p 的延時響應機制。
時間敏感網絡中時鐘同步直接影響實時通信和時間敏感的應用,該文提出了一種TSN 交換機,通過設置端口開關和總開關的方法獲取硬件時間戳,使用LinuxPTP 軟件包來實現時鐘同步的機制,并設計實驗對功能、精度、算法和協議一致性進行了驗證,結果表明,經過時間鎖定后,單跳時鐘同步精度在30 ns 以內,符合協議要求。最佳主時鐘的選擇、時鐘同步樹的建立、延時測量等過程符合標準。該設計正確且可行,為時間敏感網絡在車載、工業、軌道交通、航空電子等領域的落地提供了一種可能性。