国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      存儲(chǔ)、查找路由表的方法及裝置的制作方法

      文檔序號(hào):7696702閱讀:179來(lái)源:國(guó)知局

      專(zhuān)利名稱(chēng)::存儲(chǔ)、查找路由表的方法及裝置的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及通信
      技術(shù)領(lǐng)域
      ,尤其涉及一種存儲(chǔ)、查找路由表的方法及裝置。
      背景技術(shù)
      :為了在用戶(hù)眾多的互聯(lián)網(wǎng)絡(luò)中完成由一地址到另一個(gè)地址的路由,通常將各種傳輸路徑的相關(guān)數(shù)據(jù)存儲(chǔ)在一起形成路由表,供進(jìn)行路由時(shí)查詢(xún)。無(wú)類(lèi)型域間路由(CIDR,ClasslessInter-DomainRouting)是一種比較常用的路由表結(jié)構(gòu)。在使用CIDR結(jié)構(gòu)形成路由表時(shí),一個(gè)網(wǎng)際協(xié)議(IP,InternetProtocol)網(wǎng)絡(luò)使用一個(gè)前綴代表,這個(gè)前綴通常由IP網(wǎng)絡(luò)的IP地址和和標(biāo)識(shí)其有效位的掩碼復(fù)合表示,例如"111*"表示IP地址為"111",有效位為三位,在存儲(chǔ)時(shí)通常使用多比特樹(shù)(Multi-BitTire)的方式進(jìn)行存儲(chǔ),將在地址空間中相互鄰近、路由相同的2的整數(shù)次冪個(gè)子網(wǎng)的路由表?xiàng)l目合并成一條路徑,作為一個(gè)表項(xiàng)存儲(chǔ)于路由表中,在進(jìn)行查找時(shí)可以依照路徑進(jìn)行查找?,F(xiàn)以實(shí)例對(duì)存儲(chǔ)的方法進(jìn)行描述,假設(shè)有9個(gè)前綴"PI""P2""P3""P4""P5""P6""P7""P8""P9",前綴標(biāo)號(hào)與前綴值之間的關(guān)系如表1所示前纟毀才示號(hào)前綴值PI承P2P300*P4101*P5P61000*P711101*<table>tableseeoriginaldocumentpage7</column></row><table>表l、前綴標(biāo)號(hào)與前綴值之間的關(guān)系表基本的二叉樹(shù)搜索一步檢查1個(gè)比特,若相應(yīng)的地址前綴最長(zhǎng)為M,則樹(shù)的深度為M。如果一次檢查K個(gè)比特則樹(shù)的深度可減少到M/K,這樣樹(shù)的內(nèi)部結(jié)點(diǎn)包含的匹配項(xiàng)增加為2的K次冪。這樣的樹(shù)被稱(chēng)為2的K次冪分支樹(shù),樹(shù)的最大層數(shù)為M/K。查表算法在每個(gè)結(jié)點(diǎn)處檢查的比特?cái)?shù)為K,也就被稱(chēng)為樹(shù)的步長(zhǎng)。假設(shè)該Multi-BitTire的步長(zhǎng)為3,則樹(shù)中每個(gè)節(jié)點(diǎn)將包含2的3次冪項(xiàng),即8項(xiàng),其結(jié)構(gòu)如表2所示匹配項(xiàng)下一級(jí)節(jié)點(diǎn)指針<table>tableseeoriginaldocumentpage7</column></row><table>表2、步長(zhǎng)為3的節(jié)點(diǎn)結(jié)構(gòu)其中前綴匹配項(xiàng)(Prefix)是指能與該項(xiàng)匹配的前綴,例如,"PI"的值為說(shuō)明"PI"可以與任何一項(xiàng)匹配,假若該節(jié)點(diǎn)為根節(jié)點(diǎn),初始記錄為空時(shí),從"000"到"111"都是"PI"的匹配項(xiàng);"P2"的值為"1*",說(shuō)明"P2"的IP地址為"1",有效位為1位,任何以'T,開(kāi)頭的項(xiàng)都可以與"P2"匹配,假若該節(jié)點(diǎn)為根節(jié)點(diǎn),從"100"到"111"都是"P2"的匹配項(xiàng),此時(shí)若已存入"Pl,,,則在存入"P2"時(shí),從"100"到"111"都將被"P2"覆蓋;其它有效位在3位以?xún)?nèi)的前綴"P3""P4""P5"存儲(chǔ)方式可以依此類(lèi)推,"000""001"為"P3"的匹配項(xiàng),"101"為"P4"的匹配項(xiàng),"111"為"P5"的匹配項(xiàng),存入"P1""P2""P3""P4""P5"的節(jié)點(diǎn)結(jié)構(gòu)如表3所示<table>tableseeoriginaldocumentpage8</column></row><table>表3、存入"P1""P2',"P3""P4""P5"的節(jié)點(diǎn)結(jié)構(gòu)表2、表3中"下一級(jí)節(jié)點(diǎn)指針(Ptr)"—欄存儲(chǔ)的是指向下一級(jí)節(jié)點(diǎn)的指針,這是由于在前綴的有效位超過(guò)節(jié)點(diǎn)步長(zhǎng)時(shí),需要建立下一級(jí)節(jié)點(diǎn),查找時(shí)根據(jù)這個(gè)指針就可以尋找到下一級(jí)節(jié)點(diǎn),以"P6""P7""P8""P9"為例,"P6"的值為"1000*",說(shuō)明"P6"的有效值為4位,在步長(zhǎng)為3的根節(jié)點(diǎn)中尋找不到匹配項(xiàng),因此在存入"P6"時(shí)需要建立下一級(jí)節(jié)點(diǎn),根節(jié)點(diǎn)中"100"與"P6"的前三位匹配,因此要在"100"的"下一級(jí)節(jié)點(diǎn)指針,,一欄存入新建立的下一級(jí)節(jié)點(diǎn)指針,該新建立的下一級(jí)節(jié)點(diǎn)中,以"0"開(kāi)頭的表項(xiàng)都可以與"P6,'匹配,存入"P6"的節(jié)點(diǎn)結(jié)構(gòu)如表4所示<table>tableseeoriginaldocumentpage8</column></row><table><table>tableseeoriginaldocumentpage9</column></row><table>表4、存入"P6"的節(jié)點(diǎn)結(jié)構(gòu)"P7"的值為"11101*,,,"P8"的值為"111001*",其前3位值相同,都是"111",因此可以為"P7""P8"建立一個(gè)下一級(jí)節(jié)點(diǎn),在根節(jié)點(diǎn)"111"的"下一級(jí)節(jié)點(diǎn)指針,,一欄存入新建立的下一級(jí)節(jié)點(diǎn)指針,該新建立的下一級(jí)節(jié)點(diǎn)中,以"01"開(kāi)頭的"010""011"可與"P7"匹配,"001"可與"P8"匹配,存入"P7""P8"的節(jié)點(diǎn)結(jié)構(gòu)如表5所示<table>tableseeoriginaldocumentpage9</column></row><table>表5、存入"P7""P8"的節(jié)點(diǎn)結(jié)構(gòu)"P9"的值為"1000011*,,,有效值為7位,是節(jié)點(diǎn)步長(zhǎng)"3"的2倍多,因此在根節(jié)點(diǎn)下一級(jí)節(jié)點(diǎn)的基礎(chǔ)上還需要再建立一級(jí)新的節(jié)點(diǎn),建立時(shí),看現(xiàn)有的節(jié)點(diǎn)有沒(méi)有可以與其前6位相匹配的項(xiàng),若有則將新建立的節(jié)點(diǎn)指針填入該項(xiàng)"下一級(jí)節(jié)點(diǎn)指針,,一欄,若無(wú)則在根節(jié)點(diǎn)與其前3位相匹配項(xiàng)的"下一級(jí)節(jié)點(diǎn)指針,,一欄填入新建立的節(jié)點(diǎn)指針,本例中,表4所示存入"P6"的節(jié)點(diǎn)"001"可與"P9"前6位匹配,因此在該項(xiàng)的"下一級(jí)節(jié)點(diǎn)指針,,一欄填入新建立的節(jié)點(diǎn)指針,新建立的項(xiàng)以"1"開(kāi)頭的表項(xiàng)都可以與"P9"匹配,存入"P9"的節(jié)點(diǎn)結(jié)構(gòu)如表6所示匹配項(xiàng)下一級(jí)節(jié)點(diǎn)指針<table>tableseeoriginaldocumentpage10</column></row><table>表6、存入"P9"的節(jié)點(diǎn)結(jié)構(gòu)至此,"P1""P2""P3""P4""P5""P6""P7""P8""P9"均已存入步長(zhǎng)為3的Multi-BitTire,該Multi-BitTire完整結(jié)構(gòu)如圖1所示,包括相當(dāng)于表3所示節(jié)點(diǎn)的根節(jié)點(diǎn)、相當(dāng)于表4所示節(jié)點(diǎn)的節(jié)點(diǎn)1、相當(dāng)于表5所示節(jié)點(diǎn)的節(jié)點(diǎn)2、相當(dāng)于表6所示節(jié)點(diǎn)的節(jié)點(diǎn)3。在對(duì)現(xiàn)有技術(shù)的研究和實(shí)踐過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)存在以下問(wèn)題每一個(gè)節(jié)點(diǎn)都需要申請(qǐng)固定大小的存儲(chǔ)空間,而這些節(jié)點(diǎn)的表項(xiàng)大部分時(shí)候都沒(méi)有下一級(jí)節(jié)點(diǎn),即Ptr表項(xiàng)多數(shù)為空,以圖1為例,共有29個(gè)Ptr表項(xiàng)為空,非常浪費(fèi)內(nèi)存資源,而在多數(shù)時(shí)候內(nèi)存資源都是非常緊缺的資源,實(shí)際中的路由表節(jié)點(diǎn)可能多達(dá)上百、上千、或更多個(gè),浪費(fèi)內(nèi)存資源就更多了。
      發(fā)明內(nèi)容本發(fā)明實(shí)施例要解決的技術(shù)問(wèn)題是提供一種形成路由表的方法及裝置,可以減少路由表占用的內(nèi)存資源。為解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例一方面,提供了一種存儲(chǔ)路由表的方法,包括將所述路由表分為下一級(jí)節(jié)點(diǎn)指針部分和匹配項(xiàng)編碼部分保存;在所述下一級(jí)節(jié)點(diǎn)指針部分保存根節(jié)點(diǎn)數(shù)據(jù)和第一級(jí)節(jié)點(diǎn)數(shù)據(jù);其中,所述根節(jié)點(diǎn)數(shù)據(jù)包括具有下一級(jí)節(jié)點(diǎn)指針的根節(jié)點(diǎn)匹配項(xiàng),所述匹配項(xiàng)的根節(jié)點(diǎn)哈希函數(shù)、根節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;使用所述匹配項(xiàng)的根節(jié)點(diǎn)哈希函數(shù)對(duì)所述匹配項(xiàng)第一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,以哈希結(jié)果作為偏移地址在所述根節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向的位置存儲(chǔ)所述第一級(jí)節(jié)點(diǎn)數(shù)據(jù);所述第一級(jí)節(jié)點(diǎn)數(shù)據(jù)包括所述匹配項(xiàng)第一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址,所述匹配項(xiàng)的第一級(jí)節(jié)點(diǎn)哈希函數(shù)、第一級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;所述第一級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針,所述第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針指向所述匹配項(xiàng)編碼部分。另一方面,提供了一種查找路由表的方法,包括根據(jù)存儲(chǔ)路由表的下一級(jí)節(jié)點(diǎn)指針部分直接存儲(chǔ)的長(zhǎng)度,取待查網(wǎng)際協(xié)議地址進(jìn)行直接查找;讀取查找到的哈希函數(shù)、下一級(jí)節(jié)點(diǎn)指針;使用查找到的哈希函數(shù)對(duì)下一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,使用所述下一級(jí)節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù);根據(jù)所述查找結(jié)果讀取匹配項(xiàng)編碼。另一方面,提供了一種存儲(chǔ)路由表的裝置,包括匹配項(xiàng)編碼單元,用于保存路由表的匹配項(xiàng)編碼部分;下一級(jí)節(jié)點(diǎn)指針單元,用于保存根節(jié)點(diǎn)數(shù)據(jù)和第一級(jí)節(jié)點(diǎn)數(shù)據(jù);其中,所述根節(jié)點(diǎn)數(shù)據(jù)包括具有下一級(jí)節(jié)點(diǎn)指針的根節(jié)點(diǎn)匹配項(xiàng),所述匹配項(xiàng)的根節(jié)點(diǎn)哈希函數(shù)、根節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;使用所述匹配項(xiàng)的根節(jié)點(diǎn)哈希函數(shù)對(duì)所述匹配項(xiàng)第一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,以哈希結(jié)果作為偏移地址在所述根節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向的位置存儲(chǔ)所述第一級(jí)節(jié)點(diǎn)數(shù)據(jù);所述第一級(jí)節(jié)點(diǎn)數(shù)據(jù)包括所述匹配項(xiàng)第一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址,所述匹配項(xiàng)的第一級(jí)節(jié)點(diǎn)哈希函數(shù)、第一級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;所述第一級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針,所述第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針指向所述匹配項(xiàng)編碼部分。另一方面,提供了一種查找路由表的裝置,包括直接查找單元,用于根據(jù)存儲(chǔ)路由表的下一級(jí)節(jié)點(diǎn)指針部分直接存儲(chǔ)的長(zhǎng)度,取待查網(wǎng)際協(xié)議地址進(jìn)行直接查找;第一讀取單元,用于讀取查找到的哈希函數(shù)、下一級(jí)節(jié)點(diǎn)指針;哈希查找單元,用于使用查找到的哈希函數(shù)對(duì)下一級(jí)節(jié)點(diǎn)的待查步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,使用所述下一級(jí)節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù);第二讀取單元,用于根據(jù)所述查找結(jié)果讀取匹配項(xiàng)編碼。由以上技術(shù)方案可以看出,由于本發(fā)明實(shí)施方式為路由表的下一級(jí)節(jié)點(diǎn)指針部分單獨(dú)分配存儲(chǔ)空間,使用IP地址的哈希結(jié)果作為偏移地址保存下一級(jí)節(jié)點(diǎn)數(shù)據(jù),只需要保存存在"下一級(jí)節(jié)點(diǎn)指針,,的部分表項(xiàng)相關(guān)數(shù)據(jù),因此使用本發(fā)明實(shí)施方式提供的技術(shù)方案可以減少為空白表項(xiàng)分配的存儲(chǔ)空間,有效減少路由表占用的內(nèi)存資源。圖1為現(xiàn)有技術(shù)Multi-BitTire示意圖2為兩個(gè)實(shí)際中的路由表中節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)的數(shù)量分布圖;圖3為本發(fā)明提供的存儲(chǔ)路由表的方法實(shí)施例存儲(chǔ)結(jié)構(gòu)圖;圖4為本發(fā)明提供的存儲(chǔ)路由表的方法實(shí)施例中節(jié)點(diǎn)結(jié)構(gòu)圖;圖5為本發(fā)明提供的存儲(chǔ)路由表的方法實(shí)施例一的存儲(chǔ)結(jié)構(gòu)圖;圖6為本發(fā)明提供的查找路由表的方法實(shí)施例一流程圖。具體實(shí)施例方式本發(fā)明提供了一種存儲(chǔ)、查找路由表的方法及裝置,可以有效地節(jié)省路由表占用的內(nèi)存資源。在本發(fā)明提供的存儲(chǔ)路由表的方法實(shí)施例中,將路由表分為Prefix和Ptr兩個(gè)部分分別進(jìn)行存儲(chǔ)。在對(duì)目前常見(jiàn)路由表的研究中發(fā)現(xiàn),有下一級(jí)節(jié)點(diǎn)的且下一級(jí)節(jié)點(diǎn)為樹(shù)節(jié)點(diǎn)的節(jié)點(diǎn)在整個(gè)路由表中所占比例非常少,這類(lèi)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)數(shù)目大部分情況下不會(huì)大于64個(gè)?,F(xiàn)以?xún)蓚€(gè)實(shí)際中的路由表進(jìn)行說(shuō)明,圖2是兩個(gè)實(shí)際中的路由表中節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)的數(shù)量分布圖,橫坐標(biāo)是節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)的數(shù)目,縱坐標(biāo)為節(jié)點(diǎn)的數(shù)量,兩條曲線(xiàn)分別對(duì)應(yīng)兩個(gè)實(shí)際中的路由表,步寬為8。由圖2可以看出大量的節(jié)點(diǎn)都只有一個(gè)或兩個(gè)下一級(jí)節(jié)點(diǎn),下一級(jí)節(jié)點(diǎn)多于5個(gè)的節(jié)點(diǎn)所占比例非常少,在此基礎(chǔ)上,本發(fā)明實(shí)施例提供的存儲(chǔ)路由表的方法實(shí)施例提出了使用哈希(HASH)方式存儲(chǔ)指針的方法。由于靠近根節(jié)點(diǎn)的匹配項(xiàng)有下一級(jí)節(jié)點(diǎn)指針的可能性比較大,因此本發(fā)明實(shí)施例提供的存儲(chǔ)路由表的方法實(shí)施例中,按照路由表的實(shí)際情況對(duì)靠近根節(jié)點(diǎn)的匹配項(xiàng)的IP地址不進(jìn)行HASH,通常選擇的范圍為0-8Bit或0-16Bit的匹配項(xiàng)不進(jìn)行HASH,直接進(jìn)行存儲(chǔ),這是由于在常見(jiàn)的路由表中,0-8Bit、甚至0-16Bit的匹配項(xiàng)及其下一級(jí)節(jié)點(diǎn)指針部分占用的空間所占比例并不大,根據(jù)實(shí)際情況,選擇0-3Bit、0-4Bit的匹配項(xiàng)不進(jìn)行HASH也是可以的。在直接存儲(chǔ)的匹配項(xiàng)存在下一級(jí)節(jié)點(diǎn)指針,且該下一級(jí)節(jié)點(diǎn)指針指向的匹配項(xiàng)的IP地址需要經(jīng)過(guò)哈希后存儲(chǔ)的,該直接存儲(chǔ)的匹配項(xiàng)的保存數(shù)據(jù)中就應(yīng)當(dāng)包含該哈希函數(shù),該哈希函數(shù)用于對(duì)該下一級(jí)節(jié)點(diǎn)指針指向的匹配項(xiàng)的IP地址進(jìn)行哈希。由于離根節(jié)點(diǎn)較遠(yuǎn)的匹配項(xiàng)沒(méi)有下一級(jí)節(jié)點(diǎn)指針的可能性比較大,因此本發(fā)明實(shí)施例提供的存儲(chǔ)路由表的方法實(shí)施例中,按照路由表的實(shí)際情況對(duì)離根節(jié)點(diǎn)較遠(yuǎn)的匹配項(xiàng)的IP地址進(jìn)行HASH之后,存儲(chǔ)^^希后的值與下一級(jí)節(jié)點(diǎn)指針,例如,假如選擇的范圍為0-8或0-16Bit的匹配項(xiàng)不進(jìn)行HASH,直接進(jìn)行存儲(chǔ),則將0-8Bit或0-16Bit之后的匹配項(xiàng)的IP地址進(jìn)行HASH之后,再進(jìn)行存儲(chǔ)。由于哈希通常會(huì)存在沖突,為了防止沖突,通常在存儲(chǔ)結(jié)構(gòu)中增加若干個(gè)沖突項(xiàng),根據(jù)實(shí)際情況,以選2個(gè)、或3個(gè)沖突項(xiàng)為宜,以選擇3個(gè)沖突項(xiàng),且有下一級(jí)節(jié)點(diǎn)指針的情況為例,存儲(chǔ)哈希后數(shù)值的數(shù)據(jù)結(jié)構(gòu)如表7所示哈希函凄t(HashFunction)IPHashFunctionIPHashFunctionIP下一級(jí)節(jié)點(diǎn)指針表7、存儲(chǔ)哈希后數(shù)值的數(shù)據(jù)結(jié)構(gòu)其中,表項(xiàng)"HashFunction"存放的是不同的哈希函數(shù);表項(xiàng)"IP"是用來(lái)存儲(chǔ)實(shí)際IP地址的,這是為了防止出現(xiàn)找錯(cuò)的情況。哈希函數(shù)的沖突,既是指不同的值在使用同一哈希函數(shù)哈希后有可能出現(xiàn)相同結(jié)果,例如,以與0x01110000相與為哈希函數(shù),01010011、和01010111在進(jìn)行哈希后得到的結(jié)果都是"101",為了防止沖突,本發(fā)明實(shí)施例提供的存儲(chǔ)路由表的方法實(shí)施例,給出了保留多個(gè)哈希函數(shù)的方法,在出現(xiàn)沖突時(shí),選擇使用其他的哈希函數(shù)進(jìn)行哈希以避免沖突,但是找查找時(shí),仍然有可能找錯(cuò),為防止找錯(cuò),本發(fā)明實(shí)施例提供的存儲(chǔ)路由表的方法實(shí)施例,在存儲(chǔ)哈希后數(shù)值的數(shù)據(jù)結(jié)構(gòu)給出了存儲(chǔ)實(shí)際IP地址的表項(xiàng),查找到對(duì)應(yīng)的^i后再核對(duì)IP地址,IP地址核對(duì)通過(guò)則證明查找正確。根據(jù)實(shí)際情況,IP地址可以取實(shí)際的長(zhǎng)度,例如,步寬為3Bit的取3Bit,步寬為8Bit的取8Bit,也可以取最可能存在差異的Bit位進(jìn)行比較,仍以與0x01110000相與為哈希函數(shù)為例,就可以取第1、5、6、7、8位Bit位的實(shí)際IP地址進(jìn)行比較,以減小數(shù)據(jù)結(jié)構(gòu)大小,或者使用節(jié)省下來(lái)的空間存儲(chǔ)更多的沖突項(xiàng)。以選擇直接存儲(chǔ)0-3Bit的匹配項(xiàng)為例,存儲(chǔ)結(jié)構(gòu)如圖3所示以"*"為0Bit開(kāi)始計(jì),共有4級(jí)匹配項(xiàng)被直接保存,最后一級(jí)匹配項(xiàng)只有000有下一級(jí)節(jié)點(diǎn),因此只有000的下一級(jí)節(jié)點(diǎn)指針指向一個(gè)存儲(chǔ)哈希后數(shù)值的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)中包含"哈希函數(shù)""IP""下一級(jí)節(jié)點(diǎn)指針"?,F(xiàn)以實(shí)例說(shuō)明具體的存儲(chǔ)方法,假設(shè)要存儲(chǔ)的路由表長(zhǎng)度為32Bit,以Multi-BitTire存儲(chǔ)時(shí),步長(zhǎng)為8,共有4級(jí),其節(jié)點(diǎn)結(jié)構(gòu)如圖4所示根節(jié)點(diǎn)401中可儲(chǔ)存28個(gè)匹配項(xiàng),其中只有1個(gè)匹配項(xiàng)有下一級(jí)節(jié)點(diǎn),該匹配項(xiàng)的下一級(jí)節(jié)點(diǎn)指針指向第一級(jí)節(jié)點(diǎn)402;第一級(jí)節(jié)點(diǎn)402同樣可儲(chǔ)存28個(gè)匹配項(xiàng),其中有2個(gè)匹配項(xiàng)有下一級(jí)節(jié)點(diǎn),這2個(gè)匹配項(xiàng)的下一級(jí)節(jié)點(diǎn)指針?lè)謩e指向第二級(jí)節(jié)點(diǎn)403和第二級(jí)節(jié)點(diǎn)404;第二級(jí)節(jié)點(diǎn)403同樣可儲(chǔ)存28個(gè)匹配項(xiàng),但是其中沒(méi)有任何一個(gè)匹配項(xiàng)有下一級(jí)節(jié)點(diǎn),第二級(jí)節(jié)點(diǎn)404同樣可儲(chǔ)存28個(gè)匹配項(xiàng),其中只有1個(gè)匹配項(xiàng)有下一級(jí)節(jié)點(diǎn),該匹配項(xiàng)的下一級(jí)節(jié)點(diǎn)指針指向第三級(jí)節(jié)點(diǎn)405;第三級(jí)節(jié)點(diǎn)405同樣可儲(chǔ)存28個(gè)匹配項(xiàng),但是其中沒(méi)有任何一個(gè)匹配項(xiàng)有下一級(jí)節(jié)點(diǎn)。由以上描述可知,第一級(jí)節(jié)點(diǎn)402、第二級(jí)節(jié)點(diǎn)403、第二級(jí)節(jié)點(diǎn)404、第三級(jí)節(jié)點(diǎn)405共為28x4個(gè)匹配項(xiàng)申請(qǐng)并預(yù)留了空間,其中只有3個(gè)匹配項(xiàng)有下一級(jí)節(jié)點(diǎn),既只有3個(gè)"下一級(jí)節(jié)點(diǎn)指針"表項(xiàng)不為空,有2、4-3個(gè)匹配項(xiàng)的"下一級(jí)節(jié)點(diǎn)指針,,表項(xiàng)占用的空間被浪費(fèi)了,再加上并不是所有位置都有相匹配項(xiàng)的匹配項(xiàng),"匹配項(xiàng)"表項(xiàng)的浪費(fèi)也非常嚴(yán)重。在本發(fā)明提供的存儲(chǔ)路由表的方法實(shí)施例中,將所述路由表分為下一級(jí)節(jié)點(diǎn)指針部分和匹配項(xiàng)編碼部分保存;在所述下一級(jí)節(jié)點(diǎn)指針部分保存根節(jié)點(diǎn)數(shù)據(jù)和第一級(jí)節(jié)點(diǎn)數(shù)據(jù);其中,所述根節(jié)點(diǎn)數(shù)據(jù)包括具有下一級(jí)節(jié)點(diǎn)指針的根節(jié)點(diǎn)匹配項(xiàng),所述匹配項(xiàng)的根節(jié)點(diǎn)哈希函數(shù)、根節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;使用所述匹配項(xiàng)的根節(jié)點(diǎn)哈希函數(shù)對(duì)所述匹配項(xiàng)第一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,以哈希結(jié)果作為偏移地址在所述根節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向的位置存儲(chǔ)所述第一級(jí)節(jié)點(diǎn)數(shù)據(jù);所述第一級(jí)節(jié)點(diǎn)數(shù)據(jù)包括所述匹配項(xiàng)第一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址,所述匹配項(xiàng)的第一級(jí)節(jié)點(diǎn)哈希函數(shù)、第一級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;所述第一級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針,所述第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針指向所述匹配項(xiàng)編碼部分。15在有更多級(jí)節(jié)點(diǎn),級(jí)數(shù)為N時(shí);在所述下一級(jí)節(jié)點(diǎn)指針部分還要保存第N級(jí)節(jié)點(diǎn)lt據(jù);使用所述匹配項(xiàng)的第N-l級(jí)節(jié)點(diǎn)的哈希函數(shù)對(duì)第N級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,以哈希結(jié)果作為偏移地址在所述第N-l級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向的位置存儲(chǔ)所述第N級(jí)節(jié)點(diǎn)數(shù)據(jù);所述第N級(jí)節(jié)點(diǎn)數(shù)據(jù)包括所述匹配項(xiàng)第N級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址,所述匹配項(xiàng)的第N級(jí)節(jié)點(diǎn)的哈希函數(shù)、第N級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;所述第N級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向第N級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針,所述第N級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針指向所述匹配項(xiàng)部分;其中,所述N為大于等于2的整數(shù)。的存儲(chǔ)路由表的方法實(shí)施例一的存儲(chǔ)結(jié)構(gòu)如圖5所示虛線(xiàn)框501內(nèi)為根節(jié)點(diǎn)的數(shù)據(jù),根據(jù)圖4可知,根節(jié)點(diǎn)中只有1個(gè)匹配項(xiàng)有下一級(jí)節(jié)點(diǎn),因此在本發(fā)明提供的存儲(chǔ)路由表的方法實(shí)施例一中,只需存儲(chǔ)一個(gè)匹配項(xiàng)的"下一級(jí)節(jié)點(diǎn)指針"。由于本發(fā)明提供的存儲(chǔ)路由表的方法實(shí)施例一選擇直接存儲(chǔ)0-8Bit的匹配項(xiàng),不需要對(duì)0-8Bit的IP地址進(jìn)行哈希,因此虛線(xiàn)框501內(nèi)存儲(chǔ)的數(shù)據(jù)為有下一級(jí)節(jié)點(diǎn)指針的"匹配項(xiàng)"、選擇使用的"哈希函數(shù)"、"下一級(jí)節(jié)點(diǎn)指針";其中"哈希函數(shù),,為根節(jié)點(diǎn)哈希函數(shù),用于對(duì)所述匹配項(xiàng)第一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)IP地址進(jìn)行哈希,也就是用于對(duì)實(shí)際IP地址的9-16Bit進(jìn)行哈希的哈希函數(shù);"下一級(jí)節(jié)點(diǎn)指針,,指向存放第一級(jí)節(jié)點(diǎn)數(shù)據(jù)的地址,通過(guò)"下一級(jí)節(jié)點(diǎn)指針"可以找到存放第一級(jí)節(jié)點(diǎn)數(shù)據(jù)的位置,通過(guò)對(duì)實(shí)際IP地址的9-16Bit進(jìn)行哈希的結(jié)果,可以找到對(duì)應(yīng)的匹配項(xiàng)數(shù)據(jù)。虛線(xiàn)框502內(nèi)為第一級(jí)節(jié)點(diǎn)的數(shù)據(jù),根據(jù)圖4可知第一級(jí)節(jié)點(diǎn)中有兩個(gè)匹配項(xiàng)有下一級(jí)節(jié)點(diǎn),因此虛線(xiàn)框502內(nèi)存儲(chǔ)有2個(gè)匹配項(xiàng)的相關(guān)數(shù)據(jù)。其中"哈希ir、"ipir、"哈希12"、"ipi2"、"哈希13"、"ipi3"、"下一級(jí)節(jié)點(diǎn)指針r為存儲(chǔ)第一級(jí)節(jié)點(diǎn)的具有下一級(jí)節(jié)點(diǎn)匹配項(xiàng)的相關(guān)數(shù)據(jù)的第一個(gè)表項(xiàng),對(duì)匹配項(xiàng)實(shí)際IP地址的9-16Bit進(jìn)行哈希后,以哈希結(jié)果作為偏移地址,偏移地址位于本表項(xiàng)的匹配項(xiàng)都保存于該表項(xiàng);"哈希11"、"哈希12"、"哈希13"對(duì)應(yīng)表7中的"哈希函數(shù),,表項(xiàng),是第一級(jí)節(jié)點(diǎn)的哈希函數(shù),保存有對(duì)本表項(xiàng)中具有下一級(jí)節(jié)點(diǎn)匹配項(xiàng)的第17-24Bit進(jìn)行哈希的三個(gè)不同哈希函數(shù),即用于對(duì)匹配項(xiàng)第二級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)IP地址進(jìn)行哈希的哈希函數(shù);"IP11"、"IP12"、"IP13"對(duì)應(yīng)表7中的"IP"表項(xiàng);如果使用虛線(xiàn)框501中的哈希函數(shù)對(duì)具有下一級(jí)節(jié)點(diǎn)匹配項(xiàng)的第9-16Bit進(jìn)行哈希后,偏移地址位于本表項(xiàng),且哈希結(jié)果沒(méi)有沖突,則根據(jù)實(shí)際情況保存實(shí)際IP地址的9-16Bit,或者實(shí)際IP地址的9-16Bit中的幾個(gè)Bit于"IP11",使用"哈希11"對(duì)該匹配項(xiàng)IP地址的17-24Bit進(jìn)行哈希;如果出現(xiàn)沖突,則按沖突順序進(jìn)行處理,如果是第一個(gè)沖突項(xiàng),根據(jù)實(shí)際情況保存實(shí)際IP地址的9-16Bit,或者實(shí)際IP地址的9-16Bit中的幾個(gè)Bit于"IP12",使用"哈希12"對(duì)該匹配項(xiàng)IP地址的17-24Bit進(jìn)行哈希,如果是第二個(gè)沖突項(xiàng),則根據(jù)實(shí)際情況保存實(shí)際IP地址的9-16Bit,或者實(shí)際IP地址的9-16Bit中的幾個(gè)Bit于"IP13",使用"哈希13"對(duì)該匹配項(xiàng)IP地址的17-24Bit進(jìn)行哈希,也可以直接將實(shí)際IP地址的9-16Bit,或者實(shí)際IP地址的9-16Bit中的幾個(gè)Bit保存在為空的"IP"項(xiàng)中,使用相應(yīng)"哈希函數(shù),,對(duì)該匹配項(xiàng)IP地址的17-24Bit進(jìn)行哈希;"下一級(jí)節(jié)點(diǎn)指針1"指向該匹配項(xiàng)的"最長(zhǎng)匹配前綴r存放地址;"最長(zhǎng)匹配前綴r和"匹配項(xiàng)指針r及第二級(jí)節(jié)點(diǎn)的"哈希41"、"IP41,'、"哈希42"、"IP42"、"哈希43"、"IP43"、"下一級(jí)節(jié)點(diǎn)指針4"存放在一起;"匹配項(xiàng)指針1"指向該匹配項(xiàng)對(duì)應(yīng)的"匹配項(xiàng)編碼l","匹配項(xiàng)編碼l"中保存有501中"下一級(jí)節(jié)點(diǎn)指針,,指向的第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)部分相關(guān)數(shù)據(jù),通過(guò)"匹配項(xiàng)指針1"可以將第一級(jí)節(jié)點(diǎn)信息和對(duì)應(yīng)的"匹配項(xiàng)"信息聯(lián)系在一起。"哈希21"、"IP21"、"哈希22"、"IP22"、"哈希23"、"IP23"、"下一級(jí)節(jié)點(diǎn)指針2"為存儲(chǔ)第一級(jí)節(jié)點(diǎn)的具有下一級(jí)節(jié)點(diǎn)匹配項(xiàng)的相關(guān)數(shù)據(jù)的第二個(gè)表項(xiàng),和"哈希ir、"ipir、"哈希12"、"ipi2"、"哈希13"、"ipi3"、"下一級(jí)節(jié)點(diǎn)指針r保存于同一張表中,這張表可以被稱(chēng)為是一個(gè)子節(jié)點(diǎn)數(shù)組(ChildArray),如果第一級(jí)節(jié)點(diǎn)中有更多的匹配項(xiàng)有下一級(jí)節(jié)點(diǎn),這些匹配項(xiàng)的相關(guān)數(shù)據(jù)也都將存儲(chǔ)于這個(gè)子節(jié)點(diǎn)數(shù)組中;"哈希11"、"哈希12"、"哈希13"對(duì)應(yīng)表7中的"哈希函數(shù),,表項(xiàng),是第一級(jí)節(jié)點(diǎn)的哈希函數(shù),保存有對(duì)第二個(gè)具有下一級(jí)節(jié)點(diǎn)匹配項(xiàng)的第17-24Bit進(jìn)行哈希的三個(gè)不同哈希函數(shù),即用于對(duì)匹配項(xiàng)第二級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)IP地址進(jìn)行哈希的哈希函數(shù);"IP21"、"IP22"、"IP23"對(duì)應(yīng)表7中的"IP"表項(xiàng);如果使用虛線(xiàn)框501中的哈希函數(shù)對(duì)具有下一級(jí)節(jié)點(diǎn)匹配項(xiàng)的第9-16Bit進(jìn)行哈希后,偏移地址位于本表項(xiàng),且哈希結(jié)果沒(méi)有沖突,則根據(jù)實(shí)際情況保存實(shí)際IP地址的9-16Bit,或者實(shí)際IP地址的9-16Bit中的幾個(gè)Bit于"IP21",使用"哈希21"對(duì)該匹配項(xiàng)IP地址的17-24Bit進(jìn)行哈希;如果出現(xiàn)沖突,則4要沖突順序,如果是第一個(gè)沖突項(xiàng),根據(jù)實(shí)際情況保存實(shí)際IP地址的9-16Bit,或者實(shí)際IP地址的9-16Bit中的幾個(gè)Bit于"IP22",使用"哈希22"對(duì)該匹配項(xiàng)IP地址的17-24Bit進(jìn)行哈希,如果是第二個(gè)沖突項(xiàng),則根據(jù)實(shí)際情況保存實(shí)際IP地址的9-16Bit,或者實(shí)際IP地址的9-16Bit中的幾個(gè)Bit于"IP23",使用"哈希23"對(duì)該匹配項(xiàng)IP地址的17-24Bit進(jìn)行哈希,也可以直接將實(shí)際IP地址的9-16Bit,或者實(shí)際IP地址的9-16Bit中的幾個(gè)Bit保存在為空的"IP"項(xiàng)中,使用相應(yīng)"哈希函數(shù),,對(duì)該匹配項(xiàng)IP地址的17-24Bit進(jìn)行哈希;"下一級(jí)節(jié)點(diǎn)指針2"指向該匹配項(xiàng)的"最長(zhǎng)匹配前綴2"存放地址;"最長(zhǎng)匹配前綴2"和"匹配項(xiàng)指針2"及第二級(jí)節(jié)點(diǎn)的"哈希31"、"IP31"、"哈希32"、"IP32"、"哈希33"、"IP33"、"下一級(jí)節(jié)點(diǎn)指針3"存放在一起;"匹配項(xiàng)指針2"指向該匹配項(xiàng)對(duì)應(yīng)的"匹配項(xiàng)編碼l","匹配項(xiàng)編碼r中保存有501中"下一級(jí)節(jié)點(diǎn)指針"指向的第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)部分相關(guān)數(shù)據(jù),由于一個(gè)子節(jié)點(diǎn)數(shù)組中所有數(shù)據(jù)都屬于同一個(gè)節(jié)點(diǎn),因此所有"匹配項(xiàng)指針"最終都指向?qū)儆谕粋€(gè)節(jié)點(diǎn)的匹配項(xiàng)編碼。通過(guò)"匹配項(xiàng)指針2"可以將第一級(jí)節(jié)點(diǎn)信息和對(duì)應(yīng)的"匹配項(xiàng),,信息聯(lián)系在一起。虛線(xiàn)框503內(nèi)為第二級(jí)節(jié)點(diǎn)的數(shù)據(jù),根據(jù)圖4可知第二級(jí)節(jié)點(diǎn)中有兩個(gè)節(jié)點(diǎn),其中有一個(gè)節(jié)點(diǎn)中有一個(gè)匹配項(xiàng)有下一級(jí)節(jié)點(diǎn),因此虛線(xiàn)框503內(nèi)存儲(chǔ)有2個(gè)節(jié)點(diǎn)的相關(guān)數(shù)據(jù),但是只有一個(gè)的下一級(jí)節(jié)點(diǎn)指針指向的數(shù)據(jù)包含第三級(jí)節(jié)點(diǎn)數(shù)據(jù)。其中"哈希31"、"IP31',、"哈希32"、"IP32"、"哈希33"、"IP33"、"下一級(jí)節(jié)點(diǎn)指針3"為"下一級(jí)節(jié)點(diǎn)指針2"指向的節(jié)點(diǎn)的相關(guān)數(shù)據(jù),和第一級(jí)18節(jié)點(diǎn)的第二個(gè)具有下一級(jí)節(jié)點(diǎn)匹配項(xiàng)的相關(guān)數(shù)據(jù)"最長(zhǎng)匹配前綴2"和"匹配項(xiàng)指針2,'保存在同一個(gè)表格里;"哈希31"、"哈希32"、"哈希33"對(duì)應(yīng)表7中的"哈希函數(shù),,表項(xiàng),保存有對(duì)本表項(xiàng)中具有下一級(jí)節(jié)點(diǎn)匹配項(xiàng)的第25-32Bit進(jìn)行哈希的三個(gè)不同哈希函數(shù),即用于對(duì)匹配項(xiàng)第三級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)IP地址進(jìn)行哈希的哈希函數(shù);"IP31"、"IP32"、"IP33"對(duì)應(yīng)表7中的"IP"表項(xiàng);如果使用虛線(xiàn)框501中的哈希函數(shù)對(duì)"下一級(jí)節(jié)點(diǎn)指針2"指向的節(jié)點(diǎn)的第17-24Bit進(jìn)行哈希后,偏移地址位于本表項(xiàng),且哈希結(jié)果沒(méi)有沖突,則根據(jù)實(shí)際情況保存實(shí)際IP地址的17-24Bit,或者實(shí)際IP地址的17-24Bit中的幾個(gè)Bit于"IP31",使用"哈希31"對(duì)該匹配項(xiàng)IP地址的24-32Bit進(jìn)行哈希;如果出現(xiàn)沖突,則按沖突順序進(jìn)行處理,如果是第一個(gè)沖突項(xiàng),根據(jù)實(shí)際情況保存實(shí)際IP地址的17-24Bit,或者實(shí)際IP地址的17-24Bit中的幾個(gè)Bit于"IP32",使用"哈希32"對(duì)該匹配項(xiàng)IP地址的24-32Bit進(jìn)行哈希,如果是第二個(gè)沖突項(xiàng),則根據(jù)實(shí)際情況保存實(shí)際IP地址的17-24Bit,或者實(shí)際IP地址的17-24Bit中的幾個(gè)Bit于"IP33",使用"哈希33"對(duì)該匹配項(xiàng)IP地址的24-32Bit進(jìn)行哈希,也可以直接將實(shí)際IP地址的17-24Bit,或者實(shí)際IP地址的17-24Bit中的幾個(gè)Bit保存在為空的"IP"項(xiàng)中,使用相應(yīng)"哈希函數(shù)"對(duì)該匹配項(xiàng)IP地址的24-32Bit進(jìn)行哈希;"下一級(jí)節(jié)點(diǎn)指針3"指向該匹配項(xiàng)的"最長(zhǎng)匹配前綴3"存》丈地址;"最長(zhǎng)匹配前綴3"和"匹配項(xiàng)指針3"存放在一起,由于"下一級(jí)節(jié)點(diǎn)指針2"指向的節(jié)點(diǎn)沒(méi)有下一級(jí)節(jié)點(diǎn),因此"下一級(jí)節(jié)點(diǎn)指針3"指向的地址不包括第三級(jí)節(jié)點(diǎn)的數(shù)據(jù);"匹配項(xiàng)指針3"指向該匹配項(xiàng)對(duì)應(yīng)的"匹配項(xiàng)編碼3","匹配項(xiàng)編碼3"中保存有"下一級(jí)節(jié)點(diǎn)指針2"指向的節(jié)點(diǎn)的匹配項(xiàng)部分相關(guān)數(shù)據(jù),通過(guò)"匹配項(xiàng)指針3"可以將第二級(jí)節(jié)點(diǎn)信息和對(duì)應(yīng)的"匹配項(xiàng)"信息聯(lián)系在一起。"哈希41"、"IP41"、"哈希42"、"IP42"、"哈希43"、"IP43"、"下一級(jí)節(jié)點(diǎn)指針4"為"下一級(jí)節(jié)點(diǎn)指針l"指向的節(jié)點(diǎn)的相關(guān)數(shù)據(jù),和第一級(jí)節(jié)點(diǎn)的第一個(gè)具有下一級(jí)節(jié)點(diǎn)匹配項(xiàng)的相關(guān)數(shù)據(jù)"最長(zhǎng)匹配前綴r和"匹配項(xiàng)指針1"保存在同一個(gè)表格里;"哈希41"、"哈希42"、"哈希43"對(duì)應(yīng)表7中的"哈希函數(shù),,表項(xiàng),保存有對(duì)"下一級(jí)節(jié)點(diǎn)指針1"指向的節(jié)點(diǎn)的第17-24Bit進(jìn)行哈希的三個(gè)不同哈希函數(shù),即用于對(duì)匹配項(xiàng)第三級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)IP地19址進(jìn)行哈希的哈希函數(shù);"IP41"、"IP42"、"IP43"對(duì)應(yīng)表7中的"IP"表項(xiàng);如果使用虛線(xiàn)框501中的哈希函數(shù)對(duì)"下一級(jí)節(jié)點(diǎn)指針1"指向的節(jié)點(diǎn)的第17-24Bit進(jìn)行哈希,哈希結(jié)果沒(méi)有沖突,則保存在"哈希41"中,并根據(jù)實(shí)際情況保存實(shí)際IP地址的17-24Bit,或者實(shí)際IP地址的17-24Bit中的幾個(gè)Bit于"IP41",使用"哈希41',對(duì)該匹配項(xiàng)IP地址的24-32Bit進(jìn)行哈希;如果出現(xiàn)沖突,則按沖突順序進(jìn)行處理,如果是第一個(gè)沖突項(xiàng),根據(jù)實(shí)際情況保存實(shí)際IP地址的17-24Bit,或者實(shí)際IP地址的17-24Bit中的幾個(gè)Bit于"IP42",使用"哈希32"對(duì)該匹配項(xiàng)IP地址的24-32Bit進(jìn)行哈希,如果是第二個(gè)沖突項(xiàng),則根據(jù)實(shí)際情況保存實(shí)際IP地址的17-24Bit,或者實(shí)際IP地址的17-24Bit中的幾個(gè)Bit于"IP43",使用"哈希43"對(duì)該匹配項(xiàng)IP地址的24-32Bit進(jìn)行哈希,也可以直接將實(shí)際IP地址的17-24Bit,或者實(shí)際IP地址的17-24Bit中的幾個(gè)Bit保存在為空的"IP"項(xiàng)中,使用相應(yīng)"哈希函數(shù),,對(duì)該匹配項(xiàng)IP地址的24-32Bit進(jìn)行哈希;"下一級(jí)節(jié)點(diǎn)指針4"指向該匹配項(xiàng)的"最長(zhǎng)匹配前綴4"存放地址;"最長(zhǎng)匹配前綴4"和"匹配項(xiàng)指針4"及第三級(jí)節(jié)點(diǎn)的"哈希51"、"IP51"、"哈希52',、"IP52"、"哈希53"、"IP53"、"下一級(jí)節(jié)點(diǎn)指針5"存放在一起;"匹配項(xiàng)指針4"指向該匹配項(xiàng)對(duì)應(yīng)的"匹配項(xiàng)編碼4","匹配項(xiàng)編碼4"中保存有"下一級(jí)節(jié)點(diǎn)指針1"指向的節(jié)點(diǎn)的匹配項(xiàng)部分相關(guān)數(shù)據(jù),通過(guò)"匹配項(xiàng)指針4"可以將第二級(jí)節(jié)點(diǎn)信息和對(duì)應(yīng)的"匹配項(xiàng)"信息聯(lián)系在一起。虛線(xiàn)框504內(nèi)為第三級(jí)節(jié)點(diǎn)的數(shù)據(jù),根據(jù)圖4可知第三級(jí)節(jié)點(diǎn)中有一個(gè)節(jié)點(diǎn),但是該節(jié)點(diǎn)沒(méi)有下一級(jí)節(jié)點(diǎn),因此虛線(xiàn)框504內(nèi)存儲(chǔ)有1個(gè)節(jié)點(diǎn)的相關(guān)數(shù)據(jù),且該節(jié)點(diǎn)的"下一級(jí)節(jié)點(diǎn)指針"指向的地址不包括下一級(jí)節(jié)點(diǎn)的數(shù)據(jù)。其中"哈希51"、"IP51',、"哈希52"、"IP52"、"哈希53"、"IP53"、"下一級(jí)節(jié)點(diǎn)指針5"為"下一級(jí)節(jié)點(diǎn)指針4"指向的節(jié)點(diǎn)的相關(guān)數(shù)據(jù),和下一級(jí)節(jié)點(diǎn)指針1"指向的節(jié)點(diǎn)的相關(guān)數(shù)據(jù)"最長(zhǎng)匹配前綴4"和"匹配項(xiàng)指針4"保存在同一個(gè)表格里;"哈希51"、"哈希52"、"哈希53"對(duì)應(yīng)表7中的"哈希函數(shù)"表項(xiàng),由于本實(shí)施例中IP地址最長(zhǎng)只有32位,因此"哈希51"、"哈希52"、"哈希53"通常為空;"IP51"、"IP52"、"IP53"對(duì)應(yīng)表7中的"IP"表項(xiàng);如果使用虛線(xiàn)框501中的哈希函數(shù)對(duì)"下一級(jí)節(jié)點(diǎn)指針4"指向的節(jié)點(diǎn)的第25-32Bit進(jìn)行哈希,哈希結(jié)果沒(méi)有沖突,則保存在"哈希51"中,并根據(jù)實(shí)際情況保存實(shí)際IP地址的25-32Bit,或者實(shí)際IP地址的25-32Bit中的幾個(gè)Bit于"IP51";如果出現(xiàn)沖突,則按沖突順序進(jìn)行處理,如果是第一個(gè)沖突項(xiàng),根據(jù)實(shí)際情況保存實(shí)際IP地址的25-32Bit,或者實(shí)際IP地址的25-32Bit中的幾個(gè)Bit于"IP52,',如果是第二個(gè)沖突項(xiàng),則根據(jù)實(shí)際情況保存實(shí)際IP地址的25-32Bit,或者實(shí)際IP地址的25-32Bit中的幾個(gè)Bit于"IP53,,;"下一級(jí)節(jié)點(diǎn)指針5"指向該匹配項(xiàng)的"最長(zhǎng)匹配前綴5"存放地址;"最長(zhǎng)匹配前綴5"和"匹配項(xiàng)指針5"存放在一起,由于"下一級(jí)節(jié)點(diǎn)指針4"指向的節(jié)點(diǎn)沒(méi)有下一級(jí)節(jié)點(diǎn),因此"下一級(jí)節(jié)點(diǎn)指針5"指向的地址不包括第三級(jí)節(jié)點(diǎn)的數(shù)據(jù);"匹配項(xiàng)指針5"指向該匹配項(xiàng)對(duì)應(yīng)的"匹配項(xiàng)編碼5","匹配項(xiàng)編碼5"中保存有"下一級(jí)節(jié)點(diǎn)指針4"指向的節(jié)點(diǎn)的匹配項(xiàng)部分相關(guān)數(shù)據(jù),通過(guò)"匹配項(xiàng)指針5,'可以將第三級(jí)節(jié)點(diǎn)信息和對(duì)應(yīng)的"匹配項(xiàng),,信息聯(lián)系在一起。由以上對(duì)圖5的描述可以看出,使用本發(fā)明提供的存儲(chǔ)路由表的方法實(shí)施例一后,原本占用2Sx4-3個(gè)"下一級(jí)節(jié)點(diǎn)指針,,表項(xiàng)空間的"下一級(jí)節(jié)點(diǎn)指針,,部分,只需要保存其中不為空的部分,及"下一級(jí)節(jié)點(diǎn)指針"指向部分即可,占用空間大大減少,有效節(jié)省了路由表占用空間。間也會(huì)更大,因此應(yīng)用本發(fā)明提供的存儲(chǔ)路由表的方法實(shí)施例可以有效地節(jié)省路由表占用的空間。以上為本發(fā)明提供的存儲(chǔ)路由表的方法實(shí)施例,與之對(duì)應(yīng),本發(fā)明提供了查找路由表的方法實(shí)施例。本發(fā)明提供的查找路由表的方法實(shí)施例,是在路由表的下一級(jí)節(jié)點(diǎn)指針部分采用本發(fā)明提供的存儲(chǔ)路由表的方法實(shí)施例存儲(chǔ)的前提下進(jìn)行的。在本發(fā)明提供的查找路由表的方法實(shí)施例中,根據(jù)存儲(chǔ)路由表的下一級(jí)節(jié)點(diǎn)指針部分直接存儲(chǔ)的長(zhǎng)度,取待查IP地址進(jìn)行直接查找;讀取查找到的哈希函數(shù)、下一級(jí)節(jié)點(diǎn)指針;使用查找到的哈希函數(shù)對(duì)下一級(jí)節(jié)點(diǎn)的相應(yīng)IP地址進(jìn)行哈希,使用所述下一節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù);根據(jù)所述查找結(jié)果讀取匹配項(xiàng)編碼。本發(fā)明提供的查找路由表的方法實(shí)施例一流程如圖6所示步驟601、根據(jù)直接存儲(chǔ)的比特長(zhǎng)度,取待查IP地址進(jìn)行直接查找。開(kāi)始查找時(shí),根據(jù)存儲(chǔ)時(shí)直接存儲(chǔ)的Bit長(zhǎng)度,使用相應(yīng)Bit的IP地址進(jìn)行直接查找。如存儲(chǔ)時(shí),選擇直接存儲(chǔ)0-8Bit的匹配項(xiàng),則使用待查IP地址的0-8Bit直接查找路由表的下一級(jí)節(jié)點(diǎn)指針部分。步驟602、判斷是否查找到,是則進(jìn)入步驟603;否則進(jìn)入步驟613。步驟603、根據(jù)查找到的內(nèi)容,查找下一級(jí)匹配數(shù)據(jù)。讀取查找到的"匹配項(xiàng),,"哈希函數(shù),,"下一級(jí)節(jié)點(diǎn)指針",根據(jù)查找到的"下一級(jí)節(jié)點(diǎn)指針"找到存儲(chǔ)下一級(jí)節(jié)點(diǎn)數(shù)據(jù)的子節(jié)點(diǎn)數(shù)組,根據(jù)實(shí)際步長(zhǎng)情況使用讀取到的"哈希函數(shù),,對(duì)下一級(jí)節(jié)點(diǎn)的相應(yīng)IP地址進(jìn)行哈希,使用哈希結(jié)果作為偏移地址查找子節(jié)點(diǎn)數(shù)組?,F(xiàn)舉例說(shuō)明根據(jù)實(shí)際步長(zhǎng)情況對(duì)相應(yīng)長(zhǎng)度IP地址進(jìn)行哈希,例如,步長(zhǎng)為"8"的時(shí)候,對(duì)IP地址的9-16Bit進(jìn)行哈希,步長(zhǎng)為"16"時(shí),對(duì)17-32Bit進(jìn)行哈希,等等。步驟604、判斷是否查找到,是則執(zhí)行步驟605;否則執(zhí)行步驟613。步驟605、比對(duì)表項(xiàng)中的實(shí)際IP地址,判斷是否有吻合的實(shí)際IP地址,是則,進(jìn)入步驟606;否則,進(jìn)入步驟613。在根據(jù)IP地址哈希結(jié)果存儲(chǔ)數(shù)據(jù)時(shí),根據(jù)實(shí)際情況保存有實(shí)際IP地址、或?qū)嶋HIP的部分Bit位,用于防治找錯(cuò)的狀況,這是由于哈希時(shí)有可能出現(xiàn)沖突,在步驟604中查找到了與哈希結(jié)果匹配的表項(xiàng),也不能說(shuō)明查找的結(jié)果是正確的,還需要使用待查IP地址與查找到的哈希結(jié)果相應(yīng)的IP地址進(jìn)行比對(duì),實(shí)際IP地址的比對(duì)也吻合,則說(shuō)明查找結(jié)果正確,進(jìn)入步驟606;否則,進(jìn)入步驟613。步驟606、根據(jù)查找到的內(nèi)容,查找下一級(jí)匹配數(shù)據(jù)。22讀取查找到的吻合的實(shí)際IP地址對(duì)應(yīng)的"哈希函數(shù),,,例如,待查IP地址與"IP21"中保存的實(shí)際IP地址匹配,則讀取"哈希21"中的哈希函數(shù);讀取查找到的"下一級(jí)節(jié)點(diǎn)指針,,,根據(jù)查找到的"下一級(jí)節(jié)點(diǎn)指針,,找到存儲(chǔ)下一級(jí)節(jié)點(diǎn)數(shù)據(jù)的子節(jié)點(diǎn)數(shù)組,根據(jù)實(shí)際步長(zhǎng)情況使用讀取到的"哈希函數(shù),,對(duì)相應(yīng)長(zhǎng)度IP地址進(jìn)行哈希,使用哈希結(jié)果作為偏移地址查找子節(jié)點(diǎn)數(shù)組。步驟607、判斷是否查找到,是則執(zhí)行步驟608;否則執(zhí)行步驟613。步驟608、比對(duì)表項(xiàng)中的實(shí)際IP地址,判斷是否有吻合的實(shí)際IP地址,是則,進(jìn)入步驟609;否則,進(jìn)入步驟613。步驟606到步驟608與步驟603到步驟605基本相同,只是查找對(duì)象由第一級(jí)節(jié)點(diǎn)數(shù)據(jù),變?yōu)榱说诙?jí)節(jié)點(diǎn)數(shù)據(jù),路由表有多少級(jí)節(jié)點(diǎn)就需要進(jìn)行相應(yīng)次數(shù)的查找,本實(shí)施例中,以路由表包含四級(jí)節(jié)點(diǎn)為例進(jìn)行i兌明,以上步驟已經(jīng)查找過(guò)"根節(jié)點(diǎn)""第一級(jí)節(jié)點(diǎn),,"第二級(jí)節(jié)點(diǎn)",接下來(lái)的步驟中將查找"第三級(jí)節(jié)點(diǎn)"。步驟609、根據(jù)查找到的內(nèi)容,查找下一級(jí)匹配數(shù)據(jù)。讀取查找到的吻合的實(shí)際IP地址對(duì)應(yīng)的"哈希函數(shù)",例如,待查IP地址與"IP31"中保存的實(shí)際IP地址匹配,則讀取"哈希31"中的哈希函數(shù);讀取查找到的"下一級(jí)節(jié)點(diǎn)指針",根據(jù)查找到的"下一級(jí)節(jié)點(diǎn)指針"找到存儲(chǔ)下一級(jí)節(jié)點(diǎn)數(shù)據(jù)的子節(jié)點(diǎn)數(shù)組,根據(jù)實(shí)際步長(zhǎng)情況使用讀取到的"哈希函數(shù),,對(duì)相應(yīng)長(zhǎng)度IP地址進(jìn)行哈希,使用哈希結(jié)果作為偏移地址查找子節(jié)點(diǎn)數(shù)組。步驟610、判斷是否查找到,是則執(zhí)行步驟611;否則執(zhí)行步驟613。步驟611、比對(duì)表項(xiàng)中的實(shí)際IP地址,判斷是否有吻合的實(shí)際IP地址,是則,進(jìn)入步驟612;否則,進(jìn)入步驟613。步驟612、讀取"最長(zhǎng)匹配前綴""匹配項(xiàng)指針",根據(jù)"匹配項(xiàng)指針"讀取對(duì)應(yīng)"匹配項(xiàng)編碼"。根據(jù)查找到的"下一級(jí)節(jié)點(diǎn)指針"讀取"最長(zhǎng)匹配前綴""匹配項(xiàng)指針,,,根據(jù)"匹配項(xiàng)指針"讀取對(duì)應(yīng)"匹配項(xiàng)編碼"。若一個(gè)節(jié)點(diǎn)的匹配項(xiàng)數(shù)據(jù)被分為多個(gè)部分保存,則此時(shí)還需要參考待查IP找到對(duì)應(yīng)的匹配項(xiàng)編碼。例如,步長(zhǎng)為8時(shí),一個(gè)節(jié)點(diǎn)需要255個(gè)bit記錄該節(jié)點(diǎn)的匹配項(xiàng),而我們的結(jié)構(gòu)是128bit的,再加上可能還需要記錄一些其他的相關(guān)數(shù)據(jù),因此通常使用4個(gè)128bit的匹配項(xiàng)編碼存儲(chǔ)空間紀(jì)錄該節(jié)點(diǎn)的匹配項(xiàng),255bit的數(shù)據(jù)分為4個(gè)部分來(lái)存儲(chǔ),4個(gè)存儲(chǔ)空間可以使用2個(gè)Bit進(jìn)行區(qū)分,每一個(gè)匹配項(xiàng)與4相除后剩余6Bit,其前2Bit可以作為偏移項(xiàng),根據(jù)前2Bit選擇匹配項(xiàng)編碼存儲(chǔ)空間進(jìn)行存儲(chǔ),在查找時(shí),使用前2Bit作為偏移地址,再加上查找到的"匹配項(xiàng)指針,,找到對(duì)應(yīng)的匹配項(xiàng)編碼存儲(chǔ)空間,再在該匹配項(xiàng)編碼存儲(chǔ)空間中查找對(duì)應(yīng)匹配項(xiàng),例如10101101,即取10作為偏移,找編號(hào)為"10"的匹配項(xiàng)編碼部分,查找其中地址為"101101"的匹配項(xiàng)編碼,查找到則返回對(duì)應(yīng)的最長(zhǎng)前綴匹配數(shù)據(jù),查找不到,則返回上一級(jí)節(jié)點(diǎn)看有沒(méi)有最長(zhǎng)前綴匹配,如果有則返回該最長(zhǎng)前綴匹配數(shù)據(jù),如果沒(méi)有則根據(jù)查找記錄讀取最長(zhǎng)前綴匹配的節(jié)點(diǎn)。步驟613、根據(jù)上一級(jí)節(jié)點(diǎn)中的"下一級(jí)節(jié)點(diǎn)指針",讀取"匹配項(xiàng)指針",#4居"匹配項(xiàng)指針"找到對(duì)應(yīng)的"匹配項(xiàng)編碼"。進(jìn)入步驟613,表示沒(méi)有在子節(jié)點(diǎn)數(shù)組中找到正確的表項(xiàng),即該待查IP地址的最長(zhǎng)前綴匹配到本級(jí)節(jié)點(diǎn)為止,不需要到下一級(jí)節(jié)點(diǎn)中進(jìn)行查找。若一個(gè)節(jié)點(diǎn)的匹配項(xiàng)數(shù)據(jù)被分為多個(gè)部分保存,則此時(shí)還需要參考待查IP找到對(duì)應(yīng)的匹配項(xiàng)編碼。例如,步長(zhǎng)為8時(shí),一個(gè)節(jié)點(diǎn)需要255個(gè)bit記錄該節(jié)點(diǎn)的匹配項(xiàng),而我們的結(jié)構(gòu)是128bit的,再加上可能還需要記錄一些其他的相關(guān)數(shù)據(jù),因此通常使用4個(gè)128bit的匹配項(xiàng)編碼存儲(chǔ)空間紀(jì)錄該節(jié)點(diǎn)的匹配項(xiàng),255bit的數(shù)據(jù)分為4個(gè)部分來(lái)存儲(chǔ),4個(gè)存儲(chǔ)空間可以使用2個(gè)Bit進(jìn)行區(qū)分,每一個(gè)匹配項(xiàng)與4相除后剩余6Bit,其前2Bit可以作為偏移項(xiàng),根據(jù)前2Bit選擇匹配項(xiàng)編碼存儲(chǔ)空間進(jìn)行存儲(chǔ),在查找時(shí),使用前2Bit作為偏移地址,再加上查找到的前綴指針找到對(duì)應(yīng)的匹配項(xiàng)編碼存儲(chǔ)空間,再在該匹配項(xiàng)編碼存儲(chǔ)空間中查找對(duì)應(yīng)匹配項(xiàng),例如10101101,即取IO作為偏移,找編號(hào)為"10"的匹配項(xiàng)編碼部分,查找其中地址為"101101"的匹配項(xiàng)編碼,查找到則返回對(duì)應(yīng)的最長(zhǎng)前綴匹配數(shù)據(jù),查找不到,則返回上一級(jí)節(jié)點(diǎn)看有沒(méi)有最長(zhǎng)前綴匹配,如果有則返回該最長(zhǎng)前綴匹配數(shù)據(jù),如果沒(méi)有則根據(jù)查找記錄讀取最長(zhǎng)前綴匹配的節(jié)點(diǎn)。采用本發(fā)明提供的查找路由表的方法實(shí)施例后,存儲(chǔ)路由表時(shí),不再需要為全部的表項(xiàng)都分配存儲(chǔ)"下一級(jí)節(jié)點(diǎn)指針,,的空間,大大節(jié)省了路由表占用的內(nèi)存空間。是可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括如下步驟一種存儲(chǔ)路由表的方法,包括為路由表的下一級(jí)節(jié)點(diǎn)指針部分分配相應(yīng)存儲(chǔ)空間,存儲(chǔ)所述具有下一級(jí)節(jié)點(diǎn)的匹配項(xiàng)實(shí)際IP地址,及相應(yīng)哈希函數(shù)、下一級(jí)節(jié)點(diǎn)指針;在所述下一級(jí)節(jié)點(diǎn)指針指向的位置,使用所述哈希函數(shù)對(duì)IP地址哈希的結(jié)果作為偏移地址存儲(chǔ)所述匹配項(xiàng)的下一級(jí)節(jié)點(diǎn)數(shù)據(jù)、指向匹配項(xiàng)編碼的指針。一種查找路由表的方法,包括根據(jù)存儲(chǔ)路由表的下一級(jí)節(jié)點(diǎn)指針部分直接存儲(chǔ)的長(zhǎng)度,取待查IP地址進(jìn)行直接查找;讀取查找到的哈希函數(shù)、下一級(jí)節(jié)點(diǎn)指針;使用查找到的哈希函數(shù)對(duì)下一級(jí)節(jié)點(diǎn)的相應(yīng)IP地址進(jìn)行哈希,使用所述下一節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù);根據(jù)所述查找結(jié)果讀取匹配項(xiàng)編碼。上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。本發(fā)明提供的存儲(chǔ)路由表的裝置實(shí)施例,包括匹配項(xiàng)編碼單元,用于保存路由表的匹配項(xiàng)編碼部分;下一級(jí)節(jié)點(diǎn)指針單元,用于保存根節(jié)點(diǎn)數(shù)據(jù)和第一級(jí)節(jié)點(diǎn)數(shù)據(jù);其中,所述根節(jié)點(diǎn)數(shù)據(jù)包括具有下一級(jí)節(jié)點(diǎn)指針的根節(jié)點(diǎn)匹配項(xiàng),所述25匹配項(xiàng)的根節(jié)點(diǎn)哈希函數(shù)、根節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;使用所述匹配項(xiàng)的根節(jié)點(diǎn)哈希函數(shù)對(duì)所述匹配項(xiàng)第一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,以哈希結(jié)果作為偏移地址在所述根節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向的位置存儲(chǔ)所述第一級(jí)節(jié)點(diǎn)數(shù)據(jù);所述第一級(jí)節(jié)點(diǎn)數(shù)據(jù)包括所述匹配項(xiàng)第一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址,所述匹配項(xiàng)的第一級(jí)節(jié)點(diǎn)哈希函數(shù)、第一級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;所述第一級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針,所述第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針指向所述匹配項(xiàng)編碼部分。其中,所述下一級(jí)節(jié)點(diǎn)指針單元還用于保存第N級(jí)節(jié)點(diǎn)數(shù)據(jù);使用所述匹配項(xiàng)的第N-l級(jí)節(jié)點(diǎn)的哈希函數(shù)對(duì)第N級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,以哈希結(jié)果作為偏移地址在所述第N-l級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向的位置存儲(chǔ)所述第N級(jí)節(jié)點(diǎn)數(shù)據(jù);所述第N級(jí)節(jié)點(diǎn)數(shù)據(jù)包括所述匹配項(xiàng)第N級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址,所述匹配項(xiàng)的第N級(jí)節(jié)點(diǎn)的哈希函數(shù)、第N級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;所述第N級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向第N級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針,所述第N級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針指向所述匹配項(xiàng)部分;其中,所述N為大于等于2的整數(shù)。本發(fā)明提供的查找路由表的裝置實(shí)施例,包括直接查找單元,用于根據(jù)存儲(chǔ)路由表的下一級(jí)節(jié)點(diǎn)指針部分直接存儲(chǔ)的長(zhǎng)度,取待查IP地址進(jìn)行直接查找;第一讀取單元,用于讀取查找到的哈希函數(shù)、下一級(jí)節(jié)點(diǎn)指針;哈希查找單元,用于使用查找到的哈希函數(shù)對(duì)下一級(jí)節(jié)點(diǎn)的待查步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,使用所述下一級(jí)節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù);第二讀取單元,用于根據(jù)所述查找結(jié)果讀取匹配項(xiàng)編碼。IP地址比對(duì)單元,用于使用所述下一節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù),查找到地址吻合的表項(xiàng)后,比對(duì)實(shí)際IP地址與表項(xiàng)中保存的IP地址,有匹配的IP地址,通知成功處理單元查找成功,否則,通知失敗處理單元查找失敗。其中,所述第二讀取單元包括成功處理單元,用于在查找成功時(shí),控制第一讀取單元讀取查找到的哈希函數(shù)、下一級(jí)節(jié)點(diǎn)指針;哈希查找單元使用查找到的哈希函數(shù)對(duì)下一級(jí)節(jié)點(diǎn)的待查步長(zhǎng)范圍內(nèi)IP地址進(jìn)行哈希,使用所述下一節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù);直到查找到最后一級(jí)節(jié)點(diǎn),讀取匹配項(xiàng)指針,#4居所述匹配項(xiàng)指針讀:f又匹配項(xiàng)編碼;失敗處理單元,用于在查找失敗時(shí),讀取上一級(jí)節(jié)點(diǎn)數(shù)據(jù)中的匹配項(xiàng)指針,根據(jù)所述匹配項(xiàng)指針讀取匹配項(xiàng)編碼。本發(fā)明提供的存儲(chǔ)路由表的裝置實(shí)施例、查找路由表的裝置實(shí)施例的具體運(yùn)作方式,可參考上文描述的本發(fā)明提供的存儲(chǔ)、查找路由表的方法實(shí)施例,在此不再詳細(xì)描述。以上對(duì)本發(fā)明所提供的一種本發(fā)明提供的存儲(chǔ)、查找路由表的方法及裝置進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。權(quán)利要求1、一種存儲(chǔ)路由表的方法,其特征在于,包括將所述路由表分為下一級(jí)節(jié)點(diǎn)指針部分和匹配項(xiàng)編碼部分保存;在所述下一級(jí)節(jié)點(diǎn)指針部分保存根節(jié)點(diǎn)數(shù)據(jù)和第一級(jí)節(jié)點(diǎn)數(shù)據(jù);其中,所述根節(jié)點(diǎn)數(shù)據(jù)包括具有下一級(jí)節(jié)點(diǎn)指針的根節(jié)點(diǎn)匹配項(xiàng),所述匹配項(xiàng)的根節(jié)點(diǎn)哈希函數(shù)、根節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;使用所述匹配項(xiàng)的根節(jié)點(diǎn)哈希函數(shù)對(duì)所述匹配項(xiàng)第一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,以哈希結(jié)果作為偏移地址在所述根節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向的位置存儲(chǔ)所述第一級(jí)節(jié)點(diǎn)數(shù)據(jù);所述第一級(jí)節(jié)點(diǎn)數(shù)據(jù)包括所述匹配項(xiàng)第一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址,所述匹配項(xiàng)的第一級(jí)節(jié)點(diǎn)哈希函數(shù)、第一級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;所述第一級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針,所述第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針指向所述匹配項(xiàng)編碼部分。2、如權(quán)利要求1所述的存儲(chǔ)路由表的方法,其特征在于,所述方法還包括在所述下一級(jí)節(jié)點(diǎn)指針部分保存第N級(jí)節(jié)點(diǎn)數(shù)據(jù);使用所述匹配項(xiàng)的第N-l級(jí)節(jié)點(diǎn)的哈希函數(shù)對(duì)第N級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,以哈希結(jié)果作為偏移地址在所述第N-l級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向的位置存儲(chǔ)所述第N級(jí)節(jié)點(diǎn)數(shù)據(jù);所述第N級(jí)節(jié)點(diǎn)數(shù)據(jù)包括所述匹配項(xiàng)第N級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)iU也址,所述匹配項(xiàng)的第N級(jí)節(jié)點(diǎn)的哈希函數(shù)、第N級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;所述第N級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向第N級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針,所述第N級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針指向所述匹配項(xiàng)部分;其中,所述N為大于等于2的整數(shù)。3、如權(quán)利要求1或2所述的存儲(chǔ)路由表的方法,其特征在于,所述步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址包括步長(zhǎng)范圍內(nèi)部分實(shí)際網(wǎng)際協(xié)議地址、或全部網(wǎng)際協(xié)議地址。4、一種查找路由表的方法,其特征在于,包括根據(jù)存儲(chǔ)路由表的下一級(jí)節(jié)點(diǎn)指針部分直接存儲(chǔ)的長(zhǎng)度,取待查網(wǎng)際協(xié)議地址進(jìn)行直接查找;讀取查找到的哈希函數(shù)、下一級(jí)節(jié)點(diǎn)指針;使用查找到的哈希函數(shù)對(duì)下一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,使用所述下一級(jí)節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù);根據(jù)所述查找結(jié)果讀取匹配項(xiàng)編碼。5、如權(quán)利要求4所述的查找路由表的方法,其特征在于,所述根據(jù)所述查找結(jié)果讀取匹配項(xiàng)編碼包括在查找結(jié)果為成功時(shí),重復(fù)上述步驟讀取查找到的哈希函數(shù)、下一級(jí)節(jié)點(diǎn)指針;使用查找到的哈希函數(shù)對(duì)下一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,使用所述下一節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù);直到查找到最后一級(jí)節(jié)點(diǎn),讀取匹配項(xiàng)指針,根據(jù)所述匹配項(xiàng)指針讀耳又匹配項(xiàng)編石馬。6、如權(quán)利要求4所述的查找路由表的方法,其特征在于,所述根據(jù)所述查找結(jié)果讀取匹配項(xiàng)編碼包括在查找失敗時(shí),讀取上一級(jí)節(jié)點(diǎn)數(shù)據(jù)中的匹配項(xiàng)指針,根據(jù)所述匹配項(xiàng)指針讀取匹配項(xiàng)編碼。7、如權(quán)利要求4、5或6所述的查找路由表的方法,其特征在于,所述使用所述下一節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù)之后還包括使用所述下一節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù),查找到地址吻合的表項(xiàng)后,比對(duì)待查步長(zhǎng)范圍內(nèi)實(shí)際網(wǎng)際協(xié)議地址與表項(xiàng)中保存的網(wǎng)際協(xié)議地址,有匹配的網(wǎng)際協(xié)議地址,則查找成功,否則,查找失敗。8、一種存儲(chǔ)路由表的裝置,其特征在于,包括匹配項(xiàng)編碼單元,用于保存路由表的匹配項(xiàng)編碼部分;下一級(jí)節(jié)點(diǎn)指針單元,用于保存根節(jié)點(diǎn)數(shù)據(jù)和第一級(jí)節(jié)點(diǎn)數(shù)據(jù);其中,所述根節(jié)點(diǎn)數(shù)據(jù)包括具有下一級(jí)節(jié)點(diǎn)指針的根節(jié)點(diǎn)匹配項(xiàng),所述匹配項(xiàng)的根節(jié)點(diǎn)哈希函數(shù)、根節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;使用所述匹配項(xiàng)的根節(jié)點(diǎn)哈希函數(shù)對(duì)所述匹配項(xiàng)第一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,以哈希結(jié)果作為偏移地址在所述根節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向的位置存儲(chǔ)所述第一級(jí)節(jié)點(diǎn)數(shù)據(jù);所述第一級(jí)節(jié)點(diǎn)數(shù)據(jù)包括所述匹配項(xiàng)第一級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址,所述匹配項(xiàng)的第一級(jí)節(jié)點(diǎn)哈希函數(shù)、第一級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;所述第一級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針,所述第一級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指^l十指向所述匹配項(xiàng)編碼部分。9、如權(quán)利要求8所述的存儲(chǔ)路由表的裝置,其特征在于,所述下一級(jí)節(jié)點(diǎn)指針單元還用于保存第N級(jí)節(jié)點(diǎn)數(shù)據(jù);使用所述匹配項(xiàng)的第N-l級(jí)節(jié)點(diǎn)的哈希函數(shù)對(duì)第N級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,以哈希結(jié)果作為偏移地址在所述第N-l級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向的位置存儲(chǔ)所述第N級(jí)節(jié)點(diǎn)數(shù)據(jù);所述第N級(jí)節(jié)點(diǎn)數(shù)據(jù)包括所述匹配項(xiàng)第N級(jí)節(jié)點(diǎn)步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址,所述匹配項(xiàng)的第N級(jí)節(jié)點(diǎn)的哈希函數(shù)、第N級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針;所述第N級(jí)節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)指針指向第N級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針,所述第N級(jí)節(jié)點(diǎn)的匹配項(xiàng)編碼指針指向所述匹配項(xiàng)部分;其中,所述N為大于等于2的整數(shù)。10、一種查找路由表的裝置,其特征在于,包括直接查找單元,用于根據(jù)存儲(chǔ)路由表的下一級(jí)節(jié)點(diǎn)指針部分直接存儲(chǔ)的長(zhǎng)度,取待查網(wǎng)際協(xié)議地址進(jìn)行直接查找;第一讀取單元,用于讀取查找到的哈希函數(shù)、下一級(jí)節(jié)點(diǎn)指針;哈希查找單元,用于使用查找到的哈希函數(shù)對(duì)下一級(jí)節(jié)點(diǎn)的待查步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,使用所述下一級(jí)節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù);第二讀取單元,用于4艮據(jù)所述查找結(jié)果讀取匹配項(xiàng)編碼。11、如權(quán)利要求IO所述的查找路由表的裝置,其特征在于,所述第二讀取單元包括成功處理單元,用于在查找成功時(shí),控制第一讀取單元讀取查找到的哈希函數(shù)、下一級(jí)節(jié)點(diǎn)指針;哈希查找單元使用查找到的哈希函數(shù)對(duì)下一級(jí)節(jié)點(diǎn)待查步長(zhǎng)范圍內(nèi)網(wǎng)際協(xié)議地址進(jìn)行哈希,使用所述下一節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù);直到查找到最后一級(jí)節(jié)點(diǎn),讀取匹配項(xiàng)指針,根據(jù)所述匹配項(xiàng)指針讀取匹配項(xiàng)編碼。12、如權(quán)利要求IO所述的查找路由表的裝置,其特征在于,所述第二讀取單元包括失敗處理單元,用于在查找失敗時(shí),讀取上一級(jí)節(jié)點(diǎn)數(shù)據(jù)中的匹配項(xiàng)指針,根據(jù)所述匹配項(xiàng)指針讀耳又匹配項(xiàng)編碼。13、如權(quán)利要求10、11或12所述的查找路由表的裝置,其特征在于,還包括網(wǎng)際協(xié)議地址比對(duì)單元,用于使用所述下一節(jié)點(diǎn)指針及所述哈希的結(jié)果作為偏移,查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù),查找到地址吻合的表項(xiàng)后,比對(duì)待查步長(zhǎng)范圍內(nèi)實(shí)際網(wǎng)際協(xié)議地址與表項(xiàng)中保存的網(wǎng)際協(xié)議地址,有匹配的網(wǎng)際協(xié)議地址,通知成功處理單元查找成功,否則,通知失敗處理單元查找失敗。全文摘要本發(fā)明公開(kāi)了一種存儲(chǔ)路由表的方法,包括將所述路由表分為下一級(jí)節(jié)點(diǎn)指針部分和匹配項(xiàng)編碼部分保存;在所述下一級(jí)節(jié)點(diǎn)指針部分保存根節(jié)點(diǎn)數(shù)據(jù)和第一級(jí)節(jié)點(diǎn)數(shù)據(jù)。本發(fā)明還公開(kāi)了一種查找路由表的裝置,包括根據(jù)存儲(chǔ)路由表的下一級(jí)節(jié)點(diǎn)指針部分直接存儲(chǔ)的長(zhǎng)度,取待查IP地址進(jìn)行直接查找;讀取查找到的哈希函數(shù)、下一級(jí)節(jié)點(diǎn)指針;查找下一級(jí)節(jié)點(diǎn)數(shù)據(jù);根據(jù)所述查找結(jié)果讀取匹配項(xiàng)編碼。本發(fā)明還公開(kāi)了相應(yīng)的裝置。通過(guò)應(yīng)用本發(fā)明可以有效減少路由表占用的內(nèi)存資源。文檔編號(hào)H04L29/06GK101621502SQ20081012528公開(kāi)日2010年1月6日申請(qǐng)日期2008年6月30日優(yōu)先權(quán)日2008年6月30日發(fā)明者睿胡,翀詹,趙鴻翔,鈞龔申請(qǐng)人:華為技術(shù)有限公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1