專利名稱:Constructing repair paths around multiple non-available links in a data ...的制作方法
技術(shù)領(lǐng)域:
本公開總地涉及數(shù)據(jù)通信網(wǎng)絡(luò)。本發(fā)明具體而言涉及在數(shù)據(jù)通信網(wǎng)絡(luò)中構(gòu)造繞過 多條不可用鏈路的修復(fù)路徑(impair path)。
背景技術(shù):
本部分中描述的方案可以被實行,但不一定是先前已經(jīng)想到過或?qū)嵭羞^的方案。 因此,除非這里另有指明,否則本部分中描述的方案并不是本申請中權(quán)利要求的現(xiàn)有技術(shù), 并且不因為被包括在本部分中就被承認是現(xiàn)有技術(shù)。在諸如因特網(wǎng)之類的計算機網(wǎng)絡(luò)中,數(shù)據(jù)的分組根據(jù)各種路由協(xié)議之一,經(jīng)由包 括鏈路(諸如電話或光線路之類的通信路徑)和節(jié)點(例如,沿著連接到它的多條鏈路中 的一條或多條引導(dǎo)分組的路由器)在內(nèi)的元件的網(wǎng)絡(luò)被從源發(fā)送到目的地。一類路由協(xié)議是鏈路狀態(tài)協(xié)議。鏈路狀態(tài)協(xié)議依賴存在于每個節(jié)點處的路由算 法。網(wǎng)絡(luò)上的每個節(jié)點在整個網(wǎng)絡(luò)中通告去往鄰居節(jié)點的鏈路,并且提供與每條鏈路相關(guān) 聯(lián)的代價,該代價可以基于諸如鏈路帶寬或延遲之類的任何適當度量并且通常被表達為整 數(shù)值。基于以鏈路狀態(tài)分組(LSP)的形式通告的信息,每個節(jié)點構(gòu)造可用于構(gòu)造整個網(wǎng) 絡(luò)拓撲的地圖的鏈路狀態(tài)數(shù)據(jù)庫(LSDB),并且一般根據(jù)該數(shù)據(jù)庫基于諸如最短路徑優(yōu)先 (SPF)算法之類的適當算法來構(gòu)造去往每個可用節(jié)點的單個最優(yōu)路由。結(jié)果,構(gòu)造出了“生 成樹”(SPT),其以該節(jié)點為根,并且示出了去往每個可用目的地節(jié)點的、包括中間節(jié)點的最 優(yōu)路徑。SPF的結(jié)果被存儲在路由信息庫(RIB)中,并且基于這些結(jié)果,轉(zhuǎn)發(fā)信息庫(FIB) 或轉(zhuǎn)發(fā)表被更新,以適當?shù)乜刂品纸M的轉(zhuǎn)發(fā)。當發(fā)生網(wǎng)絡(luò)變化時,表示該變化的LSP被與該 變化相鄰的每個節(jié)點通過網(wǎng)絡(luò)流播(flood),接收到LSP的每個節(jié)點將其發(fā)送到每個相鄰 節(jié)點。在正常的轉(zhuǎn)發(fā)中,每個節(jié)點在不考慮它從哪個節(jié)點接收到分組的情況下決定應(yīng)當 把該分組轉(zhuǎn)發(fā)到的下一節(jié)點。在一些情況下,這可能引起“環(huán)路”。尤其,這可能發(fā)生在數(shù) 據(jù)庫(以及相應(yīng)的轉(zhuǎn)發(fā)信息)在路由轉(zhuǎn)變期間臨時失同步時,即因為網(wǎng)絡(luò)中的變化,導(dǎo)致在 RIB或FIB中產(chǎn)生環(huán)路的新LSP被傳播的情況。只要環(huán)路仍存在,這就可能一直繼續(xù),但通 常分組將會具有最大跳數(shù),在此之后它將被丟棄。這種環(huán)路可能是兩個節(jié)點之間的直接環(huán) 路或者在一系列節(jié)點之間的間接環(huán)路。在一些網(wǎng)絡(luò)中,兩條或更多條鏈路在共享風險鏈路群組(SRLG)中邏輯上相關(guān)聯(lián)。 如果SRLG中的第一鏈路發(fā)生故障,那么在確定繞過第一故障鏈路的修復(fù)路徑時,SRLG中的 所有其他鏈路都被認為也發(fā)生故障。IP快速重路由(IPFRR)是因特網(wǎng)工程任務(wù)組的一項提案,即開發(fā)用于迅速構(gòu)造繞 過故障鏈路、故障節(jié)點或SRLG的可預(yù)測故障的修復(fù)路徑的技術(shù)。然而,已知的解決方案沒 有提供在多條鏈路不是已知SRLG的成員的情況下針對這些鏈路在大致相同時間的故障的 保護措施。這種情境中的一個特定問題在于針對鏈路之一的修復(fù)可能會嘗試穿過另一故 障。如果針對該故障的修復(fù)正好穿過第一鏈路,則導(dǎo)致了環(huán)回式修復(fù)路徑,其無法將分組遞送到其目的地。為了避免此問題,已知的不經(jīng)由(Iiot-Via)IPFRR方案明確地禁止對已經(jīng)修 復(fù)過的分組的修復(fù),以避免這種環(huán)路。然而,這種約束只減輕了由環(huán)路導(dǎo)致的間接損害,而 其本身不會使得分組可被遞送到其目的地。
在附圖中以示例方式而非限制方式示出了本發(fā)明,附圖中類似的標號指代相似的 元件,其中圖1示出了網(wǎng)絡(luò);圖2是構(gòu)造當數(shù)據(jù)通信網(wǎng)絡(luò)中的多條鏈路同時發(fā)生故障時使用的修復(fù)路徑的過 程的流程圖;圖3是當數(shù)據(jù)通信網(wǎng)絡(luò)中的多條鏈路同時發(fā)生故障時丟棄流量并觸發(fā)收斂的過 程的流程圖;圖4示出了具有相互環(huán)回的修復(fù)路徑的網(wǎng)絡(luò);圖5是示出用于構(gòu)造修復(fù)路徑的方法可在其上實現(xiàn)的計算機系統(tǒng)的框圖;圖6是示出根據(jù)已知方案的構(gòu)造修復(fù)路徑的方法的網(wǎng)絡(luò)的表示;圖7是示出根據(jù) 本方案的構(gòu)造修復(fù)路徑的方法的網(wǎng)絡(luò)的表示;圖8是示出根據(jù)本方案的構(gòu)造修復(fù)路徑的方 法的流程圖;圖9是根據(jù)本方案在LSP中攜帶的信息的示意性表示;圖10是示出在不可用 節(jié)點的鄰居節(jié)點處構(gòu)造的轉(zhuǎn)發(fā)表的示圖;圖11是示出在不可用節(jié)點的非鄰居節(jié)點處構(gòu)造 的轉(zhuǎn)發(fā)表的示圖;圖12是用于實現(xiàn)構(gòu)造修復(fù)路徑的方法的節(jié)點的生成樹圖;圖13是用于 實現(xiàn)構(gòu)造修復(fù)路徑的方法的節(jié)點的遞增改變的生成樹圖;圖14是示出利用遞增式SPF構(gòu)造 修復(fù)路徑的方法的流程圖;圖15是示出本方案的另外的實現(xiàn)方式的網(wǎng)絡(luò)的表示;圖16是 示出為MHP構(gòu)造修復(fù)路徑的方法的流程圖;圖17是示出本方案的另外的實現(xiàn)方式的網(wǎng)絡(luò)的 表示;圖18是示出本方案的另外的實現(xiàn)方式的網(wǎng)絡(luò)的表示。
具體實施例方式本發(fā)明描述了用于在數(shù)據(jù)通信網(wǎng)絡(luò)中構(gòu)造繞過不可用組件的修復(fù)路徑的方法和 設(shè)備。在以下描述中,出于說明目的,闡述了許多具體細節(jié)以幫助透徹理解本發(fā)明。然而, 對于本領(lǐng)域的技術(shù)人員來說很明顯的是,沒有這些具體細節(jié)也能實現(xiàn)本發(fā)明。在其他實例 中,公知的結(jié)構(gòu)和設(shè)備以框圖形式示出,以避免不必要地模糊本發(fā)明的主題。1.0 綜述前述“背景技術(shù)”中確定的需求以及從以下描述中將變得清楚的其他需求和目的 在本發(fā)明中得以實現(xiàn),本發(fā)明在一個方面中包括一種數(shù)據(jù)處理設(shè)備,其在網(wǎng)絡(luò)中可作為第 一網(wǎng)絡(luò)節(jié)點操作,并且包括一個或多個處理器;網(wǎng)絡(luò)接口,該網(wǎng)絡(luò)接口通信地耦合到所述 一個或多個處理器并且被配置為在網(wǎng)絡(luò)中一個或多個處理器之間傳輸一個或多個分組流; 存儲器,該存儲器耦合到處理器并且包括用于路由協(xié)議的轉(zhuǎn)發(fā)信息庫(FIB);邏輯,該邏輯 耦合到一個或多個處理器并且包括一個或多個存儲的指令序列,所述指令序列在被一個或 多個處理器執(zhí)行時使得一個或多個處理器執(zhí)行發(fā)起用于為第一網(wǎng)絡(luò)節(jié)點和第二網(wǎng)絡(luò)節(jié)點 之間的第一鏈路創(chuàng)建和存儲修復(fù)路徑信息的不經(jīng)由方案;創(chuàng)建和存儲不經(jīng)由修復(fù)路徑穿過 的其他網(wǎng)絡(luò)節(jié)點的列表;在FIB中創(chuàng)建和存儲條目,該條目標識網(wǎng)絡(luò)節(jié)點的修復(fù)地址并且
6使得(a)想去往所有通常通過第一鏈路可達的地址的分組被封裝到第二節(jié)點而不經(jīng)由第 一節(jié)點,(b)想去往通常通過第一鏈路可達的不經(jīng)由地址的分組被封裝到第二節(jié)點而不經(jīng) 由第一節(jié)點,并且(C)當通常通過第一鏈路可達的不經(jīng)由地址在列表中時丟棄想去往該不 經(jīng)由地址的分組;對于第一網(wǎng)絡(luò)節(jié)點的所有其他鏈路重復(fù)前述步驟。實施例能夠在數(shù)據(jù)通信網(wǎng)絡(luò)中構(gòu)造繞過多個不可用鏈路的一個或多個修復(fù)路徑。在一個實施例中,邏輯還包括在被執(zhí)行時使得一個或多個處理器執(zhí)行以下步驟的 指令根據(jù)FIB中的條目確定一對或多對相互不兼容的鏈路故障;利用路由協(xié)議,將一對或 多對作為次級共享風險鏈路群組來加以通告。在一個實施例中,邏輯還包括在被執(zhí)行時使得經(jīng)由相應(yīng)的修復(fù)路徑發(fā)送以修復(fù)地 址為目的地的網(wǎng)絡(luò)流量的指令。在一個實施例中,邏輯還包括在被執(zhí)行時使得執(zhí)行以下步驟的指令確定發(fā)生了 第一鏈路和第二鏈路的同時故障;確定針對第一鏈路的第一修復(fù)路徑穿過第二鏈路,并且 針對第二鏈路的第二修復(fù)路徑穿過第一鏈路;確定分組丟棄計數(shù)大于指定的閾值,針對重 收斂正在使用抑制步驟,并且正在使用無環(huán)路收斂機制;響應(yīng)于最終確定步驟,向?qū)崿F(xiàn)路由 協(xié)議的邏輯發(fā)送“放棄所有希望”通知,用于強制正常重收斂開始。在一個實施例中,邏輯還包括在被執(zhí)行時使得執(zhí)行以下步驟的指令從第二節(jié)點 接收具有路徑向量的第一不經(jīng)由地址的邊界網(wǎng)關(guān)協(xié)議(BGP)通告;為到所接收的不經(jīng)由地 址的修復(fù)路徑確定鏈路的列表;接收具有路徑向量的其他不經(jīng)由地址的一個或多個其他 BGP通告;基于路徑向量確定鏈路的修復(fù)路徑相互環(huán)回;在FIB中為第一不經(jīng)由地址插入丟 棄修復(fù)條目。在一個實施例中,第一網(wǎng)絡(luò)節(jié)點包括充當修復(fù)節(jié)點的鄰居節(jié)點,并且邏輯還包括 在被執(zhí)行時使得修復(fù)節(jié)點執(zhí)行以下步驟的指令針對第二網(wǎng)絡(luò)節(jié)點的目的地地址識別一修 復(fù)地址作為封裝修復(fù)端點,用于在第二網(wǎng)絡(luò)節(jié)點不可用的情況下對目的地地址的修復(fù)。在一個實施例中,網(wǎng)絡(luò)包括多歸屬前綴,并且邏輯還包括在被執(zhí)行時使得執(zhí)行以 下步驟的指令確定到多歸屬前綴的附接點是否能夠在沒有修復(fù)路徑的情況下到達,并且 如果是則將分組封裝到該附接點;并且如果到多歸屬前綴的附接點僅能經(jīng)由修復(fù)路徑到 達,則將流量封裝到相應(yīng)的修復(fù)地址。在一個實施例中,路由協(xié)議是鏈路狀態(tài)路由協(xié)議、MPLS路由協(xié)議或距離向量路由 協(xié)議中的任何一種。在一個實施例中,第一鏈路是共享風險鏈路群組。在一個實施例中,邏輯還包括在被執(zhí)行時使得在修復(fù)地址之一的前一節(jié)點處對分 組解封裝的指令。在一個實施例中,分組包括多播流量。在其他方面中,本發(fā)明包括被配置為實現(xiàn)這里描述的功能的由計算機實現(xiàn)的方法 和計算機可讀介質(zhì)。2. 0結(jié)構(gòu)和功能概述2. 1利用不經(jīng)由來修復(fù)多個無關(guān)鏈路故障在本專利文獻中提名的發(fā)明人所著的美國專利申請公布No. 2006/0187819中描 述了一種用于利用“不經(jīng)由”方案在數(shù)據(jù)通信網(wǎng)絡(luò)中構(gòu)造繞過不可用組件的修復(fù)路徑的 方法和設(shè)備。在公布No. 2006/0187819的不經(jīng)由方案中,除了分配給每個節(jié)點的標準地址之外,網(wǎng)絡(luò)中的每個接口還被分配以一額外的修復(fù)地址,該修復(fù)地址被稱為“不經(jīng)由地 址”(notvia address)。尋址到該不經(jīng)由地址的分組必須被遞送到具有該地址的路由器且 不經(jīng)由不經(jīng)由地址所暗示的組件;例如,不經(jīng)由被分配以該地址的接口上的鄰居路由器。為 了修復(fù)故障,修復(fù)節(jié)點封裝該分組去往故障的遠端的節(jié)點接口的不經(jīng)由地址。修復(fù)路徑上 的節(jié)點于是知道它們必須將分組遞送到哪個節(jié)點,以及必須避免哪個網(wǎng)絡(luò)組件。這里的描述假定已了解公布No 2006/0187819。尤其,本文獻描述了對公布 No. 2006/0187819的方案的某些改進,但不重復(fù)公布No. 2006/0187819中已經(jīng)知道的信息。 特此通過引用并入公布No. 2006/0187819的全部內(nèi)容,用于所有目的,就好像在這里完全 記載了 一樣。圖1是包括節(jié)點A、B、D、G、F、X、Y的假想網(wǎng)絡(luò)的示圖。出于圖示出清楚示例的目 的,在圖1中示出了七個節(jié)點,但這里的技術(shù)可應(yīng)用在具有任何大小的任何網(wǎng)絡(luò)中。每個節(jié) 點包括諸如路由器或交換機之類的計算元件。每個節(jié)點包括處理器、交換系統(tǒng)、存儲器和這 里針對圖5進一步描述的其他硬件元件。每個節(jié)點還包括所存儲的程序控制邏輯,該邏輯 的形式為能夠?qū)崿F(xiàn)這里描述的功能的固件、硬件、軟件或其組合。在一個實施例中,節(jié)點A、B、D、G、F、X、Y中的每一個包括在圖1中針對節(jié)點X示出 的功能單元。在一個實施例中,節(jié)點包括操作系統(tǒng)102,例如來自加州圣何塞的思科系統(tǒng)公 司的Cisco IOS Software.操作系統(tǒng)102可以容宿或控制諸如鏈路狀態(tài)協(xié)議邏輯104之類 的應(yīng)用,并且還可可選地容宿邊界控制協(xié)議(BGP)邏輯106,其中鏈路狀態(tài)協(xié)議邏輯104實 現(xiàn)鏈路狀態(tài)路由協(xié)議,邊界控制協(xié)議邏輯106實現(xiàn)BGP,例如因特網(wǎng)工程任務(wù)組(IETF)請求 注釋(RFC) 1771和相關(guān)RFC中定義的BGPv4。在一個實施例中,節(jié)點還包括多故障鏈路修 復(fù)路徑邏輯108,其包括能夠?qū)崿F(xiàn)這里針對圖2、圖3描述的功能以及在這里其他部分中描 述的功能的固件、硬件、軟件或其組合。在一個實施例中,多故障鏈路修復(fù)路徑邏輯108可 被集成到鏈路狀態(tài)協(xié)議邏輯104或操作系統(tǒng)102中。這里描述的某些功能的一些方面可在 BGP邏輯106中實現(xiàn)。另外,圖1所示的節(jié)點X的所有元件都可集成到軟件、固件或其組合 的單個單元中,圖1中示出分開的塊只是為了圖示出清楚的示例。圖1中的鏈路在這里是按照與節(jié)點的連通性來描述的;例如,鏈路A-B耦合到節(jié)點 A和節(jié)點B。鏈路A-B和鏈路X-Y被保護,并且所有修復(fù)是根據(jù)公布No. 2006/0187819的技 術(shù)作為不經(jīng)由修復(fù)來執(zhí)行的。無環(huán)路備用(loop free alternate,LFA)或下游路由也是可 能的,并且在這里的其他部分中論述。在圖1的情境中,當兩條鏈路同時發(fā)生故障時,可能發(fā)生三種可能的修復(fù)路徑場
旦
足1.針對鏈路A-B的修復(fù)路徑不穿過鏈路X-Y,并且針對鏈路X-Y的修復(fù)路徑不穿 過鏈路A-B。這種情況不會導(dǎo)致環(huán)回或分組丟失。2.針對A-B的修復(fù)路徑穿過X-Y,但是針對X-Y的修復(fù)路徑不穿過A-B。在傳統(tǒng) 的不經(jīng)由修復(fù)路徑方案中,在操作中,針對發(fā)生故障的鏈路A-B的被修復(fù)分組在到達發(fā)生 故障的鏈路X-Y時將被丟棄,因為在公布No. 2006/0187819的方案中對被修復(fù)分組的修復(fù) 是被禁止的。然而,如果此分組在到達X-Y時被允許被修復(fù),則不會造成損害,除了有可能 發(fā)生雙重封裝以外,雙重封裝將會導(dǎo)致被修復(fù)分組超過路由協(xié)議的可允許最大傳輸單位 (MTU)。超過MTU的影響在這里后續(xù)部分中論述。
8
3.針對A-B的修復(fù)穿過X-Y,并且針對X_Y的修復(fù)穿過Α_Β。在此情況下,無限制 的修復(fù)將會導(dǎo)致分組在網(wǎng)絡(luò)中不斷環(huán)回,同時封裝水平越來越高。這種行為是不合需要的 并且對于網(wǎng)絡(luò)是可能有害的。在一個實施例中,節(jié)點中的多故障鏈路修復(fù)路徑邏輯108被配置為識別出這些情 況中的哪種情況存在,并且以實現(xiàn)環(huán)路避免的方式來執(zhí)行不經(jīng)由修復(fù)。出于圖示出清楚示 例的目的,圖1僅示出了節(jié)點Α、B、D、G、Y、X和F,但圖1的假想網(wǎng)絡(luò)可包括能夠構(gòu)造出繞 過A-B和X-Y的相互鏈路故障的有效修復(fù)路徑的許多其他節(jié)點和鏈路。圖2是構(gòu)造當數(shù)據(jù)通信網(wǎng)絡(luò)中的多條鏈路同時發(fā)生故障時使用的修復(fù)路徑的過 程的流程圖。在步驟202中,第一網(wǎng)絡(luò)節(jié)點利用不經(jīng)由方案,發(fā)起對針對第一網(wǎng)絡(luò)節(jié)點和 第二網(wǎng)絡(luò)節(jié)點之間的第一鏈路的修復(fù)路徑信息的創(chuàng)建和存儲。例如,節(jié)點A利用公布 No. 2006/0187819的方案,為鏈路A-B預(yù)先計算不經(jīng)由修復(fù)路徑。當節(jié)點A在為A-B計算不 經(jīng)由修復(fù)路徑時(例如用于被尋址到Ba的流量的路徑,其被稱為“B不經(jīng)由A”),節(jié)點A知 曉此路徑穿過的節(jié)點的列表。該節(jié)點列表可在SPF過程期間被記錄,并且與每條轉(zhuǎn)發(fā)鏈路 相關(guān)聯(lián)的不經(jīng)由地址可以被確定。再次參考圖1,如果路徑是A、F、X、Y、G、B,則不經(jīng)由地址 的列表為Fa、Xf、Yx、Gy、Bg。在步驟204中,創(chuàng)建并存儲不經(jīng)由修復(fù)路徑穿過的節(jié)點的列表。步驟204中的存 儲可包括在SPF過程期間在存儲器中的臨時存儲。在公布No. 2006/0187819中記載的標準不經(jīng)由操作下,A填充其轉(zhuǎn)發(fā)信息庫 (FIB),使得當A-B發(fā)生故障時所有通常經(jīng)由A-B可達的地址都被封裝到Ba,但去往不經(jīng)由 地址的所有流量都被丟棄。根據(jù)一個實施例中,針對通常通過A-B可達的不經(jīng)由地址的所 有流量也被封裝到Ba,除非該不經(jīng)由地址是先前被識別為在去往Ba的路徑上的地址之一, 例如Yx,在此情況下分組被丟棄。相應(yīng)地,如步驟206、208和212中所示,節(jié)點在其轉(zhuǎn)發(fā)信息庫(FIB)中創(chuàng)建和存儲 條目,這些條目使得想去往所有通常通過第一鏈路可達的地址的分組被封裝到第二節(jié)點而 不經(jīng)由第一節(jié)點(步驟206)。節(jié)點還創(chuàng)建和存儲FIB條目,這些條目使得想去往通常通過 第一鏈路可達的不經(jīng)由地址的分組被封裝到第二節(jié)點而不經(jīng)由第一節(jié)點(步驟208)。在步 驟212,節(jié)點還創(chuàng)建和存儲FIB條目,這些條目使得當通常通過第一鏈路可達的不經(jīng)由地址 在步驟204處創(chuàng)建的列表中時,丟棄想去往該不經(jīng)由地址的分組。前述步驟對于修復(fù)節(jié)點 的所有其他鏈路重復(fù)。此方案允許了在以上指出的所有三種情況中執(zhí)行修復(fù),同時防止了在第三種情況 中發(fā)生環(huán)路。在一個實施例中,所有需要的FIB條目都被預(yù)先計算,因此該方案不需要任何 詳細的分組檢查。除了修復(fù)節(jié)點之外的節(jié)點只是簡單地利用傳統(tǒng)的路由協(xié)議操作基于FIB 條目來轉(zhuǎn)發(fā)分組;不需要特殊的修復(fù)標記、修復(fù)水平指示符、計數(shù)器或其他機制。本方案允許了良性修復(fù)共存,但在一些情況下該方案導(dǎo)致多次封裝。不會出現(xiàn)重 大的性能問題,因為兩次封裝或兩次解封裝通常是在不同節(jié)點處執(zhí)行的。唯一的潛在問題 是由于分組大小增大而導(dǎo)致超過網(wǎng)絡(luò)中所允許的最大傳輸單位(MTU),其中分組大小增大 是由多次封裝引起的。然而,在第三種情況中,雖然潛在的環(huán)回流量被丟棄,但是該流量不被修復(fù)。如果
9在重收斂之前應(yīng)用抑制(hold-down)步驟,以防鏈路故障只是短暫的小毛病,并且如果無 環(huán)路收斂機制(例如有序FIB收斂邏輯)進一步延遲收斂,則流量將被丟棄較長的一段時 間。在一個實施例中,作為對這里在第2. 2節(jié)中描述的方案的附加或替換,響應(yīng)于不經(jīng)由分 組中生存時間值的期滿,采取特殊的動作。例如,在到此為止描述的環(huán)回場景中,在沒有丟 棄環(huán)回的不經(jīng)由分組的特殊步驟的情況下,環(huán)回的不經(jīng)由分組在其未被及時遞送到目的地 節(jié)點時將最終導(dǎo)致不經(jīng)由分組中的生存時間值的期滿。在一個實施例中,在這些情況下,采 取“放棄所有希望”(AAH)動作(或者在路由協(xié)議邏輯內(nèi)發(fā)送消息),以立即調(diào)用正常的重 收斂。在這些情形下,加速發(fā)出報告故障的LSP是不夠的,因為這可能被有序FIB收斂邏輯 視為許可的同時故障;而是必須觸發(fā)AAH消息以引起正常收斂。有序FIB AAH動作可在不 經(jīng)由地址上的分組丟棄計數(shù)已被遞增時被觸發(fā)。此方案在圖3中示出。圖3是當數(shù)據(jù)通信網(wǎng)絡(luò)中的多條鏈路同時發(fā)生故障時丟棄 流量并觸發(fā)收斂的過程的流程圖。在步驟304中,節(jié)點通過如上文中針對圖2所述預(yù)先計算 修復(fù)路徑,已確定了針對第一鏈路的修復(fù)路徑穿過第二鏈路,并且針對第二鏈路的修復(fù)路 徑穿過第一鏈路。在步驟305中,第一鏈路和第二鏈路的同時故障發(fā)生。這是上述的第三 場景。結(jié)果,修復(fù)路徑不可使用,并且想去往通過這些鏈路可達的地址的某些流量被丟棄, 直到重收斂發(fā)生為止。在一個實施例中,在步驟307中,節(jié)點測試在該節(jié)點上維護的分組丟棄計數(shù)是否 已超過指定的閾值。這種測試被執(zhí)行來迅速地檢測出實際流動的流量是否正導(dǎo)致不可接受 的分組丟失并因此可能是在相互環(huán)回的修復(fù)路徑上的,并且通過調(diào)用AAH方案,一旦可能 就引發(fā)補救動作。這種替換方案具有這樣的益處,即在穿過256跳所需的時間加上“收回” 修復(fù)以便任何其他節(jié)點可以打破將來的環(huán)路所需的時間內(nèi)解決環(huán)路。分組丟棄計數(shù)傳統(tǒng)上是由節(jié)點的操作系統(tǒng)102維護的,并且可通過節(jié)點內(nèi)的API 調(diào)用或數(shù)據(jù)庫查找來訪問。如果已超過閾值,則節(jié)點在步驟308中檢查是否在使用抑制步 驟。步驟308可以在這樣一個邏輯中實現(xiàn),該邏輯不實際執(zhí)行測試,而只是進行分支,因為 該邏輯的作者知道已經(jīng)實現(xiàn)了抑制邏輯。如果正在使用抑制步驟,那么在步驟310,邏輯測 試在節(jié)點處是否正在使用無環(huán)路收斂過程。如果是,則觸發(fā)“放棄所有希望”通知,以停止 抑制時段并且強制正常重收斂。作為收斂的結(jié)果,可以發(fā)現(xiàn)使得流量可被轉(zhuǎn)發(fā)而不是被丟 棄的新網(wǎng)絡(luò)路徑。如果步驟307、308、310的測試中的任何一個結(jié)果為否定,處理則在步驟 314繼續(xù)?;蛘?,邏輯可以等待,直到描述變化的LSP被正常發(fā)出為止,例如,當X宣告X-Y的 故障時。當已預(yù)先計算出X-Y故障與其自己的修復(fù)相互不兼容的修復(fù)節(jié)點接收到此LSP時, 則該修復(fù)節(jié)點可以發(fā)出AAH。這種替換方案具有未克服抑制延遲的缺點。然而,該替換方案 不需要數(shù)據(jù)驅(qū)動的操作,并且仍具有所需要的放棄有序FIB收斂過程的效果,而該過程的 延遲可能是較長的。2. 2.次級共享風險鏈路群組為了應(yīng)對第三場景,在替換實施例中,計算替換的類SRLG修復(fù)路徑,而不是簡單 地丟棄違反的分組。在這種替換方案中,相互不兼容的故障被識別并且作為次級SRLG被通 告。這種鏈路隨后在為受影響的不經(jīng)由地址計算修復(fù)路徑時被一起視為故障(但對于正常 地址不是如此)。
再次參考圖2,在替換方案中,在步驟214,在執(zhí)行步驟202、204、206、208之后,節(jié) 點確定一對或多對相互不兼容的鏈路故障,排除針對具有兩條鏈路的節(jié)點的那些。在步驟 216中,這些鏈路對作為次級共享風險鏈路群組被通告。這實際上是在確定針對受影響的不 經(jīng)由地址的修復(fù)路徑時將這些鏈路對一起從考慮中排除。圖2的一般方案,識別哪些不經(jīng)由地址應(yīng)當被丟棄的步驟202至212作為相互不 兼容的故障的指標而言是保守的,因為被丟棄的地址中的一些可能永遠不會被用于修復(fù)。 雖然此問題在圖1的示例中不會出現(xiàn),但是步驟214-216的方案可被用于其他場景,并且是 保守的,而且只在修復(fù)路徑相互不兼容時才調(diào)用SRLG計算。例如,當節(jié)點A已識別出針對Yx的正常路徑會通過A-B,從而Yx分組應(yīng)當被丟棄 時,節(jié)點A通過運行以X為根并且去除了 X-Y的SPF算法來執(zhí)行進一步檢查,以確定A-B是 否確實是在X的針對Yx的修復(fù)路徑上。A-B可能不在該修復(fù)路徑上,即使針對Yx的分組將 會穿過A-B,因為為Yx計算了完整的匯集樹。在一個實施例中,進一步檢查計算看起來是hk階的,其中h是修復(fù)路徑的平均跳 長度,k是路由器的鄰居的平均數(shù)目,但是可以引入某些優(yōu)化。當A在計算一組修復(fù)路徑時, A為其所有k個鄰居計算修復(fù)路徑。對于每個鄰居,A確定被每個修復(fù)路徑穿過的節(jié)點對的 列表。節(jié)點對的每個列表可能具有一個或多個共同的節(jié)點對,因此需要調(diào)查的鏈路故障的 實際數(shù)目是節(jié)點對的列表的并集。節(jié)點A隨后運行以每個對的第一節(jié)點為根的SPF-第一 節(jié)點是根,因為配對是在表示路徑的方向的情況下被排序的_其中去往第二節(jié)點的鏈路被 去除。此SPF雖然不是遞增式的,但是一旦到達不經(jīng)由地址就可以被終止。例如,當運行以X為根、且去除了鏈路X-Y的SPF時,可以在到達Yx時終止SPF,并 且所得到的路徑被放入PATHS中;SPF算法的一個基本屬性是,一旦某一節(jié)點被放入PATHS 中,到它的最短路徑就已被找到。一旦路徑已被找到,該路徑就被檢查以確定它是否穿過A 的任何鏈路。因為節(jié)點對XY可能存在于A的不止一條鏈路的列表中,從而節(jié)點對XY位于 不止一條修復(fù)路徑上,所以必須識別出正確的列表和具有相互環(huán)回的修復(fù)路徑的鏈路。所 識別出的A的鏈路隨后被A作為與鏈路X配對的次級SRLG通告。因為節(jié)點X也將運行相 同的算法,所以節(jié)點X將識別出XY與AB配對并且將如此通告它。在一個實施例中,可以執(zhí)行交叉檢查以驗證計算的準確性。列表中的對的排序是 很重要的。例如,鏈路XY和鏈路YX被分開考慮。當且僅當修復(fù)相互不兼容時,鏈路的對才被作為次級SRLG通告。所有節(jié)點隨 后利用額外的不經(jīng)由地址Ba| (x-y)來計算繞過兩個故障的修復(fù)路徑,其中不經(jīng)由地址 Ba I (x-y)的含義是B不經(jīng)由A或鏈路X-Y。大多數(shù)相互環(huán)回的修復(fù)路徑是由僅具有兩條鏈路的節(jié)點或者網(wǎng)絡(luò)的只是雙向連 接的部分導(dǎo)致的。在這些情況下,修復(fù)很明顯是不可能的;兩條鏈路的故障分割了網(wǎng)絡(luò)。在 一個實施例中,這種情況被識別,以阻止對次級SRLG信息的無用通告。在一個實施例中,識 別是通過檢測到對次級SRLG的需要的節(jié)點首先運行去除了兩條鏈路的不經(jīng)由計算來執(zhí)行 的。如果此過程沒有產(chǎn)生路徑,則網(wǎng)絡(luò)將被這種故障所分割,因此不需要通告,也不進行通
生 I=I O因此,在這里的方案中,每個節(jié)點執(zhí)行少量的額外計算并隨后可能通告某些次級 SRLG信息,這隨后又使得其他節(jié)點基于該信息重新計算其修復(fù)路徑。一種替換方案是所有
11節(jié)點代表其他節(jié)點執(zhí)行計算。此方案是可能的,因為執(zhí)行鏈路狀態(tài)協(xié)議的節(jié)點能夠訪問路 由域的相關(guān)流播范圍內(nèi)的全部拓撲信息。在此替換方案中,不需要額外的流播或“兩階段”計算。在替換實施例中,這里的SRLG方案還可用于在多個并發(fā)鏈路故障導(dǎo)致多向環(huán)路 的網(wǎng)絡(luò)拓撲中確定修復(fù)路徑。圖4示出了多個并發(fā)鏈路故障導(dǎo)致多向環(huán)路的網(wǎng)絡(luò)拓撲。網(wǎng) 絡(luò)包括具有鏈路 A-B、A-E、B-G、G-F、G-Y、X-Y、X-F、X-C 和 C-Y 的節(jié)點 A、B、F、G、X、Y 和 C。為了簡化,這里沒有列出相反方向上的相應(yīng)鏈路。節(jié)點A已計算出A-X(404)作為繞過 A-B的修復(fù)路徑。節(jié)點B已計算出B-Y(402)作為繞過B-A的修復(fù)路徑。節(jié)點X已計算出 X-C-Y (406)作為繞過X-Y的修復(fù)路徑。節(jié)點Y已計算出Y-C-X作為繞過Y-X的修復(fù)路徑。 在此配置中,當A-B和X-Y相互故障時,沿著修復(fù)路徑和拓撲內(nèi)部的節(jié)點之間的未受影響的 路徑,出現(xiàn)無限的環(huán)路。另外,如到此為止所述將A-B和X-Y放在次級SRLG中是不足以去 除該環(huán)路的。在一個實施例中,可以通過運行額外的SPF計算以擴展檢查路徑的方法來應(yīng)對由 多個相互鏈路故障導(dǎo)致的多向環(huán)路。具體而言,修復(fù)節(jié)點通過執(zhí)行以已知在先前確定的修 復(fù)路徑上的每個節(jié)點為根的SPF,來額外地確定另一級修復(fù)路徑。修復(fù)節(jié)點還在圖2的步 驟204處創(chuàng)建的、用于在圖2的過程的步驟212處安裝丟棄FIB條目的節(jié)點列表中包括額 外修復(fù)路徑上的所有節(jié)點,如果這些修復(fù)路徑包括修復(fù)節(jié)點的話。一般地,為了應(yīng)對由三(3)條鏈路的相互故障導(dǎo)致的環(huán)路,該方案除了原始的不 經(jīng)由計算以外還執(zhí)行兩級SPF計算。當涉及四(4)條鏈路時,考察三個級別,依此類推。該 過程可以重復(fù)使用對任何數(shù)目的期望級別的遞歸考察,同時針對存儲器可用性、處理資源 以及執(zhí)行整個預(yù)計算的時間進行平衡。另外,當在此過程中考慮極大數(shù)目的故障時,以下可 能性增大了,即,實際故障將會以阻止有效轉(zhuǎn)發(fā)、直到至少一個鏈路修復(fù)實現(xiàn)為止的方式分 割網(wǎng)絡(luò)。此外,當在N+1條鏈路已相互故障并且如上所述僅針對N條鏈路計算了修復(fù)路徑 的情況下出現(xiàn)環(huán)路時,路由協(xié)議邏輯可以響應(yīng)于TTL值的期望而實現(xiàn)上述的“放棄所有希 望”過程。從而,“放棄所有希望”方案可以充當安全網(wǎng),并且針對執(zhí)行很多級SPF計算的代 價進行平衡。結(jié)果,通過安裝在識別出多向相互環(huán)路時將會使得分組被丟棄而不是繼續(xù)環(huán)回的 額外丟棄條目,可以將環(huán)路保護擴展到三條或更多條鏈路。2. 3無環(huán)路備用和下游路由以上描述假定了所有修復(fù)都是不經(jīng)由隧道。然而,實施例在可用時可以使用無環(huán) 路備用(LFA)或下游路由。LFA或下游路由的使用使這里的方案復(fù)雜化,因為這種使用導(dǎo)致 了正被修復(fù)但卻不是尋址到不經(jīng)由地址的分組。如果發(fā)生故障的兩條鏈路都在使用下游路由,那么不可能發(fā)生環(huán)回,因為不可能 有一對節(jié)點都是彼此的下游。然而,當使用LFA時可能發(fā)生環(huán)路。示例是公知的LFA的節(jié) 點修復(fù)問題。如果一條鏈路在使用下游路由,而另一條在使用不經(jīng)由隧道,那么如果能夠確定 在下游路由的路徑上的節(jié)點,則該方案將可行。計算下游路由的一些方法不提供此信息。如 果關(guān)于下游路由的路徑上的節(jié)點的信息可用,那么使用下游路由的鏈路對于另一鏈路的不經(jīng)由地址將具有丟棄FIB條目。因此,可能環(huán)回的分組在嘗試越過此鏈路時將被丟棄。不 同于兩條故障鏈路使用不經(jīng)由修復(fù)的情況(其中當不經(jīng)由分組首次遇見第二故障時環(huán)路 將被打破),下游路由的分組將被無條件地修復(fù),并且下游路由的分組僅會在其被路由回第 一故障時才會被丟棄。即,下游路由的分組在被丟棄之前將會運行環(huán)路的一圈。另外,利用下游路由,路徑可能被計算到故障的遠端,但是分組在到達故障的遠端 之前可能“脫離”到其目的地。在此情況下,分組可能穿過了某些可能發(fā)生了故障、但在計 算出的路徑上沒有考慮到的其他鏈路。例如,如果A-B修復(fù)是下游路由并且X-Y修復(fù)是不 經(jīng)由修復(fù),則被封裝到Y(jié)x的X-Y修復(fù)分組將沿著嘗試穿過A-B的路徑而行。如果針對“正 ?!钡刂返腁-B修復(fù)路徑是下游路由,則不能假定針對被尋址到Y(jié)x的分組的修復(fù)路徑可被 發(fā)送到同一鄰居。這是因為下游路由的有效性在由Yx表示的拓撲中必須被查明,而在該拓 撲中鏈路X-Y發(fā)生了故障。此拓撲與用于正常下游計算的拓撲不同,并且將正常下游路由 用于被封裝的分組將會導(dǎo)致未檢測到的環(huán)路。如果檢查此拓撲中的下游路由在計算上是可行的(在一個實施例中,對于穿過 A-B的任何不經(jīng)由地址QP,節(jié)點在Q-P發(fā)生故障的拓撲中為該不經(jīng)由地址執(zhí)行下游計算), 則針對Yx的下游修復(fù)可被安全地使用。這些分組不能重新訪問X-Y,因為按照定義這種分 組將會避免該鏈路?;蛘?,這種分組可在不經(jīng)由隧道中被修復(fù)。例如,即使針對穿過A-B的流量的正 常修復(fù)將會使用下游路由,一個實施例也可以要求尋址到不經(jīng)由地址的這種流量必須使用 到Ba的隧道,其方式是通過安裝這樣一條隧道作為針對被尋址到該不經(jīng)由地址的流量的路 由。僅在已利用上述規(guī)則確定這種隧道不穿過Q-P的情況下才會為地址Qp安裝這種隧道。在前述實施例中的任何一種中,路由協(xié)議的類型-長度-值(TLV)元素可用于通 告所構(gòu)造的修復(fù)路徑或通告要避免的路徑。作為附加或替換,通告可以規(guī)定節(jié)點需要構(gòu)造 繞過指定鏈路的不經(jīng)由修復(fù)路徑。例如,通告將宣告需要構(gòu)造繞過被提名、利用端點節(jié)點標 識或以其他方式標識的一條或多條鏈路的列表的不經(jīng)由修復(fù)路徑。作為另一示例,這種通 告還將包括一條可能的修復(fù)路徑,在此情況下接收節(jié)點將確定接收節(jié)點在該修復(fù)路徑上并 且因此接收節(jié)點應(yīng)當執(zhí)行對另一修復(fù)路徑的計算。作為又一示例,這種通告將會觸發(fā)接收 節(jié)點在其FIB中輸入指定的修復(fù)路徑,這實際上強制了接收節(jié)點以指定的方式更新其路由 表。3. 0實現(xiàn)機構(gòu)_硬件概述圖5是示出該方法可在其上實現(xiàn)的計算機系統(tǒng)140的框圖。該方法是利用運行在 諸如路由器設(shè)備這樣的網(wǎng)絡(luò)元件上的一個或多個計算機程序?qū)崿F(xiàn)的。從而,在此實施例中, 計算機系統(tǒng)140是路由器。計算機系統(tǒng)140包括用于傳輸信息的總線142或其他通信機構(gòu)和與總線142相耦 合用于處理信息的處理器144。計算機系統(tǒng)140還包括諸如隨機存取存儲器(RAM)、閃存或 其他動態(tài)存儲設(shè)備之類的主存儲器146,其耦合到總線142,用于存儲信息和處理器144要 執(zhí)行的指令。主存儲器146還可用于存儲在處理器144執(zhí)行指令期間的臨時變量或其他中 間信息。計算機系統(tǒng)140還包括只讀存儲器(ROM) 148或其他靜態(tài)存儲設(shè)備,其耦合到總線 142,用于存儲靜態(tài)信息和處理器144的指令。提供了諸如磁盤、閃存或光盤之類的存儲設(shè) 備150,其耦合到總線142,用于存儲信息和指令。
通信接口 158可以耦合到總線142,以用于將信息和命令選擇傳輸?shù)教幚砥?44。 接口 158是傳統(tǒng)串行接口,例如RS-232或RS-422接口。外部終端152或其他計算機系統(tǒng) 連接到計算機系統(tǒng)140,并利用接口 158向其提供命令。運行在計算機系統(tǒng)140中的固件 或軟件提供終端接口或基于字符的命令接口,以便外部命令可被提供給計算機系統(tǒng)。鏈路 520可以將通信接口 158耦合到本地網(wǎng)絡(luò)522。交換系統(tǒng)156耦合到總線142,并具有輸入接口 514和到外部網(wǎng)絡(luò)元件的相應(yīng)輸 出接口 519。外部網(wǎng)絡(luò)元件可包括多個另外的路由器或者耦合到一個或多個主機或路由器 的本地網(wǎng)絡(luò)522,或者諸如因特網(wǎng)這樣的具有一個或多個服務(wù)器的全局網(wǎng)絡(luò)。交換系統(tǒng)156 根據(jù)公知的預(yù)定協(xié)議和慣例將到達輸入接口的信息流量交換到輸出接口。例如,交換系統(tǒng) 156與處理器144合作,可確定到達輸入接口的數(shù)據(jù)分組的目的地,并利用輸出接口將其發(fā) 送到正確的目的地。目的地可包括主機、服務(wù)器、其他末端站、或者本地網(wǎng)絡(luò)或因特網(wǎng)中的 其他路由和交換設(shè)備。計算機系統(tǒng)140實現(xiàn)為充當上述轉(zhuǎn)發(fā)數(shù)據(jù)的方法中的參與節(jié)點、修復(fù)節(jié)點或通知 節(jié)點的路由器。該實現(xiàn)是由計算機系統(tǒng)140響應(yīng)于處理器144執(zhí)行包含在主存儲器146中 的一條或多條指令的一個或多個序列而提供的。這種指令可以被從另一計算機可讀介質(zhì) (如存儲設(shè)備150)讀取到主存儲器146中。包含在主存儲器146中的指令序列的執(zhí)行使得 處理器144執(zhí)行這里描述的過程步驟。多處理配置中的一個或多個處理器也可被用來執(zhí)行 包含在主存儲器146中的指令序列。在替換實施例中,可以使用硬線電路來代替軟件指令 或與軟件指令相組合以實現(xiàn)該方法。從而,實施例不限于硬件電路和軟件的任何特定組合。這里所用的術(shù)語“計算機可讀介質(zhì)”指參與向處理器144提供指令以供執(zhí)行的任 何介質(zhì)。這種介質(zhì)可以采取許多形式,包括但不限于非易失性介質(zhì)、易失性介質(zhì)和傳輸介 質(zhì)。非易失性介質(zhì)例如包括光盤或磁盤,如存儲設(shè)備150。易失性介質(zhì)包括動態(tài)存儲器,如 主存儲器146。傳輸介質(zhì)包括同軸電纜、銅線和光纖,包括構(gòu)成總線142的線路。傳輸介質(zhì) 也可以采取諸如聲波或電磁波之類的無線鏈路的形式,例如在無線電波和紅外數(shù)據(jù)通信期 間生成的那些信號。計算機可讀介質(zhì)的常見形式例如包括軟盤、柔性盤、硬盤、磁帶或任何其他磁介 質(zhì),CD-ROM、任何其他光介質(zhì),穿孔卡、紙帶、任何其他具有孔圖案的物理介質(zhì),RAM、PROM和 EPROM、FLASH-EPR0M、任何其他存儲器芯片或卡盤,下文中描述的載波,或者計算機可以讀 取的任何其他介質(zhì)。計算機可讀介質(zhì)的各種形式可用于將一條或多條指令的一個或多個序列傳送到 處理器144以供執(zhí)行。例如,指令可以首先承載在遠程計算機的磁盤上。遠程計算機可以 將指令加載到其動態(tài)存儲器中,并利用調(diào)制解調(diào)器通過電話線發(fā)送指令。計算機系統(tǒng)140 本地的調(diào)制解調(diào)器可以接收電話線上的數(shù)據(jù),并使用紅外發(fā)送器來將數(shù)據(jù)轉(zhuǎn)換為紅外信 號。耦合到總線142的紅外檢測器可以接收在紅外信號中攜帶的數(shù)據(jù),并且將數(shù)據(jù)置于總 線142上??偩€142將數(shù)據(jù)傳送到主存儲器146,處理器144從主存儲器146取得指令并執(zhí) 行指令。主存儲器146接收的指令可以可選地在處理器144執(zhí)行之前或之后存儲到存儲設(shè) 備150上。接口 519還可提供到連接到本地網(wǎng)絡(luò)的網(wǎng)絡(luò)鏈路的雙向數(shù)據(jù)通信耦合。例如,接 口 519可以是綜合業(yè)務(wù)數(shù)字網(wǎng)絡(luò)(ISDN)卡或調(diào)制解調(diào)器,以提供到相應(yīng)類型電話線的數(shù)字通信連接。作為另一示例,接口 519可以是局域網(wǎng)(LAN)卡,以提供到兼容LAN的數(shù)據(jù)通信 連接。也可以實現(xiàn)無線鏈路。在任何這種實現(xiàn)方式中,接口 519發(fā)送和接收電、電磁或光信 號,這些信號攜帶了表示各類信息的數(shù)字數(shù)據(jù)流。網(wǎng)絡(luò)鏈路一般通過一個或多個網(wǎng)絡(luò)提供到其他數(shù)據(jù)設(shè)備的數(shù)據(jù)通信。例如,網(wǎng)絡(luò) 鏈路可以通過本地網(wǎng)絡(luò)提供到主機計算機或由因特網(wǎng)服務(wù)供應(yīng)商(ISP)526操作的數(shù)據(jù)設(shè) 備的連接。ISP 526又通過全球分組數(shù)據(jù)通信網(wǎng)絡(luò)(現(xiàn)在通常稱為“因特網(wǎng)”528)提供數(shù)據(jù) 通信服務(wù)。本地網(wǎng)絡(luò)和因特網(wǎng)都使用攜帶數(shù)字數(shù)據(jù)流的電、電磁或光信號。通過各種網(wǎng)絡(luò) 的信號和在網(wǎng)絡(luò)鏈路上并通過接口 519的信號(這些信號攜帶去往和來自計算機系統(tǒng)140 的數(shù)字數(shù)據(jù))是傳輸信息的載波的示例性形式。計算機系統(tǒng)140可以通過(一個或多個)網(wǎng)絡(luò)、網(wǎng)絡(luò)鏈路和接口 519發(fā)送消息和 接收數(shù)據(jù),包括程序代碼。在因特網(wǎng)示例中,服務(wù)器可以通過因特網(wǎng)、ISP、本地網(wǎng)絡(luò)和通信 接口發(fā)送應(yīng)用程序的請求代碼。一個這樣下載的應(yīng)用提供了如這里所述的方法。接收到的代碼可以在接收時被處理器144執(zhí)行,和/或被存儲在存儲設(shè)備150或 其他非易失性存儲裝置中以供以后執(zhí)行。以這種方式,計算機系統(tǒng)140可以獲得載波形式 的應(yīng)用代碼。4. 0擴展和替換在前述說明書中,已參考本發(fā)明的特定實施例描述了本發(fā)明。但是,應(yīng)當清楚,在 不脫離本發(fā)明更寬廣的精神和范圍的前提下,可以進行各種修改和改變。因此,說明書和附 圖都應(yīng)當被認為是示例性的,而非限制性的。任何適當?shù)穆酚蓞f(xié)議和機制以及轉(zhuǎn)發(fā)范例都可被采用來實現(xiàn)本發(fā)明。所闡述的方 法步驟可以按任何適當?shù)捻樞騺韴?zhí)行,并且來自描述的示例和實施例的各方面可被適當?shù)?并列或交換。例如,可以利用諸如中間系統(tǒng)-中間系統(tǒng)(IS-IS)或開放最短路徑優(yōu)先(OSPF) 之類的鏈路狀態(tài)協(xié)議或者路由向量協(xié)議和任何轉(zhuǎn)發(fā)范例(例如MPLS)來實現(xiàn)方法。方法可 被應(yīng)用在具有任何拓撲的任何網(wǎng)絡(luò)中,結(jié)合網(wǎng)絡(luò)中的任何組件變化,例如鏈路或節(jié)點故障, 或者管理員引入或去除網(wǎng)絡(luò)組件。再現(xiàn)公布No. 2006/0187819的內(nèi)容在諸如因特網(wǎng)之類的計算機網(wǎng)絡(luò)中,數(shù)據(jù)分組根據(jù)各種路由協(xié)議之一,經(jīng)由包括 鏈路(諸如電話或光線路之類的通信路徑)和節(jié)點(例如,沿著連接到它的多條鏈路中的 一條或多條引導(dǎo)分組的路由器)在內(nèi)的元件的網(wǎng)絡(luò)被從源發(fā)送到目的地。一類路由協(xié)議是鏈路狀態(tài)協(xié)議。鏈路狀態(tài)協(xié)議依賴存在于每個節(jié)點處的路由算 法。網(wǎng)絡(luò)上的每個節(jié)點在整個網(wǎng)絡(luò)中通告去往鄰居節(jié)點的鏈路,并且提供與每條鏈路相關(guān) 聯(lián)的代價,該代價可以基于諸如鏈路帶寬或延遲之類的任何適當度量并且通常被表達為整 數(shù)值。鏈路可具有不對稱代價,即沿一條鏈路的方向AB的代價可能不同于沿方向BA的代 價?;谝枣溌窢顟B(tài)分組(LSP)的形式通告的信息,每個節(jié)點構(gòu)造鏈路狀態(tài)數(shù)據(jù)庫(LSDB) (這是整個網(wǎng)絡(luò)拓撲的映射),并一般根據(jù)該數(shù)據(jù)庫基于諸如最短路徑優(yōu)先(SPF)算法之類 的適當算法來構(gòu)造去往每個可用節(jié)點的單個最優(yōu)路由。結(jié)果,構(gòu)造出了“生成樹”(SPT),其 以該節(jié)點為根,并且示出了去往每個可用目的地節(jié)點的、包括中間節(jié)點的最優(yōu)路徑。SPF的 結(jié)果被存儲在路由信息庫(RIB)中,并且基于這些結(jié)果,轉(zhuǎn)發(fā)信息庫(FIB)或轉(zhuǎn)發(fā)表被更 新,以適當?shù)乜刂品纸M的轉(zhuǎn)發(fā)。當發(fā)生網(wǎng)絡(luò)變化時,表示該變化的LSP被與該變化相鄰的每
15個節(jié)點通過網(wǎng)絡(luò)流播,接收到LSP的每個節(jié)點將其發(fā)送到每個相鄰節(jié)點。結(jié)果,當去往目的地節(jié)點的數(shù)據(jù)分組到達一個節(jié)點時,該節(jié)點識別去往該目的地 的最優(yōu)路由,并沿著該路由將分組轉(zhuǎn)發(fā)到下一節(jié)點(“NEXT_H0P”)。下一節(jié)點重復(fù)這一步 驟,依此類推。將會注意到,在正常的轉(zhuǎn)發(fā)中,每個節(jié)點在不考慮它從哪個節(jié)點接收到分組的情 況下決定應(yīng)當把該分組轉(zhuǎn)發(fā)到的下一節(jié)點。在一些情況下,這可能引起“環(huán)路”。尤其,這可 能發(fā)生在數(shù)據(jù)庫(以及相應(yīng)的轉(zhuǎn)發(fā)信息)在路由轉(zhuǎn)變期間臨時失同步時,即因為網(wǎng)絡(luò)中的 變化,導(dǎo)致在RIB或FIB中產(chǎn)生環(huán)路的新LSP被傳播的情況。例如,如果節(jié)點A經(jīng)由節(jié)點B 發(fā)送分組到節(jié)點Z (包括根據(jù)其SPF的最優(yōu)路由),則可能出現(xiàn)這樣的情形,其中節(jié)點B根據(jù) 其SPF確定到節(jié)點Z的最佳路由是經(jīng)由節(jié)點A并發(fā)回分組。只要環(huán)路仍存在,這就可能一 直繼續(xù),但通常分組將會具有最大跳數(shù),在此之后它將被丟棄。這種環(huán)路可能是兩個節(jié)點之 間的直接環(huán)路或者在一系列節(jié)點之間的間接環(huán)路。對于環(huán)回問題已經(jīng)提出的一種解決方案在Kevin Miles等人于2003年1月9 日提交的題為"Method and Apparatus for Constructing a Backup Route in a Data Communications Network” 的美國專利申請 No. 10/340, 371 ( “Miles 等人”)中有所描述, 這里通過引用并入該申請的全部內(nèi)容,用于所有目的,就好像在這里完全記載了一樣,并且 將在下面更詳細地論述。根據(jù)Miles等人給出的解決方案,在修復(fù)節(jié)點檢測到相鄰組件的 故障的情況下,修復(fù)節(jié)點計算包括除了通過穿越故障組件可達的節(jié)點以外根據(jù)其協(xié)議可達 的所有節(jié)點的集合的第一節(jié)點集合。然后,修復(fù)節(jié)點計算包括所有下述節(jié)點的集合在內(nèi)的 第二節(jié)點集合從這些節(jié)點可在不穿越故障組件的情況下到達目標節(jié)點。該方法隨后確定 在第一節(jié)點集合和第二節(jié)點集合的交集或其一跳的擴展中是否存在任何中間節(jié)點,并將去 往目標節(jié)點的分組以隧道方式傳輸?shù)剿淼蓝它c,該隧道端點包括第一和第二節(jié)點集合的交 集中的節(jié)點。Miles等人描述的解決方案可以參考圖6進一步理解,圖6示出了該解決方案被應(yīng) 用于的示例性網(wǎng)絡(luò)圖。網(wǎng)絡(luò)包括節(jié)點P (標號10),節(jié)點A、B、C和S (標號12、14、16、18)經(jīng) 由相應(yīng)鏈路20、22、24、26附接到節(jié)點P。在節(jié)點P發(fā)生故障的情況下,充當修復(fù)節(jié)點的節(jié)點 S計算除了通過故障組件之外的可到達的第一節(jié)點集合,這里稱為節(jié)點S的P空間,Ps (標 號28)。節(jié)點S還計算從其可以在不穿越節(jié)點P的情況下到達目標節(jié)點B的節(jié)點,這里稱為 節(jié)點B的Q空間,Bq(標號30)。作為修復(fù)節(jié)點的節(jié)點S隨后識別出Ps中的節(jié)點E和Qb中 的節(jié)點F(標號32、34)經(jīng)由鏈路36在彼此的一跳內(nèi)。節(jié)點S隨后以隧道方式經(jīng)由路徑38 發(fā)送分組到節(jié)點E,也就是說,節(jié)點S封裝分組,并附加節(jié)點E的地址作為目的地頭部。為了 使分組穿越鏈路36,節(jié)點S還向經(jīng)封裝分組添加“直接轉(zhuǎn)發(fā)”指令以使得節(jié)點E在對分組解 封裝后轉(zhuǎn)發(fā)到節(jié)點F,無論其到節(jié)點B的下一跳為何。一旦分組到達節(jié)點F,則根據(jù)定義,其 將會經(jīng)由節(jié)點B的Q空間Qb中的路徑40到達節(jié)點B。該方案的擴展在George Swallow等人于2004年10月27日提交的題為“Method and Apparatus for Forwarding Data in a Data Communications Network,,的同樣未決 的專利申請No. 10/976, 076 ( “Swallow等人”)中有所描述,這里通過引用并入該申請的全 部內(nèi)容,用于所有目的,就好像在這里完全記載了一樣。根據(jù)該擴展,修復(fù)節(jié)點還計算到故 障節(jié)點的其他鄰居的Q空間,從而形成“擴展Q空間”,并將分組轉(zhuǎn)發(fā)到P空間Ps和擴展Q空間的交集中的節(jié)點。再一次參考圖6,例如,作為修復(fù)節(jié)點的節(jié)點S識別出節(jié)點E’(標號 42)可經(jīng)由路徑44到達,并且位于C的Q空間Qc(標號45)中。分組隨后經(jīng)由路徑44跨過 Q空間Qc被轉(zhuǎn)發(fā)到節(jié)點F’ (標號46),節(jié)點F’也落在B的Q空間Qb中,并且從節(jié)點F’分 組經(jīng)由路徑48被轉(zhuǎn)發(fā)到節(jié)點B。Miles等人和Swallow等人的方案可以針對節(jié)點和鏈路故障實現(xiàn)。在鏈路故障的 情況下,提出了各種解決方案來避免修復(fù)節(jié)點和經(jīng)由故障鏈路連接到修復(fù)節(jié)點的節(jié)點鄰居 之間的環(huán)回,并且這些方案可以實現(xiàn)沖突修復(fù)策略,也就是說,在鏈路26的故障的情況下 實現(xiàn)在圖6的節(jié)點S與節(jié)點A、B和C之間。一種這樣的解決方案在Michael Shand等人于2003年1月15日提交的題為 "Method and Apparatus for Determining a Data Communication Network Repair Strategy”的同樣未決的專利申請No. 10/346, 051 ( “Shand等人”)中有所描述,這里通 過引用并入該申請的全部內(nèi)容,用于所有目的,就好像在這里完全記載了一樣。根據(jù)該方 案,修復(fù)節(jié)點沿著修復(fù)路徑發(fā)送探測分組,并且如果探測被返回,則環(huán)路被識別。又一解 決方案在Michael Shand等人于2004年5月18日提交的題為“Method and Apparatus for Forwarding Data in a Data Communications Network,,的同樣未決的專禾Ij 串請 No. 10/848, 669 ( “Shand等人II”)中有所描述,這里通過引用并入該申請的全部內(nèi)容,用 于所有目的,就好像在這里完全記載了一樣。根據(jù)Shand等人II描述的方案,修復(fù)分組被 標記為被修復(fù)的以避免環(huán)回。雖然這種系統(tǒng)提供了在組件故障的情況下的快速網(wǎng)絡(luò)恢復(fù),但P和Q空間的使用 意味著在許多情形中,所選的修復(fù)路徑不是最短可用修復(fù)路徑。此外,在某些情形中需要諸 如有向轉(zhuǎn)發(fā)之類的額外的轉(zhuǎn)發(fā)機制。在某些情形中需要進一步的額外的封裝層,例如在使 用擴展Q空間或者諸如多歸屬前綴(multi-homed prefix, MHP)的情況下。多次封裝是不 合需要的,例如由于對額外的校驗和計算的需求。這些問題中的許多問題之所以存在是因為當鏈路或路由器發(fā)生故障時,最初只有 故障的鄰居知道故障已發(fā)生。根據(jù)上述解決方案,故障由作為故障鄰居的路由器修復(fù)。這 些修復(fù)路由器不得不操縱分組去往其目的地,而不管網(wǎng)絡(luò)中的大多數(shù)其他路由器不知道故 障的性質(zhì)和位置這一事實。又一已知方案在編寫時可以在萬維網(wǎng)上的域“watersprings.org”的目錄“pub/ id,,中的文件"draft-tian-ffr-alt-shortest-path-OL txt,,處得至Ij 的"Fast Re-route using Alternative Shortest Paths”中有所描述。根據(jù)該文檔中描述的方案,修復(fù)節(jié)點和 其下一跳中的每一個計算替換最短路徑作為繞過潛在鄰居節(jié)點故障的修復(fù)路徑,這是通過 以下方式實現(xiàn)的在發(fā)生這種故障的情況下識別分組的終止點,并通過從鏈路狀態(tài)數(shù)據(jù)庫 中去除故障節(jié)點來計算備用最短路徑。然而,該方案需要構(gòu)造明確的路徑,其中利用了例如 源路由來將路徑編碼在分組自身中。圖6是示出根據(jù)已知方案的構(gòu)造修復(fù)路徑的方法的網(wǎng)絡(luò)的表示;圖7是示出根據(jù) 本方案的構(gòu)造修復(fù)路徑的方法的網(wǎng)絡(luò)的表示;圖8是示出根據(jù)本方案的構(gòu)造修復(fù)路徑的方 法的流程圖;圖9是根據(jù)本方案在LSP中攜帶的信息的示意性表示;圖10是示出在不可用 節(jié)點的鄰居節(jié)點處構(gòu)造的轉(zhuǎn)發(fā)表的示圖;圖11是示出在不可用節(jié)點的非鄰居節(jié)點處構(gòu)造 的轉(zhuǎn)發(fā)表的示圖;圖12是用于實現(xiàn)構(gòu)造修復(fù)路徑的方法的節(jié)點的生成樹圖;圖13是用于實現(xiàn)構(gòu)造修復(fù)路徑的方法的節(jié)點的遞增改變的生成樹圖;圖14是示出利用遞增式SPF構(gòu)造 修復(fù)路徑的方法的流程圖;圖15是示出本方案的另外的實現(xiàn)方式的網(wǎng)絡(luò)的表示;圖16是 示出為MHP構(gòu)造修復(fù)路徑的方法的流程圖;圖17是示出本方案的另外的實現(xiàn)方式的網(wǎng)絡(luò)的 表示;圖18是示出本方案的另外的實現(xiàn)方式的網(wǎng)絡(luò)的表示??偟貋碚f參考圖7可以理解一種用于構(gòu)造修復(fù)路徑的方法,圖7示出了本方法所 應(yīng)用的示例性網(wǎng)絡(luò)圖。該網(wǎng)絡(luò)包括主節(jié)點P(標號200)、源節(jié)點S以及節(jié)點A、B和C(標號 202、204、206、208),節(jié)點S、A、B和C各自經(jīng)由相應(yīng)鏈路210、212、214、216連接到節(jié)點P。又 一節(jié)點D (標號218)經(jīng)由鏈路220連接到節(jié)點B。除了分配給每個節(jié)點的標準地址以外,網(wǎng) 絡(luò)中的每個接口還被分配以一個額外的修復(fù)地址。在這里稱之為“不經(jīng)由地址”,但應(yīng)意識 到,這一術(shù)語是任意的、描述性的并且非限制性的。不經(jīng)由地址的語義是尋址到不經(jīng)由地址 的分組必須被遞送到具有該地址的路由器,而不經(jīng)由被分配以該地址的接口上的鄰居路由
ο例如,從節(jié)點P通過相應(yīng)鏈路210、212、214、216到節(jié)點S、A、B、C的接口可以具有 地址、ρ 、PC^Pp5。類似地,沿相反方向從節(jié)點A、B、C禾Π S分別經(jīng)由鏈路212、214、
216、210到節(jié)點P的接口具有地址八夕、BP、qP ^ 。為了修復(fù)故障,修復(fù)節(jié)點(例如節(jié)點S)封裝分組去往在故障遠端上的節(jié)點接口的 不經(jīng)由地址。于是,修復(fù)路徑上的節(jié)點知道它們必須向哪些節(jié)點遞送分組,以及它們必須避 免哪些網(wǎng)絡(luò)組件。參考圖7,假定S具有去往某一目的地D的分組,正常情況下其將經(jīng)由P和B發(fā)送,
并且S懷疑P已經(jīng)發(fā)生故障,則S封裝分組去往。根據(jù)語義,從S到;87的路徑是從S到
B的最短路徑,該路徑不經(jīng)由P。如果網(wǎng)絡(luò)包含從S到B且不經(jīng)過路由器P的路徑,則分組將 被成功地遞送到B。例如,分組可以沿著路徑222被轉(zhuǎn)發(fā)到節(jié)點Χ(224),然后沿著路徑226
被轉(zhuǎn)發(fā)到節(jié)點D。由于節(jié)點X已經(jīng)為計算出修復(fù)路徑,因此它將正確地轉(zhuǎn)發(fā)所封裝的分
組。當尋址到;β 的分組到達B時,B去除封裝,并向其最終目的地亦即節(jié)點D轉(zhuǎn)發(fā)所修復(fù) 的分組。這可以參考圖8進一步理解,圖8是以高級別圖示這里應(yīng)用的方法的流程圖。在 框300中,節(jié)點P利用諸如LSP之類的通知通告其鄰居Α、B、C、S及其關(guān)聯(lián)的不經(jīng)由地址
P:、P;、P、P;。將會意識到,充當通知節(jié)點的所有其他節(jié)點也將發(fā)出類似的LSP。結(jié)
果,不僅可以構(gòu)造適當?shù)霓D(zhuǎn)發(fā)表,而且在每個節(jié)點發(fā)生故障或者因其他原因變?yōu)椴豢捎霉?jié) 點的情況下,不經(jīng)由地址還可為每個節(jié)點所用,在這種情況下不經(jīng)由地址可以用作修復(fù)地 址。因此在框302中,所有參與節(jié)點不僅針對每個正常(無故障)地址,還針對每個不經(jīng)由 地址計算其下一跳。結(jié)果,每個節(jié)點構(gòu)造了繞過網(wǎng)絡(luò)中每個其他節(jié)點的修復(fù)路徑,并針對相 應(yīng)的不經(jīng)由地址進行存儲。在框304中節(jié)點P隨后發(fā)生故障或因其他原因變?yōu)椴豢捎玫那闆r下,則在框306 中鄰居節(jié)點以任何適當?shù)姆绞綑z測到故障或者被通知以故障。在鄰居節(jié)點隨后接收到本來 要發(fā)送向作為其下一跳的故障組件的分組的情況下,在框308中鄰居節(jié)點作為修復(fù)節(jié)點, 識別出修復(fù)端點或目標-其必須將該分組以隧道方式傳輸?shù)皆撔迯?fù)端點或目標以到達其后續(xù)的目的地。在以上給出的示例中,對于目的地是D的分組而言,修復(fù)節(jié)點是節(jié)點S,并且 修復(fù)端點是節(jié)點B。具體而言,這是由相應(yīng)的不經(jīng)由地7標識的。因此,節(jié)點S在框310
中沿著修復(fù)路徑將分組以隧道方式傳輸?shù)剑籅^。在框312中,每個下一跳將經(jīng)封裝的分組向
不經(jīng)由地址;BF轉(zhuǎn)發(fā),例如圖7中的節(jié)點X正確地轉(zhuǎn)發(fā)分組。由于所有的參與節(jié)點都已經(jīng)利
用相同的修復(fù)拓撲計算出到不經(jīng)由地址的路徑,因此分組被利用正常的IP轉(zhuǎn)發(fā)加以轉(zhuǎn)發(fā), 而不需要對轉(zhuǎn)發(fā)代碼的擴展。在框314中,分組到達修復(fù)端點,修復(fù)端點對其進行解封裝, 并向其目的地(在所描述的示例中是目的地D)轉(zhuǎn)發(fā)原始分組,這同樣是利用正常的IP轉(zhuǎn) 發(fā)進行的。因此,只需要一級封裝,并且可以修復(fù)任何故障(例如即使在網(wǎng)絡(luò)是高度不對稱 的時,在這種情況下Miles等人描述的P/Q空間方案理論上可能失敗)。此外,實現(xiàn)了繞過 故障的最短可用路徑,同樣地也不需要諸如有向轉(zhuǎn)發(fā)之類的額外的轉(zhuǎn)發(fā)機制。如下面更詳細地描述的,參考圖8描述的方法是極其健壯的,并且可以適用于很 寬范圍的常見網(wǎng)絡(luò)配置和需求。例如,該方法可以應(yīng)用于故障節(jié)點或故障鏈路的修復(fù),并且 可以結(jié)合用于單個故障點的策略,即一個節(jié)點只提供到一鄰居節(jié)點或網(wǎng)絡(luò)的一段的連通性 的情況。該方案還可以應(yīng)用于多歸屬前綴(MHP)、共享風險群組(SRG)、局域網(wǎng)(LAN)以及 單播和多播分組的情形。另外,該方案可以利用例如多協(xié)議標簽交換(MPLS)或距離向量技 術(shù)實現(xiàn)。另外,該方案可以實現(xiàn)在只有網(wǎng)絡(luò)的所有節(jié)點的子集是被使能根據(jù)本方法構(gòu)造修 復(fù)路徑的參與節(jié)點的情形中。再次參考圖7,將會看出為了允許網(wǎng)絡(luò)上的每個被使能節(jié)點構(gòu)造針對故障的網(wǎng)絡(luò) 組件(鏈路或節(jié)點)的修復(fù)拓撲,每個節(jié)點必須通告其不經(jīng)由地址以及存儲在其LSP中的 其他相關(guān)信息。參考圖9,圖9是示意性地示出包含在由節(jié)點P發(fā)出的LSP中的信息的示圖, 將會看出除了通告每個鄰居和其關(guān)聯(lián)的度量(例如,與相應(yīng)鏈路相關(guān)聯(lián)的代價)以外,還提 供了另外的信息。例如,在列400中提供鄰居信息和在列402中提供關(guān)聯(lián)度量的情況下,另 外在列404中提供了每個鄰居的不經(jīng)由地址。不經(jīng)由地址與相應(yīng)鄰居相關(guān)聯(lián)以使得針對鄰
居A的條目實際上指定pG。只要語義被接收到LSP的節(jié)點所承認,那么不經(jīng)由地址自身就
可以采取標準IP地址的形式,在這里示意性地示為代表J^等等的a. a. a. a。將會看出,由
于網(wǎng)絡(luò)中的每一節(jié)點都提供了類似的信息,因此每個節(jié)點可以導(dǎo)出針對網(wǎng)絡(luò)上的每一不經(jīng) 由地址的修復(fù)路徑。因此,再次參考結(jié)合圖7描述的示例(其中在節(jié)點P發(fā)生故障的情況下節(jié)點S將
以節(jié)點D為目的地的分組封裝到),每一節(jié)點更一般地計算其將在任何可能的節(jié)點故障
的情況下使用的路徑。因此,每個節(jié)點使網(wǎng)絡(luò)中的每一其他路由器發(fā)生故障,一次一個,并 計算它自己的到該節(jié)點的每個鄰居的最佳路由。換句話說,同樣參考圖7,某一路由器X將 依次地把每個路由器看作P,使P發(fā)生故障,然后計算它自己的到由P的鄰居通告的每個不
經(jīng)由P地址的路由,即,X計算其到87、、F (在每種情況下都不經(jīng)由P)的路由。因此,參考圖10 (圖10是示出在節(jié)點S處導(dǎo)出的轉(zhuǎn)發(fā)表的相關(guān)部分的示圖),將會看出對于每個地址(列500),導(dǎo)出了下一跳(列502),指定了不經(jīng)由地址(列504),還實現(xiàn) 了相應(yīng)的修復(fù)地址(列506)。例如,在目的地是節(jié)點B并且下一跳被計算為節(jié)點P的情況
下,那么另外,分組將被以隧道方式傳輸?shù)降男迯?fù)地址B ^被與相應(yīng)的修復(fù)下一跳存儲在一 起。在這種情況下,這是沿著從節(jié)點S到節(jié)點X的路徑222的第一跳,在以上參考圖7描述 的示例中指示為沿著從節(jié)點S出發(fā)的鏈路230的節(jié)點Z (標號228)。在以節(jié)點D為目的地
的分組的情況下,正常的下一跳是節(jié)點P,并且修復(fù)地址是67,因此對于被封裝到的分
組而言,修復(fù)下一跳再次是節(jié)點Z。在節(jié)點A作為目的地地址的情況下,下一跳是節(jié)點P,并
且修復(fù)地址是人7,這提供了某個修復(fù)下一跳ΩΑ未示出)。節(jié)點S的轉(zhuǎn)發(fā)表中的修復(fù)地
址總是去往鄰居的鄰居,即修復(fù)隧道的端點。然而,將會看出,在列500中的正常地址是不
經(jīng)由地址(例如e )的情況下,盡管下一跳被提供為沿著從節(jié)點S出發(fā)的鏈路234的節(jié)點
Y (標號232),修復(fù)地址和修復(fù)下一跳也不被提供,如下更詳細所述。因此,節(jié)點S將利用正 常轉(zhuǎn)發(fā)將分組轉(zhuǎn)發(fā)到不經(jīng)由地址(當其依賴于另一節(jié)點的修復(fù)路徑時),但是在進入分組 已經(jīng)以不經(jīng)由地址為目的地時,將不會鼓勵被隧傳到不經(jīng)由地址的修復(fù)。將會意識到,對于去往給定目的地的給定分組而言,在下一跳發(fā)生故障的情況下 識別正確的修復(fù)地址的方法可以例如根據(jù)在節(jié)點處構(gòu)造的SPT以任何適當?shù)姆绞?例如 Miles等人描述的方式)來確定。還將會看出,修復(fù)地址是根據(jù)接收的所有LSP導(dǎo)出的,并 且不一定是從這樣的節(jié)點導(dǎo)出修復(fù)最終繞過該節(jié)點得以形成。例如,再次參考圖10,在以
節(jié)點B為目的地的分組的情況下,在下一跳節(jié)點P發(fā)生故障時,修復(fù)地址是,這將是從節(jié)
點B(而非節(jié)點P)接收到的。參考圖11 (圖11示出了在節(jié)點X處構(gòu)造的轉(zhuǎn)發(fā)表的某些方 面),將會看出,構(gòu)造了類似的表,其包括目的地地址字段600、下一跳字段602,為了簡化, 修復(fù)地址字段和修復(fù)下一跳字段未被示出,但是這些將按照與上述針對節(jié)點S相同的方式 被填充。在圖示的片段中,將會看出,對于目的地地址B和D而言,下一跳是某一節(jié)點Ω2 (未
示出)。在圖示拓撲中,目的地地址的下一跳正好是Ω2,因為到B和D的最短路徑在修
復(fù)拓撲中不改變。相反地,節(jié)點P的故障可能意味著節(jié)點乂對87的下一跳也改變。因此,
如下更詳細地所述的,在某些情形中可以減少在正常拓撲和修復(fù)拓撲之間的改變(即,在 故障組件被從修復(fù)拓撲中切除的情況下)不影響某些節(jié)點的情況下的SPF計算開銷。為了減少計算開銷,尤其是確保每個節(jié)點不必為每個其他可能節(jié)點的故障計算整 個SPF,存在各種可能性。首先,如果節(jié)點可以識別其不處于從另一節(jié)點到修復(fù)地址的修復(fù) 路徑中,則其不需要計算對于該修復(fù)地址的下一跳。將會注意到,以隧道方式被發(fā)送向修復(fù) 地址的分組將只來源于繞過故障組件修復(fù)的節(jié)點,即,在故障組件的與修復(fù)地址相反的另 一側(cè)上的節(jié)點。因此,這可以通過從修復(fù)節(jié)點向其針對給定修復(fù)地址的修復(fù)路徑中的每個 其他節(jié)點發(fā)出信號來實現(xiàn),在這種情況下接收到信號的每個節(jié)點將計算它自己的針對該修 復(fù)地址的下一跳。或者,可以構(gòu)建某種形式的“被發(fā)現(xiàn)”信令路由。例如,在節(jié)點S將分組 發(fā)送向其修復(fù)下一跳(例如節(jié)點X)的情況下,如果該修復(fù)下一跳還未構(gòu)造修復(fù)路徑,則其 將丟棄分組,然后計算它自己的修復(fù)下一跳。如果在更高級協(xié)議的控制下,S在沒有從最終 目的地接收到確認時重發(fā)分組,則節(jié)點X現(xiàn)在將把分組轉(zhuǎn)發(fā)到其修復(fù)下一跳,修復(fù)下一跳也將丟棄分組但是同時構(gòu)造它自己的修復(fù)下一跳。該過程繼續(xù),直到建立了修復(fù)路徑為止, 此時將發(fā)送確認。根據(jù)減少SPF計算開銷的第二方式,可以實現(xiàn)遞增式SPF。這可以參考圖12理解, 圖12示出了在節(jié)點X構(gòu)造的部分SPT。X首先計算基本拓撲(這時所有路由器都是工作著 的),并確定它到所有節(jié)點地址的正常路徑。例如,其對于節(jié)點B和D的下一跳是經(jīng)由Ω2 的,對于節(jié)點P和Y的下一跳是經(jīng)由節(jié)點S(這里為了簡化而忽略了節(jié)點Ζ)的,并且節(jié)點S 對于節(jié)點A和C的下一跳是經(jīng)由節(jié)點P的。然后,節(jié)點X使路由器P故障,并執(zhí)行遞增式SPF。遞增式SPF是本領(lǐng)域技術(shù)人員 公知的,并且不在這里詳細描述,而僅僅參考圖13出于說明目的進行總結(jié),圖13示出了遞 增式SPT。具體而言,將會看出,節(jié)點P已被從修復(fù)拓撲中切除,結(jié)果,節(jié)點A和C重新附接 到節(jié)點Y,但是節(jié)點B和D不受影響。結(jié)果,可以快速計算出與;^相對應(yīng)的不經(jīng)由地址。節(jié)
點X對于八^和^ 的下一跳仍然是節(jié)點S。然而,當節(jié)點S重新計算其SPT時,其將會鼓勵 節(jié)點Y作為其對八^和^ 的修復(fù)下一跳。節(jié)點X對于節(jié)點B和D的下一跳不受影響,從而 對于目的地B、D和67而言,下一跳是Ω2。結(jié)果,在先前經(jīng)由P到達的所有地址被重新附接時,可以終止遞增式計算。然后, 節(jié)點X回復(fù)基本拓撲,并重復(fù)依次使每個路由器故障并據(jù)此導(dǎo)出不經(jīng)由地址的過程。該算 法相比于一組完全的SPF明顯廉價。具體而言,盡管路由器仍然必須為N-I個故障計算修 復(fù)路徑,但是計算工作量遠小于N-I個SPF。該方法可以參考圖14進一步理解,圖14是圖示了 SPF的計算的流程圖。在框900 中,節(jié)點X構(gòu)造網(wǎng)絡(luò)中所有節(jié)點的基本拓撲。在框902中,節(jié)點X構(gòu)造相應(yīng)的SPT。在框904 中,節(jié)點X使節(jié)點P故障,并且在框906中,節(jié)點X構(gòu)造遞增式SPTJffA P從針對;^的修 復(fù)拓撲中切除。在框908中,任何分離的不經(jīng)由地址被與必須被重新附接的任何其他地址 重新附接在一起,以允許不經(jīng)由地址的重新附接,并且在框910中,在所有地址都被重新附 接時計算終止。然后在框912中,轉(zhuǎn)發(fā)表隨后被填充以針對不經(jīng)由P地址的所有下一跳,例
如Α〒、Β^、C 等等。在框914中,對于網(wǎng)絡(luò)中的每個其他參與節(jié)點重復(fù)這一程序。將會看出,這里描述的方案可以應(yīng)用于節(jié)點或鏈路故障兩種情況下。以上提供的 論述尤其涉及節(jié)點故障,其中不經(jīng)由地址或修復(fù)路徑的構(gòu)造是基于節(jié)點故障和據(jù)此導(dǎo)出的 SPT的。然而,將會意識到,以類似的方式本發(fā)明也可以涉及鏈路故障。例如,在圖7的情況下,作為附加或替換,節(jié)點S和/或節(jié)點P可以基于繞過鏈路 210的故障通告不經(jīng)由地址。在這種情況下,不經(jīng)由地址可以再次利用適當?shù)恼Z義進行通 告,以使得接收節(jié)點識別出地址類型和所需的計算以獲得鏈路修復(fù)下一跳。例如,以上參考 圖12到14所述的遞增式SPT方案將基于修復(fù)拓撲,其中并不去除節(jié)點P(因此不去除節(jié)點 P和其他節(jié)點之間的所有鏈路),而是只去除節(jié)點S和P之間的鏈路210,并且計算遞增式 SPT。假定鏈路而不是節(jié)點故障對某些目的地只通過故障路由器可達的情形有幫助,則 希望進行嘗試以修復(fù)這些目的地,這是通過假定只發(fā)生了鏈路故障,并利用針對節(jié)點故障 計算的不經(jīng)由地址嘗試鏈路修復(fù)來實現(xiàn)的。
21
為了執(zhí)行鏈路修復(fù),S封裝到J^ (即,其指示網(wǎng)絡(luò)不經(jīng)由S將分組遞送到節(jié)點修復(fù)
地址P)。S的所有鄰居都已經(jīng)計算了在S自身發(fā)生故障的情況下到ρ 的路徑。因此,S可
以將分組給予到其鄰居中的任何一個(當然,除了P)。然而,S應(yīng)當優(yōu)選地在最短可用路徑 上將經(jīng)封裝分組發(fā)送向P。該路徑是通過在鏈路SP故障的情況下運行SPF而計算的。在該鏈路修復(fù)是在存在節(jié)點故障的情況下(在這種情況下故障節(jié)點的其他鄰居 可能運行相沖突的修復(fù)策略)進行嘗試的時,則環(huán)回以非常簡單的方式得以避免。具體而 言,如上參考圖10所述,確保了對于不經(jīng)由地址不提供修復(fù)路徑。參考圖7,如果A是P的 鄰居,其位于從S到P的鏈路修復(fù)路徑上,并且P自身已發(fā)生故障,則來自S的所修復(fù)分組
將到達Α,并被封裝到pi。A將檢測到AP鏈路已發(fā)生故障,并且將正常地嘗試修復(fù)分組。然
而,由于對于ρ;未提供修復(fù)路徑,因此A將被強制丟棄分組,從而防止了環(huán)路的形成。該方案在例如單個故障點的情形中是有利的。再次參考圖7,其中在節(jié)點W(標號 240)自身可以提供與網(wǎng)絡(luò)的一個分段的連通性時,節(jié)點P只提供到節(jié)點W的連通性,另外, 如果節(jié)點P發(fā)生故障,則沒有網(wǎng)絡(luò)節(jié)點可以到達節(jié)點W。因此,在節(jié)點S檢測到在其到節(jié)點 P的接口處的故障時,其可能希望假定只有鏈路210發(fā)生故障,而不是節(jié)點P。結(jié)果,S將
以節(jié)點W為目的地的分組封裝到J^。盡管節(jié)點S理論上可以發(fā)送分組到其鄰居中的任何一 個,但是其最優(yōu)地使用到ρ;的最短路徑。當分組到達P時,P將剝離封裝,并將分組發(fā)送向
W。然而,如果P確實已發(fā)生故障,則分組將到達P的鄰居(在封裝中仍然尋址到ρ;),并且
由于該鄰居沒有針對不經(jīng)由地址的修復(fù)路徑,因此它將丟棄分組,因而避免了環(huán)路,如上所 述。還將會看出,在相等代價多路徑路由(ECMP)可用或者下游路徑路由可用的拓撲 的情況下,則這些可以相應(yīng)地實現(xiàn)。例如,在下游路徑或無環(huán)路備用(LFA)存在的情況下, 諸如節(jié)點S之類的修復(fù)節(jié)點可以在適當?shù)那樾沃杏闷鋪硖娲唤?jīng)由修復(fù)機制。類似地,路 由器可以使用ECMP修復(fù)來替代不經(jīng)由修復(fù)。可以看出,這里描述的方案可以適用于很寬范圍的網(wǎng)絡(luò)配置和情形。例如,在多 歸屬前綴(MHP)(這是一個可經(jīng)由網(wǎng)絡(luò)中的不止一個路由器到達的前綴,因而具有“多個歸 屬”)的情況下,可以實現(xiàn)本方案。圖15是示出包括多歸屬前綴Y的網(wǎng)絡(luò)的示圖。該網(wǎng)絡(luò) 包括根據(jù)以上參考圖7所述的連通性的節(jié)點S、P、B和C。另外,節(jié)點S通過路徑1004連接 到節(jié)點Z 1000,節(jié)點B通過路徑1006連接到節(jié)點V 1002。MHP Y (標號1008)附接在節(jié)點 Z、P和V處。在這種情況下,當節(jié)點S發(fā)現(xiàn)節(jié)點P已發(fā)生故障時,其需要將尋址到Y(jié)(通常 可通過P到達)的MHP分組發(fā)送向仍然能夠到達Y的備用路由。參考圖16,圖16是圖示了在轉(zhuǎn)發(fā)MHP分組中涉及到的步驟的流程圖,在步驟1102 中,節(jié)點S在節(jié)點P故障的情況下以上文參考圖7到9所述的方式運行其遞增式SPF,直到 P的所有鄰居和MHP Y(其將是第二近的)的實例被附接。節(jié)點S可以以任何適當方式識別 何時所有的適當節(jié)點被重新附接,例如通過記錄基本SPF期間的所有MHP并確保所有都被 重新附接到遞增式SPF。在框1104中,節(jié)點S將分組封裝到被識別為最近備用節(jié)點的前綴附接點。在這是在節(jié)點Z(S可以在不使用節(jié)點P的情況下到達節(jié)點Z)處的情況下,仍然需要封裝,因為網(wǎng) 絡(luò)中的其他節(jié)點將不會知道節(jié)點P的故障,并且可能將分組環(huán)回S。因此,在框1106中,節(jié) 點Z解封裝分組并將其轉(zhuǎn)發(fā)到節(jié)點X。將會注意到,節(jié)點Z將包括轉(zhuǎn)發(fā)指令,這些轉(zhuǎn)發(fā)指令 確保了針對MHP Y的解封裝分組必須被沿著連接鏈路1010轉(zhuǎn)發(fā)到節(jié)點Y,以避免在仍存在 經(jīng)由P的較低代價路由的情況下的潛在環(huán)回。在備用路由器是節(jié)點V (節(jié)點S經(jīng)由節(jié)點P和節(jié)點B到達節(jié)點V)的情況下,節(jié)點S 必須首先利用正常的不經(jīng)由修復(fù)機制修復(fù)到節(jié)點B的分組。因此,節(jié)點S將針對節(jié)點Y的
分組封裝到。當分組到達節(jié)點B時,節(jié)點B對其解封裝,并且看到以MHP Y為目的地的分
組。由于節(jié)點B已經(jīng)確定節(jié)點P已發(fā)生故障并且將會執(zhí)行與節(jié)點S相同的計算,因此其將 會認識到其對于MHP Y而言的最近附接點是節(jié)點V,從而遵循與在節(jié)點S處執(zhí)行的計算相同 的計算并正常對其進行修復(fù),從而將其封裝到V。在替換方案中,前綴Y可被認為附接到偽節(jié)點N,偽節(jié)點N進而又連接到節(jié)點B、V、 Z中的每一個,在這種情況下,相應(yīng)接口被分配以不經(jīng)由地址,并且實現(xiàn)上述的修復(fù)路徑方 案。將會認識到,“偽節(jié)點”的概念是本領(lǐng)域技術(shù)人員公知的,并且提供了用于處理MHP和 LAN的有用的拓撲發(fā)明,從而這里不需要進行詳細描述。這里描述的方法還適合于用在包含共享風險群組(SRG)的網(wǎng)絡(luò)中,SRG是被識別 為具有同時發(fā)生故障(例如由于共同的物理位置)的概率的網(wǎng)絡(luò)組件的群組。圖17是圖 示了包括共享風險群組的網(wǎng)絡(luò)的示意性網(wǎng)絡(luò)圖,并且與圖7共同的元件用同一標號。另外, 該網(wǎng)絡(luò)包括節(jié)點P,(1200)和P” (1202),其中P,連接在節(jié)點P和A之間,P”連接到節(jié)點A 的另一側(cè)。節(jié)點F(1204)連接到節(jié)點P”,并且節(jié)點G(1206)連接到節(jié)點F。節(jié)點D和E(標 號1208,1210)分別連接到節(jié)點P’和P”。節(jié)點J和K(標號1212,1214)分別連接到節(jié)點D 和E。節(jié)點H(標號1216)連接到節(jié)點C。節(jié)點P、P’、P”形成了 SRG,結(jié)果,如果假定SRG的所有成員同時發(fā)生故障,則不經(jīng)由 地址的范圍指示“不經(jīng)由整個SRG”。換句話說,jZ = A{p,p',p"}。所有路由器計算到將SRG 連接到網(wǎng)絡(luò)的其余部分的接口的每個不經(jīng)由地址的不經(jīng)由路由,該計算是通過同時使單個 遞增式SPF中的SRG的所有成員(P、P’、P”)發(fā)生故障而進行的。為了識別SRG,每個節(jié)點 保持屬于相應(yīng)SRG的網(wǎng)絡(luò)中的節(jié)點的記錄。然后,當與SRG成員相鄰的路由器進行修復(fù)時,其將分組封裝到具有從SRG到目的 地的最低代價路由的路由器的不經(jīng)由地址。例如參考圖17,在S接收到以節(jié)點H為目的地 的分組(正常情況下該分組將經(jīng)由節(jié)點P和C轉(zhuǎn)發(fā))的情況下,在檢測到SRG的故障時,節(jié)
點S將經(jīng)由適當?shù)倪B通性(未示出)將分組封裝到節(jié)點e 。類似地,節(jié)點S將把針對節(jié)點 J的分組封裝到D7,等等。還將會注意到,除了創(chuàng)建針對SRG群組的不經(jīng)由地址以外,也可以針對群組的每 個成員形成個別不經(jīng)由地址。例如,這可以用在首先是有益的時候,例如在群組的成員包括 單個故障點的情況下。以與用于鏈路故障保護相同的方式避免了環(huán)回,這是因為對于鄰居 不經(jīng)由地址不存儲修復(fù)路徑。還將會看出,這里描述的方案可以結(jié)合參考圖18的局域網(wǎng)實現(xiàn),圖18是圖示了 LAN的網(wǎng)絡(luò)圖。節(jié)點S 1300連接到偽節(jié)點N(1302),節(jié)點N自身連接到LAN的成員,節(jié)點
23P (1304)、節(jié)點P,(1306)和P” (1308)。節(jié)點P連接到節(jié)點B (1310)。LAN可被視作SRG的 特殊情形,從而針對LAN的所有成員(這里稱為L)的故障創(chuàng)建不經(jīng)由地址。然后節(jié)點S可 以為流量提供修復(fù)路徑,對于該流量而言其具有避免了 L的替換路徑。如果L能夠測試LAN 的成員(在這種情況下其只能針對LAN上已知的故障節(jié)點使用不經(jīng)由地址),則可以采用更 復(fù)雜的方案。與SRG計算一樣,只需要單個遞增式SPF來計算用于群組L的不經(jīng)由修復(fù)路 徑。當S發(fā)現(xiàn)其丟失了到P的連通性時,其并不確定故障是其自己的到LAN的接口,是 LAN自身,是P的LAN接口還是節(jié)點P。在不進行進一步診斷的情況下,S必須修復(fù)通過P和 B發(fā)送的流量,以不經(jīng)由P、N(即,不經(jīng)由P且不經(jīng)由N)發(fā)送向B,其保守假設(shè)是整個LAN和 P都已發(fā)生故障。P是單個故障點的目的地必須照常利用避免了某一接口的地址發(fā)送向P, 通過該接口 P可從S到達(S卩,不經(jīng)由N到P),對于路由器P’和P”類似。連接到LAN的每 個路由器必須照常針對每個鄰居通告一不經(jīng)由地址。另外,LAN上的每個路由器必須通告 不經(jīng)由偽節(jié)點(N)的額外地址。另外,連接到LAN的路由器的每個鄰居必須通告兩個不經(jīng) 由地址,照常的一個不經(jīng)由該鄰居,而另一個不經(jīng)由該鄰居或偽節(jié)點,如果這種程度的連通 性已經(jīng)通過使用點對點鏈路而實現(xiàn),那么比起其他情況下其將通告的來,正好多一個地址。 如上所述,為了明確地診斷故障網(wǎng)絡(luò)組件,S將來自P的連通性報告和LAN上的其他路由器 中的一個或多個(在這種情況下是P’和P”)關(guān)聯(lián)起來。如果其僅僅丟失了到P的連通性, 則可以推斷出LAN仍然在工作,并且故障發(fā)生在P處,或?qū)連接到LAN的接口處。然后, 其將按通常方式修復(fù)B而不經(jīng)由P (并且對于P是單個故障點的目的地而言,P不經(jīng)由N)。 如果S丟失了到LAN上的不止一個路由器的連通性,其可以推斷出故障只發(fā)生在LAN處,并 且可以修復(fù)到P、P’和P”而不經(jīng)由N,這同樣是按通常方式進行的。如果S發(fā)生故障,則路 由器A需要能夠修復(fù)到LAN上的每一路由器而不經(jīng)由S,這是利用不經(jīng)由S地址的集合按通 常方式實現(xiàn)的。提供了較低的故障后連通性但是使用較少地址的替換方案是將LAN和其所 有的連接路由器看作是單個SRG。從而,不經(jīng)由LAN的地址P (Pl)將要求不經(jīng)由連接到LAN 的任何路由器到達P。在這種情況下,當S檢測到P已經(jīng)發(fā)生故障時,S會將經(jīng)由P和B到 達的流量發(fā)送向B,而不經(jīng)由LAN或附接到LAN(S卩,附接到Bi)的任何路由器。任何只能通 過P到達的目的地都將被尋址到P,而不經(jīng)由LAN或附接到LAN的任何路由器(當然除了 P)。該方案同樣可結(jié)合另外的實現(xiàn)方式使用。例如在多播分組的情況下,多播流量按 與單播類似的方式加以修復(fù)。然而,多播轉(zhuǎn)發(fā)器能夠使用多播分組被尋址到的不經(jīng)由地址 作為預(yù)期接收器接口的指示,從而正確地運行所需的反向路徑轉(zhuǎn)發(fā)(RPF)檢查。此外,可以采用這樣的技術(shù),例如在某一節(jié)點的前一節(jié)點處剝離隧道頭部,然后該 節(jié)點將把未經(jīng)封裝的分組轉(zhuǎn)發(fā)到期望修復(fù)端點。該方案在Michael Shand等人于2003年 7 月 15 日提交的題為“Method and Apparatus for Forwarding a Tunneled Packet in a Data Communications Network”的同樣未決的專利申請 No. 10/620, 866 ( “Shand 等 III,,) 中有所描述,這里通過引用并入該申請的全部內(nèi)容,用于所有目的,就好像在這里完全記載 了一樣。還將會看出,這里描述的方法可以結(jié)合替換的路由協(xié)議或轉(zhuǎn)發(fā)范例實現(xiàn)。一種這 樣的范例是MPLS (多協(xié)議標簽交換)。MPLS是一種對于本領(lǐng)域技術(shù)人員來說公知的協(xié)議,
24并且在文檔“Multi Protocol Label Switching Architecture”中有所描述,該文檔可以 在萬維網(wǎng)上的域“ietf. org”的目錄“rfc”中的文件“rfc3031. txt”處得到。根據(jù)MPLS,建 立用于源-目的地對的完整路徑,并且用于在路徑中的相鄰路由器之間轉(zhuǎn)發(fā)分組以及頭部 或“標簽”所需的值被前插到分組上。標簽將分組引導(dǎo)至正確的接口和下一跳。標簽在IP 或其他頭部之前從而允許更小的外出頭部。用于源_目的地對的路徑(稱為標簽交換路徑,LSP)可以根據(jù)各種不同的方案建 立。一種這樣的方案是標簽分發(fā)協(xié)議(LDP),其中路徑中的每個路由器將其標簽發(fā)送到路徑 上根據(jù)其IP路由表確定的下一跳路由器?;蛘撸梢哉{(diào)用資源預(yù)留協(xié)議(RSVP),在這種情 況下,例如網(wǎng)絡(luò)管理員可以管理路徑,從而提供了嚴格的源路由。具體而言,LDP將按通常 方式分發(fā)用于不經(jīng)由地址的標簽。因此,不經(jīng)由修復(fù)機制可以用于提供MPLS網(wǎng)絡(luò)中的修復(fù) 路徑,這是通過首先推入修復(fù)點用來轉(zhuǎn)發(fā)分組的標簽,然后推入與實現(xiàn)修復(fù)所需要的不經(jīng) 由地址相對應(yīng)的標簽而實現(xiàn)的。例如,參考圖7,在節(jié)點S有以節(jié)點D為目的地的分組(節(jié) 點D正常情況下經(jīng)由節(jié)點P和B到達)的情況下,在節(jié)點P已發(fā)生故障時,節(jié)點S首先推入
B針對D的標簽,然后推入其到;67 (節(jié)點X)的下一跳到達B7所需的標簽,S卩[Bd,NBp]。同
樣地,不經(jīng)由地址已被傳播并且被認識,因此該方案被簡單地實現(xiàn)。將會注意到,節(jié)點S需 要節(jié)點B針對D的標簽,Bd。這可以按任何適當?shù)姆绞綄崿F(xiàn),例如有向LDP會話。為了獲得 所有適當?shù)臉撕?,?jié)點S可以與節(jié)點P的鄰居中的每一個(在節(jié)點修復(fù)的情況下)或所有 的出口路由器(在SRG的情況下)執(zhí)行有向LDP會話。在鏈路修復(fù)的情況下,節(jié)點S將已 經(jīng)具有節(jié)點P針對D的標簽,PD,因為P是鄰居節(jié)點。當然,可以采用任何適當?shù)挠糜讷@得 修復(fù)點針對目的地節(jié)點的標簽的方式,例如Swallow等人描述的任何適當?shù)姆桨??;蛘?,該方案同樣可以利用諸如距離或路徑向量之類的路由向量協(xié)議實現(xiàn),其中 通告節(jié)點向所有其他節(jié)點通告其到目的地的完整路由或向量。在這種情況下,節(jié)點P實際
上通過忽略針對其每個鄰居、Bf、cZ、s7的向量來通告其不經(jīng)由地址。結(jié)果,如果
P發(fā)生故障,則在任何節(jié)點處都沒有任何關(guān)于在任何情況下如何經(jīng)由P到達B的信息,因此 其實際上具有經(jīng)由另一節(jié)點選擇的不經(jīng)由路由。結(jié)果,所有節(jié)點將計算不穿過節(jié)點P的路還將會看出,所述方法可以跨網(wǎng)絡(luò)實現(xiàn),其中所有路由器都能夠計算不經(jīng)由地址 并因而充當參與節(jié)點,其中只有路由器的一部分被啟用或者其中某些路由器被部分啟用。 在所有路由器都被啟用并且具有修復(fù)地址能力的情況下,很清楚該方法可以非常簡單地按 上述方式實現(xiàn)。在某些路由器被啟用而其他路由器不被啟用的情況下,當計算不經(jīng)由路徑 時,未被啟用的節(jié)點被從基本拓撲中去除。結(jié)果,所計算的到不經(jīng)由地址的任何一條路由都 不會嘗試穿過未被啟用的節(jié)點,從而未被啟用的節(jié)點將不會接收到它們未被配備來進行處 理的不經(jīng)由地址。路由器可能被部分啟用,例如以使得它們能夠自己導(dǎo)出修復(fù)路徑,并因而 接收分組并正確地轉(zhuǎn)發(fā)分組到不經(jīng)由地址,而不是它們自己充當執(zhí)行上述的封裝和轉(zhuǎn)發(fā)步 驟的鄰居路由器。在這種情況下,部分啟用的路由器可以被包括在修復(fù)拓撲中,但是它們自 身不能鼓勵修復(fù)。這里描述的方法被實現(xiàn)的方式(其中軟件、固件、硬件或其任意組合并且具有任 何適當?shù)拇a改變)對于本領(lǐng)域技術(shù)人員來說是清楚的,這里不需要進行詳細描述。例如,對諸如內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)之類的通信協(xié)議的擴展可能需要擴展。具體而言,直接連接到 受保護的網(wǎng)絡(luò)組件的每個被啟用的路由器將通告針對該組件的不經(jīng)由地址,通告方式使得 受保護組件和不經(jīng)由地址之間的關(guān)聯(lián)可以由網(wǎng)絡(luò)中的其他路由器確定,如上所述。此外,被 啟用的路由器可以通告其用于計算并實現(xiàn)IGP中的不經(jīng)由路由的能力以及它們支持的封 裝類型,例如IP in IP、GRE、L2TPv3,所有這些都是本領(lǐng)域技術(shù)人員公知的。被分配為不經(jīng)由地址的地址可以是例如從網(wǎng)絡(luò)的私有地址空間取得的任何適當 的地址。任何適當?shù)姆庋b都可用于攜帶不經(jīng)由修復(fù),例如IP inIP、GRE或L2TPV3。類似地, 可以采用任何備用封裝方案,只要封裝路由器和被封裝分組作為修復(fù)點尋址到的路由器具 有處理所選的封裝類型的常見能力即可。作為上述方案的結(jié)果,應(yīng)用了一種簡單的過程,根據(jù)該過程,只需要單級封裝,并 且由于所有節(jié)點實際上都計算最短修復(fù)路徑,因此其提供了針對任何故障的最短修復(fù)路 徑。此外,將會看出,解封裝分組可以“返回”,即被轉(zhuǎn)發(fā)到其已經(jīng)經(jīng)由隧道到達但是仍然利 用正常轉(zhuǎn)發(fā)加以轉(zhuǎn)發(fā)的一個或多個節(jié)點,而不向目的地環(huán)回,這是因為修復(fù)點離目的地更 近。
權(quán)利要求
一種設(shè)備,包括一個或多個處理器;網(wǎng)絡(luò)接口,該網(wǎng)絡(luò)接口通信地耦合到所述一個或多個處理器并且被配置為在網(wǎng)絡(luò)中所述一個或多個處理器之間傳輸一個或多個分組流;存儲器,該存儲器耦合到所述處理器并且包括用于路由協(xié)議的轉(zhuǎn)發(fā)信息庫(FIB);在網(wǎng)絡(luò)中可作為第一網(wǎng)絡(luò)節(jié)點操作的邏輯,該邏輯耦合到所述一個或多個處理器并且包括一個或多個存儲的指令序列,所述指令序列在被一個或多個處理器執(zhí)行時使得所述一個或多個處理器執(zhí)行發(fā)起用于為所述第一網(wǎng)絡(luò)節(jié)點和第二網(wǎng)絡(luò)節(jié)點之間的第一鏈路創(chuàng)建和存儲修復(fù)路徑信息的不經(jīng)由方案;創(chuàng)建和存儲不經(jīng)由修復(fù)路徑穿過的其他網(wǎng)絡(luò)節(jié)點的列表;在所述FIB中創(chuàng)建和存儲條目,所述條目標識所述網(wǎng)絡(luò)節(jié)點的修復(fù)地址并且使得(a)想去往所有通常通過所述第一鏈路可達的地址的分組被封裝到所述第二節(jié)點而不經(jīng)由所述第一節(jié)點,(b)想去往通常通過所述第一鏈路可達的不經(jīng)由地址的分組被封裝到所述第二節(jié)點而不經(jīng)由所述第一節(jié)點,并且(c)當通常通過所述第一鏈路可達的不經(jīng)由地址在所述列表中時丟棄想去往該不經(jīng)由地址的分組;對于所述第一網(wǎng)絡(luò)節(jié)點的所有其他鏈路重復(fù)前述步驟。
2.如權(quán)利要求1所述的設(shè)備,其中所述邏輯還包括在被執(zhí)行時使得所述一個或多個 處理器執(zhí)行以下步驟的指令根據(jù)所述FIB中的條目確定一對或多對相互不兼容的鏈路故 障;利用所述路由協(xié)議,將所述一對或多對作為次級共享風險鏈路群組來加以通告。
3.如權(quán)利要求1所述的設(shè)備,其中所述邏輯還包括在被執(zhí)行時使得經(jīng)由相應(yīng)的修復(fù)路 徑發(fā)送以修復(fù)地址為目的地的網(wǎng)絡(luò)流量的指令。
4.如權(quán)利要求1所述的設(shè)備,其中所述邏輯還包括在被執(zhí)行時使得執(zhí)行以下步驟的指令 確定發(fā)生了所述第一鏈路和第二鏈路的同時故障;確定針對所述第一鏈路的第一修復(fù)路徑穿過所述第二鏈路,并且針對所述第二鏈路的 第二修復(fù)路徑穿過所述第一鏈路;確定分組丟棄計數(shù)大于指定的閾值,針對重收斂正在使用抑制步驟,并且正在使用無 環(huán)路收斂機制;響應(yīng)于最終確定步驟,向?qū)崿F(xiàn)所述路由協(xié)議的邏輯發(fā)送“放棄所有希望”通知,用于強 制正常重收斂開始。
5.如權(quán)利要求2所述的設(shè)備,其中所述邏輯還包括在被執(zhí)行時使得所述一個或多個處 理器執(zhí)行以下步驟的指令為每個鄰居節(jié)點確定每個修復(fù)路徑所穿過的節(jié)點對的列表;執(zhí) 行以每個對的第一節(jié)點為根的最短路徑優(yōu)先(SPF)計算,其中去除了到第二節(jié)點的鏈路; 確定所得到的鏈路是否包括所述第一鏈路。
6.如權(quán)利要求1所述的設(shè)備,其中所述第一網(wǎng)絡(luò)節(jié)點包括充當修復(fù)節(jié)點的鄰居節(jié)點, 并且所述邏輯還包括在被執(zhí)行時使得所述修復(fù)節(jié)點執(zhí)行以下步驟的指令針對所述第二網(wǎng) 絡(luò)節(jié)點的目的地地址識別一修復(fù)地址作為封裝修復(fù)端點,用于在所述第二網(wǎng)絡(luò)節(jié)點不可用 的情況下對所述目的地地址的修復(fù)。
7.如權(quán)利要求1所述的設(shè)備,其中所述網(wǎng)絡(luò)包括多歸屬前綴,并且所述邏輯還包括在被執(zhí)行時使得執(zhí)行以下步驟的指令確定到多歸屬前綴的附接點是否能夠在沒有修復(fù)路徑 的情況下到達,并且如果是則將分組封裝到所述附接點;并且如果到多歸屬前綴的附接點 僅能經(jīng)由修復(fù)路徑到達,則將流量封裝到相應(yīng)的修復(fù)地址。
8.如權(quán)利要求1所述的設(shè)備,其中所述路由協(xié)議是鏈路狀態(tài)路由協(xié)議、MPLS路由協(xié)議 或距離向量路由協(xié)議中的任何一種。
9.如權(quán)利要求1所述的設(shè)備,其中所述第一鏈路是共享風險鏈路群組。
10.如權(quán)利要求1所述的設(shè)備,其中所述邏輯還包括在被執(zhí)行時使得執(zhí)行以下步驟的 指令通過執(zhí)行以所述列表中的每個其他節(jié)點為根的SPF計算來確定一個或多個額外的修復(fù)路徑;在所述FIB中創(chuàng)建和存儲條目,這些條目使得在所述第一網(wǎng)絡(luò)節(jié)點在所述一個或多個 額外的修復(fù)路徑中的情況下,丟棄想去往在所述一個或多個額外修復(fù)路徑中的不經(jīng)由地址 的分組。
11.如權(quán)利要求1所述的設(shè)備,其中所述邏輯還包括在被執(zhí)行時使得對于所述一個或 多個額外修復(fù)路徑中的每一個遞歸地重復(fù)權(quán)利要求10的步驟的指令。
12.—種計算機可讀存儲介質(zhì),包括一個或多個存儲的指令序列,所述指令序列在被網(wǎng) 絡(luò)中的第一網(wǎng)絡(luò)節(jié)點的一個或多個處理器執(zhí)行時使得所述一個或多個處理器執(zhí)行發(fā)起用于為所述第一網(wǎng)絡(luò)節(jié)點和第二網(wǎng)絡(luò)節(jié)點之間的第一鏈路創(chuàng)建和存儲修復(fù)路徑 信息的不經(jīng)由方案;創(chuàng)建和存儲不經(jīng)由修復(fù)路徑穿過的其他網(wǎng)絡(luò)節(jié)點的列表;在用于路由協(xié)議的轉(zhuǎn)發(fā)信息庫(FIB)中創(chuàng)建和存儲條目,所述條目標識所述網(wǎng)絡(luò)節(jié)點 的修復(fù)地址并且使得(a)想去往所有通常通過所述第一鏈路可達的地址的分組被封裝到 所述第二節(jié)點而不經(jīng)由所述第一節(jié)點,(b)想去往通常通過所述第一鏈路可達的不經(jīng)由地 址的分組被封裝到所述第二節(jié)點而不經(jīng)由所述第一節(jié)點,并且(c)當通常通過所述第一鏈 路可達的不經(jīng)由地址在所述列表中時丟棄想去往該不經(jīng)由地址的分組;對于所述第一網(wǎng)絡(luò)節(jié)點的所有其他鏈路重復(fù)前述步驟。
13.如權(quán)利要求12所述的計算機可讀存儲介質(zhì),還包括在被執(zhí)行時使得所述一個或多 個處理器執(zhí)行以下步驟的指令根據(jù)所述FIB中的條目確定一對或多對相互不兼容的鏈路 故障;利用所述路由協(xié)議,將所述一對或多對作為次級共享風險鏈路群組來加以通告。
14.如權(quán)利要求12所述的計算機可讀存儲介質(zhì),還包括在被執(zhí)行時使得執(zhí)行以下步驟 的指令確定發(fā)生了所述第一鏈路和第二鏈路的同時故障;確定針對所述第一鏈路的第一修復(fù)路徑穿過所述第二鏈路,并且針對所述第二鏈路的 第二修復(fù)路徑穿過所述第一鏈路;確定分組丟棄計數(shù)大于指定的閾值,針對重收斂正在使用抑制步驟,并且正在使用無 環(huán)路收斂機制;響應(yīng)于最終確定步驟,向?qū)崿F(xiàn)所述路由協(xié)議的邏輯發(fā)送“放棄所有希望”通知,用于強 制正常重收斂開始。
15.如權(quán)利要求12所述的計算機可讀存儲介質(zhì),其中還包括在被執(zhí)行時使得所述一個或多個處理器執(zhí)行以下步驟的指令為每個鄰居節(jié)點確定每個修復(fù)路徑所穿過的節(jié)點對的 列表;執(zhí)行以每個對的第一節(jié)點為根的最短路徑優(yōu)先(SPF)計算,其中去除了到第二節(jié)點 的鏈路;確定所得到的鏈路是否包括所述第一鏈路。
16.如權(quán)利要求12所述的計算機可讀存儲介質(zhì),其中所述路由協(xié)議是鏈路狀態(tài)路由協(xié) 議、MPLS路由協(xié)議或距離向量路由協(xié)議中的任何一種。
17.如權(quán)利要求12所述的計算機可讀存儲介質(zhì),還包括在被執(zhí)行時使得執(zhí)行以下步驟 的指令通過執(zhí)行以所述列表中的每個其他節(jié)點為根的SPF計算來確定一個或多個額外的修復(fù)路徑;在所述FIB中創(chuàng)建和存儲條目,這些條目使得在所述第一網(wǎng)絡(luò)節(jié)點在所述一個或多個 額外的修復(fù)路徑中的情況下,丟棄想去往在所述一個或多個額外修復(fù)路徑中的不經(jīng)由地址 的分組。
18.如權(quán)利要求17所述的計算機可讀存儲介質(zhì),還包括在被執(zhí)行時使得所述一個或 多個處理執(zhí)行對于所述一個或多個額外修復(fù)路徑中的每一個遞歸地重復(fù)權(quán)利要求17的步馬聚ο
19.一種由計算機實現(xiàn)的方法,包括發(fā)起用于為第一網(wǎng)絡(luò)節(jié)點和第二網(wǎng)絡(luò)節(jié)點之間的第一鏈路創(chuàng)建和存儲修復(fù)路徑信息 的不經(jīng)由方案;創(chuàng)建和存儲不經(jīng)由修復(fù)路徑穿過的其他網(wǎng)絡(luò)節(jié)點的列表;在所述FIB中創(chuàng)建和存儲條目,所述條目標識所述網(wǎng)絡(luò)節(jié)點的修復(fù)地址并且使得(a) 想去往所有通常通過所述第一鏈路可達的地址的分組被封裝到所述第二節(jié)點而不經(jīng)由所 述第一節(jié)點,(b)想去往通常通過所述第一鏈路可達的不經(jīng)由地址的分組被封裝到所述第 二節(jié)點而不經(jīng)由所述第一節(jié)點,并且(c)當通常通過所述第一鏈路可達的不經(jīng)由地址在所 述列表中時丟棄想去往該不經(jīng)由地址的分組;對于所述第一網(wǎng)絡(luò)節(jié)點的所有其他鏈路重復(fù)前述步驟。
20.如權(quán)利要求19所述的方法,還包括根據(jù)所述FIB中的條目確定一對或多對相互不 兼容的鏈路故障;利用所述路由協(xié)議,將所述一對或多對作為次級共享風險鏈路群組來加 以通告。
21.如權(quán)利要求19所述的方法,還包括 確定發(fā)生了所述第一鏈路和第二鏈路的同時故障;確定針對所述第一鏈路的第一修復(fù)路徑穿過所述第二鏈路,并且針對所述第二鏈路的 第二修復(fù)路徑穿過所述第一鏈路;確定分組丟棄計數(shù)大于指定的閾值,針對重收斂正在使用抑制步驟,并且正在使用無 環(huán)路收斂機制;響應(yīng)于最終確定步驟,向?qū)崿F(xiàn)所述路由協(xié)議的邏輯發(fā)送“放棄所有希望”通知,用于強 制正常重收斂開始。
22.如權(quán)利要求19所述的方法,還包括為每個鄰居節(jié)點確定每個修復(fù)路徑所穿過的 節(jié)點對的列表;執(zhí)行以每個對的第一節(jié)點為根的最短路徑優(yōu)先(SPF)計算,其中去除了到 第二節(jié)點的鏈路;確定所得到的鏈路是否包括所述第一鏈路。
全文摘要
文檔編號H04L12/56GK101953124SQ20098010526
公開日2011年1月19日 申請日期2009年2月9日 優(yōu)先權(quán)日2008年2月15日
發(fā)明者Shand Ian Michael Charles, Bryant Stewart Frederick 申請人:Cisco Tech Inc