论文部分内容阅读
近几年来对P2P的研究迅速升温,各方面的应用层出不穷。特别是它提供无穷的存储空间以及不受限制的传输容量,这是传统中央服务器所无可企及的。P2P网络中的节点既是服务使用者,也是服务提供者。节点之间通过分布、对等的算法实现协作和共享。这样,整个网络应用的核心从中央服务器向网络边缘的终端设备扩散。P2P应用面临的最核心问题就是如何在没有中心节点的情况下完成资源的查找,并且能保证查找过程的高效性、可靠性、可伸缩性。目前的方案主要分成两类:洪泛算法(Flooding)类和基于分布式哈希表(DHT)的方法。Flooding算法以Gnutella为代表。Gnutella曾经有过不少用户,但是人们很快就发现随着网络规模的增长,四处广播的数据报很快就会把网络带宽耗尽。所以目前很多研究都集中在基于DHT的方法上。比较知名的包括最早的Plaxton算法及其变种Tapstry,微软提出的Pastry,伯克立和AT&T提出的CAN等等。特别是MIT提出的Chord算法在网络节点变化剧烈的环境中仍然具有较好的性能。本文首先对经典Chord算法进行了详细的研究和分析,并指出了经典Chord算法的优势及其局限性。针对经典算法的局限性,本文作者提出了一种新的Chord算法模型—NChord,并详细分析了在这个新的模型下,资源的定位查找、以及节点的动态变化全部流程。并为该模型建立了完善的超级节点维护机制,保证了模型的稳定性,同时为了防止节点分组以后出现数据局部性的问题,该模型为超级节点增加了缓存表,从而减少了内外网频繁的交互,并加速了热门资源的查找效率,大大提高了查找同一资源的效率。最后,为了验证在节点频繁变化的实际网络环境中NChord的实际性能表现,本文在NS-2的基础上实现了NChord算法的仿真系统。通过仿真验证了理论分析的正确性——NChord在P2P网络中的查询性能更加优良。