Sei sulla pagina 1di 41

Fondamenti di Internet e Reti

Strato di trasporto

Francesco Musumeci
Dipartimento di Elettronica, Informazione e Bioingegneria
(DEIB) – Politecnico di Milano

Fondamenti di Internet e Reti


Livello di Trasporto

• Introduzione
• Protocollo UDP
• Trasporto affidabile
– Protocolli di ritrasmissione
– Controllo di flusso a finestra mobile
• Protocollo TCP

F. Musumeci – FIR: Strato di trasporto 2


Come garantire l’integrità dei dati?

• Collegamento ideale
– Tutto ciò che viene trasmesso arriva nello stesso ordine e senza errori
viene correttamente interpretato a destinazione
• Collegamento reale: errori/perdite sul canale dovuti a
– errori sui bit, causati da interferenze sul canale
– perdita pacchetti, a causa di memory overflow
• Come si recuperano gli errori di trasmissione?
• Come si previene la perdita di dati per overflow dei buffer?

F. Musumeci – FIR: Strato di trasporto 3


4c – Trasporto affidabile – parte1
Protocolli di ritrasmissione

Fondamenti di Internet e Reti


Recupero d’errore
Soluzioni
1. Utilizzo di tecniche di correzione di errore
– Esempio: Forward Error Correction (FEC)
– Introducono un’elevata ridondanza (overhead) nei pacchetti
2. Utilizzo di Protocolli di Ritrasmissione
– Ciascuna UI ricevuta correttamente viene riscontrata positivamente con
un messaggio di Acknowledgment (ACK)
– La mancata ricezione di un ACK entro un certo periodo (timeout) indica
la necessità di ritrasmettere
o A volte l’errore può essere esplicitamente segnalato da un NACK (negative ACK)

– La procedura si ripete finché la UI non viene ricevuta e riscontrata


correttamente
• NB1: è necessario un canale di ritorno per il trasporto di ACK e NACK
• NB2: anche gli ACK/NACK possono essere affetti da errori!

F. Musumeci – FIR: Strato di trasporto 5


Recupero d’errore
A quale livello implementarlo?
• Queste procedure possono essere attivate a qualunque
livello
• Storicamente sempre presenti a livello 2 (collegamento
dati)
– collegamenti fisici “del passato” poco affidabili
• Necessità di recupero d’errore anche al livello di
trasporto per recupero end-to-end
– Proteggere i collegamenti fisici non basta, i pacchetti
possono andare persi nei buffer dei router lungo la rete
• Nei sistemi moderni il recupero d’errore a livello di linea
può essere assente

F. Musumeci – FIR: Strato di trasporto 6


Protocolli di ritrasmissione
Ricapitolando…
• Obiettivi:
– integrità delle UI
– consegna di UI in sequenza
– no duplicazione
• Usando i messaggi di servizio:
– ACK: riscontro positivo
– NACK: riscontro negativo

• e meccanismi come:
– Timeout
– Finestra di trasmissione

F. Musumeci – FIR: Strato di trasporto 7


Protocolli di ritrasmissione
ARQ (Automatic Repeat reQuest)
• Due principali categorie:
– Stop and Wait (S&W)
o Trasmetto il prossimo pacchetto solo dopo aver ricevuto il riscontro
del pacchetto corrente
o Bassa efficienza di utilizzo delle risorse trasmissive
– Continuous ARQ
o Trasmetto più pacchetti consecutivamente senza attendere riscontri
o Maggiore efficienza di utilizzo del canale
o Due principali tecniche
– Go-back-n
– Selective Repeat
– Vedremo anche:
o protocollo con soli ACK (senza NACK)
o protocolli bidirezionali

F. Musumeci – FIR: Strato di trasporto 8


Protocolli di ritrasmissione
ARQ (Automatic Repeat reQuest)
• Stop and Wait (S&W)
• Continuous ARQ
– Go-back-n
– Selective repeat
• Protocollo con soli ACK (senza NACK)
• Protocolli bidirezionali

