You are on page 1of 97

OMNeT ++

Ing. Soraya Sinche, Msc.


Octubre 2013

AGENDA

INTRODUCCIN
ELEMENTOS DEL SIMULADOR
INSTALACIN
LENGUAJE NED
MDULOS SIMPLES
EJEMPLOS

INTRODUCCION
Existen tres tcnicas para evaluar el
desempeo de sistemas y redes:

Anlisis

Matemtico

Medidas
Simulacin

computacional

La simulacin es particularmente usada para


sistemas que son altamente dinmicos y cuyas
propiedades son difciles de capturar en un
anlisis matemtico.

Introduccin

Simulacin de Eventos Discretos

Se

utiliza para hacer la investigacin sobre todas las


capas de una red.
Provee

un camino simple y flexible para evaluar el


comportamiento de la red bajo diferentes condiciones.

Principios de la Simulacin de
Eventos Discretos
La idea de un simulador de eventos discretos es saltar desde un evento al
siguiente, por lo cual la ocurrencia de un evento puede desencadenar
cambios en el estado del sistema asi como la generacion de nuevos estados,
denominados event notices.

Los eventos son registrados como event notices en la FEL (Future Event
List), la cual es una estructura apropiada de datos para administrar todos los
eventos en este tipo de simulaciones.

t1

t2

ti

ti+1

ti+2

Principios de la Simulacin de
Eventos Discretos
Todo simulador de eventos discretos comparten los siguientes
componentes:

Estado
Reloj:
Lista

del Sistema: Conjunto de variables que definen el estado del sistema.

Da la hora actual durante la simulacin

de eventos futuros (FEL)

Contadores

estadisticos: Conjunto de variables que contiene informacin de


las estadsticas del rendimiento del sistema.
Rutina

de Inicializacion: Inicializa el modelo y configura el reloj a 0.

Rutina

de Temporizacion: recupera el proximo evento del FEL y avanza el


reloj al tiempo que ocurre el evento.
Rutina

del Evento: es llamada cuando un evento particular ocurre durante la


simulacin.

Diagrama de Flujo de una Simulacin de Eventos


Discretos
INICIO
Inicializacin

Seleccin del Prximo


Evento

Rutina Evento 1

No

Rutina Evento 2

Termina?

Si
Datos de Salida
FIN

Rutina Evento k

Terminologa y componentes de una


Simulacin
Entidad: es una abstraccin de un tema particular de
inters

Se

describe por sus atributos, por ejemplo, una entidad


paquete debera tener como atributos: longitud, direccin
destino y origen.

Sistema: se define como un conjunto de entidades y su


interrelacin

Tiene
Por

un determinado objetivo que pretende lograr.

ejemplo una red puede ser definida por las entidades


hosts, routers y enlaces, siendo su objetivo proveer de
conectividad end-to-end.

Terminologa y componentes de una


Simulacin
Sistema Discreto: es un sistema cuyo estado,
definido por el estado de todas las entidades del
sistema, cambia solamente en puntos discretos
en el tiempo.

Modelo: es una abstraccin del sistema.

Por

lo tanto esta formado por determinadas entidades


de inters del sistema y la seleccin de las relaciones
entre las entidades.

OMNeT++
OMNeT++ (Objective Modular Network Testbed in C++)

Es un simulador de eventos discretos.

Su rea de accin es el campo de las redes de


comunicaciones.

Esta compuesto por:

kernel
GUI:

del simulador

Grfico (tkenv) o texto (cmdenv)

Simulation

Class library

OMNeT++

Puede ser usado en varios mbitos:

Modelado de redes de comunicacin Cableadas e


Inalmbricas

Modelado de Protocolos
Modelado de Colas
Modelado de multiprocesos, sistemas distribuidos.

Evaluacin del desempeo de sistemas


En general, modelado y simulacin de cualquier
sistema basado en eventos discretos que permitan el
intercambio de mensajes.

La Simulacin IDE
Una importante parte de OMNeT++ es la Simulacin basada en
Eclipse (IDE).

