Livello trasporto in Internet

Documenti analoghi
Livello trasporto in Internet

Livello trasporto in Internet

Livello trasporto in Internet

Livello trasporto in Internet

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

Livello trasporto in Internet

Livello di trasporto: meccanismi trasferimento dati affidabile, TCP

Standard: OSi vs TCP/IP. Il livello di trasporto. TCP e UDP. TCP: Transmission Control Protocol. TCP: funzionalità

Gestione della Connessione in TCP

Il livello trasporto Protocolli TCP e UDP

Introduzione alla rete Internet

4 - Il livello di trasporto

Telematica di Base. IL Livello di Trasporto TCP

Controllo della congestione

Reti di Calcolatori in Tecnologia IP

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

Reti di Comunicazione e Internet

Livello di trasporto e TSAP

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

Transmission Control Protocol

Transmission Control Protocol (TCP) Andrea Detti

I protocolli UDP e TCP


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

Livello trasporto: TCP / UDP. Vittorio Maniezzo Università di Bologna. Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 1/35.

Livello Trasporto. Liv. Applic. Liv. Transport. Transport Entity. Liv. Network. Trasporto

Controllo di Congestione in Reti Internet Docente: Vincenzo Eramo

Introduzione (parte III)

TCP. Servizio di Trasporto Affidabile. Transmission Control Protocol. Caratteristiche di TCP 1

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Strato di Trasporto Multiplazione a livello di trasporto

MODELLO TCP/IP LIVELLO 4 Trasporto. Il protocollo per il controllo della trasmissione. La gestione degli errori di trasmissione

Esercitazione. Livello di Trasporto [Capitolo 3]

Introduzione alle Reti Telematiche

Reti di Calcolatori:

Livello di trasporto: TCP

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Livello di Trasporto

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

4 - Il livello di trasporto

CORSO DI RETI SSIS. Lezione n.3 9 novembre 2005 Laura Ricci

L architettura di TCP/IP

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

RETI DI CALCOLATORI. TCP e UDP: Il Livello di Trasporto Internet

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

Livello di trasporto: TCP, controllo flusso, controllo congestione

Il livello di trasporto

Uso di UDP per client-server UDP. Porte e multiplexing. TCP e UDP. Connessione TCP (o messaggio UDP) Caratteristiche delle porte TCP e UDP

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

Livello Trasporto Protocolli TCP e UDP

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

Parte II: Reti di calcolatori Lezione 12

RETI DI CALCOLATORI - Reti locali

Parte II: Reti di calcolatori Lezione 14 (38)

Le Reti Informatiche

MODELLI ISO/OSI e TCP/IP

Il livello di Trasporto del TCP/IP

Introduzione alla rete Internet

Parte II: Reti di calcolatori Lezione 13

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

TCP/IP: elemento unificante

Controllo di congestione

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

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

Livello trasporto. Servizi del livello trasporto

Internet Parte II Romeo Giuliano 1

Reti di Calcolatori. IL LIVELLO TRASPORTO Protocolli TCP e UDP

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

Avoidance, Fast Retransmit, And Fast Recovery

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche

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

Lo strato di applicazione in Internet

RETI TELEMATICHE Lucidi delle Lezioni Capitolo II

Configurazione delle interfacce di rete

Concetti fondamentali delle reti

Controllo di congestione

Reti di Calcolatori:

Strato trasporto. Per capir meglio la cosa analizziamo il seguente esempio:

Il protocollo IP (Internet Protocol)

Capitolo 3 Livello di trasporto

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 20 Luglio 2005

IP Internet Protocol

Modulo 11. Il livello trasporto ed il protocollo TCP Indice

Capitolo 10 Lo Strato di Trasporto in Internet

autonomous system: un insieme di host e router, che appartengono a una o più sottoreti, sotto la stessa autorità amministrativa.

Protocolli di trasporto in Internet: TCP e UDP

Internet Protocol Versione 4: aspetti generali

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

Introduzione alle reti ed al TCP/IP

Fondamenti di Internet e Reti

Analisi dell avvio del TCP su canali satellitari a larga banda

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

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Martedì 15 Novembre 2005

Modulo 11 Livelli Transport e Application del modello TCP/IP

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

