P2P(分布式)仿真系统综述
来源:第三维度
作者:周 杰,杨娴娟,王向辉,张国印
摘要:随着P2P技术的飞速发展,出现了大量的P2P算法和协议,验证算法正确性和评价P2P系统性能的需求推动了P2P模拟器的发展。现详细介绍了几种常用的P2P模拟器,对其优缺点进行了评价。
0 引言
近年来,P2P技术在互联网领域发展迅速,出现了大量基于P2P技术的应用系统,如即时通信、BT下载和视频直播等。P2P系统能够如此迅速地普及,主要是因为P2P系统能够利用普通节点的服务能力,降低服务器的负载,提高用户数量。与集中式系统相比,P2P系统在可扩展行、实时性和负载均衡能力上有着不可比拟的优势。
新的P2P算法和协议在使用前需要对其正确性和性能进行评价。目前,对P2P算法和协议进行性能评价主要有三种方法:分析法、实验法和仿真法。分析法使用数学方法对P2P算法和协议进行建模和推演,由于建模和推演过程中需要对假设条件进行大量简化,因此分析结果一般无法直接应用到实际系统中;实验法是在实际环境中对算法和协议进行验证,此方法需要大量的软硬件资源;仿真法使用P2P模拟器和仿真工具对算法和协议进行模拟验证,可以模拟大量节点,无须引入过多资源,并且仿真代码与实际代码相似。因此目前对P2P系统进行性能评价时,一般使用仿真法。
仿真需要使用P2P模拟器,P2P模拟器不仅可以验证P2P协议的性能,还能将实际网络中的一些因素加到仿真中去,使得仿真结果更加真实可信。
本文主要介绍一些常见的P2P模拟器和仿真工具。
1 模拟器分类
从层次化的角度来看,网络模拟器可分为底层网络模拟器(underlying Netw0rk Simulator)和覆盖层网络模拟器(Overlay Ne 。 Simulator)。
底层网络模拟器在数据包层进行仿真,主要模拟底层网络的情况,如网络拓扑、数据包延迟、丢包率等。常见的底层网络模拟器有NS2r ,Omnet++L3 和SSF1%tl4 等。其中,离散事件模拟器NS2用于对因特网协议、路由协议以及广播协议进行仿真;基于组件的仿真环境Omnet抖主要用于通信网络的模拟;
SSF1%t由基于Java和C抖的组件构成,主要用于网络连通性的仿真。
覆盖层网络是一种构建在物理网络之上的逻辑网络,用于描述节点之间的逻辑关系。覆盖层网络模拟器即P2P模拟器,主要用于P2P算法和协议的正确性验证并对协议的性能进行分析,P2P模拟器一般忽略底层网络结构,因此可以进行超大规模的P2P系统仿真。
2 覆盖网络层模拟器
2.1 Names
Narses在Java环境下开发,支持分布式仿真。Names为进行仿真的应用提供一个用于发送和接收数据的传输层接13,该接口与UNIX socket接口类似,使得用户可以方便地将进行仿真的应用移植到真实的操作系统中去。
Narses提供了一系列不同详细程度的网络模型。对底层网络模拟越详细,仿真的效率就越低。用户可以交替地使用不同的模型,在效率与精确性之间权衡。例如,有一种“naive”的简化模型,它不考虑流量的影响,用户可先用“naive”模型建立协议的原型来验证协议的正确性,为了使仿真的结果更接近真实情况,可以再使用更为详细的网络模型进一步仿真。
Narses中的简化模型通过对链路、网络与传输层进行近似地估计来降低仿真的复杂眭。在实现协议方面,Narses没有实现任何覆盖层网络协议。
2.2 NeuroGrid
NeuroGrid 是P2P查询协议项目,该项目包含一个单线程离散事件模拟器,NeuroGfid实现了Neu—roGfid,Freenet以及Gnutella三种协议,并对这三种协议进行了对比。
NeuroGfid通过定义若干抽象类再派生新的子类来实现可扩展的功能。它包括六个基本的抽象类:Keyword,Document,Message,Node,Network和Mes.sageHandleroNeuroGfid工作在覆盖层,支持结构化和非结构化网络的仿真。运行时的模拟参数是可调的,如网络模拟的节点数目、每个节点的初始连接个数及查询次数等,仿真结果会保存到文件中。
NeuroGfid的不足之处主要有:
①没有提供集成其他网络覆盖或拓扑生成器的接口。
②没有提供一个请求集合产生器,即缺乏请求分布构件,每次循环随机选择请求结点和请求文件,因此不能模拟实际环境的请求分布特征。
③没有提供基于Gnutella的经验模型。Gnutella是目前应用最广的对等系统之一, 因此基于Gnutella的经验模型是模拟实际对等网络环境的重要模型。④只提供了一个非常简单的动态网络模型,在模拟过程中结点只能增加而不能减少。
2.3 PeerSim
PeerSim在Java环境下开发,支持结构化及非结构化网络的仿真,该模拟器的结构是基于组件的,可以快速搭建协议原型。
PeerSim支持两种仿真模式,循环模式和事件模式。循环模式比较简单,具有良好的扩展性,可模拟lO个节点的P2P网络,但循环模式忽略了实际网络中的一些细节,比如并发与传输层仿真等,节点之间直接进行通讯并且周期性地对节点进行控制;事件模式则考虑了网络中的实际情况,但该模式的仿真效率较低,扩展性不好。
PeerSim中有一个网络拓扑生成器,产生一个简单的网络拓扑模型——n 模型 J,并可打印出该模型的度分布情况。
PeerSim仿真的大体过程是:首先要确定网络的大小(节点的数量);然后选择要进行仿真的协议并进行初始化;接着选择所关心的属性,对其进行监控,并可通过配置文件配置一些参数(如,网络的大小,协议的内部状态等),最后调用类Simulator运行仿真。
循环模式仿真的过程如下:首先,以命令行的方式读取配置文件,配置文件是普通的ASCII码文本文件,由一系列键值对组成;然后,模拟器初始化网络中的节点和节点中的协议;初始化结束后,循环驱动机制在每次循环时调用所有的组件(协议和控制器)一次,直到达到特定的循环次数或仿真结束为止。
在PeerSim 中,所有在仿真过程中创建的对象都是实现一个或多个接口的类的对象,其中主要的接口有:Node,CDProtocol,Linikable以及Control。P2P网络是由节点组成的,节点是协议的容器,通过Node接口可以访问该节点所包含的协议;CDProtocol是一种特定的协议,该协议运行在循环模式下,对每次循环时要执行的操作进行简单的定义;IAnikable接口为其他协议提供访问邻居节点集合的服务;实现Control接口的类可在仿真过程中某个特定的时间执行,这些类一般用于对仿真过程进行观察或修改。
PeerSim具有良好的可扩展性和网络动态进化能力 但它不支持分布式仿真。在文档方面,Peer—Sim为循环模式提供了详细的文档,而事件模式的文档则相对匮乏。
2.4 P2Psilll
P2PSilll是一种离散事件的模拟器,由C++编写而成,仅支持结构化网络仿真,不支持分布式仿真。P2PSilll上实现的协议有Ch0rd,Accordion,Koorde,Kelips,Tapestry,Kademlia。可以通过设置P2PS.衄的事件脚本对节点的波动行为进行仿真,但是波动行为和节点失效行为的统计数据都不详细。在查询方面,P2PSill1支持迭代和递归查询。
目前,由于缺乏文档,P2PSim使用起来并不方便。
2.5 PlanetSim
PlanetSim【l0 是一种离散事件模拟器,在Java环境下开发,支持结构化与非结构化的覆盖网络仿真,实现的协议有Cho 一SIGCOMM与Symphony。在性能方面,有实验表明,对于Chord而言,稳定一个100个节点的网络需要8秒,1000个节点需要16秒,1000~ 个节点需要46秒。
PlanetSim使用通用的API,设计简洁且易于理解。PlanetSim模拟器分为三层:网络层、节点层和应用层。网络层负责仿真循环、底层的拓扑以及信息在仿真网络中的路由;覆盖层实现了一些P2P算法,如Chord;在覆盖层之上的是应用层,实现一些P2P服务。这种分层结构便于用户在相同的网络层上实现不同的覆盖层,或者在不同的覆盖层上实现相同的应用服务,可以对各种覆盖网络协议和P2P应用服务的性能进行比较。
PlanetSim在底层可以模拟简单的随机或环形网络,这些简单的网络不考虑流量和带宽的影响。当然,也可以使用专用的网络拓扑生成器来生成更加真实的底层网络拓扑。PlanetSim包含一个可调节的底层,使得上层服务和覆盖层路由算法可以在各种级别的底层网络拓扑上进行测试。
为了获得良好的性能,PlanetSim进行了一系列的优化,比如,使用消息池(MessagePoo1)机制,不必在每次需要消息时都实例化一个消息对象,而是采用对象重用机制,回收以前使用过的消息对象以便下次使用,避免实例化过多的对象降低模拟器的性能。
虽然PlanetSim没有良好的统计数据收集机制,但是该模拟器支持对节点波动与失败行为的仿真,并且可保存仿真结果以便以后使用。在文档方面,PlanetSim有详细的指导文档和源代码注释,便于学习和使用。
2.6 Overlay Weaver
Overlay Weaver_1¨是对P2P协议进行研究和测试的工具,在Java环境下开发而成,仅支持结构化覆盖网络层的仿真,支持分布式仿真,并且支持迭代和递归形式的路由仿真,但不支持底层网络模拟,Overlay Weaver上实现的协议有C}l0柑,Kademlia,Pastry,Tapestry和Koorde。
用户通过脚本文件定义仿真环境,如创建节点。并且,脚本生成器提供一个用于定义波动行为的函数,对波动行为的仿真需要创建一些节点,这些节点在一个特定的时间段内加入或离开网络。
Overlay Weaver包含一个图形化的实时可视化工具用于观察协议的运行状况。同时,该模拟器还包含一个简易的统计数据收集工具,通过修改源代码可以获得更为详细的统计数据。
由于Overlay Weaver主要用于P2P协议辅助设计,所以它的仿真用途是次要的。因此,在仿真方面,Overlay Weaver存在很多缺点,如不易对统计数据进行采集、文档匮乏等。
2.7 对比分析
不同的P2P模拟器有着不同的特点和用途。
Narses采用基于流的仿真,大大降低了仿真的复杂性;NeuroGfid实现了NeuroGrid,Freenet和Gnutella三种协议,并对它们进行了对比;P2Psin1为C++平台的P2P系统提供了仿真环境;PeerSim采用了由键值对组成的配置文件,用户可以通过文本编辑器对仿真参数进行配置;PlanetSim采用了分层设计的结构,使得用户可以独立地对各种P2P协议和P2P应用服务进行仿真;Overlay Weaver支持迭代和递归形式的路由仿真,可辅助实现P2P协议的设计;
上述模拟器的特征比较如表I所示。
表1 模拟器比较
3 结束语
仿真是对P2P系统进行正确性验证和性能评价的主要方法,因此开发P2P模拟器是推动P2P技术发展的前提条件。本文详细介绍了一些常见的P2P模拟器,并对每种P2P模拟器的特点进行了分析。
参考文献:
[1] Averil M Law,W DAVID Kelton.Siaadation Modeling and analysis[M],3rd ed.[s.1,]:McGraw—Hill,1999,
[2] NS一2 website[EB/OL],http://www.isi.odu/mmam/ns/,
[3] Onmet++websi~[EB/OL],http:Ilwww,珊∞etpp.org,.
[4] SSFNet website[EB/OL].http://www.ssfnet.m ll0眦Pa萨,htm1.
[5] Narses websi~[EB/OL].http://sourceforge.ne#projects/narses.
[6] NeuroGrid website[EB/OL],http://www,neurogrid.net/.
[7] PeerSimwebsite[EB/OL].http://peersim.sourcefarge.net/.
[8] Alex Fabrikant,EliasKoutsoupias,ChristosH Papadimitriou.Heuris—tlcally Optimiz~l Trade—dis:A New Parodi~n for Power Laws in theInternet[J].IEEE/ACM Transactions O12 Networking,2OO3,11(4):514—524.
[9] P2PSim website[EB/OL].http:/liMos.csaJ1.mit.edu/p2psim/.
[10] PlanetSim website[EB/OL].http://planet.uw.es/trac/planetsitrd.