# Progetto di reti locali/Ethernet

Progetto di reti locali
Copertina Tutti i moduli · Sviluppo
    CopertinaProgetto di reti locali/Copertina
* Nozioni di base sulle LAN
** Introduzione alle Local Area NetworkProgetto di reti locali/Introduzione alle Local Area Network
** EthernetProgetto di reti locali/Ethernet
** Repeater e bridgeProgetto di reti locali/Repeater e bridge
** Evoluzioni di EthernetProgetto di reti locali/Evoluzioni di Ethernet
** Funzionalità avanzate sulle reti EthernetProgetto di reti locali/Funzionalità avanzate sulle reti Ethernet
* Albero ricoprente
** Spanning Tree ProtocolProgetto di reti locali/Spanning Tree Protocol
** Rapid Spanning Tree ProtocolProgetto di reti locali/Rapid Spanning Tree Protocol
* Standard aggiuntivi per le LAN
** Qualità del servizio nelle LAN IEEE 802Progetto di reti locali/Qualità del servizio nelle LAN IEEE 802
** Link aggregation – IEEE 802.3adProgetto di reti locali/Link aggregation – IEEE 802.3ad
** IGMP snoopingProgetto di reti locali/IGMP snooping
* Configurazione e progettazione avanzate delle LAN
** Virtual LANProgetto di reti locali/Virtual LAN
** Ridondanza e bilanciamento del carico a livello 3 nelle LANProgetto di reti locali/Ridondanza e bilanciamento del carico a livello 3 nelle LAN
** Il livello rete nelle LANProgetto di reti locali/Il livello rete nelle LAN
* Argomenti aggiuntivi
** Introduzione alle Storage Area NetworkProgetto di reti locali/Introduzione alle Storage Area Network
Modifica il sommario
Ethernet è la tecnologia oggi più utilizzata nelle LAN cablate con architettura a bus condiviso, perché è una soluzione semplice e poco costosa rispetto ad altre tecnologie per le LAN come token ring e token bus.

## Formato della trama Ethernet