F. Musumeci – FIR: Strato di trasporto 9


Stop and wait Hp: ritardo di prop.
Funzionamento fisso (al liv di trasporto
A B
è solo una “stima”)
• Parametri Tf
– Tf: tempo di trasmissione di una UI (s)
τ
– Ta: tempo di trasmissione di un riscontro (s) Tp
– Tp: tempo di elaborazione (s) τ
Ta
– τ=d/v: ritardo di propagazione (s) Tp
o d: distanza tra trasmettitore e ricevitore (m)
o v: velocità di propagazione (m/s)
– C: capacità del canale (bit/s)
– Lf: lunghezza (costante) della UI (bit)
– La: lunghezza (costante) del riscontro (bit)

• Tempo di trasferimento di Nf UI (senza errori)


 Lf La 
Ttot = Nf T1 = Nf (Tf + Ta + 2Tp + 2τ ) = Nf  + + 2Tp + 2τ 
C C 

F. Musumeci – FIR: Strato di trasporto 10


Stop and wait
Assenza di errori A B

• Efficienza η del protocollo Tf


– frazione di tempo in cui il canale è τ
usato per trasmettere informazione Tp
τ
utile in assenza di errori Ta
d Tp
τ dC a: ritardo di
a= = v = propagazione
Tf L Lf v
f normalizzato
C
Tf Tf 1
η= ≅ =
Tf + Ta + 2Tp + 2τ Tf + 2τ 1 + 2a
• Throughput: grado di utilizzazione del
collegamento
THR = η ⋅ C bit/s ( )
F. Musumeci – FIR: Strato di trasporto 11
Stop and wait
Cosa accade se si verifica un errore?
• Errore su UI e/o ACK richiede ritrasmissione con time-out TO
Errore su UI Errore su ACK Necessario avere buffer di
ritrasmissione
A B A B

Tf
TO ≥ Ta + 2Tp + 2τ
τ
Tp
To To τ Occorre numerare le UI
Ta
Tp • A trasmette una stessa UI
due volte (per via del
time-out) e riceve un
solo riscontro
• B crede di aver ricevuto
due UI diverse!

F. Musumeci – FIR: Strato di trasporto 12


Stop and wait
A B
Dimensionamento del Time-out
0
• Il time-out non deve essere troppo grande
per evitare inefficienze
 TO si dimensiona spesso al valore To
minimo ACK 0

TO = Ta+2τ 0
• Il tempo di elaborazione non è controllabile 1
• in una rete la stima del RTT (=2τ) non è ACK 0
sempre veritiera
ACK 1
 Occorre numerare anche i riscontri per
evitare ambiguità
– Es: se non ci fosse la numerazione al 2°
ACK, A penserebbe che è stata ricevuta La numerazione
anche la UI n° 1 introduce overhead: è
– Soluzione: 1 bit di numerazione consente il prezzo da pagare per
di scartare UI duplicate o riscontri garantire trasporto
duplicati affidabile

F. Musumeci – FIR: Strato di trasporto 13


Stop and wait
Presenza di errori – calcolo dell’efficienza
• Assunzioni
– P: probabilità di una trasmissione errata (errore colpisce UI o ACK).
Dipende da:
o probabilità di errore sul singolo bit, p
o lunghezza di trame e riscontri (più sono lunghi, maggiore è P)

• Efficienza η del protocollo S&W in presenza di errori

1− P
η max ≅ 1 + 2a In presenza di errori l’efficienza si
riduce di un fattore (1-P)

F. Musumeci – FIR: Strato di trasporto 14


Protocolli di ritrasmissione
ARQ (Automatic Repeat reQuest)
• Stop and Wait (S&W)
• Continuous ARQ
– Go-back-n
– Selective repeat
• Protocollo con soli ACK (senza NACK)
• Protocolli bidirezionali

F. Musumeci – FIR: Strato di trasporto 15


A B
Continuous ARQ
Generalità 4

• Trasmetto più UI consecutive 5


