CN103746869B - 结合数据/掩码和正则表达式的多级深度包检测方法 - Google Patents
结合数据/掩码和正则表达式的多级深度包检测方法 Download PDFInfo
- Publication number
- CN103746869B CN103746869B CN201310720871.6A CN201310720871A CN103746869B CN 103746869 B CN103746869 B CN 103746869B CN 201310720871 A CN201310720871 A CN 201310720871A CN 103746869 B CN103746869 B CN 103746869B
- Authority
- CN
- China
- Prior art keywords
- data
- match
- packet
- regular expression
- mask
- 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.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种结合数据/掩码和正则表达式的多级深度包检测方法,包括:针对包含四层及四层协议以下的特征数据匹配的步骤,将待检测的数据包二层到四层协议数据包头和检测规则中对应的数据/掩码进行匹配:如果匹配成功,则继续进行下一步处理步骤;如果匹配失败,则本数据包对应该检测规则的操作结束。采用本发明,结合基于固定特征字和基于正则表达式的深度包检测方法的优势,同时能弥补两者的不足,通过正则表达式的匹配精确标识多样且经常变化的应用协议,利用正则表达式的匹配操作运行概率显著降低,能够节约***资源和提高***性能。
Description
技术领域
本发明涉及网络通信技术,尤其涉及一种结合数据/掩码和正则表达式的多级深度包检测方法。
背景技术
深度包检测(DPI,Deep Packet Inspection)技术在网络流量管理、网络实时状况监测和分析、网络安全、网络优化、网络QOS 增强、智能管道等领域获得了广泛的应用。
目前,与DPI关联的技术和方法的研究也在深入进行中。现有的DPI识别技术可归纳为三大类:1)基于特征字的识别技术;2)应用层网关识别结术;3)行为模式识别技术。其中,基于特征字的识别技术应用最为广泛。
这里,所述基于特征字的识别技术和方法,可以进一步分为基于数据和掩码的识别方法以及基于正则表达式的识别方法。其中,
基于数据和掩码的识别方法,实现较为简单,借助于专用集成电路(ASIC)、现场可编辑逻辑门阵列(FPGA) 等可编程逻辑器件以及软件均能实现,因此具有很强的实用性,尤其适用于检测确定的二层到四层协议包头。但由于数据和掩码的数值、位置、长度等信息固定,难以适应目前多样化且经常“变异”的应用协议检测。
基于正则表达式的识别方法,由于正则表达式的描述功能强大,特别适合于特征字不明确固定的应用层协议检测。但是,正则表达式的处理需要更多的***资源,由于处理时间长对***的转发性能也有很大影响。同时,当前的ASIC一般不支持基于正则表达式的识别,而用FPGA 等可编程逻辑器件实现也存在一定局限性,因此,通常倾向于使用基于通用处理器或多核处理器的软件***实现基于正则表达式的检测,这样,在实时性能上更存在挑战性。
发明内容
有鉴于此,本发明的主要目的在于提供一种结合数据/掩码和正则表达式的多级深度包检测方法,其基于特征字分析,结合基于固定特征字(如数据、掩码)的方法和基于正则表达式的方法的优点,将上述两种方法分级联合使用,分别用于处理数据包中不同的特征数据,解决基于固定特征字实现深度包检测难以适应应用层协议多样化和多变的不足,并解决基于正则表达式实现深度包检测在处理能力上难以满足高性能实时转发需求的不足,以节约***资源和提高***性能。
为达到上述目的,本发明的技术方案是这样实现的:
一种结合数据/掩码和正则表达式的多级深度包检测方法,包括:
针对包含四层及四层协议以下的特征数据匹配的步骤,将待检测的数据包二层到四层协议数据包头和检测规则中对应的数据/掩码进行匹配:如果匹配成功,则继续进行下一处理步骤;如果匹配失败,则本数据包对应该检测规则的操作结束。
其中:所述特征数据匹配的步骤适用于采用基于数据/掩码的处理方法,其功能能够通过使用专用集成电路ASIC、现场可编辑逻辑门阵列FPGA结合三态内容寻址存储器TCAM的方式或软件方式实现。
进一步包括:针对四层协议以上固定特征数据匹配的步骤,具体为:
将待检测的数据包四层以上协议的数据包头和检测规则中对应的数据/掩码进行匹配,如果匹配成功,则继续进行下一处理步骤;如果匹配失败,则本数据包对应该检测规则的操作结束。
所述针对四层协议以上固定特征数据匹配的步骤,其功能能够通过使用专用集成电路ASIC、现场可编辑逻辑门阵列FPGA结合三态内容寻址存储器TCAM的方式或软件方式实现。
进一步包括针对四层以上正则表达式匹配的步骤,具体为:
将待检测的数据包应用层特征数据和检测规则中对应的正则表达式进行匹配,如果匹配成功,则执行与本检测规则对应的操作;如果匹配失败,则本数据包对应的检测规则的操作结束。
所述针对四层以上正则表达式匹配的步骤,采用FPGA或运行在通用处理器/多核处理器上的软件来实现。
一种包含权利要求1、权利要求3或权利要求5所述结合数据/掩码和正则表达式的多级深度包检测方法的深度包检测方法,包括:
当存在待检测的数据包时,检查***是否配置有针对四层协议以下数据/掩码部分、针对四层协议以上数据/掩码部分或针对应用层正则表达式部分的检测规则且该检测规则未被处理,若所述的检测规则未被处理,则针对该检测规则继续执行下一条检测规则。
较佳地,在得到检测结果,即匹配成功并执行相应的操作或匹配失败的结果后,进一步执行如下操作:
1)如果匹配失败,且存在下一条未处理规则,则继续处理下一条未处理规则;如果匹配失败,且不存在下一条未处理规则,则继续处理下一个数据包;或,
2)如果匹配成功,则有两种选择:本数据包检测结束和继续该数据包针对下一条检测规则的处理,该选项由配置决定。
本发明所提供的结合数据/掩码和正则表达式的多级深度包检测方法,具有以下优点:
该多级深度包检测方法能够针对基于固定特征字实现深度包检测比较难以适应应用层协议多样化和多变的不足以及基于正则表达式实现深度包检测在处理能力上难以满足高性能实时转发需求的缺陷,将两者有机结合起来,既综合两者的优势,同时又能弥补两者的不足。通过将检测规则按照三段设计和存储,同时,将处理功能分三步进行,对于任一数据包和任一检测规则:1)将数据包对应字段与规则的第1段数据/掩码匹配,如匹配成功则进行下一步,否则,匹配失败返回;2)将数据包对应字段与规则的第2段数据/掩码匹配, 如匹配成功则继续下一步,否则,匹配失败返回;3)将数据包中应用层数据与规则中的正则表达式进行匹配,匹配成功,则进行该规则对应的操作。这样,通过正则表达式的匹配可以精确标识多样且经常变化的应用协议,同时正则表达式的匹配操作运行概率显著降低,可节约***资源和提高***性能。
附图说明
图1为本发明任一数据包匹配任一规则的过程流程图;
图2为本发明的检测规则表结构;
图3为本发明实施例的完整的深度包检测过程流程图。
具体实施方式
下面结合附图及本发明的实施例对本发明的多级深度包检测方法作进一步详细的说明。
本发明的所述深度包检测方法,在检测规则设计上有着独特的考虑。基于现代网络通信具有代表性的TCP/IP协议栈以及OSI/ISO定义的七层通信协议即物理层、数据链路层、网络层、传送层、会晤层、表示层、应用层的特点,以及互联网各种应用使用的协议数据包结构的现状,将检测规则设计成三段结构,也就是说,检测规则包含以下三大部分,如图2所示:
1)四层协议以下(含四层)数据/掩码部分,主要是对应二层到四层协议数据包头,这一部分各字段定义明确,字段数值、长度、位置确定。
2)四层协议以上(不含四层)数据/掩码部分,主要对应四层到七层协议数据中比较确定的不经常变化的字段。
3)应用层正则表达式部分,主要应对应用层协议中非固定的或经常变化的特征部分。
本方法的主要处理流程基于上述的检测规则表结构。下面对本发明的检测方法作进一步的说明。首先针对某一待检测的数据包对应某一检测规则的处理流程进行说明。
图1为本发明任一数据包匹配任一规则的处理过程流程图。也是本发明的主要功能流程图,如图1所示,该处理过程主要包括如下三个步骤:
步骤1:针对四层协议以下(包含四层)的特征数据匹配的步骤。
具体为:将待检测的数据包二层到四层协议数据包头和检测规则中对应的数据/掩码进行匹配。
如果匹配成功,则继续进行下一处理步骤。
如果匹配失败,则本数据包对应该检测规则的操作结束。
这里,无论是TCP/IP协议栈,还是OSI/ISO定义的七层模型,第一层物理层主要依赖硬件实现,这里可以忽略。而第二层到第四层的协议数据包头结构是明确的和固定的,因此,此部分适合于采用基于数据/掩码的处理方法,此部分功能可以使用ASIC、FPGA结合三态内容寻址存储器(TCAM)以及软件等方式实现。考虑到实时性和可扩展性,较为适宜采用FPGA结合TCAM的方式进行实现。
由于大量的数据包在经过上述步骤1时已经过滤掉,步骤2和步骤3在大多数情况下不会执行,因此能够大大提高采用本发明方法的深度包检测***的效率。
步骤2:针对四层协议以上(不包含四层)固定特征数据匹配的步骤。
具体为:将待检测的数据包四层以上(对于OSI/ISO七层模型来说,是四到七层,对于TCP/IP协议栈来说,由于四层以上的层次划分未有统一标准,用四层以上表述更好)协议数据包头和检测规则中对应的数据/掩码进行匹配。
如果匹配成功,则继续进行下一处理步骤。
如果匹配失败,则本数据包对应该检测规则的操作结束。
即使是应用层协议,也可能有一些协议字段具有固定的位置、数值和长度。这些确定的字段用适合于采用基于数据/掩码的处理方法来处理。由于步骤1中已经过滤了大量的数据包,步骤2的处理压力大大减轻,因此,步骤2采用ASIC、FPGA结合TCAM,及软件等方式等均可实现。
步骤3:针对四层以上正则表达式匹配的步骤。
具体为:将待检测的数据包应用层特征数据和检测规则中对应的正则表达式进行匹配,可以采用以应用层特征数据为主的确定性有限自动机(DFA)算法或以正则表达式为主的非确定性有限自动机(NFA)算法。
如果匹配成功,则执行与本检测规则对应的操作。
如果匹配失败,则本数据包对应该检测规则的操作结束。
由于应用层协议的多样性和多变性,该部分特征用基于数据/掩码的方法很难检测,因此需使用基于正则表达式的方法。考虑到灵活性和可扩展性,此部分功能宜用FPGA或运行在通用处理器/多核处理器上的软件来实现。
虽然基于正则表达式的检测在实时性能上有影响,但由于前两步已完成了绝大部分数据包的过滤,那么,进入正则表达式匹配过程的数据包已经非常少了,因此,能够将基于正则表达式检测在实时性能上的影响降到了最低限度。
由于本方法的整个检测过程分为上述的三级(即上述3个步骤),每一级使用不同的检测规则数据,因此,检测规则的结构也应设计得与处理过程匹配。
图2所示为本发明的上述检测方法所使用的检测规则表结构,每条检测规则又由相对独立的三部分组成,即四层协议以下(含四层)数据/掩码部分,四层协议以上(不含四层)数据/掩码部分和应用层正则表达式部分。在具体实现过程中,上述三部分既可以存储在一起,也可以分开进行存储。甚至可以存储在不同的处理器中,如TCAM或SRAM等。
需要注意的是,并非每条检测规则都包含上述完整的三部分。若某一检测规则缺少某一部分,则关于该部分的匹配即视为检测成功。
图3为本发明实施例的完整的深度包检测过程流程图。如图3所示,为以图1所示的流程为基础的完整检测过程实例。
当存在待检测的数据包时,检查***是否配置有规则(四层协议以下数据/掩码、四层协议以上数据/掩码或应用层正则表达式)且该规则未被处理,则针对该规则执行图1所示的流程。
当图1所示的流程执行完毕后,有两种可能的结果:匹配成功并执行相应的操作或匹配失败。
1)如果匹配失败,且存在下一条未处理规则,则继续处理下一条未处理规则;如果匹配失败,且不存在下一条未处理规则,则继续处理下一个数据包。
2)如果匹配成功,则有两种选择:本数据包检测结束和继续该数据包针对下一条检测规则的处理,该选项由配置决定。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (5)
1.一种结合数据/掩码和正则表达式的多级深度包检测方法,其特征在于,包括:
针对包含四层及四层协议以下的特征数据匹配的步骤,将待检测的数据包二层到四层协议数据包头和检测规则中对应的数据/掩码进行匹配:如果匹配成功,则继续进行下一处理步骤;如果匹配失败,则本数据包对应该检测规则的操作结束;
进一步包括:针对四层协议以上固定特征数据匹配的步骤,具体为:
将待检测的数据包四层以上协议的数据包头和检测规则中对应的数据/掩码进行匹配,如果匹配成功,则继续进行下一处理步骤;如果匹配失败,则本数据包对应该检测规则的操作结束;
进一步包括针对四层以上正则表达式匹配的步骤,具体为:
将待检测的数据包应用层特征数据和检测规则中对应的正则表达式进行匹配,如果匹配成功,则执行与本检测规则对应的操作;如果匹配失败,则本数据包对应的检测规则的操作结束。
2.根据权利要求1所述的结合数据/掩码和正则表达式的多级深度包检测方法,其特征在于,所述针对四层协议以上固定特征数据匹配的步骤,其功能能够通过使用专用集成电路ASIC、现场可编辑逻辑门阵列FPGA结合三态内容寻址存储器TCAM的方式或软件方式实现。
3.根据权利要求1所述的结合数据/掩码和正则表达式的多级深度包检测方法,其特征在于,所述针对四层以上正则表达式匹配的步骤,采用FPGA或运行在通用处理器/多核处理器上的软件来实现。
4.一种包含权利要求1所述的结合数据/掩码和正则表达式的多级深度包检测方法的深度包检测方法,其特征在于,包括:
当存在待检测的数据包时,检查***是否配置有针对四层协议以下数据/掩码部分、针对四层协议以上数据/掩码部分或针对应用层正则表达式部分的检测规则且该检测规则未被处理,若所述的检测规则未被处理,则针对该数据包继续处理该检测规则。
5.根据权利要求4所述的结合数据/掩码和正则表达式的多级深度包检测方法的深度包检测方法,其特征在于,在得到检测结果,即匹配成功并执行相应的操作或匹配失败的结果后,进一步执行如下操作:
1)如果匹配失败,且存在下一条未处理检测规则,则继续处理下一条未处理检测规则;如果匹配失败,且不存在下一条未处理检测规则,则继续处理下一个数据包;或,
2)如果匹配成功,则有两种选择:本数据包检测结束和继续该数据包针对下一条检测规则的处理,该选项由配置决定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310720871.6A CN103746869B (zh) | 2013-12-24 | 2013-12-24 | 结合数据/掩码和正则表达式的多级深度包检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310720871.6A CN103746869B (zh) | 2013-12-24 | 2013-12-24 | 结合数据/掩码和正则表达式的多级深度包检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103746869A CN103746869A (zh) | 2014-04-23 |
CN103746869B true CN103746869B (zh) | 2017-11-10 |
Family
ID=50503860
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310720871.6A Active CN103746869B (zh) | 2013-12-24 | 2013-12-24 | 结合数据/掩码和正则表达式的多级深度包检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103746869B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104348729B (zh) * | 2014-10-11 | 2018-08-21 | 北京中创腾锐技术有限公司 | 一种软硬件结合的互联网流分类方法 |
CN105429820B (zh) * | 2015-11-05 | 2018-10-09 | 武汉烽火网络有限责任公司 | 基于软件定义网络的深度包检测***及方法 |
CN106656501A (zh) * | 2016-09-23 | 2017-05-10 | 深圳市紫光同创电子有限公司 | 一种数据包验证方法及*** |
CN110232364A (zh) * | 2019-06-18 | 2019-09-13 | 华中师范大学 | 一种答题卡页码识别方法及装置 |
CN111866202B (zh) * | 2019-11-08 | 2023-04-07 | 北京嘀嘀无限科技发展有限公司 | 报文发送方法、装置、电子设备和存储介质 |
CN111817917B (zh) * | 2020-07-03 | 2021-12-24 | 中移(杭州)信息技术有限公司 | 一种深度包检测的方法、装置、服务器及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101420371A (zh) * | 2008-07-03 | 2009-04-29 | 江苏华丽网络工程有限公司 | Asic融合网络设备的一种动态功能支持方法及*** |
CN101771627A (zh) * | 2009-01-05 | 2010-07-07 | 武汉烽火网络有限责任公司 | 互联网实时深度包解析和控制节点设备和方法 |
CN102163221A (zh) * | 2011-04-02 | 2011-08-24 | 华为技术有限公司 | 模式匹配方法和装置 |
EP2595355A1 (en) * | 2010-11-29 | 2013-05-22 | Huawei Technologies Co., Ltd. | Method and device used in acquiring parameters for general analysis of protocol and in general analysis of protocol |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102347949B (zh) * | 2011-09-28 | 2014-07-02 | 上海西默通信技术有限公司 | 基于dpi的应用协议分析方法 |
-
2013
- 2013-12-24 CN CN201310720871.6A patent/CN103746869B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101420371A (zh) * | 2008-07-03 | 2009-04-29 | 江苏华丽网络工程有限公司 | Asic融合网络设备的一种动态功能支持方法及*** |
CN101771627A (zh) * | 2009-01-05 | 2010-07-07 | 武汉烽火网络有限责任公司 | 互联网实时深度包解析和控制节点设备和方法 |
EP2595355A1 (en) * | 2010-11-29 | 2013-05-22 | Huawei Technologies Co., Ltd. | Method and device used in acquiring parameters for general analysis of protocol and in general analysis of protocol |
CN102163221A (zh) * | 2011-04-02 | 2011-08-24 | 华为技术有限公司 | 模式匹配方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103746869A (zh) | 2014-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103746869B (zh) | 结合数据/掩码和正则表达式的多级深度包检测方法 | |
CN109962832B (zh) | 报文处理的方法和装置 | |
EP3135018B1 (en) | Policy-based payload delivery for transport protocols | |
CN103004158B (zh) | 具有可编程内核的网络设备 | |
CN104579940B (zh) | 查找访问控制列表的方法及装置 | |
CN104243315B (zh) | 用于唯一枚举解析树中的路径的装置和方法 | |
US20120099597A1 (en) | Method and device for detecting a packet | |
CN106790170B (zh) | 一种数据包过滤方法及装置 | |
Meiners et al. | Split: Optimizing space, power, and throughput for TCAM-based classification | |
CN110324245A (zh) | 一种基于集成流表转发报文的方法及装置 | |
CN102739473A (zh) | 一种应用智能网卡的网络检测方法 | |
CN102694801B (zh) | 病毒检测方法、装置以及防火墙设备 | |
CN109271793A (zh) | 物联网云平台设备类别识别方法及*** | |
CN101184000A (zh) | 基于报文采样和应用签名的互联网应用流量识别方法 | |
CN104333483A (zh) | 互联网应用流量识别方法、***及识别装置 | |
CN112468365A (zh) | 用于网络镜像流量的数据质量检测方法、***及介质 | |
CN114327833A (zh) | 一种基于软件定义复杂规则的高效流量处理方法 | |
CN104333461A (zh) | 互联网应用流量识别方法、***及识别装置 | |
US20200134308A1 (en) | Configuring and performing character pattern recognition in a data plane circuit | |
Bando et al. | Range hash for regular expression pre-filtering | |
CN108400984A (zh) | 基于动态规则匹配的mqtt消息过滤方法及*** | |
EP3264713A1 (en) | Hardware acceleration architecture for signature matching applications for deep packet inspection | |
US11968286B2 (en) | Packet filtering using binary search trees | |
CN105072122A (zh) | 一种数据包快速匹配分类方法 | |
US20140108718A1 (en) | Method and apparatus for setting tcam entry |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190114 Address after: 430074 No. 6, High-tech Fourth Road, Donghu High-tech Development Zone, Wuhan City, Hubei Province Patentee after: Fenghuo Communication Science &. Technology Co., Ltd. Address before: 430074 3rd Floor, Optical Communication Building, No. 5 Dongxin Road, Donghu Development Zone, Wuhan City, Hubei Province Patentee before: Wuhan Fenghuo Network Co., Ltd. |