![Page 1: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/1.jpg)
Iniciación a Omnet++
José Daniel García SánchezGrupo de Arquitectura Comunicaciones y
SistemasUniversidad Carlos III de Madrid
![Page 2: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/2.jpg)
Contenido
![Page 3: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/3.jpg)
Pasos Definir la estructura de la red.
Lenguaje NED.
Completar el comportamiento. Lenguaje C++.
Configurar la simulación Archivo ini
![Page 4: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/4.jpg)
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?
![Page 5: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/5.jpg)
Cola M/M/1
Evidentemente, este sistema tiene solución analítica.
Simplemente se usa como ejemplo muy sencillo para ilustrar Omnet++.
![Page 6: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/6.jpg)
Lenguaje NED Básico
Definición de módulos simples.
Definición de módulos compuestos.
Definición de redes.
![Page 7: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/7.jpg)
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;
![Page 8: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/8.jpg)
Generador de peticiones
simple Generador
parameters:
tiempoEntreLlegadas : numeric;
gates:
out: salidaPeticiones;
endsimple;
![Page 9: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/9.jpg)
Servidor
simple Servidor
parameters:
tiempoServicio: numeric;
gates:
in: entradaPeticiones;
endsimple;
![Page 10: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/10.jpg)
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;
![Page 11: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/11.jpg)
Conexión de módulosmodule Red parameters: tiempoLlegadas : numeric, tiempoServicio : numeric; submodules: gen : Generador; parameters:
tiempoEntreLlegadas = tiempoLlegadas; svr : Servidor; parameters:
tiempoServicio = tiempoServicio; connections: gen.salidaPeticiones --> svr.entradaPeticiones;endmodule;
![Page 12: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/12.jpg)
Red Instanciación de
la red.
Puede contener asignación de parámetros.
network red : Red
endnetwork;
![Page 13: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/13.jpg)
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
![Page 14: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/14.jpg)
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.
![Page 15: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/15.jpg)
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_;};
![Page 16: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/16.jpg)
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;}
![Page 17: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/17.jpg)
Generador: Actividadvoid 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_++; }}
![Page 18: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/18.jpg)
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_;};
![Page 19: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/19.jpg)
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;}
![Page 20: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/20.jpg)
Servidor: Actividadvoid Servidor::activity(){ cPar tiempo_servicio = par("tiempoServicio");
for (;;) { cMessage * msg = receive(); delete msg; double tiempo = tiempo_servicio; wait(tiempo); procesados_++; }}
![Page 21: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/21.jpg)
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.
![Page 22: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/22.jpg)
Proceso de compilación
![Page 23: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/23.jpg)
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
![Page 24: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/24.jpg)
Configuración: omnetpp.ini
[General]
network=red
sim-time-limit = 10s
[Parameters]
red.tiempoLlegadas=1
red.tiempoServicio=0.99
![Page 25: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/25.jpg)
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.
![Page 26: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/26.jpg)
Uso de una cola de peticiones
class Servidor : public cSimpleModule
{
//...
private:
cQueue * cola_peticiones_;
//...
};
![Page 27: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/27.jpg)
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_++; }}
![Page 28: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/28.jpg)
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.
![Page 29: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/29.jpg)
Generadores de números aleatorios Congruencial lineal.
Periodo 231
Mersenne-Twister [1998] Periodo de 219937-1.
Akaroa. Para ejecutar replicaciones paralelas en
clusters.
![Page 30: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/30.jpg)
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).
![Page 31: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/31.jpg)
Importante
Cuidado con las variables autocorreladas.
Mucho cuidado con generar dos distribuciones a partir de una misma fuente aleatoria.
![Page 32: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/32.jpg)
Configuración de parámetros[General]network=redsim-time-limit = 1mnum-rngs=2**.rng-0=0**.rng-1=1
[Parameters]red.tiempoLlegadas=exponential(1,0);red.tiempoServicio=exponential(0.9,1);
![Page 33: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/33.jpg)
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.
![Page 34: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/34.jpg)
Generador: Recogida de estadísticas
class Servidor : public cSimpleModule
{
//...
private:
cStdDev tiempo_espera_;
};
![Page 35: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/35.jpg)
Generador: Recogida de estadísticasvoid 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;}
![Page 36: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/36.jpg)
Recogida de estadísticas más detallada
cWeightedStdDev Pesos en las medidas Longitud
media. cLongHistogram,
cDoubleHistogram, cVarHistogram Histogramas
cPSquare Cuantiles
![Page 37: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/37.jpg)
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.
![Page 38: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/38.jpg)
Servidor: Grabación de vectores
class Servidor : public cSimpleModule
{
//...
private:
cOutVector vec_tiempo_espera_;
cOutVector vec_longitud_cola_;
};
![Page 39: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/39.jpg)
Servidor: Grabación de datos vectoriales
void Servidor::activity(){ //... vec_tiempo_espera_.record( simTime()-msg->sendingTime()); vec_longitud_cola_.record( cola_peticiones_->length()); //...}
![Page 40: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/40.jpg)
![Page 41: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/41.jpg)
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.
![Page 42: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/42.jpg)
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.
![Page 43: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/43.jpg)
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?
![Page 44: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/44.jpg)
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.
![Page 45: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/45.jpg)
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?
![Page 46: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/46.jpg)
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.
![Page 47: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/47.jpg)
Estado transitorio y estado estacionario
![Page 48: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/48.jpg)
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.
![Page 49: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/49.jpg)
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
![Page 50: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/50.jpg)
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;
![Page 51: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/51.jpg)
Ejemplo de canal
channel conexion datarate 128000 delay normal(1e-6,0.01,3)endchannelmodule Red //... connections: gen.salidaPeticiones --> conexion --> svr.entradaPeticiones;
endmodule;
![Page 52: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/52.jpg)
Generación de mensajes con tamañovoid 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_++; }}
![Page 53: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/53.jpg)
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.
![Page 54: Iniciación a Omnet++ José Daniel García Sánchez Grupo de Arquitectura Comunicaciones y Sistemas Universidad Carlos III de Madrid](https://reader034.vdocuments.mx/reader034/viewer/2022051515/54fd82ce4a7959ca428b55f3/html5/thumbnails/54.jpg)
Y todavía más ...
INET Framework. Mobility Framwork. IPV6.