Para simplificar el desarrollo de plug-ins, la simulacin IDE carga


plug-ins de proyectos de usuarios tales como INET o MiXiM.

La Simulacin IDE
Los siguientes grandes frameworks han sido
desarrollados para OMNeT++:

INET: contiene modelos para varios protocolos Internet tales como


UDP, TCP, SCTP, IP, IPv6, Ethernet, PPP, MPLS, OSPF, IEEE
802.11
INETMANET: Para soporte de protocolos de redes moviles.
MiXiM: soporta simulaciones de redes inalmbricas y mviles
Castalia: para redes de sensores inalambricos.

Editor NED
El editor NED puede editar archivos en modo grafico o en
modo texto.

El usuario puede conmutar entre los modos en cualquier


momento.

Editor de archivos INI


El editor de archivos INI permite al usuario configurar los
modelos de simulacin para la ejecucin. Esta basado en
formularios y edicin de origen.

Editor de archivos INI

Configuracin de la Simulacin

Instalacin
OMNeT++ es soportado en los siguientes
sistemas operativos:

Windows
Mac

7, 8 y XP

OS X 10.7 y 10.8

Distribuciones

de Linux tales como:

Ubuntu 12.04 LTS, 13.04


Fedora Core 18
Red Hat Enterprise Linux Desktop Workstation 6.4
OpenSUSE 12.3

Instalacin
La simulacin IDE puede usarse en las
siguientes plataformas:

Linux

x86 32/64-bit

Windows
Mac

7, 8 y XP

OS X 10.7 y 10.8

OMNeT++ requiere varios paquetes para ser


instalado en un computador. Entre estos
paquetes se incluye el compilador C++ (gcc).

Instalacin Ubuntus
Se instalar Ubuntus 12.04, para lo cual se utilizar el
programa wubi.exe para realizar la instalacin desde
windows.

Al ejecutar este programa se va a seleccionar el


realease 12.04.2 LTS.

Se escoge el espacio a ser usado para esta instalacin


por ejemplo 25 Gbytes.

Instalacin Ubuntus
ls Lista los ficheros de un directorio.

ls -l Lista ficheros con atributos

ls -la Lista ficheros incluidos los ocultos

cd nom_directorio Cambia de directorio

ls -la | more lista ficheros con paginacin

mv [ruta1]fichero1 [ruta2]fichero2 Mueve y/o renombra un


directorio.

rm archivo o directorio Elimina archivos o directorios

rm -r directorio Borra un directorio recursivamente

cp archivo1 archivo2 Realiza una copia de un fichero

mkdir crea un directorio

rmdir borra un directorio

Instalacin Ubuntus
Los comandos que se usan para actualizar paquetes
en Ubuntu:

Instalar un paquete
sudo apt-get install

Instalar un paquete desde el lector de cds


sudo apt-cdrom install
Actualizar paquetes (o recargar repositorios)
sudo apt-get update
Actualizar todos los paquetes instalados
sudo apt-get upgrade
Desinstalar un programa/aplicacin/paquete

sudo apt-get remove

Instalacin en Ubuntus
Antes de iniciar la instalacin, es necesario refrescar la
base de datos de paquetes disponible, para lo cual en
el terminal se ingresa la linea de comando:

$ sudo apt-get update

Para instalar los paquetes requerido, se debe escribir


en el terminal el siguiente comando:

$ sudo apt-get install build-essential gcc g++ bison flex


perl \ tcl-dev tk-dev blt libxml2-dev zlib1g-dev
default-jre \ doxygen graphviz libwebkitgtk-1.0-0
openmpi-bin libopenmpi-dev libpcap-dev

Instalacin en Ubuntus

Proceso de Instalacin de OMNeT++


Se puede descargar OMNeT++ desde la direccin
http://omnetpp.org.

Para Linux el archivo a descargar es:

omnetpp-4.3-src.tgz.
Es necesario copiar el archivo en el directorio donde
se desea realizar la instalacin (/home/<you>)
Es necesario abrir un terminal, y extraer el archivo
usando el siguiente comando:

$ tar xvfz omnetpp-4.3-src.tgz

Este crear un subdirectorio omnetpp-4.3 que contiene


los archivos OMNeT++.

Proceso de Instalacin de OMNeT++


OMNeT++ necesita que su directorio bin/ este en el path. Para
aadir bin/ temporalmente, se debe cambiar al directorio
OMNeT++ y colocar el siguiente comando:

$ cd omnetpp-4.3

$ . setenv

Para configurar de forma permanente los directorio con sus


correspondientes paths es necesario editar .bashrc:

$ gedit ~/.bashrc
Al

final del archivo se debe aadir lo siguiente:


export PATH=$PATH:$HOME/omnetpp-4.3/bin
export TCL_LIBRARY=/usr/share/tcltk/tcl8.5

Es necesario luego de guardar los cambios cerrar y reabrir el


terminal.

Configurando y Construyendo OMNeT++


En el nivel mas alto del directorio de OMNeT++,
ejecutar:
$ ./configure

Configurando y Construyendo OMNeT++


$ make

Luego de la Instalacin ...


Para probar la instalacin se puede ejecutar el
siguiente ejemplo:

$ cd samples/dyna
$ ./dyna

Para iniciar el OMNeT++ desde el terminal:


$ omnetpp

Para habilitar acceso rpidos:


$ make install-menu-item
$ make install-desktop-icon

Luego de la Instalacin ...


Instalacin de Plug-in para ambiente de
desarrollo. Help Install new software

Luego de la Instalacin ...

Conceptos de Modelado
Un modelo OMNeT++ consiste de mdulos que se comunican
enviando mensajes:

Mdulos simples son escritos en C++, usando libreras de clases,


pueden ser agrupados en mdulos compuestos y as sucesivamente; el
numero de niveles jerrquicos es ilimitado.
Mdulos compuestos estn formados por un conjunto de mdulos
simples conectados entre si.

Creacin de Programas de
Simulacin
Un modelo OMNeT++ contiene las siguientes
partes:

Descripcin

de topologa de lenguaje NED. Archivos


con extensin .ned.
Definicin

del mensaje, en archivos con extensin

.msg.
Implementacin

de mdulos simples y otro cdigo C++


, en archivos .cc (o .cpp, en Windows)

Ejecucin de Simulaciones y Anlisis de


Resultados
La simulacin puede ser compilada como un programa
ejecutable independiente, o puede ser creada como una librera
compartida.

Cuando se inicia un programa, primero se leen todos los


archivos NED que contiene la topologa del modelo, luego se lee
el archivo de configuracin (llamado comnmente omnetpp.ini).
Este archivo contiene la configuracin que controla la forma
como se ejecuta la simulacin, valores para los parmetros del
modelo, etc.

El resultado de la simulacin se escribe en archivos de


resultados: archivos de vectores, archivos de escalares, y
posiblemente archivos propios de salida del usuario.

OMNeT++ contiene un Integrated Development Environment


(IDE) que provee un ambiente para el anlisis de estos archivos.

Que est en la Distribucin?


El directorio OMNeT++ contendr los siguientes subdirectorios:

omnetpp/

OMNeT++ root directory

bin/

OMNeT++ executables

include/

header files for simulation models

lib/

library files

images/

icons and backgrounds for network graphics

doc/

manuals, readme files, license, APIs, etc.

migrate/

tools to help model migration from 3.x to 4.0 version

src/

OMNeT++ sources

test/

regression test suite

Que est en la Distribucin?


La simulacin IDE basada en Eclipse se encuentra
directorio :

ide/

en el

Simulation IDE

features/

Eclipse feature definitions

plugins/
IDE plugins (extensions to the IDE can be
dropped here)
...

Los ejemplos de simulacin se encuentran en el directorio:

samples/

directories for sample simulations

aloha/

models the Aloha protocol

cqn/

