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

一種同時(shí)支持IPv4和IPv6的高速路由查找方法及裝置制造方法

文檔序號(hào):8006437閱讀:265來源:國(guó)知局
一種同時(shí)支持IPv4和IPv6的高速路由查找方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種同時(shí)支持IPv4和IPv6的高速路由查找方法及裝置,涉及網(wǎng)絡(luò)交換【技術(shù)領(lǐng)域】,其裝置包括:包括路由查找算法軟件模塊、路由更新接口模塊和路由查找硬件模塊三部分。其中路由查找算法軟件模塊完成對(duì)路由條目的軟件計(jì)算和更新條目指令下發(fā);路由更新接口模塊在接收了軟件更新條目指令后,根據(jù)路由查找硬件模塊的實(shí)際工作狀態(tài),控制路由查找硬件模塊的數(shù)據(jù)流,并將更新條目寫入路由查找硬件模塊的存儲(chǔ)器中;路由查找硬件模塊為雙路并行的流水線型架構(gòu),分別響應(yīng)硬件系統(tǒng)的IPv4和IPv6路由查找請(qǐng)求,并返回最長(zhǎng)前綴匹配的查找結(jié)果。
【專利說明】—種同時(shí)支持丨?4和1^/6的高速路由查找方法及裝置

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)交換【技術(shù)領(lǐng)域】,尤其涉及一種基于8-11*66同時(shí)支持1?^4和1?乂6的高速路由查找方法及裝置。

