Servizi offerti da livello di collegamento
...

  • Framing: i datagrammi sono incapsulati in frame. Il protocollo utilizzato ha il proprio frame (il frame Wi-Fi è diverso dal frame Ethernet).
  • Consegna affidabile: spesso utilizzato in canali con alto tasso di errore come Wireless, non necessario in protocolli con tasso di errore sui bit basso (cavo coassiale, fibra, doppino).
  • Rilevazione e correzione degli errori: gli errori sono causati da attenuazione del segnale (tipico di Wi-Fi) o disturbo elettromagnetico. I metodi usati qui sono più sofisticati dei checksum usati nei livelli superiori.

Il livello di collegamento è realizzato nella NIC (o scheda di rete).

Rilevazione e correzione degli errori
...

Quando vengono spediti dei dati da un nodo all'altro essi sono accompagnati da bit EDC (error detection and correction).
Durante il viaggio verso la destinazione i bit possono subire errori.

Tecniche di checksum
...

Il checksum è implementato nel livello di trasporto poiché il livello di trasporto essendo implementato a livello software necessita una certa rapidità.
I bit del dato vengono suddivisi in gruppi di un certo numero di bit, normalmente 16, vengono sommati tra di loro, eventuali riporti alla cifra più significativa vengono nuovamente sommati alla cifra risultante. Alla fine si effettua il complemento a uno (inversione di tutti bit) ottenendo un codice di checksum. Il dato viene spedito insieme a questo codice. Il destinatario sommerà le word di 16 bit tra di loro, a tal risultato sommerà anche il checksum, e se non si sono verificati errori, il destinatario otterrà: .

Controllo di parità
...

La tecnica più semplice consiste nell'utilizzo di un bit detto di parità.
Diciamo che un mittente stia spedendo dei dati D, a questi il mittente aggiunge un bit che rende pari il numero di bit "1".

Dati in bit di DBit di partità
01110001101010111

Quando il destinatario riceve il messaggio, non deve fare altro che controllare se il numero di bit "1" è pari o no.
Questo potrebbe andar bene se si verificassero errori unici in un singolo messaggio, statisticamente però è verificato che si verificano più errori in un singolo messaggio, quindi questa tecnica non basta.

Una tecnica migliore consiste nel controllo di parità bidimensionale:
Pasted image 20230331190803.png
I bit vengono disposti in una tabella il più quadrata possibile. Per ogni riga e colonna si controlla si aggiunge (se necessario) un bit "1" per rendere pari il numero di bit "1", altrimenti si mette 0.
Nella seconda riga della colonna il bit di parità è 0, ma in realtà ci sono 3 bit a "1", quindi dovrebbe essere 1, il che vuol dire che la riga contiene un errore. Controllando le colonne si riesce a trovare anche un errore nella seconda colonna. Questo consente di rilevare errori nei dati, ma anche il punto in cui l'errore si verifica.
Quando viene calcolata la parità con una tabella del genere, i bit spediti sono i bit che appaiono nella tabella presi per riga:
riga1, riga2, riga3, riga4
A destinazione vengono disposti in una tabella simile per verificare la presenza di errori.
Si noti che se si verificasse un numero pari di errori in una colonna o in una riga, esso non potrebbe essere verificabile.

CRC: controllo a ridondanza ciclica
...

La figura illustra il calcolo per:

  • D = 1010101010
  • G = 10011, la cui lunghezza è 5
  • r = lunghezza del generatore - 1 (che è il padding da aggiungere a D) = 4

Ex_CRC.jpg
l'operazione effettuata è quella di XOR (1 se i bit sono diversi, 0 altrimenti).
Quando tra due blocchi di bit il risultato dello XOR è 0 per i bit più a sinistra, si mette il numero 1 in alto (azzurro), quando anche il secondo (o i successivi) sono anch'essi zero, si mettere 1 in alto (azzurro e evidenziato di arancione).
L'algoritmo si ferma quando la lunghezza del blocco di bit con cui si opera è minore o uguale a r.
L'ultimo blocco di bit di lunghezza è il codice CRC, da aggiungere al dato da spedire.
Il destinatario riesegue il controllo di ridondanza ciclica con lo stesso generatore, se il risultato ottenuto è di tutti 0, allora non ci sono errori, altrimenti si.
CRC consente il rilevamento di errori consecutivi inferiori a bit.
CRC consente il rilevamento di qualunque numero di errori (pari o dispari.)

Condivisione di un canale broadcast, accesso multiplo
...

In un canale broadcast vi sono più mittenti e più destinatari.
Il problema di questo tipo di canale è la gestione degli accessi multipli
Dato che in questo contesto un nodo può sia trasmettere che ricevere, c'è la probabilità che più nodi trasmettano contemporaneamente, causando delle collisioni, i nodi possono ricevere un miscuglio di diversi frame, causando corruzione dei dati e perdita di essi.

