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

用于高效地搜索被分成具有界大小的、有界數(shù)量的子數(shù)據(jù)庫的轉(zhuǎn)發(fā)數(shù)據(jù)庫的系統(tǒng)和方法

文檔序號(hào):6480598閱讀:158來源:國知局
專利名稱:用于高效地搜索被分成具有界大小的、有界數(shù)量的子數(shù)據(jù)庫的轉(zhuǎn)發(fā)數(shù)據(jù)庫的系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)。更具體地,本發(fā)明涉及一種被分成預(yù)定大小地預(yù)定數(shù)量的子數(shù)據(jù)庫的查找表的轉(zhuǎn)發(fā)數(shù)據(jù)庫,每個(gè)子數(shù)據(jù)庫可用指針表選擇,指針表通過在存儲(chǔ)于指針表中的矛前綴進(jìn)行最長匹配搜索而選擇感興趣的子數(shù)據(jù)庫。
背景技術(shù)
下面的說明和范例根據(jù)它們包含在這部分中的內(nèi)容并不認(rèn)為是傳統(tǒng)技術(shù)。。
計(jì)算機(jī)網(wǎng)絡(luò)一般被認(rèn)識(shí)為是通過多個(gè)計(jì)算機(jī)的互聯(lián)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)包通信。網(wǎng)絡(luò)的一個(gè)目的是將數(shù)據(jù)包快速地從源點(diǎn)轉(zhuǎn)發(fā)到目的地。因此,網(wǎng)絡(luò)本身可以是一個(gè)或更多轉(zhuǎn)發(fā)設(shè)備,這里可互換地指網(wǎng)關(guān)、網(wǎng)橋、交換機(jī)以及路由器。
轉(zhuǎn)發(fā)設(shè)備一般包括查找表。入站地址可與存儲(chǔ)在查找表中的前綴表項(xiàng)進(jìn)行比較。如果發(fā)生匹配,關(guān)聯(lián)的信息數(shù)據(jù)包被發(fā)送到轉(zhuǎn)發(fā)設(shè)備的一個(gè)適當(dāng)端口。作為網(wǎng)絡(luò)交換的鏈路,在轉(zhuǎn)發(fā)設(shè)備之間路由協(xié)議交換信息以改變相應(yīng)查找表中的前綴表項(xiàng)。這種改變不僅會(huì)修改查找表中的前綴還會(huì)修改由那些前綴指向的下一級(jí)跳躍(next hop)的標(biāo)識(shí)符。因此,當(dāng)鏈路在互聯(lián)網(wǎng)或企業(yè)內(nèi)部網(wǎng)的多個(gè)部分中斷開和恢復(fù)時(shí),通過轉(zhuǎn)發(fā)設(shè)備的路由可動(dòng)態(tài)地改變。
與數(shù)據(jù)包相關(guān)的互聯(lián)網(wǎng)協(xié)議(IP)地址一般包括網(wǎng)絡(luò)字段和主機(jī)字段。用于網(wǎng)絡(luò)和主機(jī)字段的比特?cái)?shù)能以一種基于類的互聯(lián)網(wǎng)尋址結(jié)構(gòu)改變。隨著被稱為無類域內(nèi)路由(CIDR)的無類尋址結(jié)構(gòu)的出現(xiàn),網(wǎng)絡(luò)字段和主機(jī)字段之間的界限可以改變。除了類和無類尋址結(jié)構(gòu),目前還存在多種IP尋址的互聯(lián)網(wǎng)協(xié)議版本。例如,IP版本4(IPV4)使用32比特尋址前綴,而IP版本6(IPV6)使用128比特尋址前綴。如果使用例如IPV4尋址,轉(zhuǎn)發(fā)設(shè)備可能僅考慮在確定下一級(jí)跳躍中的32比特尋址字段的最前8、16和24比特。
一種用于確定下一級(jí)跳躍的流行方法是使用被稱為最長匹配前綴的技術(shù)。在這種技術(shù)中,32比特的IP地址,例如192.2.8.64與查找表中的前綴表項(xiàng)(此后稱為“前綴”)相比較。前綴192.2.0.0/16具有比前綴192.0.0.0/8更長的匹配前綴。這主要因?yàn)榍罢叩那熬Y長度為16比特,而后者的前綴長度僅為8比特。當(dāng)作為數(shù)據(jù)包發(fā)送目的地的下一級(jí)跳躍地址被確定時(shí),轉(zhuǎn)發(fā)設(shè)備將考慮前兩個(gè)字節(jié)192.2*。
有很多方法能夠進(jìn)行最長匹配前綴比較。例如可用指針或散列。二進(jìn)制序列的最前幾個(gè)比特可作為指針存儲(chǔ)在表內(nèi)。各指針表項(xiàng)將不僅跟蹤指針中的前綴,還指向完成最長前綴匹配所需要的隨后的二進(jìn)制表項(xiàng)。盡管指針將指向子數(shù)據(jù)庫中可能的幾百個(gè)前綴,許多子數(shù)據(jù)庫關(guān)于任何對(duì)入站地址的匹配是空的或稀疏的。使用先驅(qū)指針劃分前綴數(shù)據(jù)庫盡管是啟發(fā)性的,但無法保證數(shù)據(jù)庫被優(yōu)化地分裂。另外,這種傳統(tǒng)技術(shù)不提供對(duì)查找表性能上的任何最壞情況的保證。
另一種用來分裂數(shù)據(jù)庫的技術(shù)牽涉到使用樹或結(jié)(trie),現(xiàn)存在許多不同的樹結(jié)構(gòu)。簡單樹經(jīng)常指二叉樹,具有更復(fù)雜樹結(jié)構(gòu)的、作為二叉樹壓縮形式二叉樹。要在樹中搜索地址,搜索開始于根節(jié)點(diǎn)。從根節(jié)點(diǎn)伸展開的“1”指針或“0”指針跟隨到樹中的下個(gè)節(jié)點(diǎn)或二進(jìn)制比特位置。如果,地址例如開始于001*,然后搜索開始于根,并向下進(jìn)行到每個(gè)頂點(diǎn)節(jié)點(diǎn),其過程沿“0”分支節(jié)點(diǎn)開始,到下個(gè)“0”分支節(jié)點(diǎn)并最后到“1”分支指針。在到達(dá)葉節(jié)點(diǎn)或發(fā)生失敗前,搜索將繼續(xù)。可壓縮二叉樹以改善搜索操作。帕特麗夏樹是一種用于縮短分支長度以使其具有相對(duì)較少的葉節(jié)點(diǎn)的壓縮形式。
上面所提到的該技術(shù)的不利因素在于他們不提供對(duì)延伸到任何指針之外的子數(shù)據(jù)庫大小的任何界限。這難以為任何子數(shù)據(jù)庫準(zhǔn)備給定的存儲(chǔ)量,并同樣不提供對(duì)查找速度或查找性能的任何保證(除了查找全部子數(shù)據(jù)庫之外的平凡的最壞情況的保證)。
如果能更優(yōu)化地分配在各節(jié)點(diǎn)或可搜索的子數(shù)據(jù)庫中的多個(gè)前綴,搜索能得以更優(yōu)化地實(shí)現(xiàn)。因此存在一種要求即用作為搜索時(shí)指針的“矛前綴”配置一種可搜索數(shù)據(jù)庫的特別形式,以僅指向感興趣的子數(shù)據(jù)庫。所要求的分配包括將界限設(shè)置于每個(gè)子數(shù)據(jù)庫中的前綴數(shù)量上,并將界限設(shè)置于查找表中的子數(shù)據(jù)庫的數(shù)量上。通過控制子數(shù)據(jù)庫的數(shù)量和子數(shù)據(jù)庫的大小,查找操作更具確定性,且能夠保證最壞情況的查找時(shí)間。另外,子數(shù)據(jù)庫有界數(shù)量能更為有利地分配到一個(gè)物理設(shè)備(諸如一存儲(chǔ)器),存儲(chǔ)器的專用部分的大小被設(shè)計(jì)成能夠容納相應(yīng)子數(shù)據(jù)庫。由于在具體查找期間僅需訪問子數(shù)據(jù)庫,這將減少查找操作的功耗。

