1、什么是omnet++
翻譯總結自:What is OMNeT++?
omnet++是用來進行網絡仿真的C++庫和框架。這里的網絡包括有線、無線、on-chip、queueing網絡等等。特定領域中的網絡,例如ad-hoc網絡也包含在這個框架下,並被擴展為獨立的工程項目。
雖然omnet++自己不是一個網絡仿真器,但是卻可以實現網絡仿真平台的功能。omnet++提供了組合性的模型架構。各模塊用C++編程,然后用NED語言部署成為一個更大的組件和模型。
omnet組件
- 仿真核心庫(C++)
- NED語言
- 基於Eclipse平台的仿真IDE
- 交互性的仿真運行時GUI(Qtenv)
- 執行仿真過程的命令行接口(Cmdenv)
- 各種工具(各種creation tool等等)
- 文檔,很多樣本等等
Models
目前OMNET++支持的模型包括:
- queuing
- resource modeling
- 互聯網協議
- 無線網絡
- switched LANs
- p2p網絡
- 流媒體
- 移動ad-hoc網絡
- mesh網絡
- 無線傳感網絡
- 車載網絡
- NoCs
- 光纖網絡
- HPC系統
- 雲計算
- SANs
- 等等
所有的這些模型框架都是開源的,已經發展成為了獨立的工程項目了。
INET框架可被視為omnet++的標准協議模型庫。INET包含了網絡棧、多協議、許多組件的模型。其他一些仿真框架也是基於INET的,並且在獨特的方向上擴展開來。
2、用omnet++進行仿真
翻譯總結自:Simulation with OMNeT++
本節將對如何使用omnet++進行一個總覽:
- 一個OMNET++ model是用一些組合模塊構造的,這些模塊之間通過交換信息進行交流。一些模塊可以組合到一塊構成一個Compound Module。創建模型時,我們需要把我們的系統映射到層次性的通信模塊中。
- 用NED語言定義模塊結構。我們可以在兩個地方編輯NED程序——1)文本編輯器中;2)圖形編輯器中;這兩個在IDE中分別是Design與Source
-
模型中各模塊的邏輯活動需要在cpp文件中通過C++編程實現,使用各種仿真核心類庫;
- 在omnetpp.ini中進行OMNET++的網絡配置和參數設置。一個配置文件可以同時描述多個具有不同參數的仿真網絡的運行;
- 構建仿真程序並運行。我們需要將OMNET++仿真核心中實現的代碼和OMNET++提供的用戶界面相鏈接。用戶界面分為命令行、交互性、圖形用戶界面三種。
- 仿真結果將被寫入輸出向量和輸出文件中去。我們可以用IDE中的Analysis Tool去將之可視化。結果文件是基於文本的,所有我們也可用R、Matlab和其他語言工具進行處理。
3、omnet++ IDE的總覽
這個IDE是基於Eclipse平台的。下圖展示了這個IDE的主頁面:
①NED編輯器
NED編輯器可以用圖形和文本兩種方式編輯NED文件,使用者可以在使用時隨意切換,通過下圖中的Design、Source切換:
在Design模式下,我們可以創建復合模塊、信道和其它類型的組件。子模塊可以用右邊的Palette中可用的模塊類型創建出來。可視和不可視的屬性可以在Properties View或者context menu對話框中進行修改。
②文本編輯器
文本模式允許用戶直接使用NED源代碼編程。當按下快捷鍵CTRL+SPACE之后,編輯器提供了可以感知完成上下文的keywords、module、parameter、gate、submodule。
待續