CN1949749A - 一种路由存储方法及装置 - Google Patents
一种路由存储方法及装置 Download PDFInfo
- Publication number
- CN1949749A CN1949749A CNA200610140566XA CN200610140566A CN1949749A CN 1949749 A CN1949749 A CN 1949749A CN A200610140566X A CNA200610140566X A CN A200610140566XA CN 200610140566 A CN200610140566 A CN 200610140566A CN 1949749 A CN1949749 A CN 1949749A
- Authority
- CN
- China
- Prior art keywords
- route
- trie
- address
- routing iinformation
- trie table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种路由存储方法及装置,属于网络通信领域。为了解决现有技术中私网路由使用TCAM表进行路由存储与查找费用较高的问题,本发明提供了一种路由存储方法,所述方法包括解析协议报文获取路由信息,将所述路由信息添加到Trie表中的步骤。本发明还提供了一种路由存储装置,所述装置包括路由管理模块和Trie表维护管理模块。采用本发明提供的技术方案可以不用TCAM表进行私网路由的存储与查找,并且公网路由查找表和私网路由查找表共用动态存储的Trie表,减少了对内存需求,节省了成本。
Description
技术领域
本发明涉及网络通信领域,特别涉及一种路由存储方法及装置。
背景技术
数据通信设备转发IP报文是数据通信设备的一个基本功能。对于分布式体系结构的路由器,一般由硬件转发引擎完成IP报文的转发。根据IP报文的目的IP地址查找路由表的方法很多,可以用TCAM(Ternary Content Addressable Memory,三态内容可寻址存储器)的硬件查找,也可以用软件算法查找。TCAM查找的一个最大的好处是:不管表项的多少,查找时间基本固定,可以保证查找性能。但是TCAM器件价格比较昂贵,功耗非常大。软件算法查找,仅使用DRAM(Dynamic Random Access Memory,动态随机存取存储器)内存或者一般的SRAM(Static Random Access Memory,静态随机存取存储器)完成查找,价格非常低,具有成本优势。Trie表是一种利用DRAM内存或者一般的SRAM树表查找算法,并且采用最长前缀匹配的方法。
比较常见的路由器的应用是三层VPN(Virtual Private Network,虚拟专网)。路由器在实现三层VPN的功能时,一般在边缘路由器给不同的私网创建不同的VPN路由表,路由查找的索引是目的IP地址加上VRF(VPN Routing Forwarding,VPN路由转发)索引。一个VRF索引对应一个VPN,VPN内部可以分配私网的IP地址。不同的VPN内部分配的私网IP地址可以相同,但是在同一个边缘路由器上,不同的VPN会对应不同的VRF索引。由于路由查找的索引是目的IP地址加上VRF索引,这样就可以保证各个VPN内的报文查找VPN的私网路由时,不会出现查找错误路由表的情况。
对于不支持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表的结构如表1。
Nexthop index(指向下一跳表的索引) | Trie index(指向下一个Trie的索引) |
表1
对于16-4-4-4-4的路由查找表,16对应IP地址的最高16bit,16bit对应于64K个第一级Trie表,称为hi64k表,hi64k表是必须固定分配的。
对于8-4-4的路由查找表,8对应IP地址的最高8bit,8bit对应于256个第一级Trie表,称为hi256表,hi256表是必须固定分配的。
对于16-4-4-4-4和8-4-4路由查找表中的4bit,对应一个Trie,每个Trie里面有16个Trie表,通过4bit索引。
Trie表在内存的分布如图1所示,内存可以是DRAM,也可以是SRAM。
参见表2,以目的IP地址是0x59900000(十六进制的59对应十进制的89),前缀的掩码是0xfff00000的路由为例,通过前缀的掩码得到前缀长度是12,所以填入8-4-4的路由查找表。
表2
对应于上表,对于目的IP地址是89.144.5.5的报文,先用目的IP地址的高8位89为索引查hi256的路由查找表,发现指向下一跳表的索引为0,说明没有前缀89对应的路由,同时发现指向下一个Trie的索引有效,于是根据此索引得到对应Trie的地址,在Trie内根据IP地址的[23:20]位进行索引(对应89.144.5.5的[23:20]位是9),发现指向下一跳表的索引为一个有效的值,同时指向下一个Trie的索引无效,说明IP地址89.144.5.5在路由查找表可以查找得到的最长前缀的长度就是12,再根据从Trie表得到的指向下一跳表的索引去查和路由相关的下一跳表,最终得到报文的出接口信息。
现有技术的缺点是:
利用Trie表的方式进行IPV4的LPM查找的索引没有VRF索引,没有为VPN分配的路由表,不能支持VPN。
而现有技术中的VPN是应用TCAM表进行路由存储与查找的,TCAM器件价格比较昂贵,功耗非常大。
发明内容
本发明为了解决现有技术中使用TCAM表进行私网路由查找费用高的问题,提供了一种路由存储方法及装置。所述技术方案如下:
本发明提供了一种路由存储方法,所述方法包括以下步骤:
步骤A:收到协议报文后,解析所述报文获取路由信息,所述路由信息包括IP地址和前缀长度;
步骤B:将获取的路由信息添加到Trie表中。
所述步骤B具体包括:
根据所述路由信息判断所述IP地址是否为公网路由,如果是,将所述路由信息添加到公网对应的Trie表中;否则,将所述路由信息添加到私网对应的Trie表中。
所述IP地址是公网路由时,读取IP地址的前缀长度,如果所述IP地址的前缀长度大于或等于16,将所述路由信息添加到公网路由的hi64k表中;如果所述IP地址的前缀长度小于16,将所述路由信息添加到hi256表中;
或者
所述IP地址是私网路由时,通过协议报文获取私网路由的索引,根据所述路由信息判断是否需要申请新的Trie表,如果需要,则申请Trie表,将所述路由信息添加到新申请的Trie表;否则直接添加到对应的Trie表中。
所述的将所述路由信息添加到私网对应的Trie表中按8-4-4-4-4-4-4或者4-4-4-4-4-4-4-4格式添加。
所述方法还包括:
步骤C:需要删除路由时,判断是否是公网路由,如果是,在公网对应的Trie表中删除该路由表项;否则,在私网对应的Trie表中删除该路由表项;
步骤D:判断删除所述路由后的Trie表是否可以释放,如果是,将所述Trie表进行回收。
本发明还提供了一种路由存储装置,所述装置包括以下模块:
路由管理模块,用于收到协议报文后,解析报文获取路由信息,所述路由信息包括IP地址和前缀长度;
Trie表维护管理模块,用于将获取的路由信息添加到Trie表中。
所述路由管理模块具体包括:
判断单元,用于判断IP地址是公网路由还是私网路由;
申请Trie单元,用于向Trie表维护管理模块申请一个新的Trie表,
添加单元,用于把申请Trie表地址添加到路由查找表中;
删除单元,用于释放Trie表并交给Trie表维护管理模块。
所述Trie表维护管理模块具体包括:
维护单元,用于维护和管理空闲的Trie表;
分配单元,用于当需要增加新的路由项时,分配Trie表;
回收单元,用于当删除路由项时,对释放的Trie表进行回收。
应用本发明提供的技术方案带来的有益效果是:
通过所提供的路由存储方法及装置,可以不用TCAM表进行私网路由的存储与查找,并且公网路由查找表和私网路由查找表共用动态存储的Trie表,减少了对内存需求,节省了成本。
附图说明
图1是现有技术中Trie表在内存中的分布示意图;
图2是本发明实施例1中提供的路由存储方法流程图;
图3是本发明实施例1中路由查找表添加路由后的示意图;
图4是本发明实施例2中提供的路由查找流程图;
图5是本发明实施例3中提供的路由存储装置示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,但不作为对本发明的限定。
本发明的实施例通过在路由器上建立一个动态的Trie表,实现公网路由与VPN路由的查找。
对于分布式结构的路由器,每个接口板支持的VPN的个数是一定的,同时支持的VPN的路由数目也是有一定限制的,比如支持4K个VPN,所有的VPN一共支持100万个路由。
公网路由器可以采用16-4-4-4-4和8-4-4的Trie表结构,其中16bit对应IP地址的最高16bit,先读取IP地址的前缀长度,如果大于或等于16,则添加到公网路由的hi64k表中。如果小于16,则添加到公网路由的hi256表中。
VPN私网路由器可以采用8-4-4-4-4-4-4(不包括VPN Index)的Trie表结构,其中8bit对应IP地址的最高8bit,和公网的路由查找表一样,8bit对应的第一级Trie表也称为hi256表。给每个VPN分配一个独立的hi256表,如果单板支持4K个VPN,则需要给VPN路由分配4K个hi256表。
实施例1
参见图2,一种路由存储方法,该方法具体包括以下步骤:
步骤101:当路由器收到协议报文后,解析协议报文中的内容获取路由信息,该路由信息包括IP地址、前缀长度和路由类别。
步骤102:根据所述路由信息中的路由类别(是公网路由还是私网路由)判断获取的路由是公网路由还是私网路由,如果是公网路由,执行步骤103;否则执行步骤104。
步骤103:查找公网路由查找表,判断是否需要申请新的Trie表,如果路由查找表里面没有与IP地址相匹配的表项,则需要申请,执行步骤105;否则不需要申请,执行步骤106。
步骤104:查找私网路由查找表,判断是否需要申请新的Trie表,如果路由查找表里面没有与IP地址相匹配的表项,则需要申请,执行步骤105;否则不需要申请,执行步骤106。
步骤105:申请一个新的Trie表,将获取的路由信息添加到Trie表中。
步骤106:否则将路由信息直接添加到相应的Trie表中。
例如:支持VPN的Trie表内存图如表3所示。
固定分配的空间 动态分配的trie
表3
固定分配的空间可以包括:公网路由的hi64k表和hi256表,4k个私网路由的hi256表。
Trie是动态分配的,上表中VPN2因为没有路由就没有分配Trie。Trie的总个数是一定的,这个总数和路由器支持的最大路由规格相关。因为VPN的个数是一定的,同时hi256表只有256个Trie表,所以4k个私网路由的hi256表占用固定分配的空间比较小,对内存的消耗不大。
表4是VPN 1内部有IP地址是0x59900000,前缀的掩码是0xfff00000的路由的一个例子。
表4
在表4的基础上,在VPN 1再增加三条路由,这三条路由分别是:IP地址是0x59980000,前缀的掩码是0xffff0000;IP地址是0x60600000,前缀的掩码是0xfff0000;IP地址是0x60670000,前缀的掩码是0xffff0000。为了增加这三条路由,需要再分配三个trie。具体添加过程如下:
因为在表4中已经有IP地址0x59900000的表项,当添加IP地址0x59980000,前缀的掩码是0xffff0000时,申请一个Trie表(b),将当前Trie表(a)中偏移地址9对应的Next trie(下一个Trie表的地址)内添加新申请的Trie表的地址。在新申请的Trie表中偏移地址8对应的路由表项内添加该路由的Next hop information(下一跳信息,指路由对应的接口号)。
当添加IP地址0x60600000,前缀的掩码是0xfff0000时,因为十六进制的60对应十进制的值是96,而VPN 1的hi256表的偏移地址96对应的Next trie表项是0,这时申请一个Trie表(即图2中的(c)),并把该表地址填到VPN 1的hi256表的偏移地址96对应的Next trie表项中,同时在Trie表(c)的偏移地址6对应的Route(路由)项内填入Next hop information(下一跳信息);
当添加IP地址0x60670000,前缀的掩码是0xffff0000时,同添加IP地址0x59980000,前缀的掩码是0xffff0000一样,申请的Trie表为图2中的(d),这里不再详述。
8-4-4-4-4-4-4路由查找表索引中的4bit对应的Trie和公网路由查找表索引中的4bit对应的Trie共用动态分配的Trie,这些Trie表由Trie表维护管理模块进行维护,即如果公网路由删除(释放)一个Trie表,当私网申请Trie表时,用公网路由删除的那个Trie表进行添加,同理,当私网释放一个Trie表时,公网添加时也可以用这个释放的Trie表。具体维护过程如下:
路由管理模块发现一条路由需要删除时,先判断是公网路由还是私网路由,根据判断的结果在相应的路由查找表中进行查找删除,删除完毕后,判断删除这条路由后是否会释放一个Trie表。如果会释放一个Trie表就把这个Trie表交给Trie表维护管理模块,由Trie表维护管理模块完成Trie的回收。
以上描述的VPN私网路由,采用的是8-4-4-4-4-4-4的路由查找表格式,其中第一级索引是8bit,主要是在性能和占用内存之间权衡的。也可以采用其他路由查找表格式,例如4-4-4-4-4-4-4-4的路由查找表格式。
参见图3,是路由查找表增加完上述三条路由后的结构示意图。
实施例2
参见图4,是应用上述路由查找表进行路由查找的方法,该方法包括以下步骤:
步骤201:收到报文后,读取路由信息和路由表的控制信息。
步骤202:判断是否需要查私网路由,如果不需要,执行步骤203,否则执行步骤204。
步骤203:查公网的路由查找表进行地址查找。
步骤204:取VPN路由表的索引。
步骤205:根据获取的VPN路由表的索引查对应的Trie表。
实施例3
参见图5,一种路由存储装置,该装置包括以下模块:
路由管理模块,用于收到协议报文后,解析报文获取路由信息,该路由信息包括IP地址和前缀长度;
Trie表维护管理模块,用于将获取的路由信息添加到Trie表中。
其中,路由管理模块具体包括:
判断单元,用于判断IP地址是公网路由还是私网路由;
申请Trie单元,用于向Trie表维护管理模块申请一个新的Trie表,
添加单元,用于把申请Trie表地址添加到路由查找表中;
删除单元,用于释放Trie表并交给Trie表维护管理模块。
Trie表维护管理模块具体包括:
维护单元,用于维护和管理空闲的Trie表;
分配单元,用于当需要增加新的路由项时,分配Trie表;
回收单元,用于当删除路由项时,对释放的Trie表进行回收。
以上所述的实施例,只是本发明较优选的一种具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (8)
1.一种路由存储方法,其特征在于,所述方法包括以下步骤:
步骤A:收到协议报文后,解析所述报文获取路由信息,所述路由信息包括IP地址和前缀长度;
步骤B:将获取的路由信息添加到Trie表中。
2.如权利要求1所述的路由存储方法,其特征在于,所述步骤B具体包括:
根据所述路由信息判断所述IP地址是否为公网路由,如果是,将所述路由信息添加到公网对应的Trie表中;否则,将所述路由信息添加到私网对应的Trie表中。
3.如权利要求2所述的路由存储方法,其特征在于,
所述IP地址是公网路由时,读取IP地址的前缀长度,如果所述IP地址的前缀长度大于或等于16,将所述路由信息添加到公网路由的hi64k表中;如果所述IP地址的前缀长度小于16,将所述路由信息添加到hi256表中;
或者
所述IP地址是私网路由时,通过协议报文获取私网路由的索引,根据所述路由信息判断是否需要申请新的Trie表,如果需要,则申请Trie表,将所述路由信息添加到新申请的Trie表;否则直接添加到对应的Trie表中。
4.如权利要求2所述的路由存储方法,其特征在于,所述的将所述路由信息添加到私网对应的Trie表中按8-4-4-4-4-4-4或4-4-4-4-4-4-4-4格式添加。
5.如权利要求1所述的路由存储方法,其特征在于,所述方法还包括:
步骤C:需要删除路由时,判断是否是公网路由,如果是,在公网对应的Trie表中删除该路由表项;否则,在私网对应的Trie表中删除该路由表项;
步骤D:判断删除所述路由后的Trie表是否可以释放,如果是,将所述Trie表进行回收。
6.一种路由存储装置,其特征在于,所述装置包括以下模块:
路由管理模块,用于收到协议报文后,解析报文获取路由信息,所述路由信息包括IP地址和前缀长度;
Trie表维护管理模块,用于将获取的路由信息添加到Trie表中。
7.如权利要求6所述的路由存储装置,其特征在于,所述路由管理模块具体包括:
判断单元,用于判断IP地址是公网路由还是私网路由;
申请Trie单元,用于向Trie表维护管理模块申请一个新的Trie表,
添加单元,用于把申请Trie表地址添加到路由查找表中;
删除单元,用于释放Trie表并交给Trie表维护管理模块。
8.如权利要求6所述的路由存储装置,其特征在于,所述Trie表维护管理模块具体包括:
维护单元,用于维护和管理空闲的Trie表;
分配单元,用于当需要增加新的路由项时,分配Trie表;
回收单元,用于当删除路由项时,对释放的Trie表进行回收。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200610140566XA CN100477644C (zh) | 2006-10-17 | 2006-10-17 | 一种路由存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200610140566XA CN100477644C (zh) | 2006-10-17 | 2006-10-17 | 一种路由存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1949749A true CN1949749A (zh) | 2007-04-18 |
CN100477644C CN100477644C (zh) | 2009-04-08 |
Family
ID=38019136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200610140566XA Expired - Fee Related CN100477644C (zh) | 2006-10-17 | 2006-10-17 | 一种路由存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100477644C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101141389B (zh) * | 2007-09-29 | 2010-06-16 | 华为技术有限公司 | 增强多位Trie树查找方法和装置 |
CN102664811A (zh) * | 2012-05-04 | 2012-09-12 | 杭州华三通信技术有限公司 | 报文转发方法和装置 |
CN102064999B (zh) * | 2009-11-18 | 2013-04-03 | 杭州华三通信技术有限公司 | 实现组播报文转发的方法和组播报文转发设备 |
CN112235197A (zh) * | 2020-10-23 | 2021-01-15 | 烽火通信科技股份有限公司 | 一种并行路由查找方法及系统 |
CN116208553A (zh) * | 2023-03-13 | 2023-06-02 | 苏州盛科通信股份有限公司 | 扩大vrf路由表项的芯片实现方法及应用 |
-
2006
- 2006-10-17 CN CNB200610140566XA patent/CN100477644C/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101141389B (zh) * | 2007-09-29 | 2010-06-16 | 华为技术有限公司 | 增强多位Trie树查找方法和装置 |
CN102064999B (zh) * | 2009-11-18 | 2013-04-03 | 杭州华三通信技术有限公司 | 实现组播报文转发的方法和组播报文转发设备 |
CN102664811A (zh) * | 2012-05-04 | 2012-09-12 | 杭州华三通信技术有限公司 | 报文转发方法和装置 |
CN102664811B (zh) * | 2012-05-04 | 2015-08-12 | 杭州华三通信技术有限公司 | 报文转发方法和装置 |
CN112235197A (zh) * | 2020-10-23 | 2021-01-15 | 烽火通信科技股份有限公司 | 一种并行路由查找方法及系统 |
CN116208553A (zh) * | 2023-03-13 | 2023-06-02 | 苏州盛科通信股份有限公司 | 扩大vrf路由表项的芯片实现方法及应用 |
Also Published As
Publication number | Publication date |
---|---|
CN100477644C (zh) | 2009-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1929447A (zh) | 地址前缀查找方法和装置以及报文转发方法和系统 | |
CN101068212A (zh) | 一种网络地址转换转发的装置及方法 | |
CN101594319B (zh) | 表项查找方法和装置 | |
CN101035060A (zh) | 一种三重内容可寻址存储器报文分类的统一处理方法 | |
CN1192552C (zh) | 一种混合地址解决方案及其混合地址路由器 | |
CN1852240A (zh) | 一种桥接转发方法 | |
US8015315B2 (en) | Compression of IPV6 addresses in a netflow directory | |
CN1949749A (zh) | 一种路由存储方法及装置 | |
CN1764193A (zh) | 一种快速更新地址解析协议的方法 | |
CN1863169A (zh) | 基于网络处理器的路由查找结果缓存方法 | |
CN101075933A (zh) | 学习mac地址的方法及网元设备 | |
CN1216473C (zh) | 支持多个下一跳的三态内容可寻址存储器查找方法及系统 | |
CN1866845A (zh) | 一种组播转发表输出端口的虚拟标识方法 | |
CN1744563A (zh) | 在以太网交换机上实现策略路由的方法 | |
CN1856967A (zh) | 与网络有关的设定的自动切换 | |
CN101557341B (zh) | 一种基于介质访问控制转发表的报文转发方法及系统 | |
CN1731758A (zh) | 一种网络地址变换方法及其装置 | |
CN103167049A (zh) | 按需分配的网络地址转换方法、设备和系统 | |
CN1917521A (zh) | 一种实现负载均衡的方法和系统及负载均衡设备 | |
CN103973571A (zh) | 网络处理器及其路由查找方法 | |
CN1859179A (zh) | 一种用户组播权限的管理方法 | |
CN1152516C (zh) | Ip网络节点发现方法 | |
CN1863153A (zh) | 以太网支持源特定组播转发的方法及其设备 | |
CN1719769A (zh) | 在网络设备中对接收数据包进行分类的方法 | |
CN103457855A (zh) | 无类域间路由表建立、以及报文转发的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090408 Termination date: 20121017 |