18
INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

Embed Size (px)

Citation preview

Page 1: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

INTRODUZIONE

AD OMNET++

Roma, 8 gennaio 2010

Fabrizio Ronci

Page 2: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

GENERALITÀ

OMNET++ è un ambiente di simulazione di reti: Modulare Ad eventi Orientato agli Oggetti (in C++) Open Source

È utile se: si vogliono modellare reti di comunicazione fisse e wireless si vogliono modellare protocolli di comunicazione si vogliono modellare reti di code si vogliono in generale modellare sistemi per i quali è

applicabile una simulazione ad eventi discreti, ovvero in cui il sistema e le sue parti possono essere fatte corrispondere ad entità che fra loro comunicano scambiandosi messaggi

Page 3: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

PARTICOLARITÀ

OMNET++ NON è un simulatore

MA è un'infrastruttura di simulazione,composta da:

Un motore ad eventi discreti (kernel),normalmente non modificato dallo sviluppatore

Una libreria di classi C++,da cui normalmente lo sviluppatore estende le proprie

Lo sviluppatore deve: sia descrivere il modello della simulazione sia descrivere una o più simulazioni parametrizzate

Page 4: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

MODELLI E SIMULAZIONI

Un modello viene descritto per mezzo di file .ned (NEtwork Description Language) in termini di:

moduli (modules) accessi (gates) connessioni (connections) messaggi (messages)

Le simulazioni vengono descritte per mezzo di file .ini nelle quali vengono specificati i parametri di moduli e connessioni e le caratteristiche della simulazione (durata della simulazione, …)

SVANTAGGIO: questo meccanismo è rigido e spesso è necessario adottare metodi al di fuori di OMNET++ per ottenere quello che si vuole

Page 5: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

MODULI

I moduli (i rettangoli) possono essere

semplici o composti;La rete viene considerata

un modulo composto.

Le connessioni (le frecce) consentono lo scambio dei

messaggi tra i moduli (possono essere anche monodirezionali)

Gli accessi (i quadratini) sono i punti di ancoraggio delle connessioni e possono essere in, out o inout

VANTAGGIO: l’annidamento (nesting) dei moduli è senza limiti(la gerarchia delle connessioni è ad un solo livello)

SVANTAGGIO: avere tanti nodi formati da moduli composti fortemente annidati impedisce di portare a termine la simulazione

Page 6: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

MESSAGGII messaggi sono composti da attributi e da una qualunque struttura di dati realizzabile in C++.

I messaggi sono fondamentali in OMNET++ perché realizzano gli eventi.

I messaggi possono essere inviati dai moduli, o attraverso accessi e connessioni, oppure anche direttamente, passando per il kernel.

Con i messaggi possono essere modellati sia elementi concreti nelle comunicazioni (trame, pacchetti, bit), sia elementi logici (ad esempio la fine dell’attività di un modulo).

Page 7: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

DOCUMENTAZIONEOMNET++ è relativamente giovane e ci sono delle ambiguità di denominazione:

il prototipo di modulo viene chamato – ma non sempre –tipo di modulo (module type)

l’istanza di un tipo di modulo viene chiamatamodulo (module)

il prototipo di connessione viene chiamato – quasi sempre –connessione (connection) o collegamento (link)

l’istanza di una connessione viene chiamata – quasi sempre – canale (channel)

certe volte gli accessi (gates) vengono chiamatiporte (ports), raramente interfacce (interfaces)

la libreria di classi (class library), in determinati contesti, viene chiamata libreria di componenti (component library) ed in

tal caso spesso i moduli, cioè i tipi di modulo, vengono chiamati componenti (components)

Page 8: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

INFRASTRUTTURA

Tralasciando il kernel, l’infrastruttura di simulazione è costruita intorno alla libreria di classi:

