Funzioni del protocollo TCP -...

40
1 Funzioni del protocollo TCP Prof. Ing. Carla Raffaelli Anno accademico 2005-2006 Il TCP Il TCP e’ un protocollo orientato alla connessione utilizzato per gestire il trasferimento end-to-end di informazioni e renderlo affidabile Schema di riferimento applicazione applicazione Send buffer Receive buffer TCP TCP byte byte segmenti

Transcript of Funzioni del protocollo TCP -...

Page 1: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

1

Funzioni del protocollo TCP

Prof. Ing. Carla RaffaelliAnno accademico 2005-2006

Il TCP

• Il TCP e’ un protocollo orientato alla connessione utilizzato per gestire il trasferimento end-to-end di informazioni e renderlo affidabile

• Schema di riferimento

applicazione applicazione

Send buffer Receive buffer

TCP TCP

byte byte

segmenti

Page 2: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

2

La famiglia dei protocolli TCP/IP

Applicazioni

e-mail,ftp,telnet,www…

TCP UDP

IPICMPARP

RARP

IEEE 802-Ethernet-X25-Aloha ecc.

Collegamento fisico

Protocolli applicativi

• Sono i protocolli utilizzati dalle applicazioni per scambiarsi informazioni

• Esempi: HTTP per il web, SMTP per la posta elettronica

• Hanno in comune alcune caratteristiche generali

Page 3: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

3

Elementi di un protocollo applicativo

• Tipi di messaggio che vengono scambiati– Es: richieste e risposte

• Sintassi dei vari tipi di messaggio• Significato dell’informazione nei campi (semantica)• Regole che governano lo scambio dei messaggi

Protocolli standard

• I protocolli dello strato di applicazione per Internet vengono definiti nelle RFC in ambito IETF

• Se un protocollo e’ definito nella RFC chiunque si conforma ad esso e’ in grado di comunicare indipendentemente dalla realizzazione della applicazione di rete– Concetto di sistema aperto

• Esistono protocolli applicativi proprietari– Sistemi chiusi

Page 4: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

4

Caratteristiche dei protocolli applicativi

• Un protocollo applicativo ha in generale due componenti:– Client e server– Il lato client di un terminale comunica con il lato server su un altro

terminale• Es: browser web e server web

– Un programma SERVER esegue precise funzioni ed attende una richiesta di connessione da un client

– Un programma CLIENT vuole usufruire di un certo servizio e instaura una connessione col server

• Per trasferire o ricevere informazione dalla rete il processo applicativo utilizza le API (Application Programming Interface) o socket che vengono viste come porte

Architettura del protocollo

Processo

API

Strato di trasporto

Processo

API

Strato di trasportoTCP

Protocollo applicativo

INTERNET

Page 5: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

5

Indirizzamento dei processi

• Il processo trasmittente deve poter identificare il processo ricevente

• Si usa una coppia di informazioni– Indirizzo IP + numero di porta

• Ai protocolli applicativi piu’ diffusi vengono assegnati numeri di porta standard (RFC 1700)– Well known port: porta 80 HTTP, porta 25 SMTP

L’interfaccia Socket

• Gli standard non specificano come gli applicativi debbano interagire con i protocolli

• L’interfaccia, che non è standardizzata e dipende dall’implementazione del sistema operativo, viene comunemente chiamata Socket

Page 6: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

6

Interfaccia Socket in Unix-Linux

• Un programma applicativo interagisce con il sistema operativo mediante system calls:- open: apre la socket- read: legge dalla socket- write: scrive sulla socket- close: chiude la socket

Uso delle socket

• Al momento della connessione è necessario un accordo tra i due host per stabilire i numeri di porta da utilizzare

• L’host che inizia la connessione deve comunicare a quale porta si vuole connettere sul server e qual è il numero di porta da lui utilizzato localmente

• Il numero di porta a cui connettersi deve essere in qualche modo noto a priori all’host sorgente (welcome port o well known port)

Page 7: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

7

Connessione client-server: welcome port

• Un processo client, avviato nell’host sorgente, tenta di connettersi ad un processo server (demone) nell’host destinazione per ottenere un servizio– A questo scopo e’ presente sul server la welcome socket in

attesa su una porta definita in fase di configurazione del server

• Il processo server crea successivamente una socketdi connessione identificato da quattro valori:– (1) numero di porta sorgente del segmento, (2) indirizzo IP

del terminale sorgente, (3) numero di porta destinazione assegnata, (4) proprio indirizzo IP