TCP/IP. Principali caratteristiche

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

Rete: classificazione in funzione della distanza fra due generici elementi

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

Transcript:

Copyright Livello trasporto in Internet Gruppo Reti TLC Nome.cognome@polito.it http://www.telematica.polito.it/ Quest opera è protetta dalla licenza Creative Commons NoDerivs-NonCommercial. Per vedere una copia di questa licenza, consultare: http://creativecommons.org/licenses/nd-nc/1.0/ oppure inviare una lettera a: Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. This work is licensed under the Creative Commons NoDerivs- NonCommercial License. To view a copy of this license, visit: http://creativecommons.org/licenses/nd-nc/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. INTRODUZIONE ALLE RETI TELEMATICHE - 1 INTRODUZIONE ALLE RETI TELEMATICHE - 2 Livello trasporto in Internet Due protocolli di trasporto alternativi: TCP e UDP Modelli di servizio diversi TCP orientato alla connessione, affidabile, controllo di flusso e congestione, stateful UDP non connesso, inaffidabile, stateless Caratteristiche comuni: multiplazione e demultiplazione mediante le porte rilevazione errori su header e dati (opzionale in UDP) Mux/demux: le porte Il destinatario finale dei dati non è un host ma un processo in esecuzione sull host L interfaccia tra processi applicativi e strato trasporto è rappresentata da una porta numero intero su 16 bit associazione tra porte e processi processi server pubblici sono associati a porta ben nota, inferiore a 1024 (es: 80 per WWW, 25 per email) processi client usano porta assegnata dinamicamente dal sistema operativo, superiore a 1024 INTRODUZIONE ALLE RETI TELEMATICHE - 3 INTRODUZIONE ALLE RETI TELEMATICHE - 4 UDP: User Datagram Protocol Protocollo di trasporto di tipo non connesso Non fornisce garanzie di consegna Due funzionalità: multiplazione delle informazioni tra le varie applicazioni tramite il concetto di porta checksum (opzionale) per verificare l integrità dei dati Un applicazione che usa UDP deve risolvere problemi di affidabilità, perdita di pacchetti, duplicazione, controllo di sequenza, controllo di flusso, controllo di congestione Standardizzato in RFC 768 UDP: formato pacchetto 0 4 8 16 19 24 31 UDP Source Port UDP Destination Port UDP Message Length UDP Checksum DATA INTRODUZIONE ALLE RETI TELEMATICHE - 5 INTRODUZIONE ALLE RETI TELEMATICHE - 6 Pag. 1

UDP: applicabilità Utile quando: Si opera su rete locale (affidabilità) Applicazione mette tutti i dati in un singolo pacchetto (non apro connessione) Non è importante che tutti i pacchetti arrivino a destinazione Necessità di protocollo veloce Evita overhead apertura connessione Meccanismi di ritrasmissione per affidabilità non utilizzabili per vincoli temporali Non voglio vincoli di velocità di trasmissione Applicazione gestisce meccanismi di ritrasmissione Protocollo TCP TCP (Transmission Control Protocol ) è un protocollo di livello trasporto orientato alla connessione Affidabile: garantisce la consegna corretta ed in sequenza al ricevitore dei pacchetti trasmessi dal trasmettitore Utilizzato da applicativi che richiedono la trasmissione affidabile dell informazione telnet (terminale remoto) ftp (file transfer protocol) smtp (simple mail transfer protocol) http (hypertext transfer protocol) INTRODUZIONE ALLE RETI TELEMATICHE - 7 INTRODUZIONE ALLE RETI TELEMATICHE - 8 TCP: riferimenti bibliografici Richard Stevens: TCP Illustrated, vol.1 RFC 793 (1981) Transmission Control Protocol RFC 1122/1123: (1989) Requirements for Internet Hosts RFC 1323: (1992) TCP Extensions for High Performance (PRP STD) TCP: riferimenti bibliografici RFC 2018: (1996) TCP Selective Acknowledgment Options (PRP STD) RFC 2581: TCP Congestion Control (PRP STD) RFC 2582: The NewReno Modification to TCP's Fast Recovery Algorithm RFC 2883: An Extension to the Selective Acknowledgement (SACK) Option for TCP RFC 2988: Computing TCP's Retransmission Timer (PRP STD) INTRODUZIONE ALLE RETI TELEMATICHE - 9 INTRODUZIONE ALLE RETI TELEMATICHE - 10 TCP Fornisce porte per (de)multiplazione Una entità TCP di un host, quando deve comunicare con un entità TCP di un altro host, crea una connessione fornendo un servizio simile ad un circuito virtuale bidirezionale (full duplex) con controllo di errore e di sequenza Richiede maggiore capacità di elaborazione rispetto a UDP e di mantere informazioni di stato negli host per ogni connessione TCP TCP segmenta e riassembla i dati secondo le sue necessità: tratta stream di dati (byte) non strutturati dai livelli superiori non garantisce nessuna relazione tra il numero di read e quello di write (buffer tra TCP e livello applicazione) Protocollo a finestra per ottenere affidabilità Esegue un controllo di flusso e di congestione regolando la velocità del trasmettitore variando finestra di trasmissione INTRODUZIONE ALLE RETI TELEMATICHE - 11 INTRODUZIONE ALLE RETI TELEMATICHE - 12 Pag. 2

