CN101360088B - 正则表达式编译、匹配系统及编译、匹配方法 - Google Patents
正则表达式编译、匹配系统及编译、匹配方法 Download PDFInfo
- Publication number
- CN101360088B CN101360088B CN2007100754494A CN200710075449A CN101360088B CN 101360088 B CN101360088 B CN 101360088B CN 2007100754494 A CN2007100754494 A CN 2007100754494A CN 200710075449 A CN200710075449 A CN 200710075449A CN 101360088 B CN101360088 B CN 101360088B
- Authority
- CN
- China
- Prior art keywords
- regular expression
- matching
- module
- compiling
- dfa
- 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
Links
- 230000014509 gene expression Effects 0.000 title claims abstract description 198
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000012545 processing Methods 0.000 claims abstract description 18
- 230000008569 process Effects 0.000 claims description 20
- 230000007704 transition Effects 0.000 claims description 14
- 239000012634 fragment Substances 0.000 claims description 10
- 230000008878 coupling Effects 0.000 claims description 9
- 238000010168 coupling process Methods 0.000 claims description 9
- 238000005859 coupling reaction Methods 0.000 claims description 9
- 230000000877 morphologic effect Effects 0.000 claims description 5
- 230000006399 behavior Effects 0.000 abstract description 2
- 230000009286 beneficial effect Effects 0.000 abstract 1
- 230000000694 effects Effects 0.000 abstract 1
- 239000008280 blood Substances 0.000 description 9
- 210000004369 blood Anatomy 0.000 description 9
- 238000001514 detection method Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- ZPUCINDJVBIVPJ-LJISPDSOSA-N cocaine Chemical compound O([C@H]1C[C@@H]2CC[C@@H](N2C)[C@H]1C(=O)OC)C(=O)C1=CC=CC=C1 ZPUCINDJVBIVPJ-LJISPDSOSA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000013517 stratification Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种正则表达式编译、匹配系统及编译、匹配方法。本发明的正则表达式编译系统包括词法分析模块和至少一编译模块,所述词法分析模块分析正则表达式的词法特点,根据预设词法规则将正则表达式送往不同的编译模块处理,所述编译模块接收正则表达式,将其编译成特定形式的数据结构。本发明有益的技术效果在于:在完全支持正则表达式语法的前提下,达到较高的处理速度;能够根据实时流量的特征调整引擎的处理行为,提高系统吞吐量。
Description
技术领域
本发明属于通讯领域,也可应用于搜索引擎、数据库检索、自然语言理解、文档分类等可能使用正则表达式的领域,尤其涉及一种正则表达式编译、匹配系统及编译、匹配方法。
背景技术
随着全IP网络(ALL-IP)、固定移动融合(Fixed and Mobile Convergence,简称FMC)、多重播放(Triple-play)等概念的提出,传统的IP网络正在向融合数据、语音和视频于一体的多业务统一承载网转变。但是IP网络固有的数据传送方式和本质上开放的特征无法很好地满足电信级业务的需要,在网络安全性、可管理性和关键业务的QoS和QoE保证等方面都有待改进。为了对一些关键业务进行精确的业务识别和控制,除了按照传统的方法分析报文头中的五元组等字段外,还需要对报文的负荷部分进行检测,比如一些P2P流量使用非知名的端口,这样仅靠分析五元组就无法识别出此类流量。DPI(Deep PacketInspection,深度报文检测)技术作为一种灵活有效的业务识别技术应运而生,并广泛应用在防火墙、IDS/IPS、业务控制网关等设备上,实现比如应用层负载均衡、基于特征的安全过滤等业务。和传统的报文检测方式相比,DPI不仅对原来的TCP/IP4层(IP层)以下的协议进行分析,还增加了4层以上信息的检测,因而其提供的信息更丰富,但处理也更为复杂。
传统的DPI检测系统通过将报文负荷和预先设定的字符串集合进行比较来判断报文是否满足特定特征。近年来,越来越多的系统采用正则表达式取代字符串来描述报文特征。和字符串相比,正则表达式能够非常灵活、简单、有效 地描述各种特征,使得特征串具有动态特性,适合各种动态搜索,比如b,ab,aab,aaab,aaaab...这一系列的字符串特征可以简单地用一个正则表达式a*b来表示。不同的正则表达式语言规范的描述能力不同,一般目前业界比较流行的正则表达式规范有POSIX(Portable Operating System Interface,可移植的操作系统界面)和PCRE(Perl Compatible Regular Expression,Perl兼容的正则表达式)两种。PCRE中增加了一些POSIX不支持的扩展,具有更强大的表达能力。比如开源代码Snort就采用PCRE规范来描述其部分规则。目前大部份设备还是使用POSIX规范,有些设备号称能够支持PCRE规范,但是从其产品资料分析,其实仍然只是PCRE规范中兼容POSIX规范的一个子集,并没有真正支持复杂的PCRE语法。
判断报文内容中是否包含正则表达式表示的规则的操作称为正则表达式匹配,目前,业界比较流行的正则表达式匹配方法有:
一种方法是基于DFA确定性有限状态机方法,这类方法都是预先将正则表达式转换为某种形式描述的状态转换表,匹配过程中,将报文中的符号作为输入条件查询状态转换表确定下一个跳转状态来实现状态迁移。这种方法的优点是“查表-跳转”的操作模式比较简单,能够很方便用硬件实现,匹配速度很快。缺点是只支持较为简单的正则表达式规范,对PCRE中的很多扩展选项(比如条件表达式、^、$等和位置相关的符号、匹配选项)都无法很好地支持。此外,部分正则表达式(比如:.*AB.{j}CD)用DFA表示时,其状态数目随正则表达式的长度呈指数级增长关系,给存储带来很大的负担。
另一种方法是NFA非确定性有限状态机方法,其基本原理类似于DFA方法,所不同的是:NFA允许出现空符号(即不输入任何符号实现跳转),且NFA输入一个符号可以对应多个下一个跳转状态。这种不确定性导致其用硬件实现非常困难,目前也有一些使用硬件实现NFA的方法,一般都是将NFA状态表直接用逻辑器件实现,这样如果更新正则表达式需要对逻辑器件更新逻辑更新,存在扩展性差的问题。
第三种方法是程序解析的方法。这类方法一般不显示生成状态转换表。以PCRE源码库为例,它将正则表达式分解为程序可以理解的最小片段。匹配过程中,程序将报文中的符号按照出现的位置落入不同的片段中,如果符号能够符合这个片段,则要么在这个片段中等待下一个符号,或者进入下一个片段。一些软件实现可能采用其他特定的处理方式,但都可以归类为程序解析。这种方法通常具有很良好的扩展性,能够支持较为复杂的正则表达式语法,但是和状态机的方式比,它的匹配速度比较慢,容易成为整个系统的瓶颈。
现有技术一给出一种分层的报文过滤架构,在每一层过滤器上可以定义不同的过滤标准。通过第一层过滤的报文送往第二层过滤器进行过滤,直到得出过滤结果。现有技术一适合于各层完成的过滤标准不相同的情况,而且通常由较先出现的层次完成一定的筛选,减少后面层次所需的数据处理量。因而各层次之间有严格的先后顺序,从提高整体效率的角度考虑,应该将处理越复杂的过滤器越往后放置。现有技术一主要有以下缺点:各层过滤器间有严格的顺序关系,不够灵活;会造成报文的处理延迟时间加长,比如一些报文根本不需要第一层过滤器进行处理,但是按照层次化过滤的架构,这些报文也需要经过第一层过滤器后再进入第二层过滤器进行匹配,一方面浪费了第一层过滤器的处理能力,另一方面也造成了整个报文匹配的时间增加。只是笼统地给出了过滤标准的定义,并没有给出针对正则表达式匹配的具体方案;
请参阅图1,为现有技术二利用TCAM存储DFA来实现正则表达式匹配系统的结构示意图。利用TCAM(Ternary Content Addressable Memory,三重内容可寻址存储器)存储DFA来实现正则表达式匹配的方法。其实现步骤可以描述为:
1.利用正则表达式中的元字符(如.*)将一个正则表达式分为多个子表达式,使用TCAM存储正则表达式(实际存放的是DFA状态表)。利用TCAM可以一次比较多个字符的特性,可以以多步长方式实现状态机;
2.在RAM中存放报文处理动作;
3.预解析器从接受的原始网络报文中提取需要处理的字段放在消息缓存中;
4.消息缓存用来存放需要进行正则表达式匹配的报文消息;
5.译码电路对报文译码,执行和报文相关的指令;
6.在译码电路的控制下,移位器将报文中的不同部分取出,和Tag中存放的当前状态一起送到CAM中进行比较;
7.一旦TCAM检测出正则表达式,则RAM中对应的动作会被译码电路执行,译码电路产生信号给流量控制器。
现有技术二主要有以下缺点:实现和TCAM可以同时访问多位的特性密切相关,不具有通用性;TCAM价格昂贵、功耗较大也限制了其使用;方案中为了减少子表达式的数目以达到减少占用TCAM条目数的目的,需要将不同的DFA合成为一个DFA,如果对正则表达式进行更新,需要重新编译整个DFA;对于PCRE中的很多扩展选项都无法很好地支持。
现有技术三中在整个检测系统中使用专门的正则表达式检测模块,遇到需要检测正则表达式时将流量输入到该模块进行处理,该模块采用ASIC芯片实现DFA,目前只支持POSIX正则表达式,实现细节属于商业秘密无法获知。现有技术三的缺点:无法支持PCRE正则表达式;经分析得知,如果需要支持PCRE正则表达式,需要用户在ASIC芯片以外提供实现,且没有给出具体的实现方案。
发明内容
本发明的实施例的目的在于提供一种正则表达式编译、匹配系统及编译、匹配方法,该正则表达式编译系统及方法,旨在解决现有技术中的系统没有考虑到正则表达式本身的特点,仅采用DFA方法处理所有正则表达式,无法真正支持PCRE正则表达式的问题。
本发明的实施例是这样实现的,一种正则表达式编译系统,包括词法分析模块和至少一编译模块,所述词法分析模块分析正则表达式的词法特点,根据预设词法规则将正则表达式送往不同的编译模块处理,所述编译模块接收正则表达式,将其编译成特定形式的数据结构。
本发明的实施例所采取的另一技术方案包括一种正则表达式匹配系统,包括仲裁模块和至少一匹配模块,所述仲裁模块查找正则表达式相关的分类信息,确定由哪个匹配模块进行匹配处理,所述匹配模块对符合其词法特点的正则表达式规则进行匹配。
本发明的实施例所采取的又一技术方案包括一种上述正则表达式编译系统编译正则表达式的方法,包括:
词法分析模块接收用户输入的正则表达式规则,对正则表达式进行词法解析,
词法分析模块根据预设规则将正则表达式送往不同的编译模块处理,由所述编译模块接收正则表达式,将其编译成特定形式的数据结构。
本发明的实施例所采取的又一技术方案包括一种上述正则表达式匹配系统匹配正则表达式的方法,包括:
仲裁模块接收前端模块发送的需要进行匹配操作的数据报文;
所述仲裁模块查找正则表达式相关的分类信息,确定由哪个匹配模块进行匹配处理;
所述匹配模块对符合其词法特点的正则表达式规则进行匹配。
本发明的实施例的正则表达式匹配系统及匹配方法通过结合使用多种正则表达式匹配算法,既保证了正则表达式匹配引擎具有较高的处理速度,又保证了对正则表达式的各种扩展语法的兼容性;本发明的实施例的正则表达式编译系统及编译方法通过使用具有反馈机制的编译器,能够根据实时流量的特征调整引擎的处理行为,提高系统吞吐量。
本发明的特征及优点将通过实施例结合附图进行详细说明。
附图说明
图1是现有技术二利用TCAM存储DFA来实现正则表达式匹配系统的结构示意图;
图2是本发明实施例的正则表达式匹配引擎的结构示意图;
图3是本发明实施例的正则表达式匹配系统采用单通道链接方式的结构示意图;
图4是本发明实施例的正则表达式匹配系统采用并联链接方式的结构示意图;
图5是本发明实施例的正则表达式匹配系统采用串联链接方式的结构示意图。
具体实施方式
为了使本发明实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明实施例进行进一步详细说明。
请参阅图2,为本发明实施例的正则表达式匹配引擎的结构示意图。本发明实施例的正则表达式匹配引擎包括正则表达式编译系统和正则表达式匹配系统。正则表达式编译系统与系统接口相连,接收用户输入的需要匹配的正则表达式规则。正则表达式匹配系统与前端模块连接,接收需要进行匹配操作的数据报文,正则表达式匹配系统还可以接收正则表达式信息,用来指示需要匹配的正则表达式。
本发明实施例的正则表达式编译系统包括词法分析模块、分类信息库、DFA编译模块、DFA状态转换表、PCRE编译模块和PCRE片段。词法分析模块接收到用户输入的正则表达式规则,对正则表达式进行词法解析,根据预设规则和其词法特点确定该正则表达式是送到DFA编译模块,还是PCRE编译模块进行编译,同时,该决策信息被记录在分类信息库中。如果DFA编译模块接收到正则表达式,将正则表达式编译为DFA状态转换表,并存储,如果PCRE编译模块接收到正则表达式,将正则表达式编译为PCRE片段,并存储。
本发明实施例的正则表达式的编译方法包括:
用户通过系统接口(比如命令行或操作界面等)将需要匹配的正则表达式规则输入到引擎;
词法分析模块接收到用户输入的正则表达式规则,对正则表达式进行词法解析,根据预设规则和其词法特点确定该正则表达式是送到DFA编译模块,还是PCRE编译模块进行编译。同时,该决策信息被记录在分类信息库中;
如果DFA编译模块接收到正则表达式,将正则表达式编译为DFA状态转 换表,并存储,其中,状态转换表并不一定指原始的二维转换表或转换图等特定形式,出于其他因素如空间效率考虑,还可能对状态转换表进行压缩,对不同的DFA进行合并等操作,这时状态转换表的存储形式可能发生变化,不影响本发明的实质内容;
如果PCRE编译模块接收到正则表达式,将正则表达式编译为PCRE片段,并存储。在实际软件实现时PCRE片段的存储形式是和具体实现相关的,形式上的不同不影响本发明的实质内容;
本发明实施例的正则表达式匹配系统包括仲裁模块、DFA适配器、PCRE适配器和综合输出模块。前端模块发送需要进行匹配操作的数据报文和正则表达式(可选)信息给引擎,其中,数据报文可以是通常所说的IP报文,为方便起见,前端的某个模块可以将原始IP报文中的三层、四层协议头移除后交给正则表达式匹配引擎处理;为了跨报文检测某个正则表达式,前端的某个模块还可能将报文进行重组;对于需要综合输出模块进行排序、统计的情况,需要送入的数据报文中有用于标识报文的字段,比如原始报文中的顺序号或者由前端模块分配的某种标识,不同的报文格式不影响本发明实施例的实质内容。图中前端模块送给仲裁模块的正则表达式是编译模块为正则表达式设定的标识符,用来指明检测输入数据报文中含有哪个正则表达式。该标识符在编译阶段产生,由前端模块根据自己的处理结果和某种映射规则确定该标识符。这样做的好处是在不同的正则表达式用不同DFA表示时,可以缩小需要匹配的正则表达式范围;如果由DFA编译模块编译的所有正则表达式被编译进一个大DFA中,则在进行匹配操作时,前端模块不需要指定标识符;不同DFA实现方式下入口参数的变化应不影响本发明实施例的实质内容。仲裁模块查找正则表达式相关的分类信息,确定由哪个适配器进行匹配处理,在进行匹配操作时,仲裁模块可以确定数据报文的流向和顺序,可以只有一个匹配模块进行处理,也可以由多个匹配模块进行处理。
本发明实施例的正则表达式匹配方法包括:
前端模块发送需要进行匹配操作的数据报文和正则表达式(可选)信息给引擎;
仲裁模块查找正则表达式相关的分类信息,确定由哪个适配器进行匹配处理;
DFA适配器/PCRE适配器对数据报文进行适配,匹配结果统一送到综合输出模块,如果有多个DFA/PCRE适配器线程对不同的数据报文进行匹配处理,可能因为数据报文的长度不同、需要匹配的正则表达式的复杂程度不同等因素,造成先收到的报文比后收到的报文的处理时间长,这时如果直接输出匹配结果给后续业务模块,匹配结果可能是乱序的。如果这种顺序很重要,可以在综合输出模块中设置一个缓存来对报文匹配结果进行排序;排序的方法有多种,比如可以根据报文的序号来进行。可选的,该模块还可以对匹配结果进行数据统计,数据统计条件可以灵活设定,比如在最近30分钟内被DFA适配器处理的前10位的正则表达式;不同的统计条件不影响本发明的实质内容;
综合输出模块将匹配结果送给后续业务处理模块,作为业务处理模块执行动作的依据,可选的,综合输出模块可以将统计信息反馈给词法分析模块,作为其分发正则表达式的参考依据;比如当检测到某个正则表达式最近经常由DFA适配器处理,词法分析模块可以将此正则表达式再送到PCRE编译模块进行编译,当DFA适配器忙不过来时,仲裁模块可以协调该报文到PCRE适配器进行处理。
在进行匹配操作时,仲裁模块可以确定数据报文的流向和顺序,可以只有一个匹配模块进行处理,也可以由多个匹配模块进行处理;按照各匹配模块间的链接关系不同,可以分为单通道、并联和串联三种链接方式。
请参阅图3,单通道链接方式是仲裁模块将数据报文调度到DFA适配器或者是PCRE适配器进行处理,数据只流向唯一的适配器。为了简化起见,在以下的图中都省略了控制层面的模块(有些情况下还省略了综合输出模块)。如(a)所示,大部分情况下,一条用户规则中只包含某种特定的正则表达式,由仲裁 模块将报文送到DFA或PCRE适配器进行处理;另外一种实施方式如(b)所示,如果某个数据报文应该是由DFA适配器进行处理,但DFA适配器处理不过来,而这时PCRE适配器刚好空闲,可以由仲裁模块协调报文到PCRE适配器进行处理。这种情况下两个匹配模块可能是用不同的器件实现,比如DFA适配器用FPGA实现,PCRE适配器用多核实现。这样处理能很方便地实现负载均衡,提高整个引擎的吞吐量。
请参阅图4,并联链接方式和单通道方式的实施方式(b)的模块关系很类似,不同的是,数据报文会被分配到各个适配器进行处理。有一些用户规则中包含有多个正则表达式,部分正则表达式适合用DFA方式表示,另外一部分正则表达式只能用PCRE方式表示。当有数据报文需要匹配这样的规则时,两个适配器可以同时处理报文。这种方式的优点是缩短了整个正则表达式匹配引擎的处理时间。
请参阅图5,串联链接方式下仲裁模块可以单独存在,链接在DFA适配器前;也可以不需要实现仲裁模块,将数据报文和正则表达式缺省先送到DFA适配器,隐含地由DFA适配器兼任仲裁模块的角色。如(a)所示,先通过DFA适配器过滤掉不满足DFA方式表示的正则表达式的数据报文,可以避免后续不必要的PCRE匹配操作;或者如(b)所示,报文缺省被送到DFA适配器,如果DFA适配器能够处理,就执行DFA匹配操作,输出结果;否则将报文再送到PCRE适配器进行处理。这样做的优点是模块间结构较简单,不需要单独实现仲裁模块。
本发明实施例的正则表达式编译、匹配系统及编译、匹配方法以DFA和PCRE适配器作为实例进行说明,本发明的实施例也适合采用其他的匹配方法来处理正则表达式,比如采用DFA和NFA方法。本发明主要是保护一种结合使用多种匹配算法进行正则表达式匹配的系统和方法,对使用的算法并不做限制。本发明实施例的正则表达式编译、匹配系统及编译、匹配方法只采用了两种编译/匹配模块,但是可以很方便地扩展到更多种类的编译/匹配模块;模块的 数量不影响本发明的实质内容。
本发明实施例中,只列举了一个DFA适配器和一个PCRE适配器;在实际实现时,没有这个限制;事实上为了达到最大的处理性能,往往会同时使用多个DFA适配器和多个PCRE适配器,比如采用多个线程。此时,仲裁模块可以根据各线程的负荷情况对报文进行分流。这不影响本发明的实质内容。
本发明以PCRE规范的正则表达式为实例进行说明,但是方法对于其他可能的正则表达式规范也适用。采用不同的正则表达式规范不影响本发明的实质内容。
本发明实施例的正则表达式编译、匹配系统及编译、匹配方法是针对网络环境下对数据报文进行高速正则表达式匹配的情况,但对于搜索引擎、数据库检索、自然语言理解、文档分类等这些情况下可能使用其他的正则表达式规范,而且正则表达式匹配对象也不局限于报文,比如数据库检索时针对的是数据表中的数据条目,但本发明提供的方法和系统同样适用。
本发明实施例的匹配系统可以在不同的器件中实现,也可以在相同器件中实现;可以使用硬件的方式实现,也可以采用软件的方式实现,甚至可以作为同一个软件中不同的函数来实现。因此本发明具有实现方式灵活的特点,但实现方式不同不影响本发明的实质内容。
本发明实施例的正则表达式编译、匹配系统及编译、匹配方法考虑了正则表达式本身的特点,能真正支持PCRE正则表达式,可以有效减少设备的存储器件成本;在对正则表达式进行编译时,如果正则表达式集合不经常变化,可以选择将所有正则表达式编译到同一个DFA以节省存储空间;在正则表达式集合需要经常更新的情况下,将不同的正则表达式编译到不同DFA,可以在更新个别正则表达式时,不需要对整个DFA进行重新编译,节省编译时间;不管在以上哪种情况下,由于词法分析已经将状态数目较多的正则表达式区分出来,交由PCRE编译器处理,因此可以节省存储空间;本发明实施例的正则表达式编译、匹配系统及编译、匹配方法在保证网络设备报文高速处理的同时,提供 对类似于PCRE的正则表达式规范的全面支持。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (18)
1.一种正则表达式编译系统,其特征在于:包括词法分析模块和至少一编译模块,所述词法分析模块分析正则表达式的词法特点,根据预设词法规则将正则表达式送往不同的编译模块处理,所述编译模块接收正则表达式,将其编译成特定形式的数据结构。
2.如权利要求1所述的正则表达式编译系统,其特征在于,还包括分类信息库,所述词法分析模块产生的决策信息记录在分类信息库中。
3.如权利要求2所述的正则表达式编译系统,其特征在于,所述编译模块包括DFA确定性有限状态机编译模块和PCRE Perl兼容的正则表达式编译模块,所述DFA确定性有限状态机编译模块收到正则表达式,将正则表达式编译为DFA状态转换表并存储,所述PCRE Perl兼容的正则表达式编译模块接收到正则表达式,将正则表达式编译为PCRE片段,并存储。
4.如权利要求2所述的正则表达式编译系统,其特征在于,所述编译模块包括DFA确定性有限状态机编译模块和NFA非确定性状态机编译模块,所述DFA确定性有限状态机编译模块收到正则表达式,将正则表达式编译为DFA状态转换表并存储,所述NFA非确定性状态机编译模块接收到正则表达式,将正则表达式编译为NFA状态转换表并存储。
5.一种正则表达式匹配系统,其特征在于:包括仲裁模块和至少一匹配模块,所述仲裁模块查找正则表达式相关的分类信息,确定由哪个匹配模块进行匹配处理,所述匹配模块对符合其词法特点的正则表达式规则进行匹配。
6.如权利要求5所述的正则表达式匹配系统,其特征在于,所述仲裁模块还根据预设规则确定数据报文在各匹配模块间的处理顺序,所述匹配模块间的处理方式包括单通道链接方式、并联链接方式和串联链接方式。
7.如权利要求5或6所述的正则表达式匹配系统,其特征在于,还包括综合输出模块,所述综合输出模块与匹配模块相连接,接收匹配模块输出的匹配结果。
8.如权利要求7所述的正则表达式匹配系统,其特征在于,所述综合输出模块中设置有缓存来对报文匹配结果进行排序。
9.如权利要求7所述的正则表达式匹配系统,其特征在于,所述综合输出模块对匹配结果进行数据统计。
10.如权利要求9所述的正则表达式匹配系统,其特征在于,所述综合输出模块将统计信息反馈给词法分析模块,由词法分析模块根据这些数据更新预设词法规则,并发起二次编译。
11.一种权利要求1所述的正则表达式编译系统编译正则表达式的方法,包括:
词法分析模块接收用户输入的正则表达式规则,对正则表达式进行词法解析,
词法分析模块根据预设规则将正则表达式送往不同的编译模块处理,由所述编译模块接收正则表达式,将其编译成特定形式的数据结构。
12.如权利要求11所述的正则表达式编译方法,其特征在于,所述编译正则表达式成特定形式的数据结构包括:
DFA确定性有限状态机编译模块收到正则表达式,将正则表达式编译为DFA状态转换表并存储;
PCRE Perl兼容的正则表达式编译模块接收到正则表达式,将正则表达式编译为PCRE片段并存储。
13.一种权利要求5所述的正则表达式匹配系统匹配正则表达式的方法,包括:
仲裁模块接收前端模块发送的需要进行匹配操作的数据报文;
所述仲裁模块查找正则表达式相关的分类信息,确定由哪个匹配模块进行匹配处理;
所述匹配模块对符合其词法特点的正则表达式规则进行匹配。
14.如权利要求13所述的正则表达式匹配方法,其特征在于,所述方法还包括:根据预设规则确定数据报文在各匹配模块间的处理顺序,所述匹配模块间的处理方式包括单通道链接方式、并联链接方式和串联链接方式。
15.如权利要求14所述的正则表达式匹配方法,其特征在于,所述匹配模块将匹配结果统一送到综合输出模块。
16.如权利要求15所述的正则表达式匹配方法,其特征在于,所述综合输出模块中设置有缓存来对报文匹配结果进行排序。
17.如权利要求15所述的正则表达式匹配方法,其特征在于,所述综合输出模块对匹配结果进行数据统计。
18.如权利要求17所述的正则表达式匹配方法,其特征在于,所述综合输出模块将统计信息反馈给词法分析模块,由词法分析模块模块根据这些数据更新预设词法规则,并发起二次编译。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100754494A CN101360088B (zh) | 2007-07-30 | 2007-07-30 | 正则表达式编译、匹配系统及编译、匹配方法 |
PCT/CN2008/071811 WO2009015603A1 (fr) | 2007-07-30 | 2008-07-30 | Système de compilation d'expressions régulières, système d'appariement, procédé de compilation et procédé d'appariement |
EP08783804.1A EP2184687B1 (en) | 2007-07-30 | 2008-07-30 | Regular expression compiling system, matching system, compiling method and matching method |
US12/696,421 US8413124B2 (en) | 2007-07-30 | 2010-01-29 | System and method for compiling and matching regular expressions |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100754494A CN101360088B (zh) | 2007-07-30 | 2007-07-30 | 正则表达式编译、匹配系统及编译、匹配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101360088A CN101360088A (zh) | 2009-02-04 |
CN101360088B true CN101360088B (zh) | 2011-09-14 |
Family
ID=40303904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100754494A Expired - Fee Related CN101360088B (zh) | 2007-07-30 | 2007-07-30 | 正则表达式编译、匹配系统及编译、匹配方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8413124B2 (zh) |
EP (1) | EP2184687B1 (zh) |
CN (1) | CN101360088B (zh) |
WO (1) | WO2009015603A1 (zh) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100325633A1 (en) * | 2009-06-19 | 2010-12-23 | Microsoft Corporation | Searching Regular Expressions With Virtualized Massively Parallel Programmable Hardware |
US8601013B2 (en) | 2010-06-10 | 2013-12-03 | Micron Technology, Inc. | Analyzing data using a hierarchical structure |
US8897151B2 (en) * | 2010-07-16 | 2014-11-25 | Board Of Trustees Of Michigan State University | Systematic framework for application protocol field extraction |
CN102075511B (zh) * | 2010-11-01 | 2014-05-14 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据匹配设备和方法以及网络入侵检测设备和方法 |
US20120110003A1 (en) * | 2010-11-03 | 2012-05-03 | Microsoft Corporation | Conditional execution of regular expressions |
US8892580B2 (en) * | 2010-11-03 | 2014-11-18 | Microsoft Corporation | Transformation of regular expressions |
CN102143148B (zh) * | 2010-11-29 | 2014-04-02 | 华为技术有限公司 | 用于通用协议解析的参数获取和通用协议解析方法及装置 |
CN102023858A (zh) * | 2010-12-03 | 2011-04-20 | 上海交通大学 | 软硬件协同工作的字符匹配系统及其匹配方法 |
US8726256B2 (en) | 2011-01-25 | 2014-05-13 | Micron Technology, Inc. | Unrolling quantifications to control in-degree and/or out-degree of automaton |
WO2012103151A2 (en) | 2011-01-25 | 2012-08-02 | Micron Technology, Inc. | State grouping for element utilization |
CN103547999B (zh) * | 2011-01-25 | 2017-05-17 | 美光科技公司 | 利用专用元件实施有限状态机 |
EP2668575B1 (en) | 2011-01-25 | 2021-10-20 | Micron Technology, INC. | Method and apparatus for compiling regular expressions |
CN102426550B (zh) * | 2011-10-26 | 2014-05-14 | 中国信息安全测评中心 | 源代码解析方法和系统 |
US9203805B2 (en) | 2011-11-23 | 2015-12-01 | Cavium, Inc. | Reverse NFA generation and processing |
CN102387159B (zh) * | 2011-12-13 | 2014-12-10 | 曙光信息产业(北京)有限公司 | 一种线性探测正则式分组系统和方法 |
CN102523139B (zh) * | 2012-01-06 | 2015-01-14 | 深圳市共进电子股份有限公司 | 高速网络协议深度检测装置及检测方法 |
CN102857493B (zh) * | 2012-06-30 | 2015-07-08 | 华为技术有限公司 | 内容过滤方法和装置 |
CN103544142B (zh) * | 2012-07-17 | 2016-12-21 | 安凯(广州)微电子技术有限公司 | 一种状态机 |
US8938454B2 (en) * | 2012-10-10 | 2015-01-20 | Polytechnic Institute Of New York University | Using a tunable finite automaton for regular expression matching |
KR101378115B1 (ko) | 2012-11-01 | 2014-03-27 | 한국전자통신연구원 | Pcre 기반 패턴 매칭 기법을 이용한 네트워크 침입 탐지 장치 및 방법 |
CN104239343B (zh) * | 2013-06-20 | 2018-04-27 | 腾讯科技(深圳)有限公司 | 一种用户输入信息的处理方法和装置 |
CN104253786B (zh) * | 2013-06-26 | 2017-07-07 | 北京思普崚技术有限公司 | 一种基于正则表达式的深度包检测方法 |
US9426165B2 (en) * | 2013-08-30 | 2016-08-23 | Cavium, Inc. | Method and apparatus for compilation of finite automata |
US9426166B2 (en) * | 2013-08-30 | 2016-08-23 | Cavium, Inc. | Method and apparatus for processing finite automata |
US9507563B2 (en) | 2013-08-30 | 2016-11-29 | Cavium, Inc. | System and method to traverse a non-deterministic finite automata (NFA) graph generated for regular expression patterns with advanced features |
US9405652B2 (en) * | 2013-10-31 | 2016-08-02 | Red Hat, Inc. | Regular expression support in instrumentation languages using kernel-mode executable code |
CN103685280B (zh) * | 2013-12-18 | 2017-04-26 | 华为技术有限公司 | 报文匹配方法、状态机编译方法及设备 |
US9904630B2 (en) | 2014-01-31 | 2018-02-27 | Cavium, Inc. | Finite automata processing based on a top of stack (TOS) memory |
US10002326B2 (en) | 2014-04-14 | 2018-06-19 | Cavium, Inc. | Compilation of finite automata based on memory hierarchy |
US10110558B2 (en) | 2014-04-14 | 2018-10-23 | Cavium, Inc. | Processing of finite automata based on memory hierarchy |
US9875045B2 (en) * | 2015-07-27 | 2018-01-23 | International Business Machines Corporation | Regular expression matching with back-references using backtracking |
CN106657075B (zh) * | 2016-12-26 | 2019-11-15 | 东软集团股份有限公司 | 多层协议解析方法、装置及数据匹配方法和装置 |
CN106790109B (zh) * | 2016-12-26 | 2020-01-24 | 东软集团股份有限公司 | 数据匹配方法和装置、协议数据分析方法、装置和系统 |
CN107016091B (zh) * | 2017-04-06 | 2019-10-15 | 北京邮电大学 | 一种软件定义网络中正则表达式更新方法及装置 |
CN107122222B (zh) * | 2017-04-20 | 2019-02-19 | 深圳大普微电子科技有限公司 | 一种字符串的搜索系统及方法 |
CN107423084B (zh) * | 2017-04-24 | 2021-02-02 | 武汉斗鱼网络科技有限公司 | 程序修改方法及装置 |
US10397263B2 (en) * | 2017-04-25 | 2019-08-27 | Futurewei Technologies, Inc. | Hierarchical pattern matching for deep packet analysis |
US10033750B1 (en) | 2017-12-05 | 2018-07-24 | Redberry Systems, Inc. | Real-time regular expression search engine |
CN112579855B (zh) * | 2019-09-30 | 2024-07-26 | 北京国双科技有限公司 | 微信文章的特征码提取方法及装置 |
CN110928793B (zh) * | 2019-11-28 | 2023-07-28 | Oppo广东移动通信有限公司 | 一种正则表达式检测方法、装置及计算机可读存储介质 |
CN111162947B (zh) * | 2019-12-30 | 2022-08-12 | 北京天融信网络安全技术有限公司 | 一种pcre热切换方法、网络设备及存储介质 |
CN111031073B (zh) * | 2020-01-03 | 2021-10-19 | 广东电网有限责任公司电力科学研究院 | 一种网络入侵检测系统及方法 |
CN111580825A (zh) * | 2020-04-28 | 2020-08-25 | 中国科学院软件研究所 | 一种面向机械臂程序开发编程语言的编译方法及系统 |
CN113656659A (zh) * | 2021-08-31 | 2021-11-16 | 上海观安信息技术股份有限公司 | 一种数据提取方法、装置、系统及计算机可读存储介质 |
CN113703715B (zh) * | 2021-08-31 | 2024-02-23 | 深信服科技股份有限公司 | 一种正则表达式匹配方法、装置、fpga及介质 |
CN115277087A (zh) * | 2022-06-24 | 2022-11-01 | 新华三信息安全技术有限公司 | 一种规则匹配方法及装置 |
CN117349409B (zh) * | 2023-12-05 | 2024-04-05 | 天津光电聚能通信股份有限公司 | 一种基于fpga的快速正则表达式匹配实现系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1255674A (zh) * | 1998-10-30 | 2000-06-07 | 太阳微系统有限公司 | 用于在运行时间选择编译方式的方法和装置 |
JP2007102744A (ja) * | 2005-10-07 | 2007-04-19 | Yasunari Maeda | マルチバイト文字セット用正規表現コンパイラ構成方法及びプログラム |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2994926B2 (ja) * | 1993-10-29 | 1999-12-27 | 松下電器産業株式会社 | 有限状態機械作成方法とパターン照合機械作成方法とこれらを変形する方法および駆動方法 |
GB9904663D0 (en) * | 1999-03-01 | 1999-04-21 | Canon Kk | Apparatus and method for generating processor usable data from natural langage input data |
US7180895B2 (en) | 2001-12-31 | 2007-02-20 | 3Com Corporation | System and method for classifying network packets with packet content |
US7225188B1 (en) * | 2002-02-13 | 2007-05-29 | Cisco Technology, Inc. | System and method for performing regular expression matching with high parallelism |
US6983323B2 (en) | 2002-08-12 | 2006-01-03 | Tippingpoint Technologies, Inc. | Multi-level packet screening with dynamically selected filtering criteria |
US7788726B2 (en) * | 2003-07-02 | 2010-08-31 | Check Point Software Technologies, Inc. | System and methodology providing information lockbox |
US20050114700A1 (en) * | 2003-08-13 | 2005-05-26 | Sensory Networks, Inc. | Integrated circuit apparatus and method for high throughput signature based network applications |
US7779049B1 (en) * | 2004-12-20 | 2010-08-17 | Tw Vericept Corporation | Source level optimization of regular expressions |
US7765183B2 (en) * | 2005-04-23 | 2010-07-27 | Cisco Technology, Inc | Hierarchical tree of deterministic finite automata |
US7499941B2 (en) * | 2005-09-05 | 2009-03-03 | Cisco Technology, Inc. | Pipeline regular expression matching |
US7805392B1 (en) * | 2005-11-29 | 2010-09-28 | Tilera Corporation | Pattern matching in a multiprocessor environment with finite state automaton transitions based on an order of vectors in a state transition table |
US20080071783A1 (en) * | 2006-07-03 | 2008-03-20 | Benjamin Langmead | System, Apparatus, And Methods For Pattern Matching |
US20080013461A1 (en) * | 2006-07-11 | 2008-01-17 | Hewlett-Packard Development Company, L.P. | Routing key interpreter |
US7953895B1 (en) * | 2007-03-07 | 2011-05-31 | Juniper Networks, Inc. | Application identification |
US8024802B1 (en) * | 2007-07-31 | 2011-09-20 | Hewlett-Packard Development Company, L.P. | Methods and systems for using state ranges for processing regular expressions in intrusion-prevention systems |
-
2007
- 2007-07-30 CN CN2007100754494A patent/CN101360088B/zh not_active Expired - Fee Related
-
2008
- 2008-07-30 WO PCT/CN2008/071811 patent/WO2009015603A1/zh active Application Filing
- 2008-07-30 EP EP08783804.1A patent/EP2184687B1/en active Active
-
2010
- 2010-01-29 US US12/696,421 patent/US8413124B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1255674A (zh) * | 1998-10-30 | 2000-06-07 | 太阳微系统有限公司 | 用于在运行时间选择编译方式的方法和装置 |
JP2007102744A (ja) * | 2005-10-07 | 2007-04-19 | Yasunari Maeda | マルチバイト文字セット用正規表現コンパイラ構成方法及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
EP2184687A4 (en) | 2011-01-12 |
US8413124B2 (en) | 2013-04-02 |
CN101360088A (zh) | 2009-02-04 |
EP2184687B1 (en) | 2013-12-04 |
EP2184687A1 (en) | 2010-05-12 |
WO2009015603A1 (fr) | 2009-02-05 |
US20100131935A1 (en) | 2010-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101360088B (zh) | 正则表达式编译、匹配系统及编译、匹配方法 | |
US7451214B1 (en) | Method and apparatus for packet analysis in a network | |
CN100336351C (zh) | 选择同步数据 | |
CN102857493B (zh) | 内容过滤方法和装置 | |
CN101257671B (zh) | 基于内容的大规模垃圾短信实时过滤方法 | |
CN106982150B (zh) | 一种基于Hadoop的移动互联网用户行为分析方法 | |
CN101605018A (zh) | 一种基于流的深度报文检测协议解码方法、设备及系统 | |
CN103546343B (zh) | 网络流量分析系统的网络流量展示方法和系统 | |
CN101876984A (zh) | 一种数据管理系统及其数据关联查询方法和装置 | |
CN104168170A (zh) | 封包交换装置及方法 | |
CN110912782B (zh) | 一种数据采集方法、装置及存储介质 | |
CN104778042A (zh) | 一种基于事件流处理和插件式开发框架的流数据处理方法 | |
CN110851248A (zh) | 异步任务数据处理方法、装置及计算机可读存储介质 | |
CN102090039B (zh) | 执行数据中间处理的方法、数据中间处理设备和信息系统 | |
CN101179444B (zh) | 配置生效方法、配置系统及配置网关 | |
CN1964324A (zh) | 对流分类算法进行自动选择的方法 | |
CN103812774A (zh) | 基于tcam的策略配置方法、报文处理方法及相应装置 | |
CN102073918A (zh) | 工作流执行中基于服务质量的异常处理方法 | |
CN104065494A (zh) | 一种机架式olt设备及其实现多组播vlan的方法 | |
JP2009509229A (ja) | 文脈認識が強化されたメッセージ変換システムおよび方法 | |
CN103702301A (zh) | 一种针对网间短信业务的实时感控系统 | |
CN105187490A (zh) | 一种物联网数据的中转处理方法 | |
CN102594680B (zh) | 一种报文分段处理方法 | |
CN115086392A (zh) | 一种基于异构芯片的数据平面和交换机 | |
CN106612218A (zh) | 一种虚拟访问入口数据包的地区区域特征提取方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110914 |