CN107193623A - 一种新型快速正则表达式的硬件电路编译方法及编译器实现 - Google Patents

一种新型快速正则表达式的硬件电路编译方法及编译器实现 Download PDF

Info

Publication number
CN107193623A
CN107193623A CN201710396009.2A CN201710396009A CN107193623A CN 107193623 A CN107193623 A CN 107193623A CN 201710396009 A CN201710396009 A CN 201710396009A CN 107193623 A CN107193623 A CN 107193623A
Authority
CN
China
Prior art keywords
regular expression
compiler
regular
rule
module
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
Application number
CN201710396009.2A
Other languages
English (en)
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.)
Nanjing University
Original Assignee
Nanjing 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 Nanjing University filed Critical Nanjing University
Priority to CN201710396009.2A priority Critical patent/CN107193623A/zh
Publication of CN107193623A publication Critical patent/CN107193623A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种新型的基于非确定有限状态自动机(NFA)的正则表达式硬件电路的编译方法以及编译器的实现。在该编译器框架下,实现了全自动编译过程,通过七段程序段,将功能段各组件功能实现并按整体的功能框架实现连结。本发明提出了一种新型的正则表达式硬件电路转换方法,改进传统MY构造算法,采用链式分析取代深度树状分析,减少重复深度。定义新型的NFA状态记录结构,兼容匹配与否定匹配功能。实现了从正则表达式到硬件电路转换、仿真、测试、综合的过程。综合以上方法可以快速高效的完成正则表达式到RTL的自动编译,能快速自动完成大规模正则匹配引擎的配置。

Description

