APP下载

非结构化对等网模型性能研究及仿真

2010-10-25朱晓姝

关键词:消息成功率节点

朱晓姝, 张 颖, 谭 玻

(1.玉林师范学院教务处,广西 玉林 537000;2.玉林师范学院职业技术学院,广西玉林 537000)

自21世纪初P2P[1](Peer-to-Peer,对等网络)开始成为热门话题以来,在经历短暂而迅猛的发展后,它目前具有以下几种典型的拓扑结构[2]:集中目录结构,代表性系统有Napster;洪泛请求模型结构,代表性系统有Gnutella和Freenet;结构化覆盖网模型,代表性系统有Chord、CAN、Pastry和 Tapestry等。其中,洪泛请求模型结构在P2P系统发展历程中起着重要的作用,它们由于拓扑结构的松散性与Internet一致[3],成为当前广泛使用的P2P模型。Gnutella是非结构化洪泛请求协议的典范,E-donkey、BT等目前流行的P2P应用软件就是基于Gnutella;Freenet是P2P存储协议的典范,它能提供很好的匿名存储服务。

本文以OMNeT++[4]为仿真平台,建立仿真模型,设计仿真环境和仿真参数,对它们进行仿真实验,并对仿真结果进行分析,为进一步推动P2P应用提供理论和性能测试依据。

1 Gnutella与Freenet原理及性能分析

Gnutella与Freenet均具有松散的、无结构的网络拓扑,它们消除了“中央集权”目录服务器,解决了集中目录结构模型P2P系统由“中央集权”产生的问题。由于其分布式和自组织的特点,它们也具有较好的健壮性和稳定性,能够根据网络带宽、节点数及负载等进行自适应调整,部分节点失效对整个网络影响小。本文主要从系统模型的文件存储、文件查询及用户匿名性等3个方面进行深入分析研究Gnutella和Freenet[5-7]。

Freenet网络对文件的存储复杂一些,共享文件用一个关键字(160 bit二进制数)作为文件标识,关键字是使用SHA-1安全散列函数对文件内容和文件名散列运算得到,每个节点上存储几个关键字。当某个节点想要在网络中存储新的文件时,首先在本地计算出新文件的标识符,然后向其他节点发送包括新文件标识符和新文件的Data Insert消息,如果有某些节点已经存储了这个文件,就不再重复存储。

(2)文件查询。Gnutella和 Freenet中,文件的查询过程不同,查询到目标文件后下载的过程也不同。

在Gnutella网络中,节点之间查询文件和下载文件的过程如图1所示。

图1 Gnutella文件查询过程

图1中:①当A要查找某个文件时,它向所有邻居节点广播发送Query命令。②这些邻居节点收到Query命令后,在本地查找是否有与查询内容匹配的文件。③如果没有,就不应答,这样可以避免节点A被“no results”的应答消息淹没。④如果有匹配文件(如找到一个或更多的文件),该邻居节点就向A 发送“QueryHit”消息,将查询结果回送给A。查询结果中包括该对等节点的IP地址和匹配文件的文件名。⑤A从匹配结果中选择一个查询结果开始下载。如A从应答消息中选择拥有目标文件的F,在A与F之间创建一个标准的http请求,通过http传输查找到的文件。⑥如果F位于防火墙后,A向F发送一个push请求命令,F收到push请求后,会主动与A建立连接,并传输文件。

在Freenet网络中,节点之间查询文件和下载文件的过程,如图 2所示。具体过程如下:①当A要查找某个文件时,它查找本地路由表,向与查询文件的关键字最接近的 B发送 Data Request消息。②B收到Data Request消息后,在本地查找是否有与查询内容匹配的文件。发现没有查询的数据,将Data Request消息转发给节点C。③C收到Data Request消息后,在本地查找发现没有查询的数据。同时,C没有连接其他节点,将Data Failed消息回溯返回给B。④B根据路由表再次选择,将Data Request消息发送给节点D。⑤D发现本地也没有查询的数据,又将Data Request消息转发给节点E。⑥E发现本地也没有查询的数据,将Data Request消息转发给B,B收到后发现形成环,将Data Failed消息回溯返回给E。⑦E没有与其他任何节点的连接,收到Data Failed消息后,将它回溯返回到节点D。⑧D将Data Request消息转发第二次选择的节点F,发现F上有查询的数据。⑨F将查询数据从本地往回传输,经过D和B,传输到查询源节点A,那么,节点D、B和A都存储该查询数据的拷贝。

