CN117574178B - 基于fpga的网络流量字符串自动匹配方法和匹配装置 - Google Patents
基于fpga的网络流量字符串自动匹配方法和匹配装置 Download PDFInfo
- Publication number
- CN117574178B CN117574178B CN202410055222.7A CN202410055222A CN117574178B CN 117574178 B CN117574178 B CN 117574178B CN 202410055222 A CN202410055222 A CN 202410055222A CN 117574178 B CN117574178 B CN 117574178B
- Authority
- CN
- China
- Prior art keywords
- message
- matching
- matched
- fpga
- complete network
- 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 36
- 230000011218 segmentation Effects 0.000 claims abstract description 41
- 238000012545 processing Methods 0.000 claims abstract description 18
- 238000004806 packaging method and process Methods 0.000 claims abstract description 12
- 238000001514 detection method Methods 0.000 claims description 24
- 230000009471 action Effects 0.000 claims description 19
- 238000007781 pre-processing Methods 0.000 claims 2
- 238000004422 calculation algorithm Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000004075 alteration Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种基于FPGA的网络流量字符串自动匹配方法和匹配装置,方法包括:将待匹配的完整网络报文封装成私有消息报文,FPGA对接收到的私有消息报文进行解封装,提取其中的字符串;判断待匹配的完整网络报文是否需要分段匹配,若是,则将待匹配的完整网络报文分为若干个报文段,并将每一个报文段发送给对应的字节比较器;基于每一个字节比较器将报文段中的字符串与状态机中的模式串集进行匹配,输出匹配结果。本发明相较于传统的串行匹配方式,基于FPGA的并行处理功能,通过对输入的报文数据进行分段并行匹配可以大幅提升匹配效率,在海量网络流量数据下具有显著的优势。
Description
技术领域
本发明涉及网络通信安全或数据通信领域,更具体地,涉及一种基于FPGA的网络流量字符串自动匹配方法和匹配装置。
背景技术
随着网络的普及和发展,特别是移动互联网的兴起,需要处理的网络流量不断增长,同时网络上潜在的安全隐患越来越严重,如何快速高效地处理大规模数据是网络安全领域亟需解决的问题之一,因此对网络内容的检测尤为重要。而字符串匹配算法正是网络内容检测的核心技术,如何提高串匹配算法的性能成为了当前网络安全领域研究的重点。
Aho-Corasick(AC)算法是一种广泛使用的多模式字符串匹配算法,算法通过构建表示一组模式串的自动机来进行匹配查询,自动机根据输入的字符串逐字节进行状态跳转,直到完成整个输入的检测,算法执行一次搜索,即可完成多个模式串的匹配,整个时间复杂度只与输入的字符串数据长度有关,所以作为一种高效的多模式字符串匹配算法,AC算法在深度包监测(Deep Packet Inspection,DPI)引擎中具有关键的作用。然而,随着网络流量的增长,DPI面临严峻的性能挑战,传统的串行模式匹配方式难以适应当前高速多变的网络环境,因此通过并行处理方式来替代传统的串行处理方式是一个有效提升多模式字符串匹配性能的思路。同时,AC算法需要根据关键字符模式集来构建自动机,当关键字符模式集的规模较大时,每次初始化AC引擎构建自动机就需要耗费大量的时间。除此之外,传统的AC匹配引擎是基于软件实现的,操作系统中的所有事务都需要CPU来进行调度,CPU处理数据的性能有限,会对高速多模式字符串匹配的性能产生影响,而随着FPGA等硬件的发展,如何设计一种基于FPGA硬件的网络网络流量字符串匹配装置来提高多模式字符串匹配的性能是需要思考的一个问题。
发明内容
本发明针对现有技术中存在的技术问题,提供一种基于FPGA的网络流量字符串自动匹配方法及匹配装置。
根据本发明的第一方面,提供了一种基于FPGA的网络流量字符串自动匹配方法,所述FPGA包括RAM存储单元和多个字节比较器,所述方法包括:
将待匹配的完整网络报文封装成私有消息报文,并发送给所述FPGA;
基于FPGA对接收到的私有消息报文进行解封装,将所述私有消息报文中的字符串存储于RAM存储单元中;
判断待匹配的完整网络报文是否需要分段匹配,若是,则将待匹配的完整网络报文分为若干个报文段,并将每一个报文段发送给对应的字节比较器;
基于每一个字节比较器将报文段中的字符串与状态机中的模式串集进行匹配,输出匹配结果;
FPGA根据每一个字节比较器输出的匹配结果,封装成私有消息返回。
根据本发明的第二方面,提供一种基于FPGA的网络流量字符串自动匹配装置,包括处理模块和FPGA,所述FPGA包括RAM存储单元和多个字节比较器;
所述处理模块,用于将待匹配的完整网络报文封装成私有消息报文,并发送给所述FPGA;
所述FPGA,用于对接收到的私有消息报文进行解封装,将所述私有消息报文中的字符串存储于RAM存储单元中;以及判断待匹配的完整网络报文是否需要分段匹配,若是,则将待匹配的完整网络报文分为若干个报文段,并将每一个报文段发送给对应的字节比较器;还用于根据每一个字节比较器输出的匹配结果,封装成私有消息返回;
每一个字节比较器,用于将报文段中的字符串与状态机中的模式串集进行匹配,输出匹配结果。
本发明提供的一种基于FPGA的网络流量字符串自动匹配方法及匹配装置,在FPGA中配置多个字节比较器,将待匹配的报文数据分为多个报文段,利用FPGA中的多个字节比较器对多个报文段并行进行匹配,相较于传统的串行匹配方式,基于FPGA的并行处理功能,通过对输入的报文数据进行分段并行匹配可以大幅提升匹配效率,在海量网络流量数据下具有显著的优势。
附图说明
图1为本发明提供的一种基于FPGA的网络流量字符串自动匹配方法流程图;
图2为本发明所涉及的硬件和软件部分的示意图;
图3为三个状态信息表的示意图;
图4为私有消息报文的协议格式示意图;
图5为分段并行匹配报文的示意图;
图6为待匹配报文的匹配过程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,本发明提供的各个实施例或单个实施例中的技术特征可以相互任意结合,以形成可行的技术方案,这种结合不受步骤先后次序和/或结构组成模式的约束,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时,应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
为了提升多模式字符串匹配的性能以满足当前高速网络的处理需求,本发明充分利用FPGA处理数据的实时、高效、并行等特点,并在分析AC匹配算法的基础上,提出了一种基于FPGA的网络流量字符串匹配方法及匹配装置,进一步提升了高速网络下网络内容检测的性能,提升了实时网络信息处理系统的安全性。
图1为本发明提供的一种基于FPGA的网络流量字符串匹配方法流程图,其中,FPGA中包括RAM存储单元和多个字节比较器,可参见图2。该发明提供的方法包括:
步骤1,将待匹配的完整网络报文封装成私有消息报文,并发送给所述FPGA。
作为实施例,所述将待匹配的完整网络报文封装成私有消息报文,并发送给所述FPGA,之前还包括:读取xml格式的模式串集配置文件,记录模式串集中最长模式串长度MAX和模式串个数R;
根据模式串集生成状态信息表,将所述状态信息表存储在FPGA中的RAM存储单元,根据所述状态信息表生成状态机,同时将所述状态信息表备份存储在外部SSD中,所述状态信息表中存储所述模式串集中每一个模式串中的每一个字符的跳转状态,所述状态信息表包括goto状态信息表、fail状态信息表和out状态信息表。
可理解的是,软件实现读取xml格式的模式串集配置文件,对AC匹配进行初始化编译,遍历模式串集中的每一个模式串,根据AC算法生成goto表、fail表和out表三个状态表信息,同时以一个16bit的变量MAX记录最长模式串的长度和一个16bit的变量的R来记录模式串的个数。例如模式串集为{he,she,his,her,say},则三个状态表如图3所示。将编译生成的每个状态以ASCII码值形式存储在FPGA的RAM存储单元中作为AC匹配的状态机,每个状态都被划分到RAM存储单元的特定地址上,并且都是有编号的,状态之间的跳转通过LUT查找表实现,除此之外各个状态还维持有一个深度值D,用来表示当前状态与状态0之间的距离。
同时将已生成的三个状态表信息以xml的格式存储在外部SSD存储单元中长期保存。进行重新初始化时,根据检测xml配置文件是否修改来决定是重新构建状态表信息还是直接从外部SSD中读取状态表信息加载到FPGA的RAM存储单元中。具体的,当设备重新初始化时会检测配置文件是否发生修改,如果修改过则重复上述步骤进行初始化;如果没有发生修改则FPGA可以直接读取SSD中存储的状态表信息,快速构建状态机。
初始化完成后,软件对待匹配的完整网络报文进行预处理,计算所述待匹配的完整网络报文的长度信息L,如果的乘积,则所述待匹配的完整网络报文不需要进行分段并行匹配;否则所述待匹配的完整网络报文需要进行分段并行匹配;其中,MAX表示模式串集中最长模式串的长度,R表示模式串集中模式串的个数。
封装私有消息报文,其中,私有消息报文的格式可参见图4,包括私有消息头字段、消息类型type字段、并行匹配action字段、数据部分长度len字段和数据部分字段,其中,消息类型type字段为0表示是输入文本,为1表示输出的匹配结果;并行匹配action字段为0表示不需要分段并行匹配,为1表示需要分段并行匹配;数据部分字段输入时为完整网络报文数据,输出时为匹配结果。因此,当根据待匹配的完整网络报文数据需要分段匹配时,将action字段置为1,否则,将action字段置为0。
当软件接收到待匹配的完整网络报文数据时,将其封装为私有消息报文,填充6字节的私有消息头,8bit的type字段置0表示输入网络报文数据,32bit的len字段填充数据部分长度即长度信息L,如果需要分段并行匹配则将8bit的action字段置1,否则置0,数据部分填充完整网络报文数据。
软件部分按照上述的格式将待匹配的完整网络报文数据封装成这中格式的私有消息报文,并将私有报文数据发送给FPGA。
步骤2,基于FPGA对接收到的私有消息报文进行解封装,将所述私有消息报文中的字符串存储于RAM存储单元中。
其中,对接收到的私有消息报文进行解封装,将所述私有消息报文中的字符串存储于RAM存储单元中,包括:对接收到的私有消息报文进行解封装,读取其中并行匹配action字段的值,以及从数据部分字段提取待匹配报文,将待匹配报文中的字符转化为ASCII码值存储在FPGA的RAM存储单元中。
步骤3,判断待匹配的完整网络报文是否需要分段匹配,若是,则将待匹配的完整网络报文分为若干个报文段,并将每一个报文段发送给对应的字节比较器;基于每一个字节比较器将报文段中的字符串与状态机中的模式串集进行匹配,输出匹配结果。
作为实施例,所述判断待匹配的完整网络报文是否需要分段匹配,若是,则将待匹配的完整网络报文分为若干段,得到多个报文段,并将每一个报文段发送给对应的字节比较器,包括:当根据提取的并行匹配action字段确定待匹配报文需要分段并行匹配时,将待匹配报文均等划分为n个报文段,每一个报文段的长度为len/n,len为整个待匹配报文的长度,n为正整数;将第一个报文段起始地址即RAM存储单元中完整网络报文的起始地址和报文段长度传给第一个字节比较器,将RAM存储单元中完整网络报文起始地址向后偏移len/n长度的地址和报文段长度传给第二个字节比较器,以此类推,将每一个报文段的起始地址和报文段长度传给对应的字节比较器;每一个字节比较器将报文段中的字符逐一与状态机中的模式串集进行匹配,并输出匹配结果。
可理解的是,FPGA收到私有消息报文后,对消息报文进行解封装,从数据部分提取出待匹配的完整网络报文,将报文的字符转化为ASCII码值存储在FPGA的RAM中。根据消息报文中action字段值进行下一步操作,如果action字段为0则表示不需要并行处理,将整个报文长度len和完整网络报文在RAM中的起始地址传给第一个字节比较器,与状态机中的模式串集进行匹配即可。如果action字段为1则表示需要进行并行处理,FPGA中固化了n个字节比较器,意味着可以n个报文段一起进行匹配,则将RAM完整网络报文分成n个报文段,每个报文段长度为len/n,将第一个报文段起始地址即RAM中完整网络报文的起始地址和报文段长度传给第一个字节比较器,将RAM完整网络报文起始地址向后偏移len/n长度的地址和报文段长度传给第二个字节比较器,以此类推。对于每一个字节比较器都与状态机中的模式串集进行匹配,即比较对应地址上的ASCII码值是否相同,并进行状态跳转,如图5所示。
其中,基于每一个字节比较器将报文段中的字符串与状态机中的模式串集进行匹配,输出匹配结果,还包括当每一个字节比较器比较到报文分段点时,继续越过分段点进行增量检测。
增量检测的过程为,在到达分段点时,FPGA初始化两个计数器S和T,S记录越过分段点的长度,每检测一个字符,S增加1个长度,计数器T负责记录分段点处的状态深度值D,假设i为分段点,则增量检测时T初始为D(i),其中,状态机中每个状态在创建时维持一个深度值D,记录当前状态与状态0的距离;在增量检测时,字节比较器每检测一个字符时将T的值增加1,比较T与当前字符在状态机中的状态深度值D,如果T与D相等,则继续对下一字符进行检测;如果T与D不等,则再进一步比较D和S的大小;如果S小于D,将T的值更新为当前状态深度值D,并继续对下一个字符进行增量检测;如果S不小于D,则提前结束增量检测,输出匹配结果。
可理解的是,FPGA在进行并行匹配时会存在分段点模式串漏判问题,所以本发明在进行并行匹配时采用自适应增量检测,当一个字节比较器比较到分段点时会继续越过分段点进行增量检测,但是在到达分段点时FPGA需要初始化两个计数器S和T,S记录越过分段点的长度,每检测一个字符S就会增加1个长度,而状态机中每个状态在创建时维持一个深度值D,记录当前状态与状态0的距离,例如图2的goto表中状态8的D值为3,状态6的D值为2,计数器T负责记录分段点处状态的深度值D,假设i为分段点,则增量检测时T初始为D(i)。在增量检测时,每检测一个字符就先将T的值增加1,然后比较T与当前字符在状态机中的状态深度D,如果T与D相等,则继续对下一字符进行检测;如果T与D不等则说明状态机发生了失配,此时再进一步比较D和S的大小,如果S小于D则代表当前状态的模式串可能会跨越两个字节比较器,将T的值更新为当前状态深度D,并重复上诉步骤继续进行增量检测;如果S不小于D则代表当前状态的模式串不会跨域两个字节比较器,可以提前结束增量检测,输出结果。整个FPGA的匹配流程如图6所示。
步骤4,FPGA根据每一个字节比较器输出的匹配结果,封装成私有消息返回。
可理解的是,所有字节比较器在完成模式串匹配后,输出匹配结果,FPGA组装私有消息报文,并且将消息类型type字段值置1,表示输出的是匹配结果,将匹配结果封装在数据部分,发送回软件供后续操作。
另一方面,本发明还提供了一种基于FPGA的网络流量字符串自动匹配装置,包括处理模块和FPGA,所述FPGA包括RAM存储单元和多个字节比较器,网络流量字符串自动匹配装置所包括的硬件大概可以参考图2,图2中对输入的网络流量进行预处理,包括将待匹配的网络流量报文封装为私有消息报文,都是由处理模块进行处理的。
其中,所述处理模块,用于将待匹配的完整网络报文封装成私有消息报文,并发送给所述FPGA;所述FPGA,用于对接收到的私有消息报文进行解封装,将所述私有消息报文中的字符串存储于RAM存储单元中;以及判断待匹配的完整网络报文是否需要分段匹配,若是,则将待匹配的完整网络报文分为若干个报文段,并将每一个报文段发送给对应的字节比较器;还用于根据每一个字节比较器输出的匹配结果,封装成私有消息返回;每一个字节比较器,用于将报文段中的字符串与状态机中的模式串集进行匹配,输出匹配结果。
在每一个字节比较器对相应的报文段中的字符进行并行匹配时,还用于当每一个字节比较器比较到报文分段点时,继续越过分段点进行增量检测,具体增量检测的方法为:
在到达分段点时,FPGA初始化两个计数器S和T,S记录越过分段点的长度,每检测一个字符,S增加1个长度,计数器T负责记录分段点处的状态深度值D,假设i为分段点,则增量检测时T初始为D(i),其中,状态机中每个状态在创建时维持一个深度值D,记录当前状态与状态0的距离;
在增量检测时,字节比较器每检测一个字符时将T的值增加1,比较T与当前字符在状态机中的状态深度值D,如果T与D相等,则继续对下一字符进行检测;如果T与D不等,则再进一步比较D和S的大小;
如果S小于D,将T的值更新为当前状态深度值D,并继续对下一个字符进行增量检测;如果S不小于D,则提前结束增量检测,输出匹配结果。
可以理解的是,本发明提供的一种基于FPGA的网络流量字符串自动匹配装置与前述各实施例提供的基于FPGA的网络流量字符串自动匹配方法相对应,基于FPGA的网络流量字符串自动匹配装置的相关技术特征可参考基于FPGA的网络流量字符串自动匹配方法的相关技术特征,在此不再赘述。
本发明实施例提供的一种基于FPGA的网络流量字符串自动匹配方法及匹配装置,具有以下技术效果:
1、本发明采用软硬件结合的方式来实现AC匹配,通过软件实现AC自动机的编译初始化,通过FPGA实现AC算法的匹配过程。相较于传统的纯软件实现的AC匹配自动机,本发明利用可编程硬件设备FPGA的强大算力可以大幅提升对网络流量数据的匹配速度,在网络流量不断增长的情况下,能够解放CPU资源,更加高效的监测网络流量,提升系统安全性。
2、本发明引入并行AC匹配方式。相较于传统的串行匹配方式,本发明通过对输入数据进行分段并行匹配可以大幅提升匹配效率,在海量网络流量数据下具有显著的优势。除此之外,本发明根据数据长度,灵活切换串/并行匹配方式,只有在符合条件的数据长度下开启并行匹配方式,有效减少不必要的开销。
3、本发明引入并行匹配自适应增量检测,在并行匹配下,通过比较当前跳转的状态深度和增量检测的长度来判断是否应该结束增量检测,这样可以在保证不出现模式串漏判问题的同时,最大限度的减少并行方式下冗余的检测开销。
4、本发明引入状态表信息固化机制,当AC自动机初始化时,不仅在FPGA的RAM中储存状态表信息,还同时在外部SSD存储单元备份存储,这样在掉电重启或者重新初始化时可以直接加载SSD中的状态表信息,大大减少AC自动机编译耗时。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (8)
1.一种基于FPGA的网络流量字符串自动匹配方法,其特征在于,所述FPGA包括RAM存储单元和多个字节比较器,所述方法包括:
将待匹配的完整网络报文封装成私有消息报文,并发送给所述FPGA;
基于FPGA对接收到的私有消息报文进行解封装,将所述私有消息报文中的字符串存储于RAM存储单元中;
判断待匹配的完整网络报文是否需要分段匹配,若是,则将待匹配的完整网络报文分为若干个报文段,并将每一个报文段发送给对应的字节比较器,基于每一个字节比较器将报文段中的字符串与状态机中的模式串集进行匹配,输出匹配结果;
FPGA根据每一个字节比较器输出的匹配结果,封装成私有消息返回;
所述将待匹配的完整网络报文封装成私有消息报文,并发送给所述FPGA,包括:
对待匹配的完整网络报文进行预处理,计算所述待匹配的完整网络报文的长度信息L,如果L≤MAX×R的乘积,则所述待匹配的完整网络报文不需要进行分段并行匹配;否则所述待匹配的完整网络报文需要进行分段并行匹配;其中,MAX表示模式串集中最长模式串的长度,R表示模式串集中模式串的个数;
封装私有消息报文,所述私有消息报文包括私有消息头字段、消息类型type字段、并行匹配action字段、数据部分长度len字段和数据部分字段,所述并行匹配action字段为0表示不需要分段并行匹配,为1表示需要分段并行匹配。
2.根据权利要求1所述的基于FPGA的网络流量字符串自动匹配方法,其特征在于,所述将待匹配的完整网络报文封装成私有消息报文,并发送给所述FPGA,之前还包括:
读取xml格式的模式串集配置文件,记录模式串集中最长模式串长度MAX和模式串个数R;
根据模式串集生成状态信息表,将所述状态信息表存储在FPGA中的RAM存储单元,根据所述状态信息表生成状态机,同时将所述状态信息表备份存储在外部SSD中,所述状态信息表中存储所述模式串集中每一个模式串中的每一个字符的跳转状态,所述状态信息表包括goto状态信息表、fail状态信息表和out状态信息表。
3.根据权利要求1所述的网络流量字符串自动匹配方法,其特征在于,所述对接收到的私有消息报文进行解封装,将所述私有消息报文中的字符串存储于RAM中,包括:
对接收到的私有消息报文进行解封装,读取其中并行匹配action字段的值,以及从数据部分字段提取待匹配报文,将待匹配报文中的字符转化为ASCII码值存储在FPGA的RAM存储单元中。
4.根据权利要求3所述的网络流量字符串自动匹配方法,其特征在于,所述判断待匹配的完整网络报文是否需要分段匹配,若是,则将待匹配的完整网络报文分为若干段,得到多个报文段,并将每一个报文段发送给对应的字节比较器,包括:
当根据提取的并行匹配action字段确定待匹配报文需要分段并行匹配时,将待匹配报文均等划分为n个报文段,每一个报文段的长度为len/n,len为整个待匹配报文的长度,n为正整数;
将第一个报文段起始地址即RAM存储单元中完整网络报文的起始地址和报文段长度传给第一个字节比较器,将RAM存储单元中完整网络报文起始地址向后偏移len/n长度的地址和报文段长度传给第二个字节比较器,以此类推,将每一个报文段的起始地址和报文段长度传给对应的字节比较器;
每一个字节比较器将报文段中的字符逐一与状态机中的模式串集进行匹配,并输出匹配结果。
5.根据权利要求4所述的网络流量字符串自动匹配方法,其特征在于,还包括:
当根据提取的并行匹配action字段确定待匹配报文不需要分段并行匹配时,将整个报文长度len和完整网络报文在RAM存储单元中的起始地址传给第一个字节比较器;
第一个字节比较器将报文中的字符逐一与状态机中的模式串集进行匹配,并输出匹配结果。
6.根据权利要求4所述的网络流量字符串自动匹配方法,其特征在于,所述基于每一个字节比较器将报文段中的字符串与状态机中的模式串集进行匹配,输出匹配结果,还包括当每一个字节比较器比较到报文分段点时,继续越过分段点进行增量检测:
在到达分段点时,FPGA初始化两个计数器S和T,S记录越过分段点的长度,每检测一个字符,S增加1个长度,计数器T负责记录分段点处的状态深度值D,假设i为分段点,则增量检测时T初始为D(i),其中,状态机中每个状态在创建时维持一个深度值D,记录当前状态与状态0的距离;
在增量检测时,字节比较器每检测一个字符时将T的值增加1,比较T与当前字符在状态机中的状态深度值D,如果T与D相等则继续对下一字符进行检测;如果T与D不等,则再进一步比较D和S的大小;
如果S小于D,将T的值更新为当前状态深度值D,并继续对下一个字符进行增量检测;如果S不小于D,则提前结束增量检测,输出匹配结果。
7.一种基于FPGA的网络流量字符串自动匹配装置,其特征在于,包括处理模块和FPGA,所述FPGA包括RAM存储单元和多个字节比较器;
所述处理模块,用于将待匹配的完整网络报文封装成私有消息报文,并发送给所述FPGA;
所述FPGA,用于对接收到的私有消息报文进行解封装,将所述私有消息报文中的字符串存储于RAM存储单元中;以及判断待匹配的完整网络报文是否需要分段匹配,若是,则将待匹配的完整网络报文分为若干个报文段,并将每一个报文段发送给对应的字节比较器;还用于根据每一个字节比较器输出的匹配结果,封装成私有消息返回;
每一个字节比较器,用于将报文段中的字符串与状态机中的模式串集进行匹配,输出匹配结果;
将待匹配的完整网络报文封装成私有消息报文,并发送给所述FPGA,包括:
对待匹配的完整网络报文进行预处理,计算所述待匹配的完整网络报文的长度信息L,如果L≤MAX×R的乘积,则所述待匹配的完整网络报文不需要进行分段并行匹配;否则所述待匹配的完整网络报文需要进行分段并行匹配;其中,MAX表示模式串集中最长模式串的长度,R表示模式串集中模式串的个数;
封装私有消息报文,所述私有消息报文包括私有消息头字段、消息类型type字段、并行匹配action字段、数据部分长度len字段和数据部分字段,所述并行匹配action字段为0表示不需要分段并行匹配,为1表示需要分段并行匹配。
8.根据权利要求7所述的网络流量字符串自动匹配装置,其特征在于,每一个字节比较器,还用于当每一个字节比较器比较到报文分段点时,继续越过分段点进行增量检测:
在到达分段点时,FPGA初始化两个计数器S和T,S记录越过分段点的长度,每检测一个字符,S增加1个长度,计数器T负责记录分段点处的状态深度值D,假设i为分段点,则增量检测时T初始为D(i),其中,状态机中每个状态在创建时维持一个深度值D,记录当前状态与状态0的距离;
在增量检测时,字节比较器每检测一个字符时将T的值增加1,比较T与当前字符在状态机中的状态深度值D,如果T与D不等,则再进一步比较D和S的大小;
如果S小于D,将T的值更新为当前状态深度值D,并继续对下一个字符进行增量检测;如果S不小于D,则提前结束增量检测,输出匹配结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410055222.7A CN117574178B (zh) | 2024-01-15 | 2024-01-15 | 基于fpga的网络流量字符串自动匹配方法和匹配装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410055222.7A CN117574178B (zh) | 2024-01-15 | 2024-01-15 | 基于fpga的网络流量字符串自动匹配方法和匹配装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117574178A CN117574178A (zh) | 2024-02-20 |
CN117574178B true CN117574178B (zh) | 2024-04-26 |
Family
ID=89890425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410055222.7A Active CN117574178B (zh) | 2024-01-15 | 2024-01-15 | 基于fpga的网络流量字符串自动匹配方法和匹配装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117574178B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785677B1 (en) * | 2001-05-02 | 2004-08-31 | Unisys Corporation | Method for execution of query to search strings of characters that match pattern with a target string utilizing bit vector |
CN1859291A (zh) * | 2005-12-13 | 2006-11-08 | 华为技术有限公司 | 一种对网络报文安全封装的方法 |
CN101009660A (zh) * | 2007-01-19 | 2007-08-01 | 杭州华为三康技术有限公司 | 处理分段报文模式匹配的通用方法及装置 |
CN101026576A (zh) * | 2007-01-19 | 2007-08-29 | 杭州华为三康技术有限公司 | 兼顾匹配策略的处理分段报文串模式匹配的方法及装置 |
WO2013106989A1 (zh) * | 2012-01-16 | 2013-07-25 | 中国科学院北京基因组研究所 | 一种字符串匹配的方法及装置 |
CN110674364A (zh) * | 2019-08-30 | 2020-01-10 | 北京浩瀚深度信息技术股份有限公司 | 一种利用fpga实现的滑动字符串匹配的方法 |
CN111046938A (zh) * | 2019-12-06 | 2020-04-21 | 邑客得(上海)信息技术有限公司 | 基于字符串多模式匹配的网络流量分类识别方法和设备 |
CN113452672A (zh) * | 2021-05-11 | 2021-09-28 | 国网天津市电力公司电力科学研究院 | 基于协议逆向分析的电力物联网终端流量异常分析方法 |
CN113703715A (zh) * | 2021-08-31 | 2021-11-26 | 深信服科技股份有限公司 | 一种正则表达式匹配方法、装置、fpga及介质 |
WO2022188285A1 (zh) * | 2021-03-12 | 2022-09-15 | 清华大学 | 多字符串模式匹配方法、装置、计算机设备及存储介质 |
CN115348189A (zh) * | 2022-10-18 | 2022-11-15 | 戎腾科技(长沙)有限公司 | 基于sav架构的报文匹配方法、装置和计算机设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070133593A1 (en) * | 2005-11-21 | 2007-06-14 | Udaya Shankara | Searching Strings Representing a Regular Expression |
CN111967244B (zh) * | 2020-07-30 | 2023-03-14 | 浪潮(北京)电子信息产业有限公司 | 一种基于fpga的fast协议解码方法、装置及设备 |
-
2024
- 2024-01-15 CN CN202410055222.7A patent/CN117574178B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785677B1 (en) * | 2001-05-02 | 2004-08-31 | Unisys Corporation | Method for execution of query to search strings of characters that match pattern with a target string utilizing bit vector |
CN1859291A (zh) * | 2005-12-13 | 2006-11-08 | 华为技术有限公司 | 一种对网络报文安全封装的方法 |
CN101009660A (zh) * | 2007-01-19 | 2007-08-01 | 杭州华为三康技术有限公司 | 处理分段报文模式匹配的通用方法及装置 |
CN101026576A (zh) * | 2007-01-19 | 2007-08-29 | 杭州华为三康技术有限公司 | 兼顾匹配策略的处理分段报文串模式匹配的方法及装置 |
WO2013106989A1 (zh) * | 2012-01-16 | 2013-07-25 | 中国科学院北京基因组研究所 | 一种字符串匹配的方法及装置 |
CN110674364A (zh) * | 2019-08-30 | 2020-01-10 | 北京浩瀚深度信息技术股份有限公司 | 一种利用fpga实现的滑动字符串匹配的方法 |
CN111046938A (zh) * | 2019-12-06 | 2020-04-21 | 邑客得(上海)信息技术有限公司 | 基于字符串多模式匹配的网络流量分类识别方法和设备 |
WO2022188285A1 (zh) * | 2021-03-12 | 2022-09-15 | 清华大学 | 多字符串模式匹配方法、装置、计算机设备及存储介质 |
CN113452672A (zh) * | 2021-05-11 | 2021-09-28 | 国网天津市电力公司电力科学研究院 | 基于协议逆向分析的电力物联网终端流量异常分析方法 |
CN113703715A (zh) * | 2021-08-31 | 2021-11-26 | 深信服科技股份有限公司 | 一种正则表达式匹配方法、装置、fpga及介质 |
CN115348189A (zh) * | 2022-10-18 | 2022-11-15 | 戎腾科技(长沙)有限公司 | 基于sav架构的报文匹配方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117574178A (zh) | 2024-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109445834B (zh) | 基于抽象语法树的程序代码相似性快速比较方法 | |
CN109933630B (zh) | 数据库数据实时同步方法及设备 | |
KR101868720B1 (ko) | 정규 표현식들에 대한 컴파일러 | |
CN113542259B (zh) | 基于多模态深度学习的加密恶意流量检测方法及系统 | |
RU2608464C2 (ru) | Устройство, способ и сетевой сервер для обнаружения структур данных в потоке данных | |
CN110365678B (zh) | 一种基于反样本的工控网络协议漏洞挖掘方法 | |
CN112532642B (zh) | 一种基于改进Suricata引擎的工控系统网络入侵检测方法 | |
CN106682506A (zh) | 一种病毒程序检测方法和终端 | |
CN112347020A (zh) | 一种基于cgra的fast行情解析系统和方法 | |
CN102682237B (zh) | 针对网络下载文件的判毒方法及系统 | |
CN117574178B (zh) | 基于fpga的网络流量字符串自动匹配方法和匹配装置 | |
US9696976B2 (en) | Method for optimizing processing of character string during execution of a program, computer system and computer program for the same | |
CN110826062B (zh) | 恶意软件的检测方法及装置 | |
CN115549862A (zh) | 基于动态解析的mes系统并发性能测试数据接收方法 | |
CN115169293A (zh) | 一种文本隐写分析方法、系统、装置及存储介质 | |
CN112187935B (zh) | 信息识别方法与只读内存 | |
Polig et al. | Token-based dictionary pattern matching for text analytics | |
CN111740817A (zh) | 电力数据采集系统中集中器的代码篡改检测方法及系统 | |
CN114510717A (zh) | 一种elf文件的检测方法、装置、存储介质 | |
CN114186637A (zh) | 流量识别方法、装置、服务器和存储介质 | |
CN109543024B (zh) | 一种文本处理方法及装置 | |
CN116366478B (zh) | 一种基于fpga的数据包对比去重方法 | |
CN111683036A (zh) | 数据存储方法、装置以及报文识别方法和装置 | |
CN115396332B (zh) | 电力通信协议的模糊测试方法、终端设备及存储介质 | |
CN110311835B (zh) | 一种基于内容模板的电力iec协议符合性验证方法 |
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 |