一种深度报文检测方法、设备及协处理器的制造方法

文档序号:8003578阅读:171来源:国知局
一种深度报文检测方法、设备及协处理器的制造方法
【专利摘要】本发明实施例提供一种深度报文检测方法、设备及协处理器,该深度报文检测方法包括:协处理器的收发模块接收通用处理器发送的原始数据包,将原始数据包发送给协处理器的处理器核;处理器核调用协处理器的子协处理器对原始数据包进行应用层解析,得到应用层解析结果;处理器核将解析结果发送给通用处理器,以使通用处理器根据解析结果对原始数据包进行处理。本发明实施例提供的深度报文检测方法及装置,降低了通用处理器资源的占用,提高运行速度。
【专利说明】一种深度报文检测方法、设备及协处理器

【技术领域】
[0001]本发明实施例涉及计算机技术,尤其涉及一种深度报文检测方法、设备及协处理器。

【背景技术】
[0002]深度报文检测(Deep Packet Inspect1n,简称DPI)技术作为网络入侵检测及应用层协议识别的核心技术,在网络与信息安全领域中发挥着日益重要的作用。DPI技术通过特征匹配算法实现对数据包的深入分析,以获得数据包的应用信息,从而实现网络优化、应用流量控制和安全检测等业务。
[0003]现有技术中,通常通过通用处理器来实现DPI业务,通用处理器中集成有匹配器,通用处理器由软件逻辑驱动匹配器来实现特征匹配。由于通用处理器往往不是专门为DPI业务而设计的,因此,为了保证通用性要求,其集成的匹配器一般也只支持通用的匹配算法,比如正则表达式匹配算法,而不能支持专门为DPI业务所设计的匹配算法,从而导致匹配性能不佳,成为业务处理的瓶颈。而且,所有的DPI业务都在通用处理器中实现,由于通用处理器资源有限,限制了 DPI业务的性能。如图1所示,现有技术中DPI业务的另一种实现方式是是把DPI业务逻辑固化到硬件中去,此硬件实体可以是FPGA(Field-Programmable Gate Array,现场可编程门阵列),或者ASIC(Applicat1n SpecificIntegrated Circuit,专用集成电路)。例如,某设备的DPI业务逻辑分三个步骤:一、端点表匹配;二、IP端口识别;三、应用层报文文本特征匹配;四、复杂的解码后识别。可以把前三个步骤都固化到硬件逻辑中去实现,而步骤四逻辑很复杂,无法通过硬件逻辑来实现,则遗留给通用处理器来完成。可以看出,通过硬件实现逻辑固化,扩展性差:DPI业务逻辑(如上例的三个步骤变成四个步骤或者调整顺序)发生变化时,都需要重新编写硬件代码、仿真再发布到现网设备中。难以快速适应网络流量变化;而且,由于DPI业务逻辑的多个步骤分别由通用处理器用软件实现和硬件加速芯片逻辑实现,不可避免的多次通用处理器与硬件加速芯片之间的交互,导致DPI处理的时延很大。


【发明内容】

[0004]本发明实施例提供一种深度报文检测方法、设备及协处理器,以提高DPI的性能和扩展性。
[0005]第一方面,本发明实施例提供一种深度报文检测方法,包括:
[0006]协处理器的收发模块接收通用处理器发送的原始数据包,将所述原始数据包发送给所述协处理器的处理器核;所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,所述应用层解析结果用于表示所述原始数据包的应用层信息;所述处理器核将所述应用层解析结果发送给所述通用处理器,以使所述通用处理器根据所述应用层解析结果对所述原始数据包进行处理。
[0007]在第一种可能的实现方式中,在所述协处理器的收发模块接收所述通用处理器发送的原始数据包之后,在将所述原始数据包发送给所述协处理器的处理器核之前,所述方法还包括:对所述原始数据包进行流处理;所述将所述原始数据包发送给所述处理器核,包括:将流处理后的数据包发送给所述处理器核;所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,包括:所述处理器核调用所述协处理器的至少一个子协处理器对所述流处理后的数据包应用层解析,得到所述原始数据包的应用层解析结果。
[0008]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述收发模块的流处理子模块对所述原始数据包进行流处理,包括:所述流处理子模块对所述原始数据包进行IP分片报文重组处理和TCP乱序报文重排处理。
[0009]结合第一方面,在第三种可能的实现方式中,所述协处理器中设置有至少两个处理器核;所述将所述原始数据包发送给所述协处理器的处理器核,包括:
[0010]根据每个所述处理器核的负荷情况从所述至少两个处理器核中选择一个处理器核,将所述原始数据包发送给被选择的处理器核。
[0011]结合第一方面,在第四种可能的实现方式中,所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,具体包括:
[0012]所述处理器核通过所述协处理器的交换总线模块调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析。
[0013]结合第一方面,在第五种可能的实现方式中,所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,包括:
[0014]所述处理器核调用所述协处理器包括的协议识别子协处理器,所述协议识别子协处理器在所述处理器核的调用下对所述原始数据包进行端点查找,得到端点查找结果,将所述端点查找结果返回所述处理器核,所述处理器核至少根据所述端点查找结果确定所述原始数据包的应用层协议类型,并将得到的所述应用层协议类型作为所述原始数据包的应用层解析结果。
[0015]结合第一方面,在第六种可能的实现方式中,所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,包括:所述处理器核调用所述协处理器包括的协议识别子协处理器,所述协议识别子协处理器在所述处理器核的调用下,调用所述协处理器包括的字符串匹配引擎,所述字符串匹配引擎在所述协议识别子协处理器的调用下对所述原始数据包进行字符串匹配,得到特征匹配结果,将所述特征匹配结果返回所述处理器核,所述处理器核至少根据所述特征匹配结果确定所述原始数据包的应用层协议类型,,并将所述应用层协议类型作为所述原始数据包的应用层解析结果。
[0016]结合第一方面,在第七种可能的实现方式中,所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,包括:
[0017]所述处理器核调用所述协处理器包括的正则表达式匹配引擎,所述正则表达式匹配引擎在所述处理器核的调用下对所述原始数据包进行正则匹配,得到特征匹配结果,将所述特征匹配结果返回所述处理器核,所述处理器核至少根据所述特征匹配结果确定所述原始数据包的应用层协议类型,并将得到的所述应用层协议类型作为所述原始数据包的应用层解析结果。
[0018]结合第一方面,在第八种可能的实现方式中,所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,包括:
[0019]所述处理器核调用所述协处理器包括的协议识别子协处理器对所述原始数据包的应用层协议进行识别,得到所述原始数据包的应用层协议类型;
[0020]所述处理器核调用所述协处理器包括的协议解析子协处理器对所述原始数据包进行协议解析,得到解析结果,并将所述解析结果和所述应用层协议类型作为所述原始数据包的应用层解析结果。
[0021]结合第一方面的第六种可能的实现方式,在第九种可能的实现方式中,所述字符串匹配引擎在所述协议识别子协处理器的调用下对所述原始数据包进行字符串匹配,得到特征匹配结果,包括:
[0022]所述字符串匹配引擎在所述协议识别子协处理器的调用下,从第一内存中读取字符串匹配算法状态表,根据所述字符串匹配算法状态表对所述流处理后的数据包进行字符串匹配,得到特征匹配结果。
[0023]结合第一方面或第一方面的第一至第九任一种可能的实现方式,在第十一种可能的实现方式中,所述处理器核将所述应用层解析结果发送给所述通用处理器,包括:所述处理器核将所述应用层解析结果发送给所述协处理器包括的结果上报处理模块;所述结果上报处理模块将所述应用层解析结果按照预设格式进行封装,将封装后的应用层解析结果发送给所述通用处理器。
[0024]第二方面,本发明实施例提供一种深度报文检测方法,包括:
[0025]通用处理器将原始数据包发送给协处理器;所述通用处理器接收所述协处理器发送的所述原始数据包的应用层解析结果,其中,所述应用层解析结果是由所述协处理器的处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析得到的;所述应用层解析结果用于表示所述原始数据包的应用层信息;所述通用处理器至少根据所述应用层解析结果对所述原始数据包进行处理。
[0026]在第一种可能的实现方式中,所述通用处理器至少根据所述应用层解析结果对所述原始数据包进行处理,包括:所述通用处理器若根据所述应用层解析结果确定所述原始数据包是否为加密数据包,若是,则对所述原始数据包进行解密处理。
[0027]在第二种可能的实现方式中,所述通用处理器至少根据所述应用层解析结果对所述原始数据包进行处理,包括:
[0028]所述通用处理器根据所述应用层解析结果确定所述原始数据包所属的流的业务类型,根据所述业务类型对所述流进行流量统计、计费或传输加速。
[0029]在第三种可能的实现方式中,所述原始数据包的应用层解析结果包括:所述原始数据包的应用层协议类型和URL匹配结果;其中,所述原始数据包的应用层协议类型是由所述协处理的处理器核调用所述协处理器的协议识别子协处理器对所述原始数据包进行识别后得到的;所述URL匹配结果是由所述协处理器的处理器核在确定所述原始数据包的应用层协议类型为超文本传输协议之后,调用所述协处理器的统一资源定位符URL匹配引擎对所述原始数据包进行URL的匹配得到的;所述通用处理器至少根据所述应用层解析结果对所述原始数据包进行处理,包括:所述通用处理器根据所述应用层解析结果和所述URL匹配结果判断所述原始数据包所属的流是否用于访问被限网站,若是,则对所述流进行阻断处理。
[0030]第三方面,本发明实施例提供一种协处理器,包括:收发模块、子协处理器和处理器核;
[0031]所述收发模块,用于接收通用处理器发送的原始数据包,将所述原始数据包发送给所述处理器核;
[0032]所述处理器核,用于调用所述子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,所述应用层解析结果用于表示所述原始数据包的应用层信息;以及将所述应用层解析结果发送给所述通用处理器,以使所述通用处理器至少根据所述应用层解析结果对所述原始数据包进行处理;
[0033]所述子协处理器,用于在所述处理器核的调用下对所述原始数据包进行应用层解析,得到所述原始数据包的应用层信息。
[0034]在第一种可能的实现方式中,所述收发模块包括:
[0035]接收单元,用于接收所述通用处理器发送的原始数据包;
[0036]流处理单元,用于在所述接收单元接收到所述通用处理器发送的原始数据包之后,对所述原始数据包进行流处理;
[0037]分发单元,用于将流处理后的数据包发送给所述处理器核;
[0038]所述处理器核具体用于调用所述子协处理器对所述流处理后的数据包进行应用层解析。
[0039]结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述流处理单元具体用于对所述原始数据包进行IP分片报文重组处理和TCP乱序报文重排处理。
[0040]结合第三方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述处理器核的数量为至少两个;
[0041]所述分发单元具体用于,确定所述至少两个处理器核中每个处理器核的负荷情况,根据每个所述处理器核的负荷情况从所述至少两个处理器核中选择一个处理器核,将所述流处理后的数据包发送给被选择的处理器核。
[0042]结合第三方面的,或第三方面的第一、第二或第三种可能的实现方式,在第四种可能的实现方式中,所述协处理器还包括:交换总线模块;
[0043]所述处理器核具体用于通过所述协处理器的交换总线模块调用所述子协处理器对所述原始数据包进行应用层解析。
[0044]结合第三方面,在第五种可能的实现方式中,所述子协处理器具体用于,在所述处理器核的调用下对所述原始数据包进行端点查找,得到端点查找结果,将所述端点查找结果返回所述处理器核;所述处理器核具体用于,至少根据所述端点查找结果确定所述原始数据包的应用层协议类型,并将确定的所述应用层协议类型作为所述原始数据包的应用层解析结果发送给所述通用处理器。
[0045]结合第三方面,在第六种可能的实现方式中,所述子协处理器包括:协议识别子协处理器和字符串匹配引擎;所述协议识别子协处理器具体用于:在所述处理器核的调用下,调用所述字符串匹配引擎,所述字符串匹配引擎在所述协议识别子协处理器的调用下对所述原始数据包进行字符串匹配,得到特征匹配结果,将所述特征匹配结果返回所述处理器核;所述处理器核具体用于至少根据所述特征匹配结果确定所述原始数据包的应用层协议类型,并将确定的所述应用层协议类型作为所述原始数据包的应用层解析结果发送给所述通用处理器。
[0046]结合第三方面,在第七种可能的实现方式中,所述子协处理器具体为:正则表达式匹配引擎;所述正则表达式匹配引擎用于在所述处理器核的调用下对所述原始数据包进行正则匹配,得到特征匹配结果,将所述特征匹配结果返回所述处理器核;所述处理器核具体用于至少根据所述特征匹配结果确定所述原始数据包的应用层协议类型,并将确定的所述应用层协议类型作为所述原始数据包的应用层解析结果发送给所述通用处理器。
[0047]结合第三方面的第六种可能的实现方式,在第八种可能的实现方式中,所述子协处理器还包括:协议解析子协处理器;所述协议解析子协处理器用于对所述原始数据包进行协议解析,得到解析结果,将所述解析结果返回给所述处理器核;所述处理器核还用于将所述解析结果发送给所述通用处理器,以使所述通用处理器根据所述应用层协议类型和所述解析结果对所述原始数据包进行处理。
[0048]结合第三方面的第六种可能的实现方式,在第九种可能的实现方式中,所述字符串匹配引擎具体用于在所述协议识别子协处理器的调用下,从第一内存中读取字符串匹配算法状态表,根据所述字符串匹配算法状态表对所述原始数据包进行字符串匹配,得到特征匹配结果,将所述特征匹配结果返回所述处理器核其中,所述第一内存用于存储字符串匹配算法状态表。
[0049]结合第三方面的第九种可能的实现方式,在第十种可能的实现方式中,所述处理器核具体用于从第二内存中读取规则条件数据结构,根据所述特征匹配结果和所述规则条件数据结构确定所述应用层协议类型,其中,所述第二内存用于规则条件数据结构。
[0050]第四方面,本发明实施例提供一种通用处理器,包括:
[0051]发送模块,用于将原始数据包发送给协处理器;接收模块,用于接收所述协处理器发送的所述原始数据包的的应用层解析结果,其中,所述应用层解析结果是由所述协处理器的处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析得到的;所述应用层解析结果用于表示所述原始数据包的应用层信息;处理模块,用于至少根据所述应用层解析结果对所述原始数据包进行处理。
[0052]在第一种可能的实现方式中,所述处理模块,具体用于若根据所述应用层解析结果识别所述原始数据包为加密数据包,则对所述原始数据包进行解密处理。
[0053]在第二种可能的实现方式中,其特征在于,
[0054]所述原始数据包的应用层解析结果包括:所述原始数据包的应用层协议类型和URL匹配结果,其中,所述URL匹配结果是由所述协处理器的处理器核在确定所述原始数据包的应用层协议类型为超文本传输协议时,调用所述协处理器的统一资源定位符URL匹配引擎对所述原始数据包进行URL的匹配后得到的;
[0055]所述处理模块具体用于根据所述原始数据包的应用层协议类型和所述URL匹配结果判断所述原始数据包所属的流是否用于访问被限网站,若是,则对所述流进行阻断处理。
[0056]第五方面,本发明实施例提供一种深度报文检测设备,包括:本发明任意实施例提供的协处理器和本发明任意实施例提供的通用处理器。
[0057]在第一种可能的实现方式中,所述通用处理器的数量为一个。
[0058]在第二种可能的实现方式中,所述通用处理器的数量为至少两个;所述深度报文检测装置还包括网卡和负载均衡装置;所述网卡用于从网络接收数据包,将所述数据包发送给所述负载均衡装置;所述负载均衡装置用于获取所述至少两个通用处理器中每个所述通用处理器的负载情况,根据每个所述通用处理器的负载情况选在一个通用处理器,将所述数据包发送给选择的通用处理器。
[0059]由上述技术方案可知,本发明实施例提供的深度报文检测方法、设备及协处理器,通过通用处理器和协处理器配合实现DPI,协处理器中的子协处理器可以专门为DPI业务而设计,将DPI功能从通用处理器中卸载,降低了通用处理器资源的占用,以使得通用处理器可以处理其他增值业务。而且协处理器中设置有处理器核,子协处理器在处理器核的调用下运行,可以保留中间状态信息,处理器核与子协处理器的交互也都是芯片内交互,避免了协处理器与通用处理器之间的频繁交互,可以降低处理时延。

