Está en la página 1de 118

Simuladores

Opnet
OMNet ++
Matlab/Simulink
NS-2

Ing. Soraya Sinche, Msc.


Octubre 2013

Opnet
Programa para simulador de redes
Libreras y mdulos muy completos
Posibilidad de crear nuevos mdulos
programando en C.
Programa comercial
Disponible para Windows, Solaris y Linux

Opnet

OMNet ++
Entorno de simulacin basado en eventos
discretos
Dispone de mdulos bsicos para los
protocolos ms habituales
Fcilmente adaptable (programando en
C++)
Disponible para Windows y Linux

OMNet ++

NS-2
Simulador basado en eventos
TCP,
UDP,
IP,
redes
inalmbricas,
satelitales, MPLS.
Se utiliza Script en oTCL para definir los
escenarios de simulacin
Programado en C++. Uso de clases para
definir objetos de simulacin.
Utilizado
en
muchos
grupos
de
investigacin
http://www.isi.edu./nsnam/ns/

Simulador de Redes

NS-2

Descripcin del NS
Network Simulator (NS) es un simulador discreto de eventos
creado por la Universidad de Berkeley para modelar redes de
tipo IP, de tipo open source. (http://www.isi.edu/nsnam/ns).
En la simulacin se toma en cuenta la estructura (topologa)
de la red y el trfico de paquetes que posee la misma, con el
fin de crear un diagnstico que muestre el comportamiento
que se obtiene al tener una red con ciertas caractersticas.
Maneja diversos mecanismos de colas que se generan en los
routers, tales como DropTail, CQB, algoritmo de Dijkstra, etc.
Actualmente, el proyecto NS es parte de VINT (Virtual InterNet
Testbed) proyect que desarrolla herramientas para visualizar
los resultados de una simulacin (por ejemplo, una interfaz
grfica).
La versin NS 2 est escrita en los lenguajes de programacin
C++ y OTcl1.

Estructura Bsica del NS-2

Descripcin del NS-2


Para configurar y correr una simulacin, un usuario debe
escribir un script OTcl, el cual es un programa para simular un
evento programado, configurar una topologa de red,
conexin a libreras, insertar flujos de diferentes tipos de
trfico, etc.
Cuando NS-2 el cual trabaja con el interprete Otcl recibe el
script, este configura el ambiente de simulacin.
Cuando la simulacin ha terminado se producen como
resultados 1 o ms archivos de texto que contienen el detalle
de la simulacin realizada.
NS-2 es un software libre y puede correr sobre Unix y
Windows. Pero para correr sobre Windows este requiere que
se instale Cygwin.
10

Descripcin del NS-2 (NAM)

11

Para qu se lo utiliza?
Simular estructuras y protocolos de
redes de todo tipo (satlite, wireless,
cableadas, etc..)
Desarrollar nuevos protocolos y
algoritmos
y
comprobar
su
funcionamiento.
Comparar distintos protocolos en
cuanto a prestaciones.
12

Para qu se lo utiliza?
Wired network
Traffic model and applications
Transport protocol
Routing and Queuing
QoS
LANs

Wireless network
Ad hoc routing and mobile IP
Sensor network
Propagation model/Energy model
WLAN (802.11)
Satellite

Error modules
Tracing, visualization, emulation, various utilities
13

Instalacin
Para realizar la instalacin sobre Linux o Unix se
tienen los siguientes componentes

Tcl release 8.4.5 (required component)


Tk release 8.4.5 (required component)
OTcl release 1.8 (required component)
TclCL release 1.15 (required component)
Ns release 2.27 (required component)
Nam release 1.10 (optional component)
Xgraph version 12 (optional component)
CWeb version 3.4g (optional component)
SGB version 1.0 (?) (optional component, builds sgblib for all
UNIX type platforms)
Gt-itm gt-itm and sgb2ns 1.1 (optional component)
Zlib version 1.1.4 (optional, but required should Nam be
used)

Todos estos archivos pueden ser obtenidos como un


simple paquete llamado ns-allinone
(http://www.isi.edu/nsnam/ns/ns-build.html#pieces ).

14

Instalacin
Para desempaquetar tar xvzf nombre_archivo.tar
Una vez que se han obtenido los cdigos fuentes se
tiene que desempaquetar el OTcl,
Las fuentes de TclCL y ns en el mismo nivel del
directorio y utilizar los siguientes comandos:

cd into the OTcl directory


run ./configure
run make
cd into the TclCL directory
run ./configure
run make
cd into the ns directory
run ./configure
run make

15

Instalacin

16

Arquitectura: Orientada a Objectos

C++ para data


OTcl para control
Alta modularidad
Alta reusalibidad
Muy escalable
Requiere buena velocidad de procesamiento
Alta capacidad para almacenamiento

17

OTcl y C++: La Dualidad

OTcl (object variant of Tcl) y C++ comparten clases jerarquicas.


18

Control vs. Datos

19

Utilizacin de NS-2
Se crea un archivo dnde se indica que se
desea
(topologa,
nodos,
movimientos,
trfico, etc..) y se ingresa al simulador, este
genera una traza de todos los eventos que se
han generado durante la simulacin.
El archivo de configuracin es un script
realizado en TCL y la salida es un archivo de
texto (generalmente con extensin .tr),
adicionalmente se puede indicar que se
genere un archivo para el visor grfico nam o
generar archivos adicionales para visualizar
en el xgraph.

Estructura de funcionamiento de NS-2


Topologa de la red y configuracin de las
conexiones de datos.
Hay una relacin entre los objetos en oTCL y el
cdigo C++ del simulador.
Se generan ficheros o trazas. Es necesario saber
interpretar la informacin

Script en modo interactivo


linux21% ns
% set ns [new Simulator]
_o3
% $ns at 1 puts \Hello World!\
1
% $ns at 1.5 exit
2
% $ns run
Hello World!
linux21%
22

Un script en modo batch


#simple.tcl
set ns [new
Simulator]
$ns at 1 puts
\Hello World!\
$ns at 1.5 exit
$ns run

linux21% ns
simple.tcl
Hello World!
linux21%
23

Comando Puts

puts Hoy estoy aprendiendo el Tcl.


puts -nonewline Esto es el inicio de una linea
puts este es el fin
puts el sobrenombre de Ricardo es:
$sobrenombre

24

El resultado de un Comando
El resultado de la ejecucin de un comando (o de
la invocacin de una funcin) viene expresado
con [ ]:
set a [comando]
set a [funcin $variable1 $variable2]

25

El comando expr e incr


El comando expr permite valorar una expresin
numrica.
set a 5
set b 10
puts La suma vale [expr $a+$b]
set c [expr $a*$b]
puts El valor de c es $c

26

El comando incr
El comando incr permite incrementar el valor de
una variable
incr c ;# ahora c vale 51
Se puede escribir mas comandos sobre la misma
lnea separndola por el carcter;.

27

Un procedimiento

proc sum {n1 n2} {


set total [expr $n1 + $n2]
return $total
}

28

Manejo de archivos
Archivos externos pueden ser abiertos
solo para lectura o para escritura:
set file [open outfile w] ;# Abre para
escritura
set file [open outfile r] ;# Abre para lectura
puts $file Se tiene tambin la I/O en Tcl!!
gets $file $valor ;# lee la lnea y la
memoriza en valor

29

Basic ns-2

Creating the event scheduler


Creating network
Computing routes
Creating connection
Creating traffic
Inserting errors
Tracing

31

Creating Event Scheduler


Create scheduler
set ns [new Simulator]

Schedule event
$ns at <time> <event>
<event>: any legitimate ns/tcl commands

Start scheduler
$ns run

32

Creating Network
Nodes
set n0 [$ns node]
set n1 [$ns node]

Links & Queuing


$ns duplex-link $n0 $n1 <bandwidth> <delay>
<queue_type>
<queue_type>: DropTail, RED, CBQ, FQ, SFQ, DRR

33

Creacin de una LAN


LAN
$ns make-lan <node_list> <bandwidth> <delay>
<ll_type> <ifq_type> <mac_type> <channel_type>
<ll_type>: LL
<ifq_type>: Queue/DropTail,
<mac_type>: MAC/802_3
<channel_type>: Channel

34

Clculo de rutas
Unicast
$ns rtproto <type>
<type>: Static, Session, DV, cost, multi-path

Multicast
$ns multicast (right after [new Simulator])
$ns mrtproto <type>
<type>: CtrMcast, DM, ST, BST

35

Creacin de una Conexin: UDP y TCP


UDP

set udp [new Agent/UDP]


set null [new Agent/NULL]
$ns attach-agent $n0 $udp
$ns attach-agent $n1 $null
$ns connect $udp $null

TCP

set tcp [new Agent/TCP]


set tcpsink [new Agent/TCPSink]
$ns attach-agent $n0 $tcp
$ns attach-agent $n1 $tcpsink
$ns connect $tcp $tcpsink
36

Insertar Mdulos de Error


Creating Error Module
set loss_module [new ErrorModel]
$loss_module set rate_ 0.01
$loss_module unit pkt
$loss_module ranvar [new RandomVariable/Uniform]
$loss_module drop-target [new Agent/Null]

Inserting Error Module


$ns lossmodel $loss_module $n0 $n1

Creando Aplicaciones TCP


FTP
set ftp [new Application/FTP]
$ftp attach-agent $tcp

Telnet
set telnet [new Application/Telnet]
$telnet attach-agent $tcp

38

Interface NAM: Color


Color mapping
$ns color 40 red
$ns color 41 blue
$ns color 42 chocolate

Color flow id association


$tcp0 set fid_ 40 ;# red packets
$tcp1 set fid_ 41 ;# blue packets

39

Interface NAM: Nodos


Color
$node color red

Shape (cant be changed after sim starts)


$node shape box ;# circle, box, hexagon

Marks (concentric shapes)


$ns at 1.0 $n0 add-mark m0 blue box
$ns at 2.0 $n0 delete-mark m0

Label (single string)


$ns at 1.1 $n0 label \web cache 0\
$node label-at up
$node label-color blue
40

Interface NAM: Diagrama de


Topologas
Manual layout: specify everything
$ns duplex-link-op $n(0) $n(1) orient right
$ns duplex-link-op $n(1) $n(2) orient right
$ns duplex-link-op $n(2) $n(3) orient right
$ns duplex-link-op $n(3) $n(4) orient 60deg

41

Interface NAM: Enlaces


Color
$ns duplex-link-op $n0 $n1 color "green"

Label
$ns duplex-link-op $n0 $n1 label "abced
$ns duplex-link-op $n1 $n2 label-color blue

42

Ejemplo 1: TCP
n0
set ns [new Simulator]
set n0 [$ns node]
set n1 [$ns node]
$ns duplex-link $n0 $n1 1.5Mb 10ms
DropTail
set tcp [new Agent/TCP]
set tcpsink [new Agent/TCPSink]
$ns attach-agent $n0 $tcp
$ns attach-agent $n1 $tcpsink
$ns connect $tcp $tcpsink

n1

set ftp [new Application/FTP]


$ftp attach-agent $tcp
$ns at 0.2 "$ftp start"
$ns at 1.2 exit"
$ns run

Ejemplo: Nam
#Create a simulator object
set ns [new Simulator]
#Open the nam trace file
set nf [open out.nam w]
$ns namtrace-all $nf
#Open the general trace file
set tf [open out.tr w]
$ns trace-all $tf

#Define a 'finish' procedure


proc finish {} {
global ns nf tf
$ns flush-trace
#Close the trace files
close $nf
close $tf
#Execute nam on the trace file
exec nam out.nam &
exit 0
}
$ns at 5.0 "finish

#Run the simulation


$ns run

Ejemplo 2 de simulacin

#Create a simulator object


set ns [new Simulator]
#Open the nam trace file
set nf [open out.nam w]
$ns namtrace-all $nf
#Define a 'finish' procedure
proc finish {} {
global ns nf
$ns flush-trace
#Close the trace file
close $nf
#Execute nam on the trace file
exec nam out.nam &
exit 0
}
45

Ejemplo 2 de simulacin

#Create two nodes


set n0 [$ns node]
set n1 [$ns node]
#Create a duplex link between the nodes
$ns duplex-link $n0 $n1 1Mb 10ms DropTail
#Create a UDP agent and attach it to node n0
set udp0 [new Agent/UDP]
$ns attach-agent $n0 $udp0

46

Ejemplo 2 de simulacin

# Create a CBR traffic source and attach it to udp0


set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0
#Create a Null agent (a traffic sink) and attach it to
node n1
set null0 [new Agent/Null]
$ns attach-agent $n1 $null0
47

Ejemplo 2 de simulacin

#Connect the traffic source with the traffic sink


$ns connect $udp0 $null0
#Schedule events for the CBR agent
$ns at 0.5 "$cbr0 start
$ns at 4.5 "$cbr0 stop
#Call the finish procedure after 5 seconds of
simulation time
$ns at 5.0 "finish
#Run the simulation
$ns run
48

Ejemplo 3 de simulacin

#Create a simulator object


set ns [new Simulator]
#Define different colors for data flows
$ns color 1 Blue
$ns color 2 Red
#Open the nam trace file
set nf [open out.nam w]
$ns namtrace-all $nf
#Define a 'finish' procedure
proc finish {} {
global ns nf
$ns flush-trace
#Close the trace file
close $nf
#Execute nam on the trace file
exec nam out.nam &
exit 0
}

49

Ejemplo 3 de simulacin

#Create four nodes


set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
#Create links between the nodes
$ns duplex-link $n0 $n2 1Mb 10ms DropTail
$ns duplex-link $n1 $n2 1Mb 10ms DropTail
$ns duplex-link $n3 $n2 1Mb 10ms SFQ
$ns duplex-link-op $n0 $n2 orient right-down
$ns duplex-link-op $n1 $n2 orient right-up
$ns duplex-link-op $n2 $n3 orient right
#Monitor the queue for the link between node 2 and node 3
$ns duplex-link-op $n2 $n3 queuePos 0.5

50

Ejemplo 3 de simulacin

#Create a UDP agent and attach it to node n0


set udp0 [new Agent/UDP]
$udp0 set class_ 1
$ns attach-agent $n0 $udp0
# Create a CBR traffic source and attach it to udp0
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0
#Create a UDP agent and attach it to node n1
set udp1 [new Agent/UDP]
$udp1 set class_ 2
$ns attach-agent $n1 $udp1
51

Ejemplo 3 de simulacin

# Create a CBR traffic source and attach it to udp1


set cbr1 [new Application/Traffic/CBR]
$cbr1 set packetSize_ 500
$cbr1 set interval_ 0.005
$cbr1 attach-agent $udp1
#Create a Null agent (a traffic sink) and attach it to node n3
set null0 [new Agent/Null]
$ns attach-agent $n3 $null0

52

Ejemplo 3 de simulacin

#Connect the traffic sources with the traffic sink


$ns connect $udp0 $null0
$ns connect $udp1 $null0
#Schedule events for the CBR agents
$ns at 0.5 "$cbr0 start
$ns at 1.0 "$cbr1 start
$ns at 4.0 "$cbr1 stop
$ns at 4.5 "$cbr0 stop
#Call the finish procedure after 5 seconds of simulation time
$ns at 5.0 "finish
#Run the simulation
$ns run
53

OMNeT ++

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

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

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:
//...

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

También podría gustarte