curso omnet.pdf

66
OMNeT ++ Ing. Soraya Sinche, Msc. Mayo 2013

Transcript of curso omnet.pdf

Page 1: curso omnet.pdf

OMNeT ++

Ing. Soraya Sinche, Msc. Mayo 2013

Page 2: curso omnet.pdf

AGENDA

INTRODUCCIÓN ELEMENTOS DEL SIMULADOR INSTALACIÓN LENGUAJE NED MÓDULOS SIMPLES EJEMPLOS

Page 3: curso omnet.pdf

INTRODUCCION

Existen tres técnicas para evaluar el desempeño de sistemas y redes:

Análisis Matemático

Medidas

Simulación computacional

La simulación es particularmente usada para sistemas que son altamente dinámicos y cuyas propiedades son difíciles de capturar en un análisis matemático.

Page 4: curso omnet.pdf

Introducción

Simulación de Eventos Discretos

Se utiliza para hacer la investigación sobre todas las capas de una red.

Provee un camino simple y flexible para evaluar el comportamiento de la red bajo diferentes condiciones.

Page 5: curso omnet.pdf

Principios de la Simulación 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

Page 6: curso omnet.pdf

Principios de la Simulación 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 simulación

Lista de eventos futuros (FEL)

Contadores estadisticos: Conjunto de variables que contiene información de las estadísticas 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 simulación.

Page 7: curso omnet.pdf

Diagrama de Flujo de una Simulación de Eventos Discretos

INICIO

FIN

Inicialización

Selección del Próximo Evento

Rutina Evento 1 Rutina Evento 2 Rutina Evento k

Termina?

Datos de Salida

No

Si

Page 8: curso omnet.pdf

Terminología y componentes de una Simulación

Entidad: es una abstracción de un tema particular de interés

Se describe por sus atributos, por ejemplo, una entidad paquete debería tener como atributos: longitud, dirección destino y origen.

Sistema: se define como un conjunto de entidades y su interrelación

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.

Page 9: curso omnet.pdf

Terminología y componentes de una Simulación

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 abstracción del sistema.

Por lo tanto esta formado por determinadas entidades de interés del sistema y la selección de las relaciones entre las entidades.

Page 10: curso omnet.pdf

OMNeT++

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

Es un simulador de eventos discretos.

Su área de acción es el campo de las redes de comunicaciones.

Esta compuesto por:

kernel del simulador

GUI: Gráfico (tkenv) o texto (cmdenv)

Simulation Class library

Page 11: curso omnet.pdf

OMNeT++ Puede ser usado en varios ámbitos:

– Modelado de redes de comunicación Cableadas e Inalámbricas

– Modelado de Protocolos

– Modelado de Colas

– Modelado de multiprocesos, sistemas distribuidos.

– Evaluación del desempeño de sistemas

– En general, modelado y simulación de cualquier sistema basado en eventos discretos que permitan el intercambio de mensajes.

Page 12: curso omnet.pdf

La Simulación IDE Una importante parte de OMNeT++ es la Simulación basada en

Eclipse (IDE).

Para simplificar el desarrollo de plug-ins, la simulación IDE carga plug-ins de proyectos de usuarios tales como INET o

MiXiM.

Page 13: curso omnet.pdf

La Simulación 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 inalámbricas y móviles

– Castalia: para redes de sensores inalambricos.

Page 14: curso omnet.pdf

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.

Page 15: curso omnet.pdf

Editor de archivos INI

El editor de archivos INI permite al usuario configurar los modelos de simulación para la ejecución. Esta basado en formularios y edición de origen.

Page 16: curso omnet.pdf

Editor de archivos INI

Page 17: curso omnet.pdf

Configuración de la Simulación

Page 18: curso omnet.pdf

Instalación

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

Page 19: curso omnet.pdf

Instalación

La simulación 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).

Page 20: curso omnet.pdf

Instalación Ubuntus

Se instalará Ubuntus 10.04, para lo cual se utilizará el programa wubi.exe para realizar la instalación 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 instalación por ejemplo 25 Gbytes.

Page 21: curso omnet.pdf

Instalación 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 paginación

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

Page 22: curso omnet.pdf

Instalación 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/aplicación/paquete

sudo apt-get remove

Page 23: curso omnet.pdf

Instalación en Ubuntus Antes de iniciar la instalación, 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

Page 24: curso omnet.pdf

Instalación en Ubuntus

Page 25: curso omnet.pdf

Proceso de Instalación de OMNeT++

