專利名稱:維持兩個網(wǎng)絡(luò)實體之間的鏈路的方法、系統(tǒng)和程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及維持兩個網(wǎng)絡(luò)實體之間的鏈路的方法、系統(tǒng)和程序。
背景技術(shù):
在局域網(wǎng)(LAN)中,交換機(jī)位于LAN的段之間。每一交換機(jī)接收數(shù)據(jù)包,決定數(shù)據(jù)包的目的地,并傳送數(shù)據(jù)包到它們的目的地。例如,在以太網(wǎng)局域網(wǎng)(LAN)中,交換機(jī)從數(shù)據(jù)包得到物理設(shè)備地址(亦即介質(zhì)訪問控制即MAC地址)以識別數(shù)據(jù)包的目的地。交換機(jī)可以把數(shù)據(jù)包引導(dǎo)到位于到該數(shù)據(jù)包的目的地的路徑上的另一個交換機(jī)。術(shù)語“以太網(wǎng)”是對由電氣和電子工程師協(xié)會(IEEE)維護(hù)的數(shù)據(jù)包的傳輸?shù)臉?biāo)準(zhǔn)的參考。
在一些系統(tǒng)中,交換機(jī)執(zhí)行生成樹(spanning tree)算法,其作為該交換機(jī)的缺省配置被激活。使用生成樹算法來實現(xiàn)用于發(fā)現(xiàn)網(wǎng)絡(luò)結(jié)構(gòu)的生成樹協(xié)議,以便高效地為數(shù)據(jù)包選擇路由和檢測到一個目的地地址的冗余路徑。特別是,在以太網(wǎng)LAN中,計算機(jī)使用共享路徑。在實現(xiàn)生成樹算法中,交換機(jī)在網(wǎng)絡(luò)上發(fā)送消息。當(dāng)接收到對該消息的響應(yīng)時,每一響應(yīng)包括該響應(yīng)的發(fā)送者的一個標(biāo)識。生成樹算法使用發(fā)送者數(shù)據(jù)來獲得對網(wǎng)絡(luò)結(jié)構(gòu)(“網(wǎng)絡(luò)拓?fù)洹?的理解。
通過消除冗余網(wǎng)絡(luò)路徑(亦即產(chǎn)生網(wǎng)絡(luò)路徑回路的路徑),生成樹算法在防止網(wǎng)絡(luò)風(fēng)暴中特別有用。另外,當(dāng)多條路徑是可能的時,使用生成樹算法來為數(shù)據(jù)包選擇高效的路徑。由IEEE委員會開發(fā)了一種生成樹協(xié)議和算法。
作為生成樹算法實現(xiàn)的一部分,當(dāng)交換機(jī)具有在它的一個端口上發(fā)生的鏈路轉(zhuǎn)移時,該交換機(jī)嘗試發(fā)送生成樹包來探測網(wǎng)絡(luò)結(jié)構(gòu)。交換機(jī)還具有一個學(xué)習(xí)時期,在該期間交換機(jī)禁止網(wǎng)絡(luò)活動通過所探測的端口,以防止由網(wǎng)絡(luò)路徑回路引起的單播、廣播、和/或組播風(fēng)暴。
另外,生成樹算法具有一個復(fù)雜的內(nèi)部狀態(tài)機(jī),以不同級的活動封鎖通信通過探測的端口。亦即,網(wǎng)絡(luò)包可以在無方向或一個方向上流動,直到狀態(tài)穩(wěn)定。
當(dāng)必須重新配置網(wǎng)絡(luò)實體,諸如以太網(wǎng)適配器時,由于驅(qū)動程序重加載(亦即卸載驅(qū)動程序和以新設(shè)定重新加載),它可以引起鏈路轉(zhuǎn)移。重配置階段的例子包括重配置“適配器編組(teaming)”(例如容錯),它可以引起驅(qū)動程序以不同特性重加載,諸如不同的MAC地址,不同的虛擬LAN(VLAN)等;通過操作系統(tǒng)網(wǎng)絡(luò)控制應(yīng)用程序改變適配器特性,它可以導(dǎo)致驅(qū)動程序的重加載;自動的證書測試,它傾向于引起適配器以不同能力重加載。
當(dāng)驅(qū)動程序被卸載時(例如在被重加載前),先前不知道該驅(qū)動程序是否要被重加載,所以把交換機(jī)和網(wǎng)絡(luò)適配器之間的鏈路拆卸以便改善功耗(假定未配置叫醒模式)。當(dāng)發(fā)生驅(qū)動程序重加載時,必須將該鏈路重新接通。特別是,一旦該鏈路來回切換,則在該交換機(jī)上的生成樹算法禁止該端口一段時間(例如30秒,其為最壞情況下的缺省配置)。禁止端口會引起對于任何鏈路伙伴的不可用性。注意,當(dāng)由網(wǎng)絡(luò)實體接收到具有特定模式的包時,該包的接收將常常引起通電事件(例如打開機(jī)器)。僅在鏈路接通時才可以接收到叫醒模式。
當(dāng)交換機(jī)得到一個包而不知道該包的目的地端口時,該交換機(jī)使該包流入所有端口(直到該交換機(jī)知道正確的目的地端口)。如果在網(wǎng)絡(luò)中有一個回路,則該交換機(jī)可以使該包再次返回,而通過一次又一次給所有端口發(fā)送該包可以引起網(wǎng)絡(luò)風(fēng)暴。生成樹算法封鎖鏈路被來回切換的一個端口的通信的一個原因是,該鏈路可以生成網(wǎng)絡(luò)中的一個回路(如果連接到另一個交換機(jī)),和當(dāng)連接一個網(wǎng)絡(luò)端點(例如一個計算機(jī))時這是固有錯誤。
因此,在本領(lǐng)域中持續(xù)需要改善鏈路的維持。
現(xiàn)在參考附圖,其中相似的參考號碼通篇表示相應(yīng)的部件圖1表示實現(xiàn)本發(fā)明的某些實施例的計算環(huán)境;圖2表示根據(jù)本發(fā)明的某些實施例的網(wǎng)絡(luò);圖3表示根據(jù)本發(fā)明的某些實施例的驅(qū)動程序中的關(guān)機(jī)序列的操作;圖4表示根據(jù)本發(fā)明的某些實施例的驅(qū)動程序(例如設(shè)備驅(qū)動程序120)中的加載序列的操作;圖5表示根據(jù)本發(fā)明的某些實施例的處理物理通信層中鏈路關(guān)閉定時器的操作;和圖6表示網(wǎng)絡(luò)部件諸如圖1所示的計算機(jī)的計算機(jī)體系結(jié)構(gòu)600的一個實施例。
具體實施例方式
在下面的說明中,對附圖進(jìn)行參考,附圖形成本說明書的一部分,它們表示本發(fā)明的幾個實施例。應(yīng)該理解,可以使用其他的實施例,可以進(jìn)行結(jié)構(gòu)上的和操作上的改變而不離開本發(fā)明的實施范圍。
圖1表示實現(xiàn)本發(fā)明的實施例的計算環(huán)境。計算機(jī)102包括一個或者多個中央處理單元(CPU)104、易失存儲器106、非易失存儲器108(例如磁盤驅(qū)動器,光盤驅(qū)動器,磁帶驅(qū)動器等)、操作系統(tǒng)110、和一個或者多個網(wǎng)絡(luò)適配器112。計算機(jī)102可以包括技術(shù)中公知的任何計算設(shè)備,諸如主機(jī)、服務(wù)器、個人計算機(jī)、工作站、膝上型計算機(jī)、手提式計算機(jī)、電話設(shè)備、網(wǎng)絡(luò)器具、視覺化設(shè)備、存儲器控制器等。雖然只表示出一個網(wǎng)絡(luò)適配器,但是計算機(jī)102可以包括多于一個的網(wǎng)絡(luò)適配器。應(yīng)用程序124另外在存儲器106中執(zhí)行并能夠經(jīng)由交換機(jī)170通過網(wǎng)絡(luò)176從遠(yuǎn)程計算機(jī)傳輸和接收包。交換機(jī)170可以包括網(wǎng)絡(luò)接口控制(NIC)和可以執(zhí)行鏈路協(xié)議(例如生成樹協(xié)議或快速生成樹協(xié)議)。術(shù)語“鏈路協(xié)議”指任何試圖學(xué)習(xí)網(wǎng)絡(luò)拓?fù)涞募夹g(shù)和/或檢測或消除冗余網(wǎng)絡(luò)路徑的任何協(xié)議。計算機(jī)102可以包括技術(shù)中公知的任何計算設(shè)備,諸如主機(jī)、服務(wù)器、個人計算機(jī)、工作站、膝上型計算機(jī)、手提式計算機(jī)、電話設(shè)備、網(wǎng)絡(luò)器具、視覺化設(shè)備、存儲器控制器等??梢允褂眉夹g(shù)中公知的任何CPU 104和操作系統(tǒng)110。存儲器106中的程序和數(shù)據(jù)可以交換到存儲器108中,作為存儲器管理操作的一部分。
網(wǎng)絡(luò)適配器112包括在該適配器的硬件中實現(xiàn)的各種部件。網(wǎng)絡(luò)適配器112能夠通過網(wǎng)絡(luò)176傳輸和接收數(shù)據(jù)包,所述網(wǎng)絡(luò)176可以包括局域網(wǎng)(LAN)、因特網(wǎng)、廣域網(wǎng)(WAN)、存儲器區(qū)域網(wǎng)(SAN)、WiFi、無線LAN、無線WAN等。
設(shè)備驅(qū)動程序120在存儲器106中執(zhí)行,包括網(wǎng)絡(luò)適配器112特定命令以與網(wǎng)絡(luò)適配器112通信和在操作系統(tǒng)110和網(wǎng)絡(luò)適配器112之間接口。網(wǎng)絡(luò)適配器112或設(shè)備驅(qū)動程序120實現(xiàn)處理包的邏輯,諸如傳輸協(xié)議層來處理包含在交換到一個傳輸層中的包中的消息的內(nèi)容,諸如傳輸控制協(xié)議(TCP)和/或因特網(wǎng)協(xié)議(IP)、因特網(wǎng)小型計算機(jī)系統(tǒng)接口(iSCSI)、光纖通道、SCSI、并行SCSI傳輸、或者在技術(shù)中公知的任何其他傳輸層協(xié)議。傳輸協(xié)議層從接收的TCP/IP包解包有效負(fù)載,并把數(shù)據(jù)傳送到設(shè)備驅(qū)動程序120以返回到應(yīng)用程序124。另外,傳輸數(shù)據(jù)的應(yīng)用程序124將數(shù)據(jù)傳輸給設(shè)備驅(qū)動程序120,后者然后發(fā)送該數(shù)據(jù)到傳輸協(xié)議層,以便在通過網(wǎng)絡(luò)176傳輸前組裝到TCP/IP包中。
總線控制器134使網(wǎng)絡(luò)適配器112能夠在計算機(jī)總線160上通信,計算機(jī)總線可以包括技術(shù)中公知的任何總線接口,諸如外設(shè)部件互聯(lián)(PCI)總線、小型計算機(jī)系統(tǒng)接口(SCSI)、串行ATA等。網(wǎng)絡(luò)適配器112包括用于實現(xiàn)物理通信層132的網(wǎng)絡(luò)協(xié)議以便通過網(wǎng)絡(luò)176向或從遠(yuǎn)程設(shè)備發(fā)送和接收網(wǎng)絡(luò)包。在某些實施例中,網(wǎng)絡(luò)適配器112可以實現(xiàn)以太網(wǎng)協(xié)議、令牌環(huán)協(xié)議、光纖通道協(xié)議、無限頻帶(Infiniband)、串行高級技術(shù)附件(SATA)、并行SCSI、串行附屬電纜等,或者技術(shù)中公知的任何其他網(wǎng)絡(luò)通信協(xié)議。
網(wǎng)絡(luò)適配器112包括I/O控制器130。在某些實施例中,I/O控制器130可以包括以太網(wǎng)介質(zhì)訪問控制器(MAC)或網(wǎng)絡(luò)接口控制器(NIC),應(yīng)該理解,可以使用其他類型的網(wǎng)絡(luò)控制器、I/O控制器諸如小型計算機(jī)系統(tǒng)接口(SCSI控制器)、或卡。
存儲器108可以包括內(nèi)部存儲器設(shè)備或者附屬的或者網(wǎng)絡(luò)可訪問的存儲器。存儲器108中的程序被加載到存儲器106并由CPU 104執(zhí)行。使用輸入設(shè)備150給CPU 104提供用戶輸入,所述輸入設(shè)備可以包括鍵盤、鼠標(biāo)、輸入筆、話筒、觸摸屏、或者技術(shù)中公知的任何其他活動或者輸入機(jī)制。輸出設(shè)備152能夠從CPU 104或其他部件,諸如顯示監(jiān)視器、打印機(jī)、存儲器等提供傳輸信息。
在某些實施例中,在設(shè)備驅(qū)動程序120之外,計算機(jī)102可以包括其他驅(qū)動程序,諸如傳輸協(xié)議驅(qū)動程序(未示出),其將執(zhí)行傳輸協(xié)議層的功能。
網(wǎng)絡(luò)適配器112可以包括另外的硬件邏輯電路以執(zhí)行另外的操作以處理從計算機(jī)102或者網(wǎng)絡(luò)176接收的包。另外,網(wǎng)絡(luò)適配器112可以實現(xiàn)傳輸層卸載引擎(TOF)以實現(xiàn)在網(wǎng)絡(luò)適配器中的傳輸協(xié)議層,其與計算機(jī)設(shè)備驅(qū)動程序120不同,以進(jìn)一步減少計算機(jī)102的處理負(fù)擔(dān)。另外可選,傳輸層可以在設(shè)備驅(qū)動程序120中實現(xiàn)。
在某些實施例中,各種結(jié)構(gòu)和/或緩沖器(未示出)可以駐留在存儲器106內(nèi)或者可以位于與存儲器106分開的存儲單元中。
圖2表示根據(jù)本發(fā)明的某些實施例的網(wǎng)絡(luò)200。每一圓圈表示網(wǎng)絡(luò)200中的一個網(wǎng)絡(luò)實體(例如交換機(jī)或者計算機(jī))。為簡化參考,在一個交換機(jī)和另一個交換機(jī)或計算機(jī)之間的連接將稱為“鏈路”。使用鏈路來說明從一個網(wǎng)絡(luò)實體到另一個網(wǎng)絡(luò)實體的路徑。
每一交換機(jī)201、202和203分別包括一個鏈路協(xié)議221、222和223。每一鏈路協(xié)議221、222和223(例如生成樹算法)試圖檢測網(wǎng)絡(luò)200中的回路。因為網(wǎng)絡(luò)拓?fù)淇赡芨淖?,所以鏈路協(xié)議221、222和223可以周期地或者連續(xù)地嘗試檢測回路。檢測到有回路,則交換機(jī)201、202和203產(chǎn)生為數(shù)據(jù)的路徑以避免回路。
在圖2中,交換機(jī)201由鏈路A210連接到交換機(jī)202。交換機(jī)202由鏈路B212連接到交換機(jī)203。交換機(jī)203由鏈路C214連接到交換機(jī)201,但是在圖示中經(jīng)由鏈路C的連接被拆卸或者被舍棄(例如由鏈路協(xié)議保持為不活動備用鏈路)。亦即,在某些實施例中,鏈路C可以由鏈路協(xié)議舍棄以避免路徑回路。還有,計算機(jī)204通過鏈路D216連接到交換機(jī)201。計算機(jī)205通過鏈路E218連接到交換機(jī)202。計算機(jī)206通過鏈路F220連接到交換機(jī)203。
網(wǎng)絡(luò)實體也許不能決定鄰居網(wǎng)絡(luò)實體是計算機(jī)還是交換機(jī),因為這些看起來一樣。因此,交換機(jī)201、交換機(jī)202、交換機(jī)203、和計算機(jī)206在本例中分別使用鏈路協(xié)議201、202、和203通過在網(wǎng)絡(luò)200上發(fā)送一個或者多個探測包(例如生成樹包)主動地嘗試檢測網(wǎng)絡(luò)200中的回路。如果任意交換機(jī)201、交換機(jī)202、交換機(jī)203、和/或計算機(jī)206從與探試包由之發(fā)送的端口不同的端口接收到返回的探測包,則在網(wǎng)絡(luò)200中存在回路。例如,如果交換機(jī)201從第一端口發(fā)送探測包,而從另一端口接收到它們返回,則交換機(jī)201檢測到網(wǎng)絡(luò)200中有一個回路。
在本例中,網(wǎng)絡(luò)200中的回路由鏈路A210、B212和C220形成。具有未知或者不一致的目的地的包(例如消息)在該回路中可以被不確定地捕捉。因此,交換機(jī)201、202、和203嘗試檢測回路和避免經(jīng)由該回路傳送包。因為網(wǎng)絡(luò)拓?fù)鋭討B(tài)改變,因此網(wǎng)絡(luò)實體通常嘗試使用自動技術(shù)檢測回路(例如生成樹算法)。
“樹”被定義為連接的簡單的圖,無循環(huán)(回路),還公知是無冗余路徑的圖。在圖2中,交換機(jī)201、202、和203形成具有一個回路的網(wǎng)絡(luò)拓?fù)???梢圆鹦痘蛘呱釛壱粋€特定的鏈路(例如鏈路C214)以便形成樹型拓?fù)洹?shù)據(jù)包不通過拆卸或者舍棄的鏈路發(fā)送,不過一個舍棄的鏈路可以保持為一個備用鏈路(以防其他鏈路故障)。例如,如果鏈路C214被拆卸或者被舍棄,則在計算機(jī)204和計算機(jī)205之間的路徑經(jīng)由鏈路D216、鏈路A210、和E218。
使鏈路接通(亦即可用)和拆除(亦即不可用)可能引起對網(wǎng)絡(luò)實體(例如交換機(jī))的副作用,該網(wǎng)絡(luò)實體不斷嘗試決定網(wǎng)絡(luò)拓?fù)涫欠窀淖?。從可用切換到不可用或從不可用切換到可用的鏈路也稱為“鏈路來回切換”。當(dāng)一個驅(qū)動程序被卸載和重加載(例如由于網(wǎng)絡(luò)適配器112重新配置)時,本發(fā)明的實施例防止這種鏈路來回切換。通過防止鏈路變成不可用,本發(fā)明的實施例避免了把任何不同暴露給嘗試檢測網(wǎng)絡(luò)200中任何改變的外部網(wǎng)絡(luò)實體。例如,如果計算機(jī)205上的驅(qū)動程序要被卸載和重加載,則本發(fā)明的實施例在一定時間期間不拆卸計算機(jī)205和交換機(jī)202之間的鏈路E218,以允許驅(qū)動程序重新加載,無連接方面的問題。
圖3表示根據(jù)本發(fā)明的某些實施例的驅(qū)動程序(例如設(shè)備驅(qū)動程序120)重的關(guān)閉順序的操作??刂圃诳?00開始,該驅(qū)動程序開始關(guān)閉序列。在框310,驅(qū)動程序決定鏈路是否需要拆除。在某些實施例中,操作系統(tǒng)110例如能夠指示驅(qū)動程序鏈路是否應(yīng)該保持接通(例如配置了叫醒模式)。如果是這樣的話,則處理繼續(xù)到框350。否則,處理繼續(xù)到框320。在框350,驅(qū)動程序拆卸鏈路,繼續(xù)到框360。在框320,驅(qū)動程序決定流控制選項是否被允許??梢栽试S流控制選項以指示一個關(guān)閉指示符(例如XOFF包)要被發(fā)送到其他網(wǎng)絡(luò)實體以指示數(shù)據(jù)包(例如消息)不從這些其他網(wǎng)絡(luò)實體發(fā)送,直到發(fā)送一個指示符(例如XON包)指示其他網(wǎng)絡(luò)實體可以再次開始發(fā)送消息。如果流控制選項被允許,則處理繼續(xù)到框330,否則,處理繼續(xù)到框340。在框330,驅(qū)動程序發(fā)送關(guān)閉指示符(例如XOFF包),以防止把來自其他網(wǎng)絡(luò)實體的包放置到例如硬件隊列中。
在框340,驅(qū)動程序啟動鏈路關(guān)閉定時器。鏈路關(guān)閉定時器計數(shù)該鏈路要被保持的最大時間量,同時卸載網(wǎng)絡(luò)驅(qū)動程序。如果該驅(qū)動程序在由鏈路關(guān)閉定時器計數(shù)的鏈路關(guān)閉時間間隔內(nèi)被重加載,則該鏈路保持接通。如果該驅(qū)動程序在由鏈路關(guān)閉定時器計數(shù)的鏈路關(guān)閉時間間隔內(nèi)不加載,則該鏈路被拆除。在某些實施例中,由鏈路關(guān)閉定時器計數(shù)的鏈路關(guān)閉時間間隔例如可以由系統(tǒng)管理員設(shè)定。在框360,關(guān)閉序列繼續(xù)。
圖4表示根據(jù)本發(fā)明的某些實施例用于在驅(qū)動程序(例如設(shè)備驅(qū)動程序120)中的加載序列操作??刂圃诳?00開始,加載序列開始。在框410,驅(qū)動程序決定是否允許鏈路關(guān)閉定時器和該定時器是否尚未到期。如果是這樣,則處理繼續(xù)到框420,否則處理繼續(xù)到框450。在框420,驅(qū)動程序禁止(亦即去激活)鏈路關(guān)閉定時器。在框430,驅(qū)動程序決定鏈路是否仍在接通。如果鏈路仍在接通,則處理繼續(xù)到框440,否則,處理繼續(xù)到框450。在框440,驅(qū)動程序不與鏈路重新協(xié)商繼續(xù)加載序列。在框450,驅(qū)動程序與鏈路重新協(xié)商繼續(xù)加載序列。在框460,驅(qū)動程序決定流控制選項是否被允許。如果流控制選項被設(shè)定為開,則處理繼續(xù)到框470,否則處理結(jié)束。在框470,驅(qū)動程序發(fā)送一個指示符(例如XON包),然后處理結(jié)束。
圖5表示根據(jù)本發(fā)明的某些實施例在網(wǎng)絡(luò)適配器130的物理通信層132中用于鏈路關(guān)閉定時器的操作??刂圃诳?00開始,網(wǎng)絡(luò)適配器130的物理通信層132檢查鏈路關(guān)閉定時器。在框510,物理通信層132決定驅(qū)動程序是否在由鏈路關(guān)閉定時器計數(shù)的鏈路關(guān)閉時間間隔內(nèi)被加載。在某些實施例中,驅(qū)動程序可以在一個特定寄存器內(nèi)寫入一個值以指示加載完成,物理通信層132讀該寄存器以決定驅(qū)動程序是否加載。如果是,則處理結(jié)束,否則,處理繼續(xù)到框520。亦即如果驅(qū)動程序在鏈路關(guān)閉定時器到期前被加載,則鏈路保持接通,而不需重新協(xié)商。在框520,物理通信層132決定定時器是否到期。如果是,則處理繼續(xù)到框530,否則,處理繼續(xù)到框510。在框530,因為驅(qū)動程序未在定時器到期前加載,所以物理通信層132拆除鏈路。
這樣,驅(qū)動程序觸發(fā)鏈路關(guān)閉定時器拆除例如在計算機(jī)和交換機(jī)之間的鏈路。如果流控制被允許,則驅(qū)動程序還發(fā)送一個XOFF包。然后,網(wǎng)絡(luò)硬件被去初始化,驅(qū)動程序被卸載。如果驅(qū)動程序未在鏈路關(guān)閉時間間隔內(nèi)被加載,則物理通信層132拆除該鏈路。另外,當(dāng)驅(qū)動程序被再次加載時,如果流控制被允許且禁止鏈路關(guān)閉定時器,則驅(qū)動程序發(fā)送一個XON包。
另外的實施例細(xì)節(jié)所述維持在網(wǎng)絡(luò)實體之間的鏈路的技術(shù)可以使用標(biāo)準(zhǔn)的編程和/或工程技術(shù)以產(chǎn)生軟件、固件、硬件或其任何組合而作為方法、裝置或制造物體實現(xiàn)。這里使用的術(shù)語“制造物體”指以硬件邏輯(例如集成電路芯片,可編程門陣列(PGA),應(yīng)用特定集成電路(ASIC)等)或計算機(jī)可讀介質(zhì)諸如磁存儲介質(zhì)(例如硬盤驅(qū)動程序,軟盤,磁帶等)、光存儲器(CD-ROM,光盤等)、易失和非易失存儲器設(shè)備(例如EEPROM,ROM,PROM,RAM,DRAM,SRAM,固件可編程邏輯等)實現(xiàn)的代碼或邏輯??赏ㄟ^處理器訪問或執(zhí)行計算機(jī)可讀介質(zhì)中的代碼。實現(xiàn)優(yōu)選實施例的代碼另外可通過傳輸介質(zhì)或從文件服務(wù)器通過網(wǎng)絡(luò)訪問。在這種情況下,其內(nèi)實現(xiàn)了代碼的制造物體可以包括傳輸介質(zhì),諸如網(wǎng)絡(luò)傳輸線、無線傳輸介質(zhì)、通過空間傳播的信號、無線電波、紅外線信號等。這樣,“制造物體”可以包括實現(xiàn)了代碼的介質(zhì)。另外,“制造物體”可以包括其內(nèi)實現(xiàn)、處理、和執(zhí)行了代碼的硬件和軟件部件的組合。當(dāng)然,熟悉本技術(shù)領(lǐng)域的人員將會看出,對于該配置可以進(jìn)行許多修改而不離開本發(fā)明的實施的范圍,以及制造物體可以包括技術(shù)中公知的信息承載介質(zhì)。
在所述實施例中,以驅(qū)動程序和網(wǎng)絡(luò)適配器實現(xiàn)了某些邏輯。在另外的實施例中,驅(qū)動器和/或網(wǎng)絡(luò)適配器可以包括處理器和存儲器以執(zhí)行加載到存儲器內(nèi)的指令來執(zhí)行鏈路管理,其與以硬件諸如應(yīng)用特定集成電路(ASIC)實現(xiàn)鏈路管理邏輯不同。在另外可選的實施例中,以驅(qū)動程序和/或網(wǎng)絡(luò)適配器實現(xiàn)的邏輯可以全部或者部分以網(wǎng)絡(luò)硬件實現(xiàn)。
在某些實施例中,可以以插入計算機(jī)102的槽中的網(wǎng)絡(luò)適配器卡諸如PCI卡實現(xiàn)網(wǎng)絡(luò)適配器。在另外可選的實施例中,網(wǎng)絡(luò)適配器可以包括安裝在計算機(jī)102母板上的集成電路部件。
在某些實施例中,設(shè)備驅(qū)動程序和網(wǎng)絡(luò)適配器可以包括在包括管理對非易失存儲設(shè)備諸如磁盤驅(qū)動器、磁帶介質(zhì)、光盤等訪問的存儲控制器諸如SCSI、集成驅(qū)動電子器件(IDE)、獨立磁盤冗余陣列(RAID)等的計算機(jī)系統(tǒng)中。在另外可選的實施例中,網(wǎng)絡(luò)適配器可以包括在不包括存儲控制器的系統(tǒng)中,諸如某些集線器和交換機(jī)。
在某些實施例中,可以配置網(wǎng)絡(luò)適配器通過連接到網(wǎng)絡(luò)適配器上的一個端口的電纜傳輸數(shù)據(jù)。在另外可選的實施例中,可以配置網(wǎng)絡(luò)適配器通過無線網(wǎng)絡(luò)或連接諸如無線LAN、藍(lán)牙等傳輸數(shù)據(jù)。
圖3、4和5所示邏輯表示以一定次序發(fā)生的一定事件。在另外可選的實施例中,一定的操作可以以不同的次序,修改的或者刪除的,執(zhí)行。此外,可以在上述邏輯上增加操作而仍與所述實施例一致。另外,這里說明的操作可以順序發(fā)生,或者某些操作可以并行處理。再有,操作可以由單一處理單元執(zhí)行,或者可以由分布的處理單元執(zhí)行。
圖6表示網(wǎng)絡(luò)部件諸如圖1和圖2所示的計算機(jī)的計算機(jī)體系結(jié)構(gòu)600的一個實施例。體系結(jié)構(gòu)600可以包括處理器602(例如微處理器)、存儲器604(例如易失存儲器設(shè)備)、存儲器606(例如非易失存儲器,諸如磁盤驅(qū)動器,光盤驅(qū)動器,磁帶驅(qū)動器等)。存儲器606可以包括內(nèi)部存儲設(shè)備或者附屬的或者網(wǎng)絡(luò)可訪問存儲器。存儲器606中的程序被加載到存儲器604由處理器602以技術(shù)中公知的方式執(zhí)行。該體系結(jié)構(gòu)另外包括一個網(wǎng)卡608以允許與網(wǎng)絡(luò)通信,諸如以太網(wǎng)、光纖通道仲裁回路等。另外,在某些實施例中該體系結(jié)構(gòu)可以包括視頻控制器609而使信息在顯示監(jiān)視器上顯示,其中視頻控制器609可以在視頻卡上實現(xiàn)或者集成在安裝在母板上的集成電路部件中。如上所述,某些網(wǎng)絡(luò)設(shè)備可以具有多個網(wǎng)絡(luò)卡。使用輸入設(shè)備610提供用戶輸入給處理器602,所述輸入設(shè)備可以包括鍵盤、鼠標(biāo)、輸入筆、話筒、觸摸屏、或者技術(shù)中公知的任何其他的動作或輸入機(jī)制。輸出設(shè)備612能夠提供從處理器602或其他部件諸如顯示監(jiān)視器、打印機(jī)、存儲器等傳輸?shù)男畔ⅰ?br>
為圖示和說明的目的已經(jīng)對根據(jù)本發(fā)明的各種實施例的上述說明進(jìn)行了介紹。不打算窮舉或限制本發(fā)明到所公開的精確形式。意圖是,不是由該詳細(xì)的說明限制本發(fā)明的范圍,而是由所附權(quán)利要求決定。上述說明、例子和數(shù)據(jù)提供本發(fā)明的組成的制造和使用的完整的說明。因為可以實現(xiàn)本發(fā)明的許多實施例而不離開本發(fā)明的精神和范圍,因此本發(fā)明在于后面所附的權(quán)利要求內(nèi)。
權(quán)利要求
1.一種維持在第一網(wǎng)絡(luò)實體和第二網(wǎng)絡(luò)實體之間的鏈路的方法,其中第一網(wǎng)絡(luò)實體包括網(wǎng)絡(luò)適配器和驅(qū)動程序,包括使用網(wǎng)絡(luò)適配器決定驅(qū)動程序是否是在鏈路關(guān)閉定時器到期前被加載,其中,鏈路關(guān)閉定時器與鏈路關(guān)聯(lián);響應(yīng)驅(qū)動程序在鏈路關(guān)閉定時器到期前被加載,使用網(wǎng)絡(luò)適配器繼續(xù)處理,而不拆除鏈路;響應(yīng)驅(qū)動程序未在鏈路關(guān)閉定時器到期前被加載,使用網(wǎng)絡(luò)適配器拆除鏈路。
2.權(quán)利要求1所述的方法,進(jìn)一步執(zhí)行使用網(wǎng)絡(luò)適配器決定寄存器是否具有一個指示驅(qū)動程序已經(jīng)被加載的值。
3.權(quán)利要求1所述的方法,進(jìn)一步執(zhí)行使用網(wǎng)絡(luò)適配器決定鏈路關(guān)閉定時器是否已經(jīng)到期;和響應(yīng)鏈路關(guān)閉定時器尚未到期的決定,使用網(wǎng)絡(luò)適配器周期地決定驅(qū)動程序是否被加載。
4.權(quán)利要求1所述的方法,進(jìn)一步執(zhí)行使用網(wǎng)絡(luò)適配器決定鏈路關(guān)閉定時器是否已經(jīng)到期;和響應(yīng)驅(qū)動程序未被加載和鏈路關(guān)閉定時器未到期,使用網(wǎng)絡(luò)適配器周期地決定該驅(qū)動程序是否被加載。
5.一種在用于維持在第一網(wǎng)絡(luò)實體和第二網(wǎng)絡(luò)實體之間的鏈路的第一網(wǎng)絡(luò)實體內(nèi)執(zhí)行的驅(qū)動程序內(nèi)實現(xiàn)的方法,其中該驅(qū)動程序執(zhí)行啟動為拆除一個鏈路的鏈路關(guān)閉定時器;在被加載時,決定該鏈路是否可用;響應(yīng)該鏈路可用繼續(xù)處理,而不與該鏈路重新協(xié)商。
6.權(quán)利要求5所述的方法,其中驅(qū)動程序進(jìn)一步執(zhí)行響應(yīng)鏈路可用重新協(xié)商鏈路。
7.權(quán)利要求5所述的方法,其中驅(qū)動程序進(jìn)一步執(zhí)行決定流控制是否允許;和響應(yīng)流控制被允許給第二網(wǎng)絡(luò)實體發(fā)送一個指示符指示第二網(wǎng)絡(luò)實體要停止給第一網(wǎng)絡(luò)實體發(fā)送數(shù)據(jù)包。
8.權(quán)利要求7所述的方法,其中在驅(qū)動程序被重新加載后,驅(qū)動程序進(jìn)一步執(zhí)行決定流控制是否允許;和響應(yīng)流控制被允許給第二網(wǎng)絡(luò)實體發(fā)送一個指示符指示第二網(wǎng)絡(luò)實體要開始給第一網(wǎng)絡(luò)實體發(fā)送數(shù)據(jù)包。
9.權(quán)利要求5所述的方法,進(jìn)一步執(zhí)行當(dāng)驅(qū)動程序被重新加載時,響應(yīng)鏈路關(guān)閉定時器被允許且未到期,禁止鏈路關(guān)閉定時器。
10.連接到網(wǎng)絡(luò)和數(shù)據(jù)存儲器的系統(tǒng),包括管理對數(shù)據(jù)存儲器的輸入/輸出(I/O)訪問的存儲器控制器;至少一個驅(qū)動程序;網(wǎng)絡(luò)適配器;和引起網(wǎng)絡(luò)適配器執(zhí)行操作的控制邏輯,所述操作包括(i)使用網(wǎng)絡(luò)適配器決定驅(qū)動程序是否是在鏈路關(guān)閉定時器到期前被加載;(ii)響應(yīng)驅(qū)動程序在鏈路關(guān)閉定時器到期前被加載,繼續(xù)處理,而不拆除鏈路關(guān)閉定時器為之起動的鏈路;和(iii)響應(yīng)驅(qū)動程序未在鏈路關(guān)閉定時器到期前被加載,拆除鏈路。
11.權(quán)利要求10所述的網(wǎng)絡(luò)適配器,其中由控制邏輯引起的操作進(jìn)一步包括決定寄存器是否具有一個指示驅(qū)動程序已被加載的值。
12.權(quán)利要求10所述的網(wǎng)絡(luò)適配器,其中由控制邏輯引起的操作進(jìn)一步包括決定鏈路關(guān)閉定時器是否已經(jīng)到期;和響應(yīng)鏈路關(guān)閉定時器尚未到期的決定,周期地決定驅(qū)動程序是否在鏈路關(guān)閉定時器到期前被加載。
13.權(quán)利要求10所述的網(wǎng)絡(luò)適配器,其中由控制邏輯引起的操作進(jìn)一步包括決定鏈路關(guān)閉定時器是否已經(jīng)到期;和響應(yīng)驅(qū)動程序未被加載和鏈路關(guān)閉定時器未到期,周期地決定該驅(qū)動程序是否被加載。
14.連接到網(wǎng)絡(luò)和數(shù)據(jù)存儲器的系統(tǒng),包括處理器;管理對數(shù)據(jù)存儲器的輸入/輸出(I/O)訪問的存儲器控制器;至少一個驅(qū)動程序;和由處理器執(zhí)行的驅(qū)動程序以執(zhí)行操作,所述操作包括(i)啟動為拆除一個鏈路的鏈路關(guān)閉定時器;(ii)在被重新加載時,決定該鏈路是否可用;(iii)響應(yīng)該鏈路可用繼續(xù)處理,而不重新協(xié)商該鏈路。
15.權(quán)利要求14所述的系統(tǒng),其中所述操作進(jìn)一步包括響應(yīng)鏈路不可用重新協(xié)商該鏈路。
16.權(quán)利要求14所述的系統(tǒng),其中所述操作進(jìn)一步包括決定流控制是否允許;和響應(yīng)流控制被允許,給第二網(wǎng)絡(luò)實體發(fā)送一個指示符指示第二網(wǎng)絡(luò)實體要停止給第一網(wǎng)絡(luò)實體發(fā)送數(shù)據(jù)包。
17.權(quán)利要求16所述的系統(tǒng),其中在驅(qū)動程序被加載后,所述操作進(jìn)一步包括決定流控制是否允許;和響應(yīng)流控制被允許,給第二網(wǎng)絡(luò)實體發(fā)送一個指示符指示第二網(wǎng)絡(luò)實體要開始給第一網(wǎng)絡(luò)實體發(fā)送數(shù)據(jù)包。
18.權(quán)利要求14所述的系統(tǒng),其中所述操作進(jìn)一步包括當(dāng)驅(qū)動程序被重新加載時,響應(yīng)鏈路關(guān)閉定時器被允許且未到期,禁止鏈路關(guān)閉定時器。
19.用于維持在一個第一計算機(jī)和一個網(wǎng)絡(luò)實體之間的鏈路的產(chǎn)品,其中第一計算機(jī)包括網(wǎng)絡(luò)適配器和驅(qū)動程序,和其中該產(chǎn)品引起在該網(wǎng)絡(luò)適配器中執(zhí)行操作,所述操作包括(i)使用網(wǎng)絡(luò)適配器決定驅(qū)動程序是否是在鏈路關(guān)閉定時器到期前被加載,其中鏈路關(guān)閉定時器與該鏈路關(guān)聯(lián);(ii)響應(yīng)驅(qū)動程序在鏈路關(guān)閉定時器到期前被加載,繼續(xù)處理,而不拆除該鏈路;和(iii)響應(yīng)驅(qū)動程序未在鏈路關(guān)閉定時器到期前被加載,拆除該鏈路。
20.權(quán)利要求19所述的產(chǎn)品,其中所述操作進(jìn)一步包括決定寄存器是否具有一個指示驅(qū)動程序已被加載的值。
21.權(quán)利要求19所述的產(chǎn)品,其中所述操作進(jìn)一步包括決定鏈路關(guān)閉定時器是否已經(jīng)到期;和響應(yīng)鏈路關(guān)閉定時器尚未到期的決定,周期地決定驅(qū)動程序是否在鏈路關(guān)閉定時器到期前被加載。
22.權(quán)利要求19所述的產(chǎn)品,其中所述操作進(jìn)一步包括決定鏈路關(guān)閉定時器是否已經(jīng)到期;和響應(yīng)驅(qū)動程序未被加載和鏈路關(guān)閉定時器未到期,周期地決定該驅(qū)動程序是否被加載。
23.用于維持在一個第一計算機(jī)和一個網(wǎng)絡(luò)實體之間的鏈路的產(chǎn)品,其中第一計算機(jī)包括一個驅(qū)動程序,和其中該產(chǎn)品引起在該驅(qū)動程序中執(zhí)行操作,所述操作包括啟動為拆除一個鏈路的鏈路關(guān)閉定時器;在被重新加載時,決定該鏈路是否可用;和響應(yīng)該鏈路可用繼續(xù)處理,而不重新協(xié)商該鏈路。
24.權(quán)利要求23所述的產(chǎn)品,其中所述操作進(jìn)一步包括響應(yīng)鏈路不可用重新協(xié)商該鏈路。
25.權(quán)利要求23所述的產(chǎn)品,其中所述操作進(jìn)一步包括決定流控制是否允許;和響應(yīng)流控制被允許,給第二網(wǎng)絡(luò)實體發(fā)送一個指示符指示第二網(wǎng)絡(luò)實體要停止給第一網(wǎng)絡(luò)實體發(fā)送數(shù)據(jù)包。
26.權(quán)利要求25所述的產(chǎn)品,其中在驅(qū)動程序被加載后,所述操作進(jìn)一步包括決定流控制是否允許;和響應(yīng)流控制被允許,給第二網(wǎng)絡(luò)實體發(fā)送一個指示符,指示第二網(wǎng)絡(luò)實體要開始給第一網(wǎng)絡(luò)實體發(fā)送數(shù)據(jù)包。
27.權(quán)利要求23所述的產(chǎn)品,其中所述操作進(jìn)一步包括當(dāng)驅(qū)動程序被重新加載時,響應(yīng)鏈路關(guān)閉定時器被允許且未到期,禁止鏈路關(guān)閉定時器。
全文摘要
提供一種用于維持在第一網(wǎng)絡(luò)實體和第二網(wǎng)絡(luò)實體之間的鏈路的方法、系統(tǒng)和程序。第一網(wǎng)絡(luò)實體包括網(wǎng)絡(luò)適配器和驅(qū)動程序。使用該網(wǎng)絡(luò)適配器,決定驅(qū)動程序是否是在鏈路關(guān)閉定時器到期前被加載。使用該網(wǎng)絡(luò)適配器,響應(yīng)驅(qū)動程序在鏈路關(guān)閉定時器到期前被加載,繼續(xù)處理,不拆除鏈路。使用該網(wǎng)絡(luò)適配器,響應(yīng)驅(qū)動程序未在鏈路關(guān)閉定時器到期前被加載,拆除該鏈路。
文檔編號G06F15/16GK1604550SQ20041007487
公開日2005年4月6日 申請日期2004年8月30日 優(yōu)先權(quán)日2003年9月30日
發(fā)明者M·瓦倫茨 申請人:英特爾公司