正则表达式编译、匹配系统及编译、匹配方法技术方案

技术编号:3476566 阅读:186 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种正则表达式编译、匹配系统及编译、匹配方法。本发明专利技术的正则表达式编译系统包括词法分析模块和至少一编译模块,所述词法分析模块分析正则表达式的词法特点,根据预设词法规则将正则表达式送往不同的编译模块处理,所述编译模块接收正则表达式,将其编译成特定形式的数据结构。本发明专利技术有益的技术效果在于:在完全支持正则表达式语法的前提下,达到较高的处理速度;能够根据实时流量的特征调整引擎的处理行为,提高系统吞吐量。

【技术实现步骤摘要】

本专利技术属于通讯领域,也可应用于搜索引擎、数据库斥企索、自然语言理解、 文档分类等可能使用正则表达式的领域,尤其涉及一种正则表达式编译、匹配系统及编译、匹配方法
技术介绍
随着全IP网络(ALL-IP )、固定移动融合(Fixed and Mobile Convergence, 简称FMC)、多重播放(Triple-play)等概念的提出,传统的IP网络正在向融 合数据、语音和视频于一体的多业务统一承载网转变。但是IP网络固有的数据 传送方式和本质上开放的特征无法很好地满足电信级业务的需要,在网络安全 性、可管理性和关键业务的QoS和QoE保证等方面都有待改进。为了对一些 关键业务进行精确的业务识别和控制,除了按照传统的方法分析报文头中的五 元组等字段外,还需要对报文的负荷部分进行检测,比如一些P2P流量使用非 知名的端口,这样仅靠分析五元组就无法识别出此类流量。DPI (Deep Packet Inspection,深度报文^r测)技术作为一种灵活有效的业务识别技术应运而生, 并广泛应用在防火墙、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中的很多扩展选项(比如条 件表达式、A、 $等和位置相关的符号、匹配选项)都无法很好地支持。此外, 部分正则表达式(比如.*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中存i文报文处理动作;3. 预解析器从接受的原始网络报文中提取需要处理的字段放在消息緩存中;4. 消息緩存用来存放需要进行正则表达式匹配的报文消息;5. 译码电路对寺艮文译码,执行和报文相关的指令;6. 在译码电路的控制下,移位器将报文中的不同部分取出,和Tag中存放的当 前状态 一起送到CAM中进行比较;7. —旦TCAM检测出正则表达式,则RAM中对应的动作会被译码电路执行, 译码电路产生信号给流量控制器。现有技术二主要有以下缺点实现和TCAM可以同时访问多位的特性密切 相关,不具有通用性;TCAM价格昂贵、功耗较大也限制了其使用;方案中为 了减少子表达式的数目以达到减少占用TCAM条目数的目的,需要将不同的 DFA合成为一个DFA,如果对正则表达式进行更新,需要重新编译整个DFA; 对于PCRE中的很多扩展选项都无法很好地支持。现有技术三中在整个检测系统中使用专门的正则表达式检测模块,遇到需 要检测正则表达式时将流量输入到该模块进行处理,该模块采用ASIC芯片实现 DFA,目前只支持POSIX正则表达式,实现细节属于商业秘密无法获知。现有 技术三的缺点无法支持PCRE正则表达式;经分析得知,如果需要支持PCRE 正则表达式,需要用户在ASIC芯片以外本文档来自技高网...

【技术保护点】
一种正则表达式编译系统,其特征在于:包括词法分析模块和至少一编译模块,所述词法分析模块分析正则表达式的词法特点,根据预设词法规则将正则表达式送往不同的编译模块处理,所述编译模块接收正则表达式,将其编译成特定形式的数据结构。

【技术特征摘要】

【专利技术属性】
技术研发人员:王浩
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利