Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoRachele Verde Modificato 9 anni fa
1
IC3N 2000 N. 1 Esercitazione ns2 N° 1 D.E.I.S. Università di Bologna DEISNet http://deisnet.deis.unibo.it/
2
N. 2 Esercitazione script1 - Analisi del prodotto Banda Ritardo nome e percorso del file: C:\cygwin\ns-allinone-2.29\ns- 2.29\esercitazione\es1_script1.tcl Analisi del meccanismo a finestra del TCP ed effetti del prodotto BANDA - RITARDO Topologia di rete considerata –Link bidirezionale Capacità: 10Mb Ritardo: 10ms Politica di gestione della coda: DropTail –2 nodi: sorgente e destinazione –Protocollo di trasporto: TCP dimensione della sliding window: 6 –Sorgente: CBR (Constant Bit Rate) a 10 Mb/s sorgente destinazione 10Mb; 10ms; DropTail
3
N. 3 Dimensione ideale della finestra W id = ritardo (sec) banda (bit/sec) Rappresenta la quantità di informazione che utilizza al 100% la tratta tra trasmettitore e ricevitore Se W < Wid: si spreca banda Se W > Wid: è necessario accodare nei router intermedi e cresce il ritardo e quindi potenzialmente anche la perdita Massimo throughput ottenibile: W/RTT dove RTT è il Round Trip Time
4
N. 4 Stima del rate medio Stima approssimata del rate medio –parametri noti: Dimensione della finestra: 6 segmenti Dimensione di ogni segmento: 1000 bytes Tempo di propagazione sul link: 10 msec Tempo di trasmissione del pacchetto: 1000 8 / 10 7 = 0.8 msec Calcolo approssimato del RTT –si considerano trascurabili il tempo per la creazione dell’ACK da parte del ricevitore ed il tempo di trasmissione dell’ACK –RTT = (10 2 + 0.8) 10 -3 = 20.8 msec Calcolo del rate medio stimato –Rate = Wnd / RTT = 1000 8 6 / (20.8 10 -3 ) = 2.307 Mbit/sec
5
N. 5 Creazione dello script Otcl: step 1 Definizione delle variabili globali necessarie per monitorare le grandezze utili alla valutazione del rate di trasmissione # Inizializzazione delle variabili per calcolare e registrare # su un file il rate di trasmissione # numero di byte registrati dall’oggetto monitor set NumBytePrec1 0 # istante corrente di monitoraggio set TimePrec1 0
6
N. 6 Creazione dello script Otcl: step 2 Creazione dell’oggetto Simulator che comprende le funzionalità del simulatore ns2 Apertura in scrittura del file per l’animazione (out.nam) e del file su cui saranno registrati i dati utili a produrre le valutazioni richieste (rate fra i due nodi) (rate.dat) Attribuzione di un colore ai pacchetti del flusso 1 set ns [new Simulator] # apertura file set nam_file [open out.nam w] $ns namtrace-all $nam_file set rate_file [open rate.dat w] # colorazione dei pacchetti del flusso 1 $ns color 1 Red
7
N. 7 Creazione dello script Otcl: step 3 Creazione della topologia: 2 nodi e link di collegamento fra essi in base alle specifiche # Nodo sorgente set src_node [$ns node] # Nodo destinazione set dst_node [$ns node] # Link bidirezionale fra i 2 nodi $ns duplex-link $src_node $dst_node 10Mb 10ms DropTail
8
N. 8 Creazione dello script Otcl: step 4 Definizione degli elementi che generano e raccolgono il traffico nella rete: agent Agent di riferimento: TCP 793edu –versione del TCP descritta nella RFC 793 –versione Tahoe del protocollo TCP e permette di decidere sull’attivazione dei diversi algoritmi del TCP, come slow- start, fast-recovery,... # Agent in nodo sorgente set src_agent [new Agent/TCP/RFC793edu] # Agent in nodo destinazione set dst_agent [new Agent/TCPSink] # Collegamenti Agent/nodo $ns attach-agent $src_node $src_agent $ns attach-agent $dst_node $dst_agent # Connessione fra i due agent $ns connect $src_agent $dst_agent $src_agent set window_ 6 #rappresenta la rwnd definita dal ricevitore all’inizio della trasmissione
9
N. 9 Creazione dello script Otcl: step 5 Definizione dell’oggetto application per la generazione del traffico d’utente Sorgente CBR # Creazione dell’oggetto Application/Traffic/CBR (Constant Bit Rate e # associazione alla variabile src_traffic. set src_traffic [new Application/Traffic/CBR] # Attribuzione del rate $src_traffic set rate_ 10Mb # Specifica di quale agent riceve i dati dall’applicazione $src_traffic attach-agent $src_agent
10
N. 10 Creazione dello script Otcl: step 6 Monitoraggio del rate del traffico generato: –creazione di un oggetto QueueMonitor associato alla variabile monitor inserito fra nodo sorg. e nodo dest. set monitor [$ns monitor-queue $src_node $dst_node [$ns get-ns- traceall]] Si noti che in ns le code sono implementate sui link
11
N. 11 Creazione dello script Otcl: step 7 Creazione della procedura per monitorare e registrare il rate durante la simulazione sul file precedentemente aperto proc record {} { global rate_file monitor ns global NumBytePrec1 TimePrec1 set now [$ns now] set Bytes [$monitor set barrivals_] set time 0.1 set DeltaByte [expr $Bytes-$NumBytePrec1] set DeltaTime [expr $now-$TimePrec1] if { $DeltaTime == 0 } then { $ns at [expr $now+$time] "record" return } Definizione delle variabili globali: sono il puntatore al rate_file, all’oggetto monitor che dà le info da scrivere, all’oggetto ns, alle due variabili appoggio Registrazione del tempo corrente (now) e del numero di byte registrati dall’oggetto monitor (Bytes) DeltaByte: N° di byte nell’intervallo considerato DeltaTime: evita divisione per zero nella prima chiamata Gestione eventuale divisione per zero
12
N. 12 Creazione dello script Otcl: step 8 # Stampa dell’istante di monitoraggio e del corrispondente # valore del rate puts $rate_file "$now [expr $DeltaByte/$DeltaTime*8]" set NumBytePrec1 $Bytes set TimePrec1 $now $ns at [expr $now+$time] "record" } Aggiornamento delle variabili e nuova chiamata alla procedura
13
N. 13 Creazione dello script Otcl: step 9 Creazione della procedura di fine simulazione per la chiusura di tutti i file e schedulazione degli eventi proc finish {} { global ns nam_file rate_file $ns flush-trace close $nam_file close $rate_file exec nam out.nam & exit 0 } # Indicazioni per la gestione degli eventi $ns at 0.0 "$src_traffic start" $ns at 0.0 "record" $ns at 5.0 "finish" $ns run
14
N. 14 Creazione dello script Otcl: step 10 lo script con Lo script è salvato come: es1_script1. tcl Lanciare la simulazione con il comando:./ns es1_script1. tcl La simulazione produce 2 risultati: –il file rate.dat nel quale è memorizzato il valore del rate misurato durante la simulazione. Tale file verrà utilizzato dal programma per produrre i grafici delle curve del rate di trasmissione (es.: gnuplot) il file rate.dat è un file di testo con due colonne: prima colonna: istante di campionamento seconda colonna: valore campionato –il file out.nam utilizzato da NAM (se richiesto)
15
N. 15 Risultati di simulazione Riportando i dati contenuti nel file rate.dat in un grafico si otterrà l’andamento temporale del rate di trasmissione. Il rate medio sarà caratterizzato da una certa variabilità: durante il periodo di riferimento saranno presenti degli intervalli temporali in cui il trasmettitore si pone in attesa dei riscontri. –Rappresentazione del rate medio stimato nello stesso grafico al fine di un confronto con il rate osservato.
16
N. 16 Gnuplot: esempio per grafico cnwd_size=6 Lanciare gnuplot cliccando sull’eseguibile wgnuplot.exe situato nella cartella: C:\cygwin\ns-allinone-2.29\ns2.29\esercitazione. Dopo aver lanciato gnuplot digitare le seguenti istruzioni: g(x)=2.307e6 set data style linespoints set xrange[0:5] set yrange[1.6e6:2.6e6] set xlabel "Tempo (s)" set ylabel "Rate (bit/s)" plot "rate6.dat" title "cwnd=6", g(x) title "rate medio"
17
N. 17 Rate medio stimato ed osservato: grafico 1.6e+006 1.8e+006 2e+006 2.2e+006 2.4e+006 2.6e+006 00.511.522.533.544.55 Rate (bit/sec) Simulation Time (sec) window size = 6 Rate medio Rate istantaneo
18
N. 18 Considerazioni (1) L’andamento del rate medio osservato oscilla attorno al valore del rate medio stimato a causa di periodi più o meno lunghi in cui il Tx è in attesa di riscontri. Rate medio stimato pari a 2.307 Mbit/sec Capacità trasmissiva pari a 10 Mbit/sec Si ha una sotto-utilizzazione del collegamento dovuta ai periodi di attesa dei riscontri da parte del trasmettitore Effetto del prodotto banda-ritardo –quantità di informazione che utilizza al 100% la tratta tra trasmettitore e ricevitore –maggiore è il rapporto Banda-Ritardo, maggiore sarà la quantità informazione trasmessa nel collegamento tra sorgente e destinatario.
19
N. 19 Considerazioni (2) Per sfruttare al massimo la capacità trasmissiva del collegamento devo trasmettere una quantità d’informazione pari al prodotto bandaritardo Rate(medio)=Wnd(bit)/RTT(s) –Fisso Rate a 10Mbit/sec; –RTT noto –Trovo Wnd ottimo In base alle specifiche –RTT = 2*(tempo di propagazione) + tempo di trasmissione = 10 ms * 2 + 0.8 = 20.8 ms –numero massimo di bit che può contenere contemporaneamente il collegamento pari a: Banda × RTT 10 Mbit/sec 20.8 msec = 208 Kbit = 26 Kbyte Possibilità di determinare il dimensionamento ottimo della finestra di ricezione per il controllo di flusso del TCP
20
N. 20 Dimensionamento Ottimo Dimensionamento ottimo: valore da assegnare alla dimensione della finestra tale da non produrre sotto- utilizzazione del collegamento Dimensione dei pacchetti: 1000 bytes Massimo numero di bit che può contenere contemporaneamente il collegamento: 26 kbyte Dimensione minima della finestra che permette l’utilizzo ottimale del link: 26 Kbyte / 1000 byte per pacchetto = 26 pacchetti
21
N. 21 Analisi del dimensionamento ottimo con ns Impostazione del nuovo valore della dimensione della finestra nello script Otcl –Sostituire: $src_agent set window_ 6 –con: $src_agent set window_ 26 –Oppure modificare nel grafico i parametri relativi all’agent TCP e salvare di nuovo lo script e sostituire 26 con 6 sia nei parametri sia nelle definizioni dei file di uscita: –set rate_file [open rate6.dat w] –set trace_file [open out6.tr w] Nuova simulazione con il valore aggiornato della dimensione della finestra Guardando l’andamento del rate si potrà riscontrare che utilizzando il valore ottimo della finestra è possibile utilizzare a pieno il collegamento
22
N. 22 Gnuplot: esempio per grafico cnwd_size=26 Dopo aver lanciato gnuplot digitare le seguenti istruzioni: set data style linespoints set xrange[0:5] set yrange[1.6e6:2.6e6] set xlabel "Tempo (s)" set ylabel "Rate (bit/s)" plot "rate6.dat" title "cwnd=6", rate26.dat title “cwnd=26"
23
N. 23 Rate osservato con dimensionamento ottimo 6e+006 6.5e+006 7e+006 7.5e+006 8e+006 8.5e+006 9e+006 9.5e+006 1e+007 1.05e+007 00.511.522.533.544.55 Rate (bit/sec) Simulation Time (sec) rate window size = 26
24
N. 24 Rate osservato: confronto 2e+006 4e+006 6e+006 8e+006 1e+007 1.2e+007 00.511.522.533.544.55 Rate (bit/sec) Simulation Time (sec) window size = 6 window size = 26
25
N. 25 Grafici dei risultati: gnuplot Gnuplot è un programma per la realizzazione dei grafici a partire da file di dati in cui sono registrati i risultati (prodotto Gnu; SO LINUX) –Da linea di comando: gnuplot –Vincolo: il file dati dev’essere organizzato in colonne separate da una tabulazione –Prima colonna interpretata come i dati rappresentati sull’asse x –Seconda colonna e successive interpretati come i dati rappresentativi dell’asse y –Senza nessuna indicazione gnuplot assume come dati da plottare sull’asse x e sull’asse y i dati elencati nella prima e nella seconda colonna rispettivamente
26
N. 26 Comandi gnuplot set data style lines –Grafica i dati come linee set xrange[0:1] –Imposta l’intervallo dell’asse x (tra 0 e 10 in questo caso). Analogamente per l’assey set xlabel “tempo di simulazione” –Imposta l’etichetta dell’asse x. analogamente per l’asse y plot “nome_file” –Visualizza il grafico prendendo i dati dal file nome_file.est save “nome.plt” –Salva l’ultimo grafico visualizzato, con tutte le impostazioni in un file.ptl load “nome.plt” –Rivisualizza il file precedentemente impostato e memorizzato (senza bisogno di ripetere il settaggio)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.