Esistono due versioni di Ethernet, con formati delle trame diversi:
* Ethernet II DIX (1982): versione sviluppata da DEC, Intel e Xerox (da qui l'acronimo "DIX");
* standard IEEE 802.3 (1983): versione standardizzata dal gruppo di lavoro IEEE 802.
A causa della presenza di due versioni di Ethernet, esiste una notevole disomogeneità nell'imbustamento dei protocolli di livello superiore:
* i protocolli più vecchi (ad es. l'IP) e i protocolli più lontani da IEEE utilizzano l'imbustamento Ethernet II DIX;
* i protocolli standardizzati sin dall'inizio da IEEE (ad es. lo STP) utilizzano l'imbustamento IEEE 802.3.

### Ethernet II DIX

Il pacchetto Ethernet II DIX ha il formato seguente:
Formato del pacchetto Ethernet II DIX (da 84 a 1538 byte). :
| 7 byte | 1 byte | 6 byte | 6 byte | 2 byte | da 46 a 1500 byte | 4 byte | 12 byte |
| preambolo | SFD | indirizzo MAC di destinazione | indirizzo MAC sorgente | EtherType | payload | FCS | IFG |
| | | trama Ethernet II DIX (da 64 a 1518 byte) | trama Ethernet II DIX (da 64 a 1518 byte) | trama Ethernet II DIX (da 64 a 1518 byte) | trama Ethernet II DIX (da 64 a 1518 byte) | trama Ethernet II DIX (da 64 a 1518 byte) | |
dove i campi più significativi sono:
* preambolo (7 byte): sequenza di bit per recuperare la sincronizzazione tra il clock del trasmettitore e il clock del ricevitore.
    Il preambolo può accorciarsi ogniqualvolta il pacchetto attraversa un hub → non è possibile collegare più di 4 hub in cascata: Progetto di reti locali/A3#Interconnessione a livello fisico;
* campo Start of Frame Delimiter (SFD) (1 byte): sequenza di bit che identifica l'inizio della trama;
* campo EtherType (2 byte): identifica il protocollo di livello superiore utilizzato nel payload (è un numero maggiore o uguale a 1500);
* campo Inter-Frame Gap (IFG) (12 byte): silenzio, cioè assenza di segnale, che identifica la fine della trama.

### IEEE 802.3

Il pacchetto IEEE 802.3 può avere uno dei due formati seguenti:
Formato del pacchetto IEEE 802.3 con intestazione LLC (da 84 a 1538 byte). :
| 7 byte | 1 byte | 14 byte | 3 byte | da 0 a 1497 byte | da 0 a 43 byte | 4 byte | 12 byte |
| preambolo | SFD | intestazione MAC | intestazione LLC | payload | padding | FCS | IFG |
| | | trama IEEE 802.3 (da 64 a 1518 byte) | trama IEEE 802.3 (da 64 a 1518 byte) | trama IEEE 802.3 (da 64 a 1518 byte) | trama IEEE 802.3 (da 64 a 1518 byte) | trama IEEE 802.3 (da 64 a 1518 byte) | |
Formato del pacchetto IEEE 802.3 con intestazione LLC SNAP (da 84 a 1538 byte). :
| 7 byte | 1 byte | 14 byte | 8 byte | da 0 a 1492 byte | da 0 a 38 byte | 4 byte | 12 byte |
| preambolo | SFD | intestazione MAC | intestazione LLC SNAP | payload | padding | FCS | IFG |
| | | trama IEEE 802.3 (da 64 a 1518 byte) | trama IEEE 802.3 (da 64 a 1518 byte) | trama IEEE 802.3 (da 64 a 1518 byte) | trama IEEE 802.3 (da 64 a 1518 byte) | trama IEEE 802.3 (da 64 a 1518 byte) | |

#### Osservazioni

* le trame Ethernet II DIX e IEEE 802.3 hanno le stesse lunghezze minima e massima, perché IEEE doveva specificare un formato di trama compatibile con la vecchia versione di Ethernet;
* una trama Ethernet II DIX e una trama IEEE 802.3 si possono distinguere guardando il valore nel campo che segue l'indirizzo MAC sorgente:
** se è minore o uguale a 1500 (campo "Length"), la trama è IEEE 802.3;
** se è maggiore o uguale a 1536 (campo "EtherType"), la trama è Ethernet II DIX;
* nella trama IEEE 802.3 il campo "Length" renderebbe superfluo il campo "Inter-Frame Gap" (IFG), ma è presente per mantenere la compatibilità con la trama Ethernet II DIX;
* nella trama Ethernet II DIX il livello superiore deve trasmettere almeno 46 byte, mentre nella trama IEEE 802.3 la trama può essere allungata alla dimensione minima con del padding a seconda delle necessità;
* le intestazioni LLC e LLC SNAP della trama IEEE 802.3 sprecano molti più byte rispetto al campo "EtherType" della trama Ethernet II DIX pur servendo alla stessa funzione di indicare il protocollo di livello superiore, e per questo motivo lo standard IEEE 802.3 non è stato adottato in larga scala a vantaggio di Ethernet II DIX.

## Livello fisico

Ethernet a 10 Mbps può viaggiare sui seguenti mezzi fisici di trasmissione:
* cavo coassiale:
** 10Base5: cavo spesso (max 500 m);
** 10Base2: cavo sottile (max 185 m);
* doppino di rame:
** 10BaseT: cavo con 4 coppie intrecciate di cui solo 2 usate (max 100 m):
*** Unshielded (UTP): non schermato;
*** Shielded (STP): schermato con singola calza globale;
*** Foiled (FTP): schermato con singola calza globale + una calza per ogni coppia;
* fibra ottica (max 1-2 km)

### Cavo coassiale

Agli inizi il bus condiviso era fisicamente realizzato con un cavo coassiale:
* prese a vampiro: ogni scheda di rete è collegata a un cavo coassiale spesso tramite una presa a vampiro, che permetteva la propagazione elettrico per contatto fisico (continuità galvanica) → collegamento scomodo;
* connettori a T: ogni scheda di rete è collegata a un cavo coassiale sottile tramite un connettore a T → la connessione e la disconnessione di un host richiede di scollegare l'intera rete.

### Doppino di rame

Con l'introduzione del doppino di rame, il cablaggio (cioè la posa dei cavi negli edifici) acquisì una maggiore flessibilità: ogni host può essere collegato a una presa a muro RJ45 tramite l'apposito connettore RJ45, e tutte le prese sono collegate a loro volta a un armadio.
Inoltre, alla presa a muro RJ45 è possibile collegare anche il connettore RJ11 usato dalla telefonia → nel cablaggio è possibile mettere delle prese RJ45 nell'intero edificio e poi decidere di volta in volta se collegare una scheda Ethernet o un telefono, commutando tra il collegamento dati e il collegamento telefonico nell'armadio.

### Fibra ottica
#### Caratteristiche

* no sensibilità alle interferenze elettromagnetiche
* distanze maggiori
* costi più elevati
* flessibilità minore

## CSMA/CD

Si ha una collisione quando due o più nodi nello stesso dominio di collisione trasmettono contemporaneamente e i loro segnali si sovrappongono. Il protocollo Carrier Sense Multiple Access with Collision Detection (CSMA/CD) specifica come riconoscere una collisione (CD) e come recuperare una collisione (ritrasmissione).
Il CSMA/CD è un protocollo ad accesso casuale (cioè non deterministico) semplice e distribuito: non prevede apparati intermedi né meccanismi di sincronizzazione particolari, a differenza del token ring dove il meccanismo di sincronizzazione è il token stesso → il protocollo CSMA/CD è efficiente in termini di throughput perché non c'è l'overhead per la sincronizzazione, in termini di ritardi e di occupazione del canale.
In modalità full duplex non è più necessario abilitare il protocollo CSMA/CD.

### Rilevamento delle collisioni

Anziché trasmettere l'intera trama e soltanto alla fine verificare la collisione, il nodo può usare il Collision Detection (CD): durante la trasmissione ogni tanto cerca di capire se si è verificata una collisione ("listen while talking"), e in caso affermativo interrompe subito la trasmissione, evitando di sprecare il canale per una trasmissione inutile.
Nel mondo reale, il rilevamento delle collisioni avviene in due modi diversi a seconda del tipo di mezzo trasmissivo:
* cavo coassiale: c'è un singolo canale sia per la trasmissione sia per la ricezione → basta misurare la DC media sul link;
* doppino di rame, fibra ottica: ci sono due canali, uno per la trasmissione e l'altro per la ricezione:
** stazioni trasmittenti: possono accorgersi che si è verificata una collisione rilevando attività sul canale di ricezione durante la trasmissione;
** stazioni non trasmittenti: possono accorgersi che si è verificata una collisione solo rilevando un codice CRC errato sulla trama ricevuta.
       La sequenza di jamming è un segnale potente che viene mandato da chi si è accorto di una collisione per garantire che il codice CRC sia non valido e per massimizzare la probabilità che tutti gli altri nodi abbiano capito che è avvenuta una collisione.

### Riduzione del numero di collisioni

Il Carrier Sense (CS) permette di ridurre il numero di collisioni: il nodo che vuole trasmettere ascolta il canale prima della trasmissione:
* se sente che il canale è libero: il nodo trasmette la trama;
* se sente che il canale è occupato:
** CSMA 1-persistente: il nodo continua a verificare se il canale è libero e trasmette appena si libera;
** CSMA 0-persistente: il nodo riprova dopo un tempo casuale;
** CSMA $p$-persistente: il nodo con probabilità $1-p$ aspetta un tempo casuale (0-persistente), con probabilità $p$ riverifica subito (1-persistente).
In una LAN nel caso peggiore l'occupazione del canale è pari al 30-40% della banda disponibile → Ethernet implementa il CSMA/CD 1-persistente perché è pensato per reti mediamente scariche con ridotta probabilità di collisioni.

#### Limiti del CSMA

Tuttavia, con il doppino di rame o la fibra ottica il CSMA non è in grado di evitare del tutto le collisioni (altrimenti non servirebbe il CD): se si tiene conto dei tempi di propagazione, un nodo lontano può sentire il canale libero, anche se in realtà è occupato ma la trasmissione non ha ancora raggiunto il nodo lontano:
Si dice intervallo di vulnerabilità l'intervallo di tempo in cui l'avvio di una trasmissione da parte del nodo lontano creerebbe una collisione (è pari al ritardo di propagazione sul canale), e questo intervallo è tanto grande quando la distanza è maggiore → questo protocollo funziona bene su reti piccole.

### Recupero delle collisioni

Dopo che si è verificata una collisione, la trama deve essere ritrasmessa. Se le stazioni coinvolte nella collisione ritrasmettessero subito, si verificherebbe un'altra collisione → l'algoritmo di back-off inserisce nell'attesa un elemento di casualità esponenziale nelle ritrasmissioni:
* 1ª ritrasmissione: il nodo aspetta un tempo $T$ scelto a caso tra 0 e 1 slot time;
* 2ª ritrasmissione: il nodo aspetta un tempo $T$ scelto a caso da 0 a 3 slot time;
* 3ª ritrasmissione: il nodo aspetta un tempo $T$ scelto a caso da 0 a 7 slot time;
e così via, secondo la formula:
    $T=r\cdot \tau ,\quad 0\leq r<2^{k},\;k=\min {\left(n,10\right)},\;n\leq 16$
dove:
* $n$ è il numero di collisioni avvenute sulla trama corrente;
* $\tau$ è lo slot time, ovvero il tempo richiesto per inviare una trama Ethernet di dimensione minima (64 byte), equivalente a 51,2 µs.
Al termine di ogni attesa, il nodo ascolta di nuovo il canale con il CS.

### Vincolo tra la dimensione della trama e il diametro di collisione

Siccome l'accesso al canale è conteso, quando si riesce a ottenere l'accesso alla rete conviene trasmettere pacchetti grandi. È necessario stabilire una dimensione minima per le trame: se la trama è troppo piccola e la trasmissione collisa dura troppo poco, può avvenire che nessun nodo si accorga della collisione:
Esiste un vincolo tra la dimensione della trama $L_{\text{PDU}}$ e il diametro di collisione $D$ affinché tutte le collisioni siano riconosciute: il rilevamento delle collisioni funziona solo se il round trip time ${\text{RTT}}$, cioè il tempo di andata e ritorno, è minore del tempo di trasmissione $T_{\text{TX}}$:
    ${\text{RTT}}<T_{\text{TX}}\Rightarrow 2{\frac {D}{V_{\text{PR}}}}<{\frac {L_{\text{PDU}}}{V_{\text{TX}}}}\Rightarrow {\begin{cases}\displaystyle L_{\text{PDU}}>{\frac {V_{\text{TX}}\cdot 2D}{V_{\text{PR}}}}\\\displaystyle D<{\frac {V_{\text{PR}}\cdot L_{\text{PDU}}}{2V_{\text{TX}}}}\end{cases}}$
dove $V_{\text{TX}}$ è la velocità di trasmissione e $V_{\text{PR}}$ è la velocità di propagazione.
Aumentare la velocità di trasmissione significa aumentare la dimensione minima delle trame, oppure a parità di dimensione minima significa diminuire la distanza massima tra i nodi, ma trame troppo grandi aumenterebbero la probabilità di errore della trasmissione e intaserebbero la rete.
In Ethernet DIX il diametro di collisione teorico non può superare i 5750 metri:
    ${\begin{cases}{L_{\text{PDU}}}_{\text{min}}=72\;{\text{byte}}\\V_{\text{TX}}=10\;{\text{Mbps}}\\V_{\text{PR}}=c=200000\;{\text{km/s}}\end{cases}}\Rightarrow D_{\text{max}}={\frac {V_{\text{PR}}\cdot {L_{\text{PDU}}}_{\text{min}}}{2V_{\text{TX}}}}=5750\;{\text{m}}$
In assenza di hub le dimensioni massime della rete sono piuttosto limitate dalle distanze massime supportate dai mezzi trasmissivi (ad es. a causa dell'attenuazione del segnale). Grazie agli hub è possibile estendere la dimensione della rete (anche se al massimo a 3 km per via delle non idealità del dispositivo): l'hub, tipicamente posto come centro stella di una topologia a stella, rigenera il segnale (repeater) e simula internamente il bus condiviso permettendo di collegare tra loro più stazioni attraverso il doppino di rame: Progetto di reti locali/A3#Interconnessione a livello fisico.

## Note

* ↑ Lo standard chiama "pacchetto Ethernet" la trama Ethernet + i campi "Preamble", "SFD" e "IFG" del livello fisico.
* ↑ Per la lunghezza della trama $L_{\text{PDU}}$ si considerano il preambolo e lo SFD, ma non l'IFG.