Livello trasporto in Internet



Documenti analoghi
Livello trasporto in Internet

Livello trasporto in Internet

Livello trasporto in Internet

Livello trasporto in Internet

Livello trasporto in Internet

Livello trasporto in Internet

Livello trasporto in Internet

Transmission Control Protocol

Gestione della Connessione in TCP

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

Il livello trasporto Protocolli TCP e UDP


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

Reti di Calcolatori in Tecnologia IP

Introduzione alle Reti Telematiche

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

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

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

Introduzione (parte III)

4 - Il livello di trasporto

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

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

I protocolli UDP e TCP

Parte II: Reti di calcolatori Lezione 13

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

Reti di Telecomunicazione Lezione 8

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

Livello di Trasporto

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

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Transmission Control Protocol (TCP) Andrea Detti

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Introduzione alla rete Internet

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

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

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

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

DA SA Type Data (IP, ARP, etc.) Padding FCS

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

PARTE 1 richiami. SUITE PROTOCOLLI TCP/IP ( I protocolli di Internet )

IL LIVELLO TRASPORTO Protocolli TCP e UDP

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Livello Trasporto Protocolli TCP e UDP

Reti di Calcolatori:

IP Internet Protocol

Strato di Trasporto Multiplazione a 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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Parte II Lezione 5

Livello trasporto in Internet

Informatica per la comunicazione" - lezione 8 -

SUITE PROTOCOLLI TCP/IP ( I protocolli di Internet )

Internetworking TCP/IP: esercizi

I protocolli UDP e TCP

Rete Internet Prova in Itinere Mercoledì 23 Aprile 2008

Standard per Reti a Commutazione di Pacchetto Prof. Vincenzo Auletta Università degli studi di Salerno Laurea in Informatica

Avoidance, Fast Retransmit, And Fast Recovery

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

Reti di Calcolatori. Il software

Introduzione alle applicazioni di rete

Transport Layer & TCP/UDP

L architettura di TCP/IP

ICMP OSI. Internet Protocol Suite. Telnet FTP SMTP SNMP TCP e UDP NFS. Application XDR. Presentation. Session RPC. Transport.

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

Inizializzazione degli Host. BOOTP e DHCP

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

Standard di comunicazione

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

Reti di Telecomunicazione Lezione 6

Approfondimento di Marco Mulas

Sicurezza delle reti. Monga. Il livello di trasporto. Problemi di sicurezza intrinseci. Riassunto. Porte. Sicurezza delle reti.

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Cenni di programmazione distribuita in C++ Mauro Piccolo

12.5 UDP (User Datagram Protocol)

Corso di Sistemi di Elaborazione delle informazioni. Reti di calcolatori 2 a lezione a.a. 2009/2010 Francesco Fontanella

Reti di Calcolatori AA 2009/2010

MODELLI ISO/OSI e TCP/IP

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

Dal protocollo IP ai livelli superiori

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Identità sulla rete protocolli di trasmissione (TCP-IP) L architettura del sistema. Dal livello A al livello B

Corso di Reti di Telecomunicazioni

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Introduzione. Livello applicativo Principi delle applicazioni di rete. Stack protocollare Gerarchia di protocolli Servizi e primitive di servizio 2-1

Protocolli di Comunicazione

Protocolli di Trasporto in reti IP

Livello di trasporto e TSAP

Capitolo 3 Livello di trasporto

Reti di Calcolatori AA 2011/2012

Didattica dell informatica 1

LIVELLO DATA LINK (DI LINEA)

Università degli Studi di Pisa Dipartimento di Informatica. NAT & Firewalls

Il livello di Trasporto del TCP/IP

Il livello Network del TCP/IP. Il protocollo IP (versione 4)

Internet Control Message Protocol ICMP. Struttura di un Messaggio ICMP. Segnalazione degli Errori

CW = 3MSS Base = Y Next = Y + 3MSS

Reti di Comunicazione e Internet

Sicurezza delle reti 1. Lezione IV: Port scanning. Stato di una porta. Port scanning. Mattia Monga. a.a. 2010/11

Telematica di Base. IL Livello di Trasporto TCP

Reti di Telecomunicazione Lezione 7

Il protocollo TCP. Obiettivo. Procedura

Transcript:

Livello trasporto in Internet Gruppo Reti TLC Nome.cognome@polito.it http://www.telematica.polito.it/ INTRODUZIONE ALLE RETI TELEMATICHE - 1 Copyright 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/ org/licenses/nd nc/1 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 - 2 Pag. 1

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) INTRODUZIONE ALLE RETI TELEMATICHE - 3 Mux/demux: le porte Il destinatario finale dei dati non è un host ma un processo in esecuzione sull host L interfaccia tra processi applicativi i 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 - 4 Pag. 2

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 INTRODUZIONE ALLE RETI TELEMATICHE - 5 UDP: formato pacchetto 0 4 8 16 19 24 31 UDP Source Port UDP Message Length UDP Destination Port UDP Checksum DATA INTRODUZIONE ALLE RETI TELEMATICHE - 6 Pag. 3

