Esercitazione 2

37
N. 1 Esercitazione 2 Studio dei meccanismi TCP per il controllo della congestione Analisi del comportamento della finestra in presenza di: Algoritmo di Slow Start Algoritmo di Congestion Avoidance Algoritmi di Fast Retransmit e Fast Recovery Confronto delle prestazioni dei diversi algoritmi Grandezze da monitorare in funzione del tempo andamento della finestra di trasmissione valore della soglia di Slow Start andamento del numero di sequenza dei pacchetti

description

Esercitazione 2. Studio dei meccanismi TCP per il controllo della congestione Analisi del comportamento della finestra in presenza di: Algoritmo di Slow Start Algoritmo di Congestion Avoidance Algoritmi di Fast Retransmit e Fast Recovery Confronto delle prestazioni dei diversi algoritmi - PowerPoint PPT Presentation

Transcript of Esercitazione 2

Page 1: Esercitazione 2

N. 1

Esercitazione 2

• Studio dei meccanismi TCP per il controllo della congestione• Analisi del comportamento della finestra in presenza di:

– Algoritmo di Slow Start– Algoritmo di Congestion Avoidance– Algoritmi di Fast Retransmit e Fast Recovery

• Confronto delle prestazioni dei diversi algoritmi• Grandezze da monitorare in funzione del tempo

– andamento della finestra di trasmissione– valore della soglia di Slow Start– andamento del numero di sequenza dei pacchetti

Page 2: Esercitazione 2

N. 2

Meccanismi di incremento della finestra• Slow start:

– Si applica inizialmente, W cresce di 1 per ogni ACK ricevuto

– cwnd= cwnd + 1;– Consente un incremento rapido della finestra

(esponenziale) e quindi del throughput– L’ampiezza della finestra raddoppia ad ogni RTT

• Congestion avoidance:– Dopo aver raggiunto la soglia, W si incrementa di 1/W

ogni ACK (1 ogni RTT)– Evita di saturare la banda disponibile

• Assenza di Slow Start:– La finestra si apre subito al massimo– cwnd=wnd

Page 3: Esercitazione 2

N. 3

Evento di perdita

• Il TCP riconosce la perdita di pacchetto mediante– Presenza di 3 ACK duplicati– Scadere del time out di ritrasmissione

• Il TCP reagisce diversamente nei due casi– diverso meccanismo di recupero della perdita– diverso aggiornamento del valore della finestra a valle

della perdita– diversa attività della sorgente in trasmissione

Page 4: Esercitazione 2

N. 4

Scenari di rete per la simulazione

• Topologia 1: analisi SS e CA

• Topologia 2: analisi Fast Retr./Fast Rec.

Nodo Sorgente

10Mb; 100ms; DropTail

Nodo Destinazione

Router

256Kb; 100ms; DropTail

1Mb; 10ms; DropTail 55Kb; 10ms; DropTail

Nodo Sorgente

Nodo Destinazione

Router

Page 5: Esercitazione 2

N. 5

Classe Agent/TCP/RFC793edu

• Variabili membro della classe e valori di default

(SS+CA)

(CA)

(SS)

Page 6: Esercitazione 2

N. 6

Script caso 1

• Possibilità di lanciare la simulazione fornendo come parametri di ingresso:– dimensione della coda del router – tipo di algoritmo di gestione della congestione

• Algoritmi selezionabili:– Solo Slow Start– Assenza di Slow Start (valore fisso della finestra)– Solo Congestion Avoidance– Slow Start e Congestion Avoidance

• Valore massimo dell’advertised window = 20

Page 7: Esercitazione 2

N. 7

Script caso 1: step 1

• Istanza al simulatore• Apertura in scrittura dei file per registrare i dati utili

all’analisi della simulazione

set ns [new Simulator]

set trace_nam [open $sim.nam w]

set trace_all [open $sim.tr w]

set trace_swnd [open wnd.$sim w]

set numseq [open sn.$sim w]

set loss [open loss.$sim w]

$ns namtrace-all $trace_nam

$ns trace-all $trace_all

Page 8: Esercitazione 2

N. 8

Script caso 1: step 2

• Definizione della topologia

# nodo di trasmissione

set n0 [$ns node]

# router centrale

set n1 [$ns node]

# nodo di ricezione

set n2 [$ns node]

# caratterizzazione dei link

$ns duplex-link $n0 $n1 10Mb 100ms DropTail

$ns duplex-link $n1 $n2 256Kb 100ms DropTail

Page 9: Esercitazione 2

N. 9

Script caso 1: step 3• Impostazione della dimensione max della coda del router• Monitor del riempimento della coda• Definizione dell’agent• Impostazione della dimensione della finestra• Definizione del tipo di applicazione

