本发明涉及三态内容寻址存储器技术,具体来讲是一种基于TCAM的IPV4/IPV6路由容量共享方法。
背景技术:随着现代网络的发展,VPN(VirtualPrivateNetwork,虚拟专用网络)技术的普及使用,现代高性能路由器对支持的路由数目提出更高的要求。同时,随着互联网的迅速发展,原有的IPV4网络协议定义的有限地址空间已经耗尽,地址空间的不足必将妨碍互联网的进一步发展,支持IPV6协议将解决网络地址资源数量的问题,同时也为除电脑外的设备连入互联网在数量限制上扫清了障碍,网络全面支持IPV6协议将成为必然的趋势。因此,当前的路由器在要求兼容支持大量的IPV4路由容量的同时,也要求支持大量的IPV6路由数目;但是两者一般是竞争硬件的关系,即如果满足较多的IPV4路由数目,则只能满足较少的IPV6路由数目,反之亦然。相对于路由需求的爆炸性增长,路由器支持路由匹配的硬件发展速度却相对比较滞后,并且价格始终居高不下,这导致了硬件资源的相对稀缺,因此如何更好的利用路由器的硬件资源来满足路由转发非常有价值。如前所述,现代路由器的IPV4路由数目和IPV6路由数目一般都构成硬件竞争关系,那么两者共享使用TCAM(TernaryContentAddressableMemory,三态内容寻址存储器)硬件则是一个自然的做法。但是,传统的做法是将TCAM划分为两个明确的块,分别用于存储IPV4和IPV6路由内容。由于硬件的特性,这两个块的大小必须事先确定,不能动态调整,这样就使IPV4和IPV6的路由在数目的分配上不够灵活。一个极端的例子是,某一款路由器要求至少支持总条目容量为512K的IPV4路由,而仅需支持总条目容量为40K的IPV6路由;而另外一款路由器则要求至少支持总条目容量为256K的IPV6路由,而仅需支持总条目容量为80K的IPV4路由。在这种情况下就需要对两款路由器定制不同的软件版本,给产品版本的管理带来很大的问题。
技术实现要素:针对现有技术中存在的缺陷,本发明的目的在于提供一种基于TCAM的IPV4/IPV6路由容量共享方法,实现IPV4/IPV6路由中硬件表项的动态灵活分配,无需对两款路由器定制不同的软件版本,提高了路由规格指标,满足更多路由器的需求。为达到以上目的,本发明采取的技术方案是:一种基于TCAM的IPV4/IPV6路由容量共享方法,包括:将TCAM硬件表分为前段区域和后段区域,每个区域都使用80bit作为路由的匹配字段,将单条IPV6路由前缀分解为IPV6前半部分和IPV6后半部分;对于IPV4路由,先匹配所述前段区域,若没有匹配到,则继续匹配后段区域;所述前段区域和后段区域都只匹配IPV4路由的32bitIP值、路由所在的路由转发表以及路由类型;对于IPV6路由,先匹配IPV6前半部分到所述前段区域,若匹配到,则继续匹配IPV6后半部分到所述后段区域;所述前段区域匹配IPV6路由的前67bitIP值、路由所在的路由转发表以及路由类型;所述后段区域匹配IPV6路由的后61bitIP值、路由类型以及前段区域存储后返回的ID字段,所述ID字段用于标示IPV6前半部分在程序内部维护的存储ID。在上述技术方案的基础上,所述80bit路由的匹配字段中,包括一个区分字段,用于区分硬件表表项匹配的路由类型。在上述技术方案的基础上,若所述区分字段值为1,则该表项用于匹配IPV6路由;若所述区分字段值为0,则该表项用于匹配IPV4路由。在上述技术方案的基础上,所述包处理流程收到IPV4报文或IPV6报文时,在进入路由匹配前,需要将该路由所在的路由转发表和报文中的IP地址提取出来,并用变量保存区分字段。在上述技术方案的基础上,所述路由前缀中,为每个路由掩码长度都重新分配新的内部掩码长度,IPV6前半部分的掩码分配区间为95~162bit;IPV4的掩码分配区间为62~94bit;IPV6后半部分的掩码分配区间为0~61bit。在上述技术方案的基础上,对于IPV4路由,先用路由的32bitIP值和路由所在的路由转发表匹配硬件表的前段区域,若前段区域没有匹配表项,则进入硬件表的后段区域匹配,若均没有匹配表项,则丢弃业务包;若前段区域或后段区域匹配上,则进入后续的转发过程。在上述技术方案的基础上,对于IPV6路由,先用路由的前67bitIP值和路由所在的路由转发表匹配硬件表的前段区域,若前段区域具有匹配表项,则获取ID字段,用后61bitIP值和路由所在的路由转发表匹配后段区域,若匹配成功,则进入后续转发过程。在上述技术方案的基础上,若所述前段区域没有IPV6前半部分的匹配表项,或者是后段区域没有IPV6后半部分的匹配表项,则丢弃业务包。本发明的有益效果在于:根据路由匹配的基本原则,高效处理业务转发过程,是系统可以更加灵活的调整IPV4/IPV6路由数目,实现了IPV4路由对IPV6路由按2:1动态共享占用TCAM硬件资源,充分发挥资源利用效率,显著提高了路由器的IPV6路由规格指标,满足了更多的路由器应用场景。附图说明图1为本发明转发IPV4业务的路由处理流程图;图2为本发明转发IPV6业务的路由处理流程图。具体实施方式以下结合附图及实施例对本发明作进一步详细说明。本发明基于TCAM的IPV4/IPV6路由容量共享方法,包括:将TCAM硬件表分为前段区域(part_hi)和后段区域(part_lo)来管理,每个区域都使用80bit作为路由的匹配字段。对传统的IPV4和IPV6路由的匹配方式做出改进,在硬件设置中添加IPV4和IPV6路由标识,所述80bit路由的匹配字段中,包括一个区分字段(v6_flag),专门用于区分硬件表中表项匹配的路由类型,若区分字段值为1,则该表项用于匹配IPV6路由;若所述区分字段值为0,则该表项用于匹配IPV4路由。将单条IPV6路由前缀分解为IPV6前半部分(ipv6_hi)和IPV6后半部分(ipv6_lo),分别存储于所述前段区域(part_hi)和后段区域(part_lo)中;同时,这两个区域对于IPV4路由的查找和匹配则是完全等价的。part_hi和part_lo在用于匹配IPV4路由时没有区别,都只匹配路由的32bitIP值、路由所在的VRF(VirtualRoutingForwarding,路由转发表)以及路由类型。part_hi用于匹配IPV6时,匹配IPV6路由的前67bitIP值、路由所在的VRF以及路由类型;匹配后的结果中会返回一个ID字段(ipv6_idx),用于标示IPV6路由的ipv6_hi在程序内部维护的存储ID(这个ID的位数决定了可以支持的最大IPV6条目数)part_lo用于匹配IPV6时,匹配IPV6路由的后61bitIP值、前半段返回的ipv6_idx值以及路由类型。在路由前缀的存放设计中,为每个路由掩码长度都重新分配新的内部掩码长度,用于内部路由在硬件表中存储位置的安排,以实现最长掩码匹配的路由匹配基本规则。基本的分配规则设置为:IPV6前半部分的掩码分配区间为95~162bit;IPV4的掩码分配区间为62~94bit;IPV6后半部分的掩码分配区间为0~61bit。由于基于TCAM做路由匹配的路由器,必须保证路由的匹配顺序严格遵循最长掩码匹配规则,那么在不修改路由器原有的路由配置算法的情况下,利用新的路由掩码分配规则,程序可以动态的调整路由在硬件存储的位置,严格保证路由的匹配顺序如下:(1)对于IPV4路由的匹配,保持和原有路由安排方式不变。(2)对于IPV6路由的匹配,可以保证ipv6_hi安排在TCAM的part_hi,ipv6_lo部分安排在TCAM的ipv6_lo,满足先匹配ipv6_hi部分,再匹配ipv6_lo部分的匹配规则。如图1所示,当业务报文为一个IPV4报文时,通过执行下述的业务报文匹配和转发,实现了业务正常转发过程,具体步骤如下:S101.当包处理流程识别收到一个IPV4报文时,进入路由匹配前,需要将路由所在的VRF和报文中的IP地址(32bitIP值)提取出来,并且用变量保存区分字段(v6_flag),即置位为0,并将这三个值作为IPV4路由匹配的关键字。S102.将IPV4路由的关键字送入硬件表的part_hi进行匹配。S103.判断part_hi中是否有匹配表项,如果有,进入S104;如果没有,进入S105。S104.IPV4路由匹配结束,进行正常的业务转发,并结束此次流程。S105.将IPV4路由的关键字送入硬件表的part_lo进行匹配。S106.判断part_lo中是否有匹配表项,如果有,转入S104;如果没有,进入S107。S107.将业务包做丢弃处理,并结束此次流程。如图2所示,当业务报文为一个IPV6报文时,通过执行下述的业务报文匹配和转发,实现了业务正常转发的过程,具体步骤如下:S201.当包处理流程识别收到一个IPV6报文时,进入路由匹配前,需要将路由所在的VRF和报文IP地址的前67位(前67bitIP值)提取出来,并且用内部的变量保存区分字段(v6_flag),即置位为1,将这三个值组合作为ipv6_hi匹配的关键字。S202.将ipv6_hi匹配的关键字送入硬件表的part_hi进行匹配。S203.判断在part_hi中是否匹配上IPV6路由的表项,如果否,进入S204;如果是,进入S205。S204.整个硬件表中没有可以匹配上的IPV6路由,将业务包做丢弃处理,并结束此次流程。S205.访问对应的SRAM(StaticRAM,静态随机存储器),获取ipv6_idx值,用于后续的匹配过程。S206.将ipv6_idx值和报文IP地址的后61位(后61bitIP值)提取出来,并且用变量保存区分字段(v6_flag),即置位为1,将这三个值组合作为ipv6_lo匹配的关键字。S207.将ipv6_lo匹配的关键字送入硬件表的ipv6_lo进行匹配。S208.判断part_lo中是否匹配上ipv6_lo路由的表项,如果否,进入S204;如果是,进入S209。S209.进行正常的业务转发,并结束此次流程。由于本发明实施例在完成路由配置后,匹配业务完全由硬件完成,相对于原有的业务流程多出一次业务匹配过程,但是由于整个匹配流程可以在一个转发周期内完成,因此完全不影响路由器的转发性能。本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。