專利名稱:在破壞計(jì)算機(jī)網(wǎng)絡(luò)中的鄰接關(guān)系時(shí)通知eigrp鄰居的技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及計(jì)算機(jī)網(wǎng)絡(luò),更具體地說,本發(fā)明涉及銷毀計(jì)算機(jī)網(wǎng)絡(luò)的鄰近路由器之間的鄰接關(guān)系。
背景技術(shù):
計(jì)算機(jī)網(wǎng)絡(luò)是互連的通信鏈路和子網(wǎng)絡(luò)(子網(wǎng))的地理上分布的集合,用于在諸如計(jì)算機(jī)之類的節(jié)點(diǎn)之間傳輸數(shù)據(jù)。存在從局域網(wǎng)(LAN)到廣域網(wǎng)(WAN)的多種類型的計(jì)算機(jī)網(wǎng)絡(luò)。LAN是在互連的節(jié)點(diǎn)之間提供相對短距離的通信的子網(wǎng)的示例,而WAN則使得能夠通過由公共的或?qū)S玫碾娦旁O(shè)施提供的鏈路進(jìn)行長距離通信。節(jié)點(diǎn)一般根據(jù)預(yù)定協(xié)議通過交換離散的數(shù)據(jù)幀或分組進(jìn)行通信。在此上下文中,協(xié)議包括定義節(jié)點(diǎn)如何彼此交互的一組規(guī)則。
計(jì)算機(jī)網(wǎng)絡(luò)還可由稱作路由器的中間節(jié)點(diǎn)互連,以擴(kuò)展每個(gè)網(wǎng)絡(luò)的有效“大小”。由于發(fā)現(xiàn)管理互連計(jì)算機(jī)網(wǎng)絡(luò)的大系統(tǒng)是難以負(fù)擔(dān)的,所以計(jì)算機(jī)網(wǎng)絡(luò)的較小群組可被維護(hù)為路由選擇域或自治系統(tǒng)。自治系統(tǒng)內(nèi)的網(wǎng)絡(luò)一般利用傳統(tǒng)的域內(nèi)路由器耦合到一起。這些路由器管理它們的域內(nèi)的本地網(wǎng)絡(luò)中的通信,并且使用域內(nèi)路由選擇(或者內(nèi)部網(wǎng)關(guān))協(xié)議彼此通信。這種協(xié)議的示例是增強(qiáng)型內(nèi)部網(wǎng)關(guān)路由選擇協(xié)議(EIGRP),該協(xié)議在“Cisco TCP/IP Routing Professional Reference,2nd Addition”第4章104-108頁(1999)和在http∥www.cisco.com/warp/public/103/eigrp-toc.html網(wǎng)址處的“Enhanced Interior Gateway Routing Protocol”(1992-2003)中作了描述。
EIGRP協(xié)議是距離向量和鏈路狀態(tài)路由選擇協(xié)議技術(shù)的混合。距離向量協(xié)議使用距離(“代價(jià)”或跳計(jì)數(shù))和向量(下一跳)信息計(jì)算到目的地的最佳路徑。對于EIGRP,距離信息被表示為可用帶寬、延遲、負(fù)載利用和鏈路可靠性信息的組合,其允許對鏈路特性進(jìn)行“精調(diào)”來實(shí)現(xiàn)最優(yōu)(或者最佳)路徑。不同于維護(hù)整個(gè)網(wǎng)絡(luò)拓?fù)涞男畔⒒颉盃顟B(tài)”的大多數(shù)鏈路狀態(tài)協(xié)議,EIGRP路由器僅僅維護(hù)關(guān)于可達(dá)鄰近路由器的狀態(tài)信息。這里所使用的鄰近路由器(或“鄰居”)是具有到公共網(wǎng)絡(luò)的接口的兩個(gè)路由器,其中接口是路由器和其附接到的網(wǎng)絡(luò)之一之間的連接。每個(gè)鄰居的狀態(tài)被存儲(chǔ)在EIGRP路由器的鄰居數(shù)據(jù)結(jié)構(gòu)中。
鄰接關(guān)系是用于交換路由選擇信息及抽象網(wǎng)絡(luò)拓?fù)淠康亩谶x出的鄰居之間形成的關(guān)系。一個(gè)或多個(gè)路由器鄰接關(guān)系可被建立于接口之上。鄰接關(guān)系一般是通過使用傳統(tǒng)的Hello協(xié)議來建立、維護(hù)和破壞的。一般來說,Hello協(xié)議通過周期性地將Hello分組發(fā)送出所有路由器的接口,從而確保鄰居之間的通信是雙向的。當(dāng)兩個(gè)路由器通過公共網(wǎng)絡(luò)接收到彼此的Hello分組時(shí),這兩個(gè)路由器就變成鄰居。
EIGRP協(xié)議包括鄰居發(fā)現(xiàn)過程,路由器使用該過程來動(dòng)態(tài)獲知在它們直接附接到的網(wǎng)絡(luò)上的其他路由器。路由器還使用該過程來發(fā)現(xiàn)其鄰居何時(shí)變?yōu)椴豢蛇_(dá)或不工作。通過以所謂的“HelloInterval”速率周期性地發(fā)送小Hello分組,從而用低開銷實(shí)現(xiàn)該鄰居發(fā)現(xiàn)過程?!癏oldTime”是一個(gè)時(shí)間量,即HelloInterval的倍數(shù),在該時(shí)間量中,EIGRP路由器在未接收到Hello分組的情況下也認(rèn)為鄰居仍存活。只要在HoldTime內(nèi)接收到來自鄰居的Hello分組,EIGRP就確定該鄰居仍存活且正常工作;這就允許了兩個(gè)鄰居交換(并更新)路由選擇信息,從而達(dá)到路由選擇收斂。然而,如果在HoldTime內(nèi)未接收到Hello分組,則路由器假定該鄰居已不存在,并且“拆毀”(破壞)與該鄰居的鄰接關(guān)系。
通常希望路由器單邊決定破壞與其鄰居的鄰接關(guān)系。在可以維護(hù)點(diǎn)到點(diǎn)接口連接上的鄰接關(guān)系的路由選擇協(xié)議的情形中,可能存在物理連接的電特性,當(dāng)路由器“離開”時(shí)這些電特性就消失,從而使得鄰居可以快速檢測出該路由器已離去。然而,存在某些點(diǎn)到點(diǎn)連接網(wǎng)絡(luò),這些網(wǎng)絡(luò)在鄰近路由器消失時(shí),并不提供電通知。
對于維護(hù)多接入接口上的鄰接關(guān)系的路由選擇協(xié)議,例如以太網(wǎng)子網(wǎng)接口,一般沒有電特性通知共享該子網(wǎng)的鄰居,以告知它們的鄰近路由器已消失。路由器可以通知鄰居其將要消失的一種方法是通過多接入接口發(fā)送不可靠的“終止”消息,指示出該路由器將離開。具有不可靠(例如,廣播)能力的路由選擇協(xié)議可以使用這種類型的終止機(jī)制來破壞鄰接關(guān)系。然而,通常不希望使用這種不可靠的機(jī)制來破壞所有鄰居鄰接關(guān)系,這是由于可能只需要終止鄰接關(guān)系的子集。
如上所述,檢測鄰居(也稱作“對端”)丟失并且隨后破壞鄰接關(guān)系的另一種傳統(tǒng)方法是“基于時(shí)間”的,其通過持續(xù)預(yù)定時(shí)間段沒有與鄰居的通信來進(jìn)行檢測。對于EIGRP協(xié)議的情形,在該時(shí)間段過期之后,就可以假設(shè)該鄰居不再存在。然而,并不希望采用與等待整個(gè)預(yù)定時(shí)間段相關(guān)聯(lián)的延遲/等待時(shí)間(例如HoldTime)來檢測對端丟失,以便破壞現(xiàn)有鄰接關(guān)系。相反,而是希望迅速通知鄰居要破壞鄰接關(guān)系的意圖,以使鄰接關(guān)系可以迅速被移除,從而“加速”路由選擇收斂,并且提高網(wǎng)絡(luò)穩(wěn)定性。
發(fā)明內(nèi)容
本發(fā)明通過提供一種技術(shù),用于在破壞計(jì)算機(jī)網(wǎng)絡(luò)中的鄰接關(guān)系時(shí)有效地通知EIGRP鄰居,從而克服現(xiàn)有技術(shù)的缺點(diǎn)。根據(jù)該創(chuàng)造性技術(shù),提供了一種新穎的goodbye通知分組,其使得EIGRP路由器能夠通知其鄰居中的一個(gè)或多個(gè),告知它的要破壞它們的現(xiàn)有鄰接關(guān)系的意圖。goodbye通知分組包括EIGRP分組頭部,該分組頭部具有實(shí)現(xiàn)為附加的goodbye屬性的可變長度字段。根據(jù)TLV編碼格式,附加的goodbye屬性被說明性地添加了標(biāo)簽,該TLV編碼格式定義了新的類型(T)字段,稱作“goodbye”,其具有將其從傳統(tǒng)EIGRP Hello分組區(qū)分開的預(yù)定類型。在goodbye屬性中傳遞的信息的值(V)字段包含鄰居(或?qū)Χ?標(biāo)識(shí)符(ID)的列表。該列表上的對端ID指示那些鄰居路由器“離開”,以使它們的鄰接關(guān)系可被破壞。
在操作上,路由器向一個(gè)或多個(gè)鄰居發(fā)出goodbye通知分組。一旦接收到goodbye通知分組,每個(gè)鄰居就檢查附加的goodbye屬性的TLV編碼的內(nèi)容。具體地說,鄰居檢查該新穎的屬性的類型字段,并且如果該鄰居配置為理解該類型的信息,則將該分組標(biāo)識(shí)為goodbye通知分組。然后,鄰居檢查該屬性的值字段,在對端ID的列表內(nèi)搜索其對端ID。在發(fā)現(xiàn)了其對端ID后,該鄰居被指示破壞與該路由器(即,goodbye通知分組的源)的鄰接關(guān)系。
本發(fā)明的一個(gè)優(yōu)點(diǎn)是goodbye通知分組在可靠和不可靠環(huán)境中都能工作的能力。即,在通知點(diǎn)到點(diǎn)連接(在可靠環(huán)境中)上的鄰居離開時(shí),goodbye通知分組可以充當(dāng)可靠消息。另外,在通知鄰居的子集(利用對端ID列表)離開的不可靠環(huán)境(共享的網(wǎng)絡(luò)介質(zhì))中,goodbye通知分組可以充當(dāng)不可靠消息。本發(fā)明的這個(gè)方面使得能夠縮放goodbye通知分組,因?yàn)閱蝹€(gè)分組可以包括對端ID的列表,其中該列表可以包括一個(gè)對端ID到最大數(shù)目的對端ID。只有由對端ID標(biāo)識(shí)出的那些路由器著手破壞它們與goodbye分組的源的鄰接關(guān)系。goodbye分組還可以通過標(biāo)識(shí)附加的屬性的值字段中的單個(gè)對端ID從而在不可靠環(huán)境中充當(dāng)可靠的消息,還可以充當(dāng)跨越整個(gè)共享介質(zhì)子網(wǎng)的不可靠消息。
通過結(jié)合附圖參考下面的描述,可以更好地理解本發(fā)明的上述和其他優(yōu)點(diǎn),在附圖中,相似的標(biāo)號(hào)指示相同的或功能上類似的元素圖1是包括多個(gè)自治系統(tǒng)的計(jì)算機(jī)網(wǎng)絡(luò)的示意性框圖,其中自治系統(tǒng)包括諸如域內(nèi)路由器之類的中間節(jié)點(diǎn);圖2是便于與本發(fā)明一起使用的路由器的示意性框圖;圖3是諸如因特網(wǎng)通信協(xié)議棧之類的傳統(tǒng)協(xié)議棧的示意性框圖;圖4是示出了Hello分組格式的示意性框圖;圖5是具有與其鄰居的鄰接關(guān)系的EIGRP路由器的示意性框圖;圖6是便于與本發(fā)明一起使用的EIGRP路由選擇協(xié)議過程的示意性框圖;圖7是根據(jù)本發(fā)明的goodbye通知分組的示意性框圖;以及圖8是示出了根據(jù)本發(fā)明使用goodbye通知分組時(shí)的步驟序列的流程圖。
具體實(shí)施例方式
圖1是計(jì)算機(jī)網(wǎng)絡(luò)100的示意性框圖,該網(wǎng)絡(luò)包括多個(gè)由諸如傳統(tǒng)域間路由器120和域內(nèi)路由器200之類的中間節(jié)點(diǎn)互連的路由選擇域或自治系統(tǒng)。域間路由器120互連多種自治系統(tǒng)(AS1-4),而域內(nèi)路由器200管理它們各自的AS域內(nèi)的通信介質(zhì)和節(jié)點(diǎn)。通信介質(zhì)包括諸如局域網(wǎng)(LAN)子網(wǎng)絡(luò)這樣的共享的介質(zhì)網(wǎng)絡(luò)104、點(diǎn)到點(diǎn)鏈路102、以及諸如幀中繼或異步傳輸模式網(wǎng)絡(luò)之類的非廣播多接入(NBMA)云。路由器之間的通信一般通過根據(jù)預(yù)定協(xié)議交換離散的協(xié)議數(shù)據(jù)單元(PDU 150)或分組來實(shí)現(xiàn),這些預(yù)定協(xié)議例如是傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,例如因特網(wǎng)分組交換(IPX)協(xié)議、數(shù)據(jù)傳遞協(xié)議(DDP)以及其他鏈路狀態(tài)路由選擇協(xié)議也便于與本發(fā)明一起使用。
圖2是域內(nèi)路由器200的示意性框圖??梢允疽庑缘嘏c本發(fā)明一起使用的路由器200的示例是可從Cisco Systems公司獲得的7200系列路由器。路由器200實(shí)現(xiàn)模塊化和可縮放體系結(jié)構(gòu),這種體系結(jié)構(gòu)有助于將該路由器用作企業(yè)和服務(wù)提供商的邊沿設(shè)備。為此,該路由器包括耦合到多個(gè)端口適配器220的網(wǎng)絡(luò)處理引擎210。每個(gè)端口適配器220都支持大多數(shù)WAN和LAN技術(shù),并且為此包括將路由器連接到網(wǎng)絡(luò)100的通信介質(zhì)的電路。
網(wǎng)絡(luò)處理引擎210是基于處理器的系統(tǒng),其包括合并到典型路由器中的功能。即,該引擎包括經(jīng)由系統(tǒng)控制器216耦合到系統(tǒng)存儲(chǔ)器214的處理器212(和緩存218)。存儲(chǔ)器214可以包括動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(DRAM)和/或同步DRAM(SDRAM)存儲(chǔ)位置,它們可由處理器212尋址來存儲(chǔ)軟件程序和數(shù)據(jù)結(jié)構(gòu),例如表、分組等。網(wǎng)絡(luò)操作系統(tǒng)250的多個(gè)部分一般駐留在存儲(chǔ)器中,并由處理器執(zhí)行,除了其他以外,網(wǎng)絡(luò)操作系統(tǒng)通過調(diào)用支持在路由器上執(zhí)行的軟件進(jìn)程的網(wǎng)絡(luò)操作來在功能上組織路由器。本領(lǐng)域的技術(shù)人員將清楚,包括各種計(jì)算機(jī)可讀介質(zhì)在內(nèi)的其他存儲(chǔ)器裝置可被用來存儲(chǔ)并執(zhí)行關(guān)于路由器操作的程序指令。
路由器的一個(gè)關(guān)鍵功能是確定分組被發(fā)送到的下一個(gè)節(jié)點(diǎn);為了實(shí)現(xiàn)這種“路由選擇”,路由器協(xié)作以確定通過計(jì)算機(jī)網(wǎng)絡(luò)100的最優(yōu)(“最佳”)路徑。路由選擇功能優(yōu)選由協(xié)議棧的網(wǎng)絡(luò)(互連網(wǎng)絡(luò))層執(zhí)行,在說明性實(shí)施例中,協(xié)議棧與每個(gè)路由器的網(wǎng)絡(luò)操作系統(tǒng)250相關(guān)聯(lián)。圖3是傳統(tǒng)協(xié)議棧的示意性框圖,例如因特網(wǎng)通信協(xié)議棧300。因特網(wǎng)協(xié)議棧300的體系結(jié)構(gòu)被表示為4層,按照上升的接口連接順序,分別稱作網(wǎng)絡(luò)接口層308、互連網(wǎng)絡(luò)層306、傳輸層304和應(yīng)用層302。
較低的網(wǎng)絡(luò)接口層308一般是標(biāo)準(zhǔn)化的,并且實(shí)現(xiàn)在硬件和固件中,而較高的層一般實(shí)現(xiàn)為軟件形式。因特網(wǎng)體系結(jié)構(gòu)的主要的互連網(wǎng)絡(luò)層協(xié)議是因特網(wǎng)協(xié)議(IP)。IP本質(zhì)上是無連接協(xié)議,其提供交換的分組一在因特網(wǎng)環(huán)境中一般稱作數(shù)據(jù)報(bào)—的互連網(wǎng)絡(luò)路由選擇、分組和組裝,并且其依賴于傳輸協(xié)議來獲得端到端可靠性。這種傳輸協(xié)議的示例是傳輸控制協(xié)議(TCP),其由傳輸層304實(shí)現(xiàn),并且向因特網(wǎng)體系結(jié)構(gòu)的上層協(xié)議提供面向連接的服務(wù)。術(shù)語TCP/IP通常用來表示因特網(wǎng)體系結(jié)構(gòu)。
具體地說,互連網(wǎng)絡(luò)層306涉及路由器200使用的協(xié)議和算法,以使它們可以協(xié)作來計(jì)算出通過計(jì)算機(jī)網(wǎng)絡(luò)100的路徑。域內(nèi)協(xié)議可用來在計(jì)算機(jī)網(wǎng)絡(luò)100的每個(gè)AS中執(zhí)行域內(nèi)路由選擇(針對互連網(wǎng)絡(luò)層)。用來在屬于單個(gè)AS的鄰近路由器之間分發(fā)路由選擇信息的協(xié)議的一個(gè)示例是增強(qiáng)型內(nèi)部網(wǎng)關(guān)路由選擇協(xié)議(EIGRP)。EIGRP路由選擇協(xié)議是公知的,并且在前述“Cisco TCP/IP Routing Professional Reference,2ndAddition”和“Enhanced Interior Gateway Routing Protocol”中作了詳細(xì)描述。
EIGRP協(xié)議是一種獨(dú)立于平臺(tái)的協(xié)議,其包括距離向量和鏈路狀態(tài)路由選擇協(xié)議技術(shù)的混合。配置為運(yùn)行EIGRP協(xié)議的路由器使用距離(“代價(jià)”或跳計(jì)數(shù))信息來計(jì)算到目的地的最佳路徑,其中距離信息表示為可用帶寬、延遲、負(fù)載利用和鏈路可靠性信息的組合,其允許對鏈路特性進(jìn)行“精調(diào)”來實(shí)現(xiàn)最優(yōu)(或最佳)路徑。EIGRP路由器還在鄰居數(shù)據(jù)結(jié)構(gòu)中維護(hù)關(guān)于可達(dá)鄰近路由器(或“鄰居”)的狀態(tài)。可達(dá)的鄰居(例如,圖1的AS2,4中的其他域內(nèi)路由器200)通過鄰接關(guān)系與EIGRP路由器關(guān)聯(lián),其中鄰接關(guān)系使得能夠在鄰居之間交換路由選擇信息。此鄰接關(guān)系是用EIGRP路由選擇協(xié)議定義的Hello分組來建立并維護(hù)的。
圖4是示出了Hello分組400的格式的示意性框圖,其中Hello分組包括EIGRP分組頭部410和Hello專用可變長度字段450。可以在各種網(wǎng)絡(luò)層協(xié)議內(nèi)封裝EIGRP分組,例如IPX(Novell網(wǎng)絡(luò))和DDP(AppleTalk網(wǎng)絡(luò));然而,在這里所述的說明性實(shí)施例中,EIGRP分組被封裝為IP分組(TCP/IP網(wǎng)絡(luò))。諸如Hello分組之類的每個(gè)EIGRP分組都具有固定的20字節(jié)的EIGRP頭部410。該頭部包含確定該分組是否可以被接受來進(jìn)一步處理所需要的信息。Hello分組是EIGRP類型5分組,通過路由器的接口該分組被周期性地發(fā)送來建立并維護(hù)鄰居鄰接關(guān)系。所有連接到公共網(wǎng)絡(luò)的路由器都必須對包括在Hello分組內(nèi)的諸如HoldTime這樣的某些參數(shù)達(dá)成一致。
EIGRP分組頭部410包括包含EIGRP版本號(hào)的版本字段412、包含EIGRP分組類型的操作碼字段414以及包含該分組的所有內(nèi)容的校驗(yàn)和(例如,標(biāo)準(zhǔn)的1的補(bǔ)碼和的1的補(bǔ)碼)的校驗(yàn)和字段416。頭部410還包括具有定義了該分組的專門處理的內(nèi)容的標(biāo)記字段418,以及包含關(guān)于發(fā)送路由器的唯一順序號(hào)的順序號(hào)字段420。ACK號(hào)字段422包含關(guān)于該分組的接收者的確認(rèn)號(hào),AS號(hào)字段424包含發(fā)送系統(tǒng)的自治系統(tǒng)號(hào)。
每個(gè)EIGRP分組都可以包含可變數(shù)量的字段,這些字段中的每個(gè)根據(jù)類型(T)、長度(L)和值(V)編碼格式被加上標(biāo)簽。這些加標(biāo)簽的字段允許較新版本的軟件添加功能,并且與舊版本軟件共存于同一配置中的。加了標(biāo)簽,但是不能被某些路由器識(shí)別出的字段可以被跳過。這種編碼方案也允許多個(gè)網(wǎng)絡(luò)層協(xié)議承載獨(dú)立的信息。EIGRP Hello分組的Hello專用可變長度字段450也根據(jù)TLV編碼格式被加了標(biāo)簽。
Hello專用可變長度字段450包括類型字段460,其被構(gòu)造為包括協(xié)議標(biāo)識(shí)符(ID)子字段462和類型編碼子字段464,其中協(xié)議標(biāo)識(shí)符子字段包含分配給所支持的各種網(wǎng)絡(luò)層協(xié)議的ID。Hello分組400的說明性的類型編碼是參數(shù)類型(例如,0x0001)TLV,其被用來傳遞EIGRP距離K值以及HoldTime值。長度字段470的內(nèi)容說明性地指定類型、長度和值字段的長度(以字節(jié)計(jì)),而值字段480包含K值482和HoldTime值484。注意,HoldTime是接收路由器應(yīng)當(dāng)認(rèn)為發(fā)送服務(wù)器有效的時(shí)間量(以秒計(jì))。有效的鄰居是能夠轉(zhuǎn)發(fā)分組并參與到EIGRP協(xié)議中的路由器。一旦認(rèn)為鄰居有效,路由器就存儲(chǔ)由該鄰居通告的所有路由選擇信息。
圖5是EIGRP路由器500的示意性框圖,該路由器具有通過路由器的多接入接口512a和點(diǎn)到點(diǎn)接口512b與其鄰居540a、540b的鄰接關(guān)系502a、502b。多接入接口512a包括將路由器連接到諸如以太網(wǎng)網(wǎng)絡(luò)之類的共享介質(zhì)的電、機(jī)械和信令電路,而點(diǎn)到點(diǎn)接口512b包括將路由器連接到點(diǎn)到點(diǎn)網(wǎng)絡(luò)連接的電路。說明性的路由器500是路由器200(圖2)的實(shí)施例,并且配置為執(zhí)行EIGRP路由選擇協(xié)議過程600,該過程使用它的各個(gè)支持網(wǎng)絡(luò)層520的封裝服務(wù),支持網(wǎng)絡(luò)層520例如是DDP網(wǎng)絡(luò)層522、IP網(wǎng)絡(luò)層524和/或IPX網(wǎng)絡(luò)層526。EIGRP過程600是網(wǎng)絡(luò)操作系統(tǒng)250的組件,例如來自Cisco Systems公司的IOS軟件。
圖6是便于與本發(fā)明一起使用的EIGRP路由選擇協(xié)議過程600的框圖。說明性的EIGRP過程被實(shí)現(xiàn)為EIGRP協(xié)議引擎650,其負(fù)責(zé)向各種協(xié)議依賴模塊提供一般的功能,并且提供可靠的傳輸服務(wù)、路由計(jì)算,尤其是鄰居發(fā)現(xiàn)和故障檢測。對于多協(xié)議實(shí)現(xiàn),存在用于每個(gè)支持的網(wǎng)絡(luò)層520的協(xié)議依賴“客戶”模塊610。例如,IP-EIGRP客戶模塊610a執(zhí)行并通告TCP/IP相關(guān)的路由選擇信息,用于IP網(wǎng)絡(luò)層524。協(xié)議依賴模塊610提供網(wǎng)絡(luò)層專用的功能,并且負(fù)責(zé)理解協(xié)議專用分組格式,以及用接口連接它們各自的路由選擇表620。
EIGRP協(xié)議引擎650包括多個(gè)組件,包括可靠傳輸部分612、路由服務(wù)器處理器614、擴(kuò)散更新算法(DUAL)有限狀態(tài)機(jī)(FSM)615、客戶接口616和鄰居發(fā)現(xiàn)過程618。可靠傳輸部分612負(fù)責(zé)有保證地、有序地將EIGRP分組傳遞到所有鄰居。DUAL FSM 615通過執(zhí)行用來獲得整個(gè)路由計(jì)算中的環(huán)路自由的DUAL算法,實(shí)現(xiàn)了用于所有路由計(jì)算的判決過程。DUAL FSM負(fù)責(zé)維護(hù)由協(xié)議依賴模塊610填充的拓?fù)浔?40。每個(gè)協(xié)議依賴模塊610都具有存儲(chǔ)目的地路由選擇信息的拓?fù)浔?40。表640的內(nèi)容用來確定被通告并被插入到協(xié)議專用路由選擇表620中的信息。
鄰居發(fā)現(xiàn)過程618是EIGRP路由器500用來動(dòng)態(tài)獲知在其直接附接到的網(wǎng)絡(luò)上的其他路由器(鄰居540)的過程。當(dāng)路由器500的鄰居變得不可達(dá)和不工作時(shí),路由器500也使用過程618來發(fā)現(xiàn)。每個(gè)鄰接鄰居540的信息或狀態(tài)被存儲(chǔ)在由每個(gè)協(xié)議依賴模塊610維護(hù)的鄰居表630中。當(dāng)獲知新發(fā)現(xiàn)的鄰居540時(shí),該鄰居的地址和接口被記錄到鄰居表630中。
通過以稱作“HelloInterval”的速率周期性地創(chuàng)建并發(fā)送小Hello分組400,以低開銷實(shí)現(xiàn)了鄰居發(fā)現(xiàn)過程618。當(dāng)EIGRP路由器500被初始化時(shí),它開始發(fā)送Hello分組,該分組優(yōu)選是多播編址的。每個(gè)Hello分組400包括EIGRP距離K值482和HoldTime值484。一旦路由器500從接收到的Hello分組檢測出新的鄰居540,它就向該鄰居發(fā)送可靠的(INIT)EIGRP更新分組,以發(fā)起與新鄰居540的拓?fù)浔斫粨Q。一旦接收到INIT更新分組,鄰居540就檢測其對端,并且著手建立與EIGRP路由器500的鄰接關(guān)系502。
“HoldTime”是這樣的時(shí)間量,在該時(shí)間量內(nèi)未接收到Hello分組400的情況下,EIGRP路由器也將認(rèn)為鄰居仍存活。在說明性實(shí)施例中,HelloInterval優(yōu)選是5秒,并且HoldTime是15秒。只要在HoldTime時(shí)間內(nèi)從鄰居接收到Hello分組,EIGRP路由器就確定該鄰居仍存活且正常工作;這就允許了兩個(gè)鄰居交換(并更新)路由選擇信息,從而達(dá)到路由選擇收斂。然而,如果在HoldTime內(nèi)未接收到Hello分組,則路由器假定該鄰居已不存在,并且“拆毀”(破壞)與該鄰居的鄰接關(guān)系。
通常希望EIGRP路由器500單邊決定破壞與其鄰居540的鄰接關(guān)系502。檢測鄰居(對端)丟失并且隨后破壞鄰接關(guān)系的一種方法是“基于時(shí)間”的,其通過持續(xù)預(yù)定時(shí)間段沒有與鄰居的通信來進(jìn)行檢測。例如,如果在HoldTime內(nèi)未從鄰居540接收到Hello分組,則EIGRP路由器500假定該鄰居已不存在,并且“拆毀”(破壞)與該鄰居的鄰接關(guān)系502。然而,并不希望采用與等待整個(gè)預(yù)定時(shí)間段相關(guān)聯(lián)的延遲/等待時(shí)間(例如HoldTime)來檢測對端丟失,以便破壞現(xiàn)有鄰接關(guān)系。相反,而是希望迅速通知鄰居要破壞鄰接關(guān)系的意圖,以使鄰接關(guān)系可以迅速被移除,從而“加速”路由選擇收斂,并且提高網(wǎng)絡(luò)穩(wěn)定性。
本發(fā)明涉及在破壞計(jì)算機(jī)網(wǎng)絡(luò)中的鄰接關(guān)系時(shí)有效地通知EIGRP鄰居的技術(shù)。根據(jù)該創(chuàng)造性的技術(shù),提供了一種新穎的goodbye通知分組,其使諸如路由器500之類的EIGRP路由器能夠通知它的鄰居540中的一個(gè)或多個(gè),告知它要破壞它們現(xiàn)有鄰接關(guān)系502的意圖。圖7是goodbye通知分組700的示意性框圖,該分組包括具有實(shí)現(xiàn)為附加的goodbye屬性750的可變長度字段的EIGRP分組頭部710。說明性的goodbye屬性750根據(jù)類型(T)、長度(L)和值(V)編碼格式被加了標(biāo)簽。
TLV編碼格式是在兩個(gè)諸如路由器這樣的系統(tǒng)或節(jié)點(diǎn)之間傳輸信息的通用方法。其中一個(gè)路由器可以并不知道該信息的全部。TLV被用來標(biāo)識(shí)正被傳輸?shù)男畔⒌念愋?T)、要被傳輸?shù)男畔⒌拈L度(L)和實(shí)際傳輸?shù)男畔⒌闹?V)。基于TLV的通信系統(tǒng)的一個(gè)優(yōu)點(diǎn)在于路由器可以跳過該路由器未被配置為“理解”的任何類型的信息。即,使用長度(L)參數(shù),路由器可以跳過其不理解的屬性(TLV),直到該路由器找到它所針對配置的TLV。長度(L)參數(shù)是對于實(shí)現(xiàn)方式特定的,并且可以表示從屬性的第一字段的開始到結(jié)束的長度。但是,長度一般表示值(V)字段的長度,而不是類型字段和長度字段的長度。
EIGRP分組頭部710類似于EIGRP分組頭部410(圖4),從而包括包含EIGRP版本號(hào)的版本字段712、包含EIGRP分組的類型的操作碼字段714以及包含分組的整個(gè)內(nèi)容的校驗(yàn)和(例如,標(biāo)準(zhǔn)的1的補(bǔ)碼和的1的補(bǔ)碼)的校驗(yàn)和字段716。標(biāo)記字段718具有定義了該分組的專門處理的內(nèi)容的,順序號(hào)字段720包含關(guān)于發(fā)送路由器的唯一順序號(hào)。ACK號(hào)字段722包含關(guān)于該分組的接收者的確認(rèn)號(hào),AS號(hào)字段724包含發(fā)送系統(tǒng)的自治系統(tǒng)號(hào)。另外,goodbye屬性750定義了新的類型(T)字段752,稱作“goodbye”,其具有將其從傳統(tǒng)EIGRP Hello分組區(qū)分開的預(yù)定類型(例如,0x0007)。值(V)字段756包含鄰居(對端)ID的列表,其中每個(gè)對端ID是傳統(tǒng)的路由器標(biāo)識(shí)符,例如地址。其對端ID出現(xiàn)在對端ID列表上的鄰居被指示發(fā)起“對端停機(jī)(peer down)”動(dòng)作,來破壞它與EIGRP路由器500的鄰接關(guān)系。
將使其鄰接關(guān)系被破壞的鄰居的對端ID被存儲(chǔ)在例如路由器500中的接口512的隊(duì)列上。當(dāng)被調(diào)度運(yùn)行時(shí),鄰居發(fā)現(xiàn)過程618檢查該隊(duì)列,并且使用對端ID構(gòu)建goodbye通知分組700。包含在每個(gè)goodbye通知分組700中的對端ID的列表可以包括一個(gè)對端ID到最大數(shù)目的對端ID。如果存在比單個(gè)分組700的字段756中所能承載的對端ID多的對端ID,則可以使用多個(gè)goodbye通知分組700。
可以基于接口銷毀鄰接關(guān)系,以便EIGRP路由器500可以破壞一個(gè)接口上的所有鄰居鄰接關(guān)系502,但是不破壞其他接口上的鄰接關(guān)系。但是,也可以例如在改變路由器500和鄰居540a之間的參數(shù)時(shí)只破壞接口上的一個(gè)鄰接關(guān)系,例如多接入接口512a上的一個(gè)鄰接關(guān)系,。例如,路由器可能改變鄰居與其自身之間的認(rèn)證或某種類型的安全信息。這里,路由器希望只利用新的安全信息重啟那個(gè)鄰居的關(guān)系,同時(shí)繼續(xù)運(yùn)行其他鄰居的不同安全信息。
圖8是示出了根據(jù)本發(fā)明在使用goodbye通知分組時(shí)的步驟序列的流程圖。該序列在步驟800處開始,然后前進(jìn)到步驟802,其中諸如EIGRP路由器500之類的路由器向一個(gè)或多個(gè)鄰居540發(fā)送goodbye通知分組700。在接收到goodbye通知分組之后,在步驟804中,每個(gè)鄰居540檢查附加的goodbye屬性750的TLV編碼的內(nèi)容。具體地說,鄰居檢查新穎屬性的類型字段來確定其是否被配置為理解該類型的信息(步驟806)。如果否定,則在步驟808中該鄰居跳過該屬性,并且該序列在步驟820處結(jié)束。但是,如果該鄰居被配置為理解該類型的信息,則在步驟810中其將該分組類型標(biāo)識(shí)為goodbye通知分組。然后,在步驟812中鄰居檢查該屬性的值字段,在對端ID列表中搜索其對端ID。如果鄰居未發(fā)現(xiàn)它的對端ID(步驟814),則該序列在步驟820中結(jié)束。否則,如果鄰居發(fā)現(xiàn)了它的對端ID,則在步驟816中鄰居破壞與goodbye通知分組的源(路由器500)的鄰接關(guān)系,然后序列在步驟820中結(jié)束。
本發(fā)明的一個(gè)優(yōu)點(diǎn)是goodbye通知分組在可靠和不可靠的環(huán)境中都能工作的能力。即,在通知點(diǎn)到點(diǎn)連接(在可靠環(huán)境中)上的鄰居“離開”時(shí),即破壞與該分組的源(EIGRP路由器)的鄰接關(guān)系時(shí),goodbye通知分組可以充當(dāng)可靠消息。另外,在通知鄰居的子集(通過對端ID的列表)破壞它們與EIGRP路由器的鄰接關(guān)系的不可靠的環(huán)境(共享的網(wǎng)絡(luò)介質(zhì))中,goodbye通知分組可以充當(dāng)不可靠的消息。本發(fā)明的這方面使得能夠縮放goodbye通知分組,因?yàn)閱蝹€(gè)分組可以包括對端ID的列表,其中該列表可以包括一個(gè)對端ID到最大數(shù)目的對端ID。只有由對端ID標(biāo)識(shí)出的那些路由器著手破壞它們與goodbye分組的源的鄰接關(guān)系。goodbye分組可以通過標(biāo)識(shí)附加的屬性的值字段中的單個(gè)對端ID從而在不可靠環(huán)境中充當(dāng)可靠的消息,還可以充當(dāng)跨越整個(gè)共享介質(zhì)子網(wǎng)的不可靠消息。
存在各種網(wǎng)絡(luò)狀況,它們將從該新穎的goodbye通知技術(shù)獲益,例如,當(dāng)在兩個(gè)鄰居之間的鏈路上存在單向故障時(shí)。在這里,一個(gè)路由器檢測出故障,并且移除鄰接關(guān)系,而其他路由器仍舊接收分組并且維護(hù)鄰接關(guān)系。如果沒有g(shù)oodbye通知技術(shù),鄰接關(guān)系最終在兩個(gè)路由器中都被移除,但這僅僅是由于重傳超時(shí)或持續(xù)活動(dòng)(stuck-in-active)情況。
另一種網(wǎng)絡(luò)狀況包括不可靠傳遞服務(wù)故障,只留下可靠傳遞作為選項(xiàng)。在不可靠傳遞發(fā)生故障時(shí),兩個(gè)路由器之間的鄰接關(guān)系一般由于HoldTime期滿而被破壞。但是,如果沒有g(shù)oodbye技術(shù),EIGRP可靠流量有效地重置維護(hù)鄰接關(guān)系的HoldTime。另外,當(dāng)用戶重加載路由器500或移除EIGRP路由選擇協(xié)議過程600時(shí),一個(gè)或多個(gè)goodbye通知分組使得能夠通知所有路由器的鄰居540,從而使得它們能夠快速破壞它們與該路由器的鄰接關(guān)系,并且發(fā)現(xiàn)替換路由。類似地,當(dāng)EIGRP配置的接口被“關(guān)閉”時(shí),使用goodbye技術(shù)使得能夠快速并有效地通知所有鄰居。
盡管已示出并描述了用于在破壞計(jì)算機(jī)網(wǎng)絡(luò)中的鄰接關(guān)系時(shí)有效地通知EIGRP鄰居的說明性實(shí)施例,但是應(yīng)當(dāng)理解,在本發(fā)明的精神和范圍內(nèi),可以作出各種其他改變和修改。例如,在替換實(shí)施例中,EIGRP路由器500可以采用Hello分組400作為“通配goodbye分組”來破壞耦合到諸如多接入接口512a這樣的接口的所有鄰居540的鄰接關(guān)系。在這里,包含在Hello專用可變長度字段450的值字段480中的所有K值482都被設(shè)置為無效常量(例如,255)。另外,新的goodbye標(biāo)記(例如,goodbye_all_peers)被提供給EIGRP頭部410的標(biāo)記字段418。當(dāng)設(shè)置了goodbye標(biāo)記時(shí),鄰居發(fā)現(xiàn)過程618停止向個(gè)別鄰居(如果存在的話)發(fā)送goodbye通知分組700,并且只發(fā)送該接口上的一個(gè)通配goodbye分組。本發(fā)明的這種實(shí)施例提供了向后兼容性,并且簡化了處理。如果運(yùn)行舊版本EIGRP協(xié)議的鄰居540a接收到具有無效K值的通配goodbye分組,則它立即拆毀與路由器500的鄰接關(guān)系。此外,通配goodbye分組在協(xié)議依賴模塊610處被理解,而不是依賴于協(xié)議專用代碼來解密協(xié)議專用通配地址。
前面的描述已集中描述了本發(fā)明的特定實(shí)施例。但是,將會(huì)清楚,可以對所述實(shí)施例作出其他改變和修改,同時(shí)還保留它們的某些或全部優(yōu)點(diǎn)。例如,很清楚,包括這里所述的各種模塊在內(nèi)的本發(fā)明的教導(dǎo)可以被實(shí)現(xiàn)為軟件,包括具有在計(jì)算機(jī)、硬件、固件或者它們的組合上執(zhí)行的程序指令的計(jì)算機(jī)可讀介質(zhì)。另外,應(yīng)當(dāng)理解,這里所述的數(shù)據(jù)結(jié)構(gòu)可以包括其他信息,同時(shí)仍保持在本發(fā)明的范圍內(nèi)。此外,創(chuàng)造性的goodbye通知技術(shù)可以應(yīng)用到任何維持對端信息(狀態(tài))的協(xié)議,包括非路由選擇協(xié)議,例如在彼此之間具有無線連接的無線設(shè)備上運(yùn)行的無線協(xié)議。因此,本描述僅應(yīng)作為示例,并且不應(yīng)以任何方式限制本發(fā)明的范圍。因此,所附權(quán)利要求的目的是覆蓋所有這種變化和修改,只要它們在本發(fā)明的真實(shí)精神和范圍內(nèi)。
權(quán)利要求
1.一種被配置為在破壞計(jì)算機(jī)網(wǎng)絡(luò)中的鄰接關(guān)系時(shí)通知鄰居的系統(tǒng),所述系統(tǒng)包括路由器,其適于生成goodbye通知分組,以通知所述鄰居中的一個(gè)或多個(gè)破壞所述鄰接關(guān)系,所述goodbye通知分組具有分組頭部,所述分組頭部具有根據(jù)編碼格式加標(biāo)簽的附加的goodbye屬性。
2.如權(quán)利要求1所述的系統(tǒng),其中所述goodbye屬性包括goodbye類型;和鄰居(對端)標(biāo)識(shí)符(ID)列表,其中所述列表上的對端ID標(biāo)識(shí)出的每個(gè)鄰居破壞它與所述路由器的鄰接關(guān)系。
3.如權(quán)利要求2所述的系統(tǒng),其中所述路由器是增強(qiáng)型內(nèi)部網(wǎng)關(guān)路由選擇協(xié)議(EIGRP)路由器,其被配置為運(yùn)行EIGRP路由選擇協(xié)議過程。
4.如權(quán)利要求3所述的系統(tǒng),其中所述EIGRP路由選擇協(xié)議過程包括被配置為構(gòu)建所述goodbye通知分組的鄰居發(fā)現(xiàn)過程。
5.如權(quán)利要求2所述的系統(tǒng),其中所述路由器包括多接入接口,其具有連接所述路由器到共享的介質(zhì)計(jì)算機(jī)網(wǎng)絡(luò)的電路;和點(diǎn)到點(diǎn)接口,其具有連接所述路由器到點(diǎn)到點(diǎn)計(jì)算機(jī)網(wǎng)絡(luò)連接的電路。
6.如權(quán)利要求5所述的系統(tǒng),其中所述多接入接口使得能夠在不可靠環(huán)境中將所述goodbye通知分組用作不可靠消息,以通知鄰居的子集破壞它們與所述路由器的鄰接關(guān)系。
7.如權(quán)利要求6所述的系統(tǒng),其中所述鄰居的子集是通過所述對端ID的列表而被通知的。
8.如權(quán)利要求5所述的系統(tǒng),其中所述點(diǎn)到點(diǎn)接口使得能夠在可靠環(huán)境中將所述goodbye通知分組用作可靠消息,以通知單個(gè)鄰居破壞它與所述路由器的鄰接關(guān)系。
9.如權(quán)利要求8所述的系統(tǒng),其中所述單個(gè)鄰居是通過所述對端ID的列表而被通知的。
10.一種用于在破壞計(jì)算機(jī)網(wǎng)絡(luò)中的鄰接關(guān)系時(shí)通知鄰居的方法,所述方法包括下面的步驟將goodbye通知分組從路由器發(fā)送到所述鄰居中的一個(gè)或多個(gè),以通知所述鄰居破壞所述鄰接關(guān)系,所述goodbye通知分組具有分組頭部,所述分組頭部具有附加的goodbye屬性;在每個(gè)鄰居處檢查所述附加的goodbye屬性;如果所述鄰居被配置為理解所述goodbye屬性,則搜索包含在所述goodbye屬性中的對端標(biāo)識(shí)符(ID)列表來確定所述鄰居的對端ID是否在所述列表上;并且如果所述鄰居的對端ID在所述列表上,則破壞與所述路由器的鄰接關(guān)系。
11.如權(quán)利要求10所述的方法,其中所述檢查步驟包括以下步驟檢查所述goodbye屬性的類型來確定所述鄰居是否被配置為理解該類型的信息。
12.如權(quán)利要求11所述的方法,還包括以下步驟如果所述鄰居未被配置為理解所述goodbye屬性,則跳過所述goodbye屬性的值字段。
13.如權(quán)利要求12所述的方法,其中所述鄰居是被配置為運(yùn)行增強(qiáng)型內(nèi)部網(wǎng)關(guān)路由選擇協(xié)議(EIGRP)的路由器。
14.一種被配置為在破壞計(jì)算機(jī)網(wǎng)絡(luò)中的鄰接關(guān)系時(shí)通知鄰居的系統(tǒng),所述系統(tǒng)包括路由器,其被配置為運(yùn)行增強(qiáng)型內(nèi)部網(wǎng)關(guān)路由選擇協(xié)議(EIGRP)來生成goodbye通知分組,以通知所述鄰居中的一個(gè)或多個(gè)破壞所述鄰接關(guān)系,所述goodbye通知分組具有分組頭部,所述分組頭部具有附加的goodbye屬性,所述goodbye屬性具有預(yù)定的goodbye類型和鄰居(對端)標(biāo)識(shí)符(ID)列表,其中所述列表上的對端ID標(biāo)識(shí)出的每個(gè)鄰居破壞它與所述路由器的鄰接關(guān)系。
15.適于在破壞計(jì)算機(jī)網(wǎng)絡(luò)中的鄰接關(guān)系時(shí)通知鄰居的裝置,所述裝置包括用于將goodbye通知分組從路由器發(fā)送到所述鄰居中的一個(gè)或多個(gè),以通知所述鄰居破壞所述鄰接關(guān)系的裝置,所述goodbye通知分組具有分組頭部,所述分組頭部具有附加的goodbye屬性;用于在每個(gè)鄰居處檢查所述附加的goodbye屬性的裝置;如果所述鄰居被配置為理解所述goodbye屬性,則用于搜索包含在所述goodbye屬性中的對端標(biāo)識(shí)符(ID)列表來確定所述鄰居的對端ID是否在所述列表上的裝置;如果所述鄰居的對端ID在所述列表上,則用于破壞與所述路由器的鄰接關(guān)系的裝置。
16.如權(quán)利要求15所述的裝置,其中所述用于檢查的裝置包括用于檢查所述goodbye屬性的類型來確定所述鄰居是否被配置為理解該類型的信息的裝置。
17.如權(quán)利要求16所述的裝置,還包括如果所述鄰居未被配置為理解所述goodbye屬性,則用于跳過所述goodbye屬性的值字段的裝置。
18.一種包含可執(zhí)行程序指令的計(jì)算機(jī)可讀介質(zhì),所述程序指令用于在破壞計(jì)算機(jī)網(wǎng)絡(luò)中的鄰接關(guān)系時(shí)通知鄰居,所述可執(zhí)行程序指令包括用于執(zhí)行下面步驟的程序指令將goodbye通知分組從路由器發(fā)送到所述鄰居中的一個(gè)或多個(gè),以通知所述鄰居破壞所述鄰接關(guān)系,所述goodbye通知分組具有分組頭部,所述分組頭部具有附加的goodbye屬性;在每個(gè)鄰居處檢查所述附加的goodbye屬性;如果所述鄰居被配置為理解所述goodbye屬性,則搜索包含在所述goodbye屬性中的對端標(biāo)識(shí)符(ID)列表來確定所述鄰居的對端ID是否在所述列表上;如果所述鄰居的對端ID在所述列表上,則破壞所述與所述路由器的鄰接關(guān)系。
19.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其中所述用于檢查的程序指令包括用于檢查所述goodbye屬性的類型來確定所述鄰居是否被配置為理解該類型的信息的一條或多條程序指令。
20.如權(quán)利要求19所述的計(jì)算機(jī)可讀介質(zhì),還包括一條或多條程序指令,用于如果所述鄰居未被配置為理解所述goodbye屬性,則跳過所述goodbye屬性的值字段。
全文摘要
本發(fā)明提供了一種技術(shù),用于在破壞計(jì)算機(jī)網(wǎng)絡(luò)中的鄰接關(guān)系時(shí)有效地通知EIGRP鄰居。提供了goodbye通知分組,其使得EIGRP路由器能夠通知其鄰居中的一個(gè)或多個(gè),告知它的要破壞它們的現(xiàn)有鄰接關(guān)系的意圖。goodbye通知分組包括EIGRP分組頭部,該分組頭部具有實(shí)現(xiàn)為附加的goodbye屬性的可變長度字段。根據(jù)TLV編碼格式,附加的goodbye屬性被說明性地添加了標(biāo)簽,該TLV編碼格式定義了新的類型(T)字段,稱作“goodbye”,其具有將其從傳統(tǒng)EIGRP Hello分組區(qū)分開的預(yù)定類型。在goodbye屬性中傳遞的信息的值(V)字段包含鄰居(或?qū)Χ?標(biāo)識(shí)符(ID)的列表。該列表上的對端ID指示那些鄰居路由器“離開”,以使它們的鄰接關(guān)系可被破壞。
文檔編號(hào)H04L12/56GK1792064SQ200480011305
公開日2006年6月21日 申請日期2004年2月17日 優(yōu)先權(quán)日2003年6月19日
發(fā)明者蘇安·范特蘭, 度尼·V·塞韋支, 唐納德·斯萊斯 申請人:思科技術(shù)公司