欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種轉(zhuǎn)發(fā)路由表存放的方法及裝置的制作方法

文檔序號:7961655閱讀:161來源:國知局
專利名稱:一種轉(zhuǎn)發(fā)路由表存放的方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡(luò)傳輸領(lǐng)域,特別涉及一種轉(zhuǎn)發(fā)路由表存放的方法及裝置。
背景技術(shù)
在現(xiàn)代路由器中,查找是一個(gè)關(guān)鍵的技術(shù),TCAM(ternary contentaddressable memory—三進(jìn)制內(nèi)容可尋址存儲器)是一種快速查找引擎,查找速度快,使用簡單,但其價(jià)格昂貴,功耗高?,F(xiàn)在一般使用TCAM的方法是一條表項(xiàng)占用一條TCAM表項(xiàng)的方法,TCAM的容量直接決定支持的規(guī)格,比如,使用NETLOGIC 18Mb TCAM(256K*72bit),最多支持256K的轉(zhuǎn)發(fā)信息表FIB(Forwarding Informaton Table)表項(xiàng)。對于系統(tǒng)來說,當(dāng)然可以通過增加TCAM來擴(kuò)大路由表項(xiàng),但系統(tǒng)成本增加很大。
現(xiàn)有技術(shù)中對于前綴相似的路由,根據(jù)下一跳是否相同來壓縮路由表項(xiàng),在一定程度上可以解決系統(tǒng)成本大的問題。參見表1,對于這樣的兩條路由,可以合并成一條路由下發(fā),10.1.0.0/23下發(fā),從而達(dá)到在相同TCAM資源的情況下,支持更多的路由。

表1現(xiàn)有技術(shù)有以下缺點(diǎn)路由合并時(shí),要求路由前綴連續(xù)且下一跳相同,但是在實(shí)際應(yīng)用中,滿足上述條件的路由很少。

發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中系統(tǒng)存放路由成本大,容量不足的問題,本發(fā)明提供了一種轉(zhuǎn)發(fā)路由表存放的方法和裝置,這種方法和裝置通過將路由添加到相應(yīng)的線性表,來達(dá)到增大路由表的容量。所述技術(shù)方案如下一種轉(zhuǎn)發(fā)路由表存放的方法,所述方法包括以下步驟將轉(zhuǎn)發(fā)路由表分為非線性表與線性表,對路由前綴進(jìn)行優(yōu)化劃分,將優(yōu)化劃分后的路由前綴在線性表和非線性表中進(jìn)行存放。
所述方法具體包括以下步驟步驟A獲取路由信息,所述路由信息包括路由前綴、前綴長度和路由記錄信息;步驟B根據(jù)所述路由信息獲取優(yōu)化路由前綴;步驟C判斷所述優(yōu)化路由前綴是否是非線性表的新增表項(xiàng),如果是,系統(tǒng)分配一個(gè)非線性索引,并記錄在所述非線性表中;否則直接從所述路由記錄信息中獲取非線性索引;步驟D根據(jù)路由前綴和優(yōu)化路由前綴長度計(jì)算線性部分,并填寫在線性表中,更新下一跳地址,同時(shí)設(shè)置有效標(biāo)志。
所述方法還包括以下步驟步驟E獲取刪除路由信息,所述路由信息包括非線性表表項(xiàng)索引、路由前綴和前綴長度;步驟F根據(jù)所述路由信息獲取優(yōu)化路由前綴;步驟G根據(jù)路由前綴和優(yōu)化路由前綴長度計(jì)算出線性部分,在線性表中查找所述線性部分對應(yīng)的表項(xiàng);判斷線性表對應(yīng)的表項(xiàng)是否有效,如果有效,將所述線性表對應(yīng)項(xiàng)設(shè)置為無效;否則結(jié)束刪除;步驟H檢查所述線性表對應(yīng)項(xiàng)是否為同組線性表中最后一個(gè)有效表項(xiàng),如果是,根據(jù)線性部分表項(xiàng),刪除對應(yīng)的非線性表項(xiàng);否則結(jié)束刪除。
所述根據(jù)路由信息獲取優(yōu)化路由前綴的步驟具體包括對每條路由前綴采用減少相同的位得到優(yōu)化路由前綴。
本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由表存放的方法,所述方法具體包括以下步驟步驟A′獲取路由信息,所述路由信息包括路由前綴、前綴長度和下一跳地址;步驟B′根據(jù)設(shè)定的路由前綴分界長度N,判斷所述路由前綴長度是否小于等于N;步驟C′如果路由前綴長度小于等于N,進(jìn)行線性表的更新;步驟D′如果所述路由前綴長度大于N,進(jìn)行非線性表更新。
所述步驟C具體包括以下步驟步驟C1′根據(jù)所述路由前綴計(jì)算線性索引,在線性表中查找路由前綴相同的表項(xiàng);步驟C2′對于在線性表中查到的有效表項(xiàng),當(dāng)表項(xiàng)中的路由前綴長度小于等于獲取的路由前綴長度時(shí),用獲取的路由信息更新該表項(xiàng);否則保留表項(xiàng)中原有的路由信息;步驟C3′對于在線性表中查到的無效表項(xiàng),直接用獲取的路由信息更新該表項(xiàng)。
所述步驟D具體包括以下步驟步驟D1根據(jù)非線性表記錄信息,判斷所述路由前綴是否是所述非線性表的新增表項(xiàng),如果是,系統(tǒng)分配一個(gè)非線性索引,并記錄在所述非線性表中;否則直接從所述非線性表中獲取非線性索引;步驟D2根據(jù)非線性索引對應(yīng)的非線性表項(xiàng),直接用獲取的路由信息更新該表項(xiàng)。
所述方法還包括以下步驟步驟E′獲得刪除路由信息,所述路由信息包括路由前綴、前綴長度和替換路由;步驟F′判斷路由前綴長度是否小于等于路由前綴分界長度N,如果小于等于N,則刪除線性表的對應(yīng)表項(xiàng);否則刪除非線性表的對應(yīng)表項(xiàng);步驟G′結(jié)束刪除。
所述步驟F′中的刪除線性表的對應(yīng)表項(xiàng)具體包括以下步驟步驟F1′根據(jù)所述路由前綴計(jì)算線性索引,在線性表中查找路由前綴相同的表項(xiàng);步驟F2′當(dāng)線性表中查到的表項(xiàng)有效,且表項(xiàng)中的路由前綴長度等于刪除路由信息中的前綴長度時(shí),用替換轉(zhuǎn)發(fā)路由表更新該表項(xiàng);否則結(jié)束刪除。
本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由的查找方法,所述方法包括以下步驟根據(jù)轉(zhuǎn)發(fā)報(bào)文,得到所要查找路由的目的IP地址,將非線性查找與線性查找相結(jié)合,進(jìn)行報(bào)文轉(zhuǎn)發(fā)。
所述方法具體包括以下步驟步驟A″根據(jù)轉(zhuǎn)發(fā)報(bào)文,得到所要查找路由的目的IP地址;步驟B″在非線性表中查找是否有與所述IP地址匹配的優(yōu)化路由前綴,如果有,執(zhí)行步驟C″;如果沒有,路由停止轉(zhuǎn)發(fā)報(bào)文;步驟C″根據(jù)查到的優(yōu)化路由前綴,計(jì)算所述IP地址的線性部分,根據(jù)線性部分在線性表查找相應(yīng)的表項(xiàng);步驟D″判斷線性表對應(yīng)項(xiàng)是否有效,如果有效,根據(jù)線性表中對應(yīng)項(xiàng)得到路由表索引,查路由表進(jìn)行報(bào)文轉(zhuǎn)發(fā);否則路由停止轉(zhuǎn)發(fā)報(bào)文。
所述方法具體包括以下步驟根據(jù)轉(zhuǎn)發(fā)報(bào)文得到目的IP地址,先進(jìn)行非線性表查找,當(dāng)非線性表查找失敗時(shí),再進(jìn)行線性表查找,然后根據(jù)查找結(jié)果進(jìn)行報(bào)文轉(zhuǎn)發(fā)。
所述方法中的非線性表查找具體包括以下步驟根據(jù)所述目的IP地址查非線性表中是否有匹配的路由前綴,如果有,根據(jù)非線性表索引,查路由表轉(zhuǎn)發(fā)報(bào)文;否則進(jìn)行線性表查找轉(zhuǎn)發(fā)報(bào)文。
所述方法中的線性表查找具體包括以下步驟步驟A按路由前綴分界長度N計(jì)算該IP地址對應(yīng)的線性索引;步驟B判斷線性表中所述線性索引對應(yīng)表項(xiàng)是否有效,如果有效,根據(jù)線性索引,查路由表轉(zhuǎn)發(fā)報(bào)文;否則路由停止轉(zhuǎn)發(fā)報(bào)文。
本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由表存放的裝置,所述裝置包括劃分模塊和路由存放模塊所述劃分模塊用于將轉(zhuǎn)發(fā)路由表分為非線性表與線性表;所述路由存放模塊用于對路由前綴進(jìn)行優(yōu)化劃分,將優(yōu)化劃分后的路由前綴在線性表和非線性表中進(jìn)行存放。
所述路由存放模塊具體包括第一獲取路由信息模塊、獲取優(yōu)化路由前綴模塊、獲取非線性索引模塊和路由填寫模塊;所述第一獲取路由信息模塊用于獲取路由信息,所述路由信息包括路由前綴、前綴長度和路由記錄信息;所述獲取優(yōu)化路由前綴模塊用于根據(jù)所述路由信息獲取優(yōu)化路由前綴;所述獲取非線性索引模塊用于判斷所述優(yōu)化路由前綴是否是非線性表的新增表項(xiàng),如果是,系統(tǒng)分配一個(gè)非線性索引,并記錄在所述非線性表中;否則直接從所述非線性表中獲取非線性索引;所述路由填寫模塊用于根據(jù)路由前綴和優(yōu)化路由前綴長度計(jì)算線性部分,并填寫在線性表中,更新下一跳地址,同時(shí)設(shè)置有效標(biāo)志。
所述路由存放模塊還包括第一獲取刪除信息模塊、獲取優(yōu)化路由前綴模塊、判斷模塊和第一刪除模塊;所述第一獲取刪除信息模塊用于獲取刪除路由信息,所述路由信息包括非線性表表項(xiàng)索引、路由前綴和前綴長度;所述獲取優(yōu)化路由前綴模塊用于根據(jù)所述路由信息獲取優(yōu)化路由前綴;所述判斷模塊用于根據(jù)路由前綴和優(yōu)化前綴長度計(jì)算出線性部分,查找線性表中所述線性部分對應(yīng)的表項(xiàng);判斷線性表對應(yīng)的表項(xiàng)是否有效;如果有效,將所述線性表對應(yīng)項(xiàng)設(shè)置為無效;否則結(jié)束刪除;所述第一刪除模塊用于檢查所述線性表對應(yīng)項(xiàng)是否為同組線性表中最后一個(gè)有效表項(xiàng),如果是,根據(jù)線性部分表項(xiàng),刪除對應(yīng)的非線性表項(xiàng);否則結(jié)束刪除。
所述路由存放模塊具體包括第二獲取路由信息模塊、線性表更新模塊和非線性表更新模塊;所述第二獲取路由信息模塊用于獲取路由信息,所述路由信息包括路由前綴、前綴長度和下一跳地址;所述線性表更新模塊用于所述路由前綴長度小于等于N設(shè)定的路由前綴分界長度N;進(jìn)行線性表的更新;所述非線性表更新模塊用于所述路由前綴長度大于N,進(jìn)行非線性表更新。
所述路由存放模塊還包括第二獲取刪除信息模塊和第二刪除模塊;所述第二獲取刪除信息模塊用于獲取刪除路由信息,所述路由信息包括路由前綴、前綴長度和替換路由;所述第二刪除模塊用于判斷路由前綴長度是否小于等于路由前綴分界長度N,如果小于等于N,則刪除線性表的對應(yīng)表項(xiàng);否則刪除非線性表的對應(yīng)表項(xiàng)。
本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由的查找裝置,所述裝置包括獲取轉(zhuǎn)發(fā)地址模塊和轉(zhuǎn)發(fā)模塊;所述獲取轉(zhuǎn)發(fā)地址模塊用于根據(jù)轉(zhuǎn)發(fā)報(bào)文,得到所要查找路由的目的IP地址;所述轉(zhuǎn)發(fā)模塊用于將非線性查找與線性查找相結(jié)合,進(jìn)行報(bào)文轉(zhuǎn)發(fā)。
所述轉(zhuǎn)發(fā)模塊具體包括查找模塊,轉(zhuǎn)發(fā)報(bào)文模塊;所述查找模塊用于查非線性表中是否有與所述IP地址匹配的優(yōu)化路由前綴,所述轉(zhuǎn)發(fā)報(bào)文模塊用于當(dāng)在非線性表中查到所述優(yōu)化路由前綴,且該表項(xiàng)對應(yīng)的線性表項(xiàng)有效時(shí),按所查路由進(jìn)行報(bào)文轉(zhuǎn)發(fā);否則停止轉(zhuǎn)發(fā)報(bào)文。
所述裝置的轉(zhuǎn)發(fā)模塊具體包括非線性轉(zhuǎn)發(fā)模塊和線性轉(zhuǎn)發(fā)模塊;所述非線性轉(zhuǎn)發(fā)單元用于根據(jù)所述目的IP地址查非線性表中是否有匹配的路由前綴,如果有,根據(jù)非線性表索引,查路由表轉(zhuǎn)發(fā)報(bào)文;否則進(jìn)行線性表查找轉(zhuǎn)發(fā)報(bào)文;所述線性轉(zhuǎn)發(fā)單元用于按路由前綴分界長度N計(jì)算該IP地址對應(yīng)的線性索引;判斷線性表中所述線性索引對應(yīng)表項(xiàng)是否有效,如果有效,根據(jù)線性索引,查路由表轉(zhuǎn)發(fā)報(bào)文;否則路由停止轉(zhuǎn)發(fā)報(bào)文。
本發(fā)明的有益效果是在不增加非線性表(例如TCAM)容量的情況下,在內(nèi)存中增加了線性表,增加一定量的內(nèi)存,就可以支持更大容量的路由。在不改變系統(tǒng)硬件結(jié)構(gòu)的情況下,通過軟件的少量修改,就可以支持更大容量的路由,而轉(zhuǎn)發(fā)性能不受影響。


