福克斯10t油耗多少:P2P流量识别方法的研究及实现

来源:百度文库 编辑:中财网 时间:2024/04/27 21:19:38
P2P流量识别方法的研究及实现 

摘要近年来,网络新技术层出不穷,有对等网络、VoIP、P2P流媒体等。IPv4网络是一个“尽力而为”的网络,主要提供数据业务服务,对P2P流等非传统数据业务的应用则显出很多无奈,QoS是无保证的。P2P网络“带宽吞噬”特性造成了网络带宽的巨大消耗,甚至会引起网络拥塞,大大降低了网络性能,劣化了网络服务质量。因此对P2P流量进行识别和控制是解决问题的关键。

  首先介绍了P2P流量识别方法,分析了它们的优缺点;然后提出一种基于流传输特性的P2P流量识别模型,此模型的创新点在于不要检测数据净荷就可以识别P2P流量,提高了识别的效率;最后对P2P流量识别模型进行了分析。

引言

  P2P技术出现后网络计算模式从集中式向分布式转移,网络应用的核心从中央服务器向网络边缘设备扩散。当前网络环境中,以BT为代表的P2P下载软件流量占用了宽带接入的大量带宽,据统计已经超过了50%,这造成了网络带宽的巨大消耗,甚至会引起网络拥塞,大大降低了网络性能,劣化了网络服务质量,妨碍了正常的网络业务的开展和关键应用的普及,严重影响了用户使用正常的Web、E-mail以及视频点播等业务,因此,运营商、企业用户以及教育等行业的用户都有对这类流量进行限制的要求;另一方面,对于企业用户来说员工利用内部网进行BT下载会占用大量的内部网带宽,同时通过并不安全的网络环境获得的应用程序和P2P软件的使用,将可能为企业安全防护打开一扇后窗,使得病毒和恶意代码得以躲过安全审查潜入企业内部网络。因此实现分类、标识和控制P2P流量越来越成为企业、网络运营商急需解决的问题。对运营商或企业来说,简单的扩容无法满足容量增长的需要,对P2P流量进行识别、管理和控制是解决目前网络状态的根本途径。

  首先介绍了P2P流量识别方法;然后提出一种基于流传输特性的P2P流量识别模型,通过结合TCP/UDP法、(IP,PORT)法、特征码识别3种识别方法来实现对P2P业务的识别和控制,此模型的创新点在于不要检测数据净荷就可以识别P2P流量,提高了识别的效率;最后从理论和实践两方面对P2P流量识别模型进行了分析。

1、P2P流量识别方法

  (1)端口识别法

  端口识别法是根据TCP数据包或UDP数据包首部的源端口号或目的端口号识别一些常见业务的流量,如HTTP,SMTP,Telnet,HTTPS等。

  最初的P2P流量可通过端口号进行识别,如早期的Fasttrack使用1214端口进行通讯,但是很快便出现了大量采用可变端口及伪装端口的P2P应用软件,一些应用程序为了绕过操作系统的访问限制,使用常见端口以外的端口(例如,某些没有特权的用户可能在非80端口上运行WWW服务器,因为大多数操作系统通常将80端口限制为只允许某些特定的用户使用)。网络上存在着众多的P2P应用软件,使得P2P流量的识别必须采用一种或多种方法协作进行。

  (2)DPI识别法

  DPI:数据包深层扫描。由于P2P软件采用动态端口,只能通过扫描高层协议来探知P2P数据报。例如对于Kazaa系统,我们只能深入HTTP内部获取Kazaa特征代码。对于其它P2P应用,有时甚至要通过几个特征代码才能判断其是否为P2P流。通过DPI扫描可识别Gnutella,E-donkey,Kazaa,Bittorrent等主流P2P软件。该方法的识别准确度可以达到95%,但是DPI扫描技术无法识别加密的P2P流。

  (3)TCP/UDP法

  P2P流量绝大部分都同时应用了TCP和UDP协议,使用TCP/UDP方法识别P2P流时不需要任何类型的应用层信息,不需要进行净荷检测就可以得到相对满意的结果,可以提高数据包识别速度;此方法不依赖于任何类型的识别标志,所以对于在大型网络中新出现的P2P应用它一样可以快速识别;同时,分析传输层的信息几乎不需要任何额外的软件或者硬件,这就大大地减少了相应的设备带来的压力和负担。应用这种方法,仍然存在一定的缺点:在识别过程中需要记录所有流的信息,需要有大容量的存储设备;对于具体的P2P协议不能深入分析,不能区分P2P流属于何种协议;它仅能够用来识别应用中心化的P2P应用;最后,如果P2P应用采用TCP而不是UDP来完成控制功能的话,我们的方法将失效。

  (4)(IP,PORT)法

  当某台主机要与网络中的其他主机进行对等通信时,它将向服务器发送通信信息,将它用于通信的IP地址和端口号发送给服务器,然后服务器就把它的IP地址和端口号告诉给其他的主机,最后其他主机就可以直接和这台主机通信了。这些进行对等通信的主机的端口号往往都是互不相同的,所以主机IP和端口号的数目相差很小。在实现方法上,主要是统计某个(IP,port)所连接到的各个IP、端口号、数据报大小和传送流量大小。如果连接到的IP地址个数和port个数相等,则认为是P2P流量。相反的,如果连接到的IP数和port数相差大到10个以上则认为是非P2P流量。

