一种路由管理系统和方法

文档序号:7629729阅读:180来源:国知局
专利名称:一种路由管理系统和方法
技术领域
本发明涉及通信领域,特别是涉及一种带VPN的软件树与TCAM结合的路由管理系统和方法。
背景技术
路由管理模块是网络处理中的重要模块,路由管理信息一般分为两个部分,一部分为路由动作信息,包含为封装报文所需要的下一跳地址,发送端口等查找路由最终需要的信息,另一部分为路由查找信息,即查找关键字的信息,例如查找时用的目的IP、虚拟个人网络(Virtual Private Network,VPN)等为了找到某条路由需要维护的查找关键字信息。如何设计出一种好的路由查找与维护算法是整个路由管理模块的关键。
现有的路由管理方法有(一)是使用高速的硬件去完成路由的查找与维护,如使用单独的三态内容可寻址存储器(TCAM)去维护路由表;(二)使用软件系统的方法去维护路由查找信息,如经典软件树系统的方法。
TCAM(Triple Content Addressable Memory)是三态内容可寻址存储器的缩写,它是一种基于内容寻址的存储器。之所以称为三态,是根据其在查找过程中返回值的情况而命名的。对于一个查找过程来说,一般存在两个精确结果完全匹配或未找到。但是对于TCAM来说其返回的结果有三种,除了完全匹配和未找到之外,它还能智能返回和要查找的关键字“最接近”的结果(如果存在的话)。例如要查找一个10位长度的关键字A,如果存在A则,返回完全匹配结果;如果不存在A,则会首先返回前9位和A相同的“最接近”的A1,仍不存在则返回前8位和A相同的结果,以此类推。TCAM一般支持72、144和288位长度的关键字的维护和查找,因此对于现有的带VPN信息和IPv4的IP网络路由查找来说,72位关键字能很好的支持。
TCAM是一种基于内容可寻址的寄存器,所有的维护与查找动作都通过专门的硬件技术来完成,其处理速度很快,可以达到100兆包/秒的性能,其查找延时固定,而且支持不同长度的关键字查找与维护,因此对于一些本身不带有快速查找功能的芯片来说,外接TCAM进行某些需要快速查找功能的业务来说是一种很好的选择。
一般地,在进行路由查找的时候TCAM维护如图1所示的表项结构,当输入需要查找的IP和VPN的时候,TCAM能按照最长匹配算法快速返回查找结果。
VPN是虚拟私有网络的缩写,是将物理分布在不同地点的网络通过公用骨干网连接而成的逻辑上的虚拟子网。
“虚拟”是针对传统的企业专用网络而言的,传统的专用网络一般需要建立自己的物理专用线路,而VPN则是利用公共网络资源和设备建立一个逻辑上的专用通道,这个通道可以提供专用网络同样的功能。
“私有”是表示VPN是被特定企业或者用户私有,不是任何公共网络上的用户都能使用已建立的VPN通道,只有经过授权的用户才可以使用,并且在该通道内传输的数据经过了加密和认证,不能被第三者修改和破解,从而保证了数据的完整性和机密性。
“网络”表示VPN是一种专门的组网技术和服务,是为了建立和使用VPN必须配备相应的网络设备,这样的设备主要是能设置和处理VPN业务,如华为的NetEngine系列路由器。
使用TCAM虽然有很多优点,但是这种高速的硬件成本很高,容量相对较小,而且功耗一般较大,对单板的散热条件要求较高。对于一个多业务系统来说,需要查找的表很多,不只是路由表这一种,例如有些时候还需要有会话表、地址转换表等,在进行业务处理的时候这些表可能都需要维护查找,如果全部使用TCAM去维护与查找则将大大提高产品成本。而且当路由查找对速度要求不是很高的时候使用大量的TCAM去维护各种表,如快速转发表(Forwarding Information Base,FIB表),对TCAM资源是一种浪费。
快速转发表(FIB)是用于存放报文的三层出口信息,在进行IP三层转发的时候需要得到下一跳、出端口和出接口板号等信息,其包含两个部分。一部分是路由的动作信息,即转发时需要的下一跳、出端口和出接口板号等信息。另一部分是为了找到某条特定的动作信息所需要维护的查找信息,这个查找信息可以用专门的硬件如TCAM完成,也可以使用软件系统去完成,如软件树系统。
经典软件树系统是用在路由表的存储和管理上的。这种算法是Intel提供的一种利用树的结构去维护路由表的存储(添加)和管理(删除、更新、查找)的。
经典软件树系统是通过维护内存中的一个树型数据结构去进行路由查找的,其使用一种双向最长匹配查找(Longest Prefix Match Dual Lookup)算法进行路由查找的。
系统在初始化的时候需要建立两颗空的查找树,分别称为长表树和短表树,其中长表树中放置的路由掩码长度大于16的路由节点,短表树中放置掩码长度小于等于16的路由节点,随着路由信息的添加逐步完善这两颗树。
这两颗树都使用图2的表项结构作为树中节点的基本结构指向动作的指针或索引(index)、掩码长度、指向子节点的指针或索引(next ptr),每个节点都包含数量不同的子节点,每个节点存储路由管理信息,从而组成一颗完整的查找树。
经典软件树方法的缺点有两点一是对于VPN业务基于这种树结构的单个软件树无法支持,如当增加IP为1.1.1.*(二进制00000001.00000001.00000001.*,掩码长度为24)的路由时,根据IP 1.1.1.*定位到某个叶子节点,如果多个VPN都有这样IP 1.1.1.*的路由时,不同的VPN势必造成路由冲突。
现有的解决方法有两种,一种对每个VPN都构建两颗经典软件树;另一种是增加节点的长度和树的层数。
但是,无论那种方法都会造成很大的内存浪费,因此经典软件树方法对VPN业务无法得到很好的支持。
二是容易造成路由丢失,一般地,经典软件树系统中,当系统添加路由时,按下列过程进行1)系统添加IP 1.1.0000000*.*(二进制00000001.00000001.0000000*.*,掩码长度为23)的路由,根据IP中高16bits(1.1)定位根节点的基本表项,然后根据16-19bits(0000)定位到二级节点,最后根据20-23bits(000*)定位到三级节点,由于第23bits为*,因此根据20-23bits可以定位到两个表项第0表项(0000)和第1表项(0001),同时给这两个表项添加相同的路由;当系统再次添加路由信息IP 1.1.1.*(掩码长度为24)的路由时,按下列过程进行2)当系统再次添加IP 1.1.1.*(掩码长度为24)的路由,和第一步定位的节点相同,只不过在第三级节点的时候可以精确定位到第1表项,由于该表项已经存在了一条路由,但是掩码长度没有新增的掩码长度长,根据最长匹配方法,需要将该表项中的路由信息更新为新增的路由信息;当系统删除IP 1.1.1.*的路由时,按下列过程进行3)当系统删除IP 1.1.1.*的路由,定位到第三级节点,清除index域,释放动作表资源,即删除了IP 1.1.1.*的路由。
这时就会造成了路由的丢失,因为虽然IP 1.1.1.*的路由是由系统删除的,但是系统并没有删除IP 00000001.00000001.0000000*.*的路由,然而经过步骤3)的操作,IP 00000001.00000001.0000000*.*路由管理信息也被清除,这样,路由管理信息无可避免地被丢失了,这是由经典软件树系统自身的结构的缺陷而造成的。