图2 F reenet文件查询过程

由此可见,Gnutella在查询文件时采用洪泛算法,无选择地向所有邻居节点发送查询消息,但最后仅与拥有查询文件的一个节点建立连接,传输文件;Freenet则是根据路由表信息有选择地向最近的节点发送查询消息,查询到目标文件后,在回传经过的节点上都复制目标文件。因此,Gnutella在刚开始查询文件时有较高的查询效率和较低的网络开销,但在网络运行一段时间后,Freenet则更具有好的查询效率和查询命中率。

(3)用户信息匿名性。虽然用户信息匿名并不是Gnutella网络主要的设计目标,Gnutella作为一个全分布的无结构的P2P文件访问协议,它也具有一定的用户匿名性。当Gnutella节点查询文件时,它采用洪泛的方式向所有邻居节点发送查询消息,应答消息沿着请求消息的转发路径逐级地返回给请求节点,这条查询路径是在查询过程中动态形成的,路径上的任何一个中间节点只能看到发送消息的前驱节点和后继节点,但不知道应答消息最初的发起节点和最终的接收节点。因此,在文件搜索的过程中能保证节点间的相互匿名。虽然由于Gnutella在文件传输时是由双方节点直接建立http连接进行传输,会导致最初请求节点和最终应答节点信息的暴露,但不会暴露给路径中的其他节点。因此,在文件传输的过程仍能保证节点间一定的相互匿名。

用户信息匿名是Freenet网络主要的设计目标之一,它实现了文件的发布节点、文件查询的请求节点及文件的存储节点信息的匿名,允许用户匿名地发布文件和搜索文件。在文件查询和文件取回的过程中,查询请求和文件取回的路径是经过途中多个节点的,这些节点上都保存了查询文件的副本,同时谎称自己是查询的发起者或者文件的存储者,难以确定真正的查询请求节点和文件存储节点,因此达到匿名的目的。

2 基于OMNeT++的模型性能仿真

2.1 OMNeT++

OMNeT++[8]是一个基于C++编程的、支持面向对象、模块化的有效的离散事件仿真工具。它主要应用于通信协议、计算机网络、多处理器和其他分布式系统的仿真。近几年,它在工业领域和科学研究领域都成为流行的网络仿真工具。本文选择OMNeT++作为仿真平台,它具有以下优势:①支持模块化仿真模型,模块可以灵活地组合,还可以多次使用;②兼容性好,可以在多种平台上运行良好,它最初是基于Linux开发的,因此OMNeT++可以运行在大多数的Unix系统和Window s平台;③源代码公开,拥有大量用户;④支持并行系统的仿真;⑤兼容商用仿真工具。

2.2 仿真环境和仿真参数

建立一个包含60个节点的非结构化网络,节点编号范围为ret[0]~ret[59],节点间传送消息的延迟时间在(0,100)ms间随机产生,TT L(Time to Limit,生存时间)默认值设为7。分别从查询响应时间、查询成功率及查询返回数3个方面对Gnutella和Freenet进行仿真测试。

(1)查询响应时间。它即从源节点发出查询请求开始,直到有目标节点返回QueryHit消息所用的时间。Gnutella查询100次的查询响应时间如图3所示,从中可以看出,Gnutella的查询响应时间呈无规律变化的。

Freenet查询6 000次的查询响应时间,如图4所示。

从图4可以看出,当查询多次后,查询响应时间会逐渐减小。由于Freenet查询成功后,在将目标文件沿查询原路径返回给发出查询的源节点的过程中,会拷贝目标文件到途经的节点,所以查询多次后的查询响应时间会逐渐减小。

图3 Gnutella查询响应时间图