【背景技術(shù)】
[0002]隨著因特網(wǎng)的的迅猛發(fā)展,用于主干網(wǎng)絡(luò)互聯(lián)的核心路由器的接口速率達(dá)到100%%,該速率要求核心路由器在支持大容量路由表的情況下路由查找速率達(dá)到每秒幾百萬次。
[0003]I?查找需要得到最長(zhǎng)匹配前綴,1?^6遠(yuǎn)大于1??4的地址空間對(duì)于存儲(chǔ)與查找速度要求更高,近年來研究人員提出了多種硬件查找方法以提高查找速率,其中以11*16樹結(jié)構(gòu)和I1最為流行。
[0004]11*16樹結(jié)構(gòu)是應(yīng)用最為廣泛的樹結(jié)構(gòu),容易實(shí)現(xiàn)硬件上的流水操作,利于提升路由查找的吞吐率。但是11*16樹結(jié)構(gòu)的具有一定的局限性。一般11*16樹結(jié)構(gòu)的流水級(jí)數(shù)較多,會(huì)帶來過大的查找延時(shí)。采用多比特11*16樹結(jié)構(gòu)的路由查找設(shè)計(jì)可以大大減少流水級(jí)數(shù),但會(huì)帶來大量額外內(nèi)存的消耗,并且這種額外的內(nèi)存消耗量與路由表的前綴分布相關(guān),使得基于多比特11*16樹的路由查找硬件設(shè)計(jì)的路由表容量存在較大起伏。特別是由于1?^4和1?%的鍵值位寬相差4倍,同一個(gè)硬件架構(gòu)很難同時(shí)支持1?^4和1?%的路由查找,增加了硬件設(shè)計(jì)的復(fù)雜度和成本。
[0005]10^1能夠在同一芯片中實(shí)現(xiàn)1?^4和1?^6的路由查找,但要滿足100(?%的查找速率和核心路由器的路由表容量需求,需要多片1(^1級(jí)聯(lián)查找,功耗與發(fā)熱量將成為嚴(yán)重問題。
[0006]8-^66是一種被廣泛應(yīng)用于數(shù)據(jù)庫文件管理的軟件算法,它的特點(diǎn)是一個(gè)樹節(jié)點(diǎn)擁有1-1個(gè)關(guān)鍵字和1個(gè)子節(jié)點(diǎn),8-11-06的深度由階數(shù)1和關(guān)鍵字的數(shù)目決定,與關(guān)鍵字的分布無關(guān)。這些特點(diǎn)使得8-11*66能夠克服上述11*16樹結(jié)構(gòu)的缺點(diǎn),實(shí)現(xiàn)流水級(jí)數(shù)少且對(duì)路由前綴分布不敏感的路由查找設(shè)計(jì)。
[0007]需要注意的是在應(yīng)用8-11*66進(jìn)行路由查找時(shí),需要確保返回的結(jié)果為最長(zhǎng)前綴匹配結(jié)果。由于查找回溯是無法在硬件流水操作中實(shí)現(xiàn)的,因此需要對(duì)8-11*66的路由查找算法進(jìn)行特殊的處理。這類處理有很多種公開的操作方法,例如可以將父前綴復(fù)制成多份合并到其所有子前綴上,或者采用將父前綴與樹結(jié)構(gòu)最上層的子節(jié)點(diǎn)合并的方法。
[0008]目前我們已經(jīng)提出一種基于8-11*66的高速路由查找方法和裝置,它能夠用硬件流水線結(jié)構(gòu)實(shí)現(xiàn)高性能實(shí)現(xiàn)1卜4或者1?^6的路由查找,但它不能滿足同時(shí)支持1?^4和1?乂6路由查找的需求。
[0009]有鑒于此,本發(fā)明提出一種能夠同時(shí)實(shí)現(xiàn)1?4和1?%路由查找的方法及裝置。


【發(fā)明內(nèi)容】

[0010]本發(fā)明的目的在于提供一種同時(shí)支持1?4和1?%的高速路由查找方法及裝置,為了解決現(xiàn)有技術(shù)中能夠?qū)崿F(xiàn)1?^4或者1?^6的路由查找,但它不能滿足在相同系統(tǒng)結(jié)構(gòu)中同時(shí)支持1?4和1?%路由查找的需求的問題。
[0011]根據(jù)本發(fā)明的一個(gè)方面,提供了一種同時(shí)支持1?4和1?%的高速路由查找方法,其特征在于,包括以下步驟:
[0012]響應(yīng)路由轉(zhuǎn)發(fā)系統(tǒng)實(shí)時(shí)下發(fā)的路由條目更新指令,對(duì)和1?%共用樹節(jié)點(diǎn)保存的路由條目信息進(jìn)行更新;
[0013]在路由查找期間,根據(jù)路由查找請(qǐng)求確定需要進(jìn)行路由查找還是進(jìn)行1?^6路由查找;
[0014]若確定需要進(jìn)行1?^4路由查找,則從1?^4和1?^6共用樹結(jié)構(gòu)尋找用于1?^4路由查找的根節(jié)點(diǎn),并從根節(jié)點(diǎn)開始按照流水查找方式從所述共用樹結(jié)構(gòu)的各相應(yīng)節(jié)點(diǎn)獲得1?4路由信息;
[0015]若確定需要進(jìn)行1?^6路由查找,則從1?^4和1?^6共用樹結(jié)構(gòu)尋找用于1?^6路由查找的1?%根節(jié)點(diǎn),并從1?%根節(jié)點(diǎn)開始按照流水查找方式從所述共用樹結(jié)構(gòu)的各相應(yīng)節(jié)點(diǎn)獲得1?卩6路由信息。
[0016]優(yōu)選地,1?^4和1?^6路由表存放在相同位寬的8-11*66樹節(jié)點(diǎn)中,1?^4路由表和1?^6路由表動(dòng)態(tài)共享多層節(jié)點(diǎn),其每層節(jié)點(diǎn)保存多條路由信息。
[0017]優(yōu)選地,所述內(nèi)存區(qū)存有:1?4根節(jié)點(diǎn)地址、1?^6根節(jié)點(diǎn)地址、所述的多層節(jié)點(diǎn)以及結(jié)果表。
[0018]優(yōu)選地,所述的獲得路由信息的步驟包括:
[0019]1?^4查找邏輯從所述路由查找請(qǐng)求中獲取1?^4鍵值,并從所述內(nèi)存區(qū)獲取1?乂4根節(jié)點(diǎn)地址;
[0020]1?^4查找邏輯利用1??4根節(jié)點(diǎn)地址從1??4和1?%共用樹結(jié)構(gòu)找到1??4根節(jié)點(diǎn),通過讀取并解析該節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù),查找該節(jié)點(diǎn)路由信息,并按照流水查找方式查找下一級(jí)節(jié)點(diǎn)的路由信息,直至查找最后一級(jí)節(jié)點(diǎn)的路由信息;
[0021]其中,1?^4查找邏輯通過將所述1?^4鍵值與所解析的各節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)中的路由前綴分別進(jìn)行比較,獲得下一級(jí)節(jié)點(diǎn)指針,并從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的1?乂4路由信息。
[0022]優(yōu)選地,從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的路由信息的步驟包括:
[0023]將各匹配的路由條目中的結(jié)果表?xiàng)l目指針保存在查找模塊的緩存中;
[0024]每級(jí)流水匹配的路由條目的結(jié)果表?xiàng)l目指針直接覆蓋緩存中的內(nèi)容;
[0025]在結(jié)束對(duì)所有節(jié)點(diǎn)路由查找之后,根據(jù)緩存中最終的結(jié)果表?xiàng)l目指針查找結(jié)果表,獲得相應(yīng)的1?4路由信息。
[0026]優(yōu)選地,所述的獲得1?%路由信息的步驟包括:
[0027]1?^6查找邏輯從所述路由查找請(qǐng)求中獲取1?^6鍵值,并從所述內(nèi)存區(qū)獲取1?乂6根節(jié)點(diǎn)地址;
[0028]1?^6查找邏輯利用1??6根節(jié)點(diǎn)地址從1??4和1?%共用樹結(jié)構(gòu)找到1??6根節(jié)點(diǎn),通過讀取并解析該節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù),查找該節(jié)點(diǎn)路由信息,并按照流水查找方式查找下一級(jí)節(jié)點(diǎn)的路由信息,直至查找最后一級(jí)節(jié)點(diǎn)的路由信息;
[0029]其中,1?^6查找邏輯通過將所述1?^6鍵值與所解析的各節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)中的路由前綴分別進(jìn)行比較,獲得下一級(jí)節(jié)點(diǎn)指針,并從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的1?乂6路由信息。
[0030]優(yōu)選地,從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的1?%路由信息的步驟包括:
[0031]將各匹配的路由條目中的結(jié)果表?xiàng)l目指針保存在查找模塊的緩存中;
[0032]每級(jí)流水匹配的路由條目的結(jié)果表?xiàng)l目指針直接覆蓋緩存中的內(nèi)容;
[0033]在結(jié)束對(duì)所有節(jié)點(diǎn)路由查找之后,根據(jù)緩存中最終的結(jié)果表?xiàng)l目指針查找結(jié)果表,獲得相應(yīng)的1?6路由信息。
[0034]根據(jù)本發(fā)明的另一方面,提供了一種同時(shí)支持1?4和1?%的高速路由查找裝置,其特征在于,包括:
[0035]路由條目信息更新模塊,用于響應(yīng)路由轉(zhuǎn)發(fā)系統(tǒng)實(shí)時(shí)下發(fā)的路由條目更新指令,對(duì)和1?%共用樹節(jié)點(diǎn)保存的路由條目信息進(jìn)行更新;
[0036]確定路由查找模塊,用于在路由查找期間,根據(jù)路由查找請(qǐng)求確定需要進(jìn)行1?^4路由查找還是進(jìn)行1^6路由查找;
[0037]1?^4路由查找模塊,用于當(dāng)確定需要進(jìn)行1?^4路由查找,則從1?^4和1?^6共用樹結(jié)構(gòu)尋找用于1?4路由查找的1?卩4根節(jié)點(diǎn),并從1?卩4根節(jié)點(diǎn)開始按照流水查找方式從所述共用樹結(jié)構(gòu)的各相應(yīng)節(jié)點(diǎn)獲得路由信息;
[0038]1?^4結(jié)果獲取模塊,用于1?^4路由查找中,根據(jù)1?^4路由查找模塊獲取的1?^4路由信息查找結(jié)果表,獲得實(shí)際的路由查找結(jié)果。
[0039]1?^6路由查找模塊,用于當(dāng)確定需要進(jìn)行1?^6路由查找,則從1?^4和1?^6共用樹結(jié)構(gòu)尋找用于1?6路由查找的1?%根節(jié)點(diǎn),并從1?^6根節(jié)點(diǎn)開始按照流水查找方式從所述共用樹結(jié)構(gòu)的各相應(yīng)節(jié)點(diǎn)獲得1?%路由信息。
[0040]1?^6結(jié)果獲取模塊,用于1?^6路由查找中,根據(jù)1?^6路由查找模塊獲取的1?^6路由信息查找結(jié)果表,獲得實(shí)際的1?%路由查找結(jié)果。
[0041]優(yōu)選地,所述1?^4路由查找模塊包括:
[0042]獲取單元,用于查找邏輯從所述路由查找請(qǐng)求中獲取鍵值,并從所述內(nèi)存區(qū)獲取1?^4根節(jié)點(diǎn)地址;
[0043]1?^4查找單元,用于1??4查找邏輯利用1??4根節(jié)點(diǎn)地址從1??4和1?%共用樹結(jié)構(gòu)找到根節(jié)點(diǎn),通過讀取并解析該節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù),查找該節(jié)點(diǎn)路由信息,并按照流水查找方式查找下一級(jí)節(jié)點(diǎn)的路由信息,直至查找最后一級(jí)節(jié)點(diǎn)的路由信息;
[0044]其中,1?^4查找邏輯通過將所述1?^4鍵值與所解析的各節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)中的路由前綴分別進(jìn)行比較,獲得下一級(jí)節(jié)點(diǎn)指針,并從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的1?乂4路由信息。
[0045]優(yōu)選地,所述1?乂6路由查找模塊包括:
[0046]1?^6獲取單元,用于1??6查找邏輯從所述路由查找請(qǐng)求中獲取1??6鍵值,并從所述內(nèi)存區(qū)獲取1?^6根節(jié)點(diǎn)地址;
[0047]1?^6查找單元,用于1??6查找邏輯利用1??6根節(jié)點(diǎn)地址從1??4和1??6共用樹結(jié)構(gòu)找到1?%根節(jié)點(diǎn),通過讀取并解析該節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù),查找該節(jié)點(diǎn)路由信息,并按照流水查找方式查找下一級(jí)節(jié)點(diǎn)的路由信息,直至查找最后一級(jí)節(jié)點(diǎn)的路由信息;
[0048]其中,1?^6查找邏輯通過將所述1?^6鍵值與所解析的各節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)中的路由前綴分別進(jìn)行比較,獲得下一級(jí)節(jié)點(diǎn)指針,并從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的1?乂6路由信息。
[0049]與現(xiàn)有技術(shù)相比較,本發(fā)明的有益效果在于:
[0050]本發(fā)明能夠支持大規(guī)模1?^4和1?^6路由表,表項(xiàng)容量不隨路由前綴的分布波動(dòng),1?^4和1?^6樹結(jié)構(gòu)的融合大大降低了內(nèi)存需求,提高了路由系統(tǒng)的靈活性,能夠同時(shí)滿足核心路由器中1?^4和1?^6的高速路由查找需求,給用戶帶來了方便,并提高了用戶體驗(yàn)。

