59
Network Simulator: Network Simulator: ns-2 ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: [email protected]

Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: [email protected]

Embed Size (px)

Citation preview

Page 1: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Network Simulator: Network Simulator: ns-2ns-2

Andrea Valletta

Dipartimento INFOCOM Sapienza Università di Roma

E-mail: [email protected]

Page 2: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Contenuti

Introduzione

Struttura del simulatore

Oggetti e classi in ns-2

Linguaggio TCL e OTCL

Creazione di uno scenario di simulazione

Analisi dei risultati

Riferimenti e documentazione disponibile

Page 3: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Introduzione

Network simulator è nato con lo scopo di offrire un supporto per la ricerca in ambito networking

Progettazione di nuovi protocolli, studio del traffico, etc

Confronto tra varie versioni di un protocollo

E’ un software open source

Il codice è condiviso, visibile a tutti e liberamente modificabile per aggiungere nuovi protocolli, nuovi modelli, etc

Questo incrementa l’affidabilità dei risultati

Molte persone hanno testato i modelli in situazioni differenti

I modelli sono stati sviluppati da esperti

Ogni livello del simulatore è sviluppato con dettaglio.

Unico simulatore che implementa l’intera pila protocollare di una rete complessa

Page 4: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Funzionalità incluse in ns

Reti cablate

Routing DV, LS, PIM-SM

Trasporto: TCP, UDP, SCTP

Sorgenti di traffico:web, ftp, telnet, cbr, stocastiche

Discipline di coda:drop-tail, RED, FQ, SFQ, DRR

QoS: IntServ and Diffserv

Emulazione di reti reali

Wireless

Ad hoc routing e mobile IP

Directed diffusion, sensor-MAC

Reti satellitari (satelliti geostazionari e polari, con o senza elaborazione a bordo)

Tracing, animazioni, utilities varie

Page 5: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Componenti di ns

Ns, il simulatore vero e proprio

Nam, il tool network animator

Permette una visualizzazione grafica animata dei risultati forniti da ns

Nam editor: interfaccia grafica per generare script per ns

Pre-processing:

Generatori di traffico e topologie

Post-processing:

Analisi delle tracce, solitamente mediante script in Awk, Perl, o Tcl

Page 6: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Modelli

Modelli di traffico e applicazioni:

Web, FTP, telnet, constant-bit rate, real audio

Protocolli di trasporto:

unicast: TCP (Reno, Vegas, etc.), UDP, SCTP

Multicast: SRM

Routing e code:

Wired routing, ad hoc routing e directed diffusion

Protocolli di coda: RED, drop-tail, etc

Physical media:

Reti Cablate (point-to-point, LANs), wireless (multiple propagation models), reti satellitari

Page 7: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Parte I: Introduzione generale

Page 8: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Simulatore ad eventi

Il simulatore vede una sequenza di eventi

Viene gestita una lista di eventi

Prendi un evento, elaboralo, poi passa all’evento successivo nella lista

Ciascun evento si verifica in un istante di tempo simulato, ma impiega una quantità arbitraria di tempo reale

E’ un modello molto semplice

Singolo flusso di controllo

Facile da gestire

Page 9: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Esempi di eventi discreti

Due nodi su una LAN

A B

Semplice modello di coda:

t=1, A pacchetto in codat=1.01, il pacchetto viene prelevato dalla coda, parte l’evento B

Modello dettagliato:

t=1.0: A invia un pacchetto all’interfaccia di rete (NIC) che inizia il carrier sensing (CS)t=1.005: il NIC di A termina il CS, inizia a trasmetteret=1.006: il NIC di B inizia a ricevere il pacchettot=1.01: il NIC di B conclude la ricezione del pacchetto, e lo passa all’applicazione

Page 10: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Struttura del software

NS è orientato agli oggetti

Un nodo, un link, uno strato dell’architettura protocollare costituiscono oggetti

Ciò consente un notevole riuso del codice

Alcuni oggetti importanti

NsObject: aggiunge il metodo recv()

Connector: aggiunge target()

BiConnector: uptarget() e downtarget()

Page 11: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

C++ e OTcl

Ns usa due linguaggiC++ per l’elaborazione dei pacchetti

Veloce, consente un controllo più fine

OTcl per il controllo

Preparazione e configurazione della simulazione

