iniciaci n a omnet n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Iniciación a Omnet++ PowerPoint Presentation
Download Presentation
Iniciación a Omnet++

Loading in 2 Seconds...

play fullscreen
1 / 54

Iniciación a Omnet++ - PowerPoint PPT Presentation


  • 164 Views
  • Uploaded on

Iniciación a Omnet++. José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid. Contenido. Pasos. Definir la estructura de la red. Lenguaje NED. Completar el comportamiento. Lenguaje C++. Configurar la simulación Archivo ini. Ejemplo 1.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Iniciación a Omnet++' - nay


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
iniciaci n a omnet

Iniciación a Omnet++

José Daniel García Sánchez

Grupo de Arquitectura Comunicaciones y Sistemas

Universidad Carlos III de Madrid

pasos
Pasos
  • Definir la estructura de la red.
    • Lenguaje NED.
  • Completar el comportamiento.
    • Lenguaje C++.
  • Configurar la simulación
    • Archivo ini
ejemplo 1
Ejemplo 1
  • 1 Servidor.
  • El tiempo entre llegadas tiene una distribución exponencial con media de 1 segundo.
  • El tiempo de servicio tiene una distribución exponencial de 0.99 segundos.
  • ¿Cuál es el tiempo medio que una petición permanece en la cola?
cola m m 1
Cola M/M/1
  • Evidentemente, este sistema tiene solución analítica.
  • Simplemente se usa como ejemplo muy sencillo para ilustrar Omnet++.
lenguaje ned b sico
Lenguaje NED Básico
  • Definición de módulos simples.
  • Definición de módulos compuestos.
  • Definición de redes.
m dulos simples
Parámetros:

numeric, numeric const (o const), bool, string, xml.

Puertas.

in o out.

Pueden ser arrays.

simple Modulo

parameters:

p1 : tipo,

p2 : tipo;

gates:

in: g1;

out: g2;

out: g3[];

endsimple;

Módulos simples
generador de peticiones
Generador de peticiones

simple Generador

parameters:

tiempoEntreLlegadas : numeric;

gates:

out: salidaPeticiones;

endsimple;

servidor
Servidor

simple Servidor

parameters:

tiempoServicio: numeric;

gates:

in: entradaPeticiones;

endsimple;

m dulos compuestos
Permiten componer módulos complejos a partir de otros.

Se usan para interconectar módulos.

Se pueden realizar múltiples niveles de composición.

module nombre

parameters:

//...

gates:

//...

submodules:

//...

connections:

//...

endmodule;

Módulos compuestos
conexi n de m dulos
Conexión de módulos

module Red

parameters:

tiempoLlegadas : numeric,

tiempoServicio : numeric;

submodules:

gen : Generador;

parameters:

tiempoEntreLlegadas = tiempoLlegadas;

svr : Servidor;

parameters:

tiempoServicio = tiempoServicio;

connections:

gen.salidaPeticiones --> svr.entradaPeticiones;

endmodule;

slide12
Instanciación de la red.

Puede contener asignación de parámetros.

network red : Red

endnetwork;

Red
programaci n de m dulos simples
Programación de módulos simples
  • Es necesario definir el comportamiento de los módulos simples.
    • Iniciación
    • Finalización.
    • Tratamiento de mensajes.
  • Cada módulo simple se programa como una clase C++.
    • Hereda de cSimpleModule
modelos de tratamiento de mensajes
Síncrono

Se define un bucle completo de tratamiento.

Más sencillo de comprender inicialmente.

Requiere espacio de pila.

Otros problemas.

Asíncrono

Disparado por eventos.

Más costoso de comprender.

No requiere espacio de pila.

Modelos de tratamiento de mensajes
clase generador
Clase generador

#include <omnetpp.h>

class Generador : public cSimpleModule

{

Module_Class_Members(Generador, cSimpleModule, 4096); 

private:

virtual void initialize();

virtual void activity();

virtual void finish();

private:

int salida_;

private:

int enviados_;

};

generador iniciaci n y finalizaci n
Generador: Iniciación y Finalización

#include "generador.h"

Define_Module(Generador); 

void Generador::initialize()

{

salida_ = findGate("salidaPeticiones");

if (salida_ < 0)

opp_error("puerta de salida no encontrada");

enviados_ = 0;

}

void Generador::finish()

{

ev << "Mensajes enviados: " << enviados_ << endl;

}

generador actividad
Generador: Actividad

void Generador::activity()

{

cPar tiempo_entre_llegadas=par("tiempoEntreLlegadas");

for (;;) {

double tiempo = tiempo_entre_llegadas;

wait(tiempo);

cMessage * msg = new cMessage("peticion");

send(msg, salida_);

enviados_++;

}

}

clase servidor
Clase servidor

