CN116633865B - 网络流量控制方法、装置、电子设备及存储介质 - Google Patents
网络流量控制方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116633865B CN116633865B CN202310914520.2A CN202310914520A CN116633865B CN 116633865 B CN116633865 B CN 116633865B CN 202310914520 A CN202310914520 A CN 202310914520A CN 116633865 B CN116633865 B CN 116633865B
- Authority
- CN
- China
- Prior art keywords
- keyword
- rule
- tree
- dimension
- flow control
- 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
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000001514 detection method Methods 0.000 claims abstract description 15
- 230000011218 segmentation Effects 0.000 claims description 40
- 230000009471 action Effects 0.000 claims description 15
- 238000010276 construction Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 230000000875 corresponding effect Effects 0.000 description 72
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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/20—Traffic policing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/02—Capturing of monitoring data
- H04L43/026—Capturing of monitoring data using flow identification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- 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/13—Flow control; Congestion control in a LAN segment, e.g. ring or bus
-
- 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 Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种网络流量控制方法、装置、电子设备及存储介质,涉及数据网络技术领域,该方法包括:基于用户配置的流量控制规则集构造编译树;其中,所述编译树为二叉树,所述编译树的每个中间节点存储一个关键字维度的索引值,包含相同关键字集合的不同规则以链表的形式组织在所述编译树的同一个叶子节点上;从检测点提取流量数据包的关键字信息后,基于所述编译树查找与所述关键字信息相匹配的规则,并根据查找结果执行相应的网络流量控制操作。从而可以大幅节省CPU资源,提高匹配性能。
Description
技术领域
本发明涉及数据网络技术领域,尤其涉及一种网络流量控制方法、装置、电子设备及存储介质。
背景技术
网络流量控制是通信设备防火墙与交换模块的常用技术。对于不可信网络,尤其是公共网络,网络流量控制可以有效的发现怀有恶意的某些主机和网络接入可信网络,并对其予以限制,达到保护可信网络内部安全的目的。
网络流量控制是在网络协议栈的关键位置添加检测点,对经过的流量数据包进行分析,提取出关键字信息,用关键字信息依据配置的规则对流量数据包采取相应的动作,这些动作包括丢包、告警、记录日志、允许通过、限制速率、统计计数等。
在规则较多、流量很大(比如局域网的网关位置,用于管控局域网的内外流量)的情况下,传统的流量控制规则匹配方案可能会消耗大量的中央处理器(CentralProcessing Unit,CPU)资源。
发明内容
针对现有技术存在的问题,本发明提供一种网络流量控制方法、装置、电子设备及存储介质。
第一方面,本发明提供一种网络流量控制方法,包括:
基于用户配置的流量控制规则集构造编译树;其中,所述编译树为二叉树,所述编译树的每个中间节点存储一个关键字维度的索引值,包含相同关键字集合的不同规则以链表的形式组织在所述编译树的同一个叶子节点上;
从检测点提取流量数据包的关键字信息后,基于所述编译树查找与所述关键字信息相匹配的规则,并根据查找结果执行相应的网络流量控制操作。
可选地,所述基于用户配置的流量控制规则集构造编译树,包括:
遍历所述流量控制规则集中的关键字维度,选择对应关键字集合的数量最多的关键字维度作为初始分割维度;
以所述流量控制规则集中对应所述初始分割维度的所有关键字解析值的中位数作为初始分界点,将所述流量控制规则集划分为两个子集,并基于所述初始分割维度和所述初始分界点生成所述编译树的初始中间节点;其中,所述两个子集分别用于生成所述初始中间节点的左子树和右子树;
基于所述两个子集,在所述初始中间节点的两侧继续进行划分规则集和生成编译树节点的操作,并不断重复所述划分规则集和生成编译树节点的操作,直至生成叶子节点,再将相应的规则以链表的形式组织在各个叶子节点上,得到所述编译树。
可选地,所述编译树的中间节点的数据结构中包含以下六项:
用于区分当前节点为中间节点还是叶子节点的字段;
用于标识当前节点对应的关键字维度的字段;
当前节点对应的关键字维度的索引值;
当前节点对应的搜索路径的双亲指针;
当前节点对应的继续搜索时的左孩子指针;
当前节点对应的继续搜索时的右孩子指针。
可选地,所述编译树的叶子节点的数据结构中包含以下三项:
用于区分当前节点为中间节点还是叶子节点的字段;
用于互斥地访问当前节点上链接的规则链表的锁字段;
指向规则链表的指针。
可选地,所述编译树的规则链表的数据结构中包含以下两项:
存储规则信息的数据域;
指向包含相同关键字集合的下一个规则的指针。
可选地,所述基于所述编译树查找与所述关键字信息相匹配的规则,包括:
在访问至第一中间节点时,确定所述第一中间节点对应的第一关键字维度和所述第一关键字维度的第一索引值,若所述关键字信息中对应所述第一关键字维度的关键字解析值小于或等于所述第一索引值,则向所述第一中间节点的左子树方向继续查找,否则向所述第一中间节点的右子树方向继续查找;
在访问至目标叶子节点时,获取所述目标叶子节点上的锁字段,互斥地访问所述目标叶子节点上链接的规则链表,查找与所述关键字信息相匹配的规则。
可选地,所述根据查找结果执行相应的网络流量控制操作,包括:
若基于所述编译树未查找到与所述关键字信息相匹配的规则,则根据用户配置的默认规则对所述流量数据包执行相应的规则动作。
第二方面,本发明还提供一种网络流量控制装置,包括:
编译树构造模块,用于基于用户配置的流量控制规则集构造编译树;其中,所述编译树为二叉树,所述编译树的每个中间节点存储一个关键字维度的索引值,包含相同关键字集合的不同规则以链表的形式组织在所述编译树的同一个叶子节点上;
规则匹配模块,用于从检测点提取流量数据包的关键字信息后,基于所述编译树查找与所述关键字信息相匹配的规则,并根据查找结果执行相应的网络流量控制操作。
可选地,所述基于用户配置的流量控制规则集构造编译树,包括:
遍历所述流量控制规则集中的关键字维度,选择对应关键字集合的数量最多的关键字维度作为初始分割维度;
以所述流量控制规则集中对应所述初始分割维度的所有关键字解析值的中位数作为初始分界点,将所述流量控制规则集划分为两个子集,并基于所述初始分割维度和所述初始分界点生成所述编译树的初始中间节点;其中,所述两个子集分别用于生成所述初始中间节点的左子树和右子树;
基于所述两个子集,在所述初始中间节点的两侧继续进行划分规则集和生成编译树节点的操作,并不断重复所述划分规则集和生成编译树节点的操作,直至生成叶子节点,再将相应的规则以链表的形式组织在各个叶子节点上,得到所述编译树。
可选地,所述编译树的中间节点的数据结构中包含以下六项:
用于区分当前节点为中间节点还是叶子节点的字段;
用于标识当前节点对应的关键字维度的字段;
当前节点对应的关键字维度的索引值;
当前节点对应的搜索路径的双亲指针;
当前节点对应的继续搜索时的左孩子指针;
当前节点对应的继续搜索时的右孩子指针。
可选地,所述编译树的叶子节点的数据结构中包含以下三项:
用于区分当前节点为中间节点还是叶子节点的字段;
用于互斥地访问当前节点上链接的规则链表的锁字段;
指向规则链表的指针。
可选地,所述编译树的规则链表的数据结构中包含以下两项:
存储规则信息的数据域;
指向包含相同关键字集合的下一个规则的指针。
可选地,所述基于所述编译树查找与所述关键字信息相匹配的规则,包括:
在访问至第一中间节点时,确定所述第一中间节点对应的第一关键字维度和所述第一关键字维度的第一索引值,若所述关键字信息中对应所述第一关键字维度的关键字解析值小于或等于所述第一索引值,则向所述第一中间节点的左子树方向继续查找,否则向所述第一中间节点的右子树方向继续查找;
在访问至目标叶子节点时,获取所述目标叶子节点上的锁字段,互斥地访问所述目标叶子节点上链接的规则链表,查找与所述关键字信息相匹配的规则。
可选地,所述根据查找结果执行相应的网络流量控制操作,包括:
若基于所述编译树未查找到与所述关键字信息相匹配的规则,则根据用户配置的默认规则对所述流量数据包执行相应的规则动作。
第三方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述第一方面所述的网络流量控制方法。
第四方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上所述第一方面所述的网络流量控制方法。
本发明提供的网络流量控制方法、装置、电子设备及存储介质,通过构造二叉树属性的编译树,在编译树的每个中间节点存储一个关键字维度的索引值,并将包含相同关键字集合的不同规则以链表的形式组织在编译树的同一个叶子节点上,基于该编译树进行规则搜索,可以大幅节省CPU资源,提高匹配性能。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的网络流量控制方法的流程示意图;
图2为本发明提供的编译树的组织形式示意图;
图3为本发明提供的两个不同深度的编译树的示意图;
图4为本发明提供的编译树的数据结构示意图;
图5为本发明提供的网络流量控制装置的结构示意图;
图6为本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的网络流量控制方法的流程示意图,如图1所示,该方法包括如下步骤:
步骤100、基于用户配置的流量控制规则集构造编译树;其中,编译树为二叉树,编译树的每个中间节点存储一个关键字维度的索引值,包含相同关键字集合的不同规则以链表的形式组织在编译树的同一个叶子节点上。
步骤101、从检测点提取流量数据包的关键字信息后,基于编译树查找与关键字信息相匹配的规则,并根据查找结果执行相应的网络流量控制操作。
具体地,网络流量控制是指在网络流量的入口、出口、流动过程中对流量数据包(简称流量)进行检测分析并予以控制,其主要包括检测分析、规则、动作三部分。
其中,检测分析是网络流量控制功能的入口,用于检查经过的流量,并提取流量的关键字信息,关键字信息可以包括所属会话五元组信息、所属安全域、安全域流向、媒体访问控制(Media Access Control,MAC)地址、虚拟局域网(Virtual Local Area Network,VLAN)信息、接口信息等,检测点可以设置在网络协议栈二、三、四层各个能检测到网络流量的地方。
流量控制规则集可以由用户手动配置,流量控制规则集中包含多条规则,每条规则可以包括规则关键字和规则动作,规则中可以包括入接口安全域、出接口安全域、流量方向、源网际互连协议(Internet Protocol,IP)地址、目的IP地址、源端口、目的端口、MAC地址、所属VLAN、所属接口等规则关键字,以及命中该规则后的动作,规则动作可以包括丢包、告警、记录日志、允许通过、限制速率、统计计数等。
进行网络流量控制时,可以在网络协议栈的关键位置添加检测点,对经过的流量进行分析,提取出关键字信息,用关键字信息依据配置的规则对流量采取相应的动作。其中,搜索规则的算法对匹配性能有很大影响,以流量控制规则集中包含500条规则为例,如果用链表存储规则并进行匹配,那么每次都需要从第一条开始逐个匹配,平均匹配250次,而如果用树形结构(比如平衡二叉树)存储500条规则,树的深度为9,每次最多需要匹配9次,所以一个好的搜索规则的算法能够大幅的提高匹配性能。
基于此,本发明提出基于用户配置的流量控制规则集构造编译树,然后基于该编译树搜索规则。由于编译树为树形结构,树的深度相对较优,可以大幅减少关键字的匹配次数,从而大幅节省CPU资源。
本发明所构造的编译树为二叉树,二叉树是一棵由一个根节点和两个互不相交的称为左子树和右子树的非空树组成,左子树和右子树也满足二叉树的性质,二叉树是一种有序树。
图2为本发明提供的编译树的组织形式示意图,如图2所示,编译树包括中间节点、叶子节点和链接在叶子节点上的规则链表,图中最上方的中间节点即编译树的根节点,在本发明中该根节点也称为中间节点,或者称为初始中间节点。
其中,编译树的每个中间节点存储一个关键字维度的索引值。关键字维度指的是流量控制规则集中规则关键字的维度,例如:规则关键字包括入接口安全域、出接口安全域、流量方向、源IP地址、目的IP地址、源端口、目的端口、MAC地址、所属VLAN和所属接口,那么,入接口安全域可以作为一个关键字维度,出接口安全域可以作为一个关键字维度,以此类推,共有10个关键字维度。编译树的每个中间节点可以仅存储一个关键字维度的索引值,比如某一个中间节点仅存储源IP地址这一个关键字维度的索引值,索引值用于规则搜索时确定继续搜索的方向。每个中间节点只存储多维数据中的一维数据,规则搜索时也只需要比较规则关键字中的一个,可以进一步减少规则关键字的匹配次数,从而节省CPU资源。
本发明所构造的编译树中,包含相同关键字集合的不同规则可以以链表的形式组织在编译树的同一个叶子节点上。其中,一条规则中所包含的所有规则关键字可视为一个关键字集合。通过将配置的规则直接存储在编译树的叶子节点指向的链表中,不需要额外再存储规则集,可以有效节省内存资源。
构造编译树之后,便可以基于编译树,对从检测点提取的流量数据包的关键字信息进行规则匹配,并根据匹配到的规则执行相应的动作,例如:丢包、告警、记录日志、允许通过、限制速率、统计计数等。
可选地,根据查找结果执行相应的网络流量控制操作,包括:
若基于编译树未查找到与关键字信息相匹配的规则,则根据用户配置的默认规则对流量数据包执行相应的规则动作。
具体地,用户可以手动配置默认规则,默认规则自动位于所有非默认规则的后面,默认规则有且必须只有一条。默认规则不参与编译树的生成,它作为其他规则匹配失败后的默认必中规则,执行其上配置的默认动作。默认规则可配置的动作范围与普通规则的相同,例如:可以包括丢包、告警、记录日志、允许通过、限制速率、统计计数等。
从检测点提取的信息组织成匹配关键字,可用于在流量控制规则集中查找与该关键字匹配的规则,如果找到与关键字匹配的规则,就执行该规则指定的动作;如果没有找到匹配的规则,就执行默认规则的默认动作。默认规则不参与编译树的生成,可减少编译树构造过程的资源消耗。
本发明提供的网络流量控制方法,通过构造二叉树属性的编译树,在编译树的每个中间节点存储一个关键字维度的索引值,并将包含相同关键字集合的不同规则以链表的形式组织在编译树的同一个叶子节点上,基于该编译树进行规则搜索,可以大幅节省CPU资源,提高匹配性能。
可选地,基于用户配置的流量控制规则集构造编译树,包括:
遍历流量控制规则集中的关键字维度,选择对应关键字集合的数量最多的关键字维度作为初始分割维度;
以流量控制规则集中对应初始分割维度的所有关键字解析值的中位数作为初始分界点,将流量控制规则集划分为两个子集,并基于初始分割维度和初始分界点生成编译树的初始中间节点;其中,两个子集分别用于生成初始中间节点的左子树和右子树;
基于两个子集,在初始中间节点的两侧继续进行划分规则集和生成编译树节点的操作,并不断重复划分规则集和生成编译树节点的操作,直至生成叶子节点,再将相应的规则以链表的形式组织在各个叶子节点上,得到编译树。
具体地,流量控制规则集中每条规则的规则关键字都可以根据其内容解析为相应的数值,本发明中称为关键字解析值。例如:安全域名称可以被解析为安全域优先级,流量的入方向和出方向可以被解析为预定义的两个数值,IP地址可以被解析为无符号32位值,端口可以用32位整数存储,MAC可以用64位整数存储,VLAN字符串可以解析为VLAN标识(Identifier,ID),接口可以被解析为接口ID,这样每条规则的关键字集合就可以被解析为一个整数集合,集合中每个值对应一个规则关键字。
本发明中,构造编译树的核心思想是:把目标集(即流量控制规则集)看作是多维空间的一个点集,多维空间的每个点对应流量控制规则集中的一条规则(关键字相同的不同规则会在各个维度投影为一个相同的点,即包含相同关键字集合的多条规则在多维空间中视为同一个点),每个点的维度数就是其对应规则关键字的个数,遍历每一个维度,统计所有规则在各个维度内投影点的个数,选出投影点个数最多的维度作为分割维度,以该分割维度内居于中间位置的点值作为分界点,将所有点分为两部分,该分割维度内的点值小于或等于该分界点的点在左侧,大于该分界点的点在右侧,这样就将流量控制规则集分为了两部分,再在两个分集空间继续进行相同的统计划分操作,如此往复,直至每个维度内投影点数均为1。如此可以保证生成的编译树较优,且构造过程效率和准确度较高。
具体构造编译树时,可以首先遍历流量控制规则集中的关键字维度,选择对应关键字集合的数量最多的关键字维度作为初始分割维度,然后,以流量控制规则集中对应初始分割维度的所有关键字解析值的中位数作为初始分界点,将流量控制规则集划分为两个子集,并基于初始分割维度和初始分界点生成编译树的初始中间节点(即根节点),该初始中间节点存储该初始分割维度的索引值,该索引值即该初始分界点的数值。对应初始分割维度的关键字解析值小于或等于该索引值的所有规则组成的一个子集用于继续生成初始中间节点的左子树,对应初始分割维度的关键字解析值大于该索引值的所有规则组成的一个子集用于继续生成初始中间节点的右子树。
之后,可以以这两个子集为基础分别继续进行划分规则集和生成编译树节点的操作,例如:遍历某一个子集中的关键字维度,选择对应关键字集合的数量最多的关键字维度作为分割维度,然后,以该子集中对应该分割维度的所有关键字解析值的中位数作为分界点,将该子集进一步划分为两个更小的子集,并基于该分割维度和该分界点生成编译树的一个中间节点。如此不断重复划分规则集和生成编译树节点的操作,直至生成叶子节点,便可以将相应的规则以链表的形式组织在各个叶子节点上,最终得到编译树。
可选地,在生成多个编译树的情况下,可以根据编译树的深度进行编译树的选取,比如可以选择深度最小的编译树作为规则匹配的编译树。
具体来说,在一些实施例中,构造编译树时可能会生成不止一个编译树,因此可以在生成编译树后,进一步统计各编译树中中间节点的最大深度,将其作为编译树的匹配成本,最大深度越小表明匹配成本越小,相同深度的编译树匹配成本相同(若所有编译树的匹配成本相同则可以任选一个编译树作为规则匹配的编译树,比如可以选第1个)。
在多个编译树有不同的匹配成本时,可以选取匹配成本最小(即树的深度最小或者树的中间节点的最大深度最小)的编译树为最优树,将其输出,作为规则匹配的编译树。
图3为本发明提供的两个不同深度的编译树的示意图,如图3所示(图中叶子节点和匹配规则未示出),图中左边的编译树其中间节点的最大深度为6,因此可认为其匹配成本=6,而右边的编译树其中间节点的最大深度为5,可认为其匹配成本=5,两个编译树的中间节点数相同,但树的深度不同,造成匹配成本不同。右边的编译树匹配成本小,所以该编译树更优,通过这种方法可以选择出最接近平衡二叉树的最优树。
可选地,编译树的中间节点的数据结构中可以包含以下六项:
用于区分当前节点为中间节点还是叶子节点的字段;
用于标识当前节点对应的关键字维度的字段;
当前节点对应的关键字维度的索引值;
当前节点对应的搜索路径的双亲指针;
当前节点对应的继续搜索时的左孩子指针;
当前节点对应的继续搜索时的右孩子指针。
具体地,编译树的核心数据结构包括中间节点、叶子节点、规则链表,其中中间节点的数据结构中可以包含以下六项:
(1)用于区分当前节点为中间节点还是叶子节点的字段。
在一些实施例中,可以使用flag(标志)字段来区分当前节点是中间节点还是叶子节点。
(2)用于标识当前节点对应的关键字维度的字段。
在一些实施例中,可以使用dimension(维度)字段来标识当前用于分割空间的维度,也即当前节点对应的关键字维度。
(3)当前节点对应的关键字维度的索引值。
在一些实施例中,可以用value字段表示,该索引值也即用于分割空间的相应维度的点投影值,或者称为分割值。
(4)当前节点对应的搜索路径的双亲指针(parent)。
(5)当前节点对应的继续搜索时的左孩子指针(left)。
(6)当前节点对应的继续搜索时的右孩子指针(right)。
可选地,编译树的叶子节点的数据结构中可以包含以下三项:
(1)用于区分当前节点为中间节点还是叶子节点的字段。
例如,可以使用flag(标志)字段来区分当前节点是中间节点还是叶子节点。因为中间节点和叶子节点可能共有flag字段,可以用通用结构指针依据flag字段的值,将其强制转换为中间节点或叶子节点的指针,进而访问该节点。
(2)用于互斥地访问当前节点上链接的规则链表的锁(lock)字段。
因为每次访问匹配的规则可能需要修改规则上的字段,叶子节点的lock可用于互斥的访问其上链接的规则链表。
(3)指向规则链表的指针。在一些实施例中,可以用value字段表示。
可选地,编译树的规则链表的数据结构中可以包含以下两项:
(1)存储规则信息的数据(data)域。
(2)指向包含相同关键字集合的下一个规则的指针。在一些实施例中,可以用next字段表示。
图4为本发明提供的编译树的数据结构示意图,如图4所示,编译树的核心数据结构包括中间节点、叶子节点和规则链表,中间节点的数据结构中包含标志字段、维度字段、索引值、双亲指针、左孩子指针和右孩子指针6项,叶子节点的数据结构中包含标志字段、锁字段和指向规则链表的指针3项,规则链表数据结构中包含数据域和下一个规则的指针2项。
可选地,基于编译树查找与关键字信息相匹配的规则,包括:
在访问至第一中间节点时,确定第一中间节点对应的第一关键字维度和第一关键字维度的第一索引值,若关键字信息中对应第一关键字维度的关键字解析值小于或等于第一索引值,则向第一中间节点的左子树方向继续查找,否则向第一中间节点的右子树方向继续查找;
在访问至目标叶子节点时,获取目标叶子节点上的锁字段,互斥地访问目标叶子节点上链接的规则链表,查找与关键字信息相匹配的规则。
具体地,第一中间节点可以是搜索路径上的任一中间节点,目标叶子节点指搜索路径上最终访问的叶子节点。
中间节点和叶子结点上的匹配过程不需要锁的操作,因为整个匹配过程只是与编译树上的参数进行比较,不修改其值。由此可以实现多个匹配过程的并发进行,极大地提高了匹配过程的吞吐率。
以具体应用的例子来说明匹配过程:首先,通过编译树节点的flag字段,可以分辨出是中间节点还是叶子节点。如果是中间节点,取出分割的维度(dimension)和分割值(value),将待匹配关键字信息的对应维度的值取出,并与分割值比较,如果小于或等于分割值,那么目标规则在左子树方向,如果大于分割值,那么目标规则在右子树方向。向着目标规则所在的方向继续匹配,直到某个节点的flag字段指示该节点为叶子节点,此时说明已经临近终端的规则链表,获取叶子结点上的锁,互斥的访问规则链表。将叶子节点的value取出,value存储的是匹配的规则链表,将待匹配关键字信息与该链表上的规则匹配。如果匹配则成功,依据该规则配置的动作执行,并释放持有的锁,将执行结果返回;如果没有找到匹配的规则,则不需要再与其他规则匹配,释放持有的锁,直接使用默认规则,执行默认规则的动作,并将执行结果返回。
在一些实施例中,叶子节点上链接有多条规则时,可以直接将匹配到的叶子节点上链接的第1条规则作为匹配的规则。
在一些实施例中,可以设置每条规则命中的最大次数,超过该最大次数后匹配到同一叶子节点下的下一条规则。例如:可以设置每条规则最多命中10次,叶子节点上链接有多条规则时,若第1条规则已命中10次,而第2条规则未满10次,则本次匹配可以将第2条规则作为匹配的规则。通过这种方式可实现流量管控。
在一些实施例中,如果用户修改了配置的规则,可能是增加、删除或修改规则。那么,可以将用户修改后的整个规则集合作为输入,经过编译(构造)过程,再生成一颗新编译树。在用户修改配置的规则到新编译树生成之前的这期间,关键字匹配可以使用原来的编译树。新编译树生成之后,后续的流量规则匹配在新的编译树上进行,在一段可配置的延时之后,可以将旧的编译树所占用的空间释放,以便回收内存资源。
下面对本发明提供的网络流量控制装置进行描述,下文描述的网络流量控制装置与上文描述的网络流量控制方法可相互对应参照。
图5为本发明提供的网络流量控制装置的结构示意图,如图5所示,该装置包括:
编译树构造模块500,用于基于用户配置的流量控制规则集构造编译树;其中,编译树为二叉树,编译树的每个中间节点存储一个关键字维度的索引值,包含相同关键字集合的不同规则以链表的形式组织在编译树的同一个叶子节点上;
规则匹配模块510,用于从检测点提取流量数据包的关键字信息后,基于编译树查找与关键字信息相匹配的规则,并根据查找结果执行相应的网络流量控制操作。
可选地,基于用户配置的流量控制规则集构造编译树,包括:
遍历流量控制规则集中的关键字维度,选择对应关键字集合的数量最多的关键字维度作为初始分割维度;
以流量控制规则集中对应初始分割维度的所有关键字解析值的中位数作为初始分界点,将流量控制规则集划分为两个子集,并基于初始分割维度和初始分界点生成编译树的初始中间节点;其中,两个子集分别用于生成初始中间节点的左子树和右子树;
基于两个子集,在初始中间节点的两侧继续进行划分规则集和生成编译树节点的操作,并不断重复划分规则集和生成编译树节点的操作,直至生成叶子节点,再将相应的规则以链表的形式组织在各个叶子节点上,得到编译树。
可选地,编译树的中间节点的数据结构中包含以下六项:
用于区分当前节点为中间节点还是叶子节点的字段;
用于标识当前节点对应的关键字维度的字段;
当前节点对应的关键字维度的索引值;
当前节点对应的搜索路径的双亲指针;
当前节点对应的继续搜索时的左孩子指针;
当前节点对应的继续搜索时的右孩子指针。
可选地,编译树的叶子节点的数据结构中包含以下三项:
用于区分当前节点为中间节点还是叶子节点的字段;
用于互斥地访问当前节点上链接的规则链表的锁字段;
指向规则链表的指针。
可选地,编译树的规则链表的数据结构中包含以下两项:
存储规则信息的数据域;
指向包含相同关键字集合的下一个规则的指针。
可选地,基于编译树查找与关键字信息相匹配的规则,包括:
在访问至第一中间节点时,确定第一中间节点对应的第一关键字维度和第一关键字维度的第一索引值,若关键字信息中对应第一关键字维度的关键字解析值小于或等于第一索引值,则向第一中间节点的左子树方向继续查找,否则向第一中间节点的右子树方向继续查找;
在访问至目标叶子节点时,获取目标叶子节点上的锁字段,互斥地访问目标叶子节点上链接的规则链表,查找与关键字信息相匹配的规则。
可选地,根据查找结果执行相应的网络流量控制操作,包括:
若基于编译树未查找到与关键字信息相匹配的规则,则根据用户配置的默认规则对流量数据包执行相应的规则动作。
在此需要说明的是,本发明提供的上述装置,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
图6为本发明提供的电子设备的结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行上述各实施例提供的网络流量控制方法,例如:基于用户配置的流量控制规则集构造编译树;其中,编译树为二叉树,编译树的每个中间节点存储一个关键字维度的索引值,包含相同关键字集合的不同规则以链表的形式组织在编译树的同一个叶子节点上;从检测点提取流量数据包的关键字信息后,基于编译树查找与关键字信息相匹配的规则,并根据查找结果执行相应的网络流量控制操作。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在此需要说明的是,本发明提供的电子设备,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
另一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可实现上述各实施例提供的网络流量控制方法,例如:基于用户配置的流量控制规则集构造编译树;其中,编译树为二叉树,编译树的每个中间节点存储一个关键字维度的索引值,包含相同关键字集合的不同规则以链表的形式组织在编译树的同一个叶子节点上;从检测点提取流量数据包的关键字信息后,基于编译树查找与关键字信息相匹配的规则,并根据查找结果执行相应的网络流量控制操作。
在此需要说明的是,本发明提供的非暂态计算机可读存储介质,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种网络流量控制方法,其特征在于,包括:
基于用户配置的流量控制规则集构造编译树;其中,所述编译树为二叉树,所述编译树的每个中间节点存储一个关键字维度的索引值,包含相同关键字集合的不同规则以链表的形式组织在所述编译树的同一个叶子节点上;
从检测点提取流量数据包的关键字信息后,基于所述编译树查找与所述关键字信息相匹配的规则,并根据查找结果执行相应的网络流量控制操作;
所述基于用户配置的流量控制规则集构造编译树,包括:
遍历所述流量控制规则集中的关键字维度,选择对应关键字集合的数量最多的关键字维度作为初始分割维度;
以所述流量控制规则集中对应所述初始分割维度的所有关键字解析值的中位数作为初始分界点,将所述流量控制规则集划分为两个子集,并基于所述初始分割维度和所述初始分界点生成所述编译树的初始中间节点;所述初始中间节点存储所述初始分割维度的索引值,所述初始分割维度的索引值为所述初始分界点的数值;所述两个子集中,对应所述初始分割维度的关键字解析值小于或等于所述初始分割维度的索引值的所有规则组成的一个子集用于继续生成所述初始中间节点的左子树,对应所述初始分割维度的关键字解析值大于所述初始分割维度的索引值的所有规则组成的一个子集用于继续生成所述初始中间节点的右子树;
基于所述两个子集,在所述初始中间节点的两侧继续进行划分规则集和生成编译树节点的操作,并不断重复所述划分规则集和生成编译树节点的操作,直至生成叶子节点,再将相应的规则以链表的形式组织在各个叶子节点上,得到所述编译树。
2.根据权利要求1所述的网络流量控制方法,其特征在于,所述编译树的中间节点的数据结构中包含以下六项:
用于区分当前节点为中间节点还是叶子节点的字段;
用于标识当前节点对应的关键字维度的字段;
当前节点对应的关键字维度的索引值;
当前节点对应的搜索路径的双亲指针;
当前节点对应的继续搜索时的左孩子指针;
当前节点对应的继续搜索时的右孩子指针。
3.根据权利要求1所述的网络流量控制方法,其特征在于,所述编译树的叶子节点的数据结构中包含以下三项:
用于区分当前节点为中间节点还是叶子节点的字段;
用于互斥地访问当前节点上链接的规则链表的锁字段;
指向规则链表的指针。
4.根据权利要求1所述的网络流量控制方法,其特征在于,所述编译树的规则链表的数据结构中包含以下两项:
存储规则信息的数据域;
指向包含相同关键字集合的下一个规则的指针。
5.根据权利要求1至4任一项所述的网络流量控制方法,其特征在于,所述基于所述编译树查找与所述关键字信息相匹配的规则,包括:
在访问至第一中间节点时,确定所述第一中间节点对应的第一关键字维度和所述第一关键字维度的第一索引值,若所述关键字信息中对应所述第一关键字维度的关键字解析值小于或等于所述第一索引值,则向所述第一中间节点的左子树方向继续查找,否则向所述第一中间节点的右子树方向继续查找;
在访问至目标叶子节点时,获取所述目标叶子节点上的锁字段,互斥地访问所述目标叶子节点上链接的规则链表,查找与所述关键字信息相匹配的规则。
6.根据权利要求1所述的网络流量控制方法,其特征在于,所述根据查找结果执行相应的网络流量控制操作,包括:
若基于所述编译树未查找到与所述关键字信息相匹配的规则,则根据用户配置的默认规则对所述流量数据包执行相应的规则动作。
7.一种网络流量控制装置,其特征在于,包括:
编译树构造模块,用于基于用户配置的流量控制规则集构造编译树;其中,所述编译树为二叉树,所述编译树的每个中间节点存储一个关键字维度的索引值,包含相同关键字集合的不同规则以链表的形式组织在所述编译树的同一个叶子节点上;
规则匹配模块,用于从检测点提取流量数据包的关键字信息后,基于所述编译树查找与所述关键字信息相匹配的规则,并根据查找结果执行相应的网络流量控制操作;
所述基于用户配置的流量控制规则集构造编译树,包括:
遍历所述流量控制规则集中的关键字维度,选择对应关键字集合的数量最多的关键字维度作为初始分割维度;
以所述流量控制规则集中对应所述初始分割维度的所有关键字解析值的中位数作为初始分界点,将所述流量控制规则集划分为两个子集,并基于所述初始分割维度和所述初始分界点生成所述编译树的初始中间节点;所述初始中间节点存储所述初始分割维度的索引值,所述初始分割维度的索引值为所述初始分界点的数值;所述两个子集中,对应所述初始分割维度的关键字解析值小于或等于所述初始分割维度的索引值的所有规则组成的一个子集用于继续生成所述初始中间节点的左子树,对应所述初始分割维度的关键字解析值大于所述初始分割维度的索引值的所有规则组成的一个子集用于继续生成所述初始中间节点的右子树;
基于所述两个子集,在所述初始中间节点的两侧继续进行划分规则集和生成编译树节点的操作,并不断重复所述划分规则集和生成编译树节点的操作,直至生成叶子节点,再将相应的规则以链表的形式组织在各个叶子节点上,得到所述编译树。
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述网络流量控制方法。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述网络流量控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310914520.2A CN116633865B (zh) | 2023-07-25 | 2023-07-25 | 网络流量控制方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310914520.2A CN116633865B (zh) | 2023-07-25 | 2023-07-25 | 网络流量控制方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116633865A CN116633865A (zh) | 2023-08-22 |
CN116633865B true CN116633865B (zh) | 2023-11-07 |
Family
ID=87603088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310914520.2A Active CN116633865B (zh) | 2023-07-25 | 2023-07-25 | 网络流量控制方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116633865B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102487374A (zh) * | 2010-12-01 | 2012-06-06 | 中兴通讯股份有限公司 | 一种访问控制列表实现方法及装置 |
CN109194536A (zh) * | 2018-07-27 | 2019-01-11 | 北京奇虎科技有限公司 | 一种网络流量过滤方法、装置及终端 |
CN109639694A (zh) * | 2018-12-20 | 2019-04-16 | 国云科技股份有限公司 | 一种基于规则树检索的防火墙数据包匹配算法 |
WO2019241926A1 (zh) * | 2018-06-20 | 2019-12-26 | 华为技术有限公司 | 访问控制列表的管理方法及装置 |
WO2020107484A1 (zh) * | 2018-11-30 | 2020-06-04 | 华为技术有限公司 | 一种acl的规则分类方法、查找方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7366728B2 (en) * | 2004-04-27 | 2008-04-29 | International Business Machines Corporation | System for compressing a search tree structure used in rule classification |
-
2023
- 2023-07-25 CN CN202310914520.2A patent/CN116633865B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102487374A (zh) * | 2010-12-01 | 2012-06-06 | 中兴通讯股份有限公司 | 一种访问控制列表实现方法及装置 |
WO2019241926A1 (zh) * | 2018-06-20 | 2019-12-26 | 华为技术有限公司 | 访问控制列表的管理方法及装置 |
CN109194536A (zh) * | 2018-07-27 | 2019-01-11 | 北京奇虎科技有限公司 | 一种网络流量过滤方法、装置及终端 |
WO2020107484A1 (zh) * | 2018-11-30 | 2020-06-04 | 华为技术有限公司 | 一种acl的规则分类方法、查找方法和装置 |
CN109639694A (zh) * | 2018-12-20 | 2019-04-16 | 国云科技股份有限公司 | 一种基于规则树检索的防火墙数据包匹配算法 |
Also Published As
Publication number | Publication date |
---|---|
CN116633865A (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Basat et al. | Designing heavy-hitter detection algorithms for programmable switches | |
US8914320B2 (en) | Graph generation method for graph-based search | |
Patil et al. | S-DDoS: Apache spark based real-time DDoS detection system | |
CN106062740B (zh) | 生成多个索引数据字段的方法和装置 | |
Luo et al. | Acceleration of decision tree searching for IP traffic classification | |
US7412431B2 (en) | Method for managing multi-field classification rules relating to ingress | |
US20180083921A1 (en) | String search and matching for gate functionality | |
Elekar | Combination of data mining techniques for intrusion detection system | |
Bando et al. | Range hash for regular expression pre-filtering | |
US10944724B2 (en) | Accelerating computer network policy search | |
Aldwairi et al. | n‐Grams exclusion and inclusion filter for intrusion detection in Internet of Energy big data systems | |
Weng et al. | Deep packet pre-filtering and finite state encoding for adaptive intrusion detection system | |
CN116633865B (zh) | 网络流量控制方法、装置、电子设备及存储介质 | |
Bruschi et al. | FlowFight: High performance–low memory top-k spreader detection | |
Liu et al. | A prefiltering approach to regular expression matching for network security systems | |
Li et al. | A Lightweight Estimation Algorithm To Auto Configure Snort Fast Pattern Matcher | |
KR101802443B1 (ko) | 컴퓨터 수행 가능한 침입탐지방법, 시스템 및 컴퓨터 판독 가능한 기록매체 | |
US11184282B1 (en) | Packet forwarding in a network device | |
CN114465771B (zh) | 基于防火墙流量自动推荐安全策略的方法、装置及防火墙 | |
CN114124575B (zh) | 基于态势感知的防火墙acl自动生成方法和存储介质 | |
Stimpfling et al. | Optimal packet classification applicable tothe OpenFlow context | |
Pan et al. | Misconfiguration-Free Compositional SDN for Cloud Networks | |
CN116545772B (zh) | 轻量级物联网流量的协议识别方法、装置及设备 | |
Subramanian et al. | Bitmaps and bitmasks: Efficient tools to Compress deterministic automata | |
McHale | Flow Table Management in Programmable Network Data Planes |
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 |