Well-known port (esempi)

NumeroNumero NomeNome Tipo di servizioTipo di servizio21 FTP trasferimento file 22 SSH terminale virtuale criptato23 TELNET terminale virtuale in chiaro25 SMTP invio posta elettronica53 DOMAIN server DNS80 HTTP server web109 POP ricezione posta elettronica

Le porte da 0 a 255 sono riservate e si attribuiscono ai vari demoni dei numeri di porta prefissati, uguali per qualunque host di Internet. Questi numeri riservati danno vita alle well-known port.

Page 8: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

8

Attivazione delle porte

• Il server deve essere in attesa di ricevere sulla porta a cui ilclient intende connettersi– Passive open: il server associa l’indirizzo IP alla porta e aspetta

• Il client effettua active open per comunicare con il server: questa operazione si completa dopo che la procedura TCP si e’ completata

• Una volta stabilita la connessione il processo applicativo invoca le funzioni di send e receive sulla porta

Ancora sulle API/socket

• Ogni protocollo fornisce un insieme di servizi e l’API fornisce la sintassi con cui i servizi possono essere richiamati da un sistema operativo

• L’interfaccia socket fornisce una sintassi generale per diversi tipi di servizi ed e’ quindi utilizzabile con diversi protocolli

• In pratica la socket e’ il punto in cui una applicazione locale si attacca alla rete

• La definizione della interfaccia socket consiste nella definizione di come creare la socket, di come inviare e ricevere messaggi attraverso la socket e di come distruggere la socket

• L’interfaccia socket e’ stata originariamente definita nel sistema operativo UNIX

Page 9: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

9

Passo 1: creazione di una socket

• int socket(int domain,int type, int protocol)– Domain: indica la famiglia di protocolli che si utilizza– Type indica il tipo di comunicazione: se orientata al byte o

al bit …– Protocol indica lo specifico protocollo utilizzato

• ES:– int socket (PF_INET,SOCK_STREAM, UNSPEC)– Indica una socket per protocolli della famiglia Internet

orientati al carattere: questa coppia implica TCP– Il valore di ritorno e’ l’identificatore della socket da utilizzare

Passo 2: server

• int bind( int socket, struct sockaddr *address, int addr_len)– Collega la socket ad un indirizzo– address e’ una struttura dati che include sia l’indirizzo IP del server che

che il numero di porta TCP• int listen(int socket, int backlog)

