Datalink

Materie:Appunti
Categoria:Sistemi

Voto:

2 (2)
Download:116
Data:18.06.2007
Numero di pagine:8
Formato di file:.doc (Microsoft Word)
Download   Anteprima
datalink_1.zip (Dimensione: 5.62 Kb)
trucheck.it_datalink.doc     17.93 Kb
readme.txt     59 Bytes


Testo

LIVELLO DI DATA LINK (LIVELLO DI COLLEGAMENTO)

Il livello di DataLink si occupa della suddivisione in frame, del controllo degli errori di trasmissione e del controllo di flusso.
Il livello di collegamento della stazione mittente riceve i dati dal livello superiore (di rete) e li suddivide in frame, aggiungendo informazioni di controllo all’inizio e alla fine, poi passa i frame al livello fisico che provvede ad inviarli sul mezzo trasmissivo.
Il livello di collegamento della stazione ricevente prende il flusso di bit che arriva e comprenderne la suddivisione in frame. Le informazioni di controllo aggiunte dal livello paritetico vengono tolte ed elaborate e se il frame i dati contenuti nel frame vengono inviati al livello superiore (di rete).
Gli errori di tramissione vengono gestiti aggiungendo un codice di controllo, possono essere codici correttori che permettono di individuare e correggere eventuali errori o codici rilevatori che permettono solo di individuare gli errori, ma non di correggerli. La stazione mittente calcola il codice, la ricevente lo ricalcola e controlla con il codice inviato se vi sono errori. Se il servizio è inaffidabile il pacchetto viene scartato e devono essere i livelli superiori ad accorgersene, se il servizio è affidabile bisogna avvisare il mittente perché ritrasmetta il frame.
Il livello di datalink può offrire servizi di tipo non connesso non affidabile, non connesso affidabile, connesso e affidabile. Nei servizi connessi il controllo di flusso stabilisce come avviene la comunicazione tra le stazioni, regola i riscontri e la velocità di lavoro delle stazioni in modo che possano comunicare in modo adeguato.

La trasmissione seriale può avvenire in modo sincrono o asincrono.
Nella trasmissione asincrona ogni carattere trasmesso viene preceduto e seguito da segnali che indicano l’inizio e la fine del carattere (segnali di start e stop). Ogni carattere è indipendente dagli altri e l’intervallo di tempo tra l’invio di due caratteri è imprecisato.
Nella trasmissione sincrona i caratteri da inviare vengono raggruppati in messaggi (frame) e fatti precedere da caratteri di sincronizzazione. La trasmissione è più veloce perché vi è una riduzione dei tempi morti, ma un errore in un singolo bit può danneggiare l’intero messaggio inviato.
I protocolli di trasmissione sincrona si dividono in BCP (protocollo orientato al byte) in cui viene mantenuta la suddivisione in caratteri del messaggio e BOP (protocollo orientato al bit) in cui i messaggi sono visti come una successione di bit.

Il Framing consiste nel suddividere in frame le informazioni da trasmettere.
Nella trasmissione orientata al byte ogni frame inizia con la sequenza ascii DLE STX e finisce con la sequenza DLE ETX. Se un frame si rovina e la destinazione perde la sincronizzazione basta trovare il successivo DLE STX o DLE ETX. Il carattere DLE può però comparire in un frame, si ricorre quindi al character stuffing, ossia aggiungendo un ulteriore DLE ad ogni DLE, che verrà rimosso a destinazione prima di passare il frame al livello di rete, in questo modo solo i DLE singoli vengono interpretati come delimitatori.
Nella trasmissione orientata al bit ogni frame inizia e finisce con la sequenza 01111110, chiamata flan. Questa sequenza può comparire casualmente nei dati, si ricorre quindi alla tecnica del bit stuffing, ossia inserire in trasmissione uno 0 dopo una sequenza di cinque 1, indipendentemente che il bit successivo sia 0 o 1, in modo che non ci potranno mai essere sequenze di sei 1, in ricezione bisogna provvedere ad eliminare i bit inseriti, rimuovendo sempre uno 0 dopo cinque 1 consecutivi.
Un’altra tecnica usa la violazione di codifica del livello fisico, questo metodo è applicabile quando la codifica sul mezzo fisico contiene delle ridondanze, un valore della codifica non usato per i dati può essere utilizzato per delimitare i frame.

