專利名稱:一種路由存儲方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,特別涉及一種路由存儲方法及裝置。
背景技術(shù):
數(shù)據(jù)通信設(shè)備轉(zhuǎn)發(fā)IP報文是數(shù)據(jù)通信設(shè)備的一個基本功能。對于分布式體系結(jié)構(gòu)的路由器,一般由硬件轉(zhuǎn)發(fā)引擎完成IP報文的轉(zhuǎn)發(fā)。根據(jù)IP報文的目的IP地址查找路由表的方法很多,可以用TCAM(Ternary Content Addressable Memory,三態(tài)內(nèi)容可尋址存儲器)的硬件查找,也可以用軟件算法查找。TCAM查找的一個最大的好處是不管表項的多少,查找時間基本固定,可以保證查找性能。但是TCAM器件價格比較昂貴,功耗非常大。軟件算法查找,僅使用DRAM(Dynamic Random Access Memory,動態(tài)隨機存取存儲器)內(nèi)存或者一般的SRAM(Static Random Access Memory,靜態(tài)隨機存取存儲器)完成查找,價格非常低,具有成本優(yōu)勢。Trie表是一種利用DRAM內(nèi)存或者一般的SRAM樹表查找算法,并且采用最長前綴匹配的方法。
比較常見的路由器的應(yīng)用是三層VPN(Virtual Private Network,虛擬專網(wǎng))。路由器在實現(xiàn)三層VPN的功能時,一般在邊緣路由器給不同的私網(wǎng)創(chuàng)建不同的VPN路由表,路由查找的索引是目的IP地址加上VRF(VPN Routing Forwarding,VPN路由轉(zhuǎn)發(fā))索引。一個VRF索引對應(yīng)一個VPN,VPN內(nèi)部可以分配私網(wǎng)的IP地址。不同的VPN內(nèi)部分配的私網(wǎng)IP地址可以相同,但是在同一個邊緣路由器上,不同的VPN會對應(yīng)不同的VRF索引。由于路由查找的索引是目的IP地址加上VRF索引,這樣就可以保證各個VPN內(nèi)的報文查找VPN的私網(wǎng)路由時,不會出現(xiàn)查找錯誤路由表的情況。
對于不支持VPN特性的路由器,利用Trie表的方式進行IPV4的LPM(Longest Prefix Match,最長前綴匹配)查找。其方案如下IP地址的長度是32bit,把IP地址的32bit拆分為16-4-4-4-4的部分,把IP地址的高16bit拆分為8-4-4的部分。對于前綴長度大于或者等于16的路由,填入到16-4-4-4-4的路由查找表;對于前綴長度小于16的路由,填入到8-4-4的路由查找表。路由查找表的基本單元是Trie表,Trie表的結(jié)構(gòu)如表1。
表1對于16-4-4-4-4的路由查找表,16對應(yīng)IP地址的最高16bit,16bit對應(yīng)于64K個第一級Trie表,稱為hi64k表,hi64k表是必須固定分配的。
對于8-4-4的路由查找表,8對應(yīng)IP地址的最高8bit,8bit對應(yīng)于256個第一級Trie表,稱為hi256表,hi256表是必須固定分配的。
對于16-4-4-4-4和8-4-4路由查找表中的4bit,對應(yīng)一個Trie,每個Trie里面有16個Trie表,通過4bit索引。
Trie表在內(nèi)存的分布如圖1所示,內(nèi)存可以是DRAM,也可以是SRAM。
參見表2,以目的IP地址是0x59900000(十六進制的59對應(yīng)十進制的89),前綴的掩碼是0xfff00000的路由為例,通過前綴的掩碼得到前綴長度是12,所以填入8-4-4的路由查找表。
表2對應(yīng)于上表,對于目的IP地址是89.144.5.5的報文,先用目的IP地址的高8位89為索引查hi256的路由查找表,發(fā)現(xiàn)指向下一跳表的索引為0,說明沒有前綴89對應(yīng)的路由,同時發(fā)現(xiàn)指向下一個Trie的索引有效,于是根據(jù)此索引得到對應(yīng)Trie的地址,在Trie內(nèi)根據(jù)IP地址的[23:20]位進行索引(對應(yīng)89.144.5.5的[23:20]位是9),發(fā)現(xiàn)指向下一跳表的索引為一個有效的值,同時指向下一個Trie的索引無效,說明IP地址89.144.5.5在路由查找表可以查找得到的最長前綴的長度就是12,再根據(jù)從Trie表得到的指向下一跳表的索引去查和路由相關(guān)的下一跳表,最終得到報文的出接口信息。
現(xiàn)有技術(shù)的缺點是利用Trie表的方式進行IPV4的LPM查找的索引沒有VRF索引,沒有為VPN分配的路由表,不能支持VPN。
而現(xiàn)有技術(shù)中的VPN是應(yīng)用TCAM表進行路由存儲與查找的,TCAM器件價格比較昂貴,功耗非常大。
發(fā)明內(nèi)容
本發(fā)明為了解決現(xiàn)有技術(shù)中使用TCAM表進行私網(wǎng)路由查找費用高的問題,提供了一種路由存儲方法及裝置。所述技術(shù)方案如下本發(fā)明提供了一種路由存儲方法,所述方法包括以下步驟步驟A收到協(xié)議報文后,解析所述報文獲取路由信息,所述路由信息包括IP地址和前綴長度;步驟B將獲取的路由信息添加到Trie表中。
所述步驟B具體包括根據(jù)所述路由信息判斷所述IP地址是否為公網(wǎng)路由,如果是,將所述路由信息添加到公網(wǎng)對應(yīng)的Trie表中;否則,將所述路由信息添加到私網(wǎng)對應(yīng)的Trie表中。
所述IP地址是公網(wǎng)路由時,讀取IP地址的前綴長度,如果所述IP地址的前綴長度大于或等于16,將所述路由信息添加到公網(wǎng)路由的hi64k表中;如果所述IP地址的前綴長度小于16,將所述路由信息添加到hi256表中;或者所述IP地址是私網(wǎng)路由時,通過協(xié)議報文獲取私網(wǎng)路由的索引,根據(jù)所述路由信息判斷是否需要申請新的Trie表,如果需要,則申請Trie表,將所述路由信息添加到新申請的Trie表;否則直接添加到對應(yīng)的Trie表中。
所述的將所述路由信息添加到私網(wǎng)對應(yīng)的Trie表中按8-4-4-4-4-4-4或者4-4-4-4-4-4-4-4格式添加。
所述方法還包括步驟C需要刪除路由時,判斷是否是公網(wǎng)路由,如果是,在公網(wǎng)對應(yīng)的Trie表中刪除該路由表項;否則,在私網(wǎng)對應(yīng)的Trie表中刪除該路由表項;步驟D判斷刪除所述路由后的Trie表是否可以釋放,如果是,將所述Trie表進行回收。
本發(fā)明還提供了一種路由存儲裝置,所述裝置包括以下模塊路由管理模塊,用于收到協(xié)議報文后,解析報文獲取路由信息,所述路由信息包括IP地址和前綴長度;Trie表維護管理模塊,用于將獲取的路由信息添加到Trie表中。
所述路由管理模塊具體包括判斷單元,用于判斷IP地址是公網(wǎng)路由還是私網(wǎng)路由;申請Trie單元,用于向Trie表維護管理模塊申請一個新的Trie表,添加單元,用于把申請Trie表地址添加到路由查找表中;刪除單元,用于釋放Trie表并交給Trie表維護管理模塊。
所述Trie表維護管理模塊具體包括維護單元,用于維護和管理空閑的Trie表;分配單元,用于當(dāng)需要增加新的路由項時,分配Trie表;回收單元,用于當(dāng)刪除路由項時,對釋放的Trie表進行回收。
應(yīng)用本發(fā)明提供的技術(shù)方案帶來的有益效果是通過所提供的路由存儲方法及裝置,可以不用TCAM表進行私網(wǎng)路由的存儲與查找,并且公網(wǎng)路由查找表和私網(wǎng)路由查找表共用動態(tài)存儲的Trie表,減少了對內(nèi)存需求,節(jié)省了成本。
圖1是現(xiàn)有技術(shù)中Trie表在內(nèi)存中的分布示意圖;圖2是本發(fā)明實施例1中提供的路由存儲方法流程圖;圖3是本發(fā)明實施例1中路由查找表添加路由后的示意圖;圖4是本發(fā)明實施例2中提供的路由查找流程圖;圖5是本發(fā)明實施例3中提供的路由存儲裝置示意圖。
具體實施例方式
下面結(jié)合附圖和具體實施例對本發(fā)明作進一步說明,但不作為對本發(fā)明的限定。
本發(fā)明的實施例通過在路由器上建立一個動態(tài)的Trie表,實現(xiàn)公網(wǎng)路由與VPN路由的查找。
對于分布式結(jié)構(gòu)的路由器,每個接口板支持的VPN的個數(shù)是一定的,同時支持的VPN的路由數(shù)目也是有一定限制的,比如支持4K個VPN,所有的VPN一共支持100萬個路由。
公網(wǎng)路由器可以采用16-4-4-4-4和8-4-4的Trie表結(jié)構(gòu),其中16bit對應(yīng)IP地址的最高16bit,先讀取IP地址的前綴長度,如果大于或等于16,則添加到公網(wǎng)路由的hi64k表中。如果小于16,則添加到公網(wǎng)路由的hi256表中。
VPN私網(wǎng)路由器可以采用8-4-4-4-4-4-4(不包括VPN Index)的Trie表結(jié)構(gòu),其中8bit對應(yīng)IP地址的最高8bit,和公網(wǎng)的路由查找表一樣,8bit對應(yīng)的第一級Trie表也稱為hi256表。給每個VPN分配一個獨立的hi256表,如果單板支持4K個VPN,則需要給VPN路由分配4K個hi256表。
實施例1參見圖2,一種路由存儲方法,該方法具體包括以下步驟步驟101當(dāng)路由器收到協(xié)議報文后,解析協(xié)議報文中的內(nèi)容獲取路由信息,該路由信息包括IP地址、前綴長度和路由類別。
步驟102根據(jù)所述路由信息中的路由類別(是公網(wǎng)路由還是私網(wǎng)路由)判斷獲取的路由是公網(wǎng)路由還是私網(wǎng)路由,如果是公網(wǎng)路由,執(zhí)行步驟103;否則執(zhí)行步驟104。
步驟103查找公網(wǎng)路由查找表,判斷是否需要申請新的Trie表,如果路由查找表里面沒有與IP地址相匹配的表項,則需要申請,執(zhí)行步驟105;否則不需要申請,執(zhí)行步驟106。
步驟104查找私網(wǎng)路由查找表,判斷是否需要申請新的Trie表,如果路由查找表里面沒有與IP地址相匹配的表項,則需要申請,執(zhí)行步驟105;否則不需要申請,執(zhí)行步驟106。
步驟105申請一個新的Trie表,將獲取的路由信息添加到Trie表中。
步驟106否則將路由信息直接添加到相應(yīng)的Trie表中。
例如支持VPN的Trie表內(nèi)存圖如表3所示。
固定分配的空間 動態(tài)分配的trie 表3固定分配的空間可以包括公網(wǎng)路由的hi64k表和hi256表,4k個私網(wǎng)路由的hi256表。
Trie是動態(tài)分配的,上表中VPN2因為沒有路由就沒有分配Trie。Trie的總個數(shù)是一定的,這個總數(shù)和路由器支持的最大路由規(guī)格相關(guān)。因為VPN的個數(shù)是一定的,同時hi256表只有256個Trie表,所以4k個私網(wǎng)路由的hi256表占用固定分配的空間比較小,對內(nèi)存的消耗不大。
表4是VPN 1內(nèi)部有IP地址是0x59900000,前綴的掩碼是0xfff00000的路由的一個例子。
表4在表4的基礎(chǔ)上,在VPN 1再增加三條路由,這三條路由分別是IP地址是0x59980000,前綴的掩碼是0xffff0000;IP地址是0x60600000,前綴的掩碼是0xfff0000;IP地址是0x60670000,前綴的掩碼是0xffff0000。為了增加這三條路由,需要再分配三個trie。具體添加過程如下因為在表4中已經(jīng)有IP地址0x59900000的表項,當(dāng)添加IP地址0x59980000,前綴的掩碼是0xffff0000時,申請一個Trie表(b),將當(dāng)前Trie表(a)中偏移地址9對應(yīng)的Next trie(下一個Trie表的地址)內(nèi)添加新申請的Trie表的地址。在新申請的Trie表中偏移地址8對應(yīng)的路由表項內(nèi)添加該路由的Next hop information(下一跳信息,指路由對應(yīng)的接口號)。
當(dāng)添加IP地址0x60600000,前綴的掩碼是0xfff0000時,因為十六進制的60對應(yīng)十進制的值是96,而VPN 1的hi256表的偏移地址96對應(yīng)的Next trie表項是0,這時申請一個Trie表(即圖2中的(c)),并把該表地址填到VPN 1的hi256表的偏移地址96對應(yīng)的Next trie表項中,同時在Trie表(c)的偏移地址6對應(yīng)的Route(路由)項內(nèi)填入Next hop information(下一跳信息);當(dāng)添加IP地址0x60670000,前綴的掩碼是0xffff0000時,同添加IP地址0x59980000,前綴的掩碼是0xffff0000一樣,申請的Trie表為圖2中的(d),這里不再詳述。
8-4-4-4-4-4-4路由查找表索引中的4bit對應(yīng)的Trie和公網(wǎng)路由查找表索引中的4bit對應(yīng)的Trie共用動態(tài)分配的Trie,這些Trie表由Trie表維護管理模塊進行維護,即如果公網(wǎng)路由刪除(釋放)一個Trie表,當(dāng)私網(wǎng)申請Trie表時,用公網(wǎng)路由刪除的那個Trie表進行添加,同理,當(dāng)私網(wǎng)釋放一個Trie表時,公網(wǎng)添加時也可以用這個釋放的Trie表。具體維護過程如下路由管理模塊發(fā)現(xiàn)一條路由需要刪除時,先判斷是公網(wǎng)路由還是私網(wǎng)路由,根據(jù)判斷的結(jié)果在相應(yīng)的路由查找表中進行查找刪除,刪除完畢后,判斷刪除這條路由后是否會釋放一個Trie表。如果會釋放一個Trie表就把這個Trie表交給Trie表維護管理模塊,由Trie表維護管理模塊完成Trie的回收。
以上描述的VPN私網(wǎng)路由,采用的是8-4-4-4-4-4-4的路由查找表格式,其中第一級索引是8bit,主要是在性能和占用內(nèi)存之間權(quán)衡的。也可以采用其他路由查找表格式,例如4-4-4-4-4-4-4-4的路由查找表格式。
參見圖3,是路由查找表增加完上述三條路由后的結(jié)構(gòu)示意圖。
實施例2參見圖4,是應(yīng)用上述路由查找表進行路由查找的方法,該方法包括以下步驟步驟201收到報文后,讀取路由信息和路由表的控制信息。
步驟202判斷是否需要查私網(wǎng)路由,如果不需要,執(zhí)行步驟203,否則執(zhí)行步驟204。
步驟203查公網(wǎng)的路由查找表進行地址查找。
步驟204取VPN路由表的索引。
步驟205根據(jù)獲取的VPN路由表的索引查對應(yīng)的Trie表。
實施例3參見圖5,一種路由存儲裝置,該裝置包括以下模塊路由管理模塊,用于收到協(xié)議報文后,解析報文獲取路由信息,該路由信息包括IP地址和前綴長度;Trie表維護管理模塊,用于將獲取的路由信息添加到Trie表中。
其中,路由管理模塊具體包括判斷單元,用于判斷IP地址是公網(wǎng)路由還是私網(wǎng)路由;申請Trie單元,用于向Trie表維護管理模塊申請一個新的Trie表,添加單元,用于把申請Trie表地址添加到路由查找表中;刪除單元,用于釋放Trie表并交給Trie表維護管理模塊。
Trie表維護管理模塊具體包括維護單元,用于維護和管理空閑的Trie表;分配單元,用于當(dāng)需要增加新的路由項時,分配Trie表;回收單元,用于當(dāng)刪除路由項時,對釋放的Trie表進行回收。
以上所述的實施例,只是本發(fā)明較優(yōu)選的一種具體實施方式
,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進行的通常變化和替換都應(yīng)包含在本發(fā)明的保護范圍內(nèi)。
權(quán)利要求
1.一種路由存儲方法,其特征在于,所述方法包括以下步驟步驟A收到協(xié)議報文后,解析所述報文獲取路由信息,所述路由信息包括IP地址和前綴長度;步驟B將獲取的路由信息添加到Trie表中。
2.如權(quán)利要求1所述的路由存儲方法,其特征在于,所述步驟B具體包括根據(jù)所述路由信息判斷所述IP地址是否為公網(wǎng)路由,如果是,將所述路由信息添加到公網(wǎng)對應(yīng)的Trie表中;否則,將所述路由信息添加到私網(wǎng)對應(yīng)的Trie表中。
3.如權(quán)利要求2所述的路由存儲方法,其特征在于,所述IP地址是公網(wǎng)路由時,讀取IP地址的前綴長度,如果所述IP地址的前綴長度大于或等于16,將所述路由信息添加到公網(wǎng)路由的hi64k表中;如果所述IP地址的前綴長度小于16,將所述路由信息添加到hi256表中;或者所述IP地址是私網(wǎng)路由時,通過協(xié)議報文獲取私網(wǎng)路由的索引,根據(jù)所述路由信息判斷是否需要申請新的Trie表,如果需要,則申請Trie表,將所述路由信息添加到新申請的Trie表;否則直接添加到對應(yīng)的Trie表中。
4.如權(quán)利要求2所述的路由存儲方法,其特征在于,所述的將所述路由信息添加到私網(wǎng)對應(yīng)的Trie表中按8-4-4-4-4-4-4或4-4-4-4-4-4-4-4格式添加。
5.如權(quán)利要求1所述的路由存儲方法,其特征在于,所述方法還包括步驟C需要刪除路由時,判斷是否是公網(wǎng)路由,如果是,在公網(wǎng)對應(yīng)的Trie表中刪除該路由表項;否則,在私網(wǎng)對應(yīng)的Trie表中刪除該路由表項;步驟D判斷刪除所述路由后的Trie表是否可以釋放,如果是,將所述Trie表進行回收。
6.一種路由存儲裝置,其特征在于,所述裝置包括以下模塊路由管理模塊,用于收到協(xié)議報文后,解析報文獲取路由信息,所述路由信息包括IP地址和前綴長度;Trie表維護管理模塊,用于將獲取的路由信息添加到Trie表中。
7.如權(quán)利要求6所述的路由存儲裝置,其特征在于,所述路由管理模塊具體包括判斷單元,用于判斷IP地址是公網(wǎng)路由還是私網(wǎng)路由;申請Trie單元,用于向Trie表維護管理模塊申請一個新的Trie表,添加單元,用于把申請Trie表地址添加到路由查找表中;刪除單元,用于釋放Trie表并交給Trie表維護管理模塊。
8.如權(quán)利要求6所述的路由存儲裝置,其特征在于,所述Trie表維護管理模塊具體包括維護單元,用于維護和管理空閑的Trie表;分配單元,用于當(dāng)需要增加新的路由項時,分配Trie表;回收單元,用于當(dāng)刪除路由項時,對釋放的Trie表進行回收。
全文摘要
本發(fā)明提供了一種路由存儲方法及裝置,屬于網(wǎng)絡(luò)通信領(lǐng)域。為了解決現(xiàn)有技術(shù)中私網(wǎng)路由使用TCAM表進行路由存儲與查找費用較高的問題,本發(fā)明提供了一種路由存儲方法,所述方法包括解析協(xié)議報文獲取路由信息,將所述路由信息添加到Trie表中的步驟。本發(fā)明還提供了一種路由存儲裝置,所述裝置包括路由管理模塊和Trie表維護管理模塊。采用本發(fā)明提供的技術(shù)方案可以不用TCAM表進行私網(wǎng)路由的存儲與查找,并且公網(wǎng)路由查找表和私網(wǎng)路由查找表共用動態(tài)存儲的Trie表,減少了對內(nèi)存需求,節(jié)省了成本。
文檔編號G06F17/30GK1949749SQ20061014056
公開日2007年4月18日 申請日期2006年10月17日 優(yōu)先權(quán)日2006年10月17日
發(fā)明者佟興, 龔鈞 申請人:華為數(shù)字技術(shù)有限公司