当前位置: 首页 > 专利查询>清华大学专利>正文

DFA压缩方法及装置、正则表达式匹配方法及系统制造方法及图纸

技术编号:15878694 阅读:150 留言:0更新日期:2017-07-25 16:41
本发明专利技术提供了DFA压缩方法及装置、正则表达式匹配方法及系统,包括:根据正则表达式集合构造DFA,所述DFA包括:字符、状态和每个状态各自对应于每个字符的转移,对应于每个字符,所述转移从当前状态指向与该字符相应的一个状态;根据所述DFA中的相同转移对状态和转移进行标记,其中所述相同转移为指向同一状态的转移;根据所述状态的标记和所述转移的标记对所述DFA进行压缩。本发明专利技术通过对DFA中的状态和状态的转移进行标记,根据状态的标记和转移的标记对所述DFA进行压缩,在不影响查找速率的情况下能达到较高的压缩率,使DFA占用更少内存。

DFA compression method and apparatus, regular expression matching method and system

The present invention provides a method and a device for DFA compression, regular expression matching method and system, including: according to the regular expression set to construct DFA, DFA includes transfer characters, state and each state of each corresponding to each character, corresponding to each character, the transition from the current state to a state corresponding to the character according to the transfer; the same in DFA to mark the state and transfer, wherein the same transfer for the transfer to the same state; according to the marks of the state and the transfer of the DFA compression. The present invention is marked by transfer of DFA in the state and state, according to the mark and the transfer of state of the DFA compression can achieve high compression rate without affecting the search rate, the DFA uses less memory.