【專利附圖】

【附圖說明】
[0051]圖1是本發(fā)明提供的一種同時(shí)支持和1?%的高速路由查找方法流程圖;
[0052]圖2是本發(fā)明提供的一種同時(shí)支持和1?%的高速路由查找裝置示意圖;
[0053]圖3是本發(fā)明實(shí)施例提供的同時(shí)實(shí)現(xiàn)1?卩4和1??6路由查找裝置結(jié)構(gòu)框圖;
[0054]圖4是本發(fā)明實(shí)施例提供的1?卩4和1??6樹結(jié)構(gòu)融合示意圖;
[0055]圖5是本發(fā)明實(shí)施例提供的路由查找算法軟件模塊的功能模塊框圖;
[0056]圖6是本發(fā)明實(shí)施例提供的路由查找硬件模塊功能模塊框圖;
[0057]圖7是本發(fā)明實(shí)施例提供的路由查找硬件模塊查找流程圖;
[0058]圖8是本發(fā)明實(shí)施例提供的前綴結(jié)構(gòu)示意圖。

【具體實(shí)施方式】
[0059]以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)說明,應(yīng)當(dāng)理解,以下所說明的優(yōu)選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0060]圖1顯示了本發(fā)明提供的一種同時(shí)支持1?4和1?%的高速路由查找方法流程圖,如圖1所示,包括以下步驟:
[0061]步驟3101:響應(yīng)路由轉(zhuǎn)發(fā)系統(tǒng)實(shí)時(shí)下發(fā)的路由條目更新指令,對(duì)1??4和1?%共用樹節(jié)點(diǎn)保存的路由條目信息進(jìn)行更新;
[0062]步驟3102:在路由查找期間,根據(jù)路由查找請(qǐng)求確定需要進(jìn)行1?^4路由查找還是進(jìn)行1?^6路由查找;
[0063]步驟3103:若確定需要進(jìn)行1?^4路由查找,則從1?^4和1?^6共用樹結(jié)構(gòu)尋找用于路由查找的根節(jié)點(diǎn),并從根節(jié)點(diǎn)開始按照流水查找方式從所述共用樹結(jié)構(gòu)的各相應(yīng)節(jié)點(diǎn)獲得1”4路由信息;
[0064]步驟3104:若確定需要進(jìn)行1?^6路由查找,則從1?^4和1?^6共用樹結(jié)構(gòu)尋找用于1?^6路由查找的1?%根節(jié)點(diǎn),并從1?^6根節(jié)點(diǎn)開始按照流水查找方式從所述共用樹結(jié)構(gòu)的各相應(yīng)節(jié)點(diǎn)獲得1”6路由信息。
[0065]本發(fā)明1?^4和1?^6路由表存放在相同位寬的8-11*66樹節(jié)點(diǎn)中,1?^4路由表和1?^6路由表動(dòng)態(tài)共享多層節(jié)點(diǎn),其每層節(jié)點(diǎn)保存多條路由信息。
[0066]其中,所述內(nèi)存區(qū)存有:1?4根節(jié)點(diǎn)地址、1?^6根節(jié)點(diǎn)地址、所述的多層節(jié)點(diǎn)以及結(jié)果表。
[0067]本發(fā)明所述的獲得路由信息的步驟包括:1?4查找邏輯從所述路由查找請(qǐng)求中獲取1?4鍵值,并從所述內(nèi)存區(qū)獲取1?^4根節(jié)點(diǎn)地址;1?4查找邏輯利用1?^4根節(jié)點(diǎn)地址從1?4和1?^6共用樹結(jié)構(gòu)找到1?卩4根節(jié)點(diǎn),通過讀取并解析該節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù),查找該節(jié)點(diǎn)路由信息,并按照流水查找方式查找下一級(jí)節(jié)點(diǎn)的路由信息,直至查找最后一級(jí)節(jié)點(diǎn)的路由信息;其中,查找邏輯通過將所述鍵值與所解析的各節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)中的路由前綴分別進(jìn)行比較,獲得下一級(jí)節(jié)點(diǎn)指針,并從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的1卜4路由信息。
[0068]其中,節(jié)點(diǎn)中的1?乂4路由前綴包括乂?隊(duì)1?乂4前綴、1?乂4前綴矢量三個(gè)部分,其中1?^前綴矢量的每個(gè)比特都表示一個(gè)本前綴的前綴長(zhǎng)度,若其中某個(gè)比特為‘1’,則表示該前綴中存在該比特對(duì)應(yīng)長(zhǎng)度的前綴;采用這種方法,可以在同一個(gè)前綴中存放多條不同長(zhǎng)度的、具有父子關(guān)系的路由前綴。
[0069]具體地說,從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的1?^4路由信息的步驟包括:將各匹配的路由條目中的結(jié)果表?xiàng)l目指針保存在查找模塊的緩存中;每級(jí)流水匹配的路由條目的結(jié)果表?xiàng)l目指針直接覆蓋緩存中的內(nèi)容;在結(jié)束對(duì)所有節(jié)點(diǎn)路由查找之后,根據(jù)緩存中最終的結(jié)果表?xiàng)l目指針查找結(jié)果表,獲得相應(yīng)的路由信息。
[0070]本發(fā)明所述的獲得1?%路由信息的步驟包括:1?%查找邏輯從所述路由查找請(qǐng)求中獲取1?6鍵值,并從所述內(nèi)存區(qū)獲取1?^6根節(jié)點(diǎn)地址;1?%查找邏輯利用1?^6根節(jié)點(diǎn)地址從1?4和1?^6共用樹結(jié)構(gòu)找到1?卩6根節(jié)點(diǎn),通過讀取并解析該節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù),查找該節(jié)點(diǎn)路由信息,并按照流水查找方式查找下一級(jí)節(jié)點(diǎn)的路由信息,直至查找最后一級(jí)節(jié)點(diǎn)的路由信息;其中,1?^6查找邏輯通過將所述1?^6鍵值與所解析的各節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)中的路由前綴分別進(jìn)行比較,獲得下一級(jí)節(jié)點(diǎn)指針,并從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的路由信息。
[0071]其中,節(jié)點(diǎn)中的1?乂6路由前綴包括乂?隊(duì)1?乂6前綴、1?^6前綴矢量(^6(^0^)三個(gè)部分,其中1?%前綴矢量的每個(gè)比特都表示一個(gè)本前綴的前綴長(zhǎng)度,若其中某個(gè)比特為‘1’,則表示該前綴中存在該比特對(duì)應(yīng)長(zhǎng)度的前綴;采用這種方法,可以在同一個(gè)1?%前綴中存放多條不同長(zhǎng)度的、具有父子關(guān)系的1?%路由前綴。
[0072]具體地說,從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的1?^6路由信息的步驟包括:將各匹配的路由條目中的結(jié)果表?xiàng)l目指針保存在查找模塊的緩存中;每級(jí)流水匹配的路由條目的結(jié)果表?xiàng)l目指針直接覆蓋緩存中的內(nèi)容;在結(jié)束對(duì)所有節(jié)點(diǎn)路由查找之后,根據(jù)緩存中最終的結(jié)果表?xiàng)l目指針查找結(jié)果表,獲得相應(yīng)的1?%路由信息。
[0073]本發(fā)明所述的和1?%共用樹結(jié)構(gòu)具有多層節(jié)點(diǎn)保存在內(nèi)存區(qū)中,并且1?^4和1?%節(jié)點(diǎn)具有相同的數(shù)據(jù)位寬,每層節(jié)點(diǎn)能夠存放多條路由信息和多條1?%路由信息,動(dòng)態(tài)地分配給1卜4或1?%使用。
[0074]圖2顯不了本發(fā)明提供的一種同時(shí)支持1?^4和1?^6的聞速路由查找裝直不意圖,如圖2所示,包括:路由條目信息更新模塊201,用于響應(yīng)路由轉(zhuǎn)發(fā)系統(tǒng)實(shí)時(shí)下發(fā)的路由條目更新指令,對(duì)1?^4和1?^6共用樹節(jié)點(diǎn)保存的路由條目信息進(jìn)行更新;確定路由查找模塊202,用于在路由查找期間,根據(jù)路由查找請(qǐng)求確定需要進(jìn)行路由查找還是進(jìn)行1?乂6路由查找;1?^4路由查找模塊203,用于當(dāng)確定需要進(jìn)行1?^4路由查找,則從1?^4和1?6共用樹結(jié)構(gòu)尋找用于1?卩4路由查找的1?卩4根節(jié)點(diǎn),并從1?卩4根節(jié)點(diǎn)開始按照流水查找方式從所述共用樹結(jié)構(gòu)的各相應(yīng)節(jié)點(diǎn)獲得1卜4路由信息;1?^6路由查找模塊204,用于當(dāng)確定需要進(jìn)行1?6路由查找,則從和1?%共用樹結(jié)構(gòu)尋找用于1?%路由查找的1?^6根節(jié)點(diǎn),并從1?卩6根節(jié)點(diǎn)開始按照流水查找方式從所述共用樹結(jié)構(gòu)的各相應(yīng)節(jié)點(diǎn)獲得1?^6路由信息。
[0075]本發(fā)明還包括:1?^4結(jié)果獲取模塊205,用于1?^4路由查找中,根據(jù)1?^4路由查找模塊獲取的1卜4路由信息查找結(jié)果表,獲得實(shí)際的1?^4路由查找結(jié)果;1?^6結(jié)果獲取模塊206,用于1?%路由查找中,根據(jù)1?%路由查找模塊獲取的1?%路由信息查找結(jié)果表,獲得實(shí)際的1”6路由查找結(jié)果。
[0076]所述路由查找模塊203包括:1?4獲取單元,用于查找邏輯從所述路由查找請(qǐng)求中獲取1?4鍵值,并從所述內(nèi)存區(qū)獲取根節(jié)點(diǎn)地址;1?4查找單元,用于1?乂4查找邏輯利用1?^4根節(jié)點(diǎn)地址從和1?%共用樹結(jié)構(gòu)找到1?^4根節(jié)點(diǎn),通過讀取并解析該節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù),查找該節(jié)點(diǎn)路由信息,并按照流水查找方式查找下一級(jí)節(jié)點(diǎn)的路由信息,直至查找最后一級(jí)節(jié)點(diǎn)的路由信息;其中,查找邏輯通過將所述鍵值與所解析的各節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)中的路由前綴分別進(jìn)行比較,獲得下一級(jí)節(jié)點(diǎn)指針,并從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的路由信息。
[0077]所述1?%路由查找模塊204包括:1?%獲取單元,用于1?^6查找邏輯從所述路由查找請(qǐng)求中獲取1?6鍵值,并從所述內(nèi)存區(qū)獲取1?%根節(jié)點(diǎn)地址;
[0078]1?^6查找單元,用于1??6查找邏輯利用1??6根節(jié)點(diǎn)地址從1??4和1??6共用樹結(jié)構(gòu)找到1?%根節(jié)點(diǎn),通過讀取并解析該節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù),查找該節(jié)點(diǎn)路由信息,并按照流水查找方式查找下一級(jí)節(jié)點(diǎn)的路由信息,直至查找最后一級(jí)節(jié)點(diǎn)的路由信息;其中,1^6查找邏輯通過將所述1?%鍵值與所解析的各節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)中的路由前綴分別進(jìn)行比較,獲得下一級(jí)節(jié)點(diǎn)指針,并從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的1^6路由信息。
[0079]圖3顯示了本發(fā)明實(shí)施例提供的同時(shí)實(shí)現(xiàn)1??4和1?卩6路由查找裝置結(jié)構(gòu)框圖,如圖3所示,包括路由查找算法軟件模塊301、路由更新接口模塊302和路由查找硬件模塊303。其中,路由查找算法軟件模塊301完成對(duì)路由條目的軟件計(jì)算和更新條目指令下發(fā);路由更新接口模塊302在接收了軟件更新條目指令后,根據(jù)路由查找硬件模塊303的實(shí)際工作狀態(tài),控制路由查找硬件模塊303的數(shù)據(jù)流,并將更新條目寫入路由查找硬件模塊303的存儲(chǔ)器中;路由查找硬件模塊303是雙路并行的流水線型架構(gòu),分別響應(yīng)硬件系統(tǒng)的1?^4和1?%路由查找請(qǐng)求,并返回最長(zhǎng)前綴匹配的查找結(jié)果。
[0080]具體地說,路由查找算法軟件模塊301運(yùn)行在主控⑶口上,可以是高級(jí)算法語言(如語言)編寫的8-11*66算法軟件程序,計(jì)算和更新硬件路由表。路由更新接口模塊302是一個(gè)硬件模塊,包括緩存區(qū)和邏輯處理區(qū)兩部分。緩存區(qū)用于存放路由查找算法軟件模塊301寫入的更新節(jié)點(diǎn)信息;邏輯處理區(qū)用于根據(jù)路由查找硬件模塊303的相關(guān)狀態(tài),按照一定的順序,將更新節(jié)點(diǎn)數(shù)據(jù)寫入路由查找硬件模塊303的節(jié)點(diǎn)內(nèi)存中。路由查找硬件模塊303是硬件路由查找的主要模塊,是流水線設(shè)計(jì),主要由1?^4查找邏輯區(qū)、1?%查找邏輯區(qū)和內(nèi)存區(qū)構(gòu)成。和1?%查找邏輯分別處理相應(yīng)的查找請(qǐng)求,并返回查找結(jié)果;內(nèi)存區(qū)也是分層結(jié)構(gòu),用于存儲(chǔ)1?4和1?%的節(jié)點(diǎn)數(shù)據(jù)。
[0081]本發(fā)明的具體實(shí)施方法主要分為樹結(jié)構(gòu)設(shè)計(jì)、軟件模塊設(shè)計(jì)和硬件模塊設(shè)計(jì)三部分來描述。
[0082]圖4顯示了本發(fā)明實(shí)施例提供的1?^4和1?^6樹結(jié)構(gòu)融合示意圖,如圖4所示,本發(fā)明的樹結(jié)構(gòu)設(shè)計(jì)是實(shí)際需求確定1卜4和1?%的節(jié)點(diǎn)位寬,樹結(jié)構(gòu)階數(shù)11和12、樹結(jié)構(gòu)高度附和吧、每層節(jié)點(diǎn)的數(shù)目和結(jié)果表?xiàng)l目數(shù),從而確定硬件相應(yīng)的流水級(jí)數(shù)、每層節(jié)點(diǎn)占用空間和結(jié)果表占用空間。結(jié)構(gòu)設(shè)計(jì)需要綜合考慮1?^4和1?^6的基本數(shù)據(jù)位寬,路由表最大需求、硬件內(nèi)存讀寫代價(jià)、硬件布局布線等因素。
[0083]1?^4和1?%兩種路由查找分別通過兩條流水線查找邏輯實(shí)現(xiàn),但它們的樹節(jié)點(diǎn)存儲(chǔ)空間是共享的,相同流水級(jí)數(shù)的1?^4和1?^6節(jié)點(diǎn)存儲(chǔ)在相同的內(nèi)存地址空間。在1?乂4和1?^6的樹節(jié)點(diǎn)數(shù)據(jù)位寬保證相同的條件下,1?^4和1?^6生成的樹結(jié)構(gòu)可以如圖401和402所示,由于1?^4的每個(gè)鍵值寬度是3241〖,而1?^6的每個(gè)鍵值寬度是12841丨,因此在相同位寬的節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)下,1”4的8-11*66的階數(shù)11大于1??6的階數(shù)12 (1^^4的樹節(jié)點(diǎn)能夠索引更多的子節(jié)點(diǎn)因此從樹的形象上,1?卩4的樹形狀矮而胖,1?^6的樹形狀高而瘦。如果將兩個(gè)路由表簡(jiǎn)單相加,則內(nèi)存需求是兩棵樹面積的簡(jiǎn)單相加,并且在硬件設(shè)計(jì)上,它們的內(nèi)存將會(huì)相互獨(dú)立。
[0084]本發(fā)明的設(shè)計(jì)方案是如圖403所示,將兩棵樹融合,它們的樹底部處于相同層級(jí),每個(gè)層級(jí)的樹節(jié)點(diǎn)由它們分別的最大需求確定,最大層級(jí)數(shù)由1?%的樹高度決定。這樣處理的優(yōu)點(diǎn)是:減少內(nèi)存空間需求,同時(shí)滿足1?^4和1?%的大容量路由表需求;1?4和1?^6節(jié)點(diǎn)空間共享,可以自動(dòng)動(dòng)態(tài)調(diào)整兩種路由表的實(shí)際容量,提高查找設(shè)計(jì)對(duì)實(shí)際應(yīng)用情況的適應(yīng)性;簡(jiǎn)化硬件設(shè)計(jì)復(fù)雜度,降低硬件成本。
[0085]圖5顯示了本發(fā)明實(shí)施例提供的路由查找算法軟件模塊的功能模塊框圖,如圖5所示,整個(gè)路由算法軟件模塊基于8-11*66算法實(shí)現(xiàn),整體框架分是四大部分:1?^4算法模塊501、1?^6算法模塊502、內(nèi)存管理模塊503和更新硬件操作模塊504。
[0086]所述的算法模塊架構(gòu)501包括插入操作模塊、刪除操作模塊兩部分。插入操作模塊主要工作是響應(yīng)路由轉(zhuǎn)發(fā)系統(tǒng)的路由插入指令,并將下發(fā)的路由條目插入到8-11*66樹結(jié)構(gòu)中。刪除操作模塊主要工作是響應(yīng)路由轉(zhuǎn)發(fā)系統(tǒng)的路由刪除指令,并將下發(fā)的路由條目從8-11*66樹結(jié)構(gòu)中刪除。
[0087]所述的1?^4算法模塊501和1?^6算法模塊502采用相同的算法,皆是基于的路由查找算法,區(qū)別僅是鍵值的位寬和8-11*66的階數(shù)不同。
[0088]所述的內(nèi)存管理模塊503的功能是對(duì)路由查找算法中的節(jié)點(diǎn)數(shù)據(jù)內(nèi)存和結(jié)果表數(shù)據(jù)內(nèi)存進(jìn)行管理,其中1卜4和1?^6的節(jié)點(diǎn)和結(jié)果表的空間由管理函數(shù)統(tǒng)一分配,即1?^4和1?%的節(jié)點(diǎn)和結(jié)果表在同一個(gè)資源池中進(jìn)行分配,使得它們能夠相互共享資源,提高查找裝置的適應(yīng)性。
[0089]所述的更新硬件操作模塊504的主要功能是更新硬件內(nèi)存中的樹節(jié)點(diǎn)和結(jié)果表?xiàng)l目。首先更新硬件操作模塊504將所有需要更新的信息記錄在緩存中;然后在插入操作模塊或刪除操作模塊結(jié)束后,將樹節(jié)點(diǎn)從軟件數(shù)據(jù)格式轉(zhuǎn)換成約定的硬件數(shù)據(jù)格式;最后將轉(zhuǎn)換后的硬件數(shù)據(jù)和對(duì)應(yīng)的硬件映射地址通過軟硬件交互接口可以但不限于或接口連續(xù)寫入路由更新接口模塊中。該更新硬件操作模塊504的意義在于減少軟硬件的接口交互操作,節(jié)省更新時(shí)間,并減少條目更新對(duì)硬件實(shí)際查找流水的影響。
[0090]圖6顯示了本發(fā)明實(shí)施例提供的路由查找硬件模塊功能模塊框圖,如圖6所示,包括路由更新接口模塊601和路由查找硬件模塊604。
[0091]所述的路由更新接口模塊601包括緩存區(qū)602和邏輯處理區(qū)603兩部分。緩存區(qū)602主要功能是接收存儲(chǔ)軟件通過軟硬件交互接口寫入的節(jié)點(diǎn)數(shù)據(jù)、結(jié)果表?xiàng)l目數(shù)據(jù)和它們對(duì)應(yīng)的硬件地址,這些數(shù)據(jù)已經(jīng)由軟件轉(zhuǎn)換成硬件數(shù)據(jù)格式。邏輯處理區(qū)603主要功能是在不影響正常查找的正確性條件下,對(duì)硬件內(nèi)存中的樹節(jié)點(diǎn)和結(jié)果表?xiàng)l目數(shù)據(jù)進(jìn)行更新。
[0092]所述的路由查找硬件模塊604主要功能是實(shí)現(xiàn)1?^4和1?^6的路由硬件查找功能,包括1?卩4查找邏輯605、1??6查找邏輯606、內(nèi)存區(qū)607、指令分發(fā)609和結(jié)果聚合610五個(gè)部分。
[0093]所述的1?^4查找邏輯605主要功能是完成1?^4的路由查找,返回1?^4路由查找結(jié)果。查找流水共有[+1級(jí),其中IV」至是樹節(jié)點(diǎn)查找邏輯層,是結(jié)果表查找邏輯層。每一個(gè)查找邏輯層都對(duì)應(yīng)了內(nèi)存區(qū)中的一塊獨(dú)立內(nèi)存空間,保證各層對(duì)內(nèi)存區(qū)的訪問不會(huì)相互沖突。
[0094]所述的1?^6查找邏輯606主要功能是完成1?乂6的路由查找,返回1?^6路由查找結(jié)果。1?%查找流水共有吧+1級(jí),其中IV」至是樹節(jié)點(diǎn)查找邏輯層,1^^2+1是結(jié)果表查找邏輯層。每一個(gè)查找邏輯層都對(duì)應(yīng)了內(nèi)存區(qū)中的一塊獨(dú)立內(nèi)存空間,保證各層對(duì)內(nèi)存區(qū)的訪問不會(huì)相互沖突。
[0095]所述的內(nèi)存區(qū)607是路由查找硬件模塊中的數(shù)據(jù)存儲(chǔ)區(qū)域,內(nèi)存區(qū)中的各內(nèi)存區(qū)域相互獨(dú)立,分是根節(jié)點(diǎn)地址區(qū)域、各層節(jié)點(diǎn)區(qū)域和結(jié)果表區(qū)域。其中根結(jié)點(diǎn)地址608包括1?乂4根節(jié)點(diǎn)地址和1?%根節(jié)點(diǎn)地址,用于分別存儲(chǔ)1?^4和1?%的8-11*66樹結(jié)構(gòu)的根節(jié)點(diǎn)的地址。樹節(jié)點(diǎn)區(qū)域的每層之間都相互獨(dú)立,不與其它層樹節(jié)點(diǎn)區(qū)域交疊,避免查找流水同時(shí)訪問的沖突。結(jié)果表區(qū)域也是一塊獨(dú)立區(qū)域,由查找流水的最后一級(jí)訪問。
[0096]所述的查找邏輯605和1??6查找邏輯606中,它們的查找流水底層處于相同層級(jí),但上層由于1?卩4樹結(jié)構(gòu)和1?卩6樹結(jié)構(gòu)的特點(diǎn),導(dǎo)致1?卩4的流水級(jí)數(shù)可能與1?卩6的流水級(jí)數(shù)不同分別是[+1級(jí)流水和吧+1級(jí)流水,因此本發(fā)明的設(shè)計(jì)中不保證1?卩4和1?^6的路由查找請(qǐng)求之間的順序性,只保證1?4請(qǐng)求與1?卩4請(qǐng)求之間的順序性,以及1?卩6請(qǐng)求與1?^6請(qǐng)求之間的順序性。
[0097]同時(shí),由于查找流水的級(jí)數(shù)不同,存在1??4查找邏輯605和1?%查找邏輯606同時(shí)訪問內(nèi)存區(qū)同一層節(jié)點(diǎn)的情況。這種情況可以通過多種方法解決,例如在內(nèi)存狀1選擇上采用有2組讀寫端口的雙端口狀1 ;也可以采用邏輯調(diào)度方式,對(duì)查找邏輯的讀請(qǐng)求進(jìn)行調(diào)度處理。
[0098]所述的指令分發(fā)模塊609主要功能是根據(jù)外部輸入指令的特征,區(qū)分是指令還是1?%指令,然后將其分發(fā)給相應(yīng)的查找邏輯進(jìn)行處理。
[0099]所述的結(jié)果聚合模塊610主要功能是將和1?%的查找結(jié)果進(jìn)行調(diào)度,分別返回。
[0100]圖7顯示了本發(fā)明實(shí)施例提供的路由查找硬件模塊查找流程圖,如圖7所示,包括以下步驟:
[0101]步驟3701:路由查找硬件模塊收到輸入的查找請(qǐng)求;
[0102]步驟3702:對(duì)輸入的查找請(qǐng)求查找鍵值進(jìn)行分發(fā),將1?^4請(qǐng)求發(fā)送給查找邏輯,將1?%請(qǐng)求發(fā)送給1?%查在邏輯;
[0103]步驟3703:將查找鍵值信息和內(nèi)存區(qū)中的根節(jié)點(diǎn)地址信息同時(shí)發(fā)送至第一級(jí)查找流水中;
[0104]步驟3704:在流水的邏輯中首先對(duì)根節(jié)點(diǎn)地址是否是本級(jí)節(jié)點(diǎn)進(jìn)行判斷,如果是本級(jí)節(jié)點(diǎn),則向內(nèi)存發(fā)起讀節(jié)點(diǎn)請(qǐng)求,等待內(nèi)存返回節(jié)點(diǎn)數(shù)據(jù);如果不是本級(jí)節(jié)點(diǎn),貝1]不向內(nèi)存發(fā)起請(qǐng)求,保留當(dāng)前節(jié)點(diǎn)信息不改變;
[0105]步驟3705:將獲得的節(jié)點(diǎn)信息進(jìn)行解析,并與鍵值進(jìn)行比較;如果未訪問本級(jí)節(jié)點(diǎn),則不需要進(jìn)行解析比較,打拍等待即可;
[0106]步驟3706:比較的結(jié)果如果存在命中,則將命中的路由條目對(duì)應(yīng)的結(jié)果記錄,覆蓋之前命中的結(jié)果;如果未訪問本級(jí)節(jié)點(diǎn),則不需要進(jìn)行記錄,打拍等待;
[0107]步驟3707:如果進(jìn)行了比較,則從比較結(jié)果中獲取下一級(jí)應(yīng)訪問的節(jié)點(diǎn)地址記錄在節(jié)點(diǎn)地址中;如果未訪問本級(jí)節(jié)點(diǎn),保留當(dāng)前節(jié)點(diǎn)信息不改變;
[0108]步驟3708:查找流水?dāng)y帶鍵值信息、節(jié)點(diǎn)地址和命中結(jié)果進(jìn)入下一級(jí)流水處理邏輯;
[0109]步驟3709:如果下一級(jí)流水不是最后一級(jí),則過程與上述3704-3708流程相同,如果下一級(jí)流水是最后一級(jí),則是訪問結(jié)果表的處理邏輯3710 ;
[0110]步驟3710:在結(jié)果表流水級(jí)中,邏輯將根據(jù)命中結(jié)果表?xiàng)l目地址訪問內(nèi)存區(qū)的結(jié)果表,獲得命中實(shí)際結(jié)果;如果未命中,則不訪問結(jié)果表,輸出未命中信息;
[0111]步驟3711:將查找結(jié)果送入結(jié)果聚合邏輯與另一條查找流水的結(jié)果進(jìn)行調(diào)度;
[0112]步驟3712:將命中的實(shí)際結(jié)果通過硬件接口返回,如果未命中,返回未命中信息。
[0113]圖8顯示了本發(fā)明實(shí)施例提供的前綴結(jié)構(gòu)示意圖,如圖8所示,包括前綴結(jié)構(gòu)801、1?^6前綴結(jié)構(gòu)802、1?^4節(jié)點(diǎn)指針20吒1七803以及1?^6節(jié)點(diǎn)指針20吒1七804。
[0114]每個(gè)1?^4的前綴結(jié)構(gòu)801包括:32-^11前綴,16-^1^的的結(jié)果支持超過161路由表,264“ ^60^01-因是實(shí)際路由表中不會(huì)出現(xiàn)前綴長(zhǎng)度1-7的1?^4前綴。所以1”4前綴結(jié)構(gòu)所需的位寬是98411
[0115]每個(gè)1?^6的前綴結(jié)構(gòu)802包括128吒1丨前綴,16-^1^的丨的結(jié)果支持超過161的路由表,114-131^ ^60^01-因是實(shí)際路由表中不會(huì)出現(xiàn)前綴長(zhǎng)度1-15的1?^6前綴。所以所需1”6前綴結(jié)構(gòu)的位寬是282411
[0116]1?^4和1?%的節(jié)點(diǎn)指針都是2041〖,滿足大規(guī)模的樹結(jié)構(gòu)。
[0117]那么每層節(jié)點(diǎn)數(shù)據(jù)位寬是八-1+8-1+1。其中八是前綴結(jié)構(gòu)的位寬,1是前綴結(jié)構(gòu)的數(shù)目,8是節(jié)點(diǎn)指針的位寬。
[0118]由于大部分樹節(jié)點(diǎn)可能存儲(chǔ)在001?上,001?的訪問數(shù)據(jù)位寬是1284“的整數(shù)倍,因此每層節(jié)點(diǎn)的數(shù)據(jù)位寬也最好是128的整數(shù)倍。
[0119]則要求剋蝴1+20*12+1彡12剛,六2*12+20*12+1彡12剛。其中八1是1?乂4的前綴結(jié)構(gòu)位寬,八2是1?%前綴結(jié)構(gòu)位寬,II和12分別是每層節(jié)點(diǎn)中的1?^4和1?%的前綴數(shù)目。
[0120]可以選擇的數(shù)值是:
[0121]11=8,12=3,^=8 ;此時(shí)1?^4節(jié)點(diǎn)需求位寬是964吒1。1?^6需求位寬是926吒1七,實(shí)際分配的節(jié)點(diǎn)位寬是1024411這種配置下在大容量需求下流水級(jí)數(shù)較少,對(duì)001?性能要求一般,同時(shí)浪費(fèi)的內(nèi)存較少。可以預(yù)計(jì)這種配置下要滿足41容量1?^4路由表和11容量1?^6路由表需求,需要11級(jí)流水,600她的節(jié)點(diǎn)內(nèi)存空間。
[0122]也可以選擇數(shù)值是:
[0123]11=5,12=2,^=5 ;此時(shí)1?^4節(jié)點(diǎn)需求位寬是610吒1。1?^6需求位寬是624吒1七,實(shí)際分配的節(jié)點(diǎn)位寬是660411這種配置下,對(duì)001?性能要求較低,同時(shí)浪費(fèi)的內(nèi)存最少,但流水級(jí)數(shù)需求較多,特別是對(duì)于1?%路由需要更多的流水級(jí)數(shù)才能滿足較大規(guī)模路由表??梢灶A(yù)計(jì)這種配置下,要滿足512&容量的1?^4路由和32&容量1?^6路由,需要11級(jí)流水,70她節(jié)點(diǎn)內(nèi)存空間。
[0124]本發(fā)明的數(shù)據(jù)格式主要分是節(jié)點(diǎn)數(shù)據(jù)格式、結(jié)果表數(shù)據(jù)格式。節(jié)點(diǎn)數(shù)據(jù)中包括:鍵值、標(biāo)記矢量、結(jié)果表地址、下一級(jí)指針?biāo)膫€(gè)部分。鍵值是路由表中的路由前綴;標(biāo)記矢量是8-11*66算法中的標(biāo)記同一前綴中不同前綴長(zhǎng)度條目的標(biāo)記矢量;結(jié)果表地址是本路由條目對(duì)應(yīng)的查找結(jié)果在結(jié)果表的地址信息;下一級(jí)指針是經(jīng)過本級(jí)查找后,下一級(jí)應(yīng)訪問的節(jié)點(diǎn)地址。其中1”4的8-11*66節(jié)點(diǎn)和1?^6的節(jié)點(diǎn)具有相同的節(jié)點(diǎn)位寬,同一流水級(jí)的樹節(jié)點(diǎn)存儲(chǔ)在相同的內(nèi)存地址空間中,通過和1?%不同的節(jié)點(diǎn)解析邏輯來區(qū)分。
[0125]本發(fā)明設(shè)計(jì)的硬件查找結(jié)構(gòu)是自底向上生長(zhǎng)的8-11*66樹結(jié)構(gòu)。首先根據(jù)1?乂4和1?乂6路由表容量需求定義8-11*66的階數(shù)11編2和樹高度[咖2,并根據(jù)它們分別的樹高度設(shè)計(jì)設(shè)定相應(yīng)的流水級(jí)數(shù);然后根據(jù)算法填充情況定義出每層樹結(jié)構(gòu)最大的節(jié)點(diǎn)數(shù)目需求,按照最大節(jié)點(diǎn)數(shù)目設(shè)定相應(yīng)的內(nèi)存空間;最后根據(jù)路由表實(shí)際容量需求設(shè)定結(jié)果表的內(nèi)存空間。
[0126]本發(fā)明從整體上設(shè)計(jì)了路由查找系統(tǒng)的軟件算法模塊、硬件數(shù)據(jù)結(jié)構(gòu)、更新流程、查找流水結(jié)構(gòu)和內(nèi)存結(jié)構(gòu),能夠同時(shí)滿足1?4和1?%的路由查找,滿足大容量路由表的高性能查找需求。
[0127]綜上所述,本發(fā)明具有以下技術(shù)效果:
[0128]本發(fā)明能夠支持大規(guī)模1?4和1?^6路由表,能夠同時(shí)滿足核心路由器中和1?^6的高速路由查找需求,給用戶帶來了方便,并提高了用戶體驗(yàn)。
[0129]盡管上文對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,但是本發(fā)明不限于此,本【技術(shù)領(lǐng)域】技術(shù)人員可以根據(jù)本發(fā)明的原理進(jìn)行各種修改。因此,凡按照本發(fā)明原理所作的修改,都應(yīng)當(dāng)理解是落入本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種同時(shí)支持IPv4和IPv6的高速路由查找方法,其特征在于,包括以下步驟: 響應(yīng)路由轉(zhuǎn)發(fā)系統(tǒng)實(shí)時(shí)下發(fā)的路由條目更新指令,對(duì)IPv4和IPv6共用樹節(jié)點(diǎn)保存的路由條目信息進(jìn)行更新; 在路由查找期間,根據(jù)路由查找請(qǐng)求確定需要進(jìn)行IPv4路由查找還是進(jìn)行IPv6路由查找; 若確定需要進(jìn)行IPv4路由查找,則從IPv4和IPv6共用樹結(jié)構(gòu)尋找用于IPv4路由查找的IPv4根節(jié)點(diǎn),并從IPv4根節(jié)點(diǎn)開始按照流水查找方式從所述共用樹結(jié)構(gòu)的各相應(yīng)節(jié)點(diǎn)獲得IPv4路由信息; 若確定需要進(jìn)行IPv6路由查找,則從IPv4和IPv6共用樹結(jié)構(gòu)尋找用于IPv6路由查找的IPv6根節(jié)點(diǎn),并從IPv6根節(jié)點(diǎn)開始按照流水查找方式從所述共用樹結(jié)構(gòu)的各相應(yīng)節(jié)點(diǎn)獲得IPv6路由信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,IPv4和IPv6路由表存放在相同位寬的B-Tree樹節(jié)點(diǎn)中,IPv4路由表和IPv6路由表動(dòng)態(tài)共享多層節(jié)點(diǎn),其每層節(jié)點(diǎn)保存多條路由信息。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述內(nèi)存區(qū)存有:IPv4根節(jié)點(diǎn)地址、IPv6根節(jié)點(diǎn)地址、所述的多層節(jié)點(diǎn)以及結(jié)果表。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述的獲得IPv4路由信息的步驟包括: IPv4查找邏輯從所述路由查找請(qǐng)求中獲取IPv4鍵值,并從所述內(nèi)存區(qū)獲取IPv4根節(jié)點(diǎn)地址; IPv4查找邏輯利用IPv4根節(jié)點(diǎn)地址從IPv4和IPv6共用樹結(jié)構(gòu)找到IPv4根節(jié)點(diǎn),通過讀取并解析該節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù),查找該節(jié)點(diǎn)路由信息,并按照流水查找方式查找下一級(jí)節(jié)點(diǎn)的路由信息,直至查找最后一級(jí)節(jié)點(diǎn)的路由信息; 其中,IPv4查找邏輯通過將所述IPv4鍵值與所解析的各節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)中的路由前綴分別進(jìn)行比較,獲得下一級(jí)節(jié)點(diǎn)指針,并從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的IPv4路由信息。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的IPv4路由信息的步驟包括: 將各匹配的路由條目中的結(jié)果表?xiàng)l目指針保存在查找模塊的緩存中; 每級(jí)流水匹配的路由條目的結(jié)果表?xiàng)l目指針直接覆蓋緩存中的內(nèi)容; 在結(jié)束對(duì)所有節(jié)點(diǎn)路由查找之后,根據(jù)緩存中最終的結(jié)果表?xiàng)l目指針查找結(jié)果表,獲得相應(yīng)的IPv4路由信息。
6.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述的獲得IPv6路由信息的步驟包括: IPv6查找邏輯從所述路由查找請(qǐng)求中獲取IPv6鍵值,并從所述內(nèi)存區(qū)獲取IPv6根節(jié)點(diǎn)地址; IPv6查找邏輯利用IPv6根節(jié)點(diǎn)地址從IPv4和IPv6共用樹結(jié)構(gòu)找到IPv6根節(jié)點(diǎn),通過讀取并解析該節(jié)點(diǎn)的路由數(shù)據(jù),查找該節(jié)點(diǎn)路由信息,并按照流水查找方式查找下一級(jí)節(jié)點(diǎn)的路由信息,直至查找最后一級(jí)節(jié)點(diǎn)的路由信息; 其中,IPv6查找邏輯通過將所述IPv6鍵值與所解析的各節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)中的路由前綴分別進(jìn)行比較,獲得下一級(jí)節(jié)點(diǎn)指針,并從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的IPv6路由信息。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的IPv6路由信息的步驟包括: 將各匹配的路由條目中的結(jié)果表?xiàng)l目指針保存在查找模塊的緩存中; 每級(jí)流水匹配的路由條目的結(jié)果表?xiàng)l目指針直接覆蓋緩存中的內(nèi)容; 在結(jié)束對(duì)所有節(jié)點(diǎn)路由查找之后,根據(jù)緩存中最終的結(jié)果表?xiàng)l目指針查找結(jié)果表,獲得相應(yīng)的IPv6路由信息。
8.一種同時(shí)支持IPv4和IPv6的高速路由查找裝置,其特征在于,包括: 路由條目信息更新模塊,用于響應(yīng)路由轉(zhuǎn)發(fā)系統(tǒng)實(shí)時(shí)下發(fā)的路由條目更新指令,對(duì)IPv4和IPv6共用樹節(jié)點(diǎn)保存的路由條目信息進(jìn)行更新; 確定路由查找模塊,用于在路由查找期間,根據(jù)路由查找請(qǐng)求確定需要進(jìn)行IPv4路由查找還是進(jìn)行IPv6路由查找; IPv4路由查找模塊,用于當(dāng)確定需要進(jìn)行IPv4路由查找,則從IPv4和IPv6共用樹結(jié)構(gòu)尋找用于IPv4路由查找的IPv4根節(jié)點(diǎn),并從IPv4根節(jié)點(diǎn)開始按照流水查找方式從所述共用樹結(jié)構(gòu)的各相應(yīng)節(jié)點(diǎn)獲得IPv4路由信息; IPv4結(jié)果獲取模塊,用于IPv4路由查找中,根據(jù)IPv4路由查找模塊獲取的IPv4路由信息查找結(jié)果表,獲得實(shí)際的IPv4路由查找結(jié)果。 IPv6路由查找模塊,用于當(dāng)確定需要進(jìn)行IPv6路由查找,則從IPv4和IPv6共用樹結(jié)構(gòu)尋找用于IPv6路由查找的IPv6根節(jié)點(diǎn),并從IPv6根節(jié)點(diǎn)開始按照流水查找方式從所述共用樹結(jié)構(gòu)的各相應(yīng)節(jié)點(diǎn)獲得IPv6路由信息。 IPv6結(jié)果獲取模塊,用于IPv6路由查找中,根據(jù)IPv6路由查找模塊獲取的IPv6路由信息查找結(jié)果表,獲得實(shí)際的IPv6路由查找結(jié)果。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述IPv4路由查找模塊包括: IPv4獲取單元,用于IPv4查找邏輯從所述路由查找請(qǐng)求中獲取IPv4鍵值,并從所述內(nèi)存區(qū)獲取IPv4根節(jié)點(diǎn)地址; IPv4查找單元,用于IPv4查找邏輯利用IPv4根節(jié)點(diǎn)地址從IPv4和IPv6共用樹結(jié)構(gòu)找到IPv4根節(jié)點(diǎn),通過讀取并解析該節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù),查找該節(jié)點(diǎn)路由信息,并按照流水查找方式查找下一級(jí)節(jié)點(diǎn)的路由信息,直至查找最后一級(jí)節(jié)點(diǎn)的路由信息; 其中,IPv4查找邏輯通過將所述IPv4鍵值與所解析的各節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)中的路由前綴分別進(jìn)行比較,獲得下一級(jí)節(jié)點(diǎn)指針,并從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的IPv4路由信息。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述IPv6路由查找模塊包括: IPv6獲取單元,用于IPv6查找邏輯從所述路由查找請(qǐng)求中獲取IPv6鍵值,并從所述內(nèi)存區(qū)獲取IPv6根節(jié)點(diǎn)地址; IPv6查找單元,用于IPv6查找邏輯利用IPv6根節(jié)點(diǎn)地址從IPv4和IPv6共用樹結(jié)構(gòu)找到IPv6根節(jié)點(diǎn),通過讀取并解析該節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù),查找該節(jié)點(diǎn)路由信息,并按照流水查找方式查找下一級(jí)節(jié)點(diǎn)的路由信息,直至查找最后一級(jí)節(jié)點(diǎn)的路由信息; 其中,IPv6查找邏輯通過將所述IPv6鍵值與所解析的各節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)中的路由前綴分別進(jìn)行比較,獲得下一級(jí)節(jié)點(diǎn)指針,并從各匹配的路由條目數(shù)據(jù)中得到相應(yīng)的IPv6路



Vo VrH' hd I ItI
【文檔編號(hào)】H04L12/749GK104426774SQ201310396381
【公開日】2015年3月18日 申請(qǐng)日期:2013年9月3日 優(yōu)先權(quán)日:2013年9月3日
【發(fā)明者】程晨, 李彧, 張煒, 白櫟旸, 徐寶魁, 王曉明 申請(qǐng)人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
渑池县| 浦东新区| 达州市| 云浮市| 炎陵县| 商都县| 东乌珠穆沁旗| 淅川县| 宁河县| 囊谦县| 桂平市| 班戈县| 禹城市| 南充市| 曲麻莱县| 江孜县| 喀什市| 祁东县| 宽甸| 台湾省| 逊克县| 旬邑县| 新乡县| 黄骅市| 随州市| 集安市| 梁平县| 涞水县| 临清市| 玉环县| 宾阳县| 海伦市| 合江县| 建始县| 柯坪县| 富锦市| 双江| 柏乡县| 微博| 和田市| 揭西县|