译文:Chord implementation for Peersim

1、配置文件

这个文档解释了怎样写允许在PeerSim网络仿真中执行的配置文件。这是config-chord.cfg例子的内容

# random.seed1234567890

simulation.endtime10^6

simulation.logtime10^6

simulation.experiments1

network.size 5000

protocol.trUniformRandomTransport

{

mindelay 0

maxdelay 0

}

这些行是PeerSim事件驱动协议里的标准描述:

第一行定义了被用来产生伪随机数的种子(如果取消注释,所有的仿真表现一样,对debugging是有用的)

第二和第三行定义了仿真结束和结果日志所采用的时间

第四行实验次数

第五行在网络中节点数目

最后一个命令创建一个用来在两个节点之间发送消息的传输协议

protocol.myChordProtocol

{

transport tr

}

这是我们定义在每一个节点上模仿chord应用程序行为的核心协议的地方,消息将通过上面所定义的传输协议交换。

control.trafficTrafficGenerator

{

protocol my

step 100

}

现在我们需要距离说明一个实现control的子类,其将产生查询协议(源和目的地是随机选择)每一个预先定义的时间步骤。

init.createCreateNw

{

protocol my

idLength 128

succListSize 12

}

在仿真之前,我们一定要创建完美的chord网络。CreateNw类将通过产生Chord标识符(在idLength指定的字节数里随机选择)初始化每一个节点,连接后继(succListSize是后继列表的大小)和其他参数。

control.observerMessageCounterObserver

{

protocol my

step 90000

}

协议所需要的基本执行的最后一部分是observer,它计算出在查找前缀的平均跳数等。这些结果在每一个指定步骤的时间里打印出。

control.dnetDynamicNetwork

{

add 20

add -25

minsize 3000

maxsize 7000

step 100000

init.0 ChordInitializer

{

protocol my

}

}

为了在churn条件测试协议(节点频繁加入和离开),我们使用了PeerSin提供的control,动态网络,通过说明节点加入或者离开的数量,网络维度的边界和步骤时长来自定义。为了允许我们的Chord协议能够接受在网络中的新节点,每一个节点一定要在初始化行初始化。已经成为chord换上一部分的节点将被随机选择去帮助新节点发现后继和路由表项。在理想条件下(不考虑churn、可靠性、传输层)协议的执行导致结果可以预测:最大跳数(一个查找消息一定要在到达正确目的地前所通过的)是的上界。当然这些数一定要是一个整数(所以12,29成了13跳数的界限)平均跳数可预测是低的(记住:从一个节点到他自身的查找也会发生的)。这些参数是固定的:128位的ID长和路由表项,12作为后继列表的大小,10^6作为每次试验大约9000消息处理的仿真时间

2、运行代码

为了执行配置文件,运行下面的命令:

java -cp peersim-1.0.3.jar:djep-1.0.0.jar:jep-2.3.0.jarpeersim.Simulator

config-chord.txt

3、结果

为了正确判断行为,不考虑动态网络(节点失效,加入),我们一定要考虑更多的参数,尤其是调用稳定方法的次数和在到达目的地前失败次数(在这种情况下消息是被丢弃的)固定参数是:129作为idLength,12作为后继列表大小,5000作为初始网络大小,3000和7000作为网络大小的上下界,执行时间代表之前仿真和动态control步设置在10s。正如你所注意的:环的移除处理不是很关键的。失败数是有限的(非常低以至于不会出现在图中),最大跳数是可接受的(15代替13)。记住:稳定性是节点调用stabilize()的次数,在每次后继列表或者路由被表更新时执行(发生很多次在每次交互时),所以这是高可预测的:在仿真期间网络规模减少或者增强原始大小的百分之二十。当一个节点正在加入,我们注意到失效数会增加:这是因为失效是发生在节点和它的后继之间,当发送消息到相应的chord id时,必须在声明的只移除的条件下的。以至于我们能够假设消息是从一个同时失效的节点产生的。问题是为了处理加入的一致性,初始化器不能绝对正确的决定一个节点的后继(性能会过于缓慢)但只有一个节点没有远离,然后在每一次交互新节点将调整他的后继指针到环中更近的节点。不幸的是在许多消息到达处理过程中,如果他们是直达新节点和后继节点之间的节点,消息将被丢弃。这解释了伴随着节点加入失效数反而增加。然而在更长的模拟中,后继列表将被调整直到没有更多失效发生。平均和最大跳数在不考虑churn是同样的。

先翻译了,等国庆后再细细研究。欢迎各位同仁拍砖,探讨,共同进步。加QQ:185851486(注明P2P)

Eclipse下PeerSim仿真(2010-07-24 14:21:16) 转载▼ 标签: 杂谈 Eclipse下PeerSim仿真 时间: 2010.06.25 23:00:00 标签: PeerSim ,Eclipse http://hi.baidu.com/bookpage/blog/item/1bc32a341a8f46bbd0a2d3c6.html ******************** Eclipse下PeerSim仿真 ******************** ------------------------ 本文参考: http://peersim.sourceforge.net/ http://blog.sina.com.cn/s/blog_453a60170100hyno.html http://hi.baidu.com/bookpage/blog/item/1bc32a341a8f46bbd0a2d3c6.html ------------------------ 0、关于PeerSim 主页:http://peersim.sourceforge.net/ 下载:http://sourceforge.net/projects/peersim/ P2P仿真软件,基于JAVA语言。 2004年发布0.0版,最新版本1.0.5发布于2009年9月29日。 1、安装JDK和Eclipse 网上很多资料,此处不多说。 关于JDK版本,没有找到相关说明,下载较新版本即可,如JDK1.6就可以。 Eclipse最新有一个Helios(太阳神)版。 2、示例(PeerSim的"hello world") (1)创建一个java project,命名为PeerSim。 (2)将下载的peersim-1.0.5.zip中的src目录下的文件都拷贝到工程主目录下的src目录下。 (3)将下载的peersim-1.0.5.zip中主目录下的jar文件拷贝到工程主目录下。 (4)添加libraries。Project--Properties--Java Build Path。 Add External JARs,将主目录下的jar文件都添加进去。 (5)编写仿真配置文件。这里使用peersim-1.0.5的example目录下的config-example1.txt。将这个txt文件拷贝到工程主目录下。 (6)运行,在Eclipse的Package Explore栏找到这个txt文件,右键,Run as--Run Configurations。 Main:在Name中输入Application名称,比如PeerSimApp;在main class中输入peersim.Simulator,或者搜索之。 Arguments:在Program arguments中输入config-example1.txt,也就是配置文件。 (7)第6步完成之后,点击运行,会出现错误: peersim.config.IllegalParameterException: Parameter "protocol.lnk": The class peersim.core.IdleProtocol appears more than once in the classpath; please check your classpath to avoid duplications. At peersim.config.ConfigContainer.getClazz:582 解决方法: 在第6步,右键,Run as--Run Configurations,配置Classpath,使得User Entries中只保留djep-1.0.0.jar,peersim-1.0.5.jar,jep-2.3.0.jar,也就是删除peersim-doclet.jar。这个时候再运行,仿真就能正常结束了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值