#include <omnetpp.h>

class Servidor : public cSimpleModule

{

Module_Class_Members(Servidor, cSimpleModule, 4096);

private:

virtual void initialize();

virtual void activity();

virtual void finish();

private:

int procesados_;

};

servidor iniciaci n y finalizaci n
Servidor: Iniciación y Finalización

#include "servidor.h"

Define_Module(Servidor);

void Servidor::initialize()

{

procesados_ = 0;

}

void Servidor::finish()

{

ev << "Peticiones procesadas: "

<< procesados_ << endl;

}

servidor actividad
Servidor: Actividad

void Servidor::activity()

{

cPar tiempo_servicio =

par("tiempoServicio");

for (;;) {

cMessage * msg = receive();

delete msg;

double tiempo = tiempo_servicio;

wait(tiempo);

procesados_++;

}

}

vale y ahora qu
Vale ¿Y ahora qué?
  • Se pueden generar dos tipos de ejecutables:
    • Interfaz de usuario gráfico: Útil para depurar y comprender.
    • Interfaz de consola: Más eficaz para realizar las simulaciones por lotes.
compilaci n
Compilación
  • Omnet++ permite generar automáticamente los Makefile.
  • Ejemplo para Windows:
    • opp_nmakemake –u Cmdenv –f –o simred
    • opp_nmakemake –u Tkenv –f –o simred
    • nmake –f Makefile.vc
configuraci n omnetpp ini
Configuración: omnetpp.ini

[General]

network=red

sim-time-limit = 10s

[Parameters]

red.tiempoLlegadas=1

red.tiempoServicio=0.99

seamos realistas
Seamos realistas
  • No se puede sustituir una distribución por su media.
  • Hace falta asignar distribuciones aleatorias a los parámetros.
  • Y además:
    • No se puede recibir un mensaje mientras se está en un wait.
uso de una cola de peticiones
Uso de una cola de peticiones

class Servidor : public cSimpleModule

{

//...

private:

cQueue * cola_peticiones_;

//...

};

activity
activity()

void Servidor::activity()

{

cPar tiempo_servicio = par("tiempoServicio");

for (;;) {

cMessage * msg;

if (cola_peticiones_->empty()) {

msg = receive();

}

else {

msg = check_and_cast<cMessage*>(cola_peticiones_->pop());

}

ev << "Enviado: " << msg->sendingTime()

<< ", procesando: " << simTime() << endl;

delete msg;

double tiempo = tiempo_servicio;

waitAndEnqueue(tiempo,cola_peticiones_);

procesados_++;

}

}

generaci n de n meros aleatorios
Generación de números aleatorios
  • Un generador de números pseudoaleatorios
    • Genera números enteros.
    • Basado en un algoritmo determinista.
    • Parte de una semilla inicial.
  • Necesarios para generar distribuciones aleatorias.
generadores de n meros aleatorios
Generadores de números aleatorios
  • Congruencial lineal.
    • Periodo 231
  • Mersenne-Twister [1998]
    • Periodo de 219937-1.
  • Akaroa.
    • Para ejecutar replicaciones paralelas en clusters.
distribuciones aleatorias
Distribuciones aleatorias
  • Basadas en generadores de números aleatorias.
  • Disponibles las más típicas.
  • Se pueden añadir nuevas (si uno sabe matemáticas suficientes).
importante
Importante
  • Cuidado con las variables autocorreladas.
  • Mucho cuidado con generar dos distribuciones a partir de una misma fuente aleatoria.
configuraci n de par metros
Configuración de parámetros

[General]

network=red

sim-time-limit = 1m

num-rngs=2

**.rng-0=0

**.rng-1=1

[Parameters]

red.tiempoLlegadas=exponential(1,0);

red.tiempoServicio=exponential(0.9,1);

recogida de estad sticas
Recogida de estadísticas
  • Omnet++ ofrece herramientas para recoger estadísticas de los resultados.
  • La más sencilla es cStdDev que permite recoger estadísticos sencillos de una muestra.
generador recogida de estad sticas
Generador: Recogida de estadísticas

class Servidor : public cSimpleModule

{

//...

private:

cStdDev tiempo_espera_;

};

generador recogida de estad sticas1
Generador: Recogida de estadísticas

void Servidor::activity()

{

//...

tiempo_espera_.collect(simTime() - msg->sendingTime());

//...

}

void Servidor::finish()

{

delete cola_peticiones_;

ev << "Peticiones procesadas: "

<< tiempo_espera_.samples() << endl;

ev << "Tiempo medio: " << tiempo_espera_.mean() << endl;

ev << "Varianza: " << tiempo_espera_.variance() << endl;

}

