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