# Introduzione alle reti telematiche/Livello 2 OSI

Introduzione alle reti telematiche
Copertina Tutti i moduli · Sviluppo
    CopertinaIntroduzione alle reti telematiche/Copertina
* Nozioni introduttiveIntroduzione alle reti telematiche/Nozioni introduttive
* OSIIntroduzione alle reti telematiche/OSI
* Protocolli a finestraIntroduzione alle reti telematiche/Protocolli a finestra
* Livello 1 OSIIntroduzione alle reti telematiche/Livello 1 OSI
* Livello 2 OSIIntroduzione alle reti telematiche/Livello 2 OSI
* Reti localiIntroduzione alle reti telematiche/Reti locali
* Standard LANIntroduzione alle reti telematiche/Standard LAN
* Interconnessione LANIntroduzione alle reti telematiche/Interconnessione LAN
Modifica il sommario
Il livello di collegamento (data link) permette il trasferimento di unità dati del livello rete e cerca di fronteggiare i malfunzionamenti dello strato fisico.

## Funzioni

* delimitare le trame, cioè capire dove si trovano l'inizio e la fine di una PDU, in diversi modi:
** vi sono bit che delimitano esplicitamente la PDU o ne indicano la lunghezza;
** i pacchetti sono a lunghezza fissa;
** la fine di un pacchetto e l'inizio di un altro corrisponde a un silenzio nella trasmissione;
* multiplare i flussi provenienti dagli strati superiori in un mezzo fisico;
* risolvere i problemi di indirizzamento;
* rilevare gli errori;
* utilizzare i protocolli a finestra per:
** fare il controllo di flusso, cioè evitare di inondare la destinazione se non è pronta;
** controllare i numeri di sequenza;
** correggere gli errori;
* regolare l'accesso multiplo nei canali condivisi;
* fare il controllo di flusso sull'interfaccia verso i livelli superiori.

## HDLC

L'HDLC è lo standard ISO del protocollo SDLC, da cui derivano:
* LAP-B;
* LLC per reti locali;
* PPP per collegamenti punto-punto su linea commutata;
* LAP-F per reti Frame Relay.
Le PDU hanno il seguente formato:

### Campi di delimitazione

01111110 è la sequenza che delimina l'inizio e la fine di una PDU, ma è la combinazione vietata nei dati. Nasce il problema se l'utente vuole trasferire proprio la sequenza vietata.
Si può implementare a livello hardware una regola di tipo bit-stuffing: se viene ricevuta una sequenza di 5 bit a 1:
* se il sesto bit è un 1: la PDU è terminata;
* se il sesto bit è uno 0: il sesto bit viene ignorato e la lettura continua al settimo bit.
In questo modo se l'utente vuole inviare la sequenza 01111110, la PDU conterrà la sequenza 011111010.

### Campo CRC

Il codice CRC segue i dati perché così l'apparato di ricezione può iniziare a calcolare il CRC dei dati appena sono stati ricevuti mentre aspetta di ricevere anche il CRC di controllo.

### Campo di controllo

Il campo di controllo differenzia le PDU:
* N(S): numero di sequenza;
* N(R): numero di riscontro;
* P/F: bit di poll (se inviato dalla stazione primaria) o bit di final (se inviato dalla stazione secondaria). L'invio di un poll specifica che il mittente attende obbligatoriamente una risposta; il final è la risposta a un poll. Il mittente non può emettere un altro P = 1 prima di aver ricevuto un F = 1, perché altrimenti non saprebbe a quale richiesta risponderebbe il final.

## LAP-B
### Campo di controllo
#### Trame di informazione (I)

Le trame di informazione permettono di trasferire i dati.
* N(S) = numero di sequenza della PDU trasmessa;
* N(R) = numero di sequenza della PDU attesa (ACK).
È quindi possibile il piggybacking: il trasmettitore può mandare insieme ai dati anche l'ACK relativo al flusso di dati in direzione inversa.

#### Trame di supervisione (S)

Le trame di supervisione permettono di trasferire ACK senza mandare dei dati. I due bit SS possono comunicare tre informazioni di stato:
* RR (ricevitore pronto): fornisce riscontro positivo;
* RNR (ricevitore non pronto): fornisce riscontro positivo, ma dichiara che il ricevitore non è disponibile (controllo di flusso);
* REJ (reject): richiede di ritrasmettere tutte le PDU a partire da N(R).

#### Trame non numerate (U)

Le trame non numerate permettono il controllo della trasmissione, con comandi e risposte sui 5 bit M:
* SABM(E): (re)inizializza il collegamento, specificando anche se la numerazione delle PDU è su 3 o 7 bit;
* DISC: annuncia la chiusura del collegamento;
* UA: ACK alla PDU di tipo SABM o DISC.

### Campo di indirizzo