發(fā)明內(nèi)容
通過將子數(shù)據(jù)庫進(jìn)行更優(yōu)化的分配的一種系統(tǒng)、方法和存儲(chǔ)器能大部分地解決上面所羅列的問題。子數(shù)據(jù)庫中的前綴數(shù)量被較佳地限制為不超過T個(gè)數(shù)目的前綴,其中T根據(jù)所要求的速度和功耗而選擇,一般遠(yuǎn)小于數(shù)據(jù)庫中的總前綴數(shù)N。另外,數(shù)據(jù)庫中的子數(shù)據(jù)庫的數(shù)量直接與N成正比并與T成反比,其數(shù)量被較佳地限定在N/T和(2N/T)+1之間。
通過將數(shù)據(jù)庫分裂為子數(shù)據(jù)庫,只需要搜索一個(gè)子數(shù)據(jù)庫。感興趣的子數(shù)據(jù)庫通過使用一指針單元而被選擇,據(jù)所知該指針單元以另一種方式也可被稱為一分離引擎。分離引擎包括存儲(chǔ)一組指針的指針表。每個(gè)指針具有此后稱為“矛前綴”的相應(yīng)前綴。矛前綴項(xiàng)被用來注釋指針函數(shù),指針函數(shù)被用來矛指(spear)從根節(jié)點(diǎn)到子數(shù)據(jù)庫。矛前綴與普通數(shù)據(jù)庫前綴的不同點(diǎn)在于,矛前綴是唯一用于這里的特別函數(shù)前綴,以允許最長匹配矛前綴搜索匹配從而根據(jù)下面將描述的那樣確定感興趣的數(shù)據(jù)庫。為了簡單起見,與數(shù)據(jù)庫的N個(gè)前綴相關(guān)聯(lián)的數(shù)據(jù)庫前綴此后被簡稱為“前綴”,同時(shí)存儲(chǔ)在指針表中并由指針單元使用的特定前綴此后被稱為“矛前綴”。
根據(jù)一實(shí)施例提供了一種方法。該方法被用來通過將數(shù)據(jù)庫分裂成多個(gè)子數(shù)據(jù)庫而形成一個(gè)轉(zhuǎn)發(fā)數(shù)據(jù)庫。被適當(dāng)?shù)亟o定有界的大小和數(shù)量的子數(shù)據(jù)庫,一組矛前綴表項(xiàng)和相關(guān)指針可形成以指向適當(dāng)?shù)臄?shù)據(jù)庫。指針不僅跟蹤始于根節(jié)點(diǎn)的多個(gè)1和多個(gè)0的二進(jìn)制字符串,同時(shí)指向感興趣的子數(shù)據(jù)庫。
根據(jù)本發(fā)明另一實(shí)施例,這里提供另一種用于將前綴定位到被分裂成多個(gè)子數(shù)據(jù)庫的轉(zhuǎn)發(fā)數(shù)據(jù)庫中的方法。該方法包括例如使用指針表中的指針并對(duì)存儲(chǔ)于其中的矛前綴應(yīng)用最長匹配。隨后可使用與最長矛前綴相關(guān)聯(lián)的指針以指向轉(zhuǎn)發(fā)數(shù)據(jù)庫中所選擇的子數(shù)據(jù)庫。數(shù)據(jù)庫前綴的最長匹配(或簡稱“前綴”)可隨后用于確定在所選子數(shù)據(jù)庫中的最長前綴。找到指針表中的最長矛前綴以及所選子數(shù)據(jù)庫中的最長前綴,由此確定轉(zhuǎn)發(fā)相關(guān)聯(lián)數(shù)據(jù)包的下一級(jí)跳躍。
根據(jù)另一實(shí)施例,這里構(gòu)思出一種具有計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的轉(zhuǎn)發(fā)設(shè)備。存儲(chǔ)介質(zhì)可包含分裂程序、指針表以及查找表。分裂程序可由處理器調(diào)用從而形成具有從根節(jié)點(diǎn)向多個(gè)葉節(jié)點(diǎn)伸展開的分支的樹。該程序隨后在每個(gè)具有小于T個(gè)前綴的葉節(jié)點(diǎn)形成一個(gè)子數(shù)據(jù)庫,其中在諸葉節(jié)點(diǎn)以及位于根節(jié)點(diǎn)與葉節(jié)點(diǎn)之間的諸節(jié)點(diǎn)中的前綴累計(jì)數(shù)為N個(gè)前綴。在搜索操作中,在搜索地址時(shí)訪問指針表并獲得指針。指針表僅指向查找表包含所選子數(shù)據(jù)庫的部分。因此,指針表可看做是對(duì)應(yīng)于用于“矛指”于相應(yīng)數(shù)據(jù)庫的二叉樹的分支,相應(yīng)數(shù)據(jù)庫可看做是二叉樹中的葉節(jié)點(diǎn)。


