1 / 26

Esercitazione ns2 N° 1

Esercitazione ns2 N° 1. D.E.I.S. Università di Bologna DEIS Net http://deisnet.deis.unibo.it/. 10Mb ; 10ms ; DropTail. destinazione. sorgente. Esercitazione script1 - Analisi del prodotto Banda  Ritardo.

denise
Download Presentation

Esercitazione ns2 N° 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Esercitazione ns2 N° 1 D.E.I.S. Università di Bologna DEISNet http://deisnet.deis.unibo.it/ IC3N 2000

  2. 10Mb; 10ms; DropTail destinazione sorgente 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

  3. Dimensione ideale della finestra • Wid = 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. 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 / 107 = 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.datnel 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. Risultati di simulazione • Riportando i dati contenuti nel file rate.dat in un graficosi 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. 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. Rate medio stimato ed osservato: grafico 2.6e+006 Rate istantaneo Rate medio 2.4e+006 2.2e+006 Rate (bit/sec) 2e+006 1.8e+006 window size = 6 1.6e+006 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Simulation Time (sec)

  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. Considerazioni (2) • Per sfruttare al massimo la capacità trasmissiva del collegamento devo trasmettere una quantità d’informazione pari al prodotto bandaritardo • 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. 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. 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. 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. Rate osservato con dimensionamento ottimo 1.05e+007 rate 1e+007 9.5e+006 9e+006 8.5e+006 Rate (bit/sec) 8e+006 7.5e+006 7e+006 6.5e+006 window size = 26 6e+006 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Simulation Time (sec)

  24. Rate osservato: confronto 1.2e+007 window size = 6 window size = 26 1e+007 8e+006 Rate (bit/sec) 6e+006 4e+006 2e+006 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Simulation Time (sec)

  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. 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)

More Related