CN104486240B - 一种数据包分类方法及装置 - Google Patents
一种数据包分类方法及装置 Download PDFInfo
- Publication number
- CN104486240B CN104486240B CN201410745366.1A CN201410745366A CN104486240B CN 104486240 B CN104486240 B CN 104486240B CN 201410745366 A CN201410745366 A CN 201410745366A CN 104486240 B CN104486240 B CN 104486240B
- Authority
- CN
- China
- Prior art keywords
- acl
- matching
- packet
- matched
- algorithm
- 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.)
- Active
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种数据包分类方法及装置,所述方法包括:接收待分类数据包,并确定对该待分类数据包进行分类的访问控制列表ACL;根据所述ACL所属的预设匹配方法,将所述待分类数据包与所述ACL进行匹配,并根据匹配结果对所述待分类数据包进行分类;其中,根据以下方法确定ACL所属的预设匹配方法:当ACL的过滤规则数小于等于第一预设数值时,确定该ACL采用线性匹配算法进行匹配;当ACL的过滤规则数大于第一预设数值时,采用非线性匹配算法的包分类算法进行匹配。通过本发明提供的方法能够提高数据包分类效率,在提高分类速度的同时能够兼顾内存消耗,以使匹配速度和内存消耗更加平衡。
Description
技术领域
本发明涉及数字通信技术领域,尤其涉及一种数据包分类方法及装置。
背景技术
数据包分类是根据数据包包头中的一个或几个匹配域来划分数据包所归属的流,即将到达的数据包分为不同的数据流,再对不同的数据流进行相应的处理。其中,常用的匹配域有:源IP地址、目的IP地址、源端口、目的端口、协议等。
数据包分类的设置可以通过匹配ACL(Access Control List,,访问控制列表)来完成。ACL大量应用在报文过滤等应用中。
一个ACL通常是若干具有优先级的过滤规则组成,每条过滤规则,用以描述对数据报文的头部中的几个匹配域进行匹配的特征条件,以及对应的动作(例如permit和deny),该动作用来决定如何处理报文。
ACL的实现可基于硬件实现,也可基于软件实现。因基于硬件实现时灵活性差,且支持的匹配域有限,不利于修改和扩展,故一般使用软件实现的方法。
当基于软件实现时,ACL中表项的生成、存储和修改,数据流的分析,匹配和流处理均由软件实现。目前的ACL匹配算法主要使用的是线性匹配算法,即以ACL表项规则的序数从小到大(即规则的优先级从高至低)进行查找匹配,在匹配成功后即退出,根据匹配的结果对数据流进行处理。这种方法在表项条目数较多,列表规模较大的情况下,因需要逐项匹配,所以匹配性能极低。
为克服以上匹配性能低的问题,目前应用比较多的软件包分类算法是基于计算几何学点定位算法思想的各种变通算法,如HiCuts算法(Hierarchical IntelligentCuttings,智能层次分割算法)、在HiCuts算法基础上改进而来的算法(如HyperCuts)、RFC算法(Recursive Flow Classification,RFC算法)等。其中,RFC算法的主要思想是将数据包分类问题看成一个将包头中的S比特数据到T比特的classID的一个映射(T=logN且N<<S,N是过滤规则的总数)。如果预先计算出包头中的这S位共2s种不同情况中每种情况所对应的classID值。那么每一个包只需要一次查表,即一次内存访问就可以得到相应的classID,但是这样会消耗极大的空间。RFC的思想是映射不是通过一步来完成,而是通过多个阶段(phase)完成,在进行数据包分类之前已经为每个阶段建立的用于查找的映射表。然而,这些数据包分类算法虽然通过不同的方法提高了数据包分类速度,但由于它们一般都采用了决策树结构,因此需要较大的内存消耗。
综上可以看出,现有技术的数据包分类算法不是匹配速度慢就是内存消耗多,面对数据量日益庞大的待分类数据包,如何均衡内存消耗和匹配速度从而进一步提高匹配效率是一个亟需解决的问题。
发明内容
本发明的目的是提供一种,以克服相关技术中数据包分类效率低的问题。
一方面,本发明提供一种数据包分类方法,包括:
接收待分类数据包,并确定对该待分类数据包进行分类的访问控制列表ACL;
根据所述ACL所属的预设匹配方法,将所述待分类数据包与所述ACL进行匹配,并根据匹配结果对所述待分类数据包进行分类;其中,根据以下方法确定ACL所属的预设匹配方法:当ACL的过滤规则数小于等于第一预设数值时,确定该ACL采用线性匹配算法进行匹配;当ACL的过滤规则数大于第一预设数值时,采用非线性匹配算法的包分类算法进行匹配。
另一方面,本发明还提供一种数据包分类装置,包括:
第一确定模块,用于接收待分类数据包,并确定对该待分类数据包进行分类的访问控制列表ACL;
匹配模块,用于根据所述ACL所属的预设匹配方法,将所述待分类数据包与所述ACL进行匹配,并根据匹配结果对所述待分类数据包进行分类;其中,根据以下方法确定ACL所属的预设匹配方法:当ACL的过滤规则数小于等于第一预设数值时,确定该ACL采用线性匹配算法进行匹配;当ACL的过滤规则数大于第一预设数值时,采用非线性匹配算法的包分类算法进行匹配。本发明至少具有以下有益效果:对用于进行数据包分类的ACL进行预处理,根据ACL的不同特征,确定适用于具有不同特征的ACL的匹配方法,从而实现为具有不同特征的ACL的较佳的匹配方案,例如对于过滤规则数较少的ACL采用线性匹配算法,算法简单,能够消耗较低的内存,匹配速度也容易满足要求,对于过滤规则数较多,匹配域较多较大的ACL可以根据该ACL是否频繁被修改,然后将该类ACL划分为稳定性ACL和灵活ACL,对于稳定性ACL可以采用RFC算法匹配,从而能够保证匹配速度的同时,均衡内存消耗;对于灵活性ACL可以采用HiCuts算法,以便于在日后修改ACL时能够及时响应该修改操作,提高修改的效率。由此可见,本发明实施例通过为具有不同特征的ACL进行预处理,以为不同的ACL配置不同的匹配方法,能够有效的提高匹配ACL的速度,进而提高数据包分类的效率。此外,本发明通过对RFC算法和HiCuts算法进行改进,在提高分类速度的同时能够兼顾内存消耗,以使匹配速度和内存消耗更加平衡。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
图1为本发明实施例中数据包分类方法的示例性流程图;
图2为现有技术中RFC算法进行匹配查找的示例性流程图;
图3为本发明实施例中数据包分类方法中改进RFC算法的示意图之一;
图4为本发明实施例中数据包分类方法中改进RFC算法的示意图之二;
图5为本发明实施例中数据包分类方法的另一示例性流程图;
图6为本发明实施例中数据包分类装置的示意图之一;
图7为本发明实施例中数据包分类装置的示意图之二。
具体实施方式
以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
本发明实施例提供一种数据包分类方法,在本发明提供的分类方法中,对用于进行数据包分类的ACL进行预处理,根据ACL的不同特征,确定适用于具有不同特征的ACL的匹配方法,从而实现为具有不同特征的ACL的较佳的匹配方案,例如对于过滤规则数较少的ACL采用线性匹配算法,算法简单,能够消耗较低的内存,匹配速度也容易满足要求,对于过滤规则数较多,匹配域较多较大的ACL可以根据该ACL是否频繁被修改,然后将该类ACL划分为稳定性ACL和灵活ACL,对于稳定性ACL可以采用RFC算法匹配,从而能够保证匹配速度的同时,均衡内存消耗;对于灵活性ACL可以采用HiCuts算法,以便于在日后修改ACL时能够及时响应该修改操作,提高修改的效率。由此可见,本发明实施例通过为具有不同特征的ACL进行预处理,以为不同的ACL配置不同的匹配方法,能够有效的提高匹配ACL的速度,进而提高数据包分类的效率。此外,本发明实施例中还可以通过对RFC算法和HiCuts算法进行改进,以提高匹配查找的工作效率,进而进一步提高数据包分类的效率。下面对本发明实施例中提供的数据包分类方法进行详细说明。
实施例一
如图1所示,为本发明实施例中数据包分类方法的示例性流程图,该方法包括以下步骤:
步骤101:接收待分类数据包,并确定对该待分类数据包进行分类的访问控制列表ACL。
步骤102:根据所述ACL所属的预设匹配方法,将所述待分类数据包与所述ACL进行匹配,并根据匹配结果对所述待分类数据包进行分类;其中,根据以下方法确定ACL所属的预设匹配方法:当ACL的过滤规则数小于等于第一预设数值时,确定该ACL采用线性匹配算法进行匹配;当ACL的过滤规则数大于第一预设数值时,采用非线性匹配算法的包分类算法进行匹配。
其中,在一个实施例中,对于过滤规则数较少的ACL采用线性匹配算法还是其他复杂的分类算法(如RFC算法),对于该类ACL的匹配速度上并无太大差别,反而辅助的分类算法会消耗更多的内存,因此对于过滤规则数较少的ACL采用线性匹配算法即可。为综合衡量匹配速度和内存消耗,结合数据包分类算法的特性,本发明实施例中,当ACL的过滤规则数大于第一预设数值时,采用非线性匹配算法的包分类算法进行匹配:
1)、当ACL的过滤规则数大于第一预设数值,且该ACL在预设时长内被修改的频率小于等于预设频率时采用第一包分类算法进行匹配,所述第一包分类算法为具有以下特征的算法:表项改变后,需要重新建立映射表的非线性匹配算法。
其中,当ACL的过滤规则数大于第一预设数值,且该ACL在预设时长内被修改的频率小于等于预设频率时说明该类ACL比较稳定,短期内不会改变,这样,可以以提高匹配速度为优先,采用匹配速度高的分类算法,例如RFC算法。
2)、当ACL的过滤规则数大于第一预设数值,且该ACL在预设时长内被修改的频率大于预设频率时采用第二包分类算法进行匹配,所述第二分类算法为具有以下特征的算法:表项改变后,需要更新之前建立的映射表的非线性匹配算法。
其中,当ACL的过滤规则数大于第一预设数值,且该ACL在预设时长内被修改的频率大于预设频率时说明该类ACL的过滤规则数目及过滤规则内容容易发生改变,因此,可以以提高匹配速度兼顾能够及时响应对ACL的更改为优先,采用匹配速度高且能够及时响应ACL修改操作的分类算法。其中,在一个实施例中,所述第二包分类算法为HiCuts算法,或者,改进的HiCuts算法。
以上,通过过滤规则数量和预设时长内的修改频率,实现了将ACL划分为具有不同特征的ACL集合中。进一步的,通过使具有不同特征的ACL使用适用于该类ACL的匹配方法,使得本发明实施例提供的数据包分类方法能够适用于不同的ACL,易于实现对数据包分类的扩展,和提高数据包分类的效率。
其中,在RFC算法中,进行数据包分类时需要经过多个阶段进行查找匹配,每个阶段的结果是将一个较大的集合映射成一个较小的集合,称其为一次缩减(reduction)。RFC算法共分为P个阶段。每个阶段查找的结果值比用于查找的索引值要短(故称为一次缩减)。如图2所示,以匹配域有3个为例,对RFC算法的匹配查找过程进行说明:
1)在第一阶段(Phase 0),以预先为每个域建立的表为索引。其中,一个匹配域在该阶段对应一个表,以匹配域为IP地址为例,IP地址域数据长度若为32位,在该阶段则已预先建立一个232(即4294967296)长度的chunk表,和一个表征该域规则复杂度的eqID表,当进行数据包分类时,以待分类数据包的IP为索引chunk表和eqID表中得到查找结果。
2)从第2阶段开始,每次用于继续查找的索引值都是由前几个阶段的查找结果合并而成的。
3)在最后一个阶段,查找的结果得到一个值即classID。
当使用RFC算法进行ACL匹配实现数据包分类时,在第一阶段,每个匹配域仍然以线性匹配算法进行查找,由于一个匹配域对应一个chunk表和一个eqID表,而这两个包中的表项又多,因此开第一阶段的匹配查找的效率较低。因此,在一个实施例中,为进一步提高匹配效率,进入提高数据包分类效率,可以对RFC算法进行改进,将改进的RFC算法作为第一包分类算法,当所述ACL所属的预设匹配方法为第一包分类算法时,通过改进的RFC算法对所述待分类数据包进行分类;
其中,RFC算法的改进方法如下:
在第一建表阶段,针对任一匹配域,根据预设规则将该匹配域分割为至少两个子匹配域,为每一个子匹配域生成一个chunk表和eqID表;并在第二建表阶段将初始建表阶段中属于同一匹配域的至少两个子匹配域的匹配结果合并用于在之后阶段作为查询的索引,以使查询总阶段数控制在预设阶段数之内。
例如IP地址为匹配域时,若IP地址为32位,而将其划分为大小为4*8的子匹配域,则只需要4个28长度的表,即4个256长度的chunk表,从而有效的减少了内存消耗。而在第一阶段,进行匹配查找时,因为可以从4个表中并行查找,还可以提高在第一阶段的匹配查找的速度。
其中,在一个实施例中,所述根据预设规则将该匹配域分割为至少两个子匹配域,具体包括:
1)、当ACL的过滤规则数大于第二预设数值,且该ACL的匹配域的数量大于预设匹配域数量时,针对每个匹配域,将该匹配域划分为大于对应的预设子匹配数量的子匹配域。
其中,为了权衡匹配速度和内存消耗,可以采用如图3所示的建表方法。在图3中,将匹配域划分为较多的子匹配域,从而可以通过划分匹配域降低内存消耗,提高第一阶段的匹配速度,但当子匹配域较多时,相应的建表阶段数也会增加,这样会增加建表阶段数,即增加匹配查找的阶段数,会影响第一阶段之后整体的匹配查找的速度,因此要将建表阶段数控制在预设的阶段数内,以权衡匹配速度和内存消耗。由此可见,该划分匹配域建表的方法是一种以节约内存消耗为优先的划分匹配域的方法。需要说明的是,节约内存消耗为优先的划分匹配域的方法并不仅限于图3所示的方法,用户可以视自己的需求合理划分匹配域。
2)、当ACL的过滤规则数小于等于第二预设数值,且该ACL的匹配域的数量小于等于预设匹配域数量时,针对每个匹配域,将该匹配域划分为小于等于对应的预设子匹配数量的子匹配域。
其中,为了权衡匹配速度和内存消耗,可以采用如图4所示的建表方法。在图4中,将匹配域划分为相对图3的方法较少的子匹配域,相应的减少了建表阶段数提高匹配速度,但会占用较多的内存,由此可见,该划分匹配域建表的方法是一种以提高匹配速度为优先的划分匹配域的方法。需要说明的是,提高匹配速度优先的划分匹配域的方法并不仅限于图4所示的方法,用户可以视自己的需求合理划分匹配域。
此外,本发明实施例中,对于其它的情况,如当ACL的过滤规则数大于第二预设数值,且该ACL的匹配域的数量小于等于预设匹配域数量时,或者,当ACL的过滤规则数小于等于第二预设数值,且该ACL的匹配域的数量大于预设匹配域数量时,可以根据需求配置选择图3或图4所示的划分匹配域建表的方法。
除了现有技术中HyperCuts算法作为一种改进的HiCuts算法外,在本发明实施例中,还提出一种对HiCuts改进的方法,具体的:
Hicuts算法通过在各个匹配域上进行切割建立树形结构进行匹配查找,其运算量和匹配查找效率基本由树深度及叶子节点容忍度决定。故对其作如下改进:
1)、非等分优化切割:在ACL的应用场景中,有些匹配域其在实际应用中分布较为集中,若按Hicuts算法中所描述的等分切割方式将会导致某些子树间深度的巨大不平衡,导致匹配性能较差。如端口域取值范围为0~65535,而常用的保留端口号范围为1~1023,其中相对而言还有使用频率更高的80端口(HTTP服务),21端口(FTP服务)等。又如协议域取值为0~255,而其中常用的6(TCP协议),17(UDP协议)几乎占据了数据流的绝大多数。故可以通过分析匹配域高频使用点作切割将更有利于子树的平衡,减小树深度,有利于提高匹配查找的速度。
2)、动态树调整:增加叶子节点的容忍度,使得在对ACL进行修改时,能够减少的修改树结构的操作,以便快速响应对ACL的修改。
此外,在本发明实施例中,当对归属于第一包分类算法或第二包分类算法的ACL进行修改,例如扩展其匹配域、增加过滤规则等时,可以将用该类ACL进行数据包分类的方法切换至线性匹配算法,在调整ACL并适应性调整第一包分类算法或第二包分类算法后,在切换至调整后的对应分类算法,从而更好的保障网络通信。
综上,本发明实施例,通过对ACL进行预处理,根据ACL的不同特征,确定适用于具有不同特征的ACL的匹配方法,从而实现为具有不同特征的ACL的较佳的匹配方案,能够有效的提高匹配ACL的速度,进而提高数据包分类的效率。通过对RFC算法和HiCuts算法进行改进,以提高匹配查找的工作效率,进而进一步提高数据包分类的效率。
实施例二
下面以一个实施例,对本发明实施例中数据包分类方法进行详细说明,如图5所示,该方法包括以下步骤:
步骤501:获得ACL的过滤规则数,并统计ACL在预设时长内被修改的频率。
步骤502:对ACL进行预处理,确定ACL所属的匹配方法。
具体的:当ACL的过滤规则数小于等于第一预设数值时,确定该ACL采用线性匹配算法进行匹配;
当ACL的过滤规则数大于第一预设数值,且该ACL在预设时长内被修改的频率小于等于预设频率时采用改进的RFC算法进行匹配;
当ACL的过滤规则数大于第一预设数值,且该ACL在预设时长内被修改的频率大于预设频率时采用改进的HiCuts算法进行匹配。
步骤503:接收待分类数据包,并确定对该待分类数据包进行分类的ACL。
步骤504:步骤503中确定的ACL所属的预设匹配方法为改进的RFC算法,根据改进的RFC算法将所述待分类数据包与所述ACL进行匹配,并根据匹配结果对所述待分类数据包进行分类。
步骤505:当确定需要修改步骤503中的确定的ACL时,将之后接收的用该ACL进行分类的待分类数据包,通过线性匹配算法用该ACL进行分类。
步骤506:当修改ACL完成并重新建立改进的RFC算法各阶段的chunk表以及eqID表以后,将重新建表后的改进的RFC算法对用该ACL进行分类的待分类数据包进行分类。
本发明实施例,用适用于ACL的匹配方法进行数据包分类,并在需要对ACL及匹配方法进行调整时,用线性匹配算法进行数据包分类,当调整完成后,再切换至用调整完成的匹配方法进行数据包分类,以保证网络的正常运行。
基于相同的发明构思,本发明实施例还提供一种数据包分类装置,如图6所示,该装置包括:
第一确定模块601,用于接收待分类数据包,并确定对该待分类数据包进行分类的访问控制列表ACL;
匹配模块602,用于根据所述ACL所属的预设匹配方法,将所述待分类数据包与所述ACL进行匹配,并根据匹配结果对所述待分类数据包进行分类;其中,根据以下方法确定ACL所属的预设匹配方法:当ACL的过滤规则数小于等于第一预设数值时,确定该ACL采用线性匹配算法进行匹配;当ACL的过滤规则数大于第一预设数值时,采用非线性匹配算法的包分类算法进行匹配。
其中,在一个实施例中,如图7所示,所述装置还包括:
第二确定模块603,用于当ACL的过滤规则数大于第一预设数值,且该ACL在预设时长内被修改的频率小于等于预设频率时采用第一包分类算法进行匹配,所述第一包分类算法为具有以下特征的算法:表项改变后,需要重新建立映射表的非线性匹配算法;
第三确定模块604,用于当ACL的过滤规则数大于第一预设数值,且该ACL在预设时长内被修改的频率大于预设频率时采用第二包分类算法进行匹配,所述第二分类算法为具有以下特征的算法:表项改变后,需要更新之前建立的映射表的非线性匹配算法。
其中,在一个实施例中,所述匹配模块602用于将改进的RFC算法作为第一包分类算法,当所述ACL所属的预设匹配装置为第一包分类算法时,通过改进的RFC算法对所述待分类数据包进行分类;
其中,RFC算法的改进装置如下:
在第一建表阶段,针对任一匹配域,根据预设规则将该匹配域分割为至少两个子匹配域,为每一个子匹配域生成一个chunk表和eqID表;并在第二建表阶段将初始建表阶段中属于同一匹配域的至少两个子匹配域的匹配结果合并用于在之后阶段作为查询的索引,以使查询总阶段数控制在预设阶段数之内。
其中,在一个实施例中,如图7所示,所述装置还包括:
第一划分模块605,用于当ACL的过滤规则数大于第二预设数值,且该ACL的匹配域的数量大于预设匹配域数量时,针对每个匹配域,将该匹配域划分为大于对应的预设子匹配数量的子匹配域;
第二划分模块606,用于当ACL的过滤规则数小于等于第二预设数值,且该ACL的匹配域的数量小于等于预设匹配域数量时,针对每个匹配域,将该匹配域划分为小于等于对应的预设子匹配数量的子匹配域。
其中,在一个实施例中,所述匹配模块602用于当调整归属于第一包分类方算法或第二包分类算法的ACL时,用线性匹配算法对该ACL进行匹配查找以实现数据包分类。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (9)
1.一种数据包分类方法,其特征在于,所述方法包括:
接收待分类数据包,并确定对该待分类数据包进行分类的访问控制列表ACL;
根据所述ACL所属的预设匹配方法,将所述待分类数据包与所述ACL进行匹配,并根据匹配结果对所述待分类数据包进行分类;其中,根据以下方法确定ACL所属的预设匹配方法:当ACL的过滤规则数小于等于第一预设数值时,确定该ACL采用线性匹配算法进行匹配;当ACL的过滤规则数大于第一预设数值时,采用非线性匹配算法的包分类算法进行匹配;
其中,所述当ACL的过滤规则数大于第一预设数值时,采用非线性匹配算法的包分类算法进行匹配,包括:
当ACL的过滤规则数大于第一预设数值,且该ACL在预设时长内被修改的频率小于等于预设频率时采用第一包分类算法进行匹配,所述第一包分类算法为具有以下特征的算法:表项改变后,需要重新建立映射表的非线性匹配算法;
当ACL的过滤规则数大于第一预设数值,且该ACL在预设时长内被修改的频率大于预设频率时采用第二包分类算法进行匹配,所述第二包分类算法为具有以下特征的算法:表项改变后,需要更新之前建立的映射表的非线性匹配算法。
2.根据权利要求1所述的方法,其特征在于,所述根据所述ACL所属的预设匹配方法,将所述待分类数据包与所述ACL进行匹配,并根据匹配结果对所述待分类数据包进行分类包括:
将改进的RFC算法作为第一包分类算法,当所述ACL所属的预设匹配方法为第一包分类算法时,通过改进的RFC算法对所述待分类数据包进行分类;
其中,RFC算法的改进方法如下:
在第一建表阶段,针对任一匹配域,根据预设规则将该匹配域分割为至少两个子匹配域,为每一个子匹配域生成一个chunk表和eqID表;并在第二建表阶段将初始建表阶段中属于同一匹配域的至少两个子匹配域的匹配结果合并用于在之后阶段作为查询的索引,以使查询总阶段数控制在预设阶段数之内。
3.根据权利要求2所述的方法,其特征在于,所述根据预设规则将该匹配域分割为至少两个子匹配域,包括:
当ACL的过滤规则数大于第二预设数值,且该ACL的匹配域的数量大于预设匹配域数量时,针对每个匹配域,将该匹配域划分为大于对应的预设子匹配数量的子匹配域;
当ACL的过滤规则数小于等于第二预设数值,且该ACL的匹配域的数量小于等于预设匹配域数量时,针对每个匹配域,将该匹配域划分为小于等于对应的预设子匹配数量的子匹配域。
4.根据权利要求1所述的方法,其特征在于,所述第二包分类算法为HiCuts算法,或者,改进的HiCuts算法。
5.根据权利要求1所述的方法,其特征在于,所述根据所述ACL所属的预设匹配方法,将所述待分类数据包与所述ACL进行匹配,并根据匹配结果对所述待分类数据包进行分类,包括:
当调整归属于第一包分类方算法或第二包分类算法的ACL时,用线性匹配算法对该ACL进行匹配查找以实现数据包分类。
6.一种数据包分类装置,其特征在于,所述装置包括:
第一确定模块,用于接收待分类数据包,并确定对该待分类数据包进行分类的访问控制列表ACL;
匹配模块,用于根据所述ACL所属的预设匹配方法,将所述待分类数据包与所述ACL进行匹配,并根据匹配结果对所述待分类数据包进行分类;其中,根据以下方法确定ACL所属的预设匹配方法:当ACL的过滤规则数小于等于第一预设数值时,确定该ACL采用线性匹配算法进行匹配;当ACL的过滤规则数大于第一预设数值时,采用非线性匹配算法的包分类算法进行匹配;
所述装置还包括:
第二确定模块,用于当ACL的过滤规则数大于第一预设数值,且该ACL在预设时长内被修改的频率小于等于预设频率时采用第一包分类算法进行匹配,所述第一包分类算法为具有以下特征的算法:表项改变后,需要重新建立映射表的非线性匹配算法;
第三确定模块,用于当ACL的过滤规则数大于第一预设数值,且该ACL在预设时长内被修改的频率大于预设频率时采用第二包分类算法进行匹配,所述第二包分类算法为具有以下特征的算法:表项改变后,需要更新之前建立的映射表的非线性匹配算法。
7.根据权利要求6所述的装置,其特征在于,所述匹配模块用于将改进的RFC算法作为第一包分类算法,当所述ACL所属的预设匹配装置为第一包分类算法时,通过改进的RFC算法对所述待分类数据包进行分类;
其中,RFC算法的改进装置如下:
在第一建表阶段,针对任一匹配域,根据预设规则将该匹配域分割为至少两个子匹配域,为每一个子匹配域生成一个chunk表和eqID表;并在第二建表阶段将初始建表阶段中属于同一匹配域的至少两个子匹配域的匹配结果合并用于在之后阶段作为查询的索引,以使查询总阶段数控制在预设阶段数之内。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第一划分模块,用于当ACL的过滤规则数大于第二预设数值,且该ACL的匹配域的数量大于预设匹配域数量时,针对每个匹配域,将该匹配域划分为大于对应的预设子匹配数量的子匹配域;
第二划分模块,用于当ACL的过滤规则数小于等于第二预设数值,且该ACL的匹配域的数量小于等于预设匹配域数量时,针对每个匹配域,将该匹配域划分为小于等于对应的预设子匹配数量的子匹配域。
9.根据权利要求6所述的装置,其特征在于,所述匹配模块用于当调整归属于第一包分类方算法或第二包分类算法的ACL时,用线性匹配算法对该ACL进行匹配查找以实现数据包分类。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410745366.1A CN104486240B (zh) | 2014-12-08 | 2014-12-08 | 一种数据包分类方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410745366.1A CN104486240B (zh) | 2014-12-08 | 2014-12-08 | 一种数据包分类方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104486240A CN104486240A (zh) | 2015-04-01 |
CN104486240B true CN104486240B (zh) | 2018-03-06 |
Family
ID=52760745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410745366.1A Active CN104486240B (zh) | 2014-12-08 | 2014-12-08 | 一种数据包分类方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104486240B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109802872B (zh) * | 2019-03-19 | 2021-07-30 | 北京信而泰科技股份有限公司 | 一种报文捕获方法、装置及设备 |
CN114745336B (zh) * | 2022-05-05 | 2023-11-21 | 中国人民解放军国防科技大学 | 基于rfc的报文分类方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1477494A (zh) * | 2002-08-20 | 2004-02-25 | 深圳市中兴通讯股份有限公司上海第二 | 一种数据包递归流分类方法 |
US7193997B2 (en) * | 2001-03-19 | 2007-03-20 | International Business Machines Corporation | Packet classification |
CN101146027A (zh) * | 2006-09-14 | 2008-03-19 | 中兴通讯股份有限公司 | 基于访问控制列表分类的方法 |
US7480299B2 (en) * | 2004-11-03 | 2009-01-20 | 3Com Corporation | Rules engine for access control lists in network units |
CN101465807A (zh) * | 2008-12-17 | 2009-06-24 | 成都市华为赛门铁克科技有限公司 | 一种数据流控制方法和装置 |
-
2014
- 2014-12-08 CN CN201410745366.1A patent/CN104486240B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7193997B2 (en) * | 2001-03-19 | 2007-03-20 | International Business Machines Corporation | Packet classification |
CN1477494A (zh) * | 2002-08-20 | 2004-02-25 | 深圳市中兴通讯股份有限公司上海第二 | 一种数据包递归流分类方法 |
US7480299B2 (en) * | 2004-11-03 | 2009-01-20 | 3Com Corporation | Rules engine for access control lists in network units |
CN101146027A (zh) * | 2006-09-14 | 2008-03-19 | 中兴通讯股份有限公司 | 基于访问控制列表分类的方法 |
CN101465807A (zh) * | 2008-12-17 | 2009-06-24 | 成都市华为赛门铁克科技有限公司 | 一种数据流控制方法和装置 |
Non-Patent Citations (1)
Title |
---|
报文分类算法在包过滤防火墙上的应用研究;高增貊;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140615(第06期);第8-54页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104486240A (zh) | 2015-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10498638B2 (en) | Performing a multi-stage lookup to classify packets | |
US7872993B2 (en) | Method and system for classifying data packets | |
US9191321B2 (en) | Packet classification | |
US9680738B2 (en) | Tracking prefixes of values associated with different rules to generate flows | |
US9680748B2 (en) | Tracking prefixes of values associated with different rules to generate flows | |
US9774707B2 (en) | Efficient packet classification for dynamic containers | |
Aujla et al. | Adaptflow: Adaptive flow forwarding scheme for software-defined industrial networks | |
US11595503B2 (en) | Efficient packet classification for dynamic containers | |
US9686185B2 (en) | Generating flows using common match techniques | |
US9432284B2 (en) | Method and apparatus for compiling search trees for processing request keys based on a key size supported by underlying processing elements | |
CN102387082B (zh) | 基于流分类的分组流量控制系统及控制方法 | |
CN104348716A (zh) | 一种报文处理方法及设备 | |
US9595003B1 (en) | Compiler with mask nodes | |
US20140071985A1 (en) | Method and apparatus for optimizing usage of ternary content addressable memory (tcan) | |
US9647947B2 (en) | Block mask register key processing by compiling data structures to traverse rules and creating a new rule set | |
US20170359254A1 (en) | Flow classification for information centric network protocols | |
US9268855B2 (en) | Processing request keys based on a key size supported by underlying processing elements | |
US20150350094A1 (en) | Method and system of setting network traffic flow quality of service by modifying port numbers | |
CN104486240B (zh) | 一种数据包分类方法及装置 | |
CN109754021B (zh) | 基于范围元组搜索的在线包分类方法 | |
Kekely et al. | Packet classification with limited memory resources | |
US9590897B1 (en) | Methods and systems for network devices and associated network transmissions | |
CN114884893B (zh) | 一种转发和控制可定义的协同流量调度方法与系统 | |
FI124398B (en) | A method and apparatus for determining a lookup table implementation for a network element of a software configurable network | |
US10205658B1 (en) | Reducing size of policy databases using bidirectional rules |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee after: RUIJIE NETWORKS Co.,Ltd. Address before: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee before: Beijing Star-Net Ruijie Networks Co.,Ltd. |