Ethernet
...

Un hub è un dispositivo del livello fisico che agisce sui singoli bit (piuttosto che sui frame). Quando un bit giunge all'interfaccia di un hub, l'hub rigenera il bit amplificandone il segnale.
All'inizio le ethernet LAN usavano una topologia a stella basata su hub.
Nel 2000 vennero introdotti gli switch. Gli switch sono dei commutatori di pacchetto (come i router). I router operano a livello IP (3), mentre gli switch a livello di collegamento (2).
Il payload di un frame Ethernet è un datagramma IP (Ethernet può trasportare anche altri tipi di pacchetti). Il destinatario riceve il frame dal livello fisico, estrae il datagramma IP e lo passa a livello di rete.

  • Ethernet è senza connessione (come IP e UDP): un nodo impacchetta un datagramma in un frame e lo invia.
  • Ethernet fornisce un servizio non affidabile, se il destinatario riscontra (o no) errori nel frame dopo un controllo CRC non lo comunica al mittente. Di questo si occupano i servizi del livello di trasporto in base al protocollo usato (TCP, UDP).

ALOHA
...

Slotted ALOHA richiede che tutti gli slot sincronizzino le loro trasmissioni a partire dall'inizio di uno slot. ALOHA non ha slot. Quando arriva un frame, esso viene spedito. Se si verifica una collisione con probabilità P lo rispedisce, con probabilità 1 - P attende il tempo di trasmissione di un frame, e poi lo ritrasmette con probabilità P o con probabilità 1 - P, attende e così via.
ALOHA è peggiore di slotted ALOHA.

Slotted ALOHA
...

Assunzioni:

  • frame di L bit
  • tempo suddiviso in slot di L/R secondi
  • all'inizio dello slot, il nodo spedisce il frame
  • i nodi sono sincronizzati in modo che tutti sappiano quando iniziano gli slot
  • qualora in uno slot due o più frame collidano, tutti i nodi della rete rilevano l'evento prima del termine dello slot

Indichiamo con P una probabilità.
Operazioni slotted ALOHA:

  • quando un nodo ha un nuovo frame da spedire, attende fino all'inizio dello slot successivo e poi trasmette l'intero frame
  • se non si verifica collisione: successo, il nodo prepara un nuovo frame da spedire
  • se si verifica collisione: fallimento, il nodo rileva la collisione prima del termine dello slot e ritrasmette con probabilità P il suo frame negli slot successivi, finché non ha successo.

Quando è attivo solo un nodo esso può trasmettere alla massima veloccità di trasmissione.
Quando sono attivi più slot, in un certo numero di slot vi saranno collisioni e quindi tali slot andranno sprecati. Inoltre una grande frazione degli slot risulterà vuota perché i nodi trasmettono in base alla politica probabilistica. Gli unici slot non sprecati sono quelli in cui trasmette solo un nodo, tale slot è detto riuscito.

CSMA/CD (collision detection)
...

In ALOHA un nodo trasmette indipendentemente da ciò che fanno gli altri nodi. Con CSMA un nodo ascolta su un canale e se c'è già una trasmissione in corso attende il suo completamento, inoltre un nodo CSMA ascolta anche durante la trasmissione e se rileva un frame che interferisce col suo interrompe la trasmissione, attende un tempo randomico e poi ripete il processo.

Attesa casuale
...

L'attesa casuale è necessaria, non deve essere troppo grande da lasciare il canale inutilizzato per troppo tempo, né troppo piccolo da provocare nuove collisioni: viene usato un algoritmo detto attesa binaria esponenziale.
Quando un nodo riscontra l'n-esima collisione durante la trasmissione di un dato frame, stabilisce casualmente un valore , più l'intervallo di scelta per si estende.

Protocolli a divisione di tempo (TDM)
...

Il tempo è suddiviso in intervalli: time frame, ciascuno di essi e diviso in slot. Ad ogni nodo è assegnato un slot, all'interno dell'intervallo in cui può trasmettere
Pasted image 20230420145407.png

Svantaggi:

  • se un nodo vuole trasmettere deve attendere il suo slot, anche se gli altri nodi prima di lui non hanno dati da inviare;
  • ogni nodo ha un tasso trasmissivo di R/N bps (TDM è equo).

Protocolli a divisione di tempo (FDM)
...

FDM divide la banda R tra i nodi partecipanti (N).
Ogni nodo ha una banda di R/N.
Pasted image 20230420150348.png

FDM ha lo stesso limite di TDM, ogni nodo ha un tasso trasmissivo di R/N.
Se un nodo sta trasmettendo, ma gli altri no, il nodo può usare solo R/N come banda, il resto della banda viene sprecato.

Protocolli a divisione di codice (CDMA)
...

