IPv6路由查找方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及路由查找技術(shù)領(lǐng)域,尤其涉及IPv6路由查找方法及裝置。
【背景技術(shù)】
[0002]網(wǎng)絡(luò)之間進行通信就要實現(xiàn)數(shù)據(jù)的傳遞轉(zhuǎn)發(fā),所以網(wǎng)絡(luò)設(shè)備的主要職能之一就是進行高效率的數(shù)據(jù)轉(zhuǎn)發(fā),而其在因特網(wǎng)協(xié)議的基本數(shù)據(jù)平面的功能是路由查找,即根據(jù)路由表中的前綴信息,對每一個到來的數(shù)據(jù)包決定它的下一跳及出端口。由于路由表中通配符以及 CIDR(Classless Inter-Domain Routing,基于無類域間路由)的 LPM(LongestPrefix Matching,最長前綴匹配)問題使得路由查找變得非常復(fù)雜?;贚PM的路由查找算法除了需要高性能外,還要滿足如下幾個需求:
[0003]一、IPv4 和 IPv6 雙棧
[0004]現(xiàn)有解決LPM的算法大都針對IPv4的32位地址設(shè)計,不能直接移植或者擴展到IPv6,這就需要根據(jù)IPv6的特點,設(shè)計出適合128位IP地址的高效的路由查找算法。
[0005]二、多 VPN(Virtual Private Network,虛擬專網(wǎng))實例支持
[0006]當(dāng)前網(wǎng)絡(luò)設(shè)備需要支持VRF(VPN Routing Forwarding Instance,VPN路由轉(zhuǎn)發(fā)實例),VRF是指在一臺路由器上需要同時支持多個路由轉(zhuǎn)發(fā)表實例,各路由轉(zhuǎn)發(fā)表間獨立。使用VRF可以用路由隔離不同的VPN用戶。
[0007]當(dāng)前中、高端路由器已經(jīng)普遍支持4K或8K VPN,也就是說設(shè)備內(nèi)部需要同時支持4K或81(個VRF轉(zhuǎn)發(fā)表,支持多VPN實例對路由算法的整體架構(gòu)具有很大的影響。
[0008]三、大規(guī)格路由數(shù)量
[0009]對于IP路由來說,網(wǎng)絡(luò)設(shè)備需要支持遠大于當(dāng)前現(xiàn)網(wǎng)路由的規(guī)格。圖1所示為2002?2009年Internet IPv4路由分布示意圖,從圖1中可以看到8年間IPv4路由數(shù)量增加了一倍以上;圖2所示為Internet IPv6路由分布示意圖。
[0010]另外由于網(wǎng)絡(luò)設(shè)備需要支持多VPN實例,每個VPN實例都需要維護一套獨立的路由表,當(dāng)網(wǎng)絡(luò)設(shè)備支持較多VPN實例時,網(wǎng)絡(luò)設(shè)備整體路由表條目會很大。例如8K個VPN實例,每個VPN實例有512條路由,則整個網(wǎng)絡(luò)設(shè)備需要支持4M條路由。
[0011]當(dāng)前中、高端路由器設(shè)備,IPv4普遍要求大于4M條路由,IPv6普遍要求大于IM條路由,大規(guī)格的路由表數(shù)量對路由算法的整體架構(gòu)具有很大的影響,尤其對算法所選擇的內(nèi)存類型具有決定作用。
[0012]四、快速更新
[0013]路由更新性能是網(wǎng)絡(luò)設(shè)備一個非常關(guān)鍵的指標(biāo),路由更新速度慢會嚴(yán)重影響整網(wǎng)路由收斂的速度,導(dǎo)致整網(wǎng)不停地路由震蕩;隨著現(xiàn)網(wǎng)路由數(shù)量的增加、以及整網(wǎng)VPN和VPN路由數(shù)量的增加,對路由更新性能提出了更高的要求。
【發(fā)明內(nèi)容】
[0014]本申請?zhí)峁㊣Pv6路由查找方法及裝置,以提高IPv6路由查找效率。
[0015]本申請的技術(shù)方案是這樣實現(xiàn)的:
[0016]—種IPv6路由查找方法,該方法包括:
[0017]分別針對每個VPN中的IPv6前綴的路由分布,構(gòu)建一棵Multibit Trie ;
[0018]將每棵Multibit Trie劃分為n+1個Level:Level O?η,η為大于I的整數(shù);
[0019]采用前綴擴展的方法將Multibit Trie的I?m級IPv6前綴上的路由擴展到m+1級IPv6前綴上,m為大于I的整數(shù);
[0020]將第m+Ι級IPv6前綴的每一個分支作為一個Branch_Tree,保存每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息;
[0021]針對Level p?η中的每個第一級Sub_Trie節(jié)點,以當(dāng)前VPN標(biāo)識和本Sub_Trie節(jié)點的IPv6前綴的IPv6地址在本Level之前的所有bit作為輸入Key,采用預(yù)設(shè)的本Level的Hash函數(shù)對輸入Key進行計算,將Hash計算結(jié)果映射到本Sub_Trie節(jié)點的數(shù)據(jù)結(jié)構(gòu)信息指針上,P為整數(shù)且0〈ρ〈η ;
[0022]當(dāng)對一 VPN內(nèi)的一 IPv6地址進行路由查找時,先根據(jù)VPN標(biāo)識和該IPv6地址在每個Level之前的所有bit分別構(gòu)造針對每個Level的輸入Key,分別采用每個Level的Hash函數(shù)對針對每個Level的輸入Key進行計算,若有Hash計算結(jié)果命中,則采用最長的Hash命中結(jié)果對應(yīng)的Subjrie節(jié)點的數(shù)據(jù)結(jié)構(gòu)信息指針查找路由;否則,根據(jù)該IPv6地址的高m+lbit查找到對應(yīng)的Branch_Tree,在該Branch_Tree的Level I?p_l中查找路由。
[0023]—種IPv6路由查找裝置,該裝置包括:
[0024]Multibit Trie建立及劃分模塊:分別針對每個VPN中的IPv6前綴的路由分布,構(gòu)建一棵 Multibit Trie ;將每棵 Multibit Trie 劃分為 n+1 個 Level:LevelO ?η,η 為大于I的整數(shù);采用前綴擴展的方法將Multibit Trie的I?m級IPv6前綴上的路由擴展到m+1級IPv6前綴上,m為大于I的整數(shù);將第m+Ι級IPv6前綴的每一個分支作為一個Branch_Tree,保存每個Branch_Tree的數(shù)據(jù)結(jié)構(gòu)信息;
[0025]Hash映射模塊:針對Level p?η中的每個第一級Sub_Trie節(jié)點,以當(dāng)前VPN標(biāo)識和本Sub_Trie節(jié)點的IPv6前綴的IPv6地址在本Level之前的所有bit作為輸入Key,采用預(yù)設(shè)的本Level的Hash函數(shù)對輸入Key進行計算,將Hash計算結(jié)果映射到本Sub_Trie節(jié)點的數(shù)據(jù)結(jié)構(gòu)信息指針上,P為整數(shù)且0〈ρ〈η ;
[0026]路由查找模塊:當(dāng)對一 VPN內(nèi)的一 IPv6地址進行路由查找時,先根據(jù)VPN標(biāo)識和該IPv6地址在每個Level之前的所有bit分別構(gòu)造針對每個Level的輸入Key,分別采用每個Level的Hash函數(shù)對針對每個Level的輸入Key進行計算,若有Hash計算結(jié)果命中,則采用最長的Hash命中結(jié)果對應(yīng)的Subjrie節(jié)點的數(shù)據(jù)結(jié)構(gòu)信息指針查找路由;否則,根據(jù)該IPv6地址的高m+lbit查找到對應(yīng)的Branch_Tree,在該Branch_Tree的Level I?P-1中查找路由。
[0027]可見,本申請支持多VPN實例的IPv6路由;且,通過將Multibit-Trie劃分為多個Branch_Tree,提高了 IPv6路由查找效率;且,通過對Level p?η中的第一級Sub_Trie節(jié)點的指針進行Hash映射,使得在進行IPv6地址的路由查找時,可在Level p?η中進行并行查找,并根據(jù)最長的Hash命中結(jié)果查找到路由,進一步提高了 IPv6路由查找效率;
[0028]且,本申請實施例中,將默認路由單獨存儲,而不擴展到Level 1,減少了Multibit-Trie的冗余節(jié)點,進一步提高了路由查找速度;
[0029]且,本申請實施例中,通過為Level p?η中的每個Level設(shè)置多個Hash函數(shù),減少了 Hash沖突,提高了路由查找精度;
[0030]且,本申請實施例中,對Sub_Trie節(jié)點內(nèi)部進行前綴擴展后劃分為8個SegmentedSub_Trie節(jié)點,進一步提高了路由查找速度;
[0031]且,本申請實施例中,簡化最后一級Level的Sub_Trie節(jié)點的數(shù)據(jù)結(jié)構(gòu),進一步提高了路由查找速度。
【附圖說明】
[0032]圖1為2002?2009年Internet IPv4路由分布示意圖;
[0033]圖2為現(xiàn)有的Internet IPv6路由分布示意圖;
[0034]圖3 為 Unibit Trie 示例圖;
[0035]圖4為Unibit Trie到Multibit Trie的轉(zhuǎn)換過程不例圖;
[0036]圖5為圖4中的Level I的結(jié)構(gòu);
[0037]圖6為本申請一實施例提供的基于Multibit Trie的IPv6路由查找方法流程圖;
[0038]圖7為本申請另一實施例提供的Multibit Trie的建立及劃分方法流程圖;
[0039]圖8為本申請實施例針對一個VPN(VPN m)中的IPv6前綴的路由分布建立的Multibit Trie的結(jié)構(gòu)不例圖;
[0040]圖9-1為本申請實施例提供的以圖3所示的Unibit Trie為例,將/0級IPv6前綴的路由擴展到/I級IPv6如綴上的不例圖;
[0041]圖9-2為本申請實施例提供的以圖3所示的Unibit Trie為例,將/I級IPv6前綴的路由擴展到/2級IPv6如綴上的不例圖;
[0042]圖9-3為本申請實施例提供的以圖3所示的Unibit Trie為例,將/2級IPv6前綴的路由擴展到/3級IPv6如綴上的不例圖;
[0043]圖10為本申請另一實施例提供的基于Multibit Trie的IPv6路由查找方法流程圖;
[0044]圖11為本申請實施例提供的將Sub_Trie節(jié)點劃分為8個Segmented Sub_Trie節(jié)點的示例圖;
[0045]圖12為本申請實施例提供的基于Multibit Trie的IPv6路由查找裝置的組成示意圖;
[0046]圖13為本申請實施例提供的包含IPv6路由查找裝置的設(shè)備的硬件架構(gòu)示意圖。
【具體實施方式】
[0047]Tree Bitmap (樹位圖)是基于Multibit Trie (多位字典樹)的經(jīng)典路由查找算法,該算法應(yīng)用于CRS系列高端路由器上。為了深入了解Tree Bitmap,首先介紹UnibitTrie (單位字典樹)和 Multibit Trie0
[0048]圖3為Unibit Trie示例圖,如圖3所示,共有9條IPv4前綴Pl?P9分布。其中,Unibit Trie的最尚如綴節(jié)點Pl代表如綴*,之后,Pl的下一級的左分支表不的如綴Ql為0*,Pl的下一級的右分支表示的前綴P2為1*,Ql的下一級的左分支表示的前綴P3為00*,P2的下一級的左分支表示的前綴Q2為01*,P2的下一級的右分支表示的前綴Q3為11*,依此類推;也就是說,對于Unibit Trie中的任一節(jié)點P,該節(jié)點P的下一級的左分支表示的前綴0P,該節(jié)點P的下一級的右分支表示的前綴P ,為1P。
[0049]在Unibit Trie結(jié)構(gòu)中,?節(jié)點代表有路由分布,〇表示沒有路由分布。如圖3中,Pl?P9代表有路由分布,Ql?Q8代表沒有路由分布。
[0050]Unibit Trie中基于LPM的路由查找過程如下:
[0051]對于一個待查找LPM路由的IPv4前綴,以該IPv4前綴的從高到低bit的順序,每次在Unibit Trie中查找該IPv4前綴的lbit,如果該bit為“0”,則進入Unibit Trie的下一級的左分支,如果該bit為“1”,則進入Unibit Trie的下一級的右分支;依此類推,一直查找到Unibit Trie的樹底,最后經(jīng)過的?節(jié)點的路由為該IPv4前綴的LPM路由。
[0052]例如:要在圖3所示的Unibit Trie中查找IPv4前綴:10000110的LPM路由,則具體過程如下:
[0053]步驟01:先找出該IPv4前綴:10000110的最高的bit,即“ I ”,則從Unibit Trie的Pl進入下一級的右分支P2,表示為P1->P2 ;
[0054]步驟02:再找出IPv4前綴:10000110的次高bit,即“0”,則從Unibit Trie的P2進入下一級的左分支Q2,表示為:P2->Q2 ;
[0055]步驟03:再找出IPv4前綴:10000110的第三高bit,即“0”,則從Unibit Trie的Q2進入下一級的左分支Q4,表示為:Q2->Q4 ;
[0056]步驟04:再找出IPv4前綴:10000110的第四高bit,即“0”,則從Unibit Trie的Q4進入下一級的左分支P6,表不為:Q4->P6 ;
[0057]步驟05:再找出IPv4前綴:10000110的第五高bit,即“0”,則從Unibit Trie的P6進入下一級的左分支Q6,表不為:P6_>Q6 ;
[0058]步驟06:再找出IPv4前綴:10000110的第六高bit,即“ I ”,則從Unibit Trie的Q6進入下一級的右分支Q8,表示為:Q6->Q8 ;
[0059]步驟07:再找出IPv4前綴:10000110的第七高,即次低bit,即“1”,則從UnibitTrie的Q8進入下一級的右分支P9,表示為:Q8_>P9,此時,已經(jīng)到達Unitbit Trie的樹底,則查找結(jié)束,P9的路由為IPv4前綴:10000110的LPM路由。
[0060]也就是說,采用Unibit Trie查找IPv4前綴“10000110”的LPM路由,需要通過P1->P2->Q2->Q4->P6->Q6->Q8->P9,共七次節(jié)點查找。
[0061]Multibit Trie是在Unibit Trie的基礎(chǔ)上,每次LPM路由查找時,查找多個bit。圖4所示為Unibit Trie到Multibit Trie的轉(zhuǎn)換過程,圖4中每次LPM路由查找要查找3個bit,即LPM路由查找步長為3。
[0062]Tree Bitmap是在Multibit Trie基礎(chǔ)上,對節(jié)點數(shù)據(jù)結(jié)構(gòu)進行優(yōu)化,使之更適合基于 SRAM (Static Random Access Memory,靜態(tài)隨機存取存儲器)和 DRAM (Dynamic RandomAccess Memory,動態(tài)隨機存取存儲器)的大訪問粒度架構(gòu)的硬件流水線實現(xiàn)。MultibitTrie可根據(jù)預(yù)設(shè)LPM路由查找步長劃分為多個Level,如圖4所示的Multibit Trie以LPM路由查找步長3劃分為3個Level:Level 1、Level 2和Level3。
[0063]圖5給出了圖3中的Level I的結(jié)構(gòu)。
[0064]在Multibit Trie中,對于每個Level,將該Level劃分為多個Tree Bitmap節(jié)點,每個Tree Bitmap節(jié)點為該Level的最高一級的一個前綴及其該前綴的子孫前綴構(gòu)成的sub_Trie0
[0065]其中,設(shè)Multibit Trie以LPM路由查找步長S劃分為N個Level,分別為LevelI?N,則Level I中包含一個Tree Bitmap節(jié)點,Level 2的最高一級前綴最多有2s個,則該2s個前綴中的每個前綴與其子孫前綴分別構(gòu)成一棵sub—Trie,則Level 2中最后包含25個 Tree Bitmap 節(jié)點,通用地,Level m(l ^ m ^ N)中最多包含 2 (m 1)5個 Tree Bitmap 節(jié)點。
[0066]以圖4為例,Level I中包含一個Tree Bitmap節(jié)點,Level 2中包含3個TreeBitmap 節(jié)點,Level 3 中包含 2 個 Tree Bitmap 節(jié)點。
[0067]在描述Tree Bitmap節(jié)點時,每個Tree Bitmap節(jié)點可采用如下四個參數(shù)來描述:
[0068]I) Internal Tree Bitmap (內(nèi)部樹位圖)
[0069]Internal Tree Bitmap表示Tree Bitmap節(jié)點內(nèi)部的前綴的路由分布,假設(shè)LPM路由查找步長為S,則該Tree Bitmap節(jié)點內(nèi)部最多有(2S_1)個前綴,從而Internal TreeBitmap為(2S-1)位,每一位代表該Tree Bitmap節(jié)點內(nèi)部的一個前綴上是否有路由分布,若該前綴上有路由分布,則該位取值為“ 1”,否則,該位取值為“O”。
[0070]例如:圖5所示的Leve I中的Tree Bitmap節(jié)點,由于LPM路由查找步長S = 3,則Level I 中的Tree Bitmap節(jié)點的 Internal Tree Bitmap為23_1 = 7位,表不為 I—01—1000,其中,“I”表示對應(yīng)前綴上有路由分布,“O”表示對應(yīng)前綴上沒有路由分布。
[0071]2) Extending Paths Bitmap (擴展路徑位圖)
[0072]Extending Paths Bitmap 表不 Tree Bitmap 節(jié)點的下一級 Tree Bitmap 節(jié)點的分布,假設(shè)LPM路由查找步長為S,則一個Tree Bitmap節(jié)點最多有23個分支,即該TreeB