Identificazione di connessioni Una connessione TCP tra due processi è definita dai suoi endpoints (punti terminali), univocamente identificati da un socket: Indirizzi IP host sorgente e host destinazione Numeri di porta TCP host sorgente e host destinazione Nota: TCP o UDP usano porte indipendenti Esempio: connessione TCP tra porta 15320 host 130.192.24.5 e porta 80 host 193.45.3.10 INTRODUZIONE ALLE RETI TELEMATICHE - 13 Trasmettitore TCP Suddivide i dati dell applicazione in segmenti Protocollo a finestra, con ritrasmissione stile GBN (funzionamento complessivo ibrido GBN-SR) Stima RTT Attiva timer quando invia i segmenti: segmenti non confermati allo scadere del timer (timeout - RTO) provocano ritrasmissioni Calcola e trasmette checksum obbligatorio su header e dati Regola velocità con dimensione finestra controllo di flusso e congestione INTRODUZIONE ALLE RETI TELEMATICHE - 14 Ricevitore TCP Riordina segmenti fuori sequenza e scarta segmenti errati consegna stream ordinato e corretto a processo applicativo Invia ACK cumulativi Annuncia spazio libero nel buffer di ricezione per controllare velocità trasmettitore (controllo di flusso) Ricevitore TCP Segmento corretto in sequenza Memorizza (ed eventualmente consegna al livello superiore) ed invia ACK cumulativo Segmento duplicato oppure fuori finestra scarta ed invia ACK relativo all ultimo segmento ricevuto in sequenza Segmento con checksum errato Scarta senza inviare ACK Segmento fuori sequenza in finestra Memorizza (non obbligatorio, ma standard de facto) ed invia ACK relativo ultimo segmento ricevuto (ACK duplicato) INTRODUZIONE ALLE RETI TELEMATICHE - 15 INTRODUZIONE ALLE RETI TELEMATICHE - 16 Delayed ACK Motivazioni Il ricevitore riduce la quantità di ack da inviare (riduzione di traffico di controllo) Posso attendere che l applicazione crei dati in risposta ai dati ricevuti e sfruttare il piggybacking per inviare ack Il ricevitore it può svuotare il buffer di ricezione i e dichiarare finestre disponibili maggiori Svantaggi Altero il RTT (Round Trip Time) della connessione Modifico crescita finestra (vedi dopo) Delayed ack: algoritmo ACK inviati o ogni 2 segmenti ricevuti crescita della finestra a velocità dimezzata o dopo 200ms dalla ricezione di un singolo segmento o in piggybacking in ogni segmento dati Invio immediato dell ACK si ha solo per segmenti fuori sequenza: conferma l ultimo segmento ricevuto in sequenza. origina ACK duplicati INTRODUZIONE ALLE RETI TELEMATICHE - 17 INTRODUZIONE ALLE RETI TELEMATICHE - 18 Pag. 3