Utile per introdurre rapidamente delle modifiche

Maggiore flessibilità, ma occorre imparare due linguaggi di programmazione

Stessa gerarchia delle classi

La struttura generale del simulatore (in particolare, ciò che mette insieme le varie classi) è scritta in OTcl

Il Tcl fornisce l’interfaccia di comando di ns

Page 12: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

C++ e OTcl

C++ OTcl

Oggetti C++puri

Oggetti Tclpuri

Oggetti “split” C++/OTcl

ns

Page 13: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Schema generale

•Il cuore del simulatore è scritto in C++ ( compilato, veloce)•L’interfaccia per la gestione dei parametri di simulazione è scritta in OTcl (estensione di Tcl object oriented) ( interpretato, i parametri possono essere modificati senza dover ricompilare tutto il simulatore)

Page 14: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Linguaggio Tcl

Tcl: Tool Command Language

I programmi interattivi hanno bisogno di linguaggi adatti a gestire un’interfaccia di comando:

Spesso viene creato un linguaggio “ad-hoc”, per ciascuna applicazione

Soluzione debole, soggetta a problemi

emacs e csh sono potenti, ma non riutilizzabili

Soluzione: linguaggio di scripting riutilizzabileL’interprete è una libreria C

Caratteristiche di base: variabili, procedure, ecc.

Il linguaggio può venire esteso con caratteristiche aggiuntive (come avviene in NS)

Page 15: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Linguaggio Tcl

Applicazioni complesse:

Importanza delle prestazioni

Necessità di una struttura

Comandi interattivi, scripting:

Minore importanza delle prestazioni

Struttura minimale: facile riutilizzo del codice

Tcl

Sintassi molto semplice, facile da imparare

Struttura semplice

Semplice interfaccia con il C/C++

Page 16: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Tcl nelle applicazioni

Il Tcl può essere incluso nelle applicazioni

Il Tcl interpreta gli script, e passa i parametri alle procedure dell’applicazione (scritte ad esempio in C)

L’applicazione estende il set di comandi di Tcl

In C vengono definiti nuovi tipi di dati

Le primitive vengono implementate come nuovi comandi Tcl

Operazioni complesse possono essere implementate come script Tcl

Page 17: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Sintassi del Tcl

Sintassi molto sempliceset a 47

47

Alla variabile a è stato assegnato il valore 47

Valutazione di espressioniset b [expr $a+10]

57

È stata eseguita l’istruzione expr $a+10 ed il suo risultato è stato assegnato alla variabile a

Stringheset b “a is $a”

a is 47

Page 18: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Sintassi del Tcl

Ricco insieme di istruzioni:Variabili, array associativi, liste

Espressioni C-like

Espressioni condizionali, loop:

if "$x < 3" {

puts "x is too small"

}

Procedure

Accesso a socket TCP/IP, file, sottoprocessi

Tutti i dati sono visti come stringheFacile accesso dal C

I programmi e i dati sono intercambiabili

Page 19: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Tcl: concetti di base

Due parti principali da apprendere:Sintassi e regole di sostituzione

Semplici, ma all’inizio possono causare confusione

Comandi

Si possono apprendere quando necessario

Le strutture di controllo sono comandi, non fanno parte della sintassi del linguaggio!

Script TclÈ una sequenza di comandi, separati da a capo o punto e virgola

Comando TclUna o più parole separate da spazi bianchi

La prima parola è il nome del comando, le altre sono gli argomenti

Page 20: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Tcl: concetti di base

Tcl Parser

Suddivide il comando in una sequenza di parole

Effettua le sostituzioni

Non interpreta le parole

Command procedure

Interpreta le parole

Fornisce i risultati

Command

Tcl Parser

Word 1

Word 2

Word 3

Command procedure

Result

Page 21: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Tcl: argomenti dei comandi

Il parser non assegna alcun significato agli argomenti

In C:

x = 4; y = x + 10

Ad y è assegnato il valore 14

In Tcl:

set x 4; set y x+10

Ad y è assegnata la stringa “x+10”

Comandi diversi assegnano significati diversi ai loro argomenti

set a 24/2

expr 24/2

Page 22: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Tcl: sostituzione di variabili

Sintassi: $nomevariabile

Esempi:

set b 66

66

set a b

b

set a $b

66

set a $b+$b+$b

