CN112506789B - 一种用于数据包检测的并行模式匹配方法 - Google Patents

一种用于数据包检测的并行模式匹配方法 Download PDF

Info

Publication number
CN112506789B
CN112506789B CN202011492806.9A CN202011492806A CN112506789B CN 112506789 B CN112506789 B CN 112506789B CN 202011492806 A CN202011492806 A CN 202011492806A CN 112506789 B CN112506789 B CN 112506789B
Authority
CN
China
Prior art keywords
state
thread
matching
data packet
automaton
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
Application number
CN202011492806.9A
Other languages
English (en)
Other versions
CN112506789A (zh
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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN202011492806.9A priority Critical patent/CN112506789B/zh
Publication of CN112506789A publication Critical patent/CN112506789A/zh
Application granted granted Critical
Publication of CN112506789B publication Critical patent/CN112506789B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Abstract

本发明提供了一种用于数据包检测的并行模式匹配方法,包括:步骤1,将特征字符串编译成AC自动机;步骤2,将数据包依据匹配线程的数量分片,每个分片由对应的线程执行AC算法,寻找匹配的特征字符串;步骤3,每个线程在处理完毕所分配的数据包分片后,除了最后一个分片对应的线程之外的其他线程跨越数据包分片分割点继续执行AC算法,通过比较各个AC自动机的状态深度和越过分割点后所检测的字符个数,确定最小冗余区域长度,寻找匹配的特征字符串。

Description

一种用于数据包检测的并行模式匹配方法
技术领域
本发明涉及计算机技术领域,具体涉及一种用于数据包检测的并行模式匹配方法。
背景技术
深度数据包检测(Deep Packet Inspection,简称DPI)引擎是网络安全设备的核心组件,DPI引擎通过在数据包中查找模式串,以确定报文的合法性。现有技术中,大多对网络流量进行分割,采用多线程并行的方式进行负载分担,通过对数据包内容依据匹配引擎线程数进行分片,不同的线程并行检测不同的数据包部分来提升DPI的性能。这种基于数据包分片的负载均衡并行匹配方法的匹配时间复杂度与输入数据长度成正比,具有数据包分片均衡且粒度小,并行加速效果好的优点。虽然该方法检测了完整的数据包内容,但存在着分割点处漏判的问题。
目前存在的方法主要通过冗余检测来解决漏判问题,在每个分片后,划分了冗余检测区域,该区域会被两个DPI线程检测,从而保证检测到所有的模式串。
常用的冗余检测方法有两种:数据包分割并行匹配方法(Divided Data ParallelSignature Matching,简称DDP)和猜测式并行模式匹配方法(Speculative ParallelPattern Matching,简称SPPM)。
DDP处理的冗余区域长度是固定的,为Smax-1,其中,Smax表示最长的模式串长度。该方法在线程间不存在同步开销,但重叠区域大,在实际应用中时间复杂度高。
SPPM通过比较当前线程该字符跳转时的自动机状态和历史记录中其他线程处理该字符时的自动机状态减小冗余区域长度,降低了时间复杂度,但由于其始终维护历史状态表,并且相邻分片检测结果间存在依赖关系,在实际应用中同步开销很大。
发明内容
为解决上述现有技术中存在的问题,提供一种用于数据包检测的并行模式匹配方法,包括:
步骤1,将特征字符串编译成AC自动机;
步骤2,将数据包依据匹配线程的数量分片,每个数据包分片由对应的线程执行AC算法,寻找匹配的特征字符串;
步骤3,每个线程在处理完毕所分配的数据包分片后,除了最后一个数据包分片对应的线程之外的其他线程跨越数据包分片分割点继续执行AC算法,通过比较越过分割点后所检测的字符个数和当前字符的AC自动机状态深度,确定最小冗余区域长度,寻找匹配的特征字符串。
优选的,所述步骤2包括:
步骤21,每个所述匹配线程初始化一个记录AC自动机状态的状态变量。
优选的,所述步骤2还包括:
步骤22,按照AC算法逐字符检测,根据输入的字符进行状态跳转并更新状态变量。
优选的,所述步骤2还包括:
步骤23,根据状态变量判断是否发生了字符串匹配。
优选的,所述步骤3包括:
步骤31,除最后一个线程之外的其他线程分别设置步长变量,用于记录越过分割点后所检测的字符个数。
优选的,所述步骤3还包括:
步骤32,除最后一个线程之外的其他线程继续检测其后的数据包分片内容,进行状态跳转并更新状态变量,每处理一个字符,步长变量加1。
优选的,所述步骤3还包括:
步骤33,除最后一个线程之外的其他线程根据状态变量判断是否发生了字符串匹配,通过比较状态变量对应的深度和当前的步长变量的大小判断是否结束匹配。
优选的,所述步骤33还包括:若所述深度大于所述步长变量,则继续进行验证阶段的匹配;若所述深度小于或等于所述步长变量,则结束匹配。
一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现前述方法的步骤。
一种计算机设备,包括存储器和处理器,在所述存储器上存储有能够在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现前述方法的步骤。
本发明具有如下特点和有益效果:本发明冗余区域小,线程间同步开销少,不需要保存所有的匹配状态,具有更好的时间和空间复杂度,可以提高检测的效率。
附图说明
图1示出了现有技术的AC算法模式串集合{he,she,his,hers}对应的自动机。
图2示出了现有技术的基于数据包分片的负载均衡并行匹配算法的处理过程。
图3示出了本发明的方法的总体处理流程。
图4示出了本发明的方法在正常匹配阶段的处理流程。
图5示出了本发明的方法在验证匹配阶段的处理流程。
图6示出了本发明的方法中两个线程的处理过程。
具体实施方式
下面结合附图和具体实施例对本发明加以说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
为了清晰地理解本发明,首先介绍AC算法。AC算法即Aho-Corasick算法,是广泛使用的多模式字符串匹配算法,通过构建表示一组模式串的自动机来进行匹配查询,自动机根据输入的字符串逐字节进行状态跳转,直到完成整个输入的检测。算法的时间复杂度只与输入数据的长度有关。
以下以一个字符串搜索任务为例,介绍AC自动机的工作流程。
例如,要在一篇英文文章中搜索(或者称为匹配)四个单词:he、she、his、hers,这四个单词构成了模式串集合{he,she,his,hers}。基于该模式串集合,构建一个用于匹配模式串集合{he,she,his,hers}的AC自动机。构建该自动机的方法是现有技术,以下对于构建好的针对模式串集合{he,she,his,hers}的AC自动机的工作流程进行解释。可以理解的是,不同的模式串集合对应于不同的AC自动机。
图1是模式串集合{he,she,his,hers}对应的AC自动机。如图1所示,该自动机有10个节点,对应了10个可跳转状态,节点间的边和边上的字符,分别表示状态间的跳转关系和条件。
以下对图1的AC自动机的工作流程做进一步详细的解释。
将待搜索的英文文章构成一个字符串,AC自动机对该字符串的每个字节逐一处理,根据每个字节是什么字符,确定如何进行状态跳转。
状态s0是AC自动机的初始状态,在此状态下,只有字母h或s可以改变自动机的状态。这是因为,he、she、his、hers四个单词中,字母h是he、his、hers的首字母,s是she的首字母。因此,该自动机在初始状态如果未遇到h或s字母,则表示未遇到潜在的目标,其不改变状态,一直保持在s0状态。
Figure BDA0002841212310000041
{h,s}表示除了h或s字母的其他字符。图中,s0状态上的回到自身的虚线箭头,表示在s0初始状态,除了h或s字母的其他字符,自动机状态不发生改变。
在状态s0,当遇到字母h,则进入状态s1,图1中s0指向s1的箭头的字符h,即表示在s0状态遇到字母h。同样,在s0状态,当遇到字母s,则进入状态s7,图1中s0指向s7的箭头的字符s,即表示在s0状态遇到字母s。
在状态s1,将处理的字符有四种情况:
第一种,在状态s1,当遇到字母e,则进入状态s2,此时,因为状态变化的路径是s0→s1→s2,而s0→s1表示找到字母h,s1→s2表示紧接着找到字母e,所以自动机匹配到单词he。可以理解的是,只要将s0→s1箭头上的字符h与s1→s2箭头上的字符e拼接,即可知道此时的匹配结果。
第二种,在状态s1,当遇到字符i,则进入状态s5,因为状态变化的路径是s0→s1→s5,可知匹配到hi,但是还未找到完整的单词his。
第三种,在状态s1,当遇到字母s,则进入状态s7,因为状态变化的路径是s0→s1→s7,可知,虽然找到了h,但是没有紧接着找到e或i,而是找到了s,在s7恰好可以开始搜索单词she。
第四种,在状态s1,遇到除了前三种情况的e、i、s字母的其他字符,自动机回到s0,由于s0是初始状态,其他状态都有可能回到该状态,为简明起见,图中并未示出由其他状态回到s0的箭头。
在状态s2,将处理的字符也有四种情况:
第一种,在状态s2,当遇到字母r,则进入状态s3,因为状态变化的路径是s0→s1→s2→s3,如前所述,通过拼接路径箭头上的字母,可知,匹配结果是her,此时,还未搜索到完整的目标单词hers。
第二种,在状态s2,当遇到字母h,则进入状态s1,开始了新一轮搜索h开头的单词,即he、his、hers。
第三种,在状态s2,当遇到字母s,则进入状态s7,开始了新一轮搜索s开头的单词,即she。
第四种,在状态s2,遇到r、h、s字母之外的的其他字符,自动机回到s0,如前所述,为简明起见,图中并未示出回到s0的箭头。
在状态s3,将处理的字符有三种情况:
第一种,在状态s3,当遇到字母s,则进入状态s4,因为状态变化的路径是s0→s1→s2→s3→s4,通过拼接路径箭头上的字母,可知,匹配结果是hers,即搜索到完整的目标单词hers。
第二种,在状态s3,当遇到字母h,则进入状态s1,开始了新一轮搜索h开头的单词,即he、his、hers。
第三种,在状态s3,遇到除了之外的s、h字母的其他字符,自动机回到s0
在状态s4,找到了单词hers,其后,将处理的字符有三种情况:
第一种,在状态s4,当遇到字母s,则进入状态s7,开始了新一轮搜索s开头的单词,即she。
第二种,在状态s4,当遇到字母h,则进入状态s8,进入了搜索she的中间状态。这是因为s3→s4找到了字母s,紧接着遇到了字母h,两个字母构成了sh,而到达s8的主干路径是s0→s7→s8,通过拼接路径箭头上的字母,可知s8匹配的中间结果也是sh,因此,殊途同归,在状态s8,进入了搜索she的中间状态。
第三种,在状态s4,遇到除了s、h字母之外的其他字符,自动机回到s0
通过以上s0至s4状态的说明,可同样理解其他s5至s9的状态变化。
从图1中还可以看出,存在四条状态变化的主要路径,以实线箭头标出。其他次要路径,以虚线箭头标出。
四条主要路径如下:
s0→s1→s2,该路径的输出是单词he;
s0→s1→s2→s3→s4,该路径的输出是单词hers;
s0→s1→s5→s6,该路径的输出是单词his;
s0→s7→s8→s9,该路径的输出是单词she和he。
图1自动机的状态s2、s4、s6和s9称为可接受状态(accepting state),当状态机跳转到这四个状态时,表示在待匹配串中检测到对应的模式串。例如,当输入串为{she},从s0开始,将依次跳转至状态s7、s8、s9,而s9为一个可接受状态,说明在输入串中检测到了模式串he和she。
我们将链接根节点s0到状态节点s的一系列输入字符表示为与s相关的一个后缀标记L(s),定义节点s在AC状态机中的深度为标记L(s)的长度,例如,L(s1)为h,其长度为1,表示s1的深度为1。同理,L(s7)为s,其长度为1,表示s7的深度为1。
AC自动机具有下面的几个性质:
1)AC自动机中,各个状态si对应的标记L(si)是唯一的。
2)用{b1,b2,...bi...,bn}表示输入,{s0,s1,...s1...,sn}表示对应的AC状态机的状态转换序列(s0为根节点)。对任意i∈{1,...,n},L(si)都是{b1,b2,...bi}的一个后缀,并且是AC状态机所有状态的后缀标记中,后缀匹配长度最长的一个。即AC自动机实现的是字符串最长后缀匹配。
3)AC自动机在任一个时刻都处于有限个状态中的一个,并且下一个状态只由当前的输入和当前的状态所决定。因此,如果两个独立运转的、构造相同的状态机的当前状态和输入序列都相同时,之后它们的状态跳转序列将完全相同。
以上介绍了AC自动机。以下介绍现有技术中存在的问题。
在使用AC自动机查找模式串的过程中,为了提高处理速度,通常采用基于数据包分片的负载均衡方法,将输入的数据包分割为多个分片,由多个基于AC自动机的匹配引擎并行处理。例如,图2中,要在字符串abcdefgherijklmnopqrstuvwxyzhttp中匹配单词her。由于存在四个匹配引擎,分别是匹配引擎1、匹配引擎2、匹配引擎3、匹配引擎4,可以先将字符串根据匹配引擎的线程数目进行分割,分割为四个分片,分别是:
分片1 abcdefgh
分片2 erijklmn,
分片3 opqrstuv,
分片4 wxyzhttp,
此处需要注意,her的字母h被划在分片1的结尾,字母er被划在分片2的开头。
然后,将分割后的各个分片分发给不同的线程。每个负载引擎检查的是同一数据包的不同部分,从总体上看,整个数据包的有效负载都完整得到检查。这种方法有以下优点:
1)模式匹配算法的时间复杂度与输入数据的长度有关,减少了每个引擎处理的数据量能有效减少处理时间,获得更好的加速比;
2)数据包分片的并行粒度小且均衡,从而可以获得很好的并行加速效果。
基于数据包分片的并行匹配方法的主要缺点是,在分割点处有可能发生模式串的漏判。检测过程中,只有当模式串被完整地包含在一个数据包分片中时,该模式串才能被检测到。如果一个模式串跨越多个分片那么每个处理线程都只能检测到它的一部分,因此将不会被发现,从而产生漏判。如图2所示,检测引擎在数据包中查找模式串“her”,由于该模式串恰好处在分片1和分片2的分割点位置,数据包的分割导致该匹配模式串也被分割成两段且被包含于不同的数据包分片中,因此无论哪一个检测引擎都不能发现该模式串的存在。
目前存在背景技术中的两种方法,分别是DDP和SPPM,主要通过冗余检测来解决漏判问题,但存在时间复杂度高或同步开销大的问题。
为了解决上述技术问题,本发明提出了一种用于数据包检测的并行模式匹配方法,是基于AC自动机的距离比较并行匹配方法(Distance Comparison ParallelMatching,简称DCPM)。该方法的总体处理流程如图3所示,包括如下步骤:
(1)将特征字符串编译成AC自动机;
(2)每当进入一个数据包时,将数据包载荷依据匹配引擎线程数分片,每个分片由对应的线程处理;图3中可见,数据包分为分片1、分片2、...分片n-1、分片n,分别交给线程1、线程2、...、线程n-1、线程n进行处理。每个线程分为正常匹配阶段和验证匹配阶段。
(3)正常匹配阶段,执行普通的AC算法,寻找匹配的模式串;
根据本发明的一个实施例,如图4所示,该正常匹配阶段包括:
(3-1)每个线程都初始化一个记录AC自动机状态的状态变量;
(3-2)按照AC算法逐字符检测,根据输入的字符进行状态跳转并更新状态变量;
(3-3)根据状态变量判断是否发生了字符串匹配。
(4)验证匹配阶段,在该阶段,当前线程要跨越分割点继续在后续数据分片中匹配模式串,其在AC自动机状态跳转的基础上,通过比较AC自动机的状态深度和越过分割点后所检测的字符个数,确定最小冗余区域长度,寻找因分片漏判的模式串。可以理解的是,处理最后一个数据分片的线程不需要进入此阶段,因为其没有后续数据分片进行处理。
根据本发明的一个实施例,如图5所示,该步骤包括:
(4-1)除最后一个线程的其他线程都设置一个记录越过分割点的距离的步长变量,该步长变量用于记录越过分割点后所检测的字符个数,其初始值为零;
(4-2)除最后一个线程的其他线程在检测完对应分片的内容之后,继续检测其后的数据包分片内容,即冗余区域,进行状态跳转并更新状态变量,每处理一个字符,步长变量加1;该步长变量记录了线程越过分割点后所检测的字符个数;
(4-3)根据状态变量判断是否发生了字符串匹配,通过比较状态变量对应的深度和当前的步长变量的大小判断是否跳出验证匹配阶段:若深度大于步长,则继续进行验证阶段的匹配;若深度小于或等于步长,说明不可能再有匹配的字符串,跳出验证匹配阶段。
对应本发明上述实施例的检测方法的伪代码如表1。
Figure BDA0002841212310000091
Figure BDA0002841212310000101
以下,以一个具体的例子进一步说明本发明的方法,该例子中的处理过程就是表1代码所展示的处理过程。
本实例假设模式串集合为{he,she,his,hers},其AC自动机状态如图1所示,检测串为eshshissihshsre,采用三个线程基于AC自动机进行处理。由于存在三个线程,因此,将检测串分割为三个分片,即分片1的字符串为eshsh,分片2的字符串为issih,分片3的字符串为shsre。将该三个字符串分别交给三个线程进行处理。
表2为三个线程在正常匹配阶段的状态跳转结果。
其中,线程1的初始状态为s0,当遇到第1个字母e,从图1可知,由于e既不是s,也不是h,因此不发生状态跳转,状态依然是s0;接着,处理第2个字母s,状态跳转到s7;处理第3个字母h,状态由s7跳转到s8;处理第4个字母s,状态由s8跳转到s7;处理第5个字母,状态由由s7跳转到s8。可见,线程1处理完毕分片1后,状态并没有跳转到可接受状态s2、s4、s6或s9,因此,没有发现匹配的模式串。
同样,线程2和线程3也是从初始状态s0开始检测,在检测完分片后分别跳转至状态s1,s0,也都没有跳转到可接受状态s2、s4、s6或s9,即没有在分片2和分片3中发现匹配模式串。
但是,分片1的字符串eshsh的结尾字母h与分片2的字符串issih的开头两个字母is构成了单词his,因此,要在验证阶段跨越分片1和分片2,找到该单词his。
表2本发明正常阶段检测结果
Figure BDA0002841212310000102
Figure BDA0002841212310000111
表3为进入验证阶段后的状态跳转情况。由于线程3已检测到了输入字符串的最末位置,因此不需要再继续进入到验证阶段;线程1和线程2则分别向后处理,进入到验证阶段。
以线程1为例:
1)线程1检测完分片1之后,状态为s8,进入验证阶段后,将检测步数初始设置为0,线程1跨越分割位置,开始读取分片2的字符,根据读入的分片2(issih)的第一个字符‘i’,状态由s8跳转至s5,同时检测步数加1;由于从根节点s0到状态节点s5的路径是s0→s1→s5,其中,s0→s1的字母是h,s1→s5的字母是i,两个字母拼接为hi,即为后缀标记,长度为2,即s5的状态深度为2,此时的检测步数为1,根据前述步骤4的第3个子步骤进行判定,因为状态深度2大于检测步数1,所以,验证阶段的匹配没有结束。
2)线程1根据读入的分片2(issih)的第二个字符‘s’,状态由s5跳转至s6,检测步数再加1后变为2。s6是一个可接受状态,因此可确定发生了匹配。由于从根节点s0到状态节点s6的路径是s0→s1→s5→s6,其中,s0→s1的字母是h,s1→s5的字母是i,s1→s5的字母是s,三个字母拼接为his,即为后缀标记,后缀标记的长度为3,即s6的状态深度为3。根据前述步骤4的第3个子步骤进行判定,因为状态深度3大于检测步数2,所以,验证阶段的匹配仍未结束。
3)继续读入分片2(issih)的第三个字符‘s’,状态由s6跳转至s7,此时状态深度为1,小于等于冗余检测步数3,冗余检测结束。
因此,在第二阶段,线程1共检测了三个字符的输入,发现一个横跨分片1和分片2的匹配字符串his。线程2按照同样的过程对分片3进行检测,共检测一个字符的输入,未发现匹配。
表3本发明验证阶段检测结果
Figure BDA0002841212310000121
以下进一步说明本发明的方法可以完整检测数据包的内容,能够解决在分割点处的漏判问题。
如图6所示,线程DCPMi处理分片1,线程DCPMi+1处理分片2,在执行过程中,假定处于验证匹配阶段的DCPMi线程在处理到数据包长度为P1+P2时,满足了验证阶段的退出条件,即自动机状态是State_P1P2,其深度depthi(State_P1P2)小于等于检测步数stepi
当线程DCPMi与线程DCPMi+1在处理到分片2的相同位置时,如果线程DCPMi+1的自动机状态State_P2和线程DCPMi的自动机状态State_P1P2是同一个状态,那么,从P1+P2的位置退出不会在分割点造成漏判。因为DCPMi和DCPMi+1的后续状态跳转将完全一致,则DCPMi线程可以退出验证阶段,不会造成分割点的漏判问题。因此,只要State_P2和State_P1P2为同一状态,即可知道方法的正确性。
以下分析说明State_P2和State_P1P2为同一状态。
1、DCPMi+1线程在处理完P2区域后,状态为State_P2。由AC自动机实现的是字符串最长后缀匹配的性质可知,在自动机的所有状态中,State_P2的后缀标记L(State_P2)是该冗余区域(P2)的最长后缀匹配。
2、DCPMi线程在处理完P1和P2区域后,状态为State_P1P2。同样,AC自动机实现的是字符串最长后缀匹配的性质可知,State_P1P2的后缀标记L(State_P1P2)是区域(P1+P2)的最长后缀匹配。由于线程DCPMi在State_P1P2时退出验证匹配,根据本发明的判断条件,L(State_P1P2)的长度小于等于P2长度,所以State_P1P2的后缀标记L(State_P1P2)也是P2的最长后缀匹配。
3、State_P1P2和State_P2的后缀标记都是P2的最长后缀匹配,所以L(State_P1P2)和L(State_P2)两个后缀标记相等,根据AC自动机中,各个状态si对应的标记L(si)是唯一的性质,可知State_P1P2和State_P2事实上是同一状态。
由此可知,本发明的方法可以完整检测数据包的内容,能够解决在分割点处的漏判问题。
以下说明本发明的方法具有最短冗余检测长度。
分析说明DCPM的冗余检测长度与SPPM相同,都是最短的冗余长度,即是分析在DCPMi线程的验证匹配停止条件满足之前,不存在一个字符位置,使得DCPMi+1线程和DCPMi+1线程跳转到相同的状态。我们可以用反证法进行如下分析:
i.假如有比距离分割点更近的停止位置,使得两个DCPM线程跳转到相同状态s,s的深度为d,该位置到分割点的距离为x,该位置不满足DCPM的停止条件;
ii.DCPMi+1线程处理x个字节时,从状态0跳转到状态s,由于此时不满足DCPM的停止条件,因此x必然大于等于s的深度d;
iii.由DCPM的判断条件可知,由于线程DCPMi在验证阶段处理该位置时,并没有满足退出条件,因此该位置到分割点的距离x小于s的深度d;
iv.由于ii和iii矛盾,因此不存在比DCPM找到的停止位置距离分割点更近的冗余检测停止位置。
由此可知本发明的方法具有最短冗余检测长度。
综上,和与DDP、SPPM相比,本发明冗余区域小,线程间同步开销少,不需要保存所有的匹配状态,具有更好的时间和空间复杂度。除此之外,本发明的多线程多模式匹配的方法,具有一定的普适性,不仅适用于网络安全领域,也可以应用于其他需要多模式匹配的应用场景,以提高检测的效率。
应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。

