CN105791124B - 报文检测方法及装置 - Google Patents

报文检测方法及装置 Download PDF

Info

Publication number
CN105791124B
CN105791124B CN201410827248.5A CN201410827248A CN105791124B CN 105791124 B CN105791124 B CN 105791124B CN 201410827248 A CN201410827248 A CN 201410827248A CN 105791124 B CN105791124 B CN 105791124B
Authority
CN
China
Prior art keywords
value
bit section
transfering state
keyword
data
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
Application number
CN201410827248.5A
Other languages
English (en)
Other versions
CN105791124A (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.)
Shenzhen ZTE Microelectronics Technology Co Ltd
Original Assignee
Shenzhen ZTE Microelectronics Technology 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 Shenzhen ZTE Microelectronics Technology Co Ltd filed Critical Shenzhen ZTE Microelectronics Technology Co Ltd
Priority to CN201410827248.5A priority Critical patent/CN105791124B/zh
Priority to PCT/CN2015/081205 priority patent/WO2016101552A1/zh
Publication of CN105791124A publication Critical patent/CN105791124A/zh
Application granted granted Critical
Publication of CN105791124B publication Critical patent/CN105791124B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks

Abstract

本发明实施例公开了一种报文检测方法及装置,所述方法包括:建立关键字比特段查找的转移状态数据库;为待检测关键字中的每一比特段设置转移状态,且每一关键字的初始转移状态的值均相等;每一关键字中首比特段至最后一个比特段的转移状态值连续,且每一关键字中除初始转移状态的值之外的其他比特段的转移状态的值不相等;获取所有关键字,并将关键字中的每一比特段的转移状态的值写入所述数据库;获取待检测报文的待检测数据,根据所述待检测数据中的比特段在所述数据库中查找所述待检测数据中是否包含关键字,并输出检测结果。

Description

