CN115348189A - 基于sav架构的报文匹配方法、装置和计算机设备 - Google Patents
基于sav架构的报文匹配方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN115348189A CN115348189A CN202211270289.XA CN202211270289A CN115348189A CN 115348189 A CN115348189 A CN 115348189A CN 202211270289 A CN202211270289 A CN 202211270289A CN 115348189 A CN115348189 A CN 115348189A
- Authority
- CN
- China
- Prior art keywords
- matching
- message
- engine
- segment
- matched
- 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.)
- Granted
Links
Images
Classifications
-
- 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/028—Capturing of monitoring data by filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及一种基于SAV架构的报文匹配方法、装置和计算机设备,属于网络报文匹配技术领域。所述方法包括:通过构建包括报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎和验证引擎的SAV架构进行报文匹配;根据报文调度器配置多个由移位运算和或运算预过滤引擎和锚定DFA引擎组成的匹配模块接收相同的待匹配报文流并提取待匹配报文流中的报文元信息;根据移位运算和或运算预过滤引擎和锚定DFA引擎对待匹配报文流中不同字节长度的规则片段进行两次匹配;根据验证引擎对片段匹配结果进行匹配结果验证。采用本方法能够提高网络报文的匹配性能,提升数据传输速率和网络吞吐率。
Description
技术领域
本申请涉及网络报文匹配技术领域,特别是涉及一种基于SAV架构的报文匹配方法、装置和计算机设备。
背景技术
深度报文检测技术是高速网络监测技术中的一项重要技术,也是特征识别的核心技术,被广泛地应用于流量计费、应用层协议识别、入侵检测系统、网络监控系统、计算机取证系统等领域。随着互联网的发展与应用,当前网络也越来越依赖于深度报文检测技术来对报文净荷部分关键字符进行识别、检测。
目前,传统的深度报文检测技术主要包括精确字符串匹配和正则表达式匹配。其中,由于病毒、垃圾信息等采用隐蔽手段层出不穷,仅仅依靠字符串匹配难以确定报文特征进行匹配。而正则表达式匹配以其灵活、高效的表达能力受到越来越广泛的应用。但是,在当今网络带宽与入侵规则集规模日益增大的背景下,传统的深度报文检测技术主要面临两个挑战:第一个是网络报文匹配时间复杂度问题,随着网络应用的发展,需要检测的特征数量越来越多,特征复杂度也越来越大,导致匹配过程越来越复杂;第二挑战是性能要求,随着互联网流量爆发式增加,对报文检测系统处理带宽能力、线速处理能力都有很高的要求,但是目前的深度报文检测技术无法达到这一要求。
发明内容
基于此,有必要针对上述技术问题,提供一种能够实现高效率报文匹配,提高网络吞吐率的基于SAV架构的报文匹配方法、装置和计算机设备。
一种基于SAV架构的报文匹配方法,所述方法包括:
构建包括报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎和验证引擎的SAV架构;其中,报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎运行在FPGA芯片的核心逻辑中,验证引擎运行在FPGA芯片的硬核处理器中;
根据报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块接收相同的待匹配报文流并提取待匹配报文流中的报文元信息;其中,每个匹配模块包括一个移位运算和或运算预过滤引擎和对应的一个锚定DFA引擎;
根据移位运算和或运算预过滤引擎对待匹配报文流中不同字节长度的规则片段进行第一次匹配,得到片段匹配偏移和桶标识符;将待匹配报文流、匹配偏移和桶标识符输入锚定DFA引擎进行第二次匹配,得到片段匹配结果;
通过直接存储访问将报文元信息、片段匹配结果、片段匹配结果对应的匹配片段报文内容和匹配模块完成匹配时发送的匹配完成信息输入硬核处理器的内存中进行存储,并根据验证引擎对片段匹配结果进行匹配结果验证,完成报文匹配。
在其中一个实施例中,根据报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块接收相同的待匹配报文流并提取待匹配报文流中的报文元信息,包括:
根据报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块连接报文调度器上的同一接口接收相同的待匹配报文流,并提取待匹配报文流中的报文元信息。
在其中一个实施例中,根据移位运算和或运算预过滤引擎对待匹配报文流中不同字节长度的规则片段进行第一次匹配,得到片段匹配偏移和桶标识符,包括:
当规则片段的长度为两字节时,根据移位运算和或运算预过滤引擎中的直接过滤单元对待匹配报文流进行两字节的规则片段匹配,得到两字节规则片段的片段匹配偏移和对应的桶标识符;
当规则片段的长度为3至8字节时,根据移位运算和或运算预过滤引擎中的异或过滤单元对待匹配报文流进行3至8字节的规则片段匹配,得到3至8字节规则片段的片段匹配偏移和对应的桶标识符。
在其中一个实施例中,当规则片段的长度为两字节时,根据移位运算和或运算预过滤引擎中的直接过滤单元对待匹配报文流进行两字节的规则片段匹配,得到两字节规则片段的片段匹配偏移和对应的桶标识符,包括:
计算两字节规则片段的位索引,根据位索引查询两字节规则片段的位向量,当位向量为1时,根据直接过滤单元对两字节规则片段进行匹配,得到两字节规则片段的片段匹配偏移和对应的十六进制桶标识符;否则,两字节规则片段不进行匹配。
在其中一个实施例中,当规则片段的长度为3至8字节时,根据移位运算和或运算预过滤引擎中的异或过滤单元对待匹配报文流进行3至8字节的规则片段匹配,得到3至8字节规则片段的片段匹配偏移和对应的桶标识符,包括:
根据编译器对3至8字节规则片段中的输入字符进行编译,得到移位掩码表和接收掩码值,对输入字符的当前匹配状态进行记录,得到状态掩码值;
根据异或过滤单元计算输入字符对应的超字符,将超字符作为索引查询输入字符对应的移位掩码表,得到移位掩码值;
对状态掩码值进行左移处理后与移位掩码值进行或运算,得到状态掩码更新值;
将状态掩码更新值与接收掩码值进行或运算,若运算结果全为1时,3至8字节规则片段中的输入字符不进行匹配;否则,根据异或过滤单元对3至8字节规则片段中的输入字符进行匹配,得到3至8字节规则片段的片段匹配偏移和对应的二进制桶标识符。
在其中一个实施例中,锚定DFA引擎包括正向单元和逆向单元;
将待匹配报文流、匹配偏移和桶标识符输入锚定DFA引擎进行第二次匹配,得到片段匹配结果,包括:
将待匹配报文流、匹配偏移和桶标识符输入正向单元进行正向报文匹配,得到正向匹配结果;
将正向匹配结果输入逆向单元进行逆向报文匹配,得到片段匹配结果;其中,片段匹配结果包括匹配起始偏移、匹配终止偏移和分段标识符。
在其中一个实施例中,正向报文匹配和逆向报文匹配的具体步骤一致,匹配报文字节流的方向相反,其中,正向报文匹配和逆向报文匹配的具体步骤包括:
根据循环冗余校验哈希算法和字符位图构建正向单元和逆向单元的状态转移表,根据正向单元和逆向单元的输入字符、偏移位置和输入字符对应的当前匹配状态查询状态转移表,确定输入字符的下一匹配状态,得到正向匹配结果和片段匹配结果。
在其中一个实施例中,通过直接存储访问将报文元信息、片段匹配结果、片段匹配结果对应的匹配片段报文内容和匹配模块完成匹配时发送的匹配完成信息输入硬核处理器的内存中进行存储,包括:
匹配模块通过直接存储访问将报文元信息、片段匹配结果和匹配模块完成匹配时发送的匹配完成信息组成一个循环队列输入硬核处理器的内存中进行存储;
匹配模块通过直接存储访问将所有片段匹配结果对应的匹配片段报文内容组成一个内存池输入硬核处理器的内存中进行存储。
一种基于SAV架构的报文匹配装置,所述装置包括:
SAV架构构建模块,用于构建包括报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎和验证引擎的SAV架构;其中,报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎运行在FPGA芯片的核心逻辑中,验证引擎运行在FPGA芯片的硬核处理器中;
报文调度模块,用于根据报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块接收相同的待匹配报文流并提取待匹配报文流中的报文元信息;其中,每个匹配模块包括一个移位运算和或运算预过滤引擎和对应的一个锚定DFA引擎;
报文匹配模块,用于根据移位运算和或运算预过滤引擎对待匹配报文流中不同字节长度的规则片段进行第一次匹配,得到片段匹配偏移和桶标识符;将待匹配报文流、匹配偏移和桶标识符输入锚定DFA引擎进行第二次匹配,得到片段匹配结果;
存储验证模块,用于通过直接存储访问将报文元信息、片段匹配结果、片段匹配结果对应的匹配片段报文内容和匹配模块完成匹配时发送的匹配完成信息输入硬核处理器的内存中进行存储,并根据验证引擎对片段匹配结果进行匹配结果验证,完成报文匹配。
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
构建包括报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎和验证引擎的SAV架构;其中,报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎运行在FPGA芯片的核心逻辑中,验证引擎运行在FPGA芯片的硬核处理器中;
根据报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块接收相同的待匹配报文流并提取待匹配报文流中的报文元信息;其中,每个匹配模块包括一个移位运算和或运算预过滤引擎和对应的一个锚定DFA引擎;
根据移位运算和或运算预过滤引擎对待匹配报文流中不同字节长度的规则片段进行第一次匹配,得到片段匹配偏移和桶标识符;将待匹配报文流、匹配偏移和桶标识符输入锚定DFA引擎进行第二次匹配,得到片段匹配结果;
通过直接存储访问将报文元信息、片段匹配结果、片段匹配结果对应的匹配片段报文内容和匹配模块完成匹配时发送的匹配完成信息输入硬核处理器的内存中进行存储,并根据验证引擎对片段匹配结果进行匹配结果验证,完成报文匹配。
上述基于SAV架构的报文匹配方法、装置和计算机设备,通过构建包括报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎和验证引擎的SAV架构进行报文匹配,其中,根据报文调度器配置多个由移位运算和或运算预过滤引擎和锚定DFA引擎组成的匹配模块为一组,设置每组匹配模块接收相同的待匹配报文流并提取待匹配报文流中的报文元信息,在报文流数据庞大的情况下,可以设置每组匹配模块同时匹配相同的报文流,提高报文匹配的效率;根据移位运算和或运算预过滤引擎和锚定DFA引擎对待匹配报文流中不同字节长度的规则片段进行两次匹配,利用移位运算和或运算预过滤引擎和锚定DFA引擎作为硬件的高运行速率,在资源占用最小的情况下,提高报文匹配性能;通过直接存储访问将报文元信息、片段匹配结果、匹配片段的报文内容和匹配模块完成匹配时发送的匹配完成信息输入硬核处理器的内存中进行存储,并根据验证引擎对片段匹配结果进行匹配结果验证,进一步提高了匹配结果的准确性,并且通过直接存储访问实现数据传输,不需要依赖硬核处理器中的大量负载,提高了数据传输速率和网络吞吐率。
附图说明
图1为一个实施例中基于SAV架构的报文匹配方法的流程示意图;
图2为一个实施例中SAV架构的结构框图;
图3为一个实施例中报文调度器调度同一个报文流到同一个匹配模块组的流程示意图;
图4为一个实施例中移位运算和或运算预过滤引擎的匹配流程示意图;
图5为一个实施例中直接过滤单元的匹配流程示意图;
图6为一个实施例中锚定DFA引擎的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种基于SAV架构的报文匹配方法,包括以下步骤:
步骤102,构建包括报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎和验证引擎的SAV架构;其中,报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎运行在FPGA芯片的核心逻辑中,验证引擎运行在FPGA芯片的硬核处理器中。
其中,SAV(Shift Anchor Verification,移位锚定验证)架构的结构框图如图2所示,FPGA (Field Programmable Gate Array,现场可编程逻辑门阵列)芯片中安装有硬核处理器(ARM),其能够完整运行Linux系统并调通FPGA的匹配结果传输至Linux的通道,硬核处理器中外挂有动态随机存储器,提高硬核处理器的内存,并保证网络的吞吐率,此外,报文调度器、移位运算和或运算(Shiftor)预过滤引擎、锚定DFA(Anchor DFA,锚定确定有限状态自动机)引擎以硬件形式运行在FPGA芯片的核心逻辑中,验证引擎以软件形式运行在FPGA芯片的硬核处理器中。
步骤104,根据报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块接收相同的待匹配报文流并提取待匹配报文流中的报文元信息;其中,每个匹配模块包括一个移位运算和或运算预过滤引擎和对应的一个锚定DFA引擎。
可以理解,由于FPGA内部资源受限,当待匹配报文流的规则集规模过大时,需要多个匹配模块共同完成一个报文流的匹配,通过报文调度器可以动态配置多个(1,2,3,...)匹配模块为一组,每一组匹配模块接受同样的报文流进行匹配,提高了报文的匹配效率。
步骤106,根据移位运算和或运算预过滤引擎对待匹配报文流中不同字节长度的规则片段进行第一次匹配,得到片段匹配偏移和桶标识符;将待匹配报文流、匹配偏移和桶标识符输入锚定DFA引擎进行第二次匹配,得到片段匹配结果。
可以理解,移位运算和或运算预过滤引擎对待匹配报文流中输入字符的主要开销是多次数组的访存和对位向量进行左移和或运算,并且移位运算和或运算引擎中的直接过滤单元和异或过滤单元(Xor filter)可以实现对不同字节长度的规则片段进行匹配,提高了片段匹配的准确度,此外,由于移位运算和或运算预过滤引擎可以匹配的规则片段的长度有限,对于待匹配报文流中的长字符串规则片段,可以进一步利用匹配模块中的锚定DFA引擎进行匹配,通过锚定DFA引擎将长字符串的匹配过程转换为状态转移,减小了长字符串规则片段的匹配复杂度。并且,通过将移位运算和或运算预过滤引擎和锚定DFA引擎组合成匹配模块进行报文匹配,使得匹配模块适用于对不同字符长度的报文流进行匹配,提高了报文匹配的普适性。
步骤108,通过直接存储访问将报文元信息、片段匹配结果、片段匹配结果对应的匹配片段报文内容和匹配模块完成匹配时发送的匹配完成信息输入硬核处理器的内存中进行存储,并根据验证引擎对片段匹配结果进行匹配结果验证,完成报文匹配。
可以理解,通过直接存储访问(DMA)实现数据传输,不需要依赖硬核处理器中的大量负载,传输数据时不影响硬核处理器的正常运行,提高了数据传输效率,并且,对于发生了匹配的报文,将匹配片段输入硬核处理器中的验证引擎进行进一步验证,提高了报文匹配结果的准确度。
上述基于SAV架构的报文匹配方法、装置和计算机设备,通过构建包括报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎和验证引擎的SAV架构进行报文匹配,其中,根据报文调度器配置多个由移位运算和或运算预过滤引擎和锚定DFA引擎组成的匹配模块为一组,设置每组匹配模块接收相同的待匹配报文流并提取待匹配报文流中的报文元信息,在报文流数据庞大的情况下,可以设置每组匹配模块同时匹配相同的报文流,提高报文匹配的效率;根据移位运算和或运算预过滤引擎和锚定DFA引擎对待匹配报文流中不同字节长度的规则片段进行两次匹配,利用移位运算和或运算预过滤引擎和锚定DFA引擎作为硬件的高运行速率,在资源占用最小的情况下,提高报文匹配性能;通过直接存储访问将报文元信息、片段匹配结果、匹配片段的报文内容和匹配模块完成匹配时发送的匹配完成信息输入硬核处理器中进行存储,并根据验证引擎对片段匹配结果进行匹配结果验证,进一步提高了匹配结果的准确性,并且通过直接存储访问实现数据传输,不需要依赖硬核处理器中的大量负载,提高了数据传输速率和网络吞吐率。
在其中一个实施例中,根据报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块接收相同的待匹配报文流并提取待匹配报文流中的报文元信息,包括:
根据报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块连接报文调度器上的同一接口接收相同的待匹配报文流,并提取待匹配报文流中的报文元信息。
具体地,如图3所示,当一个待匹配报文流中的规则集编译后需要占用4个匹配模块的资源时,根据报文调度器调度同一个报文流到同一组匹配模块(即接收同一个待匹配报文流的4个匹配模块)中,并根据匹配模块提取待匹配报文流中的报文元信息。
在其中一个实施例中,如图4所示,根据移位运算和或运算预过滤引擎对待匹配报文流中不同字节长度的规则片段进行第一次匹配,得到片段匹配偏移和桶标识符,包括:
当规则片段的长度为两字节时,根据移位运算和或运算预过滤引擎中的直接过滤单元对待匹配报文流进行两字节的规则片段匹配,得到两字节规则片段的片段匹配偏移和对应的桶标识符;
当规则片段的长度为3至8字节时,根据移位运算和或运算预过滤引擎中的异或过滤单元对待匹配报文流进行3至8字节的规则片段匹配,得到3至8字节规则片段的片段匹配偏移和对应的桶标识符。
具体地,当待匹配报文流为packet = "0a0b0a0c0a0d..."时,根据移位运算和或运算预过滤引擎中的直接过滤单元对待匹配报文流进行两字节的规则片段匹配,根据移位运算和或运算预过滤引擎中的异或过滤单元对待匹配报文流进行3至8字节的规则片段匹配。
在其中一个实施例中,当规则片段的长度为两字节时,根据移位运算和或运算预过滤引擎中的直接过滤单元对待匹配报文流进行两字节的规则片段匹配,得到两字节规则片段的片段匹配偏移和对应的桶标识符,包括:
计算两字节规则片段的位索引,根据位索引查询两字节规则片段的位向量,当位向量为1时,根据直接过滤单元对两字节规则片段进行匹配,得到两字节规则片段的片段匹配偏移和对应的十六进制桶标识符;否则,两字节规则片段不进行匹配。
具体地,对于待匹配报文流为packet = "0a0b0a0c0a0d...",直接过滤单元的匹配流程示意图如图5所示,具体步骤包括:对于输入前两字节规则片段0a0b,首先计算得到0a0b的位索引,对应于图中的2571;使用位索引查询0a0b的位向量,若对应位向量为1,表示发生匹配,此时汇报16进制桶标识符(bucket 16)在字符0a处(即偏移量为 0)发生匹配;否则表示未发生匹配;对后续两字节输入0a0c、0a0d等重复上述步骤。
在其中一个实施例中,当规则片段的长度为3至8字节时,根据移位运算和或运算预过滤引擎中的异或过滤单元对待匹配报文流进行3至8字节的规则片段匹配,得到3至8字节规则片段的片段匹配偏移和对应的桶标识符,包括:
根据编译器对3至8字节规则片段中的输入字符进行编译,得到移位掩码表和接收掩码值,对输入字符的当前匹配状态进行记录,得到状态掩码值;
根据异或过滤单元计算输入字符对应的超字符,将超字符作为索引查询输入字符对应的移位掩码表,得到移位掩码值;
对状态掩码值进行左移处理后与移位掩码值进行或运算,得到状态掩码更新值;
将状态掩码更新值与接收掩码值进行或运算,若运算结果全为1时,3至8字节规则片段中的输入字符不进行匹配;否则,根据异或过滤单元对3至8字节规则片段中的输入字符进行匹配,得到3至8字节规则片段的片段匹配偏移和对应的二进制桶标识符。
在其中一个实施例中,如图6所示,锚定DFA引擎包括正向单元和逆向单元;
将待匹配报文流、匹配偏移和桶标识符输入锚定DFA引擎进行第二次匹配,得到片段匹配结果,包括:
将待匹配报文流、匹配偏移和桶标识符输入正向单元进行正向报文匹配,得到正向匹配结果;其中,正向匹配结果包括待匹配报文流、正向匹配偏移,正向匹配结束信息,和正向匹配分段标识符。
将正向匹配结果输入逆向单元进行逆向报文匹配,得到片段匹配结果;其中,片段匹配结果包括匹配起始偏移、匹配终止偏移和分段标识符。
在其中一个实施例中,正向报文匹配和逆向报文匹配的具体步骤一致,匹配报文字节流的方向相反,其中,正向报文匹配和逆向报文匹配的具体步骤包括:
根据循环冗余校验(CRC)哈希算法和字符位图构建正向单元和逆向单元的状态转移表,根据正向单元和逆向单元的输入字符、偏移位置和输入字符对应的当前匹配状态查询状态转移表,确定输入字符的下一匹配状态,得到正向匹配结果和片段匹配结果。
在其中一个实施例中,通过直接存储访问将报文元信息、片段匹配结果、片段匹配结果对应的匹配片段报文内容和匹配模块完成匹配时发送的匹配完成信息输入硬核处理器的内存中进行存储,包括:
匹配模块通过直接存储访问将报文元信息、片段匹配结果和匹配模块完成匹配时发送的匹配完成信息组成一个循环队列输入硬核处理器的内存中进行存储;
匹配模块通过直接存储访问将所有片段匹配结果对应的匹配片段报文内容组成一个内存池输入硬核处理器的内存中进行存储。
具体地,报文元信息由匹配模块在处理新报文的开始时通过直接存储访问发送至硬核处理器的内存中,报文元信息包括报文标识符和报文长度。片段匹配结果由每一个匹配模块在锚定DFA引擎发生一次匹配时发送至硬核处理器的内存中。匹配完成信息是在一个匹配模块结束对一个报文匹配时发送至硬核处理器的内存中的信息,并且,匹配完成信息可以和前两类信息合并为一类信息,统称为匹配模块信息,通过类型(type)字段进行标识区分,其中type为0标识报文元信息、type为1标识片段匹配结果、type为2标识匹配完成信息。片段匹配结果对应的匹配片段报文内容在某些片段发生匹配时,由匹配模块发送至硬核处理器的内存中,当多个匹配模块(处理同一个报文流的匹配模块组)需要发送同一个报文时,仅发送一份匹配片段的报文内容,并且发送报文内容时,需要带上报文标识符标识报文内容归属。
具体地,若匹配片段需要进一步验证,可根据硬核处理器中的验证引擎对片段匹配结果进行匹配结果验证,验证引擎运行时需要的主要数据包括:各条规则的片段相对偏移信息、接收状态转移表,各条规则片段的匹配偏移信息。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,提供了一种基于SAV架构的报文匹配装置,包括:SAV架构构建模块、报文调度模块、报文匹配模块和存储验证模块,其中:
SAV架构构建模块,用于构建包括报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎和验证引擎的SAV架构;其中,报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎运行在FPGA芯片的核心逻辑中,验证引擎运行在FPGA芯片的硬核处理器中;
报文调度模块,用于根据报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块接收相同的待匹配报文流并提取待匹配报文流中的报文元信息;其中,每个匹配模块包括一个移位运算和或运算预过滤引擎和对应的一个锚定DFA引擎;
报文匹配模块,用于根据移位运算和或运算预过滤引擎对待匹配报文流中不同字节长度的规则片段进行第一次匹配,得到片段匹配偏移和桶标识符;将待匹配报文流、匹配偏移和桶标识符输入锚定DFA引擎进行第二次匹配,得到片段匹配结果;
存储验证模块,用于通过直接存储访问将报文元信息、片段匹配结果、片段匹配结果对应的匹配片段报文内容和匹配模块完成匹配时发送的匹配完成信息输入硬核处理器的内存中进行存储,并根据验证引擎对片段匹配结果进行匹配结果验证,完成报文匹配。
关于基于SAV架构的报文匹配装置的具体限定可以参见上文中对于基于SAV架构的报文匹配方法的限定,在此不再赘述。上述基于SAV架构的报文匹配装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储基于SAV架构的报文匹配数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于SAV架构的报文匹配方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
构建包括报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎和验证引擎的SAV架构;其中,报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎运行在FPGA芯片的核心逻辑中,验证引擎运行在FPGA芯片的硬核处理器中;
根据报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块接收相同的待匹配报文流并提取待匹配报文流中的报文元信息;其中,每个匹配模块包括一个移位运算和或运算预过滤引擎和对应的一个锚定DFA引擎;
根据移位运算和或运算预过滤引擎对待匹配报文流中不同字节长度的规则片段进行第一次匹配,得到片段匹配偏移和桶标识符;将待匹配报文流、匹配偏移和桶标识符输入锚定DFA引擎进行第二次匹配,得到片段匹配结果;
通过直接存储访问将报文元信息、片段匹配结果、片段匹配结果对应的匹配片段报文内容和匹配模块完成匹配时发送的匹配完成信息输入硬核处理器的内存中进行存储,并根据验证引擎对片段匹配结果进行匹配结果验证,完成报文匹配。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于SAV架构的报文匹配方法,其特征在于,所述方法包括:
构建包括报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎和验证引擎的SAV架构;其中,所述报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎运行在FPGA芯片的核心逻辑中,所述验证引擎运行在FPGA芯片的硬核处理器中;
根据所述报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块接收相同的待匹配报文流并提取所述待匹配报文流中的报文元信息;其中,每个匹配模块包括一个移位运算和或运算预过滤引擎和对应的一个锚定DFA引擎;
根据所述移位运算和或运算预过滤引擎对所述待匹配报文流中不同字节长度的规则片段进行第一次匹配,得到片段匹配偏移和桶标识符;将所述待匹配报文流、匹配偏移和桶标识符输入所述锚定DFA引擎进行第二次匹配,得到片段匹配结果;
通过直接存储访问将所述报文元信息、片段匹配结果、片段匹配结果对应的匹配片段报文内容和所述匹配模块完成匹配时发送的匹配完成信息输入硬核处理器的内存中进行存储,并根据所述验证引擎对所述片段匹配结果进行匹配结果验证,完成报文匹配。
2.根据权利要求1所述的方法,其特征在于,根据所述报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块接收相同的待匹配报文流并提取所述待匹配报文流中的报文元信息,包括:
根据所述报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块连接所述报文调度器上的同一接口接收相同的待匹配报文流,并提取所述待匹配报文流中的报文元信息。
3.根据权利要求1所述的方法,其特征在于,根据所述移位运算和或运算预过滤引擎对所述待匹配报文流中不同字节长度的规则片段进行第一次匹配,得到片段匹配偏移和桶标识符,包括:
当所述规则片段的长度为两字节时,根据所述移位运算和或运算预过滤引擎中的直接过滤单元对所述待匹配报文流进行两字节的规则片段匹配,得到两字节规则片段的片段匹配偏移和对应的桶标识符;
当所述规则片段的长度为3至8字节时,根据所述移位运算和或运算预过滤引擎中的异或过滤单元对所述待匹配报文流进行3至8字节的规则片段匹配,得到3至8字节规则片段的片段匹配偏移和对应的桶标识符。
4.根据权利要求3所述的方法,其特征在于,当所述规则片段的长度为两字节时,根据所述移位运算和或运算预过滤引擎中的直接过滤单元对所述待匹配报文流进行两字节的规则片段匹配,得到两字节规则片段的片段匹配偏移和对应的桶标识符,包括:
计算两字节规则片段的位索引,根据所述位索引查询所述两字节规则片段的位向量,当所述位向量为1时,根据所述直接过滤单元对所述两字节规则片段进行匹配,得到两字节规则片段的片段匹配偏移和对应的十六进制桶标识符;否则,所述两字节规则片段不进行匹配。
5.根据权利要求3所述的方法,其特征在于,当所述规则片段的长度为3至8字节时,根据所述移位运算和或运算预过滤引擎中的异或过滤单元对所述待匹配报文流进行3至8字节的规则片段匹配,得到3至8字节规则片段的片段匹配偏移和对应的桶标识符,包括:
根据编译器对3至8字节规则片段中的输入字符进行编译,得到移位掩码表和接收掩码值,对所述输入字符的当前匹配状态进行记录,得到状态掩码值;
根据所述异或过滤单元计算所述输入字符对应的超字符,将所述超字符作为索引查询所述输入字符对应的移位掩码表,得到移位掩码值;
对所述状态掩码值进行左移处理后与所述移位掩码值进行或运算,得到状态掩码更新值;
将所述状态掩码更新值与所述接收掩码值进行或运算,若运算结果全为1时,所述3至8字节规则片段中的输入字符不进行匹配;否则,根据所述异或过滤单元对所述3至8字节规则片段中的输入字符进行匹配,得到3至8字节规则片段的片段匹配偏移和对应的二进制桶标识符。
6.根据权利要求1所述的方法,其特征在于,所述锚定DFA引擎包括正向单元和逆向单元;
将所述待匹配报文流、匹配偏移和桶标识符输入所述锚定DFA引擎进行第二次匹配,得到片段匹配结果,包括:
将所述待匹配报文流、匹配偏移和桶标识符输入所述正向单元进行正向报文匹配,得到正向匹配结果;
将所述正向匹配结果输入所述逆向单元进行逆向报文匹配,得到片段匹配结果;其中,所述片段匹配结果包括匹配起始偏移、匹配终止偏移和分段标识符。
7.根据权利要求6所述的方法,其特征在于,所述正向报文匹配和逆向报文匹配的具体步骤一致,匹配报文字节流的方向相反,其中,所述正向报文匹配和逆向报文匹配的具体步骤包括:
根据循环冗余校验哈希算法和字符位图构建所述正向单元和逆向单元的状态转移表,根据所述正向单元和逆向单元的输入字符、偏移位置和所述输入字符对应的当前匹配状态查询所述状态转移表,确定所述输入字符的下一匹配状态,得到正向匹配结果和片段匹配结果。
8.根据权利要求1所述的方法,其特征在于,通过直接存储访问将所述报文元信息、片段匹配结果、片段匹配结果对应的匹配片段报文内容和所述匹配模块完成匹配时发送的匹配完成信息输入硬核处理器的内存中进行存储,包括:
所述匹配模块通过直接存储访问将所述报文元信息、片段匹配结果和所述匹配模块完成匹配时发送的匹配完成信息组成一个循环队列输入硬核处理器的内存中进行存储;
所述匹配模块通过直接存储访问将所有所述片段匹配结果对应的匹配片段报文内容组成一个内存池输入硬核处理器的内存中进行存储。
9.一种基于SAV架构的报文匹配装置,其特征在于,所述装置包括:
SAV架构构建模块,用于构建包括报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎和验证引擎的SAV架构;其中,所述报文调度器、移位运算和或运算预过滤引擎、锚定DFA引擎运行在FPGA芯片的核心逻辑中,所述验证引擎运行在FPGA芯片的硬核处理器中;
报文调度模块,用于根据所述报文调度器按照匹配规则的数量配置多个匹配模块为一组,设置同一组匹配模块接收相同的待匹配报文流并提取所述待匹配报文流中的报文元信息;其中,每个匹配模块包括一个移位运算和或运算预过滤引擎和对应的一个锚定DFA引擎;
报文匹配模块,用于根据所述移位运算和或运算预过滤引擎对所述待匹配报文流中不同字节长度的规则片段进行第一次匹配,得到片段匹配偏移和桶标识符;将所述待匹配报文流、匹配偏移和桶标识符输入所述锚定DFA引擎进行第二次匹配,得到片段匹配结果;
存储验证模块,用于通过直接存储访问将所述报文元信息、片段匹配结果、片段匹配结果对应的匹配片段报文内容和所述匹配模块完成匹配时发送的匹配完成信息输入硬核处理器的内存中进行存储,并根据所述验证引擎对所述片段匹配结果进行匹配结果验证,完成报文匹配。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211270289.XA CN115348189B (zh) | 2022-10-18 | 2022-10-18 | 基于sav架构的报文匹配方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211270289.XA CN115348189B (zh) | 2022-10-18 | 2022-10-18 | 基于sav架构的报文匹配方法、装置和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115348189A true CN115348189A (zh) | 2022-11-15 |
CN115348189B CN115348189B (zh) | 2022-12-16 |
Family
ID=83957707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211270289.XA Active CN115348189B (zh) | 2022-10-18 | 2022-10-18 | 基于sav架构的报文匹配方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115348189B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117574178A (zh) * | 2024-01-15 | 2024-02-20 | 国网湖北省电力有限公司信息通信公司 | 基于fpga的网络流量字符串自动匹配方法和匹配装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130136127A1 (en) * | 2011-11-30 | 2013-05-30 | Broadcom Corporation | System and Method for Efficient Matching of Regular Expression Patterns Across Multiple Packets |
CN105939284A (zh) * | 2016-01-08 | 2016-09-14 | 杭州迪普科技有限公司 | 报文控制策略的匹配方法及装置 |
CN106776456A (zh) * | 2017-01-18 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 基于fpga+npu的高速正则表达式匹配混合系统及方法 |
CN111177491A (zh) * | 2019-12-31 | 2020-05-19 | 奇安信科技集团股份有限公司 | 正则表达式的匹配方法、装置、电子设备及存储介质 |
CN111382327A (zh) * | 2020-05-29 | 2020-07-07 | 湖南戎腾网络科技有限公司 | 一种字符串匹配装置及方法 |
-
2022
- 2022-10-18 CN CN202211270289.XA patent/CN115348189B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130136127A1 (en) * | 2011-11-30 | 2013-05-30 | Broadcom Corporation | System and Method for Efficient Matching of Regular Expression Patterns Across Multiple Packets |
CN105939284A (zh) * | 2016-01-08 | 2016-09-14 | 杭州迪普科技有限公司 | 报文控制策略的匹配方法及装置 |
CN106776456A (zh) * | 2017-01-18 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 基于fpga+npu的高速正则表达式匹配混合系统及方法 |
CN111177491A (zh) * | 2019-12-31 | 2020-05-19 | 奇安信科技集团股份有限公司 | 正则表达式的匹配方法、装置、电子设备及存储介质 |
CN111382327A (zh) * | 2020-05-29 | 2020-07-07 | 湖南戎腾网络科技有限公司 | 一种字符串匹配装置及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117574178A (zh) * | 2024-01-15 | 2024-02-20 | 国网湖北省电力有限公司信息通信公司 | 基于fpga的网络流量字符串自动匹配方法和匹配装置 |
CN117574178B (zh) * | 2024-01-15 | 2024-04-26 | 国网湖北省电力有限公司信息通信公司 | 基于fpga的网络流量字符串自动匹配方法和匹配装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115348189B (zh) | 2022-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108256322B (zh) | 安全测试方法、装置、计算机设备和存储介质 | |
CN115348189B (zh) | 基于sav架构的报文匹配方法、装置和计算机设备 | |
CN111224782B (zh) | 基于数字签名的数据校验方法、智能设备及存储介质 | |
CN113946546B (zh) | 异常检测方法、计算机存储介质及程序产品 | |
CN108011850B (zh) | 数据包的重组方法及装置、计算机设备及可读介质 | |
CN115065623B (zh) | 一种主被动相结合的私有工控协议逆向分析方法 | |
CN112232957A (zh) | 交易共识方法、装置和电子设备 | |
CN114185808A (zh) | 自动化测试方法、装置、电子设备及计算机可读存储介质 | |
CN114785567B (zh) | 一种流量识别方法、装置、设备及介质 | |
Liu et al. | An index-based provenance compression scheme for identifying malicious nodes in multihop IoT network | |
CN111752819B (zh) | 一种异常监控方法、装置、系统、设备和存储介质 | |
CN113098852B (zh) | 一种日志处理方法及装置 | |
CN113568836A (zh) | 多时间序列的样本特征提取方法以应用其的软件检测方法 | |
CN109413450B (zh) | 一种弹幕数据的完整性校验方法、装置、终端及存储介质 | |
CN111262837A (zh) | 一种数据加密方法、数据解密方法、系统、设备和介质 | |
CN116432190A (zh) | 接口未授权访问检测方法、装置、计算机设备及存储介质 | |
CN114745216A (zh) | 一种动态接入方法及装置 | |
CN109558744B (zh) | 一种数据处理方法和系统 | |
CN113468574A (zh) | 一种区块链数据上链方法和装置 | |
CN112994931A (zh) | 一种规则匹配的方法及其设备 | |
Pechenkin et al. | Modeling the search for vulnerabilities via the fuzzing method using an automation representation of network protocols | |
CN109348304B (zh) | 一种弹幕数据的校验方法、装置及终端 | |
Kwon et al. | Recovery measure against disabling reassembly attack to DNP3 communication | |
CN109413505B (zh) | 一种弹幕数据的校验方法、装置、终端及存储介质 | |
CN117951704B (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 |