Está en la página 1de 11

UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR

ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES


ASIGNATURA: COMUNICACIONES MÓVILES

PRACTICA DE LABORATORIO N° 2

OMNeT++ con TicToc

1. Requerimientos
- PC con software OMNeT++ (preferible versión 5.x) instalado

2. Objetivo:
- Al finalizar la práctica, el estudiante será capaz de implementar un proyecto en
OMNeT++ con TicToc.

3. Procedimiento

3.1. Creación del modelo

a. Iniciar el IDE de OMNeT, escribiendo omnetpp en el terminal.

b. En el IDE seleccionar en el menú File: New -> OMNeT++ Project

c. Cuando aparezca el cuadro de diálogo del asistente, ingresar “Proyectoprueba” como


nombre del proyecto, elija “Empty Project” cuando se le pregunte sobre el contenido
inicial del proyecto, luego haga clic en Finalizar.

d. Verificar que se haya creado el proyecto vacío “Proyectoprueba” 1 en el explorador de


proyectos.

Notas:
- Algunas versiones de OMNeT ++ generarán un archivo package.ned en el proyecto. No lo
necesitamos ahora: elimine el archivo.
- Es preciso indicar que, usar el IDE es completamente opcional. Casi toda la funcionalidad de
OMNeT ++ (a excepción de algunas características muy intensivas en gráficos e interactivas,
como la exploración de gráficos de secuencia y el trazado de resultados) está disponible en la
línea de comandos.

e. Implementar el modelo agregando un archivo NED 2. Para agregar el archivo al proyecto,


haga clic con el botón derecho en el directorio del proyecto en el explorador de
proyectos, a la izquierda, y elija New -> Network Description File (NED) en el menú.
Ingrese tictoc1.ned cuando se le solicite el nombre del archivo.

1
El proyecto contendrá todos los archivos que pertenecen a nuestra simulación. En nuestro ejemplo, el proyecto
consta de un único directorio. Para simulaciones más grandes, el contenido del proyecto generalmente se clasifica en
las carpetas src/ y simulations/, y posiblemente en subcarpetas debajo de ellas.
2
OMNeT ++ usa archivos NED para definir componentes y ensamblarlos en unidades más grandes como redes.
UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES
ASIGNATURA: COMUNICACIONES MÓVILES

f. Una vez creado, el archivo se procede a editar en el Editor NED de OMNeT++, el


cual tiene dos modos, Diseño y Fuente; pudiéndose cambiar entre ellos3.

Explicación:

3
En el modo de diseño, la topología se puede editar gráficamente, utilizando el mouse y la paleta de la derecha, mientras en modo
Fuente, el código fuente NED se puede editar directamente como texto. Los cambios realizados en un modo se reflejarán
inmediatamente en el otro. (Dado que los archivos NED son archivos de texto sin formato, incluso se puede usar un editor de texto
externo para editarlos, aunque se perderá el resaltado de sintaxis, la asistencia de contenido, las referencias cruzadas y otras
características IDE).
UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES
ASIGNATURA: COMUNICACIONES MÓVILES

Se declara Txc1 como un tipo de módulo simple. Los módulos simples son atómicos en el nivel NED.
También son componentes activos, y su comportamiento se implementa en C ++. Asimismo, Txc1
tiene una puerta de entrada nombrada y una puerta de salida nombrada.

Por otro lado, se declara Tictoc1 como una red. Tictoc1 se ensambla a partir de dos submódulos, tic y
toc, ambas instancias del tipo de módulo Txc1. La puerta de salida de tic está conectada a la puerta
de entrada de toc y viceversa. Habrá un retardo de propagación de 100 ms en ambos sentidos.

g. Modifique tictoc1.ned, a fin de que los gráficos se muestren ordenados.

h. Implementar la funcionalidad del módulo simple Txc1 en C ++. Crer un archivo


llamado txc1.cc seleccionando New-> Source File en el menú contextual del
proyecto, e ingrese el siguiente contenido:
UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES
ASIGNATURA: COMUNICACIONES MÓVILES

Explicación:

- El tipo de módulo simple Txc1 está representado por la clase C ++ Txc1. La clase Txc1 necesita
subclasificarse desde la clase cSimpleModule de OMNeT ++, y debe registrarse en OMNeT ++
con la macro Define_Module ().

- Se redefinen 2 métodos desde cSimpleModule: initialize () y handleMessage (). Se invocan


desde el núcleo de simulación: el primero solo una vez, y el segundo cada vez que llega un
mensaje al módulo.

- En initialize () se crea un objeto de mensaje (cMessage), el cual se envía a la puerta de salida.


Dado que esta puerta está conectada a la puerta de entrada del otro módulo, el núcleo de
simulación entregará este mensaje al otro módulo, después de un retraso de propagación de
100 ms asignado al enlace en el archivo NED. El otro módulo simplemente lo devuelve (otro
retraso de 100 ms), por lo que dará como resultado un ping-pong continuo.

- Los mensajes (paquetes, marcos, trabajos, etc.) y los eventos (temporizadores, tiempos de
espera) están representados por objetos cMessage (o sus subclases) en OMNeT ++. Después
de enviarlos o programarlos, el núcleo de simulación los retendrá en la lista de "eventos
UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES
ASIGNATURA: COMUNICACIONES MÓVILES

programados" o "eventos futuros" hasta que llegue su momento y se entreguen a los módulos a
través de handleMessage ().