TCP: generazione ACK [RFC 1122, RFC 2581] Eventi arrivo segmento in ordine, senza vuoti inviato ACK correttamente per tutti segmenti precedenti Azioni ricevitore TCP delayed ACK. Attendi fino a 200ms max per segmento successivo, altrimenti invia ACK arrivo segmento in ordine, senza vuoti invio i immediato diack delayed ACK in attesa arrivo segmento fuori sequenza con numero maggiore di quello atteso vuoto rilevato arrivo di segmento che riempie vuoti parzialmente o completamente invia ACK duplicato, indicando come numero di sequenza il prossimo byte che si attende di ricevere ACK immediato se il segmento copre parte iniziale della finestra Controlli di flusso e congestione Generico protocollo a finestra: la velocità di trasmissione in assenza di errori: Finestra di trasmissione Round trip time Connessioni corte ottengono bit rate maggiore Per regolare velocità di trasmissione posso agire su round trip time (ritardando invio di ack) genero ritrasmissioni dimensione finestra INTRODUZIONE ALLE RETI TELEMATICHE - 19 INTRODUZIONE ALLE RETI TELEMATICHE - 20 Controlli di flusso e congestione Se cresce finestra oltre valore per cui bit rate in trasmissione supera capacità del collo di bottiglia si memorizzano dati nei buffer lungo il percorso, e cresce round trip time TCP: Velocità di trasmissione di un trasmettitore è regolata da: controllo di flusso: evita che un host veloce saturi un ricevitore lento controllo di congestione: evita che un host aggressivo saturi la rete trasmettendo sempre alla velocità massima consentita dal ricevitore Controlli di flusso e congestione TCP impiega un controllo end-to-end basato su controllo della dimensione della finestra del trasmettitore: controllo di flusso: il ricevitore impone la dimensione massima della finestra del trasmettitore, indicando negli ACK la finestra di ricezione disponibile controllo di congestione: il trasmettitore si autoimpone una dimensione massima della finestra in funzione delle perdite riscontrate per mancato arrivo di ACK INTRODUZIONE ALLE RETI TELEMATICHE - 21 INTRODUZIONE ALLE RETI TELEMATICHE - 22 Controllo di flusso in TCP RX informa esplicitamente TX della memoria disponibile (variabile nel tempo) campo rwnd nell intestazione segmento TCP TX: finestra (dati trasmessi senza avere ricevuto ACK) non eccede mai ultimo valore di finestra disponibile dichiarato da RX Buffer di ricezione INTRODUZIONE ALLE RETI TELEMATICHE - 23 La PDU TCP La PDU di TCP è detta segmento La dimensione dei segmenti può variare dal solo header (ACK, 20 byte) fino ad un valore massimo MSS concordato con il ricevitore e dipendente dalla MTU IP La dimensione del singolo segmento dipende dallo stream dei livelli superiori HEADER 20 B VARIABLE DATA LENGTH (0 - MSS) INTRODUZIONE ALLE RETI TELEMATICHE - 24 Pag. 4

TCP: intestazione TCP intestazione (senza opzioni) 0 4 8 16 19 24 32 Source Port Destination Port HLEN Resv Control flag Window Checksum Urgent Pointer 20 byte Options Padding checksum Urgent Pointer INTRODUZIONE ALLE RETI TELEMATICHE - 25 32 bit INTRODUZIONE ALLE RETI TELEMATICHE - 26 TCP header TCP header Identifica, nello stream di dati, la posizione del primo byte del payload del segmento Identificano l applicazione che sta inviando e ricevendo dati. Combinati con i rispettivi indirizzi IP, identificano in modo univoco una connessione Ogni direzione della connessione procede con numeri di sequenza diversi e indipendenti INTRODUZIONE ALLE RETI TELEMATICHE - 27 INTRODUZIONE ALLE RETI TELEMATICHE - 28 Numerazione segmenti Numero di sequenza su 32 bit In funzione della banda, ho diversi tempi di Wrap Around (torno a numero di sequenza iniziale) Capacità T1 Ethernet T3 FDDI STS-3 STS-12 STS-48 (1.5Mbps) (10Mbps) (45Mbps) (100Mbps) (155Mbps) (622Mbps) (2.5Gbps) Tempo prima di wrap around 6.4 ore 57 minuti 13 minuti 6 minuti 4 minuti 55 secondi 14 secondi Numero di sequenza più 1 dell ultimo byte di dati ricevuto correttamente Valido solo con ACK flag settato INTRODUZIONE ALLE RETI TELEMATICHE - 29 INTRODUZIONE ALLE RETI TELEMATICHE - 30 Pag. 5

