1. 背景
识别是一种按照流量中的应用/协议特征对流量进行分类的机制。把互联网中的不同应用识别出来,从而可以实现精细化、差异化的管理。
早期的流量识别也称协议识别,主要按照应用协议进行区分。随着互联网尤其是移动互联网的发展,应用程序逐渐增多。一方面,不同的应用程序会使用相同的应用协议和端口号,比如网页视频和网页游戏都是使用HTTP协议和80/8080端口进行数据传输;另一方面,一个协议可以被用于多个应用软件,一个应用软件也可能会使用多个协议,比如下载和流媒体都可能使用标准P2P协议,迅雷应用软件使用HTTP、P2P、FTP等多个协议进行文件传输。按照协议进行识别就不够准确了,所以目前互联网流量相关的识别,主要都倾向于按照具体的应用程序来进行区分,一般都称为应用识别。
2. 应用识别的方法
- DPI(Deep Packet Inspection)识别-特征识别技术
特征识别技术是应用识别的最基本技术,它通过识别报文中的特征信息来确定业务流量所承载的应用。
不同的应用通常会采用不同的协议,而不同的应用协议具有各自的特征,这些特征可能是特定的端口、特定的字符串或者特定的比特序列。除了检测报文的传统五元组信息外,特征识别技术还会通过检测报文的应用层信息以获取更多用于识别应用的特征。
大部分应用都可以通过DPI完成识别。比如:POP3通常使用TCP的110端口;SMTP使用TCP的25端口;QQ客户端使用时通常从UDP的8000端口开始,报文净载荷以02开始、03结尾。
- DFI(Dynamic Flow Inspection)识别-关联识别技术
多通道协议的控制通道和数据通道是分开的,如FTP、SIP、H.323等,这些协议通过控制通道协商用来建立数据通道的通信参数(如端口信息等),通过数据通道传输具体的业务数据。特征识别技术可以识别出控制通道的应用,但对于数据通道却无能为力,因为数据通道是动态协商出来的,而且没有任何可以利用的特征。
关联识别技术的前提依然是特征识别,首先通过特征识别技术识别出控制通道报文承载的应用,同时从控制通道报文中提取数据通道的信息并记录在应用识别关联表中,后续根据关联表识别出数据通道报文并标记为相应的应用,从而实现对多通道协议报文的应用识别。
FTP被动传输的识别就是比较典型的DFI识别例子。通过识别TCP21端口的FTP控制报文,解析出协商好的数据传输通道端口,后续数据中的该传输端口则对应为FTP数据传输。
- AI识别-行为识别技术
行为识别技术比前两种技术更复杂。
互联网上有一些复杂的应用,我们很难选择特征关键字作为识别的特征;还有很多加密应用,由于数据加密导致特征模糊化而无法识别。已有的特征识别技术无法基于常规特征识别出一些复杂的应用,而行为识别技术通过提取报文的行为特征来识别出报文承载的应用。不同的应用可利用的行为特征不尽相同。要准确识别一个应用,必须抓取海量的流量样本,分析提取出独特的行为特征。
通常上下行流量比例、报文发送频率、报文长度变化规律等,都是可以利用的行为特征。行为识别技术通过综合考察和选择多种行为特征指标实现精准的应用识别。
不同的识别技术适用于不同类型的协议,无法相互替代。通常情况下,为了达到较好的识别效果,需要综合运用以上几种技术。
3. 应用识别的使用
识别出应用,针对不同的应用设置不同的应用控制策略,以实现精确化、差异化的管控需求是应用识别的目的。当前,应用管控手段主要有:
基于应用的访问控制:允许或禁止用户访问某些应用,比如:允许办公相关的应用访问,禁止访问影响办公效率的视频/游戏类应用;
基于应用的带宽管理:限制用户访问某些应用的带宽,比如:限制视频/游戏类应用的带宽为100M,保证办公相关应用的带宽为200M;
基于应用的智能选路:用户从指定链路访问某些应用,比如:办公相关应用的访问走高速链路,视频/游戏类应用的访问走低速链路。