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
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.
-
Reti di calcolatori - Esercitazione
-
Reti logiche
-
Reti logiche
-
Reti di Calcolatori - raccolta di domande - esercitazione