Meccanismi di incremento della finestra

Documenti analoghi
Reti di telecomunicazioni LS Guida agli esercizi TCP con NSCRIPT

Analisi dell avvio del TCP su canali satellitari a larga banda. Candidato Giovanni Verrecchia

Esercitazione ns2 N N 1

Implementazioni tipiche del protocollo TCP

Controllo di congestione

Livello trasporto. Controllo del flusso e della congestione

Controllo della congestione

- 2 - Introduzione a Network Simulator (NS)

Reti di Comunicazione e Internet

- 1 - Introduzione a Network Simulator (NS)

Controllo di Congestione in Reti Internet Docente: Vincenzo Eramo

la trasmissione è regolata solamente dall algoritmo per il controllo del flusso prima di inviare l ACK.

- 5 - Controllo a finestra

Valutazione del TCP con NS2. Gaia Maselli

Soluzione dell esercizio 2 (TCP) dell esame del 16 giugno 2015

Prof. Ing. Maurizio Casoni Dipartimento di Ingegneria dell Informazione Università degli Studi di Modena e Reggio Emilia

Modelli analitici per l analisi delle prestazioni del protocollo TCP

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Livello di trasporto: TCP

Network Simulator (NS)

Gestione della Connessione in TCP

Riferimenti. I protocolli TCP e UDP. Sorgente TCP. Principi Fondamentali. TCP header. Ricevitore TCP

Controllo di flusso in TCP

Livello di trasporto e TSAP

Telematica di Base. IL Livello di Trasporto TCP

Dipartimento di Ingegneria dell Informazione e Metodi Matematici Laboratorio di Reti Prof. Fabio Martignon

Reti di Calcolatori:

Avoidance, Fast Retransmit, And Fast Recovery

- 7 - Tecniche di filtraggio del traffico

Transmission Control Protocol: TCP

Il simulatore di rete ns2

NS-2. Laboratorio di Reti. Ing. Telematica - Università Kore Enna A.A. 2008/2009 Ing. A. Leonardi

Livello trasporto in Internet

TCP: rassegna RFCs: 793, 1122, 1323, 2018, 2581

Gestione delle connessioni TCP

Simulatore di rete NS2

Parte II: Reti di calcolatori Lezione 14 (38)

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30

Homework assignment TCP. Maurizio Bonuccelli. Dipartimento di Informatica Università di Pisa

1. Supponendo che il canale trasmissivo sia esente da errori, si determini il throughput di S1.

Politecnico di Milano Dipar0mento di Ele3ronica e Informazione

Reti di Comunicazione e Internet

Controllo di congestione

Livello trasporto in Internet

Funzioni del protocollo TCP

RETI DI CALCOLATORI Home Assignment protocollo TCP. Prima parte

Agenda. Introduzione al simulatore di rete ns2 (Network Simulator vers. 2) Come installare ns2 su Windows. il linguaggio OTCL

Il simulatore ns2 Network Simulator ver. 2

Livello di trasporto: TCP, controllo flusso, controllo congestione

RTT costante pari a 0.5 secondi; primo RTO= 2*RTT;

Protocollo TCP. politiche di trasmissione e di controllo della congestione

II prova in itinere - Rete Internet (ing. Giovanni Neglia)

Livello trasporto in Internet

Livello trasporto in Internet

R. Cusani - F. Cuomo, Telecomunicazioni - Data link layer: Protocolli, Maggio 2010

1. Esercizi sul Livello di Trasporto

Reti di Calcolatori. Livello Data Link. Il livello di trasporto. 7 - Applicazione. Applicaz.: HTTP, Presentazione

Livello trasporto in Internet

Parte II: Reti di calcolatori Lezione 13

Università di Bergamo Laboratorio di Reti Prof. Fabio Martignon

Reti di Telecomunicazioni 1

Livello trasporto in Internet

Politecnico di Milano Advanced Network Technologies Laboratory. Esercizi sul TCP

Laboratorio di Reti di Comunicazione e Internet (MOD1)

Capitolo 3 - parte 4. Corso Reti ed Applicazioni Mauro Campanella

Fondamenti di Internet e Reti Esercizi sui meccanismi di controllo di errore e sul livello di trasporto

Transmission Control Protocol (TCP) Andrea Detti

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Venerdì 18 Febbraio 2005, ore 9.30

- 4 - La multiplazione statistica nelle reti a pacchetto

Esercizi: Telecomunicazioni parte Reti

Controllo di congestione

Laboratorio di Reti di Comunicazione e Internet (MOD1)

Il livello di trasporto

Laboratorio di Reti di Comunicazione e Internet (MOD1)

Livello di trasporto: meccanismi trasferimento dati affidabile, TCP

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 14 Settembre 2005, ore 9.00

Laboratorio di Fondamenti di Reti di Telecomunicazioni

Rete Internet Prova in Itinere Mercoledì 23 Aprile 2008

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 7 Febbraio 2005, ore 15.00

Prova in itinere - Rete Internet (ing. Giovanni Neglia) Mercoledì 23 Maggio 2007, ore 15.00

Introduzione (parte III)

Il livello di trasporto

Reti di Calcolatori e Laboratorio - Compito del 15 Gennaio 2013

protocollo TCP versioni e implementazioni

TCP over wireless Sistemi Wireless, a.a 2011/2012

Nome e Cognome : Anno di corso Numero di matricola : Como, 7 maggio Quiz a risposta multipla

Livello di trasporto: meccanismi trasferimento dati affidabile

Reti di Calcolatori:

Capitolo 3 - parte 2. Corso Reti ed Applicazioni Mauro Campanella

Fondamenti di Internet e Reti

Università degli Studi di Bergamo

