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