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

news2024/11/20 23:32:02
最近由于由于工作上的需求,接了一个网络仿真的任务。于是开始调研各个仿真平台,然后根据目前的需求和网络上公开资料的多少,决定使用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.coloradmin.cn/o/2177052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

社交应用性能提升秘籍:推拉结合优化方案全解读!

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hello,大家好!我是你们的老朋友小米,一个积极活泼的29岁技术分享达人~ 今天要跟大家分享的是我最近在个人项目里遇到的一个有趣的优化案例——“推拉…

OptiTrack与Xsens光、惯动捕中用于动画制作的尖端设备对比

随着动画、电影、游戏等数字内容行业的迅速发展,捕捉演员的动作并将其转化为虚拟角色的技术越来越受到重视。两种主要的动作捕捉技术——光学捕捉系统和惯性动作捕捉系统——代表了当前市场的最前沿。本文将对比两种技术的代表性设备:OptiTrack的光学动作…

Vue3 动态加载图片不显示问题

一、图片目录结构 二、批量导出图片 exportImage.ts const images import.meta.glob(/assets/icons/*.{png,jpg,jpeg,svg}, { eager: true });const imageMap Object.entries(images).reduce((acc, [key, value]) > {const imageName key.split(/).pop().replace(/\.…

PDF对话RAG应用开发实战

与大型 PDF 对话很酷。你可以与笔记、书籍和文档等聊天。这篇博文将帮助你构建一个基于 Multi RAG Streamlit 的 Web 应用程序,以通过对话式 AI 聊天机器人读取、处理和与 PDF 数据交互。以下是此应用程序工作原理的分步分解,使用简单的语言易于理解。 N…

运用电磁铁需求注意哪些问题

电磁铁是比较常用的磁场设备,在与磁性研究相关的实验室里,我们能经常看到,那磁场设备在使用的时候,包括各类电磁铁、亥姆霍兹线圈、螺线管等,有什么需要注意的事项呢? 电磁铁设备主要包括电磁铁以及配套电…

大跳水!华为三折叠手机黄牛价暴跌,市场需求显真相

华为首款三折叠手机Mate XT上市初期受到黄牛热炒,但由于实际需求不足和定价过高,市场溢价迅速下跌,反映出折叠屏手机市场仍需培养消费者接受度。 转载:科技新知 原创 作者丨依蔓 编辑丨蕨影 惊了!华为首款三折叠手机M…

Electron 主进程与渲染进程、预加载preload.js

在 Electron 中,主要控制两类进程: 主进程 、 渲染进程 。 Electron 应⽤的结构如下图: 如果需要更深入的了解electron进程,可以访问官网 流程模型 文档。 主进程 每个 Electron 应用都有一个单一的主进程,作为应用…

如何通过VSM识别生产过程中的信息流浪费?

VSM(价值流图),作为精益生产的核心工具之一,它不仅仅是一张简单的流程图,更是企业优化生产流程、提升价值传递效率的指南针。通过VSM,我们可以清晰地看到从原材料到成品交付的全过程,包括物料流…

kafka集群跨双网段及多网段通信问题解决(避免踩坑)

一、问题场景: 实际生产环境总存在很多kafka集群跨网段的问题。kafka集群可能存在多个网卡,对应多个网段。不同网段之间需要同时与集群通信,即跨网段生产消费问题。 单机 # broker 的唯一标识符,在 Kafka 集群中必须唯一 broker.…

uniapp修改uni-ui组件样式(对微信小程序/H5有效,vue3)

寻找要修改的样式 使用开发者工具找到具体要修改的class类名 修改 <style lang"scss">//.nav为上一级的class.nav::v-deep .uni-navbar--border {border-bottom-style: none !important;} </style>完整代码 <template><view><uni-na…

基于SpringBoot+Vue的在线考试管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

24年Novartis诺华制药社招入职SHL测评:综合能力、性格问卷、动机问卷高分攻略

尊敬的求职者&#xff0c;若您渴望在医药行业的领军企业——诺华制药——开启您的职业生涯&#xff0c;深入了解其社招与校招测评流程至关重要。以下是对诺华SHL测评题型的全面解读&#xff0c;助您在招聘季脱颖而出。 测评构成 诺华的招聘测评由以下三个部分组成&#xff1a…

Arthas trace (方法内部调用路径,并输出方法路径上的每个节点上耗时)

文章目录 二、命令列表2.3 monitor/watch/trace/stack/tt 相关2.3.3 trace &#xff08;方法内部调用路径&#xff0c;并输出方法路径上的每个节点上耗时&#xff09;举例1&#xff1a;查看方法整体耗时举例2&#xff1a;trace次数限制 本人其他相关文章链接 二、命令列表 2.3…

【项目总结】工程构建思路分析与分享

背景 写这篇文章的初衷是因为国产化项目临近结束&#xff0c;在做项目总结时&#xff0c;回想起了代码管理的相关问题。虽然工程搭建及管理是一个高级工程师必备的能力&#xff0c;但似乎每次一个新项目立项&#xff0c;都是从老的项目中拷贝工程框架&#xff0c;再进行定制修…

【C++】C++17中可以存储任意类型数据的对象——any类的使用与设计思想

目录 引言 any类的使用 构造 号运算符重载 std::any::swap std::any::has_value std::any::type std::any::reset std::any_cast any类的设计思想 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 C专栏&#xff1a;C_东洛的克莱斯韦克的博客-CSDN博客 引言 一提到存…

按键 tab 则 切换输入框, 按键 ↑↓ 则 加减数值

1) 页面内输入框,按键 tab 则 切换输入框, 按键 ↑↓ 则 加减数值 2) 思路 1、按键 tab切换input框&#xff0c;默认tab切换会聚焦到浏览器地址栏&#xff08;F12时会聚焦到开发者工具选项&#xff09;&#xff0c;我们需要阻止该默认事件。 2、进入页面就聚焦到第一个输入框…

【JAVA基础】lombok的@Data会生成什么?和无参构造器有关系吗

问题&#xff1a; 前提&#xff1a;实体中有三个属性&#xff1b;问题一、lombok在实体上如果只加Data会生成哪些构造器。问题二 编译器默认生成无参构造器&#xff0c;如果自己写了有一个参数的构造器&#xff0c;还会生成默认的无参构造器吗 &#xff1f; 问题一解答 当在Jav…

免费送源码:Java+B/S+ssm+MySQL 公众养老服务网上预订系统 计算机毕业设计原创定制

摘 要 本论文主要论述了如何使用JAVA语言开发一个公众养老服务网上预订系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;SSM框架进行开发。在引言中&#xff0c;作者将论述公众养老服务网上预订系统的当前背景以及系统开发…

本地生活服务项目有哪些:如何利用本地生活市场,打开线下流量!

随着各大互联网公司在本地生活服务板块的布局力度持续加大&#xff0c;越来越多的人都开始意识到了它背后所蕴含着的发展前景和收益潜力&#xff0c;进而纷纷打听起了与之相关的消息。而就小编与多位创业者的交流情况而言&#xff0c;在众多问题中&#xff0c;属本地生活服务项…

巨控协议转换网关GRM321GRM322GRM323应用场景

巨控工业协议网关GRM321,GRM322,GRM323是网口型网关&#xff0c;支持各种PLC的TCP协议&#xff0c;具备多路RS485,RS232和三个TCP网口。能实现RS485&#xff0c;RS232和TCP的工业协议的零代码无缝转换&#xff0c;能极大节约工程师编程时间&#xff0c;保障数据采集的可靠性。 …