本申请涉及互联网络技术领域,特别是涉及一种进行深度报文检测的方法及其装置。
背景技术:目前,在电信运营商的承载网络中,各类新应用承载在传输控制协议/因特网互联协议(TransmissionControlProtocol/InternetProtocol,TCP/IP协议)的上层网络中,但运营商对这些应用无法直接感知,造成运营商网络逐渐管道化,导致业务难于管理,无法实现内容计费,不能满足信息安全需求等问题。为解决这些问题,电信网络中开始引入了深度报文检测(DPI,DeepPacketInspection)技术来提高网络对报文应用信息的感知能力。深度报文检测是相对普通报文分析而言的一种技术。普通报文检测仅仅分析IP报文应用层以下的内容,例如,根据接收到的IP报文的五元组信息(包括源地址、目的地址、源端口、目的端口以及协议类型)对数据报文进行分类处理。而DPI则对报文进行更深层次的检测,包括对报文进行应用层的分析或基于流量特征的检测,识别出报文对应的应用层业务类型和/或提取其中的应用层关键信息用于后续业务处理。DPI是目前运营商网络中实现基于应用的业务管理的基础,各类DPI设备在运营商网络中得到了大规模的部署。由于缺乏标准化,现在的DPI设备都是由各厂商根据运营商需求部署的定制化设备。目前DPI功能的实现基本采用两种方式:1.内置DPI方案:内置DPI通过在网元内部通过软件或硬件加速的方式,提供DPI处理功能。如在移动网络负责报文转发的网元服务GPRS支持节点(ServingGPRSSupportNode,SGSN)、网关GPRS支持节点(GatewayGPRSSupportNode,GGSN)、服务网关(ServingGateway,Serving-GW)、分组数据网络网关(PacketDataNetworkGateway,PDN-GW)、网络接入服务网关(AccessServiceNetworksGateway,ASN-GW)或固定网络网元宽带远程接入服务设备(BroadbandRemoteAccessServer,BRAS)、路由器、防火墙等物理网元内部通过软件模块或专用硬件板卡的方式为该网元提供DPI能力。2.外置DPI方案:通过外置DPI模块,为其它网元提供DPI服务,与其它网元之间采用外部消息接口实现DPI功能的调用。本申请发明人在长期研发中发现,单纯采用内置DPI与外置DPI的实现方式都会导致网络整体转发性能的下降。
技术实现要素:本申请提供一种进行深度报文检测的方法及其装置实施例,能够提升网络整体的可维护性和转发性能。本申请的一方面是提供一种进行深度报文检测的方法,所述方法包括:接收深度报文检测请求,所述深度报文检测请求用于请求对报文进行深度报文检测;根据所述报文的特征,以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断进行内置深度报文检测或进行外置深度报文检测;若确定进行内置深度报文检测,通知内置深度报文检测模块对所述报文进行检测,获得所述报文的检测报告;或,若确定进行外置深度报文检测,通知外置深度报文检测模块对所述报文进行检测,获得所述报文的检测报告。本申请另一方面是提供一种进行深度报文检测的装置,所述装置包括:接收模块,用于接收深度报文检测请求,所述深度报文检测请求用于请求对报文进行深度报文检测;判断模块,用于根据所述报文的特征,以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断进行内置深度报文检测或进行外置深度报文检测;检测报告获得模块,用于在确定进行内置深度报文检测时,通知内置深度报文检测模块对所述报文进行检测,获得所述报文的检测报告;或,在确定进行外置深度报文检测时,通知外置深度报文检测模块对所述报文进行检测,获得所述报文的检测报告。上述技术方案,在接收到需要深度报文检测的请求后,根据报文的特征以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断是进行内置深度报文检测还是进行外置深度报文检测,根据判断的结果,通知内置深度报文检测模块对报文进行内置深度报文检测或者通知外置深度报文检测模块对报文进行外置深度报文检测,获得报文的检测报告。通过这种方式,内置深度报文检测与外置深度报文检测之间能够通过有效地进行业务分担和协同,共同完成报文的检测,不需要进行频繁的深度报文检测功能升级即可实现深度报文检测能力的快速响应,并且在降低内置深度报文检测对网元计算能力影响的同时,也控制了发送到外置深度报文检测的数据流量,从而提升网元的可维护性和转发性能。附图说明图1是本申请实施例进行深度报文检测的方法的流程图;图2是本申请实施例进行深度报文检测的方法的另一流程图;图3是本申请实施例进行深度报文检测的装置的结构示意图;图4是本申请实施例进行深度报文检测的装置的另一结构示意图;图5是本申请实施例进行深度报文检测的装置的实现流程图;图6是本申请实施例进行深度报文检测的装置的另一实现流程图;图7是本申请实施例进行深度报文检测的装置的又一实现流程图;图8是本申请实施例进行深度报文检测的装置的又一实现流程图;图9是本申请实施例进行深度报文检测的装置的又一实现流程图;图10是本申请实施例进行深度报文检测的装置的又一实现流程图。具体实施方式下面结合附图和实施方式对本发明进行详细说明。参阅图1,图1是本申请实施例进行深度报文检测的方法的流程图,该方法包括:步骤S101:接收深度报文检测请求,所述深度报文检测请求用于请求对报文进行深度报文检测;深度报文检测(DPI,DeepPacketInspection)是相对普通报文分析而言的一种技术。普通报文检测仅仅分析IP报文应用层以下的内容,如根据接收到的IP报文的五元组信息(包括源地址、目的地址、源端口、目的端口以及协议类型),对数据报文进行分类处理。而DPI则对报文进行更深层次的检测,包括对报文进行应用层的分析或基于流量特征的检测,识别出报文对应的应用层业务类型,和/或提取其中的应用层关键信息用于后续业务处理。DPI是一个相对宽泛的概念。在某些文献中,也将对报文进行基于流量特征的检测技术称为基于流特征的检测(DFI,DeepFlowInspection)。在本申请中,将基于IP报文的TCP/IP层以上信息的识别和/或解析技术和DFI技术统称为DPI技术。本申请中所使用的报文检测、识别、解析等术语与DPI表示相同含义。步骤S102:根据报文的特征,以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断进行内置深度报文检测或进行外置深度报文检测;设置的进行内置深度报文检测和外置深度报文检测的第一条件与报文的特征有关联,根据待检测的报文的特征以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,可以判断出对于待检测的报文是进行内置深度报文检测还是进行外置深度报文检测。步骤S103:若确定进行内置深度报文检测,通知内置深度报文检测模块对所述报文进行检测,获得所述报文的检测报告;或,若确定进行外置深度报文检测,通知外置深度报文检测模块对所述报文进行检测,获得所述报文的检测报告。如果判断的结果是进行内置深度报文检测,将所述报文发送给内置深度报文检测模块,通知内置深度报文检测模块对所述报文进行检测,并获得内置深度报文检测模块对所述报文进行检测后的检测报告;如果判断的结果是进行外置深度报文检测,将所述报文发送给外置深度报文检测模块,通知外置深度报文检测模块对所述报文进行检测,并获得外置深度报文检测模块对所述报文进行检测后的检测报告。本申请实施例根据报文的特征以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断是进行内置深度报文检测还是进行外置深度报文检测,根据判断的结果,通知内置深度报文检测模块对报文进行内置深度报文检测或者通知外置深度报文检测模块对报文进行外置深度报文检测,获得报文的检测报告。通过这种方式,内置深度报文检测与外置深度报文检测之间能够通过有效地进行业务分担和协同,共同完成报文的检测,不需要进行频繁的深度报文检测功能升级即可实现深度报文检测能力的快速响应,并且在降低内置深度报文检测对网元计算能力影响的同时,也控制了发送到外置深度报文检测的数据流量,从而提升网元的可维护性和转发性能。参阅图2,图2是本申请实施例进行深度报文检测的方法的另一流程图,在本实施例中,进行深度报文检测的执行主体是深度报文检测装置。该流程包括:步骤S201:设置进行内置深度报文检测和外置深度报文检测的第一条件;步骤S202:设置进行内置深度报文检测和外置深度报文检测的第二条件;其中,进行内置深度报文检测和外置深度报文检测的第一条件包括:根据用户级别、设备级别、业务流级别、报文时延、报文协议类型、报文难易程度、内置深度报文检测模块的检测能力或外置深度报文检测模块的检测能力中的至少一种,确定进行内置深度报文检测或外置深度报文检测。进行内置深度报文检测和外置深度报文检测的第二条件包括:根据用户级别、设备级别、业务流级别、报文时延、报文协议类型、报文难易程度、内置深度报文检测模块的检测能力或外置深度报文检测模块的检测能力中的至少一种,确定进行内置深度报文检测或外置深度报文检测。可以根据用户级别、设备级别、业务流级别、报文时延、报文协议类型、报文难易程度、内置深度报文检测模块的检测能力和外置深度报文检测模块的检测能力中的其中一种、其中两种、其中三种或者其中三种以上确定进行内置深度报文检测或外置深度报文检测。在本发明的各实施例中,上述第一或第二条件的设置粒度可以任意组合。以第一条件的不同设置粒度举例:可以设置为将用户级别较高的报文进行内置深度报文检测、将用户级别较低的报文进行外置深度报文检测;或将用户级别较高、业务流量较大的报文进行内置深度报文检测,将用户级别较低、业务流量较小的报文进行外置深度报文检测。或在PDN-GW上的HTTP报文进行内置深度报文检测,将PDN-GW上的其它协议报文或Serving-GW上的所有协议报文进行外置深度报文检测;或将协议稳定、解析简单、时延要求高的报文进行内置深度报文检测,将协议变化频繁、解析复杂、时延要求不高的报文进行外置深度报文检测。需要说明的是,在进行了步骤S201后,根据应用中的实际情况,步骤S202可以执行也可以不执行。步骤S201和步骤S202可以由深度报文检测装置中的设置模块执行。通过上述方式,可以在计算能力和转发能力之间取得性能平衡。步骤S203:请求对报文进行深度报文检测;步骤S203可以是深度报文检测装置中的请求模块执行。步骤S204:接收深度报文检测请求;步骤S204可以是深度报文检测装置中的接收模块执行。深度报文检测是对报文进行更深层次的检测,包括对报文进行应用层的分析或基于流量特征的检测,识别出报文对应的应用层业务类型,和/或提取其中的应用层关键信息用于后续业务处理。步骤S205:根据所述报文的特征,以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断进行内置深度报文检测或进行外置深度报文检测;步骤S205可以是深度报文检测装置中的判断模块执行。报文特征可以包括报文端口号、通用路由封装密钥域(GREkey)、因特网络协议第六版流标签(IPv6FlowLabel)、差别服务编码点(DSCP码)、因特网络协议(IP)目的地址或报文行为特征中的至少一种。例如:端口号为80或8080的报文初步判断为HTTP协议,根据内置深度报文检测和外置深度报文检测的第一条件,判断该协议报文是否可由内置深度报文检测模块进行检测;根据报文的GREkey判断该报文是否可由外置深度报文检测模块进行检测;根据报文的IPv6FlowLabel,判断该报文是否可由内置深度报文检测模块进行检测;差别服务编码点表示转发优先级较高的报文由内置深度报文检测模块进行检测,否则由外置深度报文检测模块进行检测。步骤S206:若确定进行内置深度报文检测,通知内置深度报文检测模块对所述报文进行检测,获得所述报文的检测报告,若确定进行外置深度报文检测,通知外置深度报文检测模块对所述报文进行检测,获得所述报文的检测报告;如果确定进行内置深度报文检测,进入步骤S206a,如果确定进行外置深度报文检测,进入步骤S206f。步骤S206可以是深度报文检测装置中的检测报告获得模块执行。其中,报文的检测报告是最终检测报告或者中间检测报告。其中,步骤S206具体包括以下内容:步骤S206a:若确定进行内置深度报文检测,将待检测的报文发送给内置深度报文检测模块;步骤S206a可以是深度报文检测装置中检测报告获得模块的第一发送单元执行。步骤S206b:接收所述内置深度报文检测模块对所述报文进行检测后的检测报告;如果执行了步骤S202,则进入步骤S206c,如果没有执行步骤S202,则进入步骤S207。步骤S206b可以是深度报文检测装置中检测报告获得模块的第一接收单元执行。步骤S206c:根据所述报文的检测报告,确定所述内置深度报文检测模块对报文的检测失败;步骤S206c可以是深度报文检测装置中检测报告获得模块的第一确定单元执行。步骤S206d:根据设置的进行内置深度报文检测和外置深度报文检测的第二条件,确定对所述报文再进行外置深度报文检测;步骤S206d可以是深度报文检测装置中检测报告获得模块的第二确定单元执行。如果检测失败,根据设置的进行内置深度报文检测和外置深度报文检测的第二条件,可以确定对所述报文进行外置深度报文检测。步骤S206e:通知所述外置深度报文检测模块对所述报文进行再检测,获得所述报文的检测报告。步骤S206e可以是深度报文检测装置中检测报告获得模块的检测报告获得单元执行。其中,步骤S206e具体包括:步骤S206e1:将所述待再检测的报文发送给所述外置深度报文检测模块;步骤S206e1可以是深度报文检测装置中检测报告获得模块的检测报告获得单元的发送电路执行。其中,S206e1具体包括:将所述再检测的报文,以及内置深度报文检测模块检测失败的指示或者内置深度报文检测模块的检测结果发送给所述外置深度报文检测模块。步骤S206e2:接收所述外置深度报文检测模块对所述再检测的报文进行再检测后的检测报告。步骤S206e2可以是深度报文检测装置中检测报告获得模块的检测报告获得单元的接收电路执行。步骤S206f:若确定进行外置深度报文检测,将待检测的报文发送给外置深度报文检测模块;步骤S206f可以是深度报文检测装置中检测报告获得模块的第二发送单元执行。步骤S206g:接收所述外置深度报文检测模块对所述报文进行检测后的检测报告。步骤S206g可以是深度报文检测装置中检测报告获得模块的第二接收单元执行。步骤S207:根据所述报文的检测报告,对所述报文进行业务控制。步骤S207可以是深度报文检测装置中控制模块执行。业务控制包括但不限于:转发(如选择不同路由、多播、广播等)、计费、合法监听、服务质量控制、门控、优先级控制、重定向或报文增强中至少一种的控制。其中服务质量控制包括带宽控制、业务优先级控制、转发时延控制等(如根据用户签约信息,在转发过程中使用令牌桶等算法对用户的业务流执行特定带宽保障),门控包括对用户业务报文执行通过或丢弃操作。本申请实施例根据报文的特征以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断是进行内置深度报文检测还是进行外置深度报文检测,根据判断的结果,通知内置深度报文检测模块对报文进行内置深度报文检测或者通知外置深度报文检测模块对报文进行外置深度报文检测,获得报文的检测报告。通过这种方式,内置深度报文检测与外置深度报文检测之间能够通过有效地进行业务分担和协同,共同完成报文的检测,不需要进行频繁的深度报文检测功能升级即可实现深度报文检测能力的快速响应,并且在降低内置深度报文检测对网元计算能力影响的同时,也控制了发送到外置深度报文检测的数据流量,从而提升网元的可维护性和转发性能。参阅图3,图3是本申请实施例进行深度报文检测的装置的结构示意图,所述装置包括:接收模块301、判断模块302以及检测报告获得模块303。接收模块301用于接收深度报文检测请求,所述深度报文检测请求用于请求对报文进行深度报文检测;DPI是对报文进行更深层次的检测,包括对报文进行应用层的分析或基于流量特征的检测,识别出报文对应的应用层业务类型,和/或提取其中的应用层关键信息用于后续业务处理。判断模块302用于根据所述报文的特征,以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断进行内置深度报文检测或进行外置深度报文检测;设置的进行内置深度报文检测和外置深度报文检测的第一条件与报文的特征有关联,根据待检测的报文的特征以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,可以判断出对于待检测的报文是进行内置深度报文检测还是进行外置深度报文检测。检测报告获得模块303用于在确定进行内置深度报文检测时,通知内置深度报文检测模块对所述报文进行检测,获得所述报文的检测报告;或,在确定进行外置深度报文检测时,通知外置深度报文检测模块对所述报文进行检测,获得所述报文的检测报告。如果判断的结果是进行内置深度报文检测,将所述报文发送给内置深度报文检测模块,通知内置深度报文检测模块对所述报文进行检测,并获得内置深度报文检测模块对所述报文进行检测后的检测报告;如果判断的结果是进行外置深度报文检测,将所述报文发送给外置深度报文检测模块,通知外置深度报文检测模块对所述报文进行检测,并获得外置深度报文检测模块对所述报文进行检测后的检测报告。综上所述,本申请实施例根据报文的特征以及设置的进行内置深度报文检测和外置深度报文检测的条件,判断是进行内置深度报文检测还是进行外置深度报文检测,对报文进行检测后,获得报文的检测报告。通过这种方式,内外置深度报文检测之间能够有效地进行业务分担和协同,共同完成报文的检测,不需要进行频繁的深度报文检测功能升级即可实现深度报文检测能力的快速响应,并且在降低内置深度报文检测对网元计算能力影响的同时,也控制了发送到外置深度报文检测的数据流量,从而提升网元的可维护性和转发性能。参阅图4,图4是本申请实施例进行深度报文检测的装置的另一结构示意图,所述装置包括:第一设置模块401、第二设置模块402、请求模块403、接收模块404、判断模块405、检测报告获得模块406、控制模块407以及内置深度报文检测模块408。在图4中,将外置深度报文检测模块409也一并表示出来。第一设置模块401用于设置进行内置深度报文检测和外置深度报文检测的第一条件;第二设置模块402用于设置进行内置深度报文检测和外置深度报文检测的第二条件。其中,进行内置深度报文检测和外置深度报文检测的第一条件包括:根据用户级别、设备级别、业务流级别、报文时延、报文协议类型、报文难易程度、内置深度报文检测模块408的检测能力或外置深度报文检测模块409的检测能力中的至少一种,确定进行内置深度报文检测或外置深度报文检测。进行内置深度报文检测和外置深度报文检测的第二条件包括:根据用户级别、设备级别、业务流级别、报文时延、报文协议类型、报文难易程度、内置深度报文检测模块的检测能力或外置深度报文检测模块的检测能力中的至少一种,确定进行内置深度报文检测或外置深度报文检测。可以根据用户级别、设备级别、业务流级别、报文时延、报文协议类型、报文难易程度、内置深度报文检测模块408的检测能力和外置深度报文检测模块409的检测能力中的其中一种、其中两种、其中三种或者其中三种以上确定进行内置深度报文检测或外置深度报文检测。请求模块403用于请求对报文进行深度报文检测;接收模块404用于接收深度报文检测请求;判断模块405用于根据所述报文的特征,以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断进行内置深度报文检测或进行外置深度报文检测;报文特征可以包括报文端口号、通用路由封装密钥域、因特网络协议第六版流标签、差别服务编码点、因特网络协议目的地址或报文行为特征中的至少一种。检测报告获得模块406用于在确定进行内置深度报文检测时,通知内置深度报文检测模块408对所述报文进行检测,获得所述报文的检测报告,在确定进行外置深度报文检测时,通知外置深度报文检测模块409对所述报文进行检测,获得所述报文的检测报告;其中,报文的检测报告是最终检测报告或者中间检测报告。其中,检测报告获得模块406包括:第一发送单元4061、第一接收单元4062、第一确定单元4063、第二确定单元4064、检测报告获得单元4065、第二发送单元4066以及第二接收单元4067。第一发送单元4061用于在确定进行内置深度报文检测时,将待检测的报文发送给内置深度报文检测模块408;第一接收单元4062用于接收所述内置深度报文检测模块408对所述报文进行检测后的检测报告。第一确定单元4063用于根据所述报文的检测报告,确定所述内置深度报文检测模块408对报文的检测失败;第二确定单元4064用于根据所述设置的进行内置深度报文检测和外置深度报文检测的第二条件,确定对所述报文再进行外置深度报文检测;检测报告获得单元4065用于通知外置深度报文检测模块409对所述报文进行再检测,获得所述报文的检测报告。其中,检测报告获得单元4065包括:发送电路和接收电路。发送电路用于将所述待再检测的报文发送给所述外置深度报文检测模块409;其中,发送电路具体用于将所述待再检测的报文,以及内置深度报文检测模块408检测失败的指示或者内置深度报文检测模块408的检测结果发送给所述外置深度报文检测模块409。接收电路用于接收所述外置深度报文检测模块409对所述再检测的报文进行再检测后的检测报告。第二发送单元4066用于在确定进行外置深度报文检测时,将待检测的报文发送给外置深度报文检测模块409;第二接收单元4067用于接收所述外置深度报文检测模块409对所述报文进行检测后的检测报告。控制模块407用于根据所述报文的检测报告,对所述报文进行业务控制。业务控制包括但不限于:转发、计费、合法监听、服务质量控制、门控、优先级控制、重定向或报文增强中至少一种的控制。其中,第一设置模块401或者第一设置模块401与第二设置模块402与请求模块403、接收模块404、判断模块405、检测报告获得模块406、内置深度报文检测模块408以及外置深度报文检测模块409中的至少一个一体成型。其中,请求模块403、接收模块404、判断模块405、检测报告获得模块406以及内置深度报文检测模块408中的至少两个一体成型。其中,请求模块403、接收模块404、判断模块405、检测报告获得模块406以及内置深度报文检测模块408是该装置的内部模块,内部模块间的操作采用内部消息交互或内部函数调用的方式实现。总之,通过这种方式,内外置深度报文检测之间能够有效地进行业务分担和协同,共同完成报文的检测,不需要进行频繁的深度报文检测功能升级即可实现深度报文检测能力的快速响应,并且在降低内置深度报文检测对网元计算能力影响的同时,也控制了发送到外置深度报文检测的数据流量,从而提升网元的可维护性和转发性能。下面举例说明第一设置模块401或者第一设置模块401与第二设置模块402与请求模块403、接收模块404、判断模块405、检测报告获得模块406、内置深度报文检测模块408以及外置深度报文检测模块中的至少一个一体成型,以及请求模块403、接收模块404、判断模块405、检测报告获得模块406以及内置深度报文检测模块408中的至少两个一体成型。参阅图5,图5是本申请实施例进行深度报文检测的装置的实现流程图,本实施例描述网关设备中实现内外置DPI协同的具体实现方法,初步协议类型识别根据目的端口号进行,DPI接口模块502从DPI管理网元503获取进行内置深度报文检测和外置深度报文检测的第一条件。其中,图4中的第一设置模块401与DPI管理网元一体成型为DPI管理网元503,图4中的接收模块404、判断模块405以及检测报告获得模块406一体成型为DPI接口模块502。实现流程包括:1、DPI接口模块502从DPI管理网元503获取内外置DPI选择条件,如HTTP协议由内置DPI模块504检测,其余协议由外置DPI模块505检测;2、DPI请求模块501向DPI接口模块502发送报文检测请求,其中包括待检测报文的内存指针;3、DPI接口模块502根据报文目的端口号初步判断协议类型,如目标端口为80或8080的报文初步判断为HTTP协议,根据进行内置深度报文检测和外置深度报文检测的第一条件,判断该协议报文是否可由内置DPI模块504进行检测;4、如步骤3中判断由内置DPI模块504检测,DPI接口模块502将待检测报文指针通过内置DPI请求发送给内置DPI模块504进行协议识别和检测;5、内置DPI模块504根据HTTP协议对报文进行检测,并将报文检测结果返回DPI接口模块502;6、如步骤3中判断由外置DPI模块505检测,DPI接口模块502将待检测报文通过外置DPI请求消息发送给外置DPI模块505进行协议识别和检测,可选地同时在该消息中包括如关联报文等DPI上下文信息;7、外置DPI模块505对报文进行协议识别与检测,并将报文检测结果返回DPI接口模块502;8、DPI接口模块502将从内置或外置DPI模块获取的报文检测结果发送给DPI请求模块501;9、根据DPI请求模块501获取的报文检测结果,DPI请求网元(对应图4中的控制模块407)对该报文执行业务控制操作,如QoS控制、计费、缓存和重定向等。本实施例中,所涉及的DPI请求网元内部模块间的操作,可以采用内部消息交互或内部函数调用的方式实现,后续实施例中的内部模块间操作实现方式与本实施例类似,不再赘述。本申请实施例根据报文的特征以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断是进行内置深度报文检测还是进行外置深度报文检测,根据判断的结果,通知内置深度报文检测模块对报文进行内置深度报文检测或者通知外置深度报文检测模块对报文进行外置深度报文检测,获得报文的检测报告。通过这种方式,内置深度报文检测与外置深度报文检测之间能够通过有效地进行业务分担和协同,共同完成报文的检测,不需要进行频繁的深度报文检测功能升级即可实现深度报文检测能力的快速响应,并且在降低内置深度报文检测对网元计算能力影响的同时,也控制了发送到外置深度报文检测的数据流量,从而提升网元的可维护性和转发性能。参阅图6,图6是本申请实施例进行深度报文检测的装置的另一实现流程图,本实施例描述转发设备中实现内外置DPI协同的具体实现方法,进行内置深度报文检测和外置深度报文检测的第一条件和第二条件是根据目的端口号进行的,DPI接口模块602从DPI管理网元603获取进行内外置DPI的第一条件及第二条件。其中,图4中的第一设置模块401、第二设置模块402与DPI管理网元一体成型为DPI管理网元603,图4中的接收模块404、判断模块405以及检测报告获得模块406一体成型为DPI接口模块602。实现流程包括:1、DPI接口模块602从DPI管理网元603获取进行内外置DPI的第一条件,如FTP/DNS协议由内置DPI模块604检测,其余协议由外置DPI模块605检测;2、DPI请求模块601向DPI接口模块602发送报文检测请求,其中包括待检测报文的内存指针;3、DPI接口模块602根据报文目的端口号初步判断协议类型,如目标端口为21/22或53的报文初步判断为FTP/DNS协议,根据进行内外置DPI的第一条件,判断该协议报文是否可由内置DPI模块604进行检测;4、如步骤3中判断由内置DPI模块604检测,DPI接口模块602将待检测报文指针通过内置DPI请求发送给内置DPI模块604进行协议识别和检测;5、内置DPI模块604根据FTP/DNS协议对报文进行检测,如该报文实际并不是上述协议报文,则检测失败,内置DPI模块604将报文检测应答返回DPI接口模块602,其中包括检测失败指示;6、DPI接口模块602根据进行内外置DPI的第二条件,判断该报文可以通过外置DPI模块605进行进一步检测,DPI接口模块602通过外置DPI请求消息将待检测报文发送给外置DPI模块605进行协议识别和检测,可选地同时在该消息中包括内置DPI检测失败指示;7、外置DPI模块605对报文进行协议识别与检测,并将报文识别检测结果返回DPI接口模块602;8、DPI接口模块602将从外置DPI模块605获取的报文检测结果发送给DPI请求模块601;9、根据DPI请求模块601获取的报文检测结果,DPI请求网元(对应图4中的控制模块407)对该报文执行业务控制操作,如QoS控制、计费、缓存和重定向等。本申请实施例根据报文的特征以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断是进行内置深度报文检测还是进行外置深度报文检测,根据判断的结果,通知内置深度报文检测模块对报文进行内置深度报文检测或者通知外置深度报文检测模块对报文进行外置深度报文检测,获得报文的检测报告。通过这种方式,内置深度报文检测与外置深度报文检测之间能够通过有效地进行业务分担和协同,共同完成报文的检测,不需要进行频繁的深度报文检测功能升级即可实现深度报文检测能力的快速响应,并且在降低内置深度报文检测对网元计算能力影响的同时,也控制了发送到外置深度报文检测的数据流量,从而提升网元的可维护性和转发性能。参阅图7,图7是本申请实施例进行深度报文检测的装置的又一实现流程图,本实施例描述路由器设备中实现内外置DPI协同的具体实现方法,初步协议类型识别根据GRE报文的GREkey进行,DPI接口模块702从外置DPI模块704获取进行内外置DPI的第一条件。其中,图4中的第一设置模块401与外置DPI模块704一体成型为外置DPI模块704,图4中的接收模块404、判断模块405以及检测报告获得模块406一体成型为DPI接口模块702。实现流程包括:1、DPI接口模块702从外置DPI模块704获取进行内外置DPI的第一条件,如外置DPI模块704仅检测GREkey范围为0x0000-0x00FF的报文;2、DPI请求模块701向DPI接口模块702发送报文检测请求,其中包括待检测报文的内存指针;3、DPI接口模块702根据报文的GREkey判断该报文是否可由外置DPI模块704进行检测;4、如步骤3中判断无法由外置DPI模块704检测,DPI接口模块702将待检测报文通过内置DPI请求发送给内置DPI模块703进行协议识别和检测;5、内置DPI模块703对报文进行协议识别与检测,并将报文检测结果返回DPI接口模块702;6、如步骤3中判断符合进行外置DPI的第一条件,DPI接口模块702将待检测报文通过外置DPI请求消息发送给外置DPI模块704进行协议识别和检测,可选地同时在该消息中包括如关联报文等DPI上下文信息;7、外置DPI模块704对报文进行协议识别与检测,并将报文识别检测结果返回DPI接口模块702;8、DPI接口模块702将从内置或外置DPI模块获取的报文检测结果发送给DPI请求模块701;9、根据DPI请求模块701获取的报文检测结果,DPI请求网元(对应图4中的控制模块407)对该报文执行业务控制操作,如QoS控制、计费、缓存和重定向等。参阅图8,图8是本申请实施例进行深度报文检测的装置的又一实现流程图;本实施例描述网关设备中实现内外置DPI协同的具体实现方法,初步协议类型识别根据IPv6FlowLabel进行,进行内外置DPI的第一条件通过配置方式存储在DPI接口模块上。其中,图4中的第一设置模块401与接收模块404、判断模块405以及检测报告获得模块406一体成型为DPI接口模块802。实现流程包括:1、DPI请求模块801向DPI接口模块802发送报文检测请求,其中包括待检测报文的内存指针;2、DPI接口模块802根据报文的IPv6FlowLabel及进行内外置DPI的第一条件,判断该协议报文是否可由内置DPI模块803进行检测;3、如步骤2中判断由内置DPI模块803检测,DPI接口模块802将待检测报文指针通过内置DPI请求发送给内置DPI模块803进行协议识别和检测;4、内置DPI模块803根据HTTP协议对报文进行检测,并将报文检测结果返回DPI接口模块802;5、如步骤2中判断由外置DPI模块804检测,DPI接口模块802将待检测报文通过外置DPI请求消息发送给外置DPI模块804进行协议识别和检测;6、外置DPI模块804对报文进行协议识别与检测,并将报文识别检测结果返回DPI接口模块802;7、DPI接口模块802将从内置或外置DPI模块获取的报文检测结果发送给DPI请求模块801;8、根据DPI请求模块801获取的报文检测结果,DPI请求网元(对应图4中的控制模块407)对该报文执行业务控制操作,如QoS控制、计费、缓存和重定向等。本申请实施例根据报文的特征以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断是进行内置深度报文检测还是进行外置深度报文检测,根据判断的结果,通知内置深度报文检测模块对报文进行内置深度报文检测或者通知外置深度报文检测模块对报文进行外置深度报文检测,获得报文的检测报告。通过这种方式,内置深度报文检测与外置深度报文检测之间能够通过有效地进行业务分担和协同,共同完成报文的检测,不需要进行频繁的深度报文检测功能升级即可实现深度报文检测能力的快速响应,并且在降低内置深度报文检测对网元计算能力影响的同时,也控制了发送到外置深度报文检测的数据流量,从而提升网元的可维护性和转发性能。参阅图9,图9是本申请实施例进行深度报文检测的装置的又一实现流程图,本实施例描述转发设备中实现内外置DPI协同的具体实现方法,其中进行内外置DPI的第一条件和第二条件根据DSCP码进行,DPI请求网元设置进行内外置DPI的第一条件及第二条件在DPI请求模块901中。其中,图4中的第一设置模块401与第二设置模块402与请求模块403、接收模块404、判断模块405以及检测报告获得模块406一体成型为DPI请求模块901。实现流程包括:1、DPI请求模块901根据IP报文的DSCP码及进行内外置DPI的第一条件,判断该协议报文是否需要由内置DPI模块902进行检测,例如DSCP码表示转发优先级较高的报文则由内置DPI模块902检测,否则由外置DPI模块903检测;2、如步骤1中判断由内置DPI模块902检测,DPI请求模块901将待检测报文指针通过内置DPI请求消息发送给内置DPI模块902进行协议识别和检测;3、内置DPI模块902对报文进行检测并返回内置DPI应答,如内置DPI模块902检测成功,则应答消息中包括识别与检测结果,如检测失败,则应答消息中包括检测失败指示和/或中间检测结果;4、如步骤3内置DPI应答指示检测失败,DPI请求模块901根据第二条件,判断该报文可以通过外置DPI模块903进行重新检测;5、DPI请求模块901通过外置DPI请求消息将待检测报文发送给外置DPI模块903进行协议识别和检测,可选地同时在该消息中包括内置DPI检测失败指示和/或中间检测结果;6、外置DPI模块903对报文进行协议识别与检测,并将报文识别检测结果返回DPI请求模块901;7、根据DPI请求模块901获取的报文检测结果,DPI请求网元(对应图4中的控制模块407)对该报文执行业务控制操作,如QoS控制、计费、缓存和重定向等。本申请实施例根据报文的特征以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断是进行内置深度报文检测还是进行外置深度报文检测,根据判断的结果,通知内置深度报文检测模块对报文进行内置深度报文检测或者通知外置深度报文检测模块对报文进行外置深度报文检测,获得报文的检测报告。通过这种方式,内置深度报文检测与外置深度报文检测之间能够通过有效地进行业务分担和协同,共同完成报文的检测,不需要进行频繁的深度报文检测功能升级即可实现深度报文检测能力的快速响应,并且在降低内置深度报文检测对网元计算能力影响的同时,也控制了发送到外置深度报文检测的数据流量,从而提升网元的可维护性和转发性能。参阅图10,图10是本申请实施例进行深度报文检测的装置的又一实现流程图;本实施例描述转发设备中实现内外置DPI协同的具体实现方法,内置DPI模块1002设置进行内外置DPI的第一条件及第二条件,进行内外置DPI选择根据目的端口号进行。其中,图4中的第一设置模块401、第二设置模块402与接收模块404、判断模块405、检测报告获得模块406以及内置深度报文检测模块408一体成型为内置深度报文检测模块1002。实现流程包括:1、DPI请求模块1001将待检测报文指针通过内置DPI请求消息发送给内置DPI模块1002进行协议识别和检测;2、内置DPI模块1002根据待检测报文的目的端口号及内外置DPI的第一条件,判断该协议报文是否需要由内置DPI模块1002进行检测;例如目的端口号为80或8080的报文由由内置DPI模块1002检测,否则由外置DPI模块1003检测。如果满足内置DPI模块1002的选择条件,则内置DPI模块1002对报文进行检测,否则直接执行步骤4;3、如步骤2中判断由内置DPI模块1002检测,且内置DPI模块1002检测失败,可选地根据第二条件确定是否由外置DPI模块1003进行重新检测;4、如步骤2或步骤3判断由外置DPI模块1003进行报文检测,则内置DPI模块1002通过外置DPI请求消息将待检测报文发送给外置DPI模块1003进行协议识别和检测,可选地同时在该消息中包括内置DPI检测失败指示和/或内置检测结果;5、外置DPI模块1003对报文进行协议识别与检测,并将报文识别检测结果返回内置DPI模块1002;6、内置DPI模块1002将报文识别检测结果返回DPI请求模块1001;7、根据DPI请求模块1001获取的报文检测结果,DPI请求网元(对应图4中的控制模块407)对该报文执行业务控制操作,如QoS控制、计费、缓存和重定向等。本申请实施例根据报文的特征以及设置的进行内置深度报文检测和外置深度报文检测的第一条件,判断是进行内置深度报文检测还是进行外置深度报文检测,根据判断的结果,通知内置深度报文检测模块对报文进行内置深度报文检测或者通知外置深度报文检测模块对报文进行外置深度报文检测,获得报文的检测报告。通过这种方式,内置深度报文检测与外置深度报文检测之间能够通过有效地进行业务分担和协同,共同完成报文的检测,不需要进行频繁的深度报文检测功能升级即可实现深度报文检测能力的快速响应,并且在降低内置深度报文检测对网元计算能力影响的同时,也控制了发送到外置深度报文检测的数据流量,从而提升网元的可维护性和转发性能。上述装置的结构和功能具体描述可以参见上述的相应的方法实施例。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。