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