Dall’hub allo switch: perché conta
Un hub (concentratore) è un dispositivo stupido: riceve un segnale su una porta e lo ritrasmette su tutte le altre. Tutte le stazioni condividono lo stesso dominio di collisione e ricevono tutti i pacchetti, anche quelli non destinati a loro. Con molte stazioni la rete degrada rapidamente.
Uno switch risolve entrambi i problemi: instrada i frame solo verso la porta corretta e crea un dominio di collisione separato per ogni porta. Il risultato? Latenza inferiore, larghezza di banda dedicata per ogni dispositivo, rete scalabile.
La CAM Table — Content Addressable Memory
Il cuore dello switch è la CAM table (o tabella MAC): una struttura dati che associa ogni indirizzo MAC alla porta fisica su cui è stato visto. È implementata in hardware (memoria associativa) per garantire lookup a velocità di rete.
| MAC Address | Porta | VLAN | Age (s) |
|---|---|---|---|
3C:22:FB:11:AA:01 | Fa0/1 | 1 | 120 |
08:00:27:4E:CC:FF | Fa0/2 | 1 | 45 |
B4:2E:99:00:11:22 | Fa0/3 | 1 | 280 |
DC:A6:32:88:44:77 | Fa0/4 | 1 | 10 |
Come si popola la tabella MAC: apprendimento dinamico
Lo switch non viene configurato manualmente: impara dai frame che riceve. Il processo è semplice ma potente:
- Arriva un frame sulla porta X
- Leggi il MAC sorgente del frame
- Se MAC sorgente non è in tabella → aggiungi la voce
MAC sorgente → porta X - Se MAC sorgente è già in tabella → aggiorna il timer (aging)
- Ora leggi il MAC destinazione e prendi la decisione di forwarding
Algoritmo di forwarding: unicast, flooding, broadcast
Una volta letto il MAC destinazione, lo switch segue tre possibili comportamenti:
MAC destinazione trovato in CAM table → il frame viene inviato solo sulla porta associata. Le altre porte non ricevono niente. Questo è il comportamento normale e ottimale.
MAC destinazione NON trovato in CAM table → il frame viene inviato su tutte le porte tranne quella di arrivo. Lo switch non conosce ancora la posizione del destinatario. Quando il destinatario risponde, lo switch apprende la sua porta e non farà più flooding.
MAC destinazione = FF:FF:FF:FF:FF:FF → flooding sempre e inevitabilmente. I broadcast vengono propagati su tutte le porte. Questo è il motivo per cui il broadcast eccessivo degrada le reti LAN estese.
Tutti i dispositivi connessi allo stesso switch (o a switch collegati tra loro) fanno parte dello stesso dominio di broadcast. Per segmentarlo occorre un router (livello 3) o usare le VLAN (802.1Q), che creano domini di broadcast virtuali separati sullo stesso hardware.
Modalità di switching: latenza vs affidabilità
Quando arriva un frame, lo switch deve decidere quando iniziare a inviarlo sulla porta di uscita. Esistono tre strategie con trade-off diversi.
| Modalità | Legge prima di inviare | Verifica CRC | Latenza | Propaga frame corrotti |
|---|---|---|---|---|
| Store-and-Forward | Frame intero | ✅ Sì | Alta (proporzionale alla dimensione) | ❌ No — scarta frame con CRC errato |
| Cut-Through | Solo MAC dst (6 byte) | ❌ No | Minima (~1 μs) | ⚠️ Sì — non vede FCS |
| Fragment-Free | Primi 64 byte | ❌ No | Media | Parzialmente — filtra runt frame |
Store-and-Forward — il più usato
Lo switch aspetta di ricevere l’intero frame, verifica il CRC e solo se corretto lo instrada. È la modalità predefinita sugli switch enterprise moderni perché elimina i frame corrotti (chiamati runt o jabber) prima che si propaghino. La latenza aggiuntiva è trascurabile su reti Gigabit.
Cut-Through — il più veloce
Dopo aver letto i soli 6 byte del MAC destinazione, lo switch inizia immediatamente a trasmettere il frame sulla porta di uscita. La latenza è minima ma non c’è alcun controllo di integrità: i frame corrotti vengono propagati. Utile in ambienti ad alto throughput dove la latenza è critica (es. trading ad alta frequenza, HPC).
Fragment-Free — il compromesso
Aspetta i primi 64 byte: la dimensione minima di un frame Ethernet valido. I runt frame (frame da collisioni non terminate) sono sempre più corti di 64 byte e vengono così filtrati, senza aspettare l’intero frame.
Il problema dei loop e lo Spanning Tree Protocol
Nelle reti reali si usano più switch collegati tra loro per ridondanza. Il problema: se esistono percorsi multipli tra due switch, i frame broadcast vengono moltiplicati all’infinito — un broadcast storm che satura la rete in pochi secondi.
Immagina due switch A e B collegati da due cavi (ridondanza). Un broadcast di PC1 arriva su A, viene propagato su tutti i link → arriva su B da entrambi i cavi → B lo rimanda su A → ciclo infinito. La rete collassa in millisecondi.
Le versioni moderne includono RSTP (Rapid STP, 802.1w) che converge in 1–2 secondi invece dei 30–50 secondi di STP originale, e MSTP (Multiple STP, 802.1s) per ambienti con VLAN multiple.
Switch vs Router: dove opera ciascuno
| Caratteristica | Switch (L2) | Router (L3) |
|---|---|---|
| Livello OSI | 2 — Data Link | 3 — Network |
| Indirizzo usato | MAC address (48 bit) | IP address (32/128 bit) |
| Tabella | CAM table (MAC → porta) | Routing table (rete → next hop) |
| Dominio di broadcast | Non separa (propaga broadcast) | Separa i domini di broadcast |
| Uso tipico | Connessione dispositivi in LAN | Connessione reti diverse (LAN-WAN, VLAN) |
- Lo switch opera a livello 2 e usa la CAM table (MAC → porta) per instradare i frame. La tabella si popola dinamicamente osservando i MAC sorgente dei frame ricevuti.
- Forwarding: unicast se MAC dst è in tabella → solo porta corretta; flooding se MAC dst non è in tabella → tutte le porte tranne quella di arrivo; broadcast (FF:FF:FF:FF:FF:FF) → flooding sempre.
- Modalità switching: Store-and-Forward (verifica CRC, latenza alta), Cut-Through (latenza minima, nessuna verifica), Fragment-Free (compromesso, filtra runt).
- I loop tra switch causano broadcast storm. Lo STP (802.1D) li previene creando un albero logico privo di cicli, bloccando le porte ridondanti.
- Il router separa i domini di broadcast; lo switch no — per separare i domini di broadcast su uno switch si usano le VLAN (802.1Q).