專利名稱:網(wǎng)絡(luò)中路由協(xié)議的平滑關(guān)斷技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及用在計算機網(wǎng)絡(luò)中的路由協(xié)議,更具體而言,涉及能夠?qū)崿F(xiàn)在計算機網(wǎng)絡(luò)中的中間節(jié)點上執(zhí)行的路由協(xié)議的平滑關(guān)斷(graceful shutdown)和重置的技術(shù)。
背景技術(shù):
計算機網(wǎng)絡(luò)是地理上分布的互連通信鏈路的集合,互連通信鏈路用于在諸如計算機之類的節(jié)點之間傳輸數(shù)據(jù)。許多類型的計算機網(wǎng)絡(luò)都是可用的,其類型范圍從局域網(wǎng)到廣域網(wǎng)。節(jié)點一般是通過根據(jù)預(yù)定義的協(xié)議交換離散的數(shù)據(jù)分組或消息來進(jìn)行通信的。在這種上下文中,協(xié)議由定義節(jié)點之間如何交互的一組規(guī)則構(gòu)成。
計算機網(wǎng)絡(luò)還可以通過中間節(jié)點(如交換機或路由器)互連,以擴(kuò)展每個網(wǎng)絡(luò)的有效“大小”。由于互連計算機網(wǎng)絡(luò)的大系統(tǒng)的管理可能增加負(fù)擔(dān),因此較小的計算機網(wǎng)絡(luò)的群組可被維持為路由域或自治系統(tǒng)。自治系統(tǒng)(AS)內(nèi)的網(wǎng)絡(luò)一般是通過傳統(tǒng)的“域內(nèi)”路由器耦合在一起的。另外,還有可能希望增加能夠交換數(shù)據(jù)的節(jié)點數(shù)目;這種情況下,運行域間路由協(xié)議的域間路由器被用于互連各種AS的節(jié)點。
域間路由協(xié)議的示例是邊界網(wǎng)關(guān)協(xié)議版本4(BGP),其通過在系統(tǒng)的相鄰域間路由器之間交換路由(可達(dá)性)信息來執(zhí)行自治系統(tǒng)之間的路由。相鄰性是在選定的相鄰(對等)路由器之間形成的關(guān)系,用于交換路由信息消息并概括網(wǎng)絡(luò)拓?fù)洹H欢?,在發(fā)送這種消息之前,對等方進(jìn)行操作以在路由器之間建立邏輯“對等”連接(會話)。BGP利用可靠的/順序的傳輸協(xié)議(如傳輸控制協(xié)議(TCP))來建立可靠的連接/會話。
由BGP對等方交換的可達(dá)性信息一般包括目的地地址前綴,即路由協(xié)議用來進(jìn)行路由(“下一跳”)判決的目的地地址的一部分。這種目的地地址的示例包括因特網(wǎng)協(xié)議(IP)版本4(IPv4)和版本6(IPv6)地址。前綴暗示了IP地址和用來描述對等方可以到達(dá)的網(wǎng)絡(luò)區(qū)域的掩碼的組合。每個前綴可以具有多個關(guān)聯(lián)路徑;每個路徑由對等方中的一個或多個向其對等路由器宣告。注意,一組路徑屬性和一個前綴的組合被稱為“路由”;術(shù)語“路由”和“路徑”在這里可互換使用。BGP路由協(xié)議標(biāo)準(zhǔn)是公知的,并且在Y.Rekhter and T.Li(1995)的Request For Comments(RFC)1771、Y.Rekhter and T.Li(2003年4月)的因特網(wǎng)草案<draft-ietf-idr-bgp4-23.txt>題為ABorder Gateway Protocol 4(BGP-4)和R.Permian的Interconnections,Bridges and Routers,由Addison Wesley PublishingCompany出版323-329頁(1992)中有詳細(xì)描述,這里通過引用將該文件的全部公開內(nèi)容結(jié)合于此。
被配置用于執(zhí)行BGP協(xié)議的實現(xiàn)方式的域間路由器(下文中稱為BGP路由器)執(zhí)行各種路由功能,包括發(fā)送和接收路由消息以及基于路由度量進(jìn)行路由判決。每個BGP路由器維護(hù)一個路由表,路由表列出了從該路由器到特定網(wǎng)絡(luò)的所有可行路徑。路由表是包含了用來構(gòu)造轉(zhuǎn)發(fā)信息庫(FIB)的轉(zhuǎn)發(fā)表的路由信息的數(shù)據(jù)庫,所述轉(zhuǎn)發(fā)信息庫用在路由器對分組執(zhí)行轉(zhuǎn)發(fā)判決的情況下。
通常不執(zhí)行路由表的周期刷新;然而,駐留在AS中的BGP對等路由器在某些情況下交換路由信息。例如,當(dāng)BGP路由器最初連接到網(wǎng)絡(luò)時,對等路由器交換其路由表的全部內(nèi)容。其后,當(dāng)這些內(nèi)容發(fā)生改變時,路由器只交換其路由表中發(fā)生改變的那一部分以更新其BGP對等方的表。從而,這些更新消息是響應(yīng)于路由表的內(nèi)容的改變而發(fā)送的遞增更新消息,并且只宣告到特定網(wǎng)絡(luò)的最佳路徑。
廣而言之,BGP路由器通過“遍歷”路由表并應(yīng)用適當(dāng)?shù)穆酚刹呗?,來生成鄰?也稱為對等路由器)的路由更新消息。路由策略是使得BGP路由器能夠根據(jù)過濾和優(yōu)選性(即,“最佳路徑”)對路由排序的信息。由更新消息提供的路由更新允許AS的BGP路由器構(gòu)造網(wǎng)絡(luò)拓?fù)涞囊恢赂艣r。更新消息一般是利用諸如TCP之類的可靠傳輸發(fā)送的,以確保可靠的傳遞。TCP是由IP體系結(jié)構(gòu)的傳輸層實現(xiàn)的傳輸協(xié)議;術(shù)語TCP/IP常用來指代該體系結(jié)構(gòu)。TCP/IP體系結(jié)構(gòu)是公知的,并且在Prentice-Hall(1996)出版的Andrew S.Tanenbaum的Computer Networks,第3版中有所描述。
通常網(wǎng)絡(luò)中路由器(如BGP路由器)的維護(hù)是有計劃的,從而導(dǎo)致BGP的關(guān)斷或重置。例如,BGP路由器可以響應(yīng)于例如某些硬件的更新或者在軟件升級之后路由器的重啟而被關(guān)斷并脫離服務(wù)。另外,路由器可以響應(yīng)于改變BGP參數(shù)而被重置,例如當(dāng)改變BGP路由器標(biāo)識符時。然而,有計劃的路由器關(guān)斷或重置可能導(dǎo)致某些路由(對于這些路由來說,關(guān)斷的路由器是最佳路徑)的臨時斷供(outages)(即,路由信息交換的丟失)。
為了實現(xiàn)BGP的有計劃的關(guān)斷或重置,關(guān)斷的路由器發(fā)送帶有錯誤代碼Cease(停止)的傳統(tǒng)BGP通知消息,以關(guān)閉其與BGP對等方的連接。在發(fā)送通知消息之后,關(guān)斷的路由器關(guān)閉建立了連接的TCP會話。在某些實現(xiàn)方式中,通知消息可以省略。響應(yīng)于關(guān)閉連接,在這些連接上廣告的所有原始路由被BGP對等方立即從服務(wù)(從FIB)中移去(撤消)。結(jié)果,在網(wǎng)絡(luò)重新收斂之前經(jīng)過了某些時間(即,收斂時間)。在這種上下文中,收斂時間是在路由的撤消和由初始路由撤消觸發(fā)的所有后續(xù)消息都已被交換的時間之間經(jīng)過的時間。通常,這可由BGP路由器執(zhí)行以下操作所需的時間來表征接收并處理來自其所有對等方的更新消息,對于每個前綴選擇最佳路徑,將這些最佳路徑安裝到路由表中,并將最佳路徑廣告回其對等方。然而,在某些網(wǎng)絡(luò)中,可能需要這種消息的多次巡回,或者其他因素也可能起作用。這種簡單“停止”路由器并使網(wǎng)絡(luò)重新收斂的方法導(dǎo)致由于路由撤消而引起的路由信息的臨時丟失。
具體而言,在關(guān)斷的路由器是一個或多個路由的最佳路徑時,會發(fā)生上述問題。這種情況下,AS內(nèi)的其他BGP路由器沒有對備份路徑的訪問權(quán)限,即使這些備份路徑對AS內(nèi)的某些路由器已知的情況下也是如此,因為最佳路徑的宣告抑制了備份路徑的廣告。從而,當(dāng)從網(wǎng)絡(luò)中撤消最佳路徑時,在替換路徑被傳播并被選定之前經(jīng)過了收斂時間,從而導(dǎo)致路由信息的臨時丟失。在該經(jīng)過的收斂時間內(nèi),受影響網(wǎng)絡(luò)的流量可能“黑洞化”,即,受影響網(wǎng)絡(luò)的服務(wù)將被中斷。
避免由于路由撤消引起的路由信息的臨時丟失的先前方法落入了以下方法的范疇即持續(xù)廣告那些非最佳路徑的路由。在BGP用法中,這種路由有時被稱為“最佳外部路由”。圖1是圖示了網(wǎng)絡(luò)的AS內(nèi)中間節(jié)點(如路由器)的布置的示意性框圖。假定節(jié)點X、Y和Z都是ASN內(nèi)的BGP路由器。路由器Y得知經(jīng)由ASM內(nèi)的BGP路由器到目的地D的路徑,路由器Z得知經(jīng)由ASo內(nèi)的BGP路由器到相同目的地D的路徑。然而,路由器Y得知的路徑“優(yōu)于”路由器Z得知的路徑。
假定在X和Y,Y和Z以及Z和X之間有內(nèi)部BGP(iBGP)會話。如果只廣告最佳路徑,則路由器X只有到目的地D的單個路徑,該路徑的下一跳是路由器Y。為了使路由器X得知備份路徑(非最佳路徑),路由器Z必須廣告經(jīng)過ASo的路徑,而路由器X必須存儲該備份路徑。這會消耗額外的網(wǎng)絡(luò)資源(例如,鏈路帶寬、處理器和存儲器)以用于廣告和存儲備份路徑,從而不利地改變網(wǎng)絡(luò)的擴(kuò)展屬性。
發(fā)明內(nèi)容
本發(fā)明通過提供一種平滑關(guān)斷技術(shù)克服了現(xiàn)有技術(shù)的缺點,這種平滑關(guān)斷技術(shù)修改了路由協(xié)議,以允許諸如路由器之類的中間節(jié)點向其對等路由器(對等方)宣告其希望被平滑地關(guān)斷并被從網(wǎng)絡(luò)中的服務(wù)中移走的意圖。通過宣告其希望被從服務(wù)中移走的意圖,關(guān)斷的路由器關(guān)閉(終止)了其與對等方的所有連接,并且在這些連接上廣告的所有原始路由被從服務(wù)中移走(撤消)。根據(jù)本發(fā)明的技術(shù),關(guān)斷的路由器可以在“寬限”時期內(nèi)繼續(xù)經(jīng)由網(wǎng)絡(luò)轉(zhuǎn)發(fā)分組,即,路由器維護(hù)這些原始路由的有效性,從而使映射到這些路由的分組不被丟棄(至少在寬限期內(nèi))。寬限期還允許在最終從對等方的轉(zhuǎn)發(fā)信息庫(FIB)中撤消關(guān)斷的路由器的路徑之前,將備份路徑傳播到每個對等方并投入服務(wù)。從而,寬限期能夠使網(wǎng)絡(luò)在網(wǎng)絡(luò)重新收斂以使用替換的備份路徑時繼續(xù)將關(guān)斷的路由器用作下一跳。
在圖示實施例中,路由協(xié)議是邊界網(wǎng)關(guān)協(xié)議版本4(BGP),關(guān)斷的路由器是包括被撤消的路由中的一個或多個的最佳路徑的BGP路由器。本發(fā)明的技術(shù)通過向具有錯誤代碼Cease的BGP通知消息提供新的子碼而修改了BGP協(xié)議。這些子碼包括管理平滑路由器關(guān)斷(例如子碼9)和管理平滑路由器重置(例如子碼10)。關(guān)斷的路由器通過在修改后的通知消息中插入新子碼之一,來指示其能夠在寬限期內(nèi)繼續(xù)進(jìn)行轉(zhuǎn)發(fā)。每個具有平滑關(guān)斷/重置子碼的修改后的通知消息(下文中稱為“平滑關(guān)斷通知消息”)還包括消息的數(shù)據(jù)字段中的FIB保留時間。FIB保留時間被設(shè)為單位為秒的代表寬限期(即,最小時間長度)的值,在該寬限期內(nèi)關(guān)斷的路由器在發(fā)送了平滑關(guān)斷通知消息后將保持其轉(zhuǎn)發(fā)狀態(tài)。
在接收到平滑關(guān)斷通知消息后,每個BGP對等方保留與被終止連接相關(guān)聯(lián)的被撤消路由,直到發(fā)生以下兩個事件中的任何一個(1)另一路由被選為最佳路徑或(2)經(jīng)過了在平滑關(guān)斷通知消息中指定的保留時間。在第一事件(另一最佳路徑的選擇)發(fā)生后,保留的路由可從服務(wù)(即,從FIB)中移去,而在第二事件(經(jīng)過了保留時間)發(fā)生后,保留的路由必須從FIB中移去。本發(fā)明的技術(shù)還提供了將原始路由標(biāo)記為“最后采用”路由的想法,這樣一來,觸發(fā)網(wǎng)絡(luò)中的其他路由器宣告?zhèn)浞萋酚刹⒅匦率諗?,而不完全撤消原始路由?br>
有利地,本發(fā)明的技術(shù)能夠以這樣的方式實現(xiàn)路由器的受控關(guān)斷,該方式減少了網(wǎng)絡(luò)中用戶流量的丟失,而不是簡單停止路由器并使網(wǎng)絡(luò)重新收斂。另外,本發(fā)明的技術(shù)不會對網(wǎng)絡(luò)的擴(kuò)展屬性的改變有不利影響。即,本發(fā)明并不要求網(wǎng)絡(luò)中的路由器存儲附加路徑,從而僅在最佳路徑被撤消的情況下用作可能的備份路徑。而且,在對于每個前綴包含多個路由的任何網(wǎng)絡(luò)中,這里描述的本發(fā)明的技術(shù)導(dǎo)致其行為與傳統(tǒng)的BGP協(xié)議的操作不同。
本發(fā)明的以上和另外的優(yōu)點將通過參考下面結(jié)合附圖的描述得以更好的理解,在附圖中,相似的標(biāo)號指示相同或功能類似的元件圖1是圖示了計算機網(wǎng)絡(luò)的自治系統(tǒng)內(nèi)的諸如路由器之類的中間節(jié)點的布置的示意性框圖;
圖2是包括由中間節(jié)點(如邊界網(wǎng)關(guān)協(xié)議(BGP)域間路由器)互連的多個路由域的計算機網(wǎng)絡(luò)的示意性框圖;圖3是可有利地用于本發(fā)明的域間路由器的實施例的示意性框圖;圖4是圖3的域間路由器內(nèi)的傳統(tǒng)協(xié)議棧(如因特網(wǎng)通信協(xié)議棧)的示意性框圖;圖5是圖示了BGP協(xié)議的體系結(jié)構(gòu)的示意性框圖;圖6是可有利地用于本發(fā)明的通知消息(如BGP通知消息)的示意性框圖;圖7是圖示了用于根據(jù)本發(fā)明的具有錯誤代碼Cease的通知消息的新子碼的表;以及圖8是圖示了與根據(jù)本發(fā)明的平滑關(guān)斷技術(shù)有關(guān)的步驟序列的流程圖。
具體實施例方式
圖2是包括多個由中間節(jié)點互連的路由域的計算機網(wǎng)絡(luò)200的示意性框圖。中間節(jié)點可以包括傳統(tǒng)的交換機,但是在圖示實施例中,是傳統(tǒng)的域內(nèi)路由器220和域間路由器300。路由域或自治系統(tǒng)(AS1-4)是由域間路由器互連的。域間路由器300進(jìn)一步通過網(wǎng)絡(luò)(如局域網(wǎng)204)和點對點鏈路202(如幀中繼鏈路、異步傳送模式鏈路或其他串行鏈路)互連。路由器間的通信一般是通過根據(jù)預(yù)定義的協(xié)議(如傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP))交換離散數(shù)據(jù)分組或消息來實現(xiàn)的。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,諸如因特網(wǎng)分組交換(IPX)協(xié)議之類的其他協(xié)議也可用于本發(fā)明。
圖3是可用于本發(fā)明的域間路由器300的示意性框圖。域間路由器300包括路由處理器302,路由處理器302經(jīng)由總線305耦合到存儲器304和多個網(wǎng)絡(luò)接口適配器310A-C。存儲器304可以包括可由處理器尋址的存儲位置和用于存儲軟件程序和數(shù)據(jù)結(jié)構(gòu)的接口適配器,如轉(zhuǎn)發(fā)信息庫(FIB330),其可用于這里描述的本發(fā)明的技術(shù)。路由處理器302可以包括用于執(zhí)行軟件程序和操作數(shù)據(jù)結(jié)構(gòu)的處理元件或邏輯。一部分通常駐留在存儲器304中并且由路由處理器執(zhí)行的操作系統(tǒng)320通過調(diào)用支持軟件過程的網(wǎng)絡(luò)操作和運行在路由器上的路由協(xié)議模塊等來功能性地組織路由器。如上所述,一種這樣的路由協(xié)議模塊是邊界網(wǎng)關(guān)協(xié)議版本4(BGP500)。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)清楚,其他處理器和存儲器裝置(包括各種計算機可讀介質(zhì))也可用于存儲和執(zhí)行與這里描述的本發(fā)明的技術(shù)有關(guān)的程序指令。
域間路由器300的一個關(guān)鍵功能是確定分組被發(fā)送到的下一路由器;為了實現(xiàn)這種“路由”,域間路由器協(xié)同操作以確定經(jīng)過計算機網(wǎng)絡(luò)200的最佳路徑。路由功能優(yōu)選地是由每個路由器內(nèi)傳統(tǒng)協(xié)議棧的網(wǎng)絡(luò)層執(zhí)行的。圖4是傳統(tǒng)的網(wǎng)絡(luò)協(xié)議棧(如因特網(wǎng)通信協(xié)議棧400)的示意性框圖。因特網(wǎng)協(xié)議棧的體系結(jié)構(gòu)由4層代表,這4層從下到上依次是網(wǎng)絡(luò)接口層408、網(wǎng)絡(luò)層406、傳輸層404和應(yīng)用層402。
較低的網(wǎng)絡(luò)接口層408通常是標(biāo)準(zhǔn)化的,并且以硬件和固件實現(xiàn),而較高層可以以軟件形式實現(xiàn)。因特網(wǎng)體系結(jié)構(gòu)的主要網(wǎng)絡(luò)層協(xié)議是IP協(xié)議。IP主要是一種無連接協(xié)議,其用于被交換的分組(在因特網(wǎng)環(huán)境中通常被稱為“數(shù)據(jù)報”)的網(wǎng)絡(luò)路由、分段和組裝,這依賴于針對端對端可靠性和其他業(yè)務(wù)特性的傳輸協(xié)議。這種傳輸協(xié)議的示例是TCP協(xié)議,其是由傳輸層404實現(xiàn)的,并且為因特網(wǎng)體系結(jié)構(gòu)的上層協(xié)議提供了面向連接的端對端可靠性服務(wù)。術(shù)語TCP/IP常用于指代因特網(wǎng)體系結(jié)構(gòu)。
具體而言,網(wǎng)絡(luò)層406涉及如何轉(zhuǎn)發(fā)分組經(jīng)過網(wǎng)絡(luò),但是其不直接涉及如何構(gòu)造FIB。諸如BGP之類的域間路由協(xié)議被用于執(zhí)行經(jīng)過計算機網(wǎng)絡(luò)的域間路由(用于網(wǎng)絡(luò)層)。域間路由器300(下文中稱為“對等方”)經(jīng)由可靠的傳輸層連接(如TCP)在自治系統(tǒng)間交換路由和可靠性信息。相鄰性是在選定對等路由器之間形成的關(guān)系,用于交換路由消息并概括網(wǎng)絡(luò)拓?fù)?。BGP協(xié)議“運行”在TCP傳輸層404頂部,以確保對等路由器之間路由消息的可靠通信。
為了根據(jù)BGP協(xié)議執(zhí)行路由操作,每個域間路由器300維護(hù)一個路由表,路由表列出了從該路由器到每個網(wǎng)絡(luò)的所有可行路徑。路由表是包含了在對分組執(zhí)行轉(zhuǎn)發(fā)判決時由路由處理器302用來構(gòu)造FIB330的轉(zhuǎn)發(fā)表的路由信息的數(shù)據(jù)庫。在路由表改變時,路由器利用路由更新消息來交換路由信息。路由更新消息是由更新路由器生成的,用于廣告到整個計算機網(wǎng)絡(luò)內(nèi)其相鄰對等路由器(對等方)中的每一個的最佳路徑。這些路由更新允許自治系統(tǒng)的BGP路由器構(gòu)造網(wǎng)絡(luò)拓?fù)涞囊恢碌暮妥钚碌母艣r。
圖5是圖示了運行在路由器300上的BGP協(xié)議500的體系結(jié)構(gòu)的示意性框圖。對等方經(jīng)由TCP連接502宣告路由更新。BGP協(xié)議“監(jiān)聽”路由更新消息,并且在BGP數(shù)據(jù)庫中存儲針對每個連接的所有得知的路由。BGP數(shù)據(jù)庫在圖中被組織為相鄰RIB進(jìn)入(Adj-RIB-In 510)、相鄰RIB外出(Adj-RIB-Out 540)和本地RIB(loc-RIB 520)。每個對等方/TCP連接502與一個Adj-RIB-In 510和一個Adj-RIB-Out 540相關(guān)聯(lián)。BGP協(xié)議對針對每個連接502“得知”的所有路由和在該連接特有的Adj-RIB-In510中存儲了匹配的那些路由運行入站策略。然后對那些存儲的路由應(yīng)用附加入站策略550(過濾),同時將可能被修改的路由安裝在loc-RIB520中。
loc-RIB存儲與轉(zhuǎn)發(fā)表中的路由類似的路由;為此,loc-RIB520通常負(fù)責(zé)從所有修改了策略的Adj-RIB-In路由的組合中選擇每個前綴的最佳路由,從而產(chǎn)生被稱為“最佳路徑”的路由。最佳路徑的集合隨后被安裝在全局RIB530中,從而這些路徑可以與來自其他協(xié)議的最佳路徑競爭以變?yōu)樽罱K被選擇用于轉(zhuǎn)發(fā)的“最優(yōu)”路徑。圖示的全局RIB530維護(hù)路由器的路由表。注意,路由表一般指包含所有可用路由的數(shù)據(jù)庫,所有可用路由包括已被選定用于轉(zhuǎn)發(fā)的路由(最優(yōu)路徑),在某些情況下,還包括當(dāng)前未被選定用于轉(zhuǎn)發(fā)的備份路由。相反,轉(zhuǎn)發(fā)表指代那些實際被選定用于轉(zhuǎn)發(fā)的最優(yōu)的最佳路徑。其后,在最佳路徑的集合上應(yīng)用出站策略560,其結(jié)果被放置在適當(dāng)?shù)腁dj-RIB-Out 540中,并且被經(jīng)由從其得知路由更新消息的相同TCP連接502向各個對等方宣告。
如上所述,BGP路由器的維護(hù)通常是有計劃的,從而導(dǎo)致運行在路由器上的BGP協(xié)議500的關(guān)斷或重置。為了實現(xiàn)BGP的有計劃的(受控的)關(guān)斷或重置,關(guān)斷的路由器發(fā)送傳統(tǒng)的具有錯誤代碼Cease(停止)的通知消息,以關(guān)閉其與BGP對等方的連接。在發(fā)送了通知消息后,關(guān)斷的路由器關(guān)閉建立了連接的TCP會話。在某些實現(xiàn)方式中,通知消息可以省略。圖6是傳統(tǒng)的BGP通知消息600的示意性框圖,其包括附接到頭部610的多個字段。錯誤代碼字段622包含指示通知消息類型的錯誤代碼。通知消息一般是響應(yīng)于檢測到的錯誤條件而發(fā)送的;消息600的子碼字段700包含錯誤子碼,錯誤子碼提供了更具體的關(guān)于錯誤本質(zhì)的信息。可變長度數(shù)據(jù)字段626包含用于診斷通知消息的原因的內(nèi)容,因此該內(nèi)容依賴于錯誤代碼和子碼。
根據(jù)BGP協(xié)議,在沒有致命錯誤時,關(guān)斷的路由器可以選擇通過發(fā)送在錯誤代碼字段622中指定了Cease(錯誤代碼6)的通知消息600來關(guān)閉其與對等方的BGP連接。一旦關(guān)斷的路由器關(guān)閉(終止)了其對等連接,在這些連接上廣告的所有路由就立即被從服務(wù)中移去(撤消)。廣而言之,關(guān)閉BGP連接表示關(guān)閉與BGP對等方的TCP連接502,清空關(guān)聯(lián)的Adj-RIB-In 510,并釋放BGP連接的所有資源。而且,與關(guān)斷的路由器相關(guān)聯(lián)的loc-RIB520中的條目被標(biāo)記為無效。在許多網(wǎng)絡(luò)配置中,這樣會有以下的臨時結(jié)果對網(wǎng)絡(luò)中的內(nèi)部路由器而言,無法獲得針對上述(宣告的)前綴的路由。這在關(guān)斷的路由器是被撤消的路由中的一個或多個的最佳路徑時尤其有問題。如果自治系統(tǒng)中的另一BGP路由器有可用的備份路由,則其可以將這些備份路由廣告為最佳路徑,并且可以恢復(fù)轉(zhuǎn)發(fā),但不是在受影響路由的臨時“黑洞”發(fā)生之前。
當(dāng)BGP路由器300經(jīng)歷受控關(guān)斷時,可以提供對在從FIB330中移去路由之前的某段時間(即,“寬限”期)內(nèi)廣告的路由的轉(zhuǎn)發(fā)。通過為關(guān)斷的路由器提供以信令告知其正在經(jīng)歷受控關(guān)斷的技術(shù),BGP對等方還可以繼續(xù)使用該路由進(jìn)行轉(zhuǎn)發(fā),直到任何可用的備份路由已被提出并且被廣告為止。盡管該技術(shù)沒有消除BGP協(xié)議中固有的短暫的黑洞和/或轉(zhuǎn)發(fā)環(huán)路的可能性,但是其基本縮短了可能發(fā)生這些現(xiàn)象的時間。
本發(fā)明針對一種平滑關(guān)斷技術(shù),其修改了諸如BGP協(xié)議之類的路由協(xié)議,以允許諸如BGP路由器300之類的中間節(jié)點向其對等方宣告其將被平滑關(guān)斷并被從網(wǎng)絡(luò)中的服務(wù)中移去的意圖。為此,該技術(shù)使得關(guān)斷的路由器能夠在寬限期內(nèi)繼續(xù)經(jīng)由網(wǎng)絡(luò)轉(zhuǎn)發(fā)分組,即,路由器維持這些原始路由的有效性,從而使映射到這些路由的分組不被丟棄(至少在寬限期內(nèi))。寬限期還允許在最終從對等方的FIB中撤消關(guān)斷的路由器的路徑之前,將備份路徑傳播到每個對等方并投入服務(wù)。從而,寬限期使得網(wǎng)絡(luò)能夠在網(wǎng)絡(luò)重新收斂以使用替換備份路徑時,繼續(xù)將關(guān)斷的路由器用作下一跳。
根據(jù)本發(fā)明,平滑關(guān)斷技術(shù)修改了BGP協(xié)議,以向在字段622中指定了錯誤代碼Cease的通知消息600提供新的子碼。圖7是圖示了這些子碼700的表,其包括管理平滑路由器關(guān)斷(例如子碼9)和管理平滑路由器重置(例如子碼10)子碼符號名9 管理平滑路由器關(guān)斷10 管理平滑路由器重置關(guān)斷的路由器指示其能夠通過在修改后的通知消息中插入新型子碼700之一來繼續(xù)在寬限期內(nèi)進(jìn)行轉(zhuǎn)發(fā)。每個具有平滑關(guān)斷/重置子碼的修改后的通知消息(下文中稱為“平滑關(guān)斷通知消息”)還包括消息600的數(shù)據(jù)字段626中的FIB保留時間。BGP路由器將字段626中的FIB保留時間設(shè)為單位為秒的代表寬限期(即,最小時間長度)的值,在該寬限期內(nèi)關(guān)斷的路由器在發(fā)送了平滑關(guān)斷通知消息后將保持其轉(zhuǎn)發(fā)狀態(tài)。在圖示實施例中,五(5)秒的默認(rèn)值被提供作為寬限期。
圖8是圖示了與根據(jù)本發(fā)明的平滑關(guān)斷技術(shù)有關(guān)的步驟序列的流程圖。平滑關(guān)斷技術(shù)在圖中被將要經(jīng)歷受控關(guān)斷的BGP路由器采用。序列開始于步驟800,并且進(jìn)行到步驟802,在步驟802,關(guān)斷的路由器創(chuàng)建指定了平滑關(guān)斷/重置代碼和FIB保留時間的平滑關(guān)斷通知消息。在步驟804中,平滑關(guān)斷通知消息被發(fā)送到關(guān)斷的路由器的所有對等方,從而宣告關(guān)斷的路由器意圖被從網(wǎng)絡(luò)中的服務(wù)中移去。在步驟806中,關(guān)斷的路由器終止與其對等方的所有連接,這樣一來,隱含地撤消了在被終止連接上廣告的所有原始路由,包括那些為最佳路徑的路由。
在步驟810中,每個BGP對等方接收平滑關(guān)斷通知消息,并且在步驟812中,保留與被終止連接相關(guān)聯(lián)的被撤消路由,直到發(fā)生以下兩個事件中的任何一個(1)另一路由被選為最佳路徑(步驟814)或(2)在平滑關(guān)斷通知消息中指定的保留時間(寬限期)已經(jīng)過去(步驟816)。為了選擇哪一路由是最佳路徑(即第一事件),與平滑關(guān)斷通知消息相關(guān)聯(lián)的路由必須被視為比除了其(自身)與另一平滑關(guān)斷通知消息相關(guān)聯(lián)的替換路徑以外的任何替換路徑還要差。這種路由被稱為“最后采用”路由,這是因為其只用在沒有替換路由可用的情況下。注意,如果兩個路由都與已接收到平滑關(guān)斷通知消息的連接/會話相關(guān)聯(lián),則典型的BGP加時(tie-breaking)應(yīng)用在其間。
在步驟818中,所保留的路由被對等方從服務(wù)(即從FIB330)中移去。具體而言,在第一事件(另一最佳路徑的選擇)發(fā)生后,對等方可以從其FIB中移去保留的路由,而在第二事件(經(jīng)過了保留時間)發(fā)生后,對等方必須從其FIB中移去保留的路由。另一方面,平滑關(guān)斷通知消息根據(jù)傳統(tǒng)BGP協(xié)議來加以處理。其效果是,如果在步驟820中接收到平滑關(guān)斷通知消息的BGP對等方為被撤消路由中的任何一個保存?zhèn)浞萋酚?,則該備份路由被選為最佳路徑,并且在步驟822中經(jīng)由網(wǎng)絡(luò)進(jìn)行廣告,作為BGP協(xié)議操作的一部分。隨后序列結(jié)束于步驟824。
本發(fā)明的技術(shù)還提供了將原始路由標(biāo)記為最后采用路由的想法,這樣一來,觸發(fā)網(wǎng)絡(luò)中的其他路由器宣告?zhèn)浞萋酚刹⒅匦率諗浚煌耆废悸酚?。例如返回參考圖1,路由器X只知道最佳路徑(對于該最佳路徑,路由器Y是下一跳)。根據(jù)本發(fā)明,當(dāng)路由器Y中的BGP500被平滑地關(guān)斷/重置時,路由器X和Z從新的平滑關(guān)斷通知消息中接收適當(dāng)?shù)耐ㄖ?。因此,路由器X和Z將去往目的地D的當(dāng)前路由標(biāo)記為“最后采用的”。隨后路由器Z計算到目的地D的新路徑(排除了路由器Y作為可能的下一跳),并且將新路徑廣告到路由器X。路由器X開始使用由路由器Z廣播的新路徑。
有利地,本發(fā)明的平滑關(guān)斷技術(shù)能夠以這樣的方式實現(xiàn)路由器的受控關(guān)斷,該方式減少了網(wǎng)絡(luò)中用戶流量的丟失,而不是簡單停止路由器并使網(wǎng)絡(luò)重新收斂。另外,本發(fā)明的技術(shù)并不對網(wǎng)絡(luò)的擴(kuò)展屬性的改變有不利影響。即,本發(fā)明并不要求網(wǎng)絡(luò)中的路由器存儲附加路徑,從而僅在最佳路徑被撤消的情況下用作可能的備份路徑。而且,在對于每個前綴包含多個路由的任何網(wǎng)絡(luò)中,這里描述的本發(fā)明的技術(shù)導(dǎo)致其行為與傳統(tǒng)的BGP協(xié)議的操作不同。
盡管示出并描述了平滑關(guān)斷技術(shù)的實施例(該技術(shù)修改了路由協(xié)議,以允許諸如路由器之類的中間節(jié)點向其對等方宣告其意圖平滑地關(guān)斷并從網(wǎng)絡(luò)中的服務(wù)移去),但是應(yīng)當(dāng)理解,在本發(fā)明的精神和范圍內(nèi)也可以進(jìn)行各種其他改動和修改。例如,這里提供的技術(shù)是后向兼容的,這樣,不要求特殊的能力廣告或其他部署考慮。即,如果沒有實現(xiàn)新技術(shù)的路由器接收到平滑關(guān)斷通知消息,則其僅僅將該消息視作任何其他傳統(tǒng)的BGP通知消息,并且移去與終止會話相關(guān)聯(lián)的被撤消路由。盡管路由器無法獲得本發(fā)明的技術(shù)所提供的任何優(yōu)點,但是其也不會比傳統(tǒng)意義上更差。
前述描述針對本發(fā)明的特定實施例。然而,應(yīng)當(dāng)清楚,對所述實施例可以進(jìn)行其他變化和修改,而獲得其優(yōu)點中的某些或全部。例如,可以明確地預(yù)期,本發(fā)明的教導(dǎo)(包括這里描述的各種處理)可以實現(xiàn)為軟件(包括具有在計算機上運行的程序指令的計算機可讀介質(zhì))、硬件、固件或其組合。另外,應(yīng)當(dāng)理解,這里描述的數(shù)據(jù)結(jié)構(gòu)可以包括附加信息,而仍然在本發(fā)明的范圍內(nèi)。此外,本發(fā)明的技術(shù)可以一般地應(yīng)用于距離向量路由協(xié)議,如IGRP、EIGRP或RIP。因此,該描述僅被認(rèn)為是示例性的,而不應(yīng)當(dāng)用來限制本發(fā)明的范圍。因此,所附權(quán)利要求的目的是覆蓋落在本發(fā)明精神和范圍內(nèi)的所有這些變化和修改。
權(quán)利要求
1.一種被配置用于允許從網(wǎng)絡(luò)中的服務(wù)中平滑地移走中間節(jié)點的系統(tǒng),所述系統(tǒng)包括所述中間節(jié)點的處理元件;由所述處理元件執(zhí)行用來功能性地組織所述中間節(jié)點并調(diào)用支持所述節(jié)點上運行的路由協(xié)議的操作的操作系統(tǒng);以及由所述處理元件創(chuàng)建的平滑關(guān)斷通知消息,所述平滑關(guān)斷通知消息被發(fā)送到路由協(xié)議對等方,以宣告所述中間節(jié)點希望被從服務(wù)中平滑地移走的意圖,所述平滑關(guān)斷通知消息還指示所述中間節(jié)點能夠在寬限期內(nèi)繼續(xù)經(jīng)由所述網(wǎng)絡(luò)轉(zhuǎn)發(fā)分組,從而允許在最終撤消由所述中間節(jié)點廣告的路由之前將備份路徑傳播到每個對等方并投入服務(wù)。
2.如權(quán)利要求1所述的系統(tǒng),其中所述平滑關(guān)斷通知消息包括具有管理平滑關(guān)斷子碼和管理平滑重置子碼之一的Cease錯誤代碼。
3.如權(quán)利要求2所述的系統(tǒng),其中所述平滑關(guān)斷通知消息還包括代表所述寬限期的保留時間值,在所述寬限期內(nèi),所述中間節(jié)點在發(fā)送了所述平滑關(guān)斷通知消息后保持轉(zhuǎn)發(fā)狀態(tài)。
4.如權(quán)利要求4所述的系統(tǒng),其中所述路由協(xié)議是邊界網(wǎng)關(guān)協(xié)議(BGP)。
5.如權(quán)利要求5所述的系統(tǒng),其中所述中間節(jié)點是BGP路由器。
6.一種用于允許從網(wǎng)絡(luò)中的服務(wù)中平滑地移走路由器的方法,所述方法包括以下步驟修改在所述路由器上運行的路由協(xié)議,以使得所述路由器能夠向其網(wǎng)絡(luò)中的對等方宣告其希望被從服務(wù)中平滑地移走的意圖;以及在寬限期內(nèi)經(jīng)由所述網(wǎng)絡(luò)從所述路由器轉(zhuǎn)發(fā)分組,從而允許在最終撤消由所述路由器廣告的路由之前,將備份路徑傳播到每個對等方并投入服務(wù)。
7.如權(quán)利要求6所述的方法,其中所述路由協(xié)議是邊界網(wǎng)關(guān)協(xié)議(BGP),并且所述修改步驟包括以下步驟將管理平滑路由器關(guān)斷子碼和管理平滑路由器重置子碼之一插入到具有錯誤代碼Cease的BGP平滑關(guān)斷通知消息中。
8.如權(quán)利要求7所述的方法,還包括以下步驟在所述消息的數(shù)據(jù)字段中設(shè)置轉(zhuǎn)發(fā)信息庫(FIB)保留時間值,所述FIB保留時間值代表所述寬限期,在所述寬限期內(nèi),所述路由器在發(fā)送了所述平滑關(guān)斷通知消息后保持其轉(zhuǎn)發(fā)狀態(tài)。
9.如權(quán)利要求8所述的方法,還包括以下步驟將所述平滑關(guān)斷通知消息從所述路由器發(fā)送到其對等方;以及終止所述路由器和所述對等方之間的所有連接,從而隱含地在所述路由器上從服務(wù)中撤消在被終止的連接上廣告的所有原始路由。
10.如權(quán)利要求9所述的方法,還包括以下步驟在所述對等方處接收所述平滑關(guān)斷通知消息;以及在所述對等方處保留在被終止的連接上廣告的被撤消的路由,直到發(fā)生選出另一路由作為最佳路徑和經(jīng)過了所述寬限期這兩個事件之一。
11.如權(quán)利要求10所述的方法,還包括以下步驟響應(yīng)于選出所述最佳路徑和經(jīng)過了所述寬限期這兩個事件之一,從服務(wù)中移走保留的路由。
12.如權(quán)利要求11所述的方法,其中所述移走步驟包括從每個對等方的FIB中移走保留的路由的步驟。
13.如權(quán)利要求11所述的方法,還包括以下步驟如果對等方保留了被撤消的路由中的任何一個的備份路由,則選擇所述備份路由作為所述最佳路徑;以及在所述網(wǎng)絡(luò)上廣告選出的最佳路徑。
14.如權(quán)利要求10所述的方法,還包括以下步驟將所述原始路由標(biāo)記為最后采用路由;以及觸發(fā)所述網(wǎng)絡(luò)宣告?zhèn)浞萋酚刹⒅匦率諗浚煌耆废鲈悸酚伞?br>
15.一種適于允許從網(wǎng)絡(luò)中的服務(wù)中平滑地移走路由器的裝置,所述裝置包括用于修改所述路由器上運行的路由協(xié)議,以使得所述路由器能夠向其網(wǎng)絡(luò)中的對等方宣告其希望被從服務(wù)中平滑地移走的意圖的裝置;以及用于在寬限期內(nèi)經(jīng)由所述網(wǎng)絡(luò)從所述路由器轉(zhuǎn)發(fā)分組,從而允許在最終撤消由所述路由器廣告的路由之前將備份路徑傳播到每個對等方并投入服務(wù)的裝置。
16.如權(quán)利要求15所述的裝置,其中所述路由協(xié)議是邊界網(wǎng)關(guān)協(xié)議(BGP),并且所述用于修改的裝置包括用于將管理平滑路由器關(guān)斷子碼和管理平滑路由器重置子碼之一插入到具有錯誤代碼Cease的BGP平滑關(guān)斷通知消息中的裝置。
17.如權(quán)利要求16所述的裝置,還包括用于在所述消息的數(shù)據(jù)字段中設(shè)置轉(zhuǎn)發(fā)信息庫(FIB)保留時間值的裝置,所述FIB保留時間值代表寬限期,在所述寬限期內(nèi),所述路由器在發(fā)送了所述平滑關(guān)斷通知消息后保持其轉(zhuǎn)發(fā)狀態(tài)。
18.一種包含可執(zhí)行的程序指令的計算機可讀介質(zhì),所述程序指令用于允許從網(wǎng)絡(luò)中的服務(wù)中平滑地移走路由器,所述可執(zhí)行的程序指令包括用于執(zhí)行以下步驟的程序指令修改所述路由器上運行的路由協(xié)議,以使得所述路由器能夠向其網(wǎng)絡(luò)中的對等方宣告其希望被從服務(wù)中平滑地移走的意圖;以及在寬限期內(nèi)經(jīng)由所述網(wǎng)絡(luò)從所述路由器轉(zhuǎn)發(fā)分組,從而允許在最終撤消由所述路由器廣告的路由之前將備份路徑傳播到每個對等方并投入服務(wù)。
19.如權(quán)利要求18所述的計算機可讀介質(zhì),其中所述路由協(xié)議是邊界網(wǎng)關(guān)協(xié)議(BGP),并且所述用于修改的程序指令包括用于將管理平滑路由器關(guān)斷子碼和管理平滑路由器重置子碼之一插入到具有錯誤代碼Cease的BGP平滑關(guān)斷通知消息中的一個或多個程序指令。
20.如權(quán)利要求19所述的計算機可讀介質(zhì),還包括用于在所述消息的數(shù)據(jù)字段中設(shè)置轉(zhuǎn)發(fā)信息庫(FIB)保留時間值的一個或多個程序指令,所述FIB保留時間值代表寬限期,在所述寬限期內(nèi),所述路由器在發(fā)送了所述平滑關(guān)斷通知消息后保持其轉(zhuǎn)發(fā)狀態(tài)。
全文摘要
一種平滑關(guān)斷技術(shù)修改了路由協(xié)議,以允許諸如路由器之類的中間節(jié)點向其對等路由器(對等方)宣告其希望被平滑地關(guān)斷并從網(wǎng)絡(luò)中的服務(wù)中移走的意圖。通過宣告其希望被從從服務(wù)中移走的意圖,關(guān)斷的路由器關(guān)閉(終止)了其與對等方的所有連接,并且在這些連接上廣告的所有原始路由被從服務(wù)中移走(撤消)。根據(jù)本發(fā)明的技術(shù),關(guān)斷的路由器可以在“寬限”時期內(nèi)繼續(xù)經(jīng)由網(wǎng)絡(luò)轉(zhuǎn)發(fā)分組,即,路由器維護(hù)這些原始路由的有效性,從而使映射到這些路由的分組不被丟棄(至少在寬限期內(nèi))。寬限期還允許在最終從對等方的轉(zhuǎn)發(fā)信息庫中撤消關(guān)斷的路由器的路徑之前,將備份路徑傳播到每個對等方并投入服務(wù)。從而,寬限期能夠使網(wǎng)絡(luò)在網(wǎng)絡(luò)重新收斂以使用替換的備份路徑時繼續(xù)將關(guān)斷的路由器用作下一跳。
文檔編號H04L12/56GK1997986SQ200580004451
公開日2007年7月11日 申請日期2005年2月7日 優(yōu)先權(quán)日2004年2月10日
發(fā)明者約翰·伽萊恩·斯卡德, 馬薩拉杰·斯瓦巴蘭, 戴維·D·沃德 申請人:思科技術(shù)公司