Sei sulla pagina 1di 31

Reti di Calcolatori, A.A. 2005/06 M. Cesati / E.

Betti

Reti di calcolatori

Lezione 9
Lez. 9 — 1 M. Cesati / E. Betti

Il modello di riferimento

5 Application
4 Transport
3 Network
2 Data Link
1 Fisico
Lez. 9 — 2 M. Cesati / E. Betti

Protocolli bi-direzionali

Nei protocolli di livello Data Link uni-direzionali i frame dati viaggiano sempre nella
stessa direzione, ed i frame ack nell’altra

Una comunicazione bi-direzionale si può realizzare con due canali di comunicazione


(almeno half-duplex) ciascuno utilizzante un protocollo uni-direzionale

In questo caso la banda passante di un canale è sotto-utilizzata se i frame dati


viaggiano prevalentemente in una sola direzione

I protocolli bi-direzionali consentono di far viaggiare frame dati e frame ack sullo
stesso canale di comunicazione full-duplex in entrambe le direzioni

Per distinguere i due tipi di frame si utilizza il campo kind posto nella testata del frame
Lez. 9 — 3 M. Cesati / E. Betti

Piggybacking (1)

Il piggybacking è una tecnica che minimizza l’overhead dovuto alla trasmissione delle
informazioni di acknowledgement.

Funziona solo con protocolli bi-direzionali.

Una entità di livello Data Link A invia un frame dati ad una entità di pari livello B.
L’entità B che riceve il frame dati non invia subito un frame ack al mittente A. Al
contrario, l’acknowledgement è trasmesso codificando l’informazione nel campo ack
del successivo frame dati che B dovrà spedire a A.

Si evita cosı̀ l’overhead della costruzione del frame ack, del calcolo del checksum, e
della sua trasmissione.
Lez. 9 — 4 M. Cesati / E. Betti

Piggybacking (2)

Non è possibile che B attenda ad oltranza un frame dati a cui affidare l’acknowled-
gement

Se l’attesa fosse troppo lunga, il frame ack non potrebbe arrivare al mittente A prima
della scadenza del timer, e quindi A ri-spedirebbe inutilmente il frame dati

L’attesa di B per un frame dati a cui affidare il trasporto dell’acknowledgement deve


essere regolata da un timer

Scaduto il termine (pochi millisecondi), B deve inviare un normale frame ack


Lez. 9 — 5 M. Cesati / E. Betti

Protocolli sliding window

I protocolli sliding window sono una classe di protocolli per il livello Data Link

• sono bi-direzionali

• possono utilizzare il piggybacking

• sono più efficienti dei protocolli PAR

L’assunzione di base di questi protocolli è che il canale di comunicazione (livello


Fisico) sia wire-like: due frame senza errori saranno ricevuti nello stesso ordine in
cui sono stati trasmessi
Lez. 9 — 6 M. Cesati / E. Betti

Protocolli sliding window – Numeri di sequenza

In generale, nei protocolli sliding window non è necessario attendere l’acknowledge-


ment di un frame dati prima di inviare il successivo

Di conseguenza, sono necessari più di due numeri di sequenza

In generale, assumiamo che il campo seq del frame sia costituito da n bit, e che
dunque il numero di sequenza vari tra 0 e 2n − 1
Lez. 9 — 7 M. Cesati / E. Betti

Finestra di trasmissione

In ogni protocollo sliding window, al trasmittente è consentito inviare solo frame da-
ti aventi un numero di sequenza compreso in un determinato intervallo chiamato
finestra di trasmissione (od anche finestra di invio)

La dimensione della finestra di trasmissione può variare, cosı̀ come la sua posizione
all’interno dell’insieme di numeri di sequenza

0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7

Nota Bene: se la finestra di trasmissione è vuota (ha dimensione zero), è sempre


possibile estendere la sua dimensione ed inviare un frame!
Lez. 9 — 8 M. Cesati / E. Betti

Finestra di ricezione
In ogni protocollo sliding window, al ricevente è consentito accettare solo frame da-
ti aventi un numero di sequenza compreso in un determinato intervallo chiamato
finestra di ricezione

La posizione all’interno dell’insieme di numeri di sequenza della finestra di ricezione


può variare; in genere (ma non sempre) la dimensione è fissata

0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7

La finestra di ricezione di una certa entità non è in alcun modo legata alla finestra di
trasmissione della stessa entità