一种新型快速正则表达式的硬件电路编译方法及编译器实现
技术领域
本发明涉及计算机、大数据、模式匹配等技术领域,特别涉及正则表达式匹配在服务器端对高速输入数据的识别过滤系统。
背景技术
正则表达式是当前主流的字符串识别机制之一,正则表达式具有构造相对简单,运行效率较高的特点,所以一般的字符串识别会使用正则表达式。
正则表达式的软件匹配通过多年的发展,以及实现了完善的匹配功能,目前绝大多数正则表达式匹配功能通过软件实现。软件实现正则表达式匹配灵活方便,易于搭建匹配平台,且布置成本较低。正则表达式的匹配技术主要是基于非确定自动机(NFA),基于确定自动机(DFA)和基于NFA和DFA的混合匹配技术。因为NFA的并行状态特性很匹配FPGA的天然并发性,是在FPGA上实现正则匹配引擎的首选。
随着网络带宽的不断增长,网络将无数计算机资源极尽所能的连结在一起,在互联网用户和互联网资源海量互联的同时也带来了大量垃圾信息和恶意攻击,此时单纯依靠软件过滤程序或许能够满足单个用户的应用需求,如采用Snort/Bro等入侵检测系统,依靠正则表达式匹配软件过滤危险信息。但是在服务器端,在这个数据爆炸的时代,依靠软件过滤的方法无法满足服务器的带宽需求。因此基于软件的正则表达式匹配引擎已经无法满足网络带宽高速增长的需求。正则表达式匹配引擎硬件加速研究会成为接下来研究的热点。
正则表达式匹配的硬件实现研究起源于1982年,Floy和Ullman基于自动机理论在硬件上实现了一个NFA模型;Sidhu和Prasanna在此基础上提出了正则表达式中的基本操作符,连接、并联和闭包的基本专用电路结构,为之后模块化构造正则表达式硬件电路打下基础。在未来的应用场景中,快速的编译大规模的正则表达式集合并在像FPGA这样的硬件平台配置对应的匹配引擎,有很高的应用价值。
发明内容
发明目的:本发明旨在发明一个通用正则表达式编译器,快速地将大规模的正则表达式规则集合编译成对应的硬件匹配引擎并配置在FPGA上。解决过滤系统规则集更替带来的烦琐工作,实现从输入规则到输出电路全自动的编译过程,解决了硬件入侵检测系统维护工作的复杂度。
为了解决上述技术问题,本发明公开了一种新型的正则表达式自动快速编译方法并通过组合程序段实现编译器的全部功能。代码简洁,编译器功能强大。
为了便于阐述,定义基本正则表达式规则A:
A=j{3}2{2}9(a|[cd]+e)*x?,
在规则A中,{3}为限定重复三次前驱字符。“|”为或关系操作符,即并联关系。“+”为限定重复至少一次前驱字符。“*”为限定词重复任意次前驱字符。“?”为限定重复0或1次前驱字符。正则表达式A仅仅为简单示例,并不涵盖本编译器包含的全部语法。
本发明的主要内容包括:
1.前期处理模块,对输入的Snort/Bro等规则集合的正则表达式部分截取,保存为正则集合输入文件。
2.规则集合生成模块,在本编译支持语法框架下,输出任意数量任意长度的正则表达式集合。
3.对于基本正则表达式A,编译器自动抓取单个匹配规则,分析正则式构成,将正则表达式分析成链式结构。
4.对链式结构进行解析,采用改进的MY算法输出NFA结果,并标记为自定义的新型NFA表示结构,后续模块可从NFA表示图中获取连接信息。
5.在此过程中伴随以并行的匹配字符串输出和相应的测试激励文件生成功能,为RTL配置前测试提供配套的测试用例和仿真激励文件。
6.采用并行结构自动集合输入规则集合对应的生成模块,连接以生成整体的对应集合的正则表达式匹配引擎。
本发明采用并行结构,自动对输入的文件进行分析,选择截取获取或者自动生成符合要求的正则表达式集合,编译器操作难度低,编译速度快,可以很好的加速今后硬件过滤平台的搭建,快速的实现从正则规则集到现实的硬件电路的生成,并可以提供配套的测试文件用于仿真测试。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1是本发明的整体模块划分图。
图2是本发明的链式编译分析图。
图3是本发明的核心编译功能示意图。
图4是本发明的核心编译功能示例的NFA状态转移图。
图5是本发明的匹配更新模块(左)和否定匹配模块(右)。
图6是本发明的二输入匹配状态更新模块综合实例示意图。
图7是本发明的正则匹配引擎结构。
图8是本发明的十规则引擎综合RTL结构示意图。
具体实施方式
下面详细地描述本发明的实施例,所述示例为上述正则表达式A,编译器整体框架以及分流程在附图中示出。本编译器可以从输入端接收或自动生成测试正则规则集合,并自动完成之后编译过程直至输出RTL电路用于之后的仿真和综合验证。
如图1所示,整个正则表达式编译器由Snort/Bro规则集合提取模块,自定义规则集合生成模块,匹配字符串生成模块,测试文件生成模块,正则表达式编译模块,顶层连接模块,RTL输出模块等七个模块组成。所有的子模块集合构成了自动本发明的快速自动正则表达式编译器。
如图2所示,编译器首先将输入的正则表达式示例A分析成链式结构的组成单元。每个单元由四个构成要素组成,分别是值域、正则操作符、后继单元和子单元。其中值域可以表示ASCII表中任意字符(包含具有特殊作用,需要转义使用的字符)。操作符包括了所有正则表达式支持的语法,并支持部分定制的语法功能的添加。后继单元则承接前驱单元,子单元为出现“()”和“|”时的多路可选子规则。
本编译器支持的正则表达式语法规则见表一。
表一:编译器支持的正则规则语法
操作符 正则表达式中的匹配作用
a+ 匹配大于一个a
a? 匹配零或一个a
a* 匹配任意个数a
(a|b) 匹配a或者b中的一个
a{n}/{n,}/{n,m} 限定重复,匹配n个a/大于n个a/n至m个a
. 通配符,匹配任意一个字符
\xFF 匹配十六进制值对应的Ascii字符
\n,\r,\t,\v 匹配回车,换行,制表,垂直制表符
[a-z],[0-9],[!-&] 范围匹配,匹配“-”相连范围内的字符
[abc] 匹配abc中任意一个字符
[^a-z] 否定范围匹配,匹配除“-”相连范围内的字符
[a-c0-9!-&] 范围匹配,匹配“-”两侧若干范围内的任意字符
\*,\?,\+ 转义字符,将特殊字符转义成普通字符匹配
^reg ^从开头开始匹配
reg& &匹配至结尾处结束
\s \s,匹配任意空白字符(回车,换行,制表,空格)
\S \S,匹配任意非空白字符
\d 匹配任意0-9之间数字
\D 匹配除0-9之外的任意字符
\w 匹配0-9,a-z,A-Z,或“_”
\W 匹配除\w,之外的任意字符
.*(?^abc) 限定通配符重复,匹配任意个数除(abc)外的任意字符
除了通用的正则表达式规则之外,本编译器还支持一些自定义规则并预留新匹配规则支持接口以便编译器后期功能升级。
如图3所示为编译器核心算法流程。在完成链式分析之后,编译器将链式存储单元读入并采用改进后的MY(McNaughton-Yamada)构造算法,将链式单元分析成对应的NFA单个状态。
如图4所示为示例正则表达式A所对应的状态转移图。根据NFA结构,本发明所提出的编译方法采取新型的NFA标记结构,有效存储了NFA状态转移方向,方便了之后连接模块对单个正则规则单元采取对应的连接策略。
表二为本发明所提出的新型NFA记录结构。
表二:针对示例A的NFA记录结构
状态名 状态值 前入状态 后续状态 标记位
0 Start / 1 T
1 j 0 2 T
2 j 1 3 T
3 J 2 4 T
4 2 3 5 T
5 2 4 6 T
6 9 5 7,8,10,11 T
7 a 6,7,9 7,8,10,11 T
8 cd 6,7,8,9 8,9 T
9 e 8 7,8,10,11 T
10 x 6,7,9 11 T
11 End 6,7,9,10 / T
本发明方法定义的NFA结构包含五个组成部分,状态名,状态值,前入状态,后续状态,匹配标记。
1.状态名部分由起始状态0开始,依次标记为对应状态号。
2.状态值从Start开始终于End。之间各状态的值为状态对应的转移值。
3.前入状态表示为转移到该状态的所有状态。
4.后续状态表示状态往后转移的路径。
5.标记位记录了状态的匹配状态,“T”为匹配,“F”为否定匹配,即匹配非Val值的任意字符。
由表二可知,起始状态的前入状态为空,终止状态的后续状态为空。
正则表达式模块根据NFA状态,对该NFA所对应的正则表达式的硬件电路进行模块连结。采取模块化的匹配模块,根据NFA中的后续状态集合,自动连结各状态模块,实现整个正则匹配单元。
如图五所示为单个状态匹配的状态更新模块结构示意图,左图为匹配模块,右图为否定匹配模块。
如图六所示为匹配状态更新模块的综合RTL可视图。对照本编译器输出的硬件描述文件,在Quartus ii中综合得到的结果。
如图七所示,编译器编译完成规则集合中的所有正则表达式之后,顶层连结模块将所有正则表达单元联结成完整正则表达式匹配引擎。并伴随产生对应的规则集合测试文件和仿真激励文件。
如图八所示为十规则正则匹配引擎的综合RTL可视图。表三为示例十规则集合,此处仅为验证整体结构,并未涉及到本编译器所支持的全部语法规则。
表三:示例十规则正则表达式集合
lQ*(q{2,4}|Uj{4,})*(mX?|OV+) [UwP][vi](Z?[Xo]|[Jz]?)?
[Jr][Bx]shc[^cl]*f+z{2} wP?.S(m{3}|Jy*)+TQ?(N+|lf)*
[FR][XH]?ds+.r*[lve] yWT+pk?(k{2,6}|.N+)*
rUN(Ffbn|eLd+)?k{2,} [cj]*Z{1,6}(JS|l+)fH+
q{4,}IBvM([Dp]|PW+)? M{2}Mo[HN]?[ac]nN([cxA]?|FC)
测试字符串为编译器产生字符串集合,如表四所示。在Modelsim中用对表四中的示例字符串所产生的激励文件进行仿真,仿真结果表明本编译器编译产生的硬件电路能够有效的匹配相应符合规则的信息。
表四:示例十规则正则表达式测试字符串集合
lQQUjjjjjm Wi
Jxshcaaaffzz wPaSmmmTQlflf
FHdsswrre yWTTpaNNN
rUNeLddkkk jjjZZZllfHHH
qqqqqIBvMPWW mmMocnNFC
对大规模测试集合的编译结果表面,本编译器可以在30秒内实现包含超过500个正则表达式的正则表达式规则集合的编译,生成对应的硬件描述文件,测试文件和激励文件,且仿真综合结果都符合要求。
综上所述,利用本发明实施例展示了本编译器方法及实现编译器的作用。可以快速高效的实现对大规模正则匹配引擎的搭建,适用于今后数据带宽日益提高的高速数据匹配场景。
尽管已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下载本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种新型的基于NFA的正则表达式硬件编译方法及快速编译器,包括:Snort/Bro等入侵检测系统采用的规则集合提取模块,自定义规则集合生成模块,匹配字符串生成模块,测试文件生成模块,正则表达式编译模块,顶层连接模块,RTL输出模块。
2.如权利要求1中所述的入侵检测系统规则集合提取模块和自定义规则集合生成模块,通过对应程序段提取通用规则集合中的正则表达式或通过一定概率算法,采取与主程序相似的分析算法。自定义规则生成模块用任意程序实现产生符合本编译器规则的任意长度、任意个数正则表达式规则集合,作为主程序输入源。在“或”操作符处理过程中迭代生成符合要求的子规则组合成满足参数要求的长度的正则规则。
3.如权利要求1中所述的匹配字符串和激励文件生成模块,并行获取主程序输入元,并行的采取与主模块的相同的链式分析算法,取得规则构成元素,顺序读取对应元素并解析成任意与之相符的字串拼接输出。遇多选择路径时采用轮盘随机算法,选去任一路径解析。并生成对应的仿真测试文件,作为最终输出。
4.如权利要求1中所述的正则表达式编译模块,从规则集合提取模块获取规则集合,采用链式分析算法获取单个规则构成,通过改进的MY算法,存储中间NFA,此处NFA采用定制的结构,兼容匹配与非匹配模式。一次处理输入规则集中的单个正则规则,生成对应的硬件电路模块。
5.如权利要求1中所述的顶层连接模块,从核心引擎正则表达式编译模块获取对应规则集合的所有块文件,采用并行直连方式,将所有正则集合并行连接,共用数据总线输入、时钟输入,将单个匹配块输出通过逻辑或集合作为匹配引擎的输出信号。
6.如权利要求1中所述的所有模块并行集合,成为完整正则表达式硬件编译器,编译器输入为任意数量正则表达式文件,输出文件为匹配字符串集合文件,测试激励文件,各正则表达式块文件以及所属子文件,顶层正则匹配引擎描述文件。
7.如权利要求1中所述的正则表达式编译器,支持所有PCRE Perl语法,并再次基础上预留支持自定义语法的接口,很好的支持可能会出现的新语法规则,使编译器的通用性更强。
8.如权利要求6中所述正则表达式编译模块,通过改进MY算法,在构造过程中通过临时状态的添加和删除,有效减少了NFA中的空状态数,从而降低了在无效状态上的资源消耗。
9.如权利要求6中所述正则表达式编译模块,通过链式语法分析,获取正则表达式的组成元素,对单个元素构造比较器模块,并将所有元素集合,实现复用,所有规则集合在一个编译过程中共用相同的比较器模块。
10.如权利要求6中所述正则表达式编译模块,支持ASCII表中所有字符,涵盖转义字符等具有特殊含义字符的分析转义编译功能,语法覆盖全面。
CN201710396009.2A 2017-05-24 2017-05-24 一种新型快速正则表达式的硬件电路编译方法及编译器实现 Pending CN107193623A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710396009.2A CN107193623A (zh) 2017-05-24 2017-05-24 一种新型快速正则表达式的硬件电路编译方法及编译器实现

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710396009.2A CN107193623A (zh) 2017-05-24 2017-05-24 一种新型快速正则表达式的硬件电路编译方法及编译器实现