报文检测方法及装置
技术领域
本发明涉及分组交换技术,尤其涉及一种深度报文检测方法及装置。
背景技术
传统的IP包流量识别和服务质量(QoS,Quality of Service)控制技术,仅对IP包头中的源IP地址、目的IP地址、源端口、目的端口以及协议类型等信息进行分析,来确定当前流量的基本信息。传统IP路由器也正是通过这一系列信息来实现一定程度的流量识别和QoS保障的,但其仅仅分析IP包的四层以下的内容,包括源IP地址、目的IP地址、源端口、目的端口以及协议类型。随着网上应用类型的不断丰富,仅通过第四层端口信息已经不能真正判断流量中的应用类型,更不能应对基于开放端口、随机端口甚至采用加密方式进行传输的应用类型。深度报文检测技术在分析包头的基础上,增加了对应用层的分析,是一种基于应用层的流量检测和控制技术,当IP数据包、TCP或UDP数据流经过基于DPI技术的带宽管理系统时,该系统通过深入读取IP包载荷的内容来对开放网络参考模型七层协议中的应用层信息进行检测,从而得到整个应用程序的内容,然后按照系统定义的管理策略对流量进行整形操作。同时,检测整个报文的数据内容,搜索数据包中的攻击代码或敏感信息也是网络安全重要措施。但目前的报文检测技术的检测效率普遍较低。
发明内容
为解决上述技术问题,本发明实施例提供一种报文检测方法及装置,能实现高效率的报文检测。
本发明实施例的技术方案是这样实现的:
一种报文检测方法,建立关键字比特段查找的转移状态数据库,所述方法包括:
为待检测关键字中的每一比特段设置转移状态,且每一关键字的初始转移状态的值均相等;每一关键字中首比特段至最后一个比特段的转移状态值连续;
获取所有关键字,并将关键字中的每一比特段的转移状态的值写入所述数据库;
获取待检测报文的待检测数据,根据所述待检测数据中的比特段在所述数据库中查找所述待检测数据中是否包含关键字,并输出检测结果。
优选地,所述转移状态数据库中设置有包含所有关键字的比特段行及为比特段设置的转移状态的值列,每一关键字中的比特段所在的列与所述比特段的前一比特段的转移状态的值所在的行的交汇节点,写入有所述比特段下一比特段的转移状态的值,最后一个比特段所在的列与倒数第二个比特段的转移状态的值所在的行的交汇节点,写入关键字的初始转移状态的值;
优选地,获取待检测报文的待检测数据,包括:
从传输报文中确定出需深度检测的报文;
对需深度检测的报文进行分类,并确定各类需深度检测的报文中待检测数据;所述待检测数据为需深度检测的报文的一部分。
优选地,所述根据所述待检测数据中的比特段在所述数据库中查找所述待检测数据中是否包含关键字,包括:
获取所述待检测数据的首比特段;
根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;
确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,直到查找的交汇节点中的值为初始转移状态的值,确定所述待检测数据中包含有关键字。
优选地,所述首比特段与所述初始转移状态的值查找交汇的节点中的值为初始转移状态的值时,所述方法还包括:
获取所述待检测数据的第二个比特段,根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,直到查找至所述待检测数据的最后一个比特段,确定出所述待检测数据中的所有关键字。
优选地,所述根据所述待检测数据中的比特段在所述数据库中查找所述待检测数据中是否包含关键字,包括:
获取所述待检测数据的首比特段;
根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;
确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,且,依次将所述值加一,查找加一后的值与所述待检测数据中对应的后一比特段的交汇节点中的值,直到查找的交汇节点中的值为初始转移状态的值或查找至所述待检测数据的最后一个比特段,确定所述待检测数据中的关键字。
优选地,所述依次将所述值加一,查找加一后的值与所述待检测数据中对应的后一比特段的交汇节点中的值,包括:
按关键字中包含的平均比特段个数,获取所述值之后的所述平均比特段个数行与所述待检测数据中对应的比特段所在列的多个交汇节点中的值。
一种报文检测装置,包括:建立单元、设置单元、写入单元、查找单元和输出单元,其中:
建立单元,用于建立关键字比特段查找的移状态数据库;
设置单元,用于为待检测关键字中的每一比特段设置转移状态,且每一关键字的初始转移状态的值均相等;每一关键字中首比特段至最后一个比特段的转移状态值连续,且每一关键字中除初始转移状态的值之外的其他比特段的转移状态的值不相等;
写入单元,用于获取所有关键字,并将关键字中的每一比特段的转移状态的值写入所述数据库;
查找单元,用于获取待检测报文的待检测数据,根据所述待检测数据中的比特段在所述数据库中查找所述待检测数据中是否包含关键字;
输出单元,用于输出检测结果。
优选地,所述转移状态数据库中设置有包含所有关键字的比特段行及为比特段设置的转移状态的值列,每一关键字中的比特段所在的列与所述比特段的前一比特段的转移状态的值所在的行的交汇节点,写入有所述比特段下一比特段的转移状态的值,最后一个比特段所在的列与倒数第二个比特段的转移状态的值所在的行的交汇节点,写入关键字的初始转移状态的值
优选地,所述查找单元,还用于从传输报文中确定出需深度检测的报文;对需深度检测的报文进行分类,并确定各类需深度检测的报文中待检测数据;其中,所述待检测数据为需深度检测的报文的一部分。
优选地,所述查找单元,还用于获取所述待检测数据的首比特段;根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,直到查找的交汇节点中的值为初始转移状态的值,确定所述待检测数据中包含有关键字。
优选地,所述查找单元,在所述首比特段与所述初始转移状态的值查找交汇的节点中的值为初始转移状态的值时,还用于获取所述待检测数据的第二个比特段,根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,直到查找至所述待检测数据的最后一个比特段,确定出所述待检测数据中的所有关键字。
优选地,所述查找单元,还用于获取所述待检测数据的首比特段;根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,且,依次将所述值加一,查找加一后的值与所述待检测数据中对应的后一比特段的交汇节点中的值,直到查找的交汇节点中的值为初始转移状态的值或查找至所述待检测数据的最后一个比特段,确定所述待检测数据中的关键字。
优选地,所述查找单元,还用于按关键字中包含的平均比特段个数,获取所述值之后的所述平均比特段个数行与所述待检测数据中对应的比特段所在列的多个交汇节点中的值。
本发明实施例中,通过为待检测的关键字中的各比特段设置转移状态的值,并在数据库中以二维方式记录各关键字的各比特段的转移状态的值,以方便后续对待检测报文中的待检测数据进行检测,确定报文中是否包含关键字,包含时将检测结果输出。本发明实施例通过对关键字设置二维的比特段转移状态的值表,在报文中查找关键字方便快捷,大大提升了报文深度检测的效率。
附图说明
图1为本发明实施例的报文检测方法的流程图;
图2为本发明实施例的深度报文检测转移状态的示意图;
图3为本发明实施例的深度报文检测转移状态数据库的示意图;
图4为本发明实施例的待检测数据的示意图;
图5为本发明实施例的输出结果的示意图;
图6为本发明实施例的报文检测装置的组成结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图1为本发明实施例的报文检测方法的流程图,如图1所示,本发明实施例的报文检测方法包括以下步骤:
步骤101,建立关键字比特段查找的转移状态数据库。
本发明实施例中,所述移动转移状态数据库中设置有包含所有关键字的比特段行及为比特段设置的转移状态的值列,每一关键字中的比特段所在的列与所述比特段的前一比特段的转移状态的值所在的行的交汇节点,写入有所述比特段下一比特段的转移状态的值,最后一个比特段所在的列与倒数第二个比特段的转移状态的值所在的行的交汇节点,写入关键字的初始转移状态的值。
本发明实施例中,在进行深度报文检测之前,需建立各待检测的关键字的转移状态数据库,该数据库以二维数据的方式记录关键字中各比特段及其对应的比特段的转移状态的值。关键字的转移状态数据库的结构如图3所示。
本发明实施例中,每一关键字的初始转移状态的值均相等;每一关键字中首比特段至最后一个比特段的转移状态值连续,且每一关键字中除初始转移状态的值之外的其他比特段的转移状态的值不相等。
关键字的初始转移状态及关键字中各比特段的转移状态如图2所示。
步骤102,获取所有关键字,并将关键字中的每一比特段的值写入所述数据库;根据关键字中比特段及其对应的比特段的转移状态的值,将各关键字中各比特段的转移状态的值写入数据库中。
本发明实施例中,建立数据库之后,将所获取的所有关键字及其对应的转移状态的值写入数据库中,本发明实施例的转移状态数据库如图3所示。
步骤103,获取待检测报文的待检测数据,根据所述待检测数据中的比特段在所述数据库中查找所述待检测数据中是否包含关键字,并输出检测结果。
本发明实施例中,获取待检测报文的待检测数据包括:从传输报文中确定出需深度检测的报文;对需深度检测的报文进行分类,并确定各类需深度检测的报文中待检测数据;所述待检测数据为需深度检测的报文的一部分。例如,可以根据报文的格式获取报文的目的MAC地址、源MAC地址,并据此判断TAG的类型,根据TAG类型提取VLAN ID和以太网类型字段,作为待检测数据。本发明实施例中,为进行深度检测的报文确定出待检测的首尾字符,以避免对整个报文进行深度检测,从而提升报文检测的效率。
本发明实施例中,所述根据所述待检测数据中的比特段及其对应的转移状态的值,在所述数据库中查找所述待检测数据中是否包含关键字,包括:
获取所述待检测数据的首比特段;根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,直到查找的交汇节点中的值为初始转移状态的值,确定所述待检测数据中包含有关键字。
在所述首比特段与所述初始转移状态的值查找交汇的节点中的值为初始转移状态的值时,获取所述待检测数据的第二个比特段,根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,直到查找至所述待检测数据的最后一个比特段,确定出所述待检测数据中的所有关键字。
作为另一种实现方式,本发明实施例中,所述根据所述待检测数据中的比特段及其对应的转移状态的值,在所述数据库中查找所述待检测数据中是否包含关键字,包括:获取所述待检测数据的首比特段;根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,且,依次将所述值加一,查找加一后的值与所述待检测数据中对应的后一比特段的交汇节点中的值,直到查找的交汇节点中的值为初始转移状态的值或查找至所述待检测数据的最后一个比特段,确定所述待检测数据中的关键字。
其中,所述依次将所述值加一,查找加一后的值与所述待检测数据中对应的后一比特段的交汇节点中的值,包括:
按关键字中包含的平均比特段个数,获取所述值之后的所述平均比特段个数行与所述待检测数据中对应的比特段所在列的多个交汇节点中的值。
以下通过具体示例,进一步阐明本发明实施例的技术方案的实质。
本发明的目的在于深度报文检测需要对整个报文的所有信息进行比较,然后根据比较的结果对报文进行处理。深度报文检测在数据中心、核心交换机、高性能路由器等是无法满足实际需要的。同时由于深度报文检测的关键字对应的转移状态数据库一般比较大,如果放在芯片内部的存储器上成本过高,而且如果将一个巨大的数据库放在芯片内部存储器上,芯片面积过大,制造良率大大降低。考虑到成本因素,一般把深度报文检测转移状态数据库存放到DDR中。但是由于DDR时序特性,单个读取DDR的数据效率比较低,无法满足高速交换机或核心路由器的需求。本专利通过访问列表控制模块对输入的报文进行过滤,提取出需要检测的报文,并根据分类的结果得到该报文需要检测的起始字节和终止字节,这样可以大大减少深度报文检测装置需要检测的数据量,提高了检测效率。同时对深度报文检测状态进行编码优化,采用预测转移状态技术将关键字平均长度对应的转移状态预先读到cache中,极大地提高了报文检测效率,降低了成本。
本发明实施例对需要匹配的关键字作为转移条件映射成深度报文检测的转移状态。同一个关键字的转移状态必须连续编码。例如需要匹配的关键字为hello,初始转移状态为0,h的转移状态假设为4,那么e的转移状态必须为5,第一个l的转移状态为6,第二个l转移状态必须为7,o为关键字的最后一个字节,所以下一个转移状态为初始转移状态0。然后生成的深度报文检测转移状态数据库并写入到DDR中。
输入的数据报文通过报文解析模块处理获取报文的相关信息,例如源目的MAC地址,源目的IP地址,协议号,以太网类型,VLAN ID等内容。将这些信息进行分类处理,获取报文对应的流分类号。根据流分类号获取报文是否需要进行深度报文检测,深度报文检测起始字节和终止字节,被检测报文是复制报文还是原始报文等信息。
通过检测关键字的起始字节和终止字节,确定被检测报文是复制报文还是原始报文等信息。读取深度报文检测转移状态数据库和报文进行比较,将比较结果输出。
本发明实施例中,需要首先建立待检测的各关键字的转移状态数据库,具体包括以下步骤:
步骤1:将用户配置的待检查关键字映射成转移状态图,初始状态一般设置成0,本发明实施例中,初始状态也可以不是0,但是为了方便起见一般置为0。本发明实施例中,比特段可以选用8比特。读取关键字的起始8比特作为转移的条件,为下一个转移状态分配数值。本发明实施例中,比特段不限定一定是8比特,可以是任意比特长度。下一比特段的转移状态的数值可以随机分配,但是不能是前面已经分配数值。同时要求同一个关键字中比特段的转移状态的数值必须连续递增编码。例如hello规则,如果h对应的转移状态为4,那么e对应的转移状态为5,第一个l对应的转移状态为6,第二个l对应的转移状态为7,o为关键字的最后一个字节,所以下一个转移状态为初始转移状态0,参见图1所示的示例。图中还示出了work和secret两条关键字的转移状态图。
步骤2:将步骤1生成的转移状态图映射成转移状态数据库。将初始状态和待检测关键字的第一个八比特字节作为地址,写入的内容为下一个转移状态S1和其对应的属性,然后将转移状态S1和被检查关键字的第二个八比特字节作为地址写入下一个转移状态和其对应的属性,以此类推,一直读到被检查关键字结束为止。待检查关键字对应的最后转移状态为初始转移状态和对应的规则编号。如图2所示,剖面线表格为hello关键字在转移状态数据库中的内容,沙点表格为work关键字在转移状态数据库中的内容,双格线表格为secret关键字在转移状态数据库中的内容。
步骤3,将上述生成的转移状态数据库由CPU写入到DDR中。
本发明实施例中,深度报文检测过程包括以下步骤:
步骤1:报文解析模块接收从外部接口输入的报文,然后根据报文的格式提取目的MAC地址,源MAC地址,判断TAG的类型,根据TAG类型提取VLAN ID和以太网类型字段等。
步骤2:根据步骤1得到的以太网类型字段判断报文是否是IPv4报文,IPv6报文还是MPLS报文等,然后根据解析到的报文类型提取对应的字段。例如IP报文提取目的IP地址,源IP地址,IP协议号,IP TTL,IP DSCP等;如果是MPLS报文则提取各层标签,标签对应的优先级和标签对应的TTL值。
步骤3:根据步骤1和步骤2报文解析结果和获得报文相关信息送给访问控制列表模块。访问控制列表模块根据这些信息和用户配置的访问控制列表规则进行比较,对输入的报文进行分类,并为每一类报文分配一个流分类号。
步骤4:根据步骤3获取的流分类号访问流属性表获取对应的流的属性,属性表里包括但是不限于是否需要做报文深度检测,报文深度检测的起始字节,深度报文检测的终止字节,送检测的报文是原始报文还是复制报文,同时还有其他和深度报文检测无关的信息,例如流的QoS,颜色信息,优先级以及限速信息等。然后将深度报文检测相关的信息附加在原始数据报文的报文前面送给深度报文检测模块,其送给深度报文检测模块的报文格式如图4所示。
步骤5:深度报文检测模块根据深度报文检测起始字节位置开始取出报文的第一个字节W1和转移状态初始状态S0作为访问DDR的地址。报文的字节作为访问DDR地址的低位,初始转移状态S0作为访问DDR地址的高位,该地址为{S0,W1}。用这个地址读取存储在DDR内部转移状态数据库获取下一个转移状态S1。同时将S0对应的256个数据预读到Cache中,也就是图2表格状态0对应的所有列都读到cache中。判断转移状态S1是否和初始转移状态S0相等,如果相等执行步骤6。由于关键字对应的转移状态是连续编码,所以可以预见S2的数值为S1+1,S3的数值为S2+1。如果转移状态S1和初始转移状态S0不相等则将转移状态S1及后面(L-1)个转移状态在转移状态数据库中对应的行的所有列数据都读入到Cache中,其中L为待查找关键字的平均长度。从图2可以看出每个转移状态对应了256列数据,所以一共读取了256×L个转移状态数据。
步骤6:将转移状态S1作为访问DDR的地址高位,将读取需要检测报文第二个字节W2作为访问DDR地址低位,则地址表示为{S1,W2}。用该地址访问Cache读取对应的转移状态S2。如果在Cache中读取到了S2则表示读取成功,如果在Cahe中没有查找到S2则用该地址{S1,W2}去访问DDR获取到转移状态S2,因为关键字所对应的下一个转移状态都是连续编码,所以预测下一个转移状态S3为S2+1,读取S3及后面(L-1)个转移状态对应所有列的数据都读到Cache中。
步骤7:依次按照步骤6描述从报文起始字节逐个字节搜索下去,一直到报文终止字节为止或匹配到待查找关键字后就结束查找,至于是一直搜索到终止字节还是匹配到待查找关键字就结束寄存器可配置。最后将匹配的关键字对应的编号作为结果上报给CPU或携带在报文的头部输出。输出报文如图5所示。
步骤5,步骤6和步骤7描述的是一个深度报文检测引擎的工作过程。深度报文检测处理一个报文需要消耗多个时钟周期,一个检测引擎一般是不能满足数据中心或核心交换机的需要,通常需要多个引擎并行完成报文的检测工作,具体需要的引擎数量和需要检测的流量及芯片的运行频率有关。但是每个检测引擎的工作过程如步骤5,步骤6和步骤7所描述的过程。
为了更好的说明步骤5,步骤6和步骤7的工作过程,现在用一个例子来说明深度报文检测引擎是工作过程。假定输入的报文为kjkloworkcef,待查找关键字为work,初始转移状态为0,深度报文检测起始字节为第4个字节,终止字节为第11个字节,关键字的平均长度为5。
第一步,深度报文检测模块先取报文第4个字节l,和初始转移状态组合成{0,l}作为DDR的地址读取下一个转移状态S1为0,同时将初始转移状态S0为0整行都读进cache中。
第二步,取第一步获得的转移状态S1和报文第5个字节o作为地址{0,o}直接从Cache中读取下一个转移状态S2为0。由于在Cache中能够找到对应的转移状态并且S2和初始状态相等,所以不需要去读取DDR内部转移状态数据库。
第三步,取第二步获得的转移状态S2和报文第6个字节w作为地址{0,w}直接从Cache中读取下一个转移状态S3为10。同样在Cache中能够找到对应的转移状态,但是转移状态S3的值和初始状态S0不相等。所以将S3及S3后面对应的4个转移状态的数据都读到Cache中。及把表格第10行到第14行的数据都读入到Cache中。
第四步,取第三步获取的转移状态S3和报文第7个字节o作为地址{10,o}直接从Cache中读取下一个转移状态S4为11。
第五步,取第四步获取的转移状态S4和报文第8个字节r作为地址{11,r}直接从Cache中读取下一个转移状态S5为12。
第六步,取第五步获取的转移状态S5和报文第9个字节k作为地址{12,k}直接从Cache中读取下一个转移状态S6为0。这个时候可以获取work关键字的规则编号。
第七步,取第六步获取的转移状态S6和报文第10个字节c作为地址{0,c}直接从Cache中读取下一个转移状态S7为0。
第八步,取第七步获取的转移状态S7和报文第11个字节e作为地址{0,e}直接从Cache中读取下一个转移状态S8为0。查找到这里已经读取了深度报文检测终止位置了,整个查找过程结束,查找匹配的关键字work,并获取了work对应的规则编号。
图6为本发明实施例的报文检测装置的组成结构示意图,如图6所示,本发明实施例的报文检测装置包括建立单元60、设置单元61、写入单元62、查找单元63和输出单元64,其中:
建立单元60,用于建立关键字比特段查找的转移状态数据库,所述移动转移状态数据库中设置有包含所有关键字的比特段行及为比特段设置的转移状态的值列,每一关键字中的比特段所在的列与所述比特段的前一比特段的转移状态的值所在的行的交汇节点,写入有所述比特段下一比特段的转移状态的值,最后一个比特段所在的列与倒数第二个比特段的转移状态的值所在的行的交汇节点,写入关键字的初始转移状态的值;
设置单元61,用于为待检测关键字中的每一比特段设置转移状态,且每一关键字的初始转移状态的值均相等;每一关键字中首比特段至最后一个比特段的转移状态值连续,且每一关键字中除初始转移状态的值之外的其他比特段的转移状态的值不相等;
写入单元62,用于获取所有关键字,并将关键字中的每一比特段的转移状态的值写入所述数据库;
查找单元63,用于获取待检测报文的待检测数据,根据所述待检测数据中的比特段在所述数据库中查找所述待检测数据中是否包含关键字;
输出单元64,用于输出检测结果。
本发明实施例中,所述查找单元63,还用于从传输报文中确定出需深度检测的报文;对需深度检测的报文进行分类,并确定各类需深度检测的报文中待检测数据;其中,所述待检测数据为需深度检测的报文的一部分。通过在待检测报文中确定出待深度检测的数据段,这样不必对整个报文进行深度检测,从而提升了深度检测的效率。
本发明实施例中,所述查找单元63,还用于获取所述待检测数据的首比特段;根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,直到查找的交汇节点中的值为初始转移状态的值,确定所述待检测数据中包含有关键字。
本发明实施例中,所述查找单元63,在所述首比特段与所述初始转移状态的值查找交汇的节点中的值为初始转移状态的值时,还用于获取所述待检测数据的第二个比特段,根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,直到查找至所述待检测数据的最后一个比特段,确定出所述待检测数据中的所有关键字。
或者,本发明实施例中,所述查找单元63,还用于获取所述待检测数据的首比特段;根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,且,依次将所述值加一,查找加一后的值与所述待检测数据中对应的后一比特段的交汇节点中的值,直到查找的交汇节点中的值为初始转移状态的值或查找至所述待检测数据的最后一个比特段,确定所述待检测数据中的关键字。上述查找单元63,还用于按关键字中包含的平均比特段个数,获取所述值之后的所述平均比特段个数行与所述待检测数据中对应的比特段所在列的多个交汇节点中的值。
本领域技术人员应当理解,本发明实施例的报文检测装置中各处理单元的功能,可参照前述实施例的报文检测方法的相关描述而理解,本发明实施例的报文检测装置中的各处理单元,可通过实现本发明实施例所述的功能的模拟电路而实现,也可以通过执行本发明实施例所述的功能的软件在智能设备上的运行而实现。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过应用指令相关的硬件来完成,前述的应用可以存储于一计算机可读取存储介质中,该应用在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储应用代码的介质。
或者,本发明实施例上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储应用代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

