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