一种以DPI为核心的网络流量识别方案

时间:2022-04-28 07:29:12

一种以DPI为核心的网络流量识别方案

摘要:网络流量的识别是流量控制、计费和内容安全等需求实现的前提条件,是适应当前网络急速增长和解决当前网络威胁的有效途径。提出了一种以深度数据包检测(Deep Packet Inspection,DPI)为主要识别技术,结合端口、统计等多种识别技术的识别方案。以谷歌的Google Talk为例,对各种场景的应用和采用不同协议的情况,进行了细致的分析。测试结果表明,该方案能精确地识别各种类型的协议。

关键词:流量识别;深度数据包检测;特征匹配

中图分类号:TP302 文献标识码:A 文章编号文章编号:16727800(2014)001002303

作者简介作者简介:吴军(1964-),男,硕士,江西理工大学信息工程学院副教授,研究方向为嵌入式系统及SOPC技术研究及应用;杜泽华(1989-),男,江西理工大学信息工程学院硕士研究生,研究方向为流量识别。

0 引言

伴随着大量新型网络应用的研发,很多应用和冗余信息充斥着网络,导致带宽滥用,多种网络攻击横行,对网络互连的企业或个人造成了很大的威胁。要想解决这些问题,就必须对流量进行识别并分类处理。流量识别作为基础,是分类处理的先决条件。本文综合了多种识别技术,能有效地识别现网流量。

对网络监控的迫切需求和反监控技术的不断演变是流量识别技术持续更新的动力。Salman A. Baset和Henning G. Schulzrinne[1]采用了早期的端口识别,利用端口80和443对Skype部分场景进行识别阻断。这种传统的端口识别对端口固定的应用有很好的识别效果,但是由于动态端口、规避端口和非常规端口的采用使纯粹的端口识别显得苍白无力。在这种情况下,提出了深度包检测识别方法,例如,南京邮电大学的李鸿斌[2]设计了DPI系统对流量进行有效识别;Anat BremlerBarr等[3]通过DPI识别算法的改进,使特征匹配速度上升了60%。DPI识别技术具有识别速度快、准确度高、原理简单的优点,但是存在两个缺陷,一是对加密协议的识别,二是无法自动识别新推出应用,需重新分析并提取特征。针对DPI识别的第一点缺陷,统计识别应运而生,统计识别提取业务流的发包间隔、包长、包数和连接等特性作为特征信息,巧妙地突破了加密协议无法识别的困境。例如,美国麻省理工学院的Fivos Constantinou[4]统计了P2P协议的基本特性,进而识别P2P流量;李兵等[5]提出了一种将统计识别与主机行为相结合的VOIP识别方法;随后,北京邮电大学的米淑云[6]提到了一种DPI与深度流检测(Deep Flow Inspection,DFI)相结合的识别方法,解决DPI和DFI单独识别时存在的局限性。

端口识别速度快但通用性不高;DPI识别准确度高、速度较快,然而无法识别加密流量;统计识别能识别加密协议,但易误报;DPI和DFI结合的方式对设备性能要求较高,以上各种识别方法优缺点都相当明显。本文介绍了一种有机结合各种识别技术的方法,利用这种方法,能对现网流量达到很高的识别效果,并以谷歌公司的即时聊天软件—Google Talk为例进行了分析。

1 流量识别网络拓扑与识别方案设计

流量识别中,流作为最基本的单位,实现原IP到目的IP之间的通信,每条流都包含了唯一的五元组信息,即[原IP,原端口(Port),目的IP,目的端口(Port),传输协议(TCP/UDP)],凭借这个特性,流能够被唯一标识出来,在此基础上对其包头和负载进行检测,提取有效特征。本章介绍流量识别的网络拓扑,如图1所示,接着,详细地讲解各种流量识别技术的原理,最后通过分析对比,得出最优解决方案。

1.1 流量识别网络拓扑

防火墙是一种高级访问控制设备,是流量识别的硬件载体,如图1所示,通过直连接入网络,设置在网络不同安全区域之间。它既是内网流量的入口,也是通向外网的必经之路。通过企业下发的安全策略,防火墙实现控制出入的网络流量。

