Ethernet nasce a meta degli anni 70, ha continuato ad evolversi e a crescere e ha mantenuto la sua posizione dominante. Attualmente ethernet è di gran lunga la tecnologia utilizzata per LAN cablate.
Il successo fu dovuto principalmente al fatto che ethernet fu la prima LAN ad alta velocità con vasta diffusione, quindi gli amministratori di rete, dopo aver acquisto familiarità con la tecnologia si dimostrarono riluttanti al cambiamento quando apparvero sulla scena altre tecnologie. In secondo luogo, altre tecnologie tentarono di competere con ethernet (FDDI, token ring, ATM), ma si dimostrarono più costose e complesse.
All'inizio, a metà anni 70, le LAN ethernet utilizzavano un cavo coassiale con una topologia a stella basata su hub.
Un hub è un dispositivo a livello fisico che agisce sui singoli bit, piuttosto che sui frame. Quando un bit (0, 1) arriva ad un'interfaccia, l'hub semplicemente rigenera il bit, amplifica la sua potenza e lo trasmette su tutte le altre interfacce.
Quindi una LAN ethernet con topologia a stella basata su hub è una LAN broadcast.
Se un hub riceve un frame su due diverse interfacce contemporaneamente, si verifica una collisione e i nodi che avevano inviato i frame inizialmente devono ritrasmetterli.
Un cambiamento rivoluzionario si verificò intorno al 2000, quando ethernet introdusse gli switch.
Per il momento accenniamo solo che uno switch è privo di collisioni, ma è anche un vero e proprio commutatore di pacchetti store-and-forward. Tuttavia a differenza dei router che operano a livello 3, gli switch operano al livello 2.
A questo punto della trattazione può essere utile ripassare gli indirizzi MAC e il protocollo ARP per la risoluzione degli indirizzi che abbiamo affrontato nel capitolo 4:
Consideriamo l'invio di un datagramma IP da un host all'altro, sulla stessa LAN ethernet, come nella figura sopra. Il payload di un frame ethernet è un datagramma IP, ma facciamo notare che ethernet può trasportare altri tipi di pacchetti.
Supponiamo che il mittente abbiamo indirizzo MAC: AA-AA-AA-AA-AA-AA, e che il ricevente, B, abbiamo indirizzo MAC: BB-BB-BB-BB-BB-BB. La scheda di rete incapsula il datagramma IP in un frame ethernet e lo passa al livello fisico. Il destinatario riceve il frame dal livello fisico, estrae il datagramma IP e lo passa al livello di rete.
Esaminiamo adesso i campi di Ehternet:
Ethernet fornisce un servizio senza connessione: quando una scheda di rete vuole inviare un datagramma ad un host della rete, lo incapsula in frame e lo immette nella LAN.
Questo servizio è analogo ai servizi senza connessione di IP e UDP.
Ethernet fornisce un servizio non affidabile.
Anche se il destinatario dovesse riscontrare errori nel frame dovuto ad un controllo CRC non lo comunica al mittente in nessun caso, positivo o negativo che sia.
Questo è parte di ciò che mantiene ethernet semplice ed economico, ma significa anche che il flusso dei datagrammi che attraversano il livello di rete può presentare delle lacune.
Dipende se l'applicazione usa TCP o UDP. Se si usa UDP, allora l'app nell'host destinatario vedrà delle lacune nei dati. Nel caso di TCP, se l'host destinatario non invia ACK relativo ai dati che sono stati scartati, il mittente è forzato a ritrasmettere. Si noti inoltre che il mittente, ad un certo punto ritrasmetterà dei pacchetti, al livello di collegamento ethernet li spedirà, ma non saprà se si tratta di pacchetti nuovi o già trasmessi.
Fino a qui ci siamo riferiti a ethernet come se fosse un unico standard.
In realtà ethernet compare sotto diverse forme e con svariate denominazioni: 10BASE-T, 10BASE-2, 100BASE-T, ecc.
La prima parte del nome: 10, 100, 1G, 10G, 40G, si riferisce alla velocità dello standard (10, 100 megabit e 1, 10, 40 gigabit).
BASE si riferisce a ethernet in banda base, cioè che il mezzo fisico trasporta solo traffico ethernet.
La parte finale rimanda all'acronico del mezzo fisico: T indica doppino in rame intrecciato.
Oggi si utilizzano standard ethernet con i cavi in rame (100BASE-T) e in fibra ottica (100BASE-FX, 100BASE-FS, 100BASE-BX). In base al mezzo fisico utilizzato si riescono a raggiungere distanze diverse: con i doppini in rame centinaia di metri, mentre con la fibra anche diversi chilometri, consentendo l'interconnessione di LAN su diversi edifici.
Potrebbe sorgere una domanda: nelle topologie di ethernet con bus condiviso e hub, diversi dispositivi condividevano lo stesso canale, ethernet inglobava nella sua configurazione CSMA/CD, inoltre in questo contesto era necessario sapere a quale scheda di rete destinare un pacchetto, dato che tutti condividevano lo stesso canale. In una topologia a stella, in cui vi sono gli switch (e in cui ciascun dispositivo non condivide fisicamente il mezzo con altri dispositivi) il MAC è ancora necessario? Molto spesso no.
Il ruolo di uno switch è quello di ricevere frame in ingresso e inoltrarli in uscita.
Lo switch è trasparente ai nodi, ovvero i nodi si inviano i pacchetti tra di loro, non li inoltrano in modo specifico ad uno switch che poi deve avere il compito di inoltrarlo ad un altro nodo. In automatico il frame inviato da un nodo arriva agli switch che li inoltrano in uscita. Può succedere che il tasso con cui i frame giungono ad una qualsiasi interfaccia di uscita può temporaneamente eccedere la capacità del collegamento di quell'interfaccia. Per risolvere questo problema le interfacce di uscita degli switch hanno dei buffer, come nei router per i datagrammi.
Il filtraggio (filtering) è la funzione dello switch che determina se un frame debba essere inoltrato ad una qualche interfaccia o scartato.
L'inoltro (forwading) consiste nell'individuare l'interfaccia verso cui il frame deve essere diretto e, quindi nell'inviarlo a quell'interfaccia.
Tali operazioni vengono eseguite utilizzando delle tabelle di commutazione (switch table), composta da voci che riflettono alcuni dispositivi della LAN (non necessariamente tutti).
Tali tabelle contengono:
Per comprendere come uno switch esegue filtraggio e inoltro ipotizziamo che un frame con indirizzo di destinazione DD-DD-DD-DD-DD-DD giunga allo switch sull'interfaccia x. Lo switch cerca nella sua tabella il MAC DD-DD-DD-DD-DD-DD, e i casi che si possono verificare sono tre:
Uno switch ha la pregevole proprietà di costruire in automatico la sua tabella di commutazione, nel seguente modo:
Entrambi sono commutatori di pacchetti store-and-forward che inoltrano i pacchetti usando indirizzi: gli switch usano indirizzi a livello di collegamento, mentre i router indirizzi a livello di rete.
Gli switch sono plug-and-play (non hanno bisogno di alcuna configurazione), possono avere capacità di filtraggio e di inoltro di pacchetti relativamente alte, ma devono elaborare pacchetti solo fino al livello 2. La topologia di una rete di switch è ristretta ad una architettura ad albero per evitare cicli di instradamento con i frame broadcast. Inoltre, una rete di switch molto grande richiederebbe grandi tabelle ARP nei nodi e nei router generando un considerevole traffico ARP. Inoltre gli switch non non offrono protezione contro le tempeste broadcast, se un host cominciasse a trasmettere un flusso ininterrotto di pacchetti broadcast, gli switch li inoltrerebbero, provocando il collasso della rete.
Dato che gli indirizzi di rete sono gerarchici (e non lineari come i MAC), generalmente i pacchetti non presentano cicli di instradamento attraverso i router, anche nel caso in cui la rete presenti percorsi ridondanti. I pacchetti rischiano di percorrere cicli solo se le tabelle dei router sono configurate male (tuttavia i pacchetti IP hanno un campo che limita la percorrenza di cicli). Pertanto, i pacchetti non sono vincolanti a un albero di copertura e possono utilizzare il miglior percorso tra sorgente e destinazione. I router proteggono dalle tempeste di broadcast, ma non sono plug-and-play.