韓曉,趙昶宇
?
Intel 82580雙冗余網(wǎng)卡切換技術(shù)
韓曉1,趙昶宇2
(1.海軍駐天津八三五七所軍事代表室,天津 300308;2.天津津航計算技術(shù)研究所,天津 300308)
對VxWorks系統(tǒng)下Intel 82580雙冗余網(wǎng)卡的通訊和切換技術(shù)進行了研究,給出了Intel 82580雙冗余網(wǎng)卡在VxWorks系統(tǒng)下實現(xiàn)雙網(wǎng)切換的方法。該方法在VxWorks系統(tǒng)底層驅(qū)動中設計并實現(xiàn)冗余通道,設計完成后滿足了系統(tǒng)要求的誤碼率和切換時間,并把雙冗余網(wǎng)卡的切換時間提高到60 ms,達到了系統(tǒng)的設計指標。
VxWorks;雙冗余網(wǎng)卡;以太網(wǎng);艦艇控制系統(tǒng)
隨著網(wǎng)絡技術(shù)的飛速發(fā)展和艦艇現(xiàn)代化程度的不斷提高,傳統(tǒng)的10 M/100 M以太網(wǎng)已遠遠不能滿足作戰(zhàn)系統(tǒng)高速大寬帶的通信網(wǎng)絡需求。在艦艇的特殊環(huán)境下,不但要求網(wǎng)絡信息傳輸速度快、抗干擾能力強,還要求在網(wǎng)絡局部故障時,作戰(zhàn)系統(tǒng)不出現(xiàn)癱瘓和失效狀態(tài)。本文結(jié)合某艦艇控制系統(tǒng)網(wǎng)絡通信的實際應用,考慮到艦艇控制系統(tǒng)對實時性的要求,對VxWorks系統(tǒng)下高可靠性網(wǎng)絡通訊技術(shù)進行了深入研究,實現(xiàn)了VxWorks下Intel 82580千兆雙冗余網(wǎng)卡的配置以及雙網(wǎng)卡切換。
本文以2塊Intel 82580網(wǎng)絡適配芯片為例說明在VxWorks實時操作系統(tǒng)下,如何配置多網(wǎng)卡進行通信。
首先在WorkBench的安裝目錄WindRivervxworks-6.8 argetconfigpcPentium4config.h文件中增加以下定義:
#define INCLUDE_GEI825XX_VXB_END
#define INCLUDE_END
#define INCLUDE_GEI8254X_END
如果希望通過Intel 82580千兆雙冗余網(wǎng)卡來引導VxWorks系統(tǒng),則需要將DEFAULT_BOOT_LINE宏定義修改為:
#define DEFAULT_BOOT_LINE
"ata=0,0(0,0) host:/ata1a/vxWorks.fk1 h=191.8.200.69 e=191.8.200.11 u=target pw=target o=gei"
通過上述配置方法,雙通道冗余網(wǎng)卡的驅(qū)動就訂制在BSP中,然后重新編譯生成Bootrom和VxWorks鏡像,加載到系統(tǒng)中運行調(diào)試。為了確保網(wǎng)卡自動切換精確到毫秒級,將SYS_CLK_RATE設置為100.
在作戰(zhàn)系統(tǒng)中,為了保證網(wǎng)絡通信的實時可靠性,對上網(wǎng)的設備和系統(tǒng)提出了雙網(wǎng)卡冗余備份、故障時自動切換的要求。采用兩個網(wǎng)絡適配器互為備份,當其中一個出現(xiàn)故障時,系統(tǒng)檢測到錯誤,并迅速切換到另一塊網(wǎng)絡適配器上。系統(tǒng)連接圖如圖1所示。
圖1 雙網(wǎng)卡系統(tǒng)連接圖
為了使2塊Intel 82580千兆網(wǎng)卡實現(xiàn)高效雙冗余備份,必須保證這2塊網(wǎng)卡具有相同的物理地址和IP地址。這樣對于上層應用系統(tǒng)而言,系統(tǒng)中呈現(xiàn)“單網(wǎng)卡”的特征;反之,當系統(tǒng)中一塊網(wǎng)卡切換到另一塊網(wǎng)卡工作時,如果IP地址發(fā)生變化,則系統(tǒng)無法正常接收和發(fā)送數(shù)據(jù)。如果IP地址不改變,而物理地址改變,則會引起協(xié)議棧中ARP綁定表的變化,而重新對應ARP綁定表中IP地址與網(wǎng)卡物理地址的關(guān)系會延長兩個網(wǎng)卡之間的切換時間。
然而,每塊網(wǎng)卡的物理地址在全世界范圍內(nèi)是唯一的,它保存在網(wǎng)卡的PROM中。為了使2塊Intel 82580千兆網(wǎng)卡具有相同的物理地址,在網(wǎng)卡初始化時,從PROM中讀出其中一塊網(wǎng)卡的物理地址,將該物理地址的內(nèi)容寫入另一塊網(wǎng)卡物理地址寄存器和數(shù)據(jù)結(jié)構(gòu)變量中,在此情況下,這2塊Intel 82580千兆網(wǎng)卡就具有完全相同的物理地址了。
從理論上看,以太網(wǎng)絡的冗余可以在OSI的各層中實現(xiàn),越是在底層實現(xiàn),檢測和切換的時間就越短,冗余的效果越好。因此,VxWorks系統(tǒng)下的雙網(wǎng)切換工作是在網(wǎng)卡驅(qū)動層實現(xiàn)的。在END型網(wǎng)絡驅(qū)動中實現(xiàn)網(wǎng)卡設備的裝載、網(wǎng)絡芯片的初始化、網(wǎng)絡報文的接收和發(fā)送、網(wǎng)絡的切換等功能。在系統(tǒng)啟動后,VxWorks系統(tǒng)通過網(wǎng)卡加載函數(shù),調(diào)用END型網(wǎng)絡驅(qū)動,在加載過程中完成網(wǎng)絡芯片的初始化、內(nèi)存池的分配、網(wǎng)卡設備控制結(jié)構(gòu)的配置等,最后將網(wǎng)卡設備控制結(jié)構(gòu)提交給MUX層,供上層系統(tǒng)操作網(wǎng)卡時使用。雙冗余網(wǎng)卡驅(qū)動的實現(xiàn)原理如圖2所示。
圖2 雙冗余網(wǎng)卡驅(qū)動的實現(xiàn)原理圖
圖2中的網(wǎng)絡通道通訊監(jiān)控任務是對當前使用的網(wǎng)絡適配器進行不間斷的定時查詢,當發(fā)現(xiàn)該網(wǎng)絡適配器連接狀態(tài)異常時,就切換到另一個網(wǎng)絡適配器上。如果切換成功,該網(wǎng)絡適配器就成為當前使用的網(wǎng)絡適配器,該監(jiān)控任務繼續(xù)對當前的網(wǎng)絡適配器進行監(jiān)控。
監(jiān)控任務主要完成以下工作:當監(jiān)控任務檢測到Intel 82580千兆網(wǎng)卡的狀態(tài)寄存器的Link位為0,表明該網(wǎng)絡適配器工作正常,不進行網(wǎng)卡切換;當監(jiān)控任務檢測到Intel 82580千兆網(wǎng)卡的狀態(tài)寄存器的Link位為1,表明該網(wǎng)絡適配器連接異常,需要進行網(wǎng)卡切換。
如果當前使用的網(wǎng)卡為Gei0,則需要切換到Gei1上,反之亦然。Gei0切換到Gei1的代碼為:
ipDetach(0,“gei”);
ipAttach(1,“gei”);
ifconfig(“gei1 192.168.0.100 up”);
為了驗證上述網(wǎng)卡切換方法,搭建硬件環(huán)境,將2塊Intel 82580千兆網(wǎng)卡所在的加固機作為Client端,開發(fā)平臺的主機PC作為Server端,使用2根網(wǎng)線將網(wǎng)卡的雙端口同時連接到交換機上,主機端網(wǎng)絡也通過網(wǎng)線連接到交換機上。
在Client端編寫測試程序,向Server端發(fā)送數(shù)據(jù)報文,并統(tǒng)計發(fā)送的報文計數(shù),Server端收到網(wǎng)絡報文數(shù)據(jù)后,統(tǒng)計接收的報文計數(shù),并將收到的報文內(nèi)容發(fā)送給Client端;在Server端編寫測試程序,向Client端發(fā)送數(shù)據(jù)報文,并統(tǒng)計發(fā)送的報文計數(shù),Client端收到網(wǎng)絡報文數(shù)據(jù)后,統(tǒng)計接收的報文計數(shù),并將收到的報文內(nèi)容發(fā)送給Server端。同時,Server端使用ping命令檢測和Client端的網(wǎng)絡是否連接成功。在整個過程中,通過交錯切斷雙通道冗余網(wǎng)卡中的任意一個端口連接的方法檢測切換功能,發(fā)現(xiàn)ping命令始終未中斷,收發(fā)數(shù)據(jù)穩(wěn)定、可靠,滿足要求。
為了測試切換時間是否滿足要求,設置數(shù)據(jù)的發(fā)送速率為350幀/秒,相當于每3 ms左右完成1幀數(shù)據(jù)的發(fā)送。當發(fā)生1次切換,平均增加丟幀數(shù)為20,最大不超過30幀。通過計算可以得知切換導致的網(wǎng)絡中斷時間平均為60 ms,滿足系統(tǒng)對切換時間不超過90 ms的指標要求。
通過以上功能和性能測試驗證表明,本文設計的雙冗余網(wǎng)卡切換技術(shù)的實現(xiàn)方法有效,所開發(fā)的代碼穩(wěn)定、可靠,能夠滿足作戰(zhàn)系統(tǒng)的需求。
本文對Intel 82580千兆雙冗余以太網(wǎng)在VxWorks下的驅(qū)動開發(fā)及切換技術(shù)進行了深入研究,并提出了雙冗余網(wǎng)卡切換的切實、可行的解決方案。通過試驗驗證,本設計很好地解決了在某作戰(zhàn)控制系統(tǒng)上實現(xiàn)雙冗余網(wǎng)絡實時、可靠、高速進行信息傳遞這一技術(shù)難題,雙冗余網(wǎng)卡的切換時間、誤碼率都在指標范圍內(nèi),經(jīng)過各項嚴格測試,Intel 82580雙冗余網(wǎng)卡系統(tǒng)滿足功能和性能要求,已經(jīng)成功交付使用。
[1]孔詳營,柏桂枝.嵌入式實時操作系統(tǒng)VxWorks及其開發(fā)系統(tǒng)Tornado[M].北京:中國電力出版社,2002.
[2]劉利強,戴運桃.基于VxWorks的雙端口網(wǎng)卡智能雙冗余驅(qū)動[J].電子技術(shù)應用,2006,32(07):64-66.
[3]田煒,劉利強.VxWorks環(huán)境下雙網(wǎng)卡冗余備份技術(shù)的實現(xiàn)[J].自動化技術(shù)與應用,2003,20(07):32-34.
2095-6835(2018)20-0081-02
TP393.05
A
10.15913/j.cnki.kjycx.2018.20.081
韓曉(1987—),男,碩士,工程師,從事裝備質(zhì)量監(jiān)督和質(zhì)量管理體系方面的研究。趙昶宇(1982—),男,陜西漢中人,工學碩士,高級工程師,主要從事嵌入式系統(tǒng)軟件測試方面的研究。
〔編輯:張思楠〕