Progetto di reti locali/Virtual LAN

Indice del libro

Le Virtual LAN (VLAN) permettono di condividere una singola infrastruttura fisica (stessi apparati, stesso cablaggio) tra più LAN logiche: attraverso alcune porte di un bridge passa solo il traffico di una certa LAN, attraverso altre porte passa solo il traffico di un'altra LAN, e così via → ogni bridge ha un filtering database per ogni VLAN.[1]

Una rete di livello data-link costituita da più VLAN è più vantaggiosa rispetto a:

  • una rete di livello rete, grazie al supporto della mobilità: gli host possono continuare a essere raggiungibili allo stesso indirizzo (l'indirizzo MAC) quando si spostano;
  • una singola LAN fisica, grazie a:
    • maggiore scalabilità: il traffico broadcast è confinato in domini di broadcast più ridotti;
    • maggiore sicurezza: un utente appartenente a una VLAN non può effettuare un MAC flooding attack su altre VLAN;
    • migliore policing: l'amministratore di rete può configurare politiche diverse in base alla VLAN;
  • più LAN completamente separate dal punto di vista fisico, grazie al maggiore risparmio di risorse e di costi: i bridge non sono duplicati per ogni LAN ma sono condivisi tra tutte le VLAN, così come i cavi tra i bridge possono trasportare il traffico di qualsiasi VLAN.

Un esempio di applicazione delle VLAN è la rete di un'università: una VLAN è riservata agli studenti, un'altra VLAN è riservata ai docenti con politiche meno restrittive, e così via.

Interconnessione di VLAN modifica

I dati non possono attraversare a livello data-link i confini delle VLAN: una stazione in una VLAN non può mandare una trama a un'altra stazione in una VLAN differente, poiché le VLAN hanno domini di broadcast differenti. Una soluzione possibile potrebbe consistere nel collegare la porta di una VLAN alla porta di un'altra VLAN, ma in questo modo si creerebbe un unico dominio di broadcast → le due VLAN apparterrebbero di fatto alla stessa LAN.

Pertanto una stazione in una VLAN può mandare dati a un'altra stazione in una VLAN differente solo a livello rete → serve un router che colleghi la porta di una VLAN con la porta di un'altra VLAN: una stazione in una VLAN invia un pacchetto IP[2] verso il router, quindi quest'ultimo rigenera l'intestazione di livello data-link del pacchetto (in particolare cambia gli indirizzi MAC) e invia il pacchetto alla stazione nell'altra VLAN. Questa soluzione però occupa due interfacce di un router e due porte di uno stesso bridge, e richiede due fili che collegano questi stessi due apparati di rete → un router a braccio singolo permette di interconnettere due VLAN tramite un singolo filo, occupando una singola porta del bridge e una singola interfaccia del router: attraverso l'unico filo e attraverso la porta del bridge può passare il traffico di entrambe le VLAN.

Il traffico broadcast di livello data-link non può ancora attraversare i confini delle VLAN, poiché il router non lo propaga sulle altre interfacce spezzando il dominio di broadcast → una stazione in una VLAN che vuole contattare una stazione in un'altra VLAN non può scoprirne l'indirizzo MAC tramite il protocollo ARP, ma deve inviare un pacchetto al suo indirizzo IP, il quale ha un diverso prefisso di rete poiché le due VLAN devono avere spazi di indirizzamento diversi.

Assegnazione di host alle VLAN modifica

Ogni bridge mette a disposizione delle porte, dette porte access, a cui gli host si possono collegare tramite dei link access. Nei link access passano trame non contrassegnate, ossia prive del tag VLAN; le porte access contrassegnano le trame in base alle VLAN di appartenenza.

Quando un host si collega a una porta access, si può riconoscerne la VLAN di appartenenza in quattro modi:

Assegnazione basata sulle porte modifica

Ogni porta access è associata a una singola VLAN → un host può accedere a una VLAN collegandosi alla relativa porta sul bridge.

Vantaggi
  • configurazione: non è necessario configurare le VLAN sugli host → compatibilità massima con i dispositivi.
Svantaggi
  • sicurezza: l'utente può collegarsi a qualsiasi VLAN → non è possibile stabilire delle politiche diverse in base alle VLAN;
  • mobilità a livello rete: sebbene l'utente possa collegarsi a qualsiasi VLAN, non può comunque mantenere lo stesso indirizzo IP da una VLAN all'altra.

Assegnazione trasparente modifica

Ogni host è associato a una certa VLAN in base al suo indirizzo MAC.

Svantaggi
  • configurazione: un nuovo utente deve contattare l'amministratore di rete per registrare l'indirizzo MAC del suo dispositivo → può non essere semplice per un utente trovare l'indirizzo MAC del proprio dispositivo;
  • costo del database: è necessario un server, insieme a del personale per la sua gestione, che memorizzi il database contenente le associazioni tra gli indirizzi MAC e le VLAN;
  • manutenzione del database: occorre cancellare le entry corrispondenti a indirizzi MAC non più in uso, ma l'utente spesso quando dismette un dispositivo si dimentica di ricontattare l'amministratore di rete per chiederne la cancellazione dell'indirizzo MAC → nel tempo il database continua a crescere;
  • sicurezza: l'utente può configurare un indirizzo MAC fasullo e accedere a un'altra VLAN fingendosi un altro utente.

Assegnazione per utente modifica

Ogni utente possiede un account, e ogni account utente è associato a una certa VLAN. Quando si collega alla porta di un bridge, l'utente si autentica inserendo le proprie credenziali di accesso tramite il protocollo standard 802.1x, e il bridge è in grado di contattare un server RADIUS per verificare le credenziali e di assegnare all'utente la VLAN appropriata in caso di successo.

Svantaggi
  • compatibilità: l'autenticazione viene svolta a livello data-link direttamente dalla scheda di rete → ogni dispositivo deve disporre di una scheda di rete compatibile con lo standard 802.1x;
  • configurazione: l'utente deve impostare molti parametri di configurazione (ad es. il tipo di autenticazione) sul proprio dispositivo prima di poter accedere alla rete.

Assegnazione cooperativa modifica

Ogni utente si associa da sé alla VLAN che desidera: è il sistema operativo sull'host a contrassegnare le trame in uscita, così esse arrivano tramite un link trunk alla porta del bridge già contrassegnate.

Svantaggi
  • configurazione: l'utente deve configurare manualmente il proprio dispositivo prima di poter accedere alla rete;
  • sicurezza: l'utente può collegarsi a qualsiasi VLAN → non è possibile stabilire delle politiche diverse in base alle VLAN.

Tagging delle trame modifica

I link trunk sono i link che possono trasportare il traffico di VLAN diverse:

Nei link trunk passano trame contrassegnate, ossia dotate del tag VLAN standardizzato come IEEE 802.1Q (1998):

Formato del tag VLAN (4 byte).
16 19 20 32
TPID (0x8100) PCP CFI VLAN ID

dove i campi sono:

  • campo Tag Protocol Identifier (TPID) (2 byte): identifica una trama contrassegnata (valore 0x8100);
  • campo Priority Code Point (PCP) (3 bit): specifica la priorità utente per la qualità del servizio:   Progetto di reti locali/Qualità del servizio nelle LAN IEEE 802#IEEE 802.1p;
  • flag Canonical Format Indicator (CFI) (1 bit): specifica se l'indirizzo MAC è in formato canonico (valore 0, ad es. Ethernet) oppure no (valore 1, ad es. token ring);
  • campo VLAN Identifier (VID) (12 bit): identifica la VLAN della trama:
    • valore 0: la trama non appartiene ad alcuna VLAN → utilizzato nel caso l'utente voglia solamente impostare la priorità per il traffico;
    • valore 1: la trama appartiene alla VLAN predefinita;
    • valori da 2 a 4094: la trama appartiene alla VLAN identificata da questo valore;
    • valore 4095: riservato.

IEEE 802.1Q in realtà non incapsula la trama originale; invece, aggiunge il tag tra i campi indirizzo MAC sorgente e EtherType/Length della trama originale, lasciando la dimensione minima della trama invariata a 64 byte ed estendendo la dimensione massima della trama da 1518 byte a 1522 byte → sui link trunk non possono esserci degli hub perché non supportano le trame più lunghe di 1518 byte:

 
Inserimento del tag VLAN in una trama Ethernet.

Nel backbone modifica

 
Esempio di trasporto VLAN di una trama attraverso un link trunk nel backbone.

Il trasporto di una trama da una stazione all'altra attraverso i link trunk avviene nel seguente modo:[3]

  1. l'host sorgente invia verso la porta access una trama non contrassegnata;
  2. quando una trama arriva alla porta access, il bridge contrassegna la trama con il tag corrispondente alla VLAN associata alla porta;
  3. il bridge invia la trama contrassegnata su un link trunk;
  4. ogni bridge che riceve la trama guarda il filtering database relativo alla VLAN specificata dal tag:
    • se la destinazione è "remota", il bridge propaga la trama su un link trunk lasciandone il tag VLAN invariato;
    • se la destinazione è "locale", ossia è raggiungibile attraverso una delle porte access associate alla VLAN della trama, il bridge rimuove il tag VLAN dalla trama e invia la trama non contrassegnata sul link access verso l'host di destinazione.

Interfacce di rete virtuali modifica

 
Esempio di trasporto VLAN di una trama attraverso le interfacce di rete virtuali di un router a braccio singolo e di un server.

Un server tipicamente ha bisogno di essere contattato allo stesso tempo da più host situati in VLAN diverse → siccome a ogni interfaccia di rete è possibile associare solo una VLAN, il server richiederebbe di avere una interfaccia di rete per ogni VLAN, ciascuna collegata al bridge con un proprio link fisico. Analogo problema vale per un router a braccio singolo, che ha bisogno di ricevere e mandare traffico da/a più VLAN diverse per permettere la loro interconnessione.

Le interfacce di rete virtuali permettono di avere allo stesso tempo più interfacce di rete logiche virtualizzate sulla stessa scheda di rete fisica, la cui singola interfaccia fisica è collegata con il bridge tramite un unico link fisico trunk: il sistema operativo vede più interfacce di rete installate nel sistema, e il driver della scheda di rete in base al tag VLAN espone al sistema operativo ogni trama come se fosse arrivata da una delle interfacce di rete virtuali.

Le interfacce di rete virtuali hanno indirizzi IP diversi, perché ogni VLAN ha il suo spazio di indirizzamento, ma hanno lo stesso indirizzo MAC, uguale a quello della scheda di rete fisica; ciò non costituisce tuttavia un problema in quanto è sufficiente che l'indirizzo MAC sia univoco all'interno del dominio di broadcast (quindi all'interno della VLAN).

Tag stacking modifica

Il tag stacking (anche noto come "provider bridging" o "Stacked VLAN" o "QinQ"), standardizzato come IEEE 802.1ad (2005), permette di inserire più tag VLAN nella pila di una trama contrassegnata, dal tag più esterno a quello più interno:

 
Inserimento di due tag VLAN in una trama Ethernet.

Il tag stacking è utile per trasportare il traffico di più clienti che utilizzano le VLAN su una rete del provider condivisa: due clienti diversi potrebbero decidere di utilizzare lo stesso VLAN Identifier nelle loro reti aziendali → i bridge ai margini della rete del provider aggiungono alle trame in ingresso e rimuovono dalle trame in uscita dei tag esterni che distinguono le VLAN che hanno lo stesso VLAN Identifier ma sono di clienti diversi.

Vantaggi
  • flessibilità: il tag stacking è più flessibile e meno distruttivo rispetto alla definizione di un altro formato di tagging con un VLAN Identifier più grande;
  • semplicità: il tag stacking è più semplice rispetto al tunneling Ethernet:
    • tunneling Ethernet: i bridge ai margini devono incapsulare la trama in una nuova intestazione Ethernet → operazione complessa;
    • tag stacking: i bridge ai margini si limitano a effettuare delle più rapide operazioni di push e pop nella pila dei tag;
  • scalabilità delle VLAN: il tag stacking è più scalabile rispetto alla traslazione di VLAN:
    • traslazione di VLAN: i bridge ai margini modificano il VLAN Identifier di ogni trama in modo tale che ciascun VLAN Identifier sia univoco all'interno della rete del provider → problema di scalabilità: sono a disposizione solo un massimo di 4094 VLAN;
    • tag stacking: i bridge ai margini usano un VLAN Identifier esterno per ogni cliente, indipendentemente dal numero di VLAN Identifier interni che ogni cliente utilizza → la rete del provider può servire fino a 4094 clienti, ciascuno con 4094 VLAN.
Svantaggi
  • scalabilità degli indirizzi MAC: il tag stacking è meno scalabile rispetto al tunneling Ethernet:
    • tag stacking: il filtering database di ogni bridge nella rete del provider deve apprendere tutti gli indirizzi MAC delle interfacce di rete situate nelle VLAN di tutti i clienti → problema di scalabilità: i filtering database dei bridge sono memorizzati in memorie TCAM di dimensione limitata;
    • tunneling Ethernet: il filtering database di ogni bridge nella rete del provider vede solo gli indirizzi MAC dei bridge ai margini della rete;
  • sicurezza: un broadcast storm sulla VLAN di un cliente può avere ripercussioni sul traffico di altri clienti:   #Ottimizzazione del traffico broadcast.

PVST modifica

Lo STP e il RSTP standard non supportano le VLAN: l'albero ricoprente è unico nell'intera rete e l'algoritmo di spanning tree opera indipendentemente dalle VLAN. Molti fornitori offrono funzionalità proprietarie per il supporto alle VLAN: per esempio Cisco offre il Per-VLAN Spanning Tree (PVST) e il Per-VLAN Spanning Tree Plus (PVST+), basati sullo STP, e il Rapid Per-VLAN Spanning Tree Plus (Rapid-PVST+), basato sul RSTP.

Il PVST consente più alberi ricoprenti nella rete, uno per ogni VLAN; ciascun albero è determinato tramite la configurazione per VLAN dei parametri del protocollo di spanning tree. In particolare, è necessario personalizzare la priorità di ogni bridge in base alla VLAN al fine di differenziare il root bridge fra VLAN diverse, altrimenti risulterebbe lo stesso albero per tutte le VLAN, identificando la VLAN a cui si riferisce il valore di priorità con il campo STP Instance (12 bit), introdotto nel Bridge Identifier da IEEE 802.1t (2001):

Formato del Bridge Identifier stabilito da IEEE 802.1t.
4 16 64
Bridge Priority STP Instance Bridge MAC Address
Svantaggi
  • ottimizzazione del traffico: l'ottimizzazione operata dal PVST sul carico di traffico non è così significativa, anche tenendo conto della elevata larghezza di banda dei link nelle reti moderne:
    • il PVST ottimizza il carico di traffico nell'intera rete: se gli alberi ricoprenti sono ben bilanciati, tutti i link sono utilizzati → non ci sono più link attivi ma completamente inutilizzati;
    • il PVST non ottimizza il carico di traffico all'interno di una VLAN: il traffico della VLAN è ancora legato a uno specifico albero ricoprente → non è possibile scegliere il percorso più breve verso la destinazione come avviene nelle reti IP;
  • carico CPU: l'esecuzione di più istanze del protocollo di spanning tree allo stesso tempo aumenta il carico sulle CPU dei bridge;
  • interoperabilità: la coesistenza nella stessa rete di bridge dotati del supporto a PVST e di bridge privi di esso può portare a dei broadcast storm;
  • complessità: l'amministratore di rete deve gestire più alberi ricoprenti sulla stessa rete → la risoluzione dei problemi è più complicata: è difficile capire il percorso del traffico, poiché le trame attraversano link diversi a seconda della VLAN a cui appartengono.

Problemi modifica

Ottimizzazione del traffico broadcast modifica

Il traffico broadcast viene inviato su tutti i link trunk, oltre che sui link access associati alla VLAN a cui la trama broadcast appartiene:

  • un broadcast storm su un link, causato dal traffico di una VLAN, può influenzare le altre VLAN saturando i link trunk → anche se le trame non possono passare da una VLAN all'altra a livello data-link, l'isolamento della rete non è completo neanche con le VLAN dovuto al fatto che i link sono condivisi;
  • una trama broadcast appartenente a una certa VLAN può raggiungere un bridge all'estremità della rete su cui non è presente alcuna porta access appartenente a quella VLAN → il filtering database di quel bridge inserirà tramite i meccanismi di apprendimento un'inutile entry contenente l'indirizzo MAC sorgente.

Al fine di ridurre il traffico broadcast sui link trunk ed evitare entry inutili nei filtering database, ogni bridge ha bisogno di sapere di quali VLAN propagare il traffico broadcast su ogni porta trunk:

  • protocollo GVRP: è un protocollo standard molto complesso che permette ai bridge di scambiarsi informazioni sulle VLAN nella topologia della rete;
  • meccanismi proprietari: vengono impiegati al posto del protocollo GVRP perché sono più semplici, anche se introducono problemi di interoperabilità;
  • configurazione manuale: l'amministratore di rete configura esplicitamente su ogni bridge le VLAN di cui propagare il traffico broadcast → le VLAN sono configurate staticamente e non possono cambiare in caso di riconvergenza dell'albero ricoprente in seguito al guasto di un link.

Interoperabilità modifica

Le VLAN non sono una tecnologia plug and play (com'era lo STP), e gli utenti domestici non sono abbastanza esperti per configurarle → i bridge di fascia bassa tipicamente sono privi del supporto alle VLAN, e possono scartare le trame contrassegnate perché troppo grosse.

Un altro motivo di incompatibilità tra gli apparati di rete di diversi fornitori è il tagging sulle porte trunk: alcuni bridge contrassegnano il traffico appartenente a tutte le VLAN, altri lasciano il traffico appartenente alla VLAN 1 non contrassegnato.

Note modifica

  1. Nell'implementazione reale, il filtering database è unico e solitamente realizzato con una singola TCAM nell'intero apparato di rete.
  2. Per semplicità qui si considera il protocollo IP come protocollo di livello rete.
  3. Si assume di adottare l'assegnazione basata sulle porte.