Claims (14)

1.一种报文检测方法,其特征在于,建立关键字比特段查找的转移状态数据库,所述方法包括:
为待检测关键字中的每一比特段设置转移状态,且每一关键字的初始转移状态的值均相等;每一关键字中首比特段至最后一个比特段的转移状态值连续;且每一关键字中除初始转移状态的值之外的其他比特段的转移状态的值不相等;
获取所有关键字,并将关键字中的每一比特段的转移状态的值写入所述数据库;
获取待检测报文的待检测数据,根据所述待检测数据中的比特段在所述数据库中查找所述待检测数据中是否包含关键字,并输出检测结果。
2.根据权利要求1所述的方法,其特征在于,所述转移状态数据库中设置有包含所有关键字的比特段行及为比特段设置的转移状态的值列,每一关键字中的比特段所在的列与所述比特段的前一比特段的转移状态的值所在的行的交汇节点,写入有所述比特段下一比特段的转移状态的值,最后一个比特段所在的列与倒数第二个比特段的转移状态的值所在的行的交汇节点,写入关键字的初始转移状态的值。
3.根据权利要求1所述的方法,其特征在于,获取待检测报文的待检测数据,包括:
从传输报文中确定出需深度检测的报文;
对需深度检测的报文进行分类,并确定各类需深度检测的报文中待检测数据;所述待检测数据为需深度检测的报文的一部分。
4.根据权利要求1所述的方法,其特征在于,所述根据所述待检测数据中的比特段在所述数据库中查找所述待检测数据中是否包含关键字,包括:
获取所述待检测数据的首比特段;
根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;
确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,直到查找的交汇节点中的值为初始转移状态的值,确定所述待检测数据中包含有关键字。
5.根据权利要求4所述的方法,其特征在于,所述首比特段与所述初始转移状态的值查找交汇的节点中的值为初始转移状态的值时,所述方法还包括:
获取所述待检测数据的第二个比特段,根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,直到查找至所述待检测数据的最后一个比特段,确定出所述待检测数据中的所有关键字。
6.根据权利要求1所述的方法,其特征在于,所述根据所述待检测数据中的比特段在所述数据库中查找所述待检测数据中是否包含关键字,包括:
获取所述待检测数据的首比特段;
根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;
确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,且,依次将所述值加一,查找加一后的值与所述待检测数据中对应的后一比特段的交汇节点中的值,直到查找的交汇节点中的值为初始转移状态的值或查找至所述待检测数据的最后一个比特段,确定所述待检测数据中的关键字。
7.根据权利要求6所述的方法,其特征在于,所述依次将所述值加一,查找加一后的值与所述待检测数据中对应的后一比特段的交汇节点中的值,包括:
按关键字中包含的平均比特段个数,获取所述值之后的所述平均比特段个数行与所述待检测数据中对应的比特段所在列的多个交汇节点中的值。
8.一种报文检测装置,其特征在于,所述装置包括:建立单元、设置单元、写入单元、查找单元和输出单元,其中:
建立单元,用于建立关键字比特段查找的转移状态数据库;
设置单元,用于为待检测关键字中的每一比特段设置转移状态,且每一关键字的初始转移状态的值均相等;每一关键字中首比特段至最后一个比特段的转移状态值连续,且每一关键字中除初始转移状态的值之外的其他比特段的转移状态的值不相等;
写入单元,用于获取所有关键字,并将关键字中的每一比特段的转移状态的值写入所述数据库;
查找单元,用于获取待检测报文的待检测数据,根据所述待检测数据中的比特段在所述数据库中查找所述待检测数据中是否包含关键字;
输出单元,用于输出检测结果。
9.根据权利要求8所述的装置,其特征在于,所述转移状态数据库中设置有包含所有关键字的比特段行及为比特段设置的转移状态的值列,每一关键字中的比特段所在的列与所述比特段的前一比特段的转移状态的值所在的行的交汇节点,写入有所述比特段下一比特段的转移状态的值,最后一个比特段所在的列与倒数第二个比特段的转移状态的值所在的行的交汇节点,写入关键字的初始转移状态的值。
10.根据权利要求8所述的装置,其特征在于,所述查找单元,还用于从传输报文中确定出需深度检测的报文;对需深度检测的报文进行分类,并确定各类需深度检测的报文中待检测数据;其中,所述待检测数据为需深度检测的报文的一部分。
11.根据权利要求8所述的装置,其特征在于,所述查找单元,还用于获取所述待检测数据的首比特段;根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,直到查找的交汇节点中的值为初始转移状态的值,确定所述待检测数据中包含有关键字。
12.根据权利要求10所述的装置,其特征在于,所述查找单元,在所述首比特段与所述初始转移状态的值查找交汇的节点中的值为初始转移状态的值时,还用于获取所述待检测数据的第二个比特段,根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,直到查找至所述待检测数据的最后一个比特段,确定出所述待检测数据中的所有关键字。
13.根据权利要求8所述的装置,其特征在于,所述查找单元,还用于获取所述待检测数据的首比特段;根据所述首比特段与所述初始转移状态的值查找交汇的节点,并获取节点中的值;确定所述值是否为初始转移状态的值,所述值为非初始转移状态的值时,根据所述值所在的行及关键字的第二个比特段所在的列继续查找交汇的节点,且,依次将所述值加一,查找加一后的值与所述待检测数据中对应的后一比特段的交汇节点中的值,直到查找的交汇节点中的值为初始转移状态的值或查找至所述待检测数据的最后一个比特段,确定所述待检测数据中的关键字。
14.根据权利要求13所述的装置,其特征在于,所述查找单元,还用于按关键字中包含的平均比特段个数,获取所述值之后的所述平均比特段个数行与所述待检测数据中对应的比特段所在列的多个交汇节点中的值。
CN201410827248.5A 2014-12-25 2014-12-25 报文检测方法及装置 Active CN105791124B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410827248.5A CN105791124B (zh) 2014-12-25 2014-12-25 报文检测方法及装置
PCT/CN2015/081205 WO2016101552A1 (zh) 2014-12-25 2015-06-10 报文检测方法及装置、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410827248.5A CN105791124B (zh) 2014-12-25 2014-12-25 报文检测方法及装置

