專利名稱:負(fù)載平衡聯(lián)網(wǎng)環(huán)境中的智能故障恢復(fù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例大體上涉及網(wǎng)絡(luò)通信,且更具體來(lái)說(shuō)涉及一種在負(fù)載平衡的聯(lián)網(wǎng)環(huán) 境中對(duì)網(wǎng)絡(luò)連接智能地進(jìn)行故障恢復(fù)的系統(tǒng)和方法。
背景技術(shù):
性能和可靠性是對(duì)于現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)的關(guān)鍵要求。當(dāng)網(wǎng)絡(luò)接口卡("NIC")出現(xiàn)故 障或變得不可靠并接著返回到完全起作用的狀態(tài)時(shí),計(jì)算裝置可能會(huì)通過(guò)將網(wǎng)絡(luò)連接重 新分配給現(xiàn)在起作用的NIC來(lái)實(shí)現(xiàn)改進(jìn)的網(wǎng)絡(luò)性能。更具體來(lái)說(shuō),如果計(jì)算裝置中的特 定NIC過(guò)載或變得過(guò)載,那么可通過(guò)在計(jì)算裝置中的起作用的NIC(包含恢復(fù)后的NIC) 之間重新分配網(wǎng)絡(luò)連接來(lái)改進(jìn)網(wǎng)絡(luò)性能。然而,將連接從一個(gè)NIC轉(zhuǎn)移到另一個(gè)NIC 所涉及的額外開(kāi)銷可能會(huì)超過(guò)在計(jì)算裝置內(nèi)的起作用的NIC間重新分配業(yè)務(wù)所帶來(lái)的 性能益處。在此種情況下,可能會(huì)因?yàn)樵噲D重新分配網(wǎng)絡(luò)連接而降低整體聯(lián)網(wǎng)性能。此 外,所轉(zhuǎn)移的連接可能會(huì)使有效操作的NIC過(guò)載,從而降低所述NIC的性能和可靠性。
如上文所說(shuō)明,此項(xiàng)技術(shù)中需要一種用于在對(duì)網(wǎng)絡(luò)連接進(jìn)行故障恢復(fù)時(shí)將網(wǎng)絡(luò)連接 轉(zhuǎn)移到計(jì)算裝置中的一個(gè)或一個(gè)以上起作用的NIC的技術(shù),其減少NIC負(fù)載或其它可 能損害整體系統(tǒng)性能的現(xiàn)象的可能性。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)實(shí)施例闡述一種用于將網(wǎng)絡(luò)連接故障恢復(fù)到計(jì)算裝置內(nèi)的網(wǎng)絡(luò)接口
卡(NIC)的方法。所述方法包含以下步驟監(jiān)視計(jì)算裝置內(nèi)的出現(xiàn)故障的或不可靠的
NIC;確定所述出現(xiàn)故障的或不可靠的NIC已恢復(fù);確定所述計(jì)算裝置內(nèi)的起作用的NIC 過(guò)載;選擇通過(guò)所述過(guò)載的NIC傳送的第一連接組;以及將所述第一連接組轉(zhuǎn)移到所述 已恢復(fù)的NIC。
所揭示的方法的一個(gè)優(yōu)點(diǎn)在于,通過(guò)對(duì)過(guò)載的NIC上的連接組進(jìn)行再散列 (rehashing),可基于過(guò)載NIC和已恢復(fù)NIC上的業(yè)務(wù)負(fù)載來(lái)決定是否將網(wǎng)絡(luò)連接組故障 恢復(fù)到已恢復(fù)的NIC。這種在計(jì)算裝置內(nèi)的起作用的NIC間平衡網(wǎng)絡(luò)業(yè)務(wù)的方法可相對(duì) 于現(xiàn)有技術(shù)實(shí)質(zhì)上改進(jìn)整體性能。
為了可更詳細(xì)了解本發(fā)明的上述特征,可參考實(shí)施例對(duì)上文簡(jiǎn)要概述的本發(fā)明進(jìn)行 更具體的描述,所述實(shí)施例中的一些實(shí)施例在附圖中說(shuō)明。然而,應(yīng)注意,附圖只說(shuō)明 本發(fā)明的典型實(shí)施例,且因此不應(yīng)被視為限制本發(fā)明的范圍,因?yàn)楸景l(fā)明可承認(rèn)其它同 等有效的實(shí)施例。
圖1A到圖1C說(shuō)明其中可實(shí)施本發(fā)明的一個(gè)或一個(gè)以上方面的計(jì)算裝置;以及
圖2A到圖2D說(shuō)明根據(jù)本發(fā)明一個(gè)實(shí)施例用于將網(wǎng)絡(luò)連接從過(guò)載的NIC恢復(fù)到計(jì) 算裝置中的一個(gè)或一個(gè)以上起作用的NIC的方法步驟的流程圖。
具體實(shí)施例方式
可通過(guò)使用以下元件來(lái)實(shí)現(xiàn)將網(wǎng)絡(luò)連接從過(guò)載的NIC智能地故障恢復(fù)到一個(gè)或一 個(gè)以上完全起作用的NIC:跟蹤網(wǎng)絡(luò)統(tǒng)計(jì)資料的散列引擎,所述網(wǎng)絡(luò)統(tǒng)計(jì)資料包含連接
的數(shù)目以及通過(guò)每個(gè)NIC傳輸和接收的業(yè)務(wù)的量;以及跟蹤每個(gè)網(wǎng)絡(luò)連接初始借以傳送
的NIC的TCP/IP堆棧。 一旦出現(xiàn)故障或不可靠的NIC再次恢復(fù)成完全起作用地操作, 如果系統(tǒng)內(nèi)的另一 NIC變得過(guò)載,便將過(guò)載的NIC上的一些網(wǎng)絡(luò)連接自動(dòng)故障恢復(fù)到 已恢復(fù)的NIC,直到先前過(guò)載的NIC不再過(guò)載為止。此轉(zhuǎn)移允許由替代的NIC來(lái)處理一 個(gè)或一個(gè)以上額外的網(wǎng)絡(luò)連接而不會(huì)超出所述NIC的能力,因而避免可能會(huì)降低計(jì)算裝 置的整體性能的連接重新分配范例。從過(guò)載的NIC轉(zhuǎn)移連接可能還包含從過(guò)載的NIC 內(nèi)的硬件卸載引擎去卸載連接,并隨后將所述連接卸載到所述連接被轉(zhuǎn)移到的已恢復(fù)的 NIC內(nèi)的硬件卸載引擎。
圖1A到圖1C說(shuō)明可實(shí)施本發(fā)明的一個(gè)或一個(gè)以上方面的計(jì)算裝置100。如圖所示, 計(jì)算裝置IOO包含主存儲(chǔ)器102、存儲(chǔ)器控制器104、微處理器106、 1/0控制器108以 及NIC 110、 111和116。 NIC 110包含多播列表114和硬件卸載引擎("HOE") 112。 NIC 111包含多播列表115和HOE 113。NIC 116包含多播列表120和HOE 118。HOE 112、 113和118包含經(jīng)配置以用于處理和計(jì)算裝置100與已經(jīng)被選擇性地卸載到NIC 110、111 和116的一個(gè)或一個(gè)以上遠(yuǎn)程網(wǎng)絡(luò)計(jì)算裝置(未圖示)之間的網(wǎng)絡(luò)連接相關(guān)聯(lián)的網(wǎng)絡(luò)幀 的邏輯。與常規(guī)做法一樣,通過(guò)用HOE 112、 113和118來(lái)處理網(wǎng)絡(luò)幀(有時(shí)稱為"在 硬件中處理連接"),而不是在主機(jī)軟件TCP/IP堆棧中執(zhí)行那些處理功能(有時(shí)稱為"在 軟件中處理連接"),可實(shí)質(zhì)上減少NIC 110、 111和116與微處理器106之間的傳送以及 由微處理器106執(zhí)行的計(jì)算。
存儲(chǔ)器控制器104耦接到主存儲(chǔ)器102,且耦接到微處理器106,且1/0控制器108 耦接到微處理器106以及NIC 110、 111和116。在本發(fā)明的一個(gè)實(shí)施例中,微處理器106 通過(guò)將命令或數(shù)據(jù)寫(xiě)入到I/O控制器108中來(lái)向NIC 110、 111和116傳輸命令或數(shù)據(jù)。 一旦此類命令或數(shù)據(jù)被寫(xiě)入到I/O控制器108中,I/O控制器108就視情況將所述命令 或數(shù)據(jù)轉(zhuǎn)譯成目標(biāo)NIC可理解的格式,并將所述命令或數(shù)據(jù)傳送到所述目標(biāo)NIC。類似 地,NIC 110、 111和116通過(guò)將命令或數(shù)據(jù)寫(xiě)入到1/0控制器108中來(lái)向微處理器106 傳輸命令或數(shù)據(jù),且I/O控制器108視情況將所述命令或數(shù)據(jù)轉(zhuǎn)譯成微處理器106可理 解的格式,并將所述命令或數(shù)據(jù)傳送到微處理器106。前面提及的耦接可實(shí)施為存儲(chǔ)器 總線或I/0總線,例如PCITM總線或其任一組合,或者另外可以任何其它技術(shù)上可行的 方式來(lái)實(shí)施。
如圖IB中更詳細(xì)展示,主存儲(chǔ)器102包含操作系統(tǒng)122和軟件驅(qū)動(dòng)程序124。軟 件驅(qū)動(dòng)程序124包含負(fù)載平衡和故障轉(zhuǎn)移("LBFO")模塊126和TCP/IP堆棧130。LBFO 模塊126跟蹤每個(gè)NIC的聯(lián)網(wǎng)統(tǒng)計(jì)資料(例如,每個(gè)NIC上的連接的數(shù)目,每個(gè)NIC 發(fā)送和接收的包的數(shù)目),且在網(wǎng)絡(luò)連接在計(jì)算裝置100內(nèi)從一個(gè)NIC移動(dòng)到另一NIC 時(shí)與TCP/IP堆棧130通信。LBFO模塊126包含散列引擎128,其基于前面提及的聯(lián)網(wǎng) 統(tǒng)計(jì)資料來(lái)智能地確定應(yīng)如何在計(jì)算裝置100中的不同的起作用的NIC上分配網(wǎng)絡(luò)連
接。關(guān)于散列引擎128的功能性的更多細(xì)節(jié)在2007年5月18申請(qǐng)的、序列號(hào)為_(kāi)_____
且代理人案號(hào)為NVDA/P001883的題為"網(wǎng)絡(luò)業(yè)務(wù)的智能負(fù)載平衡和故障轉(zhuǎn)移" ("Intelligent Load Balancing and Failover of Network Traffic")的相關(guān)美國(guó)專利申請(qǐng)案中 描述。此相關(guān)專利申請(qǐng)案在此以引用的方式并入本文中。
如圖1C中更詳細(xì)展示,散列引擎128包含傳輸散列表138和接收散列表140。傳 輸散列表138的用途是基于由LBFO模塊126向傳輸散列表138提供的數(shù)據(jù),在計(jì)算裝 置100內(nèi)選擇用于傳輸與網(wǎng)絡(luò)連接有關(guān)的包的起作用的NIC。傳輸散列表138包含多個(gè) 散列表?xiàng)l目(例如,散列表?xiàng)l目134)和軟件散列函數(shù)(未圖示)。另外,每個(gè)散列表?xiàng)l 目包含表索引(例如,表索引132)和表值(例如,表值136)。 LBFO模塊126引導(dǎo)散 列引擎128通過(guò)將TCP/IP連接數(shù)據(jù)傳送到散列引擎128來(lái)在計(jì)算裝置100內(nèi)選擇傳輸 NIC,所述散列引擎128將TCP/IP連接數(shù)據(jù)傳送到傳輸散列表138中的軟件散列函數(shù)。 作為響應(yīng),軟件散列函數(shù)基于所述TCP/IP連接數(shù)據(jù)的值而在傳輸散列表138內(nèi)選擇表 索引。從這個(gè)選定的表索引中,傳輸散列表138識(shí)別相應(yīng)的表值,且散列引擎128將識(shí) 別出的表值傳送回到LBFO模塊126。由于軟件散列函數(shù)的設(shè)計(jì)和操作是所屬領(lǐng)域的技 術(shù)人員眾所周知的,所以本文將不會(huì)論述這些問(wèn)題。在一個(gè)實(shí)施例中,LBFO模塊126
將以下四個(gè)TCP/IP數(shù)據(jù)傳送到散列引擎128:客戶端因特網(wǎng)協(xié)議("IP")地址、服務(wù)器 IP地址、服務(wù)器TCP端口、客戶端TCP端口和虛擬局域網(wǎng)("VLAN")連接ID。在其 它實(shí)施例中,LBFO模塊126可將任何技術(shù)上可行的TCP/IP參數(shù)傳送到散列引擎128。 接收散列表140的用途是基于由LBFO模塊126向接收散列表140提供的數(shù)據(jù),在 計(jì)算裝置100內(nèi)選擇用于接收與網(wǎng)絡(luò)連接有關(guān)的包的起作用的NIC。類似于傳輸散列表 138,接收散列表140包含多個(gè)散列表?xiàng)l目和軟件散列函數(shù)(未圖示),且每個(gè)散列表?xiàng)l 目包含表索引和表值。同樣,LBFO模塊126通過(guò)將TCP/IP連接數(shù)據(jù)傳送到散列引擎 128來(lái)引導(dǎo)散列引擎128在計(jì)算裝置100內(nèi)選擇接收NIC,所述散列引擎128將TCP/IP 連接數(shù)據(jù)傳送到接收散列表140中的軟件散列函數(shù)。作為響應(yīng),軟件散列函數(shù)基于所述 TCP/IP連接數(shù)據(jù)的值而在接收散列表140內(nèi)選擇表索引。從這個(gè)選定的表索引中,接收 散列表140識(shí)別相應(yīng)的表值,且散列引擎128將識(shí)別出的表值傳送回到LBFO模塊126。 在一個(gè)實(shí)施例中,LBFO模塊126傳送到散列引擎128的TCP/IP數(shù)據(jù)包含服務(wù)器IP地 址。在其它實(shí)施例中,LBFO模塊126可將任何技術(shù)上可行的TCP/IP數(shù)據(jù)傳送到散列引 擎128。
計(jì)算裝置IOO可以是臺(tái)式計(jì)算機(jī)、服務(wù)器、膝上型計(jì)算機(jī)、掌上型計(jì)算機(jī)、個(gè)人數(shù) 字助理、平板計(jì)算機(jī)、游戲控制臺(tái)、蜂窩式電話或處理信息的任何其它類型的類似裝置。
圖2A到圖2D說(shuō)明根據(jù)本發(fā)明一個(gè)實(shí)施例的用于將網(wǎng)絡(luò)連接從過(guò)載的NIC故障恢 復(fù)到已恢復(fù)的NIC的方法步驟200的流程圖。盡管參考計(jì)算裝置IOO來(lái)描述所述方法, 但所屬領(lǐng)域的技術(shù)人員將了解,任何經(jīng)配置以用任何次序執(zhí)行所述方法步驟的系統(tǒng)都在 本發(fā)明的范圍內(nèi)。
如圖所示,用于對(duì)網(wǎng)絡(luò)連接進(jìn)行故障恢復(fù)的方法在步驟202處開(kāi)始,其中LBFO模 塊126監(jiān)視每個(gè)NIC的狀態(tài)以獲得出現(xiàn)故障或不可靠的NIC已恢復(fù)(即,出現(xiàn)故障或 不可靠的NIC現(xiàn)在完全起作用)的指示。在一個(gè)實(shí)施例中,當(dāng)存在兩種情形時(shí),認(rèn)為 NIC已恢復(fù)。第一,基于對(duì)出現(xiàn)故障或不可靠的NIC的鏈接指示,LBFO模塊126確定 對(duì)于出現(xiàn)故障或不可靠的NIC存在鏈接連接,這表明先前可能已斷開(kāi)的網(wǎng)絡(luò)電纜現(xiàn)在已 經(jīng)重新連接。第二, LBFO模塊126確定在計(jì)算裝置100中的NIC之間傳輸?shù)谋3钟行?(keep-alive)包正由出現(xiàn)故障或不可靠的NIC可靠地接收。如在2005年12月15日申 請(qǐng)的、序列號(hào)為11/303,285且代理人案號(hào)為NVDA/P001879、題為"用于識(shí)別網(wǎng)絡(luò)接口 卡組內(nèi)出現(xiàn)故障的網(wǎng)絡(luò)接口卡的技術(shù)"("Technique for Identifying a Failed Network Interface Card within a Team of Network Interface Cards")的相關(guān)美國(guó)專利申請(qǐng)案中所描 述,可基于每個(gè)NIC正如何傳輸和/或接收保持有效包來(lái)識(shí)別計(jì)算裝置內(nèi)出現(xiàn)故障或起
作用的NIC。此相關(guān)專利申請(qǐng)案在此以引用的方式并入本文中。通過(guò)監(jiān)視這兩種情形, LBFO模塊126能夠確定出現(xiàn)故障或不可靠的NIC是否已經(jīng)恢復(fù)。
在步驟204中,LBFO模塊126確定在步驟202中監(jiān)視的出現(xiàn)故障或不可靠的NIC 是否已經(jīng)恢復(fù)。如果出現(xiàn)故障或不可靠的NIC尚未恢復(fù),那么所述方法返回到步驟202, 其中LBFO模塊126繼續(xù)監(jiān)視出現(xiàn)故障或不可靠的NIC。然而,如果在步驟204中,LBFO 模塊126確定出現(xiàn)故障或不可靠的NIC已恢復(fù),那么所述方法前進(jìn)到步驟206。僅出于 論述的目的,假設(shè)NIC 110先前已出現(xiàn)故障或變得不可靠且現(xiàn)在已經(jīng)恢復(fù),當(dāng)NIC110 出現(xiàn)故障時(shí)將初始通過(guò)NIC 110傳送的一個(gè)或一個(gè)以上連接組轉(zhuǎn)移到NIC 116,且NIC 116當(dāng)前過(guò)載。如本文中所使用,"連接組"是多個(gè)初始通過(guò)一個(gè)共用NIC傳送的連接。 重要的是,將連接組而不是各個(gè)連接轉(zhuǎn)移到故障恢復(fù)NIC會(huì)防止針對(duì)給定MAC地址的 連接被指配給一個(gè)以上NIC。
在步驟206中,LBFO模塊126用信號(hào)通知TCP/IP堆棧130: NIC 110已恢復(fù)。在 步驟208中,LBFO模塊126用信號(hào)通知散列引擎128: NIC 110已恢復(fù)。在步驟209中, 散列引擎128對(duì)傳輸散列表138和接收散列表140進(jìn)行配置,以便在散列引擎128就應(yīng) 如何在計(jì)算裝置100內(nèi)起作用的NIC間分配網(wǎng)絡(luò)連接作出決定時(shí),使得可再次將連接指 配給NIC 110。
在步驟210中,LBFO模塊126監(jiān)視完全起作用的NIC 110、 111和116,以確定這 些NIC中是否有任何一者過(guò)載。在一個(gè)實(shí)施例中,當(dāng)NIC的作為NIC的傳輸或接收能 力的百分比的利用率超過(guò)某一閾值時(shí),認(rèn)為所述NIC過(guò)載。在另一實(shí)施例中,當(dāng)NIC 的出錯(cuò)率上升到某一閾值以上時(shí),認(rèn)為所述NIC過(guò)載。在又一實(shí)施例中,可使用利用率 與出錯(cuò)率的組合來(lái)確定NIC是否過(guò)載。在步驟212中,LBFO模塊126基于每個(gè)NIC的 利用率和/或所述NIC的出錯(cuò)率來(lái)確定在步驟210中監(jiān)視的NIC 110、 111和116中是否 有任何一者過(guò)載。如果LBFO模塊126發(fā)現(xiàn)所監(jiān)視的NIC中沒(méi)有一個(gè)過(guò)載,那么所述方 法返回到步驟210,其中LBFO模塊126繼續(xù)監(jiān)視NIC 110、 111和116。
然而,如果在步驟212中發(fā)現(xiàn)NIC過(guò)載(例如,NIC 116),那么所述方法前進(jìn)到步 驟214 — 238,其中將過(guò)載的NIC116上的多個(gè)"連接組""重新散列",以便減少過(guò)載的 NIC 116上的網(wǎng)絡(luò)業(yè)務(wù)。此處,對(duì)連接組進(jìn)行重新散列包含確定用于所述連接組的"初 始NIC"并將連接組轉(zhuǎn)移到已恢復(fù)的NIC 110。如本文中所使用,"初始NIC"是指初始 用以傳送連接的NIC。在步驟214中,LBFO模塊126選擇過(guò)載的NIC 116上的連接組 來(lái)重新散列。如有必要,在步驟216中,LBFO模塊126將選定的連接組從HOE 118去 卸載到TCP/IP堆棧130。如在2007年5月18日申請(qǐng)的、序列號(hào)為_(kāi)_____且代理人案號(hào)
為NVD A/POO 1880、題為"負(fù)載平衡的聯(lián)網(wǎng)環(huán)境中的智能故障轉(zhuǎn)移"("Intelligent Failover in a Load-Balanced Networking Environment")中所描述,可將連接分別卸載或去卸載到 NIC 110、 111和116內(nèi)的相應(yīng)硬件卸載引擎112、 113和118。此相關(guān)專利申請(qǐng)案在此以 引用的方式并入本文中。
在步驟217中,LBFO模塊126將己恢復(fù)的NIC (在此情況下為巳恢復(fù)的NIC 110) 識(shí)別為選定連接組應(yīng)轉(zhuǎn)移到的新NIC。重要的是, 一旦LBFO模塊126將已恢復(fù)的NIC 110識(shí)別為用于選定連接組的新NIC, LBFO模塊126便對(duì)其自身進(jìn)行配置,以便截取 正從操作系統(tǒng)122傳送到遠(yuǎn)程計(jì)算裝置(未圖示)的包,并將所截取的包的源MAC地 址重寫(xiě)成對(duì)應(yīng)于已恢復(fù)的NIC 110的MAC地址。重寫(xiě)連接組的包的源MAC地址確保 交換機(jī)將把用于連接組的接收業(yè)務(wù)正確地分配給已恢復(fù)的NIC 110。在步驟218中,LBFO 模塊126確定計(jì)算裝置100內(nèi)的NIC是用于選定連接組的初始NIC。在一個(gè)實(shí)施例中, 將用于每個(gè)連接組的初始NIC的身份存儲(chǔ)在TCP/IP堆棧130中,從而允許LBFO模塊 126向TCP/IP堆棧130詢問(wèn)用于任何連接組的初始NIC的身份。在步驟219中,TCP/IP 堆棧130引導(dǎo)已恢復(fù)的NIC110向網(wǎng)絡(luò)交換機(jī)(同樣未圖示)發(fā)送獲知包。所述獲知包 可以是任何技術(shù)上可行的包含初始NIC的MAC地址的包類型。如眾所周知的,從已恢 復(fù)的NIC IIO發(fā)送此包會(huì)致使交換機(jī)對(duì)其自身進(jìn)行重新配置,以便將以用于選定連接組 的初始NIC (此處是已恢復(fù)的NIC 110)的MAC地址為目的地的后續(xù)包路由到實(shí)際NIC IIO而不是過(guò)載的NIC 116。因此,此后由已恢復(fù)的NIC IIO接收所有與正被轉(zhuǎn)移給已恢 復(fù)的NIC 110的選定連接組有關(guān)的網(wǎng)絡(luò)業(yè)務(wù)。
在步驟220中,LBFO模塊126基于在步驟218中確定的初始NIC的身份來(lái)確定用 于選定連接組的初始NIC是否為已恢復(fù)的NIC 110。如果LBFO模塊126確定用于選定 連接組的初始NIC是已恢復(fù)的NIC (在此情況下是NIC 110),那么所述方法前進(jìn)到步驟 222,其中軟件驅(qū)動(dòng)程序124從過(guò)載的NIC 116的多播列表中移除用于選定連接組的初 始NIC的MAC地址。從多播列表中移除此MAC地址可防止過(guò)載的NIC 116接收正被 傳輸?shù)匠跏糔IC (此處是NIC 110)的MAC地址的包。在步驟232中,如果LBFO模 塊126確定因卸載實(shí)現(xiàn)的性能益處保障了此動(dòng)作,那么LBFO模塊126視情況將選定連 接組卸載到已恢復(fù)的NIC 110內(nèi)的HOE 112。
在步驟234中,LBFO模塊126確定是否已對(duì)過(guò)載的NIC 116上的足夠數(shù)目的連接 組進(jìn)行重新散列,使得NIC 116不再過(guò)載。如果LBFO模塊126確定NIC 116不再過(guò)載, 那么所述方法在步驟238處終止。然而,如果NIC 116仍然過(guò)載,那么所述方法前進(jìn)到 步驟236,其中LBFO模塊126在返回到步驟216之前選擇過(guò)載的NIC 116上的另一連
接組來(lái)重新散列。
現(xiàn)在返回到步驟220,如果LBFO模塊126確定用于選定連接組的初始NIC不是已 恢復(fù)的NIC 110——這意味著(i)選定連接組被從不同于先前負(fù)載平衡操作中的NIC 110 的起作用的NIC轉(zhuǎn)移到過(guò)載的NIC 116;或(ii)過(guò)載的NIC 116是用于選定連接組的 初始NIC—一那么所述方法前進(jìn)到步驟226。在步驟226中,如果選定連接組被從不同 于先前負(fù)載平衡操作中的NIC 110的起作用的NIC轉(zhuǎn)移到過(guò)載的NIC 116,那么軟件驅(qū) 動(dòng)程序124從過(guò)載的NIC 116的多播列表中移除初始NIC的MAC地址。
在步驟228中,軟件驅(qū)動(dòng)程序124向己恢復(fù)的NIC 110的多播列表添加選定連接組 的初始NIC的MAC地址,這允許NIC 110接收與選定連接組相關(guān)聯(lián)的正被傳輸?shù)匠跏?NIC的MAC地址的包。所述方法接著如前所述前進(jìn)到步驟232。
所揭示的方法的一個(gè)優(yōu)點(diǎn)在于,通過(guò)對(duì)過(guò)載的NIC上的連接組進(jìn)行重新散列,可基 于過(guò)載的NIC和已恢復(fù)的NIC上的業(yè)務(wù)負(fù)載智能地決定是否將網(wǎng)絡(luò)連接組故障恢復(fù)到 已恢復(fù)的NIC。這種在計(jì)算裝置內(nèi)的起作用的NIC間平衡網(wǎng)絡(luò)業(yè)務(wù)的方法相對(duì)于現(xiàn)有技 術(shù)可顯著改進(jìn)總體性能。
雖然前述內(nèi)容針對(duì)本發(fā)明的實(shí)施例,但在不偏離本發(fā)明的基本范圍的情況下可設(shè)計(jì) 本發(fā)明的其它和進(jìn)一步的實(shí)施例。舉例來(lái)說(shuō),可在硬件或軟件中或者在硬件與軟件的組 合中實(shí)施本發(fā)明的各方面。可將本發(fā)明的一個(gè)實(shí)施例實(shí)施為用于計(jì)算機(jī)系統(tǒng)的程序產(chǎn) 品。所述程序產(chǎn)品的程序定義實(shí)施例的功能(包含本文中描述的方法),且可包含在多 種計(jì)算機(jī)可讀存儲(chǔ)媒體上。說(shuō)明性計(jì)算機(jī)可讀存儲(chǔ)媒體包含(但不限于)(i)上面永久 存儲(chǔ)信息的不可寫(xiě)的存儲(chǔ)媒體(例如,計(jì)算機(jī)內(nèi)的只讀存儲(chǔ)器裝置,比如可由CD-ROM 驅(qū)動(dòng)器讀取的CD-ROM盤(pán)、快閃存儲(chǔ)器、ROM芯片或任何類型的固態(tài)非易失性半導(dǎo)體 存儲(chǔ)器)和(ii)上面存儲(chǔ)可更改的信息的可寫(xiě)的存儲(chǔ)媒體(例如,軟盤(pán)驅(qū)動(dòng)器內(nèi)的軟 盤(pán)或硬盤(pán)驅(qū)動(dòng)器或者任何類型的固態(tài)隨機(jī)存取半導(dǎo)體存儲(chǔ)器)。此種計(jì)算機(jī)可讀存儲(chǔ)媒 體在載運(yùn)引導(dǎo)本發(fā)明功能的計(jì)算機(jī)可讀指令時(shí)是本發(fā)明的實(shí)施例。因此,本發(fā)明的范圍 由所附權(quán)利要求書(shū)確定。
權(quán)利要求
1. 一種用于將網(wǎng)絡(luò)連接故障恢復(fù)到計(jì)算裝置內(nèi)的網(wǎng)絡(luò)接口卡(NIC)的方法,所述方法包括監(jiān)視所述計(jì)算裝置內(nèi)的出現(xiàn)故障或不可靠的NIC;確定所述出現(xiàn)故障或不可靠的NIC已經(jīng)恢復(fù);確定所述計(jì)算裝置內(nèi)起作用的NIC過(guò)載;選擇通過(guò)所述過(guò)載NIC傳送的第一連接組;以及將所述第一連接組轉(zhuǎn)移到所述已恢復(fù)的NIC。
2. 根據(jù)權(quán)利要求1所述的方法,其中所述轉(zhuǎn)移所述第一連接的步驟包括通過(guò)所述已恢 復(fù)的NIC向網(wǎng)絡(luò)交換機(jī)傳輸獲知包的步驟。
3. 根據(jù)權(quán)利要求2所述的方法,其中初始通過(guò)所述己恢復(fù)的NIC傳送所述第一連接 組,且所述轉(zhuǎn)移所述第一連接組的步驟進(jìn)一步包括從與所述過(guò)載的NIC相關(guān)聯(lián)的 多播中移除所述已恢復(fù)的NIC的媒體接入控制(MAC)地址的步驟。
4. 根據(jù)權(quán)利要求3所述的方法,其進(jìn)一步包括將所述第一連接組卸載到與所述己恢復(fù) 的NIC相關(guān)聯(lián)的硬件卸載引擎的步驟。
5. 根據(jù)權(quán)利要求2所述的方法,其中初始不是通過(guò)所述已恢復(fù)的NIC傳送所述第一 連接組,且所述轉(zhuǎn)移所述第一連接組的步驟進(jìn)一步包括從與所述過(guò)載NIC相關(guān)聯(lián) 的多播列表中移除初始用以傳送所述第一連接組的NIC的MAC地址的步驟。
6. —種計(jì)算機(jī)可讀媒體,其所存儲(chǔ)的指令在由處理器執(zhí)行時(shí)致使所述處理器通過(guò)執(zhí)行 以下步驟將網(wǎng)絡(luò)連接故障恢復(fù)到計(jì)算裝置內(nèi)的網(wǎng)絡(luò)接口卡(NIC):監(jiān)視所述計(jì)算裝置內(nèi)的出現(xiàn)故障或不可靠的NIC; 確定所述出現(xiàn)故障或不可靠的NIC己經(jīng)恢復(fù); 確定所述計(jì)算裝置內(nèi)的起作用的NIC過(guò)載; 選擇通過(guò)所述過(guò)載NIC傳送的第一連接組;以及 將所述第一連接組轉(zhuǎn)移到所述已恢復(fù)的NIC。
7. 根據(jù)權(quán)利要求6所述的計(jì)算機(jī)可讀媒體,其中所述轉(zhuǎn)移所述第一連接的步驟包括通 過(guò)所述已恢復(fù)的NIC向網(wǎng)絡(luò)交換機(jī)傳輸獲知包的步驟。
8. 根據(jù)權(quán)利要求7所述的計(jì)算機(jī)可讀媒體,其中初始通過(guò)所述已恢復(fù)的NIC傳送所 述第一連接組,且所述轉(zhuǎn)移所述第一連接組的步驟進(jìn)一步包括從與所述過(guò)載的NIC 相關(guān)聯(lián)的多播中移除所述已恢復(fù)的NIC的媒體接入控制(MAC)地址的步驟。
9. 根據(jù)權(quán)利要求7所述的計(jì)算機(jī)可讀媒體,其中初始不是通過(guò)所述已恢復(fù)的NIC傳 送所述第一連接組,且所述轉(zhuǎn)移所述第一連接組的步驟進(jìn)一步包括從與所述過(guò)載 NIC相關(guān)聯(lián)的多播列表中移除初始用以傳送所述第一連接組的NIC的MAC地址的 步驟。
10. —種計(jì)算系統(tǒng),其經(jīng)配置以將網(wǎng)絡(luò)連接故障恢復(fù)到網(wǎng)絡(luò)接口卡(NIC),所述系統(tǒng) 包括處理單元;多個(gè)NIC,通過(guò)其傳送一個(gè)或一個(gè)以上網(wǎng)絡(luò)連接;以及存儲(chǔ)器,其耦接到所述處理單元,其中所述存儲(chǔ)器存儲(chǔ)經(jīng)配置以執(zhí)行以下操作的 軟件驅(qū)動(dòng)程序監(jiān)視所述計(jì)算裝置內(nèi)的出現(xiàn)故障或不可靠的NIC; 確定所述出現(xiàn)故障或不可靠的NIC已經(jīng)恢復(fù);確定所述計(jì)算裝置內(nèi)的起作用的NIC過(guò)載; , 選擇通過(guò)所述過(guò)載NIC傳送的第一連接組;以及 將所述第一連接組轉(zhuǎn)移到所述巳恢復(fù)的NIC。
全文摘要
本發(fā)明的一個(gè)實(shí)施例闡述一種用于將網(wǎng)絡(luò)連接故障恢復(fù)到計(jì)算裝置內(nèi)的網(wǎng)絡(luò)接口卡(NIC)的方法。所述方法包含以下步驟監(jiān)視所述計(jì)算裝置內(nèi)的出現(xiàn)故障的或不可靠的NIC;確定所述出現(xiàn)故障的或不可靠的NIC已恢復(fù);確定所述計(jì)算裝置內(nèi)的起作用的NIC過(guò)載;選擇通過(guò)所述過(guò)載的NIC傳送的第一連接組;以及將所述第一連接組轉(zhuǎn)移到所述已恢復(fù)的NIC。通過(guò)此方法,可有利地基于所述過(guò)載的NIC和所述已恢復(fù)的NIC上的業(yè)務(wù)負(fù)載而關(guān)于是否將網(wǎng)絡(luò)連接組故障恢復(fù)到已恢復(fù)的NIC智能地作出決定。這種在計(jì)算裝置內(nèi)的所述起作用的NIC間平衡網(wǎng)絡(luò)業(yè)務(wù)的方法可相對(duì)于現(xiàn)有技術(shù)顯著改進(jìn)整體性能。
文檔編號(hào)H04L12/24GK101383732SQ20081009889
公開(kāi)日2009年3月11日 申請(qǐng)日期2008年5月19日 優(yōu)先權(quán)日2007年5月18日
發(fā)明者薩米爾·南達(dá), 諾曼·K·陳, 赫馬馬利尼·馬尼克瓦薩甘, 阿亞茲·阿卜杜拉, 阿南德·拉賈戈帕蘭, 阿舒托什·K·杰哈 申請(qǐng)人:輝達(dá)公司