$ns queue-limit $n1 $n2 $dim_coda_router1

set qmon [$ns monitor-queue $n1 $n2 1 2]

set tcp1 [$ns create-connection TCP/RFC793edu $n0 TCPSink $n2 1] #equivale a 5 istruzioni singole:

#set tcp1 [new Agent/TCP/RFC793edu]

#set tcp2 [new Agent/TCPSink]

#$ns attach-agent $n0 $tcp1

#$ns attach-agent $n2 $tcp2

#$ns connect $tcp1 $tcp2

$tcp1 set window_ 20

set ftp1 [new Application/FTP]

$ftp1 attach-agent $tcp1

Valore massimo dell’advertised

window

Traffico trasferimento dati

Sfrutta tuttta la banda

Page 10: Esercitazione 2

N. 10

Script caso 1: step 4

• Procedura “standard” per il monitoraggio della finestra

proc sampleswnd { interval } {global ns trace_swnd tcp1set now [$ns now]set curr_cwnd [$tcp1 set cwnd_]set curr_wnd [$tcp1 set window_]if { $curr_wnd < $curr_cwnd } {set swnd $curr_wnd

} else {set swnd $curr_cwnd

}puts $trace_swnd "$now $swnd"$ns at [expr $now + $interval] "sampleswnd $interval"

}

swnd=min(cwnd,wnd)

Page 11: Esercitazione 2

N. 11

Script caso 1: step 5

• Procedura per il monitoraggio della perdita

proc LossMon { interval } {

global ns qmon loss

set now [$ns now]

set curr_loss [$qmon set pdrops_]

puts $loss "$now $curr_loss"

$ns at [expr $now + $interval] "LossMon $interval"

}

Page 12: Esercitazione 2

N. 12

Script caso 1: step 8

• Procedura per il monitoraggio dei numeri di sequenza e del valore di ssthresh

proc altri_tcp_var { step } {

global ns tcp1 numseq

set now [$ns now]

set seqno [$tcp1 set t_seqno_ ]

set sst [$tcp1 set ssthresh_ ]

puts $numseq "$now $seqno $sst"

$ns at [expr $now+$step] "altri_tcp_var $step"

}

Page 13: Esercitazione 2

N. 13

Script caso 1: step 8

• Procedura di fine simulazione

proc finish {} {

global ns loss trace_nam trace_all trace_swnd numseq

$ns flush-trace

close $trace_nam

close $trace_all

close $trace_swnd

close $numseq

close $loss

exit 0

}

Page 14: Esercitazione 2

N. 14

Script caso 1: step 9

• Scheduling della simulazione

$ns at 0.0 "sampleswnd 0.05"

$ns at 0.0 "altri_tcp_var 0.05"

$ns at 0.0 "LossMon 0.05"

$ns at 0.1 "$ftp1 start"

$ns at 12.0 "finish"

$ns run

Page 15: Esercitazione 2

N. 15

Esecuzione dello script 1

Comando per eseguire lo script:

ns es2_acronimo_alg.tcl

0 1 2

Sink

acronimo_alg dim_buffer

ss, noss, ca 18

ssca 8

Page 16: Esercitazione 2

N. 16

Analisi dei risultati (1/2)

Comandi per analizzare i risultati delle simulazioni:

Animazione con NAM

./nam “nome_file.nam”

Grafici con Gnuplot

gnuplot plot “wnd.acronimo_alg” w lplot “sn.acronimo_alg” w lexit

with lines

uscire da gnuplot

Page 17: Esercitazione 2

N. 17

Analisi dei risultati (2/2)

Comandi per salvare il grafico in formato eps:

gnuplotset terminal postscript eps

set output “wnd.acronimo_alg.eps”

plot “wnd.acronimo_alg” w lexit

Per visualizzare il grafico:gv file.eps

Nb: per visualizzare i file .eps in windows occorrono ghostview e ghostscript

Page 18: Esercitazione 2

N. 18

Gnuplot: confronto finestre tra ss e noss

• Aprire gnuplot con wgnuplot.exe nella certella esercitazione

• set style data linespoints

• set yrange[0:28]

• set xrange[0:4]

• set xlabel “tempo di simulazione (s)”

• set ylabel “finestra di trasmissione (segmenti)”

• plot wnd.ss title “con Slow Start”, wnd.noss “Senza

Slow Start”

Page 19: Esercitazione 2

N. 19

Risultati: andamento della finestra

• L’apertura graduale della finestra con lo SS evita la trasmissione contemporanea di un numero di segmenti maggiori di quelli memorizzabili dal buffer

