CN101707513A - 基于正则表达式的深度包检测方法及设备 - Google Patents

基于正则表达式的深度包检测方法及设备 Download PDF

Info

Publication number
CN101707513A
CN101707513A CN200910238673A CN200910238673A CN101707513A CN 101707513 A CN101707513 A CN 101707513A CN 200910238673 A CN200910238673 A CN 200910238673A CN 200910238673 A CN200910238673 A CN 200910238673A CN 101707513 A CN101707513 A CN 101707513A
Authority
CN
China
Prior art keywords
state
data format
character
row
compressive state
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.)
Granted
Application number
CN200910238673A
Other languages
English (en)
Other versions
CN101707513B (zh
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.)
JIANGSU DAWN INFORMATION TECHNOLOGY CO., LTD.
Original Assignee
Dawning Information Industry Beijing Co Ltd
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 Dawning Information Industry Beijing Co Ltd filed Critical Dawning Information Industry Beijing Co Ltd
Priority to CN200910238673.XA priority Critical patent/CN101707513B/zh
Publication of CN101707513A publication Critical patent/CN101707513A/zh
Application granted granted Critical
Publication of CN101707513B publication Critical patent/CN101707513B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了基于正则表达式的深度包检测方法和设备,其中,该方法包括:S102,对于每个状态,根据压缩该状态所对应行所采用的数据格式,得到预先存储的压缩状态表;以及S104,根据当前所处状态、所得到的压缩状态表和新输入的字符,得到下一状态并跳转到该状态。通过本发明,大大减少了存储DFA所需要的存储空间。

Description