图4 F reenet查询响应时间图

(2)查询成功率。Gnutella查询500次的成功率如图5所示,从中可以看出,随着时间的变化,网络情况也在不断变化,查询成功率在一定的范围内随机变化,但没有一定的收敛趋势。

图5 Gnutella查询成功率图

Freenet查询3 000次的成功率如图6所示,从中可以看出,当查询多次后,查询成功率会逐渐增大。产生这种结果的原因与经多次查询后查询响应时间逐渐减小的一样。

图6 Freenet查询成功率图

(3)查询返回数。它是从源节点发出查询请求后,结果有多少个含目标文件的节点返回应答,即在timeout时间内收到多少个QueryHit的消息。Gnutella查询100次的查询返回数如图7所示,从中可以看出,Gnutella的查询返回数呈无规律变化。

Freenet查询200次的查询返回数如图8所示,从中可以看出,随着查询次数的增多,查询的成功率逐渐增大,查询返回数逐渐趋向1。由于Freenet每次发送一条消息,根据节点的路由表选择要走的路线,所以每次查询只有一个结果:成功或者失败,当成功时返回数1,失败时返回数0。

图7 Gnutella查询返回数图

图8 Freenet查询返回数图

3 结束语

本文对P2P系统模型Gnutella与Freenet从系统模型的文件存储方法、查询文件方式及用户匿名程度等3个方面的工作原理进行对比研究和分析,可以看出Gnutella和Freenet的设计各有侧重,Gnutella侧重于查询功能,查询过程简单容易实现;而Freenet则侧重于文件存储和用户匿名方面的功能。

同时,本文率先使用OMNeT++仿真P2P系统模型和新型仿真工具OMNeT++,基于Gnutella和Freenet协议建立仿真模型,分别从查询响应时间、查询成功率及查询返回数3个方面进行仿真测试,并对测试结果进行分析。通过仿真和分析,清晰和直观地展示了这2个目前主流使用的P2P系统模型的各种特性,也表明了OMNeT++网络仿真软件能够准确地分析P2P网络的性能和行为,为推动P2P应用和研究提供有效的理论依据。

[1] 陈桂林,赵生慧,侯整风.一种P2P和网格技术融合的网络模型[J].合肥工业大学学报(自然科学版),2007,20(6):676-680.

[2] Aberer K.An overview on peer-to-peer information systems[C/O L]//Proceedings of Workshop on Distributed Data and Structures(WDAS-2002).http://lsirpeople.epfl.ch/hauswirth/papers/WDAS2002.pdf,2009-12-10.

[3] Androutsellis-Theotokis S,Spinellis D.A survey of peer-topeer content distribution technologies[J].ACM Computing Surveys,2004,36(4):335-371.

[4] 吴剑锋,郭 英,范海宁.OMNeT++网络仿真器的设计原理与分析[J].微计算机应用,2008,(5):34-37.

[5] Clip2 Company.T he Gnutella Protocol Specification v0.4[EB/OL]http://www9.limewire.com/developer/gnutella-protocol-0.4.pdf,2009-12-10.

[6] 黄道颖,李祖鹏,庄 雷,等.分布式Peer-to-Peer网络Gnutella模型研究[J].计算机工程与应用,2003,(5):60-63.

[7] 王晓箴,刘宝旭.Freenet综述及P2P技术应用探讨[C]//第13届全国计算机、网络在现代科学技术领域的应用学术会议论文集,2007:233-237.

[8] Varga A.OMNeT++Discrete Event Simulation System User Manual[EB/OL].http://www.omnetpp.org.,2009-12-10.

猜你喜欢

消息成功率节点
CM节点控制在船舶上的应用
成功率超70%!一张冬棚赚40万~50万元,罗氏沼虾今年将有多火?
Analysis of the characteristics of electronic equipment usage distance for common users
如何提高试管婴儿成功率
基于AutoCAD的门窗节点图快速构建
一张图看5G消息
如何提高试管婴儿成功率
抓住人才培养的关键节点
研究发现:面试排第四,成功率最高等4则
消息