0

2

4

6

8

10

12

14

16

18

20

22

24

26

28

0 0.5 1 1.5 2 2.5 3 3.5 4

Fin

estr

a d

i tra

smis

sio

ne (

segm

ent

i)

tempo (s)

SS: presenteSS: assenteRTO: chiusura della finestra ad 1

Page 20: Esercitazione 2

N. 20

Gnuplot: confronto numero sequenza tra ss e noss

• Aprire gnuplot con wgnuplot.exe nella certella esercitazione

• set style data linespoints

• set yrange[0:100]

• set xrange[0:4]

• set xlabel “tempo di simulazione (s)”

• set ylabel “numero di sequenza dei segmenti”

• plot sn.ss title “con Slow Start”, sn.noss “Senza

Slow Start”

Page 21: Esercitazione 2

N. 21

Risultati: evoluzione del numero di sequenza

• Maggior numero di segmenti nuovi trasmessi in presenza di SS (>90 in 4 sec)

• Senza SS presenza di ritrasmissioni (fasi decrescenti per il sequence number)

0

10

20

30

40

50

60

70

80

90

100

0 0.5 1 1.5 2 2.5 3 3.5 4

Num

ero

di s

eque

nza

tempo (sec)

SS: presenteSS: assente

Page 22: Esercitazione 2

N. 22

Gnuplot: confronto finestre tra ss e noss

• Una volta aperto Gnuplot:

• set style data linespoints

• set yrange[0:28]

• set xrange[0:4]

• set xlabel “tempo di simulazione (s)”

• set ylabel “finestra di trasmissione (segmenti)”

• plot wnd.ss title “con Slow Start”, wnd.noss “Senza

Slow Start”

Page 23: Esercitazione 2

N. 23

Risultati: crescita exp. (SS) e lineare (CA)

• Apertura lenta della finestra nel caso di crescita lineare (utile in prossimità di situazioni di possibile congestione)

• Assenza di perdita in entrambi i casi

0

2

4

6

8

10

12

14

16

18

20

22

24

26

28

0 0.5 1 1.5 2 2.5 3 3.5 4

Fin

est

ra d

i tra

smis

sio

ne

(se

gm

en

ti)

tempo (sec)

SSCA

Page 24: Esercitazione 2

N. 24

Gnuplot: confronto numero sequenza tra ss e noss

• Aprire gnuplot con wgnuplot.exe nella certella esercitazione

• set style data linespoints

• set yrange[0:100]

• set xrange[0:4]

• set xlabel “tempo di simulazione (s)”

• set ylabel “numero di sequenza dei segmenti”

• plot sn.ss title “con Slow Start”, sn.noss “Senza

Slow Start”

Page 25: Esercitazione 2

N. 25

Risultati: evoluzione del numero di sequenza

• Una crescita lenta della finestra comporta una minore efficienza nell’utilizzo della risorse di rete– minor quantità di informazione trasmessa a parità di

tempo di riferimento

0

10

20

30

40

50

60

70

80

90

100

0 0.5 1 1.5 2 2.5 3 3.5 4

Seq

eunc

e N

umbe

r (s

egm

enti)

tempo (sec)

SSCA

Page 26: Esercitazione 2

N. 26

Algoritmo di congestion avoidance

• cwnd<ssthresh: regime di Slow Start.• cwnd>ssthresh: regime di Congestion Avoidance.• Valore iniziale della ssthresh molto alto, nella simulazione

pari al cwnd.• Stima automatica della capacità della rete e aggiornamento

dinamico della ssthresh grazie al meccanismo di perdita del TCP.

• La coda di n1 è scelta molto piccola (8) per “favorire” le perdite nella simulazione.

Page 27: Esercitazione 2

N. 27

Risultati: SS e CA

Slow Startgeometrica

ssthresh

time out

Slow Start

Congestion Avoidancelineare

• t = 2.12 perdita del pacchetto• t = 2.63 arrivo dell’ACK duplicato, il nodo sorgente smette ti trasmettere• t = 3.46 scade il Time-Out, si riprende in regime di Slow Start

0

5

10

15

20

25

0 2 4 6 8 10

Slid

ing

Win

dow

(se

gmen

ts)

Simulation Time (s)

“CWND_ssca"

Page 28: Esercitazione 2

N. 28

Script caso 2

Studio dell’algoritmo di Fast Retransmit

• Parametro d’ingresso: algoritmo • Casi possibili:

– Presenza di Fast Retransmit (fret)– Assenza di Fast Retransmit (nofret)

