Strato di Collegamento Romeo Giuliano romeo.giuliano@uniroma2.it 1
Argomenti Principi di funzionamento dello strato di collegamento Rivelazione e correzione degli errori Protocolli data link elementari (simplex) Senza ritrasmissioni Stop-and-wait Per canali rumorosi Protocolli sliding window 1 bit Go back n Ripetizione selettiva 2
Obiettivi Introduzione allo strato 2 (strato di collegamento) Progetto generale dello strato di collegamento Servizi forniti allo strato di rete, suddivisione in trame, controllo degli errori, controllo di flusso Presentazione di tecniche per la rivelazione e la correzione degli errori Descrizione di algoritmi elementari per ottenere comunicazioni affidabili a livello di strato 2 Sorgente invia semplicemente i dati Destinazione non sia inondata di dati Canali rumorosi Descrivere e analizzare i protocolli utilizzati in situazioni realistiche Comunicazione bidirezionale (duplex) Tempi di trasmissione/elaborazione non trascurabili Pacchetti non sempre disponibili dallo strato di rete Errori a causa del canale di trasmissione (perdita di pacchetti e fuori sequenza) 3
Strato di Collegamento Correzione degli errori e protocolli data link elementari Romeo Giuliano romeo.giuliano@uniroma2.it 4
Argomenti Descrizione dello strato di collegamento Obiettivo, funzioni, servizi Framing, Controllo di errore, Controllo di flusso Protocolli elementari 5
Obiettivo dello strato di collegamento Scopo dello strato data link: ottenere una comunicazione affidabile ed efficiente tra due macchine Ovvero creare un cavo logico tra mittente e destinatario: bit instradati nello stesso ordine in cui sono stati trasmessi Problemi: Connessioni di strato fisico sono affette da errori Presenza di ritardi di propagazione 6
Funzioni dello strato di collegamento Fornire servizi allo strato di rete Incapsulare i flusso di bit in trame (framing) Gestire gli errori di trasmissione (error control) Regolare il flusso di dati (flow control) Ricevitori lenti non devono essere inondati da trasmettitori veloci 7
Funzioni dello strato di collegamento La gestione dei frame è un attività fondamentale nello strato di data link Relazione tra pacchetti e trame 8
Servizi forniti allo strato di rete (a) Comunicazione virtuale (b) Comunicazione reale 9
Servizi forniti allo strato di rete Servizio unacknowledged senza connessione: la macchina sorgente invia frame indipendenti alla macchina destinazione senza aspettare di ricevere acknowledgement No connessione logica, no correzioni di frame errati nello strato data link Servizi real time, canali affidabili Servizio acknowledged senza connessione: la macchina sorgente invia frame indipendenti alla macchina destinazione la quale risponde con acknowledgement. No connessione logica Canali non affidabili (è ripagato il costo della maggiore ridondanza) Servizio acknowledged con connessione: la macchina sorgente e destinatario stabiliscono una connessione logica. Frame numerati. Fasi connessione: instaurazione, trasferimento, abbattimento. 10
Servizi forniti allo strato di rete Posizione del protocollo data link 11
Suddivisione in trame (framing) Garantire che il flusso di bit forniti allo strato di collegamento dallo strato fisico sia privo di errori Suddividere il flusso in trame e calcolare un checksum per ognuna di esse: Conteggio caratteri Flag byte con byte stuffing Flag di inizio e fine con bit stuffing Violazione della codifica dello strato fisico 12
Framing: conteggio caratteri Usa un campo nell intestazione per specificare il numero di caratteri Problema: l algoritmo non funziona in presenza anche di un solo errore Esempio di flusso di caratteri (a) senza errori. (b) con errori. 13
Framing: flag byte con byte stuffing Inserisce un byte speciale (flag byte) all inizio e alla fine di ogni frame Problema: flag byte presente nel dato. Inserimento del byte ESC (byte stuffing). Esempio: a. Una trama delimitata dai byte flag b. Quattro esempi di sequenze di byte prima e dopo il byte stuffing 14
Framing: flag di inizio e fine con bit stuffing Ogni frame incomincia e finisce con un gruppo speciale di bit: 01111110 Bit stuffing: si inserisce uno 0 dopo cinque 1 consecutivi. a. Dati originali b. Dati come appaiono in linea c. Dati come sono memorizzati dopo il destuffing 15
Framing: violazione della codifica dello strato fisico Uso di combinazioni due bit consecutivi uguali per delimitare le trame Può essere usata solo per tecniche di trasmissione che usano codifiche particolari: bit 1 alto-basso bit 0 basso-alto Trame delimitate da trasmissioni alto-alto o basso-basso Nota finale Molti protocolli data link usano l abbinamento della tecnica del conteggio dei caratteri con uno degli altri metodi. 16
Controllo degli errori Problema degli errori nelle linee di trasmissione. Tecniche per assicurare l affidabilità: Acknowledgement positivi (ACK) o negativi (NACK): forma di reazione della destinazione Introduzione di timer: trame non ricevute Assegnazione di numeri in sequenza alle trame: trame duplicate Codici a correzione d errore: inserire informazioni ridondanti per permettere la ricostruzione del blocco in caso di errore. Usato in canali molto rumorosi Codici a rilevazione d errore: inserire informazioni ridondanti per permettere la rilevazione del errore ma non di correggerlo. Usato in canali poco rumorosi 17
Codici a correzione d errore (forward error correction, FEC) Codeword (n bit): dati (m bit) + bit di controllo (r bit) Distanza di Hamming (attraverso XOR) Per rilevare d errori: serve una codifica con distanza d+1 Per correggere d errori: serve una codifica con distanza 2d+1 Uso di una codifica di Hamming per correggere gli errori burst: kr bit di controllo per proteggere km bit dati da errori a burst di lunghezza k Esempio di XOR tra due caratteri Distanza tra le due parole pari al numero di 1 i.e. 3 18
Codici a rilevazione d errore (cyclic redundancy check, CRC) Bit di parità Codifica a blocchi: matrice k x n con riga di parità Codifica polinomiale CRC: si aggiunge un checksum alla fine del frame in modo che il polinomio rappresentato dal frame sia divisibile per il polinomio generatore G(x) In figura è presentato il calcolo del checksum a codifica polinomiale: Generatore: x 4 +x+1 Rileva errori di lunghezza 4 Reminder Trama originale Trama trasmessa 19
Controllo di flusso Frame scartati dalla macchina destinatario se la sorgente trasmette frame troppo velocemente Due approcci: Controllo di flusso tramite feedback: la destinazione manda indietro informazioni per abilitare la sorgente alla trasmissione o per informarla del suo stato Controllo di flusso tramite limitazione della velocità: il protocollo è dotato di un meccanismo per limitare la velocità di trasmissione della sorgente senza alcun feedback (poco usati a livello di strato 2) 20
Protocolli elementari dello strato di collegamento Protocollo simplex senza restrizioni Caso ideale, senza controllo di flusso nè controllo di errori Protocollo simplex stop-and-wait Canale ideale privo di errori Protocollo simplex per canali rumorosi Uso della tecnica ARQ 21
Definizioni di base per i protocolli data link Alcune definizioni necessarie per i protocolli descritti in seguito. Esse si trovano nel file protocol.h trama Kind Seq Ack Info (dati) Continued 22
Definizione dei protocolli (2) 23
Protocollo simplex senza restrizioni Canale ideale no controllo di errore Processamen- to destinatario infinito no controllo di flusso 24
Protocollo simplex stop-andwait La sorgente deve attendere l arrivo dell ack prima di trasmettere un altro frame controllo di flusso Canale privo di errori NOTA: trasmissione simplex ma canale duplex 25
Protocollo simplex per canali rumorosi Protocollo con ACK controllo di flusso Canale rumoroso i.e. possibili trame danneggiate, perse o duplicate ritrasmissioni controllo di errore Acknowledgement positivo o Automatic Repeat request (ARQ) Continued 26
Protocollo simplex per canali rumorosi (2) frame_exp=0 frame_exp=1 SEQ=0 frame_exp=1 ACK=0 frame_exp=1 ACK=0 SEQ=1 frame_exp=0 ACK=1 frame_exp=0 ACK=1 27
Strato di Collegamento Protocolli sliding window Romeo Giuliano romeo.giuliano@uniroma2.it 28
Argomenti Concetto della sliding window Protocolli sliding window 1 bit, go back n, ripetizione selettiva Buffer 29
Protocolli sliding window Nelle situazioni reali serve un canale duplex (bidirezionale) Dati in un verso e ack nell altro Due canali full-duplex: spreco di banda Canale half-duplex: campo kind nell intestazione del frame Tecnica del piggy-backing: ack trasmessi in frame dati Protocolli sliding window (SW): finestra di invio e finestra di ricezione. Protocolli SW: a 1-bit che usa go-back-n che usa la ripetizione selettiva 30
Protocolli sliding window (2) Una sliding window con dimensione 1 e numero di sequenza a 3 bit. a. Inizialmente b. Dopo l invio del primo frame c. Dopo la ricezione del primo frame d. Dopo la ricezione del primo acknowledgement 31
Protocollo Sliding Window a 1-bit Lato trasmittente s.seq trama da trasmettere s.ack ultima trama ricevuta correttamente Lato ricevente s.seq trama attesa s.ack ack della trama trasmessa Continued 32
Protocollo Sliding Window a 1-bit (2) 33
Protocollo Sliding Window a 1 bit (3) Due scenari per il protocollo 4. (a) Caso normale. (b) Caso con problemi. La notazione è (seq, ack, packet number). Un asterisco indica il momento in cui lo strato network accetta un pacchetto 34
Efficienza dei protocolli e utilizzazione del canale Tempo di trasmissione non nullo Combinazione tempi di transito lunghi e larga banda con frame corti è disastrosa per l efficienza Soluzione: permettere alla sorgente di inviare w frame (invece di 1) prima di bloccarsi per attendere l arrivo dell ack Prodotto banda-ritardo di trasmissione elevato necessita di una finestra larga La finestra è saturata rapidamente se la banda del canale è larga La finestra è saturata rapidamente se il ritardo è grande Il prodotto banda-ritardo indica la capacità della pipeline (tubo): Capacità = b bit/s; dimensione frame = g bit; ritardo propagaz. a 2 vie = r s Tempo di trasmissione singolo frame = g/b s; attesa (ritardo) = r s Utilizzazione canale (stop-and-wait), η = (g/b)/(g/b+r) = g/(g+br); Per g<br, η <0.5 Si utilizza il canale per trasmettere w frame (con w>1) quando è in attesa di ack: pipelining η=w g / (g+br); η=100% per w=br/g+1 35
Protocollo Sliding Window basato su goback-n e ripetizione selettiva Pipelining e ripristino degli errori. Effetto di un errore quando a. La finestra della destinazione ha dimensione 1 b. La finestra della destinazione è grande 36
Protocollo Sliding Window basato su goback- n Continued 37
Protocollo Sliding Window basato su goback-n (2) Continued 38
Protocollo Sliding Window basato su goback-n (3) Continued 39
Protocollo Sliding Window basato su goback-n (4) 40
Protocollo Sliding Window basato su goback-n (5) Numero massimo di frame di cui si attende l ack è MAX_SEQ (non MAX_SEQ+1) Problema dei buffer: si ha in trasmissione perché bisogna conservare i frame finché non si è sicuri che siano arrivati correttamente (ack ricevuto) Se arriva l ack n, si rilasciano i buffer dei frame fino a n (, n-2, n-1, n): Ack cumulativi. Si riabilita lo strato network a trasmettere (network_layer_ready) Protocollo 5 ha bisogno di più timer. Ognuno può andare in time out indipendentemente Simulazione di timer multipli via software attraverso un singolo orologio hardware 41
Protocollo Sliding Window basato sulla ripetizione selettiva Continued 42
Protocollo Sliding Window basato sulla ripetizione selettiva (2) Continued 43
Protocollo Sliding Window basato sulla ripetizione selettiva (3) Continued 44
Protocollo Sliding Window basato sulla ripetizione selettiva (4) 45
Protocollo Sliding Window basato sulla ripetizione selettiva (5) Finestra sorgente: da 0 a MAX_SEQ(=7 nell esempio); finestra destinatario: fissa a MAX_SEQ. Problema: sovrapposizione di numeri di sequenza a. Situazione iniziale con una finestra di dimensione sette b. Dopo che sette frame sono stati inviati e ricevuti, ma ancora in attesa di acknowledgement Soluzione: massima dimensione finestra pari alla metà della sequenza di numeri c. Situazione iniziale con una finestra di dimensione quattro d. Dopo che quattro frame sona stati inviati e ricevuti, ma ancora in attesa di acknowledgement 46
Buffer e timer Numero dei buffer è pari alla dimensione della finestra (non al numero di sequenza dei frame) Numero di timer pari al numero di buffer Uso del piggybacking Problema per la trasmissione degli ack se non c è traffico (caso protocollo 5) Nel protocollo 6 si è inserito un timer ausiliario (start_ack_timer) Nel protocollo 6, la destinazione manda indietro un NAK se sospetta un errore Frame danneggiato Frame diverso da quello atteso Scelta time out. Ritardo di propagazione degli ACK: Costante time out > del ritardo cost. Variabile Time out corti: ritrasmissioni inutili Time out lunghi: bassa efficienza (attese lunghe dopo un errore) Impostazione rigida o flessibile del time out 47