Controllo di Linea - Dipartimento di Informatica

Transcript

Controllo di Linea - Dipartimento di Informatica
Protocollo di Controllo della
Linea Dati
I semestre 03/04
Š Strato che contiene la logica per ottenere una
Controllo della Linea Dati
linea di comunicazione affidabile
„
Š Aggiunge al livello fisico la logica di controllo per
Prof. Vincenzo Auletta
gestire
[email protected]
http://www.dia.unisa.it/professori/auletta/
„
„
„
Università degli studi di Salerno
Laurea in Informatica
„
2
„
controllo del flusso
controllo degli errori di trasmissione
sincronizzazione delle trame
distinzione tra dati ed informazioni di controllo
gestione della linea
Servizi Offerti
Individuazione degli Errori
Š Due tipi di servizio offerti al livello di rete
Š Senza connessione (connectionless)
Š Il livello fisico non è in grado di garantire
„
„
trasmissione affidabile dei bit
se il ricevente rileva un errore in una trama la
scarta interamente
l’afffidabilità deve essere garantita dai livelli
superiori
„
esponenzialmente con la lunghezza della trama
oriented)
„
„
trasmettitore e ricevente cooperano per ottenere
una trasmissione affidabile
se il ricevente rileva un errore in una trama ne
richiede la ritrasmissione
anche scegliendo la combinazione ottimale di mezzo
trasmissivo, tasso, distanza e codifica non si può
ridurre il BER a 0
Š la probabilità che un frame sia difettoso cresce
Š Orientato alla connessione (connection
3
la codifica dei dati e la sincronizzazione di bit non
sono sufficienti
„
„
Perr = 1 - (1 - BER)n
Es. se BER = 10-6, n = 1000 Î Perr = 10-3
Š serve
4
un meccanismo di
individuare le trame difettose
controllo
per
Idea Base
Tecniche Principali
Š Tutte le tecniche di individuazione degli errori
Š Le principali tecniche di individuazione degli
sono basate sull’uso di codici per l’individuazione
degli errori
„
„
„
errori utilizzate sono
„
calcolati a livello di trame
il trasmettitore calcola il codice relativo ad una trama
ed inserisce il risultato tra le informazioni di controllo
della trama stessa
il ricevente ricalcola lo stesso codice sui dati della
trama e confronta i risultati
„
Controllo di parità
Cyclic Redundancy Check (CRC)
Š se sono differenti la trama è stata alterata durante la
trasmissione
Š In base al tipo di codice utilizzato il ricevente
5
può individuare solo alcune categorie di errori
6
Controllo di Parità
Cyclic Redundancy Check
Š Aggiunge un bit ad un blocco di dati in modo da
Š Basato sul calcolo di una funzione modulo sul
contenuto della trama
Š Terminologia
garantire che il numero di 1 presenti sia fissato
„
„
„
si parla di parità dispari (trasmissioni asincrone) o
parità pari (trasmissioni sincrone)
consente di individuare alterazioni di singoli bit (o di
un numero dispari di bit)
non utilizzabile per combattere errori a raffica
„
„
„
„
Š Es. trasmissione di G (1110001) in parità dispari
„
Š P deve essere scelto in modo da
11100011
„
„
7
M = messaggio da spedire con k bit
F = campo aggiunto al messaggio di n bit (FCS)
T = trama spedita di (n+k) bit
P = pattern di (n+1) bit utilizzato per ottenere F a
partire da M
8
poter calcolare F velocemente
consentire l’individuazione di ampie famiglie di errori
Calcolo del CRC
Polinomi
Š Scegliamo P in modo che sia un divisore di T
Š Aritmetica modulo 2 (OR Esclusivo)
Š Esiste una maniera alternativa di vedere il
calcolo del CRC
„
T = 2n M + F
poniamo F uguale al resto della divisione modulo 2 di
2n M per P (2n M/P = Q + R/P Î F = R)
T/P = 2n M/P + F/P = Q + R/P + F/P = Q
il ricevente riceverà Tr = T + E ed individuerà un
errore se Tr non è divisibile per P
„
„
„
„
Š consideriamo M, P, F e T come polinomi in X a
coefficienti binari
„
9
„
„
„
10
„
CRC-12 = X12 + X11 + X3 + X2 + X + 1
CRC-16 = X16 + X15 + X2 + 1
CRC-CCITT = X16 + X12 + X5 + 1
CRC-32 = X32 + X26 + X23 + X22 + X16 + X12 + X11 +
X10 + X8 + X7 + X5 + X4 + X2 + X + 1
Circuti Digitali per il Calcolo del
CRC
Proprietà del CRC
Š è possibile costruire dei circuiti digitali per
Š Scegliendo opportunamente P(X) è possibile
calcolare il CRC in hardware
estremamente efficiente
„
in
modo
individuare errori
„
costituito da registri e connettori XOR
„
„
„
„
11
Es. M = 110011 Î M(X) = X5 + X4 + X + 1
Š Polinomi più usati
Š P deve contenere almeno tre 1 ed avere il bit
più significativo e quello meno significativo
uguale ad 1
più efficiente da calcolare
12
su singolo bit
su doppi bit se P(X) ha almeno tre 1
su numero dispari di bit se P(X) ha un fattore (X+1)
su ogni sequenza di bit di lunghezza non superiore
alla lunghezza di F
su molte sequenze di lunghezza superiore ad F
Controllo del Flusso
Idea Base
Š Tecnica utilizzata per evitare di sovraccaricare il
Š Il trasmettitore deve spedire una trama solo se
ricevente inviandogli più bit di quanti è in grado
di ricevere
„
„
„
autorizzato dal ricevente
„
il ricevente alloca un buffer per mantenere le trame
ricevute prima di processarli
se le trame arrivano troppo velocemente il buffer va
in overflow
il trasmettitore adatta il suo tasso di trasmissione alle
capacità di ricezione del ricevente
Š le diverse tecniche differiscono nel modo in cui il
ricevente autorizza le spedizioni
„
„
Š Principali tecniche utilizzate
„
13
„
stop-and-wait
sliding window
il ricevente autorizza la spedizione spedendo una
trama al trasmettitore
„
un’autorizzazione per ogni trama, in sequenza
autorizzazioni cumulative
autorizzazioni non in sequenza
14
Flusso senza Errori
Stop-and-Wait
Š Consideriamo prima il caso in cui non ci sono
Š il trasmettitore trasmette una trama alla volta
errori di trasmissione
„
„
„
„
ogni trama è ricevuta correttamente
le trame sono ricevute nello stesso ordine in cui sono
spediti
ogni trama di risposta è ricevuta correttamente
„
dopo aver trasmesso una trama attende un riscontro
(RR o ACK) dal ricevente prima di trasmettere la
trama successiva
il ricevente può ritardare l’invio del messaggio RR
fino a quando non ha risorse sufficienti per ricevere
una nuova trama
Š In ogni istante c’è una sola trama in viaggio
sulla linea
„
15
16
estremamente inefficiente se i tempi di propagazione
del segnale sono alti
Calcolo Efficienza di
Trasmissione
Efficienza di Stop-and-Wait
Š Tempo di trasmissione (Ttr)
„
„
supponiamo
tempo necessario a trasmettere una trama
Ttr = n/r (r = tasso trasm., n = lung. trama)
Ttr < Tpr
Š Tempo di Propagazione (Tpr)
„
„
tempo necessario perché un bit raggiunga il ricevente
Tpr = d * v
(d = distanza, v = velocità)
„
U = Ttr/(Ttr + 2Tpr)
numero di bit che possono essere trasmessi nel
tempo che impiega un bit a propagarsi sulla linea
L = r * Tpr
17
= 1/(1+2a)
con a = Tpr/Ttr
18
Numeri di Sequenza
Š stop-and-wait è inefficiente perché non ci può
Š Ogni RR è relativo ad una certa trama
„
„
„
il trasmettitore può inviare c trame senza attendere il
riscontro
prima di inviare la (c+1)-ima trama deve attendere il
messaggio RR per la prima trama
t = Ttr + 2Tpr
serve un meccanismo per identificare le trame
Š Ogni trama è identificata da un numero di
il trasmettitore deve aspettare che la sua trama
raggiunga il ricevente ed il messaggio RR torni
indietro
sequenza
„
Š La tecnica di sliding window consente la
presenza di c trame sulla linea
„
t = Ttr + Tpr
analogamente per Ttr > Tpr
Sliding Window
essere più di una trama alla volta in viaggio
sulla linea
19
t = 1 + Ttr
t = Tpr
Š Lunghezza in bit (L)
„
t=1
„
„
20
numero a k bit
il trasmettitore può mandare al più 2k – 1 trame
prima di ricevere un RR
altrimenti non sarebbero univocamente identificabili
Finestra
Formato ACK
Š Il trasmettitore mantiene una lista delle trame
Š Il ricevente mantiene una lista delle trame che
che può spedire (senza attendere RR)
„
„
può ricevere
ogni volta che spedisce una trama la elimina dalla
lista
ogni volta che riceve un riscontro aggiunge altre
trame alla lista
„
„
se riceve la prima trama della lista (sia p) manda un
riscontro contenente p+1
indica la prossima trama che si aspetta di ricevere
Š Il trasmettitore ha un contatore modulo 2k per
assegnare i numeri di sequenza alle trame
„
lo incrementa ad ogni invio
21
22
Esempio di Trasmissione con
Sliding Window
Descrizione di Sliding Window
finestra
trasmettitore
finestra
ricevitore
23
24
Dimensione della Finestra
Efficienza di Sliding Window
Š La scelta del parametro k è critica per
Š Dipende dalla dimensione della finestra W e da
a = Tpr/ Ttr
l’efficienza della trasmissione
„
„
al crescere di k aumenta il numero di trame che
possono essere contemporaneamente presenti sulla
linea
aumenta la quantità di risorse di memoria che
trasmettitore e ricevente devono riservare alla
gestione delle trame
se
W >= 2a+1
U= 1
Š Tipicamente si sceglie k = 3 o 7
25
26
Efficienza di Sliding Window
Esempi
Š Calcolare l’efficienza del collegamento quando
una sequenza di 1000 bit è spedita con velocità
di propagazione di 2x108 metri al secondo
se
W < 2a+1
1)
2)
3)
27
U = W/(2a+1)
28
link di 1 Km a
1Mbps e W=2
link di 10 Km a
200Mbps e W=7
link terra-satellite
di 50 000 Km a
2Mbps e W=127
Ttr= 10-3, Tpr = 0,5 10-5
a = 0,5 10-2 U = 1
Ttr/= 0,5 10-5, Tpr = 0,5 10-4
a = 10 U = 0,33
Ttr/= 0,5 10-3, Tpr = 2,5 10-1
a = 500 U = 0,128
Controllo degli Errori
ARQ
Š Le tecniche di controllo degli errori consentono
Š Basati su
di individuare e correggere eventuali errori di
trasmissione
„
„
trasformano un collegamento dati inaffidabile in un
collegamento affidabile
„
Š Gli ARQ più diffusi sono
Š gli errori che si possono verificare sono
„
„
individuazione degli errori (parità, CRC, ecc)
Riscontro positivo e negativo
ritrasmissione per timeout
„
perdita di una trama (Es. gli errori di trasmissione
rendono impossibile la sincronizzazione di trama)
trama danneggiata (la trama è ricevuta ma il suo
contenuto è alterato)
Stop-and-Wait
Go-back-N
Selective-Reject
„
„
„
Š I meccanismi utilizzati per il controllo degli
errori sono detti ARQ (Automatic Repeat
Request)
29
30
Stop-and-Wait ARQ
Trama Danneggiata
Š Basato sulla tecnica di controllo del flusso
Š B rileva l’errore e scarta la trama
Stop-and-Wait
„
„
„
A spedisce una trama ed aspetta fino a quando
arriva l’ACK
A avvia un timer per l’ACK
Š allo scadere del timeout A rimanda la trama
Š allo scadere del timer se l’ACK non è arrivato la trama
viene rispedita
„
A
A deve conservare una copia della trama fino a
quando non arriva l’ACK
Timer
fermato
Timer
avviato
I(N)
31 B
ACK
I(N)
ACK
Timer
avviato
Timer
fermato
I(N+1)
I(N+1)
ACK
ACK
TEMPO
senza mandare nessuna risposta
32
ACK Danneggiato
Analisi di Stop-and-Wait ARQ
Š B riceve la trama e manda l’ACK
Š A non rileva l’ACK perché danneggiato. Allo scadere
Š limitato buffer di memoria
„
del timeout rimanda la trama
Š B riceve anche il duplicato della trama e lo ignora ma
manda l’ACK
„
Timer
avviato
A
Š uso inefficiente della linea di comunicazione
„
I(N)
„
Timer fermato e riavviato
I(N)
ACK(0)
33
I(N)
ACK(0)
I(N)
con l'efficienza
„
ACK(0)
Rilevamento duplicato
34
usato in sistemi con semplici
trasmissione come terminali o PC
dispositivi
di
Go-back-N ARQ
Trasmissione Corretta
Š ARQ che utilizza una tecnica basata sul
Š B riceve una trama corretta con numero di
sequenza p e risponde con un ACK con un
numero di sequenza p+1
Š la risposta può essere
meccanismo della sliding window
„
„
„
„
il trasmettitore manda trame senza attendere ACK e
mantiene una lista delle trame spedite e non
riscontrate
ogni trama è numerata sequenzialmente modulo un
valore fissato
il ricevente manda un ACK per ogni trama ricevuta
quando riceve un ACK il trasmettitore cancella la
trama corrispondente dalla lista di ritrasmissione
„
„
Š se si verifica un errore si deve ritrasmettere la
35
per migliorare l’efficienza si usano tecniche basate
su sliding window (ARQ continuo)
Š in generale si bilancia la limitatezza del buffer
I(N+1)
TEMPO
B
U = (1-P)/(1+2a)
Š P = prob. frame errato (no errori su ACK)
per distinguere le due copie si utilizzano due ACK diversi:
ACK0 e ACK1
Timer terminato/riavviato
una sola trama da conservare
trama errata e tutte le successive
36
inserita in una nuova trama di controllo (che non
contiene dati)
inglobata in una trama contenente dati che doveva
essere già trasmessa (piggybacking)
Esempio di Ritrasmissione per
Trama Danneggiata
N+1
N
N
I(N)
38
T(N) avviato
N+1
RR
I(N+1)
„
RR
)
+1
I (N
„
)
)
I (N
1
I(N+1)
N+1
ACK
(N+
I(N)
N+1
N
I(N)
RR
N
N
B
N+1
N+1
N+1
N+3
N+1
N+4
N+1
N+1
N+1
B
N+1
TRAME SCARTATI
„
N+1
N
N
N+2
non lo riceve
N+1
Ack
(N+
1)
N
TEMPO
Š B riceve la trama p e manda l’ACK(p+1) ma A
A
T(N) arrestato
I(N+4)
ACK Danneggiato
P-bit timer bloccato/
T(N+1) avviato
T(N+1) scaduto/ P-bit timer
avviato
T(N+1) avviato
Stato di ritrasmissione
)
+1
I (N
N
Esempio di Ritrasmissione per
Trama Danneggiata
)
+4
I (N
37
N+4
N+3
N+2
N+1
I(N+2) I(N+3) I(N+4) I(N+1)
N
B risponde con un RR contenente il numero di trama
attesa (p)
)
+3
I (N
)
+1
I (N
timeout A manda un RR con P-bit a 1
„
N+4
N+3
N+2
N+1
N+3
N+2
N+1
A
N+5
I(N+1) I(N+2) I(N+3) I(N+4) I(N+1) I(N+2)
I(N)
Š se A non manda altre trame, quando scade il
N+4
)
+2
I (N
B riceve una trama diversa da quella attesa, la scarta
e manda un REJ p (chiedendo ad A di rispedire tutte
le trame a partire da p)
N+3
N+2
N+1
N
)
I (N
„
N+2
Ack
(N+
2)
danneggiata e la scarta
Š se dopo un certo periodo di tempo A manda la
trama p+1
N+1
+1)
N
REJ
(N
Š B riceve una trama con numero di sequenza p
Ack
(N+
1)
Trama Danneggiata
40
se A riceve in seguito un ACK per una trama q > p
prima che il timer della trama p scada allora rimuove
p dalla coda
se il timer di A per la trama p scade invia un RR con
P-bit a 1 ed avvia il P-bit timer
se il P-bit timer scade A avvia una procedura di reset
Esempio di Ritrasmissione per
ACK Danneggiato
N
N+1
N+2
Š B riceve una trama fuori ordine ed invia un
A
N+5
N+4
N+3
N+2
N+1
N
N+3
N+2
N+1
N
N+2
N+1
N
N+1
N
N
N+4
N+3
REJ Danneggiato
REJ(p) che A non riceve
„
N+4
N+3
„
Ack
(N+
3)
Ack
(N+
2)
)
+4
I (N
)
+3
I (N
TEMPO
I(N+1) I(N+2) I(N+3) I(N+4)
N
N
)
+2
I (N
)
+1
I (N
)
I (N
I(N)
Ack
(N+
1)
I(N+1) I(N+2) I(N+3) I(N+4)
Ack
(N+
1)
I(N)
N+1
N+1
N+2
N+2
N+3
N+3
N+4
N+4
B
N+5
41
42
Dimensione della Finestra con
Go-back-N
Analisi di Go-back-N
Š Se gli identificatori delle trame sono a k bit la
Š preserva l’ordine delle trame minimizzando
l’utilizzo della memoria
finestra può contenere al più 2k – 1 trame
„
„
a causa dell’interazione tra controllo degli errori e
riscontro
in ogni trama spedita da B deve essere piggybacked
un numero di ACK per A
„
„
Š la
„
„
„
A manda la trama 0 e riceve ACK(1)
A manda trame 1, 2, 3, 4, 5, 6, 7, 0 e riceve un
altro ACK(1)
il secondo ACK potrebbe dire che tutti le trame sono
state ricevute oppure che tutte sono state perdute
A deve conservare solo le trame spedite e non
riscontrate
B deve conservare solo l’ultima trama ricevuta
ritrasmissione di trame già ricevute
correttamente causa un uso inefficiente della
linea di comunicazione
Š per la sua semplicità di implementazione è l’ARQ
più utilizzato
Š Esempio con finestra di 2k trame
43
equivalente al caso in cui B non manda nulla
il timer di A per la trama p scade ed A invia un RR
con P-bit a 1
44
Efficienza di Go-back-N
Selective-Reject ARQ
Š se W >= 2a+1
„ U = (1-P)/(1+2aP)
Š Ritrasmette solo le trame che sono state
effettivamente ricevute con errori
A deve mantenere una lista di tutte le trame
trasmesse e non ancora riscontrate
B deve mantenere una lista delle trame ricevute fuori
sequenza
A e B devono essere in grado di gestire inserimenti e
cancellazioni di trame fuori sequenza
„
Š se W < 2a+1
„ U = W(1-P)/[(2a+1)(1-P+WP)]
„
„
Š difficile da implementare
i tempi di elaborazione di A e B possono divenire
inaccettabili
„
45
46
Esempio Trasmissione con
Selective-Reiject ARQ
N+3
N+2
N+1
N+1
N+4
N+3
N+2
N+6
N+5
N+1
N+4
N+3
N+2
N+5
N+1
N+4
N+3
N+2
A
I(N+1) I(N+2) I(N+3) I(N+4) I(N+1) I(N+5)
)
+5
I (N
I(N)
Stato di ritrasmissione
Ack
(N+
5)
)
+1
I (N
47
„
N+4
N+3
N+2
N+1
N+5
)
+4
I (N
„
B manda SRJ(4) e conserva la trama 5
A rimanda la trama 4
B riceve la trama 4 e manda un RR(6)
N+5
)
+3
I (N
„
N+4
)
+2
I (N
trama 5
I(N)
)
+1
I (N
Š Esempio: B aspetta la trama 4 ma riceve la
N+1
N
N
N+3
N+2
N+1
N
)
I (N
„
le trame fuori sequenza vengono comunque
conservate
B ha un timer per ogni trama. Allo scadere del timer
per la trama p manda SREJ(p)
N+2
)
„
N+1
(N+
1
risponde con un ACK negativo (SREJ) riferito
alla trama che sta attendendo
N
SRE
J
Š Quando B riceve una trama fuori sequenza
Ack
(N+
1)
ACK Negativo
TEMPO
I(N+2) I(N+3) I(N+4) I(N+1) I(N+5)
N
N+2
N+2
N+3
N+2
N+3
N+4
N+2
N+3
N+4
N+5
B
N+1
N
N+1
N+1
N+1
N+1
N+1
N+5
N+6
Numeri di Sequenza con
Selective-Reject ARQ
Efficienza di Selective-Reject
Š La dimensione della finestra è molto più piccola
Š se W >= 2a+1
„ U = 1
con Selective-Reject ARQ
„
bisogna evitare sovrapposizioni tra la finestra di
invio e quella di ricezione
Š se W < 2a+1
„ U = W(1-P)/(2a+1)
Š Esempio:
„
„
„
„
A manda frame da 0 a 6
B risponde con ACK(7) ma la risposta va persa
allo scadere del timeout A rispedisce 0
B pensa che 0 sia un nuovo frame e che il frame 7
si sia perso e manda un SREJ(7)
Š con identificatori a k bit si usa una finestra di
49
dimensione 2k-1
50
Confronto tra Efficienze ARQ
P = 10-3
51