La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

IC3N 2000 N. 1 Il simulatore ns2 – Network Simulator ver. 2 D.E.I.S. Università di Bologna DEISNet

Presentazioni simili


Presentazione sul tema: "IC3N 2000 N. 1 Il simulatore ns2 – Network Simulator ver. 2 D.E.I.S. Università di Bologna DEISNet"— Transcript della presentazione:

1 IC3N 2000 N. 1 Il simulatore ns2 – Network Simulator ver. 2 D.E.I.S. Università di Bologna DEISNet

2 N. 2 Note sull’installazione NS2 viene naturalmente installato su sistema operativo UNIX. È possibile installare NS2 anche su Windows appoggiandosi sulla piattaforma Cygwin che simula l’ambiente Linux. Trovate tutto il materiale sul sito del corso BO/RetiLS/Laboratorio(2007) BO/RetiLS/ –NS2 –Cygwin –Istruzioni per le installazioni

3 N. 3 NS2 su Cygwin (per Windows) Cygwin è scaricabile liberamente da Internet o in alternativa lo trovate sul sito dell’esame. Prima di tutto installare Cygwin in C: o in C:/Programmi. È consigliabile installare tutti i componenti (all  install)

4 N. 4 Installazione di NS2 su windows(1) Scaricare il file ns-allinone tar.gz nella directory C:/Cygwin. Aprire Cygwin e arrivare nel file system alla cartella C:/Cygwin Scompattare il file ns-allinone tar.gz nella directory C:/Cygwin (o C:/Programmi/Cygwin ) con il comando: tar -xvzf ns-allinone tar.gz Posizionarsi nella cartella /ns-allinone-2.29/ Lanciare il comando di installazione:./install Aggiornare il file ~/.bashrc che si trova nella home di ns aggiungendo i comandi che trovate nelle spiegazioni (v.slide successiva).

5 N. 5 Installazione di NS2 su windows(2) Aggiornare il file ~/.bashrc che si trova nella home di ns (vedi file readme.pdf) Questa operazione serve per riconoscere il file eseguibile ns.exe da ogni parte del file system (e non solo dalla cartella in cui è contenuto) Il file va aggiornato aggiungendo nella propria home directory il percorso (PATH) dell’eseguibile ns.exe es: PATH=$PATH;”directory” $PATH è il “percorso” precedente che NON va modificato. “directory” è il percorso di ns.exe da aggiungere.

6 N. 6 Utilizzo di NS2 in laboratorio. Lanciare Cygwin (icona nel desktop) o in “all programs”  Cygwin  Cygwin bash shell Posizionarsi nella directory: C:/cygwin/ns-allinone-2.29/ns-2.29/NSCRIPT/examples usando i comandi – cd C : e poi –cd cygwin/ns-allinone-2.29/ns-2.29/NSCRIPT/examples Cartella “examples” dedicata alle Lezioni: –ns.exe –grafici.nss, script.tcl –Gnuplot (per la visualizzazione dei risultati)

7 N. 7 Il simulatore: ns2 – Network Simulator ver. 2 Simulatore di reti di telecomunicazioni –sviluppato presso l’University of Southern California's Information Sciences Institute (ISI) –software di simulazione di pubblico dominio (open source) –http://www.isi.edu/nsnam/ns/http://www.isi.edu/nsnam/ns/ –http://www.isi.edu/nsnam/ns/ns- documentation.html Motore di simulazione (engine): linguaggio C++ Interazione utente-simulatore: linguaggio OTcl –Otcl (Object-oriented Tool Command Language) –Linguaggio di scripting natura interpretata non compilata alta efficienza a livello di utente nello sviluppo del codice

8 N. 8 La simulazione con script OTcl OTcl è il mezzo con il quale l’utente può simulare il funzionamento di una rete reale User Space Risultati..... ns2 OTcl Script.... User Space

9 N. 9 ns2: simulatore tempo-discreto ad eventi L’istante in cui si presenta un evento attiva l’esecuzione di azioni specificate dal programma Gli eventi sono caratterizzati dall’istante di simulazione ed inseriti in una lista degli eventi Il simulatore agisce sulla lista eventi –inserisce un nuovo evento nella lista –processa l’evento attuale estraendolo dalla lista –esegue le azioni associate all’evento –elimina l’evento processato L’accesso alla lista è gestito da uno scheduler ns2 è uno strumento in continua evoluzione –permette la definizione di nuove classi per la caratterizzazione di nuovi componenti di rete, collegamenti, protocolli, ecc,...