Publications (1)

Publication Number Publication Date
CN107193623A true CN107193623A (zh) 2017-09-22

Family

ID=59876081

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710396009.2A Pending CN107193623A (zh) 2017-05-24 2017-05-24 一种新型快速正则表达式的硬件电路编译方法及编译器实现

Country Status (1)

Country Link
CN (1) CN107193623A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010749A (zh) * 2019-12-19 2021-06-22 上海复旦微电子集团股份有限公司 正则表达式匹配系统
CN113392603A (zh) * 2021-08-16 2021-09-14 北京芯愿景软件技术股份有限公司 门级电路的rtl代码生成方法、装置和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7916510B1 (en) * 2009-08-10 2011-03-29 Netlogic Microsystems, Inc. Reformulating regular expressions into architecture-dependent bit groups
CN104753931A (zh) * 2015-03-18 2015-07-01 中国人民解放军信息工程大学 一种基于正则表达式的深度报文检测方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7916510B1 (en) * 2009-08-10 2011-03-29 Netlogic Microsystems, Inc. Reformulating regular expressions into architecture-dependent bit groups
CN104753931A (zh) * 2015-03-18 2015-07-01 中国人民解放军信息工程大学 一种基于正则表达式的深度报文检测方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
杨一华等: "FPGA上用于正则表达式匹配的高性能和紧凑架构", 《IEEE TRANSACTIONS ON COMPUTERS》 *
江彬: "基于FPGA的可配置正则表达式匹配引擎的设计", 《中国优秀硕士学位论文全文数据库(信息科技辑)》 *
王玉洁: "基于FPGA的正则匹配引擎自动生成方法的研究", 《中国优秀硕士学位论文全文数据库(信息科技辑)》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010749A (zh) * 2019-12-19 2021-06-22 上海复旦微电子集团股份有限公司 正则表达式匹配系统
CN113392603A (zh) * 2021-08-16 2021-09-14 北京芯愿景软件技术股份有限公司 门级电路的rtl代码生成方法、装置和电子设备
CN113392603B (zh) * 2021-08-16 2022-02-18 北京芯愿景软件技术股份有限公司 门级电路的rtl代码生成方法、装置和电子设备