- Se debe tener en cuenta que no hay una condición de detención integrada en esta simulación:
continuaría para siempre. Se podrá detener desde la GUI.

i. Crear un archivo omnetpp.ini para poder ejecutar la simulación. 4 Para ello


acceder al menú File y seleccionar New -> Inicialization File (INI). El nuevo
archivo se abrirá en un Editor de archivos Ini, el cual tiene dos modos: Forma y
Fuente, que editan el mismo contenido. El primero es más adecuado para
configurar el núcleo de simulación, y el segundo para ingresar los parámetros del
módulo.

j. En el modo Fuente, ingresar lo siguiente:

[General]

network = Tictoc1

Con este paso se culmina la creación del modelo, el cual está listo para
compilarlo y ejecutarlo, siendo sus fuentes: tictoc1.ned, txc1.cc y omnetpp.ini. Se
debe guardar los cambios.

3.2. Ejecución de simulación

Una vez que complete los pasos anteriores, puede iniciar la simulación seleccionando
omnetpp.ini (en el área del editor o en el Explorador de proyectos) y presionando el
botón Run.
4
omnetpp.ini le dice al programa de simulación qué red desea simular (ya que los archivos NED pueden contener
varias redes), asimismo, puede pasar parámetros al modelo.
UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES
ASIGNATURA: COMUNICACIONES MÓVILES

El IDE construirá su proyecto automáticamente. Si hay errores de compilación, debe


rectificarlos hasta que obtenga una compilación y un enlace sin errores.

Por otro lado, se puede activar manualmente una compilación presionando eligiendo
Project -> Build todo en el menú, o presionando Ctrl + B.

3.3. Depuración (Debugging) de simulación

La simulación es un programa de C ++ y, a menudo necesita depurarse mientras se está


desarrollando.

La simulación se puede iniciar en modo de depuración haciendo clic en el botón Depurar


en la barra de herramientas principal del IDE.

Esto hará que el programa de simulación se inicie bajo un depurador (generalmente


gdb). El IDE también cambiará a “Debug Perspective” (Perspectiva de depuración), es
UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES
ASIGNATURA: COMUNICACIONES MÓVILES

decir, reorganizará sus diversos paneles y vistas a un diseño que sea más adecuado
para la depuración. Puede finalizar la sesión de depuración con el botón “Terminate” (un
cuadrado rojo) en la barra de herramientas.

3.3.1. Errores de tiempo de ejecución

La depuración se necesita con mayor frecuencia para rastrear errores de tiempo de


ejecución. Para verificar ello, se procede en txc1.cc, a duplicar la línea send () dentro de
handleMessage (), para que el código se vea así:
void Txc1::handleMessage(cMessage *msg)
{
//...
send(msg, "out"); // send out the message
send(msg, "out"); // THIS SHOULD CAUSE AN ERROR
}

Al ejecutar la simulación en modo normal ocurre lo siguiente:


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES
ASIGNATURA: COMUNICACIONES MÓVILES

Ahora, ejecute la simulación en modo de depuración. Debido a que la opción de


depuración de errores está habilitada de forma predeterminada, el programa de
simulación se detendrá en el depurador. Puede localizar el error examinando el
seguimiento de la pila (la lista de llamadas a funciones anidadas) en la vista Depuración.

A partir de entonces, debe buscar una función que le resulte familiar, es decir, una que
forme parte del modelo. En la imagen mostrada, esa es la línea "Txc1 :: handleMessage
() en txc1.cc:34". Al seleccionar esa línea, se mostrará el código fuente correspondiente
en el área del editor y se permitirá examinar los valores de las variables en la vista
Variables. Esta información ayuda a determinar la causa del error y corregirlo.

Rastrear bloqueos, es decir, los valores predeterminados es similar. Por ejemplo,


deshacer la edición anterior del código fuente (elimine la línea duplicada send ()) e
introduzca otro error: Suponer que se olvidó crear el mensaje antes de enviarlo, y
cambiemos las siguientes líneas en initialize ()
cMessage *msg; //= new cMessage("tictocMsg");

Cuando se ejecuta la simulación, se bloqueará.


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES
ASIGNATURA: COMUNICACIONES MÓVILES

Si se vuelve a iniciar la simulación, esta vez en modo “debug”, el bloqueo llevará al


depurador. Una vez allí, se podrá ubicar el error en la vista “Debug” y examinar las
variables, que ayudarán a identificar y corregir el error.

3.3.2. Gráfico de secuencia

El núcleo de simulación OMNeT ++ puede registrar los intercambios de mensajes


durante la simulación en un archivo de registro de eventos. Para habilitar la grabación del
registro de eventos, marque la casilla de verificación Record eventlog en el cuadro de
diálogo de configuración de lanzamiento.

También, se puede usar el botón Record en el entorno de tiempo de ejecución gráfico


Qtenv después del lanzamiento.
UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES
ASIGNATURA: COMUNICACIONES MÓVILES

El archivo de registro se puede analizar más tarde con la herramienta Sequence Chart
en el IDE. El directorio de resultados en la carpeta del proyecto contiene el archivo .elog.
Al hacer doble clic en el archivo .elog contenido en la carpeta del proyecto, en el IDE de
OMNeT++, se abre la herramienta Sequence Chart y la pestaña de Event Log en la
parte inferior de la ventana.
UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES
ASIGNATURA: COMUNICACIONES MÓVILES

Linkografía

1. https://docs.omnetpp.org/

También podría gustarte