CN109376789B - 一种网络包分类算法与系统 - Google Patents
一种网络包分类算法与系统 Download PDFInfo
- Publication number
- CN109376789B CN109376789B CN201811292652.1A CN201811292652A CN109376789B CN 109376789 B CN109376789 B CN 109376789B CN 201811292652 A CN201811292652 A CN 201811292652A CN 109376789 B CN109376789 B CN 109376789B
- Authority
- CN
- China
- Prior art keywords
- address
- rule
- source
- subset
- destination
- 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.)
- Withdrawn - After Issue
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/243—Classification techniques relating to the number of classes
- G06F18/24323—Tree-organised classifiers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
Landscapes
- Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Signal Processing (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种网络包分类算法,包括:将现有的分类规则集划进行划分分为:源IP地址和目的IP地址的大规则子集、源IP地址的大规则子集、目的IP地址的大规则子集和小规则子集;对划分的四个自己分别进行等价类合并;剔除四个不同子集等价类合并过程中规则数小于5个的等价类,并以链表的形式分别进行存储,将链表中首元素的地址存入相应的查找表中;对四个不同子集输出的规则进行优先级的比较,输出与数据包头匹配的优先级最高的规则。本发明的有益效果为:结合RFC算法的总体结构和决策树的算法的“选位”思想,通过子集划分技术、规则剔除技术和选位技术相结合,降低了查找表构建过程的内存消耗,在满足硬件内存有效性的同时实现高速包分类处理。
Description
技术领域
本发明属于计算机网络技术领域,具体涉及一种网络包分类算法与系统。
背景技术
随着网络技术的不断发展,新的网络应用层出不穷,网络设备不仅要能够实现数据包的基本转发,还要提供服务质量、流量计费、区分服务等功能。包分类技术是实现网络服务多样化的关键技术,它使得网络设备能够区分地处理网络流量。然而随着网络流量的激增以及带宽的不断提升,包分类已经成为影响网络性能的瓶颈。
网络包分类就是将到达的数据包的相关域值同预定义的分类规则集中的规则进行比较,根据比较结果实现数据包的分类处理,从而使得网络设备能够有差别地处理各种类型的网络流量。其中最为经典的是五元组(五维)包分类问题,它的分类规则集要求匹配数据包中的源网络层地址、目的网络层地址、源传输层端口、目的传输层端口以及协议五个维度。
目前,针对五元组包分类算法主要分为软件包分类算法以及硬件包分类算法两大类。硬件算法主要利用TCAM(Ternary Content Addressable Memory,三态内容可寻址寄存器)以及FPGA(Field-Programmable Gate Array,现场可编程门阵列)实现,能达到很好的性能,但是其价格高、功耗高、密度小的特征极大地限制了硬件算法的可扩展性;软件算法主要基于通用存储器实现,弥补了硬件算法的缺陷,其中RFC算法因其分类速率高,仅次于硬件算法,所以被广泛应用到要求高速查找的网络环境中。同时由于RFC算法支持并行处理,非常适合与硬件相结合,但是由于其计算及存储复杂度很高,当规则集的规模增大时,算法的内存消耗也会急剧上升使内存膨胀严重,使得存储器面临着严峻的性能瓶颈问题。
发明内容
为了解决现有技术存在的内存膨胀严重问题,本发明提供了一种网络包分类算法与系统,其具有运行速度快、内存消耗低等特点。
本发明的目的是提供一种内存消耗低且包分类更快的网络包分类算法与系统。
根据本发明的具体实施方式的一种网络包分类算法,包括:
将现有的分类规则集划分为:源IP地址和目的IP地址的大规则子集、源IP地址的大规则子集、目的IP地址的大规则子集和小规则子集;
对所述源IP地址和目的IP地址的大规则子集划分为连续的4个块进行等价类的合并;
对所述源IP地址的大规则子集对应的小域进行奇偶选位,以分别生成的查找表A和B为基础进行等价类合并;
对所述目的IP地址的大规则子集对应的小域进行奇偶选位,以分别生成的查找表C和D为基础进行等价类合并;
对所述小规则子集,将源IP地址域和目的IP地址域进行混合奇偶选位,以分别生成的查找表E、F、G、H为基础进行等价类合并;
剔除所述四个不同子集等价类合并过程中规则数小于5个的等价类,并以链表的形式分别进行存储,将所述链表中首元素的地址存入相应的查找表中;
对所述四个不同子集输出的规则进行优先级的比较,输出与数据包头匹配的优先级最高的规则。
进一步的,对现有分类规则集划分的规则包括:
对源IP地址和目的IP地址的大规则子集中的规则:源IP地址和目的IP地址两个域均为大域;
对源IP地址的大规则子集中的规则:源IP地址为大域,目的IP地址为小域;
对目的IP地址的大规则子集中的规则:源IP地址为小域,目的IP地址为大域;
对小规则子集中的规则:源IP地址和目的IP地址两个域均为小域。
进一步的,对源IP地址和目的IP地址两个大域和小域的划分规则包括:
对于规则R的域值,定义如下:
(1)为Fi小域:若Leni<Ti;
(2)为Fi大域:若Leni>Ti。
其中,规则R=(F1,F2...Fi...Fd),d表示分类规则的维度,Leni表示规则R中第i个域的取值范围的长度大小。
根据上述对大域及小域的定义,规则R定义为如下形式:
(1)R为全域上的大规则:对于所有的域(1≤i≤d),均满足为大域;
(2)R为某个域上的大规则:对于某个域i,满足为大域;
(3)R为小规则:对于所有的域(1≤i≤d),均满足为小域。
进一步的,对所述源IP地址的大规则子集进行的奇偶选位包括:将所述目的IP地址的32个比特位分成8个块,每个块包含4个比特位,将编号为奇数和偶数的分别进行合并,得到两个对16个比特位进行合并后的查找表A和B。
进一步的,对所述目的IP地址的大规则子集进行的奇偶选位包括:
将所述源IP地址的32个比特位分成8个块,每个块包含4个比特位,将编号为奇数和偶数的分别进行合并,得到两个对16个比特位进行合并后的查找表C和D。
进一步的,对所述小规则子集的奇偶混合选位包括:
将所述源IP地址和所述目的IP地址的64个比特位分成16个块,每个块包含4位,将所述源IP地址中编号为偶数的块进行合并,得到查找表E;将所述目的IP地址中编号为偶数的块进行合并,得到查找表F;将所述源IP地址中编号为奇数的块进行合并,得到查找表G;将所述目的IP地址中编号为奇数的块进行合并,得到查找表H。
根据本发明的具体实施方式的一种网络包分类系统,包括:
软件处理单元,所述软件处理单元用于对现有规则集进行划分和查找表的构建;以及
NetFPGA处理单元,所述NetFPGA处理单元用于根据所述软件处理单元生成的规则集划分规则和所述查找表进行网络包的分类。
进一步的,所述网络包分类系统还包括:PCI总线接口,所述PCI总线接口用于将所述软件处理单元在智能终端上生成的规则集划分规则和所述查找表发送到所述NetFPGA处理单元。
进一步的,所述软件处理单元包括:用户界面和驱动程序,所述驱动程序根据所述用户界面获取的用户指令,生成相应的规则集划分规则和所述查找表。
进一步的,所述NetFPGA处理单元包括:分类模块和查找模块,分别实现对数据包的选位和对所述查找表的查找功能,以及比较模块,用于对输出规则进行优先级的比较。
本发明的有益效果为:结合RFC算法的总体结构和基于决策树的算法的“选位”思想,通过子集划分技术、规则剔除技术和选位技术相结合,大大降低了查找表构建过程的内存消耗,可在满足硬件内存有效性的同时实现高速包分类处理。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例提供的网络包分类算法的流程图;
图2是RFC算法的流程图;
图3是等价类的划分示意图
图4是RFC算法的等价类的划分示意图
图5是SA-大规则子集的选位示意图;
图6是DA-大规则子集的选位示意图;
图7是小规则子集的选位示意图;
图8是根据一示例性实施例提供的网络包分类系统结构原理图;
图9是根据另一示例性实施例提供的网络包分类系统结构原理图。
附图标记
1-软件处理单元;11-用户界面;12-驱动程序;2-NetFPGA处理单元;21-分类模块;22-查找模块;23-比较模块;3-PCI总线接口。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
参照图1所示,本发明的实施例提供了一种网络包分类算法,包括以下步骤:
101、将现有的分类规则集划分为:源IP地址和目的IP地址的大规则子集、源IP地址的大规则子集、目的IP地址的大规则子集和小规则子集;
102、对源IP地址和目的IP地址的大规则子集划分为连续的4个块进行等价类的合并;
103、对源IP地址的大规则子集对应的小域进行奇偶选位,以分别生成的查找表A和B为基础进行等价类合并;
104、对目的IP地址的大规则子集对应的小域进行奇偶选位,以分别生成的查找表C和D为基础进行等价类合并;
105、对小规则子集,将源IP地址域和目的IP地址域进行混合奇偶选位,以分别生成的查找表E、F、G、H为基础进行等价类合并;
106、剔除四个不同子集等价类合并过程中规则数小于5个的等价类,并以链表的形式分别进行存储,将链表中首元素的地址存入相应的查找表中;
107、对四个不同子集输出的规则进行优先级的比较,输出与数据包头匹配的优先级最高的规则。
通过结合RFC算法的总体结构和基于决策树的算法的“选位”思想,通过子集划分技术、规则剔除技术和选位技术相结合,大大降低了查找表构建过程的内存消耗,可在满足硬件内存有效性的同时实现高速包分类处理。
参照图2所示,递归流分类(Recursive Flow Classification,RFC)算法是一种启发式算法,通过将一次映射转变为多个阶段(Phase)的映射,从而将一个对大集合的映射转变为多个小集合经过多个阶段的合并,根据每个阶段输出的索引值得到最终的包头所属的等价类编号。RFC算法的优点是分类速率较快,因为算法对于规则集等价类的划分已经在预处理阶段完成,在对数据包进行规则查找时只需要对每个阶段产生的查找表进行查找,计算出索引值送往下一个表,因此额外计算开销较少,因此非常适合运用到需要高速查找的网络环境中。同时RFC算法非常适合并行处理,有利于在硬件上实现对于每个chunk的并行查找,这一点进一步加快了分类速度。当规则集的规模增大时,算法的内存消耗也会急剧上升,因此并不适合作为大规则集的包分类解决方案。此外,当分类规则集的规则发生改变时,RFC算法需要重新进行预处理,生成与之对应的查找表,因此不适合于经常进行规则更新的场景。
模块化包分类(Modular Packet Classification)算法是一种基于选位的多层包分类算法,算法结构由索引表、搜索树和规则集合三部分组成。Modular算法首先根据分类规则集的特征,灵活地选取数据包头的某几个比特位构建索引表,然后在索引表的每个不同取值下构建搜索树。在每棵搜索树构建的过程中,继续选取某一位对规则集进行拆分,不同的搜索树可以选取不同的比特位,直到最后生成的叶子节点包含的规则数小于某一预设值,则搜索树的构建过程完成。
模块化包分类算法利用“选位”的思想,充分利用了规则集的特征,有助于实现每棵搜索树高度的平衡,可以避免出现树与树之间高度差距过大的情况,属于全局最优的策略。通过构建搜索树,可以有效降低算法的存储消耗并加快分类速度。但是,由于多维规则集的复杂度较高,在对整个规则集构建决策树时容易造成大量的规则存储复制,从而使得算法的空间消耗急剧膨胀。当规则集规模较大时这种膨胀尤其明显,甚至超出了当前的存储能力。
RFC算法对分类规则集进行等价类的划分在预处理过程中的每一个阶段都需要进行,在阶段1是通过对数据包头选定维度的所有取值进行规则匹配得到,而在后续阶段则通过对前面所得的等价类“求交集”得出。
参照图3所示,根据每条规则在相应维度上的投影,得出对此规则集等价类的划分如下:对于源端口,有4个规则集等价类,对每个等价类进行编号后得到0:{R2,R4},1:{R1,R2,R4},2:{R2,R3,R4}和3:{R4};对于目的端口,也有4个规则集等价类,同样进行编号后得到0:{R2,R4},1:{R1,R4},2:{R3,R4}和3:{R4}。
在第一阶段,所构建的查找表的长度是固定的,即无论对于源端口还是目的端口,它们的查找表的长度都是。此后对于下一阶段,也就是对这两个维度的等价类进行合并时,其交集有4个,分别是0:{R2,R4},1:{R1,R4},2:{R3,R4}和3;{R4},同时会产生长度为的新的查找表。
对上述等价类的划分过程进行分析,我们发现规则R4在每一个等价类中均有出现,而R2在源端口域的等价类中也出现了3次,如果将R2和R4去掉,源端口域的等价类数目将减少为2个,目的端口域也会减少为2个,则合并后新的查找表的长度将会减少为4,消耗的内存和原来相比有明显的下降。
因此,如何将这些规则区分出来,以及如何对这些规则进行有差别的处理就显得尤为的关键。
在本发明的一具体实施例中,为了更好地实现分类规则集的划分,需要对规则集进行统计从而实现特征提取,统计所使用的规则集为华盛顿大学所开源的三类合成规则集,即ACL、FW和IPC,规则集的规模为8K,分别记为ACL_8K、FW_8K和IPC_8K。对于规则R的域值,定义如下:
(1)为Fi小域:若Leni<Ti;
(2)为Fi大域:若Leni>Ti。
其中,规则R=(F1,F2...Fi...Fd),d表示分类规则的维度,Leni表示规则R中第i个域的取值范围的长度大小。
根据上述对大域及小域的定义,规则R定义为如下形式:
(1)R为全域上的大规则:对于所有的域(1≤i≤d),均满足为大域;
(2)R为某个域上的大规则:对于某个域i,满足为大域;
(3)R为小规则:对于所有的域(1≤i≤d),均满足为小域。
对于典型五元组规则集,由于实际规则集中所包含的端口域和协议域的取值往往较少,因此大部分规则可通过地址域进行区分,所以我们在进行规则特征统计时只考虑源地址域SA和目的地址域DA。
对ACL_8K、FW_8K和IPC_8K三个开源的合成规则集进行特征统计,主要统计的是每个规则集中各域大规则所占的百分比,不同类型的分类规则集中有着相似的特性,但也有差异较大的地方。三类规则集满足源IP地址域和目的IP地址域均为大域的规则数目都较少,但FW规则集显然比其它两类要多;对于满足源IP地址域或目的IP地址域其中一个为大域的规则数目来说,ACL二者的比例都很低,FW则超过80%,IPC则介于二者之间,比例不高;至于满足源IP地址域和目的IP地址域均为小域的规则数目,ACL和IPC都占据绝大部分,FW则有一小部分。
因此,我们通过对规则集的统计得出了这样一个规则集特征结论:绝大多数的规则都至少存在一个“小域”。当然,结论中所说的“小域”已经是一个相对的概念,是指相对于原始的全体搜索空间而言较小,例如源地址域SA的长度Leni为216,则其相对于源地址域SA的整体取值范围232而言是一个非常小的取值范围。
因此,五元组规则集划分到如下的4个规则子集中,其中各个规则子集之间没有交集且各个规则子集的并集为原始的规则集:
(1)大规则子集(Big-subset):规则中SA、DA两个域均为大域;
(2)SA-大规则子集(SA-Big-subset):规则中SA为大域,DA为小域;
(3)DA-大规则子集(DA-Big-subset):规则中DA为大域,SA为小域;
(4)小规则子集(Small-subset):规则中SA、DA两个域均为小域。
对这四个规则子集分别建立单独的查找结构,最后设置优先级比较器,输出与数据包头匹配的优先级最高的那条规则,就可完成了包分类工作。
参照图4所示,在本发明的一具体实施例中,以华盛顿大学提供的大小为1K的ACL规则集,用ACL_1K表示,采用RFC算法构建查找表,共分为4个阶段,阶段1有7个chunk,阶段2有3个chunk,阶段3和阶段4各有1个chunk。
下表是RFC对ACL_1K规则集所划分的各个等价类的统计分析,其中p1[0]表示第1阶段的chunk0位置,其它以此类推。当等价类中规则数目不大于5时,可以称之为足够小的等价类。
通过分析该表,我们发现阶段越靠后,等价类数目越多,小等价类的数目也急剧上升。到了最后一个阶段p4,小等价类的占比更是达到了90%以上,而在前面的阶段,虽然某些位置等价类的数目较多,但其中小等价类的占比却不高
通过对ACL_1K进行的规则集等价类的统计分析,得到在RFC算法靠后的阶段中规则数不大于5的等价类占比比较高,这会导致其后的查找表长度也相应的增大。因此,将每一阶段合并过程划分的等价类中规则数小于5的足够小的等价类从等价类集合中剔除出来,以链表的形式进行存储。在合并后的查找表中,对于正常的规则数小于5的等价类,我们继续存入该等价类的编号(eqID);对于足够小的等价类,我们将在表中存入链表的首元素的地址。
通过这种规则剔除技术,我们能够大量减少进行合并的等价类的数量,但是会引入对小等价类中的规则进行链式存储的空间,而这些小等价类的数目必然远远小于这些小等价类与其它等价类的乘积的数目,所以其后续查找表的长度得到了有效的降低,也就减少了算法的内存消耗。
在本发明的一具体实施例中,通过观察RFC算法块(chunk)的划分方式,可以看出它是对连续比特位进行的处理,在阶段1中将源IP地址的高16位,源IP地址的低16位,目的IP地址的高16位,目的IP地址的低16位,源端口(16位),目的端口(16位),协议(8位)共104个连续的比特位分为了7个chunk。这种对连续的比特位进行等价类的划分会导致等价类的数目较小,但其中每个等价类的规则数会比较多,不利于小等价类的产生。
而模块化包分类(Modular Packet Classification)算法的选位思想给我们提供了很好的思路,如果我们在阶段1中不再对连续的比特位进行处理,而是对打散的比特位处理,那么在一开始的阶段我们就会得到大量的含有较少规则数量的小等价类,通过提前采取上一节的规则剔除技术,就能保证查找表的长度始终都能控制在合理范围之内。
对于大规则子集中的每一条规则,由于其源IP地址域和目的IP地址域都为大域,采用将比特位打散的方法并不能收到很好的效果。但是根据之前的观察结果,这个子集中包含的规则数目一般很少,因此我们可以对这些规则继续采用连续的比特位进行等价类的划分,而不用担心会产生过大的内存消耗。
参照图5所示,对于SA-大规则子集中的规则,其特点是源IP地址域为大域,目的IP地址域为小域。对于大域没有必要采取打散比特位的方法,因此选位的核心在于小域,也就是此处的目的IP地址域。Hybrid-RFC算法针对这种特性提出了奇偶选位的方法,将目的IP地址的32个比特位分成8个chunk,每个chunk包含4位,分别对应如下:chunk0:d.ip[3:0],chunk1:d.ip[7:4],chunk2:d.ip[11:8],chunk3:d.ip[15:12],chunk4:d.ip[19:16],chunk5:d.ip[23:20],chunk6:d.ip[27:24],chunk7:d.ip[31:28]。然后分别对编号为奇数和偶数的chunk进行合并,最后得到两个对16个比特位进行合并后的查找表A和B,当这32个比特位分别合并结束后,我们将最后的查找表A作为Phase 1的第2个表,即p1[2]表;查找表B作为Phase 1的第3个表,即p1[3]表,随后继续后面的合并过程。
参照图6所示,对于DA-大规则子集中的规则,其特点与SA-大规则子集正好相反,即源IP地址域为小域,目的IP地址域为大域。因此,我们对这里的源IP地址采取了奇偶选位的方法,将源IP地址的32个比特位分成8个chunk,每个chunk包含4位,分别对应如下:chunk0:s.ip[3:0],chunk1:s.ip[7:4],chunk2:s.ip[11:8],chunk3:s.ip[15:12],chunk4:s.ip[19:16],chunk5:s.ip[23:20],chunk6:s.ip[27:24],chunk7:s.ip[31:28]。然后分别对编号为奇数和偶数的chunk进行合并,最后得到两个对16个比特位进行合并后的查找表C和D,当这32个比特位分别合并结束后,我们将最后的查找表C作为Phase 1的第0个表,即p1[0]表;查找表D作为Phase 1的第1个表,即p1[1]表,随后继续后面的合并过程。
对于小规则子集中的规则,其特点是源IP地址域和目的IP地址域均为小域,而且这个子集中包含的规则一般最多。因此对源IP地址和目的IP地址进行混合奇偶选位,进一步打散共64位的IP地址,使得规则剔除过程能够及早进行。具体来说,将源IP地址和目的IP地址的64个比特位分成16个chunk,每个chunk包含4位,分别对应如下:chunk0:s.ip[3:0],chunk1:s.ip[7:4],chunk2:s.ip[11:8],chunk3:s.ip[15:12],chunk4:s.ip[19:16],chunk5:s.ip[23:20],chunk6:s.ip[27:24],chunk7:s.ip[31:28],chunk8:d.ip[3:0],chunk9:d.ip[7:4],chunk10:d.ip[11:8],chunk11:d.ip[15:12],chunk12:d.ip[19:16],chunk13:d.ip[23:20],chunk14:d.ip[27:24],chunk15:d.ip[31:28]。然后将源IP地址中编号为偶数的chunk进行合并,得到查找表E;将目的IP地址中编号为偶数的chunk进行合并,得到查找表F;将源IP地址中编号为奇数的chunk进行合并,得到查找表G;将目的IP地址中编号为奇数的chunk进行合并,得到查找表H,当这64个比特位分别合并结束后,将查找表E作为Phase 1的第0个表,即p1[0]表;将查找表F作为Phase 1的第1个表,即p1[1]表;将查找表G作为Phase 1的第2个表,即p1[2]表;将查找表H作为Phase 1的第3个表,即p1[3]表,随后继续后面的合并过程。
参照图8所示,本发明的实施例提供了一种网络包分类系统,包括:
软件处理单元1,软件处理单元1用于对现有规则集进行划分和查找表的构建;以及
NetFPGA处理单元2,NetFPGA处理单元2用于根据软件处理单元1生成的规则集划分规则和查找表进行网络包的分类。
在本发明的一具体实施例中,还包括:PCI总线接口3,PCI总线接口3用于将软件处理单元1在智能终端上生成的规则集划分规则和查找表发送到NetFPGA处理单元2。
参照图9所示,在本发明的一具体实施例中,软件处理单元1包括:
用户界面11和驱动程序12,驱动程序12根据用户界面11获取的用户指令,生成相应的规则集划分规则和查找表;NetFPGA处理单元2包括:分类模块21和查找模块22,分别实现对数据包的选位和对查找表的查找功能,以及比较模块23,用于对输出规则进行优先级的比较。
在本发明的一具体实施例中,PCI总线接口3包括DMA和寄存器;NetFPGA处理单元2,包括FPGA的硬件逻辑设计和PHY的物理层数据处理。
需要用到的部分verilog核心代码如下:
(1)要查找的数据输入接口和查找结果输出接口定义:
input[32:0]sip_address;//32位源IP地址
input[32:0]dip_address;//32位目的IP地址
input[15:0]s_port;//16位源端口
input[15:0]d_port;//16位目的端口
input[7:0]protocol;//8位协议字段
output reg result;//输出匹配的规则
(2)定义的中间变量:
reg b_p00,b_p01,b_p02,b_p03,b_p04,b_p05,b_p06,b_p10,b_p11,b_p12,b_p20,b_p30;//用于大规则子集
reg sa_p00,sa_p01,sa_p02,sa_p03,sa_p04,sa_p05,sa_p06,sa_p10,sa_p11,sa_p12,sa_p20,sa_p30;//用于SA-大规则子集
reg da_p00,da_p01,da_p02,da_p03,da_p04,da_p05,da_p06,da_p10,da_p11,da_p12,da_p20,da_p30;//用于DA-大规则子集
reg s_p00,s_p01,s_p02,s_p03,s_p04,s_p05,s_p06,s_p10,s_p11,s_p12,s_p20,s_p30;//用于小规则子集
(3)包分类查找过程(仅列举大规则子集和小规则子集):
//第1级流水线
b_p00<=b_table00[sip_address[15:0]];
b_p01<=b_table01[sip_address[31:16]];
b_p02<=b_table02[dip_address[15:0]];
b_p03<=b_table03[dip_address[31:16]];
b_p04<=b_table04[s_port[15:0]];
b_p05<=b_table05[d_port[15:0]];
b_p06<=b_table06[protocol[7:0]];
//第2级流水线
b_p10<=b_table10[b_p00*length01+b_p01];
b_p11<=b_table11[b_p02*length03+b_p03];
b_p12<=b_table12[b_p04*length05*length06+b_p05*length06+b_p06];
//第3级流水线
b_p20<=b_table20[b_p10*length11+b_p11];
//第4级流水线
b_p30<=b_table30[b_p20*length12+b_p12];
//以上为大规则查找过程
//第1级流水线
s_p00<=s_table00[{sip_address[3:0],sip_address[11:8],sip_address[19:16],sip_address[27:24]}];
s_p01<=s_table01[{dip_address[3:0],dip_address[11:8],dip_address[19:16],dip_address[27:24]}];
s_p02<=s_table02[{sip_address[7:4],sip_address[15:12],sip_address[23:20],sip_address[31:28]}];
s_p03<=s_table03[{dip_address[7:4],dip_address[15:12],dip_address[23:20],dip_address[31:28]}];
s_p04<=s_table04[s_port[15:0]];
s_p05<=s_table05[d_port[15:0]];
s_p06<=s_table06[protocol[7:0]];
//以上为小规则查找过程选位的关键步骤,后续流水线步骤与大规则查找过程相同。
(4)输出规则优先级比较:
result=min{b_p30,sa_p30,da_p30,s_p30}。
以上代码中的每一个table数组都是在预处理阶段计算好的查找表,储存在FPGA的RAM中。通过Fedora系统下的ISE套件将综合之后的代码下载到NetFPGA上,就能够将算法应用到真实包分类工作中。
通过对算法的程序进行硬件测试,对四个规则子集的查找结构消耗的内存进行了分析,发现大规则子集消耗的内存仍然占主要部分,但由于规则数目较少,没有对整体的内存消耗造成太严重的影响,而另外三个子集因为充分利用了规则剔除技术和选位技术,内存消耗得到了明显的改善,由此得出本发明的算法是一个软硬协同内存有效性高速包分类算法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种网络包分类算法,其特征在于,包括:
将现有的分类规则集划分为:源IP地址和目的IP地址的大规则子集、源IP地址的大规则子集、目的IP地址的大规则子集和小规则子集;
对所述源IP地址和目的IP地址的大规则子集划分为连续的4个块进行等价类的合并;
对所述源IP地址的大规则子集对应的小域进行奇偶选位,以分别生成的查找表A和B为基础进行等价类合并;
对所述目的IP地址的大规则子集对应的小域进行奇偶选位,以分别生成的查找表C和D为基础进行等价类合并;
对所述小规则子集,将源IP地址域和目的IP地址域进行混合奇偶选位,以分别生成的查找表E、F、G、H为基础进行等价类合并;
剔除上述四个等价类合并过程中规则数小于5个的等价类,并以链表的形式分别进行存储,将所述链表中首元素的地址存入相应的查找表中;
对上述四个等价类合并所输出的规则进行优先级的比较,输出与数据包头匹配的优先级最高的规则。
2.根据权利要求1所述的算法,其特征在于,对现有分类规则集划分的规则包括:
对源IP地址和目的IP地址的大规则子集中的规则:源IP地址和目的IP地址两个域均为大域;
对源IP地址的大规则子集中的规则:源IP地址为大域,目的IP地址为小域;
对目的IP地址的大规则子集中的规则:源IP地址为小域,目的IP地址为大域;
对小规则子集中的规则:源IP地址和目的IP地址两个域均为小域。
3.根据权利要求2所述的算法,其特征在于,对源IP地址和目的IP地址两个大域和小域的划分规则包括:
对于规则R的域值Fi,定义如下:
(1)为Fi小域:若Leni<Ti;
(2)为Fi大域:若Leni>Ti;
其中,规则R=(F1,F2...Fi...Fd),d表示分类规则的维度,Leni表示规则R中第i个域的取值范围的长度大小;
根据上述对大域及小域的定义,规则R定义为如下形式:
(1)R为全域上的大规则:对于所有的域(1≤i≤d),均满足Fi为大域;
(2)R为某个域上的大规则:对于某个域i,满足Fi为大域;
(3)R为小规则:对于所有的域(1≤i≤d),均满足Fi为小域。
4.根据权利要求3所述的算法,其特征在于,对所述源IP地址的大规则子集进行的奇偶选位包括:
将所述目的IP地址的32个比特位分成8个块,每个块包含4个比特位,将编号为奇数和偶数的分别进行合并,得到两个对16个比特位进行合并后的查找表A和B。
5.根据权利要求3所述的算法,其特征在于,对所述目的IP地址的大规则子集进行的奇偶选位包括:
将所述源IP地址的32个比特位分成8个块,每个块包含4个比特位,将编号为奇数和偶数的分别进行合并,得到两个对16个比特位进行合并后的查找表C和D。
6.根据权利要求3所述的算法,其特征在于,对所述小规则子集的奇偶混合选位包括:
将所述源IP地址和所述目的IP地址的64个比特位分成16个块,每个块包含4位,将所述源IP地址中编号为偶数的块进行合并,得到查找表E;将所述目的IP地址中编号为偶数的块进行合并,得到查找表F;将所述源IP地址中编号为奇数的块进行合并,得到查找表G;将所述目的IP地址中编号为奇数的块进行合并,得到查找表H。
7.一种网络包分类系统,其特征在于,包括:
软件处理单元,所述软件处理单元用于基于权利要求1所述的网络包分类算法对现有规则集进行划分和查找表的构建;以及
NetFPGA处理单元,所述NetFPGA处理单元用于根据所述软件处理单元生成的规则集划分规则和所述查找表进行网络包的分类。
8.根据权利要求7所述的系统,其特征在于,还包括:
PCI总线接口,所述PCI总线接口用于将所述软件处理单元在智能终端上生成的规则集划分规则和所述查找表发送到所述NetFPGA处理单元。
9.根据权利要求8所述的系统,其特征在于,所述软件处理单元包括:
用户界面和驱动程序,所述驱动程序根据所述用户界面获取的用户指令,生成相应的规则集划分规则和所述查找表。
10.根据权利要求9所述的系统,其特征在于,所述NetFPGA处理单元包括:分类模块和查找模块,分别实现对数据包的选位和对所述查找表的查找功能,以及比较模块,用于对输出规则进行优先级的比较。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811292652.1A CN109376789B (zh) | 2018-10-31 | 2018-10-31 | 一种网络包分类算法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811292652.1A CN109376789B (zh) | 2018-10-31 | 2018-10-31 | 一种网络包分类算法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109376789A CN109376789A (zh) | 2019-02-22 |
CN109376789B true CN109376789B (zh) | 2020-12-08 |
Family
ID=65397229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811292652.1A Withdrawn - After Issue CN109376789B (zh) | 2018-10-31 | 2018-10-31 | 一种网络包分类算法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109376789B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112367262B (zh) * | 2020-08-20 | 2022-07-05 | 国家计算机网络与信息安全管理中心 | 一种五元组规则的匹配方法及装置 |
CN112688881B (zh) * | 2020-12-11 | 2022-11-01 | 中国科学院声学研究所 | 一种基于大小域规则划分的网络数据包分类方法 |
CN113723548A (zh) * | 2021-09-06 | 2021-11-30 | 北京左江科技股份有限公司 | 决策树规则集预处理的方法和装置 |
CN114745336B (zh) * | 2022-05-05 | 2023-11-21 | 中国人民解放军国防科技大学 | 基于rfc的报文分类方法、装置、计算机设备和存储介质 |
CN115834340B (zh) * | 2022-10-28 | 2024-09-20 | 新华三半导体技术有限公司 | 一种规则存储方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1543131A (zh) * | 2003-04-30 | 2004-11-03 | 华为技术有限公司 | 转发数据包的查表方法 |
CN1805435A (zh) * | 2005-01-13 | 2006-07-19 | 中兴通讯股份有限公司 | 一种IPv6多域分类处理方法 |
CN101594303A (zh) * | 2009-07-10 | 2009-12-02 | 清华大学 | 基于网络流量统计信息的快速网包分类方法 |
CN104301227A (zh) * | 2013-07-16 | 2015-01-21 | 北京大学深圳研究生院 | 基于tcam的高速低功耗ip路由表查找方法 |
WO2015063725A1 (en) * | 2013-10-30 | 2015-05-07 | Telefonaktiebolaget L M Ericsson (Publ) | Method and computing device for packet classification |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7039641B2 (en) * | 2000-02-24 | 2006-05-02 | Lucent Technologies Inc. | Modular packet classification |
KR101331018B1 (ko) * | 2011-10-11 | 2014-01-15 | 주식회사 시큐아이 | 패킷 분류 방법 및 그 장치 |
-
2018
- 2018-10-31 CN CN201811292652.1A patent/CN109376789B/zh not_active Withdrawn - After Issue
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1543131A (zh) * | 2003-04-30 | 2004-11-03 | 华为技术有限公司 | 转发数据包的查表方法 |
CN1805435A (zh) * | 2005-01-13 | 2006-07-19 | 中兴通讯股份有限公司 | 一种IPv6多域分类处理方法 |
CN101594303A (zh) * | 2009-07-10 | 2009-12-02 | 清华大学 | 基于网络流量统计信息的快速网包分类方法 |
CN104301227A (zh) * | 2013-07-16 | 2015-01-21 | 北京大学深圳研究生院 | 基于tcam的高速低功耗ip路由表查找方法 |
WO2015063725A1 (en) * | 2013-10-30 | 2015-05-07 | Telefonaktiebolaget L M Ericsson (Publ) | Method and computing device for packet classification |
Non-Patent Citations (6)
Title |
---|
CutSplit: A Decision-Tree Combining Cutting and Splitting for Scalable Packet Classification;Wenjun Li 等;《IEEE INFOCOM 2018 - IEEE Conference on Computer Communications》;20181011;2645-2653 * |
HybridCuts: A Scheme Combining Decomposition and Cutting for Packet Classification;Wenjun Li 等;《2013 IEEE 21st Annual Symposium on High-Performance Interconnects》;20131010;41-48 * |
Packet Classification Through Regular Expression Matching on NetFPGA;Gianni Antichi 等;《An Open Source Hardware Module for High Speed Network on NetFPGA European NetFPGA Developers Workshop》;20101231;摘要 * |
基于 RFC 算法的快速多维数据包分类算法;刘胤 等;《计算机工程》;20080320;第34卷(第6期);第1.1-1.2节 * |
基于多维空间动态划分与 RFC 的包分类改进算法;陈小雨 等;《网络与信息安全学报》;20180315;第4卷(第3期);35-41 * |
高性能网包分类理论与算法综述;亓亚烜 等;《计算机学报》;20130215;第36卷(第2期);408-424 * |
Also Published As
Publication number | Publication date |
---|---|
CN109376789A (zh) | 2019-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109376789B (zh) | 一种网络包分类算法与系统 | |
US20210194800A1 (en) | Resilient hashing for forwarding packets | |
US7408932B2 (en) | Method and apparatus for two-stage packet classification using most specific filter matching and transport level sharing | |
US7525958B2 (en) | Apparatus and method for two-stage packet classification using most specific filter matching and transport level sharing | |
US7668160B2 (en) | Methods for performing packet classification | |
US20150195200A1 (en) | Lookup cluster complex | |
US8750144B1 (en) | System and method for reducing required memory updates | |
US20070171911A1 (en) | Routing system and method for managing rule entry thereof | |
US8719917B1 (en) | Merging firewall filters using merge graphs | |
US9240959B2 (en) | Method for packet classification and device therefor | |
EP3276501A1 (en) | Traffic classification method and device, and storage medium | |
US9159420B1 (en) | Method and apparatus for content addressable memory parallel lookup | |
US9672239B1 (en) | Efficient content addressable memory (CAM) architecture | |
CN102377664A (zh) | 一种基于tcam的区域匹配装置和方法 | |
JP3881663B2 (ja) | フィールドレベルツリーを用いたパケット分類装置及び方法 | |
CN113519144A (zh) | 用于网络设备的精确匹配和三元内容可寻址存储器(tcam)混合查找 | |
US20040233692A1 (en) | Magnitude comparator based content addressable memory for search and sorting | |
Pascoal et al. | A comprehensive survey on the quickest path problem | |
Pao et al. | A multi-pipeline architecture for high-speed packet classification | |
CN106789727B (zh) | 报文分类方法和装置 | |
CN106487769A (zh) | 一种访问控制列表acl的实现方法及装置 | |
CN103457855B (zh) | 无类域间路由表建立、以及报文转发的方法和装置 | |
US20220109626A1 (en) | Forwarding Rules Among Lookup Tables in a Multi-Stage Packet Processor | |
CN105227468B (zh) | 一种查找装置、查找方法和配置方法 | |
US8316151B1 (en) | Maintaining spatial ordering in firewall filters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
AV01 | Patent right actively abandoned |
Granted publication date: 20201208 Effective date of abandoning: 20210127 |
|
AV01 | Patent right actively abandoned |
Granted publication date: 20201208 Effective date of abandoning: 20210127 |
|
AV01 | Patent right actively abandoned | ||
AV01 | Patent right actively abandoned |