Livello di trasporto e TSAP Three-way handshake Incarnation

Reti di Telecomunicazioni
R. Bolla, L. Caviglione, F. Davoli
  Livello di trasporto e TSAP
  Three-way handshake
  Incarnation numbers
  TCP e UDP
39.2
Sessione
T_CONNECT, T_DISCONNECT
T_DATA, T_EXP_DATA
T_UNITDATA
Trasporto
N_CONNECT, N_RESET,
T_DISCONNECT, N_DATA,
N_ACK, N_EXP_DATA
N_UNITDATA, N_ERROR
Orientati alla conn.
(TP4, 8072/3; TCP)
Non orientati (UDP)
Frammentazione,
multiplexing,
risequenzializzazione,
controllo di flusso endto-end
VC (X.25, 8347/8)
Datagram (IP, 8472/3)
Rete
39.3
TSAP
Down Multiplexing
(aumenta il throughput)
5
Messaggi
5
4
TPDU
4
NSAP
Up Multiplexing
(limita il numero di VC)
39.4
Process
server
Applicazione
k
m
Processo
desiderato
n
(1)
(2)
(3)
39.5
Service user
Trasport Layer
T_CONNECT
request
Connection
Request
CR
T_CONNECT
confirm
Service user
T_CONNECT
indication
Connection
Confirm
CC
ACK
T_CONNECT
response
39.6
Due delle ragioni principali per le quali si usa il threeway handshake sono:
  se il trasmettitore va in crash dopo aver trasmesso il
CR, il ricevitore attenderebbe per sempre; l’uso
dell’ACK unitamente ad un timeout sulla CC evita
questa situazione
  se un duplicato della CR arriva in ritardo quando la
connessione a cui era riferita è già stata chiusa, il
ricevitore invia la CC restando in attesa di un ACK; il
trasmettitore può inviare un DR (Disconnect Request).
39.7
0, OPEN
0, OPEN
0, ACK0, OPEN
1 , ACK1
2, ACK1, DATA2
2, ACK1, DATA2
2 , ACK2
0, ACK0, OPEN
Connection closed
1, ACK0, DATA1
1, ACK0, DATA1
1 , ACK1
2 , ACK2
Accettata
2, ACK1, DATA2
Scartata
39.8
0, OPEN, ID1
0, OPEN, ID3
0, ACK0, ID1, OPEN, ID2
1 , ACK1, ID1
2, ACK1, ID2 , DATA2, ID1
2, ACK1, ID2, DATA2, ID1
2 , ACK2, ID1
Connection closed
0, ACK0, ID3, OPEN, ID4
1, ACK0, ID2, DATA1, ID1
1, ACK0, ID4, DATA1, ID3
1 , ACK1, ID3
Scartata
2, ACK1, ID4, DATA2, ID3
2 , ACK2, ID3
39.9
Per identificare la connessione
  I protocolli di trasporto ISO usano dei
reference numbers, scelti dai due lati della
connessione;
  TCP usa i numeri di sequenza iniziali;
  In entrambi i casi, si fa in modo da ritardare il
riuso per un tempo sufficientemente lungo.
39.10
Service user
T_CLOSE
request
Transport Layer
Service user
Disconnect
Request
DR
DC
T_CLOSE
indication
Disconnect
Confirm
39.11
  Il TCP (Transmission Control Protocol) è il
principale protocollo del livello di trasporto
della Architettura DoD.
  È un protocollo orientato alla connessione,
con capacità di recupero di errore, controllo
di flusso e di sequenza.
39.12
0
4
8
16
Source Port
19
24
31
Destination Port
Sequence Number
Acknowledgement Number
HLEN
Reserved
Window
Code Bits
Checksum
Urgent Pointer
Options
Padding
Data
Code Bits: URG-ACK-PSH-RST-SYN-FIN
39.13
Service
user
Service
provider
UNSPECIFIED_
PASSIVE_OPEN.
request
OPEN_ID.confirm
Network
(segments)
Service
user
ACTIVE_
OPEN.request
SYN, ISN = X
SYN, ISN = Y,
ACK X+1
OPEN_
SUCCESS.confirm
Service
provider
ACK Y+1
OPEN_ID.confirm
OPEN_
SUCCESS.confirm
39.14
  A differenza dei protocolli del TP4 ISO, TCP
non ha il concetto TSDU, ma è un protocollo
stream-oriented; TCP considera i dati come
una sequenza di byte, che divide a sua
scelta in “segmenti”.
  Il controllo di flusso è del tipo sliding window,
ma la larghezza della finestra è variabile
dinamicamente.
39.15
  Il TCP fornisce al livello di applicazione due
tipologie di servizi:
 Controllo di flusso: elimina la possibilità che il
trasmettitore saturi il buffer in ricezione del
ricevitore
 Controllo di congestione: gestisce le situazioni
di traffico critiche all’interno della rete
39.16
  Per realizzare un meccanismo di controllo di
flusso il TCP mantiene all’interno del sender
una variabile detta finestra di ricezione
(receiver window, rwind)
  Dà un’idea al trasmettitore di quanto spazio
ci sia all’interno del buffer del ricevente
  Tale quantità è dinamica e varia durante il
tempo di una connessione
39.17
  Per gestire informazioni sulla congestione, il TCP utilizza
una variabile denominata finestra di congestione
(congestion window, cwind).
  Costituisce una limitazione addizionale alla quantità di
traffico che un host può inviare in rete.
  Deve valere la seguente relazione:
39.18
  Le quantità dettate dalla dinamica degli
algoritmi del TCP devono sempre essere
“validate”.
  Occorre quindi verificare che i buffer
disponibili al TCP possano contenere la
quantità di dati associati alle varie finestre.
  Inoltre, mediante l’uso della Advertised
