CN117041392A - 数据包的处理方法、装置、电子设备和介质 - Google Patents

数据包的处理方法、装置、电子设备和介质 Download PDF

Info

Publication number
CN117041392A
CN117041392A CN202311279319.8A CN202311279319A CN117041392A CN 117041392 A CN117041392 A CN 117041392A CN 202311279319 A CN202311279319 A CN 202311279319A CN 117041392 A CN117041392 A CN 117041392A
Authority
CN
China
Prior art keywords
rule
data packet
target
range
packet
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
Application number
CN202311279319.8A
Other languages
English (en)
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nfs China Software Co ltd
Original Assignee
Nfs China Software Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nfs China Software Co ltd filed Critical Nfs China Software Co ltd
Priority to CN202311279319.8A priority Critical patent/CN117041392A/zh
Publication of CN117041392A publication Critical patent/CN117041392A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/325Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/255Maintenance or indexing of mapping tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2557Translation policies or rules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Biomedical Technology (AREA)
  • Databases & Information Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例提供了一种数据包的处理方法、装置、电子设备和介质,其中的方法具体包括:根据规则包含的IP范围、端口范围和行为信息,构建数据包属性对应的规则分组;不同的数据包属性对应不同的规则分组;所述规则分组包括:哈希表,所述哈希表包括:IP范围对应的哈希键、以及端口范围对应的键值;所述键值对应有第一预设行为;接收数据包;根据所述数据包对应的数据包属性,确定所述数据包对应的第一目标规则分组;对第一目标规则分组包含的哈希表与所述数据包对应的头部信息进行匹配,以得到匹配成功的目标键值、以及所述目标键值对应的第一预设行为;执行所述目标键值对应的第一预设行为。本申请实施例可以提高数据包的处理效率。

Description

