基于Linux内核扩展模块的P2P流量控制研究 下载本文

目 录

一、摘要

二、P2P概述

2.1 P2P定义说明 2.2 P2P特点说明 2.3 相关概念

三、P2P网络及协议分析与开发背景

3.1 P2P主要网络模型 3.2常见P2P协议分析 3.3 开发背景及需求分析

四、实现条件及系统解决方案

4.1 Linux防火墙说明 4.2 Netfilter工具分析

4.3 包选择工具IptabIes说明

五、实验方案设计及实现

5.1流量控制系统总体设计 5.2带宽管理的实现

六、结论与展望

附录A 参考文献

一.文献摘要:

为了减少P2P流量对网络带宽造成的影响,合理分配和利用网络资源,更好地保障网络QoS,准确检测和控制P2P流量,提出一种基于Linux系统的P2P流量检测和控制的解决方案,通过扩展Netfilter/Iptables框架,根据特征码识别P2P连接,和Linux QoS工具一起使用以限制P2P的带宽占用,避免了P2P等下载软件和娱乐软件无限制地占用带宽资源,才可以更好地保障网络的Qos。

关键词

P2P;包过滤;Netfilter/iptables;QoS;TC

二、P2P协议分析

2.1 P2P定义说明

P2P(Peer to peer)是一种比较新的网络技术,被称为一种“点对点”的对等网络技术。在传统的网络结构当中采用的是客户端/服务器(C/S)模型,在这种模型中有一个中心服务器,主要用来提供服务,网络拓扑中的所有网络节点在获取服务的时候都必须要通过这个中心服务器来获取服务。而在P2P的网络结构中取消了传统意义上中央服务器节点,每个节点在网络中既可以充当服务器,又可以充当客户端,也就是说它们既可以像传统的服务器一样提供服务,也可以像普通的节点一样请求服务。所有网络中的节点都是处于一个对等的位置,每个网络节点在P2P网络中都称为一个对等点(peer)u1。P2P网络的节点之间可以直接交换资源或者是服务而不必通过传统网络的服务器,P2P网络模型的扩展性非常好。P2P网络模型的出现为网络的发展以及网络上一些带宽需求较高的服务提供了保障。

2.2 P2P的特点说明

P2P网络模型与其它传统的网络模型相比具有以下特点:

(1)分散化

P2P网络中由于没有传统意义上的服务器对网络上的资源集中进行管理,网络上的资源和服务都是分布在各个节点上的。虽然说一些索引和查找信息还是必须有中心服务器的参与,但是节点之间进行信息的交换是不必通过节点而是在节点之间直接进行的。这样就降低了对集中式服务器的资源和性能要求,避免了由于服务器的介入而引起的瓶颈。

(2)可扩展性

在传统的客户端服务器架构中,由于服务器在整个网络中所起到的作用非常重要,服务器上的资源限制了系统能容纳的用户数量和提供服务的能力,于是需要提高服务器的性能以及加大网络带宽,甚至会使用到集群等技术来保证服务器端的性能。在折中结构下,服务器端的大量开销限制了系统规模的扩展。随着网络中用户的不断增加,对服务的需求也随之在不断加大,整个系统的资源和服务能力也应该相应的加大,才能使用户的需求得到满足。由于在混合的P2P结构中,

没有一个传统的服务器端,所以大大减少了对服务器的依赖,可以方便的连接到各个用户,大部分的处理都在节点之间进行,整个系统是基本上不存在瓶颈,所以有很大的扩展空间。

(3)健壮性

由于传统的网络架构采用的是客户端/服务器模型,中心服务器在折中结构中起的作用非常的关键,但是由于网络上总是会出现一些异常的情况,例如网络中断、网络拥塞、节点失效等等,这些异常情况不可避免的为网络的正常运行带来一些问题,在很大程度上影响到网络的稳定性和持续性,一旦中心服务器出现异常给用户带来了很大的不便。而在P2P架构中是没有传统意义上的中心服务器的,各个节点在充当客户端的同时也充当着服务器的角色,当其中一个或者几个节点遭到破坏的时候对其它节点的影响是非常小的,当其中一个节点出现问题是P2P网络就会自己调整其网络拓扑结构,使得网络能够正常运行。

(4)隐私性

随着网络技术的不断发展,网络上的隐私问题现在越来越受到人们的关注,如今在网络上要获取别人的隐私也变的越来越容易。网络上的攻击者通过对网络用户的流量特征的监控,获取IP地址,而且现在一些跟踪软件可以非常容易的就截取到用户的个人信息。在P2P网络中,由于没有集中的服务器,信息的传输是直接经过节点而不必经过中心服务器的,这样就是得用户的信息被跟踪和截取的可能性大大降低。在现在的网络中,大多数是通过中继转发的技术来将通信的参与者隐藏在网络实体当中的,这一技术对中继节点的依赖性较强。在P2P架构的网络中,所有的节点都可以提供中继转发功能,使得通信机制的可靠性和灵活性大大的提高,也能够很好的保护用户的隐私。

(5)高性能

随着计算机技术的不断发展,性能越来越受到重视,无论是个人计算机的硬件和软件的性能还是网络的性能都在高速的增长。现在的互联网中普通用户的节点接如到网络中后,仅仅只充当了客户端,也就是说只是做了一个消费者,而不具备一个提供信息的功能,这样对于这些游离于互联网的边缘的边际节点来说,确实是一种极大的浪费。P2P架构的网络可以将存储信息和任务都分布到这些边际节点上,充分有效的利用网络中这些所谓的普通节点,利用这些普通节点闲置节点的存储能力和计算能力达到海量存储和快速计算的目的,这样做也恰恰符合前高性能计算机中普遍采用的分布式计算的思想。

