Contenido


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, selecciona Eth100M.

  • 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 HostAy HostBrespectivamente


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 como ethg[0], este como ethg++. 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 e ICMPv4 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:

  1. Detener la simulación:

    • Cuando la simulación se complete (o si deseas detenerla antes), haz clic en el botón de Stop.
  2. Abrir el Run Analysis Tool:

    • En la ventana principal de OMNeT++, en el explorador del proyecto busca dentro de la carpeta resultslos archivos .scay .veccon 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 .anfel cual sirve para agrupar todas las Estadísticas que deseas analizar.

  • Esto abrira una ventana con tres pestañas:
    • La primera Inputscontiene los archivos de s (.scay .vec) que se incluyen en este analisis

    • La segunda Browse Dataes donde podemos explorar todas las s incluidas en el analisis (escalares, vectores e histogramas)

    • La tercera: Chartses 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)

  1. En la pestaña Browse Data, selecciona la pestaña Scalars.
  2. Navega por la estructura del árbol hasta encontrar el app[0] bajo HostA.
    • 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ón PingApp(en este caso app[0]) del HostA ha generado .

NOTE

Por defecto OMNeT++ genera todas las definidas por el modulo al momento de la simulación

  1. Busca la numLost y anota el valor que aparece en la parte derecha.
  2. 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 sea 0 o nan.

Multiples estadisticas tipo escalar (TxPk)

  1. 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ódulo StandardHostutilizado en la simulación.

  2. Selecciona el contador para ambos nodos (HostAy HostB), con ambos seleccionados haz click derecho y selecciona crear Plot using Bar Chart.

  3. 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.

  4. Ahora prueba seleccionar todos las estadísticas que inician conTxPk:*y genera un nuevo gráfico de barras seleccionando las dos estadísticas de cada nodo.

  5. 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 HostAy HostB

  6. 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.

  1. Cambia a la pestaña Vectors en la herramienta de análisis.

  2. Busca PingApp (app[0]) bajo HostA y selecciona el vector llamado pingTxSeq.

  3. Haciendo click derecho sobre la estadística y seleccionando Show Output Vector View puedes visualizar la serie temporal completa generada por pingTxSeq.

  4. También podrías exportar la serie temporal completa a un archivo de salida como CSV

  5. Podrias generar un gráfico de linea de la serie temporal, con click derecho y Plot using Line Chart

  6. Tambien puede crear graficos de varios vectores en la misma gráfica, ya sea en los mismos ejes o ejes separados:

  7. 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 instalado Matplotlib.

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,

  1. Cambia a la pestaña Histograms.
  2. Busca PingApp bajo HostA y selecciona la estadística llamada rtt.
  3. Este histograma muestra la distribución de los tiempos de ida y vuelta (Round Trip Time) para cada mensaje Ping.
  4. 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 del Analysis Tool, selecciona la pestaña correspondiente al tipo de estadistica que desas exportar, ya sea Scalars, Vectorso Histograms.

  • Selecciona los elementos que deseas exportar (puedes seleccionar múltiples elementos manteniendo presionada la tecla Ctrl o Shift).

  • Haz clic derecho y selecciona Export Data , y luego CSV 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


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