專利名稱:一種快速路由收斂方法
技術領域:
本發明涉及通信技術領域,具體說是一種快速路由收斂方法。
背景技術:
現有的路由算法可以分為兩大類基于距離矢量路由算法和基于鏈路狀態路由算法。基于距離矢量路由算法中,每個路由節點(簡稱為節點)從其鄰居處獲得路由信息,并在每一條路由信息上疊加從自己到這個鄰居的距離矢量,從而形成自己的路由信息,如路由信息協議(Routing Information Protocol, RIP)。基于鏈路狀態路由算法中,每個路由節點將自己與鄰居節點的鏈路信息通告給網絡中的其他所有路由節點,然后每個路由節點執行最短路徑優先(Short e s t PathFirst, SPF)算法,找出自己到其他所有節點的最優路由。典型的鏈路狀態路由協議有中間系統到中間系統(Intermediate System to Intermediate System, ISIS)協議和開放最短路徑優先(Open Shortest Path First,0SPF)協議。雖然ISIS和OSPF在功能上有些差異,但其基本原理算法都是一樣的。OSPF是為IP協議簇而開發的,而ISIS是針對開放系統互聯(Open System Interconnect, 0SI)參考模型開發的,隨后才被擴展支持IP。鏈路狀態路由協議必須發現鄰居,分發學習路由地址、鏈路開銷(與帶寬、時延等有關)等。這些信息都包含在鏈路狀態分組(Link State Packet,LSP)中。不同節點產生的LSP都有自己唯一的標識(Identification, ID),使用遞增的序列號來區分LSP的新舊。ID相同的LSP,序列號大的表示最近生成的,將用于路由計算。LSP在網絡中洪泛,生成鏈路狀態信息庫(Link State Database,LSDB)。然后每個路由節點啟用一種廣泛應用的稱作Dijkstra的SPF算法(簡稱為Di jkstra算法,迪杰斯特拉算法),計算出到達所有其他路由節點的最短路徑。該算法(指稱作Dijkstra的SPF算法)是一個迭代的構造最短路徑樹(Shortest Path Tree, SPT)的過程,其基本思路是根據節點鏈路狀態信息庫中描述的拓撲信息構建最短路徑樹,然后將鏈路狀態信息庫中描述的路由信息作為樹上的葉子生成最終路由。現有的路由計算對CPU (中央處理器單元)要求很高。對于鏈路狀態路由協議來說,一旦網絡中有鏈路狀態發生變化(鏈路UP、DOWN或者開銷改變等),網絡中的所有路由節點都會重新計算路由,執行Dijkstra算法。重新計算路由的過程對于小網絡而言,影響不大。但是隨著網絡IP化進程的加劇,網絡規模不斷擴大,一個網絡中可能有成千上萬的節點。對于網絡拓撲比較復雜、路由節點數量也很大的現代網絡而言,每進行一次全部路由的計算都會占用大量系統資源,對系統造成很大沖擊,同時,由于處理工作量太大造成耗時太長而無法滿足路由快速收斂的需求。目前已經有一些減少SPF計算次數的方法提出來,如設置指數增長的連續SPF計算間隔,防止過度頻繁的路由計算,這種方法雖然降低了 CPU的占用率,卻又導致路由節點無法對鏈路變化立即做出反應,從而降低了路由收斂速度。
5
Dijkstra算法涉及到兩個重要的數據結構。一個是PATH,即路由節點執行計算之后的最短路徑,是一個方向圖。另一個是TENT,一個臨時數據庫,表示候選節點,當TENT為空時,路由計算即結束。大的網絡拓撲中,網絡總是在動態變化的,可能有鏈路的斷開,有節點離開這個網絡,也有可能有新的節點加入,鏈路狀態信息庫也會隨之更新,從而路由也重新計算和安裝。對于基于鏈路狀態路由算法,只要有鏈路發生了改變,網絡中的每個節點必須要對整個網絡拓撲重新計算路由,以自身為根節點執行Dijkstra算法,這導致了少數節點的變化會觸發全網所有節點的路由重新計算,占用大量系統資源,對系統造成很大沖擊。實際上大多數情形是沒有必要的,因為有一部分的鏈路并不會在SPT上,網路中實際鏈路的數目通常都比SPT上的多。另外,大多鏈路都是靠近葉子節點的,即遠離根節點,只會影響少數的節點。現有的技術在進行路由計算的過程中,其中大多數重新計算是不必要的,由于不能有選擇性的處理,從而浪費了大量的CPU,降低了收斂速度。
發明內容
針對現有技術中存在的缺陷,本發明的目的在于提供一種快速路由收斂方法,對路由算法本身的計算和更新進行了優化,既可以快速響應拓撲變化,又可以減少CPU負載。為達到以上目的,本發明采取的技術方案是一種快速路由收斂方法,其特征在于,包括以下步驟步驟1,預先評估網絡拓撲的變化情況當網絡中的任意一個路由節點在收到新的鏈路狀態分組LSP之后,該收到新的鏈路狀態分組LSP的路由節點并不立即啟動Dijkstra算法進行整個拓撲的路由重新計算,而是根據當前最短路徑優先樹SPT、鏈路狀態信息庫LSDB信息及新的鏈路狀態分組LSP所含鄰居節點的信息,分析網絡拓撲的變化情況,將網絡拓撲的變化情況分為以下四類—是有一個葉子節點加入網絡;計為easel ;二是網絡拓撲沒有發生變化,只是有一些路由信息發生了改變;計為case2 ;三是鏈路斷開;計為case3 ;四是其他情形;計為case4 ;步驟2,根據網絡拓撲的變化情況決定參與SPF計算的節點并計算路由對于第一類拓撲變化,以當前的SPT為基礎作為已知PATH,新加入的節點作為備選節點加入TENT,執行Dijkstra算法,并更新新加入節點的IP可達信息;對于第二類拓撲變化,以當前的SPT為基礎作為已知PATH,備選節點TENT為空,執行Dijkstra算法,直接跳過SPF計算的過程,只是更新變化了的IP可達信息;對于第三類拓撲變化,有兩種情形,一種是不在SPT上的鏈路斷開,不進行任何操作,另一種是在SPT上的鏈路斷開,以當前的SPT為基礎,刪除受影響的節點之后作為已知的PATH,受影響的節點作為備選節點加入TENT,執行Dijkstra算法,更新受影響節點的IP可達信息;對于第四類拓撲變化,均以自身為根節點重新執行完整的SPF計算,并更新所有的IP可達信息。在上述技術方案的基礎上,所述預先評估網絡拓撲的變化情況由拓撲分析模塊處
6理,所述根據網絡拓撲的變化情況決定參與SPF計算的節點并計算路由由路由處理模塊處理。在上述技術方案的基礎上,檢測到網絡中節點或是鏈路有變化的節點會產生相應的LSP并向全網通告該變化,所述變化包括有節點離開、有新的節點加入、有鏈路斷開或有節點接口狀態發生變化。在上述技術方案的基礎上,LSP用于描述一個路由節點的鏈路狀態信息,用LSP ID標識,LSP中記錄了鄰居的LSP ID和IP可達信息;LSDB是路由節點自身的LSP以及從其他節點接收到的LSP的集合;節點加入SPT后則從SPT獲得其對應的LSP頂點信息;LSP和LSP頂點信息二者通過LSP ID互相關聯。在上述技術方案的基礎上,預先評估網絡拓撲的變化情況的具體步驟如下步驟1,當網絡中的路由節點接收到一個新的LSP之后,拓撲分析模塊首先會判斷LSDB中是否已有相同LSP ID對應的LSP信息,如果沒有,轉步驟2,如果有,轉步驟3 ;步驟2,判斷新LSP對應的路由節點是否在SPT上,如果是,則網絡拓撲的變化情況為case4,判斷結束,如果不是,轉步驟2. I ;步驟2. I,根據新LSP中的鄰居LSP ID判斷新LSP中是否有且只有一個鄰居,如果是,則網絡拓撲的變化情況為casel,判斷結束,如果不是,則轉步驟2. 2 ;步驟2. 2,判斷新LSP中鄰居的數量是否大于1,如果是,則網絡拓撲的變化情況為case4,判斷結束,如果不是,則表示沒有鄰居,直接結束判斷,并不進行路由計算;步驟3,判斷舊LSP對應的路由節點是否在SPT上,如果是則轉步驟4,如果不是則轉步驟2. 1,步驟4,判斷舊LSP中是否有鄰居信息,如果沒有,則轉步驟2. 1,如果有,則轉步驟5,步驟5,判斷新LSP和舊LSP中鄰居信息是否不同,如果新LSP和舊LSP鄰居信息完全相同,表示僅有一些IP可達信息的變化,則網絡拓撲的變化情況為case2,判斷結束;如果新LSP和舊LSP鄰居不同,則轉步驟6 ;步驟6,判斷新LSP中有的鄰居在舊LSP中有沒有,如果新的LSP中包含舊的LSP中沒有的鄰居節點,則網絡拓撲的變化情況為case4,判斷結束;如果新的LSP中不包含舊的LSP中沒有的鄰居節點,則轉步驟7,步驟7,判斷舊LSP中有的鄰居在新LSP中有沒有,如果舊LSP中的一個鄰居在新LSP中沒有,而且僅此一個鄰居沒有,表示第一次檢測到只有一條鏈路斷開,則網絡拓撲的變化情況為case3,判斷結束;否則,網絡拓撲的變化情況為case4,判斷結束。在上述技術方案的基礎上,如果在當前拓撲變化情形為casel_case3的任意一種情形時,此時再收到新的LSP時,所有情形均直接判定為case4。在上述技術方案的基礎上,路由處理模塊對于casel,執行葉子節點加入時的SPF計算;路由處理模塊對于case2,直接跳過SPF計算的過程,只是更新變化了的IP可達信
路由處理模塊對于case3,執行鏈路斷開時的SPF計算,更新受影響節點的IP可達
信息;路由處理模塊對于case4,從根節點開始重新執行完整的SPF計算,并更新所有的IP可達信息。在上述技術方案的基礎上,執行葉子節點加入時的SPF計算的具體步驟如下葉子節點加入網絡時,首先判斷葉子節點的父節點是否在SPT上,如果葉子節點的父節點不在SPT上,則對所有節點執行SPF計算;如果葉子節點的父節點在SPT上,則將父節點的所有鄰居加入TENT表,然后判斷葉子節點是否在父節點的TENT表中,如果葉子節點不在父節點的TENT表中,則清空TENT表后再對所有節點執行SPF計算;如果葉子節點在父節點的TENT表中,則將葉子節點指向其父節點,并從TENT列表中將該葉子節點刪除,并在SPT上注冊。在上述技術方案的基礎上,執行鏈路斷開時的SPF計算的具體步驟如下如果為鏈路斷開的情形,則記錄下當前nLSP及nlsp中缺少的對端鄰居nbrLSP,所述nLSP為新收到的LSP,所述nbrLSP為斷開鏈路另一端節點的LSP ;記錄后判斷nLSP對應的頂點V是否在SPT上,如果nLSP對應的頂點V不在SPT上,則執行全部節點的路由重新計算,同case4 ;否則進一步判斷nbrLSP對應的頂點W是否在SPT上,如果nbrLSP對應的頂點W不在SPT上,則執行全部節點的路由重新計算,同case4 ;否則即頂點V和頂點W都在SPT上,則判斷W和V關系;如果W不是V的孩子節點,V也不是W的孩子節點,則表示該鏈路并不在SPT上,無需路由計算和路由更新,計算結束;如果W不是V的孩子節點,而V是W的孩子,則將W和V互換,使V表示節點,W表示孩子節點;如果W是V的孩子節點,則不用互換W和V,V表示節點,W表示孩子節點;至此,滿足了條件“V表示節點,W表示孩子節點”,則從SPT上刪除W節點及其孩子節點,將這些被刪除的節點加入TENT列表中,再對TENT列表中的節點執行SPF計算,將其逐一重新附加到SPT上,計算結束。本發明所述的快速路由收斂方法,對路由算法本身的計算和更新進行了優化,既可以快速響應拓撲變化,又可以減少CPU負載。實際網絡應用中,某些鏈路狀態信息的變化并不需要讓所有路由都全部重新計算,本發明所述的方法通過預先評估網絡拓撲的變化情況,使得重新進行路由計算的波及面控制在最小范圍內,節約了系統的CPU資源并加快了由鏈路狀態變化引發的路由收斂速度。
本發明有如下附圖圖I是本發明中一個基本的網絡拓撲圖,圖2是本發明中拓撲分析模塊的處理流程圖,圖3是本發明中路由處理模塊的處理流程圖,圖4是本發明中葉子節點加入時的SPF計算流程圖,
圖5是本發明中鏈路斷開時SPF計算的流程圖。
具體實施例方式以下結合附圖對本發明作進一步詳細說明。本發明所述的快速路由收斂方法,包括以下步驟步驟1,預先評估網絡拓撲的變化情況當網絡中的任意一個路由節點在收到新的鏈路狀態分組LSP之后,該收到新的鏈路狀態分組LSP的路由節點并不立即啟動Dijkstra算法進行整個拓撲的路由重新計算,而是根據當前最短路徑優先樹SPT、鏈路狀態信息庫LSDB信息及新的鏈路狀態分組LSP所含鄰居節點的信息,分析網絡拓撲的變化情況,將網絡拓撲的變化情況分為以下四類一是有一個葉子節點加入網絡;二是網絡拓撲沒有發生變化,只是有一些路由信息發生了改變;三是鏈路斷開;四是其他情形;步驟2,根據網絡拓撲的變化情況決定參與SPF計算的節點并計算路由對于第一類拓撲變化,以當前的SPT為基礎作為已知PATH,新加入的節點作為備選節點加入TENT,執行Dijkstra算法,并更新新加入節點的IP可達信息;對于第二類拓撲變化,以當前的SPT為基礎作為已知PATH,備選節點TENT為空,執行Dijkstra算法,直接跳過SPF計算的過程,只是更新變化了的IP可達信息;對于第三類拓撲變化,有兩種情形,一種是不在SPT上的鏈路斷開,不進行任何操作,另一種是在SPT上的鏈路斷開,以當前的SPT為基礎,刪除受影響的節點之后作為已知的PATH,受影響的節點作為備選節點加入TENT,執行Dijkstra算法,更新受影響節點的IP可達信息;對于第四類拓撲變化,均以自身為根節點重新執行完整的SPF計算,并更新所有的IP可達信息。本發明通過以上方法,當網絡拓撲或者路由信息發生變化時,系統不需要進行全部路由計算,每次只是根據網絡變化的不同情況做出最精簡的處理,使得路由計算處理工作量降到最低,從而大大節約路由計算所占用的時間。在上述技術方案的基礎上,所述預先評估網絡拓撲的變化情況由拓撲分析模塊處理,所述根據網絡拓撲的變化情況決定參與SPF計算的節點并計算路由由路由處理模塊處理。每個路由節點均通過拓撲分析模塊和路由處理模塊實現了所述的快速路由收斂方法,每個路由節點均使用該快速路由收斂方法。以下通過實施例進一步說明本發明的技術方案。如圖I所示,這是一個網絡拓撲圖形,實線是根據Di jkstra算法計算出的SPT樹,虛線則表示不在該SPT樹上的鏈路。這里執行路由計算的根節點是節點A,節點B和節點C是節點A的孩子,節點A是節點B和節點C的父親。節點D、E、F均為葉子節點。當網絡中節點或者鏈路有任何變化,比如有節點離開或者有新的節點加入,或者有鏈路斷開時,檢測到該變化的節點會產生相應的LSP向全網通告該變化。即檢測到網絡中節點或是鏈路有變化的節點會產生相應的LSP并向全網通告該變化,所述變化包括有節點離開、有新的節點加入、有鏈路斷開或有節點接口狀態發生變化。LSP用于描述一個路由節點的鏈路狀態信息,用LSPID標識,LSP中記錄了鄰居(與自身建立鄰接關系的網絡中其他路由節點)的LSP ID和IP可達信息;LSDB是路由節點自身的LSP以及從其他節點接收到的LSP的集合;節點加入SPT后則從SPT獲得其對應的LSP頂點信息;LSP與LSP頂點中均有LSP ID, 二者(指LSP和LSP頂點信息)通過LSP ID互相關聯;判斷一個節點是否在SPT上,則可以通過查找SPT上是否有該節點LSP ID對應的LSP頂點信息獲知,如果有,則表示該節點在SPT上,如果沒有,則該節點不在SPT上。拓撲分析模塊預先評估網絡拓撲的變化情況,每一個執行快速路由收斂方法的節點根據當前最短路徑優先樹SPT、鏈路狀態信息庫LSDB信息及新的鏈路狀態分組LSP所含鄰居節點的信息,分析網絡拓撲的變化情況,分為四類,如前所述的casel case4。如圖2所示,預先評估的具體過程如下步驟1,當網絡中的路由節點接收到一個新的LSP之后,拓撲分析模塊首先會判斷LSDB中是否已有相同LSP ID對應的LSP信息,如果沒有,轉步驟2,如果有,即舊LSP,轉步驟3 ;步驟2,判斷新LSP對應的路由節點是否在SPT上,如果是,則網絡拓撲的變化情況為case4,判斷結束,即如果LSP是一個新接收到的LSP且其對應的路由節點已經在SPT上,則標記為case4 ;如果不是,轉步驟2. I ;步驟2. I,根據新LSP中的鄰居LSP ID判斷新LSP中是否有且只有一個鄰居,如果是,則網絡拓撲的變化情況為casel,判斷結束,如果不是,則轉步驟2. 2 ;步驟2. 2,判斷新LSP中鄰居的數量是否大于1,如果是,則網絡拓撲的變化情況為case4,判斷結束,如果不是,則表示沒有鄰居,直接結束判斷,并不進行路由計算;即當LSP是一個新收到的LSP且該LSP不在SPT上,如果該新LSP中有且只有一個鄰居信息,表示有一個葉子節點加入網絡,是casel,如有兩個以上鄰居信息則為case4,如沒有鄰居信息則不進行路由計算;步驟3,判斷舊LSP對應的路由節點是否在SPT上,如果是則轉步驟4,如果不是則轉步驟2. 1,步驟4,判斷舊LSP中是否有鄰居信息,如果沒有,則轉步驟2. 1,如果有,則轉步驟5,步驟5,判斷新LSP和舊LSP中鄰居信息是否不同,如果新LSP和舊LSP鄰居信息完全相同,表示僅有一些IP可達信息的變化,則網絡拓撲的變化情況為case2,判斷結束;即如果LSDB中已有該節點的LSP,如果新LSP和舊LSP鄰居相同,表示僅有一些IP可達信息的變化,為case2 ;如果新LSP和舊LSP鄰居不同,則轉步驟6 ;步驟6,判斷新LSP中有的鄰居在舊LSP中有沒有,如果新的LSP中包含舊的LSP中沒有的鄰居節點,則網絡拓撲的變化情況為case4,判斷結束;如果新的LSP中不包含舊的LSP中沒有的鄰居節點,則轉步驟7,步驟7,判斷舊LSP中有的鄰居在新LSP中有沒有,如果舊LSP中的一個鄰居在新LSP中沒有,而且僅此一個鄰居沒有,表示第一次檢測到只有一條鏈路斷開,則網絡拓撲的變化情況為case3,判斷結束;否則,網絡拓撲的變化情況為case4,判斷結束。在上述技術方案的基礎上,由于同時收到多個LSP的判斷較為復雜,本發明針對收到多個LSP的情況特別規定如下如果在當前拓撲變化情形為casel_case3的任意一種情形時,此時再收到新的LSP時,所有情形均直接判定為case4。路由處理模塊按照網絡拓撲的變化情況的不同處理流程如圖3所示。對于casel,執行葉子節點加入時的SPF計算,詳見圖4 ;對于case2,直接跳過SPF計算的過程,只是更新變化了的IP可達信息;對于case3,執行鏈路斷開時的SPF計算,詳見圖5,更新受影響節點的IP可達信息;對于case4,從根節點開始重新執行完整的SPF計算,并更新所有的IP可達信息。可參見前述的步驟2,二者含義相同,僅僅是表述上的區別。如圖4為葉子節點加入時的SPF計算流程圖(casel)。葉子節點加入網絡時,首先判斷葉子節點的父節點是否在SPT上,葉子節點的父節點,即葉子節點LSP中唯一的鄰居節點信息,必須要在SPT上,如果葉子節點的父節點不在SPT上,則執行全部節點的路由計算(即對所有節點執行SPF計算);如果葉子節點的父節點在SPT上,則將父節點的所有鄰居加入TENT表,然后判斷葉子節點是否在父節點的TENT表中,葉子節點必須在父節點的TENT表中,如果葉子節點不在父節點的TENT表中,則清空TENT表后再執行全部節點的路由計算(即對所有節點執行SPF計算);如果葉子節點在父節點的TENT表中,則將葉子節點指向其父節點,并從TENT列表中將該葉子節點刪除,并在SPT上注冊。如圖5為鏈路斷開時SPF計算的流程圖(case3)。如果為鏈路斷開的情形,則記錄下當前nLSP及nlsp中缺少的對端鄰居nbrLSP,所述nLSP為新收到的LSP,所述nbrLSP為斷開鏈路另一端節點的LSP ;記錄后判斷nLSP對應的頂點V是否在SPT上,如果nLSP對應的頂點V不在SPT上,則執行全部節點的路由重新計算,同case4 ;否則進一步判斷nbrLSP對應的頂點W是否在SPT上,如果nbrLSP對應的頂點W不在SPT上,則執行全部節點的路由重新計算,同case4 ;否則即頂點V和頂點W都在SPT上,則判斷W和V關系;如果W不是V的孩子節點,V也不是W的孩子節點,則表示該鏈路并不在SPT上,無需路由計算和路由更新,計算結束;如果W不是V的孩子節點,而V是W的孩子,則將W和V互換,使V表示節點,W表示孩子節點;如果W是V的孩子節點,則不用互換W和V,V表示節點,W表示孩子節點;至此,滿足了條件“V表示節點,W表示孩子節點”,則從SPT上刪除W節點及其孩子節點,將這些被刪除的節點加入TENT列表中,再對TENT列表中的節點執行SPF計算,將其逐一重新附加到SPT上,計算結束。本說明書中未作詳細描述的內容屬于本領域專業技術人員公知的現有技術。
權利要求
1.一種快速路由收斂方法,其特征在于,包括以下步驟步驟1,預先評估網絡拓撲的變化情況當網絡中的任意一個路由節點在收到新的鏈路狀態分組LSP之后,該收到新的鏈路狀態分組LSP的路由節點并不立即啟動Dijkstra算法進行整個拓撲的路由重新計算,而是根據當前最短路徑優先樹SPT、鏈路狀態信息庫LSDB信息及新的鏈路狀態分組LSP所含鄰居節點的信息,分析網絡拓撲的變化情況,將網絡拓撲的變化情況分為以下四類一是有一個葉子節點加入網絡;計為easel ;二是網絡拓撲沒有發生變化,只是有一些路由信息發生了改變;計為case2 ;三是鏈路斷開;計為case3 ;四是其他情形;計為case4 ;步驟2,根據網絡拓撲的變化情況決定參與SPF計算的節點并計算路由對于第一類拓撲變化,以當前的SPT為基礎作為已知PATH,新加入的節點作為備選節點加入TENT,執行Dijkstra算法,并更新新加入節點的IP可達信息;對于第二類拓撲變化,以當前的SPT為基礎作為已知PATH,備選節點TENT為空,執行Dijkstra算法,直接跳過SPF計算的過程,只是更新變化了的IP可達信息;對于第三類拓撲變化,有兩種情形,一種是不在SPT上的鏈路斷開,不進行任何操作,另一種是在SPT上的鏈路斷開,以當前的SPT為基礎,刪除受影響的節點之后作為已知的PATH,受影響的節點作為備選節點加入TENT,執行Dijkstra算法,更新受影響節點的IP可達信息;對于第四類拓撲變化,均以自身為根節點重新執行完整的SPF計算,并更新所有的IP可達信息。
2.如權利要求I所述的快速路由收斂方法,其特征在于所述預先評估網絡拓撲的變化情況由拓撲分析模塊處理,所述根據網絡拓撲的變化情況決定參與SPF計算的節點并計算路由由路由處理模塊處理。
3.如權利要求I所述的快速路由收斂方法,其特征在于檢測到網絡中節點或是鏈路有變化的節點會產生相應的LSP并向全網通告該變化,所述變化包括有節點離開、有新的節點加入、有鏈路斷開或有節點接口狀態發生變化。
4.如權利要求I所述的快速路由收斂方法,其特征在于LSP用于描述一個路由節點的鏈路狀態信息,用LSP ID標識,LSP中記錄了鄰居的LSP ID和IP可達信息;LSDB是路由節點自身的LSP以及從其他節點接收到的LSP的集合;節點加入SPT后則從SPT獲得其對應的LSP頂點信息;LSP和LSP頂點信息二者通過LSP ID互相關聯。
5.如權利要求I所述的快速路由收斂方法,其特征在于預先評估網絡拓撲的變化情況的具體步驟如下步驟1,當網絡中的路由節點接收到一個新的LSP之后,拓撲分析模塊首先會判斷LSDB中是否已有相同LSP ID對應的LSP信息,如果沒有,轉步驟2,如果有,轉步驟3 ;步驟2,判斷新LSP對應的路由節點是否在SPT上,如果是,則網絡拓撲的變化情況為case4,判斷結束,如果不是,轉步驟2. I ;CN 102916879 A書求要利權2/3頁步驟2. 1,根據新LSP中的鄰居LSP ID判斷新LSP中是否有且只有一個鄰居,如果是,則網絡拓撲的變化情況為casel,判斷結束,如果不是,則轉步驟2. 2 ;步驟2. 2,判斷新LSP中鄰居的數量是否大于1,如果是,則網絡拓撲的變化情況為case4,判斷結束,如果不是,則表示沒有鄰居,直接結束判斷,并不進行路由計算;步驟3,判斷舊LSP對應的路由節點是否在SPT上,如果是則轉步驟4,如果不是則轉步驟 2. 1,步驟4,判斷舊LSP中是否有鄰居信息,如果沒有,則轉步驟2. I,如果有,則轉步驟5,步驟5,判斷新LSP和舊LSP中鄰居信息是否不同,如果新LSP和舊LSP鄰居信息完全相同,表示僅有一些IP可達信息的變化,則網絡拓撲的變化情況為case2,判斷結束;如果新LSP和舊LSP鄰居不同,則轉步驟6 ;步驟6,判斷新LSP中有的鄰居在舊LSP中有沒有,如果新的LSP中包含舊的LSP中沒有的鄰居節點,則網絡拓撲的變化情況為case4,判斷結束;如果新的LSP中不包含舊的LSP中沒有的鄰居節點,則轉步驟7,步驟7,判斷舊LSP中有的鄰居在新LSP中有沒有,如果舊LSP中的一個鄰居在新LSP中沒有,而且僅此一個鄰居沒有,表示第一次檢測到只有一條鏈路斷開,則網絡拓撲的變化情況為case3,判斷結束;否則,網絡拓撲的變化情況為case4,判斷結束。
6.如權利要求5所述的快速路由收斂方法,其特征在于如果在當前拓撲變化情形為casel-case3的任意一種情形時,此時再收到新的LSP時,所有情形均直接判定為case4。
7.如權利要求5所述的快速路由收斂方法,其特征在于路由處理模塊對于casel,執行葉子節點加入時的SPF計算;路由處理模塊對于case2,直接跳過SPF計算的過程,只是更新變化了的IP可達信息;路由處理模塊對于case3,執行鏈路斷開時的SPF計算,更新受影響節點的IP可達信路由處理模塊對于case4,從根節點開始重新執行完整的SPF計算,并更新所有的IP可達信息。
8.如權利要求7所述的快速路由收斂方法,其特征在于執行葉子節點加入時的SPF計算的具體步驟如下葉子節點加入網絡時,首先判斷葉子節點的父節點是否在SPT上,如果葉子節點的父節點不在SPT上,則對所有節點執行SPF計算;如果葉子節點的父節點在SPT上,則將父節點的所有鄰居加入TENT表,然后判斷葉子節點是否在父節點的TENT表中,如果葉子節點不在父節點的TENT表中,則清空TENT表后再對所有節點執行SPF計算;如果葉子節點在父節點的TENT表中,則將葉子節點指向其父節點,并從TENT列表中將該葉子節點刪除,并在SPT上注冊。
9.如權利要求7所述的快速路由收斂方法,其特征在于執行鏈路斷開時的SPF計算的具體步驟如下如果為鏈路斷開的情形,則記錄下當前nLSP及nlsp中缺少的對端鄰居nbrLSP,所述nLSP為新收到的LSP,所述nbrLSP為斷開鏈路另一端節點的LSP ;記錄后判斷nLSP對應的頂點V是否在SPT上,如果nLSP對應的頂點V不在SPT上,則執行全部節點的路由重新計算,同case4 ;3否則進一步判斷nbrLSP對應的頂點W是否在SPT上,如果nbrLSP對應的頂點W不在SPT上,則執行全部節點的路由重新計算,同case4 ;否則即頂點V和頂點W都在SPT上,則判斷W和V關系;如果W不是V的孩子節點,V也不是W的孩子節點,則表示該鏈路并不在SPT上,無需路由計算和路由更新,計算結束;如果W不是V的孩子節點,而V是W的孩子,則將W和V互換,使V表示節點,W表示孩子節點;如果W是V的孩子節點,則不用互換W和V,V表示節點,W表示孩子節點;至此,滿足了條件“V表示節點,W表示孩子節點”,則從SPT上刪除W節點及其孩子節點,將這些被刪除的節點加入TENT列表中,再對TENT列表中的節點執行SPF計算,將其逐一重新附加到SPT上,計算結束。
全文摘要
本發明涉及一種快速路由收斂方法,當網絡中的任意一個路由節點在收到新的鏈路狀態分組LSP之后,該收到新的鏈路狀態分組LSP的路由節點并不立即啟動Dijkstra算法進行整個拓撲的路由重新計算,而是根據當前最短路徑優先樹SPT、鏈路狀態信息庫LSDB信息及新的鏈路狀態分組LSP所含鄰居節點的信息,分析網絡拓撲的變化情況,將網絡拓撲的變化情況分為以下四類一是有一個葉子節點加入網絡;二是網絡拓撲沒有發生變化,只是有一些路由信息發生了改變;三是鏈路斷開;四是其他情形;根據網絡拓撲的變化情況決定參與SPF計算的節點并計算路由。本發明,對路由算法本身的計算和更新進行了優化,既可以快速響應拓撲變化,又可以減少CPU負載。
文檔編號H04L12/721GK102916879SQ201210451780
公開日2013年2月6日 申請日期2012年11月13日 優先權日2012年11月13日
發明者劉劍華, 張峰 申請人:烽火通信科技股份有限公司