CN1783838A - 基于有状态过滤引擎的高速分组检测方法 - Google Patents
基于有状态过滤引擎的高速分组检测方法 Download PDFInfo
- Publication number
- CN1783838A CN1783838A CNA2005100866819A CN200510086681A CN1783838A CN 1783838 A CN1783838 A CN 1783838A CN A2005100866819 A CNA2005100866819 A CN A2005100866819A CN 200510086681 A CN200510086681 A CN 200510086681A CN 1783838 A CN1783838 A CN 1783838A
- Authority
- CN
- China
- Prior art keywords
- prefix
- substring
- filter engine
- rule
- numbering
- 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
- 238000000034 method Methods 0.000 title claims description 29
- 238000001514 detection method Methods 0.000 claims abstract description 30
- 230000006870 function Effects 0.000 claims description 10
- 230000015572 biosynthetic process Effects 0.000 claims description 5
- 238000007689 inspection Methods 0.000 claims description 3
- 238000011897 real-time detection Methods 0.000 claims description 2
- 241000700605 Viruses Species 0.000 abstract description 3
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 7
- 230000008878 coupling Effects 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 7
- 238000005859 coupling reaction Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008485 antagonism Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000005194 fractionation Methods 0.000 description 1
- 230000005039 memory span Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
基于有状态过滤引擎的高速分组检测方法属于计算机网络路由器技术领域,其特征在于:在网络中路由器上部署一个基于有状态过滤引擎的高速分组检测组件,该组件能够高速检测到达路由器的分组,识别含有规则库中的恶意代码(蠕虫,病毒)的分组。该模块利用快速查找表和前缀寄存器堆保存子串的匹配状态;硬件并行查找过滤器和前缀寄存器堆,从而达到高速检测分组的目的。该模块能够精确高速的找出通过路由器中含有恶意代码的分组,硬件开销小,速度快。
Description
技术领域
基于有状态过滤引擎的高速分组检测方法属于计算机网络路由器技术领域。
背景技术
目前Internet开放的结构以及设计并没有对安全做很多考虑,对网络上恶意的攻击包括病毒,蠕虫等各种各样的方式缺乏必要的约束。目前,在关于如何在端系统、接入路由器,或者核心路由器部署新的功能来增加安全性等方面的研究有很多。高速分组检测是一种应用广泛的对抗网络恶意攻击的方法,正在成为越来越广泛应用的技术。它通过检测分组中的内容,发现恶意代码,有效的保护网络和端系统。
当前高速分组检测方法面临的最大挑战是网络传输速率的日益增加和攻击方式的多样性。评价分组检测的算法往往需要考虑以下几方面:(1)速度。在线检测必须达到线速,避免检测系统本身成为网络攻击的目标。传统基于纯软件的方法往往很难满足现在高速网络接口的需要。(2)可扩展性。包括规则集大小和规则长度的可扩展性。攻击方式的增加导致规则集日益增大,同时较长的蠕虫和病毒的特征码也往往长达上百,甚至几百个字节。所以检测系统应该能够支持大规模的规则集合和很长的特征字符串。(3)开销。为了实际应用,方案使用的资源必须是可以合理的,硬件实现的方案往往受到存储器容量和逻辑复杂度的限制。
基于Bloom filter的高速分组检测方法资源使用较低,同时能够满足检测系统对处理速度和支持较大规则集的要求,然而在处理较长的特征字符串时存在可扩展性问题。本文提出了基于有状态Bloom filter引擎的高速分组检测算法,引入了状态机的思想到使用Bloom filter进行的分组检测,构造了快速查找表保存状态机信息,同时利用前缀寄存器堆保存当前匹配的中间状态信息,从而解决了可扩展性的问题。同时通过并行查找Bloom filter和前缀寄存器堆,以及利用多个并行的Bloom filter引擎进行流并行检测,达到了高的吞吐性能,满足了线速的需求。所述的Bloom是人名,本文的Bloom filter指的就是过滤器,Bloom filter引擎指的就是过滤引擎。
发明内容
本发明的目的在于提供一种高速分组检测(检测分组中是否有恶意代码等)的方法。本发明所提出的方法的特征在于:所述的方法是一种基于有状态过滤引擎的高速分组检测方法,所述的方法是通过在网络内的每台路由器上部属一个对于网络流量进行实时检测的高速分组检测组件来实现的,该组件包括:
一个专用的数字集成电路芯片,其中会有:
●过滤引擎,包括一组针对长度为Lmin到Lmax的特征字串的过滤器,用来对到达过滤引擎的当前窗口的字节进行检测,其中,Lmin为最小字串的长度,Lmax为最大字串的长度,同时,每个过滤器有一个长度为m位的片上RAM;
●前缀寄存器堆由Lmax个寄存器组成;
●一个片外RAM,至少存储以下构成快速查找表的内容:
■过滤引擎匹配的字符子串,长度在Lmin和Lmax之间;
■已经命中的前缀编号,-1表示无意义,*表示通配符;
■新构成的前缀的编号,-1表示无意义,0表示没有构成新前缀;
■匹配规则编号,0表示没有匹配到任何规则;
■新前缀和可能后缀之间的距离,-1表示无意义,0表示不存在可能后缀;
所述过滤引擎设有网络流量输入端口和已匹配的字符子串的输出端口;前缀寄存器堆有一个设定的大小为Lmax的已经命中的前缀编号的输入端口,还有一个已经命中的前缀编号的输出端口;所述的片外RAM起分析器的作用,设有已经匹配的字符子串和已经匹配的前缀的共两个输入端口,还有一个把更新后的前缀输出到前缀寄存器的输出端口以及一个已经匹配的规则的输出端口,该分析器根据已经匹配的前缀编号加字符子串查找内存中的数据表,判断当前已经命中的前缀编号和本已命中的字符子串是否构成新的前缀,或者是否已经匹配了特征字符串,,若已构成新的前缀,则把新前缀送往所述前缀寄存器堆,若已匹配了特征字符串,则输出已匹配的规则;
本发明的所述方法依次会有以下步骤:
步骤1.前缀寄存器堆全部初始化为0;
步骤2.把设定的大小为Lmin和Lmax之间的需要过滤引擎匹配的字符子串依次逐串的送往过滤引擎,该引擎对每一个字符串X,使用K个散列函数,计算出K个散列值,称为签名信息值,值域为[0,m-1],m代表位的个数,对每一个值i,把对应的过滤器的片上RAM的第i位的数值相应置1,若已经是1,则保留;
步骤3.所述高速分组检测组件对网络流量按以下步骤进行实时的检测:
步骤3.1.检测窗口移动和前缀寄存器读取,依次会有以下子步骤:
步骤3.1.1.过滤引擎的检测窗口向前移动一个字节;
步骤3.1.2.所述分析器从所述前缀寄存器读取与当前检测窗口象对应的子串的前缀编号,同时清零上一个检测窗口所对应的前缀在寄存器上内容;
步骤3.2.过滤引擎对当前窗口的字节进行检测,依次会有以下步骤:
步骤3.2.1.过滤引擎中并行的对待查询的字符串也用相同的K个散列函数计算出K个值,检查对应的过滤器的片上RAM相应的K位是否全为1,若有一位的值为0,则该字符子串肯定不属于设定的需要匹配的字符子串,若全为1,则以一定的误判率f判定该字符子串属于规则集;
步骤3.2.2.记下所有命中的属于规则集构成的字符子串集合的字符子串;
步骤3.3.把步骤3.2.2得到的各字符子串送往所述分析器进行快速查找表检索,依次会有以下步骤:
步骤3.3.1.分析器挑选一个没有检索过的过滤引擎命中的长度最长的字符串进行快速查表检索,若规则集中存在长度超过所述Lmax的规则,则需要把这些规则划分成长度不超过Lmax的子串,得到上述规则集的规则的特征字符串的子串集合,从而保存了所有可能的前缀并予以编号,而每一个前缀的长度必须是Lmax的整数倍;
步骤3.3.2.使用步骤3.1.2中所读到的前缀编号和过滤引擎已经命中的字符子串检索含有以下数据项的快速查找表:过滤器命中的字符子串,已经命中的前缀编号,新前缀的编号,匹配规则编号以及新前缀和可能后缀之间的距离;
步骤3.3.3若步骤3.3.2所述的当前过滤引擎命中的子串已经和已命中的前缀构成新的前缀,则分析器根据新前缀和可能后缀之间的距离输出新前缀号去更新前缀寄存器堆;
步骤3.3.4若当前过滤引擎命中的子串和已经命中的前缀组成了匹配的字符串,则属于发现了待检测的规则,分析器便输出已匹配的规则;
步骤3.3.5若命中的过滤器的长度小于Lmax,则重复3.3.2~3.3.4,一直到待查询的字符串全部检测完毕为止。
实验证明:
(1)基于有状态过滤引擎的高速分组检测方法能够以线速检测分组中的规则字符串;
(2)基于有状态过滤引擎的高速分组检测方法需要的硬件开销小,适合实际应用。
附图说明
图1.基于过滤引擎的高速分组检测方法的流程图;
图2.基于过滤引擎的高速分组检测方法的系统框架;
图3.过滤器示意图;
图4.过滤引擎示意图;
图5.前缀寄存器堆;
图6.查找过程;
图7.分组检测吞吐性能1;
图8.分组检测吞吐性能2;
图9.硬件资源开销。
具体实施方式
系统组成见图2,到达的分组首先通过一由组针对不同长度特征字串的Bloom filter组成的Bloom filter引擎的前台系统,该引擎对分组的内容和特征子串做匹配。然后,我们利用分析器和前缀寄存器堆构成后台系统,这是因为(1)Bloom Filter搜索的结果并非是精确匹配的,存在一定的误检概率,虽然这个概率可以通过系统的设计降至很低,但仍然需要一个分析器做精确匹配;(2)我们匹配的只是规则子串,需要在前缀寄存器堆和分析器中记录当前匹配的状态,从而实现长特征字符串的匹配功能。
Bloom filter的基本原理,它是对规则集中每一个字符串X,利用k个散列函数,计算出k个散列值,值域为[0,m-1],对每一个值i,将对应的第i位的数组的相应位置为1,如果已经是1,就不做处理。
查询时,对字符串也用相同的k个散列函数得到出k个散列值,检查对应的k位是否全为1,若有一位为0,则该字符串肯定不属于规则集,若全为1,则以一定的误判率f判定该字符串属于规则集。
如图3,初始化时,x1、x2为规则集中的字符串,而散列函数的个数为3个,可以看到x1和x2利用散列函数生成的各自的签名,每个签名由三个散列值组成,于是在数组对应的3个位置为1。y1、y2为查询的字符串。查找的时候,利用相同的散列函数得到y1和y2的各自的签名,各个签名由三个散列值组成,然后通过查看数组中对应的内存位是否被置1判断是否命中,可知y1肯定不属于规则集,y2以一定误判率判定属于规则集。
在系统中,当Bloom filter引擎命中一个特征字符子串后,命中的子串和从前缀寄存器堆中取出的当前输出端口的前缀会作为索引用来查询后台的分析器,后台分析器把Bloom Filter引擎过滤出来的嫌疑子串做精确匹配,排除误检的字符串,然后查找命中的数据项,判断是否命中某条规则,是则输出命中结果,并且更新前缀寄存器堆。
Bloom filter引擎的原理见图4。该引擎由一组针对特征字串长度由Lmin到Lmax的BloomFilter组成,在本例中假设Lmin为3字节,Lmax为W字节。被检字符串每次移动一个字节,所有Bloom Filter并行工作。如果同时有几个Bloom Filter匹配,则按照最长字符串优先的原则,首先把L值最大的字符串送分析器检查,然后依次检查所有命中的字符串。Bloom Filter在字符串过滤应用中其搜索时间基本上与规则集合的大小没有关系,所以能达到很高的性能。然而,因为每个特征字符串的长度都需要一个Bloom filter来处理,Bloom filtered的个数随着最大特征串长度增长而增长。
分析器是一个使用使用片外RAM存储的快速查找表,使用散列链表的存储方式。假设我们经过编号的规则集合如下,Bloom filter引擎最大支持的规则长度Lmax=4:
规则 特征字符串 编号
R1 ABC 1
R2 TFGEC 2
R3 TFGEMNFGET 3
R4 ABCDMNFGS 4
对于表中的四个规则,由于Bloom filter引擎最多只能匹配长度为Lmax=4的特征字符串,所以规则2,3,4将无法检测。因此,我们需要把规则2,3,4划分成不超过长度为4的字符子串,最后得到特征字符串的子串集合。拆分时长度不是4的倍数的规则,比如TFGEC被拆成TFGE和FGEC,这是因为如果我们将TFGEC拆分为TFGE和C的话,由于单个字符C在流中出现的概率非常大,使得性能会严重下降。同理ABCDMNFGS被拆分成ABCD,MNFG和NFGS三个字符子串。最后我们得到子串集合:
规则 特征字符子串
R1 ABC
R2/R3 TFGE
R2 FGEC
R3/R4 MNFG
R3 FGET
R4 ABCD
R4 NFGS
此外,规则集经过拆分之后,所有的可能的前缀都被我们保存下来,前缀的长度必然是Lmax的倍数。比如ABCDMNFGS的可能前缀就是ABCD和ABCDMNFG两个,我们对前缀进行编号,得到下表
前缀串 Index
TFGE 1
TFGEMNFG 2
ABCD 3
ABCDMNFG 4
对于规则TFGEC形成的字符子串TFGE和FGEC,FGEC叫做TFGE的可能后缀,距离为1,这是因为FGEC是TFGE左移动一个字节消去字符T,右移入一个字节C形成的。同理,规则ABCDMNFGS形成的字符子串ABCD,MNFG和NFGS,MNFG叫做ABCD的可能后缀,距离为4,NFGS叫做ABCDMNFG的可能后缀,距离为1。
于是利用字符子串,前缀串和,前缀串以及可能后缀之间的距离构成了快速查找表,用来保存当前匹配的子串的关联信息。当前Bloom filter引擎命中的子串可能与已经命中的前缀组成新的前缀,也可以组成匹配的字符串。我们在外存中的快速查找表,如下表所示,对于已经命中的前缀编号,-1表示无意义,*表示通配符;对于新构成的前缀的编号,-1表示无意义,0表示没有构成新前缀;对于匹配规则编号,0表示没有匹配到任何规则;对于新前缀和可能后缀之间的距离,-1表示无意义,0表示不存在可能后缀;
Bloom filter引擎 已经命中的前 构成新前缀编号 匹配规则编号 新前缀和可能后缀之间的距
命中的字符子串 缀编号 离
ABC -1 -1 1 -1
TFGE * 1 0 1,4
FGEC 1 0 2 0
MNFG 1 2 0 2
MNFG 3 4 0 1
FGET 2 0 3 0
ABCD * 3 0 4
NFGS 4 0 4 0
比如表中的第三项,Bloom filter引擎当前命中了FGEC这个字符子串,而前缀寄存器堆输出已经命中的前缀编号是1,也就是TFGE这个前缀,通过查表,得到构成新前缀编号为0,也就是没有构成新的前缀,通过匹配规则编号得到匹配了规则2,也就是TFGEC这个规则,此外通过新前缀和可能后缀之间的距离得到了不存在可能后缀,不需要更新前缀寄存器堆。
前缀寄存器堆见图4。它是一个长度为N的寄存器堆,用来保存当前的匹配状态信息,也就是当前命中的有效活动前缀。查询分析器的时候,我们会使用当前命中的字符子串和当前命中的活动前缀作为索引来查找匹配表。
图5中堆表示当前命中了编号为1的前缀和编号为3的前缀,距离当前流的1个字节就可能命中编号为1的前缀的下一个后缀,距离此时流的3个字节的位置可能命中编号为3的前缀的后一个位置。箭头指向的寄存器称为当前活动前缀。
每次Bloom filter引擎查找命中的时候会读取当前活动前缀,从而得知是否有已经命中的前缀,并用它进行分析器查找。如果Bloom filter引擎没有命中,则只需要清零当前活动前缀,同时下一个寄存器成为当前活动前缀。
查找的一个实例过程如图6。
(1)开始状态前缀寄存器堆全为0,表示没有命中的前缀,查找窗口移动一个字节。
(2)前缀寄存器堆输出当前输出端口的寄存器内容,即前缀编号0,并清零寄存器。过滤引擎查找命中TFGE。
(3)分析器查找得到表项2,发现TFGE会构成新前缀编号1,同时没有匹配任何规则,而可能后缀的距离是1和4。于是更新前缀寄存器表。在离当前输出端口距离为1和4的寄存器处写入新前缀编号1,并移动输出端口向前移动。
(4)查找窗口移动一个字节。前缀寄存器堆输出当前输出端口的寄存器内容,即前缀编号1,并清零寄存器。过滤引擎查找命中FGEC。
(5)经过分析器查找得到表项3,发现FGEC和前缀编号1匹配了规则2,也就是匹配了规则TFGEC,但是没有构成新前缀,所以不需要更新前缀寄存器堆,但是前缀寄存器堆的输出端口向前移动。
(6)继续查找,前缀寄存器堆输出当前输出端口的寄存器内容,即前缀编号0,并清零寄存器。过滤引擎查找发现没有命中。则继续移动查找窗口。
我们针对该方法做了模拟实验,模拟的场景和参数如下:
(1)假设所有规则的长度从5~L均匀分布(L是最长规则的长度)
(2)假设每条规则的在流中匹配的概率相同,假设这些概率之和为Ptotal
并行Bloom filter引擎的个数 | 4 |
FPGA的频率 | 333MHZ |
外存DRAM位宽 | 32bit |
Bloom filter引擎的最大匹配长度Lmax | 32 |
规则在流中匹配的概率Ptotal | 0.01(图6);0.1(图7) |
从图7和图8中,可以看到基于有状态Bloom filter引擎的高速分组检测方法虽然比基本方法中性能略低,然而仍然保持了高的吞吐性能,满足线速要求。
图9中比较了硬件开销。基于有状态Bloom filter引擎的高速分组检测方法相比基于无状态Bloom filter引擎方法SABFE大大的节省了硬件开销。图8中红线是基于有状态Bloom filter引擎的高速分组检测方用于Bloom filter的硬件开销,可以看到随着字符串长度增加,硬件开销是固定的,所以具有可扩展性。把我们的资源消耗作为基本单位,蓝线中表示的是基本方法的硬件开销,它随着特征字符串长度增加时硬件开销超线性增长。
由此可见,本发明达到了预期目的。
Claims (1)
1.基于有状态过滤引擎的高速分组检测方法,其特征在于,所述的方法是一种基于有状态过滤引擎的高速分组检测方法,所述的方法是通过在网络内的每台路由器上部属一个对于网络流量进行实时检测的高速分组检测组件来实现的,该组件包括:
一个专用的数字集成电路芯片,其中会有:
●过滤引擎,包括一组针对长度为Lmin到Lmax的特征字串的过滤器,用来对到达过滤引擎的当前窗口的字节进行检测,其中,Lmin为最小字串的长度,Lmax为最大字串的长度,同时,每个过滤器有一个长度为m位的片上RAM;
●前缀寄存器堆由Lmax个寄存器组成;
●一个片外RAM,至少存储以下构成快速查找表的内容:
■过滤引擎匹配的字符子串,长度在Lmin和Lmax之间;
■已经命中的前缀编号,-1表示无意义,*表示通配符;
■新构成的前缀的编号,-1表示无意义,0表示没有构成新前缀;
■匹配规则编号,0表示没有匹配到任何规则;
■新前缀和可能后缀之间的距离,-1表示无意义,0表示不存在可能后缀;
所述过滤引擎设有网络流量输入端口和已匹配的字符子串的输出端口;前缀寄存器堆有一个设定的大小为Lmax的已经命中的前缀编号的输入端口,还有一个已经命中的前缀编号的输出端口;所述的片外RAM起分析器的作用,设有已经匹配的字符子串和已经匹配的前缀的共两个输入端口,还有一个把更新后的前缀输出到前缀寄存器的输出端口以及一个已经匹配的规则的输出端口,该分析器根据已经匹配的前缀编号加字符子串查找内存中的数据表,判断当前已经命中的前缀编号和本已命中的字符子串是否构成新的前缀,或者是否已经匹配了特征字符串,,若已构成新的前缀,则把新前缀送往所述前缀寄存器堆,若已匹配了特征字符串,则输出已匹配的规则;
本发明的所述方法依次会有以下步骤:
步骤1.前缀寄存器堆全部初始化为0;
步骤2.把设定的大小为Lmin和Lmax之间的需要过滤引擎匹配的字符子串依次逐串的送往过滤引擎,该引擎对每一个字符串X,使用K个散列函数,计算出K个散列值,称为签名信息值,值域为[0,m-1],m代表位的个数,对每一个值i,把对应的过滤器的片上RAM的第i位的数值相应置1,若已经是1,则保留;
步骤3.所述高速分组检测组件对网络流量按以下步骤进行实时的检测:
步骤3.1.检测窗口移动和前缀寄存器读取,依次会有以下子步骤:
步骤3.1.1.过滤引擎的检测窗口向前移动一个字节;
步骤3.1.2.所述分析器从所述前缀寄存器读取与当前检测窗口象对应的子串的前缀编号,同时清零上一个检测窗口所对应的前缀在寄存器上内容;
步骤3.2.过滤引擎对当前窗口的字节进行检测,依次会有以下步骤:
步骤3.2.1.过滤引擎中并行的对待查询的字符串也用相同的K个散列函数计算出K个值,检查对应的过滤器的片上RAM相应的K位是否全为1,若有一位的值为0,则该字符子串肯定不属于设定的需要匹配的字符子串,若全为1,则以一定的误判率f判定该字符子串属于规则集;
步骤3.2.2.记下所有命中的属于规则集构成的字符子串集合的字符子串;
步骤3.3.把步骤3.2.2得到的各字符子串送往所述分析器进行快速查找表检索,依次会有以下步骤:
步骤3.3.1.分析器挑选一个没有检索过的过滤引擎命中的长度最长的字符串进行快速查表检索,若规则集中存在长度超过所述Lmax的规则,则需要把这些规则划分成长度不超过Lmax的子串,得到上述规则集的规则的特征字符串的子串集合,从而保存了所有可能的前缀并予以编号,而每一个前缀的长度必须是Lmax的整数倍;
步骤3.3.2.使用步骤3.1.2中所读到的前缀编号和过滤引擎已经命中的字符子串检索含有以下数据项的快速查找表:过滤器命中的字符子串,已经命中的前缀编号,新前缀的编号,匹配规则编号以及新前缀和可能后缀之间的距离;
步骤3.3.3若步骤3.3.2所述的当前过滤引擎命中的子串已经和已命中的前缀构成新的前缀,则分析器根据新前缀和可能后缀之间的距离输出新前缀号去更新前缀寄存器堆;
步骤3.3.4若当前过滤引擎命中的子串和已经命中的前缀组成了匹配的字符串,则属于发现了待检测的规则,分析器便输出已匹配的规则;
步骤3.3.5若命中的过滤器的长度小于Lmax,则重复3.3.2~3.3.4,一直到待查询的字符串全部检测完毕为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100866819A CN100396057C (zh) | 2005-10-21 | 2005-10-21 | 基于有状态过滤引擎的高速分组检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100866819A CN100396057C (zh) | 2005-10-21 | 2005-10-21 | 基于有状态过滤引擎的高速分组检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1783838A true CN1783838A (zh) | 2006-06-07 |
CN100396057C CN100396057C (zh) | 2008-06-18 |
Family
ID=36773618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100866819A Expired - Fee Related CN100396057C (zh) | 2005-10-21 | 2005-10-21 | 基于有状态过滤引擎的高速分组检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100396057C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1981238A1 (en) * | 2007-03-23 | 2008-10-15 | O2Micro, Inc. | Prefix matching algorithem |
CN102160451A (zh) * | 2008-09-23 | 2011-08-17 | 微软公司 | 移动数据流量收集和传播 |
CN101414914B (zh) * | 2008-11-26 | 2012-01-25 | 北京星网锐捷网络技术有限公司 | 数据内容过滤方法与装置、有限状态自动机及其构造装置 |
CN102790704A (zh) * | 2011-11-29 | 2012-11-21 | 北京安天电子设备有限公司 | 抗特征压界的数据包检测方法及装置 |
CN108536713A (zh) * | 2017-03-03 | 2018-09-14 | 广东神马搜索科技有限公司 | 字符串审核方法、装置及电子设备 |
CN113051566A (zh) * | 2021-03-29 | 2021-06-29 | 深信服科技股份有限公司 | 一种病毒检测方法、装置、电子设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7926103B2 (en) * | 2003-06-05 | 2011-04-12 | Hewlett-Packard Development Company, L.P. | System and method for preventing replay attacks |
US7444515B2 (en) * | 2003-08-14 | 2008-10-28 | Washington University | Method and apparatus for detecting predefined signatures in packet payload using Bloom filters |
US7602785B2 (en) * | 2004-02-09 | 2009-10-13 | Washington University | Method and system for performing longest prefix matching for network address lookup using bloom filters |
US7433355B2 (en) * | 2004-02-09 | 2008-10-07 | Alcatel Lucent | Filter based longest prefix match algorithm |
-
2005
- 2005-10-21 CN CNB2005100866819A patent/CN100396057C/zh not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1981238A1 (en) * | 2007-03-23 | 2008-10-15 | O2Micro, Inc. | Prefix matching algorithem |
CN101272386B (zh) * | 2007-03-23 | 2011-08-17 | 凹凸电子(武汉)有限公司 | 一种前缀匹配算法 |
CN102160451A (zh) * | 2008-09-23 | 2011-08-17 | 微软公司 | 移动数据流量收集和传播 |
CN102160451B (zh) * | 2008-09-23 | 2015-05-20 | 微软公司 | 移动数据流量收集和传播 |
CN101414914B (zh) * | 2008-11-26 | 2012-01-25 | 北京星网锐捷网络技术有限公司 | 数据内容过滤方法与装置、有限状态自动机及其构造装置 |
CN102790704A (zh) * | 2011-11-29 | 2012-11-21 | 北京安天电子设备有限公司 | 抗特征压界的数据包检测方法及装置 |
CN108536713A (zh) * | 2017-03-03 | 2018-09-14 | 广东神马搜索科技有限公司 | 字符串审核方法、装置及电子设备 |
CN108536713B (zh) * | 2017-03-03 | 2021-05-18 | 阿里巴巴(中国)有限公司 | 字符串审核方法、装置及电子设备 |
CN113051566A (zh) * | 2021-03-29 | 2021-06-29 | 深信服科技股份有限公司 | 一种病毒检测方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100396057C (zh) | 2008-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Attig et al. | Implementation results of bloom filters for string matching | |
CN1783838A (zh) | 基于有状态过滤引擎的高速分组检测方法 | |
Tan et al. | Bit-split string-matching engines for intrusion detection and prevention | |
US20100153420A1 (en) | Dual-stage regular expression pattern matching method and system | |
US8397285B2 (en) | Multi-pattern packet content inspection mechanisms employing tagged values | |
CN101035131A (zh) | 协议识别方法及装置 | |
Le et al. | A memory-efficient and modular approach for large-scale string pattern matching | |
So et al. | Toward fast NDN software forwarding lookup engine based on hash tables | |
CN1642112A (zh) | 使用网络处理器和并行模式检测引擎检测侵入 | |
Sourdis et al. | Packet pre-filtering for network intrusion detection | |
CN1725705A (zh) | 流量攻击网络设备的报文特征的检测方法 | |
CN112532642B (zh) | 一种基于改进Suricata引擎的工控系统网络入侵检测方法 | |
Bremler-Barr et al. | CompactDFA: Scalable pattern matching using longest prefix match solutions | |
EP3077922B1 (en) | Method and apparatus for generating a plurality of indexed data fields | |
CN104022924A (zh) | 一种http通信内容检测的方法 | |
Dimopoulos et al. | A memory-efficient reconfigurable Aho-Corasick FSM implementation for intrusion detection systems | |
Huang et al. | Scalable TCAM-based regular expression matching with compressed finite automata | |
CN101051321A (zh) | 一种多字符串匹配方法和芯片 | |
CN1885820A (zh) | 一种路由转发表地址查找引擎装置 | |
CN101030897A (zh) | 一种入侵检测中模式匹配的方法和装置 | |
Bando et al. | Range hash for regular expression pre-filtering | |
CN101079890A (zh) | 一种生成特征码确定状态机的方法和装置 | |
CN1929484A (zh) | 一种ip地址快速定位的方法和系统 | |
Chang et al. | Hash-based OpenFlow packet classification on heterogeneous system architecture | |
Huang et al. | Accelerating the bit-split string matching algorithm using Bloom filters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080618 Termination date: 20111021 |