ACK 4
• Numerazione ciclica modulo N
6
b
N=2
ACK 5
7
ACK 6
– Es: b=3  UI numerate da 0 a 7 0
ACK 7
– comporta overhead di b bit 1
– S&W caso particolare con N=2 (b=1) ACK 0
2
• Tempo di trasferimento di Nf UI (Tp = 0) ACK 1

Lf La
Ttot = Nf Tf + Ta + 2τ = Nf + + 2τ ACK 2

C C
• “Quanto” può essere continua la trasmissione?
• Possibile ambiguità in caso di mancata ricezione riscontri
– Es (N=4): A trasmette 0-1-2-3 ma non riceve alcun ACK. Se A
trasmettesse la “seconda” UI nr. 0 (non ritrasmessa), all’arrivo di ACK 0
non saprebbe interpretarne il significato
 Uso di finestre scorrevoli (sliding window)

F. Musumeci – FIR: Strato di trasporto 16


Continuous ARQ
Sliding window
• Sono utilizzate due finestre
1. Finestra in trasmissione con ampiezza Ws
o Posso trasmettere fino a Ws UI in assenza di riscontro
o Ogni riscontro ricevuto in sequenza fa scorrere la finestra di
trasmissione
Ls = 4
2 1
– Si trasmettono UI con numero n tale che: Ws = 5

3 0
Ls ≤ n ≤ (Ls + Ws − 1)mod N
4 7

5 6

F. Musumeci – FIR: Strato di trasporto 17


Continuous ARQ
Sliding window
• Il riscontro di ogni UI fa scorrere la finestra di una posizione
(sliding window)

Finestra 1 2 3 4 5 6 7 8 9 10 11 12
Finestra di
già riscontrati   non trasmissibili
trasmissione

(1,7) (1,7) (1,7) (1,7) (1,7) (1,7) (2,8) (3,9) (4,10)


1 2 3 4 5 6 7 8 9
tx

ACK 1 ACK 2 ACK 3


rx

F. Musumeci – FIR: Strato di trasporto 18


Continuous ARQ
Sliding window Lr = 5
2 1
Wr = 2
2. Finestra in ricezione con ampiezza Wr
o Accetto fino a Wr UI 3 0
o Ogni UI accettata in sequenza
fa scorrere la finestra di ricezione
4 7
– Il ricevitore accetta tutte le UI con n tale che:

Lr ≤ n ≤ (Lr + Wr − 1)mod N
5 6

– Le altre UI sono scartate

• Vincolo per evitare ambiguità: Ws + Wr ≤ N

• In comunicazioni bidirezionali AB + BA


– 4 finestre (due in A e due in B)
– Uso di “Piggybacking”: inserisco l’ACK dentro il pacchetto dati

F. Musumeci – FIR: Strato di trasporto 19


Continuous ARQ
Sliding window - Relazione tra Ws e τ
A B A B

Tf 0 Tf 0
WsTf
1 2τ 1
2τ ACK 0 ACK 0
WsTf
Ta 2 Ta
ACK 1 ACK 1
3 2
ACK 2
3
ACK 3 ACK 2

ACK 3

Dimensione Finestra
Ws = 4 Ws = 2
finestra OK troppo corta

• Condizione per evitare perdite di efficienza WsTf ≥ Tf + Ta + 2τ

• Se Ta = 0  Ws ≥ 1 + 2a (a = τ / T f ) Finestra “non strozza”  η ≅ 100%

F. Musumeci – FIR: Strato di trasporto 20


Continuous ARQ
Sliding window - Relazione tra Ws e τ
A B A B

Tf 0 Tf 0
WsTf
1 2τ 1
2τ ACK 0 ACK 0
WsTf
Ta 2 Ta
ACK 1 ACK 1
3 2
ACK 2
3
ACK 3 ACK 2

ACK 3

Dimensione Finestra
Ws = 4 Ws = 2
finestra OK troppo corta

Finestra  T f + Ta + 2τ  WsTf ≥ Tf + Ta + 2τ
Ws =  
ottima  Tf  Finestra “non strozza”  η ≅ 100%