66+66+66

Page 23: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Tcl: sostituzione di comandi

Sintassi: [script]

Valuta uno script o un comando, restituisce il risultato

Esempi:

set b 8

8

set a [expr $b + 2]

10

set a “b - 3 is [expr $b - 3]”

b - 3 is 5

Page 24: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Tcl: struttura delle parole

Gli spazi e i punti e virgola sono separatori di parole

I doppi apici (“) eliminano la separazione tra parole:

set a “x is $x; y is $y”

Le parentesi graffe {} eliminano i separatori e le sostituzioni:

set a {[expr $b * $c]}

Ad a è assegnata la stringa [expr $b * $c] senza sostituzioni di variabili o di comandi

Page 25: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Tcl: liste e strutture di controllo

Liste

Zero o più elementi separati da spazi bianchi

{,} per raggruppare elementi

a b {c d e} f

Comandi per la gestione di liste

Esempio: lindex {a b {c d e} f} 2 restituisce c d e

Strutture di controllo

Simili al C, sono comandi che accettano come argomenti script Tcl

Esempio: list reversalset b ""

set i [expr [llength $a] - 1]

while {$i >= 0} {

lappend b [lindex $a $i]

incr i -1

}

Page 26: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Tcl: procedure

Il comando proc definisce una procedura:

proc somma {x y} {expr $x + $y}

Le procedure si comportano come le istruzioni incorporate:

somma 7 3

10

Gli argomenti possono avere valori di default:

proc decr {x {y 1}} {expr $x - $y}

decr 8 restituisce 7 (y ha assunto il valore di default 1)

Nome Lista degli argomenti Corpo della procedura

Page 27: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Tcl: sommario

Variabili:

set x 10

puts “x is $x”

Funzioni ed espressioni:

set y [pow x 2]

set y [expr x*x]

Controllo:

if {$x > 0} { return $x } else {

return [expr -$x] }

while { $x > 0 } {

puts $x

incr x –1

}

Procedure:

proc pow {x n} {

if {$n == 1} { return $x }

set part [pow x [expr $n-1]]

return [expr $x*$part]

}

Liste, array associativi, ecc.

=> Vero linguaggio di programmazione che può essere usato per costruire topologie di rete, modelli di traffico, ecc.

Page 28: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Otcl

Versione orientata agli oggetti del Tcl

La parola Class seguita dal nome della classe è usata per dichiarare una nuova classe

I metodi (funzioni membro) della classe sono dichiarati usando la parola instproc preceduta dal nome della classe; per il resto la sintassi è la stessa di quella delle procedure Tcl

Il metodo init è il costruttore della classe

La variabile self è un puntatore all’oggetto stesso (analogamente a this in C++)

Per dichiarare una variabile membro di una classe (instance variable) si usa la parola instvar

La parola –superclass è usata per dichiarare che una classe eredita da un’altra

Page 29: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Otcl

Class Person# constructor:Person instproc init {age name} {

$self instvar age_$self instvar name_set age_ $ageset name_ $name

}# method:Person instproc greet {} {

$self instvar age_puts “$age_ years old: How are you?”

}Person instproc name {} {

$self instvar name_puts “Name is $name_”

}

# subclass:Class Kid -superclass PersonKid instproc greet {} {

$self instvar age_puts “$age_ years old kid: What’s up, dude?”

}

set a [new Person 45 Bill]set b [new Kid 15 Sam]$a greet 45 years old: How are

you?$a name Name is Bill$b greet 15 years old kid:

What’s up, dude?$b name Name is Sam

La gerarchia tra le classi è utile per creare varianti di oggetti esistenti (TCP, TCP/Reno)

Page 30: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Creazione di uno script di simulazione

Page 31: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Script iniziale

set ns [new Simulator]

set nf [open out.nam w]

$ns namtrace-all $nf

proc finish {} {

global ns nf

$ns flush-trace

close $nf

exec nam out.nam &

exit 0

}

# Insert your own code for topology creation

# and agent definitions, etc. here

$ns at 5.0 "finish"

$ns run

Creazione dell’oggetto simulatore

Apre il file out.nam in scrittura e assegna l’handle nf

Scrive i dati della traccia nam nel file out.nam

Crea una procedura con nome finish

Chiude il file di traccia

Esegue Network Animator per mostrare out.nam

