随着互联网和宽带技术的发展,P2P的应用日益广泛,它给我们的生活带来了很大的方便,是资源可以充分的共享,但是也带来了诸如知识产权等各个方面的问题。P2P软件对于网络带宽的占用和消耗以及VOIP对于传统的电话运营商的业务的挤占,P2P的带宽资源占用问题(例如:BT下载),P2P的业务监管问题也日益严重(例如:Skype电话)。特别是Skype使用加密协议并且所有资料对外界完全保密,对它的监管问题已经成为全球性的难题。尤其像是公司,员工上网习惯很可能直接关系到公司信息的安全以及在工作时间有效的管理员工的上网行为。
图1 P2P网络结构图
1)服务供应商使用DPI来分离网络流量
2)大型企业可以使用DPI来管理网络性能拥有大型网络覆盖很多地理区域的企业在他们的内部网络间可能运行着完全不同的通信类型。
3)提高企业网络的安全性其可以定位有害流量,并从网络中去除,企业可以使用DPI设备以防止非法的文件共享,从而有效的保护公司的内部文件等。
随着P2P技术(如图1所示)的不断发展成熟以及P2P应用的不断增多,人们对P2P越来越熟悉并且也越来越依赖。由于应用需求不同,相关的研究侧重点还是有所不同的。从应用角度来看,目前P2P技术研究主要涉及到以下几个领域:
1)提供文件和其它内容共享的P2P网络;
2)P2P对等计算和存储共享;
3)基于P2P方式的协同处理与服务共享平台。
基于以上的事实P2P软件已经深入到我们网络生活的各个角落,但与此同时其也面临着很大问题:
1)对带宽的霸占。
2)上下行流量基本对称性,与一般的互联网应用不同,P2P应用产生的上下行流量基本相等,甚至上行流量大于下行流量,而现在的网络大部分用户都是选择ADSL接入的方式,其上下行带宽是不对称的,所以P2P软件对于此类网络也会有很大影响。
DPI由协议识别引擎程序DPI-CBB和知识库(DPI-DPL)两部分组成。协议识别引擎程序以静态链接库的形式发布给用户,支持C语言程序开发接口,可以快速集成到各种需要对网络数据进行协议和应用程序精确识别的产品中。知识库是一个二进制数据文件,保存了各种应用层协议和应用程序多持有的识别特征,在进行数据识别时候,识别协议引擎会对输入的数据进行特征分析,并与知识库中各种识别特征进行比较,根据比较数据得出识别结果。基于DPI技术的带宽管理解决方案与我们熟知的防病毒软件系统在某些方面比较类似,即其能识别的应用类型必须为系统已知的,基于DPI技术的带宽管理系统要维护一个应用特征数据库,当流量经过时,通过将解包后的应用信息与后台特征数据库进行比较来确定应用类型;而当有新的应用出现时,后台的应用特征数据库也要更新才能具有对新型应用的识别和控制能力。于此同时,不同的软件之间能提取准确的特征字段,以避免不必要的不同软件之间的误识别。还要及时的更新特征数据库,以应对网络中不断出现的软件更新以及特征字段的变化导致数据流量无法识别和阻断。
图2 实验室网络结构图
首先,在一个局域网内有多台主机,通过一个交换机相连,交换机相连一个双网卡的linux服务器,在服务器上运行DPI检测程序,由此连接网络的网关,因为在实际测试中是模拟的一个真实的网络环境所以不能在一个局域网内测试对于特定网络流量阻断情况的检测,因为这样可能会有局域网检测的局限性,不能很好的模拟真实的网络的下的阻断效果。于此同时在交换机上连接无线设备可以检测无线设备软件的阻断测试。
而我们在其中一个PC上操作一个软件与外部互联网通信时会产生流量,其实我们用wireshark软件抓取特定软件的数据流,与此同时要避免其他网络流量对于正常的网络流量的干扰,在抓取一定数量的数据包后,分析软件在那种场景下产生哪些数据流量,针对于此数据流量其特征关键字是什么,在对于多个数据包比对后可以确定其是相对不变,就可以提取作为软件流量的特征。而其中的DPI程序主要来自OpenDPI engine在linux操作系统下进行安装,并进行其特征数据库的书写。
例如一个HTTP的连接在三次握手后建立连接,在第一个数据包到达时其应用层信息肯定是由GET开头,会有Referer和host等信息,所以用GET和Referer信息足可以判断是HTTP服务,然后再基于Referer中的信息可以判断其流量是属于哪个网站,并且其中还有诸如jpg、image、png等信息可以判断出其是图片的信息。
众所周知的是Linux操作系统提供了IPtables的防火墙可以供用户针对特定服务去限制和阻断特定的协议的流量,其有FORWARD、PREROUTING、POSTROUTING等几个表来决定防火墙对于数据流量的处理,但是IPtables有其很大的局限性,其只能识别TCP层的协议,无法对于应用层数据检测,所以面对数据量是随机的P2P的流量的时候IPtables就显得束手无策,此时只能使用DPI技术来对P2P软件进行管理和监控。
由于P2P协议的特殊性,其往往是通过建立多个连接后实现对网络资源的极大消耗,而起建立连接和实际大的数据流往往是分开的,如果我们专注于网络中大量的数据流,我们会抓到一些随机特征的数据包这些数据包很难提取我们所需要的特征。通过分析特定P2P软件,我们发现很多P2P软件选择数据流和控制流分行的办法,所以可以先对于特定P2P软件建立控制流的过程进行识别和控制,从而达到控制其主要数据流的目的。而其控制流中肯定包含了应用层软件的特定的信息。
本文介绍了基于DPI技术的P2P识别和控制系统。系统运行于Linux系统之上,可以对特定P2P软件进行流量控制,而针对P2P软件的特殊性,选择了控制检测其控制流,当有新的P2P业务出现时,需将针对该业务的识别和控制策略添加到系统中,系统就可以实现对该业务的识别和控制。目前,P2P技术的应用越来越广泛,使用的技术也越来越复杂,尤其是针对于加密过后的P2P流量的识别上还有待提高,这对P2P识别控制系统又提出了新的需求。因此,本系统还需要进一步提高和完善。
[1]锐捷网络.DPI技术白皮书[EB/OL].http://www.ruijie.com.cn.
[2]李芸.P2P流量识别技术与管控技术应用研究[J].信息与通信技术,2008.06:18-24.
[3]李君,王攀,孙雁飞,王浩云.P2P业务流量识别、分析和控制研究[J].计算机工程,2006年6月.
[4]陈海军,李仁发,杨磊.基于Linux内核扩展模块的P2P流量控制[J].计算机工程,2007年1月.
[5]中华人民共和国通信行业标准—DPI设备测试方法[S].
[6]米淑云.IP网络流量监控系统的研究与实现[D].北京:北京邮电大学,2009.
[7]华为技术有限公司.Quidway SIG业务监控网管[S].2008:1-6