CN110674364A - 一种利用fpga实现的滑动字符串匹配的方法 - Google Patents
一种利用fpga实现的滑动字符串匹配的方法 Download PDFInfo
- Publication number
- CN110674364A CN110674364A CN201910817524.2A CN201910817524A CN110674364A CN 110674364 A CN110674364 A CN 110674364A CN 201910817524 A CN201910817524 A CN 201910817524A CN 110674364 A CN110674364 A CN 110674364A
- Authority
- CN
- China
- Prior art keywords
- matching
- character string
- fpga
- anchor point
- truncation
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种利用FPGA实现的滑动字符串匹配的方法,包括报文,所述报文包括若干长度不等的初始字符串,并且提供FPGA模块用于处理报文,所述利用FPGA实现的滑动字符串匹配的方法包括一级截短匹配过滤步骤和二级精确匹配步骤,所述FPGA模块包括总线输入端、处理单元和数据输出端。本发明基于FPGA硬件技术,采用Bloom Filter算法,利用FPGA内部的RAM存储单元,提出了一种基于锚点的方法,将字符串进行分类,采用一级截短匹配过滤步骤和二级精确匹配步骤两级实现方法,解决了传统Bloom Filter算法或哈希算法无法实现100G以上高速滑动字符串匹配的问题。
Description
技术领域
本发明涉及数据处理技术领域,具体为一种利用FPGA实现的滑动字符串匹配的方法。
背景技术
在网络安全、DPI、防火墙等领域一个主要的功能就是异常流量检测、攻击报文检测方法,业务与应用识别。滑动字符串匹配是实现上述功能的核心技术之一,目前滑动字符串匹配方法从大的方面分有两种,一种是软件实现,另一种是硬件实现,软件实现的方式性能低,不是本案的重点,本案的重点是硬件实现方式,用硬件实现滑动字符串匹配,常用的有三种情况的技术方案在滑动字符串匹配方面进行解决:
第一种是利用TCM实现滑动字符串匹配,TCM是一种比较灵活的基于内容查找地址的器件,但是,基于TCAM的解决方法基本是利用TCAM的空间来换取性能和匹配的数量,常用的TCAM总线性能都在128比特位宽,30M的性能能够达到的极限也就是30G左右,并且TCAM器件价格高,成本高。
第二种是基于FPGA内部资源来实现,主要是利用比较器和并行流水线的方法实现,但是,利用FPGA内部资源,主要是利用FPGA内部寄存器和LUT资源,基于比较器和并行流水的方式实现滑动字符串匹配,其性能极限也在10G-20G左右,这种方式需要占用大量的寄存器资源,并且不够灵活,随着支持的字符串数量的增加,FPGA的资源也会急剧增加。
第三种是传统的基于Bloom Filter或哈希算法实现的滑动字符串匹配,但是,传统的基于Bloom Filter算法或哈希算法实现滑动字符串匹配,需要针每个长度的字符串设计一套匹配引擎,例如字符串的长度为4-32字节,则需要设计29个匹配引擎,针对每一个长度的字符串分别进行匹配,理论上可行,但资源无法承受,所以无法实现。
目前随着互联网的大发展,网络规模和性能迅猛发展,接口速率从1G、2.5G到10G,目前100G接口已经完全成熟了,但是,实现100G以上高速滑动字符串匹配更是目前技术没有攻克的难题;针对100G的接口速率,上述方法在实现滑动字符串匹配方法已经无法达到要求,无法支撑如此高性能的接口速率对此功能的要求。
发明内容
本发明的目的在于提供一种利用FPGA实现的滑动字符串匹配的方法,基于FPGA硬件技术,采用Bloom Filter算法,利用FPGA内部的RAM存储单元,提出了一种基于锚点的方法,将字符串进行分类,采用一级截短匹配过滤步骤和二级精确匹配步骤两级实现方法,解决了传统Bloom Filter算法或哈希算法无法实现100G以上高速滑动字符串匹配的问题。
为实现上述目的,本发明提供如下技术方案:一种利用FPGA实现的滑动字符串匹配的方法,包括报文,所述报文包括若干长度不等的初始字符串,提供FPGA模块用于处理报文,所述利用FPGA实现的滑动字符串匹配的方法包括一级截短匹配过滤步骤和二级精确匹配步骤,所述FPGA模块包括总线输入端、处理单元和数据输出端;
所述一级截短匹配过滤步骤包括截短子步骤以及第一匹配子步骤;所述截短子步骤包括配置有预设的基准锚点数以及对应的截短策略,所述截短策略包括从所述总线输入端读入所述初始字符串并依照截短策略根据所述基准锚点数依次生成若干锚点数据组,每一所述锚点数据组的字节数等于所述基准锚点数且形成的每一锚点数据组获取第一个字节在所述初始字符串中的位置为上一锚点数据组获取第二个字节在所述初始字符串中的位置;
所述第一匹配子步骤包括配置于所述处理单元的哈希表以及对应的第一匹配算法,被配置的所述哈希表的数量与所述基准锚点数相同,所述第一匹配子步骤设置为每一锚点数据组中的字节输入所述处理单元,所述处理单元根据所述字节在所述锚点数据组中的顺序为每一字节匹配对应的哈希表,所述第一匹配子算法根据所述哈希表以及对应字节的内容生成第一结果数据,并根据第一结果数据生成若干相对应的第一中间数据;
所述二级精确匹配步骤包括第二匹配子步骤和验证步骤,所述第二匹配子步骤配置有一匹配条件和对应的锚点转移表,所述验证步骤配置有验证策略,所述第二匹配子步骤获取若干所述第一中间数据并通过匹配条件进行匹配后得到第二中间数据,并由第二中间数据构成锚点转移表,所述验证步骤被配置为将锚点转移表和第一结果数据经过验证策略匹配验证后通过所述数据输出端输出所述第一结果数据。
优选的,所述锚点匹配转移表包括初始字符串的ID号、初始字符串的属性、初始字符串截短的起始位置和初始字符串的有效长度。
优选的,所述初始字符串的属性包括以数字0代表的完整终结性字符串和以数字1代表的截短型字符串。
优选的,所述FPGA模块的总线输入端采用256比特并行总线接收报文中的初始字符串。
优选的,所述基准锚点数设置为4、8、16、24字节数的其中一种。
优选的,所述基准锚点数设置为4,所述FPGA模块配置有四个哈希函数,对应的设有四个哈希表H0-H3,所述锚点数据组的数量为32个,且每一所述锚点数据组包括四个哈希值,所述FPGA模块的总线接收端采用256比特并行总线接收报文中的初始字符串。
优选的,所述FPGA模块配置有RAM存储单元且所述RAM存储单元采用双口RAM存储单元。
与现有技术相比,本发明的有益效果是:
本发明基于FPGA硬件技术,利用FPGA内部的RAM存储单元,采用Bloom Filter算法,提出了一种基于锚点的方法将字符串进行分类,并采用一级截短匹配过滤步骤和二级精确匹配步骤两级实现方法,一级截短匹配过滤步骤包括截短子步骤以及第一匹配子步骤;截短子步骤包括配置有预设的基准锚点数以及对应的截短策略,解决了传统BloomFilter算法或哈希算法无法实现100G以上高速滑动字符串匹配的问题。
附图说明
图1为传统Bloom Filter算法实现滑动匹配的算法流程图;
图2为本发明提供的基于锚点的Bloom Filter算法实现滑动匹配的算法流程图;
图3为本发明提供的基于锚点的Bloom Filter算法中锚点匹配转移表与哈希表对应结构图;
图4为传统Bloom Filter算法图解说明示意图;
图5为本发明提供的基于锚点的Bloom Filter算法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,为本发明提供的传统Bloom Filter算法实现滑动匹配的算法流程图,对于报文中需要搜索的字符串,其长度是不定的,从最小的字节长度Lmin到最大的字节长度Lmax的字符串都需要对应独立的搜索引擎。当进入每个搜索引擎的字符长度大于所要搜索的字符串长度时,每进入一个字节,BF搜索引擎就需要进行一次搜索,所需要设计的BF搜索引擎的数目同需要搜索的字符串的长度分布有关,最多需要的BF搜索引擎数为Lmax-Lmin+1。由Bloom Filter算法可知,对于一个固定长度的字符串,如果采用Bloom Filter算法完成匹配的话,每个长度字符串的匹配都需要单独一个匹配引擎,每个匹配引擎都需要一组哈希算法来完成匹配功能,这样实现对于芯片的资源的要求是巨大的。
请参阅图2,为本发明提供的基于锚点的Bloom Filter算法实现滑动匹配的算法流程图,基于FPGA内部的RAM存储单元,采用Bloom Filter算法,提出了一种基于锚点的方法将字符串进行分类,完全的滑动匹配是无锚点的,相对无锚点的匹配,本发明提出的有锚点的匹配将会大大降低对存储空间的要求。本发明的利用FPGA实现的滑动字符串匹配的方法首先为字符串匹配一基准锚点数,将字符串进行截短处理,设计固定字节长度的基准锚点数以及与其匹配的截短策略,这样就不用针对所有的长度的字符串都实现Bloomfi1ter算法的匹配引擎,只实现几个固定长度的基准锚点数以及与其匹配的截短策略作为一级匹配过滤即可。
一种利用FPGA实现的滑动字符串匹配的方法,包括报文,所述报文包括若干长度不等的初始字符串,并且提供FPGA模块用于处理报文,所述利用FPGA实现的滑动字符串匹配的方法包括一级截短匹配过滤步骤和二级精确匹配步骤,所述FPGA模块包括总线输入端、处理单元和数据输出端;
所述一级截短匹配过滤步骤包括截短子步骤以及第一匹配子步骤;所述截短子步骤包括配置有预设的基准锚点数以及对应的截短策略,所述截短策略包括从所述总线输入端读入所述初始字符串并依照截短策略根据所述基准锚点数依次生成若干锚点数据组,每一所述锚点数据组的字节数等于所述基准锚点数且形成的每一锚点数据组获取第一个字节在所述初始字符串中的位置为上一锚点数据组获取第二个字节在所述初始字符串中的位置;
所述第一匹配子步骤包括配置于所述处理单元的哈希表以及对应的第一匹配算法,被配置的所述哈希表的数量与所述基准锚点数相同,所述第一匹配子步骤设置为每一锚点数据组中的字节输入所述处理单元,所述处理单元根据所述字节在所述锚点数据组中的顺序为每一字节匹配对应的哈希表,所述第一匹配子算法根据所述哈希表以及对应字节的内容生成第一结果数据,并根据第一结果数据生成若干相对应的第一中间数据;
所述二级精确匹配步骤包括第二匹配子步骤和验证步骤,所述第二匹配子步骤配置有一匹配条件和对应的锚点转移表,所述验证步骤配置有验证策略,所述第二匹配子步骤获取若干所述第一中间数据并通过匹配条件进行匹配后得到第二中间数据,并由第二中间数据构成锚点转移表,所述验证步骤被配置为将锚点转移表和第一结果数据经过验证策略匹配验证后通过所述数据输出端输出所述第一结果数据。
请参阅图3,为本发明提供的基于锚点的Bloom Filter算法中锚点匹配转移表与哈希表对应结构图,本发明提供的一种实施例,所述锚点匹配转移表包括初始字符串的ID号、初始字符串的属性、初始字符串截短的起始位置和初始字符串的有效长度,如图3所示,Char_ID表示初始字符串的ID号,Char_END_EN表示初始字符串的属性,其中,所述初始字符串的属性包括以数字0代表的完整终结性字符串和以数字1代表的截短型字符串,Char_Star_Offset表示初始字符串截短的起始位置,Char_Len表示初始字符串的有效长度。
本发明提供的一种实施例,所述FPGA模块的总线输入端采用256比特并行总线接收报文中的初始字符串,对于此初始字符串,FPGA模块采用4个哈希函数,记为H0-H3,从报文的第4个字节开始,每到达一个字节,FPGA模块需要同时完成4个哈希值计算,同时查询4次RAM存储单元,以HO-H3为地址查询的RAM为64Kx1。
FPGA模块采用256比特并行总线接收报文,即一个时钟周期内需要完成32次BF查询(BFO-BF31查询),这样在一个时钟周期内对于HO-H3来说,需要进行128次RAM查询操作,采用双口RAM,一个时钟周期可以同时完成2次查询,这样使用64个并行的Block RAM,采用独立的双口操作的方式,可以在一个时钟周期内完成64次RAM查询,并行256比特,每一个时钟周期,需要计算4x32=128个CRC哈希值,128个并行256字节的哈希计算。
本发明提供的一种实施例,所述基准锚点数设置为4、8、16、24字节数的其中一种。
本发明提供的一种实施例,所述基准锚点数设置为4,所述FPGA模块配置有四个哈希函数,对应的设有四个哈希表H0-H3,所述锚点数据组的数量为32个,且每一所述锚点数据组包括四个哈希值,所述FPGA模块的总线接收端采用256比特并行总线接收报文中的初始字符串;所述FPGA模块配置有RAM存储单元且所述RAM存储单元采用双口RAM存储单元。上述设计在Xilinx的Ultrascale的VU095型号的FPGA芯片中实现,在工作频率为250M时,线速搜索的吞吐量达到128Gbit/s,实验效果显示该实施例完全满足性能需求。
如图5所示,布鲁姆过滤器存在假阳性误判(即属于集合中的元素而误判为不属于集合中),因此,布鲁姆过滤器是一种允许存在一定误判的情况下,存储空间节俭的哈希结构,是在查询准确率和存储代价之间的折衷,为了能够解决同时满足高性能和节约FPGA资源占用的功能,本发明提出了一种基于锚点的Bloom filter算法,一级截短匹配过滤步骤经过Bloom filter算法匹配命中的报文虽然没有漏匹配,但由于B1 Domi1ter算法固有的误判率问题,和截短策略必然会导致多匹配和无匹配问题,故要进行二级精确匹配步骤,本发明的二级精确匹配步骤包括第二匹配子步骤和验证步骤,第二匹配子步骤配置有一匹配条件和对应的锚点转移表,验证步骤配置有验证策略,第二匹配子步骤获取若干第一中间数据并通过匹配条件进行匹配后得到第二中间数据,并由第二中间数据构成锚点转移表,验证步骤被配置为将锚点转移表和第一结果数据经过验证策略匹配验证后通过数据输出端输出第一结果数据。
工作原理:如图4所示,为传统Bloom Filter算法图解说明示意图,Bloom Filter算法实现的基础是一个很长的二进制位向量和一系列随机散列(哈希)函数。Bloom Filter是一种基于散列的查找算法,用于查找一个元素是否在集合中,和散列表相比,它的优点是节约空间,可以对海量数据集进行表示和查找操作。由于散列函数的随机性,可能使得某个元素不属于集合而被判定属于集合,在此称其为误判,其大小为误判率Perr(FalsePositive)。
Bloom Filter算法的基本思想为:
设数据集合A={a1,a2,...,an},含有n个元素,为待操作的集合;
Bloom Filter用一个长度为m的位向量V来表示集合中的元素,位向量初始化全为0;
k个具有均匀分布特性的散列函数h1,h2,…,hk,值域均为{1,2,...,m};
对于元素的加入操作首先通过k个散列函数产生k个随机数h1,h2,...,hk,使位串V的相应h1,h2,...,hk位均置为1;同理,元素的查找为判定相应位是否全为1。
图4中(1)和(2)说明了Bloom Fliter的建立过程,将集合A中两个元素x与y加入到k=3个散列函数,m=16的Bloom Fliter的队列中。
Bloom Fliter的查询过程同其建立过程类似。对于给定的元素z,首先要计算出z对应k个的散列函数h1(z)到hk(z)的值,根据散列函数的值,查询Bloom Fliter的m位队列相应bit位。如果查询结果得到的k个比特位至少有一位为0,就判定为匹配不成功,如图4中(4)所示。如果查询结果得到的k个比特位全部为1,就判定为匹配成功,如图4中(3)所示。但如果匹配成功时的x不是集合A中的一个元素,就称之为误判(False Positive),如图4中(5)所示。
本发明基于FPGA硬件技术,利用FPGA内部的RAM存储单元,采用Bloom Filter算法,提出了一种基于锚点的方法将字符串进行分类,并采用一级截短匹配过滤步骤和二级精确匹配步骤两级实现方法,一级截短匹配过滤步骤包括截短子步骤以及第一匹配子步骤;截短子步骤包括配置有预设的基准锚点数以及对应的截短策略,解决了传统BloomFilter算法或哈希算法无法实现100G以上高速滑动字符串匹配的问题。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
Claims (7)
1.一种利用FPGA实现的滑动字符串匹配的方法,包括报文,所述报文包括若干长度不等的初始字符串,其特征在于:提供FPGA模块用于处理报文,所述利用FPGA实现的滑动字符串匹配的方法包括一级截短匹配过滤步骤和二级精确匹配步骤,所述FPGA模块包括总线输入端、处理单元和数据输出端;
所述一级截短匹配过滤步骤包括截短子步骤以及第一匹配子步骤;所述截短子步骤包括配置有预设的基准锚点数以及对应的截短策略,所述截短策略包括从所述总线输入端读入所述初始字符串并依照截短策略根据所述基准锚点数依次生成若干锚点数据组,每一所述锚点数据组的字节数等于所述基准锚点数且形成的每一锚点数据组获取第一个字节在所述初始字符串中的位置为上一锚点数据组获取第二个字节在所述初始字符串中的位置;
所述第一匹配子步骤包括配置于所述处理单元的哈希表以及对应的第一匹配算法,被配置的所述哈希表的数量与所述基准锚点数相同,所述第一匹配子步骤设置为每一锚点数据组中的字节输入所述处理单元,所述处理单元根据所述字节在所述锚点数据组中的顺序为每一字节匹配对应的哈希表,所述第一匹配子算法根据所述哈希表以及对应字节的内容生成第一结果数据,并根据第一结果数据生成若干相对应的第一中间数据;
所述二级精确匹配步骤包括第二匹配子步骤和验证步骤,所述第二匹配子步骤配置有一匹配条件和对应的锚点转移表,所述验证步骤配置有验证策略,所述第二匹配子步骤获取若干所述第一中间数据并通过匹配条件进行匹配后得到第二中间数据,并由第二中间数据构成锚点转移表,所述验证步骤被配置为将锚点转移表和第一结果数据经过验证策略匹配验证后通过所述数据输出端输出所述第一结果数据。
2.根据权利要求1所述的一种利用FPGA实现的滑动字符串匹配的方法,其特征在于:所述锚点匹配转移表包括初始字符串的ID号、初始字符串的属性、初始字符串截短的起始位置和初始字符串的有效长度。
3.根据权利要求2所述的一种利用FPGA实现的滑动字符串匹配的方法,其特征在于:所述初始字符串的属性包括以数字0代表的完整终结性字符串和以数字1代表的截短型字符串。
4.根据权利要求1所述的一种利用FPGA实现的滑动字符串匹配的方法,其特征在于:所述FPGA模块的总线输入端采用256比特并行总线接收报文中的初始字符串。
5.根据权利要求1所述的一种利用FPGA实现的滑动字符串匹配的方法,其特征在于:所述基准锚点数设置为4、8、16、24字节数的其中一种。
6.根据权利要求1所述的一种利用FPGA实现的滑动字符串匹配的方法,其特征在于:所述基准锚点数设置为4,所述FPGA模块配置有四个哈希函数,对应的设有四个哈希表H0-H3,所述锚点数据组的数量为32个,且每一所述锚点数据组包括四个哈希值,所述FPGA模块的总线接收端采用256比特并行总线接收报文中的初始字符串。
7.根据权利要求1所述的一种利用FPGA实现的滑动字符串匹配的方法,其特征在于:所述FPGA模块配置有RAM存储单元且所述RAM存储单元采用双口RAM存储单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910817524.2A CN110674364B (zh) | 2019-08-30 | 2019-08-30 | 一种利用fpga实现的滑动字符串匹配的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910817524.2A CN110674364B (zh) | 2019-08-30 | 2019-08-30 | 一种利用fpga实现的滑动字符串匹配的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110674364A true CN110674364A (zh) | 2020-01-10 |
CN110674364B CN110674364B (zh) | 2021-11-23 |
Family
ID=69076582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910817524.2A Active CN110674364B (zh) | 2019-08-30 | 2019-08-30 | 一种利用fpga实现的滑动字符串匹配的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110674364B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559812A (zh) * | 2020-12-24 | 2021-03-26 | 中国船舶集团有限公司 | 一种基于cpu+fpga的大数据输出方法及系统 |
CN116881517A (zh) * | 2023-07-25 | 2023-10-13 | 中科驭数(北京)科技有限公司 | 一种数据库数据处理方法及系统 |
CN117574178A (zh) * | 2024-01-15 | 2024-02-20 | 国网湖北省电力有限公司信息通信公司 | 基于fpga的网络流量字符串自动匹配方法和匹配装置 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6738779B1 (en) * | 2001-02-21 | 2004-05-18 | Telecom Italia S.P.A. | Apparatus for and method of multiple parallel string searching |
CN101577721A (zh) * | 2008-12-05 | 2009-11-11 | 湖南大学 | 一种索引拆分布鲁姆过滤器及其插入、删除和查询方法 |
US20100306209A1 (en) * | 2006-07-22 | 2010-12-02 | Tien-Fu Chen | Pattern matcher and its matching method |
CN101996139A (zh) * | 2009-08-28 | 2011-03-30 | 百度在线网络技术(北京)有限公司 | 数据匹配方法和数据匹配装置 |
CN102184198A (zh) * | 2011-04-22 | 2011-09-14 | 深圳市广道高新技术有限公司 | 适用于工作负载保护系统的重复数据删除方法 |
CN106959962A (zh) * | 2016-01-12 | 2017-07-18 | 中国移动通信集团青海有限公司 | 一种多模式字符串匹配方法和装置 |
CN107180018A (zh) * | 2017-05-17 | 2017-09-19 | 上海兆芯集成电路有限公司 | 基于散列的加速压缩方法以及使用此方法的装置 |
US20170351780A1 (en) * | 2013-03-15 | 2017-12-07 | Micron Technology, Inc. | Inexact Search Acceleration |
CN109672449A (zh) * | 2018-12-13 | 2019-04-23 | 武汉中元华电科技股份有限公司 | 一种基于fpga快速实现lz77压缩的装置及方法 |
CN109670083A (zh) * | 2018-12-13 | 2019-04-23 | 武汉中元华电科技股份有限公司 | 一种基于动态内存分配存储hash链表的fpga实现装置及方法 |
CN109977276A (zh) * | 2019-03-22 | 2019-07-05 | 华南理工大学 | 一种基于Sunday算法改进的单模式匹配方法 |
CN112514270A (zh) * | 2018-06-06 | 2021-03-16 | 吴英全 | 数据压缩 |
CN112597345A (zh) * | 2020-10-30 | 2021-04-02 | 深圳市检验检疫科学研究院 | 一种实验室数据自动采集与匹配方法 |
-
2019
- 2019-08-30 CN CN201910817524.2A patent/CN110674364B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6738779B1 (en) * | 2001-02-21 | 2004-05-18 | Telecom Italia S.P.A. | Apparatus for and method of multiple parallel string searching |
US20100306209A1 (en) * | 2006-07-22 | 2010-12-02 | Tien-Fu Chen | Pattern matcher and its matching method |
CN101577721A (zh) * | 2008-12-05 | 2009-11-11 | 湖南大学 | 一种索引拆分布鲁姆过滤器及其插入、删除和查询方法 |
CN101996139A (zh) * | 2009-08-28 | 2011-03-30 | 百度在线网络技术(北京)有限公司 | 数据匹配方法和数据匹配装置 |
CN102184198A (zh) * | 2011-04-22 | 2011-09-14 | 深圳市广道高新技术有限公司 | 适用于工作负载保护系统的重复数据删除方法 |
US20170351780A1 (en) * | 2013-03-15 | 2017-12-07 | Micron Technology, Inc. | Inexact Search Acceleration |
CN106959962A (zh) * | 2016-01-12 | 2017-07-18 | 中国移动通信集团青海有限公司 | 一种多模式字符串匹配方法和装置 |
CN107180018A (zh) * | 2017-05-17 | 2017-09-19 | 上海兆芯集成电路有限公司 | 基于散列的加速压缩方法以及使用此方法的装置 |
CN112514270A (zh) * | 2018-06-06 | 2021-03-16 | 吴英全 | 数据压缩 |
CN109672449A (zh) * | 2018-12-13 | 2019-04-23 | 武汉中元华电科技股份有限公司 | 一种基于fpga快速实现lz77压缩的装置及方法 |
CN109670083A (zh) * | 2018-12-13 | 2019-04-23 | 武汉中元华电科技股份有限公司 | 一种基于动态内存分配存储hash链表的fpga实现装置及方法 |
CN109977276A (zh) * | 2019-03-22 | 2019-07-05 | 华南理工大学 | 一种基于Sunday算法改进的单模式匹配方法 |
CN112597345A (zh) * | 2020-10-30 | 2021-04-02 | 深圳市检验检疫科学研究院 | 一种实验室数据自动采集与匹配方法 |
Non-Patent Citations (2)
Title |
---|
刘博岩等: "一种新型精确深度包检测引擎研究与设计", 《小型微型计算机系统》 * |
骆潇等: "基于FPGA的多模式匹配算法研究与实现", 《计算机工程》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559812A (zh) * | 2020-12-24 | 2021-03-26 | 中国船舶集团有限公司 | 一种基于cpu+fpga的大数据输出方法及系统 |
CN112559812B (zh) * | 2020-12-24 | 2022-03-08 | 中国船舶集团有限公司 | 一种基于cpu+fpga的大数据输出方法及系统 |
CN116881517A (zh) * | 2023-07-25 | 2023-10-13 | 中科驭数(北京)科技有限公司 | 一种数据库数据处理方法及系统 |
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 |
---|---|
CN110674364B (zh) | 2021-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110674364B (zh) | 一种利用fpga实现的滑动字符串匹配的方法 | |
CN108875064B (zh) | 基于FPGA的OpenFlow多维数据匹配查找方法 | |
TWI482083B (zh) | 二階段式正規表示式比對處理方法及系統 | |
Le et al. | A memory-efficient and modular approach for large-scale string pattern matching | |
CN105827530B (zh) | 一种兼容ipv4/ipv6的ip二分查找方法及装置 | |
CN103049709A (zh) | 基于生成元扩展彩虹表的密码恢复系统及其恢复方法 | |
CN105515997B (zh) | 基于bf_tcam实现零范围扩张的高效范围匹配方法 | |
KR20090065315A (ko) | 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법 | |
Wang et al. | Memory-based architecture for multicharacter Aho–Corasick string matching | |
Pao et al. | A multi-pipeline architecture for high-speed packet classification | |
Lee et al. | Bundle-updatable SRAM-based TCAM design for openflow-compliant packet processor | |
Du et al. | Efficient hashing technique based on bloom filter for high-speed network | |
Song et al. | Packet classification using coarse-grained tuple spaces | |
Pao et al. | IP address lookup using bit-shuffled trie | |
CN102546293A (zh) | 基于哈希比特串复用的高速网络流量网络地址测量方法 | |
Huang et al. | Fast and deterministic hash table lookup using discriminative bloom filters | |
Wang et al. | Reorganized and compact DFA for efficient regular expression matching | |
Polig et al. | Token-based dictionary pattern matching for text analytics | |
CN109905322B (zh) | 一种报文匹配信息预处理的方法及装置 | |
Kastil et al. | Methodology for fast pattern matching by deterministic finite automaton with perfect hashing | |
Zhao et al. | A discretization method for floating-point number in FPGA-based decision tree accelerator | |
Qu et al. | Fast dynamically updatable packet classifier on FPGA | |
Le et al. | A memory-efficient and modular approach for string matching on fpgas | |
Tang et al. | RICS‐DFA: a space and time‐efficient signature matching algorithm with Reduced Input Character Set | |
CN112769703A (zh) | 一种高效的基于sram的tcam实现方法 |
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 | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: Room 218, 2nd Floor, Building A, No. 119 West Fourth Ring North Road, Haidian District, Beijing, 100000 Patentee after: HAOHAN DATA TECHNOLOGY CO.,LTD. Address before: 102, building 14, 45 Beiwa Road, Haidian District, Beijing Patentee before: HAOHAN DATA TECHNOLOGY CO.,LTD. |