Numeri di sequenza e di ack Host A Host B Utente preme tasto C host conferma ricezione di C, C, ed invia echo Source Port Number Destination Port Number Lunghezza dell header in parole di 32 bit host conferma ricezione delle eco C Esempio di sessione telnet tempo checksum Urgent Pointer INTRODUZIONE ALLE RETI TELEMATICHE - 31 INTRODUZIONE ALLE RETI TELEMATICHE - 32 Source Port Number Destination Port Number Riservato per usi futuri (ECN) Gestione connessione Sei bit di flag, uno o più possono essere settati insieme: Source Port Number Destin. Port Number URG: urgent pointer valido ACK: numero di ack valido checksum HLEN Resv. flags Receiver window Urgent Pointer PSH: forza passaggio dati applicazione RST: reset connessione SYN: synchronize seq. No. Apertura connessione FIN: chiusura connessione INTRODUZIONE ALLE RETI TELEMATICHE - 33 INTRODUZIONE ALLE RETI TELEMATICHE - 34 IntestazioneTCP Source Port Number Destiation. Port Number Numero di byte, a partire da quello nel campo di ACK, che il ricevitore it è disposto ad accettare per controllo di flusso Valore massimo rwnd 65535 byte, a meno che sia usata la window scaling option per finestre grandi Finestra necessaria per ottenere velocità massima Massima quantità di dati in transito per RTT: 16-bit rwnd = 64kB max Prodotto banda x ritardo per RTT=100ms Banda T1 Ethernet T3 FDDI STS-3 STS-12 STS-48 (1.5Mbps) (10Mbps) (45Mbps) (100Mbps) (155Mbps) (622Mbps) (2.5Gbps) banda x ritardo 18KB 122KB 549KB 1.2MB 1.8MB 7.4MB 29.6MB Limite superabile con window scale option INTRODUZIONE ALLE RETI TELEMATICHE - 35 INTRODUZIONE ALLE RETI TELEMATICHE - 36 Pag. 6

Checksum obbligatorio su header e dati, più pseudo-header che include indirizzi IP e tipo di protocollo (violazione del principio di stratificazione OSI) Algoritmo di checksum allineamento di header, dati e pseudo-header su 16 bit somma in complemento a 1 di ogni riga si ottiene numero a 32 bit, che si divide in due parti di 16 bit somma in complemento a 1 delle due parti, incluso il riporto inserisco nell header i 16 bit risultanti INTRODUZIONE ALLE RETI TELEMATICHE - 37 INTRODUZIONE ALLE RETI TELEMATICHE - 38 TCP options (MSS) Source Port Number Destination Port Number Puntatore a dati urgenti nel campo dati (es. ctrl-c in una sessione telnet). Offset rispetto al num. di seq. Valido solo se flag URG è settato Estensione dell header (precede i dati) Opzione più usata è MSS (Maximum Segment Size), inviato nel segmento iniziale di una connessione Non è negoziato, ogni lato annuncia MSS che si aspetta di ricevere Se non presente, si usa il default a 536 byte Al massimo: MSS = MTU IP - 20 byte IP -20 byte TCP Se non si usano SACK o altre opzioni INTRODUZIONE ALLE RETI TELEMATICHE - 39 INTRODUZIONE ALLE RETI TELEMATICHE - 40 time source (client) Apertura di connessione (three-way handshake) three-way handshake destination (server) il client esegue una open attiva, mentre il server esegue una open passiva ISN (initial sequence number) è generato casualmente un SYN consuma un numero di sequenza close da applicazione EOF a livelli alti Timed_wait Chiusura di connessione (TCP half-close) source (client) destination (server) EOF a livelli alti close da applicazione INTRODUZIONE ALLE RETI TELEMATICHE - 41 INTRODUZIONE ALLE RETI TELEMATICHE - 42 Pag. 7

