时间:2025-03-06 来源:FPGA_UCY 关于我们 0
本发明专利技术公开了一种基于FPGA的快速正则表达式匹配实现系统及方法:系统包括主机内的正则表达式策略拆解模块、数据流发送模块,以及FPGA内的正则表达式策略缓存模块、正则表达式匹配策略匹配模块、正则表达式重组策略匹配模块;拆解每个会话的正则表达式策略,根据会话号将拆解后的正则表达式策略存入正则表达式策略缓存模块;数据流发送模块产生不同会话号数据流,发送给正则表达式匹配策略匹配模块,获取当前数据流会话号,根据会话号获取拆解后的正则表达式策略,配置到正则表达式匹配策略匹配模块进行第一次匹配;基于KMP算法对第一次匹配结果进行第二次查找匹配,得到最终的正则表达式匹配结果。本发明专利技术采用FPGA实现查找速率更快,支持多会话、多策略并行查找。
全部详细技术资料下载
【技术实现步骤摘要】
本专利技术涉及数据通信安全,更具体的说,是涉及一种基于fpga的快速正则表达式匹配实现系统及方法。
技术介绍
1、目前,由于正则表达式具有强大的描述能力,通过正则表达式匹配技术对数据流进行查找的技术在数据通信领域得到了广泛的使用。正则表达式使用单子字符串来描、匹配一系列匹配某个句法规则的字符串,通常被用来检索那些符合某个规则的文本。
2、正则表达式的匹配大多是通过软件编程实现的,例如c++、asp、perl、c#、java等都可以实现正则表达式的匹配,且技术较成熟。然而,由于通信数据量不断增大,采用软件的匹配方式己经成为基于正则表达式高速匹配的入侵检测的主要瓶颈。而且,基于冯•诺依曼结构的微处理器在运算过程中是串行操作的,运算速度受到限制。
技术实现思路
1、本专利技术的目的是为了克服现有技术中的不足,提出了一种基于fpga的快速正则表达式匹配实现系统及方法。根据拆解后的正则表达式策略动态重构fpga内部逻辑,进行多会话、多正则表达式策略数据流并行匹配,在增加数据流数量和正则表达式策略数量的同时能够提高匹配效率。
2、本专利技术的目的可通过以下技术方案实现。
3、本专利技术基于fpga的快速正则表达式匹配实现系统,包括主机内的正则表达式策略拆解模块、数据流发送模块,以及fpga内的正则表达式策略缓存模块、正则表达式匹配策略匹配模块、正则表达式重组策略匹配模块;
4、所述正则表达式策略拆解模块用于对每个会话的正则表达式策略分别进行拆解,根据会话号将拆解后的正则表达式策略存入fpga的正则表达式策略缓存模块中;其中,所述拆解后的正则表达式策略包含两部分:一部分为正则表达式匹配策略,包含固定值匹配子策略、重复匹配子策略、范围匹配子策略、任意字符匹配子策略、其他字符匹配子策略中的至少一个;另一部分为正则表达式重组策略;根据正则表达式重组策略,将正则表达式匹配策略重组为拆解前的正则表达式策略;对正则表达式匹配策略的查找结果,基于kmp算法对正则表达式重组策略进行查找匹配;
5、所述数据流发送模块用于产生不同会话号的数据流,将数据流拆分成多个数据包,发送给fpga的正则表达式匹配策略匹配模块;其中,所述数据流的会话号与正则表达式策略的会话号存在对应关系;
6、所述正则表达式策略缓存模块用于存储拆解后的正则表达式策略;
7、所述正则表达式匹配策略匹配模块包括固定值匹配模块、重复匹配模块、范围匹配模块、任意字符匹配模块、其他字符匹配模块;所述正则表达式匹配策略匹配模块接收数据流发送模块发来的数据流,并从数据流中获取当前数据流的会话号,根据会话号从正则表达式策略缓存模块中获取拆解后的正则表达式策略,配置到正则表达式匹配策略匹配模块的各子模块中进行第一次匹配;
8、所述正则表达式重组策略匹配模块采用kmp算法对第一次匹配结果进行第二次查找匹配,得到最终的正则表达式匹配结果。
9、进一步地,所述固定值匹配模块用于判断匹配的数据流中是否包含规则设定的固定值;所述重复匹配模块用于计算匹配的数据流中指定字符重复出现的次数;所述范围匹配模块用于判断指定的字符或者字符串是否在指定的范围中,包含字符集合匹配、反集合匹配和范围匹配;所述任意字符匹配模块对匹配的数据流中不需要检测的任意字符都默认匹配成功;所述其他字符匹配模块用于判断匹配的数据流中是否包含特殊含义的字符。
10、本专利技术的目的还可通过以下技术方案实现。
11、本专利技术基于fpga的快速正则表达式匹配实现方法,包括以下步骤:
12、s1:对每个会话的正则表达式策略分别进行拆解,根据会话号将拆解后的正则表达式策略存入fpga的正则表达式策略缓存模块中;其中,所述拆解后的正则表达式策略包含两部分:一部分为正则表达式匹配策略,包含固定值匹配子策略、重复匹配子策略、范围匹配子策略、任意字符匹配子策略、其他字符匹配子策略中的至少一个;另一部分为正则表达式重组策略;根据正则表达式重组策略,将正则表达式匹配策略重组为拆解前的正则表达式策略;对正则表达式匹配策略的查找结果,基于kmp算法对正则表达式重组策略进行查找匹配;
13、s2:数据流发送模块产生不同会话号的数据流,将数据流拆分成多个数据包,发送给fpga的正则表达式匹配策略匹配模块;其中,所述数据流的会话号与正则表达式策略的会话号存在对应关系;
14、s3:正则表达式匹配策略匹配模块接收数据流,并从数据流中获取当前数据流的会话号,根据会话号从正则表达式策略缓存模块中获取拆解后的正则表达式策略,配置到正则表达式匹配策略匹配模块的各子模块中进行第一次匹配;
15、s4:基于kmp算法对第一次匹配结果进行第二次查找匹配,得到最终的正则表达式匹配结果。
16、进一步地,步骤s1中不同会话拆解后的所有正则表达式策略进行重新整合,提取出相同的部分,只保留一条,在各策略匹配之间进行共享。
17、进一步地,步骤s1中所述固定值匹配子策略用于判断匹配的数据流中是否包含规则设定的固定值;所述重复匹配子策略用于计算匹配的数据流中指定字符重复出现的次数;所述范围匹配子策略用于判断指定的字符或者字符串是否在指定的范围中,包含字符集合匹配、反集合匹配和范围匹配;所述任意字符匹配子策略对匹配的数据流中不需要检测的任意字符都默认匹配成功;所述其他字符匹配子策略用于判断匹配的数据流中是否包含特殊含义的字符。
18、进一步地,步骤s3中所述正则表达式匹配策略匹配模块包括固定值匹配模块、重复匹配模块、范围匹配模块、任意字符匹配模块、其他字符匹配模块;所述固定值匹配模块用于判断匹配的数据流中是否包含规则设定的固定值;所述重复匹配模块用于计算匹配的数据流中指定字符重复出现的次数;所述范围匹配模块用于判断指定的字符或者字符串是否在指定的范围中,包含字符集合匹配、反集合匹配和范围匹配;所述任意字符匹配模块对匹配的数据流中不需要检测的任意字符都默认匹配成功;所述其他字符匹配模块用于判断匹配的数据流中是否包含特殊含义的字符。
19、进一步地,步骤s4中基于kmp算法对第一次匹配结果进行第二次查找匹配,得到最终的正则表达式匹配结果,具体包括以下步骤:
20、s401:从正则表达式匹配策略匹配模块获取第一次匹配结果和当前结果对应的会话号,按照会话号从正则表达式策略缓存模块中获取当前会话全部的正则表达式重组策略;
21、s402:将正则表达式重组策略分发到各个正则表达式重组策略匹配模块中;
22、s403:正则表达式重组策略匹配模块从本地缓存中获取本会话上次查找缓存的状态,恢复到本次查找中;如果本次查找是首次查找的话,则上次查找就为空;
23、s404:正则表达式重组策略匹配模块采用kmp算法对第一次匹配结果进行第二次匹配,得到最终的匹配结果;
24、s405:基于第二次的匹配结果判断能否匹配完整的正则表达式策略;若能匹配,则上报匹配
【技术保护点】
1.一种基于FPGA的快速正则表达式匹配实现系统,其特征在于,包括主机内的正则表达式策略拆解模块、数据流发送模块,以及FPGA内的正则表达式策略缓存模块、正则表达式匹配策略匹配模块、正则表达式重组策略匹配模块;
2.根据权利要求1所述的基于FPGA的快速正则表达式匹配实现系统,其特征在于,所述固定值匹配模块用于判断匹配的数据流中是否包含规则设定的固定值;所述重复匹配模块用于计算匹配的数据流中指定字符重复出现的次数;所述范围匹配模块用于判断指定的字符或者字符串是否在指定的范围中,包含字符集合匹配、反集合匹配和范围匹配;所述任意字符匹配模块对匹配的数据流中不需要检测的任意字符都默认匹配成功;所述其他字符匹配模块用于判断匹配的数据流中是否包含特殊含义的字符。
3.一种基于上述权利要求1或2所述的基于FPGA的快速正则表达式匹配实现系统的基于FPGA的快速正则表达式匹配实现方法,其特征在于,包括以下步骤:
4.根据权利要求3所述的基于FPGA的快速正则表达式匹配实现方法,其特征在于,步骤S1中不同会话拆解后的所有正则表达式策略进行重新整合,提取出相同的部分,只保留一条,在各策略匹配之间进行共享。
5.根据权利要求3所述的基于FPGA的快速正则表达式匹配实现方法,其特征在于,步骤S1中所述固定值匹配子策略用于判断匹配的数据流中是否包含规则设定的固定值;所述重复匹配子策略用于计算匹配的数据流中指定字符重复出现的次数;所述范围匹配子策略用于判断指定的字符或者字符串是否在指定的范围中,包含字符集合匹配、反集合匹配和范围匹配;所述任意字符匹配子策略对匹配的数据流中不需要检测的任意字符都默认匹配成功;所述其他字符匹配子策略用于判断匹配的数据流中是否包含特殊含义的字符。
6.根据权利要求3所述的基于FPGA的快速正则表达式匹配实现方法,其特征在于,步骤S3中所述正则表达式匹配策略匹配模块包括固定值匹配模块、重复匹配模块、范围匹配模块、任意字符匹配模块、其他字符匹配模块;所述固定值匹配模块用于判断匹配的数据流中是否包含规则设定的固定值;所述重复匹配模块用于计算匹配的数据流中指定字符重复出现的次数;所述范围匹配模块用于判断指定的字符或者字符串是否在指定的范围中,包含字符集合匹配、反集合匹配和范围匹配;所述任意字符匹配模块对匹配的数据流中不需要检测的任意字符都默认匹配成功;所述其他字符匹配模块用于判断匹配的数据流中是否包含特殊含义的字符。
7.根据权利要求3所述的基于FPGA的快速正则表达式匹配实现方法,其特征在于,步骤S4中基于KMP算法对第一次匹配结果进行第二次查找匹配,得到最终的正则表达式匹配结果,具体包括以下步骤:
【技术特征摘要】
1.一种基于fpga的快速正则表达式匹配实现系统,其特征在于,包括主机内的正则表达式策略拆解模块、数据流发送模块,以及fpga内的正则表达式策略缓存模块、正则表达式匹配策略匹配模块、正则表达式重组策略匹配模块;
2.根据权利要求1所述的基于fpga的快速正则表达式匹配实现系统,其特征在于,所述固定值匹配模块用于判断匹配的数据流中是否包含规则设定的固定值;所述重复匹配模块用于计算匹配的数据流中指定字符重复出现的次数;所述范围匹配模块用于判断指定的字符或者字符串是否在指定的范围中,包含字符集合匹配、反集合匹配和范围匹配;所述任意字符匹配模块对匹配的数据流中不需要检测的任意字符都默认匹配成功;所述其他字符匹配模块用于判断匹配的数据流中是否包含特殊含义的字符。
3.一种基于上述权利要求1或2所述的基于fpga的快速正则表达式匹配实现系统的基于fpga的快速正则表达式匹配实现方法,其特征在于,包括以下步骤:
4.根据权利要求3所述的基于fpga的快速正则表达式匹配实现方法,其特征在于,步骤s1中不同会话拆解后的所有正则表达式策略进行重新整合,提取出相同的部分,只保留一条,在各策略匹配之间进行共享。
5.根据权利要求3所述的基于fpga的快速正则表达式匹配实现方法,其特征在于,步骤s1中所述固定值匹配...
【专利技术属性】
技术研发人员:毕顺利,朱天逸,张长利,
申请(专利权)人:天津光电聚能通信股份有限公司,
类型:发明
国别省市:
全部详细技术资料下载 我是这个专利的主人