Similar Documents

Publication Publication Date Title
CN102033748B (zh) 一种数据处理流程代码的生成方法
EP3679483A1 (en) Pruning engine
CN108228166A (zh) 一种基于模板的后端代码生成方法及系统
CN104820393B (zh) 一种基于plc梯形图矩阵编译解释方法
CN108829884A (zh) 数据映射方法及装置
CN107193623A (zh) 一种新型快速正则表达式的硬件电路编译方法及编译器实现
CN104090995B (zh) 一种ABAQUS轮胎模型中rebar单元网格的自动生成方法
Sanchez et al. Bigraphical modelling of architectural patterns
CN104050003A (zh) 一种采用shell脚本启动Nutch采集系统的方法
CN103425795B (zh) 一种基于云计算的雷达数据分析方法
CN109816038A (zh) 一种物联网固件程序分类方法及其装置
CN106909435A (zh) 一种网络安全设备命令行的解析方法和装置
CN112988163A (zh) 编程语言智能适配方法、装置、电子设备和介质
Handkiewicz et al. Design automation of a lossless multiport network and its application to image filtering
CN101771675B (zh) 一种对数据包进行特征匹配的方法及装置
CN102999323B (zh) 一种生成目标代码的方法、数据处理的方法及装置
Jin et al. Method of constructing model transformation rule based on reusable pattern
CN113468873A (zh) Pl/sql语言的语法解析方法及装置
WO2009119415A1 (ja) プロパティ抽出装置及び方法
Beccuti et al. A tool for the automatic derivation of symbolic ODE from symmetric net models
Harada et al. A design process formalization
CN104182542B (zh) 用于网站集群的数据处理方法和装置
Jin et al. A Novel Compiler for Regular Expression Matching Engine Construction
CN106817372A (zh) 一种基于多状态机的协议解析系统及方法
CN112825031B (zh) 基于json格式的流程描述方法及装置

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170922

WD01 Invention patent application deemed withdrawn after publication