【技术实现步骤摘要】
DFA压缩方法及装置、正则表达式匹配方法及系统
本专利技术涉及网络安全
,更具体地,涉及DFA压缩方法及装置、正则表达式匹配方法及系统。
技术介绍
基于正则表达式的模式匹配,简称正则表达式匹配,是下一代防火墙(NextGenerationFirewall,NGFW)、入侵检测/防御系统(IntrusionDetectionSystems/IntrusionPreventionSystem,IDS/IPS)、统一威胁管理(UnifiedThreatManagement,UTM)等安全网关系统的关键模块,而高性能的正则表达式匹配是其核心技术。正则表达式匹配通过检查和处理TCP/IP协议应用层的网包载荷(Payload)对网包(Packet)进行监控或者过滤。正则表达式匹配主要通过确定型有穷自动机(DeterministicFiniteAutomata,DFA)和非确定型有穷自动机(UndeterministicFiniteAutomata,NFA)两种数据结构来实现。其中,NFA内存占用小,但匹配速度极慢,在多核或通用处理器平台上根本不能满足实际的网络处理要求;而DFA匹配速度快,缺点是内存占用过高。复杂的正则表达式集合可能引起DFA的状态数量膨胀,导致需要巨大的储存空间。
技术实现思路
为解决正则表达式匹配中DFA内存占用过高的问题,本专利技术提供了DFA压缩方法及装置、正则表达式匹配方法及系统。根据本专利技术的一个方面,提供了一种DFA压缩方法,包括:根据正则表达式集合构造DFA,所述DFA包括:字符、状态和每个状态各自对应于每个字符的转移,对应于每个字符,所述转移从当前状态指向与该字符相应的一个状态;根据所述DFA中的相同转移对状态和转移进行标记,其中所述相同转移为指向同一状态的转移;根据所述状态的标记和所述转移的标记对所述DFA进行压缩。具体地,所述根据所述DFA中的相同转移对状态和转移进行标记,包括:对于所述DFA中的每个状态,选取该状态的相同转移数目最多的转移标记为该状态的第一状态转移,并将具有相同第一状态转移的状态分组到一个第一状态集合中;对于每个所述第一状态集合,将其中满足预设条件的一个状态标记为第一状态,并将所述第一状态再次分组到一个第二状态集合中;其中,若判断第一状态转移的数目最多的状态只有一个,所述预设条件包括:第一状态转移的数目最多,若判断第一状态转移的数目最多的状态有至少两个,则所述预设条件包括:在第一状态转移的数目最多的前提下,深度最小;对于所述第一状态集合中剩余的每个状态,若判断该状态与所述第一状态对应同一字符有相同转移的数目大于该状态的第一状态转移的数目,则将该状态标记为第二状态;将所述第二状态再次分组到所述第一状态所在的第二状态集合中,并将所述第二状态的指向所述第一状态的转移标记为第二状态转移;将所述第一状态集合中没被再次分组的状态组合成一个新的第一状态集合,对所述新的第一状态集合迭代执行再次分组的步骤,直到所述第一状态集合中的每个状态都被再次分组到第二状态集合中。具体地,所述根据所述状态的标记和所述转移的标记对所述DFA进行压缩,包括:对于每个所述第一状态,保留该第一状态的一个第一状态转移,将该第一状态的不同于所述第一状态转移的转移标记为第三状态转移,并保留所述第三状态转移,该第一状态的其他转移不保留;对于每个所述第二状态,保留该第二状态的一个第二状态转移,将与所述第一状态对应同一字符的转移不相同的转移标记为该第二状态的第三状态转移,并保留所述第三状态转移,该第二状态的其他转移不保留。具体地,所述根据所述状态的标记和所述转移的标记对所述DFA进行压缩,还包括:对于每个状态的所述第三状态转移,若对应于连续的字符存在相同的第三状态转移,则对应于该连续的字符仅保留一个第三状态转移。根据本专利技术的第二方面,提供了一种基于所述DFA压缩方法的正则表达式匹配方法,包括:读取压缩后的所述DFA的当前状态和当前输入字符;在所述当前状态的第三状态转移中查找对应于所述当前输入字符的第三状态转移;若判断存在对应于所述当前输入字符的第三状态转移,则根据该第三状态转移将所述当前状态转移到下一个状态;若判断不存在对应于所述当前输入字符的第三状态转移,则通过判断当前状态为第一状态或第二状态,根据当前状态的第一状态转移或第二状态转移将当前状态转移到下一个状态。根据本专利技术的第三方面,提供了一种DFA压缩装置,包括:构造单元,用于根据正则表达式集合构造DFA,所述DFA包括:字符、状态和每个状态各自对应于每个字符的转移,对应于每个字符,所述转移从当前状态指向与该字符相应的一个状态;标记单元,用于根据所述DFA中的相同转移对状态和转移进行标记,其中所述相同转移为指向同一状态的转移;压缩单元,用于根据所述状态的标记和所述转移的标记对所述DFA进行压缩。具体地,所述标记单元包括:第一标记子单元,用于为所述DFA中的每个状态选取该状态的相同转移数目最多的转移标记为该状态的第一状态转移,并将具有相同第一状态转移的状态分组到一个第一状态集合中;第二标记子单元,用于将每个所述第一状态集合中满足预设条件的一个状态标记为第一状态,并将所述第一状态再次分组到一个第二状态集合中;其中,若判断第一状态转移的数目最多的状态只有一个,所述预设条件包括:第一状态转移的数目最多,若判断第一状态转移的数目最多的状态有至少两个,则所述预设条件包括:在第一状态转移的数目最多的前提下,深度最小;第三标记子单元,用于判断所述第一状态集合中剩余的每个状态,若该状态与所述第一状态对应同一字符有相同转移的数目大于该状态的第一状态转移的数目,则将该状态标记为第二状态;还用于将所述第二状态再次分组到所述第一状态所在的第二状态集合中,并将所述第二状态的指向所述第一状态的转移标记为第二状态转移;迭代子单元,用于将所述第一状态集合中没被再次分组的状态组合成一个新的第一状态集合,并将所述新的第一状态集合发送到所述第一标记子单元和第二标记子单元以迭代执行再次分组的步骤,直到所述第一状态集合中的每个状态都被再次分组到第二状态集合中。具体地,所述压缩单元具体用于:对于每个所述第一状态,保留该第一状态的一个第一状态转移,将该第一状态的不同于所述第一状态转移的转移标记为第三状态转移,并保留所述第三状态转移,该第一状态的其他转移不保留;对于每个所述第二状态,保留该第二状态的一个第二状态转移,将与所述第一状态对应同一字符的转移不相同的转移标记为该第二状态的第三状态转移,并保留所述第三状态转移,该第二状态的其他转移不保留。具体地,所述压缩单元还具体用于:对于每个状态的所述第三状态转移,若对应于连续的字符存在相同的第三状态转移,则对应于该连续的字符仅保留一个第三状态转移。根据本专利技术的第四方面,提供了一种正则表达式匹配系统,包括所述DFA压缩装置以及读取单元、匹配单元,其中:读取单元,用于读取压缩后的所述DFA的当前状态和当前输入字符;匹配单元,用于在所述当前状态的第三状态转移中查找对应于所述当前输入字符的第三状态转移;若判断存在对应于所述当前输入字符的第三状态转移,则根据该第三状态转移将所述当前状态转移到下一个状态;若判断不存在对应于所述当前输入字符的第三状态转移,则通过判断当前本文档来自技高网...
DFA压缩方法及装置、正则表达式匹配方法及系统