TCP: controllo di congestione Inizialmente (<1988) era previsto che TCP controllasse la velocità di emissione utilizzando solo la finestra imposta dal RX Questa soluzione funziona se i due host sono sulla stessa LAN, ma se ho router intermedi e linee lente posso avere congestione Il risultato è una pesante riduzione del throughput delle connessioni TCP, costrette a frequenti ritrasmissioni INTRODUZIONE ALLE RETI TELEMATICHE - 43 Elementi del controllo di congestione Oltre alla finestra imposta dal RX (rwnd), il TX si autoimpone una congestion window (cwnd), regolata da 4 algoritmi Nota: la descrizione degli algoritmi assume che ogni pacchetto sia di dimensione pari a 1 MSS Il TX può inviare fino a n segmenti TCP con n = min (rwnd, cwnd) Esiste una soglia (ssthresh) sulla dimensione della cwnd che ne determina la legge di variazione INTRODUZIONE ALLE RETI TELEMATICHE - 44 Algoritmi di controllo di congestione 4 algoritmi di controllo, introdotti in fasi successive: Slow Start Congestion Avoidance Fast Retransmit Fast Recovery Slow Start e Congestion Avoidance La scelta dell algoritmo dipende dalle variabili ssthresh e cwnd: Slow start se ssthresh > cwnd Congestion Avoidance se ssthresh < cwnd se ssthresh = cwnd, si esegue, indifferentemente, l uno o l altro algoritmo INTRODUZIONE ALLE RETI TELEMATICHE - 45 INTRODUZIONE ALLE RETI TELEMATICHE - 46 Algoritmo di Slow Start Principi La velocità di trasmissione di nuovi segmenti si adatta al rate di ricezione degli ACK Il TX prova la capacità della rete fino a perdere All inizio della connessione, si ha cwnd = 1 segmento di dimensione massima (cwnd=mss) Ad ogni ACK ricevuto, cwnd = cwnd + 1 La crescita risultante è esponenziale Algoritmo di Slow Start RTT Host A Host B tempo INTRODUZIONE ALLE RETI TELEMATICHE - 47 INTRODUZIONE ALLE RETI TELEMATICHE - 48 Pag. 8

Algoritmo di Congestion Avoidance Principi interviene quando cwnd>ssthresh rallenta la crescita della cwnd Ad ogni ack ricevuto in sequenza cwnd = cwnd + 1/ cwnd oppure cwnd = cwnd + MSS*MSS/ cwnd (in byte) La crescita risultante è lineare cwnd cresce di 1 MSS per ogni RTT Se si perde un segmento vuol dire che il throughput del TX ha superato la banda disponibile ovvero la rete è in congestione (probabilmente) Principio controllo di congestione: Reset della finestra (cwnd=1) Recupero veloce della velocità perduta: (ssthresh=max(flightsize/2,2), dove FlightSize=min(cwdn,rwnd) Il TX ritrasmette il segmento mancante se non riceve l ACK relativo entro un timeout (RTO), poi riparte in slow start INTRODUZIONE ALLE RETI TELEMATICHE - 49 INTRODUZIONE ALLE RETI TELEMATICHE - 50 Riepilogo Riepilogo SLOW START CONGESTION AVOIDANCE 1) cwnd = 1 MSS ssthresh = infinito 2) cwnd = cwnd + 1 ad ogni ack finché cwnd > ssthresh (goto 3) se ho un RTO: ssthresh = min(cwnd,rwnd)/2 cwnd = 1 goto 2) 3) cwnd = cwnd + 1/ cwnd ad ogni ack se ho un RTO: ssthresh = min(cwnd,rwnd)/2 cwnd = 1 goto 2) INTRODUZIONE ALLE RETI TELEMATICHE - 51 cwnd 20 15 10 5 congestion avoidance slow start ssthresh Tempo [RTT] INTRODUZIONE ALLE RETI TELEMATICHE - 52 Fast Retransmit e Fast Recovery Ulteriore modifica all algoritmo di Congestion Avoidance proposta nel 1990 (RFC 2001, Stevens) Permette la ritrasmissione immediata di segmenti singoli andati perduti (Fast Retransmit) e per evitare di ritornare nella fase di Slow Start quando ad essere perso è un solo segmento (Fast Recovery) Fast Retransmit Osservo gli ack duplicati: se sono uno o due, può essere solo uno scambio di segmenti se sono tre o più è una forte indicazione di segmento perso (ma alcuni segmenti arrivano!) Se sono ricevuti tre ack duplicati, ritrasmetto il segmento mancante senza aspettare la scadenza del timeout (Fast Retransmit). INTRODUZIONE ALLE RETI TELEMATICHE - 53 Gruppo Reti - Politecnico di Torino INTRODUZIONE ALLE RETI TELEMATICHE - 54 Pag. 9

