最近由于由于工作上的需求,接了一个网络仿真的任务。于是开始调研各个仿真平台,然后根据目前的需求和网络上公开资料的多少,决定使用omnet++这个网络仿真平台。现在也是刚开始学习,所以决定记录一下从零开始的这个学习过程。因为虽然这个网络仿真平台提供了很多的官方教程,但是基本都是英文的,读起来也不是很方便。中文资料也有一些,但基本不太完整,完整的教程在CSDN这个资源站都是收费的,所以为了方便大家学习交流,这次我的这个从零开始学习omnet++的系列不会设置收费,大家如果也有在学习这个平台,欢迎来交流!!!
OMNeT++介绍
OMNeT++是什么
OMNeT++ 是一个可扩展的、模块化的、基于组件的 C++ 仿真库和框架,主要用于构建网络仿真器。这里的“网络”具有更广泛的含义,包括有线和无线通信网络、片上网络、排队网络等。特定领域的功能,如对传感器网络、无线局域网络、互联网协议、性能建模、光子网络等的支持,由模型框架提供,这些框架作为独立项目开发。OMNeT++ 提供了一个基于 Eclipse 的集成开发环境、图形化运行时环境和许多其他工具。还有实时仿真、网络仿真、数据库集成、SystemC 集成等扩展功能。
OMNeT++ 为模型提供了一个组件架构。组件(模块)用 C++ 编程,然后使用高级语言(NED)组装成更大的组件和模型。模型的可重用性是自然而然的。OMNeT++ 提供了广泛的图形用户界面支持,由于其模块化架构,仿真核心(和模型)可以轻松地嵌入到您的应用程序中。
组件
OMNeT++主要包含下列组件:
- 仿真核心库(C++)
- NED拓扑描述语言
- 基于Eclipse平台的仿真IDE
- 交互式仿真运行时图形用户界面(Qtenv)
- 仿真可执行程序的命令行接口 (Cmdenv)
- 实用工具(创建 Makefile 的工具等)
- 教程说明文档、仿真实例等
模型
多年来,OMNeT++ 一直被研究者用于编写无数的仿真模型和模型框架,涵盖多个领域:排队、资源建模、互联网协议、无线网络、交换式局域网、点对点网络、媒体流、移动自组织网络、网状网络、无线传感器网络、车联网、片上网络、光网络、高性能计算系统、云计算、存储区域网络等。这些模型框架大多数是开源的,作为独立项目开发,并遵循它们自己的发布周期。
INET 框架可以被认为是 OMNeT++ 的标准协议模型库。INET 包含了互联网协议栈以及许多其他协议和组件的模型。INET 框架由 OMNeT++ 团队为社区维护,利用社区成员贡献的补丁和新模型。还有其他几个仿真框架以 INET 为基础,并将其扩展到特定方向,例如车联网(Veins, CoRE)、覆盖网/点对点网络(OverSim)、或 LTE(SimuLTE)。
我目前仿真无线网络通信的时候用到的就是这个INET框架,这个后面用到的时候再详细说!
使用OMNeT++的工作流程
-
创建模块组件,这些模块组件通过交换数据信息来进行通信。模块可以嵌套,可以将多个模块组合在一起形成一个复合模块。
-
利用NED语言创建一个NED文件定义网络结构模型,有两种编辑方式,可以通过图形界面进行网络模型的构建,也可以直接通过文本编辑器输入源码来构建网络模型。
如上图所示,就是一个网络拓扑模型。包括两台主机,无线传输介质,配置器和可视化的模块。其中还可以看到旁边菜单里还有其他的节点模型,可以根据需要进行添加。另外,在该窗口的底部可以看到有两个选项:Design和Source。其中能够通过图形化显示的这个就是Design模式;Source模式如下图所示:
两种模式都可以用来编辑网络模型,选择自己喜欢的模式即可! -
模型的活跃组件(简单模块)是用 C++ 编写的.cc文件(比如tictoc1中对于Txc1模块的功能定义的Txc1.cc文件),使用了仿真内核和类库。代表协议头的 C++ 类在 MSG 文件中描述,然后这些文件被转换成 C++ 代码。
-
创建一个合适的 omnetpp.ini 文件来保存 OMNeT++ 配置和模型参数。一个 ini 文件可能包含多个可以相互建立在之上的配置,甚至可能包含参数研究。
-
构建仿真程序并运行
-
仿真结果被写入输出向量和输出标量文件中。可以在仿真 IDE 中使用由 Pandas 和 Matplotlib 提供支持的分析工具来分析和绘制这些结果。可以在 IDE 中的序列图工具查看仿真过程中记录的事件日志。结果文件是基于文本的,因此也可以使用 R、Matlab 或其他工具来处理它们
OMNeT++安装
- 安装环境:windows11
- 安装版本:omnet++6.0.3,该版本现为官网更新的最新版本,兼容INET4.5.2的框架
- 安装链接:https://omnetpp.org/download/
从这里下载好以后,得到压缩包:
然后对压缩包进行解压,得到一个文件夹,有如下这些文件(没有截全,部分文件):
然后选择其中的mingwenv.cmd,双击打开,窗口如下图所示,其中的omnetpp命令是我用来启动这个仿真软件的,在安装软件时不必输入该命令:
首先输入./configure 此过程比较快。执行完此命令后再输入make这个过程会比较慢,耐心等着就好了。安装步骤在解压文件夹中也有(INSTALL)。执行完make命令后界面如下图所示:
按照提示输入omnetpp便可以完成安装了,界面如下图所示:
点击launch,就可进入omnetpp的仿真界面。
至此,omnet++软件完成安装,写一篇来写下如何利用omnet++来新建一个自己的工程!