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。
待续