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

IPv6路由表的查找方法

文檔序號(hào):7589591閱讀:5868來源:國知局
專利名稱:IPv6路由表的查找方法
技術(shù)領(lǐng)域
本發(fā)明涉及下一代互連網(wǎng)絡(luò)協(xié)議,更具體地,涉及一種IPv6路由表的查找方法,能夠快速有效地對(duì)核心網(wǎng)絡(luò)的IPv6路由表進(jìn)行查找。
背景技術(shù)
Internet用戶的不斷增長以及多媒體應(yīng)用的日益普及,使得Internet網(wǎng)絡(luò)中的數(shù)據(jù)流量成指數(shù)級(jí)增加。物理鏈路和連接節(jié)點(diǎn)是構(gòu)成Internet網(wǎng)絡(luò)的兩個(gè)基本要素。光傳輸技術(shù)研究的突破,使得物理鏈路的傳輸速率可以滿足Internet網(wǎng)絡(luò)數(shù)據(jù)流量的增長。而作為Internet網(wǎng)絡(luò)連接節(jié)點(diǎn)的路由器,由于內(nèi)部需要進(jìn)行復(fù)雜的數(shù)據(jù)處理,難以跟上Internet網(wǎng)絡(luò)流量增長的速度。如何設(shè)計(jì)和實(shí)現(xiàn)高性能路由器成為Internet領(lǐng)域的研究熱點(diǎn)。
路由器在網(wǎng)絡(luò)中負(fù)責(zé)對(duì)分組進(jìn)行路由轉(zhuǎn)發(fā)。轉(zhuǎn)發(fā)分組時(shí),路由器需要基于每個(gè)分組頭部的目的IP地址,在路由表中進(jìn)行路由查找,找到分組正確的下一跳出口。在高性能路由器中,接口速率越來越高,所以相應(yīng)的內(nèi)部轉(zhuǎn)發(fā)處理也必須越來越快,才能與之匹配。而快速路由查找技術(shù)是提高路由器轉(zhuǎn)發(fā)性能的關(guān)鍵。
在IP路由表中,路由地址被稱為前綴,用符號(hào)P/L來表示,其中P代表路由前綴或網(wǎng)絡(luò)地址,L代表該網(wǎng)絡(luò)地址的長度。路由查找的過程是一個(gè)最長匹配查找的過程,即地址前綴查找不僅需要與前綴的比特位進(jìn)行匹配查找,而且還需要考慮地址前綴的長度,選擇所有匹配項(xiàng)中最長匹配的那一個(gè)。最長匹配查找使得路由查找變得非常復(fù)雜,成為提高路由器性能的一個(gè)關(guān)鍵因素。尤其是隨著核心路由器接口速率的不斷攀升,以及所支持轉(zhuǎn)發(fā)表項(xiàng)數(shù)目的不斷增加,路由表查找技術(shù)已經(jīng)嚴(yán)重制約了路由器性能的進(jìn)一步提高。
下一代互聯(lián)網(wǎng)絡(luò)協(xié)議(IPv6)的出現(xiàn)使得快速路由查找變得更加困難。與采用32位地址的IPv4比,IPv6采用128位地址,查找一個(gè)IPv6地址前綴需要花費(fèi)更長的時(shí)間。雖然IPv6協(xié)議為了在設(shè)計(jì)之初就考慮到這個(gè)問題,提出了采用層次結(jié)構(gòu)的地址分配策略,通過路由匯聚來縮小路由表等手段,但以下因素導(dǎo)致IPv6路由查找不能完全利用這種層次分配機(jī)制來優(yōu)化(1)路由匯聚時(shí)要求地址分配和拓樸空間保持一致,而IPv6地址分配是基于提供商的,并不能保證這種一致性,所以匯聚的效果難以保證。(2)例如源路由和任意播(AnyCast)等新業(yè)務(wù)需要主機(jī)路由,增加了IPv6路由表的復(fù)雜性。(3)未來可能出現(xiàn)的新業(yè)務(wù)的增加會(huì)導(dǎo)致IPv6地址需求的極大增加,IPv6路由表也會(huì)變得復(fù)雜。
目前存在許多IP查表技術(shù),絕大多數(shù)是針對(duì)IPv4查表技術(shù)提出的,沒有充分利用IPv6前綴分布的特點(diǎn),這使得它們不能擴(kuò)展到128位的IPv6長地址空間,所以就無法直接應(yīng)用到IPv6路由查找中。主要有如下問題(1)不能實(shí)現(xiàn)IPv6路由表的高速查找;(2)采用復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和計(jì)算手段,導(dǎo)致路由表更新的時(shí)間非常長,不能實(shí)現(xiàn)增量更新;(3)需要較大的存儲(chǔ)空間。TCAM技術(shù)雖然合適于IPv6路由查找,但TCAM的成本高,功耗大,集成度低,其技術(shù)還不成熟。且TCAM的IPv6查找速度還受限于系統(tǒng)總線帶寬,不能真正提供0(1)的查找速度,這是因?yàn)镮Pv6路由表目的寬度遠(yuǎn)遠(yuǎn)超過了現(xiàn)有系統(tǒng)的總線寬度。
IP路由查找中最重要的是路由轉(zhuǎn)發(fā)表結(jié)構(gòu)的設(shè)計(jì),轉(zhuǎn)發(fā)表的結(jié)構(gòu)決定了路由查找方式和路由更新方式。表1顯示了路由轉(zhuǎn)發(fā)表的邏輯結(jié)構(gòu),按路由表的存放形式可把路由查找方法分為兩類一種是基于通用存儲(chǔ)器的查找方法,一種是基于專用存儲(chǔ)器的查找方法。
表1路由轉(zhuǎn)發(fā)表的邏輯結(jié)構(gòu)

