CN100396057C - 基于有状态过滤引擎的高速分组检测方法 - Google Patents

基于有状态过滤引擎的高速分组检测方法 Download PDF

Info

Publication number
CN100396057C
CN100396057C CNB2005100866819A CN200510086681A CN100396057C CN 100396057 C CN100396057 C CN 100396057C CN B2005100866819 A CNB2005100866819 A CN B2005100866819A CN 200510086681 A CN200510086681 A CN 200510086681A CN 100396057 C CN100396057 C CN 100396057C
Authority
CN
China
Prior art keywords
prefix
substring
numbering
filter engine
rule
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.)
Expired - Fee Related
Application number
CNB2005100866819A
Other languages
English (en)
Other versions
CN1783838A (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.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CNB2005100866819A priority Critical patent/CN100396057C/zh
Publication of CN1783838A publication Critical patent/CN1783838A/zh
Application granted granted Critical
Publication of CN100396057C publication Critical patent/CN100396057C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

基于有状态过滤引擎的高速分组检测方法属于计算机网络路由器技术领域,其特征在于:在网络中路由器上部署一个基于有状态过滤引擎的高速分组检测组件,该组件能够高速检测到达路由器的分组,识别含有规则库中的恶意代码(蠕虫,病毒)的分组。该模块利用快速查找表和前缀寄存器堆保存子串的匹配状态;硬件并行查找过滤器和前缀寄存器堆,从而达到高速检测分组的目的。该模块能够精确高速的找出通过路由器中含有恶意代码的分组,硬件开销小,速度快。

Description

基于有状态过滤引擎的高速分组检测方法
技术领域
基于有状态过滤引擎的高速分组检测方法属于计算机网络路由器技术领域。
背景技术
目前Internet开放的结构以及设计并没有对安全做很多考虑,对网络上恶意的攻击包括病毒,蠕虫等各种各样的方式缺乏必要的约束。目前,在关于如何在端系统、接入路由器,或者核心路由器部署新的功能来增加安全性等方面的研究有很多。高速分组检测是一种应用广泛的对抗网络恶意攻击的方法,正在成为越来越广泛应用的技术。它通过检测分组中的内容,发现恶意代码,有效的保护网络和端系统。
当前高速分组检测方法面临的最大挑战是网络传输速率的日益增加和攻击方式的多样性。评价分组检测的算法往往需要考虑以下几方面:(1)速度。在线检测必须达到线速,避免检测系统本身成为网络攻击的目标。传统基于纯软件的方法往往很难满足现在高速网络接口的需要。(2)可扩展性。包括规则集大小和规则长度的可扩展性。攻击方式的增加导致规则集日益增大,同时较长的蠕虫和病毒的特征码也往往长达上百,甚至几百个字节。所以检测系统应该能够支持大规模的规则集合和很长的特征字符串。(3)开销。为了实际应用,方案使用的资源必须是可以合理的,硬件实现的方案往往受到存储器容量和逻辑复杂度的限制。
基于Bloom filter的高速分组检测方法资源使用较低,同时能够满足检测系统对处理速度和支持较大规则集的要求,然而在处理较长的特征字符串时存在可扩展性问题。本文提出了基于有状态Bloom filter引擎的高速分组检测算法,引入了状态机的思想到使用Bloomfilter进行的分组检测,构造了快速查找表保存状态机信息,同时利用前缀寄存器堆保存当前匹配的中间状态信息,从而解决了可扩展性的问题。同时通过并行查找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引擎命中一个特征字符子串后,命中的子串和从前缀寄存器堆中取出的当前输出端口的前缀会作为索引用来查询后台的分析器,后台分析器把BloomFilter引擎过滤出来的嫌疑子串做精确匹配,排除误检的字符串,然后查找命中的数据项,判断是否命中某条规则,是则输出命中结果,并且更新前缀寄存器堆。
Bloom filter引擎的原理见图4。该引擎由一组针对特征字串长度由Lmin到Lmax的BloomFilter组成,在本例中假设Lmin为3字节,Lmax为W字节。被检字符串每次移动一个字节,所有Bloom Filter并行工作。如果同时有几个Bloom Filter匹配,则按照最长字符串优先的原则,首先把L值最大的字符串送分析器检查,然后依次检查所有命中的字符串。BloomFilter在字符串过滤应用中其搜索时间基本上与规则集合的大小没有关系,所以能达到很高的性能。然而,因为每个特征字符串的长度都需要一个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这个规则,此外通过新前缀和可能后缀之间的距离得到了不存在可能后缀,不需要更新前缀寄存器堆。
前缀寄存器堆见图5。它是一个长度为Lmax的寄存器堆,用来保存当前的匹配状态信息,也就是当前命中的有效活动前缀。查询分析器的时候,我们会使用当前命中的字符子串和当前命中的活动前缀作为索引来查找匹配表。
图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引擎的最大匹配长度L<sub>max</sub>   32
  规则在流中匹配的概率P<sub>total</sub>   0.01(图7);0.1(图8)
从图7和图8中,可以看到基于有状态Bloom filter引擎的高速分组检测方法虽然比基本方法中性能略低,然而仍然保持了高的吞吐性能,满足线速要求。
图9中比较了硬件开销。基于有状态Bloom filter引擎的高速分组检测方法相比基于无状态Bloom filter引擎方法SABFE大大的节省了硬件开销。图9中实线是基于有状态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,一直到待查询的字符串全部检测完毕为止。
CNB2005100866819A 2005-10-21 2005-10-21 基于有状态过滤引擎的高速分组检测方法 Expired - Fee Related CN100396057C (zh)

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 CN1783838A (zh) 2006-06-07
CN100396057C true 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)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080235792A1 (en) * 2007-03-23 2008-09-25 Xianwu Xing Prefix matching algorithem
US8515654B2 (en) * 2008-09-23 2013-08-20 Microsoft Corporation Mobile data flow collection and dissemination
CN101414914B (zh) * 2008-11-26 2012-01-25 北京星网锐捷网络技术有限公司 数据内容过滤方法与装置、有限状态自动机及其构造装置
CN102790704A (zh) * 2011-11-29 2012-11-21 北京安天电子设备有限公司 抗特征压界的数据包检测方法及装置
CN108536713B (zh) * 2017-03-03 2021-05-18 阿里巴巴(中国)有限公司 字符串审核方法、装置及电子设备
CN113051566B (zh) * 2021-03-29 2023-07-14 深信服科技股份有限公司 一种病毒检测方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050022009A1 (en) * 2003-06-05 2005-01-27 Aguilera Macros K. System and method for preventing replay attacks
WO2005017708A2 (en) * 2003-08-14 2005-02-24 Washington University Method and apparatus for detecting predefined signatures in packet payload using bloom filters
CN1655533A (zh) * 2004-02-09 2005-08-17 阿尔卡特公司 基于最长前缀匹配算法的过滤器
US20050195832A1 (en) * 2004-02-09 2005-09-08 Washington University Method and system for performing longest prefix matching for network address lookup using bloom filters

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050022009A1 (en) * 2003-06-05 2005-01-27 Aguilera Macros K. System and method for preventing replay attacks
WO2005017708A2 (en) * 2003-08-14 2005-02-24 Washington University Method and apparatus for detecting predefined signatures in packet payload using bloom filters
CN1655533A (zh) * 2004-02-09 2005-08-17 阿尔卡特公司 基于最长前缀匹配算法的过滤器
US20050195832A1 (en) * 2004-02-09 2005-09-08 Washington University Method and system for performing longest prefix matching for network address lookup using bloom filters

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Design and implementation of a string matching systemfor network intrusion detection using FPGA-based Bloomfilters. Dharmapurikar S,Attig M,Lockwood J.Technical Report Washington University. 2004
Design and implementation of a string matching systemfor network intrusion detection using FPGA-based Bloomfilters. Dharmapurikar S,Attig M,Lockwood J.Technical Report Washington University. 2004 *
Fast hash table lookup using extended Bloom filter. Song HY,Dharmapurikar S,Turner J,Lockwood J.ACM SIGCOMM,No.20-26. 2005
Fast hash table lookup using extended Bloom filter. Song HY,Dharmapurikar S,Turner J,Lockwood J.ACM SIGCOMM,No.20-26. 2005 *

