文獻(xiàn)標(biāo)識碼: 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ò)標(biāo)準(zhǔn)ARINC664。
ARINC664協(xié)議規(guī)范定義了航空電子全雙工交換式網(wǎng)絡(luò)標(biāo)準(zhǔn),主要由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ò)標(biāo)準(zhǔn),該協(xié)議體系模型如圖1所示,左邊是標(biāo)準(zhǔn)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ò)層采用改進(jìn)的IP(Internet Protocol,因特網(wǎng)協(xié)議);傳輸層采用改進(jìn)的UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議),TCP(Transmission Control Protocol,傳輸控制協(xié)議)可選,使用隊列、采樣和SAP(Service Access Point,服務(wù)訪問點)3種端口與應(yīng)用層進(jìn)行通信[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ū),因此只能存儲一條消息,當(dāng)有新消息時,將會覆蓋緩沖區(qū)已有的消息,因此采樣端口每次讀取的都是新消息,且讀取完成消息后不會將此消息刪除,可重復(fù)讀取。而隊列端口可以設(shè)置多個緩沖區(qū),將接收的消息依次存入緩沖區(qū)的隊列中,從隊列端口讀取消息時,采用先進(jìn)先出的機(jī)制,讀取完成后,將該消息從隊列中刪除。
為了讀取緩沖區(qū)中的數(shù)據(jù),設(shè)置了頭尾指針,用于判斷該緩沖區(qū)是否有數(shù)據(jù),也有效防止了緩沖區(qū)溢出。當(dāng)頭尾指針不相等時,表明該緩沖區(qū)有數(shù)據(jù),可以進(jìn)行讀取,每讀取一幀數(shù)據(jù),將緩沖區(qū)的頭指針加1;當(dāng)頭尾指針相等時,表明緩沖區(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ò)的拓?fù)浣Y(jié)構(gòu)為星型余度拓?fù)?,每個端系統(tǒng)都有兩條相互獨立的傳輸路徑,發(fā)送過程中,將消息分別通過這兩條傳輸路徑發(fā)送至目標(biāo)設(shè)備,在接收端通過這兩條獨立的路徑接收消息。因此,在端系統(tǒng)的通信過程中,采用余度處理和完整性校驗的機(jī)制,可以確保接收到有效的AFDX數(shù)據(jù)幀。
發(fā)送過程中,當(dāng)數(shù)據(jù)幀完成封裝后,存放至虛鏈路緩沖區(qū),由硬件單元負(fù)責(zé)將數(shù)據(jù)復(fù)制成完全相同的兩份,然后通過物理層,將互為余度的數(shù)據(jù)發(fā)送至網(wǎng)絡(luò)。
接收過程中,采用“先到先有效”的原則,接收網(wǎng)絡(luò)中的數(shù)據(jù)包。當(dāng)接收到第一幀數(shù)據(jù)后,記錄該數(shù)據(jù)的SN(Serial Number,序列號)號。當(dāng)接收到第二幀數(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ìn)行處理,經(jīng)處理的幀再進(jìn)行發(fā)送網(wǎng)絡(luò)選擇,判斷發(fā)送端口是A端口、B端口或者是A、B兩個端口同時發(fā)送。接收到幀的兩個網(wǎng)絡(luò)接口分別將幀存儲到對應(yīng)的接收緩存器中,并分別對幀進(jìn)行完整性檢查。在沒有任何故障的情況下,完整性檢查僅將接收到的幀傳遞給余度管理過程,對于每個余度網(wǎng)絡(luò)是獨立的。如果發(fā)現(xiàn)故障,完整性檢查將去除無效幀,并且執(zhí)行此操作時通知網(wǎng)絡(luò)管理機(jī)構(gòu)。在每個余度網(wǎng)絡(luò),完整性檢查功能對順序號在如下區(qū)間中的幀進(jìn)行檢查,該區(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ù)幀首先進(jìn)行完整性和序列號檢查,只有符合完整性和序列號檢查的幀才能進(jìn)行余度管理。余度管理是對兩個通過完整性檢查的幀進(jìn)行序列號比較,按照“先到先有效”的策略對兩個幀進(jìn)行取舍,然后將有效的數(shù)據(jù)幀發(fā)送到UDP/IP協(xié)議棧進(jìn)行處理。
余度管理的配置一般基于SkewMax(最大偏移時間)參數(shù),即:在收到兩個互為余度的幀之間的最大時間,這個值依賴于網(wǎng)絡(luò)拓?fù)洌◣缭浇粨Q機(jī)數(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ū)進(jìn)行隔離的機(jī)制實現(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)度模塊進(jìn)行調(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ù),當(dāng)消息傳輸?shù)椒强盏奶撴溌逢犃袝r就會發(fā)生抖動。另外,余度管理中對在虛鏈路隊列進(jìn)行轉(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ò)交換機(jī)關(guān)鍵協(xié)議分析
根據(jù)ARINC664 Part7規(guī)范,交換機(jī)由配置表、端系統(tǒng)、監(jiān)視模塊、交換模塊和過濾與管制模塊組成。其中交換模塊的交換調(diào)度功能、警管與過濾功能保證了AFDX網(wǎng)絡(luò)傳輸?shù)拇_定性和可靠性。
2.1 警管和過濾
幀過濾使得交換機(jī)可以分發(fā)有效幀到指定的目的端。幀數(shù)據(jù)一旦到達(dá)交換機(jī),交換機(jī)就會監(jiān)控幀的構(gòu)成及幀頭各個域的內(nèi)容。過濾功能對幀進(jìn)行檢查是否符合以下條件:目的地址有效、幀校驗序列有效、以太網(wǎng)幀長度是8 Bit的整數(shù)倍、以太網(wǎng)長度在[64,1 518]字節(jié)的范圍內(nèi)、以太網(wǎng)幀長度小于或等于Lmax等。
流量警管功能描述了一種基于目的地址執(zhí)行流量警管算法的模型。交換機(jī)必須具有流量警管機(jī)制,以確保網(wǎng)絡(luò)對于錯誤的隔離。為了使異常的數(shù)據(jù)幀不會擾亂網(wǎng)絡(luò),任何與網(wǎng)絡(luò)配置不符合的幀會被丟棄。
流量警管的原理采用漏桶算法,如圖6所示。
每當(dāng)VLi中的一個幀到達(dá)交換機(jī)時,都要檢查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 (令牌桶)算法。流量警管機(jī)制應(yīng)該在交換機(jī)上實現(xiàn),以保證網(wǎng)絡(luò)的故障抑制功能。為了不讓某個失效的端系統(tǒng)干擾網(wǎng)絡(luò),流量中的任何不適合網(wǎng)絡(luò)配置的幀必須被丟棄。
2.2 交換調(diào)度
交換調(diào)度主要是將數(shù)據(jù)幀從交換機(jī)的輸入端口轉(zhuǎn)發(fā)至輸出端口,交換調(diào)度分為接收調(diào)度和發(fā)送調(diào)度[10]。
輸入端口接收調(diào)度包括交換端口交換幀的接收、捕獲端口捕獲配置幀的接收和主機(jī)發(fā)送緩沖數(shù)據(jù)幀的接收(包括端系統(tǒng)配置、捕獲幀配置)。每個輸入端口收到一幀數(shù)據(jù)后,向接收發(fā)出調(diào)度請求,接收調(diào)度采樣接收控制字及實時時鐘輸入時間戳,并等待接收調(diào)度仲裁,接收調(diào)度根據(jù)公平的服務(wù)原則,選擇某個申請調(diào)度的端口進(jìn)行服務(wù)。
輸出端口發(fā)送調(diào)度包括交換輸出端口交換幀的發(fā)送,其又包括普通交換幀的發(fā)送和主機(jī)接收緩沖數(shù)據(jù)幀的發(fā)送,其中主機(jī)接收緩沖數(shù)據(jù)幀優(yōu)先權(quán)最高,其次是普通交換幀。輸出端口發(fā)送調(diào)度首先必須分別確認(rèn)各自的輸出端口緩沖是否能夠存儲當(dāng)前要發(fā)送的幀,只有輸出端口緩沖有空閑空間時,輸出端口空閑的幀才會允許申請發(fā)送調(diào)度,否則必須等待條件具備后才能申請調(diào)度。
3 結(jié)束語
AFDX網(wǎng)絡(luò)協(xié)議中虛鏈路、雙余度網(wǎng)絡(luò)、帶寬隔離、流量整形等關(guān)鍵技術(shù)有效地提高了系統(tǒng)的實時性、可靠性,對提高航空機(jī)載數(shù)據(jù)高可靠、高確定性的通信具有重要意義。通過深入解讀、分析AFDX網(wǎng)絡(luò)協(xié)議,對交換機(jī)和端系統(tǒng)的關(guān)鍵技術(shù)進(jìn)行研究,突破AFDX網(wǎng)絡(luò)端系統(tǒng)及交換機(jī)關(guān)鍵技術(shù),為AFDX網(wǎng)絡(luò)的芯片及后續(xù)產(chǎn)品設(shè)計提供技術(shù)支撐。
參考文獻(xiàn)
[1] 趙永庫,李貞,唐來勝.AFDX網(wǎng)絡(luò)協(xié)議研究[J].計算機(jī)測量與控制,2011,19(12):3137-3139,3142.
[2] 謝希仁.計算機(jī)網(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].計算機(jī)工程,2009,35(5):1-3.
[9] 劉曉勝,劉建平,劉博.基于FPGA的AFDX虛擬鏈路層實現(xiàn)方法[J].計算機(jī)工程,2010,10(19):233-237.
[10] 王紅春,何峰.民用飛機(jī)高速航電系統(tǒng)AFDX網(wǎng)絡(luò)設(shè)計與分析[J].計算機(jī)工程與設(shè)計,2011,31(12):3633-3637.