10 N. 10 Gestione degli eventi La gestione degli eventi coinvolge l’unità di elaborazione, lo scheduler e la lista eventi Lista Eventi t 0 :evento 0 t 1 : evento 1 t 2 : evento t n : evento n Scheduler select next event event i Elaborazione add new event remove old event Invocazione

11 N. 11 Il linguaggio C++ Evoluzione del linguaggio C –introduzione di una particolare struttura dati: classe Classe: –tipo di dato con struttura definita dal programmatore –permette un elevato livello di astrazione –interazione solo con gli oggetti della classe attraverso particolari funzioni proprie della stessa (metodi) Le funzionalità della classe si sfruttano facendo un’istanza della stessa: –L’istanza è denominata oggetto Possibilità di rappresentare il comportamento di entità reali

12 N. 12 Linguaggio OTcl Permette di descrivere tutte le operazioni fondamentali per la simulazione Attraverso opportuni comandi consente l’impostazione del set-up: –Topologia di rete, –caratteristiche dei link, –tipo di traffico, –protocolli supportati,... Elaborazione e presentazione dei risultati di una simulazione

13 N. 13 Caratteristiche e comandi Otcl: esempi (1) Creare, inizializzare ed eliminare una varaibile: –set –unset Chiamata per riferimento e per valore –per riferimento: $variabile –per valore: variabile Input di parametri esterni: if {$argc == 2} { set a [lindex $argv 0] set b [lindex $argv 1] } exit 1 Ad a viene assegnato il primo valore dell’array argv e a b il secondo. Argv è l’array dei parametri in ingrsso

14 N. 14 Caratteristiche e comandi Otcl: esempi (2) Cicli FOR for {set i 0}{$i < 100}{incr i}{ set v($i) [new vettore] } Cicli WHILE while {$i < 100}{ set v($i) [new vettore] incr i } Istruzioni IF if {$i < 10} { puts "i is less than 10" }

15 N. 15 Le procedure OTcl Sono un componente fondamentale di Otcl –facilitano la programmazione –permettono l’esecuzione di azioni ricorsive –caratterizzano il programma in blocchi logici Esempio: proc proc3 {min max} { set randomvar [uniform $min $max] return $randomvar } set randomvar [proc3 0 1] : qual è il risultato?

16 N. 16 Interazione fra classi C++ e classi OTcl Le classi C++ che costituiscono ns2 implementano l’insieme dei protocolli disponibili L’ambiente OTcl : –permette la definizione di classi OTcl direttamente connesse alle classi C++ (linkage) –fornisce i metodi per l’utilizzo delle classi ns2 utilizza le due tipologie di classe e consente di creare gestire ed analizzare una rete di telecomunicazioni –lo script OTcl è il mezzo per creare gli oggetti della rete ed i relativi collegamenti fra gli stessi

17 N. 17 Le classi standard di ns2 Le classi standard utili per implementare un modello di rete per lo studio del protocollo TCP sono: –SIMULATOR –NODE –LINK –AGENT –ERROR MODEL –TRACE –MONITOR

18 N. 18 La classe SIMULATOR Classe fondamentale di ns2 Permette di istanziare il motore di simulazione Primo oggetto creato da uno script OTcl set ns [new simulator] I metodi della classe simulator permettono di –configurare la simulazione –schedulare gli eventi I metodi della classe simulator: 3 categorie –configurazione della topologia (creazione dei nodi, dei link,...) –monitoraggio dell’evoluzione temporale di oggetti (trace) –configurazione dello scheduler

19 N. 19 La classe NODE: generalità Classe implementata in Otcl Implementano le funzionalità del protocollo IP –definizione dell’indirizzamento –routing –consegna delle unità informative al protocollo di trasporto Due tipi: –Unicast Node: per gestire pacchetti con un solo mittente ed un solo destinatario –Multicast Node: per gestire pacchetti con un solo mittente e più destinatari

20 N. 20 La classe NODE: comandi Creazione dell’oggetto NODE: set node1 [$ns node] Ritorno dell’identificatore di nodo $node1 id Creazione di N oggetti NODE for {set i 0} {$i < N} {incr i} {set node$i [$ns node]} $node1 attach

21 N. 21 La classe LINK: generalità Oggetti che permettono i collegamenti fra gli oggetti NODE Definita da 5 elementi principali:

