当前位置: 首页 > 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++来新建一个自己的工程!

相关文章:

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

最近由于由于工作上的需求,接了一个网络仿真的任务。于是开始调研各个仿真平台,然后根据目前的需求和网络上公开资料的多少,决定使用omnet这个网络仿真平台。现在也是刚开始学习,所以决定记录一下从零开始的这个学习过程。因为虽然…...

Cluster Explanation via Polyhedral Descriptions

通过多面体描述进行聚类解释 本文关注聚类描述问题,即在给定数据集及其聚类划分的情况下,解释这些聚类的任务。我们提出了一种新的聚类解释方法,通过在每个聚类周围构建一个多面体,同时最小化最终多面体的复杂性或用于描述的特征…...

爬虫设计思考之一

爬虫设计思考之一 经常做爬虫的人对于技术比较的执着,尤其是本身从事的擅长的技术领域,从而容易忽视与之相近或者相似的技术。因此我建议大家在遇到此类问题的时候,可以采用对比分析的方式来理解。 本次的思考是基于国内最大的中文搜索引擎百…...

解决centos 删除文件后但空间没有释放

一、问题描述:磁盘空间不足,清理完垃圾日志以后磁盘空间还是没有释放 查看磁盘空间 [rootxwj-qt-65-44 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G …...

微软SCCM:企业级系统管理的核心工具

目录 摘要 1. 引言 2. SCCM的基本概念 2.1 什么是SCCM? 2.2 SCCM的历史 3. SCCM的架构 3.1 中心服务器 3.2 数据库 3.3 管理点(Management Point) 3.4 分发点(Distribution Point) 3.5 客户端代理 3.6 报告服务 4. SCCM的核心功能 4.1 软件部署与管理 4.2 操…...

RTSP作为客户端 推流 拉流的过程分析

之前写过一个 rtsp server 作为服务端的简单demo 这次分析下 rtsp作为客户端 推流和拉流时候的过 A.作为客户端拉流 TCP方式 1.Client发送OPTIONS方法 Server回应告诉支持的方法 2.Client发送DESCRIPE方法 这里是从海康摄像机拉流并且设置了用户名密码 Server回复未认证 3.客…...

【MySQL 07】内置函数

目录 1.日期函数 日期函数使用场景: 2.字符串函数 字符串函数使用场景: 3.数学函数 4.控制流函数 1.日期函数 函数示例: 1.在日期的基础上加日期 在该日期下,加上10天。 2.在日期的基础上减去时间 在该日期下减去2天 3.计算两…...

《深度学习》OpenCV 背景建模 原理及案例解析

目录 一、背景建模 1、什么是背景建模 2、背景建模的方法 1)帧差法(backgroundSubtractor) 2)基于K近邻的背景/前景分割算法BackgroundSubtractorKNN 3)基于高斯混合的背景/前景分割算法BackgroundSubtractorMOG2 3、步骤 1)初…...

机器学习(1):机器学习的概念

1. 机器学习的定义和相关概念 机器学习之父 Arthur Samuel 对机器学习的定义是:在没有明确设置的情况下,使计算机具有学习能力的研究领域。 国际机器学习大会的创始人之一 Tom Mitchell 对机器学习的定义是:计算机程序从经验 E 中学习&#…...

0. Pixel3 在Ubuntu22下Android12源码拉取 + 编译

0. Pixel3 在Ubuntu22下Android12源码拉取 编译 原文地址: http://www.androidcrack.com/index.php/archives/3/ 1. 前言 这是一个非常悲伤的故事, 因为一个意外, 不小心把之前镜像的源码搞坏了. 也没做版本管理,恢复不了了. 那么只能说是重新做一次. 再者以前的镜像太老旧…...

ip经过多个服务器转发会网速变慢吗

会的,IP经过多个服务器转发时,网速通常会变慢,主要原因包括: 增加的延迟: 每经过一个服务器,数据包就需要额外的时间进行处理和转发。这种处理时间和网络延迟会累积,导致整体延迟增加。 带宽限制…...

mongodb通过mongoimport导入JSON文件数据

目录 一、概念 二、mongoimport导入工具 三、导入命令 一、概念 MongoDB是一个流行的开源文档数据库,它支持JSON格式的文档,非常适合存储和处理大量的非结构化数据。在实际应用中,我们经常需要将大量的数据批量导入到MongoDB中。mongoimpo…...

【Qt】控件概述 (1)

控件概述 1. QWidget核心属性1.1核心属性概述1.2 enable1.3 geometry——窗口坐标1.4 window frame的影响1.4 windowTitle——窗口标题1.5 windowIcon——窗口图标1.6 windowOpacity——透明度设置1.7 cursor——光标设置1.8 font——字体设置1.9 toolTip——鼠标悬停提示设置1…...

ping基本使用详解

在网络中ping是一个十分强大的TCP/IP工具。它的作用主要为: 用来检测网络的连通情况和分析网络速度根据域名得到服务器 IP根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量。我们通常会用它来直接 ping ip 地址,来测试网络的连…...

Win10之解决:设置静态IP后,为什么自动获取动态IP问题(七十八)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…...