– Definisce quante connessioni possono essere accettate sulla socket• int accept(int socket, struct sockaddr *address, int addr_len

– Realizza la passive open– Non ritorna valore fino a che un utente remoto non stabilisce una

connessione– In presenza di connessione restituisce un valore di socket nuovo e

l’indirizzo remoto– La vecchia socket continua a servire da passive open

Page 10: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

10

Passo 2: client

• Si realizza la active open• int connect(int socket, struct sock_addr address, int

addr_len)– Address contiene l’indirizzo remoto del server– La porta del client viene scelta tra quelle disponibili dal

sistema operativo– Questa operazione ritorna un valore quando la

connessione TCP e’ stata stabilita

Passo 3: send/receive

• Il processo applicativo, una volta stabilita la connessione invoca le due funzioni seguenti:– int send(int socket, char *message, int msg_len, int flags)

per inviare il messaggio message sulla socket– int receive(int socket, char *buffer, int buf_len, int flags) per

ricevere un messaggio memorizzato in buffer– I flag servono per il controllo delle operazioni

Page 11: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

11

Transmission Control Protocol - RFC 793

• Protocollo di tipo connection-oriented• Ha lo scopo di realizzare una comunicazione full-

duplex affidabile e di tipo end-to-end fra processi applicativi di due host, facenti parte di un sistema di reti interconnesse

• E’ progettato assumendo che:– il livello inferiore sia in grado di fornire solamente un

semplice ed inaffidabile servizio di trasferimento dei pacchetti di tipo connection-less (esattamente quello che fa l’IP)

Scopo del TCP

• Affidabilità del collegamento: il TCP garantisce la completa correttezza nella consegna dei dati a meno di partizioni della rete dovute a guasti ai collegamenti fisici

• A tale fine utilizza:– numerazione sequenziale dei dati, prendendo come unità

di riferimento il byte– conferma esplicita della ricezione di ogni blocco di byte da

parte del ricevitore (acknowledgment)– ritrasmissione dei dati di cui non viene confermata la

ricezione

Page 12: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

12

Funzioni del TCP

• Controllo dell’errore – per il riconoscimento degli errori di trasmissione viene

effettuato un controllo mediante 16 bits

• Controllo di flusso: – meccanismo a finestra che permette al trasmettitore di

regolare il flusso dati inviati in relazione allo stato del ricevitore

• Controllo di congestione– meccanismo a finestra che permette al trasmettitore di

regolare il flusso di dati in base allo stato percepito della rete

Procedura connection-oriented

• Per garantire affidabilità e controllo di flusso, il TCP lavora in modo connection-oriented– l’instaurazione della connessione– la chiusura della connessione

• Multiplazione: permette a più processi di utilizzare le funzioni di comunicazione contemporaneamente

Page 13: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

13

Connessioni

• Una connessione è costituita da una coppia di end-points:– il numero di porta, concatenato con il numero IP dell’host

costituisce un end-point– una coppia di end-points identifica in modo univoco una

particolare connessione, così che un singolo end-point può essere condiviso tra più connessioni sulla stessa macchina

– E’ un identificativo che equivale concettualmente al ServiceAccess Point (SAP) secondo la terminologia OSI, per identificare il processo destinazione

– L’host che inizia la connessione deve comunicare a quale porta si vuole connettere e qual è il numero di porta da lui utilizzato

Connessioni e Multiplazione

Host A

IP

TCP300 301

137.204.59.10

Host C

IP

TCP25 23

137.204.59.1

Host B

IP

TCP301

137.204.59.20

Page 14: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

14

Formato del pacchetto TCP

Source Port Destination Port

Sequence number

Acknowledge number

Window

Urgent PointerChecksum

Dati

Opzioni Padding

Data Offset Reserved

URG

PSH

ACK

RST

SYN

FIN

32 bit

Formato del pacchetto TCP (2)

• Source/Destination port: numero delle porte sorgente e destinazione

• Sequence number: numero di sequenza del primo byte del pacchetto; se è presente il bit SYN questo èil numero di sequenza iniziale su cui sincronizzarsi

• Acknowledge number: se il bit ACK è a 1 allora questo numero contiene il numero di sequenza del blocco di dati che il ricevitore si aspetta di ricevere

• Data offset: numero di parole di 32 bit dell’intestazione TCP; indica dove iniziano i dati

• Reserved: sei bit riservati per uso futuro

Page 15: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

15

Formato del pacchetto TCP (3)

• Control bit: sono 6 bit di controllo- URGURG posto a 1 se si deve considerare il campo Urgent Pointer- ACKACK posto a 1 se si deve considerare il campo Acknowledge- PSHPSH posto a 1 serve per la funzione di push, per la consegna immediata delle informazioni- RSTRST posto a 1 per resettare la connessione- SYNSYN posto a 1 per sincronizzare i numeri di sequenza- FINFIN posto a 1 per indicare la fine dei dati

Formato del pacchetto TCP (4)

• Window: il numero di byte, partendo dal numero di sequenza di quello contenuto nel campo acknowledge, che il ricevitore èdisposto a ricevere

• Checksum: controllo errore sull’intestazione e dati• Urgent Pointer: contiene puntatore a dati urgenti

eventualmente presenti nel pacchetto (es. per abortire programma remoto in esecuzione), ha senso se il bit URG èposto ad 1

• Options: contiene opzioni per la connessione• Padding: bit aggiuntivi per fare in modo che l’intestazione sia

multipla di 32 bit

Page 16: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

16

Attivazione della connessione TCP

• La procedura viene innescata dalla active open lato client• Viene inviato un segmento TCP con SYN=1. Il client sceglie

anche un numero di sequenza iniziale per il segmento TCP. Il segmento viene incapsulato in un datagramma IP e inviato al server

• Il server risponde con un segmento TCP con SYN=1 e predispone i buffer per la ricezione

• Quando il client riceve la conferma dal server predispone le risorse per la trasmissione e invia un segmento TCP con SYN=0.

• La connessione e’ stabilita

Apertura connessione

• TCP A attiva una porta e cerca di connettersi ad una well-known socket di TCP B, che è in attesa

• TCP A inviaun pacchetto di apertura con il bit SYN=1 ed il suo numero di sequenza iniziale

TCP A TCP A TCP BTCP B

CLOSED CLOSED LISTENLISTEN

SYNSYN--SENT SENT SYNSYN--RECEIVEDRECEIVED

ESTABLISHED ESTABLISHED SYNSYN--RECEIVEDRECEIVED

ESTABLISHED ESTABLISHED ESTABLISHEDESTABLISHED

ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED

� SeqN=100 SYN=1 ACK=0 �

Page 17: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

17

Apertura connessione

• TCP B risponde con ACK=1 e SYN=1 e propone il suo numero di sequenza

TCP A TCP A TCP BTCP B

CLOSED CLOSED LISTENLISTEN

SYNSYN--SENT SENT SYNSYN--RECEIVEDRECEIVED

ESTABLISHED ESTABLISHED SYNSYN--RECEIVEDRECEIVED

ESTABLISHED ESTABLISHED ESTABLISHEDESTABLISHED

ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED

� SeqN=100 SYN=1 ACK=0 �

� SeqN=300 AckN=101 SYN=1 ACK=1�

� SeqN=101 AckN=301 SYN=0 ACK=1�

� DATI �

• TCP A conferma l’avvenuta apertura della connessione con un ACK=1

Three ways handshake

• Three ways handshake è robusto anche se si tenta di instaurare connessioni contemporaneamente

• TCP tende ad ignorare un vecchio pacchetto di inizio connessione (esempio un duplicato o un ritardo a livello IP), una volta instaurata la connessione

• Messaggio di reset usato per recuperare l’errore

TCP A TCP A TCP BTCP B

CLOSED CLOSED LISTENLISTEN

SYNSYN--SENT SENT SYNSYN--RECEIVEDRECEIVED

ESTABLISHED ESTABLISHED SYNSYN--RECEIVEDRECEIVED

ESTABLISHED ESTABLISHED ESTABLISHEDESTABLISHED

ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED

� SeqN=100 SYN=1 ACK=0 �

� SeqN=300 AckN=101 SYN=1 ACK=1�

� SeqN=101 AckN=301 SYN=0 ACK=1�

� DATI �

Page 18: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

18

Connessione a server web

• La porta di riferimento sul server e’ la porta 80• Il server distingue i segmenti dei differenti client dagli

indirizzi IP di sorgente e dai numeri di porta di sorgente

• I server web creano in genere un nuovo processo per ogni nuova connessione

PORTA 80

IP addressdel server

Porta XPorta Y

IP addressdel client

P1 P2

La famiglia dei protocolli TCP/IP

Applicazioni

e-mail,ftp,telnet,www…

TCP UDP

IPICMPARP

RARP

IEEE 802-Ethernet-X25-Aloha ecc.

Collegamento fisico

Page 19: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

19

User Datagram Protocol - RFC 768

• UDP è un protocollo di tipo connectionless a livello 4, per tutte quelle applicazioni per cui la completa gestione della connessione TCP non è necessaria

• Usato da quelle applicazioni che trasmettono pacchetti singoli, senza necessità di acknowledgement

Dati

Source Port Destination Port

Message Lenght Checksum (optional)

32 bit

User Datagram Protocol - RFC 768 (2)

• Utilizzati solamente i campi di source e destinationport

• Anche per UDP esiste il concetto di porta, ed aggiunge ad IP la possibilità di distinguere diverse applicazioni entro uno stesso host

• Port 7: echo; • Port 69: trivial file transfer protocol (TFTP)

Page 20: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

20

Riepilogo

• Per attivare una connessione TCP occorre:– Attivare le socket per i processi client e

server• Definire la quadrupla porta-client, IP-client,

porta-server, IP-server

– Effettuare la procedura TCP di handshake a tre vie

Controllo di flusso nel TCP

• Il trasmettitore non deve saturare il ricevitore• Utilizzo un meccanismo a finestra scorrevole• Differenze dall’analogo meccanismo a livello di linea:

– Ritardi di andata e ritorno non costanti– Possibilita’ di pacchetti fuori sequenza– Diversa velocita’ delle connessioni

• Nell’intestazione del pacchetto TCP e’ contenuto il campo advertised window

Page 21: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

21

Meccanismo a finestra

• Al piu’ W pacchetti non confermati possono essere in trasmissione

• La dimensione della finestra viene messa a punto dinamicamente sulla base di informazioni dal ricevente e dalla rete– Minimo tra advertised window (dal ricevente) e

congestion window (dalla situazione di rete)

2 3 4 5 6 7 8 9 10 11 131 12

Sender’s window

Acks received Not transmitted

Controllo di flusso a finestra

2 3 4 5 6 7 8 9 10 11 131 12

Sender’s window

2 3 4 5 6 7 8 9 10 11 131 12

Sender’s window

Ack 5

L’ack per il pacchetto 5 consente alla finestra di spostarsi di due posizioni cosi’ che i pacchetti 9 e 10 possono essere trasmessi

Page 22: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

22

Buffer di trasmissione

• Il buffer di trasmissione viene riempito dai byte generati dallaapplicazione

• Il trasmettitore non puo’ avere piu’ di AW byte in attesa di riconoscimento

• Effective window– EW= AW-(last byte sent-last byte acknowledged)

Appl.

Last byte acknowledged Last byte sent Last byte written

Buffer di trasmissione

t

Buffer di ricezione• Il processo ricevente legge byte dal buffer di ricezione• I dati possono arrivare fuori ordine

• Il valore di AW e’ lo spazio disponibile nel buffer del ricevitore di dimensione B– AW= B – (last byte received – last byte read)

Appl.

last byte read next byte expected last byte received

Buffer di ricezione

t

Page 23: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

23

Attuazione del controllo

• Come un ricevitore lento blocca un trasmettitore piu’ veloce– Il buffer di ricezione si riempie -> AW va a 0– Il trasmettitore blocca la trasmissione perche’ EW va a 0

• Ripresa della trasmissione– Il processo ricevente legge dal buffer– AW diventa >0– Il trasmettitore inizia a trasmettere– Appena arrivano gli ack si libera il buffer di trasmissione– Il processo trasmittente inizia a trasmettere

• Durante il blocco il trasmettitore continua ad inviare segmenti di 1 byte per avere risposta dal ricevitore

Controllo di congestione

• TCP cerca di adattare la dimensione della finestra in relazione alle condizioni della rete

• Idea base: se si verifica congestione in rete si rallenta la trasmissione– Quando si verifica una perdita si riduce W– Quando gli ack arrivano correttamente W viene aumentata

Page 24: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

24

Congestion window

• Il TCP mantiene una variabile detta CW (Congestion Window)• MAXWIN = min(CW, AW)• EW= MAXWIN- (last byte sent-last byte acknowledged)• TCP da’ un valore a CW in base alla percezione di

congestione che riceve dalla rete.– Non c’e’ in genere comunicazione esplicita di CW

Dimensione ideale della finestra

• Wid= ritardo*banda– Rappresenta la quantita’ di informazione che utilizza al 100% la tratta tra

trasmettitore e ricevitore

• Se W < Wid: si spreca banda

• Se W > Wid: e’ necessario accodare nei router intermedi e cresce il ritardo e quindi potenzialmente anche la perdita

• Massimo throughput ottenibile: W/RTT– RTT: Round Trip Time

Page 25: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

25

Valori della finestra ideale

• Ipotesi RTT= 100 ms• Calcolo del prodotto banda x ritardo

18 KB122 KB549 KB1.2 MB1.8 MB7.4 MB14.8 MB

T1 (1.5 Mbit/s)Ethernet (10 Mbit/s)T3 (45 Mbit/s)FDDI (100 Mbit/s)STS-3 (155 Mbit/s)STS-12 (622 Mbit/s)STS-24 (1.2 Gbit/s)

Banda x ritardoBanda

• Con 16 bit di receiver windows si arriva la massimo a 64 KB• Opzione window scale consente di moltiplicare il valore della AW per un fattore

di scla concordato alla instaurazione della connessione (RFC 1323)

Incremento additivo/decremento moltiplicativo

• La causa principale per cui un pacchetto va perduto e’ la congestione

• Quando scatta il time out la sorgente dimezza il valore di CW (multiplicative decrease)

• Per incrementare CW si usano modalita’ di tipo additivo (additive increase)

AIMD

Page 26: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

26

Meccanismi di incremento della finestra

• Slow start– Si applica inizialmente, W cresce di 1 per ogni ack ricevuto– Consente un incremento rapido della finestra

(esponenziale) e quindi del throughput• Congestion avoidance

– Dopo aver raggiunto la soglia W si incrementa di 1 per RTT (1/W ogni ack)

– Evita di saturare la banda disponibile

Esempio di aggiornamento della finestra

2 3 4 5 6 7 8 9 10 11 131 12

W=1 all’inizioW=(2..3) dopo il primo ack (1 RTT)W=(3..5) dopo il secondo ack (2 RTT)W=(4..7) dopo il terzo ack (2 RTT)W=(8..15) dopo il gruppo di 4 ack (3 RTT)

L’ampiezza della finestra raddoppia ad ogni RTT

1514

Page 27: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

27

Esempio di evoluzione della finestra

02468

101214

0 1 2 3 4 5 6 7 8

Time (round trips)

Con

gest

ion

Win

dow

size

(s

egm

ents

)

Slow start

Congestionavoidance

Slow start threshold

(ssthresh)cwnd

Meccanismo di ack

• Gli ack sono cumulativi• Un ack si riferisce a tutti i dati ricevuti in modo

contiguo• TCP assegna numeri di sequenza per byte• Per semplicita’ si assumono qui numeri di sequenza

di pacchetti• Ack(i) rappresenta l’ack per il pacchetto i

Page 28: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

28

Ack cumulativi

�� �� ����

����

�� �� ����

�� ��

���

���

data ack

Un nuovo ack viene generato solo quando viene ricevuto unnuovo pacchetto in sequenza

Ack ritardati

• Un ack e’ ritardato fino a che – e’ stato ricevuto un ulteriore pacchetto– Scatta un timer di ack (200 ms)

• Si riduce il traffico di ack

�� �� ����

����

�� �� ����

�� ��

Nuovo ack generatoall’arrivo del pacchetto 37 anziche’ del pacchetto 36

Page 29: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

29

Perdita di pacchetto

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

�� �� ����

���

�� �� ����

�(delayed acks) No ack

Time out (RTO)

• Se un ack non arriva per un certo tempo il trasmettitore conclude che il pacchetto e’ andato perduto

• Restringe la finestra a 1 e inizia la trasmissione slow start• La ritrasmissione avviene a partire dal pacchetto piu’

vecchio non riconosciuto• Problema: occorre tempo per accorgersi della perdita

(ordine del secondo contro ordine di qualche ms per la trasmissione)

• La soglia viene posta alla meta’ del valore che aveva la finestra prima della perdita

Page 30: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

30

Effetto del time out

0

5

10

15

20

25

0 3 6 9 12 15 20 22 25

Time (round trips)

Con

gest

ion

win

dow

(seg

men

ts)

ssthresh = 8 ssthresh = 10

cwnd = 20

After timeout

Descrizione in pseudo codice

1) cwnd=1MSSssthresh= rwnd, finestra

