一種檢測(cè)路由成環(huán)的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,特別涉及一種檢測(cè)路由環(huán)路的方法及相關(guān)的
目.0
【背景技術(shù)】
[0002]路由器在傳輸控制協(xié)議/互聯(lián)網(wǎng)絡(luò)協(xié)議(Transmiss1n Control Protocol/Internet Protocol, TCP/IP)第三層形成環(huán)路后,數(shù)據(jù)包就進(jìn)了一個(gè)死循環(huán)直到生存時(shí)間(time-to-live,TTL)減為O后被丟棄。其結(jié)果是通信中斷和網(wǎng)絡(luò)資源的極度浪費(fèi),所有構(gòu)成路由環(huán)路的路由器都在那里做無(wú)用功而且負(fù)荷極大。
[0003]路由信息協(xié)議(Routing Informat1n Protocol,RIP)、開(kāi)放式最短路徑優(yōu)先(Open Shortest Path First, 0SPF)、邊界網(wǎng)關(guān)協(xié)議(Border Gateway Protocol, BGP)等協(xié)議有自己的環(huán)路檢測(cè)算法來(lái)避免上述情況,但解決不了公網(wǎng)路由快速重路由(FastReRoute,FRR)嵌套和公網(wǎng)非直連下一跳走標(biāo)簽分發(fā)協(xié)議(Label Distribut1n Protocol,LDP)隧道場(chǎng)景下的路由成環(huán)問(wèn)題。
[0004]在如圖1所示的公網(wǎng)路由FRR嵌套組網(wǎng)中,邊緣設(shè)備(Provider Edge,PE) 1-PE2、PE1-PE3 形成 FRR,其中 PE1-PE2 又嵌套了 PEl-核心設(shè)備(Provider,P) 1、PE1-P2 的 FRR0為了進(jìn)行外層 FRR 的雙向轉(zhuǎn)發(fā)檢測(cè)(Bidirect1nal Forwarding Detect1n,BFD),協(xié)議傳給轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)信息(Fowarding Informat1n Base, FIB)表的是對(duì)端原始下一跳,不是實(shí)際出接口,也無(wú)法保證路由不成環(huán)。比如PEl上通過(guò)配置靜態(tài)路由或內(nèi)部邊界網(wǎng)關(guān)協(xié)議(Internal Border Gateway Protocol, IBGP)路由,形成FRR。其中主鏈路為 100.1.1.0/24下一跳是2.2.2.2(其中2.2.2.2/32這條路由又形成FRR,形成FRR嵌套),備鏈路為100.1.1.0/24下一跳是3.3.3.3。當(dāng)PEl到2.2.2.2的路由存在環(huán)路時(shí),協(xié)議將無(wú)法檢測(cè)到路由已經(jīng)形成環(huán)路。
[0005]在如圖2所示的公網(wǎng)非直連下一跳路由走LDP隧道的組網(wǎng)中,PEl和PE2之間通過(guò)Loopback接口建立邊界網(wǎng)關(guān)協(xié)議(Border Gateway Protocol,BGP)鄰居,在PE2上將100.1.1.0/24的路由通過(guò)BGP鄰居通告給PE1,PEl和PE2之間起LDP隧道,要求PEl上100.1.1.0/242.2.2.2的路由能夠走LDP隧道,但Pl上沒(méi)有100.1.1.0/24這條路由。由于BGP學(xué)習(xí)到的是對(duì)端PE2的環(huán)回(Loopback)地址,不是到Pl的直接下一跳,無(wú)法保證不存在環(huán)路。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提供一種檢測(cè)路由成環(huán)的方法及裝置,能更好地解決公網(wǎng)路由FRR嵌套和公網(wǎng)非直連下一跳走LDP隧道場(chǎng)景下的路由成環(huán)的檢測(cè)問(wèn)題。
[0007]根據(jù)本發(fā)明的一個(gè)方面,提供了一種檢測(cè)路由成環(huán)的方法,包括:
[0008]設(shè)置路由下一跳作為檢測(cè)路由樹(shù)的根節(jié)點(diǎn),并設(shè)置所述檢測(cè)路由樹(shù)根節(jié)點(diǎn)的下一跳為所述檢測(cè)路由樹(shù)的子樹(shù)的根節(jié)點(diǎn);
[0009]檢測(cè)所述檢測(cè)路由樹(shù)的子樹(shù);
[0010]若檢測(cè)到子樹(shù)中存在重復(fù)節(jié)點(diǎn),則確定所述子樹(shù)對(duì)應(yīng)的轉(zhuǎn)發(fā)路由存在環(huán)路,并從轉(zhuǎn)發(fā)信息表中刪除所述轉(zhuǎn)發(fā)路由。
[0011]優(yōu)選地,通過(guò)以下步驟建立所述子樹(shù):
[0012]對(duì)以所述子樹(shù)的根節(jié)點(diǎn)作為前綴節(jié)點(diǎn)的路由進(jìn)行路由迭代處理,找到所述前綴節(jié)點(diǎn)的下一跳節(jié)點(diǎn);
[0013]將所述下一跳節(jié)點(diǎn)添加到所述檢測(cè)路由樹(shù),并對(duì)所找到的下一跳節(jié)點(diǎn)是否是對(duì)端設(shè)備直連出接口進(jìn)行路由判斷處理;
[0014]如果不是,則以所述下一跳節(jié)點(diǎn)為前綴節(jié)點(diǎn)重復(fù)執(zhí)行路由迭代處理和路由判斷處理,直至找到下一跳節(jié)點(diǎn)是對(duì)端設(shè)備直連出接口的路由。
[0015]優(yōu)選地,所述對(duì)所述檢測(cè)路由樹(shù)的子樹(shù)進(jìn)行檢測(cè)的步驟包括:
[0016]在將所述下一跳節(jié)點(diǎn)添加到所述檢測(cè)路由樹(shù)時(shí),在所述節(jié)點(diǎn)向檢測(cè)路由樹(shù)的根節(jié)點(diǎn)的路徑上檢測(cè)是否已存在所述節(jié)點(diǎn);
[0017]若在所述節(jié)點(diǎn)向檢測(cè)路由樹(shù)的根節(jié)點(diǎn)的路徑上檢測(cè)到已存在所述節(jié)點(diǎn),則確定所述子樹(shù)中存在重復(fù)節(jié)點(diǎn)。
[0018]優(yōu)選地,還包括:
[0019]若所述檢測(cè)路由樹(shù)的子樹(shù)中均存在重復(fù)節(jié)點(diǎn),則從所述轉(zhuǎn)發(fā)信息表中刪除所述檢測(cè)路由樹(shù)的根節(jié)點(diǎn)。
[0020]優(yōu)選地,還包括:
[0021]若在所述檢測(cè)路由樹(shù)的子樹(shù)中找到一個(gè)不存在重復(fù)節(jié)點(diǎn)的子樹(shù),則將所述子樹(shù)對(duì)應(yīng)的轉(zhuǎn)發(fā)路由作為用來(lái)轉(zhuǎn)發(fā)數(shù)據(jù)包的路由,并停止路由成環(huán)檢測(cè)。
[0022]根據(jù)本發(fā)明的另一方面,提供了一種檢測(cè)路由成環(huán)的裝置,包括:
[0023]建樹(shù)模塊,用于設(shè)置路由下一跳為檢測(cè)路由樹(shù)的根節(jié)點(diǎn),并設(shè)置所述檢測(cè)路由樹(shù)根節(jié)點(diǎn)的下一跳為所述檢測(cè)路由樹(shù)的子樹(shù)的根節(jié)點(diǎn);
[0024]檢測(cè)模塊,用于檢測(cè)所述檢測(cè)路由樹(shù)的子樹(shù);
[0025]處理模塊,用于在檢測(cè)到子樹(shù)中存在重復(fù)節(jié)點(diǎn)時(shí),確定所述子樹(shù)對(duì)應(yīng)的轉(zhuǎn)發(fā)路由存在環(huán)路,并在從轉(zhuǎn)發(fā)信息表中刪除所述轉(zhuǎn)發(fā)路由。
[0026]優(yōu)選地,所述建樹(shù)模塊對(duì)以所述子樹(shù)的根節(jié)點(diǎn)為前綴節(jié)點(diǎn)的路由進(jìn)行路由迭代處理,找到所述前綴節(jié)點(diǎn)的下一跳節(jié)點(diǎn),將所述下一跳節(jié)點(diǎn)添加到所述檢測(cè)路由樹(shù),對(duì)所找到的下一跳節(jié)點(diǎn)是否是對(duì)端設(shè)備直連出接口進(jìn)行路由判斷處理,如果不是,則以所述下一跳節(jié)點(diǎn)為前綴節(jié)點(diǎn)重復(fù)執(zhí)行路由迭代處理和路由判斷處理,直至找到下一跳節(jié)點(diǎn)是對(duì)端設(shè)備直連出接口的路由。
[0027]優(yōu)選地,所述檢測(cè)模塊在將所述下一跳節(jié)點(diǎn)添加到所述檢測(cè)路由樹(shù)時(shí),在所述節(jié)點(diǎn)向檢測(cè)路由樹(shù)的根節(jié)點(diǎn)的路徑上檢測(cè)是否已存在所述節(jié)點(diǎn),若在所述節(jié)點(diǎn)向檢測(cè)路由樹(shù)的根節(jié)點(diǎn)的路徑上檢測(cè)到已存在所述節(jié)點(diǎn),則確定所述子樹(shù)中存在重復(fù)節(jié)點(diǎn)。
[0028]優(yōu)選地,若所述檢測(cè)模塊檢測(cè)到所述檢測(cè)路由樹(shù)的子樹(shù)中均存在重復(fù)節(jié)點(diǎn),則所述處理模塊從所述轉(zhuǎn)發(fā)信息表中刪除所述檢測(cè)路由樹(shù)的根節(jié)點(diǎn)。
[0029]優(yōu)選地,若所述檢測(cè)模塊在所述檢測(cè)路由樹(shù)的子樹(shù)中找到一個(gè)不存在重復(fù)節(jié)點(diǎn)的子樹(shù),則所述處理模塊將所述子樹(shù)對(duì)應(yīng)的轉(zhuǎn)發(fā)路由作為用來(lái)轉(zhuǎn)發(fā)數(shù)據(jù)包的路由,并停止路由成環(huán)檢測(cè)。
[0030]與現(xiàn)有技術(shù)相比較,本發(fā)明的有益效果在于:
[0031]本發(fā)明能夠在轉(zhuǎn)發(fā)面對(duì)公網(wǎng)路由FRR嵌套和公網(wǎng)非直連下一跳走LDP隧道場(chǎng)景下的路由進(jìn)行成環(huán)檢測(cè),并在轉(zhuǎn)發(fā)信息表中刪除無(wú)效路由,從而保證通信順暢,并避免網(wǎng)絡(luò)資源的浪費(fèi)。
【附圖說(shuō)明】
[0032]圖1是現(xiàn)有技術(shù)提供的公網(wǎng)路由FRR嵌套組網(wǎng)圖;
[0033]圖2是現(xiàn)有技術(shù)提供的公網(wǎng)非直連下一跳路由走LDP隧道組網(wǎng)圖;
[0034]圖3是本發(fā)明實(shí)施例提供的檢測(cè)路由成環(huán)的方法原理圖;
[0035]圖4是本發(fā)明實(shí)施例提供的檢測(cè)路由成環(huán)的裝置框圖;
[0036]圖5是本發(fā)明實(shí)施例提供的路由成環(huán)檢測(cè)算法示意圖;
[0037]圖6是本發(fā)明實(shí)施例提供的成環(huán)檢測(cè)針對(duì)的公網(wǎng)路由FRR嵌套組網(wǎng)圖;
[0038]圖7是針對(duì)圖6所示組網(wǎng)圖的一次具體的FIB表路由成環(huán)檢測(cè)過(guò)程示意圖。
【具體實(shí)施方式】
[0039]以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)說(shuō)明,應(yīng)當(dāng)理解,以下所說(shuō)明的優(yōu)選實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0040]圖3是本發(fā)明實(shí)施例提供的檢測(cè)路由成環(huán)的方法原理圖,如圖3所示,步驟包括:
[0041]步驟SlOl:設(shè)置路由下一跳為檢測(cè)路由樹(shù)的根節(jié)點(diǎn),并設(shè)置檢測(cè)路由樹(shù)根節(jié)點(diǎn)的下一跳為檢測(cè)路由樹(shù)的子樹(shù)的根節(jié)點(diǎn)。
[0042]其中,對(duì)以子樹(shù)的根節(jié)點(diǎn)為前綴節(jié)點(diǎn)的路由進(jìn)行路由迭代處理,找到前綴節(jié)點(diǎn)的下一跳節(jié)點(diǎn);將下一跳節(jié)點(diǎn)添加到檢測(cè)路由樹(shù),并對(duì)所找到的下一跳節(jié)點(diǎn)是否是對(duì)端設(shè)備直連出接口進(jìn)行路由判斷處理;如果不是,則以下一跳節(jié)點(diǎn)為前綴節(jié)點(diǎn)重復(fù)執(zhí)行路由迭代處理和路由判斷處理,直至找到下一跳節(jié)點(diǎn)是對(duì)端設(shè)備直連出接口的路由。
[0043]迭代是一種尋路方式,用來(lái)進(jìn)行路由尋址,例如,將前綴節(jié)點(diǎn)地址作為目的地址,查找到達(dá)目的地址的路由。
[0044]步驟S201:檢測(cè)所述檢測(cè)路由樹(shù)的子樹(shù)。
[0045]具體地說(shuō),在將下一跳節(jié)點(diǎn)添加到檢測(cè)路由樹(shù)時(shí),在該節(jié)點(diǎn)向檢測(cè)路由樹(shù)的根節(jié)點(diǎn)的路徑上檢測(cè)是否已存在該節(jié)點(diǎn),若檢測(cè)到已存在該節(jié)點(diǎn),則確定子樹(shù)中存在重復(fù)節(jié)點(diǎn)。
[0046]步驟S301:若檢測(cè)到子樹(shù)中存在重復(fù)節(jié)點(diǎn),則確定該子樹(shù)對(duì)應(yīng)的轉(zhuǎn)發(fā)路由存在環(huán)路,并從轉(zhuǎn)發(fā)信息表中刪除轉(zhuǎn)發(fā)路由。
[0047]進(jìn)一步地,本實(shí)施例可以對(duì)檢測(cè)路由樹(shù)的子樹(shù)依次進(jìn)行檢測(cè),若在檢測(cè)路由樹(shù)的子樹(shù)中找到一個(gè)不存在重復(fù)節(jié)點(diǎn)的子樹(shù),則將子樹(shù)對(duì)應(yīng)的轉(zhuǎn)發(fā)路由作為用來(lái)轉(zhuǎn)發(fā)數(shù)據(jù)包的路由,并停止路由成環(huán)檢測(cè)。若檢測(cè)路由樹(shù)的子樹(shù)中均存在重復(fù)節(jié)點(diǎn),則從轉(zhuǎn)發(fā)信息表中刪除檢測(cè)路由樹(shù)的根節(jié)點(diǎn)。
[0048]圖4是本發(fā)明實(shí)施例提供的檢測(cè)路由成環(huán)的裝置框圖,如圖4所示,包括建樹(shù)模塊
11、檢測(cè)模塊21和處理模塊31。
[0049]建樹(shù)模塊11用于設(shè)置路由下一跳作為檢測(cè)路由樹(shù)的根節(jié)點(diǎn),并設(shè)置檢測(cè)路由樹(shù)根節(jié)點(diǎn)的下一跳作為檢測(cè)路由樹(shù)的子樹(shù)的根節(jié)點(diǎn)。其中,建樹(shù)模塊對(duì)以子樹(shù)的根節(jié)點(diǎn)為前綴節(jié)點(diǎn)的路由路由迭代處理,找到前綴節(jié)點(diǎn)的下一跳節(jié)點(diǎn),將下一跳節(jié)點(diǎn)添加到檢測(cè)路由樹(shù),對(duì)所找到的下一跳節(jié)點(diǎn)是否是對(duì)端設(shè)備直連出接口進(jìn)行路由判斷處理,如果不是,則以下一跳節(jié)點(diǎn)為前綴節(jié)點(diǎn)重復(fù)執(zhí)行路由迭代處理和路由判斷處理,直至找到下一跳節(jié)點(diǎn)是對(duì)端設(shè)備直連出接口的路由。
[0050]檢測(cè)模塊21用于對(duì)檢測(cè)路由樹(shù)的子樹(shù)進(jìn)行檢測(cè)。具體地說(shuō),檢測(cè)模塊在將下一跳節(jié)點(diǎn)添加到檢測(cè)路由樹(shù)時(shí),在節(jié)點(diǎn)向檢測(cè)路由樹(shù)的根節(jié)點(diǎn)的路徑上檢測(cè)是否已存在節(jié)點(diǎn),若在節(jié)點(diǎn)向檢測(cè)路由樹(shù)的根節(jié)點(diǎn)的路徑上檢測(cè)到已存在節(jié)點(diǎn),則確定子樹(shù)中存