【技术保护点】
一种DFA压缩方法,其特征在于,包括:根据正则表达式集合构造DFA,所述DFA包括:字符、状态和每个状态各自对应于每个字符的转移,对应于每个字符,所述转移从当前状态指向与该字符相应的一个状态;根据所述DFA中的相同转移对状态和转移进行标记,其中所述相同转移为指向同一状态的转移;根据所述状态的标记和所述转移的标记对所述DFA进行压缩。

【技术特征摘要】
1.一种DFA压缩方法,其特征在于,包括:根据正则表达式集合构造DFA,所述DFA包括:字符、状态和每个状态各自对应于每个字符的转移,对应于每个字符,所述转移从当前状态指向与该字符相应的一个状态;根据所述DFA中的相同转移对状态和转移进行标记,其中所述相同转移为指向同一状态的转移;根据所述状态的标记和所述转移的标记对所述DFA进行压缩。2.根据权利要求1所述的DFA压缩方法,其特征在于,所述根据所述DFA中的相同转移对状态和转移进行标记,包括:对于所述DFA中的每个状态,选取该状态的相同转移数目最多的转移标记为该状态的第一状态转移,并将具有相同第一状态转移的状态分组到一个第一状态集合中;对于每个所述第一状态集合,将其中满足预设条件的一个状态标记为第一状态,并将所述第一状态再次分组到一个第二状态集合中;其中,若判断第一状态转移的数目最多的状态只有一个,所述预设条件包括:第一状态转移的数目最多,若判断第一状态转移的数目最多的状态有至少两个,则所述预设条件包括:在第一状态转移的数目最多的前提下,深度最小;对于所述第一状态集合中剩余的每个状态,若判断该状态与所述第一状态对应同一字符有相同转移的数目大于该状态的第一状态转移的数目,则将该状态标记为第二状态;将所述第二状态再次分组到所述第一状态所在的第二状态集合中,并将所述第二状态的指向所述第一状态的转移标记为第二状态转移;将所述第一状态集合中没被再次分组的状态组成一个新的第一状态集合,对所述新的第一状态集合迭代执行再次分组的步骤,直到所述第一状态集合中的每个状态都被再次分组到第二状态集合中。3.根据权利要求2所述的DFA压缩方法,其特征在于,所述根据所述状态的标记和所述转移的标记对所述DFA进行压缩,包括:对于每个所述第一状态,保留该第一状态的一个第一状态转移,将该第一状态的不同于所述第一状态转移的转移标记为第三状态转移,并保留所述第三状态转移,该第一状态的其他转移不保留;对于每个所述第二状态,保留该第二状态的一个第二状态转移,将与所述第一状态对应同一字符的转移不相同的转移标记为该第二状态的第三状态转移,并保留所述第三状态转移,该第二状态的其他转移不保留。4.根据权利要求3所述的DFA压缩方法,其特征在于,所述根据所述状态的标记和所述转移的标记对所述DFA进行压缩,还包括:对于每个状态的所述第三状态转移,若对应于连续的字符存在相同的第三状态转移,则对应于该连续的字符仅保留一个第三状态转移。5.一种基于权利要求3或4所述的DFA压缩方法的正则表达式匹配方法,其特征在于,包括:读取压缩后的所述DFA的当前状态和当前输入字符;在所述当前状态的第三状态转移中查找对应于所述当前输入字符的第三状态转移;若判断存在对应于所述当前输入字符的第三状态转移,则根据该第三状态转移将所述当前状态转移到下一个状态;若判断不存在对应于所述当前输入字符的第三状态转移,则通过判断当前状态为第一状态或第二状态,根据当前状态的第一状态转移或第二状态转移将当前状态转移到下一个状态。6.一种DFA压缩装置,其特征在于...

【专利技术属性】
技术研发人员:王凯李军
申请(专利权)人:清华大学
类型:发明
国别省市:北京,11

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

1