![]()
Monitoraggio
di code (2)
5. Come ottenere dati sulle code usando l'oggetto QueueMonitor
Una volta creato un link tra due nodi con il classico comando tcl :
$ns duplex-link $n1 $n2 1Mb 1ms DropTail
volendo monitorare la coda di uscita del router n1 sul link da n1 a n2 bisogna innanzitutto creare un nuovo oggetto di tipo QueueMonitor con l'istruzione:
set queue1_2 [$ns monitor-queue $n1 $n2 [$ns get-ns-traceall]]
Tale oggetto puņ essere interrogato in vari istanti di tempo per conoscere il valore delle seguenti variabili di stato:
size_ dimensione
della coda in bytes ad un certo istante
pkts_ numero di pacchetti in coda ad un certo
istante
parrivals_ totale dei pacchetti finora arrivati
barrivals_ totale di bytes finora arrivati
pdepartures_ totale dei pacchetti finora partiti
bdepartures_ totale di bytes finora partiti
pdrops_ totale dei pacchetti finora scartati
bdrops_ totale dei bytes finora scartati
Ad esempio per scrivere su 2 distinti trace files i valori dellle variabili pkts_ e pdrops_ in funzione del tempo di simulazione, bisogna prima aprire 2 files in scrittura:
set tf1 [open trace1.tr w]
set tf2 [open trace2.tr w]
Quindi bisogna scrivere una procedura che registri in successivi istanti di campionamento il valore delle variabili cercate nel file opportuno:
proc record {} {
global tf1 tf2 queue1_2 #variabili globali
set ns [Simulator instance]
set time 0.1 #tempo di
campionamento
set lung_coda [$queue1_2 set pkts_]
set drops [$queue1_2 set pdrops_]
set now [$ns now] #tempo attuale
puts $tf1 "$now $lung_coda"
puts $tf2 "$now $drops"
$ns at [expr $now+$time] "record"
#chiamata ricorsiva
}
I dati possono possono essere anche visualizzati con Xgraph mediante una chiamata nella procedura finish del tipo:
exec xgraph trace1.tr -geometry 640x400 &
Vai alla pagina degli esempi
sulle code