專利名稱:一種VxWorks系統(tǒng)下的多網(wǎng)卡雙冗余裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域,尤其涉及一種VxWorks系統(tǒng)下的多網(wǎng)卡雙冗余裝置 及系統(tǒng)。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的成熟,具有價(jià)格低廉、連接方便等優(yōu)點(diǎn)的以太網(wǎng)已成為各種控制 系統(tǒng)接口互連的主要媒介。它作為一種通用網(wǎng)絡(luò)數(shù)據(jù)通信系統(tǒng),在全球計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域已 經(jīng)得到了廣泛的應(yīng)用。同時(shí),隨著以太網(wǎng)的穩(wěn)定性、抗干擾性和帶寬問(wèn)題的逐步改善,以太 網(wǎng)正在大規(guī)模進(jìn)入工業(yè)控制領(lǐng)域。用于工業(yè)過(guò)程控制、通信、航天器和導(dǎo)航系統(tǒng)中的網(wǎng)絡(luò)不 但要求信息傳輸速度快,抗干擾能力強(qiáng),還要求網(wǎng)絡(luò)具有高穩(wěn)定性和高可靠性,在網(wǎng)絡(luò)局部 故障或受損時(shí),全系統(tǒng)不至于癱瘓失效。雙冗余設(shè)計(jì)作為一種提高系統(tǒng)可靠性的有效方法,已經(jīng)得到了廣泛的應(yīng)用。對(duì)于 網(wǎng)絡(luò)系統(tǒng)中的單個(gè)節(jié)點(diǎn),常常需要對(duì)網(wǎng)卡進(jìn)行雙冗余備份,即每個(gè)節(jié)點(diǎn)都采用兩個(gè)網(wǎng)絡(luò)接 口,兩個(gè)網(wǎng)絡(luò)接口間用兩個(gè)集線器或交換機(jī)互連,當(dāng)正常通信的網(wǎng)卡或線路出現(xiàn)故障時(shí)該 節(jié)點(diǎn)能自動(dòng)地切換到備份網(wǎng)卡進(jìn)行通信。VxWorks操作系統(tǒng)是美國(guó)WindRiver公司于1983年設(shè)計(jì)開(kāi)發(fā)的一種嵌入式實(shí)時(shí)操 作系統(tǒng)(Real Time Operation System,RT0S),是嵌入式開(kāi)發(fā)環(huán)境的關(guān)鍵組成部分,具有良 好的持續(xù)發(fā)展能力、高性能的內(nèi)核、高可靠性和卓越的實(shí)時(shí)性,被廣泛應(yīng)用在通信、軍事、航 空、航天等精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中。VxWorks操作系統(tǒng)支持多網(wǎng)卡,但非雙冗 余設(shè)計(jì),每塊網(wǎng)卡都有獨(dú)立的物理地址和IP地址,以獨(dú)立的形式供應(yīng)用系統(tǒng)使用。理論上講,雙冗余網(wǎng)卡技術(shù)可以在開(kāi)放系統(tǒng)互連參考模型(Open SystemInterconnection Reference Model, 0SI)各層中實(shí)現(xiàn),而且越在底層實(shí)現(xiàn),檢測(cè)和 切換的速度越快,效果越好。在應(yīng)用層中實(shí)現(xiàn)雙冗余設(shè)計(jì),主要方法是在程序中發(fā)起任務(wù),以查詢的方式不斷 對(duì)當(dāng)前工作網(wǎng)卡的工作狀態(tài)進(jìn)行判斷,當(dāng)判斷出當(dāng)前使用的網(wǎng)卡處于非正常狀態(tài)時(shí),將刪 除當(dāng)前網(wǎng)卡的路由,在主機(jī)列表中刪除當(dāng)前主機(jī)名,并解除網(wǎng)卡與協(xié)議的綁定,然后進(jìn)行備 份網(wǎng)卡的配置,為備份網(wǎng)卡綁定協(xié)議,設(shè)置子網(wǎng)掩碼和IP地址。在驅(qū)動(dòng)層中實(shí)現(xiàn)雙冗余設(shè) 計(jì),主要方法是在網(wǎng)卡的底層驅(qū)動(dòng)中根據(jù)網(wǎng)卡的鏈路連接狀態(tài)來(lái)交換默認(rèn)網(wǎng)卡及備份網(wǎng)卡 的句柄來(lái)實(shí)現(xiàn)雙冗余切換,在軟件上需要修改網(wǎng)卡底層的驅(qū)動(dòng)代碼,實(shí)現(xiàn)比較復(fù)雜,兼容性 及可移植性較差。因此,在應(yīng)用層中實(shí)現(xiàn)雙冗余網(wǎng)卡的方法比較簡(jiǎn)單,容易實(shí)現(xiàn),但網(wǎng)卡的切換速度 較慢,不利于網(wǎng)絡(luò)的可靠性和實(shí)時(shí)性。在驅(qū)動(dòng)層中實(shí)現(xiàn)雙冗余設(shè)計(jì)切換速度較快,但需要對(duì) 網(wǎng)卡的底層驅(qū)動(dòng)修改較多,實(shí)現(xiàn)比較復(fù)雜,兼容性及可移植性較差。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提供一種VxWorks系統(tǒng)下的多網(wǎng)卡雙冗余裝置,使得多網(wǎng)卡雙冗余設(shè)計(jì)容易實(shí)現(xiàn),切換速度快,具有良好的兼容性及可移植性。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種VxWorks系統(tǒng)下的多網(wǎng)卡雙冗余裝置,所述裝 置包括虛擬網(wǎng)卡,配置于MUX層與網(wǎng)卡驅(qū)動(dòng)層之間,用于管理兩個(gè)互為冗余的物理網(wǎng)卡, 將鏈路連接良好的物理網(wǎng)卡句柄傳遞到網(wǎng)卡驅(qū)動(dòng)層,使用鏈路連接良好的物理網(wǎng)卡收發(fā)數(shù) 據(jù);鏈路監(jiān)測(cè)單元,用于對(duì)物理網(wǎng)卡的鏈路連接狀態(tài)進(jìn)行監(jiān)測(cè),在鏈路切換條件滿足 時(shí),輸出鏈路切換通知;以及鏈路切換單元,用于根據(jù)所述鏈路切換通知,將鏈路連接故障的物理網(wǎng)卡切換到 鏈路連接良好的物理網(wǎng)卡;所述虛擬網(wǎng)卡與其管理的兩個(gè)互為冗余的物理網(wǎng)卡對(duì)外呈現(xiàn)相同的MAC地址和 IP地址。本發(fā)明實(shí)施例的另一目的在于提供一種網(wǎng)絡(luò)數(shù)據(jù)通信系統(tǒng),所述系統(tǒng)包括多個(gè)虛擬網(wǎng)卡,配置于MUX層與網(wǎng)卡驅(qū)動(dòng)層之間,分別用于管理兩個(gè)互為冗余的 物理網(wǎng)卡,將鏈路連接良好的物理網(wǎng)卡句柄傳遞到網(wǎng)卡驅(qū)動(dòng)層,使用鏈路連接良好的物理 網(wǎng)卡收發(fā)數(shù)據(jù);多個(gè)與每個(gè)虛擬網(wǎng)卡對(duì)應(yīng)的鏈路監(jiān)測(cè)單元,用于對(duì)相應(yīng)虛擬網(wǎng)卡所管理的物理網(wǎng) 卡的鏈路連接狀態(tài)進(jìn)行監(jiān)測(cè),在鏈路切換條件滿足時(shí),輸出鏈路切換通知;以及多個(gè)與每個(gè)虛擬網(wǎng)卡對(duì)應(yīng)的鏈路切換單元,用于根據(jù)所述鏈路切換通知,將相應(yīng) 虛擬網(wǎng)卡所管理的鏈路連接故障的物理網(wǎng)卡切換到鏈路連接良好的物理網(wǎng)卡;所述每個(gè)虛擬網(wǎng)卡與其管理的兩個(gè)互為冗余的物理網(wǎng)卡對(duì)外呈現(xiàn)相同的MAC地 址和IP地址。本發(fā)明實(shí)施例在VxWorks系統(tǒng)的MUX層與網(wǎng)卡驅(qū)動(dòng)層之間配置一個(gè)虛擬網(wǎng)卡,利 用虛擬網(wǎng)卡管理兩個(gè)物理網(wǎng)卡,實(shí)現(xiàn)多網(wǎng)卡雙冗余架構(gòu),并實(shí)現(xiàn)了多網(wǎng)卡雙冗余機(jī)制,支持 多種類型的體系結(jié)構(gòu)及網(wǎng)卡,可以滿足不同系統(tǒng)對(duì)雙冗余功能的要求。
圖1是VxWorks系統(tǒng)下的SENS協(xié)議棧層次圖;圖2是本發(fā)明實(shí)施例提供的多網(wǎng)卡雙冗余架構(gòu)的拓?fù)浣Y(jié)構(gòu)圖;圖3是本發(fā)明實(shí)施例提供的多網(wǎng)卡雙冗余裝置的結(jié)構(gòu)圖;圖4是本發(fā)明實(shí)施例提供的虛擬網(wǎng)卡的設(shè)計(jì)結(jié)構(gòu)圖;圖5是本發(fā)明實(shí)施例提供的鏈路連接狀態(tài)機(jī)的結(jié)構(gòu)圖;圖6是本發(fā)明實(shí)施例提供的鏈路監(jiān)測(cè)單元的結(jié)構(gòu)圖;圖7是本發(fā)明實(shí)施例提供的鏈路連接狀態(tài)監(jiān)測(cè)轉(zhuǎn)換實(shí)現(xiàn)流程圖;圖8是本發(fā)明實(shí)施例提供的鏈路連接狀態(tài)轉(zhuǎn)換模塊的結(jié)構(gòu)圖;圖9是本發(fā)明實(shí)施例提供的鏈路切換實(shí)現(xiàn)流程圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。本發(fā)明實(shí)施例在VxWorks系統(tǒng)下的MUX層與網(wǎng)卡驅(qū)動(dòng)層之間配置一個(gè)虛擬網(wǎng)卡, 利用虛擬網(wǎng)卡管理兩個(gè)物理網(wǎng)卡,實(shí)現(xiàn)多網(wǎng)卡雙冗余架構(gòu),并實(shí)現(xiàn)多網(wǎng)卡雙冗余機(jī)制。Vxfforks系統(tǒng)中的網(wǎng)絡(luò)協(xié)議棧稱為可裁減增強(qiáng)型網(wǎng)絡(luò)協(xié)議棧(ScalableEnhanced Network Stack, SENS),SENS協(xié)議棧層次如圖1所示。SENS的基本特征和傳統(tǒng)的TCP/IP網(wǎng) 絡(luò)協(xié)議棧相似,但從圖1中可以看出SENS最大的特點(diǎn)是在數(shù)據(jù)鏈路層和網(wǎng)絡(luò)協(xié)議層之間多 了 MUX層。在SENS中,網(wǎng)絡(luò)接口的驅(qū)動(dòng)程序稱為增強(qiáng)型網(wǎng)絡(luò)驅(qū)動(dòng)程序(Enhanced Network Driver, END),它處于數(shù)據(jù)鏈路層。IP層和TCP/UDP層合稱為網(wǎng)絡(luò)協(xié)議層。在數(shù)據(jù)鏈路層和 網(wǎng)絡(luò)協(xié)議層之間有應(yīng)用程序接口(API),這個(gè)接口在SENS中稱為MUX (Multiplexer)接口。在網(wǎng)絡(luò)協(xié)議層,VxWorks系統(tǒng)典型地使用TCP/IP協(xié)議(也支持其它協(xié)議),在數(shù)據(jù) 鏈路層典型地使用以太網(wǎng)(Ethernet),也支持其它數(shù)據(jù)傳輸?shù)奈锢砻襟w,例如遠(yuǎn)距離連接 使用的串行線路接入方式,如PPP等。但是,無(wú)論使用什么物理媒體,網(wǎng)絡(luò)接口驅(qū)動(dòng)都要用 到MUX與網(wǎng)絡(luò)協(xié)議層通信。應(yīng)用MUX的主要目的是將網(wǎng)絡(luò)接口驅(qū)動(dòng)和協(xié)議層分開(kāi),這樣就使得網(wǎng)絡(luò)接口驅(qū)動(dòng) 和協(xié)議層彼此基本上保持獨(dú)立。這種獨(dú)立性使得加載一個(gè)新的協(xié)議或網(wǎng)絡(luò)接口驅(qū)動(dòng),所有 現(xiàn)有的基于MUX的協(xié)議就都可以用這個(gè)新的網(wǎng)絡(luò)接口驅(qū)動(dòng)程序。同樣,如果要加一個(gè)新的 基于MUX的協(xié)議,現(xiàn)有的網(wǎng)絡(luò)接口驅(qū)動(dòng)也能夠用MUX來(lái)與新協(xié)議通信。本發(fā)明實(shí)施例在MUX層與網(wǎng)卡驅(qū)動(dòng)層之間配置一個(gè)虛擬網(wǎng)卡,利用虛擬網(wǎng)卡管理 兩個(gè)物理網(wǎng)卡,這樣就形成了多網(wǎng)卡雙冗余架構(gòu)的拓?fù)浣Y(jié)構(gòu),如圖2所示。圖3示出了本發(fā)明實(shí)施例提供的多網(wǎng)卡雙冗余裝置的結(jié)構(gòu),為了便于說(shuō)明,僅示 出了與本發(fā)明實(shí)施例相關(guān)的部分。虛擬網(wǎng)卡31配置在MUX層與網(wǎng)卡驅(qū)動(dòng)層之間,用于管理兩個(gè)互為冗余的物理網(wǎng) 卡,包括MUX層接口 311和網(wǎng)卡驅(qū)動(dòng)層接口 312。在本發(fā)明實(shí)施例中,虛擬網(wǎng)卡31與其管理的兩個(gè)互為冗余的物理網(wǎng)卡對(duì)外呈現(xiàn) 相同的介質(zhì)訪問(wèn)控制(Media Access Control, MAC)地址和IP地址。MUX層接口 311用于MUX層及虛擬網(wǎng)卡31之間的數(shù)據(jù)傳遞。網(wǎng)卡驅(qū)動(dòng)層接口 312用于虛擬網(wǎng)卡31與其管理的物理網(wǎng)卡驅(qū)動(dòng)層的網(wǎng)卡句柄的 傳遞。鏈路監(jiān)測(cè)單元32用于對(duì)物理網(wǎng)卡的鏈路連接狀態(tài)進(jìn)行監(jiān)測(cè),在鏈路切換條件滿 足時(shí),輸出鏈路切換通知。鏈路切換單元33根據(jù)鏈路監(jiān)測(cè)單元32輸出的鏈路切換通知,將鏈路連接故障的 物理網(wǎng)卡切換到鏈路連接良好的物理網(wǎng)卡,保證網(wǎng)絡(luò)的穩(wěn)定性及可靠性。本發(fā)明實(shí)施例提供的上述雙冗余裝置的結(jié)構(gòu)既能解決單IP地址的問(wèn)題,又能保 證對(duì)底層驅(qū)動(dòng)程序盡可能少地更改,保證了虛擬網(wǎng)卡的通用性與各個(gè)模塊的獨(dú)立性,兼容 性及可移植性更好。在上述結(jié)構(gòu)中,MUX層接口 311是靜態(tài)的,網(wǎng)卡驅(qū)動(dòng)層接口 312除了互相傳遞的參 數(shù)是動(dòng)態(tài)變化的之外也是靜態(tài)的。鏈路監(jiān)測(cè)單元32及鏈路切換單元33是動(dòng)態(tài)的。鏈路監(jiān) 測(cè)單元32在實(shí)施鏈路監(jiān)測(cè)的過(guò)程中啟動(dòng)一個(gè)定時(shí)器,隔一段時(shí)間就去檢測(cè)網(wǎng)絡(luò)的鏈路連接狀態(tài),若鏈路連接狀態(tài)異常,則告知鏈路切換單元33,實(shí)現(xiàn)物理網(wǎng)卡的切換。物理網(wǎng)卡的 切換致使兩個(gè)物理網(wǎng)卡接口之間傳遞的網(wǎng)卡句柄的互換,最終實(shí)現(xiàn)了網(wǎng)絡(luò)冗余的功能,保 證了網(wǎng)絡(luò)的穩(wěn)定性及可靠性。在本發(fā)明實(shí)施例中,對(duì)于虛擬網(wǎng)卡31的配置,主要是對(duì)MUX層接口 311和網(wǎng)卡驅(qū) 動(dòng)層接口 312兩個(gè)接口的配置。虛擬網(wǎng)卡31不僅要用于TCP/IP網(wǎng)絡(luò)協(xié)議棧與網(wǎng)卡數(shù)據(jù)鏈 路層之間的數(shù)據(jù)傳輸,而且要呈現(xiàn)出物理網(wǎng)卡具有的特性,有實(shí)際的網(wǎng)絡(luò)節(jié)點(diǎn)、MAC地址及 IP地址。虛擬網(wǎng)卡31的具體設(shè)計(jì)結(jié)構(gòu)如圖4所示,由圖4可知,虛擬網(wǎng)卡31有其自身的函 數(shù)列表,具體如下LOCAL NET_FUNCS vnetEndFuncTable ={(FUNCPTR)vnetEndStart,(FUNCPTR)vnetEndStop,(FUNCPTR)vnetEndUnload,(FUNCPTR)vnetEndloctl,(FUNCPTR)vnetEndSend,(FUNCPTR)vnetEndMCastAdd,(FUNCPTR)vnetEndMCastDel,(FUNCPTR)vnetEndMCastGet,(FUNCPTR)vnetEndPo11Send,(FUNCPTR)vnetEndPollRcv,vnetEndEtherAddressForm,VnetEndEtherPacketDataGet,VnetEndEtherPacketAddrGet};NET_FUNCS為網(wǎng)卡驅(qū)動(dòng)函數(shù)列表的結(jié)構(gòu)體類型。因此,在本發(fā)明實(shí)施例中,對(duì)虛擬網(wǎng)卡31的設(shè)計(jì)即轉(zhuǎn)變成了函數(shù)列表中具體函數(shù) 的設(shè)計(jì)。對(duì)于MUX層,虛擬網(wǎng)卡31提供了驅(qū)動(dòng)加載時(shí)的函數(shù)列表,由VnetEndLoad函數(shù)加載 虛擬網(wǎng)卡31的函數(shù)列表,返回虛擬網(wǎng)卡31的標(biāo)識(shí)句柄給MUX層,數(shù)據(jù)從MUX層提供給TCP/ IP網(wǎng)絡(luò)協(xié)議棧處理。對(duì)于虛擬網(wǎng)卡31與網(wǎng)卡驅(qū)動(dòng)層的接口,除了 VnetEndLoad函數(shù)有自己的具體實(shí)現(xiàn) 外,其余的函數(shù)都是調(diào)用底層物理網(wǎng)卡的驅(qū)動(dòng)函數(shù),不同類型的物理網(wǎng)卡均有各自的底層 驅(qū)動(dòng)函數(shù)。具體物理網(wǎng)卡的驅(qū)動(dòng)函數(shù)的選擇由鏈路監(jiān)測(cè)單元32及鏈路切換單元33來(lái)決定, 當(dāng)鏈路連接故障時(shí),虛擬網(wǎng)卡31切換相應(yīng)的物理網(wǎng)卡句柄,將鏈路連接良好的物理網(wǎng)卡句 柄傳遞到網(wǎng)卡驅(qū)動(dòng)層,使用鏈路連接良好的物理網(wǎng)卡收發(fā)數(shù)據(jù)。作為本發(fā)明的一個(gè)實(shí)施例,在多網(wǎng)卡均要求雙冗余設(shè)計(jì)的網(wǎng)絡(luò)數(shù)據(jù)通信系統(tǒng)中, 根據(jù)實(shí)際要求,要?jiǎng)?chuàng)建多個(gè)虛擬網(wǎng)卡,每個(gè)虛擬網(wǎng)卡管理兩個(gè)互為冗余的物理網(wǎng)卡,互不干 擾,每個(gè)虛擬網(wǎng)卡及其管理的兩個(gè)互為冗余的物理網(wǎng)卡均呈現(xiàn)單MAC地址和單IP地址,但 各個(gè)虛擬網(wǎng)卡的實(shí)現(xiàn)都采取圖4中虛擬網(wǎng)卡的函數(shù)列表,在系統(tǒng)注冊(cè)時(shí)使用不同的設(shè)備號(hào)來(lái)區(qū)別不同的虛擬網(wǎng)卡。作為本發(fā)明的一個(gè)實(shí)施例,在鏈路連接狀態(tài)的監(jiān)測(cè)過(guò)程中,將鏈路連接狀態(tài)分為 四種狀態(tài)鏈路良好狀態(tài)LINK_UP、鏈路良好到故障的過(guò)渡狀態(tài)LINK_FAIL、鏈路故障到良 好的過(guò)渡狀態(tài)LINK_BACK、鏈路故障狀態(tài)LINK_D0WN,當(dāng)鏈路處于鏈路故障狀態(tài)LINK_D0WN, 且滿足鏈路切換條件時(shí),實(shí)施鏈路切換,如圖5所示。其中LINK_UP與LINK_D0WN為兩個(gè)穩(wěn)定的狀態(tài),LINK_FAIL與LINK_BACK為兩個(gè)過(guò)渡狀 態(tài),即線路狀態(tài)在鏈路良好狀態(tài)LINK_UP與鏈路故障狀態(tài)LINK_D0WN之間轉(zhuǎn)換時(shí),要在一定 的時(shí)間內(nèi)鏈路連接狀態(tài)穩(wěn)定后才能進(jìn)行轉(zhuǎn)換,必須滿足時(shí)間條件才能進(jìn)行鏈路連接狀態(tài)的轉(zhuǎn)換。本發(fā)明實(shí)施例中,如圖6所示,鏈路監(jiān)測(cè)單元32包括定時(shí)循環(huán)監(jiān)測(cè)模塊321和鏈 路連接狀態(tài)轉(zhuǎn)換模塊322,定時(shí)循環(huán)監(jiān)測(cè)模塊321定時(shí)監(jiān)測(cè)讀取物理層(Physical Layer, PHY)狀態(tài)寄存器,循環(huán)監(jiān)測(cè)物理網(wǎng)卡的鏈路連接狀態(tài),鏈路連接狀態(tài)轉(zhuǎn)換模塊322根據(jù)定 時(shí)循環(huán)監(jiān)測(cè)模塊321監(jiān)測(cè)的當(dāng)前鏈路連接狀態(tài),將當(dāng)前鏈路連接狀態(tài)轉(zhuǎn)換到相應(yīng)的狀態(tài), 在當(dāng)前鏈路連接狀態(tài)滿足鏈路切換條件時(shí),調(diào)用鏈路切換單元33實(shí)施鏈路切換。具體的鏈路連接狀態(tài)轉(zhuǎn)換如圖7所示,詳述如下若鏈路的初始連接狀態(tài)為鏈路良好狀態(tài)LINK_UP,定時(shí)循環(huán)監(jiān)測(cè)模塊321定時(shí)監(jiān) 測(cè)讀取PHY狀態(tài)寄存器,若監(jiān)測(cè)到鏈路連接狀態(tài)為UP,則鏈路連接狀態(tài)轉(zhuǎn)換模塊322將鏈路 連接狀態(tài)停留在鏈路良好狀態(tài)LINK_UP,若鏈路連接狀態(tài)為故障DOWN,則鏈路連接狀態(tài)轉(zhuǎn) 換模塊322將鏈路連接狀態(tài)轉(zhuǎn)換到鏈路良好到故障的過(guò)渡狀態(tài)LINK_FAIL ;定時(shí)循環(huán)監(jiān)測(cè) 模塊321再去定時(shí)監(jiān)測(cè)讀取PHY狀態(tài)寄存器,若監(jiān)測(cè)到鏈路良好UP,則鏈路連接狀態(tài)轉(zhuǎn)換 模塊322將鏈路連接狀態(tài)故障到良好的過(guò)渡到鏈路良好狀態(tài)LINK_UP,若監(jiān)測(cè)到鏈路故障 DOWN,則鏈路連接狀態(tài)轉(zhuǎn)換模塊322判斷鏈路故障延遲doWnDelay[N]是否已滿足,若不滿 足,則將鏈路故障延遲doWnDelay[N]減1,將鏈路連接狀態(tài)停留在鏈路良好到故障的過(guò)渡 狀態(tài)LINK_FAIL,等待定時(shí)循環(huán)監(jiān)測(cè)模塊321的下次監(jiān)測(cè);若故障延遲downDelay [N]為0, 鏈路連接狀態(tài)轉(zhuǎn)換模塊322將鏈路連接狀態(tài)則轉(zhuǎn)為鏈路故障狀態(tài)LINK_D0WN,此時(shí)調(diào)用鏈 路切換單元33,實(shí)施鏈路的切換。若鏈路的初始狀態(tài)為鏈路故障狀態(tài)LINK_D0WN,定時(shí)循環(huán)監(jiān)測(cè)模塊321定時(shí)監(jiān)測(cè) 讀取PHY狀態(tài)寄存器,若監(jiān)測(cè)到鏈路故障DOWN,則鏈路連接狀態(tài)轉(zhuǎn)換模塊322將鏈路連接 狀態(tài)停留在鏈路故障狀態(tài)LINK_D0WN,判斷鏈路故障時(shí)間doWnTime[N]是否滿足條件,若鏈 路故障時(shí)間downTime [N]等于0,則調(diào)用鏈路切換單元33,實(shí)施鏈路的切換,若不滿足條件, 則對(duì)鏈路故障時(shí)間doWnTime[N]減1處理;若定時(shí)循環(huán)監(jiān)測(cè)模塊321監(jiān)測(cè)到鏈路良好UP, 則鏈路連接狀態(tài)轉(zhuǎn)換模塊322將鏈路連接狀態(tài)轉(zhuǎn)換到鏈路故障到良好的過(guò)渡狀態(tài)LINK_ BACK,定時(shí)循環(huán)監(jiān)測(cè)模塊321再去定時(shí)監(jiān)測(cè)讀取PHY狀態(tài)寄存器,若鏈路故障DOWN,則鏈路 連接狀態(tài)轉(zhuǎn)換模塊322將鏈路連接狀態(tài)故障到良好的過(guò)渡到鏈路故障狀態(tài)LINK_D0WN,將 鏈路故障時(shí)間doWnTime[N]復(fù)位;若定時(shí)循環(huán)監(jiān)測(cè)模塊321監(jiān)測(cè)到鏈路良好UP,則鏈路連 接狀態(tài)轉(zhuǎn)換模塊322判斷鏈路良好延遲upDelay [N]是否已滿,若不滿足,將鏈路良好延遲 upDelay[N]減1,將鏈路連接狀態(tài)停留在鏈路故障到良好的過(guò)渡狀態(tài)LINK_BACK,等待定時(shí) 循環(huán)監(jiān)測(cè)模塊321的下次監(jiān)測(cè);若鏈路良好延遲upDelay[N]為0,則將鏈路連接狀態(tài)轉(zhuǎn)到 鏈路良好狀態(tài)LINK_UP。
圖8示出了鏈路連接狀態(tài)轉(zhuǎn)換模塊的結(jié)構(gòu),為了便于說(shuō)明,僅示出了與本發(fā)明實(shí) 施例相關(guān)的部分。鏈路連接狀態(tài)機(jī)3221記錄鏈路連接狀態(tài)的變化。鏈路切換條件配置模塊3222配 置鏈路切換的條件,例如鏈路故障延遲downDelay [N]、鏈路故障時(shí)間downTime [N]、鏈路良 好延遲upDelay[N]等。鏈路轉(zhuǎn)換控制模塊3223根據(jù)定時(shí)循環(huán)監(jiān)測(cè)模塊321監(jiān)測(cè)的物理網(wǎng) 卡的鏈路連接狀態(tài),以及鏈路連接狀態(tài)機(jī)3221記錄的鏈路連接狀態(tài),控制鏈路連接狀態(tài)的 轉(zhuǎn)換,當(dāng)鏈路切換條件滿足時(shí),發(fā)出鏈路切換通知,調(diào)用鏈路切換單元33實(shí)施鏈路切換。在存在多個(gè)虛擬網(wǎng)卡的網(wǎng)絡(luò)數(shù)據(jù)通信系統(tǒng)中,每個(gè)虛擬網(wǎng)卡均有各自的鏈路監(jiān)測(cè) 單元來(lái)監(jiān)測(cè)其管理的兩個(gè)物理網(wǎng)卡的鏈路連接狀態(tài),互不影響,圖6中的N即虛擬網(wǎng)卡的標(biāo) 識(shí),表示第N個(gè)虛擬網(wǎng)卡。因此,若系統(tǒng)中有N個(gè)虛擬網(wǎng)卡,則需要?jiǎng)?chuàng)建N個(gè)定時(shí)監(jiān)測(cè)看門 狗任務(wù)。鏈路切換單元33主要實(shí)現(xiàn)的是當(dāng)前使用物理網(wǎng)卡的句柄與備用物理網(wǎng)卡的句柄 之間的互換,具體流程如圖9所示,詳述如下在步驟S901中,判斷有無(wú)鏈路切換的通知,有則執(zhí)行步驟S902,否則繼續(xù)執(zhí)行步 驟 S901 ;在S902步驟中,獲取兩條鏈路的狀態(tài);在S903步驟中,判斷兩條鏈路是否均故障,是則返回執(zhí)行步驟S901,否則執(zhí)行步 驟 S904 ;在步驟S904中,交換當(dāng)前網(wǎng)卡與備用網(wǎng)卡的句柄;在步驟S905中,置故障網(wǎng)卡為備用狀態(tài)。由圖9可知,鏈路切換單元33處于等待切換通知信號(hào)的循環(huán)模式,若獲取到鏈路 切換通知信號(hào),則獲取兩條鏈路的連接狀態(tài);若兩條鏈路的連接狀態(tài)均有故障,則不進(jìn)行切 換,否則獲取鏈路連接狀態(tài)良好的通路的網(wǎng)卡句柄,實(shí)現(xiàn)兩條鏈路網(wǎng)卡句柄的互換,最后設(shè) 置處于故障狀態(tài)的鏈路處于備用狀態(tài)。在存在多個(gè)虛擬網(wǎng)卡的網(wǎng)絡(luò)數(shù)據(jù)通信系統(tǒng)中,每個(gè)虛擬網(wǎng)卡均有各自的切換通知 信號(hào),實(shí)現(xiàn)的切換只發(fā)生在各自管理的兩個(gè)物理網(wǎng)卡之間,若系統(tǒng)中有N個(gè)虛擬網(wǎng)卡,則啟 動(dòng)N個(gè)切換任務(wù),來(lái)實(shí)現(xiàn)各個(gè)虛擬網(wǎng)卡管理的兩個(gè)物理網(wǎng)卡之間的雙冗余切換。在本發(fā)明實(shí)施例中,單IP及MAC地址的實(shí)現(xiàn)是要保證虛擬網(wǎng)卡及其管理的兩個(gè)互 為冗余的物理網(wǎng)卡的IP及MAC地址相同,對(duì)上層應(yīng)用程序及用戶呈現(xiàn)單IP及MAC地址特 性。單IP地址的實(shí)現(xiàn)是通過(guò)虛擬網(wǎng)卡31實(shí)現(xiàn)的,在配置IP地址時(shí),給每一個(gè)虛擬網(wǎng) 卡配置各自的IP地址,注冊(cè)進(jìn)網(wǎng)絡(luò)協(xié)議棧,數(shù)據(jù)在傳輸時(shí)通過(guò)虛擬網(wǎng)卡的IP地址可以傳遞 到此虛擬網(wǎng)卡管理的兩個(gè)物理網(wǎng)卡上。單MAC地址的實(shí)現(xiàn)是通過(guò)獲取其中一個(gè)物理網(wǎng)卡的MAC地址,然后給另一個(gè)物理 網(wǎng)卡及虛擬網(wǎng)卡設(shè)置同樣的MAC地址,這樣的實(shí)現(xiàn)可以保證對(duì)于客戶來(lái)說(shuō)的單MAC地址。每個(gè)虛擬網(wǎng)卡及其管理的兩個(gè)互為冗余的物理網(wǎng)卡對(duì)于客戶來(lái)說(shuō)呈現(xiàn)相同的IP 及MAC地址特性,若系統(tǒng)中有N個(gè)虛擬網(wǎng)卡,各個(gè)虛擬網(wǎng)卡及其管理的兩個(gè)物理網(wǎng)卡均有各 自的IP及MAC地址,各自相互獨(dú)立,互補(bǔ)影響。在本發(fā)明實(shí)施例中,兼容性包括虛擬網(wǎng)卡的擴(kuò)展兼容及冗余網(wǎng)卡與非冗余網(wǎng)卡之間的兼容。為了兼容不同系統(tǒng)中對(duì)雙冗余的不同要求,在本發(fā)明實(shí)施例中,用一個(gè)全局描述 表來(lái)維護(hù)多個(gè)虛擬網(wǎng)卡的擴(kuò)展,全局描述表成員的示例結(jié)構(gòu)如下struct net_end_tbl{int vUnit ; /氺virtual net number in endDevTbl氺/int rUnitNuml ; /氺the first net managed by virtual net*/int rUnitNum2 ; /氺the second net mangede by virtual net*/char mac—data[6] ;/*MAC address*/char*pIpAddr ; /氺virtual net IP address*/char^pGateffay ; /氺virtual net Gateffay address氺/BOOL flag ;/氺flag氺/} NET_END_TBL ;上述結(jié)構(gòu)中,vUnit為虛擬網(wǎng)卡在全局描述表中的序列號(hào),rUnitNuml為虛擬網(wǎng) 卡管理的第一個(gè)物理網(wǎng)卡標(biāo)識(shí),rUnitNum2為虛擬網(wǎng)卡管理的第二個(gè)物理網(wǎng)卡標(biāo)識(shí),mac_ data[6]為MAC地址,ρIpAddr為虛擬網(wǎng)卡的IP地址,pGateWay為虛擬網(wǎng)卡的網(wǎng)關(guān)。全局描述表的示例結(jié)構(gòu)如下NET_END_TBL netEndTbl[VNET_NUM]={{0, rUnitNuml, rUnitNum2, {0x0,0x0,0x0,0x0,0x0,0x0}, “ IP 地址〃,〃網(wǎng)關(guān) 地址〃,F(xiàn)ALSE},......,{N, rUnitNuml, rUnitNum2, {0x0,0x0,0x0,0x0,0x0,0x0}, “ IP 地 址〃,“MAC 地址〃,F(xiàn)ALSE},};在上述全局描述表中,VNET_NUM為虛擬網(wǎng)卡的數(shù)目,N等于VNET_NUM_1。根據(jù)不同的系統(tǒng)要求,修改這個(gè)全局描述表則可以滿足不同系統(tǒng)對(duì)雙冗余的不同 要求,例如將分屬于不同虛擬網(wǎng)卡的兩個(gè)物理網(wǎng)卡配置為互為冗余,或者通過(guò)增加、刪減虛 擬網(wǎng)卡的數(shù)目,調(diào)整冗余的物理網(wǎng)卡數(shù)量。通過(guò)修改全局描述表中虛擬網(wǎng)卡管理的兩個(gè)物 理網(wǎng)卡的標(biāo)識(shí)可以方便地實(shí)現(xiàn)不同對(duì)的物理網(wǎng)卡的冗余;通過(guò)增加虛擬網(wǎng)卡的個(gè)數(shù)及兩個(gè) 物理網(wǎng)卡的標(biāo)識(shí)可以實(shí)現(xiàn)兩個(gè)物理網(wǎng)卡的非冗余要求到冗余要求的轉(zhuǎn)變;通過(guò)刪減虛擬網(wǎng) 卡及其管理的兩個(gè)物理網(wǎng)卡的標(biāo)識(shí)可以實(shí)現(xiàn)兩個(gè)物理網(wǎng)卡的冗余要求到非冗余要求的轉(zhuǎn) 變,大大提高了系統(tǒng)的兼容性。另外,系統(tǒng)中有可能存在要求冗余功能的網(wǎng)卡及無(wú)冗余功能要求的網(wǎng)卡,針對(duì)此 情況,在本發(fā)明實(shí)施例中,對(duì)于NET_END_TBL表中之外的網(wǎng)卡標(biāo)識(shí),均按無(wú)冗余功能要求的 網(wǎng)卡處理,需要單獨(dú)配置各自的IP地址。本發(fā)明實(shí)施例在VxWorks系統(tǒng)的MUX層與網(wǎng)卡驅(qū)動(dòng)層之間配置一個(gè)虛擬網(wǎng)卡,利 用虛擬網(wǎng)卡管理兩個(gè)物理網(wǎng)卡,實(shí)現(xiàn)多網(wǎng)卡雙冗余架構(gòu),并實(shí)現(xiàn)了多網(wǎng)卡雙冗余機(jī)制,支持 多種類型的體系結(jié)構(gòu)及網(wǎng)卡,可以滿足不同系統(tǒng)對(duì)雙冗余功能的要求。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種VxWorks系統(tǒng)下的多網(wǎng)卡雙冗余裝置,其特征在于,所述裝置包括虛擬網(wǎng)卡,配置于MUX層與網(wǎng)卡驅(qū)動(dòng)層之間,用于管理兩個(gè)互為冗余的物理網(wǎng)卡,將鏈 路連接良好的物理網(wǎng)卡句柄傳遞到網(wǎng)卡驅(qū)動(dòng)層,使用鏈路連接良好的物理網(wǎng)卡收發(fā)數(shù)據(jù);鏈路監(jiān)測(cè)單元,用于對(duì)物理網(wǎng)卡的鏈路連接狀態(tài)進(jìn)行監(jiān)測(cè),在鏈路切換條件滿足時(shí),輸 出鏈路切換通知;以及鏈路切換單元,用于根據(jù)所述鏈路切換通知,將鏈路連接故障的物理網(wǎng)卡切換到鏈路 連接良好的物理網(wǎng)卡;所述虛擬網(wǎng)卡與其管理的兩個(gè)互為冗余的物理網(wǎng)卡對(duì)外呈現(xiàn)相同的MAC地址和IP地址。
2.如權(quán)利要求1所述的裝置,其特征在于,所述虛擬網(wǎng)卡包括 MUX層接口,用于所述MUX層及虛擬網(wǎng)卡之間的數(shù)據(jù)傳遞;網(wǎng)卡驅(qū)動(dòng)層接口,用于所述虛擬網(wǎng)卡與其管理的物理網(wǎng)卡驅(qū)動(dòng)層的網(wǎng)卡句柄的傳遞。
3.如權(quán)利要求1所述的裝置,其特征在于,所述鏈路監(jiān)測(cè)單元包括 定時(shí)循環(huán)監(jiān)測(cè)模塊,用于定時(shí)循環(huán)監(jiān)測(cè)物理網(wǎng)卡的鏈路連接狀態(tài);鏈路連接狀態(tài)轉(zhuǎn)換模塊,用于根據(jù)所述定時(shí)循環(huán)監(jiān)測(cè)模塊監(jiān)測(cè)的當(dāng)前鏈路連接狀態(tài), 將當(dāng)前鏈路連接狀態(tài)轉(zhuǎn)換到相應(yīng)的狀態(tài),在當(dāng)前鏈路連接狀態(tài)滿足鏈路切換條件時(shí),調(diào)用 所述鏈路切換單元實(shí)施鏈路切換。
4.如權(quán)利要求3所述的裝置,其特征在于,所述鏈路連接狀態(tài)轉(zhuǎn)換模塊包括 鏈路連接狀態(tài)機(jī),用于記錄鏈路連接狀態(tài)的變化;鏈路切換條件配置模塊,用于配置鏈路切換的條件;鏈路轉(zhuǎn)換控制模塊,用于根據(jù)所述定時(shí)循環(huán)監(jiān)測(cè)模塊監(jiān)測(cè)的鏈路連接狀態(tài),以及所述 鏈路連接狀態(tài)機(jī)記錄的鏈路連接狀態(tài),控制鏈路連接狀態(tài)的轉(zhuǎn)換,當(dāng)鏈路切換條件滿足時(shí), 發(fā)出鏈路切換通知。
5.如權(quán)利要求1至4任一權(quán)利要求所述的裝置,其特征在于,所述鏈路連接狀態(tài)包括 鏈路良好狀態(tài)、鏈路良好到故障的過(guò)渡狀態(tài)、鏈路故障到良好的過(guò)渡狀態(tài),以及鏈路故障狀 態(tài);當(dāng)鏈路處于鏈路故障狀態(tài),且滿足鏈路切換條件時(shí),實(shí)施鏈路切換。
6.一種網(wǎng)絡(luò)數(shù)據(jù)通信系統(tǒng),其特征在于,所述系統(tǒng)包括多個(gè)虛擬網(wǎng)卡,配置于MUX層與網(wǎng)卡驅(qū)動(dòng)層之間,每個(gè)虛擬網(wǎng)卡具有單MAC地址和單IP 地址,分別用于管理兩個(gè)互為冗余的物理網(wǎng)卡,將鏈路連接良好的物理網(wǎng)卡句柄傳遞到網(wǎng) 卡驅(qū)動(dòng)層,使用鏈路連接良好的物理網(wǎng)卡收發(fā)數(shù)據(jù);多個(gè)與每個(gè)虛擬網(wǎng)卡對(duì)應(yīng)的鏈路監(jiān)測(cè)單元,用于對(duì)相應(yīng)虛擬網(wǎng)卡所管理的物理網(wǎng)卡的 鏈路連接狀態(tài)進(jìn)行監(jiān)測(cè),在鏈路切換條件滿足時(shí),輸出鏈路切換通知;以及多個(gè)與每個(gè)虛擬網(wǎng)卡對(duì)應(yīng)的鏈路切換單元,用于根據(jù)所述鏈路切換通知,將相應(yīng)虛擬 網(wǎng)卡所管理的鏈路連接故障的物理網(wǎng)卡切換到鏈路連接良好的物理網(wǎng)卡;所述每個(gè)虛擬網(wǎng)卡與其管理的兩個(gè)互為冗余的物理網(wǎng)卡對(duì)外呈現(xiàn)相同的MAC地址和 IP地址。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述虛擬網(wǎng)卡包括 MUX層接口,用于所述MUX層及虛擬網(wǎng)卡之間的數(shù)據(jù)傳遞;網(wǎng)卡驅(qū)動(dòng)層接口,用于所述虛擬網(wǎng)卡與其管理的物理網(wǎng)卡驅(qū)動(dòng)層的網(wǎng)卡句柄的傳遞。
8.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述鏈路監(jiān)測(cè)單元包括定時(shí)循環(huán)監(jiān)測(cè)模塊,用于定時(shí)循環(huán)監(jiān)測(cè)物理網(wǎng)卡的鏈路連接狀態(tài);鏈路連接狀態(tài)轉(zhuǎn)換模塊,用于根據(jù)所述定時(shí)循環(huán)監(jiān)測(cè)模塊監(jiān)測(cè)的當(dāng)前鏈路連接狀態(tài), 將當(dāng)前鏈路連接狀態(tài)轉(zhuǎn)換到相應(yīng)的狀態(tài),在當(dāng)前鏈路連接狀態(tài)滿足鏈路切換條件時(shí),調(diào)用 所述鏈路切換單元實(shí)施鏈路切換。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述鏈路連接狀態(tài)轉(zhuǎn)換模塊包括鏈路連接狀態(tài)機(jī),用于記錄鏈路連接狀態(tài)的變化;鏈路切換條件配置模塊,用于配置鏈路切換的條件;鏈路轉(zhuǎn)換控制模塊,用于根據(jù)所述定時(shí)循環(huán)監(jiān)測(cè)模塊監(jiān)測(cè)的鏈路連接狀態(tài),以及所述 鏈路連接狀態(tài)機(jī)記錄的鏈路連接狀態(tài),控制鏈路連接狀態(tài)的轉(zhuǎn)換,當(dāng)鏈路切換條件滿足時(shí), 發(fā)出鏈路切換通知。
10.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述多個(gè)虛擬網(wǎng)卡采用全局描述表維護(hù), 實(shí)現(xiàn)虛擬網(wǎng)卡的擴(kuò)展兼容及冗余網(wǎng)卡與非冗余網(wǎng)卡之間的兼容;所述全局描述表包含有虛擬網(wǎng)卡在全局描述表中的序列號(hào),虛擬網(wǎng)卡管理的第一個(gè)物 理網(wǎng)卡標(biāo)識(shí),虛擬網(wǎng)卡管理的第二個(gè)物理網(wǎng)卡標(biāo)識(shí),虛擬網(wǎng)卡的MAC地址,以及虛擬網(wǎng)卡的 IP地址;對(duì)于在所述全局描述表之外的物理網(wǎng)卡標(biāo)識(shí),按無(wú)冗余要求的物理網(wǎng)卡處理,單獨(dú)配 置所述物理網(wǎng)卡的IP地址。
11.如權(quán)利要求6至10任一權(quán)利要求所述的系統(tǒng),其特征在于,所述鏈路連接狀態(tài)包括 鏈路良好狀態(tài)、鏈路良好到故障的過(guò)渡狀態(tài)、鏈路故障到良好的過(guò)渡狀態(tài),以及鏈路故障狀 態(tài);當(dāng)鏈路處于鏈路故障狀態(tài),且滿足鏈路切換條件時(shí),實(shí)施鏈路切換。
全文摘要
本發(fā)明適用于計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域,提供了一種VxWorks系統(tǒng)下的多網(wǎng)卡雙冗余裝置及系統(tǒng),所述裝置包括虛擬網(wǎng)卡,配置于MUX層與網(wǎng)卡驅(qū)動(dòng)層之間,用于管理兩個(gè)互為冗余的物理網(wǎng)卡,將鏈路連接良好的物理網(wǎng)卡句柄傳遞到網(wǎng)卡驅(qū)動(dòng)層,使用鏈路連接良好的物理網(wǎng)卡收發(fā)數(shù)據(jù);鏈路監(jiān)測(cè)單元,用于對(duì)物理網(wǎng)卡的鏈路連接狀態(tài)進(jìn)行監(jiān)測(cè),在鏈路切換條件滿足時(shí),輸出鏈路切換通知;以及鏈路切換單元,用于根據(jù)所述鏈路切換通知,將鏈路連接故障的物理網(wǎng)卡切換到鏈路連接良好的物理網(wǎng)卡;所述虛擬網(wǎng)卡與其管理的兩個(gè)互為冗余的物理網(wǎng)卡對(duì)外呈現(xiàn)相同的MAC地址和IP地址。本發(fā)明支持多種類型的體系結(jié)構(gòu)及網(wǎng)卡,可以滿足不同系統(tǒng)對(duì)雙冗余功能的要求。
文檔編號(hào)H04L1/22GK102104470SQ20091018904
公開(kāi)日2011年6月22日 申請(qǐng)日期2009年12月17日 優(yōu)先權(quán)日2009年12月17日
發(fā)明者孔德深, 李守軒, 柴先平 申請(qǐng)人:研祥智能科技股份有限公司