I codici correttori (FEC) permettono non solo di capire che si è verificato un errore ma anche di individuare la posizione e quindi correggerlo. I codici rilevatori (ARQ) permettono soltanto di capire che il frame non è corretto. In caso di errore se il servizio è inaffidabile il frame può essere semplicemente scartato, se la linea deve essere affidabile e il codice è solo rilevatore il ricevitore deve richiedere al mittente la ritrasmissione del frame.
Il codice di Hamming è un codice correttore che permette di aggiungere un certo numero di bit ai bit di dai in modo di comporre parole con distanza 3 (la distanza di Hamming indica quanti errori si possono rilevare e quanti se ne possono correggere, il numero di bit diversi tra due parole di codice viene detta distanza di Hamming) in grado di rilevare e correggere errori su un singolo bit. I bit aggiunti sono bit di parità calcolati su sottoinsiemi di bit della parola di codice, numerando a partire da 1 a sinistra i bit che compongono la parola di codice, i bit di parità vengono inseriti nelle posizione che sono potenze di 2.
Il CRC (codice a ridondanza ciclica) è utilizzato per la semplice rilevazione degli errori. I bit di dati da invaire vengono considerati come coefficienti (valore 0 o 1) dei termini di un polinomio dove i termini con coefficiente 0 sono assenti e con coefficiente 1 sono presenti. Viene inoltre utilizzato un polinomio G(x) chiamato generatore polinomiale. Il metodo si basa sul calcolo di una checksum che dipende dai dati e da G(x). Il mittente invia un frame composto dai dati e dalla checksum, per verificare la correttezza il ricevente deve dividere il frame per G(x) e se è senza errori non deve dare resto. Il metodo non è infallibile perché si possono verificare errori che si compensano fra di loro.