1.2 识别技术分析和识别方案

流量识别技术经过这么多年的发展、演变,研究者提出了很多具有针对性的流量识别方法。

端口识别:以流量的五元组中端口号作为识别特征。如表1所示,很多应用层协议都会在IASA上注册端口,从而依靠这些端口对协议进行识别,但是由于应用层协议常使用公用端口、动态分配端口、非常用端口[7]等,使得纯粹的端口识别已经不能达到预期效果。

单包识别:单个包征足以标识出所在流的情况下,特征都是从此单个包中提取。凡属命中此数据包的规则,必定会命中包含此数据包的流。每条流有多个数据包,而特征一般出现在前几个包中,运用此识别方式,必须设定扫描的数据包个数,以降低系统消耗。

多包识别:当特征存在于一条流的多个包中时,每个包都对应提取出单包特征,且标出各包之间是否存在先后顺序、是否同方向、是否需要依次识别的关系,当这些关系和多个单包特征同时满足时,这条流才能被识别。多包识别方式较单包识别、端口识别对系统性能要求更高,所以只有在特征分散在多个包中的情况下,才采用多包识别。

应用层网关识别:当业务中信令流和数据流分离时,如SIP、H323协议,数据流没有指纹特征,然而它占有此条流大部分的数据量,是数据传输的部分。在这种情况下,我们只有先识别出信令流,然后在信令流中,解析出针对数据传输所商议的IP和端口号,将此对IP、端口号和传输层协议加入关联表,关联出数据流[8]。

统计识别:以流内的包长、包数、发包间隔、流间的发流间隔、连接次数等作为统计对象[9]。统计识别可以识别加密和其它无明显特征的流量。

关联识别:包括关联条件和关联项,有满足关联条件的流量流经系统时,系统就此流的三元组信息作为关联项,加入关联表中,在此后指定的一段时间内,但凡有满足此三元组信息的流都被识别为特定协议[10];关联条件可以是端口、负载信息,甚至是已经识别出来的协议。如表2所示,三元组信息可以分为4类。

如表3所示,通过对各种识别方法的综合分析,得出流量识别方案如图2,报文经过分片重组后,产生有序、完整的流量,这些流量先解析出包头信息,如果能和存在的端口特征或关联表项匹配成功,就直接输出匹配结果;如果失败,则需解析出负载信息,进行DPI匹配,值得注意的是端口也可以作为DPI识别的一个流量特征,根据识别的准确度和对系统性能开销的要求,依次使用单包识别、多包识别、应用层网关识别对负载进行匹配,之前的识别方法匹配成功,直接报结果,失败则运用下一种识别方法;在此过程后,凡属有指纹特征的流量都已经正确识别,余下的流量只有是加密后流量,此部分流量由于没有指纹特征,所以送入统计识别模块,将其与统计特征进行匹配,匹配成功,则报结果;失败,就输出“无法匹配(Unknow)”。

3 Google Talk实例分析

Google Talk(Gtalk)是Google的即时通信软件,包括4个场景:登陆、文字聊天、语音、文件传输,为控制此软件,分别将此软件细分成3个应用:BaseGtalk、Voip Gtalk、Transferfile Gtalk,其中,Base Gtalk提取了登陆、文字聊天两个场景的流量特征,Voip Gtalk提取了语音场景特征,TransferfileGtalk提取文件传输场景特征。

登陆、文字聊天:首先,Google talk客户端通过访问DNS服务器,解析出Google Talk的IP地址,然后通过HTTPS协议访问到Google Talk服务器,Google Talk遵从Jabber通信协议;Jabber可以实现和多种即时通讯对接,是明文传输。

图2 识别流程

基于Jabber协议的一条流是这两个场景的关键流,只要识别此条流,就能进而控制这两个场景。要从Jabber中,细分出BaseGtalk应用,所以提取的特征既要有Google talk特征,也要有Jabber特征,此条流采用TCP传输,无固定端口,不能使用端口识别。采用单包识别,样本如图3所示,提取包的前8个字节“