2、P2P流量识别模型及算法

  2.1 P2P流量识别模型

  我们提出了基于流传输特征的P2P流量识别法、基于净荷特征的P2P流量分类法,并综合上述两种方法,提出了P2P流量识别模型及其算法。其中,基于流传输特征的P2P流量识别法综合了TCP/UDP法和(IP,PORT)法的优点;基于净荷特征的P2P流量分类法是对已经识别出来的P2P流按协议进行分类。综合以上两种方法我们提出一种P2P流量识别模型。

  (1)基于流传输特征的P2P流识别法

  TCP/UDP法识别的流量同时使用了TCP和UDP协议,但是可能含有DNS流、MAIL流、游戏流,用端口识别法可以去掉DNS流、MAIL流,因为网络中新游戏不断产生,且游戏使用的端口不固定,所以简单的使用端口识别法是不能过滤掉游戏流的。

  (IP,PORT)法识别的流量有一部分只使用TCP或UDP协议的,对于游戏流,同一(IP,PORT)对应的地址和端口数目相差数>10,所以用(IP,PORT)法可以去掉游戏流。

  (2)基于净荷特征的P2P流量分类法

  基于流传输特征的P2P流识别法可以识别出大部分P2P流量,而且能识别出未知协议的P2P流量,此方法的缺点是对于具体的P2P协议不能深入分析;净荷检测法适用于几乎所有的常用的P2P应用,能识别出大部分的P2P流量。如eDonkey,Overnet,eMule,KAZAA,BitTorrent,Direct connect,WINMX,opennap,Gnutella,MP2P,Soulseek,Ares。

  (3)P2P流量识别模型

  P2P流量识别模型是上述两种方法的结合,具体模型如图1所示。 

图1 P2P流量识别模型

  P2P流量识别模型的主要原理是:首先,用TCP/UDP法识别的“可能的P2P流”中含有DNS流、游戏流和MAIL流;然后用端口识别法去掉DNS流(端口号53)和MAIL流(端口号25)等已知端口的数据流;根据(IP,PORT)法统计同一(IP,PORT)对应的地址与端口的相差数,若小于10,则认为此主机在进行P2P通信;最后用净荷检测法对P2P流按协议进行分类,为了提高系统效率,对P2P流分类采用后台分析模式。

  2.2 P2P流量识别算法

  本文根据P2P流量识别模型提出一种算法,图2是此算法的流程图。