In un generico protocollo sliding window, la finestra di trasmissione del trasmittente


e quella di ricezione del ricevente non sono identiche (possono essere in posizioni
differenti nella sequenza di numeri, possono avere dimensioni differenti, eccetera)
Lez. 9 — 9 M. Cesati / E. Betti

Protocolli sliding window – Trasmissione (1)

I numeri di sequenza all’interno della finestra di trasmissione rappresentano frame


dati inviati ma non ancora confermati

Quando il livello Network fornisce un nuovo pacchetto da inviare, l’entità del livello
Data Link:

1. controlla che la finestra di trasmissione non abbia già raggiunto la dimensione


massima
2. assegna al nuovo frame dati il più vicino numero di sequenza alla destra della
finestra di trasmissione
3. trasmette il frame dati
4. allarga la finestra di trasmissione per includere il nuovo numero di sequenza
Lez. 9 — 10 M. Cesati / E. Betti

Protocolli sliding window – Trasmissione (2)

Tutti i frame dati il cui numero di sequenza è all’interno della finestra di trasmissione
devono essere conservati in memoria

Infatti, la mancanza di conferma della loro ricezione implica la possibilità che essi
debbano essere ri-trasmessi

Quando si riceve un acknowledgement per il numero di sequenza più a sinistra della


finestra di trasmissione:

1. la finestra viene accorciata escludendo tale numero

2. il buffer contenente il frame dati viene liberato


Lez. 9 — 11 M. Cesati / E. Betti

Protocolli sliding window – Ricezione


I numeri di sequenza all’interno della finestra di ricezione rappresentano i frame dati
che l’entità Data Link può accettare. La finestra di ricezione generalmente conserva
sempre la stessa dimensione

Quando l’entità Data Link riceve un frame dati:

1. Se il suo numero di sequenza è al di fuori della finestra di ricezione, il frame dati


viene scartato

2. Se il suo numero di sequenza è uguale al numero più a sinistra nella finestra,


il pacchetto viene trasmesso al livello Network e la finestra di ricezione viene
spostata verso destra

3. Se il suo numero di sequenza è dentro la finestra di ricezione, ma non è il numero


più a sinistra, il frame viene salvato in un buffer
Lez. 9 — 12 M. Cesati / E. Betti

Protocolli sliding window – Esempio


Trasmissione

Ricezione

Inizialmente Invio seq=0 Ricez. seq=0 Ricez. ack=0


Lez. 9 — 13 M. Cesati / E. Betti

Protocollo One Bit Sliding Window (1)


La dimensione massima della finestra di trasmissione è 1
La dimensione della finestra di ricezione è fissata a 1

Simile al protocollo PAR, ma è bi-direzionale e usa il piggybacking

I numeri di sequenza sono solo 0 e 1

In trasmissione si controlla il campo ack di ciascun frame ricevuto: contiene il numero


dell’ultimo frame passato al livello Network dall’altra entità:

• Se coincide con quello nella finestra di trasmissione, la finestra si svuota ed un


nuovo pacchetto del livello Network può essere accettato
• Se il numero non coincide, il frame nella finestra di trasmissione viene ritrasmes-
so

Si ha ri-trasmissione anche quando scade il timer fatto partire all’invio di un frame


Lez. 9 — 14 M. Cesati / E. Betti

Protocollo One Bit Sliding Window (2)

In ricezione si accettano solo i frame il cui campo seq ha il valore incluso nella finestra
di ricezione:

• Si pone nel campo ack del prossimo frame uscente il numero di sequenza del
frame accettato

• Si fa avanzare la finestra di ricezione (si inverte il valore del numero di sequenza)

Anche quando il frame non è accettato, si continua ad impostare il campo ack dei
successivi frame uscenti con il numero dell’ultimo frame accettato
Lez. 9 — 15 M. Cesati / E. Betti

Protocollo One Bit Sliding Window – Esempio (1)