Nei servizi connessi e affidabili le stazioni mittenti e riceventi stabiliscono una connessione prima dell’invio dei dati, i frame da inviare vengono numerati e il livello di collegamento garantisce che ogni frame venga ricevuto corretto, nell’ordine giusto e non duplicato. Il controllo di flusso deve garantire che i frame arrivino a destinazione (per esempio con degli back di conferma), deve fare in modo che il ricevente possa distinguere le varie copie dall’originale (numerando i frame), deve controllare la velocità di trasmissione-ricezione dei frame per non perdere frame.
La tecnica stop and watt permette di controllare il flusso di frame in modo che il mittente possa mandare un nuovo frame solo dopo essersi assicurato che il ricevente abbia ricevuto il frame precedente. Ogni volta che si spedisce un frame il ricevente manda un riscontro (ack), dopo aver ricevuto il riscontro si procede all’invio del frame successivo. Ad ogni invio il mittente fa partire un timer, se non riceve il riscontro prima dello scadere del timer rimanda lo stesso frame. Il timer può scadere perché il frame è andato perso o perché è andato perso il riscontro, in questo caso al successivo invio il ricevente deve scartare il frame duplicato e reinviare il riscontro (per scartare i frame duplicati i frame devono essere numerati (si alternano 0 e 1).
La tecnica sliding windows permette al mittente di trasmettere più frame prima di ricevere il riscontro del primo. Ogni frame contiene un numero progressivo, vengono usati ciclicamente. L’algoritmo usa una finestra per il mittente, che contiene i numeri dei frame che sono già stati spediti ma per cui non si è ancora ricevuta una conferma, e una finestra per il ricevente, che contiene i numeri dei frame che può ricevere senza doverli subito confermare e passare al livello di rete. Il mittente deve mantenere in memoria i frame i cui numeri rientrano nella finestra perché può essere necessario rispedirli se non si è ricevuto il riscontro. Quando il livello di rete passa un pacchetto al datalink, questo costruisce un frame assegnandogli un numero progressivo, poi lo passa al livello fisico per la spedizione, aumenta di un numero la finestra di trasmissione, conservando il frame in un buffer. Se viene raggiunta la dimensione massima della finestra non si può ricevere altri pacchetti dal livello di rete. Quando il mittente riceve il riscontro il lato inferiore viene aumentato di uno e viene liberato il buffer corrispondente. All’invio di ogni frame viene fatto partire anche un timer (un timer per ogni frame inviato), se il timer scade prima di aver ricevuto il riscontro il frame viene rispedito.
Il ricevente deve mantenere in memoria i frame che ha ricevuto ma che non ha ancora potuto passare al livello di rete (memorizzati in un buffer). La dimensione del ricevente è fissa e indica il numero di frame che possono essere accettati senza che vadano persi dei frame. I numeri contenuti nella finestra indicano i numeri dei frame attesi. Ad ogni frame che arriva si controlla se il suo numero cade all’interno della finestra, se è così e non è stato ancora ricevuto viene memorizzato. Quando viene ricevuto un frame corrispondente al numero corrispondente all’estremità inferiore della finestra, il frame viene passato al livello di rete, viene inviato al mittente un riscontro e la finestra viene fatta scorrere di un numero.
Una finestra di ricezione di dimensioni 1 indica che possono essere ricevuti solo frame ordinati. Se anche la finestra del mittente è 1 si tratta di uno stop and wait.
Nella tecnica go back n se si verifica un errore i frame ricevuti prima dello scadere del timer vengono scartati mentre nella tecnica selective repeat vengono mantenuti in un buffer e riordinati quando si è ricevuto il frame mancante, nel frattempo possono essere scaduti altri timer e quindi mandati pacchetti duplicati che verranno scartati.
Un miglioramento consiste nell’utilizzare dei frame di riscontro negativo (nack), cioè delle richieste di ritrasmissione di frame errati. Per migliorare l’uso della banda di trasmissione si può utilizzare la tecnica del piggybacking, quando una stazione riceve un frame di dati, invece di inviare immediatamente un riscontro, aspetta di dover inviare a sua volta un frame di dati e inserisce il riscontro in un campo del frame, mandando un unico frame invece di due. Se il tempo di attesa è lungo il riscontro deve essre inviato separatamente in modo da non far scadere il timer del mittente.

I protocolli di linea sono i protocolli del livello di datalink che vengono usati sulle linee pubbliche per la trasmissione dei dati. I protocolli SLIP e PPP vengono usati nella communicazione punto a punto tra due router o più spesso nella connessione tra router e provider.
SLIP è un protocollo per consentire ai pacchetti TCP/IP di essere trasferiti su linee telefoniche, prende un pacchetto IP, lo inserisce in unf rame e lo invia sulla linea. E’ un protocollo orientato al byte, supporta solo il trasferimento di pacchetti IP, bisogna conoscere in anticipo l’indirizzo IP.
PPP è lo standard internet attualmente utilizzato per i collegamenti punto a punto. Permette di trasportare più tipi di protocolli su un’unica connessione, di negoziare le opzioni di connessione, di assegnare dinamicamente gli indirizzi IP e di gestire gli errori e l’autenticazione. Il frame comprende un byte come separatore, l’indirizzo di destinazione, byte di controllo, tipo di protocollo, campo dati di lunghezza variabile e una checksum per il controllo degli errori.

Un altro problema del livello di datalink è quello di stabilire chi deve usare il canale quando c’è un conflitto per utilizzarlo. Il controllo viene gestito da un sottolivello del datalink chiamato MAC (medium access control).
Ci sono diversi algoritmi per determinare l’allocazione di un canale, algoritmi statici (aloha e CSMA) o deterministici (prenotazione e token ring).
I protocolli in cui le stazioni controllano la portante sono detti CSMA cioè protocolli multiaccesso e possono essere di vario tipo: 1-persistente (quando una stazione deve inviare un frame ascolta prima il canale, se è libero trasmette, se è occupato aspetta finché non si libera, se si verifica una collisione, aspetta un po’ e riprova), non presistente (se il canale non è libero non continua ad ascoltare ma aspetta un po’ e poi riascolta), p-persistente (il tempo viene considerato diviso in slot, la stazione ascolta all‘inizio di ogni slot e se è libero trasmette con probabilità p, oppure aspetta il prossimo slot con probabilità 1-p, se anche in questo slot il canale è libero, trasmette con probabilità p o aspetta con probabilità 1-p, se trova il canale occupato è come per una collisione, aspetta un po’ e riprova ad ascoltare), /CD (la stazione ascolta il canale non solo prima ma anche mentre sta trasmettendo, in questo modo si accorge se si è verificata una collisione è può bloccare la trasmissione).
Il protocollo token ring si usa in reti ad anello le cui stazioni sono collegate una all’altra in modo punto a punto. Perché una stazione comunichi con l’altra il frame deve passare tutto l’anello e quindi due stazioni non possono trasmettere contemporaneamente. Il controllo d’accesso all’anello avviene con il metodo di accesso a gettona. Se una stazione vuole trasmettere deve impadronirsi di una sequenza di bit che viaggia nell’anello (gettone), una volta trasmesso rilascia il gettone.

Esempio