数据包的处理方法和装置制造方法

文档序号:7780592阅读:159来源:国知局
数据包的处理方法和装置制造方法
【专利摘要】本发明实施例提供一种数据包的处理方法和装置。该方法包括:接收数据包;查询单域单表,获取与该数据包中的信息对应的匹配域的值;根据该匹配域的值对应的索引,查询规则表,获取与该匹配域的值对应的索引所在的表项对应的匹配规则;根据该匹配规则,对该数据包执行相应的处理。本发明实施例的数据包的处理方法和装置解决现有技术中查找速度较慢,从而导致了数据包的处理速度较慢问题。
【专利说明】数据包的处理方法和装置
【技术领域】
[0001 ] 本发明实施例涉及通信技术,尤其涉及一种数据包的处理方法和装置。
【背景技术】
[0002]随着网络设备新技术的不断发展,网络设备向着控制和转发分离的架构转变,其中,OpenFlow便是一个典型的控制和转发相分离的网络设备架构。具体的,该OpenFlow网络设备主要包括交换机和控制器(Controller);其中,交换机中只运行转发平面,将控制平面运行在远程的Controller中,即由一个或多个Controller控制多个交换机中的流表,从而达到控制数据包转发的目的。
[0003]目前,交换机中的流表数量可以为一个或者多个,且流表可以具体为多域单表,其中,该多域单表由多个匹配域组成一个表项,再由多个表项链接而成。另外,当交换机接收到数据包后,线性遍历交换机中的多域单表中的每个表项,以查找到与该数据包匹配的匹配规则,并根据该匹配规则对该数据包进行相应的处理。
[0004]但是,现有技术中由于在每次接收到数据包之后,都需要线性遍历交换机中的每个多域单表,因此,造成了查找速度较慢,从而导致了数据包的处理速度较慢问题。

【发明内容】