UDP: applicabilità Utile quando: Si opera su rete locale (affidabilità) Applicazione i mette tutti tti 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 INTRODUZIONE ALLE RETI TELEMATICHE - 7 Protocollo TCP TCP (Transmission Control Protocol ) è un protocollo di livello trasporto orientato alla connessione o e 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 - 8 Pag. 4

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) INTRODUZIONE ALLE RETI TELEMATICHE - 9 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 - 10 Pag. 5

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 INTRODUZIONE ALLE RETI TELEMATICHE - 11 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 ttit variando finestra di trasmissione INTRODUZIONE ALLE RETI TELEMATICHE - 12 Pag. 6

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

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) INTRODUZIONE ALLE RETI TELEMATICHE - 15 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 - 16 Pag. 8

Motivazioni Delayed ACK 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 può svuotare il buffer di ricezione e dichiarare finestre disponibili maggiori Svantaggi Altero il RTT (Round Trip Time) della connessione Modifico crescita finestra (vedi dopo) INTRODUZIONE ALLE RETI TELEMATICHE - 17 ACK inviati Delayed ack: algoritmo 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 - 18 Pag. 9

TCP: generazione ACK [RFC 1122, RFC 2581] Eventi arrivo segmento in ordine, senza vuoti inviato ACK correttamente per tutti segmenti precedenti arrivo segmento in ordine, senza vuoti delayed ACK in attesa Azioni ricevitore TCP delayed ACK. Attendi fino a 200ms max per segmento successivo, altrimenti invia ACK invio immediato di ACK 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 INTRODUZIONE ALLE RETI TELEMATICHE - 19 Controlli di flusso e congestione Generico protocollo a finestra: la velocità di trasmissione in assenza di errori: Finestra di trasmissione i 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 - 20 Pag. 10

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 INTRODUZIONE ALLE RETI TELEMATICHE - 21 Controlli di flusso e congestione TCP impiega un controllo end-to-end basato su controllo della dimensione della finestra del trasmettitore: ttit 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 - 22 Pag. 11

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

TCP: intestazione 0 4 8 16 19 24 32 Source Port Destination Port Sequence Number Acknowledgment Number HLEN Resv Control flag Checksum Window Urgent Pointer Options Padding INTRODUZIONE ALLE RETI TELEMATICHE - 25 TCP intestazione (senza opzioni) 0 15 31 Source Port Number Dest Port Number Sequence Number Acknowledgment Number 20 byte HLEN Resv. flags Receiver window checksum Urgent Pointer 32 bit INTRODUZIONE ALLE RETI TELEMATICHE - 26 Pag. 13

TCP header 0 15 31 Source Port Number Dest Port Number Sequence Number Acknowledgment Number HLEN Resv. flags Receiver window checksum Urgent Pointer Identificano l applicazione che sta inviando e ricevendo dati. Combinati con i rispettivi indirizzi i i IP, identificano in modo univoco una connessione INTRODUZIONE ALLE RETI TELEMATICHE - 27 TCP header 0 15 31 Source Port tnumber Dest tport tnumber Sequence Number Identifica, nello stream di dati, la posizione del primo byte del payload del segmento Acknowledgment Number HLEN Resv. flags Receiver window checksum Urgent Pointer Ogni direzione della connessione procede con numeri di sequenza diversi e indipendenti INTRODUZIONE ALLE RETI TELEMATICHE - 28 Pag. 14

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 INTRODUZIONE ALLE RETI TELEMATICHE - 29 Intestazione TCP 0 15 31 Source Port Number Dest Port Number Sequence Number Acknowledgment Number Numero di sequenza più 1 dell ultimo byte di dati ricevuto correttamente HLEN Resv. checksum flags Receiver window Urgent Pointer Valido solo con ACK flag settato INTRODUZIONE ALLE RETI TELEMATICHE - 30 Pag. 15

Numeri di sequenza e di ack Host A Host B Utente preme tasto C host conferma ricezione di C, ed invia echo host conferma ricezione delle eco C Esempio di sessione telnet tempo INTRODUZIONE ALLE RETI TELEMATICHE - 31 Intestazione TCP 0 15 31 Source Port Number Destination Port Number Sequence Number Lunghezza dell header in parole di 32 bit Acknowledgment Number HLEN Resv. flags Receiver window checksum Urgent Pointer INTRODUZIONE ALLE RETI TELEMATICHE - 32 Pag. 16

