CN103198065A - 一种正则表达式匹配电路的优化方法 - Google Patents
一种正则表达式匹配电路的优化方法 Download PDFInfo
- Publication number
- CN103198065A CN103198065A CN 201210002439 CN201210002439A CN103198065A CN 103198065 A CN103198065 A CN 103198065A CN 201210002439 CN201210002439 CN 201210002439 CN 201210002439 A CN201210002439 A CN 201210002439A CN 103198065 A CN103198065 A CN 103198065A
- Authority
- CN
- China
- Prior art keywords
- state
- finite automaton
- deterministic finite
- non deterministic
- character
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种对非确定性有限自动机提高匹配引擎的处理性能,即提高正则表达式匹配电路最大工作时钟频率的优化方法,包括如下步骤:(1)规则集合的分组;(2)非确定性有限自动机的构造生成与状态精简;(3)单状态扇出优化;(4)字符扇出均衡;(5)匹配电路的构造:利用非确定性有限自动机状态转移表构建匹配引擎,将每个非确定性有限自动机状态用一个D触发器表示,根据每个非确定性有限自动机状态的状态转移表确定不同状态的D触发器之间的逻辑连接关系。
Description
技术领域
本发明涉及一种电路优化方法,尤其是一种正规表达式匹配电路的优化方法。
背景技术
随着各种网络应用的蓬勃发展,互联网的安全问题也越来越严峻:拒绝服务攻击(DDos)、木马、蠕虫以及泛滥的P2P应用严重影响了用户的正常网络使用。目前网络信息安全已经成为信息技术领域中的关键问题之一,科研人员已开发了各种技术来确保网络安全:入侵检测、内容过滤、病毒特征码匹配等等。在上述技术中作为其基础的字符串匹配技术扮演着十分重要的角色,并且也是影响系统性能的关键因素之一。
传统字符串匹配系统采用的是基于软件的匹配方式,基于软件的字符串匹配算法通常是在通用处理器平台上实现的,而通用处理器上指令执行的并行度并不高,导致字符串匹配引擎的吞吐量往往也不是很高(通常最快只能达到100Kbps左右)。现如今通用处理器正朝着多核(multi-core)、众核(many-core)的方向发展,具有足够并行度的算法可以在这些处理器平台上获得不错的处理效率,但是对于字符串匹配这类计算高度密集型的任务而言,它需要消耗CPU大量的计算资源,在目前的网络入侵检测系统当中,字符串匹配操作往往会占用75%左右的CPU处理时间,如此高密度的计算量导致系统性能难以提升。随着网络技术的飞速发展,许多应用系统对于字符串匹配引擎的性能有着越来越高的速度要求,而现有单纯依赖于软件实现方式的字符串匹配引擎往往不能满足高速网络的处理需求,因此,越来越多的系统转向采用专用硬件实现字符串匹配引擎的方式来获得性能的提高。
随着网络技术的不断发展,越来越多的网络应用采用正则表达式形式的规则来替代传统的静态字符串,一般基于专用硬件的正则表达式匹配可以采取基于确定性有限自动机(DFA)或者非确定性有限自动机(NFA)的实现方案。其中,基于DFA的匹配方案大都采用以存储器为中心的实现架构,将DFA的状态转移表存放在存储器中,在匹配过程当中,需要不断地访问存储器。由于DFA可能会存在状态爆炸的问题,对于资源十分紧缺的专用硬件来说无法实现大规模规则集合的匹配,并且延时较大的存储器访问以及有限的存储器带宽往往也会限制匹配引擎的处理性能。而基于NFA的实现方案则是通过搭建NFA对应的硬件匹配电路来执行正则表达式的匹配的,其中的匹配电路一般是采用独热(One-Hot)编码方案来进行构建的。在这一匹配架构中,每处理一个字符可以触发多个NFA状态的并行查询,而且在每个时钟周期内均可以处理一个字符,而与当前NFA中活动状态的个数是无关的。
由于在NFA匹配引擎当中,D触发器对应于NFA中的状态,而字符比较器的输出和其他NFA状态D触发器输出信号的组合逻辑则对应于NFA中的状态跳转,整个NFA匹配引擎可以看作一种流水线的结构,每个NFA状态的D触发器可以看作流水线寄存器,D触发器之间的组合逻辑则是实现每级流水线的基本功能,因此,整个匹配引擎的处理性能受到D触发器之间组合逻辑的影响最大。影响D触发器之间组合逻辑延迟的因素主要包括以下四个:D触发器时钟输出时间、D触发器的建立时间、状态转移逻辑的延迟和连线延迟,其中,D触发器的时钟输出时间和建立时间都是电路单元的固有参数,并不能改变,只有通过优化NFA状态跳转延迟和连线延迟才能够提升整个匹配引擎的最大时钟频率。
在匹配引擎的构造过程中,状态转移逻辑是由多个NFA状态触发器的输出和字符比较器输出信号的与或逻辑操作得到的。因此,状态转移逻辑延迟可以由与或逻辑门的延迟来表示。状态转移逻辑延迟与状态转移逻辑输入信号的数目有关,输入信号数目越多,状态转移逻辑延迟越大。根据NFA匹配引擎的构造过程可知,状态转移逻辑的输入信号包括两部分,一部分是NFA状态触发器的输出,另一部分是字符比较器的输出。对于连线延迟,通常是由逻辑中的信号线长度决定。信号线越长,连线延迟越大。
发明内容
本发明提供了一种对非确定性有限自动机提高匹配引擎的处理性能,即匹配电路的最大工作时钟频率的正规表达式匹配电路的优化方法。
实现本发明目的的正规表达式匹配电路的优化方法,包括如下步骤:
(1)规则集合的分组:在分组之前,先将所有的规则按照ASCII码顺序进行排序,对于每一条单独的规则,探测其最大单状态扇入数目,如果大于门限值,则将此条规则作为单独一组,并从规则集合中剔除;然后,从规则集合的起始位置start开始,以step为步长,探测单状态扇入数目少于门限值的大致范围;根据探测到的大致范围,采用二分法逐步逼近,直到找出最适合的规则分割点;最后,将起始位置指针start到规则分割点的所有规则作为切分好的子规则集,并重复以上的搜索过程;
(2)非确定性有限自动机的构造生成与精简:对经过规则分组处理之后得到每个规则文件,采用自动机构造算法生成相应的非确定性有限自动机,
比较常用的自动机构造算法有Thompson构造法、Glushkov构造法和McNaughton-Yamada构造法,在实际处理当中,可以根据自己的条件来进行选择。采用自动机构造算法生成的非确定性有限自动机往往在结构上并不是特别的精简,还需要对非确定性有限自动机进行精简处理,以去除非确定性有限自动机中的冗余状态和空转移边,以此可以避免不必要的硬件资源浪费。非确定性有限自动机的结构精简方法是和自动机构造算法密切相关的。
(3)单状态扇出优化:结合生成的非确定性有限自动机的输入转移表,采用发明内容中介绍的状态转移条件改写方法来修改非确定性有限自动机中某些状态的输入转移表,以优化非确定性有限自动机单状态扇出的数目,减小对状态转移逻辑延迟的影响;
(4)字符扇出均衡:扫描非确定性有限自动机中每个状态的输出转移表,计算以字母表中每个字符的字符扇出数目,根据设定的字符扇出门限值计算需要插入的中心译码器数目;
生成非确定性有限自动机状态转移逻辑时,根据当前转移条件的字符扇出门限值,选择中心译码器进行连线。同时,为了避免因规则集合变大而导致的前一步骤中引入的每个范围译码器的字符扇出数目变大,引起连线延迟增加的情况,对于范围译码器,本文使用与中心译码器相同的字符扇出均衡方法,使得每个范围译码器的扇出数目不高于门限值,且保持均衡,优化连线延迟。
(5)匹配电路的构造:利用非确定性有限自动机状态转移表构建匹配引擎,将每个非确定性有限自动机状态用一个D触发器表示,根据每个非确定性有限自动机状态的状态转移表确定不同状态的D触发器之间的逻辑连接关系。
所述非确定性有限自动机匹配电路的构建可以分为以下步骤:
(1)构造非确定性有限自动机的状态输入转移表:非确定性有限自动机状态的输入转移表定义为一个二元组<S,c>,二元组的元素是能够到达当前状态的非确定性有限自动机状态S以及该状态到达当前状态的输入转移字符c,在构造输入转移表的时候,需要遍历每个状态的输出转移表以确定所有能够到达当前状态的非确定性有限自动机状态的集合;
(2)构造状态输入的组合逻辑:每一个状态的输入都可以看作是其输入转移表中所有的状态输出和转移条件的逻辑组合,每个状态的输出用D触发器的输出来表示,转移条件用一个字符比较器的输出表示,从状态S1到S2的转移可以表示为状态S1的触发器的输出和字符比较器的与逻辑,当存在多条到状态S2的转移时,所有转移逻辑的输出经过或门连接到S2触发器的输入端。
为了实现数据报文的匹配,本发明在构造组合逻辑时增加了sod和eod信号,指示数据包的开始和结束,分别匹配起始符’^’和终结符’$’,并以data_valid信号指示数据报文中有效载荷的偏移位置。
本发明的正规表达式匹配电路的优化方法的有益效果如下:
本发明的正则表达式硬件匹配电路优化方法,针对非确定性有限自动机,利用动态规则分组算法将大规则集合划分为多个分组,可以限制非确定性有限自动机单状态扇入数目,另外,采用改写非确定性有限自动机状态转移条件的方法来减少非确定性有限自动机单状态的扇出数目,可以有效地降低状态转移逻辑的延迟;通过采用多译码器的字符扇出均衡算法实现了电路中每个中心译码器以及范围译码器的扇出数目降低,且保持均衡,从而优化了连线延迟,可用于网络入侵检测/防御、防火墙、病毒检测等网络安全领域。
具体实施方式
发明的正规表达式匹配电路的优化方法,包括如下步骤:
(1)规则集合的分组:在分组之前,先将所有的规则按照ASCII码顺序进行排序,对于每一条单独的规则,探测其最大单状态扇入数目,如果大于门限值,则将此条规则作为单独一组,并从规则集合中剔除;然后,从规则集合的起始位置start开始,以step为步长,探测单状态扇入数目少于门限值的大致范围;根据探测到的大致范围,采用二分法逐步逼近,直到找出最适合的规则分割点;最后,将起始位置指针start到规则分割点的所有规则作为切分好的子规则集,并重复以上的搜索过程;
(2)非确定性有限自动机的构造生成与精简:对经过规则分组处理之后得到每个规则文件,采用自动机构造算法生成相应的非确定性有限自动机,
比较常用的自动机构造算法有Thompson构造法、Glushkov构造法和McNaughton-Yamada构造法,在实际处理当中,可以根据自己的条件来进行选择。采用自动机构造算法生成的非确定性有限自动机往往在结构上并不是特别的精简,还需要对非确定性有限自动机进行精简处理,以去除非确定性有限自动机中的冗余状态和空转移边,以此可以避免不必要的硬件资源浪费。非确定性有限自动机的结构精简方法是和自动机构造算法密切相关的。
(3)单状态扇出优化:结合生成的非确定性有限自动机的输入转移表,采用发明内容中介绍的状态转移条件改写方法来修改非确定性有限自动机中某些状态的输入转移表,以优化非确定性有限自动机单状态扇出的数目,减小对状态转移逻辑延迟的影响;
(4)字符扇出均衡:扫描非确定性有限自动机中每个状态的输出转移表,计算以字母表中每个字符的字符扇出数目,根据设定的字符扇出门限值计算需要插入的中心译码器数目;
生成非确定性有限自动机状态转移逻辑时,根据当前转移条件的字符扇出门限值,选择中心译码器进行连线。同时,为了避免因规则集合变大而导致的前一步骤中引入的每个范围译码器的字符扇出数目变大,引起连线延迟增加的情况,对于范围译码器,本文使用与中心译码器相同的字符扇出均衡方法,使得每个范围译码器的扇出数目不高于门限值,且保持均衡,优化连线延迟。
(5)匹配电路的构造:利用非确定性有限自动机状态转移表构建匹配引擎,将每个非确定性有限自动机状态用一个D触发器表示,根据每个非确定性有限自动机状态的状态转移表确定不同状态的D触发器之间的逻辑连接关系。
所述非确定性有限自动机匹配电路的构建可以分为以下步骤:
(1)构造非确定性有限自动机的状态输入转移表:非确定性有限自动机状态的输入转移表定义为一个二元组<S,c>,二元组的元素是能够到达当前状态的非确定性有限自动机状态S以及该状态到达当前状态的输入转移字符c,在构造输入转移表的时候,需要逼历每个状态的输出转移表以确定所有能够到达当前状态的非确定性有限自动机状态的集合;
(2)构造状态输入的组合逻辑:每一个状态的输入都可以看作是其输入转移表中所有的状态输出和转移条件的逻辑组合,每个状态的输出用D触发器的输出来表示,转移条件用一个字符比较器的输出表示,从状态S1到S2的转移可以表示为状态S1的触发器的输出和字符比较器的与逻辑,当存在多条到状态S2的转移时,所有转移逻辑的输出经过或门连接到S2触发器的输入端。
为了实现数据报文的匹配,本发明在构造组合逻辑时增加了sod和eod信号,指示数据包的开始和结束,分别匹配起始符’^’和终结符’$’,并以data_valid信号指示数据报文中有效载荷的偏移位置。
上面所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神前提下,本领域普通工程技术人员对本发明技术方案做出的各种变形和改进,均应落入本发明的权利要求书确定的保护范围内。
技术术语解释:
字符扇出:每个字符比较单元的输出连接数目;
非确定性有限自动机单状态扇出:从一个非确定性有限自动机状态触发器到另一个非确定性有限自动机状态触发器的转移数目;
非确定性有限自动机单状态扇入:从多个非确定性有限自动机状态触发器经过相同的转移条件到达同一个非确定性有限自动机状态触发器的转移数目。
Claims (2)
1.一种正规表达式匹配电路的优化方法,包括如下步骤:
(1)规则集合的分组:在分组之前,先将所有的规则按照ASCII码顺序进行排序,对于每一条单独的规则,探测其最大单状态扇入数目,如果大于门限值,则将此条规则作为单独一组,并从规则集合中剔除;然后,从规则集合的起始位置start开始,以step为步长,探测单状态扇入数目少于门限值的大致范围;根据探测到的大致范围,采用二分法逐步逼近,直到找出最适合的规则分割点;最后,将起始位置指针start到规则分割点的所有规则作为切分好的子规则集,并重复以上的搜索过程;
(2)非确定性有限自动机的构造生成与精简:对经过规则分组处理之后得到每个规则文件,采用自动机构造算法生成相应的非确定性有限自动机,
(3)单状态扇出优化:结合生成的非确定性有限自动机的输入转移表,采用发明内容中介绍的状态转移条件改写方法来修改非确定性有限自动机中某些状态的输入转移表,以优化非确定性有限自动机单状态扇出的数目,减小对状态转移逻辑延迟的影响;
(4)字符扇出均衡:扫描非确定性有限自动机中每个状态的输出转移表,计算以字母表中每个字符的字符扇出数目,根据设定的字符扇出门限值计算需要插入的中心译码器数目;
(5)匹配电路的构造:利用非确定性有限自动机状态转移表构建匹配引擎,将每个非确定性有限自动机状态用一个D触发器表示,根据每个非确定性有限自动机状态的状态转移表确定不同状态的D触发器之间的逻辑连接关系。
2.根据权利要求1所述的正规表达式匹配电路的优化方法,其特征在于:所述非确定性有限自动机匹配电路的构建可以分为以下步骤:
(1)构造非确定性有限自动机的状态输入转移表:非确定性有限自动机状态的输入转移表定义为一个二元组<S,c>,二元组的元素是能够到达当前状态的非确定性有限自动机状态S以及该状态到达当前状态的输入转移字符c,在构造输入转移表的时候,需要逼历每个状态的输出转移表以确定所有能够到达当前状态的非确定性有限自动机状态的集合;
(2)构造状态输入的组合逻辑:每一个状态的输入都可以看作是其输入转移表中所有的状态输出和转移条件的逻辑组合,每个状态的输出用D触发器的输出来表示,转移条件用一个字符比较器的输出表示,从状态S1到S2的转移可以表示为状态S1的触发器的输出和字符比较器的与逻辑,当存在多条到状态S2的转移时,所有转移逻辑的输出经过或门连接到S2触发器的输入端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210002439 CN103198065A (zh) | 2012-01-06 | 2012-01-06 | 一种正则表达式匹配电路的优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210002439 CN103198065A (zh) | 2012-01-06 | 2012-01-06 | 一种正则表达式匹配电路的优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103198065A true CN103198065A (zh) | 2013-07-10 |
Family
ID=48720634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201210002439 Pending CN103198065A (zh) | 2012-01-06 | 2012-01-06 | 一种正则表达式匹配电路的优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103198065A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291761A (zh) * | 2016-04-05 | 2017-10-24 | 北京优朋普乐科技有限公司 | 一种正则表达式的匹配方法和装置 |
CN110096255A (zh) * | 2018-01-26 | 2019-08-06 | 阿里巴巴集团控股有限公司 | 规则降级处理方法、装置及系统、数据处理方法 |
CN113157353A (zh) * | 2021-04-19 | 2021-07-23 | 河南科技大学 | 一种有限状态自动机的状态锁的检测方法及系统 |
-
2012
- 2012-01-06 CN CN 201210002439 patent/CN103198065A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291761A (zh) * | 2016-04-05 | 2017-10-24 | 北京优朋普乐科技有限公司 | 一种正则表达式的匹配方法和装置 |
CN110096255A (zh) * | 2018-01-26 | 2019-08-06 | 阿里巴巴集团控股有限公司 | 规则降级处理方法、装置及系统、数据处理方法 |
CN110096255B (zh) * | 2018-01-26 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 规则降级处理方法、装置及系统、数据处理方法 |
CN113157353A (zh) * | 2021-04-19 | 2021-07-23 | 河南科技大学 | 一种有限状态自动机的状态锁的检测方法及系统 |
CN113157353B (zh) * | 2021-04-19 | 2022-09-30 | 河南科技大学 | 一种有限状态自动机的状态锁的检测方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102075511B (zh) | 一种数据匹配设备和方法以及网络入侵检测设备和方法 | |
Antonello et al. | Deep packet inspection tools and techniques in commodity platforms: Challenges and trends | |
US9256831B2 (en) | Match engine for detection of multi-pattern rules | |
CN101442540B (zh) | 基于现场可编程门阵列的高速模式匹配算法 | |
US10176187B2 (en) | Method and apparatus for generating a plurality of indexed data fields | |
CN101876986A (zh) | 基于有限状态自动机的字符串匹配方法及内容过滤设备 | |
Zheng et al. | Algorithms to speedup pattern matching for network intrusion detection systems | |
Najam et al. | Speculative parallel pattern matching using stride-k DFA for deep packet inspection | |
Lee et al. | A hybrid CPU/GPU pattern-matching algorithm for deep packet inspection | |
CN103198065A (zh) | 一种正则表达式匹配电路的优化方法 | |
Yang et al. | PiDFA: A practical multi-stride regular expression matching engine based on FPGA | |
Aldwairi et al. | n‐Grams exclusion and inclusion filter for intrusion detection in Internet of Energy big data systems | |
CN101938382A (zh) | 审计特征的检测方法及用户行为审计系统 | |
CN102902538B (zh) | 移动互联网智能终端应用中间件安全开发方法 | |
Bando et al. | Range hash for regular expression pre-filtering | |
Wu et al. | The research and amelioration of pattern-matching algorithm in intrusion detection system | |
CN110113186A (zh) | 一种基于区块链的混合智慧城市网络结构 | |
CN107465500B (zh) | 基于fpga的md5暴力破解系统及方法 | |
CN105357177A (zh) | 一种数据包过滤规则集处理方法及数据包匹配方法 | |
Tian et al. | Hierarchical distributed alert correlation model | |
Sabhanatarajan et al. | A resource efficient content inspection system for next generation Smart NICs | |
Qu et al. | A parallel algorithm of string matching based on message passing interface for multicore processors | |
CN102195827A (zh) | 基于重叠子字符串分类器的深度分组检测方法 | |
Najam et al. | Multi-byte pattern matching using stride-k dfa for high speed deep packet inspection | |
Liu et al. | An efficient security system for mobile data monitoring |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C05 | Deemed withdrawal (patent law before 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130710 |