One网络模拟器探索之五:源码阅读之包主要功能

one的源码包主要有applications,core,gui,input,interface,movement,report,routing,ui,test这十个包。本文主要是了解包的主要功能,下一篇开始逐个深入探索包内部类的运行机制。

applications包主要是模拟internet协议栈的应用层,比如源码中给出了一个pingapplication的例子,功能是模拟internet环境中的ping命令。若需要扩展,那么直接扩展抽象类core.Application,并实现其相应的成员函数即可。当然如果需要将结果反映到report文件中,则需要在report包中实现相应的类,pingApplication相应的就是PingAppReporter。

core包是one仿真器的关键模块,实现了仿真器的大部分功能:应用、链接、DTN节点、消息、模块间通信总线、网络接口、配置文件读取类、仿真器时钟、仿真场景设置。如果是研究仿真算法,那么基本不需要扩展这个包。但熟悉这个包中所有类的结构及关系有助于了解整个仿真器的运行机制和原理。

gui包和ui包的功能类似,都是用户交互接口的设计。区别是前者为图形界面;后者为字符界面,也就是运行和交互都是在shell中完成的。gui包中还包含ui.buttonGraphics和gui.playfield两个包。这两个一个是保存图形界面图标文件,一个是用来绘制图标的。平时使用基本不会扩展gui和ui两个包,除非你想修改界面的显示方式。

movement包就是移动模型的实现,源码中现有移动模型包括:Bus移动模型、Car移动模型、HomeActivity移动模型、OfficeActivity移动模型、WorkingData移动模型、基于地图的移动模型、基于地图的最短路径移动模型、随机走动模型、Stationary移动模型等。移动模型主要是规定DTN网络节点的移动规律,通过在不同移动模型下的仿真,检测DTN路由算法的适用范围。当前由于DTN网络的研究不断深入,一般情况下直接改进路由算法越来越难,那么当前一个比较新的思路是通过具体的场景进行路由算法的设计和仿真实验以及结果分析。那么具体场景最终就是通过移动模型来模拟。

routing包就是路由算法的实现包,路由算法主要分为两类:主动路由和被动路由。主动路由就是主动寻找机会进行数据包转发,源码中已实现的主动路由算法有:DirectDeliveryRouter、EnergyAwareRouter、EpidemicOracleRouter、EpidemicRouter、FirstContactRouter、MaxPropRouter、MaxPropRouterWithEstimation、ProphetRouter、ProphetRouterWithEstimation、SprayAndWaitRouter等。被动路由是只有在需要的时候才会发送数据,主要用在外部事件控制的路由以及虚拟节点情况下,源码中没有实现具体的被动路由算法。

interfaces包主要是对core.NetworkInterface相关属性的详细设置,包含ConnectivityGrid、ConnectivityOptimizer、InterferenceLimitedInterface、SimpleBroadcastInterface四个类。


report包负责生成结果数据文件,这些生成文件是所有数据分析的基础。ONE实现的report内容也是丰富多样,涵盖了所有需要用到的数据,例如,接触起止时间以及持续时间、消息的生成时间传递成功时间以及传输时间、投递成功率消息传递路径(就是消息经过的每个节点及其先后顺序)。

input包,相对于core作为输入,仿真器的输入主要有外部事件和内部事件的产生和处理。如果是从真实世界的实验过程中产生的数据集,那么通过input包的相关类实现将数据集导入到仿真器中,并产生结果。

test包主要是测试代码的,这里就不详细展开了。

 

转载于:https://www.cnblogs.com/SunSmileCS/archive/2013/01/06/2847097.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值