專利名稱:一種基于ip地址范圍的路由查找方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信,具體涉及一種基于IP地址范圍的路由查找方法。
技術(shù)背景隨著Internet的迅猛發(fā)展,用于主干網(wǎng)絡(luò)互聯(lián)的核心路由器的接口速率 已經(jīng)達(dá)到了 2.5Gbps到10Gbps。這一速率要求核心路由器能夠每秒鐘轉(zhuǎn)發(fā) 幾百萬(wàn)到上千萬(wàn)個(gè)以上的分組。分組轉(zhuǎn)發(fā)的重要一步就是查找路由表,因此 快速的IP地址查找算法是實(shí)現(xiàn)高速分組轉(zhuǎn)發(fā)的關(guān)鍵。IP地址查找需要實(shí)現(xiàn)最長(zhǎng)路由前綴匹配。近年來(lái),研究人員提出了多種 路由查找算法以提高查找性能。現(xiàn)有技術(shù)公開了多種IP路由查找的方法。 在已公開的路由查找方法可以按照其對(duì)路由前綴的處理方式歸為以下兩類 l)按路由前綴對(duì)應(yīng)的二進(jìn)制字符串查找的方法2 )按路由前綴表示的IP地址 范圍查找的方法。在第一類方法中,路由前綴是按路由前綴的掩碼來(lái)表示的。每條由IP 地址加路由前綴長(zhǎng)度構(gòu)成的路由前綴Pj,都可以表示成諸如"0100****"形 式的二進(jìn)制比特串,其中最高幾位是由IP地址與路由前綴長(zhǎng)度的掩碼相與 得來(lái)的Ol串,從掩碼為0的位起全記做*,直到最低位止。每個(gè)通過(guò)路由器 的IP包的目的IP地址都可以表示成二進(jìn)制的比特串T者如"01001010"。在 該類方法中,路由查找中的匹配即是指當(dāng)目的地址代表的二進(jìn)制的比特串與 路由前綴代表的比特串相匹配,由"*,,表示的位能同時(shí)匹配"0"和"1", 最佳匹配即是指在所有匹配的比特串里擁有最長(zhǎng)路由前綴長(zhǎng)度-即包含最 少"*"-的那一個(gè)匹配。在第一類方法里,公開的技術(shù)方法有二進(jìn)制trie樹,路徑壓縮trie樹 (Path-Compressed Trie ) Sklower[21],多分支Trie樹(Multi-bit Trie )及相 關(guān)的優(yōu)4匕方法Srinivasan [22].。在第二類方法中,路由前綴是用路由前綴的范圍表示。每條由IP地址 加路由前綴長(zhǎng)度構(gòu)成的路由前綴Pj,都代表著IP地址空間上一段連續(xù)的IP 地址范圍,因此將Pj表示成由一個(gè)閉區(qū)間和一個(gè)數(shù)值組成的二元組([Pj.Start, Pj.End ], Pj.length )其中Pj.Start, Pj.End分別代表這個(gè)IP 地址范圍的起始點(diǎn)和結(jié)束點(diǎn),Pj.length代表該路由前綴的路由前綴長(zhǎng)度。 每個(gè)經(jīng)過(guò)路由器的IP數(shù)據(jù)報(bào)的目的IP地址都代表著IP地址空間上的一個(gè) 點(diǎn)。在該類方法中,路由查找結(jié)果的匹配即是指當(dāng)目的地址代表的點(diǎn)落入某 個(gè)二元組表示的區(qū)間里,最佳匹配即是指在所有匹配的二元組里擁有最長(zhǎng)路 由前綴長(zhǎng)度的那一個(gè)^^由前綴。在第二類方法里,公開的技術(shù)方法有ButlerLampson在[23]中提出的第 一個(gè)按路由前綴范圍檢索算法及一系列針對(duì)其改進(jìn)的方法。因?yàn)槁酚汕熬Y之 間可能存在著包含關(guān)系,這些包含關(guān)系是由實(shí)際的網(wǎng)絡(luò)應(yīng)用產(chǎn)生的,如多穴 (Multi-homed )主機(jī),或負(fù)載均衡等。在[23]中需要預(yù)先計(jì)算并保存信息來(lái) 完成最長(zhǎng)路由前綴匹配,如果目的路由前綴在地址空間上分割的小區(qū)間,每 個(gè)基本區(qū)間記為Ik (k>0,kZ),那么對(duì)每個(gè)Ik都需要預(yù)先計(jì)算出落入該區(qū) 間的數(shù)據(jù)報(bào)的最長(zhǎng)匹配路由前綴。如圖1所示的一個(gè)路由前綴實(shí)例集合,需 要按圖2所示的所示的箭頭方向,提前計(jì)算找到包含基本區(qū)間Ik的最長(zhǎng)路由 前綴匹配,以避免在查找時(shí)的回溯。預(yù)先計(jì)算信息不僅意味著需要更多的存 儲(chǔ)空間,同時(shí)意味著該方法在路由表重建的初始時(shí)間較長(zhǎng)。發(fā)明內(nèi)容本發(fā)明需要解決的技術(shù)問(wèn)題是如何提供一種基于IP地址范圍的路由查 找方法,不需要預(yù)先計(jì)算信息,并能減少了查找的路由表?xiàng)l目,提高查找時(shí) 間。本發(fā)明的上述技術(shù)問(wèn)題這樣解決,提供一種基于IP地址范圍的路由查 找方法,包括以下步驟1.1) 按路由表中路由前綴包含關(guān)系分層次劃分路由前綴子集合;1.2) 根據(jù)接收目的IP地址由高到低逐層在已確定上層路由前綴包含的 下一層路由前綴子集合范圍內(nèi)精確查找直至對(duì)應(yīng)下一層路由前綴子集合為空并將最后 一個(gè)確定的路由前綴對(duì)應(yīng)下一跳端口作為查找結(jié)果。按照本發(fā)明提供的路由查找方法,這種按路由前綴包含關(guān)系分層次劃分 路由前綴子集合,不僅僅是一種規(guī)則,而是一種適用于無(wú)類域間路由選擇CIDR地址結(jié)構(gòu)的通用方法,不僅僅適用于IPv6同樣適用于IPv4。按照本發(fā)明提供的路由查找方法,本發(fā)明在子路由前綴集合里的查找是 精確查找,可以使用現(xiàn)有的很成熟的查找算法,包括但不限制于哈希查找, 二分查找等。按照本發(fā)明提供的路由查找方法,該路由查找方法可以采用以下類型作 為表示路由前綴集合的基本數(shù)據(jù)結(jié)構(gòu),所述步驟l.l)是該基本數(shù)據(jù)結(jié)構(gòu)的初 始化建立,所述類型包括但不限制于平衡樹,包括B樹和B+樹,AVL樹等。本發(fā)明提供的一種基于IP地址范圍的路由查找方法,按路由前綴包含 關(guān)系分層次劃分路由前綴子集合然后逐級(jí)精確查找,與現(xiàn)有的按照地址范圍 查找的IP路由查找方法,本發(fā)明的有以下優(yōu)勢(shì)l)由于不需要預(yù)計(jì)算信息, 劃分的思想使數(shù)據(jù)結(jié)構(gòu)中只存路由表中存在的目的路由前綴信息,沒(méi)有路由 前綴擴(kuò)展或其他因素造成的冗余信息。它的空間復(fù)雜度是O(N)。 2)同時(shí)該 方法采用按路由前綴包含層次逐級(jí)的精確查找,在每一查找不但能夠找到 一次匹配,并且為下一次匹配提供了更精確的搜索空間范圍,因此在查找的 過(guò)程了裁減了解空間范圍,即減少了查找的路由表?xiàng)l目,縮短了查找時(shí)間。 3)無(wú)預(yù)計(jì)算過(guò)程,減小了初始化時(shí)間。4)該方法隱含遞歸的設(shè)計(jì)思想,便 于實(shí)施時(shí)的程序設(shè)計(jì)。
下面結(jié)合附圖和具體實(shí)施例進(jìn)一步對(duì)本發(fā)明進(jìn)4亍詳細(xì)說(shuō)明。 圖1是 一種路由表實(shí)例的路由前綴范圍表示。圖2是需要預(yù)計(jì)算信息的普通的路由前綴范圍查找方法的預(yù)計(jì)算示例。圖3是圖2所示路由表實(shí)例的初始化過(guò)程建立的數(shù)據(jù)結(jié)構(gòu)。圖4是某個(gè)目的IP在圖3所示路由表實(shí)例的建立的數(shù)據(jù)結(jié)構(gòu)上的查找過(guò)程。
具體實(shí)施方式
首先,說(shuō)明本發(fā)明基礎(chǔ)1) 包含路由前綴與被包含路由前綴對(duì)于CIDR地址結(jié)構(gòu)中的路由前 綴,用一個(gè)形如[IP地址/路由前綴長(zhǎng)度]的對(duì)來(lái)表示,每一個(gè)這樣的路由前綴, 代表了 IP地址空間上一段連續(xù)的地址范圍。(iX),ieZ)記為路由前綴 i, SetU)記為路由前綴i所包含的IP地址范圍,如果Set(A)cSetO》,那么 P,則被定義為p,的包含路由前綴,A被定義為^的纟皮包含路由前綴。2) 第m層路由前綴如果Set(/ 。)cSet(a), Set(a)cSet(a),… SetOJcSet(A) (a<b<c<...<m<n)同時(shí)滿足,并且包含關(guān)系被傳遞,某路 由前綴A(a「i《n)在包含鏈中所處的逆序位置為m,則定義A為第m層路 由前綴。第二步,說(shuō)明本發(fā)明方法,具體包括 步驟0:初始化設(shè)定默認(rèn)路由為路由前綴長(zhǎng)度為0的路由前綴,將默認(rèn)路由劃為第1層 路由前綴集合。步驟0.1將其余所有不被路由前綴長(zhǎng)度非0的路由前綴包含路由前綴,劃入第2 層路由前綴集合。步驟0.2設(shè)置m的初始值為2, i的初始值為1。對(duì)于第m (m>0,meZ)層路由前綴集合里的路由前綴p, (iX),ieZ), 找到僅被它包含并且不被第m層以下(即第m+1, m+2, m+3…)層路由前 綴包含的所有路由前綴,將這些路由前綴放置入由p,的下一層索引字段索引 的第m+l層路由前綴集合里。i加1,重復(fù)步驟0.2。m加1,重復(fù)步驟0.2。 步驟1:設(shè)置m的初始值為1。對(duì)每個(gè)路由器收到的目的IP地址,在第m層的路由前綴集合進(jìn)行查找。 如果匹配上該路由前綴集合中的某一條路由前綴A (i>0, ieZ),記下當(dāng)前 最佳匹配i 各由前綴^。步驟2:檢查P,的下一層索引字段,如果p,.的下一層索引字段為空,則結(jié)束查找, 將當(dāng)前最佳匹配路由前綴返回作為最長(zhǎng)匹配的路由前綴。如果非空,則按 照的下一層索引字段索引到被A包含的下一層路由前綴集合,m值加1; 跳轉(zhuǎn)到步驟1。最后,結(jié)合具體實(shí)施例詳細(xì)i兌明本發(fā)明實(shí)施方案的選取關(guān)鍵在于選擇合適的數(shù)據(jù)結(jié)構(gòu)來(lái)表示每一層路由前綴 集合,以提供高效的查找插入刪除操作。作者在此給出一個(gè)使用了 height-balance (高度平衡的)平衡樹B樹的實(shí)施實(shí)例。(1 )初始化-基本的數(shù)據(jù)結(jié)構(gòu)建立方法采用B樹作為表示路由前綴集合的基本的數(shù)據(jù)結(jié)構(gòu)。對(duì)普通的B樹鍵 值增加了兩個(gè)字域, 一個(gè)開始結(jié)束標(biāo)志,表示該鍵值代表地址范圍的開始點(diǎn) 還是結(jié)束點(diǎn), 一個(gè)下一層索引字段,指向被該地址范圍代表的路由前綴包含 的下一層路由前綴集合組成的子Btree。同時(shí)對(duì)Btree的插入查找做適當(dāng)修 改,改進(jìn)的Btree插入查找將返回比關(guān)鍵字稍小的最大的那個(gè)值。按照如圖1所示的路由表實(shí)例,按前綴1,前綴2,前綴3插入的步驟解釋 如何建立起如圖3所示的數(shù)據(jù)結(jié)構(gòu)。1 )對(duì)路由前綴按照其路由前綴長(zhǎng)度從小至大排序,排序的結(jié)果為{前綴 l,前綴2,前綴3,前綴4,前綴5,前綴6,前綴7,前綴8 }。2 )創(chuàng)建一個(gè)新的B樹,Btree A。3)將前綴1轉(zhuǎn)化成地址范圍表示,將前綴1的開始地址值作為B樹鍵值插入Btree A,標(biāo)記記該鍵值是一個(gè)地址范圍的開始。4 )將前綴1的結(jié)束地址值作為B樹鍵值插入Btree A,標(biāo)記該^建值是一 個(gè)地址范圍的結(jié)束。5) 將前綴2轉(zhuǎn)化成地址范圍表示,將前綴2的開始地址值作為關(guān)鍵字 在Btree A中查找,改進(jìn)的Btree查找將返回比關(guān)鍵字稍小的最大的那個(gè)值, 此時(shí),返回前綴1的開始地址值構(gòu)造的鍵值。6) 檢查返回鍵值的下一層索引字段,檢查鍵值的開始結(jié)束字段。由返回的鍵值得知是一個(gè)地址范圍的開始,于是創(chuàng)建一顆新的B樹, Btree B。7) 將返回鍵值的下一層索引字段賦值Btree B的指針。8) 將前綴2轉(zhuǎn)化成地址范圍表示,將前綴2的開始地址值作為B樹鍵 值插入Btree B,標(biāo)記記該鍵值是一個(gè)地址范圍的開始。9 )將前綴2的結(jié)束地址值作為B樹鍵值插入Btree B,標(biāo)記該鍵值是 一個(gè)地址范圍的結(jié)束。10) 將前綴3轉(zhuǎn)化成地址范圍表示,將前綴3的開始地址值作為關(guān)鍵 字在BtreeA中查找,此時(shí),返回前綴1的開始地址值構(gòu)造的鍵值。11) 檢查返回鍵值的下一層索引字段非空,由下一層索引字段跳轉(zhuǎn)到 Btree B。12) 前綴3的開始地址值作為關(guān)鍵字在Btree B中查找,此時(shí),返回前 綴2的開始地址值構(gòu)造的鍵值13) 檢查返回鍵值的下一層索引字段為空,檢查鍵值的開始結(jié)束字段, 是一個(gè)開始鍵值,于是創(chuàng)建一顆新的B樹,Btree C。14) 將返回鍵值的下一層索引字段賦值為Btree C的指針。15) 將前綴3轉(zhuǎn)化成地址范圍表示,將前綴3的開始地址值作為B樹 鍵值插入Btree C,標(biāo)記該鍵值是一個(gè)地址范圍的開始。16) 將前綴3的結(jié)束地址值作為B樹鍵值插入Btree C,標(biāo)記該鍵值是 一個(gè)地址范圍的結(jié)束。如圖3所示,通過(guò)這種插入過(guò)程建立SET分層路由前綴子集合Btree A、 BtreeB、 BtreeC、 Btree D和Btree E。 (2)路由查找過(guò)程如圖4所示,下面一個(gè)以前綴4為最長(zhǎng)路由前綴匹配的目的IP地址為 例,說(shuō)明該實(shí)施在已建立的分層路由前綴子集合Btree A、 BtreeB、 Btree C、 Btree D和Btree E中的具體查找過(guò)程。1) 在第O層的路由前綴B樹Btree A中,目的IP與前綴1匹配(在圖 4中用黑色方框顯示)。2) 通過(guò)前綴1的下一層索引跳轉(zhuǎn)到BtreeB,記錄下當(dāng)前最佳匹配為前 綴l。3 )在BtreeB中目的IP匹配上前綴2,更新當(dāng)前最佳匹配為前綴2。4) 通過(guò)前綴2的下一層索引跳轉(zhuǎn)BtreeC,5) 在路由前綴B樹Btree C中目的IP匹配上前綴3,更新當(dāng)前最佳匹 配為前綴3。6 )通過(guò)前綴3的索引跳轉(zhuǎn)到Btree D。7)在路由前綴B樹Btree D中目的IP匹配上前綴4,更新當(dāng)前最佳匹 配為前綴4。因?yàn)榍熬Y4沒(méi)有下一級(jí)索引,查找結(jié)束,返回最佳匹配前綴4 的下一跳端口號(hào)。
權(quán)利要求
1. 一種基于IP地址范圍的路由查找方法,其特征在于,包括以下步驟1.1)按路由表中路由前綴包含關(guān)系分層次劃分路由前綴子集合;1.2)根據(jù)接收目的IP地址由高到低逐層在已確定上層路由前綴包含的下一層路由前綴子集合范圍內(nèi)精確查找直至對(duì)應(yīng)下一層路由前綴子集合為空并將最后一個(gè)確定的路由前綴對(duì)應(yīng)下一跳端口作為查找結(jié)果。
2、 根據(jù)權(quán)利要求1所述路由查找方法,其特征在于,所述IP地址是 IPv4地址。
3、 根據(jù)權(quán)利要求1所述路由查找方法,其特征在于,所述IP地址是 IPv6i也址。
4、 根據(jù)權(quán)利要求1所述路由查找方法,其特征在于,該路由查找方 法采用平衡樹作為表示路由前綴集合的基本數(shù)據(jù)結(jié)構(gòu),所述步驟l.l)是該基 本數(shù)據(jù)結(jié)構(gòu)的初始化建立。
5、 根據(jù)權(quán)利要求4所述路由查找方法,其特征在于,所述平衡樹是 B樹、B+樹或AVL樹。
6、 根據(jù)權(quán)利要求1所述路由查找方法,其特征在于,所述步驟1.2) 中的精確查找采用哈希查找。
7、 根據(jù)權(quán)利要求1所述路由查找方法,其特征在于,所述步驟1.2) 中的精確查找采用二分查找。
全文摘要
本發(fā)明涉及一種基于IP地址范圍的路由查找方法,包括以下步驟按路由表中路由前綴包含關(guān)系分層次劃分路由前綴子集合;根據(jù)接收目的IP地址由高到低逐層在已確定上層路由前綴包含的下一層路由前綴子集合范圍內(nèi)精確查找直至對(duì)應(yīng)下一層路由前綴子集合為空并將最后一個(gè)確定的路由前綴對(duì)應(yīng)下一跳端口作為查找結(jié)果。這種方法采用分層次劃分和逐級(jí)精確查找,僅有目的路由前綴信息、無(wú)預(yù)計(jì)算并裁減查找空間范圍,能降低數(shù)據(jù)空間復(fù)雜度,減少查找時(shí)間并且有利于程序?qū)崿F(xiàn)。
文檔編號(hào)H04L12/56GK101286935SQ200810094680
公開日2008年10月15日 申請(qǐng)日期2008年5月7日 優(yōu)先權(quán)日2008年5月7日
發(fā)明者鄧曉紅 申請(qǐng)人:中興通訊股份有限公司