ShareIdeas

本博客不再更新,欢迎访问我的github,https://github.com/sunke-github/

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

The ONE Simulator  Introduction

 

 

结构

•      1. 概述

•      2. ONE的结构

•      3. ONE使用基础

•      4. 添加自己的路由协议

1. 概述

•      Opportunistic Network Environment simulator——ONE 是机会网络环境模拟器,是芬兰赫尔辛基大学 用java编写的开源软件。是一个机会网络环境的模拟器,它是一种基于离散事件模拟引擎的.它提供了一个强大的工具,通过使用不同的路由协议来模拟DTN消息的收发,并生成了移动轨迹的记录。有如下功能:

•      根据不同的移动模型生成节点的移动事件.

•      显示各种DTN路由算法、发送器和接收器类型的节点之间的消息.

•      节点移动和消息的实时图形化显示.

•      可使用gnuplot工具把数据图示化.图1展示了ONE的结构

 

 

 

•      节点的移动是由定义的移动模型来实现的.可以用人造模型也可以用真实的记录.节点之间的通信是基于他们的位置,通信范围和传输速率等方面.路由功能是由路由模型决定的.消息是由事件产生器创造的.一般情况下模拟环境中消息都是单播的,即只有单一的源结点和目的节点.

 

 2. ONE的结构

•      1.ONE的所有java程序包:
applications 
core 
gui 
gui.playfield 
input 
interfaces 
movement 
report 
routing 
ui 

 

 

•      application:包含模拟器核心的类和接口.

•      gui: 包含用户图形接口类.

•      gui.playfiled: 图形化节点的位置和其它信息.

•      input:提供访问外部资源的接口和类.

•      movement: 包含模拟器不同的移动模型和相关的类.

•      movement.map:MBM移动模型的子包

•      report:包含所有报告相关类.

•      routing:包含所有路由相关的类.

•      ui: 基本的用户接口和文本输出类.

 

 

•      2.软件结构.

•      模拟器的核心部件( 如定义DTN 的主机及其主机间连接的类) 都放在了 core 包里, GUI相关的类放在了 GUI 包里 .GUI 包里还包含一个 playfield 的子包,里面定义了一些在 playfield 的视图中显示的类 .基本的用户接口类和基于文本的输出类都放在了UI 包中,各个包的功能都是独立的,如 GUI 类从 core 包里实例化了模拟器环境和 world 类.在routing 包里能构造路由模块,在 movement 包里可以构造移动模块,在 report 包里可以构造报告模块等.在整个模拟过程中,路由模块和移动模块为报告模块提供了数据源 Test 包并不直接与模拟器相关, 但是它包含了一系列的单个的系统测试, 这些可以测试系统是否运行良好.

 

•      软件包结构图:

 

 

 3. ONE的使用方法

•      1.下载ONE模拟器.

   它的官方网站是: http://www.netlab.tkk.fi/tutkimus/dtn/theone/.在这里可以找到最新版本以及相关文档.

 

 

•      2.安装.

•      这里假设运行的环境是windows,并已经配置好了Java 6 JDK.下载的是.tar.gz格式的.首先进行解压,进入到解压的目录,假设为X:\one.设置系统的path变量,添加path=c:program file\java\jdk1.7.0_01\bin.找到complie.bat这个批处理文件.双击运行就能把解压的源代码都进行编译.

 

 

•      Complie.bat的命令具体如下:

•      javac -extdirs lib/ core/*.java

•      javac -extdirs lib/ movement/*.java

•      javac -extdirs lib/ report/*.java

•      javac -extdirs lib/ routing/*.java

•      javac -extdirs lib/ gui/*.java

•      javac -extdirs lib/ input/*.java

•      javac -extdirs lib/ applications/*.java

•      javac -extdirs lib/ interfaces/*.java

 

 

•      3.运行.

•      进入cmd环境.输入如下命令:

 

•      其中one.bat后的可用选项有:-b, configfilename.txt, run-index(count)

•      -b: 在批处理模式下运行模拟.不开启GUI,在终端输出结果.

•      configfilename.txt: 模拟器运行所需的配置文件(如果不加的话默认执行default_settings.txt文件).

•      run-index(count): 可以使用不同的参数运行多次.

•      详细可以参考README.txt .

 

运行界面

 

 

•      4.配置.

•      ONE的配置文件是包含键值对的普通文本文件,其基本格为Namespace.key=value .

•      名字空间(Namespace)以大写字母开头,名字空间与键名都以CamelCase的方式命名,并且大小写敏感。通常名字空间定义了配置属性起作用的范围。通常(并不是所有情况),名字空间就是属性所起作用的类的名字。特别地,Movement Models, Report Models 和 Routing Models都遵从这个规范.

 

•      有些属性定义了外部数据文件的路径,这些路径可以为相对或绝对路径,但必须以“/”作分隔符(Unix & Windows下都如此).

•      对于运行索引的属性值,其语法为:Namespace.key = [run1value;run2value;run3value] .

•      默认设置文件default_settings.txt是默认读取的文件。ONE在运行时会首先读取该文件,然后再读取用户给出的其他设置文件,即默认设置文件总是被加载的。

 

 

 

 

•      5.拓扑图获取

•      OpenStreetMap(http://www.openstreetmap.org/)允许导出真实世界的道路数据.在http://www.tm.kit.edu/~mayer/osm2wkt/ 下载一个osm2wkt.jar包进行转换,方法:java -jar ./osm2wkt.jar mapfile.osm

•       用Open Jump,软件可以从http://www.openjump.org/ 下载. 绘制地图有多个图层,分别绘制出来后,输出为wkt格式。

 

使用Eclipse操作

•       创建eclipse工程,建立的工程文件目录.        

•      导入源码到工作空间中去,选择file->import,然后再选择File system,再选择要导入的源码的路径即可导入。

•      导入后打开properties对话框,在Java Build Path中的source中选择想要编译的目录,并且可以设置输出路径,点OK后即可对所导入的源文件进行编译。

•      添加库文件,选择对应的项目->Build Path->Add External Archives .这里需要添加是: one目录下的lib子目录下的DTNConsoleConnection.jar和ECLA.jar  和  Eclipse 里面的两个junit.jar  包.

 

•      过程如图:

 

 

 

 

4. 添加自己的路由协议

•      为了在ONE模拟器当中评价新的路由协议,需要创建个新的路由模块.所有的路由模块都是继承MessageRouter这个模块的.这个模块定义了大量不同的消息相关的事件和资源管理的回调函数.这些回调函数被模拟引擎的所有事件调用.例如:一个新消息创建成功或一个消息投递到了其他节点上.一个路由模块就需要处理这些事件.其中ActiveRouter 是MessageRouter的子类.ActiveRouter类中提供了像邻居节点传送消息的功能,以及处理成功传输和中断传输等情况.同时还提供了FIFO和随机的缓存管理方式.建立自己的路由模块大部分的工作就是重写,覆盖或扩展MessageRouter和ActiveRouter这俩个模块的函数.

 

 参考资料:机会网络模拟器 ONE 及其扩展研究   

 

posted on 2012-07-27 17:43  ShareIdeas  阅读(10364)  评论(34编辑  收藏  举报