IEEE 802.3
Lo standard IEEE 802.3, noto anche con il nome commerciale Ethernet, definisce una rete LAN con topologia logica a bus. Il bus è un mezzo condiviso da più stazioni: l’informazione trasmessa da una stazione è ascoltata da tutte le altre.
CSMA/CD
Per la gestione dell’accesso multiplo al mezzo, lo standard 802.3 adotta il protocollo CSMA/CD, Carrier Sense Multple Access with Collision Detection, che è di tipo ad accesso casuale con rivelazione del canale e delle collisioni:
- Carrier Sense significa che una stazione che vuole trasmettere determina se il canale è libero osservando se sul mezzo sia presente o meno la portante (carrier)
- Collision Detection indica che si tratta appunto di un protocollo con rivelazione delle collisioni.
Quando una stazione ha un frame da trasmettere, essa esegue i seguenti passi:
- Ascolta il canale (carrier sense) per determinare se è libero. Se è occupato, attende finchè non si libera.
- Quando il canale risulta libero, inizia a trasmettere il frame.
- Durante la trasmissione, continua ad ascoltare il canale (listen while talking): se riceve un segnale generato da un’altra stazione, significa che si è verificata una collisione (collision detection). In questo caso, interrompe la trasmissione del frame, trasmette una sequenza di jam per segnalare la collisisone anche alle altre stazioni, attende per un tempo calcolato in base a un algoritmo di exponential backoff, e infine riprende il procedimento di trasmissione dal passo 1.
- Se inece trasmette l’intero frame senza riceve segnali da altre stazioni, allora non ci sono state collisioni: il procedimendo di trasmissione è concluso.
Exponential backoff
Quando si verifica una collisione, se le stazioni coinvolte provassero a ritrasmettere immediatamente (o comunque dopo un tempo prefissato), si riavrebbe subito la stessa collisione. Per risolvere questo problema, è necessario che il tempo di attesa:
- sia diverso per ogni stazione (per quanto possibile)
- tenga conto di eventuali collisioni precedenti
Lo standard 802.3 prevede che il tempo di attesa sia calcolato secondo un algoritmo chiamato binary exponential backoff, che soddisfa entrambi questi criteri. Tale algoritmo consiste nell’estrazione casuale di un tempo di attesa dall’intervallo $T_{slot} * [0, \ \ 2^m-1]$, dove:
- $T_{slot}$ è il tempo necessario a trasmettere un frame di lunghezza minima (512bit)
- $m=\min(n,10)$, e $n$ è il numero di collisioni consecutive
Frame 802.3