Termina

Nell’istante t=5 s chiama la procedura finish

Avvia la simulazione

Page 32: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Creazione di un link

set n0 [$ns node]

set n1 [$ns node]

$ns duplex-link $n0 $n1 1Mb 10ms DropTail

Crea un nodo e assegna l’handle n0

Crea un nodo e assegna l’handle n1

Collega i due nodi n0 e n1:

link bidirezionale

Capacità 1Mb/s

Ritardo di propagazione 10ms

Coda a perdita

Page 33: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Topologia di rete: nodo

n0 n1

Addr Classifier

Port Classifier

classifier_

dmux_

entry_

Node entry

Nodo unicas

t

set ns_ [new Simulator]set n0 [ns_ node]

set ns_ [new Simulator –multicast on]set n1 [ns_ node]

0

Multicast Classifier

classifier_

dmux_

entry_

Node entry

Nodo multicast

multiclassifier_

0

1

Page 34: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Indirizzamento

Due tipi di indirizzi: piatti (flat) e gerarchici

Indirizzo piatto di default: 32 bit per l’id del nodo, 32 bit per l’id della porta

Indirizzo gerarchico di default:

3 livelli di gerarchia

10 11 11 oppure 1 9 11 11 se multicast

Sono possibili formati diversi

Page 35: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Nodo gerarchico

n2

Nodeentry

Level 1Level 2

Level 3

Addressclassifier To Port

demux

ns_ node-config –addressing hier

Page 36: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Topologia di rete: link

n0 n1

enqT_ queue_ deqT_

drophead_ drpT_

link_ ttl_

n1 entry_

head_

tracing simplex link

duplex link

[ns_ duplex-link $n0 $n1 5Mb 2ms drop-tail]

Page 37: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Generazione del traffico

set udp0 [new Agent/UDP]

$ns attach-agent $n0 $udp0

set cbr0 [new Application/Traffic/CBR]

$cbr0 set packetSize_ 500

$cbr0 set interval_ 0.005

$cbr0 attach-agent $udp0

set null0 [new Agent/Null]

$ns attach-agent $n1 $null0

$ns connect $udp0 $null0

$ns at 0.5 "$cbr0 start“

$ns at 4.5 "$cbr0 stop"

Crea un agent UDP e assegna l’handle udp0

Collega l’agent udp0 al nodo n0

Crea un generatore costant bit rate cbr0

Dimensione del pacchetto 500 byte

Intervallo di generazione 0.005 s

Collega il generatore cbr0 a udp0

Crea un agent null e assegna l’handle null0

Collega l’agent null0 al nodo n1

Connette udp0 a null0

All’istante t=0.5s avvio generatore CBR cbr0

All’istante t=4.5s fine generazione dei pacchetti

Page 38: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Strato di trasporto

n0 n1

Addr Classifier

Port Classifier

classifier_

dmux_

entry_

Agent/TCP

agents_

Addr Classifier

Port Classifier

classifier_

dmux_

entry_

Agent/TCPSinkagents_

dst_=1.0 dst_=0.0

set tcp [new Agent/TCP]ns_ attach-agent $n0 $tcp

set tcpsink [new Agent/TCPSink]ns_ attach-agent $n1 $tcpsink

ns_ connect $tcp $tcpsink

0

0

1

0

Page 39: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Applicazione: generatore di traffico

n0 n1

Addr Classifier

Port Classifier

classifier_

dmux_

entry_

Agent/TCP

agents_

Addr Classifier

Port Classifier

classifier_

dmux_

entry_

Agent/TCPSink

agents_

dst_=1.0 dst_=0.0Application/FTP

set ftp [new Application/FTP]$ftp attach-agent $tcp$ns at 1.2 “$ftp start”

0

0

1

0

Page 40: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Flusso dei pacchetti

0

1

n0 n1

Addr Classifier

Port Classifier

entry_

0 Agent/TCP Addr Classifier

Port Classifier

entry_

1

0Link n0-n1

Link n1-n0

0 Agent/TCPSink

dst_=1.0 dst_=0.0Application/FTP

Page 41: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Creazione di una semplice topologia

set n0 [$ns node]

set n1 [$ns node]

set n2 [$ns node]

set n3 [$ns node]

$ns duplex-link $n0 $n2 1Mb 10ms DropTail

