+ All Categories
Home > Documents > Il simulatore ns2 – Network Simulator ver. 2

Il simulatore ns2 – Network Simulator ver. 2

Date post: 13-Jan-2016
Category:
Upload: dympna
View: 60 times
Download: 2 times
Share this document with a friend
Description:
Il simulatore ns2 – Network Simulator ver. 2. D.E.I.S. Università di Bologna DEIS Net http://deisnet.deis.unibo.it/. Note sull’installazione. NS2 viene naturalmente installato su sistema operativo UNIX. - PowerPoint PPT Presentation
40
IC3N 2000 N. 1 Il simulatore ns2 – Network Simulator ver. 2 D.E.I.S. Università di Bologna DEISNet http://deisnet.deis.unibo.it/
Transcript
Page 1: Il simulatore ns2 – Network Simulator ver. 2

IC3N 2000 N. 1

Il simulatore ns2 – Network Simulator ver. 2

D.E.I.S. Università di BolognaDEISNet

http://deisnet.deis.unibo.it/

Page 2: Il simulatore ns2 – Network Simulator ver. 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 http://deisnet.deis.unibo.it/Didattica/CorsiBO/RetiLS/Laboratorio(2007)– NS2– Cygwin– Istruzioni per le installazioni

Page 3: Il simulatore ns2 – Network Simulator ver. 2

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)

Page 4: Il simulatore ns2 – Network Simulator ver. 2

N. 4

Installazione di NS2 su windows(1)

• Scaricare il file ns-allinone 2.29.2.tar.gz nella directory C:/Cygwin.

• Aprire Cygwin e arrivare nel file system alla cartella C:/Cygwin

• Scompattare il file ns-allinone-2.29.2.tar.gz nella directory C:/Cygwin (o C:/Programmi/Cygwin) con il comando:

tar -xvzf ns-allinone-2.29.2.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).

Page 5: Il simulatore ns2 – Network Simulator ver. 2

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.

Page 6: Il simulatore ns2 – Network Simulator ver. 2

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)

Page 7: Il simulatore ns2 – Network Simulator ver. 2

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/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

Page 8: Il simulatore ns2 – Network Simulator ver. 2

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

Page 9: Il simulatore ns2 – Network Simulator ver. 2

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,...

Page 10: Il simulatore ns2 – Network Simulator ver. 2

N. 10

Gestione degli eventi

• La gestione degli eventi coinvolge l’unità di elaborazione, lo scheduler e la lista eventi

Lista Eventi

t0 :evento 0

t1: evento 1

t2: evento 2

......

......

......

tn: evento n

Scheduler

select next event

event i Elaborazione

add new event

remove old event

Invocazione

Page 11: Il simulatore ns2 – Network Simulator ver. 2

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

Page 12: Il simulatore ns2 – Network Simulator ver. 2

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

Page 13: Il simulatore ns2 – Network Simulator ver. 2

N. 13

Caratteristiche e comandi Otcl: esempi (1)

• Creare, inizializzare ed eliminare una varaibile:– set <nome_variabile> <valore>– unset <nome_variabile>

• 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

Page 14: Il simulatore ns2 – Network Simulator ver. 2

N. 14

Caratteristiche e comandi Otcl: esempi (2)

• Cicli FORfor {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"

}

Page 15: Il simulatore ns2 – Network Simulator ver. 2

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?

Page 16: Il simulatore ns2 – Network Simulator ver. 2

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

Page 17: Il simulatore ns2 – Network Simulator ver. 2

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

Page 18: Il simulatore ns2 – Network Simulator ver. 2

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

Page 19: Il simulatore ns2 – Network Simulator ver. 2

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

Page 20: Il simulatore ns2 – Network Simulator ver. 2

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 NODEfor {set i 0} {$i < N} {incr i}

{set node$i [$ns node]}

• $node1 attach <agent>

Page 21: Il simulatore ns2 – Network Simulator ver. 2

N. 21

La classe LINK: generalità

• Oggetti che permettono i collegamenti fra gli oggetti NODE• Definita da 5 elementi principali:

head_ puntatore al punto d’ingresso queue_ puntatore alla coda del linklink_ puntatore all’oggetto che descrive il link

in termini di ritardo di propagazione, capacità,...

ttl_ puntatore all’oggetto adibito alla gestione del TTL (Time To Live)

drophead_

puntatore all’ingresso di una oggetto per gestire lo scarto dei pacchetti sul link

Page 22: Il simulatore ns2 – Network Simulator ver. 2

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

Page 23: Il simulatore ns2 – Network Simulator ver. 2

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 2B=10Mb; d=1ms

3 4B=50Mb; d=50ms

Page 24: Il simulatore ns2 – Network Simulator ver. 2

N. 24

La classe LINK: alcuni comandi

• queue-limit: massima dimensione della coda$ns queue-limit <node0> <node1> <queue_limit>

• $link up: attiva un collegamento

• $link down: disabilita un collegamento

• $link up?: interrogazione sullo stato di un link

Page 25: Il simulatore ns2 – Network Simulator ver. 2

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 A Applicazione B

AGENT A AGENT B

NODO 1 LINK NODO 2 LINK NODO 3 LINK

Page 26: Il simulatore ns2 – Network Simulator ver. 2

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

Page 27: Il simulatore ns2 – Network Simulator ver. 2

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 <member_variable> <value>

Page 28: Il simulatore ns2 – Network Simulator ver. 2

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• ....

Page 29: Il simulatore ns2 – Network Simulator ver. 2

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 1Link

Agent 11 1 1

node 2

Agent 2

Page 30: Il simulatore ns2 – Network Simulator ver. 2

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

Page 31: Il simulatore ns2 – Network Simulator ver. 2

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"

Page 32: Il simulatore ns2 – Network Simulator ver. 2

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

Page 33: Il simulatore ns2 – Network Simulator ver. 2

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

Page 34: Il simulatore ns2 – Network Simulator ver. 2

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

Page 35: Il simulatore ns2 – Network Simulator ver. 2

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

Page 36: Il simulatore ns2 – Network Simulator ver. 2

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

Page 37: Il simulatore ns2 – Network Simulator ver. 2

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

Page 38: Il simulatore ns2 – Network Simulator ver. 2

N. 38

La classe TRACE: esempio di file trace

Page 39: Il simulatore ns2 – Network Simulator ver. 2

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

size_ dimensione della coda in bytepkts_ numero di pacchetti in codaparrivals_ numero di pacchetti arrivatibarrivals_ numero di byte arrivatipdepartures_ numero di pacchetti trasmessipdrops_ numero di pacchetti scartati

Page 40: Il simulatore ns2 – Network Simulator ver. 2

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


Recommended