数据包的处理方法、装置、电子设备和介质
技术领域
本申请实施例涉及计算机信息安全技术领域,特别是涉及一种数据包的处理方法、装置、电子设备和介质。
背景技术
在计算机信息安全技术领域,为了防止用户访问恶意的数据包导致感染计算机病毒,或者防止用户使用即时聊天软件、邮箱、网盘等软件将内部资料外发出去,目前的企事业单位通常会对进入计算机或离开计算机的数据包进行处理。
相关技术中,数据包的处理方法通常包括:将规则库中规则与数据包的头部信息进行匹配,若匹配成功,则执行对应的动作。其中,头部信息具体包括:源IP(网际互连协议,Internet Protocol)地址、源端口、目的IP地址、目的端口和传输层协议等信息。在将规则库中规则与数据包的头部信息进行匹配的过程中,通常会对规则库中的规则进行遍历,以实现规则库中所有规则与数据包的头部信息之间的匹配。
然而,在规则库中规则的数量较多的情况下,匹配速度会受到影响,这将会影响数据包的处理效率,进而无法满足高速网络环境下的处理需求。
发明内容
本申请实施例提供了一种数据包的处理方法,能够提高数据包的处理效率。
相应的,本申请实施例还提供了一种数据包的处理装置、一种电子设备和一种机器可读介质,用以保证上述方法的实现及应用。
为了解决上述问题,本申请实施例公开了一种数据包的处理方法,所述方法包括:
根据规则包含的IP范围、端口范围和行为信息,构建数据包属性对应的规则分组;不同的数据包属性对应不同的规则分组;所述规则分组包括:哈希表,所述哈希表包括:IP范围对应的哈希键、以及端口范围对应的键值;所述键值对应有第一预设行为;
接收数据包;
根据所述数据包对应的数据包属性,确定所述数据包对应的第一目标规则分组;
对第一目标规则分组包含的哈希表与所述数据包对应的头部信息进行匹配,以得到匹配成功的目标键值、以及所述目标键值对应的第一预设行为;
执行所述目标键值对应的第一预设行为。
为了解决上述问题,本申请实施例公开了一种数据包的处理装置,所述装置包括:
构建模块,用于根据规则包含的IP范围、端口范围和行为信息,构建数据包属性对应的规则分组;不同的数据包属性对应不同的规则分组;所述规则分组包括:哈希表,所述哈希表包括:IP范围对应的哈希键、以及端口范围对应的键值;所述键值对应有第一预设行为;
数据包接收模块,用于接收数据包;
第一分组确定模块,用于根据所述数据包对应的数据包属性,确定所述数据包对应的第一目标规则分组;
哈希匹配模块,用于对第一目标规则分组包含的哈希表与所述数据包对应的头部信息进行匹配,以得到匹配成功的目标键值、以及所述目标键值对应的第一预设行为;
执行模块,用于执行所述目标键值对应的第一预设行为。
可选地,所述数据包属性包括如下属性中的至少一种:流量方向、IP版本和传输层协议。
可选地,所述装置还包括:
请求接收模块,用于接收规则添加请求;所述规则添加请求中包含新规则;
第二分组确定模块,用于确定所述规则添加请求对应的第二目标规则分组;
第一判断模块,用于判断第二目标规则分组包含的哈希表中的IP范围是否包含所述新规则对应的IP范围,以得到第一判断结果;
第二判断模块,用于在第一判断结果为是的情况下,判断第二目标规则分组包含的哈希表中的目标IP范围对应的端口范围是否包含所述新规则对应的端口范围,以得到第二判断结果;所述目标IP范围为所述第二目标规则分组包含的哈希表中、包含所述新规则对应的IP范围的IP范围;
添加处理模块,用于在第二判断结果为是的情况下,不添加所述新规则;或者,在第二判断结果为否的情况下,在所述目标IP范围所在的规则条目中增加所述新规则的端口范围对应的端口结构。
可选地,所述装置还包括:
条目增加模块,用于在第一判断结果为否的情况下,根据所述新规则对应的IP范围和端口范围,在第二目标规则分组中增加新规则条目,所述新规则条目包括:所述新规则对应的新IP结构和所述新IP结构对应的端口结构。
可选地,所述装置还包括:
缓存模块,用于使用第一缓存保存历史的规则分组、以及使用第二缓存保存更新后的规则分组;
交换模块,用于在所述规则分组的更新完成后,对所述第一缓存和所述第二缓存分别对应的指针进行交换。
可选地,所述装置还包括:
第一锁处理模块,用于在对规则分组进行更新之前,将所述第二缓存对应的互斥锁上锁,并对规则分组执行更新操作;
第二锁处理模块,用于在完成规则分组的更新后,将所述第一缓存对应的自旋锁上锁,交换所述第一缓存和所述第二缓存分别对应的指针;
第三锁处理模块,用于在完成指针的交换后,将自旋锁解锁,将更新后的规则分组保存至第一缓存,并将所述第二缓存对应的互斥锁解锁。
可选地,所述装置还包括:
插入模块,用于将规则包含的进程标识插入红黑树结构;所述红黑树结构中包含的进程标识对应有第二预设行为;
所述执行模块,具体包括:
查找模块,用于根据所述数据包对应的进程标识,在所述红黑树结构中进行查找,以得到查找结果;
第二预设行为执行模块,用于在所述查找结果为查找命中的情况下,执行命中的进程标识对应的第二预设行为。
可选地,所述执行模块,具体包括:
正则匹配模块,用于利用正则表达式,从所述数据包的包体信息中获取目标内容;
第三预设行为执行模块,用于对预设关键词与所述目标内容进行匹配,若匹配成功,则执行所述预设关键词对应的第三预设行为。
可选地,所述执行模块包括:
分类模块,用于利用长短期记忆网络模型,确定所述数据包的包体信息对应的分类结果;
第四预设行为执行模块,用于执行所述分类结果对应的第四预设行为。
本申请实施例还公开了一种电子设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例所述的方法。
本申请实施例还公开了一种机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例所述的方法。
本申请实施例包括以下优点:
本申请实施例的技术方案中,预先根据规则包含的IP范围、端口范围和行为信息,构建数据包属性对应的规则分组。在接收到数据包的情况下,可以根据该数据包对应的数据包属性,确定该数据包对应的第一目标规则分组,并对第一目标规则分组包含的哈希表与该数据包对应的头部信息进行匹配。由于不同的数据包属性可以对应不同的规则分组,故第一目标规则分组对应的规则范围可以小于全部规则对应的规则范围,换言之,本申请实施例能够针对第一目标规则分组对应的部分规则执行匹配;因此,本申请实施例能够减少参与匹配的规则的数量,进而能够提高匹配速度和数据包的处理效率。
并且,本申请实施例采用哈希表来存储规则分组包含的IP范围和端口范围,这样,针对第一目标规则分组执行的匹配可以相当于哈希表的查询操作,由于哈希表具有查询速度快的特点,因此,本申请实施例能够进一步提高匹配速度和数据包的处理效率。
附图说明
图1是本申请一个实施例的数据包的处理方法的步骤流程示意图;
图2是本申请一个实施例的数据包的处理方法的流程示意图;
图3是本申请一个实施例的规则分组的结构示意图;
图4是本申请一个实施例的数据包的处理方法的步骤流程图;
图5是本申请一个实施例的使用红黑树存储进程号的示意图;
图6是本申请一个实施例的数据包的处理方法的步骤流程图;
图7是本申请一个实施例的数据包的处理方法的步骤流程图;
图8是本申请一个实施例的规则的添加方法的流程示意图;
图9是本申请一个实施例的规则添加方法的步骤流程图;
图10是本申请一个实施例的规则处理方法的步骤流程图;
图11是本申请一个实施例的规则的读写和验证方法的步骤流程图;
图12是本申请一个实施例的数据包的处理装置的结构示意图;
图13是本申请一个实施例提供的装置的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
为使本领域技术人员更好地理解本申请实施例,首先对本申请实施例的技术术语的含义进行说明。
规则:规则用于定义对数据包进行匹配和操作的条件和行为。规则在实现精确的流量控制方面起着重要作用,并可以根据用户需求进行设置和修改。在本申请实施例中,规则与策略是等同的概念,用于描述用户对网络流量的控制要求。通过优化、存储和匹配规则,本申请实施例能够提高数据包的处理效率。
正则表达式:正则表达式是一种用于描述文本模式的字符序列。它是一种强大的工具,可以在文本中进行模式匹配、搜索和替换操作。正则表达式可以包括特定的语法规则,用于定义规则。通过使用元字符、字符类、量词和分组等元素,可以构建复杂的匹配模式。正则表达式可被用于文本处理、数据提取、验证输入等领域,能够提供灵活和高效的文本处理能力。
LSTM(长短期记忆,Long Short-Term Memory):LSTM是一种循环神经网络的变体,用于处理序列数据和时间序列数据的建模和预测。相比于传统神经网络,LSTM具有更强的记忆能力,能够有效地处理长期依赖关系。它通过使用称为"门"的机制来控制信息的流动,包括输入门、遗忘门和输出门。这些门可以选择性地存储、遗忘和输出信息,从而解决了传统神经网络在处理长期依赖关系时容易出现的梯度消失和梯度爆炸问题。LSTM在处理序列数据时表现出色,能够自动学习和捕捉输入数据中的模式和关联性。LSTM具备对上下文的感知能力、非精确匹配能力和上下文特征提取能力,从而在处理复杂的序列数据时展现出强大的建模能力。
Netfilter(网络过滤器): Netfilter是Linux操作系统中的一个内核框架,用于进行数据包的过滤等处理。它在Linux内核的网络协议栈中的特定位置设置了一系列钩子函数(Hooks),以实现对网络数据包的处理和控制。
Hook(钩子):在计算机技术领域中,钩子函数(Hook Function)指的是一种允许开发者插入自定义代码以阻断、改变或扩展程序行为的机制。它允许开发者在特定事件发生前或后执行自身的代码逻辑。
词向量(Word embedding):词向量是自然语言处理中的一组语言建模和特征学习技术的统称,其中来自词汇表的单词或短语被映射到实数的向量。从概念上讲,它涉及从每个单词一维的空间到具有更低维度的连续向量空间的数学嵌入。
优化数据结构:是指对传统的数据结构进行改进或设计新的数据结构,以提高数据操作的效率、减少内存占用或满足特定的需求。优化数据结构的目的是通过减少时间复杂度、空间复杂度或提供更高的操作效率,从而优化算法的执行速度和系统的整体性能。
过滤:过滤用于表示对数据包进行筛选和选择性处理的过程。它是一种对传输的数据流进行有效管理和控制的手段,通过定义特定的过滤规则和条件,确定哪些数据包可以通过,哪些需要被阻断或记录。过滤的目的是根据预先设定的规则,从大量的网络流量中选取出符合特定要求的数据包,以便进一步执行审计、监测、阻断、日志记录等行为。
针对相关技术中数据包的处理效率较低的技术问题,本申请实施例提供了一种数据包的处理方法,该方法具体包括:根据规则包含的IP范围、端口范围和行为信息,构建数据包属性对应的规则分组;不同的数据包属性可以对应不同的规则分组;该规则分组具体包括:哈希表,该哈希表具体包括:IP范围对应的哈希键、以及端口范围对应的键值;该键值对应有第一预设行为;接收数据包;根据该数据包对应的数据包属性,确定该数据包对应的第一目标规则分组;对第一目标规则分组包含的哈希表与该数据包对应的头部信息进行匹配,以得到匹配成功的目标键值、以及该目标键值对应的第一预设行为;执行该目标键值对应的第一预设行为。
本申请实施例预先根据规则包含的IP范围、端口范围和行为信息,构建数据包属性对应的规则分组。在接收到数据包的情况下,可以根据该数据包对应的数据包属性,确定该数据包对应的第一目标规则分组,并对第一目标规则分组包含的哈希表与该数据包对应的头部信息进行匹配。由于不同的数据包属性可以对应不同的规则分组,故第一目标规则分组对应的规则范围可以小于全部规则对应的规则范围,换言之,本申请实施例能够针对第一目标规则分组对应的部分规则执行匹配;因此,本申请实施例能够减少参与匹配的规则的数量,进而能够提高匹配速度和数据包的处理效率。
并且,本申请实施例采用哈希表来存储规则分组包含的IP范围和端口范围,这样,针对第一目标规则分组执行的匹配可以相当于哈希表的查询操作,由于哈希表具有查询速度快的特点,因此,本申请实施例能够进一步提高匹配速度和数据包的处理效率。
方法实施例一
参考图1,示出了本申请一个实施例的数据包的处理方法的步骤流程示意图,该方法可以应用于第一操作系统,该方法具体可以包括如下步骤:
步骤101、根据规则包含的IP范围、端口范围和行为信息,构建数据包属性对应的规则分组;不同的数据包属性可以对应不同的规则分组;该规则分组具体包括:哈希表;该哈希表具体包括:IP范围对应的哈希键、以及端口范围对应的键值;该键值对应有第一预设行为;
步骤102、接收数据包;
步骤103、根据该数据包对应的数据包属性,确定该数据包对应的第一目标规则分组;
步骤104、对第一目标规则分组包含的哈希表与该数据包对应的头部信息进行匹配,以得到匹配成功的目标键值、以及该目标键值对应的第一预设行为;
步骤105、执行该目标键值对应的第一预设行为。
本申请实施例可以应用于计算机,用于对进入计算机或离开计算机的数据包进行过滤等处理。例如,在进入计算机的数据包具有恶意风险的情况下,可以对其进行阻断,以提高计算机的安全性。又如,在离开计算机的数据包包含机密内容或敏感内容等重要内容的情况下,可以对其进行阻断或更改,以防止重要内容的泄露。
本申请实施例的计算机可以为局域网的服务器,也可以是局域网内部的个人计算机。可以理解,本申请实施例对于图1所示方法的具体执行主体不加以限制。
本申请实施例可以用于Windows或者Linux等操作系统环境中。例如,在Linux操作系统环境中,可以利用Netfilter提供的钩子函数,对数据包进行处理。本申请实施例可以运行在操作系统的内核环境中,例如,可以作为内核驱动程序运行在操作系统的内核环境中。
参照图2,示出了本申请一个实施例的数据包的处理方法的流程示意图,其中,应用层可以通过文件系统接口与内核层进行交互,具体而言,应用层可以经由文件系统接口向内核层传递规则。文件系统接口是一种用户空间与内核空间之间进行数据传输的机制,它提供了一组标准化的函数和操作,用于用户空间与内核空间之间的通信。
具体而言,用户可以通过文件系统接口将规则传递给内核驱动程序。这意味着用户可以使用常见的文件系统操作,如打开文件、写入数据、设置文件属性等,来配置规则。文件系统接口提供了一种方便的方式,让用户能够以可读性高的方式向内核驱动程序传递规则。
在实际应用中,本申请实施例可以将用户上传的规则作为原始规则存储在链表中,以供用户读取。该链表可以保持原始规则的有序性,例如,可以根据上传时间从前到后的顺序,在链表中对原始规则进行存储。
本申请实施例还使用了proc虚拟文件系统接口,proc虚拟文件系统接口用于从内核驱动程序中读取数据包的处理结果。proc虚拟文件系统是一种特殊的文件系统,它提供了一组虚拟文件和接口,用于与内核进行交互。用户可以通过访问特定的虚拟文件来获取内核驱动程序的状态、参数和统计信息等。
本申请实施例中,可以将数据包的处理结果以日志的形式返回给用户。通过使用proc虚拟文件系统接口,用户可以通过读取相应的虚拟文件,获得处理完成的数据包的日志。这些日志记录了处理完成的数据包的相关信息,如时间戳、源/目标IP地址和端口号等。
综上,本申请实施例使用文件系统接口和proc虚拟文件系统接口作为应用层与内核层之间传输数据的通信方式。文件系统接口提供了传递规则的机制,而proc虚拟文件系统接口则用于获取包含处理结果的日志信息。这样的设计使得用户可以方便地配置规则并获取处理结果,提高了操作系统的可用性和易用性。
用户配置的规则中可以包含IP范围、端口范围和行为信息等信息。其中,IP范围可以包括:源IP地址范围和目标IP地址范围;端口范围可以包括:源端口范围和目标端口范围。IP范围可以对应一个地址或者多个地址对应的地址范围。端口范围可以对应一个端口号或者多个端口号对应的端口范围。行为信息可以表征命中规则的全部或部分的情况下执行的行为。行为信息的功能可以包括:针对数据包执行的审计、监测、阻断、日志记录等过滤功能。
或者,行为信息的功能可以包括:一种规则验证手段与另一种规则验证手段之间的连接功能。规则验证手段可用于将规则与数据包的头部信息、或包体信息、或进程标识(ID,Identity)等信息进行匹配。例如,第一规则验证手段可以为,对第一目标规则分组包含的哈希表与该数据包对应的头部信息进行匹配。又如,第二规则验证手段可以为,对红黑树中包含的进程标识与数据包对应的进程标识进行匹配。再如,第三规则验证手段可以为,对规则中包含的正则表达式与数据包对应的包体信息进行匹配。或者,第四规则验证手段可以为,对规则对应的LSTM模型与数据包对应的包体信息进行匹配。
连接功能可用于在执行完第一规则验证手段后执行第二规则验证手段。则第一规则验证手段对应的行为信息可以是:执行第二规则验证手段。
本申请实施例可以根据规则包含的IP范围、端口范围和行为信息,构建数据包属性对应的规则分组。该规则分组具体包括:哈希表;该哈希表具体包括:IP范围对应的哈希键、以及端口范围对应的键值;该键值可以对应有第一预设行为。
在实际应用中,数据包属性具体可以包括如下属性中的至少一种:流量方向、IP版本和传输层协议。其中,流量方向具体包括:流入本机、流出本机和所有方向等。IP版本可以包括:Ipv4(网际协议版本4)版本和Ipv6(网际协议版本6)版本。传输层协议具体包括:TCP(传输控制协议,Transmission Control Protocol)和UDP(用户数据报协议,UserDatagram Protocol)等。
假设用于分组的数据包属性包括流量方向、IP版本和传输层协议,假设流量方向的种类数量为t1,IP版本的种类数量为t2,传输层协议的种类数量为t3,则规则分组的数量可以为:t1×t2×t3。
参照图3,示出了本申请一个实施例的规则分组的结构示意图,其中,可以从规则中取出传输协议、流量方向、IP版本等,以得到规则ID对应的规则分组。假设t1=3,t2=2,t3=2,则规则分组的数量可以为12。一个规则ID可以属于12个规则分组中的任一。
本申请实施例的规则分组可以形成坐标系,坐标系中的每一个点可以对应一个哈希表。
一个哈希表中可以包括:n个规则条目。一个规则条目可以包括:一个IP地址结构和n个端口结构。其中,IP地址结构可以表示IP范围对应的哈希键;可以根据IP范围进行哈希计算,以得到哈希键;哈希键可以表示源IP地址和目标IP地址对应的内存融合值。n个端口结构可以表示端口范围对应的键值,该键值可以表示源端口范围和目标端口范围的内存融合值。本申请实施例的端口结构可以为数组,在向数组插入端口范围对应的键值的过程中,可以保持键值的有序性,这能够有助于提高查找速度。键值的有序性可以包括:从小到大的顺序,或者从大到小的顺序等。
图2中,本申请实施例可以利用Netfilter等内存框架提供的钩子函数,从网络接口获取网络数据,并对网络数据进行解析,以得到数据包以及数据包属性等信息。其中,数据包可以进一步包括:头部信息和包体信息。
图2还可以执行规则验证。规则验证可以包括:步骤103和步骤104。
在步骤103中,可以根据该数据包对应的数据包属性,从多个规则分组中确定出该数据包对应的第一目标规则分组。在步骤104中,可以对第一目标规则分组包含的哈希表与该数据包对应的头部信息进行匹配,以得到匹配成功的目标键值、以及该目标键值对应的第一预设行为。在步骤105中,可以执行第一预设行为。
参照图4,示出了本申请一个实施例的数据包的处理方法的步骤流程图,具体可以如下步骤:
步骤401、过滤空的数据包;
步骤402、针对非空的数据包,确定第一目标规则分组;
步骤403、从第一目标规则分组中取出哈希表;
步骤404、IP地址匹配哈希键;具体而言,对数据包的IP地址与哈希表的哈希键进行匹配;其中,可以对数据包的源IP地址与目标IP地址进行拼接,对拼接结果进行哈希计算,并对哈希计算结果与哈希表的哈希键进行匹配。
步骤405、判断是否匹配成功,若否,则结束流程,若是,则执行步骤406;
步骤406、端口号匹配键值;具体而言,对数据包的端口号与哈希表的键值进行匹配。
步骤407、判断是否匹配成功,若否,则结束流程,若是,则执行步骤408;
步骤408、执行第一预设行为。
第一预设行为可以与匹配成功的目标键值相关联。第一预设行为可用于针对数据包实现的审计、监测、阻断、日志记录等过滤功能;或者,第一预设行为可用于实现一种规则验证手段与另一种规则验证手段之间的连接功能。
在第一预设行为用于执行连接功能的情况下,本申请实施例可以在执行第一规则验证手段后,执行第二规则验证手段至第四规则验证手段中的任一或组合。
例如,可以在执行第一规则验证手段后,执行第二规则验证手段。第二规则验证手段可以为,对红黑树中包含的进程标识与数据包对应的进程标识进行匹配。具体而言,可以将规则包含的进程标识插入红黑树结构;所述红黑树结构中包含的进程标识可以对应有第二预设行为;则上述执行该目标键值对应的第一预设行为的过程,具体包括:根据所述数据包对应的进程标识,在所述红黑树结构中进行查找,以得到查找结果;在所述查找结果为查找命中的情况下,执行命中的进程标识对应的第二预设行为。
本申请实施例针对规则包含的进程标识,使用红黑树作为优化数据结构来存储进程号,以提高规则验证时的匹配速度。进程标识的例子可以包括:进程号。进程号是唯一标识运行中进程的数值,它在网络流量中的应用可以用于对特定进程的数据包进行识别和处理。通过使用红黑树存储进程号,本申请实施例实现了快速的进程规则匹配,减少了规则验证的时间开销。红黑树是一种高效的自平衡二叉搜索树,具有快速的插入、删除和查找操作的特性。它可以保持进程号的有序性,使得在规则匹配过程中可以快速定位和匹配特定的进程号。这样一来,本申请实施例在处理基于进程的过滤规则时能够提供更高效和可靠的性能。
参照图5,示出了本申请一个实施例的使用红黑树存储进程号的示意图,其中,可以从新添加的规则中获取进程号,并将进程号添加至红黑树中。其中,编号为501的节点对应黑色节点,编号为502的节点对应红色节点。
本申请实施例可以在执行第一规则验证手段后,执行第三规则验证手段。第三规则验证手段可以为,对规则中包含的正则表达式与数据包对应的包体信息进行匹配。正则表达式允许使用通配符、逻辑运算符、重复操作符等丰富的语法规则,可以通过组合不同的正则表达式实现更复杂的匹配逻辑。因此,基于正则表达式的第三规则验证手段,能够提高数据包处理的灵活性和扩展性。
相应地,上述执行该目标键值对应的第一预设行为的过程,具体可以包括:利用正则表达式,从所述数据包的包体信息中获取目标内容;对预设关键词与所述目标内容进行匹配,若匹配成功,则执行所述预设关键词对应的第三预设行为。本申请实施例在正则表达式的基础上还增加了关键词匹配,结合关键词的使用,可以进一步提高数据包处理的扩展性和灵活性。其中,预设关键词可以为规则中指定的关键词。预设关键词可以包括:单个关键字或者关键词组。
正则表达式是一种强大的模式匹配工具,它可以用来匹配特定模式的字符串。根据需求,可以使用正则表达式的语法规则来定义复杂的匹配模式,包括通配符、字符类、重复次数等。
通过使用正则表达式和关键词组的匹配方式,可以实现更灵活和准确的数据包过滤和处理。正则表达式提供了强大的模式匹配能力,可以灵活地匹配各种模式的数据内容,而关键词组的匹配则提供了对特定关键词的精确匹配。结合使用这两种匹配方式,可以满足对传输数据进行细粒度过滤和分类的需求。
正则表达式的例子可以包括:“\d+[a-zA-Z]+\d+”,其中,“\d+”用于匹配一个或多个数字,“[a-zA-Z]+”用于匹配一个或多个字母(大小写不限),“\d+”再次匹配一个或多个数字。上述正则表达式用于匹配具备如下特性的包体信息:前面部分为数字,后面部分为数字,中间部分为字母。利用上述正则表达式提取得到的目标内容可以是:中间部分。
参照图6,示出了本申请一个实施例的数据包的处理方法的步骤流程图,具体可以如下步骤:
步骤601、执行第一规则验证对应的匹配;
步骤602、判断是否匹配成功,若是,则执行步骤603,否则结束流程;
步骤603、判断是否存在正则表达式,若是,则执行步骤604,否则执行步骤608;
步骤604、进行正则表达式匹配,取出目标内容;从数据包的包体信息中取出目标内容。
步骤605、从关键词组中取出预设关键词;关键词组可被包含在规则中。
步骤606、对预设关键词与目标内容进行匹配;
步骤607、判断是否匹配成功,若是,则执行步骤608,否则结束流程;
步骤608、执行预设行为;其中,在不存在正则表达式的情况下,执行第一规则验证对应的第一预设行为;或者,在存在正则表达式的情况下,执行预设关键词对应的第三预设行为。
步骤609、记录日志。日志中可以记录有处理完成的数据包的相关信息,如时间戳、源/目标IP地址和端口号等。
本申请实施例可以在执行第一规则验证手段后,执行第四规则验证手段。第四规则验证手段可以为,对规则对应的LSTM模型与数据包对应的包体信息进行匹配。
相应地,上述执行该目标键值对应的第一预设行为的过程,具体可以包括:利用长短期记忆网络LSTM模型,确定所述数据包的包体信息对应的分类结果;执行所述分类结果对应的第四预设行为。
LSTM模型可以具备针对包体信息的分类能力。在实际应用中,可以预先根据训练数据对LSTM进行训练。
训练数据可以包含传输数据以及相应的标签,标签可以指LSTM模型针对一种传输数据对应的准确输出。对于传输数据,可以将其进行预处理和特征提取,例如分词、移除停用词等;然后,将传输数据转换为词向量。
词向量是一种表示单词或短语的向量化表示方法,它将单词映射到高维空间中的向量。词向量表示具有一定的语义关系,使得具有相似语义的词在向量空间中距离较近。本申请实施例可以将传输数据中的每个词转换为对应的词向量。
完成训练数据的准备后,使用训练数据对LSTM模型进行训练。在训练过程中,LSTM模型学习传输数据的模式和语义特征,以便能够进行准确地分类。
完成LSTM模型的训练后,可以将其集成到内核驱动程序中。这样,内核驱动程序就能够使用已训练的LSTM模型对数据包的包体信息进行匹配。包体信息经过预处理和特征提取后,可以转换为词向量。然后,将词向量输入到LSTM模型中,LSTM模型将输出包体信息对应的分类结果。
在一种示例中,分类结果对应的类别可以包括:正常类别和异常类别;其中,异常类别可以包括:恶意类别或敏感类别等。本申请实施例利用LSTM的记忆和学习能力,能够更准确地识别和匹配数据包的包体信息,能够提高数据包处理的准确性和鲁棒性。
参照图7,示出了本申请一个实施例的数据包的处理方法的步骤流程图,具体可以如下步骤:
步骤701、执行第一规则验证对应的匹配;
步骤702、判断是否匹配成功,若是,则执行步骤703,否则结束流程;
步骤703、判断是否存在正则表达式,若是,则执行步骤704,否则执行步骤708;
步骤704、进行正则表达式匹配,取出目标内容;从数据包的包体信息中取出目标内容。
步骤705、判断是否设置了LSTM匹配,若是,则执行步骤706,否则执行步骤709;
步骤706、将目标内容转换为词向量;
步骤707、将词向量送入LSTM模型进行文本分类;
步骤708、判断分类结果是否对应有预设行为,若是,则执行步骤709,否则结束流程;
步骤709、执行预设行为;其中,在不存在正则表达式的情况下,执行第一规则验证对应的第一预设行为;或者,在存在正则表达式、且不存在LSTM匹配的情况下,执行正则表达式对应的预设行为;或者,在存在正则表达式、且存在LSTM匹配的情况下,执行分类结果对应的第四预设行为。
步骤710、记录日志。日志中可以记录有处理完成的数据包的相关信息,如时间戳、源/目标IP地址和端口号等。
图2还可以执行步骤105对应的预设行为。图2还可以针对处理完成的数据包,记录相应的日志信息。日志信息可以包括但不限于:时间戳、包体信息的全部或部分(如目标内容)、匹配成功的规则iD和进程号等。
本申请实施例可以使用环形队列保存日志信息,该环形队列对应有长度阈值。当该环形队列已满时,新的日志信息会挤掉最旧的日志信息,以实现日志信息的实时记录。
为了使用户能够读取日志信息,本申请实施例可以在内核空间中创建一个虚拟文件系统接口。应用层可以通过虚拟文件系统接口访问和读取日志信息,从而实现与内核层的交互。
假设利用读取线程进行日志信息的读取,则可以利用Linux系统中的等待队列对读取线程的状态进行控制。具体而言,在日志队列中没有日志信息的情况下,等待队列可以将读取线程置于睡眠状态;或者,日志队列中存在日志信息的情况下,等待队列可以将处于睡眠状态的读取线程唤醒,以使读取线程处于工作状态。日志队列用于存储日志信息。
在Linux内核中,等待队列是一种用于管理进程或线程等待事件完成的机制。它是由内核提供的一种同步机制,用于管理多个进程或多个线程对某个条件的等待,并在条件满足时唤醒这些进程或线程。
本申请实施例的内核层可以有效地保存过滤日志,并提供给用户层进行读取。等待队列的使用,能够实现虚拟文件系统接口在没有日志信息的情况下的阻塞,并在存在新的日志信息的情况下,及时唤醒处于睡眠状态的读取线程,实现了有效的数据交互和通信机制。
综上,本申请实施例的数据包的处理方法,预先根据规则包含的IP范围、端口范围和行为信息,构建数据包属性对应的规则分组。在接收到数据包的情况下,可以根据该数据包对应的数据包属性,确定该数据包对应的第一目标规则分组,并对第一目标规则分组包含的哈希表与该数据包对应的头部信息进行匹配。由于不同的数据包属性可以对应不同的规则分组,故第一目标规则分组对应的规则范围可以小于全部规则对应的规则范围,换言之,本申请实施例能够针对第一目标规则分组对应的部分规则执行匹配。因此,本申请实施例能够减少参与匹配的规则的数量,进而能够提高匹配速度和数据包的处理效率。
并且,本申请实施例采用哈希表来存储规则分组包含的IP范围和端口范围,这样,针对第一目标规则分组执行的匹配可以相当于哈希表的查询操作,由于哈希表具有查询速度快的特点,因此,本申请实施例能够进一步提高匹配速度和数据包的处理效率。
此外,本申请实施例可以在执行第一规则验证手段后,执行第二规则验证手段。第二规则验证手段可以为,对红黑树中包含的进程标识与数据包对应的进程标识进行匹配。本申请实施例针对规则包含的进程标识,使用红黑树作为优化数据结构来存储进程号,以提高规则验证时的匹配速度。
再者,本申请实施例可以在执行第一规则验证手段后,执行第三规则验证手段。第三规则验证手段可以为,对规则中包含的正则表达式与数据包对应的包体信息进行匹配。正则表达式允许使用通配符、逻辑运算符、重复操作符等丰富的语法规则,可以通过组合不同的正则表达式实现更复杂的匹配逻辑。因此,基于正则表达式的第三规则验证手段,能够提高数据包处理的灵活性和扩展性。
进一步,本申请实施例可以在执行第一规则验证手段后,执行第四规则验证手段。第四规则验证手段可以为,对规则对应的LSTM模型与数据包对应的包体信息进行匹配。本申请实施例利用LSTM的记忆和学习能力,能够更准确地识别和匹配数据包的包体信息,能够提高数据包处理的准确性和鲁棒性。
方法实施例二
本实施例对规则的更新过程进行说明。规则的更新可以包括:规则的添加或删除等。如图2所示,本申请实施例可以使用规则分组存储经过更新的用于验证的规则,规则分组可用于规则验证阶段。
规则的添加过程具体包括:接收规则添加请求;所述规则添加请求中包含新规则;确定所述规则添加请求对应的第二目标规则分组;判断第二目标规则分组包含的哈希表中的IP范围是否包含所述新规则对应的IP范围,以得到第一判断结果;在第一判断结果为是的情况下,判断第二目标规则分组包含的哈希表中的目标IP范围对应的端口范围是否包含所述新规则对应的端口范围,以得到第二判断结果;在第二判断结果为是的情况下,不添加所述新规则;或者,在第二判断结果为否的情况下,在所述目标IP范围所在的规则条目中增加所述新规则的端口范围对应的端口结构。
在添加新规则时,本申请实施例根据哈希表中IP地址范围、端口范围等信息,判断新规则与现有规则的包含关系。如果现有规则已经包含本规则,则不进行添加。如果不包含,则判断是否可以对现有规则进行扩展。例如,当现有规则中存在与本规则端口范围不同但其他条件相同(规则分组和IP范围相同)的规则时,对现有规则进行扩展,而不增加规则条目的数量。由于本申请实施例的新规则添加过程可以控制规则条目的数量,故可以优化匹配规则时的速度,减少规则冗余,进而能够提高系统的整体性能。
第一判断结果和第二判断结果可以反映新规则与现有规则的包含关系。在具体实现中,可以提供IP比较器,以支持第二目标规则分组包含的哈希表中的IP范围与新规则对应的IP范围之间的比较。类似地,可以提供端口比较器,以支持第二目标规则分组包含的哈希表中的目标IP范围对应的端口范围与新规则对应的端口范围之间的比较。
其中,所述目标IP范围为所述第二目标规则分组包含的哈希表中、包含所述新规则对应的IP范围的IP范围。
前面提到,一个规则条目可以包括:一个IP地址结构和n个端口结构。其中,目标IP范围可以对应一个IP地址结构。本申请实施例可以在IP范围的包含关系为包含、且在端口范围的包含关系为不包含的情况下,在目标IP范围所在的规则条目中增加一个新端口结构,这个新端口结构可以与所述新规则的端口范围相对应。
参照图8,示出了本申请一个实施例的规则的添加方法的流程示意图,其中,在接收到新规则的情况下,可以执行步骤801、步骤802、步骤803和步骤804。其中,新规则可以包含:数据包属性、IP范围、端口范围等信息,步骤801获取新规则对应的第二目标规则分组,步骤802提取IP范围,确定哈希键,步骤803提取端口范围,确定键值,步骤804获取第二目标规则分组中存储的哈希表;接着,可以执行步骤805,步骤805哈希键匹配(IP范围比较),用于验证IP范围是否具备包含关系;接着执行步骤806,步骤806键值匹配(端口范围比较),用于验证端口范围是否具备包含关系;在IP范围具备包含关系、以及端口范围具备包含关系的情况下,可以执行步骤807,步骤807不添加所述新规则,这样,可以减少规则冗余,提升匹配时的查找速度;在IP范围具备包含关系、以及端口范围不具备包含关系的情况下,可以执行步骤808,步骤808在目标IP范围所在的规则条目中增加新规则的端口范围对应的端口结构;这样,可以对现有规则进行扩充,不增加规则条目的数量,从而减少规则冗余,提升匹配时的查找速度。
需要说明的是,在第一判断结果为否的情况下,可以根据所述新规则对应的IP范围和端口范围,在第二目标规则分组中增加新规则条目,所述新规则条目包括:所述新规则对应的新IP结构和所述新IP结构对应的端口结构。其中,新IP结构可以与新规则对应的IP范围相对应,新IP结构对应的端口结构可以与新规则对应的端口范围相对应。
参照图9,示出了本申请一个实施例的规则添加方法的步骤流程图,具体可以如下步骤:
步骤901、获取新规则;
步骤902、进行有效性检测;
步骤903、判断规则是否有效,若是,则执行步骤904,否则结束流程;
步骤904、将新规则保存到链表;
步骤905、找到新规则对应的第二目标规则分组;具体而言,可以根据新规则对应的数据包属性,确定第二目标规则分组。
步骤906、针对新规则,计算哈希键;具体而言,根据新规则包含的IP范围,计算哈希键。
步骤907、取出对应数组;具体而言,取出哈希键对应的数组(也即端口结构);
步骤908、取出新规则中的端口范围;
步骤909、对数组进行二分查找;
步骤910、判断是否在数组中找到端口范围,若否,则执行步骤911,若是则结束流程;
步骤911、将端口范围有序插入到数组的键值中。
本申请实施例中,规则在Netfilter的钩子函数中用于进行规则验证,以处理接收到的数据包。同时,用户可以通过文件系统接口对规则进行修改和读取。为了提高性能和减少共享资源的竞争,本申请实施例引入了双缓存机制。
双缓存机制的原理是:在用户空间更新规则的情况下,将更新后的规则写入其中一块内存空间,而钩子函数在验证过程中使用另一块内存空间保存的历史规则,避免了等待规则更新完成的开销。一旦用户完成规则更新,两块内存空间的指针交换,使得新的规则同步到钩子函数中。相应地,本申请实施例的方法还可以包括:使用第一缓存保存历史的规则分组、以及使用第二缓存保存更新后的规则分组;在所述规则分组的更新完成后,对所述第一缓存和所述第二缓存分别对应的指针进行交换。
本申请实施例的双缓存机制带来了明显的优势。在未采用双缓存机制的情况下,在规则的读写和验证过程中,存在大量共享资源的竞争,降低效率和带来性能瓶颈。而本申请实施例通过双缓存机制,减少了共享资源的竞争,提高了规则的更新速度和验证效率。
本申请实施例还可以采用互斥锁实现用户空间对规则的安全读写,以及通过自旋锁实现钩子函数对规则的安全访问。
互斥锁(Mutual Exclusion)是一种用于多线程编程的同步机制。它可以保证在任意时刻只有一个线程能够访问共享资源,从而避免了多个线程同时对共享资源进行写操作导致的数据不一致问题。自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分。
相应地,本申请实施例的方法还可以包括:在对规则分组进行更新之前,将所述第二缓存对应的互斥锁上锁,并对规则分组执行更新操作;在完成规则分组的更新后,将所述第一缓存对应的自旋锁上锁,交换所述第一缓存和所述第二缓存分别对应的指针;在完成指针的交换后,将自旋锁解锁,将更新后的规则分组保存至第一缓存,并将所述第二缓存对应的互斥锁解锁。
参照图10,示出了本申请一个实施例的规则处理方法的步骤流程图,具体可以包括如下步骤:
步骤1001、线程表指针初始化为缓存2;
步骤1002、中断表指针初始化为缓存1;
步骤1003、初始化互斥锁与原子锁。
中断表和线程表分别对应双缓存机制中的两块内存,中断表和线程表是双缓存策略中的两个关键数据结构,中断表用于在中断中进行操作,而线程表则在线程中使用。在本申请实施例中,Netfilter的钩子函数是在中断中被调用的,而中断中的执行需要尽可能地快速完成。因此,为了减少中断中的锁竞争,自旋锁在线程中的规则更新完成后执行两块内存指针的交换时使用,这个过程较短。在其他时刻,自旋锁的使用限定在中断中。上述处理手段遵循了中断中应尽可能快速执行的原则。
参照图11,示出了本申请一个实施例的规则的读写和验证方法的步骤流程图,具体可以包括如下步骤:
步骤1101、互斥锁上锁;
步骤1102、保存更新后规则到链表;
步骤1103、保存更新后规则到线程表;
步骤1104、自旋锁上锁;
步骤1105、交换线程表与中断表的指针;
步骤1106、自旋锁解锁;
步骤1107、保存更新后规则到线程表;由于前面将线程表与中断表的指针进行了交换,故线程表指向的是历史规则,故保存更新后规则到线程表,以使线程表执行更新后规则。
步骤1108、互斥锁解锁。
本申请实施例的双缓存机制,能够实现如下技术效果:
首先,通过引入双缓存机制,本申请实施例解决了在用户空间设置规则时存在的共享资源竞争问题。多个线程或进程同时访问和修改规则可能导致竞争和冲突,降低系统性能和可靠性。而通过双缓存机制,可以有效减少资源竞争。
其次,双缓存机制还能提升系统性能和效率。在用户空间更新规则的情况下,更新后的规则会被写入第二缓存,而内核使用第一缓存保存历史规则。这使得内核在后台可以异步进行规则交换,而不会中断实际的过滤和处理操作。这种异步交换方式提高了系统的响应性和处理速度。
再者,双缓存机制实现了实时过滤和处理的连续性。通过使用次新规则,内核空间可以继续进行过滤和处理操作,而后台基于指针交换进行的规则交换不会中断实际的操作。这使得操作系统能够实时响应网络流量,并持续进行准确的过滤和处理。
综上,本申请实施例的双缓存机制能够起到减少资源竞争、提升系统性能和效率,以及保持实时过滤和处理的有益效果。双缓存机制的引入提高了系统的稳定性、可靠性和响应性,从而为网络流量管理和规则的实施提供了更好的基础。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
装置实施例
在上述实施例的基础上,本实施例还提供了一种数据包的处理装置,参照图12,该装置具体可以包括:构建模块1201、数据包接收模块1202、第一分组确定模块1203、哈希匹配模块1204和执行模块1205。
其中,构建模块1201,用于根据规则包含的IP范围、端口范围和行为信息,构建数据包属性对应的规则分组;不同的数据包属性对应不同的规则分组;所述规则分组包括:哈希表,所述哈希表包括:IP范围对应的哈希键、以及端口范围对应的键值;所述键值对应有第一预设行为;
数据包接收模块1202,用于接收数据包;
第一分组确定模块1203,用于根据所述数据包对应的数据包属性,确定所述数据包对应的第一目标规则分组;
哈希匹配模块1204,用于对第一目标规则分组包含的哈希表与所述数据包对应的头部信息进行匹配,以得到匹配成功的目标键值、以及所述目标键值对应的第一预设行为;
执行模块1205,用于执行所述目标键值对应的第一预设行为。
可选地,所述数据包属性包括如下属性中的至少一种:流量方向、IP版本和传输层协议。
可选地,所述装置还可以包括:
请求接收模块,用于接收规则添加请求;所述规则添加请求中包含新规则;
第二分组确定模块,用于确定所述规则添加请求对应的第二目标规则分组;
第一判断模块,用于判断第二目标规则分组包含的哈希表中的IP范围是否包含所述新规则对应的IP范围,以得到第一判断结果;
第二判断模块,用于在第一判断结果为是的情况下,判断第二目标规则分组包含的哈希表中的目标IP范围对应的端口范围是否包含所述新规则对应的端口范围,以得到第二判断结果;
添加处理模块,用于在第二判断结果为是的情况下,不添加所述新规则;或者,在第二判断结果为否的情况下,在所述目标IP范围所在的规则条目中增加所述新规则的端口范围对应的端口结构。
可选地,所述装置还可以包括:
条目增加模块,用于在第一判断结果为否的情况下,根据所述新规则对应的IP范围和端口范围,在第二目标规则分组中增加新规则条目,所述新规则条目可以包括:所述新规则对应的新IP结构和所述新IP结构对应的端口结构。
可选地,所述装置还可以包括:
缓存模块,用于使用第一缓存保存历史的规则分组、以及使用第二缓存保存更新后的规则分组;
交换模块,用于在所述规则分组的更新完成后,对所述第一缓存和所述第二缓存分别对应的指针进行交换。
可选地,所述装置还可以包括:
第一锁处理模块,用于在对规则分组进行更新之前,将所述第二缓存对应的互斥锁上锁,并对规则分组执行更新操作;
第二锁处理模块,用于在完成规则分组的更新后,将所述第一缓存对应的自旋锁上锁,交换所述第一缓存和所述第二缓存分别对应的指针;
第三锁处理模块,用于在完成指针的交换后,将自旋锁解锁,将更新后的规则分组保存至第一缓存,并将所述第二缓存对应的互斥锁解锁。
可选地,所述装置还可以包括:
插入模块,用于将规则包含的进程标识插入红黑树结构;所述红黑树结构中包含的进程标识对应有第二预设行为;
所述执行模块,具体可以包括:
查找模块,用于根据所述数据包对应的进程标识,在所述红黑树结构中进行查找,以得到查找结果;
第二预设行为执行模块,用于在所述查找结果为查找命中的情况下,执行命中的进程标识对应的第二预设行为。
可选地,所述执行模块,具体可以包括:
正则匹配模块,用于利用正则表达式,从所述数据包的包体信息中获取目标内容;
第三预设行为执行模块,用于对预设关键词与所述目标内容进行匹配,若匹配成功,则执行所述预设关键词对应的第三预设行为。
可选地,所述执行模块可以包括:
分类模块,用于利用长短期记忆网络模型,确定所述数据包的包体信息对应的分类结果;
第四预设行为执行模块,用于执行所述分类结果对应的第四预设行为。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例中各方法步骤的指令(instructions)。
本申请实施例提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个所述的方法。本申请实施例中,所述电子设备包括终端设备、服务器(集群)等各类型的设备。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的装置,该装置可包括:终端设备、服务器(集群)等电子设备。图13示意性地示出了可被用于实现本申请中所述的各个实施例的示例性装置1100 。
对于一个实施例,图13示出了示例性装置1300,该装置具有一个或多个处理器1302、被耦合到(一个或多个)处理器1302中的至少一个的控制模块(芯片组)1304、被耦合到控制模块1304的存储器1306、被耦合到控制模块1304的非易失性存储器(NVM)/存储设备1308、被耦合到控制模块1304的一个或多个输入/输出设备1310,以及被耦合到控制模块1304的网络接口1312。
处理器1302可包括一个或多个单核或多核处理器,处理器1302可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,装置1300 能够作为本申请实施例中所述终端设备、服务器(集群)等设备。
在一些实施例中,装置1300 可包括具有指令1314的一个或多个计算机可读介质(例如,存储器1306或NVM/ 存储设备1308) 以及与该一个或多个计算机可读介质相合并被配置为执行指令1314以实现模块从而执行本公开中所述的动作的一个或多个处理器1302。
对于一个实施例,控制模块1304可包括任意适当的接口控制器,以向(一个或多个)处理器1302中的至少一个和/或与控制模块1304通信的任意适当的设备或组件提供任意适当的接口。
控制模块1304可包括存储器控制器模块,以向存储器1306提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
存储器1306可被用于例如为装置1300加载和存储数据和/或指令1314。对于一个实施例,存储器1306可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,存储器1306可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM) 。
对于一个实施例,控制模块1304可包括一个或多个输入/输出控制器,以向NVM/存储设备1308及(一个或多个)输入/输出设备1310 提供接口。
例如,NVM/存储设备1308可被用于存储数据和/或指令1314。NVM/存储设备1308可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD) 、一个或多个光盘(CD) 驱动器和/或一个或多个数字通用光盘(DVD) 驱动器)。
NVM/存储设备1308可包括在物理上作为装置1300被安装在其上的设备的一部分的存储资源,或者其可被该设备访问可不必作为该设备的一部分。例如, NVM/存储设备1308可通过网络经由(一个或多个)输入/输出设备1310 进行访问。
(一个或多个)输入/输出设备1310 可为装置1300 提供接口以与任意其他适当的设备通信,输入/输出设备1310可以包括通信组件、音频组件、传感器组件等。网络接口1312可为装置1300 提供接口以通过一个或多个网络通信,装置1300 可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi、2G、3G、4G、5G等,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器(例如,存储器控制器模块) 的逻辑封装在一起。对于一个实施例,(一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP) 。对于一个实施例, (一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例, (一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,装置1300可以但不限于是:服务器、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。在各个实施例中,装置1300 可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置1300包括一个或多个摄像机、键盘、液晶显示器(LCD) 屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC) 和扬声器。
其中,检测装置中可采用主控芯片作为处理器或控制模块,传感器数据、位置信息等存储到存储器或NVM/存储设备中,传感器组可作为输入/输出设备,通信接口可包括网络接口。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种数据包的处理方法和装置、一种电子设备和一种机器可读介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (12)

1.一种数据包的处理方法,其特征在于,所述方法包括:
根据规则包含的IP范围、端口范围和行为信息,构建数据包属性对应的规则分组;不同的数据包属性对应不同的规则分组;所述规则分组包括:哈希表;所述哈希表包括:IP范围对应的哈希键、以及端口范围对应的键值;所述键值对应有第一预设行为;
接收数据包;
根据所述数据包对应的数据包属性,确定所述数据包对应的第一目标规则分组;
对所述第一目标规则分组包含的哈希表与所述数据包对应的头部信息进行匹配,以得到匹配成功的目标键值、以及所述目标键值对应的第一预设行为;
执行所述目标键值对应的第一预设行为。
2.根据权利要求1所述的方法,其特征在于,所述数据包属性包括如下属性中的至少一种:流量方向、IP版本和传输层协议。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收规则添加请求;所述规则添加请求中包含新规则;
确定所述规则添加请求对应的第二目标规则分组;
判断所述第二目标规则分组包含的哈希表中的IP范围是否包含所述新规则对应的IP范围,以得到第一判断结果;
在所述第一判断结果为是的情况下,判断所述第二目标规则分组包含的哈希表中的目标IP范围对应的端口范围是否包含所述新规则对应的端口范围,以得到第二判断结果;所述目标IP范围为所述第二目标规则分组包含的哈希表中、包含所述新规则对应的IP范围的IP范围;
在所述第二判断结果为是的情况下,不添加所述新规则;或者,在所述第二判断结果为否的情况下,在所述目标IP范围所在的规则条目中增加所述新规则的端口范围对应的端口结构。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述第一判断结果为否的情况下,根据所述新规则对应的新IP范围和新端口范围,在所述第二目标规则分组中增加新规则条目,所述新规则条目包括:所述新规则对应的新IP结构和所述新IP结构对应的端口结构。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
使用第一缓存保存历史的规则分组、以及使用第二缓存保存更新后的规则分组;
在所述规则分组的更新完成后,对所述第一缓存和所述第二缓存分别对应的指针进行交换。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在对所述规则分组进行更新之前,将所述第二缓存对应的互斥锁上锁,并对所述规则分组执行更新操作;
在完成所述规则分组的更新后,将所述第一缓存对应的自旋锁上锁,交换所述第一缓存和所述第二缓存分别对应的指针;
在完成指针的交换后,将所述自旋锁解锁,将更新后的规则分组保存至第一缓存,并将所述第二缓存对应的互斥锁解锁。
7.根据权利要求1至6中任一所述的方法,其特征在于,所述方法还包括:
将规则包含的进程标识插入红黑树结构;所述红黑树结构中包含的进程标识对应有第二预设行为;
所述执行所述目标键值对应的第一预设行为,包括:
根据所述数据包对应的进程标识,在所述红黑树结构中进行查找,以得到查找结果;
在所述查找结果为查找命中的情况下,执行命中的进程标识对应的第二预设行为。
8.根据权利要求1至6中任一所述的方法,其特征在于,所述执行所述目标键值对应的第一预设行为,包括:
利用正则表达式,从所述数据包的包体信息中获取目标内容;
对预设关键词与所述目标内容进行匹配,若匹配成功,则执行所述预设关键词对应的第三预设行为。
9.根据权利要求1至6中任一所述的方法,其特征在于,所述执行所述目标键值对应的第一预设行为,包括:
利用长短期记忆网络模型,确定所述数据包的包体信息对应的分类结果;
执行所述分类结果对应的第四预设行为。
10.一种数据包的处理装置,其特征在于,所述装置包括:
构建模块,用于根据规则包含的IP范围、端口范围和行为信息,构建数据包属性对应的规则分组;不同的数据包属性对应不同的规则分组;所述规则分组包括:哈希表,所述哈希表包括:IP范围对应的哈希键、以及端口范围对应的键值;所述键值对应有第一预设行为;
数据包接收模块,用于接收数据包;
第一分组确定模块,用于根据所述数据包对应的数据包属性,确定所述数据包对应的第一目标规则分组;
哈希匹配模块,用于对第一目标规则分组包含的哈希表与所述数据包对应的头部信息进行匹配,以得到匹配成功的目标键值、以及所述目标键值对应的第一预设行为;
执行模块,用于执行所述目标键值对应的第一预设行为。
11.一种电子设备,其特征在于,包括:处理器;和
存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如权利要求1-9中任一项所述的方法。
12.一种机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如权利要求1-9中任一项所述的方法。
CN202311279319.8A 2023-10-07 2023-10-07 数据包的处理方法、装置、电子设备和介质 Pending CN117041392A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311279319.8A CN117041392A (zh) 2023-10-07 2023-10-07 数据包的处理方法、装置、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311279319.8A CN117041392A (zh) 2023-10-07 2023-10-07 数据包的处理方法、装置、电子设备和介质

Publications (1)

Publication Number Publication Date
CN117041392A true CN117041392A (zh) 2023-11-10

Family

ID=88635771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311279319.8A Pending CN117041392A (zh) 2023-10-07 2023-10-07 数据包的处理方法、装置、电子设备和介质

Country Status (1)

Country Link
CN (1) CN117041392A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101631328A (zh) * 2009-08-14 2010-01-20 北京星网锐捷网络技术有限公司 一种对共享资源互斥访问的同步方法、装置和网络设备
US20170237706A1 (en) * 2014-07-18 2017-08-17 Zte Corporation Method and apparatus for setting network rule entry
CN112769973A (zh) * 2020-12-25 2021-05-07 清华大学 一种网络地址与网络地址转换规则的匹配方法
CN114374569A (zh) * 2022-03-22 2022-04-19 北京指掌易科技有限公司 一种报文的检测方法、装置、电子设备和存储介质
CN115842671A (zh) * 2022-11-24 2023-03-24 深信服科技股份有限公司 一种规则处理方法、设备和存储介质
CN116132187A (zh) * 2023-02-23 2023-05-16 北京京航计算通讯研究所 一种数据包过滤方法及系统
US20230247001A1 (en) * 2022-01-28 2023-08-03 Crowdstrike, Inc. Firewall System for Controlling Data Flow Between Computing Resources

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101631328A (zh) * 2009-08-14 2010-01-20 北京星网锐捷网络技术有限公司 一种对共享资源互斥访问的同步方法、装置和网络设备
US20170237706A1 (en) * 2014-07-18 2017-08-17 Zte Corporation Method and apparatus for setting network rule entry
CN112769973A (zh) * 2020-12-25 2021-05-07 清华大学 一种网络地址与网络地址转换规则的匹配方法
US20230247001A1 (en) * 2022-01-28 2023-08-03 Crowdstrike, Inc. Firewall System for Controlling Data Flow Between Computing Resources
CN114374569A (zh) * 2022-03-22 2022-04-19 北京指掌易科技有限公司 一种报文的检测方法、装置、电子设备和存储介质
CN115842671A (zh) * 2022-11-24 2023-03-24 深信服科技股份有限公司 一种规则处理方法、设备和存储介质
CN116132187A (zh) * 2023-02-23 2023-05-16 北京京航计算通讯研究所 一种数据包过滤方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
沈凤仙等: "基于Netfilter的实时网页内容过滤器的设计与实现", 微电子学与计算机, no. 07 *
郑瑞卿等: "操作系统同步研究――Linux内核同步机制", 电脑知识与技术, no. 35 *

Similar Documents

Publication Publication Date Title
JP6449886B2 (ja) オブジェクトネットワークをモデル化するシステム及び方法
D’Osualdo et al. Automatic verification of Erlang-style concurrency
TWI486810B (zh) 在狀態機晶格中之計數器操作
US8250590B2 (en) Apparatus, system, and method for seamless multiple format metadata abstraction
US11048669B2 (en) Replicated state management using journal-based registers
WO2022057739A1 (zh) 数据分区存储方法、装置及系统
US10656850B2 (en) Efficient volume replication in a storage system
US10248471B2 (en) Lockless execution in read-mostly workloads for efficient concurrent process execution on shared resources
EP2466463A2 (en) Process safe read/write locks
US20210073410A1 (en) Secure dataset management
US20200364211A1 (en) Predictive database index modification
CN111666330A (zh) 数据的读写方法和装置
CN111309466A (zh) 一种基于云平台多线程调度的方法、系统、设备及介质
US20240061599A1 (en) Method and system for processing file read-write service, device, and medium
US10872085B2 (en) Recording lineage in query optimization
WO2021088744A1 (zh) 能力的管理方法和计算机设备
CN117041392A (zh) 数据包的处理方法、装置、电子设备和介质
US11803649B2 (en) Fast access to a data resource update in a blockchain network
US9223780B2 (en) Non-blocking caching technique
US11500837B1 (en) Automating optimizations for items in a hierarchical data store
US20140068173A1 (en) Content addressable memory scheduling
US20200175163A1 (en) Feedback-directed static analysis
US20230237095A1 (en) Metadata for Graph Connected Databases
US20230140645A1 (en) Automatic detection of deserialization attacks with markov chains
US11550572B2 (en) Splitting vector instructions into microinstructions for parallel execution based on index comparisons of completed microinstructions

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