【专利附图】

【附图说明】
[0060]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0061]图1为本发明实施例提供的现有技术的深度报文检测方法示意图;
[0062]图2为本发明实施例提供的一种深度报文检测架构示意图;
[0063]图3为本发明实施例提供的一种深度报文检测应用场景示意图;
[0064]图4为本发明实施例提供的第一种深度报文检测方法流程图;
[0065]图5为本发明实施例提供的第二种深度报文检测方法流程图;
[0066]图6为本发明实施例提供的一种深度报文检测方法流程图;
[0067]图7为本发明实施例提供的另一种深度报文检测方法流程图;
[0068]图8为本发明实施例提供的另一种深度报文检测方法流程图;
[0069]图9为本发明实施例提供的第一种协处理器结构示意图;
[0070]图10为本发明实施例提供的第二种协处理器结构示意图;
[0071]图11为本发明实施例提供的通用处理器结构示意图;
[0072]图12为本发明实施例提供的第一种深度报文检测设备的结构示意图;
[0073]图13为本发明实施例提供的第二种深度报文检测设备的结构示意图;
[0074]图14为本发明实施例提供的第三种深度报文检测设备的结构示意图。

【具体实施方式】
[0075]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0076]为了便于本领域技术更好地理解本发明技术方案,先对本发明实施例的深度报文检测(Deep Packet Inspect1n,简称DPI)架构做一个总体介绍,如图2所示:
[0077]本发明实施例将DPI处理任务的功能模块划分为多个层次(典型的是四个层次),层次越高,处理的业务越复杂、通用;层次越低,算法越简单、专用。
[0078]这些层次由两个芯片来实现,分别是通用处理器和DPI协处理器。为了提高硬件加速性能,可以尽可能多的把DPI相关任务交由DPI协处理器来完成。这样通用处理器可以完成更多的运算密集型任务,因为通用处理器对这类任务的性能优化做得更好,重点放在增值业务的处理上面。DPI协处理器则负责实现DPI业务控制层、DPI子业务逻辑层、算法引擎层的逻辑。其中,DPI协处理内部又包含有多个子协处理器,每个子协处理器用于完成特定的DPI子业务,根据DPI子业务复杂度的不同,子协处理器具体可以分为高层级的子协处理器(如图2中的子协处理器A),以及低层级的子协处理器(如图2中的子协处理器B、C、D),其中,低层级的子协处理器具体可以为软件或硬件实现的算法引擎,用于采用特定算法实现一个专用功能,比如字符串匹配引擎、正则表达式匹配引擎等,而与低层级的子协处理器相比,高层级的子协处理器用于执行更为通用的DPI子业务,比如协议识别、解析等。例如,高层级的子协处理器可以为集成了多个子协处理器和/或算法引擎功能的逻辑或物理实体,用于实现更为高级、通用的DPI子功能,且高层级的子协处理器可以调用低层次模块来实现需要的功能,同时,同一层次的子协处理器也可以互相调用来协同完成功能。
[0079]具体地,在一种应用场景中,如图3所示,可以对任务划分成如下层次:
[0080]层次一:运算密集层。负责需要大量运算处理的任务,包括:DPI业务逻辑中的加解密、编解码、复杂逻辑处理;以及其他非DPI业务,如增值业务;策略匹配;报文动作执行等,在本发明实施例中,这一层次的任务由通用处理器来完成。
[0081]层次二:DPI业务控制层。通过在DPI协处理器中放置内核来执行DPI业务控制逻辑,包括,DPI引擎各步骤的先后执行顺序控制、条件规则匹配、跨包处理、保存中间状态等等DPI业务相关的控制逻辑。本发明实施例中,这一层次的任务由DPI协处理器中的处理器核(core )来完成。
[0082]层次三:DPI子业务逻辑层。负责可以固化的DPI特定子业务。例如:应用层协议识别、协议深度解析、数据包行为特征分析模块。本发明实施例中,这一层次的任务由DPI协处理器中的高层级的子协处理器来完成,比如,用于识别数据包的应用层协议类型的协议识别子协处理器,用于对协议进行深度解析的协议解析子协处理器等等。
[0083]层次四:算法引擎层。负责特定为DPI优化的算法引擎任务。例如:通用正则表达式匹配、浮点运算、多模字符串匹配、单模字符串匹配、行为参数运算等等。这一层次的任务由DPI协处理器中的低层级的子协处理器来完成,比如,正则表达式匹配引擎、浮点运算引擎、字符串匹配引擎等等。
[0084]需要特别说明的是,在DPI协处理器内部,即层次二到层次四,需要内部总线或者一个交换总线模块来负责这些层次模块间的消息、数据交互。而层次一与其他层次,即通用处理器与DPI协处理器之间属于芯片间交互,需要采用一些业界已有的标准化总线来进行交互,典型的如PCIE (Personal Computer Interface Express,外设互联扩展)总线。采用什么类型总线,由通用处理器提供的对外接口来确定。
[0085]更优地,除了层次化设计架构之外,本发明实施例还可以进一步为DPI协处理器配备外部内存,以保存DPI中间状态而做到更好的扩展性和性能,这样,当处理到需要保存现场的任务时,不必交由通用处理器完成,DPI协处理器可以卸载更多其处理器资源。另外,配备的外部内存还可以保存DPI处理时需要用到的各种特征字数据结构、算法特定数据结构。这样,DPI协处理器可以直接快速的读取这些数据而不必经由总线通过通用处理器来读取,可以达到更高的处理性能。
[0086]例如,外部内存A保存软核专用的数据结构,包括流表、规则条件,使DPI协处理器能感知流的状态,而不是基于包的处理。外部内存B保存各匹配引擎和子协处理器的数据结构,如DFA (Deterministic Finite Automaton,确定型有限自动机)状态表、单模匹配算法辅助数据、子协处理器的算法数据结构等等。需要说明的是,外部内存A和外部内存B只是是逻辑上的划分,两者可以位于同一片物理内存上。
[0087]基于以上描述的DPI架构,本发明实施例提供一种深度报文检测方法,图4为本发明实施例提供的第一种深度报文检测方法流程图。如图4所示,本实施例提供的深度报文检测方法具体可以应用于网络设备的深度报文检测DPI过程,网络设备可以为如路由器和网关等。网络设备中可以设置有深度报文检测装置,深度报文检测装置包括通用处理器和协处理器,本实施例提供的深度报文检测方法通过协处理器来执行。
[0088]本实施例提供的深度报文检测方法,具体包括:
[0089]步骤A10、协处理器的收发模块接收通用处理器发送的原始数据包,将该原始数据包发送给该协处理器的处理器核;
[0090]步骤A20、该处理器核调用该协处理器的至少一个子协处理器对原始数据包进行应用层解析,得到原始数据包的应用层解析结果;其中,原始数据包的应用层解析结果用于表示该数据包的应用层信息,比如应用层协议类型、数据包所属的业务等等,此处不一一列举;
[0091]步骤A30、该处理器核将原始数据包的应用层解析结果发送给通用处理器,以使通用处理器根据该应用层解析结果对原始数据包进行处理。
[0092]具体地,网络设备需要通过对接收到的流中的数据包进行深入分析以实现网络优化和应用流量控制,网络设备通过网卡将数据包发送给通用处理器,通用处理器把DPI相关任务交由DPI协处理器来完成。
[0093]在本发明实施例中,协处理器可以通过FPGA (Field Programmable Gate Array,现场可编程门阵列)或 ASIC (Applicat1n Specific Integrated Circuit,专用集成电路)来实现,协处理器中部署有一个或多个处理器核,协处理器中还设置有收发模块和多个子协处理器,子协处理器通过硬件描述语言实现,硬件描述语言可以为VHDL(Very-High-Speed Integrated Circuit Hardware Descript1n Language,超高速集成电路硬件描述语言)或Verilog HDL0子协处理器可用于对数据包进行应用协议识别,协议解析等,以提闻业务的处理性能。
[0094]通用处理器将原始数据包发送给协处理器的收发模块,收发模块再将原始数据包分发给协处理器中的处理器核,协处理器的处理器核调用子协处理器对所述原始数据包进行应用层解析,得到解析结果,处理器核将该解析结果返回给通用处理器,通用处理器再根据解析结果对原始数据包进行处理,例如流量统计、加速、限流、阻断和过滤等。通用处理器可以根据解析结果建立流表,流表中记录有多个流表项和处理指令,通用处理器通过流表项对接收到的数据包进行匹配,以确定该数据包所属的流,并进行相应地处理。
[0095]本实施例提供的深度报文检测方法,通用处理器和协处理器配合实现DPI,通过对协处理器进行更细粒度的划分,协处理器中的子协处理器可以专门为DPI业务而设计,这样就将DPI功能从通用处理器中卸载,降低了通用处理器资源的占用,以使得通用处理器可以处理其他增值业务;同时,协处理器中设置有处理器核来进行DPI业务控制,子协处理器在处理器核的调用下运行,大大提高了业务处理的灵活性,而且处理器核与子协处理器的交互也都是芯片内交互,避免了协处理器与通用处理器之间的频繁交互,可以提DPI性倉泛。
[0096]图5为本发明实施例提供的第二种深度报文检测方法流程图。如图5所示,在本实施例的深度报文检测方法,包括:
[0097]步骤A101,协处理器的收发模块接收通用处理器发送的原始数据包;
[0098]步骤A102,对该原始数据包进行流处理;
[0099]具体地,对原始数据包进行流处理,可以包括:对原始数据包进行IP分片报文重组处理和TCP乱序报文重排处理;进一步的,对原始数据包进行流处理还可以包括:对原始数据包进行流报文保证顺序处理。
[0100]步骤A103,将流处理后的数据包发送给协处理器的处理器核;
[0101]在实际应用过程中,可以根据DPI业务的需要设置协处理器中处理器核的数量,即处理器核的数量可以为一个或多个。当协处理器中设置有至少两个处理器核时,所述将原始数据包发送给协处理器的处理器核,具体包括:
[0102]确定协处理的多个处理器核中的每个处理器核的负荷情况,根据负载均衡策略从多个处理器核中选择一个处理器核,将所述原始数据包发送给选择的处理器核。
[0103]具体地,可以对所有处理器核的负荷情况进行监测,并且在数据包的分发过程中根据各个处理器核的负荷情况选择处理器核,将数据包发给处理资源相对空闲的处理器核进行处理。
[0104]步骤A104,处理器核调用协处理器的至少一个子协处理器对原始数据包进行应用层解析,得到原始数据包的应用层解析结果;
[0105]在本实施例中,处理器核具体可以而通过协处理器的交换总线模块来调用至少一个子协处理器对原始数据包进行应用层解析。
[0106]具体地,交换总线模块可以为Switch-Arbiter交换模块,处理器核与其包括的各个子协处理器之间的通信通过该交换总线模块来实现。
[0107]步骤A105,处理器核将原始数据包的应用层解析结果发送给通用处理器,以使通用处理器根据该应用层解析结果对原始数据包进行处理。
[0108]具体地,在一个实施例中,协处理器中还可以设置有结果上报处理模块,处理器核可以将原始数据包的应用层解析结果发送给结果上报处理模块,结果上报处理模块将该应用层解析结果按照预设格式进行封装,将封装后的结果发送给通用处理器,其中,该预设格式例如可以为TLV (Type Length Value)结构,TLV结构是一种带类型、长度和值的通用数据描述格式。
[0109]在本实施例中,可以设置外部内存以供协处理器使用,内存可以包括第一内存和第二内存,第一内存和第二内存可以物理上独立的两个内存,或者第一内存和第二内存也可以为物理上在同一内存上,逻辑上分离。第一内存用于保存子协处理器所需要的数据结构,第二内存用于保存流中间状态数据、端点表数据、端口特征表和规则条件表等DPI业务控制层使用的数据。
[0110]通常采用规则来描述用于防御网络攻击行为的特征或者用于应用协议识别的协议特征,第二内存中的规则条件表用以记录一条或多条规则。规则中通常包含一组特征,这些特征用于描述数据包的细节,如数据包的源/目的地址、源/目的端口、传输协议类型、数据包的负载中包含的某些特殊字符串和数据包是否分片等等。子协处理器对数据包进行分析获得特征匹配结果,处理器核在确定应用层协议类型时,根据特征匹配结果去对应每个规则中的特征,若某个数据包符合某个规则,则该规则对应的应用层协议类型即为该数据包的应用层协议类型。特征的描述可以有多种,例如字符串、正则表达式和行为特征等,针对不同的特征可以通过不同的方式得到特征匹配结果。
[0111]在本实施例中,根据DPI子业务复杂度的不同,协处理内部包含的子协处理器具体可以分为用于执行通用DPI子业务的高层级的子协处理器(如协议识别子协处理器,协议解析子协处理器),以及用于实现专用功能的低层级的子协处理器,比如软件或硬件实现的算法引擎(字符串匹配引擎、正则表达式匹配引擎等),其中,高层级的子协处理器可以调用低层次模块来实现需要的功能,同时,同一层次的子协处理器也可以互相调用来协同完成功能。基于此,根据子协处理器的类型不同,步骤A104的具体实现方式也有所不同:
[0112](I)如果处理器核调用的是高层级的子协处理器,比如用于识别数据包应用层协议类型的协议识别子协处理器,则在一种可能的实施方式中,协议识别子协处理器可以在处理器核的调用下对原始数据包进行端点查找,得到端点查找结果,将该端点查找结果返回处理器核,述处理器核至少根据该端点查找结果确定原始数据包的应用层协议类型,并将得到的应用层协议类型作为所述原始数据包的应用层解析结果;
[0113]具体地,协议识别子协处理器中设置有状态机。如果某一个数据包所在的流的目的IP地址、源IP地址、目的端口和源端口中的某几项能在端点表中成功查找一条或多条记录,则该数据包的应用层协议类型可以直接从端点表中获取,不必需要更多的步骤。例如,某一条端点表记录为:目的IP地址:103.224.1.9,目的端口:443,应用层协议类型:gmail_webmail。如果某一条流的数据包发往该目的IP地址的443端口,贝U可以直接明确DPI处理结果,表明此条流的数据包的应用层协议类型是gmail_webmail。
[0114]在另一种可能的实施方式中,协议识别子协处理器在处理器核的调用下,可以调用低层次的子协处理器,比如字符串匹配引擎来帮助其完成相应的功能,字符串匹配引擎在协议识别子协处理器的调用下对原始数据包进行字符串匹配,得到特征匹配结果,将该特征匹配结果返回处理器核,处理器核至少根据该特征匹配结果确定原始数据包的应用层协议类型,,并将该应用层协议类型作为原始数据包的应用层解析结果。
[0115]具体地,字符串匹配引擎可以为单模字符串匹配引擎,也可以为多模字符串匹配引擎。单模字符串匹配引擎可以采用单模字符串匹配算法,单模字符串匹配算法可以为BM(Boyer Moore)算法。多模字符串匹配引擎可以采用多模字符串匹配算法,多模字符串匹配算法可以为AC (Aho-Corasick)算法、Wu-Manber算法或ExB算法等。多模字符串匹配过程中,对目标字符串扫描一遍即可查找到一个或多个字符串特征。
[0116]当需要对数据包进行多模字符串匹配时,协议识别子协处理器调用多模字符串匹配引擎,多模字符串匹配引擎对数据包进行扫描,在数据包中查找到一个或多个字符串特征,得到特征匹配结果,将特征匹配结果返回给处理器核,处理器核再根据该特征匹配结果确定该原始数据包的应用层协议类型。
[0117]在本实施例中,字符串匹配引擎在协议识别子协处理器的调用下对所述流处理后的数据包进行字符串匹配,包括:
[0118]字符串匹配引擎在协议识别子协处理器的调用下,从第一内存中读取字符串匹配算法状态表,根据该字符串匹配算法状态表对原始数据包进行字符串匹配。
[0119]具体地,第一内存中存储有字符串匹配算法状态表,当字符串匹配引擎为多模字符串匹配引擎时,字符串匹配算法状态表为多模字符串匹配算法状态表,当字符串匹配引擎为单模字符串匹配引擎时,字符串匹配算法状态表为单模字符串匹配算法状态表。例如,多模字符串匹配算法为AC算法,该多模字符串匹配算法状态表为AC状态表,多模字符串匹配引擎在对数据包进行多模字符串匹配时可以根据该多模字符串匹配算法状态表实现。字符串匹配引擎并不直接对第一内存进行读写操作,协处理器中设置有缓存(Cache),缓存与第一内存之前可以通过DMA (Direct Memory Access,直接内存存取)方式来实现数据交互。通过缓存的设置,可以大大减少访问外部内存的次数,大部分访问内存请求都可以通过缓存来完成,大幅提升了系统的性能。
[0120](2)如果处理器核调用的是低层级的子协处理器,比如专门用于进行正则表达式匹配的正则表达式匹配引擎,则正则表达式匹配引擎在处理器核的调用下对原始数据包进行正则匹配,得到特征匹配结果,将该特征匹配结果返回处理器核,处理器核至少根据该特征匹配结果确定原始数据包的应用层协议类型,并将得到的应用层协议类型作为原始数据包的应用层解析结果。
[0121]具体地,正则表达式匹配引擎可以采用正则表达式匹配算法,正则表达式匹配算法可以为NFA (Nondeterministic Finite Automaton,非确定型有限自动机)算法或DFA(Deterministic Finite Automaton,确定型有限自动机)算法等,正则表达式匹配过程中,特征不是通过字符串来描述的,而是通过正则表达式来描述的。
[0122]当需要对数据包进行正则表达式匹配时,处理器核可以直接调用正则表达式匹配引擎,正则表达式匹配引擎在数据包中查找,得到特征匹配结果,将特征匹配结果返回给处理器核,处理器核再根据该特征匹配结果确定该原始数据包的应用层协议类型。
[0123]在本实施例中,正则表达式匹配引擎在处理器核的调用下对原始数据包进行正则匹配,包括:
[0124]正则表达式匹配引擎在处理器核的调用下,从第一内存中读取正则表达式匹配算法状态表,根据该正则表达式匹配算法状态表对原始数据包进行正则匹配。
[0125]具体地,第一内存中存储有正则表达式匹配算法状态表,例如,正则表达式匹配算法为DFA算法时,该正则表达式匹配算法状态表为DFA状态表,正则表达式匹配引擎在对数据包进行正则匹配时可以根据该正则表达式匹配算法状态表实现。
[0126]在本发明的另一个实施例中,处理器核还可以通过调用行为特征统计子协处理器来得到原始数据包的应用层协议类型,具体地,行为特征统计子协处理器在处理器核的调用下对原始数据包进行行为特征匹配,得到特征匹配结果,将该特征匹配结果返回给处理器核,处理器核根据该特征匹配结果确定应用层协议类型。
[0127]具体地,对于不同的应用协议可以预先建立行为特征模型,当需要对数据包进行行为特征匹配时,行为特征统计子协处理器对数据包中的行为特征进行匹配,得到特征匹配结果,将特征匹配结果返回给处理器核,处理器核再根据该特征匹配结果确定该原始数据包的应用层协议类型。在本实施例中,处理器核根据特征匹配结果确定原始数据包的应用层协议类型,包括:
[0128]处理器核通过缓存从第二内存中读取规则条件表,根据特征匹配结果和该规则条件表确定原始数据包的应用层协议类型。
[0129]具体地,第二内存中存储有规则条件表,该规则条件表中存储有规则与应用层协议类型的对应关系,处理器核将特征匹配结果与规则中的特征相对应,以判断该特征匹配结果是否符合该规则,若符合,则可以确定数据包的应用层协议类型。处理器核并不直接对第二内存进行读写操作,协处理器中设置有缓存(Cache),缓存与第二内存之前可以通过DMA方式来实现数据交互。
[0130]在另一个实施例中,协处理器中还设置有协议解析子协处理器,协议解析子协处理器中可以设置状态机。在对数据包的应用协议识别,获知该数据包所承载的应用层协议类型后,若需要进一步获知其中的信息以协助进行各种增值业务处理或规则匹配时,还可以根据应用协议格式对数据包进行深入解析,提取相关信息,以得到解析结果。
[0131]具体地,处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,具体包括:
[0132]处理器核调用协处理器包括的协议识别子协处理器对所述原始数据包的应用层协议进行识别,得到所述原始数据包的应用层协议类型;
[0133]所述处理器核调用协处理器包括的协议解析子协处理器对所述原始数据包进行协议解析,得到解析结果,并将所述解析结果和所述应用层协议类型作为所述原始数据包的应用层解析结果。
[0134]在本实施例中,协处理器中还可以设置URL匹配引擎,处理器核调用协处理器的协议识别子协处理器对所述原始数据包的应用协议进行识别之后,若处理器核判断获知所述应用层协议类型为超文本传输协议,则调用协处理器的统一资源定位符URL匹配引擎,该URL匹配引擎在处理器核的调用下对原始数据包进行URL的匹配,得到URL匹配结果,将所述URL匹配结果返回给所述处理器核,其中,所述处理结果还包括所述URL匹配结果。
[0135]例如,若处理器核识别到某个数据包对应的流的应用层协议类型为超文本传输协议(HTTP),则可以调用URL匹配引擎对该数据包进行进一步的分析。URL匹配引擎可以分析出该数据包的URL的值,以得到URL匹配结果。协处理器将该URL匹配结果作为处理结果发送给通用处理器,通用处理器可以根据该URL匹配结果进行与URL有关的网络管理工作。
[0136]在实际应用中,深度报文检测装置的通用处理器和协处理器配合实现DPI业务,协处理器中的功能模块可以根据实际的DPI业务需要来设置,上述实施例提供了几种功能模块的实现形式,但本发明并不以此为限。而且不同的DPI业务,处理流程也可以不同。特征匹配的工作也可以通过协处理器的处理器核来完成,得到特征匹配结果,处理器核再根据特征匹配结果确定应用层协议类型。例如,HTTP协议的特征之一可以是TCP端口为80,由于此端口匹配的过程并不需要太多计算资源,可以由协处理器的处理器核来完成。
[0137]本实施例提供的深度报文检测方法,通用处理器和协处理器配合实现DPI,通过对协处理器进行更细粒度的划分,协处理器中的子协处理器可以专门为DPI业务而设计,这样就将DPI功能从通用处理器中卸载,降低了通用处理器资源的占用,以使得通用处理器可以处理其他增值业务;同时,协处理器中设置有处理器核来进行DPI业务控制,子协处理器在处理器核的调用下运行,大大提高了业务处理的灵活性,为DPI协处理器配备外部内存,以保存DPI中间状态而做到更好的扩展性和性能。因为,当处理到需要保存现场的任务时,不必交由通用处理器完成,DPI协处理器可以卸载更多其处理器资源。另外,通过为DPI协处理器配备外部内存,以保存DPI处理时需要用到的各种特征字数据结构、算法特定数据结构。这样,DPI协处理器可以直接快速的读取这些数据而不必经由总线通过通用处理器来读取,可以进一步提高处理性能。
[0138]下面通过具体的实例来说明基于本发明实施例的DPI架构进行深度报文检测的具体过程,图6为本发明实施例提供的一种深度报文检测方法流程图。以下结合图6对本实施例提供的深度报文检测方法进行说明。
[0139]步骤la、通用处理器将数据包发送给协处理器的收发模块;
[0140]步骤2a、收发模块将数据包发送给处理器核;
[0141]步骤3a、处理器核调用协议识别子协处理器,将数据包通过交换总线模块发送给协议识别子协处理器,协议识别子协处理器对数据包进行端点查找;
[0142]步骤4a、协议识别子协处理器判断是否查找成功,若是,则执行步骤5a,若否,则执行步骤6a ;
[0143]步骤5a、协议识别子协处理器将得到的端点查找结果通过交换总线模块发送给处理器核,执行步骤15a;
[0144]步骤6a、协议识别子协处理器通过交换总线模块向处理器核反馈查找失败结果;
[0145]步骤7a、协议识别子协处理器调用多模字符串匹配引擎,将数据包通过交换总线模块发送给多模字符串匹配引擎,多模字符串匹配引擎对数据包进行多模字符串匹配;
[0146]步骤8a、多模字符串匹配引擎判断是否匹配成功,若是,则执行步骤9a,若否,则执行步骤1a ;
[0147]步骤9a、多模字符串匹配引擎将得到的特征匹配结果通过交换总线模块发送给处理器核,执行步骤15a;
[0148]步骤10a、多模字符串匹配引擎通过交换总线模块向处理器核反馈匹配失败结果;
[0149]步骤11a、处理器核调用正则表达式匹配引擎,将数据包通过交换总线模块发送给正则表达式匹配引擎,正则表达式匹配引擎对数据包进行正则匹配;
[0150]步骤12a、正则表达式匹配引擎判断是否匹配成功,若是,则执行步骤13a,若否,则执行步骤14a ;
[0151]步骤13a、正则表达式匹配引擎将得到的特征匹配结果通过交换总线模块发送给处理器核,执行步骤15a;
[0152]步骤14a、正则表达式匹配引擎通过交换总线模块向处理器核反馈匹配失败结果,处理器核将匹配失败结果作为处理结果发送给结果上报处理模块,执行步骤20a ;
[0153]步骤15a、处理器核根据特征匹配结果确定应用层协议类型;
[0154]步骤16a、处理器核判断是否需要对数据包进行深度解析,若是,则执行步骤17a,若否,则执行步骤19a;
[0155]步骤17a、处理器核调用协议解析子协处理器,将数据包通过交换总线模块发送给协议解析子协处理器,协议解析子协处理器对数据包进行协议解析,得到解析结果,将解析结果通过交换总线模块发送给处理器核;
[0156]步骤18a、处理器核将应用层协议类型和解析结果作为处理结果发送给结果上报处理模块,执行步骤20a;
[0157]步骤19a、处理器核将应用层协议类型作为处理结果发送给结果上报处理模块;
[0158]步骤20a、结果上报处理模块将处理结果封装后发送给通用处理器。
[0159]下面通过另一个具体的实例来说明基于本发明实施例的DPI架构进行深度报文检测的具体过程,图7为本发明实施例提供的另一种深度报文检测方法流程图,以下结合图7对本实施例提供的深度报文检测方法进行说明。
[0160]步骤lb、通用处理器将数据包发送给协处理器的收发模块;
[0161]步骤2b、收发模块将数据包发送给处理器核;
[0162]步骤3b、处理器核调用多模字符串匹配引擎,将数据包通过交换总线模块发送给多模字符串匹配引擎,多模字符串匹配引擎对数据包进行多模字符串匹配;
[0163]步骤4b、多模字符串匹配引擎判断是否匹配成功,若是,则执行步骤5b,若否,则执行步骤6b ;
[0164]步骤5b、多模字符串匹配引擎将得到的特征匹配结果通过交换总线模块发送给处理器核,执行步骤15b;
[0165]步骤6b、多模字符串匹配引擎通过交换总线模块向处理器核反馈匹配失败结果;
[0166]步骤7b、处理器核调用正则表达式匹配引擎,将数据包通过交换总线模块发送给正则表达式匹配引擎,正则表达式匹配引擎对数据包进行正则匹配;
[0167]步骤Sb、正则表达式匹配引擎判断是否匹配成功,若是,则执行步骤9b,若否,则执行步骤1b ;
[0168]步骤%、正则表达式匹配引擎将得到的特征匹配结果通过交换总线模块发送给处理器核,执行步骤15b;
[0169]步骤10b、正则表达式匹配引擎通过交换总线模块向处理器核反馈匹配失败结果;
[0170]步骤lib、处理器核调用行为特征统计子协处理器,将数据包通过交换总线模块发送给行为特征统计子协处理器,行为特征统计子协处理器对数据包进行行为特征匹配;
[0171]步骤12b、行为特征统计子协处理器判断是否匹配成功,若是,则执行步骤13b,若否,则执行步骤14b;
[0172]步骤13b、行为特征统计子协处理器将得到的特征匹配结果通过交换总线模块发送给处理器核,执行步骤15b ;
[0173]步骤14b、行为特征统计子协处理器通过交换总线模块向处理器核反馈匹配失败结果,处理器核将匹配失败结果作为处理结果发送给结果上报处理模块,执行步骤20b ;
[0174]步骤15b、处理器核根据特征匹配结果确定应用层协议类型;
[0175]步骤16b、若应用层协议类型为HTTP,处理器核判断是否需要获取数据包的URL的值,若是,则执行步骤17b,若否,则执行步骤19b ;
[0176]步骤17b、处理器核调用URL匹配引擎,将数据包通过交换总线模块发送给URL匹配引擎,URL匹配引擎分析出数据包的URL的值,得到URL匹配结果,将URL匹配结果通过交换总线模块发送给处理器核;
[0177]步骤18b、处理器核将应用层协议类型和URL匹配结果作为处理结果发送给结果上报处理模块;
[0178]步骤1%、处理器核将应用层协议类型作为处理结果发送给结果上报处理模块;
[0179]步骤20b、结果上报处理模块将处理结果封装后发送给通用处理器。
[0180]图8为本发明实施例提供的另一种深度报文检测方法流程图。如图8所示,本实施例提供的深度报文检测方法可以与图4所示实施例提供的方法配合实现,具体实现过程在此不再赘述。本实施例提供的深度报文检测方法通过通用处理器来执行,该方法具体包括:
[0181]步骤B10、通用处理器将原始数据包发送给协处理器;
[0182]步骤B20、通用处理器接收协处理器发送的原始数据包的应用层解析结果;其中,应用层解析结果是由协处理器的处理器核调用协处理器的至少一个子协处理器对原始数据包进行应用层解析后得到的;应用层解析结果用于表示原始数据包的应用层信息,比如应用层协议类型、原始数据包所属的业务等等,此处不再赘述;
[0183]步骤B30、通用处理器至少根据上述应用层解析结果对原始数据包进行处理。
[0184]具体地,网络设备需要通过对接收到的流中的数据包进行深入分析以实现网络优化和应用流量控制等业务时,网络设备的网卡将流发送给通用处理器。通用处理器将原始数据包发送给协处理器,协处理器对原始数据包进行应用层解析得到应用层解析结果,应用层解析结果可以包括应用层协议类型、协议深度解析结果和URL匹配结果等。将应用层解析结果返回通用处理器,通用处理器根据应用层解析结果对原始数据包进行处理,例如流量统计、加速、限流、阻断和过滤等。
[0185]本实施例提供的深度报文检测方法,通用处理器将原始数据包发送给协处理器,接收所述协处理器发送的处理结果,根据所述处理结果对所述原始数据包进行处理。通用处理器和协处理器配合实现DPI,协处理器中的子协处理器可以专门为DPI业务而设计,将DPI功能从通用处理器中卸载,降低了通用处理器资源的占用,以使得通用处理器可以处理其他增值业务。而且协处理器中设置有处理器核,子协处理器在处理器核的调用下运行,处理器核与子协处理器的交互也都是芯片内交互,避免了协处理器与通用处理器之间的频繁交互,可以提高运行速度。
[0186]在一个实施例中,通用处理器根据应用层解析结果对所述原始数据包进行处理,具体包括:
[0187]若通用处理器若根据原始数据包的应用层解析结果确定出原始数据包为加密数据包,则对原始数据包进行解密处理。
[0188]具体地,通用处理器将原始数据包发送给协处理器,当协处理器识别出该原始数据包是加密的,则向通用处理器返回用以指示该原始数据包为加密数据包的处理结果,则通用处理器可以对该原始数据包进行解密处理,再将解密处理后的原始数据包发送给协处理器,协处理器对原始数据包的处理过程可以参照上述实施例的描述。
[0189]在实际应用中,例如解密处理等操作实现比较复杂,协处理器无法执行的任务可以交由通用处理器来实现。当然,若协处理器中设置有解密模块时,协处理器可以自行对原始数据包进行解密处理。
[0190]在另一个实施例中,通用处理器根据应用层解析结果对所述原始数据包进行处理,可以包括:
[0191]若通用处理器根据原始数据包的应用层解析结果确定原始数据包所属的流的业务类型,根据该业务类型对流进行流量统计、计费或传输加速。
[0192]具体地,运营商希望对VoIP (Voice over Internet Protocol)流量进行计费,当通用处理器原始数据包的应用层解析结果判断出原始数据包所在数据流是采用Skype协议做VoIP电话的数据流时,可对该流进行流量统计,以实现VoIP电话业务的计费。
[0193]当用户希望对某些应用流量加速时,例如网络游戏,当通用处理器根据应用层解析结果判断出原始数据包所属的流用于网络游戏业务,则对该条流加速,以保证该条流的传输速度。
[0194]当用户希望对某些应用进行阻断时,当通用处理器根据根据应用层解析结果判断出原始数据包所属的流是用于某一特定的应用程序时,可以对该流进行阻断处理。
[0195]优选地,在另一个实施例中,原始数据包的应用层解析结果包括:原始数据包的应用层协议类型和URL匹配结果;其中,原始数据包的应用层协议类型可以由协处理器的处理器核调用协处理器的协议识别子协处理器对所述原始数据包进行识别后得到,进一步地,协处理器的处理器核在确定原始数据包的应用层协议类型为超文本传输协议HTTP之后,还可以调用协处理器的统一资源定位符URL匹配引擎对原始数据包进行URL进行匹配,以得到URL匹配结果并发送给通用处理器;相应地,通用处理器接收到协处理器发送的URL匹配结果后,根据的应用层协议类型和URL匹配结果判断所述原始数据包所属的流是否用于访问被限网站,若是,则对所述流进行阻断处理。
[0196]具体地,用户希望开启绿色上网业务,防止未成年人访问不健康网站,当通用处理器根据处理结果中的应用层协议类型时HTTP,且根据URL匹配结果判断出该URL指向的网站是访问被限的,则对该流进行阻断,以防止未成年人对不健康网站的访问。
[0197]图9为本发明实施例提供的一种协处理器结构示意图。如图9所示,本实施例提供的协处理器91具体可以实现本发明任意实施例提供的应用于协处理器的深度报文识别方法的各个步骤,具体实现过程在此不再赘述。本实施例提供的协处理器91具体包括:收发模块11、处理器核12和子协处理器13。
[0198]收发模块11,用于接收通用处理器发送的原始数据包,将所原始数据包发送给处理器核12 ;
[0199]处理器核12,用于调用协处理器91的子协处理器13对所述原始数据包进行应用协议的识别,生成处理结果,以及将所述处理结果发送给所述通用处理器;
[0200]子协处理器13,用于在处理器核12的调用下对原始数据包进行应用协议的识别。
[0201]协处理器91可以通过FPGA或ASIC来实现,协处理器91中部署有一个或多个处理器核12,协处理器91中还设置有收发模块11和子协处理器13,子协处理器13通过硬件描述语言实现,硬件描述语言可以为VHDL或Verilog HDL0子协处理器13专门用于对数据包进行应用协议识别,可以提高业务的处理效果。
[0202]在本实施例中,所述的协处理器91还可以包括交换总线模块14。相应地,所述处理器核12可以通过所述协处理器91的交换总线模块14调用所述子协处理器13。
[0203]进一步地,可以而为协处理器91的功能模块配备第一内存15,第二内存16,第一内存保存软核专用的数据结构,包括流表、规则条件,使DPI协处理器能感知流的状态,而不是基于包的处理。第二内存保存各匹配引擎和子协处理器的数据结构,如DFA状态表、单模匹配算法辅助数据、子协处理器的算法数据结构等等。需要说明的是,第一内存和第二内存只是是逻辑上的划分,两者可以位于同一片物理内存上。
[0204]本实施例提供的协处理器91,收发模块11接收通用处理器发送的原始数据包,将原始数据包发送给协处理器91的处理器核12,处理器核12调用协处理器91的子协处理器13对原始数据包进行应用协议的识别,生成处理结果,处理器核12将处理结果发送给通用处理器,以使通用处理器根据处理结果对原始数据包进行处理。通用处理器和协处理器91配合实现DPI,协处理器91中的子协处理器13可以专门为DPI业务而设计,将DPI功能从通用处理器中卸载,降低了通用处理器资源的占用,以使得通用处理器可以处理其他增值业务。而且协处理器91中设置有处理器核12,子协处理器13在处理器核12的调用下运行,可以保留中间状态信息,处理器核12与子协处理器13的交互也都是芯片内交互,避免了协处理器91与通用处理器之间的频繁交互,可以提高运行速度。
[0205]图10为本发明实施例提供的另一种协处理器10结构示意图。如图10所示,在本实施例中,所述收发模块11可以包括接收单元111、流处理单元112和分发单元113。接收单元111用于接收所述通用处理器发送的原始数据包;流处理单元112用于对所述原始数据包进行流处理;分发单元113用于将流处理之后的数据包发送给所述处理器核12,具体地,流处理单元112具体用于对所述原始数据包进行IP分片报文重组处理和TCP乱序报文重排处理;当协处理器10包含多个处理器核时,分发单元113具体用于,确定所述至少两个处理器核中每个处理器核的负荷情况,根据每个所述处理器核的负荷情况从所述至少两个处理器核中选择一个处理器核,将所述流处理后的数据包发送给被选择的处理器核,相应地,被选择的处理器核用于调用子协处理器13对流处理后的数据包进行应用层解析,比如应用层协议识别。
[0206]在本实施例中,协处理器10还可以包括交换总线模块14。相应地,处理器核12具体通过协处理器10的交换总线模块14调用子协处理器13。
[0207]在一个实施例中,子协处理器13可以为端点查找子协处理器,在这种情形下,子协处理器13具体用于在处理器核12的调用下对原始数据包进行端点查找,得到端点查找结果,将该端点查找结果返回处理器核12。处理器核12具体用于根据该特征匹配结果确定原始数据包的应用层协议类型,并将确定的应用层协议类型作为原始数据包的应用层解析结果发送给通用处理器。
[0208]在另一个实施例中,如图10所示,子协处理器13包括协议识别子协处理器131和字符串匹配引擎132。协议识别子协处理器131用于:在所述处理器核调用子协处理器13后,调用字符串匹配引擎132 ;字符串匹配引擎132用于在协议识别子协处理器131的调用下对原始数据包进行字符串匹配,得到特征匹配结果,将该特征匹配结果返回所述处理器核;
[0209]相应地,处理器核12具体用于至少根据该特征匹配结果确定原始数据包的应用层协议类型,并将确定的应用层协议类型作为原始数据包的应用层解析结果发送给所述通用处理器。
[0210]在另一个实施例中,子协处理器13也可以为正则表达式匹配引擎。该正则表达式匹配引擎用于在处理器核12的调用下对原始数据包进行正则匹配,得到特征匹配结果,将该特征匹配结果返回处理器核12。处理器核12具体用于根据该特征匹配结果确定原始数据包的应用层协议类型,并将确定的应用层协议类型作为原始数据包的应用层解析结果发送给通用处理器。
[0211]优选地,子协处理器13还可以而包括:行为特征统计子协处理器133,用于在处理器核12的调用下对原始数据包进行行为特征匹配,得到特征匹配结果,将该特征匹配结果返回处理器核12。处理器核12具体用于根据该特征匹配结果确定原始数据包的应用层协议类型,并将确定的应用层协议类型作为原始数据包的应用层解析结果发送给通用处理器。
[0212]优选地,在本实施例中,协处理器10还可以包括:协议解析子协处理器15,用于在处理器核12的调用下对原始数据包进行协议解析,得到解析结果,将该解析结果返回给处理器核12 ;相应地,处理器核12具体用于将原始数据包的应用层协议类型,以及协议解析子协处理器15得到的解析结果作为原始数据包的应用层解析结果发送给通用处理器。
[0213]优选地,在本实施例中,协处理器10还可以包括:统一资源定位符URL匹配引擎16,用于在处理器核12的调用下对原始数据包进行URL的匹配,得到URL匹配结果,并将该URL匹配结果返回给所述处理器核12 ;相应地,处理器核12具体用于将原始数据包的应用层协议类型,以及该URL匹配结果作为原始数据包的应用层解析结果发送给通用处理器。
[0214]优选地,在本实施例中,协处理器10还包括:结果上报处理模块17。处理器核12具体用于将原始数据包的应用层解析结果发送给结果上报处理模块17,结果上报处理模块17用于将该应用层解析结果按照预设格式进行封装,将封装后的应用层解析结果发送给通用处理器。
[0215]在实际应用中,DPI设备的通用处理器和协处理器91配合实现DPI业务,协处理器91中的功能模块可以根据实际的DPI业务需要来设置,处理器核12的逻辑也可以根据实际的DPI业务需要来编程,上述实施例提供了几种功能模块的实现形式,但本发明并不以此为限。
[0216]可以将DPI设备划分为多个层次,例如,自上而下划分为四个层次:运算密集层、DPI业务控制层、DPI子业务逻辑层和算法引擎层。层次越高,处理的业务越复杂通用,层次越低,算法越简单专用。为了提高硬件加速性能,应尽可能多的把DPI相关任务交由协处理器来完成。这样通用处理器可以完成更多的运算密集型任务。协处理器则负责实现DPI业务控制层、DPI子业务逻辑层、算法引擎层的逻辑。
[0217]原则上,高层次的模块调用低层次的模块来实现需要的功能。当然,同一层次的模块也可以互相调用来协同完成功能。以下对各层次进行详细说明。
[0218]层次一:运算密集层。负责需要大量运算处理的任务,包括:DPI业务逻辑中的加解密和编解码等复杂逻辑处理;以及其他非DPI业务,如增值业务、策略匹配和报文动作执行等。
[0219]层次二:DPI业务控制层。通过在协处理器中放置处理器核来执行DPI业务控制逻辑,包括,DPI引擎各步骤的先后执行顺序控制、条件规则匹配、跨包处理、保存中间状态等等DPI业务相关的控制逻辑。
[0220]层次三:DPI子业务逻辑层。负责可以固化的DPI特定子业务。例如:协议识别子协处理器,协议解析子协处理器和行为特征统计子协处理器。
[0221]层次四:算法引擎层。负责特定为DPI优化的算法引擎任务。例如:正则表达式匹配引擎、浮定表达式引擎、多模字符串匹配算法引擎、单模字符串匹配算法引擎和行为参数运算引擎等等。
[0222]需要特别说明的是,在协处理器内部,即层次二到层次四通过交换总线模块来负责这些层次模块间的消息和数据交互。而层次一与其他层次,即通用处理器与协处理器之间属于芯片间交互,可以采用标准化总线,例如PCIE,实现,总线的类型可以根据通用处理器提供的对外接口来设置。
[0223]除了可以划分到对应层次的各模块之外,还有一些用于辅助处理的模块,他们是独立于各层次的,使用固化的逻辑来实现。例如,协处理器91内部的收发模块、结果上报处理模块、内存读写模块和缓存等等。
[0224]在实际实现过程中,通用处理器还可以预先根据业务类型判断是由自己进行处理还是交由协处理器来处理,如果业务类型对应的处理算法层次较高,较为复杂,则由该通用处理器进行处理,若该业务类型即为DPI相关业务,则通过协处理器来处理。
[0225]除了层次化设计架构之外,本发明实施例还提出为协处理器配备外部内存,以保存DPI中间状态而做到更好的扩展性和性能,如图10中的第一内存83和第二内存84。这样,当处理到需要保存现场的任务时,不必交由通用处理器完成,协处理器可以卸载更多其处理器资源。另外,配备的外部内存还可以保存DPI处理时需要用到的各种特征字数据结构、算法特定数据结构。这样,协处理器可以直接快速的读取这些数据而不必经由总线通过通用处理器来读取,可以达到更高的处理性能。
[0226]在本实施例中,字符串匹配引擎132具体用于在处理器核12的调用下,从第一内存83中读取字符串匹配算法状态表,根据该字符串匹配算法状态表对原始数据包进行字符串匹配,得到特征匹配结果,其中,第一内存83用于存储字符串匹配算法状态表。
[0227]具体地,为协处理器10的功能模块配备第一内存83,第一内存83中存储有字符串匹配算法状态表,当字符串匹配引擎132为多模字符串匹配引擎时,字符串匹配算法状态表为多模字符串匹配算法状态表,当字符串匹配引擎132为单模字符串匹配引擎时,字符串匹配算法状态表为单模字符串匹配算法状态表。例如,多模字符串匹配算法为AC算法,该多模字符串匹配算法状态表为AC状态表,多模字符串匹配引擎在对数据包进行多模字符串匹配时可以根据该多模字符串匹配算法状态表实现。多模字符串匹配引擎并不直接对第一内存83进行读写操作,协处理器10中设置有缓存,可以通过缓存来访问第一内存83。
[0228]在本实施例中,正则表达式匹配引擎具体用于在处理器核12的调用下,从第一内存83中读取正则表达式匹配算法状态表,根据该正则表达式匹配算法状态表对原始数据包进行正则匹配,其中,第一内存83用于存储正则表达式匹配算法状态表。
[0229]具体地,第一内存83中存储有正则表达式匹配算法状态表,例如,正则表达式匹配算法为DFA算法时,该正则表达式匹配算法状态表为DFA状态表,正则表达式匹配引擎在对数据包进行正则匹配时可以根据该正则表达式匹配算法状态表实现。正则表达式匹配引擎并不直接对第一内存83进行读写操作,协处理器10中设置有缓存,通过缓存来访问第一内存83。
[0230]在本实施例中,字符串匹配引擎132根据第一内存83中的字符串匹配算法状态表对原始数据包进行字符串匹配,得到特征匹配结果之后,处理器核12具体用于从第二内存84中读取规则条件数据结构,根据该特征匹配结果和该规则条件数据结构确定原始数据包的应用层协议类型,其中,所述第二内存84用于规则条件数据结构。
[0231]具体地,为协处理器10的处理器核12配备第二内存84,第二内存84中存储有规则条件数据结构,该规则条件数据结构用于存储业务规则与应用层协议类型的对应关系,处理器核12根据字符串匹配引擎得到的特征匹配结果从第二内存中的规则条件数据结构中查询得到原始数据包的应用层协议类型。处理器核12可以不直接对第二内存84进行读写操作,协处理器10中设置有缓存,通过缓存来访问第二内存84。
[0232]在本实施例中,第一内存83、第二内存84可以为双槽模式。
[0233]具体地,可以将第一内存83和第二内存84设计成双槽(Double Bank)模式,第一槽用来保存当前使用的数据结构,称为当前槽,第二槽用于保存升级的数据结构,称为升级槽。在系统运行过程中,协处理器10访问当前槽中的数据以实现业务处理。在该过程中,若需要对内存中的数据进行升级的时候,可以将升级的数据加载到升级槽中,该升级过程并不影响协处理器10对内存的当前槽的访问,当新数据加载完毕,就切换到系统槽,此时,第一槽作为系统槽,第二槽作为当前槽,以此类推,第一槽和第二槽交替用于保存升级数据,保证了升级生效而不中断当前业务。值得注意的是,在实际应用中,切换成系统槽后,由于一些业务流量还处于处理过程中,对于该还在处理过程中的业务流量不能强行切换到新的系统槽。在这种情况下,新的业务流量就采用新的系统槽的数据来处理,旧的业务流量继续采用原系统槽来处理。直到所有旧的业务流量处理完毕,才将原系统槽设置为不工作状态。这样就做到不中断当前业务而升级系统。
[0234]例如,BitTorrent协议的原识别特征是“Bttorrent”,而由于BitTorrent软件升级,新的特征是“XBttorrent”,因此,需要更新DPI识别的知识库,对应到本发明的协处理器10的数据结构就是存放在AC状态表中的某一个字符串特征。因此,需要把新编译后的特征数据结构加载到升级槽中。加载过程中,多模字符串匹配引擎依然使用当前槽。待加载完毕,当前槽与升级槽调换。多模字符串匹配引擎就可以读取新的AC状态表了。
[0235]在实际应用过程中,主要包含编译部分和运行部分。
[0236]编译部分:特征编译器,解析子处理器编译器,结果模板编译器,策略编译器。
[0237]在实际应用中,编译器主要包括:
[0238]a.前台编译器:特征编译器、解析子处理器编译器和匹配规则译器等;
[0239]b.后台编译器:正则表达式编译器、单模字符串算法编译器和多模字符串算法编译器等。
[0240]前台编译器主要作用包括:把用于各种DPI业务的规则(如应用层协议识别、IPS/IDS、URL过滤)归类成可以被本发明的协处理器使用的规则,即:正则表达式、字符串、数值等;生成所述第二内存的数据结构,即:条件规则数据结构等;编译协处理器中的处理器核的软件逻辑高级编程语言代码到可由协处理器处理器核执行的指令;编译通用处理器用的各种DPI业务数据结构,即:上文提到的用于支撑解密后识别、算法识别的数据结构。
[0241]后台编译器主要作用包括:编译可供各种协处理器中最低层次算法引擎模块使用的数据结构,即所述第一内存的数据结构,举例如上不再赘述。
[0242]除了两大种类编译器,编译部分模块还包含协处理器驱动程序。负责把编译好的各种数据结构加载到协处理器的第一内存、第二内存以及协处理器片内内存中(如处理器核的逻辑指令是存放在处理器片内内存)。
[0243]运行部分:配置API,DPI处理API,驱动程序,DPI业务控制层处理器核的固件,DPI子业务处理层(解析字处理器、URL过滤模块、策略匹配模块)和算法引擎层(单模字符串匹配引擎、正则表达式匹配引擎、多模字符串匹配引擎)的硬件模块。
[0244]图11为本发明实施例提供的通用处理器结构示意图。如图11所示,本实施例提供的通用处理器82具体可以实现本发明任意实施例提供的应用于通用处理器的深度报文检测方法的各个步骤,具体实现过程在此不再赘述。本实施例提供的通用处理器包括:发送模块21、收发模块22和处理模块23。
[0245]发送模块21,用于将原始数据包发送给协处理器;
[0246]接收模块22,用于接收所述协处理器发送的原始数据包的的应用层解析结果,其中,应用层解析结果是由协处理器的处理器核调用协处理器的至少一个子协处理器对原始数据包进行应用层解析后得到的;应用层解析结果用于表示数据包的应用层信息;
[0247]处理模块23,用于至少根据该应用层解析结果对原始数据包进行处理。。
[0248]本实施例提供的通用处理器,通用处理器将原始数据包发送给协处理器,接收所述协处理器发送的处理结果,根据所述处理结果对所述原始数据包进行处理。通用处理器和协处理器配合实现DPI,协处理器中的子协处理器可以专门为DPI业务而设计,将DPI功能从通用处理器中卸载,降低了通用处理器资源的占用,以使得通用处理器可以处理其他增值业务。而且协处理器中设置有处理器核,子协处理器在处理器核的调用下运行,可以保留中间状态信息,处理器核与子协处理器的交互也都是芯片内交互,避免了协处理器与通用处理器之间的频繁交互,可以提高运行速度。
[0249]在一个实施例中,处理模块23,具体用于若根据原始数据包的应用层解析结果识别出原始数据为加密数据包,则对原始数据包进行解密处理。
[0250]在另一个实施例中,处理模块23,具体用于根据原始数据包的应用层解析结果确定原始数据包所属的流的业务类型,根据该业务类型对原始数据包所属的流进行流量统计、计费或传输加速。
[0251]在另一个实施例中,原始数据包的应用层解析结果包括:原始数据包的应用层协议类型和URL匹配结果;其中,原始数据包的应用层协议类型可以由协处理器的处理器核调用协处理器的协议识别子协处理器对所述原始数据包进行识别后得到,进一步地,协处理器的处理器核在确定原始数据包的应用层协议类型为超文本传输协议HTTP之后,还可以调用协处理器的统一资源定位符URL匹配引擎对原始数据包进行URL进行匹配,以得到URL匹配结果并发送给通用处理器;相应地,通用处理器接收到协处理器发送的URL匹配结果后,根据的应用层协议类型和URL匹配结果判断所述原始数据包所属的流是否用于访问被限网站,若是,则对所述流进行阻断处理。
[0252]图12为本发明实施例提供的第一种DPI设备结构示意图。如图12所示,本实施例提供的DPI设备包括:本发明任意实施例提供的协处理器81和本发明任意实施例提供的通用处理器82。
[0253]本实施例提供的DPI设备,通用处理器82和协处理器81配合实现DPI,协处理器81中的子协处理器可以专门为DPI业务而设计,将DPI功能从通用处理器82中卸载,降低了通用处理器82资源的占用,以使得通用处理器82可以处理其他增值业务。而且协处理器81中设置有处理器核,子协处理器在处理器核的调用下运行,可以保留中间状态信息,处理器核与子协处理器的交互也都是芯片内交互,避免了协处理器81与通用处理器82之间的频繁交互,可以提高运行速度。
[0254]在一个实施例中,DPI设备包含的通用处理器的数量为一个。在实际应用中,一个协处理器也可以与一个或多个通用处理器配合实现DPI业务。
[0255]在另一个实施例中,DPI设备包含的通用处理器的数量为至少两个;DPI设备还包括网卡和负载均衡装置;
[0256]网卡用于从网络接收数据包,将数据包发送给负载均衡装置;
[0257]负载均衡装置用于获取所述至少两个通用处理器中每个通用处理器的负载情况,根据每个通用处理器的负载情况选择一个通用处理器,将数据包发送给选择的通用处理器。
[0258]图13为本发明实施例提供的第二种DPI设备结构示意图。如图13所示,以DPI设备中设置两个通用CPU (图13中的33、35)为例,DPI设备中还设置有网卡31和负载均衡装置32。网卡31接收网络中的其他设备发送的数据包,直接通过一个负责负荷分担的负载均衡装置32分发到合适的通用CPU处理,不是采用DMA(Direct Memory Access,直接内存存取)的方式。通用CPU确定需要进行DPI处理时,再把数据包转发给协处理器34。待协处理器34完成处理后,通过PCIE接口收取DPI处理结果,根据DPI处理结果进一步进行其他业务处理后,将需要转发的数据包通过网卡31转发出去。
[0259]负载均衡装置32可以通过FPGA来实现,负载均衡装置32 —方面可以根据每个通用CPU的负载情况选择合适的通用CPU对数据包进行处理,另一方面可以实现消息收发逻辑。若DPI设备中只有一个通用CPU时,可以不设置该负载均衡装置32,可以通过其他的芯片实现消息收发逻辑,本发明实施例中的通用CPU具体可以为Cavium通用CPU。
[0260]本发明实施例提供的DPI设备,通过通用处理器和协处理器配合实现DPI,协处理器中的子协处理器可以专门为DPI业务而设计,将DPI功能从通用处理器中卸载,降低了通用处理器资源的占用,以使得通用处理器可以处理其他增值业务。而且协处理器中设置有处理器核,子协处理器在处理器核的调用下运行,可以保留中间状态信息,处理器核与子协处理器的交互也都是芯片内交互,避免了协处理器与通用处理器之间的频繁交互,可以降低处理时延。
[0261]图14为本发明实施例提供的第三种DPI设备结构示意图。如图14所示,在本实施例中,DPI设备包括两个通用CPU (图14中的42、45),为通用CPU42配置有DDR3内存43,为通用CPU45配置有DDR3内存46。DPI设备中还设置有网卡41,网卡41接收到网络中的其他设备发送的数据包后,首先通过PCIE接口通过DMA方式触发通用CPU42读取数据包,并保存到他使用的DDR3内存43中。若通用CPU42进行一些处理后发现需要进行DPI处理,则将数据包通过DMA方式交由协处理器44进行DPI处理,待协处理器44完成处理后,将DPI处理结果返回给通用CPU42进一步处理,Sandy-Bridge通用CPU42再将需要转发的数据包通过网卡41发送给网络中的下一个网络设备。需要说明的是,本发明实施例的通用CPU 可以为 Sandy-Bridge 通用 CPU。
[0262]本发明实施例提供的DPI设备,通过通用处理器和协处理器配合实现DPI,协处理器中的子协处理器可以专门为DPI业务而设计,将DPI功能从通用处理器中卸载,降低了通用处理器资源的占用,以使得通用处理器可以处理其他增值业务。而且协处理器中设置有处理器核,子协处理器在处理器核的调用下运行,可以保留中间状态信息,处理器核与子协处理器的交互也都是芯片内交互,避免了协处理器与通用处理器之间的频繁交互,可以降低处理时延。
[0263]本发明实施例提供的深度报文检测方法和装置可以应用于多种应用场景,例如但不限于,在企业网路由器,使用DPI协处理器进行应用协议识别、深度协议解析、IDS(Intrus1n Detect1n Systems)和策略引擎。在 Router 和 BRAS (Broadband RemoteAccess Server),使用DPI协处理器进行应用协议识别、深度协议解析和策略引擎。在GGSN(Gateway GPRS Support Node)中,使用DPI协处理器进行应用协议识别、深度协议解析、内容过滤和策略引擎。在应用网关中,使用DPI协处理器进行应用协议识别、深度协议解析、内容过滤和策略引擎。在无线接入网元RNC(Rad1 Network Controller)、NodeB,使用DPI协处理器进行应用协议识别、深度协议解析、无线资源优化和策略引擎。
[0264]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0265]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种深度报文检测DPI方法,其特征在于,包括: 协处理器的收发模块接收通用处理器发送的原始数据包,将所述原始数据包发送给所述协处理器的处理器核; 所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,所述应用层解析结果用于表示所述原始数据包的应用层信息; 所述处理器核将所述应用层解析结果发送给所述通用处理器,以使所述通用处理器根据所述应用层解析结果对所述原始数据包进行处理。
2.根据权利要求1所述的深度报文检测方法,其特征在于,在所述协处理器的收发模块接收所述通用处理器发送的原始数据包之后,在将所述原始数据包发送给所述协处理器的处理器核之前,所述方法还包括: 对所述原始数据包进行流处理; 所述将所述原始数据包发送给所述处理器核,包括: 将流处理后的数据包发送给所述处理器核; 所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,包括: 所述处理器核调用所述协处理器的至少一个子协处理器对所述流处理后的数据包应用层解析,得到所述原始数据包的应用层解析结果。
3.根据权利要求2所述的深度报文检测方法,其特征在于,所述对所述原始数据包进行流处理,包括: 对所述原始数据包进行IP分片报文重组处理和TCP乱序报文重排处理。
4.根据权利要求1所述的深度报文检测方法,其特征在于:所述协处理器中设置有至少两个处理器核;所述将所述原始数据包发送给所述协处理器的处理器核,包括: 根据每个所述处理器核的负荷情况从所述至少两个处理器核中选择一个处理器核,将所述原始数据包发送给被选择的处理器核。
5.根据权利要求1所述的深度报文检测方法,其特征在于,所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,具体包括: 所述处理器核通过所述协处理器的交换总线模块调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析。
6.根据权利要求1所述的深度报文检测方法,其特征在于, 所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,包括: 所述处理器核调用所述协处理器包括的协议识别子协处理器,所述协议识别子协处理器在所述处理器核的调用下对所述原始数据包进行端点查找,得到端点查找结果,将所述端点查找结果返回所述处理器核,所述处理器核至少根据所述端点查找结果确定所述原始数据包的应用层协议类型,并将得到的所述应用层协议类型作为所述原始数据包的应用层解析结果。
7.根据权利要求1所述的深度报文检测方法,其特征在于, 所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,包括: 所述处理器核调用所述协处理器包括的协议识别子协处理器,所述协议识别子协处理器在所述处理器核的调用下,调用所述协处理器包括的字符串匹配引擎,所述字符串匹配引擎在所述协议识别子协处理器的调用下对所述原始数据包进行字符串匹配,得到特征匹配结果,将所述特征匹配结果返回所述处理器核,所述处理器核至少根据所述特征匹配结果确定所述原始数据包的应用层协议类型,,并将所述应用层协议类型作为所述原始数据包的应用层解析结果。
8.根据权利要求1所述的深度报文检测方法,其特征在于, 所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,包括: 所述处理器核调用所述协处理器包括的正则表达式匹配引擎,所述正则表达式匹配引擎在所述处理器核的调用下对所述原始数据包进行正则匹配,得到特征匹配结果,将所述特征匹配结果返回所述处理器核,所述处理器核至少根据所述特征匹配结果确定所述原始数据包的应用层协议类型,并将得到的所述应用层协议类型作为所述原始数据包的应用层解析结果。
9.根据权利要求1所述的深度报文检测方法,其特征在于,所述处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,包括: 所述处理器核调用所述协处理器包括的协议识别子协处理器对所述原始数据包的应用层协议进行识别,得到所述原始数据包的应用层协议类型; 所述处理器核调用所述协处理器包括的协议解析子协处理器对所述原始数据包进行协议解析,得到解析结果,并将所述解析结果和所述应用层协议类型作为所述原始数据包的应用层解析结果。
10.根据权利要求1-9任一项所述的深度报文检测方法,其特征在于,所述处理器核将所述应用层解析结果发送给所述通用处理器,包括: 所述处理器核将所述应用层解析结果发送给所述协处理器包括的结果上报处理模块; 所述结果上报处理模块将所述应用层解析结果按照预设格式进行封装,将封装后的应用层解析结果发送给所述通用处理器。
11.根据权利要求7所述的深度报文检测方法,其特征在于,所述字符串匹配引擎在所述协议识别子协处理器的调用下对所述原始数据包进行字符串匹配,得到特征匹配结果,包括: 所述字符串匹配引擎在所述协议识别子协处理器的调用下,从第一内存中读取字符串匹配算法状态表,根据所述字符串匹配算法状态表对所述流处理后的数据包进行字符串匹配,得到特征匹配结果。
12.根据权利要求11所述的深度报文检测方法,其特征在于,所述处理器核至少根据所述特征匹配结果确定所述原始数据包的应用层协议类型,包括: 所述处理器核从第二内存中读取规则条件数据结构,根据所述特征匹配结果和所述规则条件数据结构确定所述原始数据包的应用层协议类型。
13.—种深度报文检测方法,其特征在于,包括: 通用处理器将原始数据包发送给协处理器; 所述通用处理器接收所述协处理器发送的所述原始数据包的应用层解析结果,其中,所述应用层解析结果是由所述协处理器的处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析得到的;所述应用层解析结果用于表示所述原始数据包的应用层信息; 所述通用处理器至少根据所述应用层解析结果对所述原始数据包进行处理。
14.根据权利要求13所述的深度报文检测方法,其特征在于,所述通用处理器至少根据所述应用层解析结果对所述原始数据包进行处理,包括: 所述通用处理器若根据所述应用层解析结果确定所述原始数据包是否为加密数据包,若是,则对所述原始数据包进行解密处理。
15.根据权利要求13所述的深度报文检测方法,其特征在于,所述通用处理器至少根据所述应用层解析结果对所述原始数据包进行处理,包括: 所述通用处理器根据所述应用层解析结果确定所述原始数据包所属的流的业务类型,根据所述业务类型对所述流进行流量统计、计费或传输加速。
16.根据权利要求13所述的深度报文检测方法,其特征在于,所述原始数据包的应用层解析结果包括:所述原始数据包的应用层协议类型和URL匹配结果;其中,所述原始数据包的应用层协议类型是由所述协处理的处理器核调用所述协处理器的协议识别子协处理器对所述原始数据包进行识别后得到的;所述URL匹配结果是由所述协处理器的处理器核在确定所述原始数据包的应用层协议类型为超文本传输协议之后,调用所述协处理器的统一资源定位符URL匹配引擎对所述原始数据包进行URL的匹配得到的; 所述通用处理器至少根据所述应用层解析结果对所述原始数据包进行处理,包括: 所述通用处理器根据所述应用层解析结果和所述URL匹配结果判断所述原始数据包所属的流是否用于访问被限网站,若是,则对所述流进行阻断处理。
17.一种协处理器,其特征在于,包括:收发模块、子协处理器和处理器核; 所述收发模块,用于接收通用处理器发送的原始数据包,将所述原始数据包发送给所述处理器核; 所述处理器核,用于调用所述子协处理器对所述原始数据包进行应用层解析,得到所述原始数据包的应用层解析结果,所述应用层解析结果用于表示所述原始数据包的应用层信息;以及将所述应用层解析结果发送给所述通用处理器,以使所述通用处理器至少根据所述应用层解析结果对所述原始数据包进行处理; 所述子协处理器,用于在所述处理器核的调用下对所述原始数据包进行应用层解析,得到所述原始数据包的应用层信息。
18.根据权利要求17所述的协处理器,其特征在于,所述收发模块包括: 接收单元,用于接收所述通用处理器发送的原始数据包; 流处理单元,用于在所述接收单元接收到所述通用处理器发送的原始数据包之后,对所述原始数据包进行流处理; 分发单元,用于将流处理后的数据包发送给所述处理器核; 所述处理器核具体用于调用所述子协处理器对所述流处理后的数据包进行应用层解析。
19.根据权利要求18所述的协处理器,其特征在于:所述流处理单元具体用于对所述原始数据包进行IP分片报文重组处理和TCP乱序报文重排处理。
20.根据权利要求18或19所述的协处理器,其特征在于:所述处理器核的数量为至少两个; 所述分发单元具体用于,确定所述至少两个处理器核中每个处理器核的负荷情况,根据每个所述处理器核的负荷情况从所述至少两个处理器核中选择一个处理器核,将所述流处理后的数据包发送给被选择的处理器核。
21.根据权利要求17-20任一项所述的协处理器,其特征在于,还包括:交换总线模块; 所述处理器核具体用于通过所述协处理器的交换总线模块调用所述子协处理器对所述原始数据包进行应用层解析。
22.根据权利要求17所述的协处理器,其特征在于,所述子协处理器具体用于,在所述处理器核的调用下对所述原始数据包进行端点查找,得到端点查找结果,将所述端点查找结果返回所述处理器核; 所述处理器核具体用于,至少根据所述端点查找结果确定所述原始数据包的应用层协议类型,并将确定的所述应用层协议类型作为所述原始数据包的应用层解析结果发送给所述通用处理器。
23.根据权利要求17所述的协处理器,其特征在于,所述子协处理器包括:协议识别子协处理器和字符串匹配引擎; 所述协议识别子协处理器具体用于:在所述处理器核的调用下,调用所述字符串匹配引擎,所述字符串匹配引擎在所述协议识别子协处理器的调用下对所述原始数据包进行字符串匹配,得到特征匹配结果,将所述特征匹配结果返回所述处理器核; 所述处理器核具体用于至少根据所述特征匹配结果确定所述原始数据包的应用层协议类型,并将确定的所述应用层协议类型作为所述原始数据包的应用层解析结果发送给所述通用处理器。
24.根据权利要求17所述的协处理器,其特征在于,所述子协处理器具体为:正则表达式匹配引擎; 所述正则表达式匹配引擎用于在所述处理器核的调用下对所述原始数据包进行正则匹配,得到特征匹配结果,将所述特征匹配结果返回所述处理器核; 所述处理器核具体用于至少根据所述特征匹配结果确定所述原始数据包的应用层协议类型,并将确定的所述应用层协议类型作为所述原始数据包的应用层解析结果发送给所述通用处理器。
25.根据权利要求23所述的协处理器,其特征在于,所述子协处理器还包括:协议解析子协处理器; 所述协议解析子协处理器用于对所述原始数据包进行协议解析,得到解析结果,将所述解析结果返回给所述处理器核; 所述处理器核还用于将所述解析结果发送给所述通用处理器,以使所述通用处理器根据所述应用层协议类型和所述解析结果对所述原始数据包进行处理。
26.根据权利要求17-25任一项所述的协处理器,其特征在于,还包括:结果上报处理模块; 所述处理器核具体用于将所述应用层解析结果发送给所述结果上报处理模块; 所述结果上报处理模块用于将所述应用层解析结果按照预设格式进行封装,将封装后的应用层解析结果发送给所述通用处理器。
27.根据权利要求23所述的协处理器,其特征在于: 所述字符串匹配引擎具体用于在所述协议识别子协处理器的调用下,从第一内存中读取字符串匹配算法状态表,根据所述字符串匹配算法状态表对所述原始数据包进行字符串匹配,得到特征匹配结果,将所述特征匹配结果返回所述处理器核其中,所述第一内存用于存储字符串匹配算法状态表。
28.根据权利要求27所述的协处理器,其特征在于: 所述处理器核具体用于从第二内存中读取规则条件数据结构,根据所述特征匹配结果和所述规则条件数据结构确定所述应用层协议类型,其中,所述第二内存用于规则条件数据结构。
29.根据权利要求28所述的协处理器,其特征在于:所述第一内存和第二内存为双槽模式。
30.一种通用处理器,其特征在于,包括: 发送模块,用于将原始数据包发送给协处理器; 接收模块,用于接收所述协处理器发送的所述原始数据包的的应用层解析结果,其中,所述应用层解析结果是由所述协处理器的处理器核调用所述协处理器的至少一个子协处理器对所述原始数据包进行应用层解析得到的;所述应用层解析结果用于表示所述原始数据包的应用层信息; 处理模块,用于至少根据所述应用层解析结果对所述原始数据包进行处理。
31.根据权利要求30所述的通用处理器,其特征在于,所述处理模块,具体用于若根据所述应用层解析结果识别所述原始数据包为加密数据包,则对所述原始数据包进行解密处理。
32.根据权利要求30或31所述的通用处理器,其特征在于, 所述原始数据包的应用层解析结果包括:所述原始数据包的应用层协议类型和URL匹配结果,其中,所述URL匹配结果是由所述协处理器的处理器核在确定所述原始数据包的应用层协议类型为超文本传输协议时,调用所述协处理器的统一资源定位符URL匹配引擎对所述原始数据包进行URL的匹配后得到的; 所述处理模块具体用于根据所述原始数据包的应用层协议类型和所述URL匹配结果判断所述原始数据包所属的流是否用于访问被限网站,若是,则对所述流进行阻断处理。
33.一种深度报文检测DPI设备,其特征在于,包括:如权利要求17-29任一项所述的协处理器和如权利要求30-32任一项所述的通用处理器。
34.根据权利要求33所述的深度报文检测装置,其特征在于:所述通用处理器的数量为一个。
35.根据权利要求33所述的深度报文检测装置,其特征在于:所述通用处理器的数量为至少两个;所述DPI设备还包括网卡和负载均衡装置; 所述网卡用于从网络接收数据包,将所述数据包发送给所述负载均衡装置; 所述负载均衡装置用于确定所述至少两个通用处理器中每个所述通用处理器的负载情况,根据每个所述通用处理器的负载情况选择一个通用处理器,将所述数据包发送给被选择的通用处理器。
【文档编号】H04L12/26GK104348677SQ201310337064
【公开日】2015年2月11日 申请日期:2013年8月5日 优先权日:2013年8月5日
【发明者】艾维·菲尔, 丹尼尔·莫斯科维奇, 艾米尔·扎克, 莫默 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1