圖1是本發(fā)明所述實(shí)施例1中的轉(zhuǎn)發(fā)路由表更新方法流程圖;圖3是本發(fā)明所述實(shí)施例2中的路由刪除方法流程圖;圖5是本發(fā)明所述實(shí)施例3中的轉(zhuǎn)發(fā)路由查找方法流程圖;圖2是本發(fā)明所述實(shí)施例4中的轉(zhuǎn)發(fā)路由表更新方法流程圖;圖4是本發(fā)明所述實(shí)施例5中的路由刪除方法流程圖;圖6是本發(fā)明所述實(shí)施例6中的轉(zhuǎn)發(fā)路由查找方法流程圖;
圖7是本發(fā)明所述實(shí)施例7中的轉(zhuǎn)發(fā)路由表更新裝置示意圖;圖8是本發(fā)明所述實(shí)施例4中的轉(zhuǎn)發(fā)路由表更新線性表示意圖;圖9是本發(fā)明所述實(shí)施例8中的轉(zhuǎn)發(fā)路由表更新裝置示意圖;圖10是本發(fā)明所述實(shí)施例9中的轉(zhuǎn)發(fā)路由查找裝置示意圖;圖11是本發(fā)明所述實(shí)施例10中的轉(zhuǎn)發(fā)路由查找裝置示意圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施例對本發(fā)明作進(jìn)一步說明,但不作為對本發(fā)明的限定。
本發(fā)明提供了一種轉(zhuǎn)發(fā)路由表存放的方法,所述方法包括以下步驟將轉(zhuǎn)發(fā)路由表分為非線性表與線性表,對路由前綴進(jìn)行優(yōu)化劃分,將優(yōu)化劃分后的路由前綴在線性表和非線性表中進(jìn)行存放。
在對轉(zhuǎn)發(fā)路由表進(jìn)行操作時(shí),先將轉(zhuǎn)發(fā)路由表分為非線性表和線性表兩部分,其中非線性表存儲在硬件上,線性表存儲在內(nèi)存上,這里的非線性表以TCAM表為例進(jìn)行說明。轉(zhuǎn)發(fā)路由表的存放信息來自路由管理表,參見表2,路由管理表具體包括以下表項(xiàng)