Window, le due entità coinvolte nella
comunicazione si scambiano informazioni
sullo spazio gestibile nei buffer
39.19
  Poiché la risorsa disponibile per la
trasmissione non è nota a priori, il TCP
adotta un meccanismo per “sondare” il
canale.
  Tale procedura è denominata Slow Start e
permette di eseguire un probing del canale.
  Consiste nell’introduzione graduale del
traffico in rete.
  È specificata nel documento RFC 2581
39.20
  Il principio su cui si basa lo Slow Start è semplice:
mediante l’osservazione del traffico di riscontro
(flusso di ACK) adatta la trasmissione del traffico
dati.
  Questo viene denominato comportamento selfclocking del TCP
  Per la sua realizzazione occorre aggiungere al TCP:
  una variabile di controllo per la finestra, denominata
congestion window (cwnd)
  una variabile di gestione, denominata slow start threshold
(sstresh)
39.21
  L’evoluzione dell’algoritmo è la seguente:
  Si inizia trasmettendo una quantità minima
  Ad ogni ACK (dei byte di una finestra) ricevuto si raddoppia la
finestra
  In realtà, l’algoritmo di slow start opera in sinergia con un altro
algoritmo, denominato congestion avoidance.
  Congestion avoidance permette di incrementare la finestra di
trasmissione in modo lineare, consentendo una evoluzione del
traffico meno aggressiva.
  Solitamente si denomina questa tecnica come Slow Start with
Congestion Avoidance
39.22
  Per ogni ricezione di un ACK (di un
segmento) l’algoritmo opera come segue:
 if (cwnd < ssthresh) cwnd += 1 (incremento
moltiplicativo)
 else cwnd += 1/cwnd (incremento lineare)
  Nel caso in cui si abbia un time-out:
 ssthresh=cwnd/2; cwnd=1 (reset dell’algoritmo)
39.23
  Lo Slow Start permette dunque:
  Se la rete consente una trasmissione rapida la dinamica
dell’algoritmo non introduce un ritardo elevato.
  Se la rete è in situazione di congestione, l’introduzione della
fase di slow start permette di non aggravarla, ma la sua
dinamica diviene preponderante nell’evoluzione del TCP.
  Si noti come il RTT sia critico per questo algoritmo: è
questo il motivo principale della scarsa efficienza del
TCP nelle tratte satellitari (RTT elevato)
39.24
  Il TCP basa buona parte del suo
funzionamento su meccanismi di time-out.
  A tal proposito, i valori di time-out devono
essere tarati al fine di non essere troppo
brevi o troppo lunghi.
  Il TCP utilizza un algoritmo per la stima del
RTT del canale.
  Tale algoritmo è denominato algoritmo di
Jacobson (RFC 793)
39.25
  In realtà si adotta il SRTT (Smoothed Round
Trip Time), ovvero una media di tutti i valori
di RTT collezionati fino al presente istante.
  Nel TCP originale (definito nel documento
RFC 793) il time-out per la ritrasmissione
(denominato RTO – Retransmission Time
Out) veniva posto uguale proprio allo SRTT
39.26
Algoritmo di Jacobson, per la stima della media:
Algoritmo di Jacobson, per la stima della varianza:
Tipico valore di x=0.125
(pari ad 1/8, RFC 2988)
39.27
Il valore del time-out è fissato pari a:
39.28
  Usare l’algoritmo di Jacobson fino a quando
non avviene una ritrasmissione
  Effettuare un back-off binario ad ogni
ritrasmissione timeout = 2*timeout
  Riprendere l’algoritmo di Jacobson quando le
ritrasmissioni cessano, ovvero quando si
riceve l’ACK di un segmento non ritrasmesso
39.29
  Uno dei problemi maggiori delle
ritrasmissioni innescate da time-out è che il
periodo di time-out può essere piuttosto
elevato
  Il mittente può rilevare una perdita non solo
aspettando lo scadere del time-out, ma
rilevando degli ACK duplicati
  Si definisce ACK duplicato un ACK che ririscontra un segmento per il quale il mittente
ha già ricevuto un riscontro.
39.30
  RFC 2581 introduce il concetto di
Ritrasmissione Veloce (Fast Retransmit).
  Alla ricezione di 3 ACK duplicati, il mittente
TCP ritrasmette il segmento mancante prima
che il timer per quel segmento scada.
39.31
  Esistono diverse varianti del TCP.
  La distinzione principale è negli algoritmi di
gestione degli ACK e dei time-out
  TCP-Tahoe: è storicamente una delle
versioni più vecchie del TCP. Taglia
incondizionatamente la finestra di
congestione ad 1 MSS e riprende la fase di
slow-start dopo OGNI evento di perdita
39.32
  TCP-Reno: elimina la fase di slow-start dopo
la ricezione di un ACK duplicato 3 volte.
  Intuitivamente, la ricezione di un ACK
duplicato 3 volte è sintomatico della perdita
di un segmento ma anche della ricezione di
altri. Si ritiene dunque troppo aggressiva la
fase di slow-start.
39.33
  UDP (User Datagram Protocol) realizza un
protocollo di trasporto non orientato alla
connessione
  Aggiunge alle funzionalità di IP la possibilità
di distinguere fra diverse destinazioni
all’interno della stessa macchina, ma non
garantisce l’integrità dei dati.
39.34
Packet
Source Port
Destination Port
Message Length
Checksum
Data
Pseudo-header (non trasmesso, usato anche in TCP)
Source IP Address
Destination IP Address
Zero
Proto
Length
39.35
  Cos’è il multiplexing a livello di trasporto?
  Perchè si deve usare il three-way
handshake?
  Cosa sono gli incarnation numbers?
  Descrivete TCP e UDP.
39.36