L'indirizzo non sempre è quello del destinatario: nel caso di una risposta viene specificato l'indirizzo del mittente.

### Tecniche di recupero degli errori

Nel LAP-B sono implementabili varie tecniche di recupero degli errori:

## LLC

Nelle reti locali il livello 2 è diviso in due sottolivelli: LLC e MAC.
IEEE 802.2 è lo standard ISO dell'LLC.
Il formato delle PDU LLC è:
Mancano i campi di delimitazione e di CRC perché sono demandati al MAC. Il campo di controllo è di 1 byte nelle PDU non numerate, e di 2 nelle PDU numerate. Il campo dati ha una dimensione multipla del byte. Il campo di indirizzo contiene gli indirizzi delle SAP sorgente e di destinazione.
Deve essere specificato anche quale protocollo usa il livello superiore.

### SNAP

Lo SNAP è una particolare implementazione dell'LLC. Il formato delle PDU è:
Nel campo dati, 5 byte vengono usati per definire il protocollo di livello superiore usato dalla PDU contenuta. In particolare, il campo OUI è assegnato in modo univoco a un ente o società, che può definire i propri tipi di protocollo con i due byte a fianco.

## PPP

Il PPP è utilizzato per collegamenti punto-punto cablati:
* collegamenti su linea telefonica tra il modem dell'utente e il provider Internet;
* connessioni SONET/SDH;
* circuiti ISDN.

### Obiettivi

* sono presenti i campi di delimitazione delle PDU (detti flag);
* riconosce gli errori ma non li corregge;
* multipla più protocolli di livello rete;
* controlla l'attività del collegamento;
* permette la negoziazione dell'indirizzo di livello rete (tipicamente IP): i nodi ai due estremi del collegamento apprendono o configurano i propri indirizzi di rete.
Non si occupa né di controllo di flusso né di mantenimento della sequenza.
Il formato delle PDU è:
I campi di indirizzo e di controllo non hanno significato perché in una comunicazione punto-punto non serve l'indirizzo. Il campo di protocollo ha funzione analoga a quello dell'LLC SNAP.
Lo stuffing è a livello di byte: esiste un byte di escape (01111101) che interviene sia quando nei dati compare un byte uguale al byte di delimitazione (01111110), sia quando compare un byte uguale al byte di escape stesso:
Il protocollo PPP-LCP ha il compito di aprire e chiudere una connessione PPP, negoziando alcune opzioni (lunghezza massima dei frame, protocollo di autenticazione, ecc.).

## LAP-F

Le reti Frame Relay sono reti a pacchetto con servizio di circuito virtuale (tipicamente permanenti):
* velocità: tra 64 kb/s e 2 Mb/s;
* dimensione pacchetti: variabile, max 4 KiB.
Le reti Frame Relay utilizzano il protocollo LAP-F.
Il formato delle PDU è uguale a quello dell'HDLC, ma i campi si dividono in due categorie:
* DL-CORE (flag + indirizzo + CRC): utilizzato da tutti i nodi della rete;
* DL-CONTROL (controllo): utilizzato solo dal mittente e dal destinatario.
Il campo di indirizzo è composto da alcuni sottocampi, tra cui:
* DLCI: identifica il circuito virtuale;
* FECN e BECN: avvisano esplicitamente la sorgente e la destinazione che un nodo della rete è congestionato (il TCP/IP si accorge implicitamente di congestioni tenendo sotto controllo le perdite di pacchetti);
* DE: specifica la priorità del pacchetto;
* C/R: distingue se il pacchetto è un comando o una risposta.

## ATM

Le reti ATM sono reti B-ISDN a pacchetto con servizio di circuito virtuale. La dimensione dei pacchetti è fissa: 53 byte, di cui 48 byte per i dati e 5 byte per l'intestazione.

### Svantaggi

* la dimensione dei pacchetti è fissa → per trasportare un singolo byte di informazione servono altri 52 byte;
* la dimensione dei pacchetti è piccola → molta banda è usata per le intestazioni (quasi il 10%).

### Vantaggi

* velocità elevate (min. 622 Mb/s);
* la regolarità del formato ATM velocizza il processo di elaborazione dei pacchetti e semplifica l'hardware;
* bassa latenza e basso ritardo di pacchettizzazione → adatto per il trasporto di voce (telefonia) e video.
Le reti ATM hanno un modello molto complesso, derivato da una mentalità "da operatore telefonico" per avere il controllo su tutta la rete e garantire un'alta affidabilità ai guasti.

### Strato di adattamento ad ATM (AAL)