(1)基于通用存儲(chǔ)器的查找方法在基于通用存儲(chǔ)器件的路由查找方案中,一般是把路由表表示為一種精心設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),然后把這個(gè)用于搜索的數(shù)據(jù)結(jié)構(gòu)放到SRAM(Static Random Access Memory)或SDRAM(Synchronous DynamicRandom Access Memory)中。路由搜索過程由微處理器執(zhí)行軟件來實(shí)現(xiàn),或者由硬件控制邏輯實(shí)現(xiàn)的IP查表專用電路來實(shí)現(xiàn)。軟件實(shí)現(xiàn)方式比較靈活,而硬件實(shí)現(xiàn)方案可以通過流水線等方式來提高路由查找的吞吐率。路由搜索結(jié)構(gòu)有多種形式,其中,一種多分支Trie(Multi-bit trie)結(jié)構(gòu)因其簡單靈活的特點(diǎn)而應(yīng)用最為廣泛,下面對(duì)其進(jìn)行介紹。
Trie是一種樹狀數(shù)據(jù)結(jié)構(gòu)。圖1(a)示出了用二進(jìn)制trie結(jié)構(gòu)(樹中每一個(gè)內(nèi)部結(jié)點(diǎn)最多包含兩個(gè)子結(jié)點(diǎn))來表示的地址前綴表,圖1(b)顯示了其對(duì)應(yīng)的4分支Trie樹。在多分支Trie中,一個(gè)路由前綴地址被從頭開始分割成若干比特位組,這些比特位組的值被依次用來決定繼續(xù)搜索樹的哪一個(gè)分支。將每一次查找中需要檢查的比特?cái)?shù)稱為查找步寬(stride)。二分支trie樹實(shí)際上就是查找步寬為1的trie樹。查找步寬大于1的trie樹被稱為多分支trie樹(multibit trie),對(duì)于查找步寬為k的多分支trie樹來說,每一個(gè)結(jié)點(diǎn)的最大分支數(shù)為2k。查找步寬可以是固定的,也可以是可變的。如32比特的IP查表可以依次采用10-10-8-4bit的查找步寬。
圖1顯示的是Trie的邏輯結(jié)構(gòu),而多分支trie的物理結(jié)構(gòu)可以用圖2表示,整個(gè)trie結(jié)構(gòu)由一些通過指針鏈在一起的Trie節(jié)點(diǎn)組成,而每個(gè)trie節(jié)點(diǎn)由一組Trie表目數(shù)組(201)構(gòu)成,其中的每一個(gè)條目包含兩個(gè)指針指向下一個(gè)Trie節(jié)點(diǎn)的指針(nt,203)和指向下一跳轉(zhuǎn)發(fā)信息表目的指針(nh,202)。nt和nh可以同時(shí)有效,也可能只有一個(gè)有效。當(dāng)二者同時(shí)有效時(shí),表示該表目對(duì)應(yīng)著一個(gè)前綴,同時(shí)該前綴下還有更長的子前綴。當(dāng)nt有效而nh無效時(shí),表示該表目是一個(gè)內(nèi)部過渡節(jié)點(diǎn);反之則表示一個(gè)從Trie的根到當(dāng)前條目路徑上的最長前綴。
IP查表過程如下所述由trie的頂節(jié)點(diǎn)出發(fā),按照設(shè)定的步寬,依次提取目的IP地址的比特位組在表示trie節(jié)點(diǎn)的數(shù)組中索引,確定下一步需要搜索的trie節(jié)點(diǎn),搜索過程一直持續(xù)到最末端的節(jié)點(diǎn)或者目的地址的所有比特用完為止。在搜索過程中,記下最后一次經(jīng)過的路由前綴節(jié)點(diǎn)的下一跳輸出端口指針(pn),搜索結(jié)束后,該值即為IP查表的結(jié)果。
采用這種結(jié)構(gòu),如果最長的前綴長度為W,查找步寬為k,最壞情況下一次查找需要W/k次存儲(chǔ)器訪問。多分支trie樹查找過程的每一步需要檢查多個(gè)比特,因此它不能支持任意長度的地址前綴。對(duì)于前綴長度恰為k的整數(shù)倍的IP前綴,無需進(jìn)行任何改變,但是對(duì)于前綴長度不是k的整數(shù)倍的IP前綴,則需要對(duì)該前綴進(jìn)行擴(kuò)展,使擴(kuò)展之后的路由前綴的長度為k的整數(shù)倍,此時(shí)一個(gè)路由前綴要復(fù)制到多個(gè)存儲(chǔ)表項(xiàng)中,這會(huì)造成存儲(chǔ)空間利用率下降。步寬的選擇對(duì)于多分支trie樹的整體性能起到了決定性的作用,較大的步寬可以提高查找的速度,但是trie樹的存儲(chǔ)需求也相應(yīng)增大了;較小的步寬雖然可以降低存儲(chǔ)空間的使用,但是查找速度會(huì)有相應(yīng)的下降。一種較合適的方案就是根據(jù)實(shí)際地址前綴的分布特點(diǎn)來選擇合適的步寬,從而達(dá)到優(yōu)化算法存儲(chǔ)空間的目的。其它一些基于多分支trie的查找方法也就是如何在路由查找速度、算法消耗的存儲(chǔ)空間和路由更新復(fù)雜度等尺度上進(jìn)行折衷。
(2)基于專用存儲(chǔ)器的路由查找方案基于專用存儲(chǔ)器的路由查找方案是將原始路由列表直接存放起來,然后利用硬件控制邏輯并行查找整個(gè)路由表,以達(dá)到高速查找的目的,這方面的代表是TCAM(Ternary Content Addressable Memory)。TCAM是在CAM的基礎(chǔ)上發(fā)展而來的。與CAM不同,TCAM通過保存關(guān)鍵字掩碼的方式使得它可以保存任意長度的關(guān)鍵字表項(xiàng)。這種改進(jìn)克服了CAM僅僅能夠進(jìn)行精確匹配查表的缺點(diǎn),使得TCAM非常適合進(jìn)行最長前綴路由的查找。
在基于SDRAM或SRAM結(jié)構(gòu)的IP查表方法中,每次IP查表都需要進(jìn)行多次存儲(chǔ)器讀操作,因而限制了IP查表性能的提高,且對(duì)于IPv6的擴(kuò)展性較差。而TCAM使用并行技術(shù),具有0(1)查找復(fù)雜度。所以TCAM是超高速IP查表的最佳解決方案,但它還不成熟,具有如下不足之處第一、與一般的隨機(jī)存儲(chǔ)器RAM相比,單位比特的TCAM更為昂貴,而且存儲(chǔ)芯片的容量相對(duì)要小一些;第二、由于TCAM使用的是并行匹配比較方式,所以TCAM芯片的功耗較大。查找過程所有關(guān)鍵字表項(xiàng)都進(jìn)行了比較,但是實(shí)際能夠匹配上的關(guān)鍵字只是幾項(xiàng),因此大部分的比較操作都被浪費(fèi)了;第三、TCAM需要保證前綴較長的路由保存在前綴較短的路由之前,這種順序關(guān)系使得TCAM的路由更新工作變得相對(duì)復(fù)雜。目前TCAM技術(shù)還處于發(fā)展階段。