F. Musumeci – FIR: Strato di trasporto 21


Protocolli di ritrasmissione
ARQ (Automatic Repeat reQuest)
• Stop and Wait (S&W)
• Continuous ARQ
– Go-back-n
– Selective repeat
• Protocollo con soli ACK (senza NACK)
• Protocolli bidirezionali

F. Musumeci – FIR: Strato di trasporto 22


Continuous ARQ
Presenza di errori
• In caso di errori occorre ritrasmettere. Posso farlo in
seguito a due eventi:
– Se scade un timeout (come in S&W)
– Se il ricevitore mi invia un esplicito riscontro negativo
(NACK)

• Sia ACK che NACK sono numerati


– ACK i: riscontro positivo di tipo cumulativo fino alla UI numero i
– NACK i: riscontro negativo della UI numero i

F. Musumeci – FIR: Strato di trasporto 23


Continuous ARQ
Presenza di errori
• Due diverse implementazioni:
1. Go-back-n (GBN)
o UI ricevute fuori sequenza a causa di errori sono scartate
o Ritrasmissione a partire dall'ultima UI non riscontrata
– Finestra di ricezione: Wr = 1
o "n" è il numero massimo di UI che possono essere trasmesse in
assenza di riscontri (es. n=Ws=7 con numerazione modulo 8)
o NACK i indica riscontro negativo della UI numero i, ma anche
riscontro positivo fino alla UI numero (i – 1)
2. Selective repeat (SR)
o UI accettate anche fuori sequenza  occorre buffer in ricezione
per risequenziare le UI
o NACK i indica solo riscontro negativo della UI numero i
o Ritrasmissione selettiva
– Esplicitamente richiesta (NACK)
– Per scadenza di time-out

F. Musumeci – FIR: Strato di trasporto 24


2 1
3 0
Continuous ARQ 4 7
Go-back-n A B
5 6

• Sliding window
– Wr = 1 (implicito per GBN) 0

– Ws + Wr > N genera ambiguità 1


ACK 0

 Finestra di trasmissione massima 2


ACK 1
Ws = N – 1 3
ACK 2
• Funzionamento 4

– NACK non viene ripetuto 5


NACK 3
– Dopo NACK i, B invia ACK i – 1 per ogni 6
UI corretta ma fuori sequenza ACK 2
3
ACK 2
• N.B. se N è piccolo, la finestra potrebbe 4
ACK 3
comunque non essere sufficiente ad avere 5
trasmissione continua (ad es perché il ACK 4

collegamento è molto lungo), ovvero, 6

potrebbe comunque accadere che la finestra


"strozzi", ovvero:
WsT f < T f + Ta + 2τ

F. Musumeci – FIR: Strato di trasporto 25


2 1
3 0
Continuous ARQ 4 7
Go-back-n A B
5 6

• Sliding window
– Wr = 1 (implicito per GBN) 0

– Ws + Wr > N genera ambiguità 1


ACK 0

 Finestra di trasmissione massima 2


ACK 1
Ws = N – 1 3
ACK 2
• Funzionamento 4

– NACK non viene ripetuto 5


NACK 3
– Dopo NACK i, B invia ACK i – 1 per ogni 6
UI corretta ma fuori sequenza ACK 2
3
ACK 2
• N.B. se N è piccolo,
Imprecisione la finestra
nel testo potrebbe
(fig 3.11 e 4
ACK 3
comunque
diagrammi di non essere
flusso GBN): sufficiente
questi duead avere
ACK 5
nontrasmissione continua
sono presenti (ad es
nel testo, ma perché il è
in realtà ACK 4

necessario ribadire
collegamento gli lungo),
è molto ACK ancheovvero,dopo 6

un NACK comunque
potrebbe per evitareaccadere
situazioniche di la
stallo
finestra
"strozzi", ovvero:

F. Musumeci – FIR: Strato di trasporto 26


2 1
3 0
Continuous ARQ 4 7
Selective repeat B
5 6
A
• Sliding window
0
– Ws + Wr > N genera ambiguità
1
 Finestre di trasmissione/ricezione ACK 0