图2 P2P流量识别流程图

  (1)取出数据包的五元组,在“P2P节点集”中进行判断;若不存在,则转入(2);若存在则转入(4);

  (2)用端口识别法排除已知的流量,如DNS流,MAIL流,游戏流等;

  (3)根据diff=|pair.IPSet.len-pair.PortSet.len|判断是否为P2P流,若diff<10,则为P2P流,把地址和端口号加入“P2P节点集”中;若diff>10,则为非P2P流;

  (4)若为P2P流,则把此流存在输入队列中,等待处理;

  (5)利用净荷法对P2P流进行分类;

3、P2P流量识别模型分析(如图3所示) 

图3 P2P流量识别实验图

  3.1 识别模型的可行性和准确率

  在Linux下,用两套方案进行流量识别:

  方案一:用本文提出的识别模型和算法

  方案二:用DPI检测法

  10.10.136.155主机打游戏、电驴下载和skype通话;10.10.136.154进行BT下载、skype聊天;10.10.136.141上网、电驴下载、FTP下载。

  Skype流量没有净荷特征,在本实验过程中,只有电驴、BT、Skype三种P2P业务,所以在对BT、电驴分类后,剩下的流量归结为Skype流。

  两个方案同时在网关上运行五分钟,根据mysql数据库中的数据,统计结果如表1所示。

表1 统计结果 

  实验结果分析:

  10.10.136.154只进行BT下载和skype聊天,方案一可以识别出0.41 MB的BT流量和1.22MB的skype流量,方案二识别出0.39MB的BT流量,由于skype没有明显的净荷特征,所以把skype流归为其它业务。

  10.10.136.155只进行电驴下载、skype聊天和游戏,方案一可以识别出0.53MB的电驴流量和1.45MB的skype流量和8.02MB的其它业务流(主要是游戏流),方案二识别出0.49MB的电驴流量,由于skype没有明显的净荷特征,所以把skype流归为其它业务流量9.51MB。

  10.10.136.141只进行电驴下载、FTP下载和网页浏览,方案一可以识别出0.39MB的电驴流量和8.76MB的其它业务流(主要是FTP流和网页浏览流量),方案二识别出0.32MB的电驴流量和9.32MB的其它流。

  通过以上分析可以得到:对于方案一和方案二都可以识别出来的P2P流量(比如BT和电驴),方案一可以识别出一些没有净荷特征的P2P流(如Skype流),方案二只能识别一些已知协议的P2P流,不能识别加密流。方案一中排除游戏流的方法的去掉包大小一样的流量,由于在实施过程中没有排除全部游戏流,所以方案一中识别出的BT和电驴流量大于方案二中的电驴和BT流量。

  3.2 识别模型的性能

  P2P流量识别模型是一个实时分析模型,对网卡上采集到的数据包用TCP/UDP法和端口识别法进行实时分析,判断此流是否为“可能的P2P流”;若是,则入库,让后台分析程序进行分类、统计,并向实时分析模块提供“P2P节点集”,引入“P2P节点集”的目的是为了避免重复对已知的P2P节点进行判断,提高了系统的效率。对数据流先用TCP/UDP法和端口识别法过滤一些非P2P流,可以提高(IP,PORT)法识别时的效率和准确率。实时分析可以准确了解网络的使用状况。

  3.3 识别模型的通用性

  当前许多开放源代码的P2P应用识别解决方案(如IPP2P)都是采用DPI识别法,它们只能识别一些净荷没有加密的已知的P2P协议(如BT,e-Mule),对于Skype这些加密的软件没法识别出它们的流量;但是P2P流量识别模型不仅可以识别目前主流的P2P协议(如BT,e-Mule),也可以用于其它未知协议的P2P流量识别;因为此识别模型是根据数据流的特性来识别的,并非仅根据端口或净荷特征,这样即使P2P软件动态改变端口,也能识别出P2P流量。

4、结束语

  本文提出的P2P流量识别模型中区分P2P流与游戏、游戏流、DNS流、IRC流等其它数据流时,采取简单的端口排除法,如果P2P流传输时采用的端口跟这些已知端口一样时,就不容易识别出这部分流量,下一步工作对这几种数据流建立一种识别模型;另外,P2P流量识别模型有待进一步的研究,可以针对不同的网络建立不同的模型,实现更精准的识别。