劉洋 張志平 王晨博




摘要:該文提出了一種時間觸發以太網數據捕獲和存儲方法,解決了基于數據幀錯誤類型、協議類型、虛鏈路或目的MAC地址的過濾和捕獲、數據幀組織存儲和解析等問題,滿足1Gbps和10Gbps速率的時間觸發以太網的同步和通信等功能的調試和驗證需求。
關鍵詞:TTE;數據捕獲;存儲;虛鏈路
中圖分類號:TP393 ? ? ?文獻標識碼:A
文章編號:1009-3044(2022)05-0008-03
1 引言
隨著信息技術的發展,工業、航空等領域的電子設備和系統越來越重視任務的實時性、安全性、確定性,傳統的以太網已經不能滿足該需求,因此,時間觸發以太網 (Time Triggered Ethernet,TTE) 應運而生。TTE是TTTech公司針對航空、航天領域等特殊應用而研發的一種高性能、強實時以太網[1],兼容標準以太網IEEE802.3,提供微秒級的時鐘同步,通信速率可達1 Gb/s。TTE應用廣泛,例如航空電子技術,工業自動化等領域[2]。
在符合IEEE802.3標準的傳統以太網中,網絡中的設備采用事件觸發機制,采用先到先服務的原則,可以在任何時間點接入網絡。不同的網絡設備之間通過共享介質進行通信,在通信過程中,個別消息的傳輸將產生不確定的抖動和累積延遲。為了減少這樣的情況,ARINC公司在標準以太網的基礎上,制定了ARINC664標準,其中第7部分為全雙工交換式以太網(AFDX網絡),在數據鏈路層增加了虛擬鏈路(VL)、帶寬分配間隙(BAG)、抖動管理機制,有效減少了報文傳輸過程中的報文沖突,并且具備了實時性和確定性[3],滿足航電系統中各設備信息傳輸的可靠性和確定性要求。
SAE組織發布了AS6802時間觸發以太網(TTE)網絡標準,兼容標準以太網和AFDX網絡,使用網絡設備之間協調統一的網絡時間,以減少傳輸延時和抖動,從而在單一網絡中滿足不同事實和安全等級的應用需要。AS6802標準支持時間觸發機制的時間觸發消息(Time-Triggered消息,簡稱TT消息)、事件觸發機制的速率限制消息(Rate-Constraint消息,簡稱RC消息)和盡力而為消息(Best-Effort消息,簡稱BE消息)以及用于統一時間的協議控制幀(Protocol Control Frame,簡稱PCF消息)。
傳統的以太網ET(Event-Triggered)網絡由外部環境控制,對來自外部事件的刺激做出反應,而TTE通過內部的、集中的調度來控制自身活動與外部環境的交互。在網絡系統中,為了防止單個網絡節點故障引發整個網絡故障,經常采用雙余度或者多余度的網絡結構,以提高網絡系統的可靠性[4]。TTE相比于傳統以太網,具有以下優勢:
1)適用性強。TTE可以應用于從簡單的網絡系統到高可靠性和高安全性的網絡系統等的各個層次的網絡,允許同時采用事件觸發和時間觸發機制;TTE能夠適應10Mbit/s、100Mbit/s、1000Mbit/s等多種速率的帶寬網絡,可充分利用現有帶寬,提高通信網絡效率;
2)兼容性好。TTE網絡完全兼容標準以太網IEEE802.3協議[5],因此TTE無須改變現有網絡和現有端點系統的應用軟件,只需在標準以太網中為交換機和端系統配備時間觸發功能即可運行;
3)成本低。得益于TTE的兼容性,TTE網絡的成本能夠得到很好的控制,是TTE得到廣泛應用的重要因素。
為了解決基于數據幀錯誤類型、協議類型、虛鏈路或目的MAC地址的過濾和捕獲、數據幀組織存儲和解析等問題,本文提出了一種TTE數據捕獲方法,滿足1Gbps和10Gbps速率的TTE同步和通信等功能的調試和驗證需求。
2 TTE協議控制幀
TTE通過一個特殊的協議控制幀——Protocol Control Frame(PCF),來實現時鐘同步的控制機制。TTE協議控制幀(PCF)的結構如圖1所示。TTE協議幀的Payload字段包含著PCF幀的所有內容,其Type字段的值為0x891d [6]。本文章所提到的一種時間觸發以太網數據的捕獲和存儲方法,都是通過PCF幀中所包含的信息進行的。
3 TTE數據捕獲方法
TTE數據捕獲過程主要包括以下步驟:
步驟1:接收功能從MAC層接收數據幀,在第1個比特位到達時,記錄從RTC功能讀取的時鐘值,記為時間戳Fts;
步驟2:在MAC層接收數據時,檢查是否存在以下錯誤:1)超長幀錯誤;2)非對齊幀錯誤;3)幀校驗錯誤;4)類型長度域錯誤。
如果MAC錯誤過濾未使能,上述錯誤數據也將被接收功能接受。錯誤a數據最多存儲字節數為MAX_CAPTURE_LEN,錯誤b數據存儲對齊的字節,丟棄未對齊的比特位,錯誤c數據、錯誤d數據按照實際接收的內容存儲,并記錄數據的錯誤類型。
步驟3:通過MAC接收的幀,依據緩沖管理控制器配置對數據幀字段進行檢查,檢查內容包含以下幾項:1)CS幀接收使能;2)CA幀接收使能;3)IN幀接收使能;4)IN幀成員閾值;5)TT幀接收使能;6)RC幀接收使能;7)BE幀接收使能。
步驟4:通過對步驟2和步驟3所檢查的數據,比較數據幀實際長度FrameLen和MAX_CAPTURE_LEN: