Peersim 学习日记 04 关于节点模型和拓扑模型

在Peersim中首先要建立节点(节点模型),之后把节点连接起来(拓扑模型)


节点是由一个类实现的,当被实例化后,每个节点将拥有独立的内存空间和协议栈

节点由ID和INDEX两个量来标识,

其中ID是在节点初始化后不会发生变化的,所以在任何时候ID都可以唯一地标识一个节点,它可以被理解为代表了现实中节点的IP地址,

而INDEX则是和网络动态演进相关的一个标识,当仿真一轮结束后,执行“洗牌”(Shuffle)动作后,节点的INDEX可能会变化。

当在网络中查找某个节点时,总是按照INDEX遍历所有节点,以搜寻ID为某个特定值的节点。


在PeerSim中节点在默认情况下使用peersim.core.GeneralNode类

当然,用户也可以定义自己的节点类,做法是编写一个实现peersim.core.Node接口的类,并在配置文件中加以说明。


节点在网络中的动作是由协议来定义的,节点在初始化时,将按照配置文件装入指定协议的实例,每个节点的每个协议实例都拥有相互独立的内存空间。


每个节点装入了两个协议分别是负责管理拓扑的lnk协议负责管理节点相互信任的trust协议,它们是从配置文件的protocol.lnkprotocol.trust两个键读入相应的类的。

【这样稍微明白了之前的那个配置文件了】


在PeerSim中,当节点建立起来以后,他们之间是没有连接的,也就是说它们仅仅是孤立的节点

在本协议中,拓扑是由peersim.dynamics.WireKOut类来建立的,在配置文件中可以看到,它的键名为为init.rnd,init表明该类是一个初始化组块。


它的主要作用为,为每个节点连接K个邻居节点,K的值是读取配置文件中init.rnd.k的键值得到的,在本协议中,这个值是20,即每个节点有二十个邻居节点。

配置文件中关于拓扑的描述中还有init.rnd.protocol lnk,这表明WireKOut是通过节点中的lnk协议的实例来建立连接的

具体做法为:

向IdleProtocol协议实例的邻居节点数组中添加相应的节点,而IdleProtocol协议正是节点中负责维护邻居节点数组的协议。

每个节点的IdleProtocol协议实例中的邻居节点数组中存有该节点的所有邻居节点。


【这样也算解释了之前的关于配置文件的一些代码吧】

#节点中的Linkable协议设为IdleProtocol  
protocol.lnk IdleProtocol  

这句话表示,我们设置了负责管理拓扑的协议,这个协议是:IdleProrocol  【虽然现在还不清楚这个协议具体是什么】

#节点中的第二层协议设为pdSim.TrustManage并设置相关参数  
protocol.trust pdSim.TrustManage  
protocol.trust.linkable lnk  
init.con.badPeerPercentage 0.1  

第一行:设置了负责管理节点相互信任的协议,这个协议是:pdSim.TrustManage

第二行:【这个还不清楚,以后补上来】

第三行:【这个也是TvT】

#对节点进行连线以构造拓扑的初始化组件WireKOut及相关参数的设定  
init.rnd WireKOut  
init.rnd.protocol lnk  
init.rnd.k 20

第一行:构造拓扑,键名为:init.rnd    值为:WireKOut   因为在这个协议中拓扑是由peersim.dynamics.WireKOut类来建立的

第二行:表明WireKOut是通过节点中的lnk协议的实例来建立连接的

第三行: 每个节点的邻居节点值为20







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值