Publications (2)

Publication Number Publication Date
CN105791124A CN105791124A (zh) 2016-07-20
CN105791124B true CN105791124B (zh) 2019-04-30

Family

ID=56149117

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410827248.5A Active CN105791124B (zh) 2014-12-25 2014-12-25 报文检测方法及装置

Country Status (2)

Country Link
CN (1) CN105791124B (zh)
WO (1) WO2016101552A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110995694B (zh) * 2019-11-28 2021-10-12 新华三半导体技术有限公司 网络报文检测方法、装置、网络安全设备及存储介质
CN112187639B (zh) * 2020-08-31 2021-11-19 西安交通大学 一种基于流属性的数据包路径编码的生成方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1909502A (zh) * 2005-08-01 2007-02-07 中兴通讯股份有限公司 数据流报文头快速定位的装置和方法
CN101551803A (zh) * 2008-03-31 2009-10-07 华为技术有限公司 一种建立模式匹配状态机、模式识别的方法和装置
CN103093147A (zh) * 2011-11-02 2013-05-08 中国移动通信集团广东有限公司 一种识别信息的方法和电子装置
CN104077358A (zh) * 2014-06-03 2014-10-01 南京大学 用于海量短文本信息发现的自动机方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5647919B2 (ja) * 2011-03-07 2015-01-07 株式会社Nttドコモ 文字認識装置、文字認識方法、文字認識システム、および文字認識プログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1909502A (zh) * 2005-08-01 2007-02-07 中兴通讯股份有限公司 数据流报文头快速定位的装置和方法
CN101551803A (zh) * 2008-03-31 2009-10-07 华为技术有限公司 一种建立模式匹配状态机、模式识别的方法和装置
CN103093147A (zh) * 2011-11-02 2013-05-08 中国移动通信集团广东有限公司 一种识别信息的方法和电子装置
CN104077358A (zh) * 2014-06-03 2014-10-01 南京大学 用于海量短文本信息发现的自动机方法