[0005]本发明实施例提供一种数据包的处理方法和装置,以解决现有技术中查找速度较慢,从而导致了数据包的处理速度较慢问题。
[0006]本发明实施例的第一个方面提供了一种数据包的处理方法,包括:
[0007]接收数据包;
[0008]查询单域单表,获取与所述数据包中的信息对应的匹配域的值;
[0009]根据所述匹配域的值对应的索引,查询规则表,获取与所述匹配域的值对应的索引所在的表项对应的匹配规则;
[0010]根据所述匹配规则,对所述数据包执行相应的处理。
[0011]在第一个方面的第一种可能实现方式中,所述接收数据包之前,所述方法还包括:
[0012]建立所述单域单表和所述规则表;其中,每个单域单表对应的一个匹配域,且单域单表间的匹配域不相同;
[0013]分别在单域单表中增加对应的匹配域的值,并在所述规则表中的表项中增加匹配域的值在单域单表中的索引以及配置所述表项对应的匹配规则。
[0014]结合第一个方面的第一种可能实现方式,在第一个方面的第二种可能实现方式中,当所述单域单表中的匹配域的匹配类型为精确匹配类型时,所述查询单域单表,获取与所述数据包中的信息对应的匹配域的值,包括:
[0015]采用哈希算法,查询所述单域单表,获取与所述数据包中的信息对应的匹配域的值。[0016]结合第一个方面的第一种可能实现方式,在第一个方面的第三种可能实现方式中,当所述单域单表中的匹配域的匹配类型为通配符匹配类型时,所述查询单域单表,获取与所述数据包中的信息对应的匹配域的值,包括:
[0017]采用HiCuts算法,查询所述单域单表,获取与所述数据包中的信息对应的匹配域的值。
[0018]结合第一个方面的第三种可能实现方式,在第一个方面的第四种可能实现方式中,当获取的所述匹配规则的数量为多个时,所述根据所述匹配规则,对所述数据包进行相应的处理,包括:
[0019]获取多个所述匹配规则中优先级最高的匹配规则,并根据所述优先级最高的匹配规则对所述数据包进行相应的处理。
[0020]结合第一个方面的第一种至第四种任一种可能实现方式,在第一个方面的第五种可能实现方式中,还包括:
[0021]接收增加规则请求,所述增加规则请求包括N个待增加的匹配域的值和待增加的匹配规则;
[0022]查询所述单域单表,若不存在所述N个待增加的匹配域的值,则分别在所述N个待增加的匹配域对应的单域单表中增加对应的匹配域的值,并分别记录所述N个待增加的匹配域的值对应的引用计数为I ;
[0023]在所述规则表中的第一表项中记录所述N个待增加的匹配域的值在所述单域单表中的索引,并建立所述第一表项与所述待增加的匹配规则的关联关系;
[0024]其中,N为整数,且大于或等于I。
[0025]结合第一个方面的第五种可能实现方式,在第一个方面的第六种可能实现方式中,还包括:
[0026]若i个待增加的匹配域的值存在所述单域单表中,j个待增加的匹配域的值不存在所述单域单表中,则分别在所述j个待增加的匹配域对应的单域单表中增加对应的匹配域的值,并分别记录所述j个待增加的匹配域的值对应的引用计数为1,以及分别将所述i个待增加的匹配域的值对应的引用计数加I ;
[0027]在所述规则表中的第二表项中记录所述j个待增加的匹配域的值在所述第二单域单表中的索引以及i个待增加的匹配域的值在所述当前的单域单表中的索引,并建立所述第二表项与所述待增加的匹配规则的关联关系;
[0028]其中,j和i为整数,均小于N,且i+j=N。
[0029]结合第一个方面的第五种可能实现方式,在第一个方面的第七种可能实现方式中,还包括:
[0030]若所述N个待增加的匹配域的值均存在所述单域单表中,则在所述单域单表中分别将所述N个待增加的匹配域的值对应的引用计数加I ;
[0031]在所述规则表中的第三表项中记录所述N个待增加的匹配域的值在所述单域单表中的索引,并建立所述第三表项与所述待增加的匹配规则的关联关系。
[0032]结合第一个方面的第一种至第四种任一种可能实现方式,在第一个方面的第八种可能实现方式中,还包括:
[0033]接收删除规则请求,所述删除规则请求包括N个待删除的匹配域的值;[0034]查询所述单域单表,若存在所述N个待删除的匹配域的值,则查询所述规则表,获取与所述N个待删除的匹配域的值在所述单域单表中的索引对应的第四表项;
[0035]若所述第四表项对应有匹配规则,则分别将所述N个待删除的匹配域的值对应的引用计数减1,并删除所述第四表项和对应的匹配规则;
[0036]其中,N为整数,且大于或等于I。
[0037]结合第一个方面的第八种可能实现方式,在第一个方面的第九种可能实现方式中,还包括:
[0038]在分别将所述N个待删除的匹配域的值对应的引用计数减I之后,若所述N个待删除的匹配域的值中至少一个匹配域的值对应的引用计数为0,则删除引用计数为0的匹配域的值。
[0039]结合第一个方面的第一种至第四种任一种可能实现方式,在第一个方面的第十种可能实现方式中,还包括:
[0040]接收更新规则请求,所述更新规则请求包括原匹配规则和待更新的匹配规则;
[0041]查询所述规则表,若存在所述原匹配规则,则将所述原匹配规则替换为所述待更新的匹配规则。
[0042]本发明实施例的第二个方面提供了一种数据包的处理装置,包括:
[0043]接收模块,用于接收数据包;
[0044]匹配域处理模块,用于查询单域单表,获取与所述数据包中的信息对应的匹配域的值;
[0045]匹配规则处理模块,用于根据所述匹配域的值对应的索引,查询规则表,获取与所述匹配域的值对应的索引所在的表项对应的匹配规则;
[0046]数据包处理模块,用于根据所述匹配规则,对所述数据包执行相应的处理。
[0047]在第二个方面的第一种可能实现方式,还包括:
[0048]建立模块,用于建立所述单域单表和所述规则表;其中,每个单域单表对应的一个匹配域,且单域单表间的匹配域不相同;
[0049]单域单表处理模块,用于分别在单域单表中增加对应的匹配域的值;
[0050]规则表处理模块,用于在所述规则表中的表项中增加匹配域的值在单域单表中的索引以及配置所述表项对应的匹配规则。
[0051]结合第二个方面的第一种可能实现方式,在第二个方面的第二种可能实现方式中,当所述单域单表中的匹配域的匹配类型为精确匹配类型时,所述匹配域处理模块具体用于采用哈希算法,查询所述单域单表,获取与所述数据包中的信息对应的匹配域的值。
[0052]结合第二个方面的第一种可能实现方式,在第二个方面的第三种可能实现方式中,当所述单域单表中的匹配域的匹配类型为通配符匹配类型时,所述匹配域处理模块具体用于采用HiCuts算法,查询所述单域单表,获取与所述数据包中的信息对应的匹配域的值。
[0053]结合第二个方面的第三种可能实现方式,在第二个方面的第四种可能实现方式中,当获取的所述匹配规则的数量为多个时,所述数据包处理模块具体用于获取多个所述匹配规则中优先级最高的匹配规则,并根据所述优先级最高的匹配规则对所述数据包进行相应的处理。[0054]结合第二个方面的第一种至第四种中任一种可能实现方式,在第二个方面的第五种可能实现方式中,所述接收模块还用于接收增加规则请求,所述增加规则请求包括N个待增加的匹配域的值和待增加的匹配规则;
[0055]所述匹配域处理模块还用于查询所述单域单表,若不存在所述N个待增加的匹配域的值,则分别在所述N个待增加的匹配域对应的单域单表中增加对应的匹配域的值,并分别记录所述N个待增加的匹配域的值对应的引用计数为I ;
[0056]所述匹配规则处理模块还用于在所述规则表中的第一表项中记录所述N个待增加的匹配域的值在所述单域单表中的索引,并建立所述第一表项与所述待增加的匹配规则的关联关系;
[0057]其中,N为整数,且大于或等于I。
[0058]结合第二个方面的第五种可能实现方式,在第二个方面的第六种可能实现方式中,所述匹配域处理模块还用于若i个待增加的匹配域的值存在所述单域单表中,j个待增加的匹配域的值不存在所述单域单表中,则分别在所述j个待增加的匹配域对应的单域单表中增加对应的匹配域的值,并分别记录所述j个待增加的匹配域的值对应的引用计数为1,以及分别将所述i个待增加的匹配域的值对应的引用计数加I ;
[0059]所述匹配规则处理模块还用于在所述规则表中的第二表项中记录所述j个待增加的匹配域的值在所述第二单域单表中的索引以及i个待增加的匹配域的值在所述当前的单域单表中的索引,并建立所述第二表项与所述待增加的匹配规则的关联关系;
[0060]其中,j和i为整数,均小于N,且i+j=N。
[0061]结合第二个方面的第五种可能实现方式,在第二个方面的第七种可能实现方式中,所述匹配域处理模块还用于若所述N个待增加的匹配域的值均存在所述单域单表中,则在所述单域单表中分别将所述N个待增加的匹配域的值对应的引用计数加I ;
[0062]所述匹配规则处理模块还用于在所述规则表中的第三表项中记录所述N个待增加的匹配域的值在所述单域单表中的索引,并建立所述第三表项与所述待增加的匹配规则的关联关系。
[0063]结合第二个方面的第一种至第四种中任一种可能实现方式,在第二个方面的第八种可能实现方式中,所述接收模块还用于接收删除规则请求,所述删除规则请求包括N个待删除的匹配域的值;
[0064]所述匹配规则处理模块还用于所述匹配域处理模块查询所述单域单表,若存在所述N个待删除的匹配域的值,则查询所述规则表,获取与所述N个待删除的匹配域的值在所述单域单表中的索引对应的第四表项;
[0065]所述匹配域处理模块还用于若所述匹配规则处理模块查询不存在所述第四表项对应有匹配规则,则分别将所述N个待删除的匹配域的值对应的引用计数减I ;
[0066]所述匹配规则处理模块还用于删除所述第四表项和对应的匹配规则。
[0067]结合第二个方面的第八种可能实现方式,在第二个方面的第九种可能实现方式中,所述匹配域处理模块还用于在分别将所述N个待删除的匹配域的值对应的引用计数减I之后,若所述N个待删除的匹配域的值中至少一个匹配域的值对应的引用计数为0,则删除引用计数为0的匹配域的值。
[0068]结合第二个方面的第一种至第四种中任一种可能实现方式,在第二个方面的第十种可能实现方式中,所述接收模块还用于接收更新规则请求,所述更新规则请求包括原匹配规则和待更新的匹配规则;
[0069]所述匹配规则处理模块还用于查询所述规则表,若存在所述原匹配规则,则将所述原匹配规则替换为所述待更新的匹配规则。
[0070]本发明实施例数据包的处理方法和装置,通过接收数据包,查询单域单表,获取与该数据包中的信息对应的匹配域的值,并根据该匹配域的值对应的索引,查询规则表,获取与该匹配域的值对应的索引所在的表项对应的匹配规则,根据该匹配规则,对该数据包执行相应的处理,相较于现有技术中在接收到数据包之后,线性遍历多域单表中的每个表项而言,本发明由于先通过单域单表获取与数据包中的信息对应的匹配域的值,再依据匹配域的值对应的索引,查询规则表,以获取对应的匹配规则,因此,解决了现有技术中查找速度较慢,从而导致了数据包的处理速度较慢问题。
【专利附图】

