專利名稱:一種路由黑洞避免過程中過載位自動(dòng)清除的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)網(wǎng)絡(luò)通訊領(lǐng)域,尤其涉及一種運(yùn)行中間系統(tǒng)到中間系統(tǒng)
路由協(xié)議(IS-IS)網(wǎng)絡(luò)中路由黑洞避免過程中過載位自動(dòng)清除的方法。
背景技術(shù):
路由黑洞是指網(wǎng)絡(luò)中存在一條不可達(dá)的虛假路由,試圖根據(jù)此路由到 達(dá)目的地的所有流量都會(huì)被丟棄??梢?,在網(wǎng)絡(luò)運(yùn)行過程中,需要避免和阻 止路由黑洞的產(chǎn)生。通常在網(wǎng)絡(luò)不穩(wěn)定的情況下,不可避免的會(huì)產(chǎn)生暫態(tài)的 路由黑洞。對于運(yùn)行IS-IS協(xié)議的網(wǎng)絡(luò),如果其中某臺(tái)路由器重啟,則以下 兩種情況就會(huì)產(chǎn)生路由黑洞
情況一
網(wǎng)絡(luò)中同時(shí)運(yùn)行BGP (邊界網(wǎng)關(guān)協(xié)議)和IS-IS協(xié)議,其中連接在目的 路由器D上的某個(gè)目的網(wǎng)段D.1通過BGP協(xié)議通告給網(wǎng)絡(luò)中的其他路由器, 其BGP下一跳是路由器D。而IS-IS協(xié)議負(fù)責(zé)學(xué)習(xí)如何從源路由器S到達(dá)此 BGP下一跳D。假設(shè)從S到D的路徑中有一個(gè)中繼節(jié)點(diǎn)T重啟。 一旦中繼 節(jié)點(diǎn)T重啟結(jié)束,并且T和網(wǎng)絡(luò)中其他路由器完成IS-IS LSP數(shù)據(jù)庫同步 (LSP為鏈路狀態(tài)協(xié)議數(shù)據(jù)單元,Link State PDU,用來分發(fā)鏈路狀態(tài)信息), 則源節(jié)點(diǎn)S就知道可以通過T到達(dá)目的節(jié)點(diǎn)D。然而,在T路由器上可能 出現(xiàn)雖然其IS-IS數(shù)據(jù)庫已經(jīng)同步結(jié)束,并且知道如何到達(dá)D,但是其和D 路由器的BGP路由同步仍然未能完成,它并不知道如何到達(dá)D丄這樣就出 現(xiàn)了所有到D.l的流量全部被丟棄。因此在網(wǎng)絡(luò)中產(chǎn)生了暫態(tài)的路由黑洞。
情況二
網(wǎng)絡(luò)中運(yùn)行IS-IS協(xié)議,其中某臺(tái)路由器重啟。由于重啟過程在數(shù)秒到 數(shù)十秒內(nèi)完成,所以網(wǎng)絡(luò)中其他路由器的IS-IS LSP數(shù)據(jù)庫中仍保留有重啟 路由器重啟前產(chǎn)生的LSP報(bào)文倌息。因此一旦重啟路由器和其建立鄰居關(guān) 系,該路由器就可能根據(jù)這些舊的LSP報(bào)文計(jì)算出到某個(gè)目的網(wǎng)段A的路 由通過重啟路由器。然而由于重啟路由器此時(shí)LSP數(shù)據(jù)庫還未和網(wǎng)絡(luò)中其 他路由器同步完成,因此,重啟路由器并不知道如何到該目的網(wǎng)段A,所有 到達(dá)A的流量將被全部丟棄。因此在重啟路由器LSP數(shù)據(jù)庫同步過程中, 會(huì)產(chǎn)生暫態(tài)的路由黑洞。
可以看出,在這兩種情況中,前者是由于IS-IS鏈路狀態(tài)數(shù)據(jù)庫同步結(jié) 束,但BGP路由信息未同步結(jié)束,導(dǎo)致產(chǎn)生路由黑洞;而后者是由于IS-IS 鏈路狀態(tài)數(shù)據(jù)庫沒有完全同步的情況下就使用舊的LSP來計(jì)算最短路徑導(dǎo) 致產(chǎn)生路由黑洞。針對這兩種情況,國際互聯(lián)網(wǎng)組織IETF公布的標(biāo)準(zhǔn) RFC3277中提出了相應(yīng)的避免措施,這就是 一旦路由器重啟結(jié)束并和其他 鄰接路由器建立鄰居關(guān)系后,立刻更新其非偽節(jié)點(diǎn)0號(hào)LSP報(bào)文并且洪泛 出去,并且在這個(gè)LSP報(bào)文中設(shè)置過栽位(overload-bit)。這樣就防止了網(wǎng) 絡(luò)中的其他路由器將該重啟路由器作為流量轉(zhuǎn)發(fā)中繼節(jié)點(diǎn)。此后,再清除這 個(gè)過載位,該重啟路由器可以再次作為流量轉(zhuǎn)發(fā)中繼節(jié)點(diǎn)。
然而該過載位的清除時(shí)機(jī),對于上面第一種情況,RFC3277明確規(guī)定 了應(yīng)該在BGP同步完成以后通知IS-IS協(xié)議將過載位清除,對于第二種情況 則沒有指出何時(shí)清除過載位,只是指出應(yīng)該等待一定時(shí)間后清除。RFC3277 并沒有描述該等待時(shí)間究竟是多少。目前業(yè)界常用的做法是該等待時(shí)間設(shè) 置為用戶配置的一個(gè)經(jīng)驗(yàn)值,這段時(shí)間用于完成IS-IS LSP數(shù)據(jù)庫的同步, 一旦時(shí)間到則立刻清除過栽位。然而這樣做并不恰當(dāng),如果采用設(shè)置經(jīng)驗(yàn)值 的方式將會(huì)產(chǎn)生如下問題
1、 如果IS-IS LSP數(shù)據(jù)庫中LSP條目較少的話,會(huì)導(dǎo)致雖然數(shù)據(jù)庫中 LSP報(bào)文同步過程很快就結(jié)束了 (通常幾秒內(nèi)完成),但過載位的清除卻要 等待很長時(shí)間,這樣網(wǎng)絡(luò)運(yùn)行狀態(tài)的恢復(fù)將耗費(fèi)大量的額外時(shí)間。
2、 如果IS-IS LSP數(shù)據(jù)庫中的LSP條目很多的話(對于骨干網(wǎng)絡(luò)很可 能出現(xiàn)這種情況),可能導(dǎo)致由于設(shè)置時(shí)間過短,在該段時(shí)間內(nèi)數(shù)據(jù)庫同步 過程未結(jié)束就清除了過載位,這樣仍然不能避免路由黑洞的出現(xiàn)。
3、 如果根據(jù)網(wǎng)絡(luò)運(yùn)行的當(dāng)前狀況,根據(jù)各路由器實(shí)際LSP報(bào)文數(shù)量的
多少來分別設(shè)置經(jīng)驗(yàn)值的話,對于網(wǎng)絡(luò)的可維護(hù)性,可擴(kuò)展性又會(huì)造成較大 的影響。維護(hù)的復(fù)雜性會(huì)大大增加。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題就是提供一種路由黑洞避免過程中過載位自 動(dòng)清除的方法,實(shí)現(xiàn)過載位的自動(dòng)清除,即一旦發(fā)現(xiàn)重啟路由器和網(wǎng)絡(luò)中其 他路由器完成了數(shù)據(jù)庫的同步,就自動(dòng)清除過載位。這樣就避免了根據(jù)經(jīng)驗(yàn) 值來配置過載位清除時(shí)間帶來的弊端,并且不受到網(wǎng)絡(luò)運(yùn)行規(guī)模的限制,同 時(shí)也降低了網(wǎng)絡(luò)運(yùn)營維護(hù)的復(fù)雜性。
為了解決上述技術(shù)問題,本發(fā)明提供一種路由黑洞避免過程中過栽位自
動(dòng)清除的方法,包括如下步驟
(1) 路由器重啟以后,立刻設(shè)置過載位;
(2) 當(dāng)所述重啟路由器收到鄰居路由器發(fā)送的完全序列號(hào)協(xié)議數(shù)據(jù)單 元CSNP報(bào)文后,對CSNP報(bào)文中攜帶的鏈路狀態(tài)協(xié)議數(shù)據(jù)單元LSP摘要信 息做檢查,若該CSNP報(bào)文中描述的LSP條目在所述重啟路由器的LSP數(shù) 據(jù)庫中不存在,則根據(jù)LSP摘要信息生成一個(gè)"等待接收LSP記錄"信息, 該記錄信息包括等待接收的LSP報(bào)文ID號(hào);
(3 )當(dāng)所述重啟路由器收到鄰居發(fā)送的LSP報(bào)文后,根據(jù)LSP報(bào)文的 ID號(hào)遍歷步驟2中記錄的"等待接收LSP記錄",若找到相應(yīng)的記錄,其 ID號(hào)匹配,則清除該記錄并將該LSP條目存儲(chǔ)到LSP數(shù)據(jù)庫中;若沒有找 到相應(yīng)記錄,則僅需要將LSP條目存儲(chǔ)到LSP數(shù)據(jù)庫中;
(4)當(dāng)收到了所有的CSNP報(bào)文,并且"等待接收LSP記錄,,全部被 清除后,表示所述重啟路由器已經(jīng)收到了所有的CSNP報(bào)文中描述的LSP 條目,其LSP數(shù)據(jù)庫已經(jīng)和鄰居路由器同步完成,則清除過載位。
進(jìn)一步地,所述步驟(2)中,生成的"等待接收LSP記錄,,信息還包 括等待接收的LSP報(bào)文的剩余保持時(shí)間,此后每過l秒將"等待接收LSP 記錄,,的剩余保持時(shí)間減1,當(dāng)其剩余保持時(shí)間為0后,將該記錄信息刪除。
進(jìn)一步地,若所述重啟路由器為廣播鏈路上的指定路由器DIS路由器, 則該路由器設(shè)置過載位后不參與DIS的選舉,用于保證路由器重啟后在數(shù)據(jù) 庫同步過程中不可能是DIS路由器,從而該路由器周期性的收到DIS路由 器發(fā)送來的CSNP報(bào)文;當(dāng)數(shù)據(jù)庫同步過程結(jié)束以后再進(jìn)行DIS的選舉。
進(jìn)一步地,若所述重啟路由器為廣播鏈路上的DIS路由器,則所述路 由器重啟后,當(dāng)鄰居關(guān)系建立起來時(shí),該路由器與鄰居路由器相互發(fā)送CSNP 報(bào)文。
進(jìn)一步地,使用哈希表存儲(chǔ)"等待接收LSP記錄"。 進(jìn)一步地,所迷步驟(3)包括如下步驟
(a) 當(dāng)收到鄰居路由器發(fā)送的LSP報(bào)文后,根據(jù)LSP報(bào)文記錄的ID 號(hào)進(jìn)行一次哈希計(jì)算;
(b) 一艮據(jù)哈希計(jì)算結(jié)果查找對應(yīng)的"等待接收LSP記錄";
(c) 如果找到了 ID號(hào)相同的對應(yīng)"等待接收LSP記錄",則從哈希 鏈中刪除該記錄并存儲(chǔ)此LSP,否則僅對LSP報(bào)文做存儲(chǔ)操作。
進(jìn)一步地,每隔1秒檢查"等待接收LSP記錄"是否被全部清除,如 果全部清除則說明所有的LSP都已經(jīng)被收到;當(dāng)記錄全被清除并且CSNP 報(bào)文也全部收到以后,停止定時(shí)檢查。
進(jìn)一步地,使用CSNP記錄塊刪除的方法確定所述重啟路由器收到了鄰 居路由器發(fā)來的所有的CSNP報(bào)文,包括如下步驟
(A) 定義一個(gè)鏈表,其鏈表節(jié)點(diǎn)包括兩個(gè)字段,分別用于記錄未收到 的CSNP報(bào)文的鏈路狀態(tài)協(xié)議數(shù)據(jù)單元的起始標(biāo)識(shí)START LSP-ID和鏈路狀 態(tài)協(xié)議數(shù)據(jù)單元的結(jié)束標(biāo)識(shí)END LSP-ID;
(B) 路由器收到CSNP報(bào)文后,在鏈表上遍歷,根據(jù)收到CSNP報(bào)文 的START LSP-ID和END LSP-ID,修改鏈表中相應(yīng)節(jié)點(diǎn),使其鏈表節(jié)點(diǎn)只 記錄未收到的CSNP報(bào)文的START LSP-ID和END LSP-ID;
(C) 當(dāng)鏈表中沒有節(jié)點(diǎn),則已經(jīng)收到了鄰居路由器發(fā)來的所有的CSNP報(bào)文。
進(jìn)一步地,所述步驟(A)中,鏈表的兩個(gè)字段為bgn、 end,路由器重 啟開始后,先設(shè)置第一個(gè)節(jié)點(diǎn),該節(jié)點(diǎn)的bgn字段值為0000.0000.0000.00-00, end字段值為ffff.ffff.ffff.ff-ff。
進(jìn)一步地,所述步驟(B)包括如下步驟
(a) 若找到鏈表節(jié)點(diǎn)其bgn值< CSNP報(bào)文中描述的START LSP-ID 值〈CSNP報(bào)文中描述的ENDLSP-ID值〈end值,則再創(chuàng)建一個(gè)新節(jié)點(diǎn), 該新節(jié)點(diǎn)的bgn字段值為收到的CSNP報(bào)文中描述的END LSP-ID+1 ,其end 字段值為原節(jié)點(diǎn)的end字賴:值,并把該新節(jié)點(diǎn)插入到原節(jié)點(diǎn)后面,修改原節(jié) 點(diǎn)的end字段值為收到的CSNP報(bào)文中描述的STARTLSP-ID~1;
(b) 若找到鏈表節(jié)點(diǎn),CSNP報(bào)文中描述的STARTLSP-ID值<=bgn 字段值< end字段值< =CSNP報(bào)文中描述的END LSP-ID值,則刪除此節(jié) 點(diǎn);若鏈表上有其他節(jié)點(diǎn),則繼續(xù)遍歷鏈表上其他節(jié)點(diǎn);
(c) 若找到鏈表節(jié)點(diǎn),CSNP報(bào)文中描述的START LSP-ID值〈-bgn 值〈CSNP報(bào)文中描述的END LSP-ID值< end值,則修改此鏈表節(jié)點(diǎn),其 bgn為CSNP報(bào)文中描述的最后一個(gè)LSP-ID+1,并繼續(xù)遍歷其他節(jié)點(diǎn);
(d) 若找到鏈表節(jié)點(diǎn),其bgn值< CSNP報(bào)文中描述的START LSP-ID 值〈end值<=CSNP報(bào)文中描述的END LSP-ID值,則修改此鏈表節(jié)點(diǎn), 其end值為CSNP報(bào)文中描述的START LSP-ID值-1并繼續(xù)遍歷其他節(jié)點(diǎn)。
本發(fā)明利用了 IS-IS協(xié)議現(xiàn)有的報(bào)文格式,采用判斷是否全部收到鄰居 路由器發(fā)送的CSNP報(bào)文中記錄的LSP條目的方法,判斷重啟路由器是否 和網(wǎng)絡(luò)中其他路由器完成數(shù)據(jù)庫的同步過程,從而能夠自動(dòng)的清除路由黑洞 避免過程中產(chǎn)生的過載位,進(jìn)而自動(dòng)的結(jié)束路由黑洞避免過程,避免了通過 手工設(shè)置經(jīng)驗(yàn)值帶來的缺陷。因此這種自動(dòng)清除過載位的方法在路由黑洞避 免過程中大大的提高了可靠性,提高了網(wǎng)絡(luò)運(yùn)行的靈活性,并降低了網(wǎng)絡(luò)維 護(hù)的復(fù)雜性。
圖l為路由黑洞避免自動(dòng)完成功能的整體處理框架圖; 圖2為重啟路由器對接收到的CSNP報(bào)文的處理流程圖; 圖3為重啟路由器對接收到的LSP報(bào)文的處理流程圖;圖4為重啟路由器定時(shí)處理流^e圖5~圖6 為csnp報(bào)文內(nèi)容舉例;
圖7 ~圖9為舉例說明csnp記錄塊刪除的方法。
具體實(shí)施例方式
本發(fā)明提出的路由黑洞避免過程中過載位的自動(dòng)清除機(jī)制,使得is-is 協(xié)議路由黑洞避免過程能夠自動(dòng)結(jié)束,以解決現(xiàn)有技術(shù)中通過設(shè)置經(jīng)驗(yàn)時(shí)間 清除過載位從而完成路由黑洞避免帶來的弊端。
這種自動(dòng)清除過載位方式的可行性在于由于is-is的csnp報(bào)文描述 了 lsp數(shù)據(jù)庫中的所有l(wèi)sp條目信息,因此通過鄰居發(fā)來的csnp報(bào)文可 以知道鄰居路由器lsp數(shù)據(jù)庫信息, 一旦本地路由器收到了 csnp報(bào)文中 描述的所有l(wèi)sp條目,則可以認(rèn)為本地路由器已經(jīng)和鄰居路由器完成了 lsp 數(shù)據(jù)庫的同步過程,此時(shí)就可以清除過載位。在點(diǎn)到點(diǎn)鏈路上,在鄰居關(guān)系 建立起來時(shí),會(huì)發(fā)送csnp報(bào)文。在廣播鏈路上csnp報(bào)文則是周期性發(fā)送 的。因此,能夠通過收到的csnp報(bào)文中描述的lsp摘要信息和收到的具 體lsp報(bào)文做比較,來判斷當(dāng)前本地路由器是否和鄰居路由器完成了 lsp 數(shù)據(jù)庫的同步,從而實(shí)現(xiàn)過載位的自動(dòng)清除功能。
如圖1所示,本發(fā)明的具體實(shí)施過程主要由三個(gè)步驟所組成,步驟102, 重啟路由器對接收到的csnp報(bào)文處理,步驟103,重啟路由器對接收到的 lsp報(bào)文的處理,步驟104,重啟路由器定時(shí)器處理,包括定時(shí)判斷和其他 路由器數(shù)據(jù)庫同步是否完成,定時(shí)判斷"等待接收lsp記錄"是否失效。
具體實(shí)施方式
如下
步驟ioi,開始后,路由器重啟以后立刻設(shè)置過載位,以避免路由黑洞 的產(chǎn)生,并執(zhí)行兩個(gè)并列的步驟步驟102重啟路由器對接收到的csnp報(bào) 文處理和步驟103重啟路由器對接收到的lsp報(bào)文的處理,之后,執(zhí)行步 驟104,重啟路由器定時(shí)器處理,然后執(zhí)行步驟105,當(dāng)數(shù)據(jù)庫同步后,自 動(dòng)清除過載位,最后步驟106,結(jié)束,完成路由黑洞避免功能。
其中,步驟102詳細(xì)處理流程如圖2所示,步驟103詳細(xì)處理流程如圖3所示,步驟104的詳細(xì)處理流程如圖4所示。
如圖2所示,步驟201開始后,執(zhí)行步驟202,接收CSN:P報(bào)文。在點(diǎn) 到點(diǎn)鏈路上, 一旦鄰居關(guān)系建立,則立刻發(fā)送CSNP報(bào)文。在廣播鏈路上, 由于只有DIS路由器才周期性的發(fā)送CSNP報(bào)文,因此如果非DIS路由器重 啟后,其可以周期性的從DIS路由器收到CSNP報(bào)文。如果DIS路由器重啟, 則可以考慮采用如下兩個(gè)方法保證重啟方能夠接收到鄰居發(fā)送的CSNP報(bào) 文。
a) —旦鄰居關(guān)系建立,雙方立刻發(fā)送CSNP報(bào)文。
b) 廣播鏈路上重啟路由器在路由黑洞避免過程中不參與DIS選舉,這 樣鄰居路由器就能夠被選據(jù)成為DIS路由器,進(jìn)而向重啟方發(fā)送CSNP報(bào)文。
一旦收到鄰居發(fā)來的CSNP報(bào)文,則遍歷CSNP報(bào)文中記錄的TLV (<Type, Length, Value>, <類型,長度,值>)字段,找到TLV9 (指類型 為9的TLV)中記錄的LSP描述信息。
步驟203,判斷是否收到了鄰居路由器發(fā)來的所有的CSNP報(bào)文,若是 則執(zhí)行步驟204,若否,則執(zhí)行步驟205。判斷是否收到所有CSNP報(bào)文, 可以采用本發(fā)明中提出的"CSNP記錄塊刪除"的方法。
步驟204,若接收到所有CSNP報(bào)文,則設(shè)置收到所有CSNP報(bào)文標(biāo)記, 然后執(zhí)行步驟205。
步驟205,判斷該TLV中描述的LSP報(bào)文是否在本地LS:P數(shù)據(jù)庫中存 在。如果存在則不作進(jìn)一步處理,執(zhí)行直接執(zhí)行步驟209;如果不存在,則 執(zhí)行步驟206。
步驟206,根據(jù)TLV中描述的LSP報(bào)文信息生成"等待接收LSP記錄"。
步驟207,在該"等待接收LSP記錄"記錄LSP-ID和剩余保持時(shí)間, 這兩個(gè)字段的具體內(nèi)容可以通過TLV9中得到。
步驟208,根據(jù)"等待接收LSP記錄,,信息中包含的LSP-ID做一次哈 希計(jì)算,根據(jù)計(jì)算的結(jié)果將該"等待接收LSP記錄,,插入相應(yīng)的哈希鏈中。
步驟209,執(zhí)行RFC1142規(guī)定的IS-IS對CNSP報(bào)文的其它處理; 步驟210,結(jié)束重啟路由器對接收到的CSNP報(bào)文處理。 如圖3所示,步驟301,開始重啟路由器對接收到的LSP報(bào)文的處理;
步驟302,重啟路由器接收鄰居路由器發(fā)送的LSP報(bào)文;
步驟303,對LSP報(bào)文攜帶的LSP-ID號(hào)進(jìn)行哈希運(yùn)算;
步驟304,根據(jù)運(yùn)算結(jié)果查找相應(yīng)的哈希鏈,看是否能夠找到對應(yīng)的"等 待接收LSP記錄"信息;
步驟305,判斷是否找到對應(yīng)的"等待接收LSP記錄,,信息,若是,執(zhí) 行步驟306,若否,執(zhí)行步驟307;
步驟306,找到了 ID相同的"等待接收LSP記錄",則從哈希鏈中刪 除該記錄。
步驟307,存儲(chǔ)此LSP,并執(zhí)行RFC1142規(guī)定的對接收LSP報(bào)文的其 他處理流程。
步驟308,結(jié)束。
如圖4所示,步驟401,開始;
步驟402,在定時(shí)器中每隔l秒遍歷"等待接收LSP記錄,,并且對該 記錄中的剩余保持時(shí)間字段做減1搡作;
步驟403,如杲剩余保持時(shí)間為O則刪除此記錄;
步驟404,在定時(shí)器中查詢"等待接收LSP記錄,,是否被全部刪除,如 果全部刪除并且所有的CSNP報(bào)文都已經(jīng)收到(由步驟203判斷),則步驟 405,數(shù)據(jù)庫同步過程結(jié)束;如果"等待接收LSP記錄"沒有被全部刪除, 或者沒有收到所有的CSNP報(bào)文,則返回步驟402。
下面詳細(xì)描述一下路由黑洞避免自動(dòng)完成方法中判斷是否收到所有的 CSNP報(bào)文——CSNP記錄塊刪除法。
在描述這種方法之前,首先討論一下CSNP^艮文的特點(diǎn)。CSNP纟艮文通 過TLV9字段攜帶LSP摘要信息,摘要信息包括LSP報(bào)文的剩余保持時(shí)間 (remain life-time), LSP報(bào)文ID(lsp-id),報(bào)文序列號(hào)(sequence-number),報(bào)文 校驗(yàn)和(check-sum)。除此之外,CSNP報(bào)文中通過START LSP-ID和END LSP-ID字萃爻描述在該CSNP才艮文中攜帶的LSP摘要信息的范圍,其中
START LSP-ID總是以0000.0000.0000.00.00開始,END LSP-ID總是以 ffff.ffff.ffff.ff.ff結(jié)束。并且如果LSP數(shù)據(jù)庫中LSP條目過多,在一個(gè)CSNP 報(bào)文中不能完全描述,則通過連續(xù)發(fā)送多個(gè)CSNP報(bào)文來描述,其中第一個(gè) CSNP報(bào)文的START LSP-ID為0000.0000.0000.00.00,最后一個(gè)CSNP報(bào)文 的END LSP-ID為ffff.ffff.ffff.ff.ff,對于其他的CSNP報(bào)文,其START LSP-ID 為上一個(gè)CSNP報(bào)文中攜帶的最后一個(gè)LSP描述信息的LSP-II) + 1,其END LSP-ID為本CSNP報(bào)文中攜帶的最后 一 個(gè)LSP描述信息的LSP-ID 。
舉例如下如果LSP數(shù)據(jù)庫中有四條LSP報(bào)文,其ID分別為 1111.1111.1111.00-00, 2222.2222.2222.00-00, 3333.3333.3333.00-00,和 4444.4444.4444.00-00,這四條LSP如果通過兩個(gè)CSNP報(bào)文來發(fā)送,每個(gè) CSNP報(bào)文中攜帶兩條LSP摘要信息的話,這兩個(gè)CSNP報(bào)文中描迷的內(nèi)容 分別如圖5、圖6所示(在這里只是為了舉例的簡單而假設(shè)了每個(gè)CSNP報(bào) 文中只攜帶兩條LSP報(bào)文摘要信息)。
考慮到這個(gè)特點(diǎn),可以通過如下方式判斷是否收到所有的CSNP報(bào)文。
1. 定義一個(gè)鏈表,其鏈表節(jié)點(diǎn)用于記錄未收到的CSNP報(bào)文的START LSP-ID和END LSP-ID,分別用bgn和end表示。
2. 在路由器重啟開始后,由于沒有收到CSNP報(bào)文,因此掛入鏈表的第 一個(gè)節(jié)點(diǎn)bgn字段值為0000.0000.0000.00-00, end字段值為ffff.ffff.ffff.ff-ff。
3. —旦路由器收到CSNP報(bào)文后,在鏈表上遍歷
a) 如果找到鏈表節(jié)點(diǎn)(節(jié)點(diǎn)1),其bgn值〈CSNP報(bào)文中描述的START LSP-ID值< CSNP報(bào)文中描述的END LSP-ID值〈end值,則將此節(jié)點(diǎn)一分 為二,將中間的LSP-ID去掉。具體做法是再創(chuàng)建一個(gè)新節(jié)點(diǎn)(節(jié)點(diǎn)2), 節(jié)點(diǎn)2的bgn字段值為收到的CSNP報(bào)文中描迷的END LSP-ID+1 。其end 字段值為節(jié)點(diǎn)1的end字段值,并把節(jié)點(diǎn)2插入到節(jié)點(diǎn)1后面。修改節(jié)點(diǎn)1 的end字段值為收到的CSNP報(bào)文中描述的START LSP-ID-1。
b) 如果找到鏈表節(jié)點(diǎn)(節(jié)點(diǎn)1) , CSNP報(bào)文中描述的START LSP-ID
值<=bgn字段值〈end字段值<=CSNP報(bào)文中描述的END LSP-ID值, 則刪除此鏈表節(jié)點(diǎn)。如果鏈表上有其他節(jié)點(diǎn),則繼續(xù)遍歷鏈表上其他節(jié)點(diǎn)。
c) 如果找到鏈表節(jié)點(diǎn)(節(jié)點(diǎn)1), CSNP報(bào)文中描述的START LSP-ID值< -bgn值〈CSNP報(bào)文中描述的END LSP-ID值< end值,則修改此鏈表節(jié) 點(diǎn),其bgn為CSNP報(bào)文中描述的最后一個(gè)lsp-id+l,并繼續(xù)遍歷其他節(jié)點(diǎn)。
d) 如果找到鏈表節(jié)點(diǎn)(節(jié)點(diǎn)1 ),其bgn值< CSNP報(bào)文中描述的START LSP-ID值〈end值<=CSNP報(bào)文中描述的END LSP-ID值,則修改此鏈 表節(jié)點(diǎn),其end值為CSNP報(bào)文中描述的START LSP-ID值-1并繼續(xù)遍歷其 他節(jié)點(diǎn)。
4.一旦鏈表中沒有節(jié)點(diǎn)了,這時(shí)可以認(rèn)為已經(jīng)收到了所有的CSNP報(bào)文。
上面的判斷是否收到所有的CSNP報(bào)文的方法通過逐塊清除CSNP記錄 節(jié)點(diǎn)的方式完成,當(dāng)所有的記錄節(jié)點(diǎn)都被刪除后,我們認(rèn)為已經(jīng)收到了所有 的CSNP報(bào)文。因此,我們稱這種方法為CSNP記錄塊刪除法。
舉例如下
假設(shè)路由器的LSP-DB中有如下LSP條目
LSP1: 1111.1111.1111.00-00
LSP2: 2222.2222.2222.00-00
LSP3: 3333.3333.3333.00-00
LSP4: 4444.4444.4444.00-00
LSP5: 5555.5555.5555.00-00
LSP6: 6666.6666.6666.00-00
這些LSP通過三個(gè)CSNP報(bào)文發(fā)送,其中CSNP報(bào)文1攜帶LSP1和 LSP2信息,CSNP報(bào)文2攜帶LSP3和LSP4信息,CSNP報(bào)文3攜帶LSP5 和LSP6信息。根據(jù)上面描述的CSNP記錄塊刪除方法。
第一步創(chuàng)建鏈表并把第一個(gè)節(jié)點(diǎn)掛入,由于此時(shí)還未能收到CSNP 報(bào)文,因此節(jié)點(diǎn)的bgn和end字段分別為0000 0000 0000 00 00和FFFF FFFF FFFF FFFF,如圖6所示。
第二步收到CSNP報(bào)文2以后,由于鏈表中有節(jié)點(diǎn),其bgn為0000 0000
0000 00 00,其end為FFFF FFFF FFFF FF FF,而CSNP才良文2中描述的 START LSP ID為2222 2222 2222 00 01 , END LSP ID為4444 4444 4444 00
00,因此滿足算法流程第3步的a流程。最終鏈表中剩余的CSNP塊如圖7 所示
第三步收到CSNP報(bào)文1以后,由于鏈表中有節(jié)點(diǎn),其bgn為0000 0000 0000 00 00, end為2222 2222 2222 00 00,而CSNP報(bào)文1的START LSP-ID 為0000 0000 0000 00 00, END LSP-ID為2222 2222 2222 00 00,滿足算法流 程第3步b流程。最終鏈表中剩余的CSNP塊如圖8所示
第四步收到CSNP報(bào)文3以后,鏈表中所有的CSNP記錄塊都被刪除。
從上面的描述可以看出,不論收到CSNP報(bào)文的先后順序如何, 一旦用 于記錄CSNP報(bào)文塊的鏈表為空,就說明所有的CSNP報(bào)文已經(jīng)被全部收到, 否則說明CSNP報(bào)文仍未全部收到。
權(quán)利要求
1. 一種路由黑洞避免過程中過載位自動(dòng)清除的方法,包括如下步驟(1)路由器重啟以后,立刻設(shè)置過載位;(2)當(dāng)所述重啟路由器收到鄰居路由器發(fā)送的完全序列號(hào)協(xié)議數(shù)據(jù)單元CSNP報(bào)文后,對CSNP報(bào)文中攜帶的鏈路狀態(tài)協(xié)議數(shù)據(jù)單元LSP摘要信息做檢查,若該CSNP報(bào)文中描述的LSP條目在所述重啟路由器的LSP數(shù)據(jù)庫中不存在,則根據(jù)LSP摘要信息生成一個(gè)“等待接收LSP記錄”信息,該記錄信息包括等待接收的LSP報(bào)文ID號(hào);(3)當(dāng)所述重啟路由器收到鄰居發(fā)送的LSP報(bào)文后,根據(jù)LSP報(bào)文的ID號(hào)遍歷步驟2中記錄的“等待接收LSP記錄”,若找到相應(yīng)的記錄,其ID號(hào)匹配,則清除該記錄并將該LSP條目存儲(chǔ)到LSP數(shù)據(jù)庫中;若沒有找到相應(yīng)記錄,則僅需要將LSP條目存儲(chǔ)到LSP數(shù)據(jù)庫中;(4)當(dāng)收到了所有的CSNP報(bào)文,并且“等待接收LSP記錄”全部被清除后,表示所述重啟路由器已經(jīng)收到了所有的CSNP報(bào)文中描述的LSP條目,其LSP數(shù)據(jù)庫已經(jīng)和鄰居路由器同步完成,則清除過載位。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于所迷步驟(2)中,生成 的"等待接收lsp記錄"信息還包括等待接收的lsp報(bào)文的剩余保持時(shí)間, 此后每過l秒將"等待接收LSP記錄,,的剩余保持時(shí)間減l,當(dāng)其剩余保持 時(shí)間為0后,將該記錄信息刪除。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于若所述重啟路由器 為廣播鏈路上的指定路由器dis路由器,則該路由器設(shè)置過栽位后不參與 dis的選舉,用于保證路由器重啟后在數(shù)據(jù)庫同步過程中不可能是dis路由 器,從而該路由器周期性的收到dis路由器發(fā)送來的csnp報(bào)文;當(dāng)數(shù)據(jù)庫 同步過程結(jié)束以后再進(jìn)行dis的選舉。
4. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于若所述重啟路由器 為廣播鏈路上的dis路由器,則所述路由器重啟后,當(dāng)鄰居關(guān)系建立起來時(shí), 該路由器與鄰居路由器相互發(fā)送csnp報(bào)文。
5. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于使用哈希表存儲(chǔ)"等 待接收LSP記錄,,。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于所述步驟(3)包括如下 步驟(a) 當(dāng)收到鄰居路由器發(fā)送的LSP報(bào)文后,根據(jù)LSP報(bào)文記錄的ID 號(hào)進(jìn)行一次哈希計(jì)算;(b) 根據(jù)哈希計(jì)算結(jié)果查找對應(yīng)的"等待接收LSP記錄,,;(c) 如果找到了 ID號(hào)相同的對應(yīng)"等待接收LSP記錄",則從哈希 鏈中刪除該記錄并存儲(chǔ)此LSP,否則僅對LSP報(bào)文做存儲(chǔ)操作。
7. 根據(jù)權(quán)利要求2所述的方法,其特征在于每隔l秒檢查"等待接 收LSP記錄"是否被全部清除,如果全部清除則說明所有的LSP都已經(jīng)被 收到;當(dāng)記錄全被清除并且CSNP報(bào)文也全部收到以后,停止定時(shí)檢查。
8. 根據(jù)權(quán)利要求1所述的方法,其特征在于使用CSNP記錄塊刪除 的方法確定所述重啟路由器收到了鄰居路由器發(fā)來的所有的CSNP寺艮文,包 括如下步驟(A)定義一個(gè)鏈表,其鏈表節(jié)點(diǎn)包括兩個(gè)字段,分別用于記錄未收到 的CSNP報(bào)文的鏈路狀態(tài)協(xié)議數(shù)據(jù)單元的起始標(biāo)識(shí)START LSP-ID和鏈路狀 態(tài)協(xié)議數(shù)據(jù)單元的結(jié)束標(biāo)識(shí)END LSP-ID;(B )路由器收到CSNP報(bào)文后,在鏈表上遍歷,根據(jù)收到CSNP報(bào)文 的START LSP-ID和END LSP-ID,修改鏈表中相應(yīng)節(jié)點(diǎn),使其鏈表節(jié)點(diǎn)只 記錄未收到的CSNP報(bào)文的START LSP-ID和END LSP-ID;(C)當(dāng)鏈表中沒有節(jié)點(diǎn),則已經(jīng)收到了鄰居路由器發(fā)來的所有的CSNP報(bào)文。
9. 根據(jù)權(quán)利要求8所述的方法,其特征在于所述步驟(A)中,鏈 表的兩個(gè)字段為bgn、 end,路由器重啟開始后,先設(shè)置第一個(gè)節(jié)點(diǎn),該節(jié) 點(diǎn)的bgn字段值為0000.0000.0000.00-00, end字段值為ffff.ffff.ffff.ff-ff。
10. 根據(jù)權(quán)利要求9所述的方法,其特征在于所述步驟(B)包括如 下步驟(a)若找到鏈表節(jié)點(diǎn)其bgn值< CSN:P報(bào)文中描述的START LSP-ID值< CSNP報(bào)文中描述的END LSP-ID值< end值,則再創(chuàng)建一個(gè)新節(jié)點(diǎn), 該新節(jié)點(diǎn)的bgn字段值為收到的CSNP報(bào)文中描述的END LSP-ID+1 ,其end 字段值為原節(jié)點(diǎn)的end字段值,并把該新節(jié)點(diǎn)插入到原節(jié)點(diǎn)后面,修改原節(jié) 點(diǎn)的end字段值為收到的CSNP報(bào)文中描述的START LSP-ID--1;(b )若找到鏈表節(jié)點(diǎn),CSNP報(bào)文中描述的START LSP-ID值< - bgn 字段值< end字段值< =CSNP報(bào)文中描述的END LSP-ID值,則刪除此節(jié) 點(diǎn);若鏈表上有其他節(jié)點(diǎn),則繼續(xù)遍歷鏈表上其他節(jié)點(diǎn);(c)若找到鏈表節(jié)點(diǎn),CSNP報(bào)文中描述的START LSP-ID值< =bgn 值〈CSNP報(bào)文中描述的END LSP-ID值< end值,則修改此鏈表節(jié)點(diǎn),其 bgn為CSNP報(bào)文中描述的最后一個(gè)LSP-ID+1 ,并繼續(xù)遍歷其他節(jié)點(diǎn);(d )若找到鏈表節(jié)點(diǎn),其bgn值< CSNP報(bào)文中描述的START LSP-ID 值〈end值<=CSNP報(bào)文中描述的END LSP-ID值,則修改此鏈表節(jié)點(diǎn), 其end值為CSNP報(bào)文中描述的START LSP-ID值-1并繼續(xù)遍歷其他節(jié)點(diǎn)。
全文摘要
本發(fā)明公開了一種路由黑洞避免過程中過載位自動(dòng)清除的方法,由于IS-IS的CSNP報(bào)文描述了LSP數(shù)據(jù)庫中的所有LSP條目信息,因此該方法通過鄰居發(fā)來的CSNP報(bào)文知道鄰居路由器LSP數(shù)據(jù)庫信息,一旦本地路由器收到了CSNP報(bào)文中描述的所有LSP條目,則認(rèn)為本地路由器已經(jīng)和鄰居路由器完成了LSP數(shù)據(jù)庫的同步過程,此時(shí)就可以主動(dòng)清除過載位。本發(fā)明避免了根據(jù)經(jīng)驗(yàn)值來配置過載位清除時(shí)間帶來的弊端,并且不受到網(wǎng)絡(luò)運(yùn)行規(guī)模的限制,同時(shí)也降低了網(wǎng)絡(luò)運(yùn)營維護(hù)的復(fù)雜性。
文檔編號(hào)H04L12/56GK101207555SQ20061016784
公開日2008年6月25日 申請日期2006年12月18日 優(yōu)先權(quán)日2006年12月18日
發(fā)明者林光輝, 昊 金 申請人:中興通訊股份有限公司