何向棟,張志平,賈世偉
(中國航空計算技術研究所,陜西 西安 710065)
摘要:新一代航電網絡——航空電子全雙工交換以太網(AFDX),是為航電信息系統之間進行數據通信而專門制定的協議標準,具有時間確定性、雙余度和高可靠性等優點。在分析ARINC 664 Part7規范、通信結構和SN等關鍵技術的基礎上,結合SAE AS6802[2]協議算法,提出一種保持多節點發送時序一致的AFDX幀結構。采用OPNET網絡拓撲仿真實現,結果滿足幀數據時序一致性要求。
0引言
隨著機載飛行條件的復雜化和對安全飛行、舒適旅行等要求的提高,新一代航空電子系統數據傳輸已由傳統的音頻通信擴大為圖像、多媒體、確定性控制信號等多種數據流業務。航空電子全雙工交換以太網(AFDX)[1]基于IEEE 802.3標準,結合航空電子系統特殊需求對該協議的部分MAC和數據鏈路層進行適應性修改,使其成為具備有確定性和安全性的交換網絡技術,形成航空以太網數據網絡標準:ARINC 664,其中第7部分重點對AFDX網絡通信協議、交換機和端系統等各項內容進行詳述,已成功應用到波音787、空客A380和A400M等大型飛機的航電系統中,并將應用于未來國產大飛機C919上。
相比ARINC429和MILSTD1553而言,AFDX網絡保留了傳統以太網高速、通用以及低成本等特點,同時增加了虛擬鏈路、帶寬分配、完整性監測、警管[2]和冗余管理等特殊機制,兼容ARINC應用協議SNMP和ARINC615A加卸載等協議優點,確保數據傳輸滿足延遲確定、傳輸可靠、容錯能力強等機載網絡特點,已成為新一代航電系統總線接口關鍵技術之一。
1AFDX幀序列號作用與意義
AFDX發送節點在每一條虛擬鏈路(Virtual Link,VL)傳送幀數據時都要加入一個序列號(Sequence Number,SN)。幀SN的長度為1 B,取值范圍為0~255。SN的初始值為0,節點復位之后也為0。在同一條虛擬鏈路上傳輸的前后相繼的幀,后一幀的SN為SN+1。當幀的SN達到255之后,下一幀的SN回卷至1。
1.1冗余管理[3]
AFDX網絡包括兩個獨立的物理鏈路通道:A網絡和B網絡,如圖1所示。
A、B冗余網絡的延時抖動不同,因此冗余幀與有效幀到達接收節點的時間也不同。每條物理鏈路傳輸相同的幀數據,在接收節點針對每條虛擬鏈路按照SN依據“先到先有效者勝出”的原則采用先到達的數據幀,并將此虛擬鏈路SN保存為PSN(Previous Sequence Number)作為下一次接收幀的判斷標準,后到達的同一SN的幀數據被當作無效幀而丟棄。另一方面,為了避免因為延遲而錯誤濾除有效數據幀,引入參數Skewmax[4]。Skewmax表示冗余幀與有效幀的到達接收節點的時間差。冗余管理保證接收的幀序號不斷增大(包括復位和幀丟失),當Skewmax內沒有數據幀時,冗余管理會無條件接收下一幀數據。
1.2完整性檢查
在沒有故障的AFDX網絡通信中,完整性檢查根據SN檢測接收幀數據SN是否滿足如下規則:
[PSN“+”1,PSN“+”2];
其中PSN表示前一幀數據的SN。如果基于SN的網絡出現故障(如發送節點出現不一致故障),則完整性檢查具有去除無效幀的任務,并將故障信息傳遞給上層網絡管理。
完整性檢查將以下特殊情況下的幀數據作為有效幀接收:(1)接收的SN等于0;(2)在接收節點復位之后,第一次被接收到的幀數據。
1.3安全關鍵缺失
在機載航電網絡中,對于需高安全可靠地進行傳輸的數據,有嚴格的序列收發關系,傳統的以太網幀數據無法對單鏈路幀數據的先后提供保證,而SN不僅可以在網絡冗余管理和完整性檢查起到重要作用,而且可以在OSI層次中的數據鏈路層對單條虛擬鏈路上的幀提供數據序列的安全性保證。
可見,SN在單條虛擬鏈路的幀通信中,可以保證數據的確定性和可靠性,然而系統要求多節點VL幀通信中的時序一致時,當飛機在高空巡航過程中,一旦發生機翼多點故障,其故障發生時間與控制單元收到錯誤次序控制將導致緊急處理情況的不同,那么飛控將給出錯誤的飛行控制,導致機毀人亡的事故。
然而,SN并不能滿足節點間幀通信的時序一致性。為了保證節點間事件時序發生的一致性,下面將改進AFDX幀結構,并對授時和時序一致性算法進行詳述。
2幀改進
為了保持多個節點間事件發生時序與事實的一致性,通過在幀數據內容中增加透明時鐘域[5-7],記錄傳輸過程中的發送延遲、傳輸延遲和接收延遲,實現傳輸透明化。在接收端通過對各個節點到達的幀數據通過最大傳輸延時與透明傳輸延時的排序算法計算,對同一時間段內的幀數據進行重新排序整合,達到多節點間幀數據傳輸時序一致性要求。
AFDX改進幀結構其特征在于,通過在幀的數據字段尾部預留8 B的透明時鐘字段,如圖2所示,字段明確定義時間單位2-16ns,記錄幀在傳輸過程中的發送延時、傳輸延遲和接收延遲。在目標節點,通過時序保持算法保證各個發送節點在目標節點上發送時間上幀序列的一致性。
透明時鐘域(用transparent_clock表示)計算幀數據從發送節點經過轉發設備最后到接收節點的時延,具體計算方法如下。
節點按幀數據流過的次序標號為從0(發送節點)到n(接收節點)。
發送節點0:
transparent_clock0=dynamic_send_delay0+static_send_delay0(1)
轉發節點i,0<i<n:
transparent_clocki=transparent_clocki-1+dynamic_relay_delayi+static_relay_delayi+wire_delayi(2)
接收節點n:
transparent_clockn=transparent_clockn-1+dynamic_receive_delayn+static_receive_delayn+wire_delayn(3)
公式(1)、(2)和(3)中:dynamic_send_delay代表動態發送延時,如節點排隊等原因造成;static_send_delay代表靜態發送延時,如收發器等固有特性造成;dynamic_relay_delay代表動態傳輸延遲,如排隊等候等原因造成;static_relay_delay代表靜態傳輸延遲,如轉發拷貝等原因造成;wire_delay代表線纜傳輸延遲,其計算方式參閱IEEE 1588精確時間協議(Precision Time Protocol)標準[78]的對等延遲算法;dynamic_receive_delay代表動態接收延遲,如接收排隊等原因造成;static_receive_delay代表靜態接收延遲,如收發器等固有特性造成。
2.1精確授時
AFDX網絡端系統的幀數據輸出與一條確定虛擬鏈路相關聯的流量控制參數描述:帶寬分配間隔(Bandwidth Allocation Gap,BAG)和抖動(Jitter),其中BAG流量整形滿足BAG=2kms(k=0,1,2,…,7),Jitter最大不超過500 μs。為了滿足AFDX網絡收發節點在流量整形的BAG和Jitter范圍之內,網絡需要時間同步。
AFDX網絡通過RTC(Real Time Counter)幀(幀有效載荷主要包括:64 bit表示的時間同步信息,精度為40 ns),采用主時鐘授權方式以達到全網同步目的,如圖3所示。
發送節點ES8發出RTC幀時,攜帶其本地時間進入AFDX網絡,處于網絡中不同位置的接收節點ESx因網絡收發延時、傳輸延時、線延時等原因導致接收RTC幀的時刻不一致,需采用延時補償來完成授時修正。
在AFDX改進幀的格式中,通過transparent_clock參數域可完整記錄傳輸過程中的延時,在接收節點,將RTC中的時刻信息與transparent_clock參數域相加即可得到精確的時刻,完成時間同步,如ES1的從時鐘Trs1時間同步計算方法如下(其中TD表示時間延時):
Tr1=Tm+transparent_clockRTC=Tm+TDdynamic_send_delayES8+TDstatic_send_delayES8+TDwire_delayES8-SW1+TDdynamic_relay_delaySW1+TDstatic_relay_delaySW1+TDwire_delaySW1-ES1+TDdynamic_receive_delayES1+TDstatic_receive_delayES1(4)
其他被授時節點計算結果如式(4)所示,只是transparent_clockRTC參數域內容是在RTC幀傳輸過程中動態記錄的。
AFDX幀改進后的RTC授時可精確至μm級時間同步,大大提高了AFDX的BAG流量規整確定性,進一步降低因節點時鐘差異而導致的Jitter抖動問題。
2.2時序一致性
帶有透明時鐘域的AFDX幀數據在BAG相同并且Jitter=0時,同一時刻從不同發送節點發出,經不同的拓撲路徑到達同一個接收節點。同樣,幀數據中的transparent_clock參數域實時將發送、傳輸及接收過程中的各個延時進行累計。在接收節點,通過配置一個事先計算得出的全網最大傳輸延遲參數(用max_transimssion_delay表示),由網絡中的最大透明傳輸延遲決定,具體計算方法如式(5)所示。
max_transimssion_delay=max(transparent_clockn)(5)
時序一致性算法為了重新建立發送節點間的派發時序,在接收節點上計算時序保持時間點,具體做法為:在幀數據被接收節點接收之后,再延時一段等同于時序保持延時的時間(用permanence_delay表示,見式(6))之后的時刻,即為對應幀數據的時序保持時間點(用permanence_
pit表示),具體計算方法如下:
permanence_delay=max_transmission_delay-transparent_clockn(6)
繼而
permanence_pit=receive_pit+hold_delay(7)
公式(6)中的receive_pit代表幀數據在接收節點的實際接收時間點。依據公式(7)中的時序保持時間點permanence_pit依次排列,即為AFDX幀數據的實際發送次序。
針對該算法結合圖4進行示例描述。圖4左側為某網絡拓撲架構,包括6塊端系統和3臺交換機。圖中描述了AFDX幀601和602的派發次序與交換機203上的接收次序不同,但通過時序保持功能計算,展示了如何在接收端重建時間次序。圖中從左到右描述了實時的過程。
t=0:端系統ES101派發幀601(transparent_clock幀601=0);
t=7:幀601發送進入物理鏈路(transparent_clock幀601=7);
t=10:幀601進入交換機SW201(transparent_clock幀601=10);
t=20:端系統ES104派發幀602(transparent_clock幀602=0);
t=32:幀602發送進入物理鏈路(transparent_clock幀602=12);
t=40:幀602進入交換機SW203(transparent_clock幀602=20);
t=50:交換機SW201轉發出幀601進入物理鏈路(transparent_clock幀601=50);
t=53:幀601進入交換機SW202(transparent_clock幀601=53);
t=75:交換機SW202轉發出幀601進入物理鏈路(transparent_clock幀601=75);
t=78:幀601進入交換機SW203(transparent_clock幀601=78);
t=100:幀601在交換機SW203內部經過permanence_delay幀601=max_transmission_delay-transparent_clock幀601=100-78=22時延之后,到達時序保持點;
t=120:幀602在交換機SW203內部經過permanence_delay幀602=max_transmission_delay-transparent_clock幀602=100-20=80時延之后,到達時序保持點。
圖4的時序顯示,在交換機SW203上AFDX幀602的接收比幀601要早很多。為了重建交換機203上AFDX幀601和602的時間派發次序,在它們被接收且延時一段等同于時序保持延時的時間permanence_delay之后,保證了重建的發送次序的精確性。
3OPNET實現與仿真
針對圖4左側網絡拓撲,在OPNET Modeler 14.5上建立OPNET模型,對應表1進行數據仿真與測試。圖5為OPNET仿真結果,其中圖5(a)顯示了優化幀結構后的時間同步仿真結果,圖5(b)為幀結構優化前后的次序情況。測試結果證明,幀改進合理,時序算法計算正確。表1仿真測試項目序號測試目的測試結果1RTC幀同步各個節點同步精度在μs級2時序算法透明時鐘延時和時序保持計算正確3幀次序一致性在多個端系統發送時序不一致情況下,
均可正確仿真出準確次序4數據通信添加透明時鐘域的AFDX幀在大數據傳輸時,
增加組包和拆包數量
4結論
通過在AFDX幀中增加透明時鐘域,實現記錄傳輸過程延時的方式,不僅保證了整個AFDX網絡的高精度時間授時(μs級),而且拓展了其在高安全關鍵領域的控制應用。算法實現過程均在數據鏈路層,對上層透明化,兼容現有軟件協議應用程序,方便升級,提高了性能。
參考文獻
?。?] ARINC 664,aircraft data network[S].2002.
[2] 沈磊,楊紹輝,邱智亮.AFDX網絡中基于虛擬計時的警管算法[J].計算機應用,2008,28(12):3029-3031.
?。?] 劉曉勝,劉建平,劉博.基于FPGA的AFDX虛擬鏈路層實現方法[J].計算機工程,2012,38(19):233-237.
[4] 李大鵬,趙明莉,田園.AFDX端系統中冗余管理的研究和實現[J].電子技術,2012,39(12):10-13.
?。?] MOHL D S.IEEE 1588-Precise time synchronization as the basis for real time applications in automation[J].Industrial Networking Solutions,2003.
?。?] IEEE Std 1588-2002,IEEE standard for a precision clock synchronization protocol for networked measurement and control systems[S]. 2002.
?。?] IEEE Std 1588-2008,IEEE standard for a precision clock synchronization protocol for networked measurement and control systems[S]. 2008.