楊金孝,王 鑫,劉慧卓
(西北工業(yè)大學(xué) 陜西 西安 710129)
AFDX是航空電子全雙工交換式以太網(wǎng)的簡稱。其在保留了普通交換式以太網(wǎng)高速、易用和低成本的特點(diǎn)的同時(shí),在之基礎(chǔ)上增加了一些增強(qiáng)和保障網(wǎng)絡(luò)可靠性和易用性的機(jī)制。AFDX網(wǎng)絡(luò)的協(xié)議標(biāo)準(zhǔn)為ARINC664協(xié)議,該協(xié)議所規(guī)定的冗余鏈路的設(shè)置能顯著提高網(wǎng)絡(luò)傳輸?shù)目煽啃訹1]。
因此,對AFDX網(wǎng)絡(luò)的端系統(tǒng)設(shè)計(jì)良好的冗余傳輸?shù)墓芾硭惴ㄊ且粋€(gè)必須要解決的問題。AFDX以太網(wǎng)冗余管理的算法設(shè)計(jì)為了進(jìn)一步的AFDX網(wǎng)絡(luò)端系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)打下了基礎(chǔ)。
根據(jù)ARINC664協(xié)議的規(guī)定,AFDX網(wǎng)絡(luò)的端系統(tǒng)之間的數(shù)據(jù)傳輸過程中可以存在多個(gè)獨(dú)立且冗余的網(wǎng)絡(luò),通常是2個(gè)網(wǎng)絡(luò),并分別稱之為A網(wǎng)絡(luò)和B網(wǎng)絡(luò)。在這樣的傳輸條件下,任何的單個(gè)的網(wǎng)絡(luò)組件發(fā)生失效的情況不會(huì)造成整個(gè)網(wǎng)絡(luò)通信的癱瘓。例如當(dāng)一個(gè)傳輸網(wǎng)絡(luò)失效時(shí),數(shù)據(jù)流依舊可以通過其他工作正常的數(shù)據(jù)傳輸網(wǎng)絡(luò)傳送,使得數(shù)據(jù)流得到保護(hù)。從概率學(xué)的角度來看,多個(gè)網(wǎng)絡(luò)同時(shí)失效的概率應(yīng)該明顯低于單個(gè)網(wǎng)絡(luò)失效的概率,因此采用AFDX以太網(wǎng)的冗余功能可以明顯的提高網(wǎng)絡(luò)傳輸?shù)目煽啃訹2]。圖1中展示了網(wǎng)絡(luò)冗余的基本概念。
圖1 冗余的概念Fig.1 Concept of redundancy
冗余的傳輸方式使得AFDX以太網(wǎng)相對普通以太網(wǎng)更為可靠,是AFDX網(wǎng)絡(luò)可靠性保障的基礎(chǔ)。冗余管理過程在接收端所處的位置在完整性檢查之后,即就是達(dá)到接收端的幀在通過完整新建超之后才會(huì)進(jìn)入冗余管理。如圖2所示,冗余管理在AFDX網(wǎng)絡(luò)傳輸過程中所處的位置
圖2 冗余管理的所處的位置Fig.2 Location of the redundancy management
冗余的方案是以每條虛擬鏈路為基礎(chǔ)的。當(dāng)一個(gè)發(fā)送端系統(tǒng)向一個(gè)接收端系統(tǒng)通過一個(gè)特定的虛擬鏈路發(fā)送數(shù)據(jù)時(shí),發(fā)送端系統(tǒng)準(zhǔn)備好一些數(shù)據(jù)并使它通過通信協(xié)議棧。在協(xié)議棧中,一個(gè)順序號(hào)(Sequence Number,簡稱SN)域被加入到每一個(gè)數(shù)據(jù)幀中。每一幀中SN的順序號(hào)的長度為8 bit,取值范圍為0~255。加入的SN能夠保證冗余網(wǎng)絡(luò)的傳輸有次序 性 且 不 會(huì) 重 復(fù)[3-4]。
AFDX以太網(wǎng)中每個(gè)數(shù)據(jù)幀同時(shí)通過兩個(gè)在物理上獨(dú)立的網(wǎng)絡(luò)傳送送。在接收端,接收端系統(tǒng)協(xié)議棧中采用“先到有效者勝出”的算法策略來管理冗余發(fā)送的數(shù)據(jù)幀。這意味著從兩個(gè)傳送數(shù)據(jù)的網(wǎng)絡(luò)中任意一個(gè)網(wǎng)絡(luò)中得到的第一個(gè)并且有效的幀將被接收,并向上通過通信棧到達(dá)接收端系統(tǒng)。而接收端收到的帶有這個(gè)順序號(hào)的第二個(gè)幀或者無效的幀將被直接丟棄。這個(gè)將適合的幀選出,將不合適的幀丟棄的機(jī)制就稱作冗余管理 RM(Redundancy Management)[5]。
對接收端系統(tǒng)的冗余管理過程來說,經(jīng)過A網(wǎng)絡(luò)和B網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)幀是等效的。冗余管理過程所關(guān)注的是數(shù)據(jù)幀中所包含的順序號(hào)SN。無論數(shù)據(jù)幀來自哪個(gè)網(wǎng)絡(luò),只要是符合算法條件的幀都被作為有效的幀被接收,反之則作為無效的幀被丟棄。
對發(fā)送端系統(tǒng)來說,端系統(tǒng)會(huì)在每一條鏈路上傳送的幀中都加入一個(gè)順序號(hào)。幀順序號(hào)的長度為8位,取值范圍是0~255。順序號(hào)的初始值為0,每次發(fā)送端系統(tǒng)復(fù)位后也為0。在同一條鏈路上傳輸?shù)那昂笙嗬^的幀,后一個(gè)幀的順序號(hào)為前一個(gè)幀的順序號(hào)加1。當(dāng)幀的順序號(hào)達(dá)到255之后的一個(gè)幀的順序號(hào)會(huì)回卷到1[6]。
對接收端系統(tǒng)來說,有效幀包括一下幾種情況:1)之前一次接收到的有效幀的順序號(hào)規(guī)定為PSN(Previous Sequence Number),則對當(dāng)前的接收端系統(tǒng)來說,在順序號(hào)在區(qū)間[PSN+1,PSN+2]中的幀為有效幀。其中的“+”運(yùn)算即包括一般情況下的數(shù)值增加1,也包括順序號(hào)回卷,也就是如果PSN=254,則 PSN+1=255,PSN+2=1。 2)在接收端系統(tǒng)復(fù)位后,無論接收端接收到的下一幀的順序號(hào)是什么,它都被視為有效幀而被接收端系統(tǒng)接收。3)如果在接收到一個(gè)有效幀之后,接收到下一個(gè)有效幀的時(shí)間超過了系統(tǒng)設(shè)定的最大偏移(SkewMax)時(shí)間,則無論下一幀的順序號(hào)是什么,它都將被視為有效幀而被接收端系統(tǒng)接收。4)因?yàn)轫樞蛱?hào)0標(biāo)志著發(fā)送端系統(tǒng)產(chǎn)生了復(fù)位,因此接收端在任何時(shí)候接收到順序號(hào)為0的幀都為有效。除此之外的包含其他順序號(hào)的幀將被丟棄[1]。
基于順序號(hào)這樣的定義,在通信中涉及到的任何裝置的復(fù)位或者單次幀丟失的情況下都不影響“先到者勝出”的基本原則,從而使AFDX網(wǎng)絡(luò)的冗余傳送功能具有可用性。
冗余管理的目的是在AFDX網(wǎng)絡(luò)采用冗余網(wǎng)絡(luò)發(fā)送的情況下,保證網(wǎng)絡(luò)傳輸?shù)目煽啃裕簿褪且谌哂嗟膫鬏斍闆r既保證數(shù)據(jù)幀的正確性又保證數(shù)據(jù)幀的非重復(fù)性。既要通過冗余傳輸?shù)姆绞教岣呖煽啃?,又不能因?yàn)槿哂鄠鬏數(shù)姆绞绞沟媒邮盏降膸l(fā)生重復(fù)。由此算法的流程設(shè)計(jì)如下,其中SN為當(dāng)前接收到的幀的順序號(hào),PSN為當(dāng)前接收端系統(tǒng)前一個(gè)有效的順序號(hào)。
圖3 算法設(shè)計(jì)的流程圖Fig.3 Flow chart the algorithms design
接收端首先判斷接收端系統(tǒng)是否復(fù)位,之后判斷等待接收是否超時(shí),這兩個(gè)判斷條件任意一個(gè)為真時(shí),無論接收到的幀的SN為多少都為有效,接收端將這一幀作為有效幀并向上通過接收協(xié)議棧,此時(shí)這一算法周期結(jié)束,接收到的SN被作為PSN保存,并帶入下一個(gè)算法周期。反之當(dāng)這兩個(gè)判斷條件均不滿足時(shí),進(jìn)一步判斷SN是否為0,當(dāng)SN=0時(shí)表明發(fā)送端發(fā)生復(fù)位,接收端將這一幀作為有效幀并向上通過接收協(xié)議棧,此時(shí)這一算法周期結(jié)束,0被作為PSN保存,并帶入下一個(gè)算法周期。反之當(dāng)SN不為0時(shí),進(jìn)一步判斷如果SN屬于區(qū)間[PSN+1,PSN+2],接收端將這一幀作為有效幀并向上通過接收協(xié)議棧,此時(shí)這一算法周期結(jié)束,接收到的SN被作為PSN保存,并帶入下一個(gè)算法周期。反之則該SN為無效SN,攜帶該SN的幀將被丟棄,接收端系統(tǒng)的PSN在這一個(gè)算法周期將不做改變而帶入下一個(gè)算法周期。
冗余的數(shù)據(jù)幀傳輸方式可以規(guī)避單網(wǎng)絡(luò)傳輸中出現(xiàn)的單個(gè)幀的錯(cuò)誤、丟失或被阻塞的風(fēng)險(xiǎn)。當(dāng)出現(xiàn)某個(gè)網(wǎng)絡(luò)的單個(gè)幀出現(xiàn)錯(cuò)誤時(shí),這個(gè)幀在到達(dá)冗余管理過程之前會(huì)被完整性檢查丟棄,這個(gè)幀不會(huì)到達(dá)冗余管理過程,而經(jīng)過另一個(gè)網(wǎng)絡(luò)傳輸?shù)呐c該幀SN相同且正確的幀會(huì)被作為有效的幀并被接收端系統(tǒng)接收,保證了接收端收到的數(shù)據(jù)幀流的正確。當(dāng)出現(xiàn)某個(gè)網(wǎng)絡(luò)上傳送的單個(gè)幀反生丟失時(shí),這個(gè)幀不會(huì)到達(dá)冗余管理過程,而經(jīng)過另一個(gè)網(wǎng)絡(luò)傳輸?shù)呐c該幀SN相同且未丟失的幀會(huì)被作為有效的幀并被接收端系統(tǒng)接收,保證了接收端收到的數(shù)據(jù)幀流的不會(huì)發(fā)生丟失。當(dāng)出現(xiàn)某個(gè)網(wǎng)絡(luò)上傳送的單個(gè)幀由于阻塞而沒有及時(shí)到達(dá)接收端時(shí),經(jīng)過另一個(gè)網(wǎng)絡(luò)傳輸?shù)呐c該幀SN相同且未被阻塞的幀將被作為有效的幀接收。并且之后該幀到達(dá)接收端時(shí),由于SN已經(jīng)不符合此時(shí)算法的要求,因此該幀被作為無效的幀被丟棄,使得接收端接收到的幀流不會(huì)因單個(gè)幀的阻塞受到影響,這就保證了冗余傳輸?shù)臄?shù)據(jù)幀的正確性。當(dāng)兩個(gè)網(wǎng)絡(luò)中的包含相同SN的幀都被正確傳輸?shù)浇邮斩藭r(shí),由于后到的幀的SN不符合冗余管理算法的要求而會(huì)被舍棄,使得同包含一個(gè)SN的數(shù)據(jù)幀只會(huì)被接收一次,這就保證了冗余傳輸?shù)臄?shù)據(jù)幀的非重復(fù)性。
需要注意的問題是,該算法在傳輸初始化時(shí)存在這樣的的風(fēng)險(xiǎn)——當(dāng)接收端系統(tǒng)產(chǎn)生復(fù)位或超時(shí)的第一個(gè)算法周期無論接收到的幀的SN為多少都為有效,因此當(dāng)在這種情況下如果恰好接收端接收到一個(gè)原本不期望通過冗余管理的幀,該幀也會(huì)通過冗余管理過程。
該算法設(shè)計(jì)應(yīng)用于某研究所的機(jī)載AFDX以太網(wǎng)端系統(tǒng)的設(shè)計(jì)。以該算法設(shè)計(jì)端系統(tǒng)中冗余管理過程的狀態(tài)機(jī),通過在單個(gè)幀發(fā)生的錯(cuò)誤情況的下接收到數(shù)據(jù)幀流的情況來檢驗(yàn)系統(tǒng)能否接收到正確的幀流。通過實(shí)際應(yīng)用的結(jié)果表明,應(yīng)用該算法設(shè)計(jì)的AFDX[7]以太網(wǎng)端系統(tǒng)功能實(shí)現(xiàn)簡便準(zhǔn)確、穩(wěn)定可靠。
在本文的算法過程中,接收端系統(tǒng)根據(jù)接收到的SN與PSN來判斷網(wǎng)絡(luò)中數(shù)據(jù)幀的傳輸狀態(tài),算法實(shí)現(xiàn)方法簡便,功能可靠。該冗余算法達(dá)到了AFDX[7]以太網(wǎng)相比普通以太網(wǎng)提高數(shù)據(jù)傳輸可靠性的目的,實(shí)現(xiàn)了設(shè)計(jì)的要求。
[1]Engineering C.ARINC664.Avionics full duplex switched ethernet(AFDX)network[S].2005.
[2]LV Tang-qi,NING Hu,WU Zhi-tao,et al.The analysis of End-to-End delays based on AFDX configuration[C]//2011 9th InternationalConference on Reliability,M.Guiyang,2011:1296-1300.
[3]陳昕,周擁軍,萬劍雄.AFDX端系統(tǒng)關(guān)鍵技術(shù)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2009,35(5):1-3.CHEN Xin,ZHOU Yong-jun,WAN Jian-xiong.Research and implementation of key techniques in AFDX end system[J].Computer Engineering,2009,35(5):1-3.
[4]趙永庫,李貞,唐來勝.AFDX網(wǎng)絡(luò)協(xié)議研究[J].計(jì)算機(jī)測量與控制,2012,20(1):8-10.ZHAO Yong-ku,LI Zhen,TANG Lai-sheng.Research on networkprotocolofAFDX[J].ComputerMeasurement&Control,2012,20(1):8-10.
[5]宋東,曾星星,丁麗娜,等.AFDX網(wǎng)絡(luò)系統(tǒng)建模與仿真實(shí)現(xiàn)[J].測控技術(shù),2012,31(2):76-80.SONG Dong,ZENG Xing-xing,DING Li-na,etal.The modelingand thesimulation implementation ofAFDX network system[J].Measurement&Control Technology,2012,31(2):76-80.
[6]武華,馬捷中,翟正軍.AFDX端系統(tǒng)通信端口的設(shè)計(jì)與實(shí)現(xiàn)[J].測控技術(shù),2009,28(3):56-59.WU Hua,MA Jie-zhong,ZHAIZheng-jun.Design and implementation of communication port in AFDX end-system[J].Measurement&Control Technology,2009,28(3):56-59.
[7]李建.基于AFDX總線的端系統(tǒng)測試技術(shù)[J].現(xiàn)代電子技術(shù),2012(7):40-42.LI Jian.The testing technology based on AFDX bus[J].Modern Electronics Technique,2012(7):40-42.