專利名稱::路由網(wǎng)絡(luò)中的容錯通信的制作方法路由網(wǎng)絡(luò)中的容錯通信背景在計(jì)算機(jī)聯(lián)網(wǎng)環(huán)境中,多個節(jié)點(diǎn)可在網(wǎng)絡(luò)上彼此通信。如果網(wǎng)絡(luò)發(fā)生故障,則這些節(jié)點(diǎn)之間的通信可能中斷。概述以下呈現(xiàn)了本公開的簡化概述以便向讀者提供基本的了解。本概述并非本公開的寬泛綜述,也并不標(biāo)識本發(fā)明的關(guān)鍵或重要要素或者刻劃本發(fā)明的范圍。其目的僅是為了以簡化方式呈現(xiàn)在此所公開的某些概念作為在隨后呈現(xiàn)的更詳細(xì)描述的序言。以下示例通過在網(wǎng)絡(luò)化節(jié)點(diǎn)上運(yùn)行的應(yīng)用軟件經(jīng)由要求最小考慮的獨(dú)特的網(wǎng)絡(luò)堆棧體系結(jié)構(gòu)來提供計(jì)算機(jī)網(wǎng)絡(luò)通信容錯。許多附帶特征將變得更容易理解,因?yàn)橥ㄟ^結(jié)合附圖參考以下詳細(xì)描述能獲得更好的理解。附圖描述根據(jù)附圖閱讀以下詳細(xì)描述將更好地理解本發(fā)明,其中圖1是示出了示例網(wǎng)絡(luò)堆棧體系結(jié)構(gòu)的框圖。圖2是示出了包括經(jīng)由兩個網(wǎng)絡(luò)耦合的兩個示例節(jié)點(diǎn)的網(wǎng)絡(luò)化計(jì)算環(huán)境的框圖。圖3是示出了示例容錯通信驅(qū)動器NETFT的框圖。圖4是示出了包括NETFT和應(yīng)用的示例容錯通信體系結(jié)構(gòu)的框圖。圖5是示出了數(shù)據(jù)流過包括經(jīng)由網(wǎng)絡(luò)1上的路徑A和網(wǎng)絡(luò)2上的路徑B耦合的源節(jié)點(diǎn)和目的節(jié)點(diǎn)的容錯通信環(huán)境的流程圖。圖6是示出了在外加若干可能的通信故障的情況下數(shù)據(jù)流過圖5所示的容錯通信環(huán)境的流程圖。圖7是示出了容錯通信驅(qū)動器NETFT的另一示例的框圖。圖8是示出了包括NETFT和應(yīng)用的示例容錯通信體系結(jié)構(gòu)的框圖。圖9是示出了數(shù)據(jù)流過包括經(jīng)由網(wǎng)絡(luò)1上的路徑A和網(wǎng)絡(luò)2上的路徑B耦合的源節(jié)點(diǎn)和目的節(jié)點(diǎn)的容錯通信環(huán)境的流程圖。圖10是示出了在外加若干可能的通信故障的情況下數(shù)據(jù)流過圖9所示的容錯通信環(huán)境的流程圖。圖11是示出了其中可實(shí)現(xiàn)上述技術(shù)的示例計(jì)算環(huán)境的框圖。附圖中,類似的附圖標(biāo)記用于指示類似的部分。詳細(xì)描述以下結(jié)合附圖提供的詳細(xì)描述旨在作為本發(fā)明的示例的描述而非旨在表示其中可構(gòu)建或使用本發(fā)明的示例的唯一形式。此描述闡述了這些示例的功能以及用于構(gòu)建和操作這些示例的步驟序列。然而,相同或等效的功能以及序列可通過不同的示例來實(shí)現(xiàn)。盡管本發(fā)明的示例在此被描述并示為在計(jì)算和聯(lián)網(wǎng)系統(tǒng)中實(shí)現(xiàn),但是所述系統(tǒng)作為示例而非限制而提供。如本領(lǐng)域技術(shù)人員理解的,本發(fā)明的示例適于應(yīng)用在各種不同類型的計(jì)算和聯(lián)網(wǎng)環(huán)境中。圖1是示出了示例網(wǎng)絡(luò)堆棧體系結(jié)構(gòu)100的框圖。網(wǎng)絡(luò)堆棧("堆棧")通常經(jīng)由網(wǎng)絡(luò)堆棧接口和/或其它接口與軟件應(yīng)用程序耦合以向應(yīng)用提供網(wǎng)絡(luò)通信功能。應(yīng)用通常被認(rèn)為是處于(或耦合到)堆棧的"頂部"。網(wǎng)絡(luò)通常被認(rèn)為是處于(或耦合到)堆棧的"底部"。網(wǎng)絡(luò)堆棧的各個要素可稱為處于或靠近堆棧的頂部或底部,或者在該堆棧中相對彼此的較高或較低處。例如,在圖1中,協(xié)議驅(qū)動器130在堆棧中高于在此特定附圖中處于堆棧的底部的NIC180。如本領(lǐng)域技術(shù)人員所理解的,取決于描述的目的或焦點(diǎn),網(wǎng)絡(luò)堆棧的各種描述可包括或不包括某些堆棧要素,或者可以各種方式對這些要素進(jìn)行分組、排序或命名。本文所用的術(shù)語"驅(qū)動器"稱為控制程序等,它們使節(jié)點(diǎn)能夠與諸如打印機(jī)、網(wǎng)絡(luò)接口卡或其它計(jì)算機(jī)子系統(tǒng)的特定設(shè)備一起操作、或與諸如網(wǎng)絡(luò)堆棧、協(xié)議驅(qū)動器和/或其它計(jì)算機(jī)軟件或固件等一起操作。例如,協(xié)議驅(qū)動器通常與網(wǎng)絡(luò)堆棧一起操作。應(yīng)用可將數(shù)據(jù)分組傳遞到在另一節(jié)點(diǎn)上運(yùn)行的應(yīng)用所指定的堆棧。在此情況中,數(shù)據(jù)被認(rèn)為是沿堆棧"向下"流動,并在網(wǎng)絡(luò)上發(fā)送。由節(jié)點(diǎn)接收到的數(shù)據(jù)被認(rèn)為是沿堆棧"向上"流動直至其到達(dá)所指定的應(yīng)用。這些網(wǎng)絡(luò)化系統(tǒng)對于本領(lǐng)域技術(shù)人員是眾所周知的。在一個示例中,堆棧是基于網(wǎng)絡(luò)驅(qū)動器接口規(guī)范("NDIS"),該規(guī)范定義了諸如NIC180的網(wǎng)絡(luò)接口卡("NIC")的標(biāo)準(zhǔn)應(yīng)用程序設(shè)計(jì)接口("API"),并從網(wǎng)絡(luò)驅(qū)動器提取網(wǎng)絡(luò)硬件。NDIS也指定了分層網(wǎng)絡(luò)驅(qū)動器之間的標(biāo)準(zhǔn)網(wǎng)絡(luò)接口,由此從諸如協(xié)議驅(qū)動器的上層驅(qū)動器提取諸如微端口的、管理硬件的下層驅(qū)動器。多個遵循NDIS的協(xié)議驅(qū)動器可在單個節(jié)點(diǎn)上共存。而且,如果節(jié)點(diǎn)可能由于連接到多個網(wǎng)絡(luò)而包括多個NIC,則NDIS經(jīng)由通信量所指示的其相關(guān)聯(lián)驅(qū)動器將網(wǎng)絡(luò)通信量路由至適當(dāng)?shù)腘IC。圖1中示出了NDIS的示圖。諸如開放數(shù)據(jù)鏈路接口("ODI")、數(shù)據(jù)鏈路提供者接口("DLPI")、統(tǒng)一驅(qū)動器接口("UDI")或其它技術(shù)的其它聯(lián)網(wǎng)堆棧標(biāo)準(zhǔn)、技術(shù)和/或體系結(jié)構(gòu)可在以下的示例中使用,并可進(jìn)行適當(dāng)?shù)男薷?,如本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的。為了方便起見,在此整個描述中,示例中使用NDIS和NDIS技術(shù),但是其它標(biāo)準(zhǔn)、技術(shù)和/或體系結(jié)構(gòu)可通過進(jìn)行適當(dāng)?shù)男薷亩谒羞@些示例中使用,除非另外指明。如圖1中所示,經(jīng)由NDIS120耦合到NIC180的是微端口驅(qū)動器160。微端口驅(qū)動器通常經(jīng)由NDIS微端口接口162與NDIS交互。微端口驅(qū)動器160可與NIC180相關(guān)聯(lián),并且可管理其操作,包括通過NIC發(fā)送或接收數(shù)據(jù)。微端口驅(qū)動器160通常與諸如中間驅(qū)動器140和協(xié)議驅(qū)動器130的上層驅(qū)動器接口。微端口驅(qū)動器被視為NIC驅(qū)動器。NIC微端口通常執(zhí)行使用由NDIS所提供的通用或與NIC無關(guān)的功能來管理特定NIC所需的這些硬件專用操作。節(jié)點(diǎn)可包括多個NIC,并且每個NIC通常具有相關(guān)聯(lián)的NIC驅(qū)動器。本描述中的某些示例描述了微端口驅(qū)動器的使用,但是如本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的,任何類型的NIC驅(qū)動器等可用在這些示例中,除非另外指明。協(xié)議或傳輸驅(qū)動器130經(jīng)由NDIS協(xié)議接口134耦合到NDIS120。協(xié)議驅(qū)動器或傳送協(xié)議驅(qū)動器通常提供用以創(chuàng)建、發(fā)送和接收數(shù)據(jù)分組的功能,這些數(shù)據(jù)分組通過網(wǎng)絡(luò)堆棧或在網(wǎng)絡(luò)上從一個節(jié)點(diǎn)發(fā)往另一節(jié)點(diǎn)。如本領(lǐng)域技術(shù)人員所公知的,通用的可靠或有保證的遞送傳輸協(xié)議可以是TCP/IP(傳輸控制協(xié)議/網(wǎng)際協(xié)議)。IP上的UDP(用戶數(shù)據(jù)報協(xié)議)可以是普通的非可靠或無保證的遞送協(xié)議。諸如IPX/SPX(因特網(wǎng)分組交換/順序分組交換)的TCP、UDP和/或其它協(xié)議可在以下的示例中使用,除非另外指明。圖1中7于NIC驅(qū)動器,它們?nèi)缤菂f(xié)議驅(qū)動器。沿網(wǎng)絡(luò)堆棧向上或向下流動的數(shù)據(jù)分組經(jīng)過IM驅(qū)動器140,該驅(qū)動器140可忽略、檢査、過濾、轉(zhuǎn)發(fā)、重定向和/或更改數(shù)據(jù)分組。中間驅(qū)動器140也可稱為過濾驅(qū)動器。圖2是示出了包括經(jīng)由兩個網(wǎng)絡(luò)202和282耦合的兩個示例節(jié)點(diǎn)210和260的網(wǎng)絡(luò)化計(jì)算環(huán)境200的框圖。節(jié)點(diǎn)210和260各自可以是個人計(jì)算機(jī)("PC")、客戶端計(jì)算機(jī)、服務(wù)器、主機(jī)、膝上型設(shè)備、便攜式設(shè)備、消費(fèi)電子設(shè)備或各種其它類型的計(jì)算或處理設(shè)備、機(jī)器或系統(tǒng)的任一種。以下參照圖ll詳細(xì)描述了一種計(jì)算系統(tǒng)的非限制示例。圓212、214、262和264表示與其相應(yīng)節(jié)點(diǎn)相關(guān)聯(lián)的NIC。以下還參照圖11將一種NIC的一個非限制示例描述為網(wǎng)絡(luò)適配器1113。如本文所使用的,術(shù)語節(jié)點(diǎn)是指在網(wǎng)絡(luò)中(例如網(wǎng)絡(luò)202)可唯一尋址或以其它方式可唯一標(biāo)識并且可用于與該網(wǎng)絡(luò)中的其它節(jié)點(diǎn)通信的任何計(jì)算系統(tǒng)、設(shè)備或進(jìn)程。作為示例而非限制,節(jié)點(diǎn)可以是個人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持型或膝上型設(shè)備、平板設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)等。以下參照圖11闡述計(jì)算機(jī)系統(tǒng)形式的節(jié)點(diǎn)210的非限制示例。網(wǎng)絡(luò)202和282可以是同一網(wǎng)絡(luò),可存在于同一或不同的子網(wǎng)上、可彼此在邏輯上或在物理上耦合或隔離、可使用類似或不同的聯(lián)網(wǎng)技術(shù)等。具體地,網(wǎng)絡(luò)202和282可以是路由網(wǎng)絡(luò),S卩,包括轉(zhuǎn)發(fā)可路由協(xié)議分組的路由器的網(wǎng)絡(luò)??陕酚蓞f(xié)議通常被認(rèn)為是用于將數(shù)據(jù)從一個網(wǎng)絡(luò)路由到另一個的通信協(xié)議??陕酚蓞f(xié)議的一示例是TCP/IP。以可路由方式發(fā)送數(shù)據(jù)分組意味著使用可路由傳輸協(xié)議來格式化和/或發(fā)送數(shù)據(jù)分組。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)熟悉可路由協(xié)議和路由網(wǎng)絡(luò)拓樸、系統(tǒng)和體系結(jié)構(gòu)。在一個示例中,網(wǎng)絡(luò)202和282可彼此獨(dú)立,使得在一個網(wǎng)絡(luò)中存在問題或故障的情況下不會影響到另一個的操作狀態(tài)。在另一個示例中,可使用三個或更多網(wǎng)絡(luò)。在其中期望較大的容錯程度的示例中,可以采用大量網(wǎng)絡(luò)連同節(jié)點(diǎn)與這些網(wǎng)絡(luò)的相關(guān)聯(lián)的連通性一包括安裝在節(jié)點(diǎn)上的類似數(shù)目的NIC。與節(jié)點(diǎn)210相關(guān)聯(lián)的NIC212被示為具有172.56.48.37的示例地址并被耦合到網(wǎng)絡(luò)1202。也與節(jié)點(diǎn)210相關(guān)聯(lián)的NIC214被示為具有197.71.48.38的示例地址并被耦合到網(wǎng)絡(luò)2282。與節(jié)點(diǎn)260相關(guān)聯(lián)的NIC262被示為具有172.56.48.38的示例地址并且也被耦合到網(wǎng)絡(luò)1202。也與節(jié)點(diǎn)260相關(guān)聯(lián)的NIC264被示為具有197.71.48.39的示例地址并被耦合到網(wǎng)絡(luò)2282。實(shí)際上,這些地址可以是IPv4或IPv6地址等,或者通常與所使用的協(xié)議相關(guān)的任何其它類型的網(wǎng)絡(luò)地址。每個節(jié)點(diǎn)可包括一個或多個NIC。箭頭201和230(在圖11中示為箭頭1114)表示網(wǎng)絡(luò)1202上的節(jié)點(diǎn)210與260之間的第一通信路由或通路("路徑A")。箭頭281和283表示網(wǎng)絡(luò)2282上的節(jié)點(diǎn)210與260之間的第二通信路由或通路("路徑B")。實(shí)際上,在環(huán)境200中的一個或多個網(wǎng)絡(luò)上的兩個或多個節(jié)點(diǎn)之間的可存在一條或多條通路。本文所用的術(shù)語"通路"被定義為網(wǎng)絡(luò)中的節(jié)點(diǎn)之間的通信路由或通信鏈路。這樣的路由或鏈路可以是動態(tài)的,因?yàn)楣?jié)點(diǎn)之間的確切路由可隨著時間改變。塊216和266表示設(shè)置在節(jié)點(diǎn)210和260的每一個上的應(yīng)用和網(wǎng)絡(luò)堆棧,包括容錯通信("FT")驅(qū)動器。塊216的FT驅(qū)動器被示為具有示例地址10.0.0.1,而塊266的FT驅(qū)動器被示為具有示例地址10.0.0.2。這些地址通常被認(rèn)為是虛擬地址。這些地址可以是IPv4或IPv6地址等,或者任何其它類型的網(wǎng)絡(luò)或通信地址。FT驅(qū)動器可具有或不具有如以下各個示樹中所示的虛擬地址。容錯網(wǎng)絡(luò)堆棧是包括FT驅(qū)動器的網(wǎng)絡(luò)堆棧,諸如以下結(jié)合圖3所述的NETFT等。結(jié)合網(wǎng)絡(luò)堆棧操作的諸如NETFT的FT驅(qū)動器通常允許節(jié)點(diǎn)經(jīng)由一個或多個網(wǎng)絡(luò)上的諸如路徑A和路徑B的一個或多個通信路徑來彼此通信。如果這些通信路徑的任一條發(fā)生故障,則節(jié)點(diǎn)可繼續(xù)通信,只要至少一條通路可用。這樣的通路故障可由于NIC的故障或通路的任何元件的故障而導(dǎo)致,包括連接、敷設(shè)纜線或其它通信介質(zhì)(包括射頻("RF")或紅外線("IR")等)、路由器、集線器、交換機(jī)、防火墻、因特網(wǎng)服務(wù)提供商("IPS")、任何節(jié)點(diǎn)的電源故障、網(wǎng)絡(luò)的設(shè)備或系統(tǒng)等。在一個示例中,通信故障可導(dǎo)致即插即用("PnP")事件。PnP事件指示NIC從其節(jié)點(diǎn)的移除或介質(zhì)感測變化。例如,介質(zhì)感測斷開通常由于故障而導(dǎo)致,這使得NIC丟失在諸如網(wǎng)絡(luò)纜線、RF或IR鏈路等的網(wǎng)絡(luò)介質(zhì)上的信號或載波。介質(zhì)感測斷開可由于網(wǎng)絡(luò)纜線或載波從NIC斷開或電纜另一端(例如集線器或交換機(jī))的斷電而導(dǎo)致。介質(zhì)感測連接通常是相反的,諸如重新連接纜線、重新對集線器或交換機(jī)通電等。也稱為連通性事件的此類事件一般是本地事件,因?yàn)樗鼈冊谄渥陨淼墓?jié)點(diǎn)上或節(jié)點(diǎn)附近發(fā)生。這些本地連通性事件通常在節(jié)點(diǎn)上導(dǎo)致諸如PnP事件等的事件指示。在另一示例中,通信故障可通過使用在節(jié)點(diǎn)之間發(fā)送的心跳(heartbeat)分組來檢測。這種心跳分組的失敗可指示節(jié)點(diǎn)之間的通路故障。心跳分組往往被作標(biāo)記,使得FT驅(qū)動器一旦接收到它們就可檢測它們并對沿網(wǎng)絡(luò)堆棧向上傳遞的分組流將其移除。在一個示例中,心跳分組可通過使用路由控制協(xié)議("RCP")形成RCP分組來實(shí)現(xiàn)。這些心跳分組可用于驗(yàn)證通路的端對端操作狀態(tài)。即,通過在路徑A上將心跳分組從節(jié)點(diǎn)210發(fā)送到節(jié)點(diǎn)260以及通過節(jié)點(diǎn)210從節(jié)點(diǎn)260接收對所發(fā)送心跳分組的回復(fù),一般認(rèn)為路徑A是端對端可用的。如果心跳失敗(未接收到響應(yīng)于心跳發(fā)送的心跳回復(fù)),這樣的失敗可指示路徑A可能由于網(wǎng)絡(luò)1202中諸如路由器、交換機(jī)、連接等的某些元件的故障、或者由于目的節(jié)點(diǎn)自身的故障而不可用。具體地,節(jié)點(diǎn)210可具有可用NIC212和有效介質(zhì)感測,這指示其被正確連接到網(wǎng)絡(luò),但仍可能由于沿線的某些網(wǎng)絡(luò)或系統(tǒng)故障而檢測到心跳失敗。圖3是示出了示例容錯通信驅(qū)動器NETFT300的框圖。NETFT300可被實(shí)現(xiàn)為與NDIS網(wǎng)絡(luò)堆棧一起使用以及用于在容忍通路故障的節(jié)點(diǎn)之間提供網(wǎng)絡(luò)通信的NDIS微端口驅(qū)動器(圖1中的160)。B卩,在每個節(jié)點(diǎn)都使用NETFT時,盡管通路中的任何組件發(fā)生故障,只要至少一條通路仍然可用,兩個或更多節(jié)點(diǎn)之間的通信就可繼續(xù)。在一個示例中,將FT驅(qū)動器實(shí)現(xiàn)為NDIS微端口驅(qū)動器提供了至少兩個益處。首先,由于這種FT驅(qū)動器通常在堆棧中位于任何協(xié)議驅(qū)動器之下,所以協(xié)議可靠性往往要由任何上層可靠協(xié)議驅(qū)動器來提供,該上層可靠協(xié)議驅(qū)動器通常不會受到FT驅(qū)動器所提供的鏈路級容錯的增加的影響。例如,在結(jié)合諸如TCP/IP驅(qū)動器的協(xié)議驅(qū)動器使用FT驅(qū)動器時,該FT驅(qū)動器通常檢測到故障的通路,并且在端對端可用通路上與任何協(xié)議驅(qū)動器無關(guān)地路由數(shù)據(jù)分組。如果由于切換通路而發(fā)生任何分組丟失,則通常在堆棧中位于FT驅(qū)動器上的TCP/IP協(xié)議驅(qū)動器往往檢測到這種丟失并執(zhí)行任意重試或重發(fā)操作以確保在分組傳送中實(shí)現(xiàn)可靠協(xié)議。在堆棧中將FT驅(qū)動器放置在協(xié)議驅(qū)動器之下的第二個益處是不會引入?yún)f(xié)議可路由性的降級。當(dāng)被如此配置時,F(xiàn)T驅(qū)動器對數(shù)據(jù)分組所執(zhí)行的任何隧穿(tunneling)操作可采用諸如TCP或UDP的可路由協(xié)議,由此除正鏈路級容錯之外確保這種數(shù)據(jù)可被路由。"可路由地使數(shù)據(jù)分組隧穿(tunnel)"是使用可路由協(xié)議來使傳送數(shù)據(jù)分組隧穿。作為網(wǎng)絡(luò)堆棧的一部分的NETFT通常經(jīng)由NDIS或其它網(wǎng)絡(luò)堆棧接口耦合到軟件應(yīng)用程序。這種耦合通常使得應(yīng)用程序能夠在耦合到堆棧底部的網(wǎng)絡(luò)上發(fā)送和接收分組。在一個示例中,應(yīng)用程序傾向于對其數(shù)據(jù)分組使用虛擬地址作為源地址,這種虛擬地址對于NETFT是己知的,并且如以下所述地被映射和傳送到網(wǎng)絡(luò)上的其它節(jié)點(diǎn)。如圖3中所示,NETFT包括微端口適配器302(也稱為處理元件)、路由數(shù)據(jù)庫304以及一個或多個路由監(jiān)視器適配器306和隧穿適配器308。隧穿適配器308通常表示本地節(jié)點(diǎn)上的一個NIC(或,在某些實(shí)例中為虛擬NIC)并且維護(hù)用于將分組隧穿到目的節(jié)點(diǎn)上的NETFT的插座。通常存在與本地節(jié)點(diǎn)上的每個NIC相關(guān)聯(lián)的一個隧穿適配器308,并且每個NIC被耦合到提供了通往另一節(jié)點(diǎn)的通路的網(wǎng)絡(luò)。每個網(wǎng)絡(luò)可與任何其它網(wǎng)絡(luò)隔離或不隔離。隧穿適配器308通常源圖隧穿協(xié)議驅(qū)動器相關(guān)聯(lián)并經(jīng)由NDIS接口通過隧穿協(xié)議將數(shù)據(jù)分組隧穿到其相關(guān)聯(lián)的NIC或從該NIC隧穿。隧穿協(xié)議的一個示例是UDP。或者,諸如TCP、IPX或SPX的其它協(xié)議可用于進(jìn)行隧穿。如果相關(guān)聯(lián)的NIC或媒體連接變成不活動,則隧穿適配器308可變成不活動。如NETFT中實(shí)現(xiàn)的路由數(shù)據(jù)庫304通常是簡單的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)庫可位于系統(tǒng)存儲器中并包括將一條或多條通路的虛擬地址映射到另一節(jié)點(diǎn)上的類似NETFT的條目。在一個示例中,映射是由諸如路由監(jiān)視器適配器306的路由監(jiān)視器適配器來表示的,該適配器通常與諸如隧穿適配器308的隧穿適配器相關(guān)聯(lián)。一般諸如路由數(shù)據(jù)庫304的路由數(shù)據(jù)庫將包括對應(yīng)于每個隧穿適配器的一組路由適配器,每個路由適配器與在關(guān)聯(lián)于隧穿適配器的通路上可到達(dá)的不同目的節(jié)點(diǎn)相關(guān)聯(lián)。例如,當(dāng)使用TCP/IP時,數(shù)據(jù)庫可將目的虛擬地址映射到特定遠(yuǎn)程節(jié)點(diǎn)的物理地址。路由數(shù)據(jù)庫304還可包括每條通路的優(yōu)先級信息。這些優(yōu)先級信息可用于指示通往另一節(jié)點(diǎn)的優(yōu)選或主要通路和/或包括與通路速率或其它特性相關(guān)的信息。優(yōu)選通路是由NETFT算出的在可能的情況下基于優(yōu)先級信息和/或通路狀態(tài)優(yōu)先其它可能的通路來使用的通路。優(yōu)先級信息可另外指示用于使通往目標(biāo)節(jié)點(diǎn)的多個通路的使用在通路之間達(dá)到通信量負(fù)載均衡的一系列負(fù)載均衡算法,或者啟用某些其它通路優(yōu)先化方案。表l中示出了一示例路由表數(shù)據(jù)庫304的映射表。<table>tableseeoriginaldocumentpage11</column></row><table>參看表1和圖2,表1示出了可由運(yùn)行在節(jié)點(diǎn)216上的NETFT使用的示例映射表。表1示出了虛擬目的地址10.0.0.2,該虛擬地址被示為對應(yīng)于節(jié)點(diǎn)266,并被映射到與通往節(jié)點(diǎn)266的路徑A相關(guān)聯(lián)的物理地址172.56.48.38以及與通往節(jié)點(diǎn)266的路徑B相關(guān)聯(lián)的物理地址197.71.48.39。路徑A被示為具有第一優(yōu)先級而路徑B被示為具有第二優(yōu)先級。表1作為示例而非限制而提供。當(dāng)從節(jié)點(diǎn)216向節(jié)點(diǎn)266發(fā)送數(shù)據(jù)時,這種映射表通常用于通過經(jīng)由諸如UDP的隧穿協(xié)議轉(zhuǎn)發(fā)分組來將去往虛擬目的地址10.0.0.2的分組隧穿到物理地址172.56.48.38,由此在路徑A上將分組從節(jié)點(diǎn)216隧穿到節(jié)點(diǎn)266??稍诼酚蓴?shù)據(jù)庫(圖3的304)中為兩個節(jié)點(diǎn)之間建立的每組通路創(chuàng)建一個這樣的映射表。這種映射表可以通過各種形式實(shí)現(xiàn),使用各種優(yōu)先級方案和/或存儲包括通路操作狀態(tài)的其它信息。表1中所示的映射表結(jié)構(gòu)、通路數(shù)目、地址格式等作為示例而非限制而提供。本地節(jié)點(diǎn)虛擬地址、遠(yuǎn)程節(jié)點(diǎn)虛擬地址以及優(yōu)先級和其它通路信息通常通過帶外(out-of-band)機(jī)制來向節(jié)點(diǎn)提供,并經(jīng)由其NDIS接口傳遞給NETFT。這種帶外機(jī)制可與使用管理應(yīng)用來指定信息的系統(tǒng)管理器一樣簡單,或者其可以是自動化系統(tǒng)等。這種帶外機(jī)制對于本領(lǐng)域技術(shù)人員是公知的。如圖3中所示,微端口適配器302(也稱為驅(qū)動器的處理元件)通常解析沿網(wǎng)絡(luò)堆棧向下流動的數(shù)據(jù)分組、檢査該分組的目的虛擬地址以及使用來自路由數(shù)據(jù)庫304的信息來確定將該數(shù)據(jù)分組隧穿通過哪個隧穿適配器308。傳入分組或沿堆棧向上流動的數(shù)據(jù)分組朝著目的虛擬地址沿堆棧向上轉(zhuǎn)發(fā),并且隧穿協(xié)議已在先前移除了隧穿分組的報頭。具體地,隧穿適配器308檢查傳入分組并將心跳分組轉(zhuǎn)發(fā)到路由監(jiān)視器適配器306,以及通過微端口適配器302沿堆棧向上轉(zhuǎn)發(fā)其它分組。使用隧穿協(xié)議來使分組隧穿以及如何通過協(xié)議驅(qū)動器添加和移除協(xié)議報頭的方面對于本領(lǐng)域技術(shù)人員而言是公知的。路由監(jiān)視器適配器306通常表示在由相關(guān)聯(lián)的隧穿適配器標(biāo)識的特定通道上可訪問的遠(yuǎn)程節(jié)點(diǎn)。路由監(jiān)視器適配器306通常將提供遠(yuǎn)程節(jié)點(diǎn)的物理地址,該物理地址306還對應(yīng)于通往遠(yuǎn)程節(jié)點(diǎn)的特定通路。這種物理地址通常被用于路由數(shù)據(jù)庫304中的映射。對于通往遠(yuǎn)程節(jié)點(diǎn)的每個不同通路,通常存在一個遠(yuǎn)程監(jiān)視器適配器,每個路由監(jiān)視器適配器與表示通路的隧穿適配器相關(guān)聯(lián)。在一個示例中,再次參看圖2,節(jié)點(diǎn)210被示為通過兩條通路耦合到節(jié)點(diǎn)260,其一通過網(wǎng)絡(luò)1202("路徑A"),而另一條通過網(wǎng)絡(luò)2282("路徑B")。運(yùn)行在節(jié)點(diǎn)210上的NETFT可包括第一路由監(jiān)視器適配器("RMA-A"),該適配器提供了遠(yuǎn)程節(jié)點(diǎn)260的與其NIC262相關(guān)聯(lián)的物理地址172.56.48.38。RMA-A可與節(jié)點(diǎn)210上的第一隧穿適配器("TA-A")相關(guān)聯(lián),其中該節(jié)點(diǎn)可與路徑A相關(guān)聯(lián)。節(jié)點(diǎn)210上的NETFT還可包括第二路由監(jiān)視器適配器("RMA-B"),該適配器提供了遠(yuǎn)程節(jié)點(diǎn)260的與其NIC264相關(guān)聯(lián)的物理地址197.71.48.39。RMA-B可與節(jié)點(diǎn)210上的第二隧穿適配器("TA-B")相關(guān)聯(lián),其中該節(jié)點(diǎn)可與路徑B相關(guān)聯(lián)。參看圖3,路由監(jiān)視器適配器306通常監(jiān)視通往遠(yuǎn)程節(jié)點(diǎn)的通路的健康狀況,并在路由數(shù)據(jù)庫304中指示有故障的或不可用的通路。監(jiān)視通常包括接收任何事件指示和/或通知任何心跳失敗以及相應(yīng)地更新數(shù)據(jù)庫304。在一個示例中,指示NIC或介質(zhì)連接的故障的事件可導(dǎo)致隧穿適配器308的禁用。在另一示例中,心跳失敗可導(dǎo)致與心跳失敗的特定遠(yuǎn)程節(jié)點(diǎn)相關(guān)的路由監(jiān)視器適配器306的禁用。圖4是示出了包括NETFT300和應(yīng)用402的示例容錯通信體系結(jié)構(gòu)216的框圖。在此示例中,應(yīng)用402使用虛擬源地址217和表示目的節(jié)點(diǎn)的虛擬目的地址來經(jīng)由堆棧將數(shù)據(jù)分組發(fā)送到NETFT300。這種傳出數(shù)據(jù)分組經(jīng)由路徑480從應(yīng)用通過網(wǎng)絡(luò)堆棧流動到驅(qū)動器300。驅(qū)動器300通常使用存儲在路由數(shù)據(jù)庫中的優(yōu)先級信息和通路操作狀態(tài)信息來確定每個分組應(yīng)當(dāng)采用哪條可能的通路,并且在所選的通路上使用適當(dāng)?shù)奈锢碓吹刂?22或424來將該分組隧穿到目標(biāo)節(jié)點(diǎn)。應(yīng)用402可通過NETFT經(jīng)由TCP協(xié)議來發(fā)送數(shù)據(jù)分組,如圖4中所示?;蛘呖墒褂肬DP或任何其它協(xié)議。而且,如所示,NETFT300可使用UDP協(xié)議來將分組隧穿到目標(biāo)節(jié)點(diǎn)?;蛘撸琓CP或任何其它協(xié)議可用于進(jìn)行隧穿。此外,替代示例可不使用微端口適配器或NDIS驅(qū)動器但可使用其它機(jī)構(gòu)或體系結(jié)構(gòu)來執(zhí)行類似功能。最后,網(wǎng)絡(luò)堆棧的各個元件等可以在用戶模式或內(nèi)核模式中運(yùn)行,或者如所示或其它方式,在具有或不具有等效操作模式的系統(tǒng)上運(yùn)行。圖5是示出了數(shù)據(jù)流過包括經(jīng)由網(wǎng)絡(luò)1202上的路徑A和網(wǎng)絡(luò)2282上的路徑B耦合的源節(jié)點(diǎn)216和目的節(jié)點(diǎn)266的容錯通信環(huán)境500的流程圖。在此示例環(huán)境500中,數(shù)據(jù)被示為從在節(jié)點(diǎn)216上運(yùn)行的應(yīng)用發(fā)送到在節(jié)點(diǎn)266上監(jiān)聽目的虛擬地址的應(yīng)用。數(shù)據(jù)分組使用TCP協(xié)議沿節(jié)點(diǎn)216上運(yùn)行的網(wǎng)絡(luò)堆棧向下流到NETFT中,如路徑501所示。如所示,假設(shè)路徑A是所選通路,NETFT將數(shù)據(jù)分組從由應(yīng)用正在使用的源虛擬地址映射到路徑A,并通過UDP使用目的節(jié)點(diǎn)266的路徑A的物理目的地址來如路徑501進(jìn)一步所示地將該數(shù)據(jù)隧穿出節(jié)點(diǎn)216的NIC1,然后經(jīng)由鏈路201進(jìn)入網(wǎng)絡(luò)1202。該數(shù)據(jù)隨后流過網(wǎng)絡(luò)1202、通過鏈路203、接著到達(dá)節(jié)點(diǎn)266、如路徑503所示地沿節(jié)點(diǎn)266上運(yùn)行的網(wǎng)絡(luò)堆棧向上流動。該數(shù)據(jù)隨后流過UDP協(xié)議(與發(fā)送側(cè)用作隧穿協(xié)議的協(xié)議一樣)驅(qū)動器,其中從數(shù)據(jù)分組剝離UDP協(xié)議報頭,隨后將其傳遞到運(yùn)行在節(jié)點(diǎn)266上的NETFT。NETFT隨后將這些數(shù)據(jù)分組沿堆棧向上轉(zhuǎn)發(fā)到正監(jiān)聽目的虛擬地址的應(yīng)用。響應(yīng)往往以相反次序流動。圖6是示出了在外加若干可能的通信故障610、612、620和630的情況下數(shù)據(jù)流過圖5中所示的容錯通信環(huán)境500的流程圖。其它通信故障也是可能的。故障610指示在發(fā)送節(jié)點(diǎn)216上運(yùn)行的NIC1的故障。這種故障可能在NIC1被從節(jié)點(diǎn)移除、NIC1的驅(qū)動器發(fā)生故障、NIC1自身發(fā)生故障等情況下發(fā)生。故障可由NETFT經(jīng)由諸如PnP事件等的事件指示和域心跳失敗來檢測。在這種情形中,路徑A通常被認(rèn)為己發(fā)生故障,并且NETFT將選擇替代的端對端可用通路。端對端可用通路通??墒冀K成功地將數(shù)據(jù)從源節(jié)點(diǎn)和應(yīng)用遞送到目的節(jié)點(diǎn)和應(yīng)用。故障620指示與節(jié)點(diǎn)216耦合的網(wǎng)絡(luò)介質(zhì)的故障。此故障可能由于纜線從NICl斷開、由于纜線從網(wǎng)絡(luò)1202的某一設(shè)備斷開、由于在網(wǎng)絡(luò)一側(cè)上纜線所連接的設(shè)備斷電或發(fā)生故障等而導(dǎo)致。這種類型的故障還可由NETFT經(jīng)由諸如PnP事件等的事件指示和/或心跳失敗以及所選的替代通路來檢測。故障630指示在網(wǎng)絡(luò)202內(nèi)導(dǎo)致數(shù)據(jù)分組無法到達(dá)目的節(jié)點(diǎn)266的某一類故障。在此故障的情形中,發(fā)送節(jié)點(diǎn)216仍耦合到網(wǎng)絡(luò)202并存在適當(dāng)?shù)慕橘|(zhì)感測指示,但是路徑A已進(jìn)一步使網(wǎng)絡(luò)中斷。在這種故障下,如果本地指示顯示通往網(wǎng)絡(luò)202的連通性良好,則運(yùn)行在發(fā)送節(jié)點(diǎn)216上的NETFT可能無法通過事件指示檢測到該故障,但是可通過路徑A的心跳失敗檢測到該故障。鏈路203的故障622以及在接收節(jié)點(diǎn)266上運(yùn)行的NIC1的故障612往往類似于針對節(jié)點(diǎn)216所示的相應(yīng)故障。雖然并不在節(jié)點(diǎn)216本地的這些故障可能無法通過事件指示來檢測,但是可通過心跳失敗來檢測。這些故障的任一個以及其它故障可通過在節(jié)點(diǎn)216上運(yùn)行的NETFT來檢測,并可導(dǎo)致其選擇替代的端對端可用通路,諸如在網(wǎng)絡(luò)2282上的路徑B。在此示例中,如圖6中所示,NETFT將數(shù)據(jù)沿替代路徑681向下隧穿并通過網(wǎng)絡(luò)2282到達(dá)接收節(jié)點(diǎn)266。如果路徑A上的故障情況被修復(fù)且端對端操作狀態(tài)恢復(fù),則在發(fā)送節(jié)點(diǎn)216上運(yùn)行的NETFT可檢測到該恢復(fù)并再次使用路徑A。此外,從節(jié)點(diǎn)266返回到節(jié)點(diǎn)216的任何響應(yīng)可以類似的容錯方式通過NETFT來隧穿。圖7是示出了容錯通信驅(qū)動器NETFT700的另一示例的框圖。此示例類似于圖3中所示示例,但是包括以下所述的變化。在此示例中,軟件應(yīng)用程序可能無需使用虛擬地址。相反,應(yīng)用程序可使用物理地址來使數(shù)據(jù)分組尋址到目標(biāo)節(jié)點(diǎn)。協(xié)議適配器710通常耦合到微端口適配器702(也稱為驅(qū)動器的處理元件)和NIC微端口適配器(未示出)。通常,對安裝節(jié)點(diǎn)上的每一個NIC存在一個協(xié)議適配器,每個協(xié)議適配器經(jīng)由其NIC適配器與NIC相關(guān)聯(lián)。由于每個協(xié)議適配器與一NIC相關(guān)聯(lián),所以它也與耦合到該NIC的通路相關(guān)聯(lián)。協(xié)議適配器710可用于經(jīng)由處理元件702從應(yīng)用接受數(shù)據(jù)分組,并將該數(shù)據(jù)分組傳遞到相關(guān)聯(lián)的NIC而無需進(jìn)行隧穿。處理元件702通常解析沿網(wǎng)絡(luò)堆棧向下流動的數(shù)據(jù)分組、檢查這些分組的物理目的地址并使用來自路由數(shù)據(jù)庫704的信息來確定該分組是可在協(xié)議適配器710上轉(zhuǎn)發(fā)還是需要通過隧穿適配器308隧穿到目標(biāo)節(jié)點(diǎn)。一般而言,如果由物理目的地址指示的通路是端對端可用的,則數(shù)據(jù)分組將通過該通路發(fā)送??蛇x擇將分組在其上隧穿的其它或替代的通路。在此示例中,路由數(shù)據(jù)庫704維護(hù)物理目的地址和通路的映射以及如上所述的優(yōu)先級和其它信息。表2中示出了示例路由數(shù)據(jù)庫704的映射表。目的地址類型地址優(yōu)先級物理路徑A172.56.48.381物理路徑B197,71.48.392表2參看表2和圖2,表2示出了可由在節(jié)點(diǎn)216上運(yùn)行的NETFT所用的示例映射表。表2示出了包括與通往節(jié)點(diǎn)266的路徑A相關(guān)聯(lián)的物理目的地址172.56.48.38和與通往節(jié)點(diǎn)266的路徑B相關(guān)聯(lián)的物理目的地址197.71.48.39的映射。路徑A被示為具有第一優(yōu)先級,而路徑B具有第二優(yōu)先級。當(dāng)從節(jié)點(diǎn)216向節(jié)點(diǎn)266發(fā)送數(shù)據(jù)時,這種映射表通常被用于轉(zhuǎn)發(fā)(或者按需進(jìn)行隧穿)正被發(fā)往節(jié)點(diǎn)266的物理目的地址172.56.48.38的數(shù)據(jù)分組。如果與初始目的地址相關(guān)聯(lián)的通路是可用的,則數(shù)據(jù)分組往往被轉(zhuǎn)發(fā)到該目的地址而不進(jìn)行隧穿。如果該通路不可用,則該數(shù)據(jù)分組通過替代的通路經(jīng)由隧穿被發(fā)送到節(jié)點(diǎn)266的物理目的地址197.71.48.39。NETFT700的其它方面一般類似于針對圖3所述的NETFT。圖8是示出了包括NETFT700和應(yīng)用402的示例容錯通信體系結(jié)構(gòu)216的框15圖。在此示例中,應(yīng)用402使用物理源地址和表示目的節(jié)點(diǎn)的物理目的地址801經(jīng)由堆棧來將數(shù)據(jù)分組發(fā)送到NETFT700。這種傳出數(shù)據(jù)分組經(jīng)由路徑880從應(yīng)用通過網(wǎng)絡(luò)堆棧流動到驅(qū)動器700。該驅(qū)動器700通常使用存儲在路由數(shù)據(jù)庫中的優(yōu)先級信息和通路操作狀態(tài)信息確定每個分組應(yīng)當(dāng)采用哪條可能的通路,并且通過由初始物理目的地址指示的路徑將該分組轉(zhuǎn)發(fā)到目標(biāo)節(jié)點(diǎn),或者如果該通路并非端對端可用,則通過如在本示例中由路由882和NIC2892所指示的替代通路來使分組隧穿。應(yīng)用402可經(jīng)由TCP協(xié)議通過NETFT700發(fā)送數(shù)據(jù)分組,如圖8所示??墒褂肬DP或任何其它協(xié)議作為替代。而且,如所示,NETFT700可使用UDP協(xié)議來將分組隧穿到目標(biāo)節(jié)點(diǎn)。或者,TCP或任何其它協(xié)議可用于進(jìn)行隧穿。此外,其它示例可不利用NDIS驅(qū)動器,但可使用其它機(jī)構(gòu)或體系結(jié)構(gòu)來執(zhí)行類似功能。最后,網(wǎng)絡(luò)堆棧等的各個要素可以在用戶模式或內(nèi)核模式中運(yùn)行,或者如所示或以其它方式,在具有或不具有等效操作模式的系統(tǒng)上運(yùn)行。圖9是示出了數(shù)據(jù)流過包括經(jīng)由網(wǎng)絡(luò)1202上的路徑A和網(wǎng)絡(luò)2282上的路徑B耦合的源節(jié)點(diǎn)816和目的節(jié)點(diǎn)966的容錯通信環(huán)境的流程圖。在此示例環(huán)境900中,數(shù)據(jù)被示為從在節(jié)點(diǎn)216上運(yùn)行的應(yīng)用發(fā)送到在節(jié)點(diǎn)266上監(jiān)聽目的物理地址的應(yīng)用。數(shù)據(jù)分組使用TCP協(xié)議沿在節(jié)點(diǎn)216上運(yùn)行的網(wǎng)絡(luò)堆棧向下流到NETFT中,如路徑901所示。如所示,假設(shè)路徑A是所選通路,NETFT使用由應(yīng)用所提供的物理目的地址來將數(shù)據(jù)分組經(jīng)由節(jié)點(diǎn)216的NIC1在路徑A上轉(zhuǎn)發(fā)以及經(jīng)由鏈路201在網(wǎng)絡(luò)1202轉(zhuǎn)發(fā)。數(shù)據(jù)隨后流過網(wǎng)絡(luò)1202、通過鏈路203然后到達(dá)節(jié)點(diǎn)966、如由路徑903所示地沿在節(jié)點(diǎn)966上運(yùn)行的網(wǎng)絡(luò)堆棧向上流動。數(shù)據(jù)隨后流過NETFT和協(xié)議驅(qū)動器(用于與發(fā)送側(cè)用作發(fā)送協(xié)議相同的協(xié)議的協(xié)議驅(qū)動器)并到達(dá)應(yīng)用。響應(yīng)往往以反向次序流動。圖IO是示出了在外加了若干可能的通信故障1010、1012、1020、1022和1030的情況下數(shù)據(jù)流過圖9中所示的容錯通信環(huán)境900的流程圖。其它通信故障也是可能的。故障IOIO指示在發(fā)送節(jié)點(diǎn)816上運(yùn)行的NIC1的故障。這種故障可能在NICl被從節(jié)點(diǎn)移除、其NIC驅(qū)動器發(fā)生故障、NIC自身發(fā)生故障等的情況下發(fā)生。該故障可由NETFT經(jīng)由諸如PnP事件等的事件指示和/或心跳失敗來檢測。在這種情形中,路徑A通常被認(rèn)為已發(fā)生故障,并且NETFT將選擇替代的端對端可用通路。故障1020指示與節(jié)點(diǎn)816的NIC1耦合的網(wǎng)絡(luò)介質(zhì)的故障。此故障可由于纜線從NIC1斷開、由于纜線從網(wǎng)絡(luò)1202的某一設(shè)備斷開、由于在網(wǎng)絡(luò)一側(cè)上纜線所連接的設(shè)備斷電或發(fā)生故障等而導(dǎo)致。此類故障還可由NETFT經(jīng)由諸如PnP事件等的事件指示和/或心跳失敗及所選的替代通路來檢測。故障1030指示在網(wǎng)絡(luò)202內(nèi)導(dǎo)致數(shù)據(jù)分組無法到達(dá)目的節(jié)點(diǎn)966的某一類故障。在此故障的情形中,發(fā)送節(jié)點(diǎn)816仍可耦合到網(wǎng)絡(luò)202并存在適當(dāng)?shù)慕橘|(zhì)感測指示,但是路徑A已進(jìn)一步使網(wǎng)絡(luò)中斷。在這種故障下,如果本地指示顯示通往網(wǎng)絡(luò)202的連通性良好,則運(yùn)行在發(fā)送節(jié)點(diǎn)816上的NETFT可能無法通過諸如PnP事件等的事件指示檢測到該故障,但是可通過路徑A的心跳失敗檢測到該故障。鏈路203的故障1022以及在接收節(jié)點(diǎn)966上運(yùn)行的NIC1的故障1012往往類似于針對節(jié)點(diǎn)816所示的相應(yīng)故障。雖然并非節(jié)點(diǎn)816本地的這些故障可能無法通過事件指示來檢測,但是可通過心跳失敗來檢測。這些故障的任一個以及其它故障可由在節(jié)點(diǎn)816上運(yùn)行的NETFT來檢測,并可導(dǎo)致其選擇替代的端對端可用通路,諸如在網(wǎng)絡(luò)2282上的路徑B。在此示例中,如圖10中所示,NETFT將數(shù)據(jù)沿替代路徑1081向下隧穿并通過網(wǎng)絡(luò)2282到達(dá)接收節(jié)點(diǎn)966。如果路徑A上的故障情況被修復(fù)且端對端操作狀態(tài)被恢復(fù),則在發(fā)送節(jié)點(diǎn)816上運(yùn)行的NETFT可檢測到該恢復(fù)并再次使用路徑A。此外,從節(jié)點(diǎn)966返回到節(jié)點(diǎn)816的任何響應(yīng)可取決于路徑A和路徑B的操作狀態(tài)以類似的容錯方式由其NETFT來隧穿。圖11是示出了其中可實(shí)現(xiàn)上述技術(shù)的示例性計(jì)算環(huán)境1100的框圖。合適的計(jì)算環(huán)境可使用各種通用或?qū)S孟到y(tǒng)來實(shí)現(xiàn)。公知系統(tǒng)的示例可包括但不限于個人計(jì)算機(jī)("PC")、手持型或膝上型設(shè)備、基于微處理器的系統(tǒng)、微處理器系統(tǒng)、服務(wù)器、工作站、消費(fèi)類電子設(shè)備、機(jī)頂盒等。計(jì)算環(huán)境1100通常包括耦合到各種外圍設(shè)備1102、1103、1104等的計(jì)算設(shè)備1101形式的通用計(jì)算系統(tǒng)。系統(tǒng)110可經(jīng)由一個或多個1/0接口1112耦合到各種輸入設(shè)備1103,包括鍵盤和諸如鼠標(biāo)或跟蹤球的定點(diǎn)設(shè)備。計(jì)算設(shè)備1101的組件可包括一個或多個處理器(包括中央處理單元("CPU")、圖形處理單元("GPU")微處理器("pP")等)1107、系統(tǒng)存儲器1109和通常耦合各種組件的系統(tǒng)總線1108。處理器1107通常處理或執(zhí)行各種計(jì)算機(jī)可執(zhí)行指令以控制計(jì)算設(shè)備1101的操作并經(jīng)由諸如網(wǎng)絡(luò)連接1114等的各種通信連接與其它電子和/或計(jì)算設(shè)備、系統(tǒng)或環(huán)境(未示出)通信。系統(tǒng)總線1108表示任意數(shù)量的各類總線結(jié)構(gòu),包括存儲器總線或存儲器控制器、外圍總線、串行總線、加速圖形端口、處理器或使用各種總線體系結(jié)構(gòu)的任一種的局部總線等。系統(tǒng)存儲器1109可包括諸如隨機(jī)存取存儲器("RAM")的易失性存儲器和/或諸如只讀存儲器("ROM")或閃存("FLASH")的非易失性存儲器的形式的計(jì)算機(jī)可讀介質(zhì)?;据斎?輸出系統(tǒng)("BIOS")可以非易失性等形式來存儲。系統(tǒng)存儲器1109通常存儲數(shù)據(jù)、計(jì)算機(jī)可執(zhí)行指令和/或包括可直接訪問或正由一個或多個處理器1107操作的計(jì)算機(jī)可執(zhí)行指令的程序模塊。大容量存儲設(shè)備1104和1110可通過耦合到系統(tǒng)總線而耦合到計(jì)算設(shè)備1101或結(jié)合到計(jì)算設(shè)備1101。這種大容量存儲設(shè)備1104和1110可包括對可移動的非易失性磁盤(例如"軟盤")1105讀和/或?qū)懙拇疟P驅(qū)動器,和/或?qū)χT如CDROM、DVDROM1106的非易失性光盤讀和/或?qū)懙墓獗P驅(qū)動器?;蛘撸T如硬盤1110的大容量存儲設(shè)備可包括不可移動存儲介質(zhì)。其它大容量設(shè)備可包括存儲卡、存儲棒、帶式存儲器等。大量計(jì)算機(jī)程序、文件、數(shù)據(jù)結(jié)構(gòu)等可被存儲在硬盤1110、其它存儲設(shè)備1104、1105、1106和系統(tǒng)存儲器1109(通常受可用空間的限制)上,作為示例,這些大量計(jì)算機(jī)程序、文件、數(shù)據(jù)結(jié)構(gòu)等包括操作系統(tǒng)、應(yīng)用程序、數(shù)據(jù)文件、目錄結(jié)構(gòu)和計(jì)算機(jī)可執(zhí)行指令。諸如顯示設(shè)備1102的輸出設(shè)備可經(jīng)由諸如視頻適配器1111耦合到計(jì)算設(shè)備1101。其它類型的輸出設(shè)備可包括打印機(jī)、音頻輸出、觸覺設(shè)備或其它感官輸出機(jī)構(gòu)等。輸出設(shè)備可允許計(jì)算設(shè)備1101與操作員或者其它機(jī)器或系統(tǒng)交互。用戶可經(jīng)由諸如鍵盤、鼠標(biāo)、操縱桿、游戲墊、數(shù)據(jù)端口等任何數(shù)目的不同輸入設(shè)備1103與計(jì)算環(huán)境1100接口。這些及其它輸入設(shè)備可經(jīng)由可耦合到系統(tǒng)總線1108的輸入/輸出接口1112來耦合到處理器1107,并且可通過諸如并行端口、游戲端口、通用串行總線("USB")、火線、紅外端口等的其它接口和總線結(jié)構(gòu)來耦合。計(jì)算設(shè)備1101可通過一個或多個局域網(wǎng)("LAN")、廣域網(wǎng)("WAN")、存儲域網(wǎng)("SAN")、因特網(wǎng)、無線電鏈路、光學(xué)鏈路等經(jīng)由到一個或多個遠(yuǎn)程計(jì)算設(shè)備的通信連接而在網(wǎng)絡(luò)化環(huán)境中運(yùn)行。計(jì)算設(shè)備1101可經(jīng)由網(wǎng)絡(luò)適1113等、或者經(jīng)由調(diào)制解調(diào)器、數(shù)字用戶線路("DSL")鏈路、綜合業(yè)務(wù)數(shù)字網(wǎng)("ISDN")鏈路、因特網(wǎng)鏈路、無線鏈路等耦合到網(wǎng)絡(luò)。諸如網(wǎng)絡(luò)連接的通信連接1114通常提供到諸如網(wǎng)絡(luò)的通信介質(zhì)的耦合。通信介質(zhì)通常使用諸如載波或其它傳輸機(jī)制的調(diào)制數(shù)據(jù)信號提供計(jì)算機(jī)可讀和計(jì)算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、文件、程序模塊和其它數(shù)據(jù)。術(shù)語"調(diào)制數(shù)據(jù)信號"通常表示以在該信號中編碼信息的方式設(shè)置或改變其特征中的一個或多個的信號。作為示例而非限制,通信介質(zhì)可包括諸如有線網(wǎng)絡(luò)或直接線連接等的有線介質(zhì),以及諸如聲波、射頻、紅外線和其它無線通信機(jī)制的無線介質(zhì)。本領(lǐng)域技術(shù)人員將認(rèn)識到用于提供計(jì)算機(jī)可讀和計(jì)算機(jī)可執(zhí)行指令及數(shù)據(jù)的存儲設(shè)備可分布在網(wǎng)絡(luò)上。例如,遠(yuǎn)程計(jì)算機(jī)或存儲設(shè)備可以采用軟件應(yīng)用程序和數(shù)據(jù)的形式來存儲計(jì)算機(jī)可讀和計(jì)算機(jī)可執(zhí)行指令。本地計(jì)算機(jī)可經(jīng)由網(wǎng)絡(luò)訪問遠(yuǎn)程計(jì)算機(jī)或存儲設(shè)備,以及下載軟件應(yīng)用程序或數(shù)據(jù)的部分或全部并可執(zhí)行任何計(jì)算機(jī)可執(zhí)行指令?;蛘撸镜赜?jì)算機(jī)可按需下載軟件或數(shù)據(jù)的片段,或者通過在本地計(jì)算機(jī)上執(zhí)行部分指令而在遠(yuǎn)程計(jì)算機(jī)和/或設(shè)備上執(zhí)行另一部分指令來分布式地處理軟件。本領(lǐng)域技術(shù)人員還將認(rèn)識到,通過使用常規(guī)技術(shù),軟件的計(jì)算機(jī)可執(zhí)行指令的全部或部分可通過諸如數(shù)據(jù)信號處理器("DSP")、可編程邏輯陣列("PLA")、離散電路等的專用電子電路來實(shí)現(xiàn)。術(shù)語"電子裝置"可包括包含任何軟件、固件等的計(jì)算設(shè)備或消費(fèi)類電子設(shè)備、或者不包含軟件、固件等的電子設(shè)備或電路。術(shù)語"固件"通常是指維護(hù)在諸如ROM的電子設(shè)備中的可執(zhí)行指令、代碼或數(shù)據(jù)。術(shù)語"軟件"通常是指維護(hù)在任何形式的計(jì)算機(jī)可讀介質(zhì)中或其上的可執(zhí)行指令、代碼、數(shù)據(jù)、應(yīng)用、程序等。術(shù)語"計(jì)算機(jī)可讀介質(zhì)"通常是指系統(tǒng)存儲器、存儲設(shè)備及其相關(guān)聯(lián)的介質(zhì)、通信介質(zhì)等。權(quán)利要求1.一種用于向應(yīng)用提供多個節(jié)點(diǎn)之間的容錯網(wǎng)絡(luò)通信的方法,包括經(jīng)由耦合到所述多個節(jié)點(diǎn)的多個網(wǎng)絡(luò)提供多個初始通信通路;從所述應(yīng)用接收發(fā)送節(jié)點(diǎn)上的數(shù)據(jù)分組,所述發(fā)送節(jié)點(diǎn)為所述多個節(jié)點(diǎn)之一,所述數(shù)據(jù)分組由所述應(yīng)用添加所述多個節(jié)點(diǎn)中的一個的地址;以及在所述多個初始通信通路中為所述數(shù)據(jù)分組選擇第一所選通路,其中所述第一所選通路是優(yōu)選通路。2.如權(quán)利要求l所述的方法,其特征在于,還包括檢測與所述多個初始通信通路中的一個相關(guān)聯(lián)的本地連通性事件;以及基于所述本地連通性事件指示所述多個初始通信通路中的所述之一是否可用。3.如權(quán)利要求1所述的方法,其特征在于,還包括在所述多個初始通信通路中的一個上發(fā)送可路由心跳分組;監(jiān)視對所述可路由心跳分組的響應(yīng)以確定所述多個初始通信通路中的所述之一的端對端操作狀態(tài);以及基于對所述響應(yīng)的監(jiān)視指示所述多個初始通信通路中的所述之一是否是端對端可用的。4.如權(quán)利要求l所述的方法,其特征在于,所述地址是網(wǎng)際協(xié)議第4版的地址或網(wǎng)際協(xié)議第6版的地址。5.如權(quán)利要求1所述的方法,其特征在于,從所述應(yīng)用接收到的所述數(shù)據(jù)分組是傳輸控制協(xié)議分組或用戶數(shù)據(jù)報協(xié)議分組。6.如權(quán)利要求1所述的方法,其特征在于,用于執(zhí)行所述方法的計(jì)算機(jī)可執(zhí)行指令被存儲在計(jì)算機(jī)可讀介質(zhì)上。7.如權(quán)利要求1所述的方法,其特征在于,所述地址是虛擬地址。8.如權(quán)利要求7所述的方法,其特征在于,還包括將所述數(shù)據(jù)分組在所述第一所選通路上可路由地隧穿而無需所述應(yīng)用了解所述多個初始通信通路的哪一個是所選通路。9.如權(quán)利要求8所述的方法,其特征在于,在所述第一所選通路上可路由地隧穿的所述數(shù)據(jù)分組是傳輸控制協(xié)議分組或用戶數(shù)據(jù)報協(xié)議分組。10.如權(quán)利要求7所述的方法,其特征在于,還包括檢測所述第一所選通路的故障;在所述多個初始通信通路中選擇第二所選通路,其中所述第二所選通路是端對端可用的且是優(yōu)選通路;以及將所述數(shù)據(jù)分組在所述第二作數(shù)通路上可路由地隧穿而無需所述應(yīng)用了解所述一個或多個初始通信通路的哪一個是所述第二所選通路。11.如權(quán)利要求l所述的方法,其特征在于,所述第一所選通路是基于包括在所述數(shù)據(jù)分組中的物理目的地址來選擇的。12.如權(quán)利要求11所述的方法,其特征在于,還包括在所述第一所選通路上發(fā)送所述數(shù)據(jù)分組而無需所述應(yīng)用了解所述多個初始通信通路的哪一個是所述第一所選通路。13.如權(quán)利要求ll所述的方法,其特征在于,還包括-檢測所述第一所選通路的故障;從所述多個初始通信通路選擇第二所選通路,其中所述第二所選通路是端對端可用的且是優(yōu)選通路;以及將所述數(shù)據(jù)分組在所述第二所選通路上可路由地隧穿而無需所述應(yīng)用了解所述一個或多個初始通信通路的哪一個是所述第二所選通路。14.如權(quán)利要求13所述的方法,其特征在于,在所述第二所選通路上可路由地隧穿的所述數(shù)據(jù)分組是傳輸控制協(xié)議分組或用戶數(shù)據(jù)報協(xié)議分組。15.—種用于向應(yīng)用提供多個節(jié)點(diǎn)之間的容錯網(wǎng)絡(luò)通信的方法,包括經(jīng)由耦合到所述多個節(jié)點(diǎn)的多個網(wǎng)絡(luò)提供多個初始通信通路;在接收節(jié)點(diǎn)上接收數(shù)據(jù)分組,所述接收節(jié)點(diǎn)包括容錯網(wǎng)絡(luò)堆棧并且是所述多個節(jié)點(diǎn)之一,所述數(shù)據(jù)分組指向所述應(yīng)用;確定所述數(shù)據(jù)分組是否被可路由地隧穿;以及如果所述數(shù)據(jù)分組被可路由地隧穿,則將所述數(shù)據(jù)分組沿所述容錯網(wǎng)絡(luò)堆棧向上轉(zhuǎn)發(fā)。16.如權(quán)利要求15所述的方法,其特征在于,還包括通過所述多個初始通信通路之一在所述接收節(jié)點(diǎn)上接收可路由心跳分組;以及向所述可路由心跳分組回復(fù)響應(yīng)以指示所述多個初始通信通路的所述之一的端對端操作狀態(tài)。17.如權(quán)利要求15所述的方法,其特征在于,所述數(shù)據(jù)分組是傳輸控制協(xié)議分組或用戶數(shù)據(jù)報協(xié)議分組。18.如權(quán)利要求15所述的方法,其特征在于,用于執(zhí)行所述方法的計(jì)算機(jī)可執(zhí)行指令被存儲在計(jì)算機(jī)可讀介質(zhì)上。19.一種用于向應(yīng)用提供多個節(jié)點(diǎn)之間的容錯網(wǎng)絡(luò)通信的系統(tǒng),包括第一容錯驅(qū)動器,耦合到第一網(wǎng)絡(luò)堆桟并且在第一節(jié)點(diǎn)上運(yùn)行,所述第一節(jié)點(diǎn)是所述多個節(jié)點(diǎn)中的一個;第二容錯驅(qū)動器,耦合到第二網(wǎng)絡(luò)堆棧并且在第二節(jié)點(diǎn)上運(yùn)行,所述第二節(jié)點(diǎn)是所述多個節(jié)點(diǎn)中的一個;以及所述第一容錯驅(qū)動器和所述第二容錯驅(qū)動器經(jīng)由多個網(wǎng)絡(luò)上的多個初始通信通路來耦合。20.如權(quán)利要求19所述的系統(tǒng),其特征在于,所述第一容錯驅(qū)動器包括-處理元件,經(jīng)由所述第一網(wǎng)絡(luò)堆棧耦合到所述應(yīng)用;路由數(shù)據(jù)庫,耦合到所述處理元件的,包括表示通往所述第二節(jié)點(diǎn)的通路的條目,包括所述第二節(jié)點(diǎn)的物理地址,所述通路是所述多個初始通信通路中的一個;以及對通往所述第二節(jié)點(diǎn)的所述通路的端對端操作狀態(tài)的指示;協(xié)議適配器,耦合到所述處理元件并經(jīng)由所述第一網(wǎng)絡(luò)堆棧耦合到所述多個網(wǎng)絡(luò)中的一個,所述多個網(wǎng)絡(luò)中的所述之一與通往所述第二節(jié)點(diǎn)的所述通路相關(guān)聯(lián);以及隧穿適配器,與通往所述第二節(jié)點(diǎn)的所述通路相關(guān)聯(lián)并且被耦合到所述處理元件以及經(jīng)由所述第一網(wǎng)絡(luò)堆棧耦合到所述多個網(wǎng)絡(luò)中的所述之一。全文摘要一種用于向應(yīng)用提供多個節(jié)點(diǎn)之間的容錯網(wǎng)絡(luò)通信的方法,包括通過在多個節(jié)點(diǎn)之間耦合的多個網(wǎng)絡(luò)上提供多個初始通信通路;從應(yīng)用接收發(fā)送節(jié)點(diǎn)上的數(shù)據(jù)分組,該發(fā)送節(jié)點(diǎn)該多個節(jié)點(diǎn)中的一個,數(shù)據(jù)分組由應(yīng)用添加多個節(jié)點(diǎn)中的一個上的地址;以及在多個初始通信通路中為該數(shù)據(jù)分組選擇第一所選通路,其中該第一所選通路是優(yōu)選通路。文檔編號H04L29/10GK101263686SQ200680033111公開日2008年9月10日申請日期2006年9月11日優(yōu)先權(quán)日2005年9月12日發(fā)明者D·A·迪昂,M·T·瑪薩,R·歐帕弗斯基申請人:微軟公司