Also Published As

Publication number Publication date
WO2016101552A1 (zh) 2016-06-30
CN105791124A (zh) 2016-07-20

Similar Documents

Publication Publication Date Title
CN108370352B (zh) 使用网络处理器的高速灵活分组分类
CN105224692B (zh) 支持多核处理器的sdn多级流表并行查找的系统及方法
US10135734B1 (en) Pipelined evaluations for algorithmic forwarding route lookup
US7765183B2 (en) Hierarchical tree of deterministic finite automata
Meiners et al. Split: Optimizing space, power, and throughput for TCAM-based classification
CN104579940B (zh) 查找访问控制列表的方法及装置
US10397116B1 (en) Access control based on range-matching
CN102301342A (zh) 正则表达式匹配方法和系统及查找装置
JP2003196295A (ja) ツリー型知識ベース検索のルックアップ・パフォーマンスを向上させる方法
US9992094B1 (en) Adaptive forwarding tables
CN106713144B (zh) 一种报文出口信息的读写方法及转发引擎
CN109271793A (zh) 物联网云平台设备类别识别方法及系统
CN104539502B (zh) 一种自定义添加modbus设备的方法
WO2016201930A1 (zh) 流分类方法及装置、存储介质
CN104348727A (zh) OpenFlow网络中的流表表项处理方法及设备
US9485179B2 (en) Apparatus and method for scalable and flexible table search in a network switch
CN102255788A (zh) 报文分类决策构建系统及方法、报文分类系统及方法
CN101242362A (zh) 查找键值生成装置及方法
CN105681199B (zh) 一种车载总线中报文数据的处理方法及装置
CN109921995A (zh) 一种配置地址表的方法、fpga和应用该fpga的网络设备
US20180197110A1 (en) Metrics to Train Machine Learning Predictor for NoC Construction
CN106487769B (zh) 一种访问控制列表acl的实现方法及装置
CN105791124B (zh) 报文检测方法及装置
CN103414603B (zh) 基于Hash折叠方法的Ipv6深度包检测方法
US20180198687A1 (en) Infrastructure to Apply Machine Learning for NoC Construction

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
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20160720

Assignee: Xi'an Chris Semiconductor Technology Co. Ltd.

Assignor: SHENZHEN ZTE MICROELECTRONICS TECHNOLOGY CO., LTD.

Contract record no.: 2019440020036

Denomination of invention: Deep packet inspection method and device

Granted publication date: 20190430

License type: Common License

Record date: 20190619

EE01 Entry into force of recordation of patent licensing contract