專(zhuān)利名稱:通信適配器切換方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)領(lǐng)域,更具體地說(shuō),涉及一種通信適配器切換方法和設(shè)備。
背景技術(shù):
在Windows OS中,可安裝多個(gè)用于通信的物理適配器。通過(guò)將互聯(lián)網(wǎng)協(xié)議(IP)地址分配給每個(gè)物理適配器,通信可被執(zhí)行。通過(guò)使用由網(wǎng)絡(luò)層IP地址和傳輸層端口地址組成的對(duì)(pair)來(lái)設(shè)置會(huì)話,可嘗試與另一方通信。如果對(duì)中的一個(gè)被改變,則會(huì)話被立即斷開(kāi)。
如果存在相同種類(lèi)的兩個(gè)物理適配器(例如,802.3),則不同的IP地址被分配給每個(gè)物理適配器。當(dāng)通信應(yīng)用連接通信會(huì)話時(shí),基于最佳路由路徑選擇一個(gè)IP地址,并且經(jīng)由該IP地址被分配給其的物理適配器執(zhí)行與另一方的通信。例如,即使存在諸如802.3和802.11的其它的方案的物理適配器,通信仍以如上所述的相同方式執(zhí)行。
如果當(dāng)在安裝了Windows OS并具有不同種類(lèi)的物理適配器的個(gè)人計(jì)算機(jī)(PC)中同時(shí)激活有線局域網(wǎng)(LAN)和無(wú)線LAN時(shí)用戶執(zhí)行通信,并且如果這些物理適配器中的兩個(gè)被連接到相同的域,則通常將使用通信速度更快的有線LAN來(lái)執(zhí)行通信。即,在這種情況中使用的IP地址將是被分配給有線LAN的IP地址。這里,如果有線LAN被斷開(kāi),則由于分配的IP地址不能再使用,所以Windows OS自動(dòng)斷開(kāi)使用傳輸控制協(xié)議/用戶數(shù)據(jù)報(bào)協(xié)議(TCP/UDP)通信的應(yīng)用的會(huì)話。
圖1顯示由微軟公司提供的用于提供Windows OS的組網(wǎng)功能的核心級(jí)庫(kù)。這些庫(kù)被稱為網(wǎng)絡(luò)驅(qū)動(dòng)程序接口規(guī)范(NDIS)驅(qū)動(dòng)程序。實(shí)際物理適配器當(dāng)其被連接到互連外圍設(shè)備(PCI)接口時(shí)需要驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序是由開(kāi)發(fā)者提供的迷你端口驅(qū)動(dòng)程序以便適合NDIS迷你端口規(guī)范。因此,實(shí)際物理適配器被激活以從另一方(LAN)接收包并將這些包發(fā)送到上層,并且從上層接收包并將這些包發(fā)送到LAN。
普及的TCP/IP和NETBIOS實(shí)際上被稱為協(xié)議驅(qū)動(dòng)程序,并且在上層而不是在NDIS層運(yùn)行。通常,核心級(jí)由協(xié)議驅(qū)動(dòng)程序處理,并且應(yīng)用屬于用戶級(jí)。
參照?qǐng)D1,網(wǎng)絡(luò)驅(qū)動(dòng)程序系統(tǒng)包括WIN32包驅(qū)動(dòng)程序110、上級(jí)(LAN)協(xié)議驅(qū)動(dòng)程序120、NDIS 130、中間驅(qū)動(dòng)程序140、迷你端口驅(qū)動(dòng)程序150和160、網(wǎng)絡(luò)接口卡(NIC)170和180。
裝置驅(qū)動(dòng)程序?qū)⒉僮飨到y(tǒng)(OS)連接到輸入/輸出裝置,分析從OS接收的一般請(qǐng)求,并將這些請(qǐng)求轉(zhuǎn)換為特定外圍控制器能夠理解的命令。
NIC 170和180是物理裝置,其作為在網(wǎng)絡(luò)中發(fā)送和接收數(shù)據(jù)幀的網(wǎng)關(guān)來(lái)運(yùn)行。
NDIS 130提供用于在至少一個(gè)NIC驅(qū)動(dòng)程序和包括OS的上層中的至少一個(gè)協(xié)議驅(qū)動(dòng)程序之間進(jìn)行通信的接口。即,NDIS 130提供由上級(jí)(TCP/IP)驅(qū)動(dòng)程序和NIC驅(qū)動(dòng)程序使用的功能庫(kù)(稱為封裝器)。對(duì)于各種外部功能,NIC驅(qū)動(dòng)程序依賴于NDIS 130,這些外部功能包括與協(xié)議驅(qū)動(dòng)程序通信、注冊(cè)和截取NIC硬件中斷、和與在下級(jí)的NIC 170和180通信。
NDIS驅(qū)動(dòng)程序包括NIC驅(qū)動(dòng)程序、中間驅(qū)動(dòng)程序140、和上級(jí)協(xié)議驅(qū)動(dòng)程序120。
NIC驅(qū)動(dòng)程序管理NIC。NIC驅(qū)動(dòng)程序直接被連接到在下級(jí)的硬件(NIC)并提供與上面的上級(jí)驅(qū)動(dòng)程序的接口。
迷你端口驅(qū)動(dòng)程序150和160,即,一種NIC驅(qū)動(dòng)程序,向NIC 170和180發(fā)送數(shù)據(jù)并從NIC 170和180接收數(shù)據(jù),并且執(zhí)行管理NIC 170和180所需要的面向硬件的操作。迷你端口驅(qū)動(dòng)程序150和160不能直接調(diào)用OS。取而代之,迷你端口驅(qū)動(dòng)程序150和160可調(diào)用由NDIS 130導(dǎo)出的功能。此外,迷你端口驅(qū)動(dòng)程序150和160被連接到上級(jí)驅(qū)動(dòng)程序,諸如中間驅(qū)動(dòng)程序140和傳輸協(xié)議驅(qū)動(dòng)程序。
中間驅(qū)動(dòng)程序140存在于現(xiàn)存的協(xié)議驅(qū)動(dòng)程序和迷你端口驅(qū)動(dòng)程序150和160之間。中間驅(qū)動(dòng)程序140對(duì)于上級(jí)傳輸驅(qū)動(dòng)程序而言好像迷你端口驅(qū)動(dòng)程序,對(duì)于迷你端口驅(qū)動(dòng)程序150和160而言好像協(xié)議驅(qū)動(dòng)程序。中間驅(qū)動(dòng)程序140主要用于在現(xiàn)存的協(xié)議驅(qū)動(dòng)程序和管理不被現(xiàn)存的協(xié)議驅(qū)動(dòng)程序所識(shí)別的新介質(zhì)類(lèi)型的迷你端口之間執(zhí)行介質(zhì)轉(zhuǎn)換。
由于中間驅(qū)動(dòng)程序140在驅(qū)動(dòng)程序中具有中間位置,所以它與在下級(jí)的迷你端口驅(qū)動(dòng)程序150和160通信,以及與上級(jí)協(xié)議驅(qū)動(dòng)程序120通信。中間驅(qū)動(dòng)程序140將協(xié)議進(jìn)入點(diǎn)提供給下級(jí)以及將迷你端口進(jìn)入點(diǎn)提供給上級(jí)。中間驅(qū)動(dòng)程序140用于為NDIS 130傳送用于上級(jí)協(xié)議驅(qū)動(dòng)程序120的請(qǐng)求。中間驅(qū)動(dòng)程序140對(duì)于上級(jí)協(xié)議驅(qū)動(dòng)程序120而言好像迷你端口驅(qū)動(dòng)程序。
為了向用戶提供服務(wù),上級(jí)協(xié)議驅(qū)動(dòng)程序120提供傳輸驅(qū)動(dòng)程序接口(TDI)或面向應(yīng)用的接口。上級(jí)協(xié)議驅(qū)動(dòng)程序120通過(guò)打包數(shù)據(jù)、將包分配給下級(jí)驅(qū)動(dòng)程序、和調(diào)用NDIS 130來(lái)將包發(fā)送到下級(jí)驅(qū)動(dòng)程序。此外,上級(jí)協(xié)議驅(qū)動(dòng)程序120提供與下級(jí)的協(xié)議接口以從下級(jí)驅(qū)動(dòng)程序接收包。傳輸協(xié)議驅(qū)動(dòng)程序?qū)⒔邮盏臄?shù)據(jù)發(fā)送到適當(dāng)?shù)目蛻舳藨?yīng)用。
如圖2所示,在當(dāng)前的Windows OS中,如果異類(lèi)或同類(lèi)的物理適配器之間的一條通信線路被斷開(kāi),則其關(guān)聯(lián)的會(huì)話被自動(dòng)斷開(kāi)。在TCP的情況下,介質(zhì)的信息被存儲(chǔ)在TCP控制塊(TCB)中,如果接口斷開(kāi)的信息被輸入,則由于分配給該接口的IP地址不能再使用,所以TCP自動(dòng)斷開(kāi)其關(guān)聯(lián)的會(huì)話。在Windows OS中,即使TCP未斷開(kāi)該會(huì)話,相同的IP地址也不能被同時(shí)分配給另一接口。如果嘗試將相同的IP地址分配給另一接口,那么由于TCP/IP協(xié)議驅(qū)動(dòng)程序自身被拒絕(turn down)/找到(turn up),所以所有其它現(xiàn)存的會(huì)話被斷開(kāi)。
由于這些問(wèn)題,為了假裝當(dāng)從實(shí)際的協(xié)議驅(qū)動(dòng)程序的角度看來(lái)時(shí)僅有一個(gè)接口存在,Windows OS使用可以產(chǎn)生虛擬適配器的橋功能。橋?qū)⑾嗤腎P地址提供給幾個(gè)接口。然而,執(zhí)行換手(handoff)花費(fèi)大約30秒。即,即使使用橋,但如果一個(gè)物理適配器的通信被斷開(kāi),則斷開(kāi)信號(hào)被自動(dòng)輸入到由橋產(chǎn)生的虛擬適配器,并且TCP/IP協(xié)議驅(qū)動(dòng)程序的所有會(huì)話被自動(dòng)斷開(kāi)。此外,在橋方案中,從一個(gè)介質(zhì)切換到另一個(gè)花費(fèi)太多時(shí)間。試驗(yàn)結(jié)果顯示從一個(gè)介質(zhì)切換到另一個(gè)花費(fèi)30秒或更多,該時(shí)間對(duì)應(yīng)于TCP超時(shí)時(shí)間(timeouttime)。因此,即使斷開(kāi)的信息被阻塞,會(huì)話由于TCP超時(shí)仍被斷開(kāi)。
發(fā)明內(nèi)容
本發(fā)明另外的方面和/或優(yōu)點(diǎn)將會(huì)在下面的描述中被部分地闡明,并且部分地通過(guò)描述而清楚,或者通過(guò)實(shí)施本發(fā)明可被了解。
本發(fā)明提供一種通信適配器切換方法和設(shè)備,用于當(dāng)在異類(lèi)通信適配器之間切換時(shí)保持上層中的應(yīng)用的通信會(huì)話并且提供無(wú)縫通信。
根據(jù)本發(fā)明的一方面,提供一種在具有多個(gè)通信適配器的系統(tǒng)中的通信適配器切換方法,該方法包括將多個(gè)通信適配器的地址設(shè)置為與該多個(gè)通信適配器的第一個(gè)的相同的地址;將除了第一通信適配器之外的通信適配器的包過(guò)濾模式設(shè)置為在其中所有包被接受的模式;和在通信期間當(dāng)一個(gè)通信適配器被斷開(kāi)時(shí),從多個(gè)通信適配器中的該通信適配器切換到另一個(gè)。
根據(jù)本發(fā)明的另一方面,提供一種在具有多個(gè)通信適配器的系統(tǒng)中的通信適配器切換方法,該方法包括設(shè)置有線LAN通信適配器的介質(zhì)訪問(wèn)控制(MAC)地址與無(wú)線LAN通信適配器的MAC地址相同,并且將有線LAN通信適配器的包過(guò)濾模式設(shè)置為在其中所有包被接受的不加區(qū)分模式;和在使用所述有線LAN通信適配器進(jìn)行通信期間當(dāng)所述有線LAN被斷開(kāi)時(shí),使用無(wú)線LAN信息從所述有線LAN通信適配器切換到所述無(wú)線LAN通信適配器。
所述通信適配器切換方法還可包括在使用無(wú)線LAN通信適配器進(jìn)行通信期間當(dāng)通知或指示有線LAN被連接的事件產(chǎn)生時(shí),使用有線LAN信息從所述無(wú)線LAN通信適配器切換到所述有線LAN通信適配器。
所述通信適配器切換方法還可包括將無(wú)線LAN通信適配器的包過(guò)濾模式設(shè)置為直接、多點(diǎn)傳送、或廣播模式。
所述通信適配器切換方法還可包括如果有線LAN通信適配器被斷開(kāi),則將無(wú)線LAN信息映射到虛擬適配器。
根據(jù)本發(fā)明的另一方面,提供一種在具有多個(gè)通信適配器的系統(tǒng)中的通信適配器切換設(shè)備,該設(shè)備包括虛擬適配器,其將多個(gè)通信適配器的地址設(shè)置為與該多個(gè)通信適配器的第一個(gè)的相同的地址,并且將除了第一通信適配器之外的通信適配器的包過(guò)濾模式設(shè)置為在其中所有包被接受的模式;和虛擬協(xié)議驅(qū)動(dòng)程序,其在通信期間當(dāng)一個(gè)通信適配器被斷開(kāi)時(shí),從多個(gè)通信適配器中的該適配器切換到另一個(gè)。
根據(jù)本發(fā)明的另一方面,提供一種在具有多個(gè)通信適配器的系統(tǒng)中的通信適配器切換設(shè)備,該設(shè)備包括虛擬適配器,其設(shè)置有線LAN通信適配器的MAC地址與無(wú)線LAN通信適配器的MAC地址相同,并且將有線LAN通信適配器的包過(guò)濾模式設(shè)置為在其中所有包被接受的不加區(qū)分模式;和虛擬協(xié)議驅(qū)動(dòng)程序,其在使用所述有線LAN通信適配器進(jìn)行通信期間當(dāng)所述有線LAN被斷開(kāi)時(shí),使用無(wú)線LAN信息從所述有線LAN通信適配器切換到所述無(wú)線LAN通信適配器。
所述虛擬協(xié)議驅(qū)動(dòng)程序可包括鏈路狀態(tài)檢測(cè)器,用于每當(dāng)連接或斷開(kāi)事件產(chǎn)生時(shí)提供連接或斷開(kāi)狀態(tài)。
所述虛擬協(xié)議驅(qū)動(dòng)程序還可包括最佳適配器選擇器,其基于由鏈路狀態(tài)檢測(cè)器提供的信息確定用于通信的最佳適配器。
從物理適配器接收的包可被無(wú)條件地發(fā)送到所述虛擬適配器,并且將被發(fā)送到物理適配器的包可被發(fā)送到被確定的最佳適配器。
通過(guò)下面結(jié)合附圖對(duì)實(shí)施例進(jìn)行的描述,本發(fā)明的這些和/或其他方面和優(yōu)點(diǎn)將會(huì)變得清楚和更易于理解,其中圖1是傳統(tǒng)網(wǎng)絡(luò)驅(qū)動(dòng)程序系統(tǒng)的方框圖;圖2是傳統(tǒng)網(wǎng)絡(luò)驅(qū)動(dòng)程序的方框圖;圖3是根據(jù)本發(fā)明實(shí)施例的網(wǎng)絡(luò)驅(qū)動(dòng)程序系統(tǒng)的方框圖;圖4是圖3中顯示的中間驅(qū)動(dòng)程序的方框圖;圖5A和圖5B是示出根據(jù)本發(fā)明實(shí)施例的虛擬驅(qū)動(dòng)程序加載過(guò)程的流程圖;圖6是示出根據(jù)本發(fā)明實(shí)施例的連接操作的流程圖;和圖7是示出根據(jù)本發(fā)明實(shí)施例的斷開(kāi)操作的流程圖。
具體實(shí)施例方式
現(xiàn)在對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)的描述,其示例表示在附圖中,其中,相同的標(biāo)號(hào)始終表示相同部件。下面通過(guò)參照附圖對(duì)實(shí)施例進(jìn)行描述以解釋本發(fā)明。
在下文中,將參照附圖更充分地描述本發(fā)明,附圖中顯示了本發(fā)明的實(shí)施例。
圖3是根據(jù)本發(fā)明實(shí)施例的網(wǎng)絡(luò)驅(qū)動(dòng)程序系統(tǒng)的方框圖。
根據(jù)本實(shí)施例,實(shí)際迷你端口驅(qū)動(dòng)程序僅與包括在互聯(lián)網(wǎng)驅(qū)動(dòng)程序中的虛擬協(xié)議驅(qū)動(dòng)程序綁定。虛擬迷你端口驅(qū)動(dòng)程序被產(chǎn)生,虛擬協(xié)議驅(qū)動(dòng)程序與該虛擬迷你端口驅(qū)動(dòng)程序綁定。然后諸如TCP/IP的實(shí)際協(xié)議驅(qū)動(dòng)程序僅與該虛擬迷你端口驅(qū)動(dòng)程序綁定。因此,實(shí)際協(xié)議驅(qū)動(dòng)程序僅用來(lái)自虛擬驅(qū)動(dòng)程序的信息得到連接狀態(tài)的信息,并通過(guò)虛擬驅(qū)動(dòng)程序發(fā)送和接收所有包。
參照?qǐng)D3,網(wǎng)絡(luò)驅(qū)動(dòng)程序系統(tǒng)包括根據(jù)本實(shí)施例的中間驅(qū)動(dòng)程序400、NIC 350和360、802.3迷你端口驅(qū)動(dòng)程序330、802.11迷你端口驅(qū)動(dòng)程序340、協(xié)議驅(qū)動(dòng)程序310、和NDIS 320。
中間驅(qū)動(dòng)程序400包括在下級(jí)的虛擬協(xié)議驅(qū)動(dòng)程序420和在上級(jí)的虛擬迷你端口驅(qū)動(dòng)程序410。即,在處于中間驅(qū)動(dòng)程序400的下級(jí)的虛擬協(xié)議驅(qū)動(dòng)程序420與迷你端口驅(qū)動(dòng)程序330和340之間的相互關(guān)系中,中間驅(qū)動(dòng)程序400具有協(xié)議驅(qū)動(dòng)程序的功能,并且在處于中間驅(qū)動(dòng)程序400的上級(jí)的虛擬迷你端口驅(qū)動(dòng)程序410與協(xié)議驅(qū)動(dòng)程序310之間的相互關(guān)系中,中間驅(qū)動(dòng)程序400具有迷你端口驅(qū)動(dòng)程序的功能。虛擬迷你端口驅(qū)動(dòng)程序410好像是用于協(xié)議驅(qū)動(dòng)程序310的適配器。產(chǎn)生虛擬適配器以防止TCP/IP協(xié)議驅(qū)動(dòng)程序的會(huì)話由于實(shí)際物理適配器的斷開(kāi)信息而被斷開(kāi)。即,從實(shí)際物理適配器到協(xié)議驅(qū)動(dòng)程序310的斷開(kāi)信息的傳輸可通過(guò)在中間驅(qū)動(dòng)程序400中進(jìn)行過(guò)濾而被防止。因此,TCP會(huì)話被連續(xù)地維持。
此外,如果存在兩個(gè)實(shí)際物理適配器,那么由于兩個(gè)IP地址必須被分別分配給該兩個(gè)適配器,所以通信的連續(xù)性不能被保證。因此,中間驅(qū)動(dòng)程序400被用作鏈路到該兩個(gè)物理適配器的虛擬適配器。因此,由于位于協(xié)議驅(qū)動(dòng)程序310上的應(yīng)用層(未顯示)與一個(gè)虛擬適配器通信,所以該應(yīng)用層不關(guān)心位于虛擬驅(qū)動(dòng)程序下的物理適配器的類(lèi)型和狀態(tài)。
因此,在中間驅(qū)動(dòng)程序400中,可改變包路由路徑。即,在中間驅(qū)動(dòng)程序400中,基于情況選擇通信介質(zhì),并且經(jīng)由物理適配器發(fā)送和接收包。因此,有線和無(wú)線通信幾乎可被實(shí)時(shí)切換,而不影響協(xié)議驅(qū)動(dòng)程序310。
圖4是圖3所示的中間驅(qū)動(dòng)程序400的方框圖。
參照?qǐng)D4,中間驅(qū)動(dòng)程序400包括虛擬迷你端口驅(qū)動(dòng)程序410和虛擬協(xié)議驅(qū)動(dòng)程序420。
虛擬迷你端口驅(qū)動(dòng)程序410包括虛擬適配器控制器411。虛擬適配器控制器411產(chǎn)生虛擬適配器并控制該虛擬適配器以便協(xié)議驅(qū)動(dòng)程序310與該虛擬適配器綁定并使用該虛擬適配器。
此外,當(dāng)虛擬協(xié)議驅(qū)動(dòng)程序420被綁定到物理適配器時(shí),每個(gè)物理適配器的屬性被設(shè)置。這里,虛擬適配器控制器411將相同的地址設(shè)置到每個(gè)綁定的物理適配器。當(dāng)執(zhí)行設(shè)置時(shí),在有線LAN的情況下,包過(guò)濾值被設(shè)置為不加區(qū)分模式,在該模式中所有包被接受,并且在無(wú)線LAN中,包過(guò)濾值被設(shè)置為直接/多點(diǎn)傳送/廣播模式,如通常所使用的情況。虛擬適配器的MAC地址被設(shè)置為無(wú)線LAN的MAC地址。即,在有線LAN的情況下,不加區(qū)分模式被設(shè)置并且有線LAN的MAC地址看起來(lái)沒(méi)有被設(shè)置,并且在無(wú)線LAN的情況下,由于使用了一般模式,所以虛擬適配器的MAC地址依賴于無(wú)線LAN的MAC地址。因此,在這兩種情況下,在協(xié)議驅(qū)動(dòng)程序310這方面,僅僅無(wú)線LAN的MAC地址呈現(xiàn)出被設(shè)置。
通過(guò)使用相同的MAC地址可防止為了更新集線器地址解析協(xié)議(ARP)表而重新傳輸ARP包。此外,當(dāng)使用動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP)來(lái)執(zhí)行動(dòng)態(tài)地址分配時(shí),通過(guò)作為DHCP使用的一個(gè)選項(xiàng),MAC地址被用來(lái)對(duì)PC區(qū)分。在這種情況下,因?yàn)镈HCP服務(wù)器由于連接的PC使用相同的MAC地址而將它們識(shí)別為相同的PC,所以虛擬適配器可毫無(wú)問(wèn)題地使用在DHCP環(huán)境中。此外,當(dāng)根據(jù)使用MAC地址的自動(dòng)配置而分配互聯(lián)網(wǎng)協(xié)議版本6(IPv6)地址時(shí),在下一代互聯(lián)網(wǎng)IPv6中,由于MAC地址都是相同的,所以可以毫無(wú)問(wèn)題地執(zhí)行地址分配。
當(dāng)虛擬適配器控制器411從上層中的協(xié)議驅(qū)動(dòng)程序請(qǐng)求信息時(shí),虛擬適配器控制器411將由最佳適配器選擇器421選擇的最佳適配器信息報(bào)告給上層中的協(xié)議驅(qū)動(dòng)程序。即,虛擬適配器控制器411選擇下層鏈路狀態(tài)信息并將該選擇的信息報(bào)告給上層中的協(xié)議驅(qū)動(dòng)程序。此外,當(dāng)虛擬適配器控制器411將包發(fā)送到物理適配器時(shí),虛擬適配器控制器411使用由最佳適配器選擇器421選擇的最佳適配器的綁定句柄來(lái)發(fā)送這些包。
虛擬協(xié)議驅(qū)動(dòng)程序420包括最佳適配器選擇器421,鏈路狀態(tài)檢測(cè)器422、和適配器綁定單元423。
最佳適配器選擇器421根據(jù)從鏈路狀態(tài)檢測(cè)器422輸入的有線或無(wú)線LAN的連接信息來(lái)確定用于通信的物理適配器。
鏈路狀態(tài)檢測(cè)器422檢測(cè)有線或無(wú)線LAN的鏈路狀態(tài)信息并將檢測(cè)到的鏈路狀態(tài)信息輸出到最佳適配器選擇器421。
適配器綁定單元423綁定所有激活的適配器并產(chǎn)生綁定列表424。適配器綁定單元423包括用于控制綁定的物理適配器的綁定句柄。在本實(shí)施例中,適配器綁定單元423包括用于有線LAN的802.3綁定句柄425和用于無(wú)線LAN的802.11綁定句柄426。每個(gè)綁定句柄類(lèi)似于用于虛擬適配器與下級(jí)中的迷你端口驅(qū)動(dòng)程序進(jìn)行通信的密鑰。此外,當(dāng)適配器綁定單元423接收包時(shí),它無(wú)條件地將這些包發(fā)送到虛擬適配器。
圖5A和圖5B是示出根據(jù)本發(fā)明實(shí)施例的使用DriverEntry功能初始化中間驅(qū)動(dòng)程序400的過(guò)程的流程圖。DriverEntry功能為ARP分配包池和緩沖池,注冊(cè)用于迷你端口驅(qū)動(dòng)程序330和340的驅(qū)動(dòng)程序句柄以及用于協(xié)議驅(qū)動(dòng)程序310的協(xié)議句柄,并且向NDIS320通知所述驅(qū)動(dòng)程序句柄與所述協(xié)議句柄相關(guān)聯(lián)。圖5A示出初始化中間驅(qū)動(dòng)程序400的過(guò)程。
參照?qǐng)D5A,在操作510中,中間驅(qū)動(dòng)程序400的初始化從調(diào)用DriverEntry功能開(kāi)始,該功能通過(guò)OS作為中間驅(qū)動(dòng)程序400的進(jìn)入點(diǎn)來(lái)操作。
在操作520中,虛擬適配器控制器411綁定802.3適配器。每當(dāng)虛擬適配器控制器411綁定物理適配器時(shí),虛擬適配器數(shù)據(jù)結(jié)構(gòu)被產(chǎn)生以存儲(chǔ)物理適配器的信息。因此,物理適配器的數(shù)量是多少,就有相同數(shù)量的數(shù)據(jù)結(jié)構(gòu)被產(chǎn)生。該虛擬適配器數(shù)據(jù)結(jié)構(gòu)與上層中的實(shí)際協(xié)議驅(qū)動(dòng)程序綁定。通過(guò)將數(shù)據(jù)結(jié)構(gòu)與物理適配器綁定來(lái)獲得物理適配器的綁定句柄。
虛擬適配器數(shù)據(jù)結(jié)構(gòu)中的綁定句柄數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)下級(jí)中的多個(gè)數(shù)據(jù)結(jié)構(gòu)的列表。
在802.3適配器綁定過(guò)程中,802.3有線LAN適配器的包過(guò)濾屬性在操作521中被設(shè)置為不加區(qū)分模式。不加區(qū)分模式下的適配器接受它接收到的所有包。
在操作522中,有線LAN適配器的地址被設(shè)置為802.11層2無(wú)線LAN適配器的MAC地址。
因此,802.3有線LAN適配器具有802.11無(wú)線LAN適配器的MAC地址,并可接收通過(guò)有線LAN輸入的所有包。
在操作530中,虛擬適配器控制器411綁定802.11適配器。
在操作531中,802.11無(wú)線LAN適配器的包過(guò)濾屬性被設(shè)置為直接、多點(diǎn)傳送、或廣播模式,如通常所使用的情況。
在直接模式下,被發(fā)送到特定機(jī)器的幀具有分配為目的地址的目的機(jī)器的物理地址(以太網(wǎng)地址)。具有該物理地址的機(jī)器接受該幀,其它機(jī)器不接受該幀。
在多點(diǎn)傳送模式下,被發(fā)送到一批特定機(jī)器的幀(多點(diǎn)傳送幀)具有分配為目的地址的多點(diǎn)傳送地址。這批特定機(jī)器形成多點(diǎn)傳送組。因此,包括在該多點(diǎn)傳送組中的每一臺(tái)機(jī)器可接受該幀。即使NIC不屬于該多點(diǎn)傳送組,它仍可被編程從而進(jìn)入這樣的多點(diǎn)傳送模式,在該模式下,所有多點(diǎn)傳送幀被接受。
在廣播模式下,被發(fā)送到網(wǎng)絡(luò)中的所有機(jī)器的幀被廣播到具有目的地址“0xffffff”的網(wǎng)絡(luò)。該目的地址“0xffffff”被視為幀廣播地址。在廣播模式下的NIC接受具有目的地址“0xffffff”的所有幀。通常,所有NIC被配置以便廣播幀能被接受。
在為所有物理適配器執(zhí)行了綁定之后,虛擬適配器控制器411在操作540中產(chǎn)生虛擬適配器,并在操作550中初始化該虛擬適配器。虛擬適配器的初始化包括通過(guò)分配綁定句柄數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)綁定句柄信息;產(chǎn)生綁定句柄列表;和將綁定的適配器的綁定句柄信息和點(diǎn)信息存儲(chǔ)在該綁定句柄列表中。
參照?qǐng)D5B,在操作560中,使用虛擬協(xié)議驅(qū)動(dòng)程序420來(lái)查詢連接狀態(tài)。
包括在已經(jīng)接收所述查詢的虛擬協(xié)議驅(qū)動(dòng)程序420中的鏈路狀態(tài)檢測(cè)器422在操作570中檢測(cè)802.3連接狀態(tài)信息和802.11連接狀態(tài)信息,并將該檢測(cè)到的連接狀態(tài)信息發(fā)送到最佳適配器選擇器421。
在操作580中,最佳適配器選擇器421選擇最佳適配器。當(dāng)有線LAN和無(wú)線LAN兩者都被連接時(shí),由于有線LAN更快,所以有線LAN被選擇作為最佳適配器,當(dāng)沒(méi)有有線LAN被連接時(shí),無(wú)線LAN被選擇作為最佳適配器。最佳適配器選擇器421將該選擇的最佳適配器的信息發(fā)送到虛擬適配器控制器411。
在操作590中,虛擬適配器控制器411映射接收的被選擇的最佳適配器的信息。然后,中間驅(qū)動(dòng)程序400準(zhǔn)備好進(jìn)行通信。
圖6是示出根據(jù)本發(fā)明實(shí)施例的連接操作的流程圖。
參照?qǐng)D6,當(dāng)在操作601中802.3有線LAN和802.11無(wú)線LAN都被斷開(kāi)時(shí),如果在操作602中產(chǎn)生連接事件,則在操作603中虛擬迷你端口驅(qū)動(dòng)程序410將連接狀態(tài)報(bào)告給上層中的協(xié)議驅(qū)動(dòng)程序310。上層協(xié)議驅(qū)動(dòng)程序310在操作604中確定連接的適配器是否是802.3適配器,并且如果該連接的適配器是802.3適配器,則在操作607中上層協(xié)議驅(qū)動(dòng)程序310用802.3有線LAN進(jìn)行通信。當(dāng)用802.3有線LAN進(jìn)行通信時(shí),如果在操作605中產(chǎn)生了802.11連接事件,則在操作606中更新802.11連接狀態(tài)信息。
如果在操作604中連接的適配器是802.11適配器而不是802.3適配器,則在操作608中802.11適配器信息被映射到虛擬適配器。在操作609中,上層協(xié)議驅(qū)動(dòng)程序310用802.11無(wú)線LAN進(jìn)行通信。
當(dāng)用802.11適配器進(jìn)行通信時(shí),如果在操作610中產(chǎn)生了802.3連接事件,則在操作611中802.3適配器信息被映射到虛擬適配器。在操作612中,上層協(xié)議驅(qū)動(dòng)程序310用802.3有線LAN進(jìn)行通信。
圖7是示出根據(jù)本發(fā)明實(shí)施例的斷開(kāi)操作的流程圖。
參照?qǐng)D7,當(dāng)在操作701中上層協(xié)議驅(qū)動(dòng)程序310用802.3有線LAN進(jìn)行通信時(shí),如果在操作702中產(chǎn)生斷開(kāi)事件,則在操作703中虛擬適配器控制器411確定斷開(kāi)的適配器是否是802.3適配器,并且如果該斷開(kāi)的適配器是802.3適配器,則在操作704中802.11適配器信息被重新映射到虛擬適配器。然后,在操作705中,上層協(xié)議驅(qū)動(dòng)程序310用802.11無(wú)線LAN進(jìn)行通信。
如果斷開(kāi)的適配器不是802.3適配器,則在操作706中檢查802.3有線LAN的連接狀態(tài)。
如果發(fā)現(xiàn)802.3有線LAN是連接的,則在操作707中上層協(xié)議驅(qū)動(dòng)程序310用802.3有線LAN進(jìn)行通信。
如果發(fā)現(xiàn)802.3有線LAN是斷開(kāi)的,則在操作708中虛擬迷你端口驅(qū)動(dòng)程序410將斷開(kāi)狀態(tài)報(bào)告給上層協(xié)議驅(qū)動(dòng)程序310,并且在操作709中802.3適配器信息被重新映射到虛擬適配器。然后,802.3有線LAN和802.11無(wú)線LAN都處于斷開(kāi)狀態(tài)。
如上所述,根據(jù)本發(fā)明的實(shí)施例,產(chǎn)生用于異類(lèi)通信介質(zhì)的唯一的虛擬適配器,并且一個(gè)IP地址被分配給該產(chǎn)生的虛擬適配器。當(dāng)有線LAN和無(wú)線LAN都被連接時(shí),高速的有線LAN被使用,并且如果該有線LAN被斷開(kāi),則斷開(kāi)被自動(dòng)檢測(cè)并且包被重新路由到無(wú)線LAN。因此,諸如TCP/IP的協(xié)議驅(qū)動(dòng)程序僅僅識(shí)別虛擬適配器。因此,由于即使端口地址改變IP地址也不改變,所以可保持連續(xù)的會(huì)話。
即,由于TCP/IP會(huì)話以相同的IP地址被保持,所以從有線LAN到無(wú)線LAN的無(wú)縫換手是可行的。此外,由于使用相同的MAC地址,所以用由DHCP分配的IP地址,通信連續(xù)性被保證。此外,在下一代互聯(lián)網(wǎng)IPv6中,在無(wú)狀態(tài)自動(dòng)配置環(huán)境下可進(jìn)行無(wú)縫通信,在所述環(huán)境中,根據(jù)MAC地址產(chǎn)生IPv6地址。
通過(guò)從計(jì)算機(jī)可讀介質(zhì)運(yùn)行程序,本發(fā)明可被實(shí)現(xiàn)在通用計(jì)算機(jī)中,所述計(jì)算機(jī)可讀介質(zhì)包括但不限于以下存儲(chǔ)介質(zhì),諸如磁存儲(chǔ)介質(zhì)(ROM、RAM、軟盤(pán)、磁帶等)、光可讀介質(zhì)(CD-ROM、DVD等)、和載波(通過(guò)互聯(lián)網(wǎng)的傳輸)。本發(fā)明可被實(shí)現(xiàn)為具有在其中實(shí)現(xiàn)了計(jì)算機(jī)可讀程序代碼單元的計(jì)算機(jī)可讀介質(zhì),以使許多經(jīng)由網(wǎng)絡(luò)而連接的計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)分布式處理。用于實(shí)現(xiàn)本發(fā)明的功能性程序。代碼和代碼段可由本發(fā)明所屬的技術(shù)領(lǐng)域中的程序員容易地推導(dǎo)出。
盡管已參照其優(yōu)選實(shí)施例顯示和描述了本發(fā)明,但本領(lǐng)域的技術(shù)人員應(yīng)該理解,在不脫離由所附權(quán)利要求限定的本發(fā)明的精神和范圍的情況下,可對(duì)本發(fā)明進(jìn)行形式和細(xì)節(jié)上的各種改變。這些優(yōu)選實(shí)施例應(yīng)該僅僅被認(rèn)為是描述意義上的,而不是為了限制的目的。因此,本發(fā)明的范圍不是由本發(fā)明的詳細(xì)描述所限定,而是由所附權(quán)利要求限定,該范圍內(nèi)的所有差別將被解釋為被包括在本發(fā)明中。
盡管已顯示和描述了本發(fā)明的一些實(shí)施例,但本領(lǐng)域的技術(shù)人員應(yīng)該理解,在不脫離由所附權(quán)利要求及其等同物限定其范圍的本發(fā)明的原理和精神的情況下,可對(duì)這些實(shí)施例進(jìn)行改變。
權(quán)利要求
1.一種在具有多個(gè)通信適配器的系統(tǒng)中的通信適配器切換方法,該方法包括將多個(gè)通信適配器的地址設(shè)置為與該多個(gè)通信適配器的第一個(gè)的相同的地址;將除了第一通信適配器之外的所有通信適配器的包過(guò)濾模式設(shè)置為在其中所有包被接受的模式;和在通信期間當(dāng)一個(gè)通信適配器被斷開(kāi)時(shí),從多個(gè)通信適配器中的該通信適配器切換到另一個(gè)。
2.一種在具有多個(gè)通信適配器的系統(tǒng)中的通信適配器切換方法,該方法包括將有線局域網(wǎng)通信適配器的介質(zhì)訪問(wèn)控制地址設(shè)置為無(wú)線局域網(wǎng)通信適配器的介質(zhì)訪問(wèn)控制地址相同的介質(zhì)訪問(wèn)控制地址;將有線局域網(wǎng)通信適配器的包過(guò)濾模式設(shè)置為在其中所有包被接受的不加區(qū)分模式;和在使用所述有線局域網(wǎng)通信適配器進(jìn)行通信期間當(dāng)所述有線局域網(wǎng)被斷開(kāi)時(shí),使用無(wú)線局域網(wǎng)信息從所述有線局域網(wǎng)通信適配器切換到所述無(wú)線局域網(wǎng)通信適配器。
3.如權(quán)利要求2所述的方法,還包括在使用所述無(wú)線局域網(wǎng)通信適配器進(jìn)行通信期間當(dāng)指示所述有線局域網(wǎng)被連接的事件產(chǎn)生時(shí),使用有線局域網(wǎng)信息從所述無(wú)線局域網(wǎng)通信適配器切換到所述有線局域網(wǎng)通信適配器。
4.如權(quán)利要求2所述的方法,還包括將無(wú)線局域網(wǎng)通信適配器的包過(guò)濾模式設(shè)置為直接、多點(diǎn)傳送、或廣播模式。
5.如權(quán)利要求2所述的方法,還包括如果有線局域網(wǎng)通信適配器被斷開(kāi),則將無(wú)線局域網(wǎng)信息映射到虛擬適配器。
6.一種在具有多個(gè)通信適配器的系統(tǒng)中的通信適配器切換設(shè)備,該設(shè)備包括虛擬適配器,其將多個(gè)通信適配器的地址設(shè)置為與該多個(gè)通信適配器的第一個(gè)的地址相同,并且將除了第一通信適配器之外的所有通信適配器的包過(guò)濾模式設(shè)置為在其中所有包可被接受的模式;和虛擬協(xié)議驅(qū)動(dòng)程序,其在通信期間當(dāng)一個(gè)通信適配器被斷開(kāi)時(shí),從多個(gè)通信適配器中的該通信適配器切換到另一個(gè)。
7.一種在具有多個(gè)通信適配器的系統(tǒng)中的通信適配器切換設(shè)備,該設(shè)備包括虛擬適配器,其設(shè)置有線局域網(wǎng)通信適配器的介質(zhì)訪問(wèn)控制地址與無(wú)線局域網(wǎng)通信適配器的介質(zhì)訪問(wèn)控制地址相同,并且將有線局域網(wǎng)通信適配器的包過(guò)濾模式設(shè)置為在其中所有包被接受的不加區(qū)分模式;和虛擬協(xié)議驅(qū)動(dòng)程序,其在使用所述有線局域網(wǎng)通信適配器進(jìn)行通信期間當(dāng)所述有線局域網(wǎng)被斷開(kāi)時(shí),使用無(wú)線局域網(wǎng)信息從所述有線局域網(wǎng)通信適配器切換到所述無(wú)線局域網(wǎng)通信適配器。
8.如權(quán)利要求7所述的設(shè)備,其中,所述虛擬協(xié)議驅(qū)動(dòng)程序包括鏈路狀態(tài)檢測(cè)器,該鏈路狀態(tài)檢測(cè)器每當(dāng)連接或斷開(kāi)事件產(chǎn)生時(shí)提供連接或斷開(kāi)狀態(tài)信息。
9.如權(quán)利要求8所述的設(shè)備,其中,所述虛擬協(xié)議驅(qū)動(dòng)程序還包括最佳適配器選擇器,該最佳適配器選擇器基于由所述鏈路狀態(tài)檢測(cè)器提供的信息確定用于通信的最佳適配器。
10.如權(quán)利要求9所述的設(shè)備,其中,從物理適配器接收的包被無(wú)條件地發(fā)送到所述虛擬適配器,并且將被發(fā)送到物理適配器的包被發(fā)送到被確定的最佳適配器。
11.一種在具有多個(gè)通信適配器的系統(tǒng)中的通信適配器切換方法,該方法包括檢查有線局域網(wǎng)是否被連接;如果該有線局域網(wǎng)被連接,則產(chǎn)生無(wú)線局域網(wǎng)連接事件;更新無(wú)線局域網(wǎng)連接信息;和用有線局域網(wǎng)進(jìn)行通信。
12.如權(quán)利要求11所述的方法,還包括如果有線局域網(wǎng)未被連接,則將無(wú)線局域網(wǎng)信息映射到虛擬適配器;用無(wú)線局域網(wǎng)進(jìn)行通信;產(chǎn)生有線局域網(wǎng)的連接事件;將有線局域網(wǎng)信息映射到虛擬適配器;和用該有線局域網(wǎng)進(jìn)行通信。
13.如權(quán)利要求11所述的方法,其中,有線局域網(wǎng)是802.3有線局域網(wǎng)。
14.如權(quán)利要求11所述的方法,其中,無(wú)線局域網(wǎng)是802.11無(wú)線局域網(wǎng)。
15.一種選擇最佳適配器的方法,該方法包括查詢連接狀態(tài);檢測(cè)連接狀態(tài)信息;基于所述連接狀態(tài)信息選擇最佳適配器;和映射選擇的最佳適配器的信息。
16.如權(quán)利要求15所述的方法,其中,如果有線局域網(wǎng)和無(wú)線局域網(wǎng)都被連接,則最佳適配器是有線局域網(wǎng),否則最佳適配器是被連接至其的那一個(gè)。
17.如權(quán)利要求16所述的方法,其中,有線局域網(wǎng)是802.3有線局域網(wǎng)。
18.如權(quán)利要求16所述的方法,其中,無(wú)線局域網(wǎng)是802.11無(wú)線局域網(wǎng)。
全文摘要
提供一種在具有多個(gè)通信適配器的系統(tǒng)中的通信適配器切換方法,該方法包括將多個(gè)通信適配器的地址設(shè)置為與該多個(gè)通信適配器的第一個(gè)的地址相同;將除了第一通信適配器之外的所有通信適配器的包過(guò)濾模式設(shè)置為在其中所有包被接受的模式;和在通信期間當(dāng)一個(gè)通信適配器被斷開(kāi)時(shí),從多個(gè)通信適配器中的該通信適配器切換到另一個(gè)。因此,由于TCP/IP會(huì)話以相同的IP地址被保持,所以從有線LAN到無(wú)線LAN的無(wú)縫換手是可行的。
文檔編號(hào)H04L29/08GK1764139SQ20051010288
公開(kāi)日2006年4月26日 申請(qǐng)日期2005年9月14日 優(yōu)先權(quán)日2004年9月14日
發(fā)明者李學(xué)求, 李鏞勛, 金永根, 金坪洙 申請(qǐng)人:三星電子株式會(huì)社