In CDMA ad ogni nodo viene assegnato un codice, se tali codice sono scelti in modo appropriato (se sono ortogonali tra loro), i nodi potranno codificare i bit con quel codice e trasmettere simultaneamente ai rispettivi destinatari, i rispettivi destinatari saranno in grado di ricevere correttamente i dati.

Protocolli a suddivisione di canale
...

Protocolli a rotazione
...

Un protocollo ad accesso multiplo deve avere due caratteristiche:

  • se c'è un solo nodo attivo, tale nodo deve trasmettere a R bps
  • se ce ne sono M, ciascuno deve trasmettere a R/M bps.

ALOHA e CSMA hanno la prima ma non la seconda.
Entrano in gioco i protocolli a rotazione per superare tale limite:

  • protocollo di polling: un nodo master interpella a turno gli altri nodi comunicando il numero di nodi che può trasmettere. Si introduce ritardo di polling. Inoltre il master è un unico punto di fallimento.
  • Protocollo token-passing: non c'è un master. Un frame, detto token, circola tra i nodi seguendo un ordine prefissato. Il nodo uno spedisce il token sempre al 2, mentre il due sempre al 3, ecc. Se il nodo ha il token può trasmettere. Se non ha dati da trasmettere, passa il token al prossimo nodo. Anche qui il guasto di uno dei nodi rende inutilizzabile il protocollo.

Protocolli ad accesso casuale
...

Switch
...

Uno switch riceve frame in ingresso e li trasmette in uscita.
Uno switch è trasparente ai nodi.
Le porte di uscita degli switch hanno dei buffer.
Il filtraggio è una funzione degli switch che determina se un frame deve essere inoltrato ad una qualche interfaccia o scartato.
L'inoltro consiste nell'individuare l'interfaccia verso cui il frame deve essere diretto. Per fare ciò gli switch hanno delle tabelle di commutazione, che contengono:

  • MAC nodo;
  • interfaccia connessa a tale nodo;
  • momento in cui è stata aggiunta tale voce alla tabella.

Gli switch auto-apprendono e costruiscono in automatico la propria tabella di commutazione.
All'inizio la tabella è vuota. Quando giunge un frame lo switch salva in tabella, il MAC sorgente, l'interfaccia da cui arriva il frame e il tempo di arrivo.
Dopo un certo periodo (aging time) se lo switch non ha ricevuto frame da un certo indirizzo sorgente, elimina la voce corrispondente con esso dalla tabella.

Formato header Ethernet
...

Pasted image 20231022124550.png

  • Dati: contiene il datagramma IP. La MTU Ethernet è 1500 byte. Il minimo numero di byte supportato in questo campo è 46. Se un datagramma è inferiore a 46 byte, viene riempito con dei bit di padding. Se un datagramma è maggiore di 1500 byte, viene frammentato in diversi frame.
  • Indirizzo di destinazione (6 byte): contiene il MAC della NIC destinataria. Se un frame broadcast FF:FF:...:FF
  • Indirizzo sorgente (6 byte): MAC NIC mittente.
  • Tipo (2 byte): codice protocollo di rete.
  • CRC (4 byte): consente la rilevazione di errori nei frame.
  • Preambolo (8 byte): sette byte di questi 8 sono posti a 10101010, l'ultimo byte a 10101011. I primi sette byte servono per sincronizzare il clock della NIC del destinatario con quella del mittente, l'ultimo byte informa che stanno per arrivare i dati "importanti" (payload del frame: datagramma).

Virtual LAN (VLAN)
...

Interconnettendo degli switch si riesce a separare la rete in diversi gruppi, tuttavia i messaggi broadcast raggiungerebbero tutti i gruppi comunque.
Per ogni gruppo da creare sarebbe richiesto uno switch (costoso).
Le VLAN consentono di superare tali limiti.
Un amministratore di rete può organizzare le porte di uno switch gruppi, ciascun gruppo costituisce una VLAN.
Pasted image 20231022174902.png
In questa figura lo switch origina due VLAN, le porte da 2 a 8 sono riservate alla VLAN per il dipartimento di elettronica, mentre le porte da 9 a 15 per il dipartimento di informatica. Le porte 1 e 16 sono inutilizzate.
I frame delle due VLAN sono isolati tra di loro.
Per far comunicare due VLAN si potrebbe collegare un router alla porta 1 (libera nella figura) e far passare i pacchetti tra una VLAN e l'altra da quel router. (I produttori fanno si che questa funzione sia integrata nello stesso dispositivo).
Se si volessero interconnettere due LAN si possono usare due approcci:
Pasted image 20231022181555.png

  • dedicare una porta in uno switch ad una VLAN in un altro switch (figura a), la porta 1 sul primo switch serve per una VLAN nel secondo (stessa cosa vale per la 16)
  • nella seconda figura viene usato un collegamento di trunking, condiviso tra tutte le VLAN e che usa un altro tipo di frame Ethernet che consente tramite un campo TAG di indirizzare alla corretta VLAN sugli altri switch.
1
2
3