Se puede descargar OMNeT++ desde la dirección 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 instalación (/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++.

Page 26: curso omnet.pdf

Proceso de Instalación de OMNeT++

OMNeT++ necesita que su directorio bin/ este en el path. Para añadir 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 añadir 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.

Page 27: curso omnet.pdf

Configurando y Construyendo OMNeT++

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

Page 28: curso omnet.pdf

Configurando y Construyendo OMNeT++

$ make

Page 29: curso omnet.pdf

Luego de la Instalación ...

Para probar la instalación se puede ejecutar el siguiente ejemplo:

$ cd samples/dyna

$ ./dyna

Para iniciar el OMNeT++ desde el terminal:

$ omnetpp

Para habilitar acceso rápidos:

$ make install-menu-item

$ make install-desktop-icon

Page 30: curso omnet.pdf

Luego de la Instalación ... Instalación de Plug-in para ambiente de

desarrollo. Help → Install new software

Page 31: curso omnet.pdf

Luego de la Instalación ...

Page 32: curso omnet.pdf

Conceptos de Modelado Un modelo OMNeT++ consiste de módulos que se

comunican enviando mensajes:

– Módulos simples son escritos en C++, usando librerías de clases, pueden ser agrupados en módulos compuestos y así sucesivamente; el numero de niveles jerárquicos es ilimitado.

– Módulos compuestos están formados por un conjunto de módulos simples conectados entre si.

Page 33: curso omnet.pdf

Creación de Programas de Simulación

Un modelo OMNeT++ contiene las siguientes partes:

Descripción de topología de lenguaje NED. Archivos con extensión .ned.

Definición del mensaje, en archivos con extensión .msg.

Implementación de módulos simples y otro código C++ , en archivos .cc (o .cpp, en Windows)

Page 34: curso omnet.pdf

Ejecución de Simulaciones y Análisis de Resultados

La simulación puede ser compilada como un programa ejecutable independiente, o puede ser creada como una librería compartida.

Cuando se inicia un programa, primero se leen todos los archivos NED que contiene la topología del modelo, luego se lee el archivo de configuración (llamado comúnmente omnetpp.ini). Este archivo contiene la configuración que controla la forma como se ejecuta la simulación, valores para los parámetros del modelo, etc.

El resultado de la simulación 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 análisis de estos archivos.

Page 35: curso omnet.pdf

Que está en la Distribución?

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

Page 36: curso omnet.pdf

Que está en la Distribución?

La simulación 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 simulación se encuentran en el directorio:

samples/ directories for sample simulations

aloha/ models the Aloha protocol

cqn/ Closed Queueing Network

Page 37: curso omnet.pdf

Lenguaje NED

El simulador utiliza el lenguaje de programación NED, basado en C++, como herramienta para modelar topologías de red.

Este lenguaje define la estructura de la red y facilita la descripción modular de una red.

Un modelo en OMNeT++ se construye con módulos jerárquicos mediante el lenguaje NED. Los cuales pueden contener estructuras complejas de datos y tienen sus propios parámetros usados para personalizar el envío de paquetes a los destinos a través de rutas, compuertas y conexiones.

Page 38: curso omnet.pdf

Lenguaje NED

Básicamente, con el lenguaje NED se definen tres tipos de módulos:

– Módulos simples

– Módulos compuestos

– Módulos de redes.

En los módulos de red se encuentran los componentes y especificaciones de la descripción de una red de comunicaciones.

Page 39: curso omnet.pdf

La herencia de las clases componente, módulo y el canal

Page 40: curso omnet.pdf

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

Page 41: curso omnet.pdf

Lenguaje NED – Definiciones de canales:

• Especifica una conexión con características dadas. Su sintaxis es:

channel ChannelName

//...

endchannel

• Los parámetros 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

Page 42: curso omnet.pdf

Lenguaje NED – Definiciones de Módulos simples

• Son las estructuras básicas para módulos más complejos, su sintaxis es:

simple SimpleModuleName

parameters:

//...

gates:

//...

endsimple

• Los parámetros de los módulos simples son definidos por quien los crea, y en general pueden ser numéricos, booleanas o strings. Los gates (puertas) son las entradas y salidas del módulo, por donde se transmiten los mensajes.

Page 43: curso omnet.pdf

Lenguaje NED

– Definiciones de Módulos simples

• Los parámetros son variables que pertenecen a un modulo. Puede requerir y usar algoritmos de módulos simples.

• Por ejemplo, un modulo llamado TrafficGen puede tener un parámetro denominado numOfMessages que determina cuantos mensajes se deberían generar.

• Son declarados haciendo una lista de sus nombres: sección de descripción de un modulo.

Page 44: curso omnet.pdf

Lenguaje NED

– Definiciones de Módulos simples

• Ejemplo: simple TrafficGen

Parameters:

InterarrivalTime,

numOfMessages : const,

address : string;

Gates: //...

endsimple

Page 45: curso omnet.pdf

Lenguaje NED – Definiciones de Módulos Compuestos

• Poseen los campos de un módulo simple, pueden agregar submódulos, y poseen conexiones entre ellos. La sintaxis es:

Module CompoundModule

parameters:

//...

gates:

//...

submodules:

//...

connections:

//...

endmodule

Page 46: curso omnet.pdf

Lenguaje NED – Definiciones de Módulos Compuestos

• Los submódulos son módulos simples de menor jerarquía

• Connections: Definen conexiones entre los submódulos definidos, o entre los submódulos y el exterior a través de las gates. Estas conexiones pueden realizarse mediante canales previamente definidos, o indicando sus características en la misma conexión.

– La sintaxis de las conexiones es:

entrada - -> channel - -> salida

Page 47: curso omnet.pdf

Lenguaje NED – Definiciones de Red

• La definición de red declara a la simulación

como una instancia de un modelo previo, lo cual permite finalmente que se ejecute la simulación. La sintaxis es:

network networkType : networkName

parameters:

//..

endnetwork

Page 48: curso omnet.pdf

Lenguaje C++

Para crear un módulo simple en C++ se debe utilizar la clase cSimpleModule.

Ésta, junto a la clase cCompoundModule, pertenece a la librería de OMNET++ y es derivada de la clase cModule.

cSimpleModule posee las siguientes funciones para poder crear dicho módulo simple:

– void initialize()

– void handleMessage(cMessage *msg)

– void activity()

– void finish()

Page 49: curso omnet.pdf

Lenguaje C++ La función initialize() es llamada en el paso de

inicialización, cuando OMNET++ construye la red, creando los módulos simples y complejos necesarios y conectándolos de acuerdo a las definiciones del archivo NED.

– initialize() crea los parámetros iniciales para el objeto creado.

HandleMessage y activity funcionan durante el proceso.

– HandleMessage es llamada cuando el módulo recibe un mensaje.

– La función activity es una solución basada en co-rutinas, la cual implementa el proceso de interacción (es siempre preferible utilizar handleMessage).

Page 50: curso omnet.pdf

Lenguaje C++ La función finish, es llamada cuando la función termina de

forma satisfactoria. Generalmente es usada para guardar las estadísticas vectoriales y escalares reunidas durante el proceso de simulación.

Los archivos que contienen estas funciones deben tener la extensión “.cc”.

Las variables que se usan en los ficheros “.cc” están declaradas en otro fichero creado a partir también de c++. Éste tipo de fichero tiene como extensión “.h”.

En él se crean las variables de funciones, variables de estadísticas y variables de parámetros

Page 51: curso omnet.pdf

Ficheros INI

Estos ficheros son fundamentales para realizar la simulación. En ellos se describen:

– Los parámetros característicos de la simulación

– El número de simulaciones a ejecutar.

– La duración de la simulación.

– El valor de los atributos de los módulos simples.

– Los ficheros donde se guardarán las estadísticas recogidas, etc.

La indicación de un parámetro de un módulo simple se realiza por orden jerárquico. Si se escribe el módulo que se va a utilizar y se finaliza con un punto (.), se mostrará una lista de los parámetros que se puede utilizar.

Page 52: curso omnet.pdf

Ficheros INI

Un ejemplo de un parámetro INI sería:

“modulodeRed.modulocompuesto.parametro” Dos_Nodosfijos_Adhoc_60metros.channelControl.carrierFrequency =

2.4GHz

También 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"

Page 53: curso omnet.pdf

Enlace con Eclipse Omnetpp → hep → Install New Software

Page 54: curso omnet.pdf

Simulación 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 Simulación 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 transmisión de paquetes

– Fin de la transmisión de paquetes

– Expiración del temporizador de retransmisión

Page 55: curso omnet.pdf

Simulación 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 simulación, tiempo del modelo o tiempo virtual en lugar de tiempo real o tiempo de CPU que se refiere al tiempo que dura la simulación del programa y la cantidad de CPU consumida.

Page 56: curso omnet.pdf

Crear una Simulación Básica

Paso 1: Para crear una simulación básica en primer lugar se ingresa al ambiente visual de omnetpp.

Page 57: curso omnet.pdf

Crear una Simulación Básica

Paso 2: Se crea un nuevo Proyecto

Page 58: curso omnet.pdf

Crear una Simulación Básica

Paso 3: Se selecciona como vacío.

Page 59: curso omnet.pdf

Crear una Simulación Básica

Paso 4: Se crea un nuevo archivo NED.

Page 60: curso omnet.pdf

Crear una Simulación Básica

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

Page 61: curso omnet.pdf

Crear una Simulación Básica

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

simple computer {

gates: input in; output out;

}

Page 62: curso omnet.pdf

Crear una Simulación Básica

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;

}

Page 63: curso omnet.pdf

Crear una Simulación Básica

Paso 7: Se crea el archivo de inicialización

Page 64: curso omnet.pdf

Crear una Simulación Básica

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

Page 65: curso omnet.pdf

Crear una Simulación Básica

Paso 9: Se construye el proyecto

Paso 10: Se procede a correr la simulación

Page 66: curso omnet.pdf

Demo INET Contiene diferentes ejemplos de demos de

simulación