recogida de estad sticas m s detallada
Recogida de estadísticas más detallada
  • cWeightedStdDev
    • Pesos en las medidas  Longitud media.
  • cLongHistogram, cDoubleHistogram, cVarHistogram
    • Histogramas
  • cPSquare
    • Cuantiles
grabaci n de datos vectoriales
Grabación de datos vectoriales
  • Posibilidad de guardar una serie temporal para posterior análisis.
  • Archivo con extensión vec.
  • Se puede procesar con herramienta plove.
servidor grabaci n de vectores
Servidor: Grabación de vectores

class Servidor : public cSimpleModule

{

//...

private:

cOutVector vec_tiempo_espera_;

cOutVector vec_longitud_cola_;

};

servidor grabaci n de datos vectoriales
Servidor: Grabación de datos vectoriales

void Servidor::activity()

{

//...

vec_tiempo_espera_.record(

simTime()-msg->sendingTime());

vec_longitud_cola_.record(

cola_peticiones_->length());

//...

}

estimaci n del tiempo de espera
Estimación del tiempo de espera
  • Sea Ti el tiempo de espera de la i-ésima petición.
  • ¿Puedo usar T para estimar el tiempo de espera de las peticiones?
    • No porque Ti no son independientes ni idénticamente distribuidas.
  • Pero podría estimar las distribuciones de cada uno de los Ti.
slide42
Si solamente ejecuto la simulación una vez solamente tengo una muestra de cada variable aleatoria Ti.
  • Solución:
    • Realizar m ejecuciones independientes.
    • Tij: Tiempo de espera de la i-ésima petición en la j-ésima replicación.
    • Cada ejecución usa las mismas condiciones inciales.
    • Solo cambian las semillas de generación de números aleatorios.
independencia entre ejecuciones
Independencia entre ejecuciones
  • T11,T12,...,T1n son muestras de la variable aleatoria Ti.
  • Cada Ti puede seguir una distribución distinta.
  • Pero ¿Cómo se determina m?
    • ¿Depende del tipo de simulación?
simulaciones con finalizaci n predefinida
Simulaciones con finalización predefinida
  • Se sabe cuando terminan.
    • Un sistema que se reinicia pasado un cierto tiempo.
    • Un sistema que tiene una condición de terminación.
      • Simular la transmisión de un video.
preguntas para simulaciones con finalizaci n predefinida
Preguntas para simulaciones con finalización predefinida
  • Estimación del intervalo de confianza a partir de n realizaciones de simulación estocástica.
  • ¿Cuántas realizaciones tengo que hacer si quiere obtener una precisión determinada?
simulaci n sin terminaci n definida
Simulación sin terminación definida
  • No existe un evento de terminación de la simulación.
  • Nos interesan el comportamiento del sistema en su estado estacionario.
    • Hay que detectar y eliminar el estado transitorio.
preguntas
Preguntas
  • ¿Cómo elimino la parte de la simulación que se corresponde con el estado transitorio?
  • Finalización de la simulación:
    • Si termino demasiado pronto  resultados con variabilidad dependiente de las semillas.
    • Si termino demasiado tarde  estoy desperdiciando tiempo y recursos.
compliquemos el problema
Compliquemos el problema
  • El cliente y el servidor están conectados por un canal:
    • Ancho de banda de 128 Kbps.
    • El retraso sigue una distribución normal de media 1us y sigma 0.01.
  • Los tamaños de los mensajes tienen una distribución lognormal mu=6 y sigma=0.4
definici n de canales
Omnet permite definir un tipo de canal a partir de:

Ancho de banda.

Tasa de errores.

Retraso.

channel nombre

delay valor

error valor

datarate valor

endchannel;

Definición de canales
ejemplo de canal
Ejemplo de canal

channel conexion

datarate 128000

delay normal(1e-6,0.01,3)

endchannel

module Red

//...

connections:

gen.salidaPeticiones --> conexion --> svr.entradaPeticiones;

endmodule;

generaci n de mensajes con tama o
Generación de mensajes con tamaño

void Generador::activity()

{

cPar tiempo_entre_llegadas = par("tiempoEntreLlegadas");

cPar tam_mensaje = par("longitudMensaje");

for (;;) {

double tiempo = tiempo_entre_llegadas;

wait(tiempo);

cMessage * msg = new cMessage("peticion");

long longitud = tam_mensaje;

msg->setLength(longitud);

send(msg, salida_);

enviados_++;

}

}

y a n hay m s
Y aún hay más ...
  • Implementación asíncrona de módulos.
  • Mensajes definidos por el usuario.
  • Enrutamiento automático.
  • Recogida de datos no vectoriales para múltiples realizaciones.
  • Simulación paralela:
    • Realizaciones paralelas.
    • Partición del modelo.
y todav a m s
Y todavía más ...
  • INET Framework.
  • Mobility Framwork.
  • IPV6.