imposta dal ricevitore2) cwnd=cwnd+1 ad ogni ack fino a che

cwnd>ssthresh go to 3)se si ha RTO:ssthresh=min(cwnd,rwnd)/2

cwnd=1

go to 2)3) cwnd=cwnd+1/cwnd ad ogni ack

se si ha RTO:ssthresh=min(cwnd,rwnd)/2

cwnd=1

go to 2)

Slow start

Congestion avoidance

rwnd=AW

Page 31: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

31

Ack duplicati

�� �� ����

����

�� �� ����

� �

���

��

data ack

Dup ack

Fast retransmit/recovery

• Gli ack duplicati sono una indicazione del fatto che puo’esserci stata perdita– Se si ricevono tre ack per lo stesso pacchetto si effettua ritrasmissione

(fast retransmit)– Si riduce la soglia alla meta’ del valore corrente della finestra– Si pone la finestra pari al valore della soglia+3 (per tenere degli ack

duplicati ricevuti)– Il segmento supposto perduto viene ritrasmesso e si entra nella fase di

fast recovery– Si trasmettono segmenti nuovi – fino a che non arriva l’ack per il pacchetto perduto la finestra di

congestione viene incrementata di 1 per ogni ack ricevuto come nella fase di slow start

– Quando arriva l’ack per il pacchetto perduto finisce la fase di fast recovery, il trasmettitore entra in congestion avoidance partendo dal valore impostato per ssthr

