当前位置: 首页 > news >正文

从零开始学习OMNeT++系列第一弹——OMNeT++的介绍与安装

最近由于由于工作上的需求,接了一个网络仿真的任务。于是开始调研各个仿真平台,然后根据目前的需求和网络上公开资料的多少,决定使用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文件定义网络结构模型,有两种编辑方式,可以通过图形界面进行网络模型的构建,也可以直接通过文本编辑器输入源码来构建网络模型。
    图片1
    如上图所示,就是一个网络拓扑模型。包括两台主机,无线传输介质,配置器和可视化的模块。其中还可以看到旁边菜单里还有其他的节点模型,可以根据需要进行添加。另外,在该窗口的底部可以看到有两个选项:Design和Source。其中能够通过图形化显示的这个就是Design模式;Source模式如下图所示:
    图片2
    两种模式都可以用来编辑网络模型,选择自己喜欢的模式即可!

  • 模型的活跃组件(简单模块)是用 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/
    图片3
    从这里下载好以后,得到压缩包:
    图片4
    然后对压缩包进行解压,得到一个文件夹,有如下这些文件(没有截全,部分文件):
    图片5
    然后选择其中的mingwenv.cmd,双击打开,窗口如下图所示,其中的omnetpp命令是我用来启动这个仿真软件的,在安装软件时不必输入该命令:
    图片6
    首先输入./configure 此过程比较快。执行完此命令后再输入make这个过程会比较慢,耐心等着就好了。安装步骤在解压文件夹中也有(INSTALL)。执行完make命令后界面如下图所示:
    图片7
    按照提示输入omnetpp便可以完成安装了,界面如下图所示:
    图片8
    点击launch,就可进入omnetpp的仿真界面。
    至此,omnet++软件完成安装,写一篇来写下如何利用omnet++来新建一个自己的工程!
http://www.lryc.cn/news/452259.html

相关文章:

  • Cluster Explanation via Polyhedral Descriptions
  • 爬虫设计思考之一
  • 解决centos 删除文件后但空间没有释放
  • 微软SCCM:企业级系统管理的核心工具
  • RTSP作为客户端 推流 拉流的过程分析
  • 【MySQL 07】内置函数
  • 《深度学习》OpenCV 背景建模 原理及案例解析
  • 机器学习(1):机器学习的概念
  • 0. Pixel3 在Ubuntu22下Android12源码拉取 + 编译
  • ip经过多个服务器转发会网速变慢吗
  • mongodb通过mongoimport导入JSON文件数据
  • 【Qt】控件概述 (1)
  • ping基本使用详解
  • Win10之解决:设置静态IP后,为什么自动获取动态IP问题(七十八)
  • 【AI论文精读1】针对知识密集型NLP任务的检索增强生成(RAG原始论文)
  • 踩坑spring cloud gateway /actuator/gateway/refresh不生效
  • 【STM32开发环境搭建】-3-STM32CubeMX Project Manager配置-自动生成一个Keil(MDK-ARM) 5的工程
  • 计算机毕业设计 Java酷听音乐系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Java的学习(语法相关)
  • 简单的springboot 编写Socket服务接口
  • 【Android 源码分析】Activity短暂的一生 -- 目录篇 (持续更新)
  • VS Code使用Git Bash终端
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——13.mapset(模拟实现)
  • 【C++】多态(下)
  • 基于四种网络结构的WISDM数据集仿真及对比:Resnet、LSTM、Shufflenet及CNN
  • 【蚂蚁HR-注册/登录安全分析报告】
  • 【分布式微服务云原生】详解Redis的主从模式,主服务器挂了如何从多个从服务器选出新的主服务器
  • Android Context是什么?有很多的context他们之间有什么区别?什么时候该使用哪个?
  • 数字解调同步技术
  • k8s搭建一主三从的mysql8集群---无坑