Also Published As

Publication number Publication date
CN1783838A (zh) 2006-06-07

Similar Documents

Publication Publication Date Title
CN109921996B (zh) 一种高性能的OpenFlow虚拟流表查找方法
CN100396057C (zh) 基于有状态过滤引擎的高速分组检测方法
CN101296116B (zh) 使用非确定性有限自动机的并行模式匹配
Goel et al. Small subset queries and bloom filters using ternary associative memories, with applications
Le et al. A memory-efficient and modular approach for large-scale string pattern matching
Zheng et al. Algorithms to speedup pattern matching for network intrusion detection systems
EP2684314B1 (en) Methods and systems for full pattern matching in hardware
KR20140061359A (ko) 앵커링된 패턴들
US8272056B2 (en) Efficient intrusion detection
CN101577721A (zh) 一种索引拆分布鲁姆过滤器及其插入、删除和查询方法
US10176187B2 (en) Method and apparatus for generating a plurality of indexed data fields
CN102387151A (zh) 一种p2p网络中基于块的病毒检测方法
Pao et al. A memory-based NFA regular expression match engine for signature-based intrusion detection
Chen et al. Ac-suffix-tree: Buffer free string matching on out-of-sequence packets
US20040190506A1 (en) Method and apparatus for performing complex pattern matching in a data stream within a computer network
Huang et al. Accelerating the bit-split string matching algorithm using Bloom filters
Hsiao et al. High-throughput intrusion detection system with parallel pattern matching
Antichi et al. Counting bloom filters for pattern matching and anti-evasion at the wire speed
Ni et al. A fast multi-pattern matching algorithm for deep packet inspection on a network processor
Ngoc et al. Memory-efficient signature matching for ClamAV on FPGA
Lin et al. A platform-based SoC design and implementation of scalable automaton matching for deep packet inspection
Le et al. A memory-efficient and modular approach for string matching on fpgas
Wang et al. Hardware accelerator to detect multi-segment virus patterns
Tseng et al. A parallel automaton string matching with pre-hashing and root-indexing techniques for content filtering coprocessor
Sheu et al. In-depth packet inspection using a hierarchical pattern matching algorithm

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