发明内容
本发明目的在于克服上述缺陷而提供了一种带VPN的软件树与TCAM结合的路由信息管理系统和方法。
为实现本发明目的而提供的一种路由信息管理系统,包括软件表树单元,树查表单元,TCAM表单元和TCAM查表单元;树查表单元对软件树单元中的软件树进行遍历,并将遍历的结果反馈给TCAM查表单元;TCAM查表单元对TCAM表单元中的TCAM表进行遍历,并与树查表单元查表后的结果进行比较,并确定路由的动作信息。
所述的软件树包括长表树和短表树。
所述的长表树和短表树中每个树节点包括下列域索引域;VPN域;掩码长度域;有效表项域;下一节点指针域。
所述TCAM表中每个树节点包括下列域VPN域;IP域;掩码长度域;有效表项域。
所述TCAM查表单元包括至少一个TCAM。
所述的对软件树单元中的软件树遍历的遍历算法为最长匹配算法。
所述的对TCAM表单元中的TCAM表遍历算法为TCAM算法。
本发明还提供了一种路由信息管理方法,包括下列步骤A)创建路由管理软件树与TCAM表;B)在查找路由信息时,在软件树中查找到路由信息,得到路由信息的掩码长度和索引;同时在TCAM表中查找出路由信息的掩码长度和索引;根据路由动作信息是否为空,比较查找出路由信息中的掩码长度,确定最终的路由动作信息。
C)在删除或者更新路由信息时,同时到软件树和TCAM中删除和更新路由信息,同时释放节点资源。
所述软件树为长表树和短表树。
所述步骤A)包括下列步骤步骤A1)首先判断添加路由信息的掩码长度是否大于短表树最大掩码长度,如果是,则建立长表树节点或TCAM表节点;步骤A2)否则建立短表树节点或者TCAM表节点。
所述的步骤B)包括下列步骤B1)根据提供的路由VPN信息和IP信息,在长表树和短表树中进行查找,得到长表树搜索的路由信息的掩码长度和路由动作信息或者在短表树搜索的路由信息的掩码长度和路由动作信息;B2)在TCAM表中查找出路由信息的掩码长度和路由动作信息;B3)根据路由动作信息是否为空,比较查找出路由信息中的掩码长度,确定最终的路由动作信息index;所述步骤B1)包括下列步骤B11)清空路由动作信息记录和长表树或者短表树的掩码长度,按长表树或者短表树的层结构,根据输入IP,在长表树或者短表树的索引表中查找到节点;B12)判断该节点中的VPN域中的值是否与给定的VPN值相同,如果是,则进行步骤B13;否则,进行步骤B14;
B13)判断该节点的索引域是否为空,如果是,则结束查找;如果否,则更新路由动作信息为本节点中的索引域中的路由动作信息;记录掩码长度为本节点中的掩码长度域中的掩码长度值与原掩码长度值的和;B14)记录掩码长度为本节点的掩码长度域中的掩码长度值与原掩码长度值的和;B15)判断该节点下是否有子树,如果没有,则结束查找;如果有,则继续;重复步骤B11和B12,直到遍历整个软件树,返回掩码长度和路由动作信息。
所述步骤B3)包括下列步骤B31)判断长表树,短表树和TCAM表查找到的路由动作信息是否为空,如果是,进行返回路由缺失;否则继续;B32)判断TCAM表查找到的路由动作信息是否为空,如果不空,则进行步骤B33;否则,进行步骤B37;B33)判断长表树查找到的路由动作信息是否为空,如果不空,则比较其掩码长度和,返回路由动作信息为掩码长度值较大的表树的路由动作信息,结束查找;如果是,则继续;B34)判断短表树查找到的路由动作信息是否为空,如果不空,则比较其掩码长度和,返回路由动作信息为掩码长度值较大的表树的路由动作信息,结束查找;B35)返回路由动作信息为TCAM表查找到的路由动作信息;B36)判断长表树查找到的路由动作信息是否为空,如果不空,则返回路由动作信息为长表树查找到的路由动作信息;否则,返回路由动作信息为短表树查找到的路由动作信息。
本发明的有益效果是本发明将TCAM技术和经典软件树两种方法有机地结合起来,在一些对快速转发信息查找速度要求不高的系统中提供一种有效的路由解决方案,只使用少量的TCAM资源,同时也使软件树结构支持VPN业务,而且不容易造成路由丢失,除非资源耗尽外不会造成路由丢失。