發(fā)明內(nèi)容
因此,本發(fā)明提出了一種可用于核心網(wǎng)絡(luò)的快速有效的IPv6路由表地址查找方法,包括以下步驟a)將整個(gè)IPv6路由表分割成至少兩個(gè)前綴子集;b)對(duì)前綴數(shù)目較多或前綴長度較長的前綴子集采用索引表進(jìn)行檢索,對(duì)前綴數(shù)目較少且前綴長度較短的前綴子集,利用多分支Trie樹進(jìn)行查找;以及c)在全局范圍內(nèi)利用至少兩個(gè)微處理器模塊來對(duì)每一部分前綴子集進(jìn)行并行查找,在局部范圍內(nèi)利用路由預(yù)計(jì)算進(jìn)行查找。
此外,當(dāng)對(duì)每個(gè)部分采用多分支Trie樹表示時(shí),采用相應(yīng)的查找步寬進(jìn)行查找,以在保證查找速度的同時(shí)提高路由表的存儲(chǔ)空間使用效率。
本發(fā)明方法充分考慮了IPv6地址前綴的分布模型特點(diǎn),并采用了基于哈希表的快速索引、路由表分割和并行查找等技術(shù)來達(dá)到提高速度和實(shí)現(xiàn)路由表增量更新的目的。本方法能夠十分有效地支持IPv6路由查找,不依賴于TCAM,可以在通用硬件平臺(tái)上實(shí)現(xiàn)。


