OMNeT++
OMNeT++ es una herramienta de modelado y simulación pública, basado en componentes
modulares y con un ambiente de simulación de arquitectura abierta y con un fuerte soporte de
GUI.1, creado por András Varga en el 2003 en la Universidad Técnica de Budapest. Es un
simulador de ambiente discreto. Su área de aplicación primaria es la simulación de redes de
comunicación, y debido a su arquitectura genérica y flexible, ha sido utilizada exitosamente en
redes basadas en colas de espera y arquitectura hardware. Múltiples modelos de simulación de
fuente abierta han sido publicados, en el campo de las simulaciones de internet (IP, IPv6, MPLS,
etc), movilidad, simulaciones ad-hoc2 y otras áreas.
Ya que OMNeT++ provee una arquitectura modular, estos componentes (módulos) están
programados en C++, después son ensamblados en componentes y modelos más grandes
utilizando un lenguaje de alto nivel (NED). Su soporte GUI, junto con su arquitectura modular
las simulaciones pueden ser incluidas fácilmente en aplicaciones propias. Aunque OMNET++ no
es un simulador en sí, actualmente está ganando popularidad como una plataforma de simulación
de redes en la comunidad científica así como la industria. OMNeT++ corre para las plataformas
Linux, Unix-like y Windows.
Funcionamiento de OMNeT++
Proporciona las herramientas básicas para realizar simulaciones, pero por sí mismo no
proporciona ningún componente específico para la simulación de redes de computadoras,
simulaciones de colas, simulaciones de arquitectura de sistemas o cualquier otra área. En su
lugar, estas áreas de aplicación son proporcionadas por varios modelos de simulación y
arquitecturas tales como Mobility Framework o INET Framework. Estos modelos son
desarrollados completamente independientes a lo que es OMNeT++, y siguen propios ciclos.
1
Interfaz gráfica de usuario (GUI), programa o entorno que gestiona la interacción con el usuario basándose en
relaciones visuales como: íconos, menús o un puntero.
2
Red ad hoc es aquella (especialmente inalámbrica) en la que no hay un nodo central, si no que todos los
dispositivos están en igualdad de condiciones. Ad hoc es el modo más sencillo para el armado de una red.
Así pues, lo que OMNeT++ proporciona en sí es una librería clase C++ que permite la creación
de componentes de simulación como módulos simples y canales; también, se proporciona la
infraestructura para reunir las simulaciones de estos componentes y configurarlos en el lenguaje
NED o en archivos tipo ini. También proporciona interfaces donde se puede observar y
manipular el tiempo de ejecución o ambientes para la simulación como Tkenv, Cmdenv;
herramientas para facilitar crear simulaciones y evaluar sus resultados como GNED, Scalars y
Plove.
Descripción de la estructura del modelo y el lenguaje NED
La topología de un modelo es definida usando el lenguaje NED. Éste facilita una descripción
modular de una red. Así, una red puede estar compuesta por la descripción de varios
componentes. Los canales, módulos simples y compuestos definidos para una red pueden ser
reutilizados en la descripción de otra red.
Los archivos que contienen el código NED pueden ser generados utilizando un editor de textos o
el editor gráfico incorporado. Este editor es la interfaz gráfica que permite crear, programar,
configurar y simular redes de comunicaciones, sin necesidad de codificar en lenguaje NED,
haciendo uso de diseños gráficos.
Construcción de modelos en OMNeT++
El sistema de simulación de OMNeT++ provee un núcleo de simulación que contiene las rutinas
que controlan las simulaciones y las bibliotecas de simulación, e interfaces de usuario que son
usadas para la construcción de modelos y ejecución de simulaciones.
Un modelo en OMNeT++ consiste básicamente de la descripción de la topología del modelo en
el lenguaje NED, la definición de mensajes y el código de los módulos simples. Los modelos en
OMNET++ tienen una estructura modular. Existen objetos básicos con una funcionalidad básica
a partir de los cuales se componen módulos complejos formando una estructura jerárquica
anidada.
La construcción de un modelo de simulación con OMNET++ se resume en los siguientes pasos:
Descripción de la estructura (módulos y relaciones) del sistema mediante el lenguaje
NED.
Implementación de los módulos simples en C++.
Generación del modelo. Se compilan los módulos y se enlazan con la biblioteca de
simulación.
Configuración de la simulación. Se especifican los parámetros adecuados para la
ejecución de la simulación.
Elementos usados en el modelamiento:
Módulos jerárquicos
Un modelo está compuesto por módulos jerárquicos, que se comunican mediante mensajes. El
módulo de nivel superior se denomina módulo de sistema, el cual contiene submódulos, los
cuales también pueden contener submódulos. Se puede implementar un módulo con cualquier
cantidad de niveles de módulos.
Los módulos que contienen submódulos se denominan módulos compuestos. Existen también los
módulos simples (elementos básicos) que contienen los algoritmos que permiten el
funcionamiento del modelo. Los módulos simples se implementan en el lenguaje C++ usando
la biblioteca de simulación de OMNeT++.
Tipos de módulos
Los módulos simples y compuestos son instancias de módulos básicos denominados module
«types». Estos proveen la funcionalidad básica para la implementación de módulos simples y
complejos del modelo.
Mensajes, puertas y enlaces
Los módulos se comunican intercambiando mensajes. Un mensaje puede contener una estructura
compleja de datos.
Las puertas son las interfaces entre los módulos; permiten el envío y recepción de mensajes.
Cada enlace es creado dentro del nivel del módulo. En un módulo se puede establecer la
comunicación entre sus submódulos y él mismo.
Modelado de transmisión de paquetes
Las conexiones pueden contener tres parámetros, que facilitan el modelamiento de redes de
computadores y que también pueden ser utilizadas en otros modelos. Estos parámetros son el
retardo en la propagación, el índice de error de bits y la tasa de transferencia de datos.
Parámetros
Los parámetros son elementos que permiten personalizar el comportamiento de los módulos.
Descripción de topologías
La estructura del modelo es definida usando el lenguaje NED.