【附图说明】
[0071]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0072]图1为本发明数据包的处理方法的一个实施例的流程图;
[0073]图2为现有技术中多域单表的示意图;
[0074]图3a为本发明中单域单表的示意图;
[0075]图3b为本发明中规则表的示意图;
[0076]图4为本发明数据包的处理方法的又一个实施例的流程图;
[0077]图5为本发明数据包的处理方法的还一个实施例的流程图;
[0078]图6为本发明数据包的处理方法的再一个实施例的流程图;
[0079]图7为本发明数据包的处理装置的一个实施例的结构示意图;
[0080]图8为本发明数据包的处理装置的另一个实施例的结构示意图。
【具体实施方式】
[0081]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0082]图1为本发明数据包的处理方法的一个实施例的流程图,如图1所示,本实施例的方法可以包括:
[0083]步骤101、接收数据包。
[0084]在本实施例中,举例来说,该数据包可以是:0penFlow中的数据包或者是多域(维)数据包等,本发明不以此为限。
[0085]步骤102、查询单域单表,获取与所述数据包中的信息对应的匹配域的值。
[0086]在本实施例中,该单域单表中一个匹配域对应的多个值,且每个匹配域的值各不相同;单域单表间的匹配域也不相同。另外,该数据包中的信息具体指数据包的包头中的信息,具体可以为:五元组信息(即源IP地址,源端口,目的IP地址,目的端口和传输层协议号)或十元组信息(即进入接口,Ethernet源地址、目标地址、类型,vlan id, IP源地址、目标地址、协议,TCP/UDP目标端口、源端口)等。
[0087]步骤103、根据所述匹配域的值对应的索引,查询规则表,获取与所述匹配域的值对应的索引所在的表项对应的匹配规则。
[0088]在本实施例中,规则表包括至少一个表项和该表项对应的匹配规则,该表项中包括匹配域的值在单域单表中的索引。
[0089]步骤104、根据该匹配规则,对该数据包执行相应的处理。
[0090]在本实施例中,图2为现有技术中多域单表的示意图,图3a为本发明中单域单表的示意图,图3b为本发明中规则表的示意图,如图2和3所示,pl,p2、ql、q2、rl和r2均表不匹配域的值,al至a8均表不匹配规则,其中,pi和p2属于一个匹配域,ql和q2属于一个匹配域,rl和r2属于一个匹配域,且三个匹配域均不相同。由图2可知,在多域单表中,各个匹配域的值均有重复字段,即重复存储,因此消耗了额外的内存空间,而如果采用图3a和图3b中的单域单表和规则表,单域单表之间相互独立,且不存在匹配域重复的问题,力口之规则表中只是存储了匹配域的值对应的索引,因此,可以有效消除多域单表由于匹配域重复而造成的冗余以及消耗空间较大的问题。
[0091]另外,举例来说,当采用现有技术中的多域单表时,以存在20万条的十元组表项为例,则在线性遍历的方式下,需要10*10万次匹配。而若采用本发明的单域单表和规则表,则只需要进行10次的单域单表查询获取与数据包中的信息对应的匹配域的值,并获取该些匹配域的值对应的索引,并依据该索引,查询规则表,获取与该匹配域的值对应的索引所在的表项对应的匹配规则,其查询的次数远远小于10*10万次,因此,有效地提高了查找的速度,从而有效地提高了数据包的处理速度。
[0092]在本实施例中,通过接收数据包,查询单域单表,获取与该数据包中的信息对应的匹配域的值,并根据该匹配域的值对应的索引,查询规则表,获取与该匹配域的值对应的索引所在的表项对应的匹配规则,根据该匹配规则,对该数据包执行相应的处理,相较于现有技术中在接收到数据包之后,线性遍历多域单表中的每个表项而言,本发明由于先通过单域单表获取与数据包中的信息对应的匹配域的值,再依据匹配域的值对应的索引,查询规则表,以获取对应的匹配规则,因此,解决了现有技术中查找速度较慢,从而导致了数据包的处理速度较慢问题。
[0093]进一步的,在本发明的另一个实施例中,在上述图1所示实施例的基础上,步骤101之前,该方法还可以包括:
[0094]建立该单域单表和该规则表;其中,每个单域单表对应的一个匹配域,且单域单表间的匹配域不相同。
[0095]分别在单域单表中增加对应的匹配域的值,并在该规则表中的表项中增加匹配域的值在单域单表中的索引以及配置该表项对应的匹配规则。
[0096]可选地,步骤102的具体实现方式有如下几种:
[0097]当该单域单表中的匹配域的匹配类型为精确匹配类型时,采用哈希算法,查询该多个单域单表,获取与该数据包中的信息对应的匹配域。或者,[0098]当该单域单表中的匹配域的匹配类型为通配符匹配类型时,采用HiCuts算法,查询该多个单域单表,获取与该数据包中的信息对应的匹配域。
[0099]在本实施例中,以OpenFlow为例,OpenFlowl.2协议支持36个匹配域,则单域单表可以有36个,即每个单域单表对应一个匹配域。另外,按照匹配域的匹配类型,可以分为精确匹配类型(可以具体称之为nomask的精确匹配类型)和通配符匹配类型(可以具体称之为hasmask的通配符匹配类型)两类匹配域,例如:属于精确匹配类型的匹配域有:0XM_0F_IN_P0RT、0XM_0F_IN_PHY_P0RT等。属于通配符匹配类型的匹配域有:0XM_0F_IPV4_SRC、0XM_0F_IPV4_DST 等。
[0100]需要说明的是,本发明不局限于采用哈希算法或者HiCuts算法,查询该单域单表,获取与该数据包中的信息对应的匹配域的值,还可以采用其他方式查询该单域单表,获取与该数据包中的信息对应的匹配域的值。
[0101]可选地,当该单域单表中的匹配域的匹配类型为通配符匹配类型时,获取的该匹配规则的数量为多个,则步骤104具体的实现方式为:
[0102]获取多个该匹配规则中优先级最高的匹配规则,并根据该优先级最高的匹配规则对该数据包进行相应的处理。
[0103]可选地,步骤103的一种具体实现方式为:
[0104]根据所述匹配域的值对应的索引,采用哈希算法,查询规则表,获取与所述匹配域的值对应的索引所在的表项对应的匹配规则。
[0105]在本实施例中,当该单域单表中的匹配域的匹配类型为通配符匹配类型时,以该数据包中信息包括端口和IP地址为例,在采用HiCuts算法,查询该多个单域单表后,获取到的端口对应的匹配域可以为多个,以及获取到的IP地址对应的匹配域也可以为多个,则根据端口对应的多个匹配域的索引和IP地址对应的多个匹配域的索引,可以与规则表中的多个匹配规则匹配,并输出优先级最高的匹配规则。
[0106]举例来说,以上述图3a和3b所示的单域单表和规则表为例,若数据包中的信息包括端口、IP地址和MAC地址时,采用HiCuts算法,查询该多个单域单表后,获取到的端口对应的匹配域可以为Pl和P2,获取到IP地址对应的匹配域可以为ql,获取到的MAC地址对应的匹配域为rl和r2,则根据pl、p2、ql、rl和r2的索引,查询规则表,获取与该匹配域的索引所在的表项对应的匹配规则为al、a6、a2和a5,则需要根据al、a6、a2和a5的优先级,选择优先级最高匹配规则对该数据包执行相应的处理。
[0107]图4为本发明数据包的处理方法的又一个实施例的流程图,在上述两个实施例的基础上,在步骤101之前,该方法还可以包括:
[0108]步骤201、接收增加规则请求,该增加规则请求包括N个待增加的匹配域的值和待增加的匹配规则。
[0109]步骤202、查询单域单表,判断N个待增加的匹配域的值是否存在单域单表中;若单域单表中不存在该N个待增加的匹配域的值,则执行步骤203 ;若i个待增加的匹配域的值存在单域单表中,j个待增加的匹配域的值不存在单域单表中,则执行步骤205 ;gN个待增加的匹配域的值均存在单域单表中,则执行步骤207。
[0110]步骤203、分别在该N个待增加的匹配域对应的单域单表中增加对应的匹配域的值,并分别记录该N个待增加的匹配域的值对应的引用计数为I。[0111]步骤204、在该规则表中的第一表项中记录该N个待增加的匹配域的值在该单域单表中的索引,并建立该第一表项与该待增加的匹配规则的关联关系。结束。
[0112]步骤205、分别在该j个待增加的匹配域对应的单域单表中增加对应的匹配域的值,并分别记录该j个待增加的匹配域的值对应的引用计数为1,以及分别将该i个待增加的匹配域的值对应的引用计数加I ;
[0113]其中,N为整数,且大于或等于I。
[0114]步骤206、在该规则表中的第二表项中记录该j个待增加的匹配域的值在该第二单域单表中的索引以及i个待增加的匹配域的值在该当前的单域单表中的索引,并建立该第二表项与该待增加的匹配规则的关联关系。结束。
[0115]其中,j和i为整数,均小于N,且i+j=N。
[0116]步骤207、在该单域单表中分别将该N个待增加的匹配域的值对应的引用计数加
1
[0117]步骤208、在该规则表中的第三表项中记录该N个待增加的匹配域的值在该单域单表中的索引,并建立该第三表项与该待增加的匹配规则的关联关系。
[0118]其中,该第四索引为N个待增加的匹配域在当前的单域单表中的索引。
[0119]图5为本发明数据包的处理方法的还一个实施例的流程图,在图1所示实施例基础上,如图5所示,在步骤101之前,该方法还可以包括:
[0120]步骤301、接收删除规则请求,该删除规则请求包括N个待删除的匹配域的值。
[0121]步骤302、查询该单域单表,若存在该N个待删除的匹配域的值,则查询该规则表,获取与该N个待删除的匹配域的值在该单域单表中的索引对应的第四表项。
[0122]步骤303、若该第四表项对应有匹配规则,则分别将该N个待删除的匹配域的值对应的引用计数减1,并删除该第四表项和对应的匹配规则。
[0123]在本实施例中,在查询当前的单域单表,若不存在N个待增加的匹配域的值,则说明没有存在需要删除的规则,则丢弃该删除规则请求。或者,查询规则表中,若不存在第四表项,则丢弃该删除规则请求。
[0124]图6为本发明数据包的处理方法的再一个实施例的流程图,在图1所示实施例基础上,如图6所示,在步骤101之前,该方法还可以包括:
[0125]步骤401、接收更新规则请求,该更新规则请求包括原匹配规则和待更新的匹配规则。
[0126]步骤402、查询该规则表,若存在该原匹配规则,则将该原匹配规则替换为该待更新的匹配规则。
[0127]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0128]图7为本发明数据包的处理装置的一个实施例的结构示意图,如图7所示,本实施例的装置包括:接收模块11、匹配域处理模块12、匹配规则处理模块13和数据包处理模块14 ;其中,接收模块11用于接收数据包;匹配域处理模块12用于查询单域单表,获取与该数据包中的信息对应的匹配域的值;匹配规则处理模块13用于根据该匹配域的值对应的索引,查询规则表,获取与该匹配域的值对应的索引所在的表项对应的匹配规则;数据包处理模块14用于根据该匹配规则,对该数据包执行相应的处理。
[0129]本实施例的数据包的处理装置可以执行图1所示方法实施例的技术方案,其实现原理相类似,此处不再赘述。
[0130]在本实施例中,通过接收数据包,查询单域单表,获取与该数据包中的信息对应的匹配域的值,并根据该匹配域的值对应的索引,查询规则表,获取与该匹配域的值对应的索引所在的表项对应的匹配规则,根据该匹配规则,对该数据包执行相应的处理,相较于现有技术中在接收到数据包之后,线性遍历多域单表中的每个表项而言,本发明由于先通过单域单表获取与数据包中的信息对应的匹配域的值,再依据匹配域的值对应的索引,查询规则表,以获取对应的匹配规则,因此,解决了现有技术中查找速度较慢,从而导致了数据包的处理速度较慢问题。
[0131]图8为本发明数据包的处理装置的另一个实施例的结构示意图,在上述图7所示实施例的基础上,如图8所示,本实施例的装置还包括:建立模块15、单域单表处理模块16和规则表处理模块17 ;其中,建立模块15用于建立该单域单表和该规则表;其中,每个单域单表对应的一个匹配域,且单域单表间的匹配域不相同;单域单表处理模块16用于分别在单域单表中增加对应的匹配域的值;规则表处理模块17用于在该规则表中的表项中增加匹配域的值在单域单表中的索引以及配置该表项对应的匹配规则。
[0132]可选地,当该单域单表中的匹配域的匹配类型为精确匹配类型时,该匹配域处理模块12具体用于采用哈希算法,查询该单域单表,获取与该数据包中的信息对应的匹配域的值。
[0133]可选地,当该单域单表中的匹配域的匹配类型为通配符匹配类型时,该匹配域处理模块12具体用于采用HiCuts算法,查询该单域单表,获取与该数据包中的信息对应的匹配域的值。
[0134]另外,当获取的该匹配规则的数量为多个时,该数据包处理模块14具体用于获取多个该匹配规则中优先级最高的匹配规则,并根据该优先级最高的匹配规则对该数据包进行相应的处理。
[0135]进一步的,在本发明的又一个实施例中,在上述图8所示实施例的基础上,该接收模块11还用于接收增加规则请求,该增加规则请求包括N个待增加的匹配域的值和待增加的匹配规则;该匹配域处理模块12还用于查询该单域单表,若不存在该N个待增加的匹配域的值,则分别在该N个待增加的匹配域对应的单域单表中增加对应的匹配域的值,并分别记录该N个待增加的匹配域的值对应的引用计数为I ;该匹配规则处理模块13还用于在该规则表中的第一表项中记录该N个待增加的匹配域的值在该单域单表中的索引,并建立该第一表项与该待增加的匹配规则的关联关系;其中,N为整数,且大于或等于I。
[0136]可选地,该匹配域处理模块12还用于若i个待增加的匹配域的值存在该单域单表中,j个待增加的匹配域的值不存在该单域单表中,则分别在该j个待增加的匹配域对应的单域单表中增加对应的匹配域的值,并分别记录该j个待增加的匹配域的值对应的引用计数为1,以及分别将该i个待增加的匹配域的值对应的引用计数加I ;该匹配规则处理模块13还用于在该规则表中的第二表项中记录该j个待增加的匹配域的值在该第二单域单表中的索引以及i个待增加的匹配域的值在该当前的单域单表中的索引,并建立该第二表项与该待增加的匹配规则的关联关系;其中,j和i为整数,均小于N,且i+j=N。
[0137]可选地,该匹配域处理模块12还用于若该N个待增加的匹配域的值均存在该单域单表中,则在该单域单表中分别将该N个待增加的匹配域的值对应的引用计数加I ;该匹配规则处理模块13还用于在该规则表中的第三表项中记录该N个待增加的匹配域的值在该单域单表中的索引,并建立该第三表项与该待增加的匹配规则的关联关系。
[0138]更进一步的,在本发明的还一个实施例中,在上述图8所示实施例的基础上,该接收模块11还用于接收删除规则请求,该删除规则请求包括N个待删除的匹配域的值;该匹配规则处理模块13还用于该匹配域处理模块12查询该单域单表,若存在该N个待删除的匹配域的值,则查询该规则表,获取与该N个待删除的匹配域的值在该单域单表中的索引对应的第四表项;该匹配域处理模块12还用于若该匹配规则处理模块13查询不存在该第四表项对应有匹配规则,则分别将该N个待删除的匹配域的值对应的引用计数减I ;该匹配规则处理模块13还用于删除该第四表项和对应的匹配规则。
[0139]可选地,该匹配域处理模块12还用于在分别将该N个待删除的匹配域的值对应的引用计数减I之后,若该N个待删除的匹配域的值中至少一个匹配域的值对应的引用计数为0,则删除引用计数为0的匹配域的值。
[0140]更进一步的,在本发明的再一个实施例中,在上述图8所示实施例的基础上,该接收模块11还用于接收更新规则请求,该更新规则请求包括原匹配规则和待更新的匹配规则;该匹配规则处理模块13还用于查询该规则表,若存在该原匹配规则,则将该原匹配规则替换为该待更新的匹配规则。
[0141]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种数据包的处理方法,其特征在于,包括: 接收数据包; 查询单域单表,获取与所述数据包中的信息对应的匹配域的值; 根据所述匹配域的值对应的索引,查询规则表,获取与所述匹配域的值对应的索引所在的表项对应的匹配规则; 根据所述匹配规则,对所述数据包执行相应的处理。
2.根据权利要求1所述的方法,其特征在于,所述接收数据包之前,所述方法还包括: 建立所述单域单表和所述规则表;其中,每个单域单表对应的一个匹配域,且单域单表间的匹配域不相同; 分别在单域单表中增加对应的匹配域的值,并在所述规则表中的表项中增加匹配域的值在单域单表中的索引以及配置所述表项对应的匹配规则。
3.根据权利要求2所述的方法,其特征在于,当所述单域单表中的匹配域的匹配类型为精确匹配类型时,所述查询单域单表,获取与所述数据包中的信息对应的匹配域的值,包括: 采用哈希算法,查询所述单域单表,获取与所述数据包中的信息对应的匹配域的值。
4.根据权利要求2所述的方法,其特征在于,当所述单域单表中的匹配域的匹配类型为通配符匹配类型时,所述查询单域单表,获取与所述数据包中的信息对应的匹配域的值,包括: 采用HiCuts算法,查询所述单域单表,获取与所述数据包中的信息对应的匹配域的值。
5.根据权利要求4所述的方法,其特征在于,当获取的所述匹配规则的数量为多个时,所述根据所述匹配规则,对所述数据包进行相应的处理,包括: 获取多个所述匹配规则中优先级最高的匹配规则,并根据所述优先级最高的匹配规则对所述数据包进行相应的处理。
6.根据权利要求2至5任一所述的方法,其特征在于,还包括: 接收增加规则请求,所述增加规则请求包括N个待增加的匹配域的值和待增加的匹配规则; 查询所述单域单表,若不存在所述N个待增加的匹配域的值,则分别在所述N个待增加的匹配域对应的单域单表中增加对应的匹配域的值,并分别记录所述N个待增加的匹配域的值对应的引用计数为I ; 在所述规则表中的第一表项中记录所述N个待增加的匹配域的值在所述单域单表中的索引,并建立所述第一表项与所述待增加的匹配规则的关联关系; 其中,N为整数,且大于或等于I。
7.根据权利要求6所述的方法,其特征在于,还包括: 若i个待增加的匹配域的值存在所述单域单表中,j个待增加的匹配域的值不存在所述单域单表中,则分别在所述j个待增加的匹配域对应的单域单表中增加对应的匹配域的值,并分别记录所述j个待增加的匹配域的值对应的引用计数为1,以及分别将所述i个待增加的匹配域的值对应的引用计数加I ; 在所述规则表中的第二表项中记录所述j个待增加的匹配域的值在所述第二单域单表中的索引以及i个待增加的匹配域的值在所述当前的单域单表中的索引,并建立所述第二表项与所述待增加的匹配规则的关联关系; 其中,j和i为整数,均小于N,且i+j=N。
8.根据权利要求6所述的方法,其特征在于,还包括: 若所述N个待增加的匹配域的值均存在所述单域单表中,则在所述单域单表中分别将所述N个待增加的匹配域的值对应的引用计数加I ; 在所述规则表中的第三表项中记录所述N个待增加的匹配域的值在所述单域单表中的索引,并建立所述第三表项与所述待增加的匹配规则的关联关系。
9.根据权利要求2至5任一所述的方法,其特征在于,还包括: 接收删除规则请求,所述删除规则请求包括N个待删除的匹配域的值; 查询所述单域单表,若存在所述N个待删除的匹配域的值,则查询所述规则表,获取与所述N个待删除的匹配域的值在所述单域单表中的索引对应的第四表项; 若所述第四表项对应有匹配规则,则分别将所述N个待删除的匹配域的值对应的引用计数减1,并删除所述第四表项和对应的匹配规则; 其中,N为整数,且大于或 等于I。
10.根据权利要求9所述的方法,其特征在于,还包括: 在分别将所述N个待删除的匹配域的值对应的引用计数减I之后,若所述N个待删除的匹配域的值中至少一个匹配域的值对应的引用计数为0,则删除引用计数为0的匹配域的值。
11.根据权利要求2至5任一所述的方法,其特征在于,还包括: 接收更新规则请求,所述更新规则请求包括原匹配规则和待更新的匹配规则; 查询所述规则表,若存在所述原匹配规则,则将所述原匹配规则替换为所述待更新的匹配规则。
12.—种数据包的处理装置,其特征在于,包括: 接收模块,用于接收数据包; 匹配域处理模块,用于查询单域单表,获取与所述数据包中的信息对应的匹配域的值; 匹配规则处理模块,用于根据所述匹配域的值对应的索引,查询规则表,获取与所述匹配域的值对应的索引所在的表项对应的匹配规则; 数据包处理模块,用于根据所述匹配规则,对所述数据包执行相应的处理。
13.根据权利要求12所述的装置,其特征在于,还包括: 建立模块,用于建立所述单域单表和所述规则表;其中,每个单域单表对应的一个匹配域,且单域单表间的匹配域不相同; 单域单表处理模块,用于分别在单域单表中增加对应的匹配域的值; 规则表处理模块,用于在所述规则表中的表项中增加匹配域的值在单域单表中的索引以及配置所述表项对应的匹配规则。
14.根据权利要求13所述的装置,其特征在于,当所述单域单表中的匹配域的匹配类型为精确匹配类型时,所述匹配域处理模块具体用于采用哈希算法,查询所述单域单表,获取与所述数据包中的信息对应的匹配域的值。
15.根据权利要求13所述的装置,其特征在于,当所述单域单表中的匹配域的匹配类型为通配符匹配类型时,所述匹配域处理模块具体用于采用HiCuts算法,查询所述单域单表,获取与所述数据包中的信息对应的匹配域的值。
16.根据权利要求15所述的装置,其特征在于,当获取的所述匹配规则的数量为多个时,所述数据包处理模块具体用于获取多个所述匹配规则中优先级最高的匹配规则,并根据所述优先级最高的匹配规则对所述数据包进行相应的处理。
17.根据权利要求13至16所述的装置,其特征在于,所述接收模块还用于接收增加规则请求,所述增加规则请求包括N个待增加的匹配域的值和待增加的匹配规则; 所述匹配域处理模块还用于查询所述单域单表,若不存在所述N个待增加的匹配域的值,则分别在所述N个待增加的匹配域对应的单域单表中增加对应的匹配域的值,并分别记录所述N个待增加的匹配域的值对应的引用计数为I ; 所述匹配规则处理模块还用于在所述规则表中的第一表项中记录所述N个待增加的匹配域的值在所述单域单表中的索引,并建立所述第一表项与所述待增加的匹配规则的关联关系; 其中,N为整数,且大于或等于I。
18.根据权利要求17所述的装置,其特征在于,所述匹配域处理模块还用于若i个待增加的匹配域的值存在所述单 域单表中,j个待增加的匹配域的值不存在所述单域单表中,则分别在所述j个待增加的匹配域对应的单域单表中增加对应的匹配域的值,并分别记录所述j个待增加的匹配域的值对应的引用计数为1,以及分别将所述i个待增加的匹配域的值对应的引用计数加I ; 所述匹配规则处理模块还用于在所述规则表中的第二表项中记录所述j个待增加的匹配域的值在所述第二单域单表中的索引以及i个待增加的匹配域的值在所述当前的单域单表中的索引,并建立所述第二表项与所述待增加的匹配规则的关联关系; 其中,j和i为整数,均小于N,且i+j=N。
19.根据权利要求17所述的装置,其特征在于,所述匹配域处理模块还用于若所述N个待增加的匹配域的值均存在所述单域单表中,则在所述单域单表中分别将所述N个待增加的匹配域的值对应的引用计数加I ; 所述匹配规则处理模块还用于在所述规则表中的第三表项中记录所述N个待增加的匹配域的值在所述单域单表中的索引,并建立所述第三表项与所述待增加的匹配规则的关联关系。
20.根据权利要求13至16任一所述的装置,其特征在于,所述接收模块还用于接收删除规则请求,所述删除规则请求包括N个待删除的匹配域的值; 所述匹配规则处理模块还用于所述匹配域处理模块查询所述单域单表,若存在所述N个待删除的匹配域的值,则查询所述规则表,获取与所述N个待删除的匹配域的值在所述单域单表中的索引对应的第四表项; 所述匹配域处理模块还用于若所述匹配规则处理模块查询不存在所述第四表项对应有匹配规则,则分别将所述N个待删除的匹配域的值对应的引用计数减I ; 所述匹配规则处理模块还用于删除所述第四表项和对应的匹配规则。
21.根据权利要求20所述的装置,其特征在于,所述匹配域处理模块还用于在分别将所述N个待删除的匹配域的值对应的引用计数减I之后,若所述N个待删除的匹配域的值中至少一个匹配域的值对应的引用计数为O,则删除引用计数为O的匹配域的值。
22.根据权利要求13至16任一所述的装置,其特征在于,所述接收模块还用于接收更新规则请求,所述更新规则请求包括原匹配规则和待更新的匹配规则; 所述匹配规则处理模块还用于查询所述规则表,若存在所述原匹配规则,则将所述原匹配规则替换为所述待更 新的匹配规则。
【文档编号】H04L12/741GK103647718SQ201310687011
【公开日】2014年3月19日 申请日期:2013年12月13日 优先权日:2013年12月13日
【发明者】丁万夫, 林程勇, 谢高岗, 关洪涛, 黄昆, 李海涛 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1