Universita’


Esempio di uno script Tcl



Scaricare 0.54 Mb.
Pagina16/38
29.03.2019
Dimensione del file0.54 Mb.
1   ...   12   13   14   15   16   17   18   19   ...   38

3.4 Esempio di uno script Tcl


Uno script Tcl inizia sempre con l’acquisizione di un oggetto della classe simulator ovvero con :

set ns [new Simulator]

In questo modo si crea un’istanza dell’oggetto Simulator e la si assegna alla variabile ns che può essere richiamata con:



$ns

Lo script termina sempre con il comando di inizio simulazione, per far partire lo scheduler, ovvero con:



$ns start

La topologia della rete, in ns-2, è definita indicando i nodi, link e code che costituiscono lo scenario di simulazione. La primitiva di base per creare un nodo e assegnargli un identificativo è:



set node1 [$ns node]

Due nodi possono essere collegati tra loro mediante un link. La sintassi per creare un semplice nodo unidirezionale è:



$ns simple-link node1 node2 bandwidth delay queue_type

Il comando crea un link da node1 a node2, con banda bandwidth e ritardo delay. Il link usa una coda di tipo queue_type.


Oltre a nodi e link, altre componenti fondamentali per definire uno scenario in ns-2 sono gli Agenti e le Applicazioni.

Gli agenti vengono usati nell’implementazione di protocolli a vari livelli e sono gli oggetti che guidano attivamente la simulazione: essi rappresentano i processi e/o le entità di trasporto che si trovano su host e router.

Gli agenti più importanti sono quelli che implementano i due protocolli più usati a livello di trasporto: TCP e UDP. Gli agenti TCP possono essere di due tipi: one-way e two-way. I primi sono a loro volta suddivisi in trasmettitore TCP (ad esempio Agent/TCP/Reno) e ricevitore TCP (ad esempio Agent/TCP/Sink) e cercano di simulare il più fedelmente possibile il controllo della congestione e degli errori, senza essere, però delle riproduzioni esatte delle reali implementazioni del protocollo TCP.

Per creare un’istanza di un agente TCP si può usare il seguente comando:



set agentTcp [new Agent/TCP]

che crea un’istanza dell’agente TCP che implementa l’algoritmo Reno e la assegna alla variabile agentTcp.

Per creare un’istanza dell’agente TCPSink, responsabile dell’invio degli ack al trasmettitore TCP, e assegnarla alla variabile agentSink si usa il comando:

set agentSink [new Agent/TCPSink]

Una volta che l’agente è stato creato, bisogna assegnarlo ad un nodo:



$ns attach-agent $node1 $agentSink

Inoltre, per avere uno scambio dei dati, bisogna creare una connessione tra i due agenti:



$ns connect $agentSink $agentTcp

Le applicazioni infine si collocano al di sopra degli agenti del livello di trasporto. Le applicazioni attualmente implementate in ns-2 sono FTP e Telnet. La creazione di una applicazione FTP e di una successiva connessione all’agente TCP è possibile mediante i seguenti comandi:



set ftp [new Application/FTP]

$ftp attach-agent $agentTcp

Per far partire e interrompere il trasferimento dei dati si usano i comandi:



$ns at time $ftp start

$ns at time $ftp start

Quello che segue è un semplice script Tcl che crea tre nodi e genera un traffico di tipo FTP tra il nodo 0 e il nodo 2:


#Create a simulator object

set ns [new Simulator]


#Open the nam trace file

set f [open out.tr w]

$ns trace-all $f

#Define a 'finish' procedure

proc finish {} {

global ns f

$ns flush-trace

#Close the trace file

close $f

exit 0


}
#Create tree nodes

set n0 [$ns node]

set n1 [$ns node]

set n2 [$ns node]


#Create a simplex link between the nodes

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

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

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

$ns simplex-link $n0 $n1 1Mb 10ms DropTail
#Create a TCP agent and attach it to node n0

set src [new Agent/TCP/FullTcp]

$ns attach-agent $n0 $src
#Create a Sink agent and attach it to node n2

set sink [new Agent/TCP/FullTcp]

$ns attach-agent $n2 $sink
$ns connect $src $sink
#set up TCP-level connections

$sink listen;

$src set window_ 100
# create an FTP source "application"

set ftp [new Application/FTP]

$ftp attach-agent $src

# associate FTP with the TCP sender

$ns at 0.2 "$ftp start"
#Call the finish procedure after a period of simulation time

$ns at 0.5 "finish"


#Run the simulation

$ns run




Condividi con i tuoi amici:
1   ...   12   13   14   15   16   17   18   19   ...   38


©astratto.info 2019
invia messaggio

    Pagina principale