基于正则表达式的深度包检测方法及设备
技术领域
本发明涉及计算机领域,具体地,涉及基于正则表达式的深度包检测方法及设备。
背景技术
随着专门针对应用层攻击现象的增多,传统的状态检测防火墙有效性越来越低。防火墙的功能重心从网络层发展到了应用层,因而诞生了深度包检测技术。深度包检测技术不仅检测网络层和传输层数据包头部,而且深入到应用层数据包的有效载荷所封装的内容中,搜寻合法或非法的内容以决定是否允许数据包通过。随着深度包检测技术的发展,传统上用于过滤数据包内容的模式集合(包含模式的匹配串)逐渐被正则表达式集合所代替。例如Linux的应用协议分类器L7-filter(Linux Application Protocol Classifier),通过基于正则表达式的模式集合识别应用层的数据包;Snort、Bro等入侵检测系统也已将正则表达式应用于它的规则集当中。此外,在当今网络中,传统的采用端口进行协议识别已越来越无法满足需求,从而采用了正则表达式进行协议识别。
然而,虽然正则表达式在模式匹配时比字符串表现得更优异,但在现有的网络应用中,一个典型的模式集合往往由上百个正则表达式和数以万计的状态数组成,将模式集合构造成一个有限自动机,所需的内存可达几百兆,甚至几G,从而导致基于正则表达式的深度包检测的响应时间过长,极大地影响了检测效率。
实现正则表达式匹配主要采用各种状态机,但确定有限状态自动机(deterministic finite automaton,简称为DFA)存在空间爆炸的问题,难以支持较多正则表达式。目前,采用DFA的正则表达式匹配方案主要有以下几种:一种是适当改写正则表达式,以提高存储效率,但这种方案并不是能够改写任何形式的正则表达式,而是只能对特定形式的正则表达式进行改写;第二种挖掘状态转移的特点,例如大多数状态的下一状态只有几个不同的值,所以可以采用延迟转移等方法节省存储空间,但其存在匹配速度慢的缺点。
因此,需要一种能够大大减少存储DFA状态所需存储空间的解决方案,能够解决上述相关技术中的问题。
发明内容
根据本发明的一个方面,提供了一种基于正则表达式的深度包检测方法,通过硬件来执行该方法包括的以下步骤:步骤S102,对于每个状态,根据压缩该状态所对应行所采用的数据格式,得到预先存储的压缩状态表;以及步骤S104,根据当前所处状态、所得到的压缩状态表和新输入的字符,得到下一状态并跳转到该状态。
其中,硬件包括专用硬件逻辑。
具体地,专用硬件逻辑包括现场可编程门阵列、复杂可程式逻辑器件和专用集成电路中的一种。
此外,在步骤S102之前,针对有限状态机的状态转移表的每一行,预先选择预定的多种数据格式中的一种对该行进行压缩以获得该行的压缩状态表并存储压缩状态表.
优选地,多种数据格式包括以下三种数据格式:第一数据格式,将一行中数量最多的一个状态设为默认状态,并列出其他状态和对应的输入字符;第二数据格式,列出一行中连续出现的状态以及其所对应字符区间的开始字符和结束字符,并将剩下的状态作为默认状态;以及原始数据格式,直接为状态转移表中的一行的下一状态。
此外,优先采用第一数据格式,并且如果不能使用第一数据格式和第二数据格式,则采用原始数据格式。
根据本发明的另一方面,提供了一种基于正则表达式的深度包检测设备,以硬件方式实现所述设备的以下装置:压缩状态表获取装置,用于对于每个状态,根据压缩该状态所对应行所采用的数据格式,得到预先存储的压缩状态表;以及跳转装置,用于根据当前所处状态、所得到的压缩状态表和新输入的字符,得到下一状态并跳转到该状态。
其中,硬件包括专用硬件逻辑。
具体地,专用硬件逻辑包括现场可编程门阵列、复杂可程式逻辑器件和专用集成电路中的一种。
此外,该设备还包括:压缩状态表存储装置,用于针对有限状态机的状态转移表的每一行,预先选择预定的多种数据格式中的一种对该行进行压缩来获得该行的压缩状态表并存储压缩状态表,以将存储的压缩状态表提供给压缩状态表获取装置。
优选地,多种数据格式包括以下三种数据格式:第一数据格式,将一行中数量最多的一个状态设为默认状态,并列出其他状态和对应的输入字符;第二数据格式,列出一行中连续出现的状态以及其所对应字符区间的开始字符和结束字符,并将剩下的状态作为默认状态;以及原始数据格式,直接为状态转移表中的一行的下一状态。
此外,优先采用第一数据格式,并且如果不能使用第一数据格式和第二数据格式,则采用原始数据格式。
通过本发明的技术方案,大大减少了存储DFA状态所需要的存储空间,即,在有限的空间内可以存储较多的正则表达式。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是示出根据本发明的基于正则表达式的深度包检测方法的流程图;
图2是示出根据本发明的基于正则表达式的深度包检测设备的框图;
图3A和图3B是示出正则表达式的状态转移图和状态转移表的示意图;以及
图4和图5是示出根据本发明实施例的两种数据格式的示图。
具体实施方式
下面将结合附图来详细说明本发明的实施例。
图1是示出根据本发明的基于正则表达式的深度包检测方法的流程图。
如图1所示,根据本发明的基于正则表达式的深度包检测方法包括通过硬件执行的以下步骤:S102,对于每个状态,根据压缩该状态所对应行所采用的数据格式,得到预先存储的压缩状态表;以及S104,根据当前所处状态、所得到的压缩状态表和新输入的字符,得到下一状态并跳转到该状态。
图2是示出根据本发明的基于正则表达式的深度包检测设备的框图。
参照图2,根据本发明实施例的设备20包括以硬件方式实现的以下装置:压缩状态表获取装置202,用于对于每个状态,根据压缩该状态所对应行所采用的数据格式,得到预先存储的压缩状态表;以及跳转装置204,用于根据当前所处状态、所得到的压缩状态表和新输入的字符,得到下一状态并跳转到该状态。
下面,具体参照图3和图4描述本发明的实施例。
图3A和图3B示出了一般正则表达式的状态转移图和状态转移表。
假设正则表达式为:\$[0-9]+(\.[0-9]{2}){0,1}。该表达式的作用是识别美元数目(以$开头,后接多个)。图3A是状态转移图,图3B是状态转移表。该转移表共有256列,分别对应一个字节的256个值,图3B中最后一列的“~...”表示除0~9、.、$之外的所有字符。例如,在状态D下,如果输入“.”,将进入状态C,而如果输入0~9之间的数值,则均保持在D状态。
为了允许硬件快速定位到下一个状态,压缩以每个状态(图3B中的一行代表一个状态)为单位,也就是将图3B中的每一行分别压缩到预定比特之内,诸如128bit、144bit、256bit。行与行之间没有关系。通常,同一行中的256个下一状态大多数相同,如图3B中的第一行只有2个状态。
图4和图5图是压缩所采用的数据格式,图中的“Fmt_Flag”用于标识采用哪种数据格式,“Char1”、“Char2”分别用于表示输入的字符,“next”表示下一状态,“Else”表示默认状态,“Low1”、“High1”、“Low2”、“High2”等用于表示连续区间的开始字符和结束字符,“Match”是表示是否命中等的属性。图4表示某些单个字符的下一状态特殊,因此分别指定,最后用一个“Else”表示默认状态。图5则表示某些范围内字符的下一状态相同,如图3B中的C状态在输入0至9时,都跳转到E状态,则该状态的“Low”和“High”分别为0和9,“next”则为E。
此外,对于少数不能用这两种格式表示的状态,则直接在存储器的专门区域存储原始格式,即256个下一状态,这时可以通过偏移快速检索到下一状态。
如上所述,针对每一行,通过软件选择这三种数据格式中的一种来对该行进行压缩,然后将压缩得到的压缩状态表存储。因此,每次进行状态跳转时,只需要得到预先存储的压缩状态表就可以根据压缩状态表和新输入的字符快速地跳转到下一状态。
由于DFA的绝大多数状态只有几个不同的值,因此在本发明中,针对少数几个特定值进行判断,并根据判断结果进行状态跳转。具体来说,如果新输入的字符在这几个特定值所对应的输入字符中,则进行正常跳转,即,跳转到所输入字符对应的下一状态,而如果新输入的字符不在这几个特定值所对应的输入字符中,则跳转到默认状态,从而大大减少了存储DFA状态所需要的存储空间。
此外,通过查看状态转移表可以看出,某个状态出现的次数会很多,即,在多数情况下都会跳转到该状态,因此,在本发明中,预先将状态转移表中出现次数最多的状态设定为默认状态.如果新输入的字符不在特定值的范围内,就会直接跳转到该默认状态.
注意,在本发明中,必需采用硬件才能获得有效的性能。具体地,可以使用现场可编程门阵列(filed programmable gate array,简称为FPGA)。由于FPGA具有天然的并行性,可以一次并行完成判断。但应该明白,硬件并不限于FPGA。
一般来讲,专用硬件逻辑都可以按照本设计提供的方法实现该功能,例如复杂可程式逻辑器件(complex programmable logic device,简称为CPLD)和专用集成电路(application-specific integrated circuit,简称为ASIC)等。但是CPLD一般用于控制比较简单的场合,而ASIC则不够灵活,且研发周期非常长、研发费用比较高。它们可以按照FPGA类似的方式实现本设计的方案。
如上所述,根据本发明的实施例,大大减少了存储DFA所需要的存储空间,也就是说,在有限的空间内能够存储更多的正则表达式。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于正则表达式的深度包检测方法,其特征在于,通过硬件来执行所述方法包括的以下步骤:
步骤S102,对于每个状态,根据压缩该状态所对应行所采用的数据格式,得到预先存储的压缩状态表;以及
步骤S104,根据当前所处状态、所得到的压缩状态表和新输入的字符,得到下一状态并跳转到该状态。
2.根据权利要求1所述的方法,其特征在于,所述硬件包括专用硬件逻辑,其中,所述专用硬件逻辑包括现场可编程门阵列、复杂可程式逻辑器件和专用集成电路中的一种。
3.根据权利要求1所述的方法,其特征在于,在步骤S102之前,针对有限状态机的状态转移表的每一行,预先选择预定的多种数据格式中的一种对该行进行压缩以获得该行的压缩状态表并存储所述压缩状态表。
4.根据权利要求3所述的方法,其特征在于,所述多种数据格式包括以下三种数据格式:
第一数据格式,将一行中数量最多的一个状态设为默认状态,并列出其他状态和对应的输入字符;
第二数据格式,列出一行中连续出现的状态以及其所对应字符区间的开始字符和结束字符,并将剩下的状态作为默认状态;以及
原始数据格式,直接为所述状态转移表中的一行的下一状态。
5.根据权利要求4所述的方法,其特征在于,优先采用所述第一数据格式,并且如果不能使用所述第一数据格式和所述第二数据格式,则采用所述原始数据格式。
6.一种基于正则表达式的深度包检测设备,其特征在于,以硬件方式实现所述设备包括的以下装置:
压缩状态表获取装置,用于对于每个状态,根据压缩该状态所对应行所采用的数据格式,得到预先存储的压缩状态表;以及
跳转装置,用于根据当前所处状态、所得到的压缩状态表和新输入的字符,得到下一状态并跳转到该状态。
7.根据权利要求6所述的设备,其特征在于,所述硬件包括专用硬件逻辑,其中,所述专用硬件逻辑包括现场可编程门阵列、复杂可程式逻辑器件和专用集成电路中的一种。
8.根据权利要求6所述的设备,其特征在于,所述设备还包括:压缩状态表存储装置,用于针对有限状态机的状态转移表的每一行,预先选择预定的多种数据格式中的一种对该行进行压缩来获得该行的压缩状态表并存储所述压缩状态表,以将存储的压缩状态表提供给所述压缩状态表获取装置。
9.根据权利要求8所述的设备,其特征在于,所述多种数据格式包括以下三种数据格式:
第一数据格式,将一行中数量最多的一个状态设为默认状态,并列出其他状态和对应的输入字符;
第二数据格式,列出一行中连续出现的状态以及其所对应字符区间的开始字符和结束字符,并将剩下的状态作为默认状态;以及
原始数据格式,直接为所述状态转移表中的一行的下一状态。
10.根据权利要求9所述的设备,其特征在于,优先采用所述第一数据格式,并且如果不能使用所述第一数据格式和所述第二数据格式,则采用所述原始数据格式。
CN200910238673.XA 2009-11-30 2009-11-30 基于正则表达式的深度包检测方法及设备 Active CN101707513B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910238673.XA CN101707513B (zh) 2009-11-30 2009-11-30 基于正则表达式的深度包检测方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910238673.XA CN101707513B (zh) 2009-11-30 2009-11-30 基于正则表达式的深度包检测方法及设备