Closed Queueing Network

Lenguaje NED
El simulador utiliza el lenguaje de programacin NED,
basado en C++, como herramienta para modelar
topologas de red.

Este lenguaje define la estructura de la red y facilita la


descripcin modular de una red.

Un modelo en OMNeT++ se construye con mdulos


jerrquicos mediante el lenguaje NED. Los cuales
pueden contener estructuras complejas de datos y
tienen sus propios parmetros usados para
personalizar el envo de paquetes a los destinos a
travs de rutas, compuertas y conexiones.

Lenguaje NED
Bsicamente, con el lenguaje NED se definen
tres tipos de mdulos:

Mdulos simples
Mdulos compuestos
Mdulos de redes.
En los mdulos de red se encuentran los
componentes y especificaciones de la
descripcin de una red de comunicaciones.

La herencia de las clases componente,


mdulo y el canal

Lenguaje NED
La estructura de un archivo NED puede contener
los siguientes componentes:

Directivas import
Permiten importar declaraciones de otros archivos ned.
Funciona como una sentencia include en C++.
Ejemplo:
import "ethernet"; // imports ethernet.ned

Lenguaje NED
Definiciones de canales:
Especifica una conexin con caractersticas dadas. Su
sintaxis es:
channel ChannelName
//...
endchannel

Los parmetros a definir en un canal son: delay, error y


datarate.
Por ejemplo:
channel LeasedLine
delay 0.0018 // sec
error 1e-8
datarate 128000 // bit/sec
endchannel

Lenguaje NED

Definiciones de Mdulos simples

on las estructuras bsicas para mdulos ms complejos, su


ntaxis es:
simple SimpleModuleName
parameters:
//...
gates:
//...
endsimple
os parmetros de los mdulos simples son definidos por quien
s crea, y en general pueden ser numricos, booleanas o strings.
os gates (puertas) son las entradas y salidas del mdulo, por
onde se transmiten los mensajes.

Lenguaje NED
Definiciones de Mdulos simples
Los parmetros son variables que pertenecen a un
modulo. Puede requerir y usar algoritmos de mdulos
simples.
Por ejemplo, un modulo llamado TrafficGen puede tener
un parmetro denominado numOfMessages que
determina cuantos mensajes se deberan generar.
Son declarados haciendo una lista de sus nombres:
seccin de descripcin de un modulo.

Lenguaje NED
Definiciones de Mdulos simples
Ejemplo:
simple TrafficGen
Parameters:
InterarrivalTime,
numOfMessages : const,
address : string;
Gates: //...
endsimple

Lenguaje NED
Definiciones de Mdulos Compuestos
Poseen los campos de un mdulo simple, pueden agregar
submdulos, y poseen conexiones entre ellos. La sintaxis es:
Module CompoundModule
parameters:
//...
gates:
//...
submodules:
//...
connections:
//...
endmodule

Lenguaje NED

Definiciones de Mdulos Compuestos

Los submdulos son mdulos simples de menor jerarqua

Connections: Definen conexiones entre los submdulos


definidos, o entre los submdulos y el exterior a travs de las
gates. Estas conexiones pueden realizarse mediante canales
previamente definidos, o indicando sus caractersticas en la
misma conexin.
La sintaxis de las conexiones es:
entrada - -> channel - -> salida

Lenguaje NED
Definiciones de Red
La definicin de red declara a la simulacin como una instancia
de un modelo previo, lo cual permite finalmente que se

ejecute la simulacin. La sintaxis es:


network networkType : networkName
parameters:
//..
endnetwork

Lenguaje C++
Para crear un mdulo simple en C++ se debe utilizar la
clase cSimpleModule.

sta, junto a la clase cCompoundModule, pertenece a


la librera de OMNET++ y es derivada de la clase
cModule.

cSimpleModule posee las siguientes funciones para


poder crear dicho mdulo simple:

void initialize()
void handleMessage(cMessage *msg)
void activity()
void finish()