Page 32: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

32

Finestra di congestione: fast retransmit/fast recovery

Tempo (s)

Fine

stra

di c

onge

stio

ne (s

egm

enti)

slow startValore massimo della finestra tre ack duplicati: ssthr=cw/2

cw=ssthr+3

fast retransmitssthr: coda vuota

Transitorio iniziale con perdite multiple

Occupazione della coda di trasmissione

Tempo (s)

Occ

upaz

ione

cod

a (s

egm

enti)

Page 33: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

33

Fairness del meccanismo AIMD

• Due connessioni condividono la banda di un singolo link con capacita’ B– B1+B2 = B (al massimo)– Equita’: B1=B2

B1

B2

1

53

2

In congestion avoidance la finestra (e quindi anche il throughput) aumenta in maniera additiva (retta a 45 gradi)

In presenza di perdita si attuaLa riduzione moltiplicativa (retta per l’origine che passa per 2)4

Versioni di TCP

• Problema delle perdite multiple nel RTT– Fast recovery puo’ portare al time out in caso di perdite multiple

nel RTT• TCP New Reno

– Rimane in fast recovery fino a che tutte le perdite nella finestra non sono state recuperate

– Recupera una perdita per RTT• TCP- SACK (Selective Acknowledgment)

– Fornisce informazioni sui pacchetti ricevuti fuori sequenza– Puo’ recuperare piu’ pacchetti perduti per RTT