Publications (2)

Publication Number Publication Date
CN101707513A true CN101707513A (zh) 2010-05-12
CN101707513B CN101707513B (zh) 2015-10-21

Family

ID=42377711

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910238673.XA Active CN101707513B (zh) 2009-11-30 2009-11-30 基于正则表达式的深度包检测方法及设备

Country Status (1)

Country Link
CN (1) CN101707513B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102064977A (zh) * 2010-11-10 2011-05-18 中国人民解放军国防科学技术大学 基于gpu的高速网络报文内容检测方法
CN102064833A (zh) * 2010-12-17 2011-05-18 曙光信息产业(北京)有限公司 一种dfa的正则表达式压缩方法
CN102075430A (zh) * 2011-01-25 2011-05-25 无锡网芯科技有限公司 深度报文检测dfa状态转移表的压缩与报文匹配方法
CN102096580A (zh) * 2011-01-30 2011-06-15 瑞斯康达科技发展股份有限公司 状态机相关信息存储方法及装置
CN103166802A (zh) * 2011-12-12 2013-06-19 中国移动通信集团湖南有限公司 一种确定有限自动机的构建方法及装置
CN103259793A (zh) * 2013-05-02 2013-08-21 东北大学 基于后缀自动机正则引擎构造的深度包检测方法
CN103632048A (zh) * 2013-11-20 2014-03-12 中国科学院信息工程研究所 度量正则表达式状态复杂度的方法及装置
CN105391688A (zh) * 2015-10-13 2016-03-09 北京锐安科技有限公司 数据连接的识别方法和装置
CN111404642A (zh) * 2019-01-02 2020-07-10 中国移动通信有限公司研究院 一种信息交互方法、dpi系统及应用系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499065B (zh) * 2008-02-01 2011-11-02 华为技术有限公司 基于fa的表项压缩方法及装置、表项匹配方法及装置
CN101645069B (zh) * 2008-08-04 2013-09-11 中国科学院计算机网络信息中心 一种多模式匹配中正则表达式存储压缩方法
CN101442540B (zh) * 2008-12-30 2012-09-05 合肥昊特信息科技有限公司 基于现场可编程门阵列的高速模式匹配算法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘俊超等: "一种用于深度报文检测的DFA状态表压缩方法 ", 《计算机工程与应用》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102064977A (zh) * 2010-11-10 2011-05-18 中国人民解放军国防科学技术大学 基于gpu的高速网络报文内容检测方法
CN102064833A (zh) * 2010-12-17 2011-05-18 曙光信息产业(北京)有限公司 一种dfa的正则表达式压缩方法
CN102075430A (zh) * 2011-01-25 2011-05-25 无锡网芯科技有限公司 深度报文检测dfa状态转移表的压缩与报文匹配方法
CN102096580A (zh) * 2011-01-30 2011-06-15 瑞斯康达科技发展股份有限公司 状态机相关信息存储方法及装置
CN102096580B (zh) * 2011-01-30 2017-03-22 瑞斯康达科技发展股份有限公司 状态机相关信息存储方法及装置
CN103166802B (zh) * 2011-12-12 2016-12-07 中国移动通信集团湖南有限公司 一种确定有限自动机的构建方法及装置
CN103166802A (zh) * 2011-12-12 2013-06-19 中国移动通信集团湖南有限公司 一种确定有限自动机的构建方法及装置
CN103259793B (zh) * 2013-05-02 2015-10-21 东北大学 基于后缀自动机正则引擎构造的深度包检测方法
CN103259793A (zh) * 2013-05-02 2013-08-21 东北大学 基于后缀自动机正则引擎构造的深度包检测方法
CN103632048A (zh) * 2013-11-20 2014-03-12 中国科学院信息工程研究所 度量正则表达式状态复杂度的方法及装置
CN103632048B (zh) * 2013-11-20 2017-02-08 中国科学院信息工程研究所 度量正则表达式状态复杂度的方法及装置
CN105391688A (zh) * 2015-10-13 2016-03-09 北京锐安科技有限公司 数据连接的识别方法和装置
CN111404642A (zh) * 2019-01-02 2020-07-10 中国移动通信有限公司研究院 一种信息交互方法、dpi系统及应用系统