圖1是現(xiàn)有技術(shù)的Trie結(jié)構(gòu)示意圖。
圖2是多分支Trie的數(shù)據(jù)結(jié)構(gòu)。
圖3是根據(jù)本發(fā)明方法的IPv6前綴劃分方案示意圖。
圖4是根據(jù)本發(fā)明方法的IPv6路由查找引擎結(jié)構(gòu)示意圖。
圖5是路由器數(shù)據(jù)轉(zhuǎn)發(fā)結(jié)構(gòu)。
圖6是網(wǎng)絡(luò)處理器基本結(jié)構(gòu)。
圖7是IPv6路由查找引擎在網(wǎng)絡(luò)處理器中的實(shí)現(xiàn)。
具體實(shí)施例方式
接下來,將參考附圖,對(duì)本發(fā)明的實(shí)施例進(jìn)行說明。
(1)基本思想和數(shù)據(jù)結(jié)構(gòu)本發(fā)明中提到的方法采用多分支Trie樹作為基本的查找結(jié)構(gòu)。但考慮到IPv6地址比較長和IPv6前綴分布的特點(diǎn),先把所有前綴按長度分成幾個(gè)部分,例如,可以將前綴長度高于預(yù)定閾值的部分定義為長度較長部分,還可以將其中前綴數(shù)目多于預(yù)定閾值的部分定義為數(shù)目較多部分,而分別將剩余部分定義為長度較短部分或數(shù)目較少部分。然后對(duì)每個(gè)部分用多分支Trie樹表示,并且結(jié)合其前綴分布特點(diǎn)來實(shí)施不同的查找策略。還對(duì)主要部分的前綴采用哈希表來快速索引和并行查找,以提高查找速度。
在對(duì)現(xiàn)有Ipv4路由表和Ipv6地址分配策略的分析的基礎(chǔ)上,可以得到IPv6前綴分布的一些特點(diǎn)(1.1)IPv6前綴主要集中分別在某些長度上,在其它長度上,則很少存在IPv6前綴;(1.2)在長IPv6前綴中,中間很長一段比特位連續(xù)為0或1的前綴占很大比例。
在前綴劃分和查找過程中,充分利用了IPv6前綴分布的這些特點(diǎn),把整個(gè)IPv6前綴表分成n(為一個(gè)大于一的正整數(shù))個(gè)前綴子集,如圖3所示,這些前綴子集的特點(diǎn)可以分成若干類,說明如下306長度為1到n1位的前綴。這一部分前綴的數(shù)量會(huì)極少,甚至沒有。如果存在,將其存放到查找引擎的內(nèi)部緩存(Cache)里。307長度為n1+1到n2位的前綴。用一棵多分支Trie樹表示(以下稱之為Trie1,301)。這一部分的前綴分布比較稀疏,所以在查找速度允許的情況下盡量采用小步寬來查找,以提高存儲(chǔ)空間的利用率。
308長度為n2+1到n3位的前綴。用一個(gè)快速索引表(以下稱之位Hash1,302)和多個(gè)多分支Trie樹表示(以下稱之為Trie2,303)。這一部分是IPv6路由前綴的主要部分,前綴分布會(huì)比較密集,所以采用稍大一些的查找步寬來提高查找速度,同時(shí)也不會(huì)使存儲(chǔ)空間利用率下降許多。快速索引表可以是哈希表,其每一個(gè)表目包含路由前綴前n2位所對(duì)應(yīng)的Trie2的根地址以及前n2位地址在P1中的最長前綴匹配信息(以下稱之為bmp),bmp用于縮短查找時(shí)間。
309長度為n3+1到n4位的前綴。這一部分的前綴分布會(huì)比較稀疏,且集中在Trie樹的底部,但考慮到查找速度的需要,所以選擇較大的查找步寬。用一個(gè)快速索引表(以下稱之位Hash2,304)和多個(gè)多分支Trie樹表示(以下稱之為Trie3,305)??焖偎饕硎枪1?,每一個(gè)表目包含路由前綴前n3位所對(duì)應(yīng)的Trie3的根地址。
在容易更新的快速索引表中保存一個(gè)最長前綴預(yù)計(jì)算信息域,其內(nèi)容是在路由前綴更新時(shí)寫入路由表的,這個(gè)域可以迅速縮小查找范圍。但路由前綴關(guān)聯(lián)多的索引表中不設(shè)置這個(gè)域,以免造成路由表更新困難,表目訪問周期增加。
(2)查找引擎結(jié)構(gòu)和路由查找過程圖4示出了本發(fā)明的基本結(jié)構(gòu)。整個(gè)查找引擎由m個(gè)微處理器模塊(401),m個(gè)路由轉(zhuǎn)發(fā)表(402)組成。微處理器內(nèi)部提供緩存,哈希資源(403),存儲(chǔ)單元訪問接口,以及和控制處理器的接(405)等。此外還有微處理器之間的同步寄存器(406)和查找結(jié)果選擇器(407)。m個(gè)處理器并行查找,每個(gè)微處理器模塊負(fù)責(zé)若干個(gè)前綴子集的查找。和各個(gè)微處理器模塊相連的轉(zhuǎn)發(fā)表存儲(chǔ)器存放其負(fù)責(zé)查找的前綴子集對(duì)應(yīng)的路由轉(zhuǎn)發(fā)表??刂铺幚砥鬟\(yùn)行路由表管理軟件來負(fù)責(zé)路由轉(zhuǎn)發(fā)表的更新。
路由查找的基本過程描述如下
(2.1)目的IP地址被送到所有微處理器模塊;(2.2)所有微處理器模塊并行執(zhí)行查找,將查找結(jié)果送到選擇器。每個(gè)微處理器模塊先執(zhí)行快速索引操作,找到Trie樹的根指針,然后在其指向的Trie樹中查找。在查找的過程中,有的微處理器模塊利用路由預(yù)計(jì)算來迅速縮小需要查找的路由前綴子集范圍。同步寄存器負(fù)責(zé)各處理器模塊之間的同步操作。
(2.3)結(jié)果選擇器從多個(gè)查找結(jié)果中,選出最長匹配前綴。
(2.4)根據(jù)結(jié)果選擇器輸出的結(jié)果,訪問下一跳轉(zhuǎn)發(fā)信息表(408),得到最終的下一跳轉(zhuǎn)發(fā)表信息。
(3)路由表更新Internet網(wǎng)絡(luò)中,拓?fù)涫莿?dòng)態(tài)變化的,路由也是動(dòng)態(tài)改變的。路由器為了保證分組的轉(zhuǎn)發(fā)正確,必須快速的對(duì)路由改變做出反映,及時(shí)的把新路由加入到路由表,并把過期路由從路由表中刪除。路由更新的處理速度成為路由查找方案的重要評(píng)價(jià)指標(biāo)?;赥rie的查找方法都具有“路由更新過程和路由查找過程類似“這個(gè)特點(diǎn)。而與基本的多分支Trie查找方法相比,本方法只是多了哈希表訪問的過程,依然可以實(shí)現(xiàn)路由表的增量更新。本發(fā)明還通過以下特有手段來降低路由更新的復(fù)雜度,以確保在高速路由查找的同時(shí)實(shí)現(xiàn)快速路由更新的目的。
(3.1)前綴分割成多個(gè)部分,長前綴利用快速索引表來索引,縮短了在Trie樹中更新的時(shí)間;(3.2)采取特定前綴長度來作為分割點(diǎn),以確保各種存儲(chǔ)單元空間大小的一致性,簡化了存儲(chǔ)空間分配管理;(3.3)只在局部范圍內(nèi)對(duì)最長前綴進(jìn)行預(yù)計(jì)算,不會(huì)對(duì)路由更新時(shí)間有很大影響;(3.4)對(duì)于非常少的超短路由前綴只存放在處理器緩存中,不影響外部路由轉(zhuǎn)發(fā)表的更新。
如圖5所示,本發(fā)明中給出的IPv6路由表查找方法可用于高速IPv6路由器的轉(zhuǎn)發(fā)引擎設(shè)計(jì)中。由于網(wǎng)絡(luò)處理器的靈活性,新型的路由器通常使用網(wǎng)絡(luò)處理器作為轉(zhuǎn)發(fā)引擎。下面描述在網(wǎng)絡(luò)處理器中如何實(shí)現(xiàn)本方法。
網(wǎng)絡(luò)處理器是現(xiàn)代綜合業(yè)務(wù)數(shù)據(jù)網(wǎng)絡(luò)不斷發(fā)展更新的產(chǎn)物,是一種基于可編程專用集成電路(Application-Specific IntegratedCircuit)結(jié)構(gòu)的新一代片上系統(tǒng)(System on Chip)芯片,專門用于網(wǎng)絡(luò)通信設(shè)備的開發(fā)。在網(wǎng)絡(luò)處理器中實(shí)現(xiàn)本發(fā)明中給出的方法時(shí),只要求網(wǎng)絡(luò)處理器具有如下基本特點(diǎn)(1)在單個(gè)芯片上集成實(shí)現(xiàn)了基于多個(gè)微引擎和控制處理器核的高性能并行處理體系結(jié)構(gòu)。
(2)支持多路存儲(chǔ)器接口,包括SRAM和SDRAM。
如圖6所示,現(xiàn)有的各種網(wǎng)絡(luò)處理器基本都具備上面的特點(diǎn),如Intel公司的IXP2400和IXP2800均可滿足上述要求??梢圆捎萌缦碌穆酚蓜澐趾筒檎疫^程首先,把整個(gè)IPv6前綴表分成四個(gè)部分(S0-S3),其中S0長度為1到F位的前綴,F(xiàn)是一個(gè)在16到24之間可以調(diào)節(jié)的參數(shù)。這一部分前綴的數(shù)量會(huì)極少,甚至沒有。如果存在,將其存放到查找引擎的內(nèi)部緩存(Cache)里。
S1長度為F+1到31位的前綴。從前綴的第1比特起開始查找,其查找步寬依次為6-6-6-6-7bit。
S2長度為32到64位的前綴。用一個(gè)快速索引表(以下稱之位Hash32)和多個(gè)多分支Trie樹表示(以下稱之為Trie64)。Hash32中包含最長前綴預(yù)計(jì)算信息,Trie64的查找步寬依次為8-8-8-9bit。
S3長度為65到128位的前綴。用一個(gè)快速索引表(以下稱之位Hash64)和多個(gè)多分支Trie樹表示(以下稱之為Trie128)。Trie128的查找步寬依次為9-9-9-9-9-9-10bit。
在對(duì)P1和P2進(jìn)行劃分時(shí),采用31位而不是32位分界的原因是讓Trie32和Trie64的步寬分配策略配合對(duì)trie結(jié)構(gòu)的改進(jìn)措施來保證trie結(jié)構(gòu)的內(nèi)部節(jié)點(diǎn)和葉子節(jié)點(diǎn)占用的存儲(chǔ)空間相等,有利于存儲(chǔ)空間的分配和管理。還可以將最壞情況(Worst Case)下更新hash32表的時(shí)間縮短一半。
Hash32中有一個(gè)最長前綴預(yù)計(jì)算域,而Hash64中沒有。這是考慮到路由表更新和處理器的數(shù)據(jù)總線寬度問題而作的取舍。最長前綴預(yù)計(jì)算域是在路由前綴更新是寫入路由表的,可以迅速縮小查找范圍,只要找到這個(gè)域,就不必在S1中查找了。但如果在Hash64中增加這個(gè)域,會(huì)導(dǎo)致Hash64表表目太寬,處理器需要額外增加一個(gè)周期來訪問一個(gè)hash表目。同時(shí)由于任何一個(gè)在32到64位之間的路由前綴信息的修改都可能導(dǎo)致多個(gè)Hash64表目中的最長前綴預(yù)計(jì)算信息的修改,這使得路由表的更新也非常困難。而Hash32中由于表目寬度比較小,且更新時(shí)將長度短于F的前綴放到微處理器的緩存了,所以就沒有上述問題。
如圖7所示,本發(fā)明可以利用網(wǎng)絡(luò)處理器的兩個(gè)微引擎來實(shí)現(xiàn)。路由轉(zhuǎn)發(fā)表分別存放在兩路片外SRAM(703,704)中,微引擎內(nèi)部提供緩存,網(wǎng)絡(luò)處理器內(nèi)還具有同步寄存器和哈希單元等機(jī)制也恰好被本方法所利用。查找算法通過對(duì)微引擎編程實(shí)現(xiàn)。微處理器Ma(701)負(fù)責(zé)IPv6地址的前64位查找,Mb(702)負(fù)責(zé)在65到128位查找,兩個(gè)處理器并行查找。和Ma相連的路由轉(zhuǎn)發(fā)表存儲(chǔ)這個(gè)整個(gè)路由前綴中長度短于64位的前綴;和Mb相連的路由轉(zhuǎn)發(fā)表存儲(chǔ)這個(gè)整個(gè)路由前綴中長度超過64位的前綴。網(wǎng)絡(luò)處理器內(nèi)的控制處理器運(yùn)行路由表管理軟件來負(fù)責(zé)路由轉(zhuǎn)發(fā)表的更新。
各部分路由前綴的查找性能如表2所示表2