Page 34: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

34

TCP New Reno RFC2582

• Se in una finestra vengono perduti piu’ segmenti si innesca un processo di riduzione della cwnd che spesso porta il trasmettitore a non poter piu’ trasmettere segmenti per generare dupack di ritorno.– Scatta il time out e si innesca lo slow start

• New Reno in presenza di ack parziale assume che il segmento immediatamente successivo a quello riconosciuto sia andato perduto e lo ritrasmette

• Fast recovery inizia con tre ack duplicati e finisce quando sono stati riconosciuti tutti i segmenti in trasmissione nel momento in cui e’ iniziato il fast retransmit.

• Gli ack parziali decrementano il valore della finestra corrente della quantita’ di dati riconosciuta, la incrementano di un segmento e ri-innescano il fast recovery

TCP SACK (selctive acknowledgment)

• SACK e’ una opzione del TCP che viene concordata in fase di apertura della connessione

• TCP SACK: il ricevitore indica al trasmettitore un elenco dei blocchi ricevuti fuori sequenza

• Solo quando nessun segmento trasmesso richiede ulteriori ritrasmissioni vengono trasmessi nuovi segmenti

0001:1000 1001:2000 4001:5000 5001:6000 8001:9000

Ack cumulativoblocco1 blocco2

2001

acknowledgment