2
massime ACK 1
3
Ws = Wr = W = N/2 ACK 2
4

5
• Funzionamento NACK 3
6
– NACK non viene ripetuto ACK 2
3
– Dopo NACK i, B invia ACK i – 1 ACK 2

per ogni UI corretta ma fuori ACK 6

sequenza
7

F. Musumeci – FIR: Strato di trasporto 27


2 1
3 0
Continuous ARQ 4 7
Selective repeat – NACK e Time-out A B 5 6

• UI 3 ritrasmessa grazie a 0
NACK 3 1
ACK 0
• Intervento del time-out 2
ACK 1
– Ritrasmetto la UI n. 4
3
o Questa ritrasmissione ACK 2
4
è inutile (la UI 4 era
stata ricevuta) 5
NACK 3
o Nel frattempo arriva
ACK 5, quindi la ACK 2
To 3
finestra scorre in
avanti (estremo 6
ACK 5
inferiore = UI 6) e il
timeout della UI 5 è 4
ACK 6
azzerato 7
ACK 6
o …
ACK 7

F. Musumeci – FIR: Strato di trasporto 28


Protocolli di ritrasmissione
ARQ (Automatic Repeat reQuest)
• Stop and Wait (S&W)
• Continuous ARQ
– Go-back-n
– Selective repeat
• Protocollo con soli ACK (senza NACK)
• Protocolli bidirezionali

F. Musumeci – FIR: Strato di trasporto 29


Continuous ARQ
Protocollo con soli riscontri positivi
• GBN e SR nascono per collegamenti che garantiscono
implicitamente la consegna in sequenza (es. collegamenti diretti
punto-punto)
• Non sempre tale proprietà è garantita
– Es: quando attraversano una rete le UI possono seguire
percorsi diversi
– Ciò è vero se si considera ARQ al livello di trasporto (TCP)
• Protocollo con soli riscontri positivi
– ACK i: riscontro cumulativo fina alla UI numero i
– no NACK (ritrasmissione avviene solo per timeout)
– Simile a SR
o UI fuori sequenza accettate se rientrano nella finestra di ricezione
– quando si accetta una UI si invia COMUNQUE riscontro
positivo, indicando qual è la UI attesa in sequenza (prima UI
mancante)
o dimensionamento finestre come in SR (Ws=Wr=N/2)

F. Musumeci – FIR: Strato di trasporto 30


2 1
3 0
Continuous ARQ 4 7
Soli riscontri positivi A B 5 6

0
• Esempio
1
ACK 0
2
ACK 1
3
ACK 2
4

5
ACK 2

Imprecisione nel testo ed. vecchia ACK 2


(fig. 3.17) To 6

3
ACK 2

4
ACK 6
5
ACK 6
7
ACK 6

ACK 7

F. Musumeci – FIR: Strato di trasporto 31


Continuous ARQ

• A cosa serve avere tutti questi “modi” di ritrasmettere?


– S&W
– GBN
– SR
– Solo ACK

• Diversi fattori influiscono sull’efficienza della trasmissione end-to-
end (o anche punto-punto)
– Affidabilità del collegamento (probabilità di errore)
– Ritardo di propagazione
– Capacità del collegamento Per ciascuna situazione è più
– Dimensione UI opportuno usare un diverso
… protocollo di ritrasmissione

F. Musumeci – FIR: Strato di trasporto 32


Protocolli di ritrasmissione
ARQ (Automatic Repeat reQuest)
• Stop and Wait (S&W)
• Continuous ARQ
– Go-back-n
– Selective repeat
• Protocollo con soli ACK (senza NACK)
• Protocolli bidirezionali

F. Musumeci – FIR: Strato di trasporto 33


Continuous ARQ
Protocolli bidirezionali
• In una comunicazione bidirezionale il trasferimento di dati
avviene nelle due direzioni
• Analogamente avviene per i riscontri
– Uso di piggybacking

Strato N + 1 Strato N + 1
N-SAP
Tx Rx

