一种路由查找方法和转发系统的制作方法

文档序号:7648351阅读:202来源:国知局
专利名称:一种路由查找方法和转发系统的制作方法
技术领域
本发明涉及通信技术,尤其涉及一种路由查找方法和转发系统。
背景技术
INTERNET的迅速发展给我们的生活带来了巨大的变化,随之而来的是网络流量的迅速增长。网络流量的增长对INTERNET上的路由器来说是一个很大的挑战。路由器是互连网的主要节点设备,路由器通过查找路由表决定数据包的转发。由于路由器对每个接收的数据包都需要查找路由表来决定数据包的转发,所以路由表的查找效率如何往往决定了整个路由器的性能。
目前路由的查找主要是根据IP地址为关键字来直接匹配路由表,从而得到路由转发的信息。比如当IPV6报文进行复杂流分类来执行策略路由,则路由表项将非常大。比如复杂流分类需要根据源地址、目的地址、源端口号、目的端口号和协议类型五元组来查找复杂流分类表。由于IPV6的源地址和目的地址都是128位,所以根据复杂流分类表来查找策略路由时将超过256位,这样,随着网络流量的增长,路由表项会越来越大,所以路由查找的速度必然会受到影响。

发明内容
有鉴于此,本发明实施例的主要目的是提供一种路由查找方法、路由表压缩方法和路由转发系统及路由转发引擎,以尽可能解决路由表项大所导致的路由查找速度慢的问题。
本发明实施例的目的是通过以下技术方案实现的本发明实施例提供一种路由查找的方法,从所接收的数据报文中提取关键字;对所述关键字进行压缩,所述压缩是指将所述关键字中为0的字段压缩为至少一个标志位;根据压缩后的关键字查找压缩路由表。
此外,本发明实施例还提供一种路由表压缩方法,提取路由表中的关键字;对所述关键字进行压缩,得到压缩关键字,所述压缩是指将所述关键字中为0的字段压缩为至少一个标志位;将所述压缩关键字放回所述路由表中,得到压缩路由表。
此外,本发明另一实施例提供了一种路由转发系统,包括控制处理模块、转发引擎、协处理器和存储器,所述控制处理模块包括第一压缩路由模块,用于对路由表进行压缩,得到压缩路由表;路由配置模块,用于将所述压缩路由表存放到所述协处理器;所述转发引擎包括第二压缩路由模块,用于将所述数据报文中的关键字进行压缩,得到压缩关键字;所述协处理器,用于根据所述压缩关键字查找所述压缩路由表,输出下一跳信息给所述转发引擎;所述转发引擎用于根据所述下一跳信息从所述存储器中提取所述数据报文并进行转发。
本发明实施例还提供另一种路由转发引擎,包括包接收模块,用于接收数据报文;并提取所述数据报文中的关键字;包转发模块,用于接收所述关键字,并对所述关键字进行压缩,并根据所述关键字查找压缩路由表,输出下一跳信息; 包发送模块,用于根据所述下一跳信息对所述数据报文进行转发。
由上述本发明实施例提供的技术方案可以看出,采用本发明实施例,通过把IP地址为0的字段压缩成至少一个标志位,则可以大大缩短路由表的空间,提高路由的查找速度。


