P2P (Peer to Peer)是近年来出现的一种新的网络应用,它的出现开启了网络边缘未使用的资源。当前随着硬件价格的不断下降,作为客户端的PC机已经具有相当大的处理能力和存储空间,然而这些资源在大部分时间都是处于闲置状态。比如在当前Internet中流行的C/S配置模式中,用户的PC机仅仅是被作为一个显示网页的工具。而P2P体系结构则可以使用这些PC机分担网络中心的任务。上百万个Internet用户组合得到的处理能力将远远高于任何一个中心服务器的处理能力。除此以外,P2P体系结构还具有开放性、可扩展性强等特点。所有这些使得P2P应用在短短几年时间有了飞速的发展,其体系结构也经历了由集中式服务器(Napster)到纯分散式文件共享系统(Gnutella),再到部分分散式结构(KazaA);由使用固定端口到使用动态端口进行数据传输;由使用独特端口到与其他应用合用端口(如使用Web应用的80端口等);由明文传输到进行数据加密传输等变化过程。
研究表明,尽管受版权等问题的困扰,当前P2P应用仍呈现快速增长的趋势,并且变得越来越隐蔽[3]。P2P的飞速发展一方面丰富了网络中的应用形式,但另一方面也带来了许多负面的问题。如:P2P文件共享过程中的版权问题;P2P应用大量占用网络带宽的问题;以及P2P的流量模式对传统网络设计带来的挑战等,其中后者尤为网络设计、管理人员所关注。我们知道,在Web应用流量占网络流量主体时,由于Web流量的高度非对称性(用户链路的下行流量要远远高于其上行流量),大部分用户接入方式如ADSL、Cable modem等都设计为下行带宽远高于上行带宽。而在P2P应用中,由于所有主机都是对等的,因此其流量具有很大的对称性。研究表明,P2P应用与Web应用上行流量与下行流量的比率分别为1:1.25和1:7,两者差别将近6倍[5]。因此上述设计理念在当前P2P流量占主体的网络状况下已经不再适应。
由此可见,P2P应用对网络性能具有很大的影响,例如对于一些ISP而言,文件共享流量约占其总流量的60%,另外企业网络中大量出现的P2P流也会极大地影响网络性能。因此无论从ISP的角度还是从企业网络管理人员的角度,都希望能够将P2P流量有效的识别出来,从而便于网络的规划与管理。对于一个企业而言,可以限定P2P流量不超过某个阈值,从而能够为其他重要的应用提供一定程度上的QoS保证;或者为了网络管理的需要,直接在内部将P2P流量过滤掉。而对于ISP而言,可以在此基础上对服务进行控制以及对用户进行管理等。但是当前识别P2P的一个主要挑战就是以一种可扩展的方式识别出P2P流量,同时不要求对所有的分组进行深层分组检查(DPI, deep packet inspection)。
1 P2P流量识别技术概述
为了控制网络P2P应用对带宽的大量占用,必须首先对P2P流量进行有效地监控,它涉及到下面几个方面的问题:流量采集、流量识别以及流量控制。在其中,流量的采集与其他网络监测方式采用的技术完全一致,流量控制则取决不同的网络管理策略,由网络管理人员进行相应的设置,例如进行P2P流量限制或者完全过滤P2P流量等。因此,这里的关键部分是流量的识别操作。根据实现思想不同,可以将它分为多种类型,如基于分组分析、基于流分析等。其实现方式直接关系到整个监控系统的实现效率以及系统的可用性。
P2P应用从最初的采用固定端口发展到使用可变端口甚至使用其他应用的端口进行数据传输,在传输的具体内容方面也从使用明文传输发展到对传输数据进行加密处理,因此对P2P流量进行识别的技术也随之经历了相应的变化过程。本文中我们主要针对四种典型的识别方法进行讨论,包括端口识别法、应用层特征识别法、流量模式识别法以及连接模式识别法。对于这几种技术,我们将在第二节中进行详细的讨论。
[1] [2] [3] [4] 下一页