4001600080019000sack

Page 35: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

35

TCP Vegas

• La dinamica della finestra di trasmissione si basa su una stima del throughput ottenuta nel modo seguente:– Expected=Windowsize/BaseRTT, dove BaseRTT e’ il minimo valore di

RTT riscontrato– Per ciascun segmento viene misurato RTT e il numero di byte

trasmessi in tale tempo• Se la differenza tra il throughput atteso e il throughput calcolato e’ minore di

α si incrementa linearmente la finestra cwnd nel RTT successivo; • Se la differenza e’ superiore a β cwnd viene decrementato linearmente nel

RTT successivo– Slow start modificato: cerca di individuare il valore corretto della finestra

senza incorrere in una perdita• Quando il throughput corrente e’ inferiore al throughput atteso si passa da

ss a ca

• La ritrasmissione avviene dopo un ack duplicato se la stima di RTT e’ superiore al valore del time out

IETF RFCs

• 2018 SACK• 2481 Explicit congestion notification• 2414-6 increasing inizial window size• 2581 slow start, congestion avoidance,fast

retransmit, fast recovery• 2582 New Reno• 2988 Retransmission timer (RTO) computation

Page 36: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

36

TCP Tahoe senza fast retransmit

• I primi 12 segmenti sono stati trasmessi e riconosciuti

• Il segmento 13 e il segmento 16 vanno perduti

• Il riconoscimento della perdita del segmento 13 avviene allo scattare del time-out

• La ritrasmissione del segmento 13 fa pervenire l’ack fino al segmento 15 e porta la finestra a 2 (SS)

seg(12)

ack(12)W=5

seg(16)

seg(13)

seg(14)seg(15)

seg(17)ack(12)ack(12)

ack(12)RTO seg(13)

ack(15)

seg(16)

seg(17)

W=1

W=2

ack(17)

ack(17)

TCP Reno• I primi 12 segmenti sono stati

trasmessi e riconosciuti• Il segmento 13 e il segmento 16

vanno perduti• Il riconoscimento della perdita del

segmento 13 avviene per 3 ack(12) duplicati La soglia e’posta a 2, la finestra a 5

• Il segmento 13 e’ ritrasmesso fast e innesca l’invio di ack(15)

• Si esce da fast recovery e si inizia con finestra 2: il trasmettitore e’bloccato

• Scatta il time out e si ritrasmette il 16 con finestra a 1.

seg(12)

ack(12)W=5

seg(16)

seg(13)

seg(14)seg(15)

seg(17)ack(12)ack(12)

ack(12)

RTO

seg(13)

ack(15)

seg(16)

W=5

ack(17)

W=5

W=2

W=1

W=2

Page 37: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

37

TCP New Reno• I primi 12 segmenti sono stati