Claims (6)

1.一种用于数据包检测的并行模式匹配方法,包括:
步骤1,将特征字符串编译成AC自动机;
步骤2,将数据包依据匹配线程的数量分片,每个数据包分片由对应的线程执行AC算法,寻找匹配的特征字符串;
步骤3,每个线程在处理完毕所分配的数据包分片后,除了最后一个数据包分片对应的线程之外的其他线程跨越数据包分片分割点继续执行AC算法,通过比较越过分割点后所检测的字符个数和当前字符的AC自动机状态深度,确定最小冗余区域长度,寻找匹配的特征字符串,步骤3包括:
步骤31,除最后一个线程之外的其他线程分别设置步长变量,用于记录越过分割点后所检测的字符个数;
步骤32,除最后一个线程之外的其他线程继续检测其后的数据包分片内容,进行状态跳转并更新状态变量,每处理一个字符,步长变量加1;
步骤33,除最后一个线程之外的其他线程根据状态变量判断是否发生了字符串匹配,通过比较状态变量对应的深度和当前的步长变量的大小判断是否结束匹配;若所述深度大于所述步长变量,则继续进行验证阶段的匹配;若所述深度小于或等于所述步长变量,则结束匹配。
2.根据权利要求1所述的方法,所述步骤2包括:
步骤21,每个所述匹配线程初始化一个记录AC自动机状态的状态变量。
3.根据权利要求2所述的方法,所述步骤2还包括:
步骤22,按照AC算法逐字符检测,根据输入的字符进行状态跳转并更新状态变量。
4.根据权利要求3所述的方法,所述步骤2还包括:
步骤23,根据状态变量判断是否发生了字符串匹配。
5.一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现根据权利要求1至4中任一项所述方法的步骤。
6.一种计算机设备,包括存储器和处理器,在所述存储器上存储有能够在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至4中任一项所述的方法的步骤。
CN202011492806.9A 2020-12-17 2020-12-17 一种用于数据包检测的并行模式匹配方法 Active CN112506789B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011492806.9A CN112506789B (zh) 2020-12-17 2020-12-17 一种用于数据包检测的并行模式匹配方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011492806.9A CN112506789B (zh) 2020-12-17 2020-12-17 一种用于数据包检测的并行模式匹配方法