图3 文字聊天流的信息

文件传输:登陆Google Talk服务器后,采用HTTPS协议传输文件。

HTTPS是经SSL协议加密后的HTTP协议,目的端口是443,常用于保密信息的传输。经过长期对HTTPS协议大量样本的分析,发现上行包中开头3个字节是“x16x03x01”或“x17x03x01”,这个特征和端口443可以确定流量是基于HTTPS的协议,然后从流量中提取包含Google Talk的特征“”,细分出TransferfileGtalk。

语音:语音场景分两类流。先与Google Talk服务器建立信令流,协商节点服务器的IP和端口,然后与节点服务器之间建立数据流,进行数据传输。其信令流是基于HTTP协议,采用单包识别;数据传输流全是乱码,无法提取端口、单包、多包特征,可以采用应用层网关识别和统计识别。

基于这种传输机制,VoipGtalk采用应用层网关识别,先将信令流识别出来,然后关联出数据流。信令流提取前3个字节“GET”,确定是HTTP协议细分的,然后提取任意偏移位置的“/session/phone”,确定是 Google Talk的语音信令流。在此流下行包中,解析出数据流协商的IP、Port、传输协议,并加入关联,识别出数据流。假若要采用统计识别,则统计数据流包长。数据流中,单数包的包长为56,双数包的包长为68;在采用统计识别时,应统计一些独有特征,以防误报。

图4 部分协商数据流

4 性能测试

识别方案的设计意图是为了高精准度地识别流量。本文从识别率和误报率两个方面考虑,对系统性能进行测试,测试应用属于P2P、Voip、流媒体、C/S四类流量,测试类型有P2P下载、视频共享、即时通讯、游戏等用途。如表4所示,识别结果准确率高,不存在误报的情况,而且采用的方法是提取关键流,保证了对场景的控制。

5 结语

为了解决现网中新型应用带来的网络问题,本文通过对各种流量识别技术的深入分析,设计出了一种流量识别方案,此方案是以深度包检测为主,结合端口、统计等识别技术。以Google Talk的特征提取为例,并经过识别率和误报率测试,识别精度高,识别范围广,已经达到了现网流量分类的需求,为下一步流控打下了基础。随着加密协议的演变,加密流量的识别对本套方案提出了新的挑战,这和特征提取的自动化一样将会成为笔者继本文后的两个研究方向。

参考文献:

[1] SALMAN A, BASET, HENNING G, et al. An analysis of the skype peertopeer internet telephony protocol[J].Proceedings of 25th IEEE International Conference on Computer Communications,2006.

[2] 李鸿斌.P2P网络深度包业务识别_DPI_方法的改进[D].南京:南京邮电大学, 2011.

[3] ANAT BREMLERBARR,YOTAM HARCHOLY,DAVID HAYY.Spacetime trade offs in softwarebased deep packet inspection[J].High Performance Switching and Routing (HPSR),2012.

[4] FIVOS CONSTANTINOU,PANAYIOTIS MAVROMMANTIS.Identifying known and unknown peertopeer traffic[J].IEEE NCA 06 conference,2006.

[5] LI BING, JIN ZHIGANG,MA MAODE.VoIP traffic identification based on host and flow behavior analysis[C].Proc.of WiCOM’10,2011.

[6] 米淑云.IP网络流量监控系统的设计与实现[D].北京:北京邮电大学,2009.

[7] 郭磊.面向高速网络管控的多业务识别关键技术研究[D].郑州:中国人民信息工程大学,2012.

[8] 刘创,辛阳.DPI流量检测关键技术的分析与设计[C].北京:2012全国网络与数字内容安全学术年会论文集, 2012.

[9] 张寅.基于统计特征的互联网流量分类系统[D].上海:上海交通大学,2012.

[10] 梁明, 毕世飞.关联识别表更新方法、关联识别方法、装置及系统[P].中国:N102571956 A.2012.

上一篇:软件项目成本估算研究 下一篇:改进的元胞自动机人员疏散仿真模型研究