表2(1)有效標(biāo)志位,該表項(xiàng)具體為用1表示該項(xiàng)有效,用0表示該項(xiàng)無效;(2)路由前綴,該表項(xiàng)指路由前綴;(3)路由前綴長度,該表項(xiàng)為路由前綴長度;(4)索引有效標(biāo)志,設(shè)置為0時(shí),表示無效;當(dāng)TCAM索引表項(xiàng)有具體值時(shí),該項(xiàng)設(shè)置為1,表示有效;(5)TCAM索引,系統(tǒng)設(shè)置其值;(6)下一跳,路由下一跳地址。
實(shí)施例1參見圖1,本發(fā)明提供了一種轉(zhuǎn)發(fā)路由表存放的方法,該方法通過減少路由的前綴位數(shù)對路由前綴進(jìn)行優(yōu)化,將優(yōu)化后的路由前綴放在非線性表中,將路由剩余前綴信息放在線性表中。假設(shè)路由前綴的優(yōu)化方法是以路由前綴減2為標(biāo)準(zhǔn)進(jìn)行的。本實(shí)施例轉(zhuǎn)發(fā)路由表的表項(xiàng)形式如表3,表4所示TCAM表

表3線性表

表4該轉(zhuǎn)發(fā)路由表存放的方法具體步驟如下步驟101獲取所要添加的路由信息,該路由信息包括路由前綴、前綴長度和路由記錄信息;該路由記錄信息為路由管理表中的內(nèi)容;步驟102根據(jù)路由前綴及其前綴長度,采用路由前綴減少相同的位數(shù)的優(yōu)化方法,得到該路由前綴的優(yōu)化路由前綴及相應(yīng)的優(yōu)化路由前綴長度;步驟103根據(jù)路由記錄信息,判斷優(yōu)化路由前綴是否是新增表項(xiàng)(如果優(yōu)化路由前綴對應(yīng)的TCAM索引表項(xiàng)已經(jīng)分配了數(shù)值,則說明該優(yōu)化路由前綴不是新增的表項(xiàng)),如果是,根據(jù)路由前綴長度申請TCAM索引,并記錄在轉(zhuǎn)發(fā)路由表中和路由管理表中(步驟104),否則,直接從路由記錄信息中獲取TCAM索引(步驟106);步驟104根據(jù)路由前綴長度向系統(tǒng)申請一個(gè)新的TCAM索引值,并記錄在TCAM索引表項(xiàng)一欄中和路由管理表中,該索引數(shù)值為系統(tǒng)分配的;步驟105向TCAM表中的優(yōu)化路由前綴表項(xiàng)填寫優(yōu)化路由前綴及其長度;然后執(zhí)行步驟107;步驟106從路由記錄信息中TCAM索引表項(xiàng)獲取所要添加路由的TCAM索引值;步驟107根據(jù)路由前綴和優(yōu)化路由前綴,計(jì)算該路由的線性部分,具體計(jì)算方法是先用路由前綴減去優(yōu)化路由前綴得到剩余的位數(shù),然后將剩余的位數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)值,最后把該十進(jìn)制數(shù)值作為線性部分;執(zhí)行步驟108;步驟108將線性部分、下一跳地址填寫到轉(zhuǎn)發(fā)路由表中的線性表,并將相應(yīng)的有效標(biāo)志位設(shè)置為1;
下面對本實(shí)施例作進(jìn)一步說明,例如假設(shè)表5中的10.1.0.0/24、10.1.1.0/24、10.1.2.0/24、10.1.3.0/24和10.1.0.128/25在路由表中都不存在,本實(shí)施例優(yōu)化前綴采用對每條路由將其前綴長度固定減2來進(jìn)行優(yōu)化。

表5當(dāng)下發(fā)信息為10.1.0.0/24,下一跳為Port1時(shí),根據(jù)優(yōu)化前綴,即22位前綴10.1.0.0/22查TCAM表,沒有路由前綴10.1.0.0/24對應(yīng)的優(yōu)化路由前綴10.1.0.0/22表項(xiàng),根據(jù)上述步驟102和103,這時(shí)需要申請優(yōu)化路由前綴10.1.0.0/22對應(yīng)的TCAM索引,本實(shí)施例假設(shè)系統(tǒng)分配的索引值為0,并將優(yōu)化路由前綴10.1.0.0/22表項(xiàng)加入TCAM表;同時(shí)得到線性部分0,線性部分的計(jì)算方法為將路由前綴的22位后的23、24兩位轉(zhuǎn)換為十進(jìn)制數(shù)值,并將該索引值添加到線性部分表項(xiàng)中,然后將下一跳Port1也填寫到對應(yīng)的表項(xiàng)中,有效標(biāo)志位設(shè)置為1。
當(dāng)下發(fā)信息為10.1.1.0/24,下一跳為Port2,根據(jù)22位前綴10.1.0.0/22查TCAM,查到優(yōu)化路由前綴10.1.0.0/22表項(xiàng)對應(yīng)的TCAM索引表項(xiàng)已經(jīng)被系統(tǒng)分配了索引值0,根據(jù)上述步驟102和106,直接從路由記錄信息中獲取TCAM索引0,根據(jù)優(yōu)化路由前綴10.1.0.0/22和路由前綴10.1.1.0/24計(jì)算線性部分為1,線性部分的具體計(jì)算方法同上,填加到線性部分表項(xiàng)中,并將下一跳Port2填加到對應(yīng)表項(xiàng)中,有效標(biāo)志設(shè)置為1。
同理,10.1.2.0/24和10.1.3.0/24的過程與10.1.1.0/24類似,這里不再詳述;當(dāng)下發(fā)為10.1.0.128/25,下一跳為Porr5,根據(jù)23位前綴10.1.0.0/23查TCAM表,沒有路由前綴10.1.0.128/25對應(yīng)的優(yōu)化路由前綴10.1.0.0/23,根據(jù)上述步驟102和103,需要申請TCAM索引表項(xiàng),本實(shí)施例假設(shè)系統(tǒng)分配的索引值為4,并將優(yōu)化路由前綴10.1.0.0/23添加到TCAM表的優(yōu)化路由前綴表項(xiàng)中;同時(shí)計(jì)算該路由的線性部分,其值為0,計(jì)算方法同上,并填加到線性部分表項(xiàng)中,下一跳Port5也填加到相應(yīng)的表項(xiàng)中,有效標(biāo)志設(shè)置為1。
上述存放結(jié)果參見表6,由表6可以看出,原來占用5條TCAM表項(xiàng)的路由,用本發(fā)明所提供的路由存放方法,只占用了兩條TCAM表項(xiàng)。由于TCAM表是通過硬件產(chǎn)生,這樣節(jié)省了大量的硬件開銷,增大了路由表的容量。
TCAM表和線性表

表6實(shí)施例2參見圖2,本發(fā)明還提供了一種路由刪除方法,本實(shí)施例是以實(shí)施例1為基礎(chǔ)將存放在轉(zhuǎn)發(fā)路由表中需要刪掉的路由進(jìn)行刪除。
該方法具體步驟如下步驟201獲取表項(xiàng)刪除信息TCAM表項(xiàng)索引、路由前綴和前綴長度;步驟202根據(jù)TCAM表項(xiàng)索引查出TCAM表對應(yīng)的優(yōu)化路由前綴表項(xiàng),然后根據(jù)路由前綴和優(yōu)化路由前綴,計(jì)算該路由的線性部分,具體計(jì)算方法與實(shí)施例1中相同,然后根據(jù)線性部分在線性表中查找對應(yīng)項(xiàng);步驟203在線性部分表項(xiàng)中查到該路由的對應(yīng)項(xiàng)后,根據(jù)線性表中有效標(biāo)志位的對應(yīng)數(shù)值,判斷該路由對應(yīng)表項(xiàng)是否有效,如果有效,將該項(xiàng)有效標(biāo)志位設(shè)置為0(步驟204);否則結(jié)束刪除,因?yàn)槠湟呀?jīng)是無效狀態(tài),就沒必要再繼續(xù)操作(步驟207);步驟204將所要刪除的路由對應(yīng)的有效標(biāo)志位設(shè)置為0;
步驟205檢查所述線性表對應(yīng)項(xiàng)是否為同組線性表中最后一個(gè)有效表項(xiàng),如果是,根據(jù)TCAM索引,刪除對應(yīng)的TCAM表項(xiàng)(步驟206);否則結(jié)束刪除(步驟207);這里的同組是指每條TCAM索引對應(yīng)的線性表項(xiàng)可以不只一條,可以是多條,把這里的多條歸為同組。
步驟206根據(jù)TCAM索引,刪除對應(yīng)的TCAM表項(xiàng);步驟207結(jié)束刪除。
下面對本實(shí)施例作進(jìn)一步說明,例如對于實(shí)施例1中存放的結(jié)果表3,采用對每條路由將其前綴長度固定減2來進(jìn)行優(yōu)化。當(dāng)要刪除表項(xiàng)10.1.1.0/24時(shí),優(yōu)化路由前綴長度為22,優(yōu)化路由前綴為10.1.0.0,根據(jù)路由前綴10.1.1.0和優(yōu)化路由前綴10.1.0.0,計(jì)算該路由的線性部分為1,計(jì)算方法同實(shí)施例1,直接刪除對應(yīng)的線性表,即把線性部分1對應(yīng)的有效標(biāo)志位設(shè)置成0,并檢查線性部分1對應(yīng)的同組其它線性表是否有效,這時(shí)其它表項(xiàng)有有效項(xiàng),不刪除非線性表TCAM表項(xiàng),只有TCAM表項(xiàng)索引對應(yīng)的線性表項(xiàng)都為無效時(shí),才刪除該TCAM表項(xiàng)。
當(dāng)刪除10.1.0.128/25時(shí),優(yōu)化路由前綴長度為23,根據(jù)23位前綴10.1.0.0/23得到線性部分0,直接刪除對應(yīng)的線性表,即把線性部分0對應(yīng)的有效標(biāo)志位設(shè)置成0,并檢查同組其它線性表是否有效,這時(shí)發(fā)現(xiàn)10.1.0.0/23對應(yīng)的線性表項(xiàng)均為無效(因?yàn)樵撀酚蓪?yīng)的線性表中沒有其它表項(xiàng)),則刪除該TCAM表項(xiàng)10.1.0.0/23。
根據(jù)上述過程,表6刪除后的結(jié)果如表7所示

