CN116208687A - 高性能网络报文分类方法及系统 - Google Patents
高性能网络报文分类方法及系统 Download PDFInfo
- Publication number
- CN116208687A CN116208687A CN202310188203.7A CN202310188203A CN116208687A CN 116208687 A CN116208687 A CN 116208687A CN 202310188203 A CN202310188203 A CN 202310188203A CN 116208687 A CN116208687 A CN 116208687A
- Authority
- CN
- China
- Prior art keywords
- attribute
- bit set
- rule
- port number
- attributes
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- 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
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种高性能网络报文分类方法及系统,包括:步骤S1:将报文的五元组<源IP、目的IP、源端口号、目的端口号、协议号>分解成预设个值域满足预设要求的属性;步骤S2:为每个值域满足预设要求的属性配置一组位集,并利用位集记录当前报文属性值与相应属性的匹配状态;步骤S3:在报文中提取分解后属性的值,并检索对应属性值的位集;步骤S4:将检索出的位集执行逻辑与或逻辑或运算得到候选匹配规则;步骤S5:将候选匹配规则在端口号上做进一步的匹配度精确检查,得到最终的匹配规则;步骤S6:利用得到的最终匹配规则对报文进行分类。
Description
技术领域
本发明涉及报文分类技术领域,具体地,涉及高性能网络报文分类方法及系统,更为具体地,涉及基于位集索引数据结构、逻辑运算、聚合压缩算法,提出一种新的高性能网络报文分类算法。
背景技术
报文在网络设备或软件服务中需按照相应的规则进行转发,为了尽可能减少报文在网络中的转发延时,需设计支持高性能查找的报文分类算法。
专利文献CN107016080A(申请号:201710197897.5)公开了一种高效网络报文分类方法,其基于决策树的分类方法结构简单,易形成规则,效率高,不需额外知识,适用于数据量较大、数据格式多样的情况,尤其对于实时报文分类这种对速度要求较高的系统,采用决策树方法是合理的选择,本发明提出的基于信息熵的决策树算法也是基于启发式策略,是多叉层次树基础上的一种改进,在层次树中,本发明顺序的根据头部位信息来确定其所属的规则子集,这样易形成规则子集划分均匀的现象,根据对具体规则库的观察,发现若从中抽取几位最具区分意义的位,基于这些位的熵值特性,得出具有较大熵值增益的位,则能够将规则均衡的划分到子集中去,从而减少最坏情况的复杂度。
本发明提出的网络报文分类算法是基于<源IP、目的IP、源端口号、目的端口号、协议号>五元组定义的带有优先级的规则集,通过对报文进行分类,查找其匹配的优先级最高的规则。由于很多应用对网络的传输时延很敏感,这给路由转发涉及的报文查找算法提出了很高的性能要求。首先,单个报文的分类延时要求是亚微秒级甚至纳秒级的;其次,算法在各种具有不同特征的规则集上要尽可能地表现出稳定的分类性能;最后,算法要具有较好的维护性和实用性,即支持规则的快速插入和删除功能,数据结构占用的内存空间要可控,算法是否需要训练、针对不同的规则集的训练时间也是需要考虑的方面。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种高性能网络报文分类方法及系统。
根据本发明提供的一种高性能网络报文分类方法,包括:
步骤S1:将报文的五元组<源IP、目的IP、源端口号、目的端口号、协议号>分解成预设个值域满足预设要求的属性;
步骤S2:为每个值域满足预设要求的属性配置一组位集,并利用位集记录当前报文属性值与相应属性的匹配状态;
步骤S3:在报文中提取分解后属性的值,并检索对应属性值的位集;
步骤S4:将检索出的位集执行逻辑与或逻辑或运算得到候选匹配规则;
步骤S5:将候选匹配规则在端口号上做匹配度精确检查,得到最终的匹配规则;
步骤S6:利用得到的最终匹配规则对报文进行分类。
优选地,将预设个位集按照一定的聚合比进行压缩,将压缩后的位集利用逻辑或/与运算得到候选匹配规则集。
优选地,所述步骤S1采用:
步骤S1.1:将源IP和目的IP两个属性分别分解成4个值域为256的属性,每个属性对应IP中的一个字节;
步骤S1.2:将报文的五元组<源IP、目的IP、源端口号、目的端口号、协议号>分解成源IP属性分解得到的4个属性、目的IP属性分解得到的4个属性、源端口号属性、目的端口号属性以及协议号属性。
优选地,将源端口号和目的端口号两个属性按照预设要求将属性值域分别分解成c个子空间。
优选地,所述步骤S2采用:
步骤S2.1:为分解后的源IP和目的IP属性的每个值配置一个位集;
步骤S2.2:为每个协议号配置一个位集,并配置一个位集用于标记协议号通配的规则;
步骤S2.3:为分解后的每个端口号子空间配置一个位集。
优选地,所述步骤S4采用:当采用基于位集的反向查询算法,则对记录规则不匹配状态的位集执行逻辑或运算得到候选匹配规则;当采用基于位集的正向查询算法,则对记录规则匹配状态的位集执行逻辑与运算得到候选匹配规则。
根据本发明提供的一种高性能网络报文分类系统,包括:
模块M1:将报文的五元组<源IP、目的IP、源端口号、目的端口号、协议号>分解成预设个值域满足预设要求的属性;
模块M2:为每个值域满足预设要求的属性配置一组位集,并利用位集记录当前报文属性值与相应属性的匹配状态;
模块M3:在报文中提取分解后属性的值,并检索对应属性值的位集;
模块M4:将检索出的位集执行逻辑与或逻辑或运算得到候选匹配规则;
模块M5:将候选匹配规则在端口号上做匹配度精确检查,得到最终的匹配规则;
模块M6:利用得到的最终匹配规则对报文进行分类。
优选地,将预设个位集按照一定的聚合比进行压缩,将压缩后的位集利用逻辑或/与运算得到候选匹配规则集。
优选地,所述模块M1采用:
模块M1.1:将源IP和目的IP两个属性分别分解成4个值域为256的属性,每个属性对应IP中的一个字节;
模块M1.2:将报文的五元组<源IP、目的IP、源端口号、目的端口号、协议号>分解成源IP属性分解得到的4个属性、目的IP属性分解得到的4个属性、源端口号属性、目的端口号属性以及协议号属性;
将源端口号和目的端口号两个属性按照预设要求将属性值域分别分解成c个子空间。
优选地,所述模块M2采用:
模块M2.1:为分解后的源IP和目的IP属性的每个值配置一个位集;
模块M2.2:为每个协议号配置一个位集,并配置一个位集用于标记协议号通配的规则;
模块M2.3:为分解后的每个端口号子空间配置一个位集;
所述模块M4采用:当采用基于位集的反向查询算法,则对记录规则不匹配状态的位集执行逻辑或运算得到候选匹配规则;当采用基于位集的正向查询算法,则对记录规则匹配状态的位集执行逻辑与运算得到候选匹配规则。
与现有技术相比,本发明具有如下的有益效果:
1、本发明用位集存储规则的部分不匹配结果或匹配结果:将源IP和目的IP分别按字节分解成4个属性,从而将属性的值域降低为0-255,使得为每个属性值配置一个位集来单独存储其不匹配规则或匹配规则成为可能;
2、本发明基于位集方法在查找过程中主要执行位集检索和逻辑运算,执行效率高,且充分利用了各个属性上的过滤效果,使得算法的分类效率高且能在各种倾斜规则集上实现稳定的性能;
3、本发明端口号属性上可以通过调节划分的子空间数量来权衡内存开销,充分利用内存空间来减少算法的查找时间;
4、实验结果表明,在弱局部性的规则集上,本发明的平均查找时间达到171ns,与现有算法PSTSS、CutSplit、CutTSS、PartitionSort相比分别快了99.5%、83.5%、99.5%、48.3%;
5、本发明提出了聚合位集优化,将原位集按一定的聚合比进行压缩得到二级位集,通过减少逻辑运算和比较操作的次数提高查找性能。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明的六个样本规则示意图。
图2为本发明中的样本规则解码后的谓词区间示意图。
图3为本发明基于样本规则构建的反向位集索引示意图。
图4为高性能网络报文分类方法流程图。
图5为高性能网络报文分类方法流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例1
根据本发明提供的一种高性能网络报文分类方法,如图4至5所示,包括:
步骤S1:将报文的五元组<源IP、目的IP、源端口号、目的端口号、协议号>分解成预设个值域满足预设要求的属性;
步骤S2:为每个值域满足预设要求的属性配置一组位集,并利用位集记录当前报文属性值与相应属性的匹配状态;
步骤S3:在报文中提取分解后属性的值,并检索对应属性值的位集;
步骤S4:将检索出的位集执行逻辑与或逻辑或运算得到候选匹配规则;
步骤S5:将候选匹配规则在端口号上做匹配度精确检查,得到最终的匹配规则;
步骤S6:利用得到的最终匹配规则对报文进行分类。
具体地,将预设个位集按照一定的聚合比进行压缩,将压缩后的位集利用逻辑或/与运算得到候选匹配规则集。
具体地,所述步骤S1采用:
步骤S1.1:将源IP和目的IP两个属性分别分解成4个值域为256的属性,每个属性对应IP中的一个字节;
步骤S1.2:将报文的五元组<源IP、目的IP、源端口号、目的端口号、协议号>分解成源IP属性分解得到的4个属性、目的IP属性分解得到的4个属性、源端口号属性、目的端口号属性以及协议号属性。
具体地,将源端口号和目的端口号两个属性按照预设要求将属性值域分别分解成c个子空间。
具体地,所述步骤S2采用:
步骤S2.1:为分解后的源IP和目的IP属性的每个值配置一个位集;
步骤S2.2:为每个协议号配置一个位集,并配置一个位集用于标记协议号通配的规则;
步骤S2.3:为分解后的每个端口号子空间配置一个位集。
具体地,所述步骤S4采用:当采用基于位集的反向查询算法,则对记录规则不匹配状态的位集执行逻辑或运算得到候选匹配规则;当采用基于位集的正向查询算法,则对记录规则匹配状态的位集执行逻辑与运算得到候选匹配规则。
根据本发明提供的一种高性能网络报文分类系统,包括:
模块M1:将报文的五元组<源IP、目的IP、源端口号、目的端口号、协议号>分解成预设个值域满足预设要求的属性;
模块M2:为每个值域满足预设要求的属性配置一组位集,并利用位集记录当前报文属性值与相应属性的匹配状态;
模块M3:在报文中提取分解后属性的值,并检索对应属性值的位集;
模块M4:将检索出的位集执行逻辑与或逻辑或运算得到候选匹配规则;
模块M5:将候选匹配规则在端口号上做匹配度精确检查,得到最终的匹配规则;
模块M6:利用得到的最终匹配规则对报文进行分类。
具体地,将预设个位集按照一定的聚合比进行压缩,将压缩后的位集利用逻辑或/与运算得到候选匹配规则集。
具体地,所述模块M1采用:
模块M1.1:将源IP和目的IP两个属性分别分解成4个值域为256的属性,每个属性对应IP中的一个字节;
模块M1.2:将报文的五元组<源IP、目的IP、源端口号、目的端口号、协议号>分解成源IP属性分解得到的4个属性、目的IP属性分解得到的4个属性、源端口号属性、目的端口号属性以及协议号属性;
将源端口号和目的端口号两个属性按照预设要求将属性值域分别分解成c个子空间。
具体地,所述模块M2采用:
模块M2.1:为分解后的源IP和目的IP属性的每个值配置一个位集;
模块M2.2:为每个协议号配置一个位集,并配置一个位集用于标记协议号通配的规则;
模块M2.3:为分解后的每个端口号子空间配置一个位集;
所述模块M4采用:当采用基于位集的反向查询算法,则对记录规则不匹配状态的位集执行逻辑或运算得到候选匹配规则;当采用基于位集的正向查询算法,则对记录规则匹配状态的位集执行逻辑与运算得到候选匹配规则。
实施例2
实施例2是实施例1的优选例
本发明所解决的报文分类问题指五元组上的报文分类问题。五元组指<源IP,目的IP,源端口号,目的端口号,协议号>,可以看成五个具有不同值域和特征的域或属性。被查询的数据是规则集,用于查询的数据是报文集。每条规则由五个谓词构成,即对每个属性都定义了一个区间约束。每个报文在五个属性上都有一个定值。
对于源IP和目的IP两个属性,其值域是[0,232-1](即无符号32位整型可以表示的数值范围),定义在IP属性上的区间谓词通过一个IP值和一个掩码定义。掩码是非负整数,其值域是[0,32],可用m表示。掩码规定了IP值从高位起的m个二进制位是固定位,即报文IP在这些位上必须和规则中定义IP一样才能匹配。反过来,低位起的32-m个二进制位是自由位,每位可取0或1,所以IP属性上的谓词宽度可表示为232-m。当源IP的掩码m=0时,报文的源IP可以任意取值,都是和规则匹配的,此时可称该规则在源IP上通配;当源IP的掩码m=32时,报文的源IP值必须完全等于该规则所定义的源IP值才可和该规则匹配。
源端口号和目的端口号属性的值域是[0,216-1],定义在端口号上的区间谓词直接通过两个16位无符号整数分别作为谓词的高值和低值来定义,所以谓词宽度不一定为2的幂次方。
协议号属性通过两个8个二进位无符号整数定义,第一个数是某个协议号,第二个数是协议掩码,该掩码只取0和255两个值。当协议掩码是0时,协议号有0个固定位,报文的协议号可以任意取值,此时匹配概率是1;当协议掩码是255时,协议号有8个固定位,即必须等于第一个无符号8个二进位整数才匹配,定义在协议号属性上的谓词的宽度是1。
报文在五个属性上都有一个值,五个值都分别落入规则所定义的五个区间中,报文和规则才匹配。每条规则具有不同的优先级。报文分类问题就是要尽可能快地从规则集中找出与实时到来的报文相匹配且优先级最高的一条规则。一条报文一般可以匹配规则集中的多条规则。规则按优先级降序排序,其中最后一条也就是优先级最低的规则一般是通配的,可以匹配任何报文,所以规则集保证对任何报文都存在唯一的一条规则作为分类结果。
为了实现对报文的快速分类,本发明首先提出了基于位集的反向查找算法和正向查找算法,分别用位集记录不匹配的规则号和匹配的规则号,通过逻辑或运算和与运算得到候选匹配规则集。在这个一级位集的基础上,本发明提出了位集的聚合压缩方法,将一级位集按一定的聚合比压缩成二级位集,分类时先在二级位集上进行规则快速检索,当不满足条件时再在一级位集上进行细粒度规则检索。
所述基于位集反向查找的报文分类算法包括:
该算法的核心思想是在插入规则时根据不同属性的特征,用位集提前把谓词值的分布信息存储起来,作为一种缓存,在查询时直接通过报文的值找到对应属性上的存储了不匹配规则的位集,最后通过逻辑或运算将各个属性上的不匹配规则集合并起来。
协议号属性
对于协议号属性,其取值比较少,设一共有Rp种协议号,则可以把这Rp种协议值映射到1,2,...,Rp上,直接为每一种协议号设置一个位集(i表示第i种协议号),记录当报文协议号为第i种协议时不匹配的那些规则号。每个位集的位数为规则总数,每位代表一个规则的匹配状态,1表示不匹配,0表示匹配。
报文在协议号属性上的查找过程为:(1)当报文的协议号为规则集中出现过的某协议号p时,就记录了所有在协议号上不匹配该报文的规则,/>上第一个0所在的位即是优先级最高的在协议号属性上匹配该报文的规则;(2)当报文的协议号为规则集中没有出现过的新协议号时,所有对协议号属性有约束要求的规则都是不匹配的,因此,可以增设一个初始化为全1的位集/>表示默认每条规则都不匹配,在插入一条规则时如果该规则在协议号属性上通配,则在/>上解除对该规则的标记,最终/>记录了所有对协议号属性有谓词约束的规则,即作为协议号上的不匹配规则集,可用于对协议号没在规则集中出现过的报文的分类。
IP属性
对于两个IP地址类型的属性,由于其值域太大,不能直接等分值域空间。注意到以下两个观察:(1)IP地址是由4个字节构成的,每个字节的值域为0-255;(2)根据掩码可以直接得到定义在每个字节上的区间约束,比如1.2.3.4/16,从高到低四个字节上定义的约束分别为[1,1],[2,2],[0,255],[0,255],将每个区间取反就可以得到每个字节上不匹配的取值区间。因此,可以把两个IP属性拆分成八个相互独立的属性,得到规则的八个区间谓词,该过程称为解码。设源IP从高字节到低字节的四个属性分别为第1~4号属性,目的IP从高字节到低字节的四个属性分别为第5~8号属性。每个属性的值域大小都是256,可以像协议号属性那样为每个值v设置一个位集,记录当报文在这个属性上取值为v时所有不匹配的规则。如此,一共需要2048个位集,即协议号可以作为第9号属性,对应的位集可表示为/>
端口号属性
对于端口号属性,其值域为0-65535。一方面,像协议号属性那样为每种取值设置一个位集必将导致非常大的内存消耗,另一方面,端口号属性不是通过掩码来指定约束区间的,如果像IP属性那样强行将一个端口号属性按高低字节分成两个新属性,那么二者不是相互独立的,低字节属性的取值依赖于高字节属性取的值。因此,本发明考虑模糊查找策略,先将端口号属性的值域等分成c个子空间,每个子空间的大小为然后把每个子空间当作一个属性值,用一个位集存储当报文的值落入该子空间时可能不匹配的规则号。
例如,设c=256,则一共分成256个子空间,每个子空间的值域大小也是256。通过为每个子空间单独配置一个位集来存储所有谓词约束不包含这个子空间的不匹配规则成为了可能。设某规则在端口号属性上定义的区间谓词为[4596,24021],所跨越的子空间号为18~94,因此不匹配的子空问号为1~17,95~256,可以直接在这些子空间对应的各个位集上标记该规则为不匹配。
然而,区间谓词[4596,24021]并没有完整地包含第18和第94号子空间,如果某报文的端口号取值属于第18号子空间但小于4596或者属于第94号子空间但大于24021,则也是不匹配该规则的,即报文端口取值和规则在端口号属性上的区间约束边界值相差小于子空间大小256时的匹配性是不确定的。因此,在报文分类时,通过位集索引可以过滤大部分不匹配且区间谓词边界值和报文端口值相差较大的规则,最后再将报文和少量候选规则在端口号上进行精确比较确定规则是否匹配。
基于位集反向查找步骤
将协议号、IP地址、端口号5个属性分解成了11个值域较小的属性,并对每个属性构建位集索引存储不匹配规则,总的位集数为2048+Rp+1+2c,每个位集的长度等于规则数。具体地,其中,源IP和目的IP分解成8个属性,每个属性值域是256,一个值对应一个位集,所以8*256=2048;设一共有Rp种协议号,每种协议对应一个位集,另外还需要一个位集用于标记通配的情况,所以需要Rp+1位集;每个端口分成c个子空间,每个子空间用一个位集表示,所以有2c个位集。
每个位集的长度都等于规则数,位集中的每一位表示对应规则的匹配状态,其中正向查找用于标记匹配的状态,反向查找用于标记不匹配的状态。
最终进行报文分类的查找步骤为:
(1)根据报文在11个属性上的值检索出11个记录部分不匹配规则的位集;
(2)对这些位集按每64二进位做最多10次或运算,每做一次或运算,检查运算结果是否为64个二进制1,如果是,说明这64个位表示的规则都是不匹配的,此时可以停止该轮次的或运算,循环处理接下来的64位;
(3)如果按64位做完10次或运算后仍有些位为0,说明存在可能匹配的优先级最高的规则,也可能是端口号属性上模糊检查引起的假阳性规则,只需通过检查端口号来确定是否匹配得到查询结果。
基于位集反向查找示例
本发明提供了一个基于位集反向查找的具体示例。由于原问题的值域太大,需要配置的位集太多,不方便全部表示,这里用一个简化后的只有IP属性的样例来描述该算法:将IP属性简化拆分成两个属性a1,a2,每个属性值用3位二进制表示,值域为[0,7],两个属性的掩码m可取0~6。给定六条样本规则如图1所示,规则ID同时代表规则的优先级,ID越小表示优先级越高。
根据IP属性上索引的构建方法,先将每条规则在IP属性上定义的谓词解码成两个谓词,即得到每条规则在a1,a2上的合理取值区间,如图2所示。
将规则在每个属性上定义的约束区间取反,即可得到该属性上和规则不匹配的取值,在这些值对应的位集中将规则标记成1,表示不匹配。最终得到的反向位集索引结构如图3所示,每个属性上有8个位集,对应属性值0~7,每个位集从左往右记录了第1条规则到第6条规则与相应属性值的匹配状态。例如,在a1属性上,当报文取值为2时,R1,R2,R4,R5是不匹配的,所以a1属性上属性值2对应的位集B2为110110。
进行报文分类时,由于这里只有两个属性,根据报文在两个属性上的值取出相应的两个位集,做1次或运算就可得到查找结果。例如,设报文值为51,解码成两个属性表示即为a1·a2=6.3,将与/>执行或运算得到B(101110),第一个没有被标记的位为第2位,所以R2即为优先级最高的匹配规则。可见,基于位集反向查找算法基本消除了对规则的谓词高低值的比较操作(需要对过滤后的少量候选规则进行端口检查以避免假阳性),完全消除了查找过程中的算术运算和对不匹配谓词的标记操作。
基于位集正向查找的报文分类算法
基于同一种数据结构,根据存储和查找匹配或不匹配的谓词所属的规则,可以设计出正向或反向的查找算法。支持反向查找的位集记录不匹配谓词对应的规则号。如果位集中记录匹配谓词对应的规则号,查找时通过位集与运算可以得到在各个属性上都和报文相匹配的规则,则可以设计出基于位集正向查找的报文分类算法。
当报文的协议号为规则集中没有出现过的新协议号时,只有在协议号属性上通配的规则才是匹配的。因此,可以增设一个初始化全为0的位集表示默认都不匹配,在插入规则时如果规则在协议号属性上通配,则在/>中都标记该规则为匹配状态,最终/>就记录了所有对协议号通配的规则。和基于位集反向查找策略的插入过程不同的是,当规则在协议号上通配时,插入时需要标记Rp+1个位集。
对于两种IP属性,一条规则可以解码出8个区间谓词,这8个区间内的每个属性值都是和规则匹配的,只需在这些值所对应的位集中标记该规则为匹配,即可完成插入过程。报文查找时,先根据报文解码出这8个属性上的8个值,提取到这8个值对应的保存了各属性上所有匹配规则的8个位集,再通过逻辑与运算即可得到8个解码属性上都和报文相匹配的规则。
在端口号属性上,只需在规则完全覆盖或部分覆盖的子空间对应的位集上标记规则,就可以通过报文的端口号直接得到存储了该属性上所有匹配规则的位集。不过,和反向查找一样,其中可能有假阳性规则,需要对候选匹配规则的端口号做进一步检查。在端口号属性的例子中,[4596,24021]跨越了第18~94号子空间,对于正向查找,就是直接在这些子空间对应的位集上标记该规则。
基于位集反向查找算法用位集标记报文在某个属性上取某个值时所有的不匹配规则,正向查找则用位集标记报文在某个属性上取某个值时所有的匹配规则。查找时,前者将根据报文值确定的11个属性上的记录规则不匹配状态的位集迭代地做64位逻辑或运算,即可得到候选的匹配规则,而后者将检索出的11个记录规则匹配状态的位集迭代地做64位逻辑与运算得到候选匹配规则。最后二者都需要对少量候选匹配规则做精确的端口号检查,以确定是否还需要继续做逻辑运算寻找优先级最高的匹配规则。就第2节的示例而言,对于正向查找算法,就是省略了取反步骤,直接在表2所示区间中的每个值对应的位集上标记规则,体现在表3中,就是每个位集的1变为0、0变为1,标记的位从表示不匹配状态变为了表示匹配状态。
位集聚合优化
根据以下二个观察:(1)每条报文匹配的规则数很少,即匹配度很低,支持正向查找的位集上必将有很多位是0,而1是稀疏分布的,支持反向查找的位集则相反;(2)查找过程中的性能瓶颈为位集运算和比较操作,运算量与匹配规则的优先级呈反比,优先级越低,运算量越大。因此,可以考虑将k个二进制位聚合压缩成1个二进制位表示,一次位集运算就可以代替之前的k次位集运算,从而减少位集运算次数和每轮64位迭代过程中用于判断是否可以提前停止该轮位集运算而产生的比较次数,从而缓解性能瓶颈。
具体而言,设聚合压缩比为k(之后简称聚合比),表示每k位聚合成1位,设聚合前的位集为一级位集,聚合后的位集为二级位集或聚合位集,一级位集上的二进制位为一级位,二级位集上的二进制位为二级位或聚合位。设规则总数为n,则一级位集由n位构成,二级位集由位构成。实际实现时用64位无符号整型数组表示位集,每64位为一个存储单元,一个一级位集由/>个单元组成,一个二级位集由/>个单元组成。
对于正向查找,如果一级位集中第i个连续的k位都为0,表示第i·k+1~(i+1)·k这k个规则都是不匹配的,则二级位集的第i个聚合位为0;否则,只要一级位集上第i个连续的k位里至少有1个位为1,表示其中可能有匹配的规则,则二级位集的第i个聚合位为1。
聚合优化后基于位集的正向查找步骤为:
(1)根据报文的值检索出11个属性上的二级位集;
(2)处理这11个二级位集的每个存储单元,即每64位做逻辑与运算,11个存储单元最多做10次逻辑与运算;
(3)每做一次逻辑与运算就判断运算结果是否为0,如果为0就说明这64个聚合位所代表的64·k条规则都是不匹配的,可以及时停止该轮没做完的10次64位逻辑与运算,继续处理下一轮的64个聚合位;
(4)否则,如果做完10次逻辑与运算后结果仍不为0,则查找是哪几个聚合位为1,进而检索出其代表的11个一级位集中的存储单元(k<64和k≥64时一级位集存储单元的检索逻辑不同);
(5)直接对11个一级位集的11个存储单元做10次64位逻辑与运算,确定哪一个或哪几个规则可能是匹配的,最后检查端口号是否匹配即可确定报文查找结果。
在支持反向查找的位集上也可以做位集聚合优化,不同地是当连续的k位全为1即全部都不匹配时才能被聚合压缩为1,否则被聚合为0。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种高性能网络报文分类方法,其特征在于,包括:
步骤S1:将报文的五元组<源IP、目的IP、源端口号、目的端口号、协议号>分解成预设个值域满足预设要求的属性;
步骤S2:为每个值域满足预设要求的属性配置一组位集,并利用位集记录当前报文属性值与相应属性的匹配状态;
步骤S3:在报文中提取分解后属性的值,并检索对应属性值的位集;
步骤S4:将检索出的位集执行逻辑与或逻辑或运算得到候选匹配规则;
步骤S5:将候选匹配规则在端口号上做匹配度精确检查,当当前匹配规则与当前端口号匹配时,则得到最终的匹配规则;
步骤S6:利用得到的最终匹配规则对报文进行分类。
2.根据权利要求1所述的高性能网络报文分类方法,其特征在于,将位集按照一定的聚合比进行压缩,基于压缩后的位集利用逻辑或/与运算得到候选匹配规则集。
3.根据权利要求1所述的高性能网络报文分类方法,其特征在于,所述步骤S1采用:
步骤S1.1:将源IP和目的IP两个属性分别分解成4个值域为256的属性,每个属性对应IP中的一个字节;
步骤S1.2:将报文的五元组<源IP、目的IP、源端口号、目的端口号、协议号>分解成源IP属性分解得到的4个属性、目的IP属性分解得到的4个属性、源端口号属性、目的端口号属性以及协议号属性。
4.根据权利要求1所述的高性能网络报文分类方法,其特征在于,将源端口号和目的端口号两个属性按照预设要求将属性值域分别分解成c个子空间。
5.根据权利要求1所述的高性能网络报文分类方法,其特征在于,所述步骤S2采用:
步骤S2.1:为分解后的源IP和目的IP属性的每个值配置一个位集;
步骤S2.2:为每个协议号配置一个位集,并配置一个位集用于标记协议号通配的规则;
步骤S2.3:为分解后的每个端口号子空间配置一个位集。
6.根据权利要求1所述的高性能网络报文分类方法,其特征在于,所述步骤S4采用:当采用基于位集的反向查询算法,则对记录规则不匹配状态的位集执行逻辑或运算得到候选匹配规则;当采用基于位集的正向查询算法,则对记录规则匹配状态的位集执行逻辑与运算得到候选匹配规则。
7.一种高性能网络报文分类系统,其特征在于,包括:
模块M1:将报文的五元组<源IP、目的IP、源端口号、目的端口号、协议号>分解成预设个值域满足预设要求的属性;
模块M2:为每个值域满足预设要求的属性配置一组位集,并利用位集记录当前报文属性值与相应属性的匹配状态;
模块M3:在报文中提取分解后属性的值,并检索对应属性值的位集;
模块M4:将检索出的位集执行逻辑与或逻辑或运算得到候选匹配规则;
模块M5:将候选匹配规则在端口号上做匹配度精确检查,得到最终的匹配规则;
模块M6:利用得到的最终匹配规则对报文进行分类。
8.根据权利要求7所述的高性能网络报文分类系统,其特征在于,将预设个位集按照一定的聚合比进行压缩,将压缩后的位集利用逻辑或/与运算得到候选匹配规则集。
9.根据权利要求7所述的高性能网络报文分类系统,其特征在于,所述模块M1采用:
模块M1.1:将源IP和目的IP两个属性分别分解成4个值域为256的属性,每个属性对应IP中的一个字节;
模块M1.2:将报文的五元组<源IP、目的IP、源端口号、目的端口号、协议号>分解成源IP属性分解得到的4个属性、目的IP属性分解得到的4个属性、源端口号属性、目的端口号属性以及协议号属性;
将源端口号和目的端口号两个属性按照预设要求将属性值或分别分解成c个子空间。
10.根据权利要求7所述的高性能网络报文分类系统,其特征在于,所述模块M2采用:
模块M2.1:为分解后的源IP和目的IP属性的每个值配置一个位集;
模块M2.2:为每个协议号配置一个位集,并配置一个位集用于标记协议号通配的规则;
模块M2.3:为分解后的每个端口号子空间配置一个位集;
所述模块M4采用:当采用基于位集的反向查询算法,则对记录规则不匹配状态的位集执行逻辑或运算得到候选匹配规则;当采用基于位集的正向查询算法,则对记录规则匹配状态的位集执行逻辑与运算得到候选匹配规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310188203.7A CN116208687A (zh) | 2023-03-01 | 2023-03-01 | 高性能网络报文分类方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310188203.7A CN116208687A (zh) | 2023-03-01 | 2023-03-01 | 高性能网络报文分类方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116208687A true CN116208687A (zh) | 2023-06-02 |
Family
ID=86512550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310188203.7A Pending CN116208687A (zh) | 2023-03-01 | 2023-03-01 | 高性能网络报文分类方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116208687A (zh) |
-
2023
- 2023-03-01 CN CN202310188203.7A patent/CN116208687A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106452868B (zh) | 一种支持多维度聚合分类的网络流量统计实现方法 | |
US20210056217A1 (en) | Methods and apparatus to provide group-based row-level security for big data platforms | |
US6775737B1 (en) | Method and apparatus for allocating and using range identifiers as input values to content-addressable memories | |
Maccioni et al. | Scalable pattern matching over compressed graphs via dedensification | |
US7099881B2 (en) | Method for increasing average storage capacity in a bit-mapped tree-based storage engine by using remappable prefix representations and a run-length encoding scheme that defines multi-length fields to compactly store IP prefixes | |
US9595003B1 (en) | Compiler with mask nodes | |
CN108875064B (zh) | 基于FPGA的OpenFlow多维数据匹配查找方法 | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
WO2020057272A1 (zh) | 一种索引数据存储及检索方法、装置及存储介质 | |
WO2018161548A1 (zh) | 一种基于二值码字典树的搜索方法 | |
CN111666468A (zh) | 一种基于团簇属性在社交网络中搜索个性化影响力社区的方法 | |
CN110505322B (zh) | 一种ip地址段查找方法及装置 | |
US20220222233A1 (en) | Clustering of structured and semi-structured data | |
Cheng et al. | Scalable multi-match packet classification using TCAM and SRAM | |
Khan et al. | Set-based unified approach for attributed graph summarization | |
US9900409B2 (en) | Classification engine for data packet classification | |
Song et al. | Packet classification using coarse-grained tuple spaces | |
US7197498B2 (en) | Apparatus, system and method for updating a sorted list | |
CN116208687A (zh) | 高性能网络报文分类方法及系统 | |
CN116243869A (zh) | 数据处理方法、装置及电子设备 | |
US11106703B1 (en) | Clustering of structured and semi-structured data | |
CN114911826A (zh) | 一种关联数据检索方法和系统 | |
Huang et al. | A power-efficient approach to TCAM-based regular expression matching | |
CN113468202B (zh) | 内存数据的筛选方法、装置、设备及存储介质 | |
Huang et al. | A Multi-Block N-ary trie structure for exact r-neighbour search in hamming space |
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 |