2.3 相关概念:

下面将本文用到一些的相关专业术语在此做简要介绍: (1)QOS(Qual ity of Service,服务质量)

QoS是网络的一种安全机制,主要致力于达到区分服务、保证服务质量的目的,当网络过载或拥塞时,QoS能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。

(2)带宽管理

带宽管理就是将网络带宽分为多个动态的通道,各种业务流的流量都在自己的通道中,各个业务之间互相不会受到影响。即使一个通道中有突发的流量,其它的通道也不会受到影响,主要是通过Qos技术的流量控制和流量整形技术来实现的。

三、P2P网络及P2P协议分析

P2P网络与传统的网络不同的地方就在于其网络中的每个节点在逻辑上是具有同等地位的,但是这种逻辑上的对等并不等于在处理能力上的对等。P2P技术的实质在于将传统网络的集中化管理转换为分布式管理,将内容从网络节点的中心化引向网络节点的边缘化,从而使网络中的每个节点都能够在网络中充当服务端的同时也能很好的为其它节点提供服务,更好的充当一个服务器。相对于传统的集中式客户/服务器(C/S)模型,P2P将服务器的概念弱化了,节点之间既可以提供服务也可以请求服务,节点直接的资源交换都不用再通过服务器。P2P网络系统可以使得用户之间的资源共享变得非常方便,这种特点是网络具有可扩展性的基础,同时也是解决网络带宽的关键。P2P网络已经历了集中式、分布式和混合式三代不同的网络模型,这三种网络模型各有各的特点,正是因为它们的这些特点,各种网络模型能够扬长避短,同时存在于网络中,为P2P网络的应用和发展奠定了基础。

3.1 P2P主要网络模型

3.1.1集中式P2P网络模型

集中目录式P2P网络模型也被称为非纯粹的P2P结构,这是因为它仍然是具有中心化的特点,是最早出现的P2P应用模型。在集中目录式P2P网络模型中节点之间的信息交换和资源共享以及检索方式与传统的客户/服务器比较类似,但是也存在较大的区别,查询节点根据网络的具体情况来选择合适的节点进行连接,而且不必通过中心节点,也就是服务器。这种网络模型相对来说比较简单,目前集中式P2P模型最典型的代表是Napster。

3.1.2分布式P2P网络模型

分布式P2P网络模型取消了传统的客户/服务器模型中的中央服务器在这种网络模型中每个节点随机的接入网络中,并且与相邻的节点都建立一条端到端的连接。分布式P2P网络模型也被称为纯P2P网络模型。所要查询的内容都是通过相邻节点之间的相互连接来实现的,在搜索信息的同时,每个节点还会保存下搜索的轨迹,保证不出现搜索环路。目前分布式P2P网络模型最典型的代表就是Gnutel la。

3.1.3混合式P2P网络模型

在前面介绍的两种P2P网络模型中,集中式P2P模型有利于网络资源的快速

检索,可扩展性也比较好,但是一旦中心服务器受到攻击,后果会相当严重。分

布式P2P由于没有了中心服务器,受攻击的可能性较小,但是搜索速度较慢,可 扩展性也不好。混合式P2P网络模型结合了前面提到到的两种P2P网络模型各自 的优点,使网络性能获得了更加优化的性能。混合式P2P的一个很大的优点就是 它按照能力将用户节点进行分类,使得一些能力比较强的节点完成一些比较重要 和特殊的任务。

3.2 常见P2P协议分析

由于目前有关于P2P协议的技术文档相对比较缺乏,所以作者主要是采用在先网络上抓取P2P协议包的做法,然后对结合一些比较权威的P2P网站对协议包进行具体分析,然后得出结论。在安装了P2P软件的机子上P2P客户端程序,然后用一些比较常用的抓包工具进行抓包测试。我们主要在数据包的格式和数据块的大小这两个方面对目前比较流行的4种P2P协议进行分析。

3.2.1 eDonkey 2000协议分析

现在不仅仅Windows操作系统支持eDonkey 2000协议的客户端,而且eDonkey 2000协议也在其它的操作例如MLDonkey中得到了广泛的应用。我们通过在运行有eDonkey2000协议的客户端机器上用tcpdump和Ethereal进行抓包测试,再结合一些eDonkey 2000协议文档我们发现eDonkey 2000协议数据传输通过TCP协议,进行操作,而控制包既可以用TCP也可以用UDP[13][1,41,使用的是一个端1:3号为4661或者4662的TCP端口和一个端口号为4665的UDP端口。

3.2.2 Fasttrack协议分析

Fasttrack是目前P2P网络中比较流行的一种协议,在欧洲和北美u副它应用的更为广泛。Fasttrack的一般都是用端口号为1214的缺省端口进行通信,但是由于它和HTTP流量比较相似,所以其比较难被识别。

3.2.3 Gnute II a协议分析

Gnutella协议主要使用端口号为6346的端口进行TCP通信,使用端口号为 6347的确口进行DUP通信。我们通过在运行有Gnutella协议的客户端机器上用tcpdump和Ethereal进行抓包测试,再结合一些Gnutella协议文档发现Gnutella协议客户端程序使用不同大小的传输块,在传输过程中的大小是完全不一样的确,但Gnutella协议的下载中包含一个格式为“GET/uri-res\的数据包。此外,Gnutella协议TCP包和UDP包的净荷开头字符串都有其比较明显的特征,可以由此来识别Gnutella协议。

3.2.4 BitTorrent协议分析

BitTorrent是目前非常流量的一种P2P网络协议,尤其是在我们国家,P2P在最近这些年里面更是得到了广泛的应用。BitTorrent是P2P网络典型的应用,它是通过统一资源定位符来识别内容,可以非常简单地和web交换并且这种交互无处不在。