图1是本发明实施例一的路由查找的方法流程图;图2是本发明实施例二的路由转发的系统示意图;图3是本发明实施例三的路由转发引擎示意图。
具体实施例方式
为了实现路由的快速查找,发明人通过多方考虑,认为从IP地址的实际应用出发,来解决现有技术的问题有现实意义。将IP地址进行压缩,目的是缩小路由表的空间。所以,为了尽可能地缩小路由表的空间,我们可以将所述关键字中为0的字段压缩为一个标志位。比如IPV6在实际应用中,IPV6地址经常有多个字节为0。如将IPV6地址分割成多个汇聚字段,其特点是经常有多个8比特字段值为0。这样如果把0的字节压缩成一个标志位,则可以大大缩短路由表的空间,提高路由的查找速度。
我们以IPV6地址为例进行说明,对于一个IPV6地址为20::1,则表明第一个字节为20,最后一个字节为1。由于IPV6的字节数有16个,每个字节从低位到高位分别表示为0、1、2......15。由于字节1至字节14都为0,所以将每个0为的字节都分别用一个标志位来表示,比如字节1至字节14都用标志位为1来表示,这样,可以至少压缩12个字节。
在本发明实施例的具体实现时,具体的压缩标志位的设置可以根据具体的需要来设定。比如,我们可以把16比特为0的字段设置一个标志位;或者我们可以用两个4比特来表示标志位,表示一段连续为0的字节数,前4比特可以表示起始字节,后4比特可以表示终止字节。我们还以IPV6地址20::1为例,这样,起始字节为1,用二进制表示为0001,终止字节14,用二进制表示为1110。这样,字节1至字节14的压缩标志位为00011110。由于关键字经过压缩,相应地,路由表中对应的关键字部分也需要压缩。例如,我们可以通过提取路由表中的关键字;对所述关键字进行压缩,得到压缩关键字,所述压缩是指将所述关键字中为0的字段压缩为至少一个标志位;将所述压缩关键字放回所述路由表中,得到压缩路由表。具体压缩的方法可以和压缩关键字的方法一样。比如,关键字压缩方法为将8比特为0的字段设置一个标志位,则压缩路由表的压缩方法也是将8比特为0的字段设置一个标志位。
针对现实情况中,有些路由的IPV6地址中没有为0的字节数或者为0的字节数不多,所以,导致路由表无法压缩或者没必要压缩。考虑到这种情况,我们可以将没压缩的路由表和压缩路由表同时保存。则对压缩的关键字,从压缩路由表中进行查找路由;对没有压缩的关键字,从没压缩的路由表进行查找路由。
所以,在本发明实施的具体实现时,我们可以设置一个压缩长度规格,例如压缩长度规格为144比特,如果压缩后的长度如果在144比特以内,则进行压缩;如果压缩后的长度超出144比特,则不进行压缩。因此,用压缩的关键字去查找压缩路由表,用不压缩的关键字去查找没压缩的路由表。
为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例,并参照附图,对本发明进一步详细说明。
实施例一可参考图1,图1是本发明实施例一的路由查找的方法流程图。
步骤101、从所接收的数据报文中提取关键字,所述关键字是用来查找路由;关键字的提取可以根据实际的需要来设置,我们以策略路由为例,一般数据报文进行策略路由转发时需要依据源地址、目的地址、源端口号、目的端口号和协议类型来查找路由表,从而获取路由转发所需的下一跳的信息。这样,接收到数据报文后,需要从数据报文中提取的关键字为源地址、目的地址、源端口号、目的端口号和协议类型。其中源地址为20::1,目的地址为10:20::1。如果是组播路由时,则关键字可以为源地址和组播地址。
步骤102、对所述关键字进行压缩,所述压缩是指将所述关键字中为0的字段压缩为至少一个标志位;我们先以上面提到的源地址为例进行说明。所述源地址为IPV6地址,具体为20::1,则表明第一个字节为20,最后一个字节为1。由于IPV6的字节数有16个,每个字节从低位到高位分别表示为0、1、2......15。由于字节1至字节14都为0,由于1个字节为8比特,所以字节1至字节14都是分别有8比特位为0。如果将每个为0的字节都分别用一个比特标志位来表示,比如字节1至字节14都用标志位为0来表示,以所述字节1为例,则字节1压缩前占8个比特位,具体为00000000,当所述字节1压缩后只占一个比特位,具体为0。这样,所述字节1压缩后将减少7个比特位。在本发明实施例的具体实现时,我们还可以将不为0的字节统一用一个标志位来表示,例如用1来表示。这样压缩关键字后,所述关键字将得到一个压缩标志位。例如所述源地址20::1的压缩标志位为1000000000000001。此外,我们可以把16比特为0的字段设置一个标志位,我们仍以所述源地址为例,这样,所述源地址20::1的压缩标志位为100000001,这样,压缩关键字长度又少了7比特。所述源地址20::1的压缩关键字以压缩标志位+压缩后有效关键字来表示,具体的压缩标志位的设置可以根据具体的需要来设定。我们现在详细描述一下关键字压缩的实现过程,以下面的压缩方法为例,即以为0的字节压缩为一个比特标志位,例如为0;不为0的字节压缩为一个比特标志位,例如为1。这样,仍以上述的源地址为例,具体的压缩过程可以这样实现我们先设置一个计数器可以初始化为0,设置寄存器A来存放压缩标志位,设置寄存器B来存放不为0的字节数,设置一个指针C来指示寄存器B的当前字节处。压缩字节不为0的由于所述源地址共有128位,我们可以用4个寄存器来存放。为了方便描述,我们用id来标识寄存器,即4个寄存器分别为id=0;id=1;id=2;id=3。这样,每个寄存器存放32位,共4个字节,为了方便描述,我们用字节0,字节1,字节2,字节3表示。压缩开始后,我们可以先对id=0的寄存器进行压缩,首先可以判断其中的字节3是否为0,如果是的话,则所述计数器加1,并将字节3的压缩标志位置0,且将字节3的压缩标志位放入寄存器A。如果字节3不为0,则将字节3的值放入寄存器B,同时指针C加1,并且将字节3的压缩标志位置1。之后,对id=0的寄存器中字节2进行压缩处理,压缩处理的过程如字节3一样。当id=0的寄存器中字节0压缩完成后,则开始对id=1的寄存器进行压缩处理,具体的压缩过程同上所述。当4个寄存器都压缩完成后,我们可以对关键字中的其他IP地址进行压缩,当关键字中的所有IP地址压缩完成后,我们可以对压缩关键字长度进行判断,如果压缩关键字的长度达到设定的压缩长度规格,则对所述关键字进行压缩,否则不进行压缩。所述压缩长度规格可以根据具体情况来设定,比如可以根据路由表项的大小要求。判断压缩关键字的长度可以根据所述计数器的值来将判断。我们设定关键字的压缩长度规格为144比特,则当关键字中的所有IP地址都压缩完成后,我们通过计数器的值来判断是否满足要求压缩长度规格。由于我们是以8比特为0压缩为1个标志位举例,所以当计数器的值大于等于21时,则说明所述关键字满足压缩长度规格144比特。最终压缩关键字可用下述表示压缩标志位+不为0的字节。即提取寄存器A和寄存器B中的内容作为压缩关键字来进行查找路由。需要说明的是,压缩所有IP地址时可以使用一个计数器,且计数器的值是累加的。
需要说明的是,本发明实施例并不限定压缩查找寄存器的先后顺序,并不限定压缩每个寄存器中的字节顺序。此外,本发明实施例的具体实现时,我们也可以在对关键字中的所有IP地址分别进行压缩,也可以统一进行压缩。优选地,我们可以对关键字中的所有IP地址都压缩完成后,再判断压缩关键字是否满足要求的压缩长度规格。压缩关键字的长度规格可以分别根据需要来设定。例如压缩关键字的长度考虑到路由表项的大小,设定为144比特。
步骤103、根据压缩后的关键字查找压缩路由表。
由于关键字经过压缩,相应地,路由表中对应的关键字部分也需要压缩。具体压缩的方法可以和压缩关键字的方法一样。比如,关键字压缩方法为将8比特为0的字段设置一个标志位,则压缩路由表的压缩方法也是将8比特为0的字段设置一个标志位。
针对现实情况中,有些路由的IPV6地址中没有为0的字节数或者为0的字节数不多,所以,导致路由表无法压缩或者没必要压缩。考虑到这种情况,我们可以将没压缩的路由表和压缩路由表同时保存。则对压缩的关键字,从压缩路由表中进行查找路由;对没有压缩的关键字,从没压缩的路由表进行查找路由。
所以,在本发明实施的具体实现时,我们可以设置一个压缩长度规格,例如压缩长度规格为144比特,如果压缩后的长度如果在144比特以内,则进行压缩;如果压缩后的长度超出144比特,则不进行压缩。因此,用压缩的关键字去查找压缩路由表,用不压缩的关键字去查找没压缩的路由表。
实施例二可参考图2,图2是本发明实施例二的路由转发的系统示意图。
本发明实施例二提供了一种路由转发的系统,包括如下模块,控制处理模块、转发引擎、协处理器和存储器。其中,所述控制处理模块,用于完成控制协议报文的处理,路由表项的一些配置。所述控制处理模块还包括第一压缩路由模块,用于对路由表进行压缩,得到压缩路由表;路由配置模块,用于将所述压缩路由表存放到所述协处理器。所述转发引擎,用于接收数据报文,将所述数据报文存放到所述存储器中,并完成数据报文的转发。所述转发引擎还包括第二压缩路由模块,用于将所述数据报文中的关键字进行压缩,得到压缩关键字;协处理器,用于根据所述压缩关键字查找所述压缩路由表,输出下一跳信息给所述转发引擎。所述转发引擎根据所述下一跳信息从所述存储器中提取所述数据报文并进行转发。
针对上述提到的现实情况中,有些路由的IP地址中没有为0的字节数或者为0的字节数不多,所以,导致关键字或者路由表无法压缩或者没必要压缩。所以,我们可以对关键字或者路由表压缩后的长度分别设置一个压缩长度规格,所述控制处理模块还可以包括第一判断模块,用于判断路由表压缩后的长度是否在压缩长度规格以内;第一压缩路由模块,用于对路由表压缩后的长度在所述压缩长度规格以内的进行压缩,得到压缩路由表。相应地,所述转发引擎还可以包括第二判断模块,用于判断关键字压缩后的长度是否在所述压缩长度规格以内;第二压缩路由模块,用于对关键字压缩后的长度在所述压缩长度规格以内的进行压缩,得到压缩关键字。需要说明的是,为了保证关键字压缩后可以依据压缩关键字查找到对应的路由,所以压缩路由表的压缩方法和压缩关键字的方法一样。这样,所述协处理器中可以包含两个路由表,一个是没压缩的路由表;另一个是压缩路由表。所述协处理器根据所述压缩关键字查找所述压缩路由表,根据所述没压缩关键字查找没压缩路由表。
在本发明实施例的具体实现时,第一判断模块和/或第一压缩路由模块可以位于所述控制处理器中,也可以独立于所述控制处理器设置。相应地,第二判断模块和/或第二压缩路由模块可以位于所述转发引擎中,也可以独立于所述控制处理器设置。还有,所述协处理器中可以存放压缩路由表,也可以存放压缩路由表的下一跳索引。当所述协处理器中存放的是压缩路由表时,所述协处理器输出下一跳给所述转发引擎;当所述协处理器中存放的是压缩路由表的下一跳索引时,所述协处理器输出下一跳索引给所述转发引擎,所述转发引擎根据所述下一跳索引到所述存储器中读取下一跳。
实施例三可参考图3,图3是本发明实施例三的路由转发引擎示意图。
本发明实施例三提供了一种路由转发引擎,包括包接收模块、包转发模块、包发送模块。
其中,包接收模块,用于接收数据报文;并提取所述数据报文中的关键字,所述关键字是用来查找路由;包转发模块,用于接收所述关键字,并对所述关键字进行压缩,并根据所述关键字查找压缩路由表,输出下一跳信息;包发送模块,用于根据所述下一跳信息对所述数据报文进行转发。
在本发明实施例三的具体实现时,对所述关键字进行压缩也可以由专门的压缩模块来完成。关于提取所述数据报文中的关键字的操作,在本发明实施例的具体实现时,也可以由包转发模块来处理。
本领域普通技术人员可以理解实现上述实施例方法中的全部或者部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如;ROM/RAM,磁碟,光盘等。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
权利要求
1.一种路由查找的方法,其特征在于,从所接收的数据报文中提取关键字;对所述关键字进行压缩,所述压缩是指将所述关键字中为0的字段压缩为至少一个标志位;根据压缩后的关键字查找压缩路由表。
2.根据权利要求1所述的方法,其特征在于,所述关键字为源地址、目的地址、源端口号、目的端口号和协议类型。
3.根据权利要求1所述的方法,其特征在于,所述关键字为源地址和组播地址。
4.根据权利要求1所述的方法,其特征在于,所述将所述关键字中为0的字段压缩为至少一个标志位具体包括将所述关键字中8或16比特为0的字段设置一个标志位。
5.根据权利要求1所述的方法,其特征在于,所述将所述关键字中为0的字段压缩为至少一个标志位具体包括将所述关键字中连续为0的字节用两个4比特来表示所述标志位,前4比特表示起始字节,后4比特表示终止字节。
6.一种路由查找的方法,其特征在于,从所接收的数据报文中提取关键字;当压缩后的关键字长度符合压缩长度规格时,对所述关键字进行压缩,所述压缩是指将所述关键字中为0的字段压缩为至少一个标志位;根据压缩后的关键字查找压缩路由表。
7.一种路由表压缩方法,其特征在,提取路由表中的关键字;对所述关键字进行压缩,得到压缩关键字,所述压缩是指将所述关键字中为0的字段压缩为至少一个标志位;将所述压缩关键字放回所述路由表中,得到压缩路由表。
8.一种路由转发系统,包括控制处理模块、转发引擎、协处理器和存储器,其特征在于,所述控制处理模块包括第一压缩路由模块,用于对路由表进行压缩,得到压缩路由表;路由配置模块,用于将所述压缩路由表存放到所述协处理器;所述转发引擎包括第二压缩路由模块,用于将所述数据报文中的关键字进行压缩,得到压缩关键字;所述协处理器,用于根据所述压缩关键字查找所述压缩路由表,输出下一跳信息给所述转发引擎;所述转发引擎用于根据所述下一跳信息从所述存储器中提取所述数据报文并进行转发。
9.根据权利要求8所述的系统,其特征在于,所述控制处理模块还可以包括第一判断模块,用于判断路由表压缩后的长度是否在压缩长度规格以内;相应地,第一压缩路由模块,用于对路由表压缩后的长度在所述压缩长度规格以内的进行压缩,得到压缩路由表。相应地,所述转发引擎还包括第二判断模块,用于判断关键字压缩后的长度是否在所述压缩长度规格以内;相应地,第二压缩路由模块,用于对关键字压缩后的长度在所述压缩长度规格以内的进行压缩,得到压缩关键字。
10.一种路由转发系统,包括控制处理模块、转发引擎、协处理器和存储器,其特征在于,所述控制处理模块包括第一压缩路由模块,用于对路由表进行压缩,得到压缩路由表;路由配置模块,用于将所述压缩路由表存放到所述存储器,将所述压缩路由表的下一跳索引存放到所述协处理器;所述转发引擎包括第二压缩路由模块,用于将所述数据报文中的关键字进行压缩,得到压缩关键字;所述协处理器,用于根据所述压缩关键字查找所述压缩路由表的下一跳索引,输出下一跳索引给所述转发引擎;所述转发引擎根据所述下一跳索引从所述存储器中获取路由下一跳信息,并提取所述数据报文并进行转发。
11.一种路由转发引擎,其特征在于,包括包接收模块,用于接收数据报文;并提取所述数据报文中的关键字;包转发模块,用于接收所述关键字,并对所述关键字进行压缩,并根据所述关键字查找压缩路由表,输出下一跳信息;包发送模块,用于根据所述下一跳信息对所述数据报文进行转发。
全文摘要
本发明实施例涉及一种路由查找的方法、路由表压缩方法和路由转发系统及路由转发引擎,所述路由查找方法主要是从所接收的数据报文中提取关键字;对所述关键字进行压缩,所述压缩是指将所述关键字中为0的字段压缩为至少一个标志位;根据压缩后的关键字查找压缩路由表。通过把IP地址为0的字段压缩成至少一个标志位,则可以大大缩短路由表的空间,提高路由的查找速度。
文档编号H04L29/06GK101060482SQ20071007393
公开日2007年10月24日 申请日期2007年3月31日 优先权日2007年3月31日
发明者游南林 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1