專利名稱::被遞歸地分割的靜態(tài)ip路由表的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明一般涉及IP路由表;更具體地,涉及一種用于將大型靜態(tài)路由表分割成較小的表的方法。
背景技術(shù):
:通常,通過(guò)路由器使用信息,例如位于進(jìn)入的分組的分組才艮頭中的目的地址的前綴和路由表,從若干不同網(wǎng)絡(luò)i^的分組被轉(zhuǎn)發(fā)到它們的目的地。用于每個(gè)路由器的路由表包含以連接到路由器的設(shè)備的地址為形式的到達(dá)各種網(wǎng)絡(luò)目的地的最佳路徑記錄。為了分組到達(dá)其最終目的地,路由器將要將進(jìn)入的分組定向到的與該路由器連接的下一個(gè)設(shè)備的地址,被稱為下一跳。通過(guò)確定路由表中與分組的目的地址匹配的最長(zhǎng)前綴,來(lái)計(jì)算進(jìn)入的分組的下一跳;隨后分組被路由到由與最長(zhǎng)前綴關(guān)聯(lián)的下一跳指定的目的地。通常路由表以兩種模式之一來(lái)操作靜態(tài)(離線)或動(dòng)態(tài)(在線)。在靜態(tài)模式中,使用后臺(tái)處理器離線執(zhí)行更新請(qǐng)求。經(jīng)過(guò)一些周期,新的并且更新后的轉(zhuǎn)發(fā)表被創(chuàng)建。在動(dòng)態(tài)模式中,查找和更新請(qǐng)求被按照它們出現(xiàn)的順序來(lái)處理。因此,不能完成查找,直到完成之前的更新。為路由表的表示開發(fā)的很多數(shù)據(jù)結(jié)構(gòu)都是基于基本的二進(jìn)制前綴樹(binarytrie)結(jié)構(gòu)。對(duì)于二進(jìn)制前綴樹結(jié)構(gòu),基于搜索關(guān)鍵字(searchkey)中的位來(lái)完成分支。通過(guò)使用該前綴作為關(guān)鍵字進(jìn)行的搜索來(lái)確定其中將要存儲(chǔ)前綴的節(jié)點(diǎn)。將節(jié)點(diǎn)N定義為二進(jìn)制前綴樹中的節(jié)點(diǎn)。Q(N)被定義為由從根到N的路徑定義的位串。特別地,Q(N)是對(duì)應(yīng)于N的前綴。如果Q(N)是路由表中的前綴之一,則對(duì)應(yīng)于Q(N)的下一跳被存儲(chǔ)在N.data中。對(duì)于任何目的地址d,通過(guò)沿著開始于前綴樹根并由d指示的路徑,可以找到最長(zhǎng)的匹配前綴。該路徑上遇到的最后的前綴是與d匹配的最長(zhǎng)的前綴。提出了若干策略來(lái)提高二進(jìn)制前綴樹的查找性能。例如,已經(jīng)使用了LC前綴樹(S.Nilsson和G.Karlsson的Fastaddresslook-upforInternetrouters,IEEEBroadbandCommunications,1998)、Lulea(M.Degermark,A.Brodnik,S.Carlsson和S.Pink.的Smallforwardingtablesforfastroutinglookups,ProceedingsofSIGCOMM,3-14,1997)、樹位圖(W.Eatherton,G.Varghese,Z.Dittia的Treebitmap:hardware/softwareIPlookupswithincrementalupdates,ComputerCommunicationReview,34(2):97-122,2004)、多位前綴樹(V.Srinivasan和G.Varghese的FasterIPlookupsusingcontrolledprefixexpansion,ACMTransactionsonComputerSystems,Feb:l-40,1999)、形移(shapeshifting)前綴樹(H.Song,J.Turner和J.Lockwood的ShapeshiftingtriesforfasterIProutelookup,Proceedingsof13thIEEEInternationalConferenceonNetworkProtocols,2005)和混合形移前綴樹(W.Lu和S.Sahni的Succinctrepresentationofstaticpacketclassifiers,UniversityofFlorida,2006)。其他早期的分割方案都局限于一個(gè)前端數(shù)組和一個(gè)級(jí)別的(one-level)前綴分割。當(dāng)前分割的表的跨距(stride)通常是固定的并且不依賴數(shù)據(jù)。而且,早期的分割方案使用相同的庫(kù)結(jié)構(gòu)(basestructure)來(lái)表示所有的分割。盡管現(xiàn)有的方案被設(shè)計(jì)為將更新所需要的存儲(chǔ)器訪問(wèn)的數(shù)量保持在可接受的水平,但是它們可能增加最差情況下查找所需要的存儲(chǔ)器訪問(wèn)數(shù)量,并且還增加存儲(chǔ)該結(jié)構(gòu)所需要的總存儲(chǔ)量。(參見(jiàn)M.Ruiz-Sanchez,E.Biersack和W.Dabbous的SurveyandtaxonomyofIPaddresslookupalgorithms,IEEENetwork,2001,8-23以及S.Sahni,K.Kim和H.Lu的Datastructuresforone-dimensionalpacketclassificationusingmost-specific-rulematching,InternationalSymposiumonParallelArchitectures,Algorithms,andNetworks(ISPAN),2002,3-14)因此,需要一種對(duì)查找提供更少的存儲(chǔ)器訪問(wèn),及更少的存儲(chǔ)需求總量的方法。
發(fā)明內(nèi)容本發(fā)明主要涉及一種用于分割表的方法,所述方法解決了和/或顯著消除了現(xiàn)有"a術(shù)中的一個(gè)或更多問(wèn)題、限制和/或缺點(diǎn)。本發(fā)明的目的是提供一種分割機(jī)制,其可以對(duì)查找提供更少的存儲(chǔ)器訪問(wèn),以及更少的存儲(chǔ)需求總量。本發(fā)明的其他優(yōu)點(diǎn)、目的和特性,部分將在接下來(lái)的描述中陳述,部分對(duì)于本領(lǐng)域技術(shù)人員基于下面的分析將是明顯的,或者可以從本發(fā)明的實(shí)踐中得到。可以通過(guò)所述結(jié)構(gòu),特別是書面的說(shuō)明書和權(quán)利要求以及附圖指明的結(jié)構(gòu)來(lái)實(shí)現(xiàn)并獲得本發(fā)明的目的和其他優(yōu)點(diǎn)。為達(dá)到這些目的和其他優(yōu)點(diǎn),并且依照此處所概括的和廣泛描述的本發(fā)明的目的,提供了一種用于遞歸地分割靜態(tài)ip路由表的分割機(jī)制,包括二進(jìn)制前綴樹T,其表示用于路由分組的所有可能的目的地址的前綴集,所述前綴樹T包括第一級(jí)別分割和下一級(jí)別分割,其中所述第一級(jí)別分割包括子前綴樹和輔助前綴樹(auxiliarytrie),其中通過(guò)選擇跨距s來(lái)形成所述子前綴樹,其中所述子前綴樹節(jié)點(diǎn)包括1)從T的根R到所述子前綴樹的根N的路徑Q(N),2)用于下一級(jí)別分割的跨距s,3)具有下一級(jí)別完全散列函數(shù)特征的掩碼,及4)用于所述下一級(jí)別分割的關(guān)于哈希表的指針;并且其中所述輔助前綴樹表示具有比所述第一級(jí)別分割的跨距s小的級(jí)別l的前綴,其中所述輔助前綴樹的節(jié)點(diǎn)包括所述才艮R;其中第一級(jí)別分割的數(shù)量是IDs(R)l+1,其中D"R)表示根R的所述1級(jí)別后代,其中l(wèi)=s。隨后,通過(guò)對(duì)每個(gè)ID"R)I+1分割遞歸地重復(fù)所述第一級(jí)別分割的子前綴樹的構(gòu)成,來(lái)形成所述下一級(jí)別分割。本發(fā)明的另一個(gè)方面,提供了一種使用所述數(shù)據(jù)結(jié)構(gòu)來(lái)執(zhí)行查找的方法,包括由哈希表的條目的第一位或前三位來(lái)標(biāo)識(shí)分割的哈希表?xiàng)l目類型,所述條目類型包括類型1,其表示被進(jìn)一步分割為下一級(jí)別分割的分割,類型001,其表示葉子分割,類型010,其表示由庫(kù)結(jié)構(gòu)表示的分割,以及類型000,其表示未使用的哈希表?xiàng)l目;從目的地址d剝?nèi)デ皊位,其中s是從前綴樹的根R到所述子前綴樹分割的根N的跨距,其中所述前s位定義了用于索引到所述哈希表的關(guān)鍵字;并且1)如果所述條目類型是所述類型000或者如果所述前s位與所述哈希表中的關(guān)鍵字不匹配,則執(zhí)行輔助分割的搜索,2)如果所述條目類型是所述類型001,則執(zhí)行所述葉子的搜索,3)如果所述條目類型是所述類型010,則執(zhí)行所述庫(kù)結(jié)構(gòu)的搜索,或者4)如果所述條目類型是所述類型1,則通過(guò)重復(fù)所述用于執(zhí)行查找的方法來(lái)執(zhí)行所述下一級(jí)別分割的搜索。本發(fā)明的另一方面,提供了011條目類型,其表示被進(jìn)一步分割到下一級(jí)別分割的分割,其中當(dāng)所述分割跨距為1時(shí),通過(guò)帶有2'個(gè)條目的前端數(shù)組來(lái)表示所述分割。可以理解,本發(fā)明的前述概括描述和接下來(lái)的具體描述都是示例的和解釋性,并且意在如請(qǐng)求保護(hù)的那樣提供本發(fā)明的進(jìn)一步解釋。圖1A和lB示出分割二進(jìn)制前綴樹T的跨距s的表示;圖1A示出前綴樹T,而圖1B示出哈希^^示。圖2是^^希表的條目類型的表示。圖3是用于以基本策略進(jìn)行搜索的算法。圖4是用于以葉子推進(jìn)版本A進(jìn)行搜索的算法。圖5示出IPv4表中查找所需要的存儲(chǔ)器訪問(wèn)的圖^示。圖6示出IPv4表所需要的總存儲(chǔ)量的圖表表示。圖7示出IPv6表中查找所需要的存儲(chǔ)器訪問(wèn)的圖^示。圖8示出IPv6表所需要的總存儲(chǔ)量的圖表表示。應(yīng)該理解,在某些情況下由于計(jì)算效率或維護(hù)方便的原因,示例性流程圖的框的順序和關(guān)系可由本領(lǐng)域4支術(shù)人員重新安排或重新關(guān)聯(lián)。M實(shí)施方式如圖中所示和接下來(lái)描述的本發(fā)明提供了一種用于遞歸地將大型靜態(tài)路由表分割成更小的表的方法??梢允褂靡阎撵o態(tài)路由表結(jié)構(gòu)來(lái)表示更小的表。在一個(gè)實(shí)施實(shí)例中,可以使用多位前綴樹(MBT,multi-bit-trie)來(lái)表示更小的表,如V.Srinivasan和G.Varghese的FasterIPlookupsusingcontrolledprefixexpansion,ACMTransactionsonComputerSystems,二月1-40,1999中所教導(dǎo)的。在另一實(shí)施實(shí)例中,可以使用混合形移前綴樹(HSST,hybridshapeshiftingtrie)來(lái)表示更小的表,如W.Lu和S.Sahni的Succinctrepresentationofstaticpacketclassifiers,UniversityofFlorida,2006中所教導(dǎo)的。本發(fā)明的實(shí)施例可以允許多級(jí)別分割。在進(jìn)一步的實(shí)施例中,可以選擇庫(kù)結(jié)構(gòu)的異構(gòu)集合(heterogenouscollection)來(lái)優(yōu)化存儲(chǔ)的使用。在實(shí)施例中,不同的方法,例如前端數(shù)組方法和帶有輔助分割的哈希表方法,可以用于記錄(keeptrackof)前綴集的分割。在這種實(shí)施例中,可以通過(guò)動(dòng)態(tài)編寫的使用來(lái)選擇用于每個(gè)分割的最佳方法。在一個(gè)使用前端數(shù)組來(lái)記錄分割的實(shí)施例中,其中庫(kù)結(jié)構(gòu)是多位節(jié)點(diǎn),遞歸的分割可以被減少至跨距可變的前綴樹(variable-stridetries)。在一個(gè)實(shí)施例中,可以^^下文描述的那樣來(lái)實(shí)現(xiàn)遞歸分割。參考圖1A,可以通過(guò)二進(jìn)制前綴樹T來(lái)表示給出的前綴集。可以選擇跨距s用于將該二進(jìn)制前綴樹分割成子前綴樹。T的根R的級(jí)別1后代可以由D,(R)表示,其中根處于級(jí)別1=0。因此,Do(R)是R并且D,(R)是R的孩子。當(dāng)以跨距s分割前綴樹時(shí),以節(jié)點(diǎn)N6Ds(R)為根的每個(gè)子前綴樹ST(N)定義了路由表的分割。這里0〈s〈T.height+l,其中T.height是存在R的后代的最大級(jí)別(level)。因此當(dāng)s=T.height+1時(shí),DS(R)=0。除了由Ds(R)定義的分割,可以有輔助分割L(R),其通過(guò)那些長(zhǎng)度小于9所選的跨距s的前綴來(lái)定義。L(R)中的前綴可以是那些存儲(chǔ)在Di(R)中的前綴,其中0<i<s,從而分割的總數(shù)目是IDs(R)l+l。這些分割被稱為T的第一級(jí)別分割。為了記錄T的第一級(jí)別分割,可以構(gòu)造帶有完全散列函數(shù)(perfecthashingfunction)的哈希表,用于由NGDs(R)定義的分割。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)s=T.height+l時(shí),所述哈希表是空的并且L(R)二T。這里,T可以由諸如MBT或HSST的庫(kù)結(jié)構(gòu)來(lái)表示。在進(jìn)一步的實(shí)施例中,當(dāng)s<T.height+1時(shí),上述分割才幾制可以;故遞歸地應(yīng)用到每個(gè)ID"R)I+1分割,以得到更低級(jí)別的(或下一級(jí)別)分割。然而,當(dāng)NGDs(R)是葉子時(shí),與相應(yīng)的前綴相關(guān)的下一跳可以被直接存儲(chǔ)于哈希表中。圖1B示出哈希表的表示。參考圖1B,用于L(R)的數(shù)據(jù)結(jié)構(gòu)的根可以^皮放置到存儲(chǔ)器中與哈希表臨近的位置。位字符串(bitstrings)Q(N),NeDs(R)定義了用于索引到(indexinto)哈希表的關(guān)鍵字。在一個(gè)實(shí)施例中,完4^列函數(shù)可以由J.Lunteren的出版于ProceedingsICCCN,2001年的"SearchingverylargeroutingtablesinfastSRAM",以及出版于ProceedingsGlobecom,2001年的"Searchingverylargeroutingtablesinwideembedded111611107''來(lái)定義。因此,在優(yōu)選實(shí)施例中,哈希表中的每個(gè)條目都可以表示四種消息類型之一類型l:^L進(jìn)一步分割為更低級(jí)別分割的分割類型001:葉子分割類型010:由庫(kù)結(jié)構(gòu)表示的分割類型000:未使用的哈希表?xiàng)l目參考圖2,對(duì)于類型l的條目,可以使用一位來(lái)標(biāo)識(shí)條目類型。此夕卜,從根R到分割的根N的路徑Q(N)、下一級(jí)別分割的跨距、表示下一級(jí)別完全軟列函數(shù)特征的掩碼(mask)、以及對(duì)于用于下一級(jí)別分割的哈希表的指針,可以存儲(chǔ)于存儲(chǔ)器中。對(duì)于剩余的三種類型,可以使用三位來(lái)標(biāo)識(shí)條目類型。對(duì)于條目類型-001,可以存儲(chǔ)Q(N)和與存儲(chǔ)在節(jié)點(diǎn)N中的前10綴相關(guān)聯(lián)的下一跳。對(duì)于類型-010,可以存儲(chǔ)Q(N)和對(duì)于用于分割的庫(kù)結(jié)構(gòu)的指針。類型-000條目可以被保留為未使用,并不存儲(chǔ)附加的信息。由于相同第一級(jí)別分割中的前綴對(duì)它們的前1位達(dá)成一致,所以在進(jìn)行更低級(jí)別的分割之前,可以將這些1位從相同的第一級(jí)別分割的前綴中移除。因此,在一個(gè)實(shí)施例中,可以通過(guò)長(zhǎng)度為0的前綴來(lái)替換長(zhǎng)度為1的前綴。可以在被依照本發(fā)明的實(shí)施例進(jìn)行分割的路由表中執(zhí)行查找功能。圖3示出一種用于在路由表中執(zhí)行查找的算法,所述路由表已經(jīng)被按照上述實(shí)施例進(jìn)行分割并且具有至少一個(gè)級(jí)別的分割。初始調(diào)用指定了第一級(jí)別分割、跨距s、第一哈希表?xiàng)l目ht的地址、完全散列函數(shù)h(由其掩碼來(lái)指定)、以及目的地d。在另一個(gè)實(shí)施例中,可以使用受控葉子推進(jìn)(controlledleafpushing)來(lái)減少查找所需要的最壞情況的存儲(chǔ)器訪問(wèn)數(shù)量。可以與未分割路由表中使用的標(biāo)準(zhǔn)葉子推進(jìn)(standardleafpushing)類似地執(zhí)行受控葉子推進(jìn),如V.Srinivasan和G.Varghese在FasterIPlookupsusingcontrolledprefixexpansion,SIGMETRICS,1998中所述。在受控葉子推進(jìn)中,沒(méi)有"被剝?nèi)?或"被移除"的長(zhǎng)度為0的前綴的每個(gè)庫(kù)結(jié)構(gòu),可以被給予長(zhǎng)度為0、其下一跳與最長(zhǎng)前綴的相同的前綴,所述最長(zhǎng)前綴與從該分割中的所有前綴剝?nèi)サ奈幌嗥ヅ洹T趯?shí)施實(shí)例中,庫(kù)結(jié)構(gòu)可以具有被剝?nèi)サ那熬Y00,01,101和110。所有這四種前綴可以是已經(jīng)具有相同數(shù)量的從它們的左側(cè)剝?nèi)サ奈弧1粍內(nèi)サ奈粚?duì)于所有四種前綴都是相同的。假設(shè)被剝?nèi)サ奈皇荗IO,那么由于該分割沒(méi)有長(zhǎng)度為0的前綴,所以該分割繼承長(zhǎng)度為o的前綴,該前綴的下一跳對(duì)應(yīng)于前綴的初始集中*、0、oi和oio中的最長(zhǎng)的。假i殳所述初始前綴集包括缺省的前綴,上述長(zhǎng)度為o的前綴的繼承確保分割中的每個(gè)搜索都找到匹配的前綴從而找到下一跳。本方法的實(shí)施例與查找算法lookupA在圖4中示出。在本發(fā)明的優(yōu)選實(shí)施例中,可以為每個(gè)完成的分割選擇合適的跨距。在一個(gè)實(shí)施例中,可以通過(guò)建立動(dòng)態(tài)編寫的遞歸來(lái)選則跨距。令B(N,l,r)為所需的最小存儲(chǔ)量,以通過(guò)庫(kù)結(jié)構(gòu)表示級(jí)別0到以N為根的T的子前綴樹的l。在一個(gè)特定的實(shí)施例中,庫(kù)結(jié)構(gòu)可以是MBT或HSST。在特定的實(shí)施例中,庫(kù)結(jié)構(gòu)可以是MBT或HSST。在該形式的庫(kù)結(jié)構(gòu)中的查找可使用不超過(guò)r的存儲(chǔ)器訪問(wèn)。令H(N,l)為跨距l(xiāng)哈希表所需的存儲(chǔ)量,所述哈希表用于從T的節(jié)點(diǎn)N到D1(N)中的節(jié)點(diǎn)的路徑。令C(N,1,r)為通過(guò)級(jí)別0直到ST(N)的1定義的子前綴樹的遞歸分割表示所需的最小存儲(chǔ)量。由遞歸分割的定義,對(duì)于C(N,1,r)中的1的選擇在1和N.height十1的范圍之間,其中N.height是節(jié)點(diǎn)N的高。當(dāng)1等于比N.height多一時(shí),ST(N)由庫(kù)結(jié)構(gòu)來(lái)表示。因此,其符合<formula>formulaseeoriginaldocumentpage12</formula>上述遞歸假設(shè)不需要存儲(chǔ)器訪問(wèn)來(lái)確定整個(gè)路由表是否已被存儲(chǔ)為庫(kù)結(jié)構(gòu)。而且,如果路由表已經(jīng)被分割,則不需要存儲(chǔ)器訪問(wèn)來(lái)確定用于第一級(jí)別分割的跨距和掩碼,以及輔助分割的結(jié)構(gòu)。如果該信息存儲(chǔ)在存儲(chǔ)寄存器中,則決定跨距和掩碼是可行的。然而,隨著穿過(guò)分割層級(jí)進(jìn)行搜索,需要從每個(gè)哈希表提取該信息。因此,每個(gè)類型1哈希表?xiàng)l目可以存儲(chǔ)該信息,或者該遞歸可以被改變以說(shuō)明在分割的每級(jí)需要的附加的存儲(chǔ)器訪問(wèn),以得到該信息。在前一種情況中,增加了每個(gè)哈希表?xiàng)l目的大小。在后一種情況中,遞歸變?yōu)?lt;formula>formulaseeoriginaldocumentpage12</formula>(3)<formula>formulaseeoriginaldocumentpage12</formula>(4)對(duì)于現(xiàn)實(shí)中的路由表的實(shí)驗(yàn)表明,當(dāng)輔助分割被限制為通過(guò)庫(kù)結(jié)構(gòu)來(lái)表示時(shí),存儲(chǔ)量需求減少。在該限制下,動(dòng)態(tài)編寫的遞歸變?yōu)閙in{//(#,/)+翠,/—l,r-1)+y"C必,妙"r—l)n,r〉0(5)C(7V,/,0)=ooC(N,l,r)的第二個(gè)參數(shù)l通常是節(jié)點(diǎn)的高N.height,因此可以丟棄該第二個(gè)參數(shù)。在本發(fā)明的另一個(gè)實(shí)施例中,通過(guò)允許用于記錄分割的方法是哈希表附加輔助結(jié)構(gòu)用于其長(zhǎng)度小于所述跨距的前綴,或者當(dāng)所述分割跨距為1時(shí)是帶有2'條目的簡(jiǎn)單數(shù)組,優(yōu)化是可能的。包括該增加的靈活性,但保持輔助分割祐束示為庫(kù)結(jié)構(gòu)的限制,該動(dòng)態(tài)編寫的遞歸變?yōu)閙in+翠,/-1,,'—1)+yY'(Q,g/^妙,,/l)Lmin{2'c+7"C(Q,0如一,r-1)}}(7)C(W,/,0)=oo(8)其中c是前端數(shù)組的每個(gè)位置需要的存儲(chǔ)量。再者,可以丟棄C中的第二個(gè)參數(shù)。包括前端數(shù)組作為記錄分割的機(jī)制需要額外的第五條目類型(Oll)用于哈希表?xiàng)l目。指示使用前端數(shù)組表示的分割的該第五類型,包括用于關(guān)鍵字Q(N)的字段,用于下一級(jí)別分割的跨距的另一字段,以及關(guān)于下一級(jí)別前端數(shù)組的指針。該第五條目類型(011)與第一類型(1)相似。兩者都表示被進(jìn)一步分割為下一級(jí)別分割的分割,并且包括用于關(guān)鍵字Q(N)和下一級(jí)別跨距的字段。然而,類型(1)條目包括指向下一級(jí)別哈希表的指針和用于該哈希表的掩碼,而類型(011)條目包括指向下一級(jí)別前端數(shù)組的指針。盡管優(yōu)選的是在遞歸分割的路由表中所有庫(kù)結(jié)構(gòu)都是相同類型的(即全部是MBT或全部是HSST),在本發(fā)明的另一實(shí)施例中,解決動(dòng)態(tài)編寫遞歸允許庫(kù)結(jié)構(gòu)的混合是可能的。下面是本發(fā)明的一個(gè)實(shí)施例的實(shí)現(xiàn)的實(shí)例。實(shí)例1-36位i殳計(jì)在一個(gè)實(shí)施實(shí)例中,對(duì)每個(gè)哈希條目分配36位。對(duì)于IPv4,使用了8位用于Q(N),2位用于下一級(jí)別分割的跨距,8位用于掩碼,以及17位用于指針。盡管對(duì)Q(N)分配了8位,跨距被限制為從五到八。因此,兩位足夠用來(lái)表示下一級(jí)別跨距。17位指針的使用使得能夠索引達(dá)到9Mbits(217x72)的SRAM。對(duì)于IPv6,相應(yīng)的位的分酉己分另'J為7、2、7和19。對(duì)于IPv6,跨距被限制為從四到七。因此七位足夠用于Q(N)并,且二位足夠用于下一級(jí)別跨距。19位指針能夠索引36MbitSRAM。對(duì)于下一跳字段,為IPv4和IPv6兩者都分配12位。對(duì)于庫(kù)結(jié)構(gòu),加強(qiáng)的庫(kù)被與HSST的端節(jié)點(diǎn)優(yōu)化(EBO,end-nodeoptimization)版本一起4吏用,因?yàn)槭境鏊鼈兪怯糜陟o態(tài)路由表的最有效的路由表結(jié)構(gòu)。非葉子EBO節(jié)點(diǎn)具有孩子指針,并且一些EBO葉子節(jié)點(diǎn)具有關(guān)于下一跳數(shù)組的指針。10位被分配給孩子指4十。這允許索引1024個(gè)節(jié)點(diǎn)??梢詫?duì)W.Lu和S.Sahni在Succinctrepresentationofstaticpacketclassifiers,UniversityofFlorida,2006,中開發(fā)的動(dòng)態(tài)編寫的方程進(jìn)行修改,用于最優(yōu)EBO的構(gòu)建,使得拒絕了需要多于1024個(gè)節(jié)點(diǎn)的EBO。對(duì)于下一跳數(shù)組指針,分配了22位。因?yàn)橄乱惶鴶?shù)組指針的數(shù)目是通過(guò)路由表中前綴的數(shù)目來(lái)限制的,并且下一跳數(shù)組存儲(chǔ)在與存儲(chǔ)其余的EBO數(shù)據(jù)結(jié)構(gòu)不同的存儲(chǔ)部分,對(duì)于下一跳數(shù)組指針?lè)峙涞?2位足夠用于222>4百萬(wàn)前綴。對(duì)于下一跳本身,分配了12位。實(shí)例2-72位設(shè)計(jì)在另一個(gè)實(shí)施實(shí)例中,對(duì)每個(gè)哈希表?xiàng)l目分配72位。對(duì)于IPv4和IPv6兩者,使用了17位用于Q(N),五位用于下一級(jí)別分割的跨距,17位用于掩碼,以及19位用于指針??缇啾幌拗圃?和17之間。而且,用于L(R)中的被剝?nèi)サ那熬Y*(如果有)的下一跳被存儲(chǔ)在每個(gè)哈希表?xiàng)l目中。實(shí)現(xiàn)分割使得在每個(gè)節(jié)點(diǎn)N,在使用被表示為EBO的L(R)分割以及用于剩余分割的(完全)散列表,和執(zhí)行L(R)-(^中被剝?nèi)サ那熬Y的前綴擴(kuò)展之間做出選擇,將這些擴(kuò)展的前綴分布到剩余的分割中,然后構(gòu)造哈希表用于修改的分割集。類型l節(jié)點(diǎn)使用指定的位,用以在它們可能指向的不同的哈希表類型之間進(jìn)行區(qū)分。實(shí)驗(yàn)結(jié)果為了評(píng)估遞歸分割機(jī)制的效果,使用MicrosoftVisualC十+編譯器以02優(yōu)化級(jí)別編譯了用于所描述的實(shí)例的C十+代碼,并在3.06GHz的Pentium4PC上運(yùn)4亍。為了基準(zhǔn)目的,路由表駐留在QDRIISRAM(雙脈沖),其支持一次存儲(chǔ)器訪問(wèn)72位的數(shù)據(jù)搜索。所述遞歸分割機(jī)制與下列相比較1)一個(gè)級(jí)別的分割機(jī)制OLP,其是Lampsonetal中使用的前端數(shù)組的歸納(Lampson,Srinivasan和Varghese,IPlookupusingmulti-wayandmulticolumnsearch,IEEEINFOCOM,1998);以及2)非分割的EBO。OLP僅僅進(jìn)行一個(gè)級(jí)別的分割并使用EBO作為庫(kù)結(jié)構(gòu)。然而,不像Lampsonetal將前端數(shù)組的大小固定為216,OLP選擇最優(yōu)的、依賴于數(shù)據(jù)的大小用于前端數(shù)組。注意使用大小為0的前端數(shù)組等于沒(méi)有使用前端數(shù)組。在給定的數(shù)據(jù)集上,發(fā)現(xiàn)OLP比限制本發(fā)明的遞歸分割機(jī)制使得僅在根級(jí)別進(jìn)行分割要好。編寫所有的程序,以便構(gòu)造最小化最差情況下查找所需的存儲(chǔ)器訪問(wèn),以及最小化用以存儲(chǔ)構(gòu)造的數(shù)據(jù)結(jié)構(gòu)所需的總存儲(chǔ)量的查找結(jié)構(gòu)。使用了六個(gè)IPv4路由表Aads、MaeWest、RRCOl、RRC04、AS4637和AS1221。這些路由表中前綴的數(shù)目分別是17486、29608、103555、109600、173501和215487。表1示出用于測(cè)試的查找結(jié)構(gòu)的存儲(chǔ)器訪問(wèn)數(shù)目和存儲(chǔ)量需求。RP(k)(K=4,5)表示空間最優(yōu)遞歸分割結(jié)構(gòu),其每個(gè)搜索最多需要k存儲(chǔ)器訪問(wèn)。圖5和6繪出此數(shù)據(jù)。表1:IPv4表所需的存儲(chǔ)器訪問(wèn)和總存儲(chǔ)量(K字節(jié))15數(shù)據(jù)庫(kù)36位條目72位條目OUPEBORP(4)RP(5)RP(4)RP(5)訪問(wèn)存儲(chǔ)量訪問(wèn)存儲(chǔ)量Aads77599061414168MaeWest124981431004186113RRC0139230044230945076335RRC04417318474327426876354AS463759147366948547176530AS12218616111080634530416664對(duì)于存儲(chǔ)器訪問(wèn)計(jì)數(shù),RP(4)在所有六項(xiàng)數(shù)據(jù)集上優(yōu)于EBO—個(gè)或兩個(gè)訪問(wèn)。OLP在給定數(shù)據(jù)集中的三項(xiàng)上優(yōu)于EBO—個(gè)訪問(wèn),并在剩余的3項(xiàng)數(shù)據(jù)集上優(yōu)于兩個(gè)訪問(wèn)。對(duì)于存儲(chǔ)器訪問(wèn)計(jì)數(shù),RP(5)在六項(xiàng)數(shù)據(jù)集中的四項(xiàng)上優(yōu)于EBO—個(gè)訪問(wèn)。在最大數(shù)據(jù)集(AS1221)上,OLP需要比RP(4)多一個(gè)訪問(wèn),并在剩余的五項(xiàng)上與RP(4)持平。在所有的測(cè)試集上,36位實(shí)現(xiàn)比相應(yīng)的72位實(shí)現(xiàn)需要更少的存儲(chǔ)量。實(shí)際上,36位實(shí)現(xiàn)所需的在72位實(shí)現(xiàn)所需存儲(chǔ)量的80%到98%之間,平均值為92%,帶有6%的標(biāo)準(zhǔn)偏差。表2給出通過(guò)使用36位條目的RP(4)的存儲(chǔ)量需求進(jìn)行歸一化(normalized)的查找結(jié)構(gòu)的存儲(chǔ)量需求。比起帶有36位條目的RP(4),OLP需要更多的存儲(chǔ)量,從21%到544%,而EBO需要更少的存儲(chǔ)量,在9%到25%之間。在所有六種表示中,使用36位條目的RP(5)是存儲(chǔ)效率最高的。比起EBO,RP(5)的該實(shí)現(xiàn)使用更少的存儲(chǔ)量,在5%到13%之間;平均降低是,存儲(chǔ)量需求為10%,標(biāo)準(zhǔn)偏差為3%。表2:對(duì)于由使用36位條目的RP(4)的存儲(chǔ)量需求歸一化的IPv4存儲(chǔ)量需求的統(tǒng)計(jì)算法最小值最大值平均值標(biāo)準(zhǔn)偏差4吏用36位條目的RP(5)0.710.800.770.03使用72位條目的RP(4)1.131.251.160.0516<table>tableseeoriginaldocumentpage17</column></row><table>總的來(lái)"i兌,RP(4)的36位實(shí)現(xiàn)在最差情況的存儲(chǔ)器訪問(wèn)和總存儲(chǔ)量需求上均優(yōu)于OLP,結(jié)果是在最差情況的存儲(chǔ)器訪問(wèn)上比EBO有25%到50%的降低。該降低的出現(xiàn)以所需存儲(chǔ)量的增加為代價(jià),在10%和37%之間。RP(5)的36位實(shí)現(xiàn)改進(jìn)了查找時(shí)間,相對(duì)于庫(kù)EBO結(jié)構(gòu)高達(dá)20%,并且平均減少了10%的總存儲(chǔ)量。對(duì)于IPv6實(shí)驗(yàn),使用了833前綴的AS1221-Telstra路由表以及六個(gè)綜合IPv6表。由于目前IPv6地址分配機(jī)制最多使用64位,因而長(zhǎng)于64的前綴被從AS1221-Telstra表移除(參見(jiàn)M.Wang,S.Deering,T.Hain和LDunn,Non-randomGeneratorforIPv6Tables,12thAnnualIEEESymposiumonHighPerformanceInterconnects,2004)。對(duì)于綜合表,包括001及(51^的13隨機(jī)位的16位字符串被預(yù)留(prepend)^:個(gè)IPv4前綴(參見(jiàn)IPv6AddressAllocationandAssignmentPolicy(APN1C))。如果該預(yù)留沒(méi)有使前綴長(zhǎng)度至少加一倍,則增補(bǔ)足夠數(shù)目的隨機(jī)位,使得前綴的長(zhǎng)度翻倍。在該預(yù)留和可能的增補(bǔ)之后,最后的位被從前綴的四分之一丟棄,以維持偶數(shù)長(zhǎng)度前綴與真實(shí)路由表中觀測(cè)的奇數(shù)長(zhǎng)度的3:l的比例。給予每個(gè)綜合表與IPv4表相同的名稱,所述綜合表被從該IPv4表合成。AS1221-TelstraIPv6表被命名為AS1221*,以與從IPv4AS1221表合成的IPv6表區(qū)分。表3給出對(duì)于IPv6數(shù)據(jù)集的存儲(chǔ)器訪問(wèn)的數(shù)量和存儲(chǔ)量需求。圖7和8繪出此數(shù)據(jù)。表3:IPv6表所需要的存儲(chǔ)器訪問(wèn)和總存儲(chǔ)量(K字節(jié))<table>tableseeoriginaldocumentpage17</column></row><table><table>tableseeoriginaldocumentpage18</column></row><table>對(duì)于IPv4實(shí)驗(yàn)的情況,在查找復(fù)雜度方面RP(4)是最優(yōu)的。尤其是,對(duì)于查找,RP(4)較EBO需要一到三個(gè)更少的存儲(chǔ)器訪問(wèn)。RP(4)和OLP在七項(xiàng)數(shù)據(jù)集中的五項(xiàng)上持平。在一項(xiàng)數(shù)據(jù)集上,RP(4)需要3個(gè)更少的存儲(chǔ)器訪問(wèn),在另一項(xiàng),其需要一個(gè)更少的訪問(wèn)。RP(5)在五項(xiàng)數(shù)據(jù)集上優(yōu)于EBO—或兩個(gè)訪問(wèn)并在剩余的兩項(xiàng)上持平。對(duì)比IPv4表的實(shí)驗(yàn),遞歸分割的72位實(shí)現(xiàn)較36位實(shí)現(xiàn)普遍需要更少的存儲(chǔ)量。在遞歸分割的14項(xiàng)測(cè)試(RP(4)和RP(5))的11項(xiàng)中,72位實(shí)現(xiàn)比36位實(shí)現(xiàn)所需要的存儲(chǔ)量少,而在剩余的三項(xiàng)測(cè)試中多。由使用72位條目所需的存儲(chǔ)量進(jìn)行歸一化的使用36位哈希條目的遞歸分割結(jié)構(gòu)的存儲(chǔ)量范圍為0.9到49.9。數(shù)據(jù)集AS122P遇到最大的不同。當(dāng)排除AS122P時(shí),用于剩余六項(xiàng)數(shù)據(jù)集的歸一化的數(shù)量在0.卯和1.15之間,并且平均值和標(biāo)準(zhǔn)偏差為1.00和0.00。對(duì)于數(shù)據(jù)集AS1221*,PR(4)的72位實(shí)現(xiàn)將EBO的存儲(chǔ)器訪問(wèn)降低了三,但是需要17倍的存儲(chǔ)量。RP(5)的相同實(shí)現(xiàn)比庫(kù)EBO結(jié)構(gòu)需要24%的更多的存儲(chǔ)量。另一方面,RP(6)需要3.8K字節(jié),因此,17%的存儲(chǔ)量降低伴隨一個(gè)存儲(chǔ)器訪問(wèn)的降低。對(duì)于該數(shù)據(jù)集,OLP較EBO沒(méi)有帶來(lái)改進(jìn),因此,OLP結(jié)果使用大小為0的前端表。對(duì)于剩余的六項(xiàng)數(shù)據(jù)集,RP(5)需要比EBO略少的存儲(chǔ)量。在六項(xiàng)數(shù)據(jù)集的五項(xiàng)中,OLP比RP(4)需要更多的存儲(chǔ)量。在第六項(xiàng)數(shù)據(jù)集AS1221上,OLP使用更少的存儲(chǔ)量。然而,當(dāng)對(duì)于最差情況的存儲(chǔ)器訪問(wèn)使用相同預(yù)算時(shí),使用72位條目的RP(5)在AS1221上比OLP需要9%的更少的存儲(chǔ)量。表4:由使用72位條目的RP(4)所需的存儲(chǔ)量進(jìn)行歸一化的IPv6數(shù)據(jù)。這里數(shù)據(jù)集AS122P被排除算法最小值最大值平均值標(biāo)準(zhǔn)偏差使用36位條目的RP(4)O.卯1.151.000.114吏用72位條目的RP(5)0.740.980.860.10使用72位條目的RP(5)0.730.970.850.10OUP0.811.671.230.31EBO0.761.000.870.11表4表示對(duì)于剩余的六項(xiàng)數(shù)據(jù)集,由使用72位條目的RP(4)所需的存儲(chǔ)量進(jìn)行歸一化的統(tǒng)計(jì)。如所看到的,由使用72位條目的RP(4)歸一化的EBO的存儲(chǔ)量范圍為0.76到1.00,平均值和標(biāo)準(zhǔn)偏差為0.87和0.11。對(duì)于OLP相應(yīng)的歸一化數(shù)字為0.81、1.67、1.23和0.31。雖然OLP和遞歸分割都能夠提高EBO的查找性能,但是OLP以大得多的存儲(chǔ)量開銷來(lái)實(shí)現(xiàn)。實(shí)驗(yàn)表明遞歸分割超過(guò)標(biāo)準(zhǔn)前端數(shù)組方法的甚至歸納版本的優(yōu)越性。對(duì)于IPv4表,帶有36位條目的遞歸分割優(yōu)于使用更大的哈希表?xiàng)l目(例如72位),而對(duì)IPv6表,72位條目通常產(chǎn)生降低的存儲(chǔ)量需求。使用甚至更大的哈希表?xiàng)l目(例如144位)沒(méi)有產(chǎn)生關(guān)于IPv4和IPv6測(cè)試數(shù)據(jù)的RP(4)或RP(5)所需的存儲(chǔ)量上的降低。基于前述描述,本發(fā)明可以使用計(jì)算機(jī)程序或包括計(jì)算機(jī)軟件、固件、硬件或它們的任何組合或子集的工程技術(shù)來(lái)實(shí)現(xiàn)。任何如此產(chǎn)生的有計(jì)算機(jī)可讀代碼裝置的程序,跟據(jù)本發(fā)明,可以在一個(gè)或更多計(jì)算機(jī)可讀介質(zhì)內(nèi)實(shí)施或提供,從而做出計(jì)算機(jī)程序產(chǎn)品,即一種產(chǎn)品。計(jì)算機(jī)可讀介質(zhì)可以是,例如,固定的(硬)盤、軟盤、光盤、磁帶、可編程邏輯設(shè)備、諸如只讀存儲(chǔ)器(ROM)的半導(dǎo)體存儲(chǔ)器等等,或諸如因特網(wǎng)或其他通信網(wǎng)或鏈路的任何發(fā)送/接收介質(zhì)??梢酝ㄟ^(guò)從一種介質(zhì)直接執(zhí)行代碼、通過(guò)從一種介質(zhì)將代碼拷貝到另一種介質(zhì)、或通過(guò)在網(wǎng)絡(luò)上傳送該代碼來(lái)制作和/或使用包括計(jì)算機(jī)代碼的產(chǎn)品。計(jì)算機(jī)科學(xué)領(lǐng)域的技術(shù)人員將能夠容易地將如所描述的那樣創(chuàng)建的軟19件與適合的通用或?qū)S糜?jì)算機(jī)硬件,包括可編程邏輯設(shè)備相結(jié)合,以創(chuàng)建實(shí)施本發(fā)明的方法的計(jì)算機(jī)系統(tǒng)或計(jì)算機(jī)子系統(tǒng)。用于制作,使用或出售本發(fā)明的設(shè)備可以是一個(gè)或更多處理系統(tǒng),包括但不限于,中央處理單元(CPU)、存儲(chǔ)器、存儲(chǔ)設(shè)備、通信鏈路和設(shè)備、服務(wù)器、I/O設(shè)備或一個(gè)或更多處理系統(tǒng)的任何子部件,包括實(shí)施本發(fā)明的軟件、固件、硬件或它們的任何組合或子集??梢詮逆I盤、鼠標(biāo)、筆、語(yǔ)音、觸摸屏或人類可以將數(shù)據(jù)輸入到計(jì)算機(jī)中的任何其他裝置來(lái)接收用戶輸入,包括通過(guò)諸如應(yīng)用程序的其他程序。此處參考或者引用的所有專利、專利申請(qǐng)和出版物,都通過(guò)引用,在它們與本說(shuō)明書的明確教導(dǎo)一致的p艮度內(nèi),將它們完全并入,包括所有的圖和表。應(yīng)該理解,此處描述的實(shí)例和實(shí)施例僅用于說(shuō)明的目的,并且將對(duì)本領(lǐng)域技術(shù)人員帶來(lái)各種修改或改變的暗示,并且應(yīng)該包括在本發(fā)明的精神和4又利范圍內(nèi)。權(quán)利要求1.一種其上具有存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),所述數(shù)據(jù)結(jié)構(gòu)包括二進(jìn)制前綴樹T,表示用于路由分組的所有可能目的地址的前綴集,所述T包括第一級(jí)別分割,其中所述第一級(jí)別分割包括通過(guò)選擇用于所述第一級(jí)別分割的跨距s形成的子前綴樹,其中0<s≤T.height+1,其中T.height是其上具有根R的后代的最大級(jí)別1,其中所述子前綴樹的節(jié)點(diǎn)包括從T的所述根R到子前綴樹的根N的路徑Q(N),用于下一級(jí)別分割的跨距s,表示下一級(jí)別完全散列函數(shù)特征的掩碼,以及關(guān)于用于所述下一級(jí)別分割的哈希表的指針;輔助前綴樹,表示具有小于所述第一級(jí)別分割的跨距s的級(jí)別l的前綴,其中所述輔助前綴樹的節(jié)點(diǎn)包括所述根R;其中,第一級(jí)別分割的數(shù)量是|Ds(R)|+1,其中Ds(R)表示根R的級(jí)別l后代,其中l(wèi)=s,通過(guò)對(duì)每個(gè)所述|Ds(R)|+1分割遞歸地重復(fù)所述第一級(jí)別分割的子前綴樹構(gòu)成,來(lái)形成所述下一級(jí)別分割。2.如權(quán)利要求1所述的數(shù)據(jù)結(jié)構(gòu),其中,通過(guò)從包括MBT和HSST的組選擇的庫(kù)結(jié)構(gòu)來(lái)表示所述前綴樹T、所述第一級(jí)別分割、所述輔助前綴樹以及所述下一級(jí)別分割中的至少一個(gè)。3.如權(quán)利要求2所述的數(shù)據(jù)結(jié)構(gòu),其中所述庫(kù)結(jié)構(gòu)是HSST的端節(jié)點(diǎn)優(yōu)化版本。4.如權(quán)利要求1所述的數(shù)據(jù)結(jié)構(gòu),其中每個(gè)節(jié)點(diǎn)被分配36位,8位用于所述掩碼,8位用于具有被限制為從5到8的跨距的所述路徑Q(N),2位用于所述下一級(jí)別分割的跨距,以及17位用于所述指針。5.如權(quán)利要求1所述的數(shù)據(jù)結(jié)構(gòu),其中每個(gè)節(jié)點(diǎn)被分配36位,7位用于所述掩碼,7位用于所述路徑Q(N),2位用于所述下一級(jí)別分割的跨距,以及19位用于所述指針。6.如權(quán)利要求1所述的數(shù)據(jù)結(jié)構(gòu),其中每個(gè)節(jié)點(diǎn)被分配72位,17位用于所述掩碼,17位用于所述路徑Q(N),5位用于所述下一級(jí)別分割的跨距,以及19位用于所述指針。7.—種用于使用數(shù)據(jù)結(jié)構(gòu)執(zhí)行查找的方法,所述數(shù)據(jù)結(jié)構(gòu)包括含有輔助分割和子前綴樹分割的前綴樹T的第一級(jí)別分割,以及具有一個(gè)或更多用于記錄T的所述第一級(jí)別分割的條目類型的哈希表,所述方法包括由所述哈希表的條目的第一位或前三位標(biāo)識(shí)分割的所述條目類型,其中類型1條目類型表示被進(jìn)一步分割為下一級(jí)別分割的分割,其中類型001條目類型表示葉子分割,其中類型010條目類型表示由庫(kù)結(jié)構(gòu)表示的分割,以及其中類型OOO條目類型表示未使用的哈希表?xiàng)l目;從目的地址d剝?nèi)デ皊位,其中s是從所述前綴樹的根R到所述子前綴樹分割的根N的跨距,其中所述前s位定義了用于索引到所述p合希表的關(guān)鍵字;以及如果所述條目類型是所述類型000,或者如果所述前s位與所述,合希表中的關(guān)鍵字不匹配,則執(zhí)行所述輔助分割的搜索,以及返回所述目的地址d;如果所述條目類型是所述類型001,貝'J執(zhí)行葉子的搜索,以及返回用于所述目的地址d的下一跳;如果所述條目類型是所述類型010,則執(zhí)行所述庫(kù)結(jié)構(gòu)的搜索,以及返回關(guān)于所述目的地址d的指針;如果所述條目類型是所述類型1,則通過(guò)重復(fù)該用于執(zhí)行查找的方法來(lái)執(zhí)行所述下一級(jí)別分割的搜索。8.如權(quán)利要求7所述的方法,其中所述數(shù)據(jù)結(jié)構(gòu)還包括類型011條目類型,其中所述類型011條目類型表示用于記錄分割的前端數(shù)組分割,其中所述前端數(shù)組分割的節(jié)點(diǎn)包括關(guān)鍵字Q(N)、用于下一級(jí)別分割的跨距s以及關(guān)于所述下一級(jí)別前端數(shù)組的指針,所述方法還包括使用所述前端數(shù)組分割來(lái)記錄所述分割。9.如權(quán)利要求8所述的方法,還包括用于具有級(jí)別1的前綴的跨距1,所述級(jí)別1小于用于所述下一級(jí)別分割的s,其中當(dāng)所述分割跨距是1時(shí),所述前端數(shù)組分割具有2'個(gè)條目。全文摘要一種被遞歸分割的靜態(tài)路由表,所述數(shù)據(jù)結(jié)構(gòu)包括含有子前綴樹的第一級(jí)別分割和輔助前綴樹。所述子前綴樹的節(jié)點(diǎn)包括從前綴樹T的根R到子前綴樹的根N的路徑Q(N)、用于下一級(jí)別分割的跨距s、表示下一級(jí)別完全散列函數(shù)特征的掩碼以及關(guān)于用于所述下一級(jí)別分割的哈希表的指針。通過(guò)從包括MBT和HSST的組選出的庫(kù)結(jié)構(gòu)表示前綴樹T、第一級(jí)別分割、輔助前綴樹及下一級(jí)別分割中的至少一個(gè)。文檔編號(hào)H04L12/28GK101507191SQ200780031667公開日2009年8月12日申請(qǐng)日期2007年8月24日優(yōu)先權(quán)日2006年8月25日發(fā)明者S·K·薩尼,盧文成申請(qǐng)人:佛羅里達(dá)大學(xué)研究基金公司