Fast Recovery Eseguo congestion avoidance e non slow start dopo fast retransmit Quando ricevo il 3 ack duplicato consecutivo: ssthresh = min(cwnd,rwnd)/2 ritrasmetto il segmento mancante cwnd=ssthresh+3 Ad ogni ack duplicato successivo: cwnd=cwnd+1 abilita la trasmissione anche durante il F.R. Fast Recovery Quando arriva un ack che conferma (anche in modo implicito) il segmento ritrasmesso: cwnd=ssthresh cwnd=cwnd+1/cwnd per ogni ack in sequenza (crescita alla Congestion Avoidance) INTRODUZIONE ALLE RETI TELEMATICHE - 55 INTRODUZIONE ALLE RETI TELEMATICHE - 56 Riepilogo Riepilogo cwnd 20 congestion avoidance 15 10 ssthresh cwnd 20 congestion avoidance 15 10 Guadagno rispetto a SS + CA ssthresh 5 slow start 5 slow start tempo [RTT] tempo [RTT] INTRODUZIONE ALLE RETI TELEMATICHE - 57 INTRODUZIONE ALLE RETI TELEMATICHE - 58 Equità di TCP L algoritmo di controllo della congestione TCP è di tipo AIMD (additive increase, multiplicative decrease) la finestra cresce di 1 MSS per RTT la finestra decresce di un fattore 2 a fronte di perdita di segmenti Fairness: se N connessioni TCP condividono un canale collo di bottiglia, ciascuna dovrebbe ottenere 1/N della capacità del canale (a pari RTT) INTRODUZIONE ALLE RETI TELEMATICHE - 59 R Perché AIMD è equo Due connessioni TCP che competono AI, throughput pendenza unitaria MD decrescita proporzionale Throughput connessione 1 Condivisione equa della banda perdita: finestra scende di fattore 2 congestion avoidance: crescita additiva perdita: finestra scende di fattore 2 congestion avoidance: crescita additiva R INTRODUZIONE ALLE RETI TELEMATICHE - 60 Pag. 10

Determinazione del timeout Il valore del timeout è essenziale per un buon funzionamento di TCP Non può essere inferiore a 200ms (delayed ack e granularità del clock del trasmettitore) È funzione del round-trip time della connessione, che varia al variare del traffico e della congestione di rete Occorre quindi una stima del round-trip time per determinare il timeout da impostare Determinazione del timeout Per ogni segmento calcolo la differenza di tempo M tra il suo invio e la ricezione di un ack riferito al pacchetto M è misura di RTT istantaneo La stima del round-trip time (RTT) viene mediata da un coefficiente α: RTT=α*RTT+(1-α)*M (α=0.9) Il timeout (RTO) viene calcolato come: RTO= β *RTT (β >1) INTRODUZIONE ALLE RETI TELEMATICHE - 61 INTRODUZIONE ALLE RETI TELEMATICHE - 62 Note su stima RTT L algoritmo di stima è valido, ma sempre limitato dalla granularità del timer (10ms su moderni Unix, 200-500ms su sistemi più vecchi) Il RTT può essere comparabile (RTT=100-200ms per connessioni internazionali) L accuratezza della stima del RTT è fondamentale per il controllo di congestione (evita ritrasmissioni inutili) Problema sul timeout Valore iniziale? Mancando stima del RTT, scelgo valore grande per essere conservativo timeout iniziale pari ad 3s Connessioni TCP soffrono molto la perdita del primo segmento INTRODUZIONE ALLE RETI TELEMATICHE - 63 INTRODUZIONE ALLE RETI TELEMATICHE - 64 Pag. 11