Lenguaje C++
La funcin initialize() es llamada en el paso de inicializacin,
cuando OMNET++ construye la red, creando los mdulos
simples y complejos necesarios y conectndolos de acuerdo a
las definiciones del archivo NED.

initialize() crea los parmetros iniciales para el objeto creado.

HandleMessage y activity funcionan durante el proceso.

HandleMessage es llamada cuando el mdulo recibe un


mensaje.

La funcin activity es una solucin basada en co-rutinas, la cual


implementa el proceso de interaccin (es siempre preferible
utilizar handleMessage).

Lenguaje C++
La funcin finish, es llamada cuando la funcin termina de forma
satisfactoria. Generalmente es usada para guardar las
estadsticas vectoriales y escalares reunidas durante el proceso
de simulacin.

Los archivos que contienen estas funciones deben tener la


extensin .cc.

Las variables que se usan en los ficheros .cc estn declaradas


en otro fichero creado a partir tambin de c++. ste tipo de
fichero tiene como extensin .h.

En l se crean las variables de funciones, variables de


estadsticas y variables de parmetros

Ficheros INI
Estos ficheros son fundamentales para realizar la simulacin. En
ellos se describen:

Los parmetros caractersticos de la simulacin


El nmero de simulaciones a ejecutar.
La duracin de la simulacin.
El valor de los atributos de los mdulos simples.
Los ficheros donde se guardarn las estadsticas recogidas, etc.
La indicacin de un parmetro de un mdulo simple se realiza
por orden jerrquico. Si se escribe el mdulo que se va a utilizar y
se finaliza con un punto (.), se mostrar una lista de los
parmetros que se puede utilizar.

Ficheros INI

Un ejemplo de un parmetro INI sera:


modulodeRed.modulocompuesto.parametro
Dos_Nodosfijos_Adhoc_60metros.channelControl.carrierFrequency =
2.4GHz

Tambin puede crearse rutas relativas con el asterisco en


vez de rutas absolutas. Por ejemplo:

*.channelControl.carrierFrequency = 2.4GHz
**.HostServidor.wlan.mac.address = "10:00:00:00:00:00"

Enlace con Eclipse


Omnetpp help Install New Software

Simulacin de Eventos Discretos


Un sistema de eventos discretos en un sistema donde los cambios de
estados suceden en instancias de tiempo discretas. Sistemas que
pueden ser vistos como sistemas de eventos discretos pueden ser
modelados usando Simulacin de Eventos Discretos (DES).

Por ejemplo, las redes de computadores son usualmente vistas como


sistemas de eventos discretos. Algunos de los eventos son:

Inicio de la transmisin de paquetes


Fin de la transmisin de paquetes
Expiracin del temporizador de retransmisin

Simulacin de Eventos Discretos


El tiempo cuando un evento
frecuentemente event timestamp.

ocurre

se

denomina

Con OMNeT++ se usa el termino arrival time (porque en la


clase library, la palabra timestamp se reserva para un atributo
configurable por el usuario en el evento class).

El tiempo en el modelo es frecuentemente llamado tiempo de


simulacin, tiempo del modelo o tiempo virtual en lugar de
tiempo real o tiempo de CPU que se refiere al tiempo que dura la
simulacin del programa y la cantidad de CPU consumida.

Crear una Simulacin Bsica


Paso 1: Para crear una simulacin bsica en primer lugar
se ingresa al ambiente visual de omnetpp.

Crear una Simulacin Bsica


Paso 2: Se crea un nuevo Proyecto

Crear una Simulacin Bsica


Paso 3: Se selecciona como vaco.

Crear una Simulacin Bsica


Paso 4: Se crea un nuevo archivo NED.

Crear una Simulacin Bsica


Paso 5: En este archivo se va a definir una red formada
por dos computadores que se comunican entre si de
modo full duplex.

Crear una Simulacin Bsica


Paso 5: Dentro del archivo fuente de ned.ned se crea
un modulo simple denominado computer.

simple computer
{
gates:
input in;
output out;
}

