文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.04.002
中文引用格式: 田澤,,姜麗云,,陳偉,等. AFDX網絡關鍵協(xié)議分析與研究[J].電子技術應用,,2016,,42(4):7-10,14.
英文引用格式: Tian Ze,,Jiang Liyun,,Chen Wei,et al. The analysis and research of AFDX network key protocol[J].Application of Electronic Technique,,2016,,42(4):7-10,14.
0 引言
AFDX網絡是在商用以太網IEEE802.3協(xié)議的基礎上,增加確定性,、可靠性需求,,制定了航空電子全雙工交換式網絡標準ARINC664。
ARINC664協(xié)議規(guī)范定義了航空電子全雙工交換式網絡標準,,主要由8個部分組成[1]:(1)系統(tǒng)的概念和概況,;(2)以太網物理層和數據鏈路層;(3)基于因特網的協(xié)議與服務,;(4)基于因特網的地址結構和分配編號,;(5)網絡互連服務和功能元件;(6)保留,;(7)航空全雙工交換式以太網(AFDX)網絡,;(8)上層服務。
從上述內容可以看出,,ARINC664協(xié)議定義了航空全雙工交換式網絡標準,,該協(xié)議體系模型如圖1所示,左邊是標準OSI[2](Open System Interconnection,,開放式系統(tǒng)互聯(lián)模型)網絡結構,,右邊對照的是AFDX網絡協(xié)議棧結構及協(xié)議間的關系。如圖1所示,,AFDX協(xié)議與商用以太網的主要區(qū)別是在MAC(Media Access Control,,介質訪問控制)層,增加了虛鏈路技術,,滿足了航空電子系統(tǒng)對可靠性和實時性[3]的要求,。
協(xié)議棧分為五層,,從下到上依次為物理層、鏈路層,、網絡層,、傳輸層和應用層。物理層采用以太網物理層協(xié)議,;鏈路層實現物理鏈路的虛擬通道管理和MAC層的余度管理,;網絡層采用改進的IP(Internet Protocol,因特網協(xié)議),;傳輸層采用改進的UDP(User Datagram Protocol,,用戶數據報協(xié)議),TCP(Transmission Control Protocol,,傳輸控制協(xié)議)可選,,使用隊列、采樣和SAP(Service Access Point,,服務訪問點)3種端口與應用層進行通信[4];應用層采用ARINC 615A加卸載協(xié)議和SNMP(Simple Network Management Protocol,,簡單網絡管理協(xié)議)向航空子系統(tǒng)提供文件傳輸,、數據加載和網絡管理等服務。
1 AFDX網絡端系統(tǒng)關鍵協(xié)議分析
AFDX網絡為了滿足航空電子系統(tǒng)對可靠性,、實時性,、高帶寬的要求,在商用以太網的基礎上增加了虛鏈路,、帶寬隔離,、流量整形、完整性檢查以及余度管理,。
1.1 通信端口
航空電子系統(tǒng)通信過程中,,采用通信端口完成數據的發(fā)送與接收。AFDX網絡提供了3種通信端口,,即采樣端口,、隊列端口和SAP端口。其中采樣端口和隊列端口統(tǒng)稱為通信端口,,SAP端口為上層服務端口,。
1.1.1 采樣和隊列端口
如圖2和圖3所示,采樣端口和隊列端口的主要區(qū)別在于緩沖區(qū)個數,,采樣端口只有一個緩沖區(qū),,因此只能存儲一條消息,當有新消息時,,將會覆蓋緩沖區(qū)已有的消息,,因此采樣端口每次讀取的都是新消息,,且讀取完成消息后不會將此消息刪除,可重復讀取,。而隊列端口可以設置多個緩沖區(qū),,將接收的消息依次存入緩沖區(qū)的隊列中,從隊列端口讀取消息時,,采用先進先出的機制,,讀取完成后,將該消息從隊列中刪除,。
為了讀取緩沖區(qū)中的數據,,設置了頭尾指針,用于判斷該緩沖區(qū)是否有數據,,也有效防止了緩沖區(qū)溢出,。當頭尾指針不相等時,表明該緩沖區(qū)有數據,,可以進行讀取,,每讀取一幀數據,將緩沖區(qū)的頭指針加1,;當頭尾指針相等時,,表明緩沖區(qū)的數據已經讀取完成。
1.1.2 SAP端口
AFDX網絡提供了SAP服務端口,,主要用于實現端系統(tǒng)與上層服務之間的通信,,包括文件傳輸、網絡管理等功能,。
SAP端口具有以下特征:可以用于AFDX網絡通信接口,;作為終端系統(tǒng)的應用通信接口;提供與應用通訊的UDP服務;SAP端口的UDP服務應提供小于8 KB數據緩沖,;通過對SAP端口設置,,TCP可以訪問IP層。
1.2 余度容錯
AFDX網絡的拓撲結構為星型余度拓撲,,每個端系統(tǒng)都有兩條相互獨立的傳輸路徑,,發(fā)送過程中,將消息分別通過這兩條傳輸路徑發(fā)送至目標設備,,在接收端通過這兩條獨立的路徑接收消息,。因此,在端系統(tǒng)的通信過程中,,采用余度處理和完整性校驗的機制,,可以確保接收到有效的AFDX數據幀。
發(fā)送過程中,當數據幀完成封裝后,,存放至虛鏈路緩沖區(qū),,由硬件單元負責將數據復制成完全相同的兩份,然后通過物理層,,將互為余度的數據發(fā)送至網絡,。
接收過程中,采用“先到先有效”的原則,,接收網絡中的數據包,。當接收到第一幀數據后,記錄該數據的SN(Serial Number,,序列號)號,。當接收到第二幀數據時,首先比較該條數據的SN號是否和上條消息的SN號相同,,如果相同,,則直接丟棄該條消息,否則接收該條消息,。余度容錯如圖4所示[5],。
1.2.1 完整性檢查
AFDX幀被提交到余度控制單元時,首先將CRC(Cyclic Redundancy Code,,循環(huán)冗余校驗碼)前的一個字節(jié)作為幀序號SN的單元(0~255),,并根據SN號對幀進行處理,經處理的幀再進行發(fā)送網絡選擇,,判斷發(fā)送端口是A端口、B端口或者是A,、B兩個端口同時發(fā)送,。接收到幀的兩個網絡接口分別將幀存儲到對應的接收緩存器中,并分別對幀進行完整性檢查,。在沒有任何故障的情況下,,完整性檢查僅將接收到的幀傳遞給余度管理過程,對于每個余度網絡是獨立的,。如果發(fā)現故障,,完整性檢查將去除無效幀,并且執(zhí)行此操作時通知網絡管理機構,。在每個余度網絡,,完整性檢查功能對順序號在如下區(qū)間中的幀進行檢查,該區(qū)間是:
[PSN”+”1, PSN”+”2]
其中,,PSN(前序列號)是這個VL(Virtual Link,,虛鏈路)接收到的前一個幀的順序號。在某些特殊的情況下,完整性檢查也應將該幀作為有效幀,,如接收順序號為0的幀,、在端系統(tǒng)復位后第一次被接收到的幀等。沒有滿足這些規(guī)則的幀被丟棄[6-7],,完整性檢查的具體流程如圖5所示,。
1.2.2 余度管理
端系統(tǒng)在接收數據時,從鏈路層傳入的數據幀首先進行完整性和序列號檢查,,只有符合完整性和序列號檢查的幀才能進行余度管理,。余度管理是對兩個通過完整性檢查的幀進行序列號比較,按照“先到先有效”的策略對兩個幀進行取舍,,然后將有效的數據幀發(fā)送到UDP/IP協(xié)議棧進行處理,。
余度管理的配置一般基于SkewMax(最大偏移時間)參數,即:在收到兩個互為余度的幀之間的最大時間,,這個值依賴于網絡拓撲(幀跨越交換機數目),,并由系統(tǒng)集成者提供。
對于每個VL,,余度管理功能應該保證幀以遞增的SN次序轉發(fā),,復位和偶然丟幀的情況,如果在收到一個幀后超過SkewMax,,則下一幀將被無條件接收,。
1.3 虛鏈路VL
傳統(tǒng)以太網交換中采用動態(tài)路由的尋址方式,傳輸路徑是不確定的,,而AFDX網絡是一種確定性網絡,,傳輸路徑在網絡初始化時預先設定,采用虛鏈路來實現路由的選擇,。虛鏈路是一個概念化的通信對象,,主要具有兩個屬性:(1)邏輯上的單向連接(從一個源端系統(tǒng)到一個或多個目的端系統(tǒng));(2)指定最大帶寬(帶寬由系統(tǒng)集成者分配),。
1.3.1 帶寬隔離
為了使不同虛鏈路之間在同一物理連接上不會產生干擾,,采用一種類似航空子系統(tǒng)之間的應用通道分區(qū)進行隔離的機制實現虛鏈路帶寬的分配。AFDX網絡每個終端系統(tǒng)上的多個虛鏈路共享100 Mb/s帶寬物理連接,。
在AFDX網絡中,,虛鏈路之間的隔離是通過限制虛鏈路的帶寬分配間隙BAG(Bandwidth Allocation Gap,幀與幀之間發(fā)送的最小時間間隔)和虛鏈路上傳輸AFDX幀的最大長度Lmax(最大幀長度)實現的,,由端系統(tǒng)保證,,虛鏈路的帶寬計算公式為:
1.3.2 流量整形和調度
AFDX消息被封裝成AFDX幀,由綁定唯一一條虛擬鏈路的通信端口調用,,并由終端系統(tǒng)中的虛鏈路調度模塊進行調度,。虛鏈路調度包括數據包調度和多路轉換分發(fā)兩部分。虛鏈路調度完成虛鏈路隊列信息幀的獲取,并創(chuàng)建無抖動的數據流輸出,。虛鏈路調度還完成復制到余度管理單元信息的切換調度,。
虛鏈路調度保證了每個虛鏈路帶寬不超過所分配的限制,不僅是要保證每條虛鏈路對BAG和Lmax的限制,,而且還要保證因虛鏈路的切換而產生的抖動在可以接收的范圍之內[8-9],。
發(fā)送到AFDX通信端口消息所用的時間受到航空電子子系統(tǒng)和連接到系統(tǒng)的各種設備的影響。例如:傳感器以10 Hz的速率發(fā)送數據,,當消息傳輸到非空的虛鏈路隊列時就會發(fā)生抖動,。另外,余度管理中對在虛鏈路隊列進行轉換和在物理連接上順序的傳輸都會產生的抖動,。在ARINC664Part7協(xié)議規(guī)范中,,數據發(fā)送時,端系統(tǒng)輸出端口的每個VL的最大允許抖動應該服從下列公式:
其中,,max_jitter(最大抖動時間)以微秒為單位(μs),,Nbw是介質帶寬,Lmax以字節(jié)為單位(B),,40 μs是典型的最小固定技術時延抖動,。
根據式(2),端系統(tǒng)若具有較少的VL并且其中待處理的幀是短幀,,則最大允許的抖動將會降低,。為了整個網絡確定性,在所有的情況下抖動都被限制在500 μs內,。
2 AFDX網絡交換機關鍵協(xié)議分析
根據ARINC664 Part7規(guī)范,,交換機由配置表、端系統(tǒng),、監(jiān)視模塊,、交換模塊和過濾與管制模塊組成。其中交換模塊的交換調度功能,、警管與過濾功能保證了AFDX網絡傳輸的確定性和可靠性。
2.1 警管和過濾
幀過濾使得交換機可以分發(fā)有效幀到指定的目的端,。幀數據一旦到達交換機,,交換機就會監(jiān)控幀的構成及幀頭各個域的內容。過濾功能對幀進行檢查是否符合以下條件:目的地址有效,、幀校驗序列有效,、以太網幀長度是8 Bit的整數倍、以太網長度在[64,,1 518]字節(jié)的范圍內,、以太網幀長度小于或等于Lmax等。
流量警管功能描述了一種基于目的地址執(zhí)行流量警管算法的模型。交換機必須具有流量警管機制,,以確保網絡對于錯誤的隔離,。為了使異常的數據幀不會擾亂網絡,任何與網絡配置不符合的幀會被丟棄,。
流量警管的原理采用漏桶算法,,如圖6所示。
每當VLi中的一個幀到達交換機時,,都要檢查ACi(流量警管值),。對于ACi存在兩種類型被管理的帳戶:Byte ACi(基于字節(jié)的警管)和Frame ACi(基于幀的警管)。
(1)針對基于字節(jié)的警管:
如果Byte ACi大于S,,則此幀被接收并且從賬戶ACi的值中減去S,;
如果Byte ACi小于S,則此幀被丟棄,,MIB(管理信息庫)實體刷新,,Byte ACi不變。
(2)針對基于幀的警管:
如果Frame ACi 大于Smax.i則幀被接收并且從帳戶ACi的值中減去Smax.i,;
如果 Frame ACi 小于 Smax.i,,則該幀被丟棄,MIB(管理信息庫)實體被刷新,,Frame ACi不變[1],。
該流量警管規(guī)則被稱為Token Bucket (令牌桶)算法。流量警管機制應該在交換機上實現,,以保證網絡的故障抑制功能,。為了不讓某個失效的端系統(tǒng)干擾網絡,流量中的任何不適合網絡配置的幀必須被丟棄,。
2.2 交換調度
交換調度主要是將數據幀從交換機的輸入端口轉發(fā)至輸出端口,,交換調度分為接收調度和發(fā)送調度[10]。
輸入端口接收調度包括交換端口交換幀的接收,、捕獲端口捕獲配置幀的接收和主機發(fā)送緩沖數據幀的接收(包括端系統(tǒng)配置,、捕獲幀配置)。每個輸入端口收到一幀數據后,,向接收發(fā)出調度請求,,接收調度采樣接收控制字及實時時鐘輸入時間戳,并等待接收調度仲裁,,接收調度根據公平的服務原則,,選擇某個申請調度的端口進行服務。
輸出端口發(fā)送調度包括交換輸出端口交換幀的發(fā)送,,其又包括普通交換幀的發(fā)送和主機接收緩沖數據幀的發(fā)送,,其中主機接收緩沖數據幀優(yōu)先權最高,,其次是普通交換幀。輸出端口發(fā)送調度首先必須分別確認各自的輸出端口緩沖是否能夠存儲當前要發(fā)送的幀,,只有輸出端口緩沖有空閑空間時,,輸出端口空閑的幀才會允許申請發(fā)送調度,否則必須等待條件具備后才能申請調度,。
3 結束語
AFDX網絡協(xié)議中虛鏈路,、雙余度網絡、帶寬隔離,、流量整形等關鍵技術有效地提高了系統(tǒng)的實時性,、可靠性,對提高航空機載數據高可靠,、高確定性的通信具有重要意義,。通過深入解讀、分析AFDX網絡協(xié)議,,對交換機和端系統(tǒng)的關鍵技術進行研究,,突破AFDX網絡端系統(tǒng)及交換機關鍵技術,為AFDX網絡的芯片及后續(xù)產品設計提供技術支撐,。
參考文獻
[1] 趙永庫,,李貞,唐來勝.AFDX網絡協(xié)議研究[J].計算機測量與控制,,2011,,19(12):3137-3139,3142.
[2] 謝希仁.計算機網絡[M].第5版.北京:國防工業(yè)出版社,,2009.
[3] 施太平,,婁莉,田澤.AFDX協(xié)議及關鍵技術研究[J].測試控制,,2010,,31(10):81-84.
[4] ARINC specification 664P7,aircraft data network(part7):Avionics Full Duplex switched Ethernet (AFDX) network[S].2005.
[5] 鐘杰,,何民,,王懷勝,等.AFDX構架及協(xié)議研究[J].電訊技術,,2010,,50(1):65-70.
[6] 陳長春,王紅春.一種余度管理電路及其管理方法:中國,,200810098899[P].2010-07-07.
[7] 杜宏偉,馬捷中.航空電子全雙共交換式以太網及其關鍵技術研究[J].測控技術,,2008,,27(12):65-67.
[8] 陳昕,,周擁軍,萬劍雄.AFDX端系統(tǒng)關鍵技術的設計與實現[J].計算機工程,,2009,,35(5):1-3.
[9] 劉曉勝,劉建平,,劉博.基于FPGA的AFDX虛擬鏈路層實現方法[J].計算機工程,,2010,10(19):233-237.
[10] 王紅春,,何峰.民用飛機高速航電系統(tǒng)AFDX網絡設計與分析[J].計算機工程與設計,,2011,31(12):3633-3637.