图1是现有的TCAM中的路由表项结构示意图;
图2是现有的软件树的基本表项结构示意图;图3是本发明的初始时添加路由1.1.1.*后的部分软件树结构;图4是本发明的软件树基本表项结构示意图;图5是本发明TCAM表基本表项的结构示意图;图6是本发明中路由判断流程图;图7是本发明长表树查找过程流程图;图8是本发明短表树查找过程流程图。
具体实施例方式
下面结合附图3~8进一步详细说明本发明的一种路由管理系统和方法,其在经典软件树系统和方法中,增加了TCAM的支持,提供了一种新的路由管理系统和路由管理方法,解决对速度要求不是很高的情况下的路由查找与维护的问题。
本实施例的路由管理系统包括一个长表树单元,一棵短表树单元,树查表单元,TCAM表单元和TCAM查表单元。
本发明中的树是软件树,是一种按数据结构的遍历树结构存储的数据存储结构。
长表树单元包括长表树,短表树单元包括短表树,对于长表树和短表树来说,除了根节点以外,所有其他节点都固定包含16个表项(使用了IP中的4位索引的范围,最多对应16个表项)。
如图4所示,长表树与短表树中各结点的结构包括下列域索引域index其用于存储指向路由管理信息中的路由动作信息的地址;VPN域用于存放添加路由时,该路由所属的VPN信息。
增加的VPN域是指这样的结构可以支持VPN业务中的路由查找,而经典软件树中没有VPN的信息,不能支持VPN业务。
掩码长度域Mask_len存储该层级路由的掩码长度Mask_len;Mask_len域中存储该层节点中路由的掩码长度。一般地,在需要添加一条路由管理信息到节点时,路由信息中会指出该路由的掩码长度。例如路由信息IP为1.1.1.*(二进制0000001.00000001.00000001.*),掩码长度为24,其表示所有目的地址IP前24位为1.1.1的IP都可以使用这一条路由信息,这样的路由一般用于某个网段。
Mask_len域就是表示当前配置到某个表项中的IP掩码长度。例如添加一个网段路由信息1.1.1.*,掩码长度为24到系统中时,根据建树的过程,由于掩码长度为24,所以该表项会被添加到长表树中。按照16-4-4-4-4这中结构,该IP可以写成0000000100000001-0000-0001,包含三层节点,最终结果存放在第2层节点的第1个表项中,mask_len记录为24,表示增加的这个IP的路由信息的掩码长度为24位。
Trie_num域存储本节点相邻下一层子节点中有效表项的个数。
Trie_num域中存储每个节点中其相邻下一层子节点中有多少个表项是有效的。在长表树和短表树中,除了根节点之外,为了节省资源,其他节点都是动态申请和释放的。每个节点都包含16个表项,对于一个有子节点的表项来说,trie_num表示其子节点中有效表项的数量。当trie_num为0的时候即表示该表项的子节点中的有效表项数为0,是整个子节点的空间即可释放重用。因此方便动态维护软件树中的其他节点。
next_ptr域存储指向子节点的指针值。
树查表单元,用于对长表树和短表树按最长匹配算法进行遍历,并最遍历的结果反馈给TCAM查表单元。
如图5所示,TCAM表单元,包括一个TCAM表,包括VPN域,IP域,掩码长度域mask_len和索引域index。
在添加一条TCAM表的表项时候就会提供这四个域的值,建立树结点,分别存放在关键字部分和对应结果部分,这个动作有现有的TCAM芯片自动完成。
TCAM查表单元,用于对TCAM表按TCAM算法进行遍历,并与树查表单元查表后的结果进行比较,并按最长匹配算法确定路由的地址。
TCAM查表单元中包括至少一个TCAM,用于执行TCAM算法,遍历TCAM表。
如图5所示,在进行TCAM查表时,先输入表项结构的两个域VPN和IP为查找时输入的关键字,右边的两个域为查找需要得到的结果掩码长度mask_len和索引index。
查找的时候,向TCAM芯片输入需要查找的关键字VPN+IP,硬件自动查找并返回查找结果,这一过程由现有的TCAM算法完成,这个结果就是你在添加这条表项时的内容,即与该关键字对应的mask_len和index。
(一)路由管理信息创建过程,即创建路由管理软件树与TCAM查表树。
下面详细描述本实施例路由管理信息的创建过程A)首先判断掩码长度mask_len的长度是否大于16,如果掩码长度大于16,则建立长表树节点或TCAM表节点;否则建立短表树节点或者TCAM表节点。
当需要添加一条路由的时候,路由表给定路由信息中的四个信息vpn信息,IP地址信息,mask_len掩码长度信息,index路由动作信息的地址,这样就可以定位到一个子节点。
A1)当掩码长度大于16时,建立长表树节点或者TCAM表节点。
A11)首先判断长表树单元和短表树单元中的长表树和短表树中的表项中是否有路由信息,如果没有的话则直接添加路由信息。
A12)如果已经有路由信息,则在长表树中查找可以添加该路由信息的节点。
对于一个IPv4的地址来说,共有32bits,将这32bits分为16-4-4-4-4的结构。
首先初始化一个含有64K(2^16)个表项的初始化表,每个表项都可以用IP地址的前16位索引得到,这个含有64K个表项的初始化表称为这颗查找树的根节点,为静态节点。
初始化表与16bits对应,其中0.0(二进制的00000000.00000000)对应第0个表项,255.255(二进制的11111111.11111111)对应第64K-1个表项。
除根节点外,其余每个节点包含16(2^4)个基本表项,称为一个块(Block),根据需要动态添加删除,其与4bits对应。
如图3所示,当需要添加一条路由的时候,给定IP地址、VPN信息、掩码长度,例如,添加一个VPN为1,掩码长度为24,IP为1.1.1.1(即二进制的00000001.00000001.00000001.00000001)的路由信息,按照上面的对IP的划分,对于一个掩码长度为24的IP,可以分为16-4-4-*-*,其中,后8位被掩掉了,不予考虑。
根据该IP的高16位,可以得到该1.1对应在初始表中的位置为根节点中第257(2^8+2^0)条表项。
在这个根节点下面,申请一个子节点块1(Block),将该块的索引或者指针赋给根节点的next_ptr域,作为根节点指向下一个指针的值,同时根节点中的index域为空(Null),VPN域的值为空(Null),mask_len的值为16,trie_num的值为1,其表示这个块(子节点块1)中只有一个表项有效。
根据该IP地址中的16~19bit,即0000对应到子节点中的第0个基本表项,然后申请下一个子节点块2(Block),将该块的索引或者指针赋给该表项中的next_ptr域,同样,该节点的表项中的index域为空(Null),VPN域的值为空(Null),mask_len值为4,trie num的值为1,表示这个块中只有1个表项有效。
在处理的时候中间节点也可以只给trie_num赋值,mask_len可以不用赋值,为0即可,在查找的时候,如果查到了第2层节点,可以确定查找的这条表项的掩码长度为16+4+第2层节点中记录的实际掩码长度。
根据该IP地址中的第20~23bit,即0001对应到块2中的第1个基本表项,根据添加路由时输入的掩码长度来决定是否还需要继续申请下一个模块。本实施例中添加路由的掩码长度为24(<=16+4+4),因此只需要三层节点即可;A13)判断该表项中是否已经存在路由;如果不存在则直接添加;如果已经存在路由,则继续判断VPN与掩码长度是否相同,相同则更新该表项中的路由信息;将路由表中的路由指针或者索引的值赋予块中的index域,然后置next_ptr为空,VPN域的值为1,mask_len的值为4,trie num的值为0,表示这个块中只有0个表项有效;trie num存储本节点相邻下一层子节点中有效表项的个数(不是本节点中有效表项数量),因此叶子节点(没有子节点了)中的trie num肯定为0。
A14)如果不相同,由于该表项中已经存在内容,且VPN或掩码长度与现在需要添加的这条表项不同,因此将新的路由信息的中VPN信息,IP信息,mask_len信息和index信息添加到TCAM表中的TCAM表项中。
按照TCAM中的结构,如图6所示,把VPN(1)和IP(1.1.1.1)放到关键字部分,对应的把掩码长度mask_len(24)和index放到结果部分。
这样就在长表树中添加了一条VPN为1,IP地址为1.1.1.1,掩码长度为24的路由管理信息。
TCAM是一块硬件的芯片,可以把它想象成一个黑盒子,给它传输一个需要查找的关键字,它就会返回查找的结果。
如果需要添加32位掩码的路由,则按照上述的方法,根据上述16-4-4-4-4的结构,最多添加到第5级子节点即可。
B)如果长掩码长度小于16位时,则建立短表树节点或者TCAM表节点。
B1)当掩码长度小于等于16位时,可以利用短表树的创建表管理路由信息,短表树创建过程与长表树相同,只是创建时根据输入的掩码长度不同而选择不同的查表树。由于短表树中的路由掩码长度都是小于等于16的,所以短表树只考虑IP地址中的前16bits,并且将这16bits划分为8-4-4的结构。因此,短表树的根节点包含256(2^8)个基本表项,其与8bits对应,与8-4-4结构相应,短表树最多有三层节点。
B2)如果已经存在路由,则继续判断VPN与掩码长度是否相同,相同的话则更新该表项中的路由信息,不同则将新的路由信息添加到TCAM中。这样只需要在内存中维护一个软件树(长短两颗树)即可。
(二)在需要路由表信息时,按照建立的长表树,短表树分别利用最长匹配算法,查找到路由信息,得到路由信息的掩码长度mask_len和索引index同时TCAM表利用TCAM算法的查找出路由信息的掩码长度mask_lent和索引index,按最长匹配算法比较两种算法查找出路由信息中的掩码长度,确定最终的路由动作信息index。
当整个查找树建立之后,查找过程相对比较简单。对于一个给定的IP,只需要将该IP按8-4-4和16-4-4-4-4分节后同时到两颗树中根据得到索引链,按最长匹配算法查找,逐级查找即可,直到该链的next ptr为空,返回该表项中Index指针,即路由动作表项的指针,并返回该路由信息的掩码长度。如果在长表树中能够找到该IP的路由信息,则返回路由信息的掩码长度mask_len和索引index;如果在短表树能够找到该IP的路由信息,则返回路由信息的掩码长度mask_len和索引index。同时在TCAM表中,按TCAM算法,输入VPN信息和IP信息,得到返回的掩码长度mask_len和索引index。
利用最长匹配方法比较在长表树或者短表树中查找到的掩码长度mask_len与TCAM表中查找到的掩码长度mask_len,以掩码长度mask_len较长的结果,返回该节点中的索引index信息,即路由动作表项的指针。如果长表树,短表树和TCAM表中都没有要查找的路由信息,则返回路由缺失信息(Miss)。
如图6~8所示,下面详细描述查找的过程整个查找过程采用多向查找算法,之所以称之为多向查找算法,是指在查找的过程中,可以同时在长表树、短表树和TCAM表中进行查找。
(C)查找开始时,根据提供的VPN信息和IP信息,在长表树和短表树中利用最长匹配算法进行查找,得到长表树搜索的路由信息的掩码长度mask_len_long和路由动作信息rt_ptr_long或者在短表树搜索的路由信息的掩码长度mask_len_short和路由动作信息rt_ptr_short;同时在TCAM表中按照TCAM算法查找出路由信息的掩码长度mask_len_TCAM和路由动作信息rt_ptr_TCAM。
C1)如图7所示,在长表树中利用最长匹配算法进行查找,得到长表树搜索的路由信息的掩码长度mask_len_long和路由动作信息rt_ptr_long;C11)清空路由动作信息记录rt_Ptr_long和长表树掩码长度mask_len_long,根据输入IP的31至16位(高16位),在长表树的第0层索引表中查找到第0层根节点;C12)判断本节点中的VPN域中的值是否与给定的VPN值相同,如果是,则进行步骤C13;否则,进行步骤C14;C13)判断该节点的index域是否为空,如果是,则结束查找;如果否,则更新路由动作信息rt_ptr_long为本节点中的索引域中的路由动作信息;记录掩码长度mask_len_long为本节点中的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_long=mask_len_long+mask_len的值;C14)记录掩码长度mask_len_long为本节点的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_long=mask_len_long+mask_len的值;C15)判断该节点下是否有子树,如果没有,则结束查找;如果有,则继续;C16)根据输入IP的15至12位,在长表树的第1层的索引表中查找到第1层子节点;C17)判断子节点中的VPN域中的值是否与给定的VPN值相同,如果是,则进行步骤C18;否则,进行步骤C19;C18)判断该节点的index域是否为空,如果是,则结束查找;如果否,则更新路由动作信息rt_ptr_long为本节点中的索引域中的路由动作信息;记录掩码长度mask_len_long为本节点中的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_long=mask_len_long+mask_len的值;C19)记录掩码长度mask_len_long为本节点的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_long=mask_len_long+mask_len的值;C110)判断该节点下是否有子树,如果没有,则结束查找;如果有,则继续;C111)根据输入IP的11至8位,在长表树的第2层索引表中查找到第2层子节点;C112)判断子节点中的VPN域中的值是否与给定的VPN值相同,如果是,则进行步骤C113;否则,进行步骤C114;C113)判断该节点的index域是否为空,如果是,则结束查找;如果否,则更新路由动作信息rt_ptr_long为本节点中的索引域中的路由动作信息;记录掩码长度mask_len_long为本节点中的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_long=mask_len_long+mask_len的值;C114)记录掩码长度mask_len_long为本节点的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_long=mask_len_long+mask_len的值;C115)判断该节点下是否有子树,如果没有,则结束查找;如果有,则继续;
C116)根据输入IP的7至4位,在长表树的第3层索引表中查找到第3层子节点;C117)判断子节点中的VPN域中的值是否与给定的VPN值相同,如果是,则进行步骤C118;否则,进行步骤C119;C118)判断该节点的index域是否为空,如果是,则结束查找;如果否,则更新路由动作信息rt_ptr_long为本节点中的索引域中的路由动作信息;记录掩码长度mask_len_long为本节点中的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_long=mask_len_long+mask_len的值;C119)记录掩码长度mask_len_long为本节点的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_long=mask_len_long+mask_len的值;C120)判断该节点下是否有子树,如果没有,则结束查找;如果有,则继续;C121)根据输入IP的3至0位,在长表树的第4层索引表中查找到第4层子节点;C122)判断子节点中的VPN域中的值是否与给定的VPN值相同,如果是,则进行步骤C123;否则,进行步骤C124;C123)判断该节点的index域是否为空,如果是,则结束查找;如果否,则更新路由动作信息rt_ptr_long为本节点中的索引域中的路由动作信息;记录掩码长度mask_len_long为本节点中的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_long=mask_len_long+mask_len的值,结束查找;C124)记录掩码长度mask_len_long为本节点的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_long=mask_len_long+mask_len的值,结束查找。
C2)如图8所示,在短表树中利用最长匹配算法进行查找,得到短表树搜索的路由信息的掩码长度mask_len_short和路由动作信息rt_ptr_short;C21)清空路由动作信息记录rt_ptr_short和短表树掩码长度mask_len_short;根据输入IP的31至24位(高8位),在短表树的第0层索引表中查找到第0层根节点;C22)判断本节点中的VPN域中的值是否与给定的VPN值相同,如果是,则进行步骤C23;否则,进行步骤C24;C23)判断该节点的index域是否为空,如果是,则结束查找;如果否,则更新路由动作信息rt_ptr_short为本节点中的索引域中的路由动作信息;记录掩码长度mask_len_short为本节点中的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_short=mask_len_short+mask_len的值;C24)记录掩码长度mask_len_short为本节点的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_short=mask_len_short+mask_len的值;C25)判断该节点下是否有子树,如果没有,则结束查找;如果有,则继续;C26)根据输入IP的23至20位,在短表树的第1层的索引表中查找到第1层子节点;C27)判断子节点中的VPN域中的值是否与给定的VPN值是否相同,如果是,则进行步骤C28;否则,进行步骤C29;C28)判断该节点的index域是否为空,如果是,则结束查找;如果否,则更新路由动作信息rt_ptr_short为本节点中的索引域中的路由动作信息;记录掩码长度mask_len_short为本节点中的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_short=mask_len_short+mask_len的值;C29)记录掩码长度mask_len_short为本节点的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_short=mask_len_short+mask_len的值;C210)判断该节点下是否有子树,如果没有,则结束查找;如果有,则继续;C211)根据输入IP的19至16位,在长表树的第2层索引表中查找到第2层子节点;C212)判断子节点中的VPN域中的值是否与给定的VPN值相同,如果是,则进行步骤C213;否则,进行步骤C214;
C213)判断该节点的index域是否为空,如果是,则结束查找;如果否,则更新路由动作信息rt_ptr_short为本节点中的索引域中的路由动作信息;记录掩码长度mask_len_short为本节点中的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_short=mask_len_short+mask_len的值,结束查找;C214)记录掩码长度mask_len_short为本节点的掩码长度域mask_len中的掩码长度值与原掩码长度值的和,即mask_len_short=mask_len_short+mask_len的值,结束查找。
C3)在TCAM表中利用TCAM算法进行查找,得到TCAM表搜索的路由信息的掩码长度mask_len_TCAM和路由动作信息rt_ptr_TCAM;C31)清空路由动作信息记录rt_ptr_TCAM=NULL和TCAM表掩码长度mask_len_TCAM=0;C32)根据给定的IP值和VPN值,输入到公知TCAM算法中,按公知的TCAM算法,查表到TCAM表中的节点;C33)判断该节点中是否有路由信息,如果没有,则结束查找;如果有,则将路由动作信息rt_ptr_TCAM更新为该节点中的索引域index中的路由动作信息,将掩码长度记录mask_len_TCAM记录为节点的掩码长度域mask_len的值,结束查找。
(D)如图6所示,根据路由动作信息,比较查找出路由信息中的掩码长度,确定最终的路由动作信息index;D1)判断长表树,短表树和TCAM表查找到的路由动作信息是否为空,如果是,进行返回路由缺失(Miss);否则继续;D2)判断TCAM表查找到的路由动作信息是否为空,如果不空,则进行步骤D3;否则,进行步骤D7;D3)判断长表树查找到的路由动作信息是否为空,如果不空,则比较其掩码长度mask_len_long和mask_len_TCAM,返回路由动作信息Route为掩码长度值较大的表树的路由动作信息,结束查找;如果是,则继续;D4)判断短表树查找到的路由动作信息是否为空,如果不空,则比较其掩码长度mask_len_long和mask_len_TCAM,返回路由动作信息Route为掩码长度值较大的表树的路由动作信息,结束查找;D6)返回路由动作信息Route为TCAM表查找到的路由动作信息mask_len_TCAM;D7)判断长表树查找到的路由动作信息是否为空,如果不空,则返回路由动作信息Route为长表树查找到的路由动作信息;否则,返回路由动作信息为Route为短表树查找到的路由动作信息。
例如需要查找一个IP为1.1.1.1(二进制为00000001.00000001.00000001.00000001)的地址的路由信息。对于短表树来说取其前16位,按照8-4-4的结构分开,得到00000001-0000-0001,在查找的时候首先根据高八位,即00000001,索引到短表树根节点(第0层节点)中的第1个表项,如果本表项没有子节点则本次查找结束,返回本表项中的结果(指向动作表的索引或指针)。如果存在子节点(第1层节点),则根据接下来的4位,即0000,索引到第1层节点的第0个表项,如果本表项没有子节点,则本次查找找结束,返回本表项中的结果。如果还存在子节点(第2层节点),则再根据接下来的4位,即0001,索引到第2层节点的第1个表项,由于短表树最多包含3层(0、1、2),因此返回本表项中的结果作为最终的短表树的查找结果RT_SHORT。
类似的长表树的查找过程基本相同,不同的是长表树取整个32位的IP,并按照16-4-4-4-4的结构分开,得到0000000100000001-0000-0001-0000-0001的结构,每层的查找过程与短表树完全相同。由于长表树最多包含5层,因此其最多需要进行5次匹配,返回的结果记为RT_LONG。
在查找的过程中,由于将关键字中的一部分作为索引,因此如果索引到某个表项存在结果,则表明作为索引的这部分关键字存在完全匹配结果。以短表树为例,查找1.1.1.1,根据最高的8位00000001,如果定位到第0层的表项中的结果有效,则表明需要查找的所有内容中存在和1.1.1.1最高8位00000001完全匹配的内容。如果定位到第1层,则表明存在高12位完全相同的内容,以此类推。
(三)在删除或者更新路由信息时,同时到软件树和TCAM中删除和更新路由信息,同时释放节点资源。
删除或更新路由的时候,同时到软件树和TCAM中进行路由的删除和更新。同时根据trie num的值有效的判断子节点是否已经没有路由信息,从而释放子节点(Block)资源。
删除或更新路由管理信息的时候,同时到软件树和TCAM中进行路由管理信息的删除和更新,在软件树(包括长表树和短表树)的删除中,除删除路由动作信息外,还删除VPN信息,同时根据父表项中的trie num的值有效性判断trie num为0时即表示其子节点中有效表项为0个,即可释放其子节点。每删除一条表项,则其父表项中的trie_num会减1,当父表项中的trie_num减到0的时候即可释放这个表项。
子节点是否已经没有路由信息,从而释放子节点资源,不需要其他域的信息,然后回收该块。
删除路由和添加路由是一个相反的过程,在删除的时候需要比较VPN和掩码长度,只有当VPN和掩码长度相同的表项才能被删除。
每删除一个有效表项,该节点的父表项中的trie num也相应减1。当trienum减到0的时候表示子节点中所有有效表项都被删除,此时可释放子节点资源TCAM中的表项结构和软件树的不同,TCAM中没有trie num的概念,也不需要。Trie num只用在软件树中。TCAM中删除一条表项的时候只需要将关键字部分的信息输入到TCAM芯片中即可,删除表项和回收资源有硬件自动完成,这是现有的技术。
本发明提出了在经典软件树的过程中,增加TCAM的支持,提供了一种新的路由管理解决方法,其解决了在对速度要求不是很高的情况下的路由信息管理与查找的问题,克服了传统软件树无法支持VPN业务的缺点;同时也克服了传统软件树无法避免的路由丢失;并且在路由管理系统中,只需要少量的TCAM作为软件树的补充,降低产品的成本,在时间上,TCAM和软件树同时进行查找,不增加再查找时间,而且在软件树中只维持一颗使用相同节点的树,节省了内存空间,并且使得树的管理与查找变得更加简单。
本发明的实施例是为了更好地理解本发明进行的详细的描述,而并不是对本发明所保护的范围的限定,因此,本领域普通技术人员不脱离本发明的主旨情况下,未经创造性劳动而对本明所做的改变,是在本发明的保护范围内的。
权利要求
1.一种路由信息管理系统,其特征在于,包括软件表树单元,树查表单元,TCAM表单元和TCAM查表单元;树查表单元对软件树单元中的软件树进行遍历,并将遍历的结果反馈给TCAM查表单元;TCAM查表单元对TCAM表单元中的TCAM表进行遍历,并与树查表单元查表后的结果进行比较,并确定路由的动作信息。
2.根据权利要求1所述的路由信息管理系统,其特征在于,所述的软件树包括长表树和短表树。
3.根据权利要求2所述的路由信息管理系统,其特征在于,所述的长表树和短表树中每个树节点包括下列域索引域;VPN域;掩码长度域;有效表项域;下一节点指针域。
4.根据权利要求2所述的路由信息管理系统,其特征在于,所述TCAM表中每个树节点包括下列域VPN域;IP域;掩码长度域;有效表项域。
5.一种路由信息管理方法,其特征在于,包括下列步骤A)创建路由管理软件树与TCAM表;B)在查找路由信息时,在软件树中查找到路由信息,得到路由信息的掩码长度和索引;同时在TCAM表中查找出路由信息的掩码长度和索引;根据路由动作信息是否为空,比较查找出路由信息中的掩码长度,确定最终的路由动作信息。
6.根据权利要求5所述的路由信息管理方法,其特征在于,还包括下列步骤C)在删除或者更新路由信息时,同时到软件树和TCAM表中删除和更新路由信息,同时释放节点资源。
7.根据权利要求5或6所述的路由信息管理方法,其特征在于,所述软件树为长表树和短表树。
8.根据权利要求7所述的路由信息管理方法,其特征在于,所述步骤A)包括下列步骤步骤A1)首先判断添加路由信息的掩码长度是否大于短表树最大掩码长度,如果是,则建立长表树节点或TCAM表节点;步骤A2)否则建立短表树节点或者TCAM表节点。
9.根据权利要求7所述的路由信息管理方法,其特征在于,所述的步骤B)包括下列步骤B1)根据提供的路由VPN信息和IP信息,在长表树和短表树中进行查找,得到长表树搜索的路由信息的掩码长度和路由动作信息或者在短表树搜索的路由信息的掩码长度和路由动作信息;B2)在TCAM表中查找出路由信息的掩码长度和路由动作信息;B3)根据路由动作信息是否为空,比较查找出路由信息中的掩码长度,确定最终的路由动作信息。
10.根据权利要求9所述的路由信息管理方法,其特征在于,所述步骤B1)包括下列步骤B11)清空路由动作信息记录和长表树或者短表树的掩码长度,按长表树或者短表树的层结构,根据输入IP,在长表树或者短表树的索引表中查找到节点;B12)判断该节点中的VPN域中的值是否与给定的VPN值相同,如果是,则进行步骤B13;否则,进行步骤B14;B13)判断该节点的索引域是否为空,如果是,则结束查找;如果否,则更新路由动作信息为本节点中的索引域中的路由动作信息;记录掩码长度为本节点中的掩码长度域中的掩码长度值与原掩码长度值的和;B14)记录掩码长度为本节点的掩码长度域中的掩码长度值与原掩码长度值的和;B15)判断该节点下是否有子树,如果没有,则结束查找;如果有,则继续;重复步骤B11和B12,直到遍历整个软件树,返回掩码长度和路由动作信息。
11.根据权利要求10所述的路由信息管理方法,其特征在于,所述步骤B3)包括下列步骤B31)判断长表树,短表树和TCAM表查找到的路由动作信息是否为空,如果是,进行返回路由缺失;否则继续;B32)判断TCAM表查找到的路由动作信息是否为空,如果不空,则进行步骤B33;否则,进行步骤B36;B33)判断长表树查找到的路由动作信息是否为空,如果不空,则比较其掩码长度和,返回路由动作信息为掩码长度值较大的表树的路由动作信息,结束查找;如果是,则继续;B34)判断短表树查找到的路由动作信息是否为空,如果不空,则比较其掩码长度和,返回路由动作信息为掩码长度值较大的表树的路由动作信息,结束查找;B35)返回路由动作信息为TCAM表查找到的路由动作信息;B36)判断长表树查找到的路由动作信息是否为空,如果不空,则返回路由动作信息为长表树查找到的路由动作信息;否则,返回路由动作信息为短表树查找到的路由动作信息。
全文摘要
一种路由信息管理系统及方法。该系统包括软件表树单元,树查表单元,TCAM表单元和TCAM查表单元;树查表单元对软件树单元中的软件树进行遍历,并将遍历的结果反馈给TCAM查表单元;TCAM查表单元对TCAM表单元中的TCAM表进行遍历,并与树查表单元查表后的结果进行比较,并确定路由的动作信息。本发明还提供了一种路由信息管理方法。其在路由信息查找速度要求不高的系统中提供一种有效的路由解决方案,只使用少量的TCAM资源,同时也使软件树结构支持VPN业务,而且不容易造成路由丢失。
文档编号H04L12/46GK1859297SQ20051013512
公开日2006年11月8日 申请日期2005年12月23日 优先权日2005年12月23日
发明者段义飞 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1