【AI论文精读1】针对知识密集型NLP任务的检索增强生成(RAG原始论文)

目录 一、简介一句话简介作者、引用数、时间论文地址开源代码地址 二、摘要三、引言四、整体架构(用一个例子来阐明)场景例子:核心点: 五、方法 (架构各部分详解)5.1 模型1. RAG-Sequence Model2. RAG-Toke…...

踩坑spring cloud gateway /actuator/gateway/refresh不生效

版本 java version: 17 spring boot: 3.2.x spring cloud: 2023.0.3 现象 参考Spring Cloud Gateway -> Actuator API -> Refreshing the Route Cache 说明,先修改routes配置再调用/actuator/gateway/refresh,接口返回200 status,但…...

【STM32开发环境搭建】-3-STM32CubeMX Project Manager配置-自动生成一个Keil(MDK-ARM) 5的工程

目录 1 KEIL(MDK-ARM) 5 Project工程设置 2 MCU和嵌入式软件包的选择 3 Code Generator 3.1 STM32Cube Firmware Library Package 3.2 Generated files 3.3 HAL Settings 3.4 Template Settings 4 Advanced Settings 5 自动生成的KEIL(MDK-ARM) 5 Project工程目录 结…...

计算机毕业设计 Java酷听音乐系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

Java的学习(语法相关)

字符串存储的问题 char 和字符串都是字符的集合,它们之间的确有相似性,但在 Java 中它们有着不同的存储机制和处理方式。让我从 char 和 String 的本质区别入手来解释。 1. char 和 String 的区别 char 是基本类型:char 是 Java 中的基本数据…...

告别加班!3个Word神技巧,文档处理快人一步

如影随形地跟着那堆积如山的文档,像学生名单,课程表,教学计划,家长通知等等,这些重复性工作着实耗费了大量精力。事实上,Word当中蕴含着好些能够让你达成事半功倍效果的技巧,一旦将它们掌握住&a…...

ssm+java2026年毕设司库管理系统【源码+论文】

本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景关于企业理财与融资管理问题的研究,现有研究主要以大型企业ERP系统或通用财务管理软件为主,专门针对中…...

WiFi热图绘制工具:用Python为你的无线网络做一次“CT扫描“ [特殊字符][特殊字符]

WiFi热图绘制工具:用Python为你的无线网络做一次"CT扫描" 🏥📶 【免费下载链接】wifi-heat-mapper whm also known as wifi-heat-mapper is a Python library for benchmarking Wi-Fi networks and gather useful metrics that can…...

G-Helper高效解决ROG游戏本散热与性能平衡难题

G-Helper高效解决ROG游戏本散热与性能平衡难题 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: https://gitcode…...

用MediaPipe和Python做个隔空切水果游戏:从手势骨架提取到简单游戏逻辑实现

用MediaPipe和Python打造体感切水果游戏:从手势识别到游戏逻辑全解析 还记得小时候在街机厅玩《水果忍者》的畅快感吗?现在,我们完全可以用Python和MediaPipe技术,在电脑前通过手势隔空切水果!本文将带你从零开始&…...

【AI+教育】告别“硬啃”长文,它把文档直接变成你的专属视频课

在这个信息大爆炸的时代,我们最不缺的就是资料:网盘里屯满的行业报告、收藏了却从未打开的学术论文、买来盖泡面的大部头教材……知识就在那里,但“学进去”实在太难了。 秘塔推出的“今天学点啥”,就是为了解决这个痛点而生的。它的核心逻辑非常简单粗暴:你把看不进去的文…...

量子行走:从理论到Python实现——4. 量子算法设计与实现

目录 4. 量子算法设计与实现 4.1 基础量子算法 4.1.1 Deutsch-Jozsa算法 4.1.2 量子傅里叶变换 4.1.3 Grover搜索算法 4.2 Shor因数分解与离散对数 4.2.1 算法框架与经典预处理 4.2.2 量子相位估计的精度分析 4.3 变分量子算法 4.3.1 变分量子本征求解器 4.3.2 量子近…...

MCP项目笔记六(PluginsLoader)

C 插件加载器:从目录扫描、动态库加载、实例创建,到安全卸载的设计思路与实现细节。一、整体架构概览 这段代码实现了一个完整的运行时插件系统(Runtime Plugin System)。所谓插件系统,就是让主程序在编译完成后&#…...

告别裸机思维:在GD32单片机上用FreeRTOS管理多个传感器(附源码)

从裸机到多任务:GD32FreeRTOS传感器管理系统实战 在嵌入式开发中,当系统需要同时处理多个外设时,传统的裸机编程往往会陷入复杂的状态机迷宫。我曾在一个环境监测项目中深有体会——当温湿度传感器、光照传感器、按键和OLED显示屏需要协同工作…...

基于MATLAB的平移线扫激光三维重建完整方案与代码实现

现整理了一套完整的,平移线扫重建 matlab代码和方案,包含相机标定、光平面标定与方案、移动装置标定与方案、激光线条中心线自适应提取、畸变矫正、三维重建、点云滤波等部分,代码按模块编写,注释完整,附带一份完整苹果…...