trasmessi e riconosciuti• Il segmento 13 e il segmento 16

vanno perduti• Il riconoscimento della perdita del

segmento 13 avviene per 3 ack(12) duplicati. La soglia e’posta a 2, la finestra a 5

• Il segmento 13 e’ ritrasmesso fast e innesca l’invio di ack(15)

• Non si esce da fast recoveryperche’ si tratta di un ack parziale. Si trasmette il 16 con finestra a 6 e anche 18,19,20,21,22.

• Arriva ack(17) e si riparte in CA con finestra 2

seg(12)

ack(12)W=5

seg(16)

seg(13)

seg(14)seg(15)

seg(17)ack(12)ack(12)ack(12) seg(13)

ack(15)seg(16)

W=5

ack(17)

W=6

W=2

seg(16)seg(18)seg(19)seg(20)seg(21)seg(22)

Riepilogo: versioni del TCP• Tahoe

– Slow-start– Congestion avoidance– Fast retransmit

• Reno– Implementa anche il fast recovery

• New Reno– Fast recovery per recuperare perdite multiple

• SACK– Ritrasmissione selettiva

• VEGAS– Stima della finestra di congestione

Page 38: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

38

Ritrasmissione adattativa

• Differentemente da quanto avviene sulla singola linea RTT non e’ costante

• Il timeout che regola il meccanismo a finestra del TCP deve essere determinato in modo dinamico

• L’idea base e’ di mantenere aggiornato un valore medio del RTT e di calcolare il time out in funzione di esso

• Ogni volta che il TCP invia un segmento registra il tempo e lo sottrae al tempo di arrivo dell’ACK ad esso relativo ottenendo la grandezza s-RTT

• La stima di RTT si ottiene con la seguente media pesata tra il vecchio valore e il nuovo campione:

eRTT= α eRTT + (1-α) sRTTα=0.125 valore tipico

• Tout=2eRTT

Associazione degli ACK ai segmenti trasmessi

• ACK e’ la conferma della ricezione dei dati e non di una particolare trasmissione– Se un pacchetto viene ritrasmesso piu’ volte non so con quale valore

dell’istante di partenza calcolare e-RTT

Sender Receiver

Original transmission

ACK

Sam

pleR

TT

Retransmission

Sender Receiver

Original transmission

ACK

Sam

pleR

TT

Retransmission

(a) (b)

Page 39: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

39

Algoritmo Karn/Partridge

• S-RTT viene misurato soltanto per i segmenti che vengono inviati una volta sola

• Ad ogni ritrasmissione il TCP raddoppia il time out– Comunque ogni volta che arriva l’ACK si ricalcola con

l’ultimo valore di eRTT secondo la formula

• Questo meccanismo e’ una forma di controllo di congestione che fa si che il trasmettitore aspetti un tempo via via piu’ lungo prima di ritrasmettere un segmento per cui non ha ancora ottenuto riscontro

Variazioni di RTT (RFC2988)

• Se le variazioni tra i campioni di RTT sono piccole non ha senso calcolare il time out secondo la formula Tout=2eRTT Viene effettuato sulla base della stima del RTT e della deviazione del valore del campione di RTT rispetto alla stima

• Si calcola la deviazione del valore del campione di RTT (sRTT) rispetto alla stima eRTT:

devRTT= (1-β) devRTT+ β |sRTT-eRTT|

• Calcolo del time outTout= e-RTT +4 devRTT

• Se le fluttuazioni sono piccole time out e’ circa uguale a e-RTT altrimenti time out > e-RTT in modo piu’ consistente

� β=0.25 e’ il valore raccomandato

Page 40: Funzioni del protocollo TCP - deisnet.deis.unibo.itdeisnet.deis.unibo.it/Didattica/.../Lucidi_OLD/2005-2006/tcp_gen.pdf · 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione

40

Esercizio: lettura di traccia TCP

• Dal grafico si puo’ dedurre che:

– Valore della soglia iniziale = 32– Il sistema lavora in SS negli intervalli [1,6] e 23,26]– Il sistema lavora in congestion avoidance negli intervalli [6,16] e [17,22]– Dopo il sedicesimo round viene riconosciuta una perdita in base a dup ack– La soglia al diciottesimo round vale 21– Il pacchetto 70 viene inviato al settimo round

05

1015202530354045

1 3 5 7 9 11 13 15 17 19 21 23 25

RTT

Dim

ensi

one

della

fine

stra

di

cong

estio

ne (s

egm

enti