深度包检测(DPI)详细介绍

时间:2024-03-03 08:39:24

简介

  • DPI(Deep Packet Inspection)深度包检测技术是在传统IP数据包检测技术(OSI L2-L4之间包含的数据包元素的检测分析)之上增加了对应用层数据的应用协议识别,数据包内容检测与深度解码。
  • 既可以检测2~4层,又可以检测应用层。

背景

安全问题、流量识别、大数据(海量数据挖掘),推动网络识别技术的发展

流量识别

  • 指将网络中的数据流识别成对应网络协议的过程。

常用功能

  • 通过对流量的识别来掌握网络中承载的数据内容
  • 分析出用户的网络行为
  • 同时根据链路状态及功能需求,对网络流量进行限速和控制等处理
  • 通过特征匹配技术,将数据包在封装过程中所添加的各层头部信息解析并提取,然后与已有规则库中特征信息进行匹配,从而进行流量的识别

  • 可以用于识别来自哪个应用,比如:qq、http、pplive

具体功能

  • 业务识别: 其中第一类业务可以通过五元组来进行识别,此类业务IP地址和端口固定。第二种需要通过DPI技术来进行深度检测,通过解析数据包来确定业务具体内容和信息。

  • 业务控制: 可以根据既定的策略对网络进行配置,从而对业务流实现控制,主要包括转发流向、限制带宽、阻断、整形、丢弃等处理。

  • 业务统计: 深度包检测技术的业务统计功能是基于识别结果的,对一定时间内的流量行为进行统计流量流向、业务占比、访问网站TOPN等。统计应用类型的使用比率调整该业务的服务优先级,统计用户正在使用哪种业务进行视频播放、即时通讯、购物支付以及游戏娱乐,也可以统计出消耗网络带宽的非法P2P、VOIP
    业务等等。

做法

  • 深度包检测技术可以高效的识别出网络中的各种应用,且能够将识
    别粒度细化到业务的具体动作

特征识别

  • 提取流量的特征字符串:描述性较差,需要将流量特征进行遍历,才可以将流量全部识别出来,通常使用“正则表达式”来概括性描述,
  • 正则表达式将可能出现的形式进行囊括遍历:此种方式有较强的描述能力,但是识别性能较差,对设备的性能消耗很大。
  • 特定比特流模式:主要是对应用层载荷信息及数据流信息进行识别,此类信息是以十六进制或者二进制形式描述应用层的信息,规则描述性较差,但匹配效率很高。

架构举例

  • 收包模块
  • 策略配置模块
  • 识别特征下发模块
  • 特征下发模块
  • 规则库更新模块
  • 协议分析模块
  • 结果通知模块
  • 流量统计模块:该模块通过协议分析得到5元组,将5元组交至转发设备,由转发设备统计
    流量并上报数据,最后由DPI输出报表。外置应用查看流量统计接口。

部署方式

串接方式

  • 直接将DPI设备以串接的方式部署在网络链路之间。
  • 串接方式以直连的形式接入,不需要进行网络连接配置,直接通过数据链路层二层透传,串接方式对设备性能和可靠性都有很高的要求。
  • 串接方式的优点在于较好的网络控制,能够及时对流量进行阻断和整形。
  • 但是该种方式也引入了故障点的缺陷,为增强设备的可靠性,通常在设备前段加入光路保护器,从而减小在设备升级或故障时对现网的影响

并接方式

  • 并接方式是采用分光器等设备将网间的信号镜像到旁路的DPI设备当中,并不影响原链路的数据传输。
  • 采用并接方式,通常用于业务的识别和统计,上网日志的留存等,在网络控制方面,只能通过干扰的方式进行流量控制,不能对网络流量进行直接的控制和管理。
  • 对于TCP流,并接方式通过发送reset或6n分组,终止连接来进行控制。
  • 对于UDP流而言,主要是发送伪造分组,劣化通信质量来进行网络干扰。
  • 并接方式可靠性高,对现网业务无任何影响,设备性能要求低,可以适度缓存,流量进行识别即可,没有转发的需求,

存在问题

  • 设备迭代困难
  • 重复部署
  • 流量重复复制给DPI设备
  • 可视化不足
  • 没能虚拟化

检测引擎举例

  • 检测引擎自身包括三个部件:协议解析器、算法引擎和检测结果处理,下面主要对其关键部分的协议解析器进行说明。现阶段额度协议解析器的职责主要有:
    1)协议确认: 进入HTTP、HTTPS等协议解析器的条件都是固定端口映射。但越来越多的互联网应用正试图通过80、443等传统端口来逃逸传统网络设备的检测和控制。因此必要的协议确认是防止这种逃逸的前提。

2)协议切分: 协议切分是在流(会话)的基础上进一步细分出“检测流”或者叫“事物”的概念。例如:HTTP的一次transaction、FTP的一次用户登录行为、SMTP/POP3的一次邮件发送/接收等,都抽象成一条“检测流”。有时一条流可以传输多次检测流,甚至同时有并发的检测流出现。协议切分对于关心检测流的业务模块有着重要意义,例如内容过滤和应用审计。

3)协议域切分:协议域切分是在最小的粒度上细分报文。将检测流分成Header和Body部分,Header还要细分成各个Field,包含Field Value和Field Data部分。协议域切分有助于判别该头域是否需要检测,判定该头域命中的特征与之定义是否吻合,以及识别提取审计日志信息的关键位置。

4)解码: HTTP的URI部分和邮件协议的Subject部分等进行了编码,需要协议解析器进行解码,大多数情况下需要我们将解码后的字段送入算法引擎。有些情况又有个别特征基于编码前定义,需要我们将原始字段送入算法引擎,但同时发生会对性能产生一定损耗。

5)解压缩:HTTP可以用gzip、x-gzip、deflate等方式传送压缩后的数据内容,在用户的配置要求下解析器会将内容解压缩后送入算法引擎,以帮助我们发现压缩数据中的需要被检测出的特征。

6)SSL卸载:在用户的配置要求下,可以通过SSL卸载技术尽可能还原HTTPS中的原始流量,进行更加全面的检测和控制。

7)协商协议识别:FTP、SIP以及很多加密方式的P2P协议都采用协商甚至多次协商的方式来进行数据传输。对应的协议解析器需要能够通过控制通道报文的解析识别出协商协议的数据通道的五元组特征,通过协商关联表的匹配来识别其数据通道。

  • 当然,基于这些协议分析完成之后,通过算法引擎可以匹配查找可以发现相关的检测结果,同时送到后续的动作设计模块进行处理。在内核态,DPI支持大量的动作以及它们的组合,各个DPI的业务模块都可以基于规则或者规则分类来配置报文的动作。这些动作包括Permit/deny、Drop丢掉后续报文、Redirect或者发送双向TCP Reset断开连接、生成攻击日志告警等。

  • H3C 的DPI软件引擎具有内存可伸缩特性。DIM用户态可动态感知需要加载软件引擎的单板或者子设备(的内核态)是否有充裕的内存,根据内存剩余情况和用户的配置选择最优的引擎存储方式,然后启动编译线程完成编译下发工作。海量特征的编译下发是一个CPU密集型过程,考虑到可能遇到的配置频繁变更或者特征库升级调度,DIM的编译线程设置了可中断可重入机制,不需要用户等待。

  • 说明,对内存消耗大

参考文献