22 N. 22 La classe LINK: creazione dell’oggetto Esempio: set ns [ new Simulator ] set node1 [ $ns node ] set node2 [ $ns node ] set node3 [ $ns node ] set node4 [ $ns node ] $ns simplex-link $node1 $node2 10Mb 1ms DropTail $ns duplex-link $node3 $node4 100Mb 50ms DropTail invocazione della classe simulator creazione di 4 oggetti NODE attraverso il metodo “node” appartenente alla classe ns Creazione di 2 collegamenti fra i nodi specificandone il tipo, la capacità, il ritardo e la politica di coda all’interfaccia fra il nodo ed il link d’uscita

23 N. 23 La classe LINK: creazione dell’oggetto Esempio: set ns [ new Simulator ] set node1 [ $ns node ] set node2 [ $ns node ] set node3 [ $ns node ] set node4 [ $ns node ] $ns simplex-link $node1 $node2 10Mb 1ms DropTail $ns duplex-link $node3 $node4 100Mb 50ms DropTail 1 2 B=10Mb; d=1ms 3 4 B=50Mb; d=50ms

24 N. 24 La classe LINK: alcuni comandi queue-limit: massima dimensione della coda $ns queue-limit $link up: attiva un collegamento $link down: disabilita un collegamento $link up?: interrogazione sullo stato di un link

25 N. 25 La classe AGENT: generalità Gli agent sono gli elementi dove si realizza: –la generazione a livello di rete delle unità informative che devono essere trasmesse (es.:applicazione che invia dati) –la rimozione delle stesse dopo la ricezione (es.: applicazione che riceve i dati) Applicazione AApplicazione B AGENT AAGENT B NODO 1LINKNODO 2LINKNODO 3LINK

26 N. 26 L’agent non riceve realmente dati dall’applicazione ma solo la dimensione dell’unità informativa (bytes) Diversi tipi di agent per gestire diversi tipi di protocolli di trasporto (es. TCP, UDP,…) Per ogni protocollo di trasporto è definito: –Un agent trasmettitore –Un agent ricevitore Al nodo ricevitore i pacchetti vengono “scartati” dall’agent ricevitore (libera la memoria associata alla struttura dati del pacchetto) –AGENT NULL (scarto) –AGENT TCPSink (scarto +ACK) La classe AGENT: caratteristiche

27 N. 27 La classe AGENT: agent TCP Due categorie possibili: –Agent TCP unidirezionali Agent trasmettitori Agent ricevitori –Agent TCP bidirezionali Possibilità di impostare diverse versioni del TCP –Tahoe, Reno, NewReno, Vegas etc. La classe Agent/TCP è caratterizzata da numerose variabili membro –Senza nessuna specifica  valore di default –Possibilità di modificare i valori di default Agent/TCP set

28 N. 28 Agent/TCP : variabili membro e significato window: dimensione massima della finestra di congestione/ricezione packetsize: dimensione in byte del pacchetto trasmesso tcpTick: granularità temporale nella stima del RTT maxrto: valore massimo per il RTO dupacks: contatore degli ack duplicati Ack: il valore più alto di ACK ricevuto cwnd: dimensione della finestra di congestione (in pacchetti) sstresh: valore della soglia di slow start rtt: campione del RTT srtt: valor medio del campione di RTT rttvar: varianza del campione di RTT maxseq: massimo numero di sequenza trasmesso....

29 N. 29 La classe AGENT: utilizzo Esempio: set ns [ new Simulator ] set node1 [ $ns node ] set node2 [ $ns node ] $ns simplex-link $node1 $node2 100Mb 2ms DropTail set agent1 [ new Agent /UDP ] set agent2 [ new Agent / Null ] $ns attach-agent $node1 $agent1 $ns attach-agent $node2 $agent2 $ns connect $agent1 $agent2 $agent1 set fid_ 1 #associa i pacchetti ad certo flusso tramite la viaribile membro “flow indicator” node 1 Link Agent node 2 Agent 2

30 N. 30 La classe APPLICATION: generalità Ha lo scopo di emulare le applicazioni più comuni e le caratteristiche di profili di traffico noti. Le unità dati generate da oggetti application sono passati all’oggetto agent tramite funzioni di interfaccia. Possibilità di: –generare traffico tipico di applicazioni del mondo reale (FTP File Transfer Protocol, Telnet, WEB) –Configurare le caratteristiche dell’applicazione In ns2 l’applicazione non genera veri dati ma solo delle dimensioni di file (es.: numero di byte inviati per trasferire un file mp3) I byte generati vengono incapsulati in segmenti TCP dall’agent corrispondente con intestazioni TCP/IP