moduli, accessi, connessioni parametri messaggi classi contenitore (code, vettori, …) classi di raccolta di dati classi di stima delle distribuzioni e per la statistica classi per la rivelazione dei transitori e per la rivelazione dell’accuratezza dei risultati

Fa parte dell’infrastruttura anche il programma opp_msgc che permette di tradurre il formato dei messaggi in linguaggio C++

Page 9: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

IMPLEMENTAZIONELa base dello sviluppo è la scrittura del

comportamento (behaviour) dei moduli semplici

Sono possibili due tipi di comportamento: event – driven process – style

Normalmente lo sviluppatore realizza: il primo tipo di comportamento scrivendo la funzione handleMessage() nel (tipo di) modulo (OPNET, ma…) il secondo tipo di comportamento scrivendo la funzione activity() nel (tipo di) modulo (SIMULA, PARSEC, JAVA Sims)

È possibile, ma difficile, realizzare i due comportamenti invertendo la tipologia di funzioni.Sarebbe bizzarro realizzare moduli con entrambe le funzioni; la scelta viene comunicata al kernel.I creatori di OMNET++ consigliano il più possibile il primo approccio

Page 10: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

REALIZZAZIONE

Per realizzare una simulazione lo sviluppatore deve aver scritto:

i file .ned di descrizione del modello

i file .msg di descrizione dei messaggi

i file .h e .cc di implementazione dei moduli semplici

i file .ini di descrizione della simulazione

Page 11: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

STRUMENTI

I principali strumenti a disposizione dello sviluppatore sono:

l’Ambiente di Sviluppo Integrato (IDE)basato su Eclipse

gli Ambienti di Interfaccia Utenteuno a riga di comando,l’altro grafico

i FrameWorklibrerie di componenti realizzate dalla comunità

OMNET++ (il più usato è INET)

Page 12: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

CRITICITÀL’IDE è fornito dalla versione 4.0 e funziona bene (solo) sotto Linux.

L’accesso ai parametri interni ai moduli a run-time è complesso.

L’affidabilità dei framework non è totale.

Solo il framework INET è ben documentato.

La costruzione dei file .ned e .ini può richiedere l’uso di linguaggi di script (python); si deve imparare il linguaggio NED.

Le prestazioni del sistema in funzione della scalabilità sembrano degradare più velocemente di quanto dichiarato.

Il sistema è open-source e relativamente giovane.

Alcune delle funzionalità avanzate (simulazioni parallele, uso dei generatori di numeri casuali, uso delle proprietà, …) sono mal documentate e quindi difficilmente accessibili in fase di primo approccio.

Page 13: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

POSITIVITÀL’IDE si basa su un ambiente, Eclipse, noto ed intuitivo.

Il framework INET, relativamente alle reti fisse, appare affidabile.

Dosando l’utilizzo di framework e di parti sviluppate in proprio si può modulare il livello di dettaglio relativamente agli aspetti che interessano di più.

La simulazione può avvenire a livello di bit (anzi, questo è il default).

L’interfaccia di utente grafica è molto funzionale e comunque lo sviluppatore ha la possibilità di arricchirla.

Esiste una comunità di sviluppatori con mailing-list e forum; di solito i power users di questa comunità sono i possessori/manutentori dei framework.

Il sistema è open-source e quindi gratuito.

Rispetto ad OPNET il ruolo delle FSMs, che comunque sono possibili mediante classi apposite della libreria, è svolto dall’IDE.

Page 14: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

PRINCIPALI FRAMEWORK

Page 15: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

SCREENSHOTS (1/3)Utilizzo dell’editor NED in ambiente IDE

Page 16: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

SCREENSHOTS (2/3)Diagramma di Sequenza

Page 17: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

SCREENSHOTS (3/3)Ambiente di Interfaccia Grafica di Utente

Page 18: INTRODUZIONE AD OMNET++ Roma, 8 gennaio 2010 Fabrizio Ronci

INTRODUZIONE

AD OMNET++

OSSERVAZIONI & DOMANDE