论文部分内容阅读
P2P是英文peer-to-peer的缩写,即对等网络或对等计算。它是一种网络模型,在这种网络中每个节点的地位都是相同的,无服务器与客户机之分。随着Napster等P2P系统的出现,人们开始关注P2P技术。美国在线的Nullsoff子公司员工Justin Frankel开发了P2P的自由软件——GnuteUa,因其非结构化、庞大用户群和简单性等特点受到业界的广泛关注而形成一种协议。随着Gnutella,网络的蓬勃发展,由于P2P网络系统的无中心、自组织以及高可扩展等优越特性,越来越多的网络系统使用Gnutella协议来共享各种各样丰富的资源。
然而,搭便车和公共悲剧问题一直困扰着Gnutella网络,这使P2P网络长期以来共享资源逐渐趋于一致,并且大多数节点都不愿共享自己的资源却使用别人提供的资源。随着P2P网络的不断扩展,这些危害也越来越大。
为了解决上述问题,本文对P2P的基础知识和Gnutella协议的工作原理进行了详细研究,并对不同激励机制模型进行了总结。在此基础上,本文构建了一个基于服务质量的激励机制模型。该激励机制模型主要分两大部分内容:
一部分是如何解决评价各个节点提供资源的贡献值的计算和存储,对于如何评价节点的贡献值,本文主要考虑两个因素,其一是节点所上传的文件大小,其二是节点转发的查询、响应消息的数量。
另一部分用来进行差异服务,本文提出一种带宽分配方法I-progressive filling来为各个竞争节点分配带宽,该方法为贡献值大的节点提供更好的服务并最大程度地利用有限带宽,此外,该方法还照顾到节点的满意程度,保证了分配的公平性。
本文通过NS模拟结果显示,I-progressive filling方法具有很好的激励性质,在最大下载带宽相同的情况下,贡献值大的节点分得的带宽较大,贡献值小的节点分得的带宽较小;此外,该方法最大程度地利用有限的带宽,不浪费带宽资源。在以上研究的基础上,本文设计了一个基于Gnutella协议的P2P文件共享系统,应用MS VS.NET开发平台实现,更加证实了上面的激励机制模型的可行性和有效性。