文獻(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,開放式系統(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ì)訪問控制)層,增加了虛鏈路技術(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,用戶數(shù)據(jù)報(bào)協(xié)議),TCP(Transmission Control Protocol,傳輸控制協(xié)議)可選,使用隊(duì)列、采樣和SAP(Service Access Point,服務(wù)訪問點(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)通信過程中,采用通信端口完成數(shù)據(jù)的發(fā)送與接收。AFDX網(wǎng)絡(luò)提供了3種通信端口,即采樣端口、隊(duì)列端口和SAP端口。其中采樣端口和隊(duì)列端口統(tǒ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ù)緩沖;通過對(duì)SAP端口設(shè)置,TCP可以訪問IP層。
1.2 余度容錯(cuò)
AFDX網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)為星型余度拓?fù)?,每個(gè)端系統(tǒng)都有兩條相互獨(dú)立的傳輸路徑,發(fā)送過程中,將消息分別通過這兩條傳輸路徑發(fā)送至目標(biāo)設(shè)備,在接收端通過這兩條獨(dú)立的路徑接收消息。因此,在端系統(tǒng)的通信過程中,采用余度處理和完整性校驗(yàn)的機(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,序列號(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)行完整性檢查。在沒有任何故障的情況下,完整性檢查僅將接收到的幀傳遞給余度管理過程,對(duì)于每個(gè)余度網(wǎng)絡(luò)是獨(dú)立的。如果發(fā)現(xiàn)故障,完整性檢查將去除無效幀,并且執(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ù)位后第一次被接收到的幀等。沒有滿足這些規(guī)則的幀被丟棄[6-7],完整性檢查的具體流程如圖5所示。
1.2.2 余度管理
端系統(tǒng)在接收數(shù)據(jù)時(shí),從鏈路層傳入的數(shù)據(jù)幀首先進(jìn)行完整性和序列號(hào)檢查,只有符合完整性和序列號(hào)檢查的幀才能進(jìn)行余度管理。余度管理是對(duì)兩個(gè)通過完整性檢查的幀進(jìn)行序列號(hào)比較,按照“先到先有效”的策略對(duì)兩個(gè)幀進(jìn)行取舍,然后將有效的數(shù)據(jù)幀發(fā)送到UDP/IP協(xié)議棧進(jìn)行處理。
余度管理的配置一般基于SkewMax(最大偏移時(shí)間)參數(shù),即:在收到兩個(gè)互為余度的幀之間的最大時(shí)間,這個(gè)值依賴于網(wǎng)絡(luò)拓?fù)洌◣缭浇粨Q機(jī)數(shù)目),并由系統(tǒng)集成者提供。
對(duì)于每個(gè)VL,余度管理功能應(yīng)該保證幀以遞增的SN次序轉(zhuǎn)發(fā),復(fù)位和偶然丟幀的情況,如果在收到一個(gè)幀后超過SkewMax,則下一幀將被無條件接收。
1.3 虛鏈路VL
傳統(tǒng)以太網(wǎng)交換中采用動(dòng)態(tài)路由的尋址方式,傳輸路徑是不確定的,而AFDX網(wǎng)絡(luò)是一種確定性網(wǎng)絡(luò),傳輸路徑在網(wǎng)絡(luò)初始化時(shí)預(yù)先設(shè)定,采用虛鏈路來實(shí)現(xiàn)路由的選擇。虛鏈路是一個(gè)概念化的通信對(duì)象,主要具有兩個(gè)屬性:(1)邏輯上的單向連接(從一個(gè)源端系統(tǒng)到一個(gè)或多個(gè)目的端系統(tǒng));(2)指定最大帶寬(帶寬由系統(tǒng)集成者分配)。
1.3.1 帶寬隔離
為了使不同虛鏈路之間在同一物理連接上不會(huì)產(chǎn)生干擾,采用一種類似航空子系統(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ò)中,虛鏈路之間的隔離是通過限制虛鏈路的帶寬分配間隙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)建無抖動(dòng)的數(shù)據(jù)流輸出。虛鏈路調(diào)度還完成復(fù)制到余度管理單元信息的切換調(diào)度。
虛鏈路調(diào)度保證了每個(gè)虛鏈路帶寬不超過所分配的限制,不僅是要保證每條虛鏈路對(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)視模塊、交換模塊和過濾與管制模塊組成。其中交換模塊的交換調(diào)度功能、警管與過濾功能保證了AFDX網(wǎng)絡(luò)傳輸?shù)拇_定性和可靠性。
2.1 警管和過濾
幀過濾使得交換機(jī)可以分發(fā)有效幀到指定的目的端。幀數(shù)據(jù)一旦到達(dá)交換機(jī),交換機(jī)就會(huì)監(jiān)控幀的構(gòu)成及幀頭各個(gè)域的內(nèi)容。過濾功能對(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存在兩種類型被管理的帳戶:Byte ACi(基于字節(jié)的警管)和Frame ACi(基于幀的警管)。
(1)針對(duì)基于字節(jié)的警管:
如果Byte ACi大于S,則此幀被接收并且從賬戶ACi的值中減去S;
如果Byte ACi小于S,則此幀被丟棄,MIB(管理信息庫(kù))實(shí)體刷新,Byte ACi不變。
(2)針對(duì)基于幀的警管:
如果Frame ACi 大于Smax.i則幀被接收并且從帳戶ACi的值中減去Smax.i;
如果 Frame ACi 小于 Smax.i,則該幀被丟棄,MIB(管理信息庫(kù))實(shí)體被刷新,F(xiàn)rame ACi不變[1]。
該流量警管規(guī)則被稱為Token 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é)束語
AFDX網(wǎng)絡(luò)協(xié)議中虛鏈路、雙余度網(wǎng)絡(luò)、帶寬隔離、流量整形等關(guān)鍵技術(shù)有效地提高了系統(tǒng)的實(shí)時(shí)性、可靠性,對(duì)提高航空機(jī)載數(shù)據(jù)高可靠、高確定性的通信具有重要意義。通過深入解讀、分析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ù),李貞,唐來勝.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] 陳昕,周擁軍,萬劍雄.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.