表7實(shí)施例3參見圖3,本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由的查找方法,該方法根據(jù)轉(zhuǎn)發(fā)報(bào)文得到所要查找路由的目的IP地址,將非線性查找與線性查找相結(jié)合,進(jìn)行報(bào)文轉(zhuǎn)發(fā)。
本實(shí)施例是以實(shí)施例1為基礎(chǔ)進(jìn)行轉(zhuǎn)發(fā)路由的查找的。該方法應(yīng)用非線性查找與線性查找的組合技術(shù),非線性查找和線性查找使用路由前綴值中不同的部分,非線性查找給出一部分結(jié)果,線性查找給出一部分結(jié)果,二者的組合是最終的結(jié)果。
該方法具體步驟如下步驟301首先給出所要轉(zhuǎn)發(fā)路由的IP地址;步驟302根據(jù)路由前綴最長匹配原則(取所有匹配的優(yōu)化路由前綴長度最大的表項(xiàng)),檢查TCAM表中優(yōu)化路由前綴表項(xiàng)一欄看是否有與該IP地址匹配的優(yōu)化路由前綴,如果有,查該優(yōu)化路由前綴表項(xiàng)對應(yīng)的線性表(步驟303);否則停止報(bào)文轉(zhuǎn)發(fā)(步驟306);步驟303根據(jù)優(yōu)化路由前綴表項(xiàng),獲得所述IP地址對應(yīng)的優(yōu)化路由前綴和其長度,計(jì)算該轉(zhuǎn)發(fā)路由IP地址的線性部分,該線性部分的具體計(jì)算方法與實(shí)施例1中相同,根據(jù)線性部分查線性表相應(yīng)的表項(xiàng);步驟304根據(jù)線性表中的線性部分項(xiàng)對應(yīng)的有效標(biāo)志位的具體數(shù)值,判斷該轉(zhuǎn)發(fā)路由線性表對應(yīng)項(xiàng)是否有效,如果有效,按該條表項(xiàng)對應(yīng)的路由進(jìn)行報(bào)文轉(zhuǎn)發(fā)(步驟305);否則停止轉(zhuǎn)發(fā)報(bào)文,因?yàn)樵诼酚杀碇胁檎业慕Y(jié)果為無效路由,無法完成轉(zhuǎn)發(fā)報(bào)文(步驟306);步驟305按所查路由進(jìn)行報(bào)文轉(zhuǎn)發(fā);步驟306停止報(bào)文轉(zhuǎn)發(fā)。
下面對本實(shí)施例作進(jìn)一步說明,例如假設(shè)10.1.0.0/24、10.1.1.0/24、10.1.2.0/24和10.1.3.0/24已經(jīng)存在。當(dāng)查10.1.1.1這個(gè)目的IP時(shí),根據(jù)最長前綴匹配,TCAM表返回存在目的IP,這時(shí)根據(jù)10.1.0.0/22可以得到優(yōu)化路由前綴10.1.0.0和優(yōu)化前綴長度22,根據(jù)前綴長度22位和每條路由前綴固定減2的信息,得到線性部分為1,其對應(yīng)的路由為10.1.1.0/24,則按10.1.1.0/24轉(zhuǎn)發(fā)報(bào)文。
本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由表存放的方法,該方法是通過提前設(shè)定一個(gè)路由前綴分界長度N,當(dāng)路由前綴小于等于劃分界線N時(shí),采用線性表存放;當(dāng)路由前綴大于劃分界線N時(shí),采用非線性表存放。
在對轉(zhuǎn)發(fā)路由表進(jìn)行操作時(shí),將轉(zhuǎn)發(fā)路由表分為非線性表和線性表兩部分,這里的非線性表以TCAM表為例進(jìn)行說明,參見表9和表10,初始化具體包括以下表項(xiàng)根據(jù)系統(tǒng)要求,設(shè)定劃分路由前綴長度為N;參見表8,線性表初始化

表8(1)線性索引,在初始化過程對該索引不進(jìn)行分配,即不給出索引的具體數(shù)值,該項(xiàng)為空;(2)線性部分,該表項(xiàng)指路由前綴及其長度。初始化時(shí),該項(xiàng)為空;(3)下一跳,指通過該路由將數(shù)據(jù)轉(zhuǎn)發(fā)的地址,初始化時(shí)該項(xiàng)為空;(4)有效標(biāo)志位,該表項(xiàng)具體為用1表示該項(xiàng)有效,用0表示該項(xiàng)無效;初始化時(shí)設(shè)置該表項(xiàng)為0;參見表9,非線性表初始化

