The ONE Simulator Introduction (ONE)


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 及其擴展研究   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM