# VLAN

In telecomunicazioni e informatica il termine VLAN (Virtual Local Area Network) indica un insieme di tecnologie che permettono di segmentare il dominio di broadcast, che si crea in una rete locale (tipicamente IEEE 802.3) basata su switch, in più reti locali logicamente non comunicanti tra loro, ma che condividono globalmente la stessa infrastruttura fisica di rete locale. Le applicazioni di questa tecnologia sono tipicamente legate ad esigenze di separare il traffico di gruppi di lavoro o dipartimenti di un'azienda, per applicare diverse politiche di sicurezza informatica.

## Descrizione

Le prime versioni proprietarie permettevano di realizzare su un singolo switch diverse reti "virtuali" (VLAN), assegnando ciascuna porta ad una di queste reti. Gli host collegati ad una rete VLAN potevano comunicare solo tra di loro e non con quelli collegati alle altre reti VLAN, se non per mezzo di un router connesso ad entrambe le VLAN, cioè tramite un indirizzamento a livello 3 di internetworking.
Ad esempio, ipotizziamo di avere un solo switch, e di avere la necessità di incrementare la sicurezza affinché utenti di un gruppo di lavoro non interagiscano con utenti di un altro gruppo. Attivando, via software, la gestione delle VLAN sullo switch, si può impostare ad esempio che su 24 porte ethernet disponibili, le prime 12 facciano parte del gruppo 1 e le seconde 12 facciano invece parte del gruppo 2. Il risultato è lo stesso che si otterrebbe utilizzando due diversi switch "tradizionali", uno per ciascuna rete, ma con alcuni vantaggi:
* costi e ingombri: invece di diversi switch, è possibile utilizzare un solo switch con molte porte, risparmiando in costi di acquisizione e manutenzione, spazio occupato, prese di alimentazione elettrica, indirizzi IP per la gestione remota;
* flessibilità: le porte dello switch possono essere spostate da una VLAN ad un'altra per mezzo di semplici operazioni di riconfigurazione software, spesso effettuabili da remoto. Altre VLAN possono essere aggiunte utilizzando le porte esistenti, e quindi a costo nullo;
* prestazioni: il traffico di broadcast è confinato alla singola VLAN;
* sicurezza: gli host hanno accesso al traffico della loro VLAN.
In seguito la tecnologia è stata sviluppata, aggiungendo la possibilità di collegare tra loro due switch unendo le VLAN presenti su di essi (VLAN trunking), permettendo così la realizzazione di VLAN che si estendono nelle diverse parti di una rete aziendale, anche su scala geografica.
Questa tecnologia è poi stata standardizzata nel 2003 definendo le specifiche che permettono di definire più reti locali virtuali distinte come IEEE 802.1Q in modo che apparati di rete di diversi fornitori possano essere collegati tra loro in maniera interoperabile.

### Realizzazione e terminologia in IEEE 802.1Q

Ciascuna VLAN è identificata da un numero, detto VID (Vlan ID), che va da 1 a 4094 (0 e 4095 sono riservati).
Per realizzare il trunking di VLAN presenti su switch diversi, è necessario che sui collegamenti tra switch si possa identificare a quale VLAN appartiene ciascun pacchetto. Per fare questo, nel frame ethernet IEEE 802.3 viene aggiunto un campo di 12 Bit posto tra il destination address e il campo type/length, questo tag, detto VLAN TAG oppure DOT1Q TAG, contiene il VID relativo a quel pacchetto. Lo switch che riceve questo pacchetto deve quindi sapere che deve interpretare questi 12 Bit come VLAN TAG, ed il resto del pacchetto come un normale pacchetto 802.3.
Una porta di uno switch su cui viaggiano pacchetti con il VLAN TAG è detta tagged o trunk port. Viceversa, una su cui viaggiano pacchetti senza VLAN TAG è detta access port. Alcuni switch accettano anche un traffico misto di pacchetti tagged e non tagged, e una porta configurata in questo modo è detta hybrid port.
Più in generale l'appartenenza di un host ad una VLAN può essere definita secondo diversi criteri:
* porte: come nell'esempio sopra descritto, ciascuna porta di uno switch è configurata per appartenere ad una data VLAN. Tutti i pacchetti provenienti da quella porta saranno "taggati" con l'ID della sua VLAN, e su questa porta verranno inviati solo pacchetti provenienti dalla sua VLAN. Questo è il metodo più diffuso e più semplice da implementare, in quanto lo switch deve guardare solo da quale porta viene un pacchetto per attribuirgli un VID.
* autenticazione: i diversi apparati possono essere assegnati automaticamente a determinate VLAN sulla base di credenziali di autenticazione dell'utente o dell'apparato stesso tramite l'impiego del protocollo 802.1x.
* protocollo: l'appartenenza ad una VLAN è dettata dal protocollo incapsulato in 802.3. Ad esempio, i pacchetti IP possono appartenere ad una VLAN diversa da quella usata dai pacchetti IPX.
* MAC Address o indirizzo IP: i pacchetti vengono attribuiti ad una VLAN sulla base dell'indirizzo MAC o IP dell'host da cui provengono. In questo modo, ad una porta di uno switch possono essere collegati diversi host, che però appartengono a VLAN diverse.
* analisi del pacchetto: lo switch che riceve il pacchetto lo esamina in dettaglio, possibilmente fino al livello applicazioni, e sulla base dei risultati decide a quale VLAN attribuirlo sulla base del suo contenuto.

### Tagged e Untagged Port e VLAN con porte in comune

Nel caso in cui si voglia implementare una situazione in cui si devono creare due VLAN distinte (VLAN1 e VLAN2) dove però devono essere presenti alcune macchine visibili su entrambe le VLAN bisogna configurare lo switch come segue:
Come si può notare, la porta 1 è presente in entrambe le VLAN (tagged) ed è l'unica che sarà visibile su tutte e due le sottoreti. Naturalmente la scheda di rete collegata a quella porta deve poter riconoscere il protocollo IEEE 802.1q ed avere il software necessario per poter configurare entrambe le VLAN. L'unica cosa importante da tenere presente è che il VID (VLAN ID) deve essere lo stesso inserito nella configurazione dello switch. Non tutte le schede di rete hanno la possibilità di configurare le VLAN ed è buona norma scaricare i driver e il software ufficiale del produttore in quanto, se la scheda di rete viene riconosciuta dal sistema, è molto probabile che abbia caricati i driver necessari per un funzionamento di basso livello.