Strato di trasporto. Livello di applicazione SAP. Livello di trasporto. Livello di rete SAP

Prestazioni stop-and-wait. Prestazioni

Prova completa - Rete Internet (ing. Giovanni Neglia) Lunedì 25 Giugno 2007

Rete: classificazione in funzione della distanza fra due generici elementi

Livello di trasporto: meccanismi trasferimento dati affidabile (2), TCP

Mettiamo i puntini sulle i. 5 min. per pensare 5 min. per discutere la soluzione

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Martedì 22 Febbraio 2005, ore 15.00

Lo sniffer. questo sconosciuto! Corso di Reti di Calcolatori Architetture e Servizi A.A. 2010/11. Introduzione allo sniffing TCP

Esercitazione. Livello di Trasporto [Capitolo 3]

Transcript:

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 N. 1

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 N. 2

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 N. 3

Scenari di rete per la simulazione Topologia 1: analisi SS e CA 10Mb; 100ms; DropTail Router 256Kb; 100ms; DropTail Nodo Sorgente Nodo Destinazione Topologia 2: analisi Fast Retr./Fast Rec. Nodo Sorgente 1Mb; 10ms; DropTail Router 55Kb; 10ms; DropTail Nodo Destinazione N. 4

Classe Agent/TCP/RFC793edu Variabili membro della classe e valori di default (SS+CA) (CA) (SS) N. 5

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 N. 6

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

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 N. 8

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 N. 9

Script caso 1: step 4 Procedura standard per il monitoraggio della finestra proc sampleswnd { interval } { global ns trace_swnd tcp1 set now [$ns now] set curr_cwnd [$tcp1 set cwnd_] set curr_wnd [$tcp1 set window_] if { $curr_wnd < $curr_cwnd } { set swnd $curr_wnd swnd=min(cwnd,wnd) } else { set swnd $curr_cwnd } puts $trace_swnd "$now $swnd" $ns at [expr $now + $interval] "sampleswnd $interval" } N. 10

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" } N. 11

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" } N. 12

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 } N. 13

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 N. 14

Esecuzione dello script 1 0 1 2 Sink Comando per eseguire lo script: ns es2_acronimo_alg.tcl acronimo_alg dim_buffer ss, noss, ca 18 ssca 8 N. 15

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 l plot sn.acronimo_alg w l exit with lines uscire da gnuplot N. 16

Analisi dei risultati (2/2) Comandi per salvare il grafico in formato eps: gnuplot set terminal postscript eps set output wnd.acronimo_alg.eps plot wnd.acronimo_alg w l exit Per visualizzare il grafico: gv file.eps Nb: per visualizzare i file.eps in windows occorrono ghostview e ghostscript N. 17

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 N. 18

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 Finestra di trasmissione (segmenti) 28 26 24 22 20 18 16 14 12 10 8 6 4 2 RTO: chiusura della finestra ad 1 0 0 0.5 1 1.5 2 2.5 3 3.5 4 tempo (s) SS: presente SS: assente N. 19

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 N. 20

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) 100 90 80 SS: presente SS: assente Numero di sequenza 70 60 50 40 30 20 10 0 0 0.5 1 1.5 2 2.5 3 3.5 4 tempo (sec) N. 21

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 N. 22

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 Finestra di trasmissione (segmenti) 28 26 24 22 20 18 16 14 12 10 8 6 4 2 0 0 0.5 1 1.5 2 2.5 3 3.5 4 tempo (sec) SS CA N. 23

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 N. 24

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 100 90 SS CA 80 Seqeunce Number (segmenti) 70 60 50 40 30 20 10 0 0 0.5 1 1.5 2 2.5 3 3.5 4 tempo (sec) N. 25

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. N. 26

Risultati: SS e CA CWND_ssca" 25 Sliding Window (segments) 20 15 10 Slow Start geometrica time out ssthresh Congestion Avoidance lineare 5 Slow Start 0 0 2 4 6 8 10 Simulation Time (s) 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 N. 27

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

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 N. 29

Esecuzione dello script 2 Sink 0 1 2 9 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 N. 30

Risultati: finestra di trasmissione (no-fret) Finestra di trasmissione (segmenti) 22 20 18 16 14 12 10 8 6 4 Perdita Time out Fast Retr.: Assente 2 Wmax=20; Buffer_size=19 0 0 5 10 15 20 25 30 Tempo (s) 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 N. 31 di SS

Risultati: finestra di trasmissione (FRet) Perdita 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 N. 32

Risultati: evoluzione del numero di sequenza Numero di sequenza 250 225 200 175 150 125 100 75 50 25 Fast Retr. No Fast Retr. 204 197 0 0 5 10 15 20 25 30 Tempo (sec) L algoritmo di FRet consente di trasmettere un maggior numero di nuovi pacchetti nello stesso intervallo di tempo N. 33

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/2 2. ritrasmetto il segmento mancante (fast retransmit) 3. cwnd=ssthresh+3 4. Per ogni DACK ricevuto incremento la finestra di 1 e se ammesso trasmetto un nuovo segmento 5. Alla ricezione dell ACK per il segmento ritrasmesso: cwnd=ssthresh la sorgente riparte a trasmettere in fase di CA N. 34

Esecuzione dello script 3 Sink 0 1 2 9 Comando per eseguire lo script:./ns es2_frec.tcl N. 35

Risultati: finestra di trasmissione (Frec) 20 Finestra di Trasmissione (segmenti) 15 10 5 0 0 2 4 6 8 10 12 14 16 18 20 t=1.88 sec: evento di perdita di un pacchetto 1.88 sec < t < 3.89 sec Tempo (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 N. 36

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