$ns duplex-link $n1 $n2 1Mb 10ms DropTail

$ns duplex-link $n3 $n2 1Mb 10ms DropTail

$ns duplex-link-op $n0 $n2 orient right-down

$ns duplex-link-op $n1 $n2 orient right-up

$ns duplex-link-op $n2 $n3 orient right

Crea 4 nodi n0, n1, n2, n3

Crea 3 link bidirezionali

Orienta i link

Page 42: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Generazione del traffico

set udp0 [new Agent/UDP]

$ns attach-agent $n0 $udp0

set cbr0 [new Application/Traffic/CBR]

$cbr0 set packetSize_ 500

$cbr0 set interval_ 0.005

$cbr0 attach-agent $udp0

set udp1 [new Agent/UDP]

$ns attach-agent $n1 $udp1

set cbr1 [new Application/Traffic/CBR]

$cbr1 set packetSize_ 500

$cbr1 set interval_ 0.005

$cbr1 attach-agent $udp1

set null0 [new Agent/Null]

$ns attach-agent $n3 $null0

$ns connect $udp0 $null0

$ns connect $udp1 $null0

$ns at 0.5 "$cbr0 start“

$ns at 1.0 "$cbr1 start“

$ns at 4.0 "$cbr1 stop“

$ns at 4.5 "$cbr0 stop“

$ns duplex-link-op $n2 $n3 queuePos 0.5

$udp0 set class_ 1

$udp1 set class_ 2

$ns color 1 Blue

$ns color 2 Red

Page 43: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Creazione di topologie complesse.

for {set i 0} {$i < 7} {incr i} {

set n($i) [$ns node]

}

for {set i 0} {$i < 7} {incr i} {

$ns duplex-link $n($i) $n([expr ($i+1)%7]) 1Mb 10ms DropTail

}set udp0 [new Agent/UDP]

$ns attach-agent $n(0) $udp0

set cbr0 [new Application/Traffic/CBR]

$cbr0 set packetSize_ 500

$cbr0 set interval_ 0.005

$cbr0 attach-agent $udp0

set null0 [new Agent/Null]

$ns attach-agent $n(3) $null0

$ns connect $udp0 $null0

$ns at 0.5 "$cbr0 start“

$ns at 4.5 "$cbr0 stop"

Ciclo i da 0 a 6

Crea 7 nodi n(0) n(1)…n(6)

Crea link da n(0) a n(1) a n(2)… a n(6) a n(0)

Page 44: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Guasto di un link, routing dinamico

$ns rtmodel-at 1.0 down $n(1) $n(2)

$ns rtmodel-at 2.0 up $n(1) $n(2)

$ns rtproto DV

All’istante t=1s il link tra n(1) e n(2) si guasta

All’istante t=2s il link riprende a funzionare

Si usa routing dinamico (Distance Vector)

Page 45: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Visualizzazione delle prestazioni (1/3)

set n0 [$ns node]

set n1 [$ns node]

$ns duplex-link $n0 $n1 1Mb 100ms DropTail

set source [new Agent/UDP]

$ns attach-agent $n0 $source

set traffic [new Application/Traffic/Exponential]

$traffic set packetSize_ 200

$traffic set burst_time_ 2s

$traffic set idle_time_ 1s

$traffic set rate_ 100k

$traffic attach-agent $source

set sink0 [new Agent/LossMonitor]

$ns attach-agent $n1 $sink0

$ns connect $source $sink

Traffico con distribuzione esponenziale

Dimensione del pacchetto 200 byte

Tempo medio di attività 2s

Tempo medio di inattività 1s

Rate quando la sorgente è attiva 100kb/s

Scarta e conta i pacchetti

Page 46: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Visualizzazione delle prestazioni (2/3)

set f0 [open out0.tr w]

proc record {} {

global sink0 f0

set ns [Simulator instance]

set time 0.5

set bw0 [$sink0 set bytes_]

set now [$ns now]

puts $f0 "$now [expr $bw0/$time*8/1000000]“

$sink0 set bytes_ 0

$ns at [expr $now+$time] "record”

}

proc finish {} {

global f0

close $f0

exec xgraph out0.tr -geometry 800x400 &

exit 0

}

Crea il file out0.tr

Procedura chiamata ogni 0.5s

Variabili globali sink0 e f0

