同意胡腾的答案。主要是通过DPI(Deep Packet Inspection)来实现的,一般称之为「深度报文检测」或「深度包检测」。从字面意思来讲,所谓「深度」是相对于普通的报文检测而言的。
1. DPI 深度报文检测 普通的报文检测仅分析IP包的层4以下5元素:源地址、目的地址、源端口、目的端口及协议类型。而DPI除了对以上5元素进行分析外,增加了应用层分析,用来识别各种应用及其内容。如下图所示:
普通报文检测是通过端口号来识别应用类型的。如端口为80时,则代表为上网应用。这样的情况下会产生很多风险,一些病毒或者垃圾应用会采取假冒的端口号来伪装成合法报文。那么,普通检测方法就没办法识别了。
而深度报文检测是对报文内容和协议特征进行检测的,非法的应用可以隐藏和变换端口号,但是比较难以隐藏应用层的协议特征。
2. DPI 常用识别技术 不同的应用通常会采用不同的协议,而各种协议都有其特殊的指纹,这些指纹可能是特定的端口、特定的字符串或者特定的Bit序列。 基于特征的识别技术,正是通过识别数据报文中的指纹信息来确定业务流所承载的应用。
像VoIP/FTP/在线游戏等业务普遍采用控制流与业务流分离的方式,通过控制流完成握手,其业务流没有任何特征。因此首先由应用层网关识别出控制流,并根据控制流协议分析识别出业务流的端口和对端网关地址等信息,然后对业务流进行解析,从而识别出相应的业务流。
基于终端已经实施的行为进行分析,判读用户正在进行的动作或即将实施的动作。行为识别技术通常用于无法根据协议判断的业务识别。如垃圾邮件等。
3. DPI 部署方式 目前有3种部署方式:
- DPI内置在GGSN(Gateway GPRS Support Node,GPRS网关支持节点 )中,这种属于全球的主流方案,也是3GPP的标准;
- DPI外置于以上图中的Gn或Gi口中,这种方式流程比较复杂,计费困难,运维难度大,方案也不是很成熟;
- 外置+内置的折中方案。
4. DPI实现的功能 - 应用分析——网络流量构成分析、性能分析、流向分析等;
- 用户分析——用户群区分、行为分析、终端分析、趋势分析等;
- 网元分析——根据区域属性(市、区、街道等)、基站负载情况进行分析等;
- 流量管控——P2P限速、保证QoS、带宽保障、网络资源优化等;
- 安全保障——DDoS攻击、数据广播风暴、防范恶意病毒攻击等。
5. DPI如何识别App数据 判断DPI能力如何,首先看协议识别的数量,就是能够识别多少种网络中运行的应用协议。能够识别的越多,则DPI的控制就越精确,控制范围就越广;其次是从新的协议出现到能够识别响应速度。
DPI的技术核心点在于如何维护一个高准确性、高实时性的应用特征库,进而才能保障检测的准确性和实时性。所以,当前误报及漏报率还是比较高的,也不能涵盖所有应用协议。
以微信举例,主要是做了针对性的协议监控, 通过算法对特征数据和字符串进行匹配, 对微信的私有协议解析进行识别。 6. 总结 现在很多厂商都宣称自己可以通过智能流量建模,自动发现业务特征及云端识别(以上两点有点类似杀毒软件),通过全网的分布式部署来进行检测和管控,目前还做不到完全准确的、实时的检测和识别。但对于流量的可视、可管和可控对运营商保障业务,降低安全风险有很大的意义。
--------------------------------------------------------------------------------------------------------------------------
20130328 update: 很多人提到GGSN内置DPI性能会下降,实际上现在2G/3G/4G都向「融合」的分组网SAE(System Architecture Evolvement)演进,统一的分组网进行智能化的深度报文解析以及计费策略的控制。性能在技术上不是问题。
另外,如上图所示,可以在Gn口或IuPS口使用分光器做镜像,部署探针来采集数据并上报相应管理平台,进行端到端的信令数据分析。