專利名稱:一種多級索引路由查找方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通訊領(lǐng)域中用于路由器、三層交換機及IP構(gòu)建的通訊傳輸設(shè)備的路由查找方法,特別涉及一種通訊傳輸設(shè)備節(jié)省內(nèi)存開銷的多級索引路由查找方法及裝置。
背景技術(shù):
IP網(wǎng)絡(luò)傳輸中或者以IP構(gòu)建的通訊分組網(wǎng)中,路由查找是極其重要的一個部分?,F(xiàn)有技術(shù)公開了一種多分枝tire樹查找算法(如P.Gupta,S.Lin,andN.McKeown,“Routing lookups in hardware at memory access speeds”,inProceedings of INFOCOM,Mar.1998),是一種快速高效的路由查找算法,它是通過IP地址的某一段比特位依次查找一個tire樹結(jié)構(gòu)的索引表,找到對應(yīng)的路由。該算法雖然查找效率極高,但內(nèi)存開銷較大?,F(xiàn)有技術(shù)公開的一種改進算法(如Nen-Fu Huang,Shi-Ming Zhao,“A novel IP-routing lookup schemeand hardware architecture for multigigabit switching routers”.IEEE Journal onSelected Areas in Communications June 19991093-1104)是加入了索引壓縮機制,稱為二層多分枝壓縮tire樹算法。壓縮后的索引一定程度上減少了內(nèi)存開銷,但是其內(nèi)存開銷仍很大,同時由于索引項數(shù)與添加的路由掩碼長度等特征有關(guān),使得不能預(yù)知索引表的內(nèi)存大小,很難適用于內(nèi)存池集的內(nèi)存管理方式。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于,提供一種通訊傳輸設(shè)備多級索引路由查找方法及裝置,適用于內(nèi)存配置較小但需快速轉(zhuǎn)發(fā)的網(wǎng)絡(luò)設(shè)備,其在保持其高效查找的前提下,降低索引表的內(nèi)存開銷。
為達到上述目的,本發(fā)明提供的多級索引路由查找方法,用于IP網(wǎng)絡(luò)傳輸設(shè)備中路由的查找,其特征在于,包括根據(jù)固定容量的路由表,選取索引級數(shù)及索引步長,以確定最小的索引表,并通過路由表中目的地址獲取在索引塊偏移的步驟;通過標(biāo)志位判斷索引值是路由序號還是次級索引的步驟,若判斷是路由序號則輸出路由,否則在下一級索引中繼續(xù)查找;其中,所述多級索引間采用索引復(fù)用的形式,與所述索引塊中的索引對應(yīng)的標(biāo)志位以標(biāo)志位塊的形式連續(xù)存儲,且所述索引塊與所述標(biāo)志位塊分別存儲。
上述路由查找方法,其特征在于,所述索引表的索引項最大個數(shù)通過下式計算獲取L=2x1+2x2M+...+2xi+...+2xnM,]]>其中,n為索引級數(shù),M為路由表容量,x1,x2…xi…xn依次為第1、2…i…n索引級的索引步長,且x1+x2+…+xi…+xn=IP地址長度,xi<32,i<n<32。
上述路由查找方法,其特征在于,所述索引塊是由索引組成的數(shù)組,所述索引級數(shù)中,除第一級索引外,每級索引都存在至少一個所述索引塊,所述每個索引塊在本級索引中都具有唯一的編號。
上述路由查找方法,其特征在于,所述索引級數(shù)中,除第一級索引之外的各級索引步長相等,所述每級索引的索引塊個數(shù)小于所述路由表的項數(shù),如果所述索引步長為x,則該級索引的所述索引塊有2x項索引。
上述路由查找方法,其特征在于,所述索引級數(shù)中,除最后一級索引外,每個索引塊都有一個索引標(biāo)志位塊與之對應(yīng),其中所述標(biāo)志位塊中的一個比特位對應(yīng)所述索引塊中的一個索引項。
上述路由查找方法,其特征在于,每個所述的索引項占16比特,所述索引項用于記錄路由表序號或者次級索引塊的編號,由與所述索引塊相對應(yīng)的標(biāo)志位塊中的一個比特位來區(qū)分。
上述路由查找方法,其特征在于,所述標(biāo)志位塊中的標(biāo)志位置位表示所述索引項中存儲著路由表序號,否則表示存儲著次級索引表的編號。
上述路由查找方法,其特征在于,所述索引復(fù)用用1比特表示。
上述路由查找方法,其特征在于,所述通過目的地址獲取在索引塊偏移的步驟進一步包括根據(jù)第一級索引的步長L1取出所述目的地址的前L1個比特作為下標(biāo)的步驟;
將所述下標(biāo)作為偏移在所述索引塊中獲取索引值及其對應(yīng)的標(biāo)志位的步驟。
上述路由查找方法,其特征在于,所述通過標(biāo)志位判斷索引值是路由序號還是次級索引的步驟進一步包括判斷所述標(biāo)志位是否為零的步驟,若為零,則所述索引值為路由序號,否則,所述索引值為次級索引,在下一級索引中取出索引塊循環(huán)查找直至找到路由序號。
進一步的,本發(fā)明還提供了一種利用上述路由查找方法的多級索引路由查找裝置,用于IP網(wǎng)絡(luò)傳輸設(shè)備中,該裝置包括路由表,用于根據(jù)固定容量的路由表,選取索引級數(shù)及索引步長,以確定最小的索引表,并通過該路由表中目的地址獲取在索引塊偏移;多級索引模塊,包括標(biāo)志位塊和索引塊,用于通過標(biāo)志位判斷索引值是路由序號還是次級索引的步驟,若判斷是路由序號則輸出路由,否則在下一級索引中繼續(xù)查找;其中,所述多級索引間采用索引復(fù)用的形式,與所述索引塊中的索引對應(yīng)的標(biāo)志位以標(biāo)志位塊的形式連續(xù)存儲,且所述索引塊與所述標(biāo)志位塊分別存儲。
與現(xiàn)有技術(shù)相比,因為采用了靈活的索引結(jié)構(gòu),同時采用索引復(fù)用的形式和標(biāo)志位連續(xù)存儲的方法,極大地減小了索引表的內(nèi)存消耗的技術(shù),新的索引算法既保留了多分枝tires樹索引表的查找效率,又極大地節(jié)省了索引表的內(nèi)存消耗,對于等量的路由表,新的索引算法在最差情形下的內(nèi)存消耗是原有算法的50%或者更少。
圖1是索引塊與標(biāo)志位塊的對應(yīng)關(guān)系圖;圖2是本發(fā)明多級索引路由查找流程圖;圖3是本發(fā)明實施例多級索引路由查找示意圖;具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明進行詳細(xì)描述,以更進一步了解本發(fā)明之目的、方案及功效,但并非作為對本發(fā)明所附權(quán)利要求的限制。
本發(fā)明的多級索引路由查找方法是一種通過索引表級聯(lián)的形式映射路由的多層多分枝tire樹,由多級索引構(gòu)成,同一級索引的步長相等,但不同級之間的索引步長不要求相等。多級索引表的表項,稱為索引項,由索引項組成的數(shù)組稱為索引塊,tire樹的每個節(jié)點是一個索引塊。
在本發(fā)明中,首先給出了索引表最小內(nèi)存消耗的計算公式,使得路由表設(shè)計者可以根據(jù)路由表容量靈活設(shè)置索引級數(shù)和索引表大?。黄浯尾捎昧怂饕龔?fù)用的形式和標(biāo)志位連續(xù)存儲的方法,極大地減小了索引表的內(nèi)存消耗。具體實現(xiàn)如下索引級數(shù)和索引步長可以根據(jù)路由表容量靈活設(shè)定,只需保證各級索引的步長總和為IP地址長度(如IPv4路由索引表的總步長為32)。所謂步長,是指索引所能表征的IP地址的位數(shù)。如果索引級數(shù)為n,索引步長為x,則該級索引的索引塊有2的x次冪項索引,步長依次為x1,x2,…,xn,路由表容量為M,則所需的索引項最大個數(shù)為L=2x1+2x2M+...+2xi+...+2xnM]]>其中,x1+x2+…xi…+xn=32(xi<32,i<n<32)在路由表容量一定的前提下,可以通過選取適當(dāng)?shù)乃饕墧?shù)及索引步長,計算最小的索引表。不要求各級索引步長相等,但建議除第一級索引之外的各級索引步長相等,這樣可以使數(shù)據(jù)結(jié)構(gòu)簡單。建議步長不小于3。
在多級索引中,除第一級索引外,每級索引都有可能存在多個索引塊。一個索引塊在本級索引中都具有唯一的編號。每一級的索引塊個數(shù)不可能超過路由表的項數(shù)。除最后一級索引之外,每個索引塊都有一個索引標(biāo)志位塊與之對應(yīng)。標(biāo)志位塊中的一個bit位對應(yīng)索引塊中的一個索引,用來區(qū)分該索引所表征的含義。也就是說,索引塊中所有索引項所對應(yīng)的標(biāo)志位被存儲在一個連續(xù)的內(nèi)存空間內(nèi),稱之為標(biāo)志位塊。每個索引項是一個16比特的序號,用來記錄路由表序號或者次級索引塊的編號,由于索引項的序號是復(fù)用的,所以需要由與索引塊相對應(yīng)的標(biāo)志位塊中的一個bit標(biāo)志位來區(qū)分索引項的含義。標(biāo)志位置位表示索引項中存儲著路由表序號,否則表示存儲著次級索引表的編號。本發(fā)明中提出的算法最大可以支持65536條路由。
如果將標(biāo)志位與索引存放到一起,由于內(nèi)存的按字節(jié)存儲以及字節(jié)對齊的問題,會導(dǎo)致標(biāo)志位實際上將占用2字節(jié)而非1bit,所以引入了標(biāo)志位塊的概念,將各標(biāo)志位連續(xù)存儲,即標(biāo)志位塊與索引塊分別存儲。圖1是索引塊與標(biāo)志位塊的對應(yīng)關(guān)系圖,參考圖1,標(biāo)志位塊100的每一個比特位與索引塊200的每一項在邏輯上一一對應(yīng),用以區(qū)分索引項表征的內(nèi)容。圖1中索引塊200有8項索引,對應(yīng)的標(biāo)志位塊100便有8bits,即一個字節(jié)。每項索引與一個標(biāo)志bit位對應(yīng),如果該bit為0,則表示索引含義為路由表序號(路由表為一數(shù)組,每條路由在路由表中有唯一編號,稱為路由表序號);反之,表示次級索引塊在次級索引中的編號。如果索引塊200的項數(shù)超過8,那么對應(yīng)的標(biāo)志位塊100將不只一個字節(jié)。第m項索引對應(yīng)的標(biāo)志位在標(biāo)志位塊100中的第m/8個字節(jié)中。由于可以采用移位運算,所以該除法運算的代價很小。
其中,索引項與標(biāo)志位的對應(yīng)關(guān)系可以預(yù)先存放在一個數(shù)組中,這樣當(dāng)要取得索引項所對應(yīng)的標(biāo)志位時,只需將索引項下標(biāo)作為數(shù)組下標(biāo),將取出的映射關(guān)系與標(biāo)志位做與運算即可。
本發(fā)明的路由查找過程與原有的索引算法類似,主要是通過待查地址的一段bits計算在索引塊中的偏移,通過標(biāo)志位判斷是否需要在下一級索引表中查找,如果不需要則說明索引就是路由序號,如果需要則根據(jù)索引找出下一級索引塊,在下一級索引中繼續(xù)查找,如此反復(fù),直到找到路由為止,參考圖2,詳細(xì)說明本發(fā)明的路由查找流程,其包括步驟S201,假設(shè)第一級索引的步長為L1,取出目的地址的前L1個比特作為下標(biāo)。
步驟S202,將下標(biāo)作為偏移,在索引塊中獲取索引值,在標(biāo)志位塊中獲取與索引值對應(yīng)的標(biāo)志位。
步驟S203,判斷標(biāo)志位是否位零?如為零執(zhí)行步驟S204,否則執(zhí)行步驟S205。
步驟S204,標(biāo)志位為零,則索引值為路由序號,在路由表中取出路由后輸出。
步驟S205,標(biāo)志位不位零,則索引值位次級索引編號,在次級索引中取出索引塊。
步驟S206,假設(shè)本級索引的步長為Lx,取出目的地址的下Lx個比特作為下標(biāo)后循環(huán)執(zhí)行步驟S202直至找到路由為止。
圖3是本發(fā)明應(yīng)用的實施例,如圖3所示,圖中顯示了一個三級索引表結(jié)構(gòu)的路由查找示意,步長依次為16、8、8;路由表中存在一條前綴地址為0x01000000,掩碼長度為20的路由。因為路由掩碼長度大于第一級索引的步長16而小于前兩級索引步長的總和24,所以表達該路由需要兩級索引,因此圖中沒有畫出第三級索引。如果要查找地址0x01020304所對應(yīng)的路由,主要流程如下(1)因為第一級索引的步長為16,所以取待查地址0x01020304所對應(yīng)的前16bits,即將0x0102作為第一級索引塊的偏移量,找到索引及其對應(yīng)的標(biāo)志位。
(2)標(biāo)志位為1,索引項為26。因為標(biāo)志位為1,所以索引26代表次級索引表的編號,取出第二級索引中編號26的索引表。
(3)因為第二級索引的步長為8,所以截取待查地址0x01020304的次8bits即0x03,做為第二級索引塊的偏移,找到對應(yīng)的標(biāo)志位和索引項。
(4)標(biāo)志位為0,索引項為29。因為對應(yīng)的標(biāo)志位為0,所以該索引項存儲的是路由表序號,即IP地址0x01020304對應(yīng)的路由存放在路由表的第29項,這樣便最終找到路由需要查找的路由。
本發(fā)明還提供了一種應(yīng)用上述路由查找方法的路由查找裝置,用于IP網(wǎng)絡(luò)傳輸設(shè)備中,如圖3所示,該裝置包括路由表300,用于根據(jù)固定容量的路由表,選取索引級數(shù)及索引步長,以確定最小的索引表,并通過該路由表中目的地址獲取在索引塊偏移;多級索引模塊301,包括標(biāo)志位塊100和索引塊200,用于通過標(biāo)志位判斷索引值是路由序號還是次級索引的步驟,若判斷是路由序號則輸出路由,否則在下一級索引中繼續(xù)查找;其中,所述多級索引間采用索引復(fù)用的形式,與所述索引塊中的索引對應(yīng)的標(biāo)志位以標(biāo)志位塊的形式連續(xù)存儲,且所述索引塊與所述標(biāo)志位塊分別存儲。
雖然本發(fā)明已以一較佳實施例揭露如上,然其并非用以限定本發(fā)明,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護范圍。
權(quán)利要求
1.一種多級索引路由查找方法,用于IP網(wǎng)絡(luò)傳輸設(shè)備中路由的查找,其特征在于包括根據(jù)固定容量的路由表,選取索引級數(shù)及索引步長,以確定最小的索引表,并通過路由表中目的地址獲取在索引塊偏移的步驟;通過標(biāo)志位判斷索引值是路由序號還是次級索引的步驟,若判斷是路由序號則輸出路由,否則在下一級索引中繼續(xù)查找;其中,所述多級索引間采用索引復(fù)用的形式,與所述索引塊中的索引對應(yīng)的標(biāo)志位以標(biāo)志位塊的形式連續(xù)存儲,且所述索引塊與所述標(biāo)志位塊分別存儲。
2.根據(jù)權(quán)利要求1所述的路由查找方法,其特征在于,所述索引表的索引項最大個數(shù)通過下式計算獲取L=2x1+2x2M+...+2xi+...+2xnM,]]>其中,n為索引級數(shù),M為路由表容量,x1,x2…xi…xn依次為第1、2…i…n索引級的索引步長,且x1+x2+…+xi…+xn=IP地址長度,xi<32,i<n<32。
3.根據(jù)權(quán)利要求1所述的路由查找方法,其特征在于,所述索引塊是由索引組成的數(shù)組,所述索引級數(shù)中,除第一級索引外,每級索引都存在至少一個所述索引塊,所述每個索引塊在本級索引中都具有唯一的編號。
4.根據(jù)權(quán)利要求3所述的路由查找方法,其特征在于,所述索引級數(shù)中,除第一級索引之外的各級索引步長相等,所述每級索引的索引塊個數(shù)小于所述路由表的項數(shù),如果所述索引步長為x,則該級索引的所述索引塊有2x項索引。
5.根據(jù)權(quán)利要求4所述的路由查找方法,其特征在于,所述索引級數(shù)中,除最后一級索引外,每個索引塊都有一個索引標(biāo)志位塊與之對應(yīng),其中所述標(biāo)志位塊中的一個比特位對應(yīng)所述索引塊中的一個索引項。
6.根據(jù)權(quán)利要求5所述的路由查找方法,其特征在于,每個所述的索引項占16比特,所述索引項用于記錄路由表序號或者次級索引塊的編號,由與所述索引塊相對應(yīng)的標(biāo)志位塊中的一個比特位來區(qū)分。
7.根據(jù)權(quán)利要求6所述的路由查找方法,其特征在于,所述標(biāo)志位塊中的標(biāo)志位置位表示所述索引項中存儲著路由表序號,否則表示存儲著次級索引表的編號。
8.根據(jù)權(quán)利要求1所述的路由查找方法,其特征在于,所述索引復(fù)用用1比特表示。
9.根據(jù)權(quán)利要求1所述的路由查找方法,其特征在于,所述通過目的地址獲取在索引塊偏移的步驟進一步包括根據(jù)第一級索引的步長L1取出所述目的地址的前L1個比特作為下標(biāo)的步驟;將所述下標(biāo)作為偏移在所述索引塊中獲取索引值及其對應(yīng)的標(biāo)志位的步驟。
10.根據(jù)權(quán)利要求1所述的路由查找方法,其特征在于,所述通過標(biāo)志位判斷索引值是路由序號還是次級索引的步驟進一步包括判斷所述標(biāo)志位是否為零的步驟,若為零,則所述索引值為路由序號,否則,所述索引值為次級索引,在下一級索引中取出索引塊循環(huán)查找直至找到路由序號。
11.一種利用權(quán)利要求1-10中任意一項所述方法的多級索引路由查找裝置,用于IP網(wǎng)絡(luò)傳輸設(shè)備中,該裝置包括路由表,用于根據(jù)固定容量的路由表,選取索引級數(shù)及索引步長,以確定最小的索引表,并通過該路由表中目的地址獲取在索引塊偏移;多級索引模塊,包括標(biāo)志位塊和索引塊,用于通過標(biāo)志位判斷索引值是路由序號還是次級索引的步驟,若判斷是路由序號則輸出路由,否則在下一級索引中繼續(xù)查找;其中,所述多級索引間采用索引復(fù)用的形式,與所述索引塊中的索引對應(yīng)的標(biāo)志位以標(biāo)志位塊的形式連續(xù)存儲,且所述索引塊與所述標(biāo)志位塊分別存儲。
全文摘要
本發(fā)明公開了一種多級索引路由查找方法,用于IP網(wǎng)絡(luò)傳輸設(shè)備中路由的查找,該方法包括根據(jù)固定容量的路由表,選取索引級數(shù)及索引步長,以確定最小的索引表,并通過路由表中目的地址獲取在索引塊偏移的步驟;通過標(biāo)志位判斷索引值是路由序號還是次級索引的步驟,若判斷是路由序號則輸出路由,否則在下一級索引中繼續(xù)查找;其中,所述多級索引間采用索引復(fù)用的形式,與所述索引塊中的索引對應(yīng)的標(biāo)志位以標(biāo)志位塊的形式連續(xù)存儲,且所述索引塊與所述標(biāo)志位塊分別存儲。本發(fā)明的路由查找方法因為內(nèi)存開銷較小,尤其適用于內(nèi)存配置較小,但需要快速轉(zhuǎn)發(fā)的網(wǎng)絡(luò)設(shè)備。
文檔編號G06F17/30GK101094179SQ200710119130
公開日2007年12月26日 申請日期2007年7月16日 優(yōu)先權(quán)日2007年7月16日
發(fā)明者閆新成 申請人:中興通訊股份有限公司