CN112995362B - 一种数据包和协议规则的匹配方法和装置 - Google Patents
一种数据包和协议规则的匹配方法和装置 Download PDFInfo
- Publication number
- CN112995362B CN112995362B CN202110507983.8A CN202110507983A CN112995362B CN 112995362 B CN112995362 B CN 112995362B CN 202110507983 A CN202110507983 A CN 202110507983A CN 112995362 B CN112995362 B CN 112995362B
- Authority
- CN
- China
- Prior art keywords
- rule
- address
- protocol
- destination
- source
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/255—Maintenance or indexing of mapping tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2557—Translation policies or rules
Abstract
本发明涉及一种数据包和协议规则的匹配方法和装置,该方法包括:对内存进行初始化,得到预设数量的规则分组;获取待与数据包匹配的协议规则;针对每一个协议规则,均执行:根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组;判断该协议规则和该规则分组中的每一个协议规则是否相同,如果不相同,则将该协议规则存储到该规则分组中;针对每一个数据包,根据该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定目标规则分组;针对每一个数据包,遍历目标规则分组存储的每一个协议规则,将当前协议规则与该数据包进行匹配。本发明的方案能够降低加载协议规则的时间。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及数据包和协议规则的匹配方法和装置。
背景技术
在网络安全防护中,通过深度解析协议功能段,向用户实时展示网络中对设备发起的各种请求,其中,用户可以设置相关协议规则来与发起请求的数据包相匹配,以实现忽略或者实时告警某种请求的发生。上述过程通常需要面对各种协议规则做出增加、删除的处理,由于规则数量可能会较多,这就会导致程序运行效率的问题。
相关技术中,在程序启动时,会从存储协议规则的文件中加载协议规则并进行解析处理,而当添加、删除或者修改协议规则时,需要程序重新加载来实现。因此,这种方式耗费的时间较长,影响用户体验。
因此,针对以上不足,需要提供一种数据包和协议规则的匹配方法和装置。
发明内容
本发明要解决的技术问题在于加载协议规则的时间较长,针对现有技术中的缺陷,提供一种数据包和协议规则的匹配方法和装置。
为了解决上述技术问题,本发明提供了一种数据包和协议规则的匹配方法,包括:
对用于存储协议规则的内存进行初始化,得到预设数量的规则分组;
获取待与数据包匹配的协议规则;其中,所述数据包和所述协议规则均携带有源ip地址、目的ip地址、源端口地址和目的端口地址;
针对每一个协议规则,均执行:根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组;判断该协议规则和存储该协议规则的规则分组中已存储的每一个协议规则是否相同,如果不相同,则将该协议规则存储到该规则分组中,否则执行对下一个协议规则的处理;
针对每一个数据包,根据该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包对应的目标规则分组;
针对每一个数据包,遍历所述目标规则分组存储的每一个协议规则,将当前协议规则与该数据包进行匹配;其中,当前协议规则与该数据包的匹配条件是二者的源ip地址、目的ip地址、源端口地址和目的端口地址均相同。
在一种可能的实现方式中,所述根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组,包括:
获取针对源ip地址、目的ip地址、源端口地址和目的端口地址的分组规则;
根据所述分组规则,构建源ip地址、目的ip地址、源端口地址和目的端口地址的映射关系表;其中,所述映射关系表包括:与源ip地址对应的至少一个第一标识号、与目的ip地址对应的至少一个第二标识号、与源端口地址对应的至少一个第三标识号以及与目的端口地址对应的至少一个第四标识号;
将与该协议规则对应的至少一个所述第一标识号、至少一个所述第二标识号、至少一个所述第三标识号和至少一个所述第四标识号输入到预先设置好的存储算法中,输出得到用于表征存储该协议规则的规则分组的标识信息,以确定存储该协议规则的规则分组。
在一种可能的实现方式中,所述根据该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包对应的目标规则分组,包括:
获取针对源ip地址、目的ip地址、源端口地址和目的端口地址的分组规则;
根据所述分组规则,构建源ip地址、目的ip地址、源端口地址和目的端口地址的映射关系表;其中,所述映射关系表包括:与源ip地址对应的至少一个第一标识号、与目的ip地址对应的至少一个第二标识号、与源端口地址对应的至少一个第三标识号以及与目的端口地址对应的至少一个第四标识号;
将与该数据包对应的至少一个所述第一标识号、至少一个所述第二标识号、至少一个所述第三标识号和至少一个所述第四标识号输入到预先设置好的存储算法中,输出得到目标标识信息,以确定与该数据包对应的目标规则分组;其中,所述目标标识信息用于表征与该数据包对应的目标规则分组。
在一种可能的实现方式中,所述对用于存储协议规则的内存进行初始化,得到预设数量的规则分组,包括:
根据预设的协议规则类型,对用于存储协议规则的内存进行初始化,得到预设数量的规则分组;其中,每一个规则分组对应至少一个协议规则类型,不同的规则分组所对应的协议规则类型不同。
在一种可能的实现方式中,所述根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组,包括:
构建协议规则类型与源ip地址、目的ip地址、源端口地址、目的端口地址的对应关系;
根据所述对应关系以及该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定该协议规则的类型;
根据确定出的该协议规则的类型,确定存储该协议规则的规则分组。
在一种可能的实现方式中,所述根据该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包对应的目标规则分组,包括:
构建协议规则类型与源ip地址、目的ip地址、源端口地址、目的端口地址的对应关系;
根据所述对应关系以及该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包能够匹配的协议规则的类型;
根据确定出的协议规则的类型,确定与该数据包对应的目标规则分组。
在一种可能的实现方式中,每一个所述规则分组均包括多个相关联的存储节点,每一个存储节点用于存储一个所述协议规则;其中,在同一个所述规则分组中,一个存储节点包括该存储节点和与该存储节点相关联的下一个存储节点的地址信息;
所述将该协议规则存储到该规则分组中,包括:
将该协议规则存储到该规则分组中的一个存储节点中;其中,下一个存储到该规则分组的协议规则是存储到与该存储节点相关联的下一个存储节点中。
本发明还提供了一种数据包和协议规则的匹配装置,包括:
初始化模块,用于对用于存储协议规则的内存进行初始化,得到预设数量的规则分组;
获取模块,用于获取待与数据包匹配的协议规则;其中,所述数据包和所述协议规则均携带有源ip地址、目的ip地址、源端口地址和目的端口地址;
第一执行模块,用于针对每一个协议规则,均执行:根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组;判断该协议规则和存储该协议规则的规则分组中已存储的每一个协议规则是否相同,如果不相同,则将该协议规则存储到该规则分组中,否则执行对下一个协议规则的处理;
第二执行模块,用于针对每一个数据包,根据该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包对应的目标规则分组;
匹配模块,用于针对每一个数据包,遍历所述目标规则分组存储的每一个协议规则,将当前协议规则与该数据包进行匹配;其中,当前协议规则与该数据包的匹配条件是二者的源ip地址、目的ip地址、源端口地址和目的端口地址均相同。
本发明还提供了一种数据包和协议规则的匹配装置,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行如上述所述的方法。
本发明还提供了一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行如上述所述的方法。
实施本发明的数据包和协议规则的匹配方法和装置,具有以下有益效果:
本发明所提供的技术方案,在对获取的协议规则进行加载存储时,将协议规则存储至经初始化后得到的规则分组中,当对后续的协议规则继续进行加载存储时,如果该协议规则和存储该协议规则的规则分组中已存储的每一个协议规则不相同,则将该协议规则存储到该规则分组中,否则执行对下一个协议规则的处理,如此避免了现有技术中采用的释放内存再加载存储的方式,即如果规则分组中已经有了和新加载的协议规则相同的协议规则,则将该协议规则忽略,继续执行下一个协议规则的加载过程,从而有效降低加载过程所耗费的时间。
附图说明
图1是本发明一个实施例提供的数据包和协议规则的匹配方法的流程图;
图2是本发明一个实施例提供的针对源ip地址、目的ip地址、源端口地址和目的端口地址的分组规则和根据分组规则构建的映射关系表的示意图;
图3是本发明一个实施例提供的对内存初始化的示意图;
图4是本发明一个实施例提供的数据包和协议规则的匹配装置的示意图;
图5是本发明一个实施例提供的数据包和协议规则的匹配装置的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出根据一个实施例的数据包和协议规则的匹配方法的流程图。可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。
参见图1,该方法包括:
步骤101:对用于存储协议规则的内存进行初始化,得到预设数量的规则分组。
在一些实施方式中,可以根据用户输入的规则分组的数量进行初始化,也可以根据用户输入的协议规则类型的数量和规则分组的数量相结合来进行初始化。在前一种方案中,初始化的结果是将用于存储协议规则的内存进行分割,而得到预设数量的规则分组;在后一种方案中,初始化的结果是所得到的预设数量的规则分组中的每一个规则分组均对应至少一个协议规则类型,不同的规则分组所对应的协议规则类型不同,如此可以方便后续对支持不同协议的协议规则进行存储。
步骤102:获取待与数据包匹配的协议规则。
在步骤102中,数据包和协议规则均携带有源ip地址、目的ip地址、源端口地址和目的端口地址。在该方法的执行主体对数据包和协议规则进行加载的过程中,通过对数据包和协议规则的解析可以得到二者各自携带的源ip地址、目的ip地址、源端口地址和目的端口地址。其中,协议规则可以是预先在该方法的执行主体中设置好的,需要通过加载协议规则,以使协议规则存储到内存中,才能与该方法的执行主体接收到的数据包进行匹配。具体地,协议规则与数据包的匹配条件是二者的源ip地址、目的ip地址、源端口地址和目的端口地址均相同,如果有任一地址不同,则代表协议规则与数据包的匹配失败。
步骤103:针对每一个协议规则,均执行:根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组;判断该协议规则和存储该协议规则的规则分组中已存储的每一个协议规则是否相同,如果不相同,则将该协议规则存储到该规则分组中,否则执行对下一个协议规则的处理。
在相关技术中,该方法的执行主体是将多个协议规则存储在了连续的内存中,但是这种方案在执行主体运行的过程中,如果要想实现增加和删除部分协议规则,需要将该协议规则所存储的内存位置之后的内存先释放然后再加载存储,这种方式耗费的时间较长。具体而言,程序先将通过人机交互获取的要添加的规则写到存储协议规则的文件中,然后程序先释放现有的规则,再重新加载协议规则文件中的规则。此时,如果协议规则的数量较多,这就会导致耗费的时间较长,进而会导致协议规则不能实时生效。
为了解决上述技术问题,通过确定存储协议规则的规则分组,在对新的协议规则加载时,可以判断该协议规则和存储该协议规则的规则分组中已存储的每一个协议规则是否相同,如果不相同,则将该协议规则存储到该规则分组中,否则执行对下一个协议规则的处理(即忽略当前协议规则的处理),如此避免了释放内存再加载存储的方式,即如果规则分组中已经有了和新加载的协议规则相同的协议规则,则将该协议规则忽略,继续执行下一个协议规则的加载过程,从而有效降低加载过程所耗费的时间。
在一些实施方式中,步骤103中的根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组,具体包括如下步骤:
获取针对源ip地址、目的ip地址、源端口地址和目的端口地址的分组规则;
根据所述分组规则,构建源ip地址、目的ip地址、源端口地址和目的端口地址的映射关系表;其中,所述映射关系表包括:与源ip地址对应的至少一个第一标识号、与目的ip地址对应的至少一个第二标识号、与源端口地址对应的至少一个第三标识号以及与目的端口地址对应的至少一个第四标识号;
将与该协议规则对应的至少一个所述第一标识号、至少一个所述第二标识号、至少一个所述第三标识号和至少一个所述第四标识号输入到预先设置好的存储算法中,输出得到用于表征存储该协议规则的规则分组的标识信息,以确定存储该协议规则的规则分组。
举例来说,请参见图2,分组规则为:将源ip地址为192.168.10.0-192.168.10.50划分为一组,将源ip地址为192.168.10.51-192.168.10.100划分为一组;在根据源ip地址所划分的每一组的基础上,将目标源ip地址为192.168.10.0-192.168.10.50划分为一组,将目的ip地址为192.168.10.51-192.168.10.100划分为一组;在根据目的ip地址所划分的每一组的基础上,将源端口地址为0-200划分为一组,源端口地址为201-400划分为一组,源端口地址为401-800划分为一组;在根据源端口地址所划分的每一组的基础上,将目标端口地址为0-200划分为一组,目标端口地址为201-400划分为一组,目标端口地址为401-800划分为一组。
进一步地,根据上述分组规则来构建映射关系表,例如,源ip地址为192.168.10.0-192.168.10.50所划分的组对应的第一标识号为a0,源ip地址为192.168.10.51-192.168.10.100所划分的组对应的第一标识号为a1;目的ip地址为192.168.10.0-192.168.10.50所划分的组对应的第二标识号为b0,目的ip地址为192.168.10.51-192.168.10.100所划分的组对应的第二标识号为b1;源端口地址为0-200所划分的组对应的第三标识号为c0,源端口地址为201-400所划分的组对应的第三标识号为c1,源端口地址为401-800所划分的组对应的第三标识号为c2;目标端口地址为0-200所划分的组对应的第四标识号为d0,目标端口地址为201-400所划分的组对应的第四标识号为d1,目标端口地址为401-800所划分的组对应的第四标识号为d2。
需要指出的是,如果一个协议规则的地址的范围横跨两个已有的分组地址范围,例如该协议规则的源ip地址的范围为192.168.10.0-192.168.10.100,则该协议规则对应的第一标识号为a0和a1。
在相关技术中,如果新添加的协议规则的地址范围横跨两个已有的分组地址范围,则需要进行重新分组,这也使得增加协议规则变得更加的复杂。
然而,通过利用上述对协议规则的地址进行映射赋值的操作,可以无需对协议规则进行分组,只需要将该协议规则所对应的所有标识号进行后续处理即可,因此使得增加协议规则更加方便简单。
进一步地,例如一个协议规则携带的源ip地址为192.168.10.80,目的ip为192.168.10.30,源端口地址为688,目的端口地址为100。那么根据图2所示的映射关系,该协议规则所对应的标识号依次为:a1、b0、c2和d0。然后,将得到的四个标识号a1、b0、c2和d0输入到预先设置好的存储算法中,输出得到用于表征存储该协议规则的规则分组的标识信息,以确定存储该协议规则的规则分组。
在此需要指出的是,通过将得到的四个标识号a1、b0、c2和d0输入到预先设置好的存储算法中,不仅可以输出得到用于表征存储该协议规则的规则分组的标识信息,还可以使得得到的规则分组的标识信息是均匀地分布在0至标识信息最大值之间。
具体地,以设连续型随机变量X的分布函数为F(x)=(x-a)/(b-a),a≤x≤b,则称随机变量X服从[a,b]上的均匀分布,记为X~U[a,b],这是均匀分布函数的定义。假如a(源ip地址对应的第一标识号)=[0,4],b(目的ip地址对应的第二标识号)=[0,4],c(源端口地址对应的第三标识号)=[0,9],d(目的端口地址对应的第四标识号)=[0,9],将协议规则设置为20组,则规则分组的标识信息为[0-19]:根据均匀分布函数的定义得到满足我们要求的均匀分布函数为((9a+9b+4c+4d)/(4*36))*19即可。也就是说,预先设置好的存储算法为该均匀分布函数。
步骤104:针对每一个数据包,根据该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包对应的目标规则分组。
在按照上述分组规则和构建映射关系表的方式对协议规则进行处理时,也需要按照同样的分组规则和构建映射关系表的方式对接收的数据包进行处理,如此才能实现数据包和协议规则的匹配。
此时,步骤104具体包括如下步骤:
获取针对源ip地址、目的ip地址、源端口地址和目的端口地址的分组规则;
根据所述分组规则,构建源ip地址、目的ip地址、源端口地址和目的端口地址的映射关系表;其中,所述映射关系表包括:与源ip地址对应的至少一个第一标识号、与目的ip地址对应的至少一个第二标识号、与源端口地址对应的至少一个第三标识号以及与目的端口地址对应的至少一个第四标识号;
将与该数据包对应的至少一个所述第一标识号、至少一个所述第二标识号、至少一个所述第三标识号和至少一个所述第四标识号输入到预先设置好的存储算法中,输出得到目标标识信息,以确定与该数据包对应的目标规则分组;其中,所述目标标识信息用于表征与该数据包对应的目标规则分组。
针对数据包的处理方式在此不进行赘述,详细可参见上述对协议规则的处理方式。
在另一种实施方式中,如果规则分组是根据预设的协议规则类型进行确定,那么步骤103具体还可以包括如下步骤:
构建协议规则类型与源ip地址、目的ip地址、源端口地址、目的端口地址的对应关系;
根据对应关系以及该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定该协议规则的类型;
根据确定出的该协议规则的类型,确定存储该协议规则的规则分组。
同理,步骤104具体还可以包括如下步骤:
构建协议规则类型与源ip地址、目的ip地址、源端口地址、目的端口地址的对应关系;
根据对应关系以及该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包能够匹配的协议规则的类型;
根据确定出的协议规则的类型,确定与该数据包对应的目标规则分组。
在本实施例中,通过根据预设的协议规则类型进行对内存的分组,即得到预设数量的规则分组,可以使得所划分的规则分组更加明确,同时确定出的与数据包对应的目标规则分组所包括的协议规则也与该数据包的匹配程度更加接近,从而有利于提高匹配效率。而在上一实施方式中所确定出的目标规则分组中包括的协议规则的类型相比本实施方式中的类型更加繁多。
在一些实施方式中,每一个所述规则分组均包括多个相关联的存储节点,每一个存储节点用于存储一个所述协议规则;其中,在同一个所述规则分组中,一个存储节点包括该存储节点和与该存储节点相关联的下一个存储节点的地址信息;
所述将该协议规则存储到该规则分组中,包括:
将该协议规则存储到该规则分组中的一个存储节点中;其中,下一个存储到该规则分组的协议规则是存储到与该存储节点相关联的下一个存储节点中。
举例来说,请参阅图3,通过将该协议规则存储到该规则分组中的一个存储节点中,下一个存储到该规则分组的协议规则是存储到与该存储节点相关联的下一个存储节点中,如此有利于对各个规则分组中的协议规则进行遍历查找。如果为删除协议规则时,则直接将存储该协议规则的节点的上一个节点包括的该节点的地址信息更改为下一个节点的地址信息,例如有三个相关联的节点,按照顺序排列依次是第一节点、第二节点和第三节点,如果要删除第二节点时,则将第一节点包括的第二节点的地址信息更改为第三个节点的地址信息。
当然,规则分组中的各节点也可以不具有与其它节点相关联(本申请中的相关联指的是一个存储节点包括该存储节点和与该存储节点相关联的下一个存储节点的地址信息)的特性,例如还可以是在规则分组中的连续的地址依次存储协议规则,即利用连续的内存地址对各协议规则进行存储。
步骤105:针对每一个数据包,遍历所述目标规则分组存储的每一个协议规则,将当前协议规则与该数据包进行匹配。
在步骤105中,当前协议规则与该数据包的匹配条件是二者的源ip地址、目的ip地址、源端口地址和目的端口地址均相同。如果至少有一个地址不相同,则表明当前协议规则与该数据包不匹配。
可见,在上述图1所示过程中,在对获取的协议规则进行加载存储时,将协议规则存储至经初始化后得到的规则分组中,当对后续的协议规则继续进行加载存储时,如果该协议规则和存储该协议规则的规则分组中已存储的每一个协议规则不相同,则将该协议规则存储到该规则分组中,否则执行对下一个协议规则的处理,如此避免了现有技术中采用的释放内存再加载存储的方式,即如果规则分组中已经有了和新加载的协议规则相同的协议规则,则将该协议规则忽略,继续执行下一个协议规则的加载过程,从而有效降低加载过程所耗费的时间。
如图4和图5所示,本发明实施例提供了一种数据包和协议规则的匹配装置和数据包和协议规则的匹配装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图4所示,为本发明实施例提供的数据包和协议规则的匹配装置的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图5所示,作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。
如图5所示,本实施例提供的数据包和协议规则的匹配装置,包括:
初始化模块501,用于对用于存储协议规则的内存进行初始化,得到预设数量的规则分组;
获取模块502,用于获取待与数据包匹配的协议规则;其中,所述数据包和所述协议规则均携带有源ip地址、目的ip地址、源端口地址和目的端口地址;
第一执行模块503,用于针对每一个协议规则,均执行:根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组;判断该协议规则和存储该协议规则的规则分组中已存储的每一个协议规则是否相同,如果不相同,则将该协议规则存储到该规则分组中,否则执行对下一个协议规则的处理;
第二执行模块504,用于针对每一个数据包,根据该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包对应的目标规则分组;
匹配模块505,用于针对每一个数据包,遍历所述目标规则分组存储的每一个协议规则,将当前协议规则与该数据包进行匹配;其中,当前协议规则与该数据包的匹配条件是二者的源ip地址、目的ip地址、源端口地址和目的端口地址均相同。
在本发明实施例中,初始化模块501可用于执行上述方法实施例中的步骤101,获取模块502可用于执行上述方法实施例中的步骤102,第一执行模块503可用于执行上述方法实施例中的步骤103,第二执行模块504可用于执行上述方法实施例中的步骤104,匹配模块505可用于执行上述方法实施例中的步骤105。
在本发明的一个实施例中,第一执行模块503在执行所述根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组时,用于执行如下操作:
获取针对源ip地址、目的ip地址、源端口地址和目的端口地址的分组规则;
根据所述分组规则,构建源ip地址、目的ip地址、源端口地址和目的端口地址的映射关系表;其中,所述映射关系表包括:与源ip地址对应的至少一个第一标识号、与目的ip地址对应的至少一个第二标识号、与源端口地址对应的至少一个第三标识号以及与目的端口地址对应的至少一个第四标识号;
将与该协议规则对应的至少一个所述第一标识号、至少一个所述第二标识号、至少一个所述第三标识号和至少一个所述第四标识号输入到预先设置好的存储算法中,输出得到用于表征存储该协议规则的规则分组的标识信息,以确定存储该协议规则的规则分组。
在本发明的一个实施例中,第二执行模块504,用于执行如下操作:
获取针对源ip地址、目的ip地址、源端口地址和目的端口地址的分组规则;
根据所述分组规则,构建源ip地址、目的ip地址、源端口地址和目的端口地址的映射关系表;其中,所述映射关系表包括:与源ip地址对应的至少一个第一标识号、与目的ip地址对应的至少一个第二标识号、与源端口地址对应的至少一个第三标识号以及与目的端口地址对应的至少一个第四标识号;
将与该数据包对应的至少一个所述第一标识号、至少一个所述第二标识号、至少一个所述第三标识号和至少一个所述第四标识号输入到预先设置好的存储算法中,输出得到目标标识信息,以确定与该数据包对应的目标规则分组;其中,所述目标标识信息用于表征与该数据包对应的目标规则分组。
在本发明的一个实施例中,初始化模块501,用于执行如下操作:
根据预设的协议规则类型,对用于存储协议规则的内存进行初始化,得到预设数量的规则分组;其中,每一个规则分组对应至少一个协议规则类型,不同的规则分组所对应的协议规则类型不同。
在本发明的一个实施例中,第一执行模块503在执行所述根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组时,用于执行如下操作:
构建协议规则类型与源ip地址、目的ip地址、源端口地址、目的端口地址的对应关系;
根据所述对应关系以及该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定该协议规则的类型;
根据确定出的该协议规则的类型,确定存储该协议规则的规则分组。
在本发明的一个实施例中,第二执行模块504,用于执行如下操作:
构建协议规则类型与源ip地址、目的ip地址、源端口地址、目的端口地址的对应关系;
根据所述对应关系以及该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包能够匹配的协议规则的类型;
根据确定出的协议规则的类型,确定与该数据包对应的目标规则分组。
在本发明的一个实施例中,每一个所述规则分组均包括多个相关联的存储节点,每一个存储节点用于存储一个所述协议规则;其中,在同一个所述规则分组中,一个存储节点包括该存储节点和与该存储节点相关联的下一个存储节点的地址信息;
第一执行模块503在执行所述将该协议规则存储到该规则分组中时,用于执行如下操作:
将该协议规则存储到该规则分组中的一个存储节点中;其中,下一个存储到该规则分组的协议规则是存储到与该存储节点相关联的下一个存储节点中。
可以理解的是,本发明实施例示意的结构并不构成对数据包和协议规则的匹配装置的具体限定。在本发明的另一些实施例中,数据包和协议规则的匹配装置可以包括比图示更多或者更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或者软件和硬件的组合来实现。
上述装置内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明实施例还提供了一种数据包和协议规则的匹配装置,包括:至少一个存储器和至少一个处理器;
至少一个存储器,用于存储机器可读程序;
至少一个处理器,用于调用机器可读程序,执行本发明任一实施例中的数据包和协议规则的匹配方法。
本发明实施例还提供了一种计算机可读介质,存储用于使一计算机执行如本文的数据包和协议规则的匹配方法的指令。具体地,可以提供配有存储介质的方法或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该方法或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作方法等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修复,或者对其中部分技术特征进行等同替换;而这些修复或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种数据包和协议规则的匹配方法,其特征在于,包括:
对用于存储协议规则的内存进行初始化,得到预设数量的规则分组;
获取待与数据包匹配的协议规则;其中,所述数据包和所述协议规则均携带有源ip地址、目的ip地址、源端口地址和目的端口地址;
针对每一个协议规则,均执行:根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组;判断该协议规则和存储该协议规则的规则分组中已存储的每一个协议规则是否相同,如果不相同,则将该协议规则存储到该规则分组中,否则执行对下一个协议规则的处理;
针对每一个数据包,根据该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包对应的目标规则分组;
针对每一个数据包,遍历所述目标规则分组存储的每一个协议规则,将当前协议规则与该数据包进行匹配;其中,当前协议规则与该数据包的匹配条件是二者的源ip地址、目的ip地址、源端口地址和目的端口地址均相同。
2.根据权利要求1所述的方法,其特征在于,所述根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组,包括:
获取针对源ip地址、目的ip地址、源端口地址和目的端口地址的分组规则;
根据所述分组规则,构建源ip地址、目的ip地址、源端口地址和目的端口地址的映射关系表;其中,所述映射关系表包括:与源ip地址对应的至少一个第一标识号、与目的ip地址对应的至少一个第二标识号、与源端口地址对应的至少一个第三标识号以及与目的端口地址对应的至少一个第四标识号;
将与该协议规则对应的至少一个所述第一标识号、至少一个所述第二标识号、至少一个所述第三标识号和至少一个所述第四标识号输入到预先设置好的存储算法中,输出得到用于表征存储该协议规则的规则分组的标识信息,以确定存储该协议规则的规则分组。
3.根据权利要求1所述的方法,其特征在于,所述根据该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包对应的目标规则分组,包括:
获取针对源ip地址、目的ip地址、源端口地址和目的端口地址的分组规则;
根据所述分组规则,构建源ip地址、目的ip地址、源端口地址和目的端口地址的映射关系表;其中,所述映射关系表包括:与源ip地址对应的至少一个第一标识号、与目的ip地址对应的至少一个第二标识号、与源端口地址对应的至少一个第三标识号以及与目的端口地址对应的至少一个第四标识号;
将与该数据包对应的至少一个所述第一标识号、至少一个所述第二标识号、至少一个所述第三标识号和至少一个所述第四标识号输入到预先设置好的存储算法中,输出得到目标标识信息,以确定与该数据包对应的目标规则分组;其中,所述目标标识信息用于表征与该数据包对应的目标规则分组。
4.根据权利要求1所述的方法,其特征在于,所述对用于存储协议规则的内存进行初始化,得到预设数量的规则分组,包括:
根据预设的协议规则类型,对用于存储协议规则的内存进行初始化,得到预设数量的规则分组;其中,每一个规则分组对应至少一个协议规则类型,不同的规则分组所对应的协议规则类型不同。
5.根据权利要求4所述的方法,其特征在于,所述根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组,包括:
构建协议规则类型与源ip地址、目的ip地址、源端口地址、目的端口地址的对应关系;
根据所述对应关系以及该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定该协议规则的类型;
根据确定出的该协议规则的类型,确定存储该协议规则的规则分组。
6.根据权利要求4所述的方法,其特征在于,所述根据该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包对应的目标规则分组,包括:
构建协议规则类型与源ip地址、目的ip地址、源端口地址、目的端口地址的对应关系;
根据所述对应关系以及该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包能够匹配的协议规则的类型;
根据确定出的协议规则的类型,确定与该数据包对应的目标规则分组。
7.根据权利要求1-6中任一项所述的方法,其特征在于,每一个所述规则分组均包括多个相关联的存储节点,每一个存储节点用于存储一个所述协议规则;其中,在同一个所述规则分组中,一个存储节点包括该存储节点和与该存储节点相关联的下一个存储节点的地址信息;
所述将该协议规则存储到该规则分组中,包括:
将该协议规则存储到该规则分组中的一个存储节点中;其中,下一个存储到该规则分组的协议规则是存储到与该存储节点相关联的下一个存储节点中。
8.一种数据包和协议规则的匹配装置,其特征在于,包括:
初始化模块,用于对用于存储协议规则的内存进行初始化,得到预设数量的规则分组;
获取模块,用于获取待与数据包匹配的协议规则;其中,所述数据包和所述协议规则均携带有源ip地址、目的ip地址、源端口地址和目的端口地址;
第一执行模块,用于针对每一个协议规则,均执行:根据该协议规则携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定存储该协议规则的规则分组;判断该协议规则和存储该协议规则的规则分组中已存储的每一个协议规则是否相同,如果不相同,则将该协议规则存储到该规则分组中,否则执行对下一个协议规则的处理;
第二执行模块,用于针对每一个数据包,根据该数据包携带的源ip地址、目的ip地址、源端口地址和目的端口地址,确定与该数据包对应的目标规则分组;
匹配模块,用于针对每一个数据包,遍历所述目标规则分组存储的每一个协议规则,将当前协议规则与该数据包进行匹配;其中,当前协议规则与该数据包的匹配条件是二者的源ip地址、目的ip地址、源端口地址和目的端口地址均相同。
9.一种数据包和协议规则的匹配装置,其特征在于,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行权利要求1-7中任一项所述的方法。
10.一种计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110507983.8A CN112995362B (zh) | 2021-05-11 | 2021-05-11 | 一种数据包和协议规则的匹配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110507983.8A CN112995362B (zh) | 2021-05-11 | 2021-05-11 | 一种数据包和协议规则的匹配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112995362A CN112995362A (zh) | 2021-06-18 |
CN112995362B true CN112995362B (zh) | 2021-08-10 |
Family
ID=76337458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110507983.8A Active CN112995362B (zh) | 2021-05-11 | 2021-05-11 | 一种数据包和协议规则的匹配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112995362B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6754832B1 (en) * | 1999-08-12 | 2004-06-22 | International Business Machines Corporation | Security rule database searching in a network security environment |
CN1957573A (zh) * | 2004-04-08 | 2007-05-02 | 英特尔公司 | 使用最具体的过滤器匹配和传输层共享进行两级分组分类的装置和方法 |
CN103269342A (zh) * | 2013-05-10 | 2013-08-28 | 南通大学 | 一种基于ipv6的高维大规模包匹配方法 |
CN103746768A (zh) * | 2013-10-08 | 2014-04-23 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据包的识别方法及设备 |
US8806059B1 (en) * | 2007-04-05 | 2014-08-12 | Juniper Networks, Inc. | Rule tree for network device |
CN104320304A (zh) * | 2014-11-04 | 2015-01-28 | 武汉虹信技术服务有限责任公司 | 一种易扩展的多方式融合的核心网用户流量应用识别方法 |
CN105635170A (zh) * | 2016-01-26 | 2016-06-01 | 宝利九章(北京)数据技术有限公司 | 基于规则对网络数据包进行识别的方法和装置 |
-
2021
- 2021-05-11 CN CN202110507983.8A patent/CN112995362B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6754832B1 (en) * | 1999-08-12 | 2004-06-22 | International Business Machines Corporation | Security rule database searching in a network security environment |
CN1957573A (zh) * | 2004-04-08 | 2007-05-02 | 英特尔公司 | 使用最具体的过滤器匹配和传输层共享进行两级分组分类的装置和方法 |
US8806059B1 (en) * | 2007-04-05 | 2014-08-12 | Juniper Networks, Inc. | Rule tree for network device |
CN103269342A (zh) * | 2013-05-10 | 2013-08-28 | 南通大学 | 一种基于ipv6的高维大规模包匹配方法 |
CN103746768A (zh) * | 2013-10-08 | 2014-04-23 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据包的识别方法及设备 |
CN104320304A (zh) * | 2014-11-04 | 2015-01-28 | 武汉虹信技术服务有限责任公司 | 一种易扩展的多方式融合的核心网用户流量应用识别方法 |
CN105635170A (zh) * | 2016-01-26 | 2016-06-01 | 宝利九章(北京)数据技术有限公司 | 基于规则对网络数据包进行识别的方法和装置 |
Non-Patent Citations (1)
Title |
---|
"Considerations on D2D group communication procedure";ZTE;《3GPP TSG-RAN WG2 Meeting #84 R2-134215》;20131102;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112995362A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10680961B2 (en) | Using headerspace analysis to identify flow entry reachability | |
US11005815B2 (en) | Priority allocation for distributed service rules | |
US10135727B2 (en) | Address grouping for distributed service rules | |
CN108287660B (zh) | 数据存储方法和设备 | |
US7877519B2 (en) | Selecting one of a plurality of adapters to use to transmit a packet | |
US20060265372A1 (en) | Lookups by collisionless direct tables and cams | |
CN109981493B (zh) | 一种用于配置虚拟机网络的方法和装置 | |
EP3754900A1 (en) | Method for validating transaction in blockchain network and node for configuring same network | |
WO2024007844A1 (zh) | 报文转发方法、装置、计算设备及卸载卡 | |
CN112579595A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN108664518B (zh) | 一种实现查表处理的方法及装置 | |
US8365045B2 (en) | Flow based data packet processing | |
CN104580202A (zh) | 报文的匹配方法和装置 | |
CN112995362B (zh) | 一种数据包和协议规则的匹配方法和装置 | |
CN112650692A (zh) | 堆内存分配方法、装置及存储介质 | |
WO2021217588A1 (zh) | 一种报文解析方法和装置 | |
CN112291212B (zh) | 静态规则的管理方法、装置、电子设备和存储介质 | |
CN106302259B (zh) | 片上网络中处理报文的方法和路由器 | |
CN109871277B (zh) | 进程间多请求管理方法、装置、终端设备及可读存储介质 | |
CN116600031B (zh) | 报文处理方法、装置、设备及存储介质 | |
CN110096555B (zh) | 一种分布式系统的表匹配处理方法及装置 | |
CN117194278B (zh) | 设备命令管理方法、装置、存储介质及电子设备 | |
CN116166438A (zh) | 集群扩容方法、装置、电子设备及存储介质 | |
CN112380004B (zh) | 内存管理方法、装置、计算机可读存储介质及电子设备 | |
CN113452756B (zh) | 一种服务链流量迁移方法、装置、终端设备及存储介质 |
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 | ||
CP03 | Change of name, title or address |
Address after: Room 01, floor 1, building 104, No. 3 minzhuang Road, Haidian District, Beijing 100195 Patentee after: Changyang Technology (Beijing) Co.,Ltd. Address before: 100195 room 01, 2 / F, building 103, 3 minzhuang Road, Haidian District, Beijing Patentee before: CHANGYANG TECH (BEIJING) Co.,Ltd. |
|
CP03 | Change of name, title or address |