通過閱讀結(jié)合附圖對(duì)本發(fā)明所作的詳細(xì)說明,本發(fā)明的其它目的和優(yōu)點(diǎn)將變得明晰
圖1是通信網(wǎng)絡(luò)的示意圖2是圖1中通信網(wǎng)絡(luò)中的數(shù)據(jù)包轉(zhuǎn)發(fā)引擎(即交換機(jī)或路由器)的框圖3是將通過將地址的較高有效比特匹配于指針表中的前綴,并將地址的較低有效比特匹配于由指針單元指向的子數(shù)據(jù)庫中的前綴而將地址指向相應(yīng)子數(shù)據(jù)庫的指針單元的框圖4是一種路由器內(nèi)的、用于存儲(chǔ)由數(shù)據(jù)包處理器使用的分裂程序以配置圖3查找表中的指針表和子數(shù)據(jù)庫的計(jì)算機(jī)存儲(chǔ)介質(zhì)的框圖5是表示在被限定為不少于N/T個(gè)子數(shù)據(jù)庫和不超過(2N/T)+1個(gè)子數(shù)據(jù)庫之間的數(shù)據(jù)庫中具有N數(shù)量的前綴的二叉樹的平面圖。
圖6是用于將數(shù)據(jù)庫二分成具有上限數(shù)量前綴的子數(shù)據(jù)庫的分裂程序的流程圖7是表示如果前綴數(shù)量小于下限數(shù)量前綴,用于將子數(shù)據(jù)庫合并為二叉樹的分裂程序的流程圖。
圖8是查找操作的流程圖,它開始于在指針表的前綴中查找最長前綴匹配,選擇由指針表指向的子數(shù)據(jù)庫(或多個(gè)子數(shù)據(jù)庫)并隨后在所選子數(shù)據(jù)庫(或諸子數(shù)據(jù)庫)的前綴中查找最長前綴匹配。
由于本發(fā)明能夠有多種修改和替換形式,其特殊實(shí)施例是以范例形式出現(xiàn)在附圖中并在這里詳細(xì)說明的。然而,應(yīng)該懂得,附圖和詳細(xì)說明并不打算將本發(fā)明限制為所公開的具體形式,而是相反,本發(fā)明覆蓋所有落在由所附權(quán)利要求書所限定的本發(fā)明精神和范圍內(nèi)的修改、等效物和替換物。
具體實(shí)施例方式
下面將描述用來生成更有效的轉(zhuǎn)發(fā)數(shù)據(jù)庫并使用數(shù)據(jù)庫執(zhí)行最長前綴匹配的一種方法、設(shè)備和存儲(chǔ)器產(chǎn)品。由于對(duì)轉(zhuǎn)發(fā)數(shù)據(jù)庫中最合適前綴的最長匹配搜索在諸子數(shù)據(jù)庫中進(jìn)行,每個(gè)子數(shù)據(jù)庫相對(duì)地具有相同大小(即前綴數(shù)量),轉(zhuǎn)發(fā)設(shè)備可更快地轉(zhuǎn)發(fā)數(shù)據(jù)包。因此,最長匹配搜索僅發(fā)生在一個(gè)子數(shù)據(jù)庫中而不是所有子數(shù)據(jù)庫中。所選子數(shù)據(jù)庫是對(duì)指針表中的特定矛前綴進(jìn)行最長匹配搜索后得到的結(jié)果。矛前綴基本在數(shù)量上小于數(shù)據(jù)庫前綴(或簡稱“前綴”),只需在指針列表中搜索相對(duì)較少的二進(jìn)制的“1”和“0”。一旦在指針表中確定最長矛前綴匹配,通過只使用一個(gè)子數(shù)據(jù)庫尋找轉(zhuǎn)發(fā)數(shù)據(jù)庫中的最合適表項(xiàng),使這類搜索例程大大地加速。
圖1示出計(jì)算機(jī)網(wǎng)絡(luò)10中的多個(gè)轉(zhuǎn)發(fā)設(shè)備12,介于諸計(jì)算機(jī)14之間的互聯(lián)網(wǎng)或內(nèi)聯(lián)網(wǎng)的拓?fù)淇梢愿淖?。如果?jì)算機(jī)14a要求發(fā)送數(shù)據(jù)包到計(jì)算機(jī)14b,然后它必須通過遍歷網(wǎng)絡(luò)10中的一個(gè)或多個(gè)轉(zhuǎn)發(fā)設(shè)備12而實(shí)現(xiàn)這種做法。轉(zhuǎn)發(fā)設(shè)備12a可能會(huì)接收到數(shù)據(jù)包,該數(shù)據(jù)包包含例如轉(zhuǎn)發(fā)設(shè)備12b(或計(jì)算機(jī)14b)的目的地地址。確定將數(shù)據(jù)包發(fā)送到網(wǎng)絡(luò)10中的哪里并因此使數(shù)據(jù)包到達(dá)更靠近目的地的轉(zhuǎn)發(fā)設(shè)備(或級(jí))是轉(zhuǎn)發(fā)設(shè)備12a中的查找表的本質(zhì)上的功能。較優(yōu)化地,12a中的查找表將接收目的地地址,并將地址或關(guān)鍵字與查找表中的前綴相比較。與每個(gè)前綴相關(guān)的可以是一個(gè)下一級(jí)跳躍識(shí)別符。因此,例如使用最長前綴匹配比較,一旦前綴匹配于目的地地址,那么數(shù)據(jù)包被路由至更接近目的地的下一級(jí)跳躍。
圖2示出一種轉(zhuǎn)發(fā)設(shè)備12的范例,轉(zhuǎn)發(fā)設(shè)備是諸如路由器、網(wǎng)關(guān)、網(wǎng)橋或交換機(jī)等設(shè)備。轉(zhuǎn)發(fā)設(shè)備12經(jīng)常被稱為數(shù)據(jù)包轉(zhuǎn)發(fā)引擎并包括一種交換結(jié)構(gòu)20,以及多個(gè)線路卡22。交換結(jié)構(gòu)20為大眾所知地包括一個(gè)縱橫式交換機(jī),它將所有線路卡互聯(lián)在一起。至少一個(gè)線路卡包括路由處理器。因此轉(zhuǎn)發(fā)設(shè)備12可視為執(zhí)行兩種功能(i)基于數(shù)據(jù)包的目的地地址執(zhí)行路由查找以識(shí)別外外出端;以及(ii)將數(shù)據(jù)包切換到合適的輸出端口。
可在入口線路卡(如線路卡22a)上主要地執(zhí)行路由功能,而將數(shù)據(jù)包交換到合適的輸出端口或線路卡的動(dòng)作可發(fā)生在交換結(jié)構(gòu)20上。數(shù)據(jù)包的目的地地址(DA)可通過I/O接口輸入到線路卡22a。各線路卡一般包括媒體訪問控制器(MAC)24、地址解析單元(ARU)26以及存儲(chǔ)裝置28。MAC24被配置成能接受許多不同的通信協(xié)議,諸如CSMA/CD、FDDI或ATM通信協(xié)議。當(dāng)讀取自入口MAC24a的數(shù)據(jù)包,控制數(shù)據(jù)包通過交換結(jié)構(gòu)20所必須的轉(zhuǎn)發(fā)控制信息將被前附于和/或后附于那些數(shù)據(jù)包上。
位于入口線路卡上的ARU26較佳地采用最長前綴匹配比較技術(shù)執(zhí)行路由功能。ARU能執(zhí)行無類或基于類的路由功能并能夠支持可變長度子網(wǎng)掩碼(VLSM)。當(dāng)從使用眾所周知的路由協(xié)議(諸如RIP、OSPF或BGP)的網(wǎng)絡(luò)中添加或刪除路由時(shí),可重新配置每個(gè)ARU。存儲(chǔ)裝置28可通過不同類型的隨機(jī)存取存儲(chǔ)器(RAM)實(shí)現(xiàn),比如DRAM、SRAM或內(nèi)容可尋址存儲(chǔ)器(CAM)、一種三重CAM(或TCAM)的掩模CAM的普通形式。存儲(chǔ)器28可包含查找表。如果查找表內(nèi)置于線路卡22上,在進(jìn)入數(shù)據(jù)包上的查找可以無需加載轉(zhuǎn)發(fā)設(shè)備12的中央處理器而局部地進(jìn)行。
圖3示出總查找表的配置或結(jié)構(gòu)。查找表可以視為由分裂引擎或指針單元32處理的總轉(zhuǎn)發(fā)數(shù)據(jù)庫30。數(shù)據(jù)庫30被二分或分裂成多個(gè)子數(shù)據(jù)庫34。下面將結(jié)合圖5-8對(duì)用來將數(shù)據(jù)庫分裂為子數(shù)據(jù)庫34的機(jī)制進(jìn)行說明。另外,將提供實(shí)施例以闡述如何將各子數(shù)據(jù)庫內(nèi)的前綴數(shù)量限定在最大前綴量(或閾值“T”)和最小前綴量(或T/2)之間。因此,圖3示出一種具有T數(shù)量前綴36的子數(shù)據(jù)庫34a以及具有最小數(shù)量前綴36的子數(shù)據(jù)庫34b。不僅對(duì)每個(gè)子數(shù)據(jù)庫中的前綴數(shù)量進(jìn)行控制,還對(duì)數(shù)據(jù)庫30中的子數(shù)據(jù)庫34的數(shù)量進(jìn)行控制。
作為查找表的一部分,或位于查找表之前的是一個(gè)指針單元32。指針單元32可包括一個(gè)具有指針列的指針表。每個(gè)指針包括一個(gè)代表分支或“矛指”向相應(yīng)子數(shù)據(jù)庫的合適的唯一二進(jìn)制序列的二進(jìn)制序列。例如,一個(gè)指針38可指向前綴01*,其中*代表一任意或屏蔽表項(xiàng)。前綴01*是前綴的一種特殊形式,完全不同于數(shù)據(jù)庫前綴的N數(shù)量,前綴01*即指“矛前綴”,由于如范例中所示那樣它起矛指向子數(shù)據(jù)庫34a的功能。如果入站地址(DA)開始于后面跟隨1的0,那么指針38將指向子數(shù)據(jù)庫“D”,子數(shù)據(jù)庫“D”包含有限數(shù)量的、開始于二進(jìn)制序列01并跟隨由受約束范圍的其它二進(jìn)制組合的前綴。另一指針在圖3中被表示為由標(biāo)號(hào)34b所表示的指向子數(shù)據(jù)庫“I”的指針40。子數(shù)據(jù)庫“I”可具有開始于矛前綴1100的二進(jìn)制序列,具有包含子數(shù)據(jù)庫“I”的前綴表項(xiàng)的數(shù)量的后續(xù)二進(jìn)制排列。在圖3范例中表示為01*、1100*以及*的指針組被配置成總地址解析的一部分并存儲(chǔ)于指針單元32的指針表中。
要知道圖2和圖3中所描述的每個(gè)功能單元都可通過硬線電路、應(yīng)用專用集成電路(ASICs)、一個(gè)或更多邏輯電路、處理器或者可進(jìn)行由軟件或硬件(或者軟硬件組合)規(guī)定的一系列運(yùn)算的任何可編程計(jì)算機(jī)部件。重要的是,本發(fā)明不打算被限制在功能單元的具體實(shí)現(xiàn)上,而是不管使用硬件、固件或軟件,只要是能夠?qū)崿F(xiàn)其功能的功能化單元即可。
圖4示出一種轉(zhuǎn)發(fā)設(shè)備12中的范例性存儲(chǔ)分配。如圖2所示,轉(zhuǎn)發(fā)設(shè)備包括多個(gè)與網(wǎng)絡(luò)中的其它轉(zhuǎn)發(fā)設(shè)備進(jìn)行通信的輸入/輸出端口40。在所例示的實(shí)現(xiàn)中,能拜訪數(shù)據(jù)包處理器42以獲取存儲(chǔ)器28中的分裂程序44。當(dāng)在處理器42上執(zhí)行時(shí),查找表的數(shù)據(jù)庫被分裂成具有有界大小和數(shù)量的子數(shù)據(jù)庫。下面將對(duì)分裂數(shù)據(jù)庫的機(jī)制進(jìn)行說明。一旦分裂,處理器42將子數(shù)據(jù)庫配置到查找表46并將指針存入指針表48。當(dāng)進(jìn)行地址搜索時(shí),入站地址將經(jīng)由I/O端口40被發(fā)送到指針表48。
基于在那個(gè)地址的較早的二進(jìn)制比特組中的最長前綴的匹配選擇一合適的指針。該比特組表示矛前綴,并通過對(duì)存儲(chǔ)在指針表中的矛前綴組中最長矛前綴的匹配而選擇指針。所選擇的指針將因此指向查找表46中的適當(dāng)子數(shù)據(jù)庫。將進(jìn)行另一最長前綴匹配操作以確定僅在那個(gè)子數(shù)據(jù)庫中的最長匹配前綴。一旦確定,然后最長匹配前綴將指向相應(yīng)的下一級(jí)跳躍的表項(xiàng)。如圖3所示,查找操作的結(jié)果將被送到選擇器,選擇器隨后選擇能被圖2中交換結(jié)構(gòu)所識(shí)別的下一級(jí)跳躍識(shí)別符。在圖3中下一級(jí)跳躍地址選擇器由標(biāo)號(hào)39表示,存儲(chǔ)在存儲(chǔ)器38中的下一級(jí)跳躍的表由標(biāo)號(hào)49表示。
圖5示出分裂程序44(圖4)如何利用二叉樹50以生成指針表項(xiàng)或矛前綴,以及在每個(gè)子數(shù)據(jù)庫中的前綴。如圖所示,轉(zhuǎn)發(fā)數(shù)據(jù)庫中的前綴地址能由二叉樹數(shù)據(jù)結(jié)構(gòu)50表示。每個(gè)最高節(jié)點(diǎn)表示包括多個(gè)1和多個(gè)0的二進(jìn)制字符串。根(R)是由*表示的空字符串。兩個(gè)指針起始于每個(gè)節(jié)點(diǎn)。第一指針由當(dāng)前二進(jìn)制字符串加0后構(gòu)成,而第二字符串由當(dāng)前二進(jìn)制字符串加1后構(gòu)成。
為將轉(zhuǎn)發(fā)數(shù)據(jù)庫二分成有界的子數(shù)據(jù)庫,這里提供了一個(gè)范例。如范例所示,轉(zhuǎn)發(fā)數(shù)據(jù)庫由300個(gè)前綴組成,或者也可稱為N個(gè)前綴。開始于300個(gè)前綴的空節(jié)點(diǎn)或根節(jié)點(diǎn)R,60個(gè)前綴在它們的較高有效比特位置處以0開始,而240在較高有效比特位置處以二進(jìn)制的1開始。因此,節(jié)點(diǎn)A將具有60個(gè)前綴而節(jié)點(diǎn)B具有240個(gè)前綴。由于不再存在任何關(guān)聯(lián)于根節(jié)點(diǎn)的前綴,通過在那里圖示“×”而刪去數(shù)字300。
在另一范例使用中,可能要求確保在任何子數(shù)據(jù)庫中不超過50個(gè)前綴。因此,由于節(jié)點(diǎn)A和B的每個(gè)包含超過50個(gè)前綴,兩節(jié)點(diǎn)都必須進(jìn)一步分裂。節(jié)點(diǎn)A前綴可能包括與具有0值的下一個(gè)二進(jìn)制比特關(guān)聯(lián)的12個(gè)前綴以及與具有1二進(jìn)制值的下一個(gè)比特關(guān)聯(lián)的48個(gè)前綴。由于節(jié)點(diǎn)D現(xiàn)在不超過T=50個(gè)前綴,可以說節(jié)點(diǎn)D表示子數(shù)據(jù)庫和指針,該指針指向具有經(jīng)存儲(chǔ)的01*二進(jìn)制序列的節(jié)點(diǎn)D。用于節(jié)點(diǎn)D的矛前綴因此為01*,由于前綴數(shù)量小于T并且如下所述那樣前綴數(shù)量大于T/2,因此節(jié)點(diǎn)D成為子數(shù)據(jù)庫。在較高有效比特位置01處產(chǎn)生比較的掩碼操作將地址指向包含48個(gè)前綴的子數(shù)據(jù)庫D,在這之上必須進(jìn)行附加的最長前綴匹配。
除了要求進(jìn)一步進(jìn)行二分的節(jié)點(diǎn)A的前綴,節(jié)點(diǎn)B的前綴同樣必須經(jīng)歷一次分裂。8個(gè)前綴可能關(guān)聯(lián)于下一個(gè)為0的比特值,而232個(gè)前綴可能關(guān)聯(lián)于下一個(gè)為1的比特值。因此如圖所示,節(jié)點(diǎn)F還必須進(jìn)一步分裂成節(jié)點(diǎn)G和H。由于所有節(jié)點(diǎn)都具有超過最大數(shù)量的前綴(比如,該范例中所示的節(jié)點(diǎn)G具有70個(gè)前綴而節(jié)點(diǎn)H具有162個(gè)前綴),節(jié)點(diǎn)G以及節(jié)點(diǎn)H都必須進(jìn)一步分裂。在進(jìn)一步分裂后,節(jié)點(diǎn)G產(chǎn)生節(jié)點(diǎn)I和節(jié)點(diǎn)J,然后其中每個(gè)節(jié)點(diǎn)可能具有少于前綴最大受約束前綴的數(shù)量(比如,所示節(jié)點(diǎn)I具有28個(gè)前綴而節(jié)點(diǎn)J具有42個(gè)前綴)。為指向節(jié)點(diǎn)I處的子數(shù)據(jù)庫和節(jié)點(diǎn)J處的子數(shù)據(jù)庫,矛前綴指針必須作為1100*和1101*存儲(chǔ)在指針表中。如所示那樣在節(jié)點(diǎn)K上必須發(fā)生進(jìn)一步分裂,直到所產(chǎn)生諸節(jié)點(diǎn)具有不大于最大前綴表項(xiàng)數(shù)量,在該范例中為50。由此,從具有157個(gè)前綴的節(jié)點(diǎn)K中,34個(gè)前綴可生成于節(jié)點(diǎn)O中、38個(gè)前綴可生成于節(jié)點(diǎn)Q中、42個(gè)前綴可生成于節(jié)點(diǎn)S中、43前綴可生成于節(jié)點(diǎn)N中。
導(dǎo)致其小于最大邊界的前綴的節(jié)點(diǎn)被視為葉節(jié)點(diǎn)。因此,在該范例中的葉節(jié)點(diǎn)包括C、D、E、I、J、O、Q、S、N和L。然而,不是所有葉節(jié)點(diǎn)都包含子數(shù)據(jù)庫。某些葉節(jié)點(diǎn)可能包含小于最小量的數(shù)量的前綴。例如,前綴的最小數(shù)量可能是T/2,或在該范例中為25,如圖5所示,作為分裂程序的結(jié)果,每個(gè)節(jié)點(diǎn)C、E和L均具有小于25的前綴數(shù)量。
為優(yōu)化最長匹配前綴操作,要求將包含少于最小邊界的前綴的節(jié)點(diǎn)合并入二進(jìn)制鏈中。如所示的那樣,節(jié)點(diǎn)C中的12個(gè)前綴可向上合并到節(jié)點(diǎn)A中。然而,由于節(jié)點(diǎn)A的前綴將向下傳送到節(jié)點(diǎn)C和D,因此節(jié)點(diǎn)A不包含任何前綴。由于節(jié)點(diǎn)A因?yàn)楹喜⒉僮鞫哂猩儆诳稍试S前綴最小數(shù)量的前綴,所以必須進(jìn)行附加的合并。如第二虛線所表示的那樣,從節(jié)點(diǎn)A到根節(jié)點(diǎn)必須在此經(jīng)歷一次向上合并。同樣的合并操作發(fā)生于從節(jié)點(diǎn)E到節(jié)點(diǎn)B并從節(jié)點(diǎn)B到根節(jié)點(diǎn)R。在節(jié)點(diǎn)L中的前綴同樣由虛線表示到節(jié)點(diǎn)H、節(jié)點(diǎn)F然后到節(jié)點(diǎn)B的向上合并。如果來自節(jié)點(diǎn)E的前綴數(shù)量與來自節(jié)點(diǎn)L的前綴數(shù)量組合后超過25,那么組合操作將終止于節(jié)點(diǎn)B。代替的,節(jié)點(diǎn)E中的8個(gè)前綴和節(jié)點(diǎn)L中的5個(gè)前綴組合后不會(huì)超過25,因此必須向上合并到根節(jié)點(diǎn)R,在那里它們與來自節(jié)點(diǎn)C的12個(gè)前綴組合。盡管向上合并到根節(jié)點(diǎn)R的前綴的總數(shù)等于最小值25,即使總數(shù)小于25,根節(jié)點(diǎn)組成對(duì)合并操作的例外。因此,如果少于25個(gè)前綴向上合并到根節(jié)點(diǎn),從具有空指針的根節(jié)點(diǎn)開始不再需要發(fā)生進(jìn)一步的向上合并。
作為分裂操作以及后續(xù)合并操作的結(jié)果,圖5的二叉樹50生成具有有界子數(shù)據(jù)庫的8個(gè)節(jié)點(diǎn)。節(jié)點(diǎn)D、I、J、O、Q、S、N和R的每個(gè)子數(shù)據(jù)庫中的前綴數(shù)量被表示在每個(gè)節(jié)點(diǎn)的右面,指向子數(shù)據(jù)庫的指針表內(nèi)的節(jié)點(diǎn)表項(xiàng)被表示在各節(jié)點(diǎn)下面的括號(hào)中。在所示范例中8個(gè)子數(shù)據(jù)庫具有不大于T個(gè)的前綴以及不小于T/2個(gè)的前綴。T能被選擇為取決于需要優(yōu)化地進(jìn)行最長前綴匹配的二分?jǐn)?shù)目的任何預(yù)定數(shù)。另外,子數(shù)據(jù)庫的數(shù)量被選擇為不大于2N/T+1且不小于N/T。在所示范例中2N/T+1=600/50+1或13。另外N/T=300/50或6。由于生成了8個(gè)子目錄,8落在6-13的邊界內(nèi)。
現(xiàn)在參閱圖6,它示出了分裂程序的進(jìn)一步細(xì)節(jié)。圖6示出圖4中分裂程序所使用的步驟順序。這些步驟,特別地描述了分裂程序的分裂階段。圖7示出分裂程序的合并階段。在分裂階段中,分裂程序開始于步驟60并向下傳到樹或結(jié)(trie)。在步驟62檢查較高有效比特位置的值,而如步驟64所示,與關(guān)聯(lián)于的下一節(jié)點(diǎn)的位置處的0和1值相對(duì)應(yīng)的前綴向下遍歷結(jié)(tire)。如判決框66所示,對(duì)產(chǎn)生于分裂步驟64的每個(gè)節(jié)點(diǎn)進(jìn)行檢查以確定那個(gè)節(jié)點(diǎn)中的前綴是否小于或等于前綴數(shù)量的閾值T。如果是,分裂操作終止且前進(jìn)至結(jié)束步驟74。如果不是,如步驟70所示檢查下一個(gè)二進(jìn)制值并在此分裂與下一對(duì)節(jié)點(diǎn)相關(guān)聯(lián)的前綴。然后由判決框72檢查每個(gè)結(jié)果節(jié)點(diǎn)中的前綴數(shù)量,觀察該數(shù)量是否小于或等于閾值數(shù)T。如果是,分裂階段將終止。如果不是,類似于步驟62-68,步驟68-72將被重復(fù)直到所有節(jié)點(diǎn)產(chǎn)生小于或等于閾值T的前綴數(shù)量。下面的偽代碼表示分裂程序的分裂階段,其中矛表項(xiàng)(SE)表示指向包含有界數(shù)量前綴的節(jié)點(diǎn)(即子數(shù)據(jù)庫)的指針,其中Tsplit等于T
Algorithm Split(R,Tsplit)ListPending={R}While(ListPending is non-empty)<!-- SIPO <DP n="10"> --><dp n="d10"/>{Remove node A from ListPendingn=|subtrie(A)|If(n>Tsplit){/*split A */Put A’s left child(if non-null)and right child(if non-null)in ListPending}}else{mark node A as a candidate-SE}/*end of Algorithm Split()*/
圖7示出分裂程序的合并步驟,在分裂操作終止步驟74后開始。合并階段開始于步驟76,通過查找每個(gè)包含被分裂前綴的節(jié)點(diǎn)。如果節(jié)點(diǎn)包含例如小于T/2的前綴,如判決框78所示,該節(jié)點(diǎn)必須向上合并。然而,如果每個(gè)節(jié)點(diǎn)都包含超過最小值門限例如T/2的前綴數(shù),如步驟84所示,合并操作將終止。否則,合并操作前進(jìn)至步驟80。如判決樹82所示那樣對(duì)下一后續(xù)節(jié)點(diǎn)重復(fù)判決樹78,直到所有節(jié)點(diǎn)中的前綴數(shù)量被檢查以保證那些前綴不少于最小邊界值。最后將檢查所有的節(jié)點(diǎn)并結(jié)束合并操作。下面內(nèi)容表示合并操作的偽代碼,其中Tmerge在范例中等于T/2。
Algorithm MergeUsingRecursion(R,Tmerge)
L=RecurseMerge(R,Tmerge);
If(L is non-empty[i.e.,non-zero])make R an SE and L its LSN.
/*end of Algorithm MergeUsingRecursion */
/*The following recursive function is used in the above algorithm.-Please rernove all instances
of[]since they are not relevant in this context */
Function List[int]RecurseMerge(A,Tmerge)
{
If(A is NULL)return NULL
;
If(A is already marked candidate-SE)
{
if(|subtrie(A)|≥Tmerge){mark A as an SE;return NULL
;}
else{return A[1];}
}
L1=RecurseMerge(A->leftChild,Tmerge);
L2=RecurseMerge(A->rightChild,Tmerge);
L=L1+L2;/*list concatenation operation[or integer addition operation in the case of ints]*/
If(A has a prefix){ret=({A}+L)[1+L]}
else{ret=L;}
if(ret≥Tmerge)
{
/* guaranteed that ret<=2*Tmerge-1,which is<=T if Tmerge=「T/2
*/
mark A as an SE,and L its LSN;
return NULL
;
}
else return(ret);
/* end of algorithm RecurseMerge()*/
一旦分裂程序結(jié)束分裂和合并階段而指針表和查找表被恰當(dāng)?shù)貙懭牒吞畛浜?,即可進(jìn)行查找操作。如果在判決框96中未發(fā)現(xiàn)匹配,則必須獲取與獲得自塊94的指針存儲(chǔ)在一起的事先計(jì)算的迄今為止最長匹配。圖8示出一種可通過在不管是指針查找還是子數(shù)據(jù)庫查找中獲取有用動(dòng)作而進(jìn)行查找的方法。將T設(shè)得更大將減少轉(zhuǎn)發(fā)數(shù)據(jù)庫中子數(shù)據(jù)庫的數(shù)量。T能夠被設(shè)定為任何所希望的值,從而獲得特定的前綴匹配特性,如較高搜索速度、較低存儲(chǔ)要求、較少預(yù)處理時(shí)間以及較少更新時(shí)間。因此對(duì)T的調(diào)整能在確保最壞情況下搜索的同時(shí)對(duì)搜索機(jī)制呈現(xiàn)出可縮放性和可適應(yīng)性。
查找開始于步驟90并如圖92所示通過在指針表中執(zhí)行最長匹配前綴搜索而進(jìn)行。如步驟94所示,作為最長前綴匹配結(jié)果的指針將被選擇以指向一個(gè)特定的子數(shù)據(jù)庫,如步驟96所示,所選擇的子數(shù)據(jù)庫經(jīng)受最長匹配前綴搜索以確定匹配于入站地址前綴的前綴。如步驟98所示,一旦發(fā)生匹配,查找操作對(duì)該地址終止。
用于在指針表中執(zhí)行最長匹配操作的機(jī)制,后跟子數(shù)據(jù)庫中最長匹配前綴可產(chǎn)生掩碼操作的結(jié)果,開始于高有效比特位置并向下繼續(xù)二進(jìn)制格式到低有效比特位置。因此直到匹配發(fā)生前,掩碼長度可被抽選或減短。任何形式的掩碼以及任何公知的最長前綴匹配技術(shù)都可能使用,所有一切都包含在圖8的塊92和96中。
在上面的說明中,已結(jié)合特別實(shí)施例對(duì)本發(fā)明進(jìn)行了說明,然而,顯而易見的是本領(lǐng)域內(nèi)技術(shù)人員可以作出不脫離本發(fā)明更廣泛的精神和范圍的各種修正和改變。因此說明書和說明書附圖將被認(rèn)為是闡述性的,而沒有限制性意思。
權(quán)利要求
1.一種形成轉(zhuǎn)發(fā)數(shù)據(jù)庫的方法,包括
將數(shù)據(jù)庫中的N數(shù)量的前綴切割成多個(gè)有界的、正比于N且反比于T的子數(shù)據(jù)庫,其中,每個(gè)子數(shù)據(jù)庫具有不大于T的前綴數(shù)量,T小于N;以及
形成具有關(guān)聯(lián)的、指向多個(gè)數(shù)據(jù)庫中的一個(gè)的矛前綴的一組指針。
2.如權(quán)利要求1所述方法,其特征在于,所述分裂包括開始于前綴N數(shù)量的最高有效比特,重復(fù)地分裂前綴的N數(shù)量以形成在根節(jié)點(diǎn)和多個(gè)葉節(jié)點(diǎn)之間擴(kuò)展的樹,其中每個(gè)葉節(jié)點(diǎn)具有不超過T數(shù)量的前綴。
3.如權(quán)利要求2所述方法,其特征在于,還包括將具有小于前綴最小數(shù)量的葉節(jié)點(diǎn)合并到比具有小于前綴最小數(shù)量的葉節(jié)點(diǎn)更加靠近根節(jié)點(diǎn)的葉節(jié)點(diǎn)內(nèi)。
4,如權(quán)利要求3所述方法,其特征在于,所述前綴的最小數(shù)量為T/2。
5.如權(quán)利要求3所述方法,其特征在于,子數(shù)據(jù)庫的數(shù)量被限定在N/T和(2N/T)+1之間。
6.如權(quán)利要求1所述方法,其特征在于,所述形成包括開始于N數(shù)量前綴的高有效比特,添加低有效比特值,直到達(dá)到每個(gè)子數(shù)據(jù)庫的高有效比特。
7.如權(quán)利要求1所述方法,其特征在于,還包括將每個(gè)子數(shù)據(jù)庫安排到計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的獨(dú)立塊或部分中。
8.如權(quán)利要求1所述方法,其特征在于,還包括將每個(gè)子數(shù)據(jù)庫單獨(dú)地配置到相同物理塊的可訪問部分中。
9.如權(quán)利要求1所述方法,其特征在于,還包括在指針組和子數(shù)據(jù)庫組之間遞歸地形成第二指針組,所述子數(shù)據(jù)庫組被指針組指向,而指針組指向相應(yīng)的子數(shù)據(jù)庫組中的一個(gè)。
10.由權(quán)利要求1所述方法所解釋的存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的查找表。
11.用來執(zhí)行權(quán)利要求1所述方法的、位于路由器或交換機(jī)、路由器或交換機(jī)的輸入/輸出端口的線路卡或者路由器或交換機(jī)的交換結(jié)構(gòu)中的計(jì)算機(jī)或應(yīng)用專用集成電路。
12.一種將在具有N數(shù)量前綴的轉(zhuǎn)發(fā)數(shù)據(jù)庫中一前綴定位的方法,包括維護(hù)具有一組指向各子數(shù)據(jù)庫組的矛前綴的指針表;在指針表的矛前綴中尋找最長矛前綴匹配;從被指針表中的最長匹配矛前綴指向的一組子數(shù)據(jù)庫中選擇前綴子的數(shù)據(jù)庫;以及
在所選擇的子數(shù)據(jù)庫中尋找最長前綴匹配。
13.如權(quán)利要求12所述方法,其特征在于,尋找、選擇和尋找步驟是以軟件或硬件實(shí)現(xiàn)的。
14.如權(quán)利要求12所述方法,其特征在于,所述選擇包括在子數(shù)據(jù)庫組中選擇前綴數(shù)量不超過T的子數(shù)據(jù)庫,其中T小于N。
15.如權(quán)利要求12所述方法,其特征在于,所述選擇包括僅訪問包含由指針表中最長匹配矛前綴指向的子數(shù)據(jù)庫的存儲(chǔ)器的一部分,而不訪問存儲(chǔ)器任何其它部分,以減少存儲(chǔ)器中的功耗并增加將前綴定位到數(shù)據(jù)庫中的速度。
16.如權(quán)利要求15所述方法,其特征在于,所述存儲(chǔ)器的一部分是多個(gè)存儲(chǔ)塊中的一存儲(chǔ)塊。
17.如權(quán)利要求12所述方法,其特征在于,所述選擇包括僅訪問包含由指針表中最長匹配矛前綴指向的子數(shù)據(jù)庫的存儲(chǔ)器的一部分,而不訪問存儲(chǔ)器任何其它部分,通過僅將用于指針表中的比特以及用于子數(shù)據(jù)庫的最低有效比特存儲(chǔ)到存儲(chǔ)器中以提高存儲(chǔ)性能。
18.如權(quán)利要求17所述方法,其特征在于,所述存儲(chǔ)器的一部分是多個(gè)存儲(chǔ)塊中的一存儲(chǔ)塊。
19.如權(quán)利要求12所述方法,其特征在于,所述地址包括對(duì)應(yīng)于數(shù)據(jù)分組的目的地地址。
20.如權(quán)利要求12所述方法,其特征在于,所述地址包括互聯(lián)網(wǎng)協(xié)議(IP)地址。
21.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括分裂程序,當(dāng)由處理器執(zhí)行時(shí)
(i)形成具有從根節(jié)點(diǎn)向多個(gè)葉節(jié)點(diǎn)伸展的分枝的樹;
(ii)在每個(gè)葉節(jié)點(diǎn)上形成具有少于T個(gè)前綴的子數(shù)據(jù)庫,其葉節(jié)點(diǎn)以及根節(jié)點(diǎn)和葉節(jié)點(diǎn)之間的節(jié)點(diǎn)的累積數(shù)量具有N個(gè)前綴;
包括一組對(duì)應(yīng)于分枝的指針的指針表;以及
在每個(gè)葉節(jié)點(diǎn)上包含子數(shù)據(jù)庫的查找表。
22.如權(quán)利要求21所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,每個(gè)葉節(jié)點(diǎn)上的子數(shù)據(jù)庫的至少一部分被包含在存儲(chǔ)器的各獨(dú)立部分中。
23.如權(quán)利要求22所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,存儲(chǔ)器包括內(nèi)容可尋址存儲(chǔ)器(CAM或TCAM)。
24.如權(quán)利要求22所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,存儲(chǔ)器包括隨機(jī)存取存儲(chǔ)器(DRAM或SRAM)。
25.如權(quán)利要求21所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,通過僅訪問由具有最長匹配矛前綴的指針組中的一個(gè)指向的存儲(chǔ)器部分而將一個(gè)地址定位到查找表中。
26.如權(quán)利要求21所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,指針組和相應(yīng)的多個(gè)子數(shù)據(jù)庫被限定在N和N/T之間。
27.如權(quán)利要求21所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,指針組和相應(yīng)的多個(gè)子數(shù)據(jù)庫被限定在2N/T和N/T之間。
28.如權(quán)利要求21所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,除指針組外,指針表還存儲(chǔ)一個(gè)地址的初始最長匹配矛前綴,而查找表存儲(chǔ)所述地址的后續(xù)的最長匹配數(shù)據(jù)庫前綴。
全文摘要
提供一種方法、設(shè)備和存儲(chǔ)介質(zhì)產(chǎn)品以形成轉(zhuǎn)發(fā)數(shù)據(jù)庫并使用所形成的數(shù)據(jù)庫更有效、快速地沿計(jì)算機(jī)網(wǎng)絡(luò)路由數(shù)據(jù)包。轉(zhuǎn)發(fā)數(shù)據(jù)庫被配置成多個(gè)子數(shù)據(jù)庫。每個(gè)子數(shù)據(jù)庫由指針表中的指針?biāo)赶?。?dāng)對(duì)入站地址進(jìn)行最長匹配搜索時(shí),可用最長前綴匹配算法以在存儲(chǔ)于指針表中的規(guī)定“矛前綴”中尋找最長匹配。在找到最長匹配后,指針表將執(zhí)行由矛前綴所指向的子數(shù)據(jù)庫中的下一次搜索。另一最長匹配搜索可對(duì)由指針?biāo)x擇子數(shù)據(jù)庫中的數(shù)據(jù)庫前綴(或簡稱“前綴”)而進(jìn)行。僅搜索感興趣的數(shù)據(jù)庫,不對(duì)其它數(shù)據(jù)庫進(jìn)行訪問。使用前驅(qū)指針,被優(yōu)化地約束大小和數(shù)量的子數(shù)據(jù)庫保證功耗被限制在僅被訪問的子數(shù)據(jù)庫內(nèi),由于僅尋找感興趣的子數(shù)據(jù)庫,可實(shí)現(xiàn)更高速度的查找操作。
文檔編號(hào)G06F17/30GK1784678SQ20048000847
公開日2006年6月7日 申請(qǐng)日期2004年3月26日 優(yōu)先權(quán)日2003年3月28日
發(fā)明者S·文卡塔查瑞, P·古普塔 申請(qǐng)人:柏樹半導(dǎo)體公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
临西县| 湖北省| 玉山县| 无极县| 盐边县| 凤城市| 田林县| 遵化市| 龙川县| 沂源县| 博乐市| 扎囊县| 东港市| 商城县| 青神县| 北辰区| 奉新县| 垫江县| 湟源县| 塔河县| 庆元县| 东阳市| 吉安县| 图们市| 宁海县| 抚松县| 旬邑县| 夏津县| 盐山县| 开远市| 周宁县| 青海省| 罗山县| 玛曲县| 延庆县| 保亭| 左贡县| 宜城市| 安宁市| 桐柏县| 深水埗区|