Quando ATM era stato progettato, si pensava a PC dotati direttamente di schede ATM. Oggi in realtà i PC hanno implementato solo il protocollo IP, e l'ATM è usato solo in alcune parti della rete che richiedono una certa affidabilità, ma servono dei router che convertano in maniera trasparente i pacchetti ATM in pacchetti IP e viceversa.
Le reti ATM hanno un approccio core and edge: al di sopra dello strato ATM (core) vi è uno strato di adattamento (edge), detto AAL, che è presente solo nel terminale di sorgente e in quello di destinazione, ed è appunto usato per suddividere i pacchetti IP in pacchetti ATM.
Il livello AAL è in grado di gestire:
* gli errori di trasmissione;
* la pacchettizzazione;
* la perdita di pacchetti;
* il controllo di flusso.

#### Classi di servizio

Sono definite 4 classi di servizio AAL in base a 3 parametri legati alla qualità del servizio:
| | Classe A | Classe B | Classe C | Classe D |
| Modalità di temporizzazione fra sorgente e destinazione | necessaria | necessaria | non necessaria | non necessaria |
| Velocità di trasmissione della sorgente | costante (CBR) | variabile (VBR) | variabile (VBR) | variabile (VBR) |
| Modalità di connessione | orientato alla connessione | orientato alla connessione | orientato alla connessione | non connesso |
| Tipo di PDU AAL | AAL tipo 1 | AAL tipo 2 | AAL tipo 3/4 - 5 | AAL tipo 3/4 - 5 |
| Possibili applicazioni | voce 64 kbit/s video CBR | video/audio VBR | dati | dati |
* ↑ Nelle applicazioni real-time (ad es. voce) ci sono dei vincoli temporali, cioè i pacchetti non devono arrivare con eccessivo ritardo.
* ↑ Non vi sono particolari vincoli temporali, basta che i pacchetti arrivino.
* ↑ Sono sfruttate tutte le caratteristiche di un circuito virtuale.
* ↑ Il circuito virtuale non viene sfruttato a livello superiore.
Il livello AAL è ancora suddiviso in due sottolivelli: CS e SAR. Di seguito è trattato il processo che porta a una PDU ATM di tipo 5.

#### PDU CS

Il pacchetto di livello 3 (tipicamente IP) viene tagliato in parti di dimensione massima 65535 byte, che diventano il payload delle PDU CS. Il padding sono dei bit di riempimento per adattare il payload CS ad un multiplo di 48, e quindi può andare da 0 a 47 byte. Siccome la lunghezza del payload è variabile, un campo di 2 byte ne definisce la lunghezza. Alla fine il codice CRC permette di verificare la correttezza dell'intera PDU CS al momento della ricostruzione, e quindi di rilevare la perdita di un pacchetto ATM.

#### PDU SAR

I blocchi da 48 byte vengono inframezzati dalle PCI ATM. Nell'ultima PCI ATM, il terzo bit del campo PT viene impostato a 1 per segnalare la fine del segmento.

### PDU ATM

Il formato della PCI distingue due tipi di PDU ATM:
* UNI: per la comunicazione tra l'utente e un nodo della rete (VPI da 8 bit);
* NNI: per la comunicazione tra due nodi interni alla rete (VPI da 12 bit).

#### GFC (4 bit)

Tramite il GFC la rete può informare l'utente quanti dati può ricevere (controllo di flusso).

#### VPI (8-12 bit)

Il VPI è l'identificativo del virtual path, che è un aggregato di circuiti virtuali.

#### VCI (16 bit)

Il VCI è l'identificativo del circuito virtuale all'interno di un virtual path.

#### PT (3 bit)

Il PT identifica il tipo di dati trasportati:
* 4 codici sono riservati alle funzioni d'utente, e possono avvisare esplicitamente della presenza di congestioni per rallentare la sorgente;
* 4 codici sono riservati alle funzioni di rete (gestione delle risorse e manutenzione della rete).

#### CLP (1 bit)

Il CLP assegna al pacchetto una priorità per differenziare il traffico: se è presente una congestione, il nodo inizia a buttare via i pacchetti a priorità bassa (CLP = 1) preservando quelli a priorità alta (CLP = 0). In alcuni casi tipo il traffico vocale, se ogni tanto viene perso qualche pacchetto non importa.

#### HEC (8 bit)

L'HEC permette di capire se l'intestazione è stata ricevuta correttamente, e permette di correggere un singolo errore oppure di rilevare due errori.
Confronto tra protocolli di strato 2 :
| Protocollo | Delimitazione pacchetti | Multiplazione protocolli di strato 3 | Rilevazione errori | Correzione errori (protocollo a finestra) |
| LAP-B | delimitatori | realizzato in strato superiore | sì | sì |
| LLC | demandato a MAC | sì | opzionale | opzionale |
| MAC (Ethernet) | silenzi | sì | sì | no |
| PPP | delimitatori | sì | sì | no |
| LAP-F | delimitatori | mediante circuiti virtuali | sì (DL-CORE) | opzionale (DL-CONTROL) |
| ATM | demandato al livello fisico | mediante circuiti virtuali | sì (AAL) | no |