# Switch

Uno switch (inglese 'swɪʧ; commutatore), nella tecnologia delle reti informatiche, è un dispositivo di rete che si occupa di commutazione a livello datalink (collegamento dati), il livello 2 del modello ISO/OSI, introdotto per ridurre il cosiddetto dominio di collisione nelle reti LAN Ethernet (ora IEEE 802.3).

## Descrizione

Uno switch è un dispositivo in una rete di computer che collega insieme altri dispositivi. Più cavi di rete sono collegati a uno switch per abilitare la comunicazione tra diversi dispositivi. Gli switch gestiscono il flusso di dati attraverso una rete trasmettendo un pacchetto di rete ricevuto solo a uno o più dispositivi per i quali il pacchetto è destinato. Ogni dispositivo collegato in rete a uno switch può essere identificato dal suo indirizzo MAC, consentendo allo switch di dirigere il flusso del traffico massimizzando la sicurezza e l'efficienza della rete.
Uno switch è più "intelligente" di un hub Ethernet, che semplicemente ritrasmette i pacchetti fuori da ogni porta dell'hub, eccetto la porta su cui è stato ricevuto il pacchetto: l'hub è incapace di distinguere i diversi destinatari e pertanto ottiene un'efficienza di rete complessivamente inferiore.
Uno switch Ethernet opera sul livello di collegamento dati (livello 2) del modello OSI per creare un dominio di collisione separato per ciascuna porta dello switch. Ogni dispositivo collegato a una porta dello switch può trasferire dati a una qualsiasi delle altre porte in qualsiasi momento e le trasmissioni non interferiranno. Nella modalità half duplex, ogni porta dello switch non può contemporaneamente ricevere e trasmettere al dispositivo a cui è connessa. Al contrario, ciò è possibile nella modalità full duplex, assumendo che il dispositivo connesso supporti tale modalità. Poiché le trasmissioni continuano a essere inoltrate a tutti i dispositivi connessi tramite lo switch, il nuovo segmento di rete continua a essere un dominio di trasmissione.
La segmentazione implica l'uso di uno switch per dividere un dominio di collisione più grande in uno più piccolo al fine di ridurre la probabilità di collisione e migliorare il throughput complessivo della rete. Nel caso estremo (cioè micro-segmentazione), ogni dispositivo si trova su una porta switch dedicata. A differenza di un hub Ethernet, esiste un dominio di collisione separato su ciascuna porta dello switch. Ciò consente ai computer di disporre di una larghezza di banda dedicata sulle connessioni point-to-point alla rete e anche di eseguire in modalità full-duplex. La modalità full-duplex ha un solo trasmettitore e un ricevitore per dominio di collisione, rendendo impossibile la collisione.
Lo switch gode, rispetto a un bridge, di:
* maggiore espandibilità in termini di numero di porte
* performance migliori.
Inoltre uno switch di fascia alta fornisce tipicamente le seguenti caratteristiche:
* possibilità di gestione;
* supporto di più istanze del protocollo Spanning Tree;
* Shortest Path Bridging;
* supporto di LAN virtuali (VLANs) secondo lo standard 802.1Q;
* mirroring delle porte;
* supporto della QoS (Quality of Service).

### Centro stella

In una porzione di edificio cablato (piano, uffici contigui, area, reparto, etc.) esiste il cosiddetto centro stella ovvero il punto in cui convergono tutti i connettori dei singoli e distinti cavi di rete LAN infilati nelle apposite canaline (interne ai muri oppure interrate nel pavimento flottante o provenienti dal falso soffitto). A questi va connesso lo switch di area (il fascio di cavi va intestato prima ad un patch panel da interporre-per ovvie ragioni di manutenzione-allo switch). Spesso, negli uffici piccoli o nelle abitazioni il centro stella è posizionato dietro un coperchio del vano apposito a muro nel cosiddetto "sgabuzzino" (tipicamente è dove è installata anche la borchia telefonica, il quadro elettrico e-possibilmente-una presa d'aria). Nelle strutture più complesse lo switch di area è posizionato in un armadio rack.
Quando le tratte dei cavi sono lunghe (circa 90-100 m) occorre posizionare, tra un tratto e l'altro, uno switch che opera come ripetitore di segnale in modo da non perdere prestazione.
Nei cablaggi strutturati ogni switch di area deve essere collegato (con cavo in fibra ottica, in parallelo con gli altri) allo switch del centro stella (sala CED), evitando la connessione in cascata.

### Struttura interna

Internamente, uno switch è costituito da una o più schede munite di porte. A ogni porta può essere connesso un nodo, che può essere una stazione, un altro switch, uno hub o altro dispositivo di rete.
Quando un nodo A cerca di comunicare con un nodo B, il comportamento dello switch dipende dalla scheda cui è collegato B:
* se B è collegato a una porta sulla stessa scheda cui è collegato A, la scheda stessa inoltra i frame in arrivo su tale porta;
* se B è collegato a una scheda diversa da quella cui è collegato A, la scheda invia i frame a un canale di trasmissione interno detto backplane, caratterizzato da elevata velocità (tipicamente sull'ordine del Gbps), che provvede a consegnare il frame alla scheda giusta.
L'intelligenza necessaria a gestire le porte di ingresso e di uscita (riconoscere i frame, estrarre gli indirizzi sorgente e destinazione, trasmetterli) è distribuita sulle singole schede.
Spesso su alcune porte possono essere montati trasduttori di tipo diverso per risolvere diversi tipi di esigenze (si veda ad esempio la ricchezza di tecnologie di livello fisico disponibili per IEEE_802.3). Questa possibilità viene tipicamente utilizzata per aggiungere a uno switch 100Base-TX una o due porte di tipo 1000Base-X per il collegamento verso il resto della rete (uplink) o per un server veloce.
Alcuni switch hanno una costruzione modulare, ovvero le schede possono essere montate dal gestore, per modulare il numero di porte a disposizione o per utilizzare porte di tipo diverso.
Anche se non conveniente soprattutto in termini economici, è possibile realizzare uno switch anche con un comune computer dotato di più interfacce di rete.

### Tipi di switch
#### Forme

Gli switch sono disponibili in molte forme, comprese le unità desktop stand-alone, che sono in genere destinati ad essere utilizzati in un ambiente di casa o di ufficio al di fuori di un armadio di cablaggio.

#### Opzioni di configurazione

* Switch non gestiti: questi switch non hanno un'interfaccia di configurazione o opzioni. Sono plug and play. Sono in genere gli switch meno costosi e quindi spesso utilizzati in un piccolo ufficio. Gli switch non gestiti possono essere montati su desktop o su rack.
* Switch gestiti: questi switch hanno uno o più metodi per modificare il loro funzionamento. I metodi di gestione comuni includono: un'interfaccia a riga di comando (CLI) accessibile tramite console seriale, telnet o Secure Shell, un agente SNMP (Simple Network Management Protocol) incorporato che consente la gestione da una console remota o una stazione di gestione o un'interfaccia Web per la gestione da un browser web. Esempi di modifiche alla configurazione includono: attivazione di funzionalità come Spanning Tree Protocol o port mirroring, impostazione della larghezza di banda della porta, creazione o modifica di LAN virtuali (VLAN), ecc.
Oggi sono commercializzate due sottoclassi di switch gestiti:
* Switch intelligenti (smart): si tratta di switch gestiti con un set limitato di funzioni di gestione. Allo stesso modo, gli switch "gestiti via web" sono apparati che rientrano in una nicchia di mercato tra non gestiti e gestiti. Per un prezzo molto più basso di uno switch completamente gestito forniscono un'interfaccia web (e in genere nessun accesso CLI) e consentono la configurazione di impostazioni di base, come VLAN, larghezza di banda della porta e duplex.
* Enterprise gestito (managed): questi hanno una serie completa di funzioni di gestione, tra cui CLI, agente SNMP, e l'interfaccia web. Possono avere funzionalità aggiuntive per manipolare le configurazioni, come la possibilità di visualizzare, modificare, eseguire il backup e ripristinare le configurazioni. Rispetto agli switch intelligenti, gli switch aziendali hanno più funzionalità che possono essere personalizzate od ottimizzate e sono generalmente più costosi degli switch intelligenti. Gli switch aziendali si trovano in genere in reti con un numero maggiore di switch e connessioni, dove la gestione centralizzata è un notevole risparmio in termini di tempo e sforzi amministrativi. Uno switch impilabile (stackable) è una versione di switch che può operare da solo o essere utilizzato insieme ad altri esemplari uguali o compatibili che opportunamente collegati possono operare come fossero un unico switch con una quantità di porte pari alla somma degli apparati coinvolti nella pila (stack).

## Funzionamento e utilizzo

Lo switch agisce sull'indirizzamento e sull'instradamento all'interno delle reti LAN mediante indirizzo fisico (MAC), selezionando i frame ricevuti e dirigendoli verso il dispositivo corretto (leggendo il MAC di destinazione). L'instradamento avviene per mezzo di una corrispondenza univoca porta-indirizzo.
Lo switch ha un comportamento analogo a quello del bridge, mentre si differenzia dal router che opera a livello 3 (internetworking), mettendo in comunicazione più reti locali attraverso il protocollo IP, e dall'hub che invece è solamente un ripetitore multiporta di strato fisico ovvero diffusivo senza indirizzamento. L'instradamento attraverso switch è in grado di ridurre il dominio di collisione presente nelle reti locali broadcast in maniera più efficiente ed efficace rispetto al bridge.
L'uso esclusivo di switch per collegare nodi (con esclusione di hub e bridge) consente di aumentare l'efficienza di una tipica rete 10Base-T di un fattore 10, portandola dunque a competere con una più costosa rete 100Base-T provvista esclusivamente di hub, e quindi con topologia logica a bus.
Normalmente uno switch non è in grado di interconnettere reti di livello 2 eterogenee, ad esempio una rete Ethernet con una Token Ring, a meno che non si tratti di un cosiddetto "switch transazionale", mentre può interconnettere ad esempio reti Ethernet con velocità o tecnologie fisiche diverse.
Nel gergo delle reti locali, uno switch separa i domini di collisione connessi alle sue porte, ovvero se due calcolatori collegati a porte diverse trasmettono contemporaneamente, non si verifica una collisione, e i due frame possono attraversare lo switch contemporaneamente.
Il termine switch viene usato anche al di fuori delle reti Ethernet, a indicare un dispositivo che inoltri selettivamente i frame ricevuti, per esempio in ATM o Frame Relay. Inoltre, un dispositivo di rete che abbini le prestazioni di uno switch con le funzioni di livello superiore di un router viene detto switch-router o, più precisamente, switch di livello 3 (layer-3 switch).

### Funzionalità specifiche dei livelli

Mentre gli switch possono conoscere le topologie su molti livelli e inoltrare su uno o più livelli, tendono ad avere caratteristiche comuni. Oltre alle applicazioni ad alte prestazioni, i moderni switch commerciali utilizzano principalmente interfacce Ethernet.
A qualsiasi livello, uno switch moderno può implementare Power over Ethernet (PoE), che evita la necessità per i dispositivi collegati, come un telefono VoIP o un punto di accesso wireless, di avere un'alimentazione separata. Poiché gli switch possono avere circuiti di alimentazione ridondanti collegati a Uninterruptible Power Supply, il dispositivo collegato può continuare a funzionare anche in caso di interruzione della normale alimentazione.

#### Livello 1

Un hub di rete, o un ripetitore, è un semplice dispositivo di rete che non gestisce il traffico che lo attraversa. Qualsiasi pacchetto che entra in una porta viene "inondato" o "ripetuto" su ogni altra porta, ad eccezione di quella di entrata. Nello specifico, ogni bit o simbolo viene ripetuto mentre scorre (con un ritardo minimo per l'interfaccia di linea). A causa di ciò, un ripetitore hub può solo ricevere e inoltrare a una singola velocità. Poiché ogni pacchetto viene ripetuto su ogni altra porta, le collisioni tra di essi influenzano l'intera rete, limitando la sua capacità complessiva.
Esistono applicazioni specializzate in cui un hub di rete può essere utile, ad esempio copiare il traffico su più apparati di rete. Gli switch di solito hanno una funzionalità chiamata port mirroring che fornisce la stessa funzionalità.
Uno switch di rete crea virtualmente la connessione end-to-end del livello 1.
La funzione di bridging di uno switch utilizza le informazioni acquisite dal livello 2 per selezionare per ogni pacchetto le porte specifiche a cui deve essere inoltrato, eliminando il requisito che ogni nodo venga presentato con tutto il traffico. Di conseguenza, le linee di connessione non vengono "scambiate" letteralmente, ma appaiono solo in quel modo a livello di pacchetto.
Agli inizi degli anni 2000, c'era una piccola differenza di prezzo tra un hub e uno switch di fascia bassa.

#### Livello 2

Un bridge, che opera a livello di collegamento dati, può interconnettere un piccolo numero di dispositivi in una casa o in ufficio. Questo è un caso banale di bridging, in cui il bridge apprende l'indirizzo MAC di ciascun dispositivo connesso. I bridge bufferano anche un pacchetto in arrivo e adattano la velocità di trasmissione a quella della porta in uscita.
La tabella CAM ("Content Addressable Memory") memorizzata nella RAM è inizialmente vuota. Per ogni frame ethernet ricevuto lo switch apprende dall'indirizzo MAC di origine dei frame e lo aggiunge insieme all'interfaccia di input per creare un database di topologia. Lo switch quindi inoltra il frame all'interfaccia trovata nella tabella CAM in base all'indirizzo MAC di destinazione dei frame. Se l'indirizzo di destinazione è sconosciuto, lo switch invia il frame su tutte le interfacce (tranne l'interfaccia di ingresso). Questo comportamento è chiamato flooding.
I bridge classici possono anche interconnettersi utilizzando un protocollo Spanning Tree che disabilita i collegamenti in modo che la rete locale risultante sia senza cicli infiniti. Al contrario dei router, i bridge spanning tree devono avere topologie con un solo percorso attivo tra due punti. Il vecchio protocollo dello spanning tree IEEE 802.1D potrebbe essere piuttosto lento. Un protocollo Rapid Spanning Tree è stato introdotto come IEEE 802.1w. Il più recente standard Shortest path bridging (IEEE 802.1aq) è la prossima progressione logica e incorpora tutti i precedenti protocolli Spanning Tree (IEEE 802.1D STP, IEEE 802.1w RSTP, IEEE 802.1s MSTP) che bloccavano il traffico su tutti tranne un percorso alternativo. IEEE 802.1aq (ShortBlocking del percorso più breve) consente a tutti i percorsi di essere attivi con più di essi di costo uguale, fornisce topologie di livello 2 molto più grandi (fino a 16 milioni rispetto al limite 4096 VLAN), convergenza più veloce e migliora l'uso delle topologie mesh tramite maggiore larghezza di banda e ridondanza tra tutti i dispositivi consentendo al traffico di caricare la condivisione su tutti i percorsi di una rete mesh.
Una volta che un bridge apprende gli indirizzi dei suoi nodi connessi, inoltra i frame del livello di collegamento dati utilizzando un metodo di inoltro di livello 2.

#### Livello 3

Entro i confini del livello fisico Ethernet, uno switch di livello 3 può eseguire alcune o tutte le funzioni normalmente eseguite da un router. La funzionalità layer-3 più comune è la consapevolezza del multicast IP tramite lo snooping IGMP. Con questa consapevolezza, uno switch di livello 3 può aumentare l'efficienza consegnando il traffico di un gruppo multicast solo alle porte in cui il dispositivo collegato ha segnalato che desidera ascoltare quel gruppo.
Le tre tipologie si differenziano solo se il buffer di trasmissione è vuoto e se il link di uscita è libero. Nel caso contrario le tre tipologie si riducono all'unica store-and-forward.

#### Livello 4

Mentre il significato esatto del termine switch di livello 4 dipende dal fornitore, quasi sempre inizia con una capacità di traduzione degli indirizzi di rete, ma aggiunge un tipo di distribuzione del carico basato sulle sessioni TCP. Funzioni quali QoS e ACL (quest'ultima disponibile anche per livelli inferiori) permettono ad esempio di dare priorità diverse o bloccare pacchetti con contenuti particolari, specificabili nella programmazione dello switch.
Il dispositivo può includere un firewall stateful, un concentratore VPN o un gateway di sicurezza IPSec.

#### Livello 7

Gli switch di livello 7 possono distribuire il carico in base a localizzatori di risorse uniformi (URL) o utilizzando una tecnica specifica dell'installazione per riconoscere le transazioni a livello di applicazione. Nel Web si utilizzano per le reti di distribuzione dei contenuti (CDN).

### Stackable (Impilabile)

Macchine più evolute sono dotate di funzionalità che permettono l'interconnessione backbone, in cui rami con caratteristiche di velocità e capacità inferiori confluiscono ordinatamente su rami con caratteristiche superiori; per questi collegamenti vengono utilizzate velocità che possono arrivare anche a 10 Gbit/s. Generalmente in una macchina stackabile le porte adibite a queste connessioni sono dotate di interoperabilità o sono addirittura modulari, rendendo flessibile la modalità di link, ad es. nella scelta di velocità e trasporto fisico (rame o fibra).
Caratteristiche significative della macchine stackabili sono:
* La possibilità di impilare varie macchine;
* La possibilità di gestirle assieme come fossero una;
* La possibilità di interconnettere macchine di tipo diverso switch, hub, router;
* La possibilità di realizzare sistemi tolleranti ai guasti (se si rompe una macchina le altre continuano a funzionare e allo stesso modo se una porta non funziona se ne collega un'altra).

### Instradamento

Per decidere su quale porta inoltrare un frame ricevuto, uno switch deve possedere una funzione di instradamento. Questa è basata sull'apprendimento passivo progressivo degli indirizzi sorgente contenuti nei frame inoltrati (transparent learning o backward learning) che lo switch associa univocamente alla rispettiva porta di provenienza: questa associazione porta-indirizzo viene poi memorizzata in una tabella di instradamento di livello 2 chiamata forwarding database. Gli indirizzi appresi e memorizzati nella tabella vengono "dimenticati" dopo un certo tempo dalla loro ultima apparizione per motivi di scalabilità e flessibilità con eventuale variazione del numero e della posizione nella rete dei terminali utenti..
Quando un nodo A cerca di comunicare con un nodo B, il comportamento dello switch dipende dalla porta cui è collegato B:
* se B è collegato alla stessa porta a cui è collegato A, lo switch ignora il frame;
* se B è collegato a una porta diversa, lo switch inoltra il frame sulla porta a cui è collegato B;
* se lo switch non conosce ancora a quale porta è collegato B, inoltra il frame su tutte le porte.
Normalmente in quest'ultimo caso il nodo destinatario riceverà il pacchetto e risponderà al mittente permettendo allo switch di scoprire a quale porta esso è collegato e così via per tutti gli altri terminali di dislocazione non nota.
In alternativa è pur sempre possibile una configurazione del forwarding database in maniera manuale e statica sempre da parte dell'amministratore di rete, se il numero di terminali cui è connesso lo switch è basso.
Alcuni frame hanno un indirizzo destinazione particolare, denominato broadcast, che indica che sono destinati a tutti i calcolatori della rete. Uno switch inoltra questi frame su tutte le porte. Per questo si dice che lo switch crea un unico dominio di broadcast.
La complessità del comportamento di uno switch è compensata dalle migliori prestazioni ottenibili.
Il fatto che i frame vengano ritrasmessi selettivamente ha anche delle implicazioni di sicurezza informatica in quanto evita che un calcolatore possa facilmente intercettare (sniffare) il traffico instradato a un altro terminale. In realtà ciò è vero solo in prima approssimazione essendo state sviluppate raffinate tecniche di attacco che permettono lo sniffing anche in presenza di switch, come Switch Flooding, il Port stealing e l'ARP Poisoning, per cui uno switch non deve essere considerato come una protezione inattaccabile contro i rischi di intercettazione.

### Metodi di instradamento

Esistono quattro metodi di instradamento che possono essere utilizzati da un bridge:
* Immagazzina e inoltra: memorizza in un buffer di commutazione e verifica ogni frame prima di inoltrarlo; un frame viene quindi ricevuto nella sua interezza prima di essere inoltrato.
* Taglia: lo switch inizia l'inoltro dopo che è stato ricevuto l'indirizzo di destinazione del frame. Quando la porta di uscita è occupata, lo switch torna all'operazione di memorizzazione e inoltro. Inoltre, quando la porta di uscita è in esecuzione a una velocità di trasmissione più rapida rispetto alla porta di ingresso, di solito viene utilizzata la funzione di memorizzazione e inoltro.
* Senza frammenti: un metodo che tenta di conservare i vantaggi sia di immagazzinamento e inoltro che di taglio. Fragment free controlla i primi 64 byte del frame, dove sono archiviate le informazioni di indirizzamento. Secondo le specifiche Ethernet, le collisioni dovrebbero essere rilevate durante i primi 64 byte del frame, quindi i frame che sono in errore non verranno inoltrati. In questo modo il frame raggiungerà sempre la destinazione desiderata. Il controllo degli errori dei dati effettivi nel pacchetto viene lasciato per il dispositivo finale.
* Commutazione adattiva: un metodo per selezionare automaticamente tra le altre tre modalità.
Mentre ci sono applicazioni specializzate, come le reti di storage area, in cui le interfacce di input e output hanno la stessa larghezza di banda, questo non è sempre il caso nelle applicazioni LAN generiche. Nelle LAN, uno switch utilizzato per l'accesso dell'utente finale concentra in genere una larghezza di banda e un uplink inferiori in una larghezza di banda maggiore.

## Prestazioni

Il ritardo (delay) introdotto da uno switch è generalmente di pochi microsecondi, quindi quasi ininfluente per la gran parte delle applicazioni.
Quando un host è connesso a uno switch, o su una connessione diretta tra due switch, non sono possibili collisioni, e quindi è possibile utilizzare la modalità "full duplex", ovvero i due nodi possono trasmettere contemporaneamente.
L'inoltro selettivo dei frame permette anche a più frame di attraversare contemporaneamente lo switch, e quindi la banda totale disponibile non viene ridotta con l'aumento del numero di nodi attivi. In una connessione di questo tipo si dice che l'host ha un accesso dedicato al commutatore. Questo garantisce che due nodi connessi da uno switch possano comunicare tra loro alla velocità nominale del collegamento, ma solo se non sono impegnati contemporaneamente in altre conversazioni.
Nella realtà, l'introduzione di uno switch in una rete locale porta alla diminuzione del traffico totale sulla rete e a un conseguente miglioramento delle prestazioni, ma spesso questo miglioramento porta a evidenziare altri "colli di bottiglia" della rete, spesso la connessione a internet o la capacità dei server.

## Gestione

Uno switch di fascia medio-alta è tipicamente dotato di un agente di gestione, ovvero un piccolo programma software che permette di controllarne e monitorarne il funzionamento. Questo è accessibile sia attraverso una porta seriale (gestione out-of-band, talvolta anche con una porta ethernet dedicata oltre alla seriale) che attraverso la stessa rete ethernet (gestione in-band). In questo caso, all'agente di gestione viene normalmente assegnato un indirizzo IP, e questo risponde ai protocolli SNMP, telnet e/o ssh, HTTP(s).
Uno switch gestito permette tipicamente di accedere da remoto a queste funzionalità:
* interrogazione dello stato delle porte (permette di sapere se c'è un nodo collegato, e a quale velocità);
* statistiche di traffico e di errori per ciascuna porta (permette di identificare i nodi più attivi e i collegamenti malfunzionanti);
* interrogazione della tabella di instradamento (permette quindi di sapere a quale porta è collegato il nodo che ha un certo MAC address);
* interrogazione e modifica dei parametri di configurazione, ad esempio VLAN, Spanning Tree;
* modifica dello stato amministrativo di una porta (permette di escludere dalla rete un nodo malfunzionante, o che non rispetti le policy della rete);
* abilitazione e disabilitazione dell'alimentazione delle porte, se PoE (anche momentanea, tipicamente per riavviare l'apparato collegato).

## Monitoraggio del traffico

A meno che il mirroring delle porte o altri metodi come RMON, SMON o sFlow siano implementati in uno switch, è difficile monitorare il traffico che viene collegato tramite uno switch perché solo le porte di invio e di ricezione possono vedere il traffico. Queste funzioni di monitoraggio sono raramente presenti su switch di livello consumer.
Due metodi popolari progettati specificamente per consentire a un analista di rete di monitorare il traffico sono:
* Port mirroring: lo switch invia una copia dei pacchetti di rete a una connessione di rete di monitoraggio;
* SMON - "Switch Monitoring": è descritto da RFC 2613 ed è un protocollo per il controllo di strutture come il mirroring delle porte.
Un altro metodo per monitorare può essere quello di connettere un hub di livello 1 tra il dispositivo monitorato e la sua porta dello switch. Ciò indurrà un lieve ritardo, ma fornirà più interfacce che possono essere utilizzate per monitorare la singola porta dello switch.