Crear una Simulacin Bsica


Paso 6: Dentro del archivo fuente de ned.ned se crea una
red que contiene a los computadores.
network net
{
submodules:
computer1: computer {
@display("p=47,59");
}
computer2: computer {
@display("p=221,59");
}
connections:
computer1.out --> computer2.in;
computer2.out --> computer1.in;
}

Crear una Simulacin Bsica


Paso 7: Se crea el archivo de inicializacin

Crear una Simulacin Bsica


Paso 8: Se crea un archivo fuente con el nombre
computer.cc

Crear una Simulacin Bsica


Paso 9: Se construye el proyecto
Paso 10: Se procede a correr la simulacin

Demo INET

Contiene diferentes ejemplos de demos de simulacin

INET
Es necesario descargar el archivo inet-2.1.0src.tgz.

Dentro del directorio omnet++ se realiza el


proceso de descompresin.

tar xvfz inet-2.1.0-scr.tgz

Se importa inet en OMNeT++ IDE.

INET

Se selecciona al directorio raz

INET

Luego de lo cual es necesario realizar el


proceso Build all.

MiXiM
Es necesario descargar el paquete mixim2.3.tar.gz.

Dentro del directorio omnet++ se realiza el


proceso de descompresin.

tar xvzf mixim-2.3.tar.gz

Se ingresa al directorio mixim y se escribe


make makefiles
make

MiXiM
Desde OMNeT++ IDE se debe importar a
MiXiM.

MiXiM

Se selecciona al directorio raz.

Luego de lo cual es necesario realizar el


proceso Build all.

EJEMPLO DEMO

Ejemplo Demo
Se crea un nuevo proyecto: file New OMNeT++
Project

Ejemplo Demo

Se importa: queueinglib, queueinglibext y queuenet

Ejemplo Demo

Se importa: queueinglib, queueinglibext y queuenet

Ejemplo Demo

Se crea un nuevo archivo demo.ned

Ejemplo Demo
En las propiedades del proyecto, se pone
como referencia lo importado de queue

Ejemplo Demo
En las propiedades del proyecto, se pone
como referencia lo importado de queue

Ejemplo Demo

Se escoge un archivo NED con un item

Ejemplo Demo

Se incluye el nombre y se selecciona Red

Ejemplo Demo
El modelo que se va a implementar es una
fuente con tres colas conectadas en cadena.

Ejemplo Demo
El modelo que se va a implementar es una
fuente con tres colas conectadas en cadena.

Ejemplo Demo
El modelo que se va a implementar es un
modelo de tres colas conectadas entre si a las
cuales se las alimenta con una fuente

Ejemplo Demo
Se puede ingresar tambin las conexiones en el
cdigo fuente.

Ejemplo Demo

Se crea un nuevo archivo .ini

Ejemplo Demo

Se configura sus opciones

Ejemplo Demo

Se configura los parmetros del archivo .ini

Ejemplo Demo

Se configura los parmetros del archivo .ini

Ejemplo Demo
Se desea que en el modulo se corran 2 configuraciones,
una con 30 trabajos y otra con 60 trabajos.

La sintaxis es ${job=30,60}

Ejemplo Demo
Se desea configurar el tiempo de servicio para todas
las colas del sistema.

Ejemplo Demo
Se quiere tratar el modelo con diferentes tiempos de
servicio de colas, tal como: distribucin exponencial.

Ejemplo Demo

Ejemplo Demo
Una vez terminada la simulacin se han generado
archivos .vec y .sca donde se almacenan las
estadsticas de la simulacin, as como archivos .log
que contienen la informacin enviada durante la misma.

Ejemplo Demo

Se puede analizar los resultados con un archivo .anf

Ejemplo Demo
Primero se aade todos los archivos de resultados
generados para el anlisis. Se debera especificar el
nombre de los archivos, lo cual es mas simple con la
opcin wilcard.

Ejemplo Demo
Primero se aade todos los archivos de resultados
generados para el anlisis.

You might also like