Intestazione TCP 0 15 31 Source Port Number Destination Port Number Sequence Number Riservato per usi futuri (ECN) Acknowledgment Number HLEN Resv. flags Receiver window checksum Urgent Pointer INTRODUZIONE ALLE RETI TELEMATICHE - 33 Intestazione TCP Gestione connessione Sei bit di flag, uno o più possono essere settati 0 15 31 insieme: Source Port Number HLEN Resv. Sequence Number Acknowledgment Number checksum flags Destin. Port Number Receiver window Urgent Pointer URG: urgent pointer valido ACK: numero di ack valido PSH: forza passaggio dati applicazione RST: reset connessione SYN: synchronize seq. No. Apertura connessione FIN: chiusura connessione INTRODUZIONE ALLE RETI TELEMATICHE - 34 Pag. 17

IntestazioneTCP 0 15 31 Source Port Number Destiation. Port Number Sequence Number Acknowledgment Number HLEN Resv. flags Receiver window checksum Urgent Pointer Numero di byte, a partire da quello nel campo di ACK, che il ricevitore è disposto ad accettare per controllo di flusso Valore massimo rwnd 65535 byte, a meno che sia usata la window scaling option per finestre grandi INTRODUZIONE ALLE RETI TELEMATICHE - 35 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 18MB 1.8MB 7.4MB 29.6MB Limite superabile con window scale option INTRODUZIONE ALLE RETI TELEMATICHE - 36 Pag. 18

Intestazione TCP 0 15 31 Source Port Number Dest Port Number Sequence Number Acknowledgment Number HLEN Resv. flags Receiver window Checksum obbligatorio su header e dati, più pseudo-header che include indirizzi IP e tipo di protocollo (violazione del principio di stratificazione OSI) checksum Urgent Pointer INTRODUZIONE ALLE RETI TELEMATICHE - 37 Intestazione TCP 0 15 31 Source Port Number Dest Port Number Sequence Number Acknowledgment Number HLEN Resv. flags Receiver window checksum Urgent Pointer 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 - 38 Pag. 19

Intestazione TCP 0 15 31 Source Port Number Destination Port Number Sequence Number Acknowledgment Number HLEN Resv. flags Receiver window 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 checksum Urgent Pointer INTRODUZIONE ALLE RETI TELEMATICHE - 39 TCP options (MSS) 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 - 40 Pag. 20

Apertura di connessione (three-way handshake) source (client) 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 time INTRODUZIONE ALLE RETI TELEMATICHE - 41 Chiusura di connessione (TCP half-close) source (client) destination (server) close da applicazione EOF a livelli alti EOF a livelli alti close da applicazione Timed_wait INTRODUZIONE ALLE RETI TELEMATICHE - 42 Pag. 21

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

Algoritmi di controllo di congestione 4 algoritmi di controllo, introdotti in fasi successive: Slow Start Congestion Avoidance Fast Retransmit Fast Recovery INTRODUZIONE ALLE RETI TELEMATICHE - 45 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 - 46 Pag. 23

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 INTRODUZIONE ALLE RETI TELEMATICHE - 47 Algoritmo di Slow Start Host A Host B RTT tempo INTRODUZIONE ALLE RETI TELEMATICHE - 48 Pag. 24

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 INTRODUZIONE ALLE RETI TELEMATICHE - 49 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 - 50 Pag. 25

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 Riepilogo 20 congestion avoidance cwnd 15 10 ssthresh 5 slow start Tempo [RTT] INTRODUZIONE ALLE RETI TELEMATICHE - 52 Pag. 26

Fast Retransmit e Fast Recovery Ulteriore modifica all algoritmo di Congestion Avoidance proposta p 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) INTRODUZIONE ALLE RETI TELEMATICHE - 53 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). Gruppo Reti - Politecnico di Torino INTRODUZIONE ALLE RETI TELEMATICHE - 54 Pag. 27

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. INTRODUZIONE ALLE RETI TELEMATICHE - 55 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 - 56 Pag. 28

Riepilogo 20 congestion avoidance cwnd 15 10 ssthresh 5 slow start tempo [RTT] INTRODUZIONE ALLE RETI TELEMATICHE - 57 Riepilogo cwnd 20 15 10 congestion avoidance Guadagno rispetto a SS + CA ssthresh 5 slow start tempo [RTT] INTRODUZIONE ALLE RETI TELEMATICHE - 58 Pag. 29

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 Perché AIMD è equo Due connessioni TCP che competono AI, throughput pendenza unitaria MD decrescita proporzionale R Condivisione equa della banda perdita: finestra scende di fattore 2 congestion avoidance: crescita additiva perdita: finestra scende di fattore 2 congestion avoidance: crescita additiva Throughput connessione 1 R INTRODUZIONE ALLE RETI TELEMATICHE - 60 Pag. 30

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 INTRODUZIONE ALLE RETI TELEMATICHE - 61 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 - 62 Pag. 31

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) INTRODUZIONE ALLE RETI TELEMATICHE - 63 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 - 64 Pag. 32