Publications (2)

Publication Number Publication Date
CN112506789A CN112506789A (zh) 2021-03-16
CN112506789B true CN112506789B (zh) 2022-08-02

Family

ID=74921685

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011492806.9A Active CN112506789B (zh) 2020-12-17 2020-12-17 一种用于数据包检测的并行模式匹配方法

Country Status (1)

Country Link
CN (1) CN112506789B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113065419B (zh) * 2021-03-18 2022-05-24 哈尔滨工业大学 一种基于流量高频内容的模式匹配算法及系统
CN117668527B (zh) * 2024-01-31 2024-04-26 国网湖北省电力有限公司信息通信公司 一种大流量模型下的多特征识别方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1716958A (zh) * 2004-06-14 2006-01-04 鸿璟科技股份有限公司 使用子表式自动机的系统安全实施方法以及相关的系统
CN108418793A (zh) * 2018-01-29 2018-08-17 西安交大捷普网络科技有限公司 多模式的串匹配方法和装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286988B (zh) * 2008-04-18 2011-05-04 北京启明星辰信息技术股份有限公司 一种并行多模式匹配的方法及系统
US8683590B2 (en) * 2008-10-31 2014-03-25 Alcatel Lucent Method and apparatus for pattern matching for intrusion detection/prevention systems
CN102902713B (zh) * 2012-03-29 2016-03-02 中国科学技术大学 一种基于图形处理单元的非确定有限自动机的匹配方法及装置
CN103023883A (zh) * 2012-11-26 2013-04-03 清华大学 基于ac自动机和后缀树的字符串匹配方法
CN104796354A (zh) * 2014-11-19 2015-07-22 中国科学院信息工程研究所 一种乱序数据包字符串匹配方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1716958A (zh) * 2004-06-14 2006-01-04 鸿璟科技股份有限公司 使用子表式自动机的系统安全实施方法以及相关的系统
CN108418793A (zh) * 2018-01-29 2018-08-17 西安交大捷普网络科技有限公司 多模式的串匹配方法和装置