31 N. 31 Simulatore di applicazioni: esempio (FTP) set ns [new Simulator] set node1 [$ns node] set node2 [$ns node] $ns duplex-link $node1 $node2 1Mb 1ms DropTail set agent1 [new Agent/TCP] set agent2 [new Agent/TCPSink] $ns attach-agent $node1 $agent1 $ns attach-agent $node2 $agent2 $ns connect $agent1 $agent2 set application1 [new Application/FTP] $application1 attach-agent $agent1 $ns at 0.0 "$application1 start"

32 N. 32 La classe APPLICATION: generatori di traffico In ns2 sono implementate 4 classi derivate dalla classe TrafficGenerator: –EXPOO_Traffic. generazione di traffico “On/Off ” con distribuzione exp dei tempi di permanenza in ogni stato –POO_Traffic: tempi di permanenza in ciascuno stato distribuiti secondo una distribuzione di Pareto (bursty) –CBR_Traffic: generazione di traffico a rate costante, con pacchetti di dimensione fissa –TrafficTrace: generazione di traffico effettivo ottenuto da misurazioni sulla rete

33 N. 33 La classe ERRORMODEL: generalità Consente di riprodurre il verificarsi di errori a livello fisico e/o la perdita di unità dati Si basa sull’utilizzo di due stratagemmi: –Attivazione dei flag di errore nella struttura del pacchetto come indicazioni di presenza di bit errati (opzione di default) –Invio del pacchetto ad un unità di scarto (drop target) invece che al destinatario per simulare la perdita del pacchetto L’evento di errore può quindi essere definito sia a livello di bit sia di pacchetto

34 N. 34 Monitoraggio e raccolta dei risultati Due strategie possibili per raccogliere i risultati della simulazione –definizione di due diversi oggetti ns: oggetti trace oggetti monitor Oggetto trace: –inserito tra due nodi –produce un report su tutti gli eventi che hanno interessato i pacchetti trasmessi sul link durante la simulazione –necessità di associare all’oggetto trace un elemento di raccolta dei dati di simulazione (TclChannel (un file)) Oggetto monitor: –sfrutta l’uso di contatori –permette di monitorare i parametri d’interesse durante la simulazione

35 N. 35 La classe TRACE Ogni pacchetto è tracciato grazie ad una intestazione (hdr_cmn) caratterizzata da –un identificativo unico –il tipo di pacchetto –la dimensione del pacchetto (tempo di trasmissione) –un identificativo dell’interfaccia di trasmissione (per il caso multicast) –un identificativo di flusso –nodo sorgente –nodo destinazione

36 N. 36 La classe TRACE: esempio di utilizzo set ns [ new Simulator ] set source [ $ns node ] set dest [ $ns node ] $ns duplex-link 100Mb 1ms DropTail set trace_file [open traccia.tr w] $ns trace-queue $source $dest $trace_file.... close $trace_file set trace_file [open traccia.tr r] creazione dei nodi sorgente, destinazione e del link fra essi apertura in scrittura del file di trace traccia.tr creazione del file traccia.tr con trace-queue chiusura del file a fine simulazione e apertura in lettura per leggere i risultati

37 N. 37 La classe TRACE: formato del file Caratterizzato da un formato standard in cui si specifica: –tipo di evento (ricezione, accodamento, trasmissione, scarto) –istante in cui si verifica l’evento –nodo sorgente e nodo destinazione –tipo di pacchetto –dimensione –flag per utilizzi specifici (collegamenti wireless, etc,...) –identificativo di flusso –identificativo univoco di pacchetto –numero di sequenza

38 N. 38 La classe TRACE: esempio di file trace

39 N. 39 La classe MONITOR: generalità Permette di costruire oggetti in grado di monitorare alcune grandezze (variabili di stato) di utilità per l’analisi dei risultati di simulazione Consente anche di specificare l’intervallo di campionamento delle variabili monitorate –0.1 sec di default

40 N. 40 La classe MONITOR: esempio Monitoraggio dello stato della coda posta fra due nodi (n1 ed n2): set queue1_2 [$ns monitor-queue $n1 $n2 [$ns get- ns-traceall]] queue1_2 : puntatore all’oggetto MONITOR $ns get-ns-traceall : comando per definire il puntatore ai dati


Scaricare ppt "IC3N 2000 N. 1 Il simulatore ns2 – Network Simulator ver. 2 D.E.I.S. Università di Bologna DEISNet"

Presentazioni simili


Annunci Google