• Parametri TCP di set-up:– Valore della finestra di trasmissione: 20 segmenti– Dimensione del buffer del router: 19 segmenti (in modo

tale da perdere esattamente un pacchetto).

Page 29: Esercitazione 2

N. 29

Script caso 2: Step 1

• Istanza al simulatore• Apertura in scrittura dei file per registrare i dati utili

all’analisi della simulazione

# Creazione dell’oggetto simulator

set ns [new Simulator]

# Apertura dei file dei risultati in “w”

set trace_nam [open $sim.nam w]

set trace_wnd [open wnd.$sim w]

set trace_seq [open sn.$sim w]

$ns namtrace-all $trace_nam

Page 30: Esercitazione 2

N. 30

Esecuzione dello script 2

Comando per eseguire lo script:

ns es2_acronimo_alg.tcl

acronimo_alg: fret, nofret

Per l’analisi dei risultati vedere la slide relativa dello script 1

0 1 29

Sink

Page 31: Esercitazione 2

N. 31

Risultati: finestra di trasmissione (no-FRet)

• 3.11 sec < t 6.28 sec: – tx di un nuovo pacchetto per ogni ACK relativo ai pacchetti precedente al

perso • t=6.28 sec: rx di un DACK; non si trasmette. Si deve attendere lo scadere del

RTO• t=10.31 sec: scade il RTO, Chiusura della finestra ad 1 ed inizio della fase di SS

0

2

4

6

8

10

12

14

16

18

20

22

0 5 10 15 20 25 30

Fin

estr

a di

tras

mis

sion

e (s

egm

enti)

Tempo (s)

Fast Retr.: AssentePerdita

Wmax=20; Buffer_size=19

Time out

Page 32: Esercitazione 2

N. 32

Risultati: finestra di trasmissione (FRet)

• t=6.61 sec: ricezione del terzo DACK• Ritrasmissione del pacchetto perso: • t=9.1 sec: ricezione del primo ACK non duplicato relativo al

segmento ritrasmesso• Anticipo la reazione del TCP ad un evento di perdita

Perdita

Page 33: Esercitazione 2

N. 33

Risultati: evoluzione del numero di sequenza

L’algoritmo di FRet consente di trasmettere un maggior numero di nuovi pacchetti nello stesso intervallo di tempo

0

25

50

75

100

125

150

175

200

225

250

0 5 10 15 20 25 30

Num

ero

di s

eque

nza

Tempo (sec)

Fast Retr.No Fast Retr.

204197

Page 34: Esercitazione 2

N. 34

Script caso 3

• Studio dell’algoritmo di Fast Recovery (C’è ovviamente anche il Fast Retransmit).

• Si usa la versione FullTCP che implementa il TCP Reno in maniera bidirezionale.

• Si attiva alla ricezione del 3° DACK. 5 passi: 1. ssthresh=cwnd/22. ritrasmetto il segmento “mancante” (fast retransmit)3. cwnd=ssthresh+34. Per ogni DACK ricevuto incremento la finestra di 1 e se

ammesso trasmetto un nuovo segmento5. Alla ricezione dell’ACK per il segmento ritrasmesso:

• cwnd=ssthresh• la sorgente riparte a trasmettere in fase di CA

Page 35: Esercitazione 2

N. 35

Esecuzione dello script 3

Comando per eseguire lo script:

./ns es2_frec.tcl

0 1 29

Sink

Page 36: Esercitazione 2

N. 36

Risultati: finestra di trasmissione (Frec)

• t=1.88 sec: evento di perdita di un pacchetto• 1.88 sec < t < 3.89 sec

– buffer non vuoto (19 pacchetti da smaltire)– ad ogni nuovo ACK si ha la trasmissione di un nuovo pacchetto – il 20° riscontro è il primo DACK

• t=3.89 sec: ricezione di 3 DACK; ritrasmissione fast, aggiornamento finestra

0

5

10

15

20

0 2 4 6 8 10 12 14 16 18 20

Fin

est

ra d

i Tra

smis

sio

ne

(se

gm

en

ti)

Tempo (sec)

Page 37: Esercitazione 2

N. 37

Risultati: finestra di trasmissione (Frec)

• 3.89 sec < t < 5.46 sec: per ogni DACK incremento di 1 il valore della finestra– in tal caso però la sorgente non trasmette, avendo già

trasmesso tutti i pacchetti permessi dal valore della finestra

• t=5.46 sec: ricezione del riscontro del pacchetto ritrasmesso fast– si tratta di un riscontro cumulativo che riscontra anche

tutti i pacchetti ricevuti• Sorgente TCP abilitata a trasmettere con finestra pari al

valore di ssthresh (cwnd/2= 10)