表9(1)TCAM索引,在初始化過程對該索引不進(jìn)行分配,即不給出索引的具體數(shù)值,該項(xiàng)為空;(2)非線性部分,該表項(xiàng)指路由前綴及其長度。初始化時(shí),此時(shí)該表項(xiàng)為空;(3)下一跳,指通過該路由將數(shù)據(jù)轉(zhuǎn)發(fā)的地址,初始化時(shí)該項(xiàng)為空;實(shí)施例4參見圖4,本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由表存放方法,該方法是以表9和表10的路由存放方法為基礎(chǔ)的,本實(shí)施例設(shè)定劃分路由前綴長度為16,當(dāng)路由前綴小于等于劃分前綴長度16時(shí),采用線性表存放;當(dāng)路由前綴大于劃分前綴長度16時(shí),采用TCAM表存放。。
該轉(zhuǎn)發(fā)路由表存放方法具體步驟如下步驟401獲得所要添加的路由信息,該路由信息包括路由前綴、路由前綴長度和下一跳地址;步驟402根據(jù)路由前綴長度,判斷是添加到線性部分還是非線性部分;如果路由的前綴長度小于等于劃分界線長度16,進(jìn)行線性表更新(步驟403);如果所述路由的前綴長度大于劃分界線長度16,進(jìn)行TCAM表更新(步驟410);線性表更新如下根據(jù)所述路由前綴計(jì)算線性索引,查在線性表中從所述線性索引對應(yīng)的表項(xiàng)到所述線性索引加上2的N減去所述路由的前綴長度次冪對應(yīng)的所有表項(xiàng);對于查到的有效表項(xiàng),當(dāng)表項(xiàng)中的路由前綴長度小于等于獲取的路由前綴長度時(shí),用獲取的路由信息更新該表項(xiàng),否則保留表項(xiàng)中原有的路由信息;對于查到的無效表項(xiàng),直接用獲取的路由信息更新該表項(xiàng);線性表更新具體步驟如下步驟403根據(jù)路由前綴長度,提取路由線性部分的值,作為線性索引index0,index0的數(shù)值為路由前綴的前16位對應(yīng)的十進(jìn)制數(shù);初始化index=index0,iner=0;步驟404根據(jù)index讀取線性表;步驟405判斷所述線性表的對應(yīng)表項(xiàng)是否有效,如果有效,并且表項(xiàng)中的前綴長度小于等于添加路由的前綴長度,則直接更新路由(步驟406);否則轉(zhuǎn)到步驟407;步驟406判斷表項(xiàng)中的前綴長度是否小于等于添加路由的前綴長度,如果是,則直接更新路由,用前綴長度較長的路由來更新線性表中的路由;否則轉(zhuǎn)到步驟408,查看下一個(gè)表項(xiàng)是否需要更新;步驟407用當(dāng)前轉(zhuǎn)發(fā)路由表更新所述線性表的表項(xiàng),即更新下一跳表項(xiàng),并把該表項(xiàng)設(shè)置為有效,即有效標(biāo)志位設(shè)置為1;步驟408iner=iner+1,index=index0+iner;步驟409判斷iner是否小于2的16減去添加路由的前綴長度次冪,如果是,返回步驟404,繼續(xù)讀取線性表,添加從當(dāng)前路由前綴長度到路由前綴分界長度16之間的所有表項(xiàng),否則結(jié)束添更新;TCAM表更新具體步驟如下
步驟410判斷所要添加的路由前綴是否是TCAM表的新增表項(xiàng)(判斷條件是看是否已經(jīng)分配TCAM索引,初始化時(shí),所有表項(xiàng)都未分配),如果是新增表項(xiàng),系統(tǒng)分配一個(gè)TCAM索引值,并把該索引值記錄在TCAM索引表項(xiàng)中(步驟411);否則直接從路由表中獲取TCAM表項(xiàng)索引(步驟412);步驟411系統(tǒng)分配一個(gè)TCAM索引值,并把該索引值記錄在TCAM索引表項(xiàng)中;步驟412直接從路由表中獲取該路由前綴對應(yīng)得TCAM索引值;步驟413向TCAM表的非線性部分填寫路由前綴及其長度;步驟414根據(jù)要添加的路由信息對下一跳表項(xiàng)進(jìn)行更新;步驟415結(jié)束更新。
下面對本實(shí)施例作進(jìn)一步說明,例如具體實(shí)例1假設(shè)N=16,且路由表中沒有任何路由,現(xiàn)在增加10.0.0.0/8這條路由,具體存放過程如下(1)根據(jù)路由前綴長度prefixlen=8,小于N,所以增加到線性表中;(2)根據(jù)10.0.0.0/8,得到index0=2560,iner=0,以2560為索引查線性表,這時(shí)線性表無效,直接更新該條表項(xiàng),將valid設(shè)置為1,prefixlen設(shè)置為8;(3)iner加1,即iner=1,計(jì)算2的(16-8)次冪為256,iner小于256,滿足條件,這時(shí)需要更新index=index0+iner=2561對應(yīng)的線性表;(4)重復(fù)(3)的步驟,直到iner加到256時(shí)結(jié)束。
具體實(shí)例2在具體實(shí)例1的基礎(chǔ)上,增加10.0.0.0/12這條路由,具體存放過程如下(1)根據(jù)路由prefixlen=12,小于N,所以增加到線性表中;(2)根據(jù)10.0.0.0/12,得到index0=2560,iner=0,以2560為索引查線性表,這時(shí)線性表有效,表項(xiàng)中prefixlen=8,這時(shí)新增路由prefixlen=12大于8,所以需要更新路由信息,同時(shí)設(shè)置表項(xiàng)中的prefixlen=12;(3)iner加1,即iner=1,計(jì)算2的(16-12)次冪為16,iner小于16,滿足條件,這時(shí)需要更新index=index0+iner=2561對應(yīng)的線性表,同時(shí)設(shè)置表項(xiàng)中的prefixlen=12;(4)重復(fù)(3)的步驟,直到iner加到16時(shí)結(jié)束。
具體實(shí)例3在具體實(shí)例1和具體實(shí)例2的基礎(chǔ)上,增加10.0.0.0/10這條路由,具體存放過程如下(1)根據(jù)路由prefixlen=10,小于N,所以增加到線性表中;(2)根據(jù)10.0.0.0/10,得到index0=2560,iner=0,以2560為索引查線性表,這時(shí)線性表有效,表項(xiàng)中prefixlen=12,這時(shí)新增路由prefixlen=10小于12,所以不需要更新路由信息;(3)iner加1,即inet=1,計(jì)算2的(16-10)次冪為64,iner小于64,滿足條件,這時(shí)檢查是否需要更新index=index0+iner=2561對應(yīng)的線性表,由于表項(xiàng)中的prefix=12,所以不需要更新路由信息;(4)重復(fù)(3)的步驟,直到iner加到16時(shí),index=index0+iner=2576,這時(shí)表項(xiàng)中的prefixlen=8,需要更新,直到iner加到64時(shí),才停止更新。
參見圖8為具體實(shí)例1、2和3增加后的線性表示意圖。
具體實(shí)例4例如如表10、表11和表12,這里以路由前綴長度為16作為劃分界線,小于等于16的,使用線性表存放,大于16的使用TCAM存放,這時(shí)線性表需要2的16次方項(xiàng)。

表10按以前的表項(xiàng)組織,需要占用4條TCAM表項(xiàng)。
按本發(fā)明提供的方案,線性路由存放如表7所示

表11非線性路由存放如表12所示