Also Published As

Publication number Publication date
CN112506789A (zh) 2021-03-16

Similar Documents

Publication Publication Date Title
CN112506789B (zh) 一种用于数据包检测的并行模式匹配方法
JP5946423B2 (ja) システム・ログの分類方法、プログラム及びシステム
EP3622411B1 (en) Incremental graph computations for querying large graphs
US7725510B2 (en) Method and system for multi-character multi-pattern pattern matching
US7689588B2 (en) Method of syntactic pattern recognition of sequences
US20160275205A1 (en) Regular expression matching
US7984044B2 (en) System or program for searching documents
US8701162B1 (en) Method and system for detecting and countering malware in a computer
Watson et al. An efficient incremental DFA minimization algorithm
Rasool et al. String matching methodologies: A comparative analysis
CN115017268B (zh) 一种基于树结构的启发式日志抽取方法及系统
CN114861194A (zh) 一种基于bgru与cnn融合模型的多类型漏洞检测方法
US20150006577A1 (en) Method and system for searching and storing data
US8935270B1 (en) Content search system including multiple deterministic finite automaton engines having shared memory resources
US8065283B2 (en) Term synonym generation
US8606772B1 (en) Efficient multiple-keyword match technique with large dictionaries
US11144712B2 (en) Dictionary creation apparatus, dictionary creation method, and non-transitory computer-readable storage medium for storing dictionary creation program
US8478575B1 (en) Automatic anomaly detection for HW debug
CN108304467B (zh) 用于文本间匹配的方法
Chayapathi Survey and comparison of string matching algorithms
Maraist String shuffling over a gap between parsing and plan recognition
Canzar et al. Solving the minimum string cover problem
JP2005215716A (ja) テキスト検索方法
CN113254025B (zh) 基于原语状态机的关键字特征集合编译方法、装置及设备
CN115801020B (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