Contenido
- Introducción
- Objetivo
- Instalación del INET Framework
- Creación y configuración del proyecto
- Definición de la topología de red
- Generación del archivo
omnetpp.ini
- Ejecución de la simulación
- Visualización de estadísticas
- Exportación de Datos a CSV o Excel
- Búsqueda de Documentación en INET Framework
- Módulos utilizados en esta simulación
Introducción
El INET Framework es un conjunto de simulaciones de protocolos de red para OMNeT++. Proporciona una amplia gama de componentes para modelar distintos aspectos de las redes de comunicaciones, incluyendo protocolos de Internet, redes inalámbricas y móviles, protocolos de transporte como TCP y UDP, y aplicaciones de red como HTTP y otros. Se utiliza principalmente para la investigación y educación en el campo de las redes de comunicaciones.
La última versión del INET Framework (Marzo 2025) es la 4.5.4.
Objetivo
En esta guía paso a paso aprenderás a configurar y ejecutar una simulación básica utilizando la aplicación PingApp
del INET Framework en OMNeT++. También aprenderás a visualizar, analizar y exportar estadísticas generadas por la simulación, utilizando herramientas internas de OMNeT++.
Instalación del INET Framework
Hay varias maneras de instalar el INET Framework:
- Deje que el IDE OMNeT++ lo descargue e instale por usted. Esta es la forma más fácil. Sólo tiene que aceptar la opción de instalar INET en el cuadro de diálogo que aparece cuando se inicia por primera vez el IDE, o elegir Ayuda ‣ Instalar modelos de simulación en cualquier momento posterior.
- Desde el sitio web del INET Framework, (http://inet.omnetpp.org). El IDE siempre instala la última versión estable compatible con su versión de OMNeT++. Si necesita alguna otra versión, están disponibles para su descarga desde el sitio web. Las instrucciones de instalación también se proporcionan allí.
- Desde GitHub. Si tienes experiencia con git, clone el proyecto INET Framework
(inet-framework/inet)
, revise la revisión de tu elección, y sigua el archivo INSTALL en la raíz del proyecto. - Video con instrucciónes para la instalación del INET Framework 4.5 en OMNeT++ 6.0.2
Creación y configuración del proyecto
- Inicia OMNeT++ y crea un nuevo proyecto de OMNeT++ vacío nombrándolo
lab1Ping
. - El proyecto debe estar en el mismo espacio de trabajo donde se encuentra el `inet4.5
- Haz clic derecho sobre el proyecto
lab1Ping
en el explorador de proyectos y selecciona Properties.
- En la sección Project References, marca la casilla correspondiente a
inet4.5
. Luego, selecciona Apply and Close para cerrar la ventana.
Definición de la topología de red
Archivo NED
- Crea un archivo NED vacío dentro del proyecto y nómbralo
lab1.ned
.
Adición de la Red
- Abre la pestaña Design en el editor del archivo NED
lab1.ned
. - Agrega un elemento
Network
al lienzo. - Renombra la red con este nombre por
Red2hosts
Adición de los Hosts
- Añade dos hosts al diseño de la red, utilizando el módulo
StandardHost
.
Adición del Configurador de Red
- Inserta un elemento
ipv4NetworkConfigurator
en la red.
- Renombra este módulo a
configurator
para simplificar su identificación.
Conexión de Hosts
- Utilizando la herramienta
Connection
, seleccionaEth100M
.
- Conecta los dos host haciendo click en el primero y luego en el segundo, seleccionando la interfaz
ethg[0]
.
- Renombra el nombre de los host por
HostA
yHostB
respectivamente
Resultado Final en lab1.ned
-
En la pestaña de Source del editor del archivo NED, modifica la sección de
connections
para que en lugar de aparecer comoethg[0]
, este comoethg++
. Esta modificación permite que OMNeT++ asigne automáticamente el número de interfaz cuando se establecen múltiples conexiones. -
Asegúrate de que tu archivo
lab1.ned
tenga el siguiente aspecto después de seguir los pasos anteriores:
import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;
import inet.node.ethernet.Eth100M;
import inet.node.inet.StandardHost;
//
// TODO documentation
//
network Red2hosts
{
@display("bgb=308,175");
submodules:
HostA: StandardHost {
@display("p=51.9,117.2");
}
HostB: StandardHost {
@display("p=236,105");
}
configurator: Ipv4NetworkConfigurator {
@display("p=258,27");
}
connections:
HostA.ethg++ <--> Eth100M <--> HostB.ethg++;
}
Generación del archivo omnetpp.ini
En este paso, aprenderás a configurar la aplicación PingApp
para que se ejecute dentro de la simulación. Además, definirás parámetros como la frecuencia de envío de los mensajes Ping
y cómo definir la duración total de la simulación.
Vamos a simular el envío de mensajes tipo Ping
desde HostA
hacia HostB
, iniciando 1s
después de que comience la simulación. Los mensajes se enviarán a intervalos distribuidos uniformemente entre 1s
y 3s
. También estableceremos un límite de tiempo de simulación de 3600s
(1 hora).
- Crea un archivo de inicialización vacio (
omnetpp.ini
) y pega el siguiente código:
[PingSimple]
network = Red2hosts
sim-time-limit = 3600s
#Aplicación Ping
*.HostA.numApps = 1
*.HostA.app[0].typename="PingApp"
*.HostA.app[0].destAddr = "HostB"
*.HostA.app[0].startTime = 1s
*.HostA.app[0].sendInterval = uniform(1s,3s)
*.HostA.app[0].printPing = true
Ejecución de la simulación
- Inicia la simulación en OMNeT++ y podrás ver los mensajes de
ICMPv4 ECHO-REQ
eICMPv4 ECHO-REPLY
entre los dos hosts.
Visualización de estadísticas
Entendiendo las Estadísticas en OMNeT++
OMNeT++ genera tres tipos principales de estadísticas:
- Escalares: Son valores únicos que se registran al finalizar la simulación. Ejemplo:
numLost
. - Vectores: Son series temporales que registran valores a lo largo de la simulación. Ejemplo:
pingTxSeq
. - Histogramas: Representan distribuciones de valores a lo largo del tiempo. Ejemplo:
rtt
.
La comprensión de cada tipo de estadística es fundamental para analizar el desempeño de una simulación y compararla con escenarios alternativos.
Visualización de estadísticas en OMNeT++
Después de correr la simulación, sigue estos pasos:
-
Detener la simulación:
- Cuando la simulación se complete (o si deseas detenerla antes), haz clic en el botón de
Stop
.
- Cuando la simulación se complete (o si deseas detenerla antes), haz clic en el botón de
-
Abrir el
Run Analysis Tool
:- En la ventana principal de OMNeT++, en el explorador del proyecto busca dentro de la carpeta
results
los archivos.sca
y.vec
con las estadísticas generadas por la simulación.
- Haz doble clic en cualquiera de estos archivos para abrir el
Analysis Tool
, paso previo debes confirmar el nombre de un archivo.anf
el cual sirve para agrupar todas las Estadísticas que deseas analizar.
- En la ventana principal de OMNeT++, en el explorador del proyecto busca dentro de la carpeta
- Esto abrira una ventana con tres pestañas:
-
La primera
Inputs
contiene los archivos de s (.sca
y.vec
) que se incluyen en este analisis -
La segunda
Browse Data
es donde podemos explorar todas las s incluidas en el analisis (escalares, vectores e histogramas) -
La tercera:
Charts
es donde podemos ir agrupando todas las gráficas que vayamos generando en el analisis.
-
TIP
Guarda tu archivo
.anf
frecuentemente para evitar perder tus configuraciones de análisis.
Estadísticas de tipo escalar (numLost
)
- En la pestaña
Browse Data
, selecciona la pestañaScalars
. - Navega por la estructura del árbol hasta encontrar el
app[0]
bajoHostA
.- Puedes tambien utilizar el filtro del módulo
Red2hosts.HostA.app[0]
según se muestra en la figura. Esto muestra todas las s tipo Escalar que la aplicaciónPingApp
(en este casoapp[0]
) delHostA
ha generado .
- Puedes tambien utilizar el filtro del módulo
NOTE
Por defecto OMNeT++ genera todas las definidas por el modulo al momento de la simulación
- Busca la
numLost
y anota el valor que aparece en la parte derecha. - Observa que dice
numLost:last
, lo que significa que ese valor lo que representa el conteo final de pings perdidos al final de la simulación. En ese caso por ser una red muy simple y en condiciones ideales, es posible que este valor sea0
onan
.
Multiples estadisticas tipo escalar (TxPk
)
-
Ahora busca la estadística llamada
TxPk:count
, esto representa el numero total de paquetes transmitidos hacia la capa física. A diferencia de la estadística anterior, esta es generada por el módulo EthernetMacel cual este embebido dentro el móduloStandardHost
utilizado en la simulación. -
Selecciona el contador para ambos nodos (
HostA
yHostB
), con ambos seleccionados haz click derecho y selecciona crear Plot using Bar Chart. -
Se genera dos gráficas tipo barra independientes para cada nodo, en este caso los valores son iguales, sin embargo esto te puede servir cuando quieras comparar diferentes estadísticas escalares, según la naturaleza de la simulación.
-
Ahora prueba seleccionar todos las estadísticas que inician con
TxPk:*
y genera un nuevo gráfico de barras seleccionando las dos estadísticas de cada nodo. -
El resultado es un gráfico de barras agrupadas donde cada barra representa una estadística y las barras estan agrupadas por módulo, en este caso por el nodo
HostA
yHostB
-
Puedes guardar esta gráfica para su consulta posterior, esta quedará guardada en el archivo de análisis (
.anf
).
Estadísticas tipo vector (pingTxSeq
)
Ahora vamos a ver como visualizar estadísticas tipo vector, es decir arreglos bidimencionales donde uno representa el valor de registro y el otro el punto en el tiempo. Este tipo de estadísticas nos sirven para conocer como se comportó cierta estadística a lo largo del tiempo de simulación
Para este ejemplo vamos a utilizar la estadística pingTxSeq:vector
del modulo tipo aplicación PingApp
, la cual representa el numero de secuencia de los mensajes de ping transmitidos en el tiempo.
-
Cambia a la pestaña
Vectors
en la herramienta de análisis. -
Busca
PingApp
(app[0]
) bajoHostA
y selecciona el vector llamadopingTxSeq
. -
Haciendo click derecho sobre la estadística y seleccionando Show Output Vector View puedes visualizar la serie temporal completa generada por
pingTxSeq
. -
También podrías exportar la serie temporal completa a un archivo de salida como CSV
-
Podrias generar un gráfico de linea de la serie temporal, con click derecho y Plot using Line Chart
-
Tambien puede crear graficos de varios vectores en la misma gráfica, ya sea en los mismos ejes o ejes separados:
-
Para exportar los datos, haz clic derecho y selecciona
Export as CSV
.
Diferencias entre Plot using Line Chart vs Plot using Line Chart with Matplotlib
- Plot using Line Chart:
- Esta opción genera un gráfico de líneas básico utilizando el generador de gráficos interno de OMNeT++. Es ideal para visualizaciones rápidas y sencillas de vectores o datos escalarizados. Es más liviano y rápido pero limitado en personalización avanzada de gráficos. No requiere que
Matplotlib
esté instalado.- Plot using Line Chart with Matplotlib:
- Genera gráficos de líneas utilizando la biblioteca
Matplotlib
, la cual es estándar en Python para visualización avanzada. Permite personalización detallada y estética más elaborada de gráficos. Requiere tener instaladoMatplotlib
.
Estadísticas tipo histograma (rtt
)
Tambien podemos visualizar las estadísticas tipo histograma, para este ejemplo utilizaremos la Estadística rtt
, que represente el round-trip time , es decir el tiempo que tardaron los mensajes de ping en ir y regresar a lo largo del tiempo,
- Cambia a la pestaña
Histograms
. - Busca
PingApp
bajoHostA
y selecciona la estadística llamadartt
. - Este histograma muestra la distribución de los tiempos de ida y vuelta (
Round Trip Time
) para cada mensajePing
. - También puedes exportar el histograma en formato CSV si lo deseas.
Exportación de Datos a CSV o Excel
Para exportar estadísticas a archivos externos (CSV o Excel), sigue los siguientes pasos:
-
En la pestaña
Browse Data
dentro delAnalysis Tool
, selecciona la pestaña correspondiente al tipo de estadistica que desas exportar, ya seaScalars
,Vectors
oHistograms
. -
Selecciona los elementos que deseas exportar (puedes seleccionar múltiples elementos manteniendo presionada la tecla
Ctrl
oShift
). -
Haz clic derecho y selecciona
Export Data
, y luegoCSV for Spreadsheets
-
OMNeT++ generará un archivo
CSV
con los datos exportados para poder ser procesados fuera de OMNeT++
TIP
Los archivos CSV generados pueden ser abiertos en Excel, Google Sheets o cualquier herramienta que soporte la importación de archivos de texto delimitados.
Búsqueda de Documentación en INET Framework
Con el INET Framework es importante poder investigar la documentación sobre los módulos y aplicaciones disponibles.
INET Framework posee documentación oficial que puedes consultar en: INET Framework Documentation Aquí puedes buscar módulos específicos y leer la documentación relacionada con cada uno.
Otra fuente importante para buscar documentación sobre los modulos es el INET Reference donde se pued encontrar información específica de cada módulo.
Módulos utilizados en esta simulación
StandardHost
StandardHost contiene los protocolos de Internet más comunes: UDP, TCP, IPv4, IPv6, Ethernet, IEEE 802.11. También soporta un modelo de movilidad opcional, modelos de energía opcionales, y cualquier número de aplicaciones que son totalmente configurables desde archivos INI.
PingApp
La aplicación PingApp genera solicitudes de ping y calcula la pérdida de paquetes y los parámetros de ida y vuelta de las respuestas.
El tiempo de inicio/parada, intervalo entre envíos etc. pueden ser especificados a través de parámetros. Una dirección puede ser dada en notación decimal punteada (o, para IPv6, en la notación usual con dos puntos), o con el nombre del módulo. (La clase L3AddressResolver
se utiliza para resolver la dirección.) Para desactivar el envío, especifique destAddr
vacío.
Cada solicitud de ping se envía con un número de secuencia, y se espera que las respuestas lleguen en el mismo orden. Siempre que haya un salto en el número de secuencia de las respuestas de ping recibidas (por ejemplo, 1, 2, 3, 5), entonces el ping que falta (el número 4 en este ejemplo) se cuenta como perdido. Entonces, si todavía llega más tarde (es decir, una respuesta con un número de secuencia menor que el mayor recibido hasta el momento) se contará como llegada fuera de secuencia, y al mismo tiempo se decrementa el número de pérdidas. (Se supone que el paquete llegado se contó antes como pérdida, lo que es cierto si no hay paquetes duplicados).
Eth100M
Conexión que representa un enlace Ethernet de 100Mb/s, en los enlaces tipo Ethernet es posible específicar el retardo de propagación mediante la longitud del cable.
Referencias
- Guía de Usuario de INET - Networks
- Guía de Usuario de INET - Applications
- Guía de Usuario de INET - The Ethernet Model
- Guía de Usuario de INET - Transport Protocols
Ahora que te has familiarizado con la ejecución de simulaciones con el INET Framework y la visualización de estadísticas, intenta realizar este INET Framework - Laboratorio 1 Modificación de Parámetros en PingApp