A B
Rx Tx

Strato N Strato N

F. Musumeci – FIR: Strato di trasporto 34


Continuous ARQ A B
Protocolli bidirezionali
• SN = Sequence Number SNA = 3
ANA = 5
– nr di sequenza del SNA = 4 SNB = 6
pacchetto trasmesso ANA = 5 ANB = 2
• AN = ACK Number SNA = 5 SNB = 7
ANA = 5
– Nr di sequenza del ANB = 3
ANA = 6 SNB = 0
pacchetto riscontrato
SNA = 6 ANB = 4
o In TCP ha il significato ANA = 6
di "prossimo byte ANB = 5
SNA = 7
atteso" ANA = 7 SNB = 1
• Possono esserci anche UI ANA = 0 ANB = 5
di solo riscontro (“semplici” SNA = 0 SNB = 2
ACK) ANB = 6
ANA = 0
ANA = 1 ANB = 7
• In ogni caso le UI dati
trasportano anche il ANA = 2 ANB = 0
riscontro

F. Musumeci – FIR: Strato di trasporto 35


4d – Trasporto affidabile – parte2
Controllo di flusso

Fondamenti di Internet e Reti



Controllo di flusso
Throughput di rete

Capacità di rete (massimo throughtput)


Ideale …

Controllato

Non controllato

Carico offerto

• Caso non controllato: instabilità (ad es. ritrasmissioni che


prevalgono su trasmissioni)
• Mediante il CONTROLLO DI FLUSSO si rinuncia a
raggiungere la massima capacità della rete a favore della
STABILITA’

F. Musumeci – FIR: Strato di trasporto - 37 -


Controllo di flusso

• Buffer di ricezione limitato a Wr posizioni


• Il processo applicativo ricevente ha una velocità di
“assorbimento” delle UI variabile
 all’arrivo di una UI il buffer in ricezione può essere
pieno!
• Obiettivo: regolando il ritmo di invio, si evita che pacchetti
vadano persi perché all’arrivo trovano il buffer pieno

sorgente destinazione T-SAP

utente

F. Musumeci – FIR: Strato di trasporto 38


Controllo di flusso
Sliding window
• Le finestre usate in GBN e SR sono usate anche per
effettuare controllo di flusso

• Problema:
– il trasmettitore può inviare fino a Ws UI senza aver
ricevuto il riscontro
– se l’applicazione al ricevitore legge le UI lentamente, il
buffer in ingresso al T-SAP si svuota lentamente
o Cosa posso fare in ricezione?

– Invio subito il riscontro? oppure

– Aspetto che l’applicazione ricevente svuoti il buffer?

F. Musumeci – FIR: Strato di trasporto 39


Controllo di flusso
Sliding window
• Soluzione “stupida”1: invio subito i riscontri non appena ricevo le
UI correttamente
o si provocherebbe lo scorrimento della finestra in trasmissione
nuove UI trasmesse nuove UI ricevute buffer pieno perdita
• Soluzione “stupida” 2: il ricevitore invia i riscontri solo quando le
UI sono passate al livello superiore (e tolte dal buffer)
– “il buco”: se il ricevitore è lento, al trasmettitore ci saranno
molte ritrasmissioni per effetto del timeout
o la rete viene utilizzata male (per ritrasmissioni “inutili”)
– “la pezza per il buco”: aumentiamo il timeout?
o quando è necessario ritrasmettere rischio di dover aspettare troppo

QUINDI???

F. Musumeci – FIR: Strato di trasporto 40


Controllo di flusso
Sliding window
• Soluzione “smart”: separare il controllo di errore (quindi
l’invio dei riscontri) dal controllo di flusso
– Controllo di flusso “a credito esplicito” con finestra
mobile
– Si inserisce nei riscontri un campo W che indica quante
UI (o quanti byte) si possono ancora ricevere
– Di fatto indica lo spazio
rimanente nel buffer in ricezione
– Soluzione adottata in TCP!!

F. Musumeci – FIR: Strato di trasporto 41