Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
T
he Netwok Simulator ns-2 Home Page:
• www.isi.edu/nsnam/ns
The Network Simulator ns-2 Manual:
• www.isi.edu/nsnam/ns/ns-documentation.html
The Network Simulator ns-2 Mailing List:
• www.isi.edu/nsnam/ns/ns-lists.html
The Network Simulator ns-2 Tutorial:
• www.isi.edu/nsnam/ns/tutorial/index.html
http://nile.wpi.edu/NS
TCL/TK Resource:
• www.isi.edu/nsnam/otcl/README.html 3
Parte 1: Introduzione
Il Simulatore di Reti ns-2 (1/3)
“Ns is a discrete event simulator targeted at networking research.
• Ns provides substantial support for simulation of TCP, routing, and
multicast protocols over wired and wireless (local and satellite)
1
networks”
Il Simulatore ns-2 è sviluppato quale parte dei progetti:
• DARPA - SAMAN (Simulation Augmented by Analysis for Network)
• NSF – CONSER (Collaborative Simulation for Education and
• Research)
Altri contributi SUN, UCB, ACRI, ......
•
Sono disponibili due formati del codice sorgente di ns-2:
• “ all at once “
• “from all the pieces”
•
Il copyright ne consente l'uso, la modifica e la redistribuzione
•
1 ns-2 home page: www.isi.edu/nsnam/ns 5
Il Simulatore di Reti ns-2 (2/3)
ns-2 è un simulatore di tipo “event driven”
• scritto in C++ e OTCL
In ns-2 sono implementati:
• Protocolli di “rete”: TCP, UDP, FTP .....
• Protocolli/Algoritmi di Routing
• Meccanismi di Gestione delle Code dei Router
• (DropTail, CBQ, RED, ....)
Modelli per Sorgenti di Traffico (HTTP, FTP, ....)
• Meccanismi per Simulazione di “Eventi”
• ................................
• 6
Il Simulatore di Reti ns-2 (3/3)
ns-2 può essere visto
• come un interprete OTCL
dotato di un motore di
simulazione
I componenti principali del
• motore di simulazione
sono:
Event Scheduler
• Network Component Objects
•
I risultati della simulazione
• possono essere generati in
un formato compatibile
con il Network Animator
NAM 7
Il Network Animator NAM (1/3)
“Nam is a Tcl/TK based animation tool for viewing network
• simulation traces and real world packet traces. It supports
topology layout, packet level animation, and various data
1
inspection tools”
Consente di:
• Creare script per ns senza alcuna conoscenza del
• linguaggio di scripting OTCL (NAM Editor)
Visualizzare i risultati di un esperimento di
• simulazione
Una versione estesa del NAM Editor è stata sviluppata
• presso il DIS ed è reperibile all'indirizzo:
www.grid.unina.it/grid/ExtendedNamEditor
1 NAM home page: www.grid.unina.it/grid/ExtendedNamEditor 8
Il Network Animator NAM (2/3) 9
Il Network Animator NAM (3/3) 10
Il linguaggio OTCL (1/7)
“OTcl, short for MIT Object Tcl, is an extension to Tcl/Tk for
• 1
object-oriented programming.......”
Tcl (Tool Command Language) è un linguaggio di
• scripting di tipo general-purpose
Il Tcl è spesso utilizzato congiuntamente alla libreria Tk
• (Tool Kit), un insieme di librerie e comandi che
consentono di creare con facilità interfaccie grafiche
OTCL è un insieme di estensioni del linguaggio TCL che
• consentono di implementare un ambiente di
programmazione di tipo OO
Il legame esistente tra il Tcl e l'OTCL può essere
• assimilato a quello esistente tra C e C++
1 ns-2 OTCL tutorial: www.isi.edu/nsnam/otcl/doc/tutorial.html 11
Il linguaggio OTCL (2/7)
Variabili:
• In Tcl le variabili non devono essere dichiarate prima di essere
• utilizzate
Le variabili Tcl vengono create automaticamente all'atto della
• prima assegnazione:
set month 2
set day 3
set year 97
Per referenziare le variabili Tcl è necessario utilizzare il simbolo
• $:
set date "$month:$day:$year"
Espressioni:
• In Tcl è possibile valutare espressioni di tipo differente (matematiche,
• logiche, ...) utilizzando la parola chiave expr:
expr 0 == 1
expr 4 + 5 12
Il linguaggio OTCL (3/7)
Controllo di Flusso:
• Il Tcl supporta i classici costrutti per il controllo di flusso:
• If else:
• if {$temp < 80} {
puts "It's a little chilly."
} else {
puts "Warm enough for me."
}
If elseif:
• if {$my_planet == "earth"} {
puts "I feel right at home."
} elseif {$my_planet == "venus"} {
puts "This is not my home."
} else {
puts "I am neither from Earth, nor from Venus."
} 13
Il linguaggio OTCL (4/7)
switch:
• switch $num_legs {
2 {puts "It could be a human."}
4 {puts "It could be a cow."}
6 {puts "It could be an ant."}
8 {puts "It could be a spider."}
default {puts "It could be anything."}
}
for:
• for {set i 0} {$i < 10} {incr i 1} {
puts "In the for loop, and i == $i"
}
while:
• while {$i < 10} {
puts "In the while loop, and i == $i"
incr i 1
} 14
Il linguaggio OTCL (4/7)
Procedure:
• In Tcl le la semantica delle procedure è simile a quella del c
• proc magnitude {num} {
if {$num > 0} {
return $num
}
set num [expr $num * (-1)]
return $num
}
Per eseguire una funzione è sufficiente scriverne il nome seguito
• dalla lista dei parametri:
set abs [magnitude -3] 15
Il linguaggio OTCL (6/7)
Classi:
• L'estensione OTcl di Tcl definisce un ambiente di programmazione
• OO
Definizione di una Classe:
• class MyNode -superclass Node
Creazione di un Oggetto:
• set mynodevar [new MyNode]
Definizione di una Funzione Membro:
• MyNode instproc memberfn1 {} {
puts "in member function 1"
}
Invocazione di una Funzione Membro:
• $myobj memberfn1 16
Il linguaggio OTCL (7/7)
Dati Membro:
• I dati membro sono definiti all'interno delle funzioni membro
• utilizzando la direttiva instvar:
MyNode instproc memberfn2 {} {
$self instvar datamember1
set datamember1 "data member - memberfn2"
}
Costruttore:
• Il costruttore in OTCL ha il nome init
• Per invocare il costruttore della superclass è necessario
• utilizzare la parola chiave next
MyNode instproc init {} {
$self next
$self instvar datamember1
set datamember1 0
} 17
Parte 2:
Simulazione di uno Scenario
Lo Scenario di Rete 19
Costruzione dell Script (1/7)
Creazione del “ns object”
• set ns [new Simulator]
Definizione dei colori da associare ai flussi nella visualizzazione in
• NAM:
$ns color 1 Blue
$ns color 2 Red
Definizione del trace:
• set tf [open out.tr w]
$ns trace-all $tf
Definizione del trace per NAM:
• set nf [open out.nam w]
$ns namtrace-all $nf 20
Costruzione dell Script (2/7)
Procedura di “chiusura”:
• proc finish {} {
global ns tf nf
$ns flush-trace
#Close the NAM trace file
close $nf
#Close the trace file
close $tf
#Execute NAM on the trace file
exec nam out.nam &
exit 0
} 21