A invia (0, 1, A0) hhhh
hhhh
hhh
h
B riceve (0, 1, A0) [→ Network]
( ((((
(( B invia (0, 0, B0)
((((
(
[Network ←] A riceve (0, 0, B0)
A invia (1, 0, A1) hhhh
hhhh
hhh
h
B riceve (1, 0, A1) [→ Network]
(( ((((
( B invia (1, 1, B1)
((((
(
[Network ←] A riceve (1, 1, B1)
A invia (0, 1, A2) hhhh
hhhh
hhh
h
B riceve (0, 1, A2) [→ Network]
(((
(((( B invia (0, 0, B2)
(
((((
[Network ←] A riceve (0, 0, B2)
A invia (1, 0, A3) hhhh
hhhh
hhh
h
B riceve (1, 0, A3) [→ Network]
B invia (1, 1, B3)
ecc.
Lez. 9 — 16 M. Cesati / E. Betti

Protocollo One Bit Sliding Window – Esempio (2)


A invia (0, 1, A0) hhhh
hhhh
hhh
h
B riceve (0, 1, A0) [→ Network]
A invia (0, 1, A0) Q
Q
Q
( Q
( ((((
((( B invia (0, 0, B0)
(
( ( Q
[Network ←] A riceve (0, 0, B0) Q
Q
Q
Q
A invia (1, 0, A1) Q
Q
Q
Q
Q
Q
Q
B riceve (0, 1, A0)
Q
Q
Q
Q 
B invia (0, 0, B0)
Q

 QQ
 Q




B riceve (1, 0, A1) [→ Network]




 B invia (1, 1, B1)
A riceve (0, 0, B0) 




A invia (1, 0, A1) Q
Q 



QQ

 Q
Q
Q
Q
Q
[Network ←] A riceve (1, 1, B1) Q
Q
Q

A invia (0, 1, A2)


B riceve (1, 0, A1)
B invia (1, 1, B1)
ecc.
Lez. 9 — 17 M. Cesati / E. Betti

Protocollo One Bit Sliding Window – Esempio (3)


A invia (0, 1, A0) hhhh
hhhh
hh
 B invia (0, 1, B0)
 hh




B riceve (0, 1, A0) [→ Network]





B invia (0, 0, B0)


[Network ←] A riceve (0, 1, B0)
A invia (0, 0, A0) hhhh
hhhh
hhh
h
B riceve (0, 0, A0)
A riceve (0, 0, B0) B invia (1, 0, B1)
A invia (1, 0, A1) hhhh
hhhh
hhh
h
B riceve (1, 0, A1) [→ Network]
B invia (1, 1, B1)
[Network ←] A riceve (1, 0, B1)
A invia (1, 1, A1) hhhh
hhhh
hhh
h
B riceve (1, 1, A1)
B invia (0, 1, B2)
ecc.
Lez. 9 — 18 M. Cesati / E. Betti

Protocolli sliding window con pipelining (1)

Il protocollo One Bit Sliding Window, ed in generale tutti i protocolli stop-and-wait,


sono altamente inefficienti se il canale di comunicazioni ha un elevato round trip time
(tempo di andata e ritorno del segnale)

Esempio: in un canale satellitare il ritardo tra la trasmissione di un frame e la ricezio-


ne di un ack può essere dell’ordine di 500 millisecondi

I protocolli sliding window con una finestra di trasmissione maggiore di uno sono
molto più efficienti: è possibile inviare diversi frame prima di bloccare per attendere
la conferma

La tecnica è in effetti un particolare tipo di pipelining


Lez. 9 — 19 M. Cesati / E. Betti

Utilizzazione del canale con un protocollo stop and wait


Se il canale ha una capacità di b bit/sec, la dimensione del frame è l bit e il round trip
time è R secondi, la massima utilizzazione della linea (in una direzione) è pari a

l/b l
=
l/b + R l + bR

Se il prodotto bR è grande, l’efficienza sarà bassa, a meno di non utilizzare frame


molto lunghi

Ad esempio, l’efficienza di un protocollo stop and wait su un canale satellitare con


b = 100 kbps, l = 1000 bit e R = 500 millisecondi è
1000 1
= ≈ 2%
1000 + 100000 · 0.5 51
Lez. 9 — 20 M. Cesati / E. Betti

Utilizzazione del canale con pipelining

Supponiamo di spedire W frame prima di bloccare in attesa della prima conferma.


L’utilizzo del canale sarà allora pari a:

W · l/b Wl
=
W · l/b + (R − (W − 1) · l/b) l + bR

Ad esempio, l’efficienza di un protocollo pipelining su un canale satellitare con b =


100 kbps, l = 1000 bit, R = 500 millisecondi e W = 26 è

26 · 1000 26
= ≈ 50%
1000 + 100000 · 0.5 51
Lez. 9 — 21 M. Cesati / E. Betti

Protocolli sliding window con pipelining (2)

Se un frame inviato insieme a tanti altri è danneggiato, esso deve essere scartato

Cosa fare con tutti gli altri frame ricevuti dopo quello scartato?

Vi sono essenzialmente due distinte strategie:

• Protocollo Go back n

• Protocollo Selective repeat


Lez. 9 — 22 M. Cesati / E. Betti

Protocollo Go back n
Nel protocollo Go back n, tutti i frame ricevuti dopo un frame danneggiato (o perso)
sono scartati: la finestra di ricezione è lunga 1

Se un frame ricevuto è scartato perché fuori sequenza, esso non viene mai con-
fermato (però il protocollo è bidirezionale, quindi continuano ad essere inviate le
conferme relative all’ultimo frame passato al livello Network)

Quando il trasmittente va in time-out sul primo frame errato, ri-trasmette l’intera sotto-
sequenza di frame

Se il trasmittente riceve conferma per un certo frame, tale conferma vale anche per
tutti i frame inviati in precedenza e non ancora confermati

Questa strategia minimizza il numero di buffer dell’entità ricevente: vengono ac-


cettati solo i frame che possono essere immediatamente inviati al livello Network
sovrastante
Lez. 9 — 23 M. Cesati / E. Betti

Protocollo Go back n – Esempio

Timeout del frame 2

Ack Ack Ack Ack Ack Ack


0 1 1 1 2 3
0 1 2 3 4 2 3 4 5
A A A  A  A A  A  A  
A A A  A  A A  A  A  
A A A A A A A A 
A A A A A A A A 
A A  A  A A  A  A  A 
A A  A  A A  A  A  A 
A A  A  A A  A  A  A 
ecc.
A A  A  A A  A  A  A 
A A  A  A A  A  A  A 
A A  A  A A  A  A  A 
A A A A A A A A
A A A A A A A A
A  A  A A  A  A  A  A
A  A  A A  A  A  A  A
A  A  A A  A  A  A  A
A  A  A A  A  A  A  A
A  A  A A  A  A  A  A

0 1 ? 3 4 2 3 4

Errore Scartato Scartato


Lez. 9 — 24 M. Cesati / E. Betti

Protocollo Go back n – Numeri di sequenza


Data una finestra di trasmissione di dimensione N + 1, i numeri di sequenza dei
frame saranno compresi tra 0 e N + 1

Attenzione! Se venissero utilizzati soltanto numeri di sequenza da 0 a N , il protocollo


non funzionerebbe:

1. Il trasmittente invia N + 1 frame con numeri da 0 a N


2. Alla fine si riceve una conferma per il frame N
3. Il trasmittente invia altri N + 1 frame con numeri da 0 a N
4. Alla fine si riceve un’altra conferma (via piggybacking) per il frame N

Problema: Se tutti i frame trasmessi al passo 3 fossero persi (o semplicemente


viene perso il frame 0, e tutti gli altri vengono scartati dal ricevente), il ricevente con-
tinuerebbe a trasmettere l’acknowledgement dell’ultimo frame del passo 1 accettato
(N )
Lez. 9 — 25 M. Cesati / E. Betti

Protocollo Selective repeat

Il protocollo Go back n non è efficiente su canali di comunicazione con elevato tasso


d’errore. In questi casi il protocollo Selective repeat è migliore perché ha una finestra
di ricezione di lunghezza maggiore di 1

Il destinatario memorizza in buffer tutti i frame ricevuti con numero di sequenza


all’interno della finestra di ricezione

Ad ogni frame ricevuto, il destinatario invia un acknowledgment con il più alto numero
di frame trasmesso al livello Network, ossia l’ultimo frame della sequenza completa
ricevuta

Il trasmittente ritrasmette un frame solo in conseguenza di un timeout (oppure in caso


di NAK—Negative Acknowledgement)
Lez. 9 — 26 M. Cesati / E. Betti

Protocollo Selective repeat – Esempio

Timeout del frame 2 ...3 ...4

Ack Ack Ack Ack Ack Ack Ack Ack Ack Ack Ack
0 1 1 1 1 1 1 7 7 7 8
0 1 2 3 4 5 6 7 2 3 4 8 9 10 11
B B B  B  B B  B  B  B  B  B  B  B  
B B B B B B B B B B B B B 
B B B B B B B B B B B B B 
B B B B B B B B B B B B B 
B B  B  B B  B  B  B  B  B  B  B  B 
B B  B  B B  B  B  B  B  B  B  B  B 
B B  B  B B  B  B  B  B  B  B  B  B 
ecc.
B B  B  B B  B  B  B  B  B  B  B  B 
B B  B  B B  B  B  B  B  B  B  B  B 
B B  B  B B  B  B  B  B  B  B  B  B 
B B  B  B B  B  B  B  B  B  B  B  B 
B B B B B B B B B B B B B
B B B B B B B B B B B B B
B  B  B B  B  B  B  B  B  B  B  B  B
B  B  B B  B  B  B  B  B  B  B  B  B
B  B  B B  B  B  B  B  B  B  B  B  B
B  B  B B  B  B  B  B  B  B  B  B  B

0 1 ? 3 4 5 6 7 2 3 4 8 9

Errore Mantenuti in buffer 2 – 7 Fuori finestra


→ Network
Lez. 9 — 27 M. Cesati / E. Betti

Protocollo Selective repeat – Numeri di sequenza (1)

Date finestre di trasmissione e ricezione di dimensione N , i numeri di sequenza dei


frame saranno compresi tra 0 e 2N − 1

Attenzione! Se venissero utilizzati una quantità inferiore di numeri di sequenza il


protocollo non funzionerebbe. Siano i numeri tra 0 e M , con M < 2N − 1

1. Il trasmittente invia frame con numeri da 0 a N − 1


2. Il ricevente li accetta e aggiorna la finestra di ricezione; se M < 2N − 1, 0 è
incluso nella nuova finestra
3. Tutte le conferme sono perse, ed il trasmittente invia nuovamente il frame 0
Lez. 9 — 28 M. Cesati / E. Betti

Protocollo Selective repeat – Numeri di sequenza (2)


4. il frame 0 viene memorizzato come nuovo, e si invia l’ack per N − 1 (ultimo
trasmesso a livello Network)
5. Il trasmittente assume che tutti i frame inviati nel passo 1 sono stati accettati,
quindi invia N , N + 1, N + 2, . . . , M . . .
6. Il ricevente vede il frame M , che è all’interno della finestra di ricezione e lo passa
al livello Network.
7. Il ricevente controlla il buffer per il frame 0: è pieno, dunque lo passa al livello
Network

Problema: il frame 0 passato al livello Network la seconda volta appartiene alla


prima sequenza!
Lez. 9 — 29 M. Cesati / E. Betti

Negative Acknowledgement
Fino ad ora un frame con errori era considerato come un frame non arrivato:
semplicemente scartato

La tecnica chiamata NAK (Negative Acknowledgement) permette di migliorare l’effi-


cienza dei protocolli

Un frame NAK è inviato al mittente quando il destinatario

• riceve un frame con errori, oppure


• riceve un frame con un numero di sequenza diverso da quello atteso

Il frame NAK contiene il numero di sequenza del frame che deve essere rispedito.
Migliora le prestazioni perché il trasmittente non deve aspettare la scadenza del time-
out relativo
Lez. 9 — 30 M. Cesati / E. Betti

Protocollo Selective repeat con NAK– Esempio

Ack Ack NAK Ack Ack Ack Ack NAK Ack Ack Ack
0 1 2 1 1 4 5 6 5 5 9
0 1 2 3 4 2 5 6 7 8 9 6 10 11 12
B B B  B  B  B  B  B  B  B B  B  B  
B B B B B B B B B B B B B 
B B B B B B B B B B B B B 
B B B B B B B B B B B B B 
B B  B  B  B  B  B  B  B B  B  B  B 
B B  B  B  B  B  B  B  B B  B  B  B 
B B  B  B  B  B  B  B  B B  B  B  B 
ecc.
B B  B  B  B  B  B  B  B B  B  B  B 
B B B B B B B B B B B B B
          
B B  B  B  B  B  B   B B  B  B  B 
B B  B  B  B  B  B   B B  B  B  B 
B B B B B B B  B B B B B
B B B B B B B  B B B B B
B  B  B  B  B  B  B  B  B  B  B  B
B  B  B  B  B  B  B  B  B  B  B  B
B  B  B  B  B  B  B  B  B  B  B  B
B  B  B  B  B  B  B  B  B  B  B  B

0 1 ? 3 4 2 5 7 8 9 6 10

Errore In buffer 2 – 4 Perso In buffer 6–9


→ Network → Network