Contatore bytes ricevuti

Istante attuale

Scrive nel file di traccia

Resetta contatore

Schedula la procedura record

Variabile globale f0

Chiude il file

Esegue xgraph per visualizzare la traccia

termina

Page 47: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Visualizzazione delle prestazioni (3/3)

Page 48: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Scenari wireless:struttura del nodo mobile

Classifier:Forwarding

Agent: Protocol Entity

Node Entry

Node

ARP

Radio Propagation Model

MobileNode

LL

MAC

PHY

LL

CHANNEL

LL

MAC

LL:Link layer object

IFQ:Interface queue

MAC:Mac object

PHY PHY:Net interface

Routing

Page 49: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Scenari wireless:caratterizzazione del nodo mobile

Stack protocollare

LL

ARP

Interface Queue

Strato MAC

Interfaccia di rete

Modello di propagazione radio

Friss-space attenuation(1/r2) per piccole distanze

Two ray Ground (1/r4) per distanze maggiori

Posizione

coordinate (x,y,z=0)

Movimenti

velocità, direzione, ...

Page 50: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

# $ns_ node-config -addressingType flat or hierarchical# -adhocRouting DSDV or DSR or TORA# -llType LL# -macType Mac/802_11# -propType "Propagation/TwoRayGround“# -ifqType "Queue/DropTail/PriQueue“# -ifqLen 50# -phyType "Phy/WirelessPhy“# -antType "Antenna/OmniAntenna“# -channelType "Channel/WirelessChannel“# -topoInstance $topo# -energyModel "EnergyModel“# -initialEnergy (in Joules)# -rxPower (in W)# -txPower (in W)# -agentTrace ON or OFF# -routerTrace ON or OFF# -macTrace ON or OFF# -movementTrace ON or OFF

Scenari wirelessconfigurazione di un nodo mobile

Page 51: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

# variabili

set val(chan) Channel/WirelessChannel

set val(prop) Propagation/TwoRayGround

set val(ant) Antenna/OmniAntenna

set val(ll) LL

set val(ifq) Queue/DropTail/PriQueue

set val(ifqlen) 50

set val(netif) Phy/WirelessPhy

set val(mac) Mac/802_11

set val(rp) DSDV

set val(nn) 2

#inizio

set ns_ [new Simulator]

set tracefd [open traccia.tr w]

$ns_ trace-all $tracefd

set topo [new Topography]

$topo load_flatgrid 500 500

create-god $val(nn)

channel type

radio-propagation model

Antenna type

Link layer type

Interface queue type

max packet in ifq

network interface type

MAC type

ad-hoc routing protocol

number of mobilenodes

Crea l’oggetto simulatore

Apre il file traccia.tr in scrittura

Scrive traccia in traccia.tr

Crea un oggetto topografia

Nodi in un’area di 500x500m

Crea il General Operations Director

Script iniziale (1/4)

Page 52: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

$ns_ node-config -adhocRouting $val(rp) \-llType $val(ll) \-macType $val(mac) \-ifqType $val(ifq) \-ifqLen $val(ifqlen) \-antType $val(ant) \-propType $val(prop) \-phyType $val(netif) \-topoInstance $topo \-channelType $val(chan) \-agentTrace ON \-routerTrace ON \-macTrace OFF \-movementTrace OFF

for {set i 0} {$i < $val(nn) } {incr i} {set node_($i) [$ns_ node ]$node_($i) random-motion 0

}

Configura i nodi mobili utilizzando le variabili precedentemente definite

Configura vari parametri, gli altri assumono valori di default

Crea nn nodi mobili

Disattiva il movimento random

Script iniziale (2/4)

Page 53: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

$node_(0) set X_ 5.0

$node_(0) set Y_ 2.0

$node_(0) set Z_ 0.0

$node_(1) set X_ 390.0

$node_(1) set Y_ 385.0

$node_(1) set Z_ 0.0

$ns_ at 10.0 "$node_(0) setdest 20.0 18.0 1.0“

$ns_ at 50.0 "$node_(1) setdest 25.0 20.0 15.0“

$ns_ at 100.0 "$node_(1) setdest 490.0 480.0 15.0"

Posizione iniziale nodo node_(0)

Posizione iniziale nodo node_(1)

All’istante t=10s il nodo node(0) si sposta verso (20,18) con velocità 1m/s