SRAM可以選用兩片16兆字節(jié)的QDRAM,就可以支持上百萬條路由。假設(shè)其一次讀寫訪問時(shí)間為5ns(這是常規(guī)速度,還有更快的),數(shù)據(jù)總線的寬度是32位,一次哈希查找需要三次SRAM訪問,那么在本方法中,一次路由查找最多只需要10次SRAM訪問,即每秒鐘可以處理20兆個(gè)報(bào)文查找,而在10G線速IPv6報(bào)文只要求每秒鐘能處理12.5兆個(gè)報(bào)文(假設(shè)報(bào)文的大小為100個(gè)字節(jié)),本發(fā)明方法可以滿足報(bào)文的10G線速轉(zhuǎn)發(fā)要求。在本方案中,1次路由更新最多需要約1000次儲(chǔ)存器訪問,所以如果每秒發(fā)生1000次路由更新,只需要5ms來處理,路由查找性能也只下降0.5%。
本發(fā)明給出了一種快速有效的IPv6路由表查找方法,其優(yōu)點(diǎn)在于(1)該方法充分考慮了IPv6地址前綴的分布模型特點(diǎn),能有效支持大容量IPv6路由表查找。
(2)該方法支持路由表增量更新,不需要額外的硬件資源就可實(shí)現(xiàn)路由表的快速更新,節(jié)省了系統(tǒng)成本。
(3)該方法不依賴于專用存儲(chǔ)器件來實(shí)現(xiàn),增強(qiáng)了實(shí)現(xiàn)的靈活性。
(4)在現(xiàn)有硬件條件下利用該方法,就可以經(jīng)濟(jì)有效的實(shí)現(xiàn)IPv6報(bào)文在OC-192級(jí)別的線速轉(zhuǎn)發(fā)。
(5)該方法適于在各種網(wǎng)絡(luò)處理器中實(shí)現(xiàn),可以用于靈活有效地構(gòu)造IPv6核心路由器。
權(quán)利要求
1.一種IPv6路由表查找方法,包括以下步驟a)將整個(gè)IPv6路由表分割成至少兩個(gè)前綴子集;b)對(duì)前綴數(shù)目較多或前綴長度較長的前綴子集采用索引表進(jìn)行檢索,對(duì)前綴數(shù)目較少且前綴長度較短的前綴子集,利用多分支Trie樹進(jìn)行查找;以及c)在全局范圍內(nèi)利用至少兩個(gè)微處理器模塊來對(duì)每一部分前綴子集進(jìn)行并行查找,在局部范圍內(nèi)利用路由預(yù)計(jì)算進(jìn)行查找。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于在所述步驟a中,將所述路由前綴子集分別存放在不同的存儲(chǔ)器內(nèi)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于在所述步驟b中,當(dāng)對(duì)每個(gè)部分采用多分支Trie樹表示時(shí),采用相應(yīng)的查找步寬進(jìn)行查找。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于所述步驟c中,只在前綴子集長度較短的索引表中包含路由預(yù)計(jì)算信息,查找的同時(shí)實(shí)現(xiàn)路由表增量更新。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于在所述步驟c中,在對(duì)分布密集的前綴子集進(jìn)行查找時(shí),利用路由預(yù)計(jì)算信息將查找范圍縮小到該子集的局部區(qū)域,以減少并行處理單元數(shù)目。
6.根據(jù)權(quán)利要求1或4所述的方法,其特征在于所述索引表是哈希表。
7.根據(jù)權(quán)利要求1或5所述的方法,其特征在于利用網(wǎng)絡(luò)處理器的多引擎機(jī)制實(shí)現(xiàn)并行查找。
全文摘要
一種IPv6路由表查找方法,包括以下步驟a)將整個(gè)IPv6路由表分割成至少兩個(gè)前綴子集;b)對(duì)前綴數(shù)目較多或前綴長度較長的前綴子集采用索引表進(jìn)行檢索,對(duì)前綴數(shù)目較少且前綴長度較短的前綴子集,利用多分支Trie樹進(jìn)行查找;以及c)在全局范圍內(nèi)利用至少兩個(gè)微處理器模塊來對(duì)每一部分前綴子集進(jìn)行并行查找,在局部范圍內(nèi)利用路由預(yù)計(jì)算進(jìn)行查找。該方法能十分有效地支持IPv6路由查找,不依賴于TCAM,可以在通用硬件平臺(tái)上實(shí)現(xiàn)。
文檔編號(hào)H04L12/56GK1787477SQ20041000999
公開日2006年6月14日 申請(qǐng)日期2004年12月9日 優(yōu)先權(quán)日2004年12月9日
發(fā)明者譚敏強(qiáng), 張育斌 申請(qǐng)人:北京三星通信技術(shù)研究有限公司, 三星電子株式會(huì)社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
德钦县| 嵊泗县| 乐至县| 怀安县| 沭阳县| 大同市| 正阳县| 元氏县| 萝北县| 黄梅县| 大足县| 华阴市| 崇礼县| 城步| 岳西县| 桦川县| 凉城县| 义马市| 深州市| 宝鸡市| 舒城县| 龙川县| 横山县| 台南县| 济南市| 建水县| 镇安县| 新龙县| 隆子县| 高尔夫| 杭锦旗| 隆化县| 滨州市| 乐至县| 阿图什市| 桑日县| 阿巴嘎旗| 岳阳市| 江西省| 神农架林区| 阜南县|