Вы находитесь на странице: 1из 0

OMNeT ++

Ing. Soraya Sinche, Msc.


Mayo 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 del Sistema: Conjunto de variables que definen el
estado del sistema.
Reloj: Da la hora actual durante la simulacin
Lista 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
FIN
Inicializacin
Seleccin del Prximo
Evento
Rutina Evento 1 Rutina Evento 2 Rutina Evento k
Termina?
Datos de Salida
No
Si
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 un determinado objetivo que pretende
lograr.
Por 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 del simulador
GUI: 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 7, 8 y XP
Mac 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 7, 8 y XP
Mac 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 10.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 en el
directorio :
ide/ 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
Son las estructuras bsicas para mdulos ms
complejos, su sintaxis es:
simple SimpleModuleName
parameters:
//...
gates:
//...
endsimple
Los parmetros de los mdulos simples son
definidos por quien los crea, y en general pueden
ser numricos, booleanas o strings. Los gates
(puertas) son las entradas y salidas del mdulo, por
donde 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 hep 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 ocurre se denomina
frecuentemente event timestamp.
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

Вам также может понравиться