作 者:周世杰 秦志光 吴春江
2 基于流量特征的P2P流量识别技术
在P2P系统中,每个节点既是客户机也是服务器,这种节点充当双重角色的特点,也使得P2P应用在传输层表现出与其他网络应用(如HTTP、FTP、DNS、EMAIL等)不同的流量特征。因此,基于流量特征的P2P流量检测方法的基本思想是:通过对传输层数据包(包括TCP和UDP数据包)进行分析,并结合P2P系统所表现出来的流量特征,来识别某个网络流是否属于P2P。这类方法包括:TCP/UDP端口识别技术、网络直径分析技术、节点角色分析技术、协议对分析技术和地址端口对分析技术等。
传输控制协议/数据报协议(TCP/UDP)端口识别技术利用第一代P2P系统多采用固定的服务端口的特点来识别P2P系统。例如,文献[5]第一次提出了P2P流量识别问题,并利用端口识别技术,对Fast-Track、Gnutella和Direct-Connect 3种具有代表性的P2P系统的流量特征进行了分析。现有P2P系统所采用的常用服务端口如表1所示。由于许多P2P应用为了躲避流量审计与过滤,往往采用随机端口技术,因此TCP/UDP端口识别技术存在严重的漏报问题。
网络直径分析技术利用了P2P系统所组成的逻辑网络具有网络直径大这一特点。在P2P系统中,节点之间需要建立连接。与物理连接不同,P2P系统中的连接是逻辑连接,因此所形成的P2P网络属于逻辑网络。文献[6]通过记录网络中每个节点与其他节点建立连接的情况而得到P2P系统的逻辑连接拓扑图,并计算其网络直径。文献[6]的研究结果表明,与他网络应用所形成的逻辑网络相比,P2P系统所形成的逻辑网络具有更大的直径。因此,如果网络直径超过某个门限值,则该网络中的节点就是P2P节点,相应的流量就是P2P流量。由于网络直径的计算需要记录整个网络的连接状态,因此不仅存储和计算开销大,而且也不支持P2P流量的实时识别与过滤。
节点角色分析技术利用了P2P系统中每个节点具有多重角色的特点。P2P系统中的每个节点,既是客户机,也是服务器。因此,如果可以判断某个逻辑网络中具有这种双重角色的节点数,就可以确定该网络是否为P2P网络。例如,文献[6]通过记录并计算网络中同时充当客户机和服务器两个角色的节点数,发现如果该数超过某个门限值,则这些节点所形成的网络就是P2P网络,而该网络中的节点就是P2P节点,相应的流量也既是P2P流量。与网络直径分析一样,节点角色分析技术也需要记录整个网络的连接状态,因此同样面临存储与计算开销大、无法供P2P流量的实时识别与过滤功能等问题。
协议对分析技术利用了P2P系统可能同时使用TCP和UDP协议的特点。实际分析结果表明,P2P系统一般采用UDP来发送命令等控制信息,而采用TCP协议来传输数据。在一般的应用中,通常一个应用极少出现同时使用UDP协议和TCP协议的情况。因此,可以利用P2P系统的这个特征来识别P2P流量。例如,文献[7]所采用的协议对分析技术中,通过判断在时间t 内,某个“源-目的IP地址对”之间,是否同时使用了TCP和UDP协议。如果是,则这两个节点之间的流量就有可能是P2P流量;反之,则可能不是P2P流量。由于域名服务器(DNS)等应用也会同时使用TCP协议和UDP协议,因此协议对技术存在严重的误报问题。
地址端口对分析技术也是利用了P2P系统中节点角色多样性的特点。地址端口对技术[7]的依据是,在P2P系统中,每个节点既是客户机,也是服务器。为了能够接受其他节点建立连接的请求,每个节点都需要广播自己的IP地址和提供服务的端口(记为{目的IP,目的端口},简称目的地址端口对)。而为了与其他节点建立连接,每个节点随机选择一个源端口,使用自己的IP地址(记为{源IP,源端口},简称源地址端口对),并利用其他节点所广播的IP地址和端口对信息来建立连接。由于每个节点与另外一个节点建立连接时,不论是源节点还是目的节点,都使用随机源端口技术,因此对于广播了目的地址断口对的节点A来说,与自己建立了连接的源IP地址数和源端口数应大致相同。相反,其他应用(如HTTP)往往需要建立多个连接来传送数据,因此来自于同一个源IP的节点可能采用不同的源端口,与Web服务器建立多条连接,其源IP数与源端口数往往不同。为此,在单位时间t 内,如果网络流的源IP数与源端口数相同,则该流量可能就是P2P流量。地址端口对具有性能高的优点,但是缺乏实时识别与过滤的能力。
除了上述有关P2P流量检测技术外,还有以下基于流量特征的P2P流量检测技术。文献[8]通过两种方法来识别BitTorrent流量:
(1)许多节点向同一个节点发送大量数据且在目的节点出现握手数据包。
(2)某个节点广播大量UDP数据包,并随之发送了大量握手数据包。
文献[9]利用P2P系统的连接错误率等TCP流的特征来识别P2P流量。文献[10]结合Skype具有“中继”的特性,通过考察P2P流量的如下特征参数来识别网络流是否为P2P:开始时间差、结束时间差、流的速率、两个流的时间相关系数。通过实验分析,文献[10]证明具有中继特性的Skype流量具有如下特征:开始时间差一般小于5秒、结束时间差一般小于5秒、进入流的比特率与出来流的比特率大小基本相等、两个P2P流的时间相关系数不小于0.37。因此,可以利用这4个特征参数,来识别具有中继特征的Skype及其他P2P流量。
3 基于应用层数据检测的P2P流量识别技术
基于应用层数据检测的P2P流量识别技术是通过协议分析与还原技术,提取P2P应用层数据(即P2P载荷),通过分析P2P载荷所包含的协议特征值,来判断是否属于P2P应用。因此,这类方法也叫做深层数据包检测技术(DPI)。在深层数据包检测技术中,通过对具体的P2P协议及其对应的P2P系统的载荷进行特征提取,建立特征库。对于流经的实时网络流,采用模式匹配算法,判断其中是否包含特征库中的特征串。如果特征匹配成功,该网络流就是P2P数据。
文献[11-15]都采用了DPI的P2P流量识别技术。文献[11]对Gnutella、Edonkey、DirebtConnect、BitTorrent以及Kazaa的协议特征进行了分析,并据此对应用层数据进行分析来识别是否是P2P流量。文献[12]利用应用层数据分析技术,对多媒体流量进行了识别分析。
此外,也有少量文献探讨了结合基于流量特征方法和基于应用层数据的检测技术。相关文献参见文献[13]和文献[14]。文献[13]对比了3种P2P流量识别技术:端口分析技术、应用层签名、传输层分析。文献[14]引入诱饵节点,并结合应用层签名分析技术对日本流行的P2P系统Winny的流量进行了分析。
4 两种P2P流量识别技术的优缺点及比较分析
基于流量特征的检测技术的优点包括可扩展性好、性能高和可识别加密数据流。
可扩展性好是指该方法利用了P2P应用所具有普适性流量特征,不仅可以发现已有的P2P流量,也可以识别新的、符合普适性流量特征的P2P流量。
性能高是由于不需要对协议进行解析和还原,且也不需要对P2P应用载荷进行分析,因此计算开销和存储开销小,识别算法性能高。可识别加密P2P流量是由于基于流量特征的检测技术不依赖具体的P2P应用载荷,因此,数据是否加密对检测算法没有影响。
但是,基于流量特征的P2P流量识别技术也具有很多不足,其主要缺点包括:准确性差、健壮性差、缺乏流量分类功能等。有两个因素决定了基于流量特征的P2P流量识别技术存在准确性差的缺点。第一个因素是P2P流量特征不一定唯一:很多流量特征都不是P2P流量唯一的,其他应用也有可能表现出这种流量特征来。因此,该方法存在误判问题,即将不是P2P流量的网络流,误认为是P2P流量。第二个因素是网络环境复杂。例如,由于不对称路由和丢包、重传现象的存在,导致无法精确确定流量特征,从而有可能对P2P流量检测的精确度造成影响。健壮性差是指由于不能处理数据包丢失、重组等,因此不能适应复杂的P2P应用。缺乏分类功能是指由于传输层流量特征一般不能明确指示应用层协议类型,所以这种方法对P2P应用分类的能力较弱,而对P2P应用进行细分类,对于执行P2P流量监管措施(如禁封、限速、提供服务质量QoS等)非常重要。