从零开始学习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文件定义网络结构模型,有两种编辑方式,可以通过图形界面进行网络模型的构建,也可以直接通过文本编辑器输入源码来构建网络模型。

如上图所示,就是一个网络拓扑模型。包括两台主机,无线传输介质,配置器和可视化的模块。其中还可以看到旁边菜单里还有其他的节点模型,可以根据需要进行添加。另外,在该窗口的底部可以看到有两个选项: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++来新建一个自己的工程!
相关文章:
从零开始学习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 中的基本数据…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
