论文部分内容阅读
随着P2P的广泛应用,基于P2P的应用研究日新月异,搜索技术就是其中之一。研究发现,在P2P网络中,即使每个节点共享少量文件,整个网络所共享的文件数量也是非常庞大,要想充分的利用这些分散的资源,就必须能够迅速准确的找到它们,因此,P2P网络搜索算法研究就成为了一个重要的研究课题。目前,在P2P搜索算法方面的研究主要有基于现有的非结构化搜索算法的改进研究以及以DHT为主的结构化搜索算法的研究。本文主要针对非结构化P2P搜索技术进行了分析和研究,详细分析了泛洪和随机漫步算法存在的问题,并在随机漫步搜索的基础上提出了自己的改进方案。在非结构化P2P网络搜索算法中,以Gnutella协议为基础的泛洪方式的查询以其独立性和易于部署,成为占绝对优势的查询。不过对TTL设置过高将产生大量的流量,而克服这种问题的随机漫步尽管可以将网络开销降低,但是多个漫步者之间无法联系通信同样会造成冗余的查询,而串行化的随机漫步又导致了较大时延。泛洪和随机漫步共同的问题是它们在面对自私用户的时候性能会急剧下降,对所有的用户使用统一的TTL控制搜索并不能在用户利益方面有所区分,对合作和贡献都没有激励。很遗憾的是,搜索的性能极大的依赖于节点合作转发和共享,然而,大多数P2P用户天性是自私的。转发和响应其他用户的查询将会耗费他们自己的资源,因此他们只下载文件从不向P2P网络贡献任何资源,这就是所谓的“搭便车”问题。因此,大部分的文件下载请求都是被定向到小部分的无私节点,这些小部分愿意共享的节点很容易过载,这就造成所谓的“公共的悲剧”问题。另外,自私用户也许会在等待搜索结果的时候重复发布同样的查询请求,如此多的搜索请求导致网络拥塞。这些自私节点具有自私性,加入网络目的明确,下载资源,一旦获得即脱离网络;非恶意性,按照协议转发消息,不会恶意丢包和丢弃消息;以及理性,一切行为选择都是为了自身利益最大化。以上这些行为极大的破坏了泛洪和随机漫步的搜索性能。针对非结构化P2P系统中主要的搜索方案都存在的共同问题:即大量自私节点的存在,导致泛洪算法产生大量的网络开销以及随机漫步产生查询时延,统一的TTL控制使节点很容易受到自私用户的攻击,导致查询性能下降。本文提出了基于激励的自我优化搜索算法ISS,该算法是建立在随机漫步之上,通过建立一个激励模型,引入激励措施,给自私用户提供有区分的查询服务,把用户的贡献度和所享受的服务水平联系起来,动态的调整随机漫步的TTL值以及Walker的数量,让其根据自身的条件和当前的网络状态进行自我优化来调整搜索性能和网络开销,全面的约束了自私用户的行为,减少网络查询开销,提高查询效率。通过比较泛洪、随机漫步在自私用户存在和不存在行为下的查询性能,实验结果表明了自私用户的行为对搜索性能确实产生了很大的影响,而对于改进的ISS算法,通过验证分析,确实能够对用户的行为产生一定的约束,它能够在牺牲很少一部分查询命中率的情况下降低查询的开销。