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

目录

  • 简介
  • 背景
    • 流量识别

      • 常用功能
  • 具体功能
    • 做法
    • 特征识别
  • 架构举例
  • 部署方式
    • 串接方式
    • 并接方式
    • 存在问题
    • 检测引擎举例
  • 参考文献

简介

  • 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的编译线程设置了可中断可重入机制,不需要用户等待。
  • 说明,对内存消耗大

参考文献

原文地址:https://www.cnblogs.com/vancasola/p/9692249.html

时间: 2024-08-04 00:38:40

深度包检测(DPI)详细介绍的相关文章

DPI深度包检测

最近在读网络协议方面的论文,接触到DPI技术.博主是个小白,这里写些查到的笔记. 原文出处因为比较多,杂乱.百度文库和许多地方都有,就不贴链接了. 1. DPI 全称为"Deep Packet Inspection",称为"深度包检测".所谓"深度"是和普通的报文分析层次相比较而言的,"普通报文检测"仅分析IP包的层4 以 下的内容,包括源地址.目的地址.源端口.目的端口以及协议类型,而DPI 除了对前面的层次分析外,还增加了

DPI (Deep Packet Inspection) 深度包检测技术

详解DPI与网络回溯分析技术 随着网络通讯技术进步与发展,网络通讯已跨入大数据时代,如何监控各类业务系统的通讯数据在大数据流量中传输质量,以及针对海量的网络通讯数据的范畴中存在少量的恶意流量的检测,避免恶意通讯对主机.网络设备的root权限的安全威胁,和通讯内容的窃取.是网络管理必须面对的一个难题. 有攻击的矛,自有防御的盾,这是自然发展的规律.针对大数据的来临,传统的实时检测与防御已不能胜任对海量数据中存在细微异常的甄别.为此,对原始通讯数据的实时备份逐渐彰显出其必要性,而基于时间窗口的回溯分

Thinkphp框架拓展包使用方式详细介绍--验证码实例(十一)

拓展压缩包的使用方式详细介绍 1:将拓展包解压:ThinkPHP3.1.2_Extend.zip   --> 将其下的 \Extend  文件全部复制 2:将复制的文件放入项目中 E:\wamp\www\thinkphp\ThinkPHP\Extend(安装的时候这里面是空文件),你自己的项目目录 即可 =============================以下是,拓展包中验证码的使用======================================== 比如用到拓展包的验证码:(

通过jarjar.jar来替换jar包名的详细介绍

有时候我们根据一些场景 需要替换第三方jar包的包名,比如Android广告平台sdk,更换他们jar包包名的话,可以防止市场检测到有广告插件,所以,今天就介绍一下如何使用jarjar.jar工具来替换jar包的包名 一.首先下载jarjar.jar工具 地址在:https://code.google.com/p/jarjar/ 二.下载完以后,使用cmd命令--打开到它所在的目录,它有三个命令: (1)java –jar jarjar.jar   查看帮助信息的 (2)java –jar ja

抓包工具-Wireshark(详细介绍与TCP三次握手数据分析)

功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封包,可以截取各种网络封包,显示网络封包的详细信息,包括http,TCP,UDP,等网络协议包.注:wireshark只能查看封包,而不能修改封包的内容,或者发送封包. 一.开始界面 开始界面,如图1所示: 图1(wireshark开始界面) 点击Caputre->Interfaces,出现图2所示对话框,选择需要捕获网络包的网卡,点击start按钮开始抓包. 注:如果

Spring 相关jar包详细介绍

文章转自:http://blog.csdn.net/farawayhome/article/details/6623946 aspectj目录下是在Spring框架下使用aspectj的源代码和测试程序文件. Aspectj是java最早的提供AOP的应用框架. dist 目录下是Spring 的发布包,关于发布包下面会详细进行说明. docs 目录下是相关的文档,包括有Spring api 的javadoc.reference 参考指南.Spring的标签库使用文件及Spring MVC 的M

Iocomp.net 工业仪表盘控件包详细介绍

Iocomp 工业仪表盘控件包(.net版)包括多种用来创建专业的仪表和测量.工业控制.工业监控等相关的应用程序的控件包,包括仪表盘控件, 开关控件, 实时曲线控件, LED灯控件等等. 所有的控件均为100% 托管代码,并且支持Microsoft / Borland/CodeGear/Embarcadero等不同的开发环境. 包括三个不同的版本,终极版(ultimate),专业版( Pro Pack) 和 曲线版(Plot Pack.) 控件包中的所有控件都是面向对象的设计,并且共用通用的底层

[转]详细介绍java中的数据结构

详细介绍java中的数据结构 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类.一起来看本文吧! 也许你已经熟练使用了java.util包里面的各种数据结构,但是我还是要说一说java版数据结构与算法,希望对你有帮助. 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类. C

linux 防火墙详细介绍

1.其实匹配扩展中,还有需要加-m引用模块的显示扩展,默认是隐含扩展,不要使用 -m状态检测的包过滤-m state       --state {NEW,ESTATBLISHED,INVALID,RELATED}  指定检测那种状态-m multiport 指定多端口号      --sport      --dport      --ports-m iprange 指定IP段      --src-range ip-ip      --dst-range ip-ip-m connlimit