表12非線性路由存放在TCAM表中,占用一條TCAM表項(xiàng)。
只占一條TCAM表項(xiàng),節(jié)省了TCAM的使用,在相同TCAM資源的情況下,能夠支持更多的路由存放。
實(shí)施例5參見圖5,本發(fā)明還提供了一種路由刪除方法,本實(shí)施例以實(shí)施例4為基礎(chǔ)。
該方法具體步驟如下步驟501獲取刪除路由信息,該信息具體包括路由前綴,前綴長度和替換路由;步驟502判斷路由前綴長度是否小于等于劃分界線長度16,如果小于等于所述劃分界線長度16,則進(jìn)行線性表刪除流程(步驟503);否則刪除TCAM表中對應(yīng)的表項(xiàng)(步驟510);線性表刪除概括為根據(jù)所述路由前綴計(jì)算線性索引,查在線性表中從所述線性索引對應(yīng)的表項(xiàng)到所述線性索引加上2的N減去所述路由的前綴長度次冪對應(yīng)的所有表項(xiàng);當(dāng)在線性表中查到的表項(xiàng)有效,且表項(xiàng)中的路由前綴長度等于刪除路由信息中的前綴長度時(shí),用替換轉(zhuǎn)發(fā)路由表更新該表項(xiàng),否則結(jié)束刪除;線性表刪除具體流程為
步驟503根據(jù)路由前綴、前綴長度和路由前綴分界長度16,得到線性表索引index0,索引值的計(jì)算方法同實(shí)施例4,初始化index=index0,iner=0;步驟504根據(jù)線性索引index讀取線性表;步驟505判斷線性表中index對應(yīng)的表項(xiàng)是否有效,如果有效,則判斷表項(xiàng)中的路由前綴長度是否等于路由前綴長度(步驟506);否則結(jié)束刪除(步驟511);步驟506判斷表項(xiàng)中的路由前綴長度是否等于路由前綴長度,如果等于,則進(jìn)行步驟507;否則iner=iner+1;(步驟508);步驟507使用替換轉(zhuǎn)發(fā)路由表更新線性表中index對應(yīng)的表項(xiàng);步驟508iner=iner+1,index=index0+iner;步驟509判斷iner是否小于2的16減去添加路由的前綴長度次冪,如果是,返回步驟504繼續(xù)讀取線性表,否則結(jié)束刪除(步驟511);步驟510根據(jù)路由前綴及前綴長度,查TCAM表,將該路由對應(yīng)的TCAM表項(xiàng)刪除;步驟511結(jié)束刪除。
下面對本實(shí)施例作進(jìn)一步說明,例如對于上面添加的路由10.0.0.0/8、10.0.0.0/10和10.0.0.0/12,刪除10.0.0.0/10路由如下(1)刪除10.0.0.0/10路由,這時(shí)刪除路由信息為路由前綴長度prefixlen=10,前綴為10.0.0.0/10,替換路由為10.0.0.0/8(2)index0=2560,iner=0,以2560為索引查線性表,這時(shí)線性表有效,其prefx=12,大于10,這時(shí)不需要刪除;iner加1,計(jì)算2的(16-10)次冪為64;對于index=2560到2575之間的表項(xiàng),其prefixlen=12,這時(shí)不需要刪除;對于index=2576到2623之間的表項(xiàng),表項(xiàng)中的prefixlen=10,需要刪除這條路由,并添加替換路由10.0.0.0/8;(3)當(dāng)index=2623時(shí),iner=64,不滿足小于2的(16-10)次冪,即不滿足小于64,則結(jié)束刪除。
當(dāng)路由的前綴長度大于16,直接刪除該路由對應(yīng)的TCAM表項(xiàng)。
實(shí)施例6
參見圖6,本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由的查找方法,本實(shí)施例以實(shí)施例4為基礎(chǔ),該轉(zhuǎn)發(fā)路由的查找方法是應(yīng)用非線性查找與線性查找的組合技術(shù),對于前綴較長的路由,使用非線性查找,對于前綴較短的路由,使用線性查找。
對同一條路由,只有一個(gè)結(jié)果有效,根據(jù)最長匹配原則,先進(jìn)行非線性查找,當(dāng)在非線性表中沒有找到對應(yīng)的路由時(shí),再進(jìn)行線性查找,這樣能夠保證查找的結(jié)果是最準(zhǔn)確的結(jié)果。
該轉(zhuǎn)發(fā)路由的查找方法具體步驟如下步驟601根據(jù)轉(zhuǎn)發(fā)報(bào)文得到IP地址,先進(jìn)行非線性表查找(步驟602),當(dāng)非線性查找沒有找到該地址時(shí),再進(jìn)行線性表查找(步驟605);TCAM表查找流程如下步驟602根據(jù)IP地址查TCAM表;步驟603檢查TCAM表中非線性部分表項(xiàng),看是否有該IP地址,如果有,根據(jù)TCAM表轉(zhuǎn)發(fā)報(bào)文(步驟604);否則進(jìn)行線性表查找轉(zhuǎn)發(fā)報(bào)文(步驟605);步驟604轉(zhuǎn)發(fā)報(bào)文;線性表查找流程如下步驟605按分界線前綴長度16計(jì)算該IP地址對應(yīng)的線性表索引index0,因?yàn)椴煌拈L度在線性表中都有其對應(yīng)的位置;index0為路由前綴對應(yīng)的十進(jìn)制數(shù);步驟606判斷線性表對應(yīng)表項(xiàng)是否有效,如果有效,根據(jù)線性表轉(zhuǎn)發(fā)報(bào)文(步驟604);否則停止轉(zhuǎn)發(fā)報(bào)文(步驟607);步驟607停止轉(zhuǎn)發(fā)報(bào)文。
下面對本實(shí)施例作進(jìn)一步說明,例如假設(shè)10.1.0.0/16、11.1.0.0/16、12.1.0.0/16和10.1.1.0/24已經(jīng)存在表項(xiàng)中。同時(shí)設(shè)定對于每條路由,如果前綴長度小于等于16,需要放在線性表中;否則放在TCAM表中。
當(dāng)查10.1.1.1這個(gè)目的IP時(shí),先查TCAM表,發(fā)現(xiàn)10.1.1.0/24存在,根據(jù)最長匹配原則,則根據(jù)TCAM的結(jié)果轉(zhuǎn)發(fā)數(shù)據(jù)。當(dāng)查11.1.1.0這個(gè)目的IP時(shí),查TCAM表,沒有找到匹配的表項(xiàng),這時(shí)進(jìn)行線性表的查找,按分界線前綴長度取11.1.1.0的線性表索引11×256+1=2817,得11.1.0.0/16所對應(yīng)的線性表項(xiàng),如果該表項(xiàng)有效,則按其轉(zhuǎn)發(fā)數(shù)據(jù),否則停止轉(zhuǎn)發(fā)。
實(shí)施例7參見圖7,本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由表存放的裝置,該裝置包括劃分模塊和路由存放模塊所述劃分模塊用于將轉(zhuǎn)發(fā)路由表分為非線性表與線性表;所述路由存放模塊用于對路由前綴進(jìn)行優(yōu)化劃分,將優(yōu)化劃分后的路由前綴在線性表和非線性表中進(jìn)行存放。
所述路由存放模塊具體包括第一獲取路由信息模塊、獲取優(yōu)化路由前綴模塊、獲取非線性索引模塊和路由填寫模塊;所述第一獲取路由信息模塊用于獲取路由信息,所述路由信息包括路由前綴、前綴長度和路由記錄信息;所述獲取優(yōu)化路由前綴模塊用于根據(jù)所述路由信息獲取優(yōu)化路由前綴;所述獲取非線性索引模塊用于判斷所述優(yōu)化路由前綴是否是非線性表的新增表項(xiàng),如果是,系統(tǒng)分配一個(gè)非線性索引,并記錄在所述非線性表中;否則直接從所述非線性表中獲取非線性索引;所述路由填寫模塊用于根據(jù)路由前綴和優(yōu)化路由前綴長度計(jì)算線性部分,并填寫在線性表中,更新下一跳地址,同時(shí)設(shè)置有效標(biāo)志。
所述路由存放模塊還包括第一獲取刪除信息模塊、獲取優(yōu)化路由前綴模塊、判斷模塊和第一刪除模塊;所述第一獲取刪除信息模塊用于獲取刪除路由信息,所述路由信息包括非線性表表項(xiàng)索引、路由前綴和前綴長度;所述獲取優(yōu)化路由前綴模塊用于根據(jù)所述路由信息獲取優(yōu)化路由前綴;所述判斷模塊用于根據(jù)路由前綴和優(yōu)化前綴長度計(jì)算出線性部分,查找線性表中所述線性部分對應(yīng)的表項(xiàng);判斷線性表對應(yīng)的表項(xiàng)是否有效;如果有效,將所述線性表對應(yīng)項(xiàng)設(shè)置為無效;否則結(jié)束刪除;所述第一刪除模塊用于檢查所述線性表對應(yīng)項(xiàng)是否為同組線性表中最后一個(gè)有效表項(xiàng),如果是,根據(jù)線性部分表項(xiàng),刪除對應(yīng)的非線性表項(xiàng);否則結(jié)束刪除。
實(shí)施例8
參見圖9,本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由表存放的裝置,該裝置包括劃分模塊和路由存放模塊,所述劃分模塊作用同上,所述路由存放模塊具體包括第二獲取路由信息模塊、線性表更新模塊和非線性表更新模塊;所述第二獲取路由信息模塊用于獲取路由信息,所述路由信息包括路由前綴、前綴長度和下一跳地址;所述線性表更新模塊用于所述路由前綴長度小于等于N設(shè)定的路由前綴分界長度N;進(jìn)行線性表的更新;所述非線性表更新模塊用于所述路由前綴長度大于N,進(jìn)行非線性表更新。
所述路由存放模塊還包括第二獲取刪除信息模塊和第二刪除模塊;所述第二獲取刪除信息模塊用于獲取刪除路由信息,所述路由信息包括路由前綴、前綴長度和替換路由;所述第二刪除模塊用于判斷路由前綴長度是否小于等于路由前綴分界長度N,如果小于等于N,則刪除線性表的對應(yīng)表項(xiàng);否則刪除非線性表的對應(yīng)表項(xiàng)。
實(shí)施例9參見圖10,本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由的查找裝置,所述裝置包括獲取轉(zhuǎn)發(fā)地址模塊和轉(zhuǎn)發(fā)模塊;所述獲取轉(zhuǎn)發(fā)地址模塊用于根據(jù)轉(zhuǎn)發(fā)報(bào)文,得到所要查找路由的目的IP地址;所述轉(zhuǎn)發(fā)模塊用于將非線性查找與線性查找相結(jié)合,進(jìn)行報(bào)文轉(zhuǎn)發(fā)。
所述轉(zhuǎn)發(fā)模塊具體包括查找模塊,轉(zhuǎn)發(fā)報(bào)文模塊;所述查找模塊用于查非線性表中是否有與所述IP地址匹配的優(yōu)化路由前綴,所述轉(zhuǎn)發(fā)報(bào)文模塊用于當(dāng)在非線性表中查到所述優(yōu)化路由前綴,且該表項(xiàng)對應(yīng)的線性表項(xiàng)有效時(shí),按所查路由進(jìn)行報(bào)文轉(zhuǎn)發(fā);否則停止轉(zhuǎn)發(fā)報(bào)文。
實(shí)施例10參見圖11,本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由的查找裝置,所述裝置包括獲取轉(zhuǎn)發(fā)地址模塊和轉(zhuǎn)發(fā)模塊;所述獲取轉(zhuǎn)發(fā)地址模塊作用同上;
所述轉(zhuǎn)發(fā)模塊具體包括非線性轉(zhuǎn)發(fā)模塊和線性轉(zhuǎn)發(fā)模塊;所述非線性轉(zhuǎn)發(fā)單元用于根據(jù)所述目的IP地址查非線性表中是否有匹配的路由前綴,如果有,根據(jù)非線性表索引,查路由表轉(zhuǎn)發(fā)報(bào)文;否則進(jìn)行線性表查找轉(zhuǎn)發(fā)報(bào)文;所述線性轉(zhuǎn)發(fā)單元用于按路由前綴分界長度N計(jì)算該IP地址對應(yīng)的線性索引;判斷線性表中所述線性索引對應(yīng)表項(xiàng)是否有效,如果有效,根據(jù)線性索引,查路由表轉(zhuǎn)發(fā)報(bào)文;否則路由停止轉(zhuǎn)發(fā)報(bào)文。
以上所述的實(shí)施例,只是本發(fā)明較優(yōu)選的具體實(shí)施方式
的一種,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進(jìn)行的通常變化和替換,都應(yīng)包含在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種轉(zhuǎn)發(fā)路由表存放的方法,其特征在于,所述方法包括以下步驟將轉(zhuǎn)發(fā)路由表分為非線性表與線性表,對路由前綴進(jìn)行優(yōu)化劃分,將優(yōu)化劃分后的路由前綴在線性表和非線性表中進(jìn)行存放。
2.如權(quán)利要求1所述的一種轉(zhuǎn)發(fā)路由表存放的方法,其特征在于,所述方法具體包括以下步驟步驟A獲取路由信息,所述路由信息包括路由前綴、前綴長度和路由記錄信息;步驟B根據(jù)所述路由信息獲取優(yōu)化路由前綴;步驟C判斷所述優(yōu)化路由前綴是否是非線性表的新增表項(xiàng),如果是,系統(tǒng)分配一個(gè)非線性索引,并記錄在所述非線性表中;否則直接從所述路由記錄信息中獲取非線性索引;步驟D根據(jù)路由前綴和優(yōu)化路由前綴長度計(jì)算線性部分,并填寫在線性表中,更新下一跳地址,同時(shí)設(shè)置有效標(biāo)志。
3.如權(quán)利要求2所述的一種轉(zhuǎn)發(fā)路由表存放的方法,其特征在于,所述方法還包括以下步驟步驟E獲取刪除路由信息,所述路由信息包括非線性表表項(xiàng)索引、路由前綴和前綴長度;步驟F根據(jù)所述路由信息獲取優(yōu)化路由前綴;步驟G根據(jù)路由前綴和優(yōu)化路由前綴長度計(jì)算出線性部分,在線性表中查找所述線性部分對應(yīng)的表項(xiàng);判斷線性表對應(yīng)的表項(xiàng)是否有效,如果有效,將所述線性表對應(yīng)項(xiàng)設(shè)置為無效;否則結(jié)束刪除;步驟H檢查所述線性表對應(yīng)項(xiàng)是否為同組線性表中最后一個(gè)有效表項(xiàng),如果是,根據(jù)線性部分表項(xiàng),刪除對應(yīng)的非線性表項(xiàng);否則結(jié)束刪除。
4.如權(quán)利要求2或3所述的一種轉(zhuǎn)發(fā)路由表存放的方法,其特征在于,所述根據(jù)路由信息獲取優(yōu)化路由前綴的步驟具體包括對每條路由前綴采用減少相同的位得到優(yōu)化路由前綴。
5.如權(quán)利要求1所述的一種轉(zhuǎn)發(fā)路由表存放的方法,其特征在于,所述方法具體包括以下步驟步驟A′獲取路由信息,所述路由信息包括路由前綴、前綴長度和下一跳地址;步驟B′根據(jù)設(shè)定的路由前綴分界長度N,判斷所述路由前綴長度是否小于等于N;步驟C′如果路由前綴長度小于等于N,進(jìn)行線性表的更新;步驟D′如果所述路由前綴長度大于N,進(jìn)行非線性表更新。
6.如權(quán)利要求5所述的一種轉(zhuǎn)發(fā)路由表存放方法,其特征在于,所述步驟C具體包括以下步驟步驟C1′根據(jù)所述路由前綴計(jì)算線性索引,在線性表中查找路由前綴相同的表項(xiàng);步驟C2′對于在線性表中查到的有效表項(xiàng),當(dāng)表項(xiàng)中的路由前綴長度小于等于獲取的路由前綴長度時(shí),用獲取的路由信息更新該表項(xiàng);否則保留表項(xiàng)中原有的路由信息;步驟C3′對于在線性表中查到的無效表項(xiàng),直接用獲取的路由信息更新該表項(xiàng)。
7.如權(quán)利要求5所述的一種轉(zhuǎn)發(fā)路由表存放方法,其特征在于,所述步驟D具體包括以下步驟步驟D1根據(jù)非線性表記錄信息,判斷所述路由前綴是否是所述非線性表的新增表項(xiàng),如果是,系統(tǒng)分配一個(gè)非線性索引,并記錄在所述非線性表中;否則直接從所述非線性表中獲取非線性索引;步驟D2根據(jù)非線性索引對應(yīng)的非線性表項(xiàng),直接用獲取的路由信息更新該表項(xiàng)。
8.如權(quán)利要求5或6或7所述的一種轉(zhuǎn)發(fā)路由表存放方法,其特征在于,所述方法還包括以下步驟步驟E′獲得刪除路由信息,所述路由信息包括路由前綴、前綴長度和替換路由;步驟F′判斷路由前綴長度是否小于等于路由前綴分界長度N,如果小于等于N,則刪除線性表的對應(yīng)表項(xiàng);否則刪除非線性表的對應(yīng)表項(xiàng);步驟G′結(jié)束刪除。
9.如權(quán)利要求8所述的一種轉(zhuǎn)發(fā)路由表存放方法,其特征在于,所述步驟F′中的刪除線性表的對應(yīng)表項(xiàng)具體包括以下步驟步驟F1′根據(jù)所述路由前綴計(jì)算線性索引,在線性表中查找路由前綴相同的表項(xiàng);步驟F2′當(dāng)線性表中查到的表項(xiàng)有效,且表項(xiàng)中的路由前綴長度等于刪除路由信息中的前綴長度時(shí),用替換轉(zhuǎn)發(fā)路由表更新該表項(xiàng);否則結(jié)束刪除。
10.一種轉(zhuǎn)發(fā)路由的查找方法,其特征在于,所述方法包括以下步驟根據(jù)轉(zhuǎn)發(fā)報(bào)文,得到所要查找路由的目的IP地址,將非線性查找與線性查找相結(jié)合,進(jìn)行報(bào)文轉(zhuǎn)發(fā)。
11.如權(quán)利要求10所述一種轉(zhuǎn)發(fā)路由的查找方法,其特征在于,所述方法具體包括以下步驟步驟A″根據(jù)轉(zhuǎn)發(fā)報(bào)文,得到所要查找路由的目的IP地址;步驟B″在非線性表中查找是否有與所述IP地址匹配的優(yōu)化路由前綴,如果有,執(zhí)行步驟C″;如果沒有,路由停止轉(zhuǎn)發(fā)報(bào)文;步驟C″根據(jù)查到的優(yōu)化路由前綴,計(jì)算所述IP地址的線性部分,根據(jù)線性部分在線性表查找相應(yīng)的表項(xiàng);步驟D″判斷線性表對應(yīng)項(xiàng)是否有效,如果有效,根據(jù)線性表中對應(yīng)項(xiàng)得到路由表索引,查路由表進(jìn)行報(bào)文轉(zhuǎn)發(fā);否則路由停止轉(zhuǎn)發(fā)報(bào)文。
12.如權(quán)利要求10所述一種轉(zhuǎn)發(fā)路由的查找方法,其特征在于,所述方法具體包括以下步驟根據(jù)轉(zhuǎn)發(fā)報(bào)文得到目的IP地址,先進(jìn)行非線性表查找,當(dāng)非線性表查找失敗時(shí),再進(jìn)行線性表查找,然后根據(jù)查找結(jié)果進(jìn)行報(bào)文轉(zhuǎn)發(fā)。
13.如權(quán)利要求12所述一種轉(zhuǎn)發(fā)路由的查找方法,其特征在于,所述方法中的非線性表查找具體包括以下步驟根據(jù)所述目的IP地址查非線性表中是否有匹配的路由前綴,如果有,根據(jù)非線性表索引,查路由表轉(zhuǎn)發(fā)報(bào)文;否則進(jìn)行線性表查找轉(zhuǎn)發(fā)報(bào)文。
14.如權(quán)利要求12所述一種轉(zhuǎn)發(fā)路由的查找方法,其特征在于,所述方法中的線性表查找具體包括以下步驟步驟A按路由前綴分界長度N計(jì)算該IP地址對應(yīng)的線性索引;步驟B判斷線性表中所述線性索引對應(yīng)表項(xiàng)是否有效,如果有效,根據(jù)線性索引,查路由表轉(zhuǎn)發(fā)報(bào)文;否則路由停止轉(zhuǎn)發(fā)報(bào)文。
15.一種轉(zhuǎn)發(fā)路由表存放的裝置,其特征在于,所述裝置包括劃分模塊和路由存放模塊所述劃分模塊用于將轉(zhuǎn)發(fā)路由表分為非線性表與線性表;所述路由存放模塊用于對路由前綴進(jìn)行優(yōu)化劃分,將優(yōu)化劃分后的路由前綴在線性表和非線性表中進(jìn)行存放。
16.如權(quán)利要求15所述的一種轉(zhuǎn)發(fā)路由表存放的裝置,其特征在于,所述路由存放模塊具體包括第一獲取路由信息模塊、獲取優(yōu)化路由前綴模塊、獲取非線性索引模塊和路由填寫模塊;所述第一獲取路由信息模塊用于獲取路由信息,所述路由信息包括路由前綴、前綴長度和路由記錄信息;所述獲取優(yōu)化路由前綴模塊用于根據(jù)所述路由信息獲取優(yōu)化路由前綴;所述獲取非線性索引模塊用于判斷所述優(yōu)化路由前綴是否是非線性表的新增表項(xiàng),如果是,系統(tǒng)分配一個(gè)非線性索引,并記錄在所述非線性表中;否則直接從所述非線性表中獲取非線性索引;所述路由填寫模塊用于根據(jù)路由前綴和優(yōu)化路由前綴長度計(jì)算線性部分,并填寫在線性表中,更新下一跳地址,同時(shí)設(shè)置有效標(biāo)志。
17.如權(quán)利要求16所述的一種轉(zhuǎn)發(fā)路由表存放的裝置,其特征在于,所述路由存放模塊還包括第一獲取刪除信息模塊、獲取優(yōu)化路由前綴模塊、判斷模塊和第一刪除模塊;所述第一獲取刪除信息模塊用于獲取刪除路由信息,所述路由信息包括非線性表表項(xiàng)索引、路由前綴和前綴長度;所述獲取優(yōu)化路由前綴模塊用于根據(jù)所述路由信息獲取優(yōu)化路由前綴;所述判斷模塊用于根據(jù)路由前綴和優(yōu)化前綴長度計(jì)算出線性部分,查找線性表中所述線性部分對應(yīng)的表項(xiàng);判斷線性表對應(yīng)的表項(xiàng)是否有效;如果有效,將所述線性表對應(yīng)項(xiàng)設(shè)置為無效;否則結(jié)束刪除;所述第一刪除模塊用于檢查所述線性表對應(yīng)項(xiàng)是否為同組線性表中最后一個(gè)有效表項(xiàng),如果是,根據(jù)線性部分表項(xiàng),刪除對應(yīng)的非線性表項(xiàng);否則結(jié)束刪除。
18.如權(quán)利要求15所述的一種轉(zhuǎn)發(fā)路由表存放的裝置,其特征在于,所述路由存放模塊具體包括第二獲取路由信息模塊、線性表更新模塊和非線性表更新模塊;所述第二獲取路由信息模塊用于獲取路由信息,所述路由信息包括路由前綴、前綴長度和下一跳地址;所述線性表更新模塊用于所述路由前綴長度小于等于N設(shè)定的路由前綴分界長度N;進(jìn)行線性表的更新;所述非線性表更新模塊用于所述路由前綴長度大于N,進(jìn)行非線性表更新。
19.如權(quán)利要求18所述的一種轉(zhuǎn)發(fā)路由表存放的裝置,其特征在于,所述路由存放模塊還包括第二獲取刪除信息模塊和第二刪除模塊;所述第二獲取刪除信息模塊用于獲取刪除路由信息,所述路由信息包括路由前綴、前綴長度和替換路由;所述第二刪除模塊用于判斷路由前綴長度是否小于等于路由前綴分界長度N,如果小于等于N,則刪除線性表的對應(yīng)表項(xiàng);否則刪除非線性表的對應(yīng)表項(xiàng)。
20.一種轉(zhuǎn)發(fā)路由的查找裝置,其特征在于,所述裝置包括獲取轉(zhuǎn)發(fā)地址模塊和轉(zhuǎn)發(fā)模塊;所述獲取轉(zhuǎn)發(fā)地址模塊用于根據(jù)轉(zhuǎn)發(fā)報(bào)文,得到所要查找路由的目的IP地址;所述轉(zhuǎn)發(fā)模塊用于將非線性查找與線性查找相結(jié)合,進(jìn)行報(bào)文轉(zhuǎn)發(fā)。
21.如權(quán)利要求20所述一種轉(zhuǎn)發(fā)路由的查找裝置,其特征在于,所述轉(zhuǎn)發(fā)模塊具體包括查找模塊,轉(zhuǎn)發(fā)報(bào)文模塊;所述查找模塊用于查非線性表中是否有與所述IP地址匹配的優(yōu)化路由前綴,所述轉(zhuǎn)發(fā)報(bào)文模塊用于當(dāng)在非線性表中查到所述優(yōu)化路由前綴,且該表項(xiàng)對應(yīng)的線性表項(xiàng)有效時(shí),按所查路由進(jìn)行報(bào)文轉(zhuǎn)發(fā);否則停止轉(zhuǎn)發(fā)報(bào)文。
22.如權(quán)利要求20所述一種轉(zhuǎn)發(fā)路由的查找裝置,其特征在于,所述裝置的轉(zhuǎn)發(fā)模塊具體包括非線性轉(zhuǎn)發(fā)模塊和線性轉(zhuǎn)發(fā)模塊;所述非線性轉(zhuǎn)發(fā)單元用于根據(jù)所述目的IP地址查非線性表中是否有匹配的路由前綴,如果有,根據(jù)非線性表索引,查路由表轉(zhuǎn)發(fā)報(bào)文;否則進(jìn)行線性表查找轉(zhuǎn)發(fā)報(bào)文;所述線性轉(zhuǎn)發(fā)單元用于按路由前綴分界長度N計(jì)算該IP地址對應(yīng)的線性索引;判斷線性表中所述線性索引對應(yīng)表項(xiàng)是否有效,如果有效,根據(jù)線性索引,查路由表轉(zhuǎn)發(fā)報(bào)文;否則路由停止轉(zhuǎn)發(fā)報(bào)文。
全文摘要
本發(fā)明提供了一種轉(zhuǎn)發(fā)路由表存放的方法及裝置。屬于網(wǎng)絡(luò)傳輸領(lǐng)域。為了解決現(xiàn)有技術(shù)中系統(tǒng)存放路由成本大,容量不足的問題,本發(fā)明提供了一種轉(zhuǎn)發(fā)路由表存放的方法,包括將轉(zhuǎn)發(fā)路由表分為非線性表與線性表,對路由前綴進(jìn)行優(yōu)化劃分,將優(yōu)化劃分后的路由前綴在線性表和非線性表中存放的步驟。本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由表存放的裝置,包括路由劃分模塊和路由存放模塊。本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由的查找方法,包括根據(jù)路由表中路由的具體存放形式,采用線性查找與非線性查找相結(jié)合的步驟。本發(fā)明還提供了一種轉(zhuǎn)發(fā)路由的查找裝置,包括獲取轉(zhuǎn)發(fā)地址模塊和轉(zhuǎn)發(fā)模塊。本發(fā)明提供的方案,在不改變系統(tǒng)硬件結(jié)構(gòu)的情況下,增大了路由的容量。
文檔編號H04L12/56GK1983976SQ200610083230
公開日2007年6月20日 申請日期2006年5月31日 優(yōu)先權(quán)日2006年5月31日
發(fā)明者楊志崗 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
当阳市| 桃源县| 韩城市| 廉江市| 庆元县| 湖南省| 准格尔旗| 清丰县| 雅安市| 宣汉县| 扶沟县| 和田县| 阳谷县| 余干县| 榆中县| 扎囊县| 庆阳市| 宁陕县| 岱山县| 中牟县| 报价| 绥化市| 错那县| 鹤庆县| 千阳县| 铜川市| 姜堰市| 虹口区| 南投市| 恭城| 凌海市| 朝阳市| 丹东市| 朔州市| 巴东县| 富民县| 安乡县| 临颍县| SHOW| 樟树市| 九台市|