Manuale di Network Simulator v.2

Capitolo 1 - Introduzione ad ns

a cura di Sandro Petrizzelli


Premessa

Questo documento fornisce una documentazione di riferimento per il simulatore Network Simulator (d’ora in poi, NS). Cominceremo con un semplice esempio di script di simulazione. Del resto, esistono in rete vari tutorial (sotto forma di normali documenti o di slides) che possono probabilmente costituire il modo migliore per cominciare ad usare questo programma.

Esempio

Come premesso, cominciamo mostrando un semplice esempio di script di simulazione (rintracciabile nel file ~ns/tcl/ex/simple.tcl).

Questo script serve a definire una topologia di 4 nodi e di due agenti: uno di essi è un agente UDP sul quale si “appoggia” un generatore di traffico di tipo CBR (Constant Bit Rate, cioè con tasso di emissione dei bit costante), mentre l’altro è un classico agente TCP. La simulazione dura 3 secondi. Il suo output è costituito da due “trace files”, denominati “out.tr” e “out.nam”. Quando la simulazione termina (dopo i 3 secondi specificati), il programma avvia il programma NAM (se installato), per una comoda visualizzazione grafica della simulazione sullo schermo.

Lo script appena descritto è il seguente:

   # The preamble

set ns [new Simulator]                ;# initialise the simulation

 

# Predefine tracing

set f [open out.tr w]

$ns trace-all $f

set nf [open out.nam w]

$ns namtrace-all $nf

 

# so, we lied. now, we define the topology

#

     n0

#        \

     5Mb\

     2ms \

#           \

           n2 --------- n3

          /     1.5Mb

     5Mb /      10ms

#     2ms /

       /

     n1

#

set n0 [$ns node]

set n1 [$ns node]

set n2 [$ns node]

set n3 [$ns node]

$ns duplex-link $n0 $n2 5Mb 2ms DropTail

$ns duplex-link $n1 $n2 5Mb 2ms DropTail

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

 

# Some agents.

set udp0 [new Agent/UDP]                     ;# A UDP agent

$ns attach-agent $n0 $udp0                   ;# on node $n0

set cbr0 [new Application/Traffic/CBR]       ;# A CBR traffic generator agent

$cbr0 attach-agent $udp0                     ;# attached to the UDP agent

$udp0 set class_ 0                           ;# actually, the default, but...

set null0 [new Agent/Null]                   ;# Its sink

$ns attach-agent $n3 $null0                  ;# on node $n3

$ns connect $udp0 $null0

$ns at 1.0 "$cbr0 start"

puts [$cbr0 set packetSize_]

puts [$cbr0 set interval_]

 

# A FTP over TCP/Tahoe from $n1 to $n3, flowid 2

set tcp [new Agent/TCP]

$tcp set class_ 1

$ns attach-agent $n1 $tcp

set sink [new Agent/TCPSink]

$ns attach-agent $n3 $sink

set ftp [new Application/FTP]      ;# TCP does not generate its own traffic

$ftp attach-agent $tcp

$ns at 1.2 "$ftp start"

$ns connect $tcp $sink

$ns at 1.35 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"

 

# The simulation runs for 3s.

# The simulation comes to an end when the scheduler invokes the finish{}

# procedure below.

# This procedure closes all trace files, and invokes nam visualization on

# one of the trace files.

$ns at 3.0 "finish"

proc finish {} {

global ns f nf

$ns flush-trace

close $f

close $nf

puts "running nam..."

exec nam out.nam &

exit 0

}

# Finally, start the simulation.

$ns run

 

Non si ritiene di dover descrivere dettagliatamente fin da ora cosa fanno le istruzioni appena elencate, dato che ne daremo ampia descrizione nelle pagine seguenti. Del resto, i nomi utilizzati sono abbastanza intuitivi e, insieme ai commenti riportati, danno un’idea sufficiente di cosa fa lo script appena riportato.


Continua con:        Indice       Capitolo 2


Aggiornamento: 14 aprile 2001

home