All’istante t=50s il nodo node_(1) si sposta verso (25,20) con velocità 15m/s

All’istante t=100s il nodo si sposta verso (490,480) con velocità 15m/s

Script iniziale (3/4)

Page 54: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

set tcp [new Agent/TCP]set sink [new Agent/TCPSink]$ns_ attach-agent $node_(0) $tcp$ns_ attach-agent $node_(1) $sink$ns_ connect $tcp $sinkset ftp [new Application/FTP]$ftp attach-agent $tcp$ns_ at 10.0 "$ftp start" for {set i 0} {$i < $val(nn) } {incr i} {

$ns_ at 150.0 "$node_($i) reset";}$ns_ at 150.0001 "stop“$ns_ at 150.0002 "$ns_ halt“proc stop {} {

global ns_ tracefdclose $tracefd

}$ns_ run

Crea agent TCPCrea agent TCPSink (invia riscontri TCP)Attach sorgente TCP al nodo node_(0)Attach sink TCP al nodo node_(1)Connessione TCP tra node_(0) e node_(1)Crea applicazione ftpAttach ftp sopra TCPAll’istante t=10s avvia generatore ftp

Alla fine simulazione reset dei terminali

Chiama procedura stopTermina

Chiude il file di traccia

Avvia simulazione

Script iniziale (4/4)

Page 55: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Animazione simulazione wireless

Page 56: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

File di traccia

+ 1.84375 0 2 cbr 210 ------- 0 0.0 3.1 225 610- 1.84375 0 2 cbr 210 ------- 0 0.0 3.1 225 610r 1.84471 2 1 cbr 210 ------- 1 3.0 1.0 195 600r 1.84566 2 0 ack 40 ------- 2 3.2 0.1 82 602+ 1.84566 0 2 tcp 1000 ------- 2 0.1 3.2 102 611- 1.84566 0 2 tcp 1000 ------- 2 0.1 3.2 102 611r 1.84609 0 2 cbr 210 ------- 0 0.0 3.1 225 610+ 1.84609 2 3 cbr 210 ------- 0 0.0 3.1 225 610d 1.84609 2 3 cbr 210 ------- 0 0.0 3.1 225 610- 1.8461 2 3 cbr 210 ------- 0 0.0 3.1 192 511r 1.84612 3 2 cbr 210 ------- 1 3.0 1.0 196 603+ 1.84612 2 1 cbr 210 ------- 1 3.0 1.0 196 603- 1.84612 2 1 cbr 210 ------- 1 3.0 1.0 196 603+ 1.84625 3 2 cbr 210 ------- 1 3.0 1.0 199 612

Inserimento in coda

Rimozione dalla coda

Ricezione

Pacchetto scartato

Istante in cui è avvenuto l’evento

Nodi coinvolti

Tipo Dimensione

Flags

Flusso

Sorgente

Destinazione

Numero di sequenza

Identificativo univoco del pacchetto

Page 57: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Riferimenti e documentazione

Page 58: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Dove si trova ns-2?

E’ possibile scaricare direttamente la versione all-in-one (include uno script per l’installazione automatica di tutto il software necessario al funzionamento di ns).

http://www.isi.edu/nsnam/ns/

In alternativa, è possibile scaricare separatamente i singoli software richiesti da ns:

Tcl/TK 8.x:

http://resource.tcl.tk/resource/software/tcltk/

Otcl and TclCL:

http://otcl-tclcl.sourceforge.net

ns-2 and nam-1:

http://www.isi.edu/nsnam/dist

Other utilities

http://www.isi.edu/nsnam/ns/ns-build.html

Tcl-debug, GT-ITM, xgraph, …

Page 59: Network Simulator: ns-2 Andrea Valletta Dipartimento INFOCOM Sapienza Università di Roma E-mail: valletta@net.infocom.uniroma1.it

Documentazione

Per problemi legati alla compilazionehttp://www.isi.edu/nsnam/ns/ns-build.html

Ns mailing list: [email protected]

Manuale e tutorial su ns (nella distribuzione e sul sito di ns)

TCL: http://dev.scriptics.com/scripting

Otcl tutorial (nella distribuzione e sul sito di ns): ftp://ftp.tns.lcs.mit.edu/pub/otcl/doc/tutorial.html