Also Published As

Publication number Publication date
CN101707513B (zh) 2015-10-21

Similar Documents

Publication Publication Date Title
CN101707513B (zh) 基于正则表达式的深度包检测方法及设备
CN101515298B (zh) 基于树形数据结构节点的插入的方法和存储装置
CN1316390C (zh) 用树状分段改善树搜索性能和存储器带宽的方法和系统
CN205142267U (zh) 识别过程控制系统中正在使用的通信协议的装置
KR100960120B1 (ko) 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법
CN103546467B (zh) 在TCP/IP网络上应用Modbus RTU协议的方法
CN105224692A (zh) 支持多核处理器的sdn多级流表并行查找的系统及方法
CN102546299B (zh) 一种在大流量下进行深度包检测的方法
CA2644208A1 (en) Merging multi-line log entries
US9398117B2 (en) Protocol data unit interface
CN102521356B (zh) 基于确定有限状态自动机的正则表达式匹配设备和方法
CN103995755A (zh) 基于移动终端的服务器优化方法及服务器系统
CN102694801B (zh) 病毒检测方法、装置以及防火墙设备
CN106407224A (zh) 一种键值存储系统中文件压实的方法和装置
CN102075430A (zh) 深度报文检测dfa状态转移表的压缩与报文匹配方法
CN107147590A (zh) 一种基于rdma协议消息通信的方法及系统
CN101042424B (zh) 一种检测专用集成电路的方法及装置
CN101030897B (zh) 一种入侵检测中模式匹配的方法
CN108062235A (zh) 数据处理方法及装置
CN102437959B (zh) 基于双超时网络报文的组流方法
CN110515870A (zh) 一种服务器电源前后级通讯的方法、设备及可读介质
CN107016223A (zh) 一种抗硬件木马芯片设计方法及系统
CN104391735A (zh) 虚拟化一体机集群中虚拟机调度方法及系统
CN105791124B (zh) 报文检测方法及装置
US20050207445A1 (en) Data input device and data output device for data driven processor, and methods therefor

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 100193 Beijing, Haidian District, northeast Wang West Road, building 8, No. 36

Applicant after: Dawning Information Industry (Beijing) Co., Ltd.

Address before: 100084 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District

Applicant before: Dawning Information Industry (Beijing) Co., Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20170215

Address after: 211106 Jiangning economic and Technological Development Zone, Jiangsu, general Avenue, No. 37, No.

Patentee after: JIANGSU DAWN INFORMATION TECHNOLOGY CO., LTD.

Address before: 100193 Beijing, Haidian District, northeast Wang West Road, building 8, No. 36

Patentee before: Dawning Information Industry (Beijing) Co., Ltd.