Uno degli aspetti piu' interessanti della virtualizzazione riguarda il networking. Più precisamente il networking virtuale e gli switch virtuali. Partendo da un singolo host ESXi, il networking virtuale permette di collegare in rete le macchine virtuali in esecuzione al suo interno, come si farebbe con macchine fisiche. Così come esistono switch fisici a cui si collegare macchine fisiche, allo stesso modo esistono switch virtuali a cui collegare macchine virtuali. Gli switch virtuali possono essere collegati alla rete fisica semplicemente associandoli a una o più interfacce di rete disponibili nell’host ESXi.
Gli switch virtuali consentono alle macchine virtuali di comunicare tra loro utilizzando gli stessi protocolli utilizzati negli switch fisici, senza la necessità di hardware di rete aggiuntivo; vi è inoltre pieno supporto alle VLAN (standard 802.1Q). Le stesse macchine virtuali, così come PC o server fisici, possono essere dotate di una o più schede Ethernet, ognuna delle quali con proprio indirizzo IP e indirizzo MAC. Dal punto di vista della rete, le macchine virtuali hanno le stesse proprietà delle macchine fisiche.
Le componenti chiave del networking virtuale in VMware vSphere sono elencate di seguito.
- Interfacce di rete virtuali, o Virtual NIC, utilizzate dalle singole macchine virtuali.
- Switch virtuali standard, o Standard vSwitch, che collegano le macchine virtuali tra loro e con la rete fisica esterna, in quest’ultimo caso sfruttando le interfacce fisiche dell'host ESXi. Uno switch virtuale può collegarsi tramite porte di uplink (uplink ports) a una o più schede Ethernet fisiche, con la possibilità di fare NIC Teaming (cioè di aggregare più canali Ethernet).
- Gruppi di porte, o Port Groups, ossia insiemi di porte accomunate dalle stesse caratteristiche (all’interno di uno stesso vSwitch).
- Switch virtuali distribuiti, o Distributed vSwitch, che permettono di operare come se si avesse un singolo switch centralizzato, utilizzato contemporaneamente da più hosts ESXi.
Uno switch virtuale, sia di tipo standard e sia distribuito, funziona come uno switch Ethernet fisico, operando al livello 2 della pila ISO-OSI e mantenendo una tabella di MAC address (mac-address table) aggiornata ogni volta che il traffico attraversa lo switch. Tuttavia, a differenza degli switch fisici, gli switch virtuali non necessitano di alcuna fase di apprendimento degli indirizzi MAC per la compilazione della MAC-Address table, perchè conoscono in maniera implicita quali sono i dispositivi collegati su ogni porta. Inoltre, a regime, gli switch virtuali non aggiornano la tabella d’inoltro con informazioni provenienti dalla rete fisica. Questo pone al riparo da attacchi di denial of service o tentativi di worm o virus che provano a scansionare gli host in rete, alla ricerca di vulnerabilità.
Switch virtuali differenti non possono condividere la stessa interfaccia fisica di un host: una volta che questa è assegnata a uno switch virtuale, non sarà più disponibile per gli altri. A differenza del mondo reale, in una rete virtuale non c'è possibilità di interconnettere più switch tra loro, ma si è obbligati ad utilizzare una topologia di rete a livello singolo: il vantaggio è che non possono generarsi loop di rete, pertanto il protocollo Spanning Tree, non essendo necessario, non esiste. Questa caratteristica è chiamata Virtual Switch Isolation.
Per la gestione del virtual networking ci si collega al vCenter Server tramite vSphere Web Client. In alternativa, se si devono gestire switch standard, ci si può collegare in modo diretto agli host ESXi con vSphere Client. Indipendentemente dal tipo di client utilizzato, gli switch distribuiti possono essere gestito solo collegandosi al vCenter Server.
Qui sotto possiamo vedere una schermata esplicativa, relativa a un host ESXi. Gli elementi messi in evidenza saranno trattati nel dettaglio nei paragrafi sotto.
Uplink e porte di uplink
Una porta di uplink è la porta di uno switch virtuale associata ad una o più interfacce fisiche di rete dell’host ESXi, e permette il collegamento della rete virtuale con quella fisica. Ognuna delle interfacce fisiche di rete dell’host ESXi è chiamata semplicemente uplink.
E' possibile configurare gli switch virtuali senza uplink. Uno switch privo di uplink crea una virtual intranet. Si usa questa modalità quando lo switch virtuale deve fornire connessione a macchine virtuali protette da un firewall, anch'esso installato all'interno di una VM. In tal caso il firewall virtuale avrà più interfacce virtuali, una delle quali dovrà essere collegata allo switch privo di uplink. Chiaramente per tutto il traffico interno alla rete virtuale, gli uplink non sono necessari.
Port Group
Costituiscono una funzionalità del virtual networking non presente nelle reti fisiche. Un Port Group, o gruppo di porte, può essere visto come insieme di porte con caratteristiche comuni. In sostanza, un port group definisce tutte le caratteristiche di ogni porta. Proprio per questo motivo, quando si desidera collegare una macchina virtuale ad una porta, è sufficiente specificare il nome del Port Group a cui collegarla.
Fra le caratteristiche che si possono definire a monte vi sono:
- nome del vSwitch di appartenenza;
- VLAN ID e politiche per il tagging e il filtraggio (è concesso che diversi gruppi di porte possano avere lo stesso VLAN ID);
- politica di Teaming (unione uplink, bilanciamento, ordine di failover, etc..);
- opzioni di sicurezza;
- parametri di traffic shaping.
Tipologia delle connessioni
Un vSwitch permette essenzialmente due tipi di connessione:
- VMkernel - connessione ai servizi del VMkernel tramite le cosidette VMkernel ports. I servizi gestibili con una VMkernel port includono l’accesso allo storage IP (NFS e iSCSI), le migrazioni vMotion, le funzioni di Fault Tolerance, l’accesso alla rete di gestione principale.
- Virtual Machine - connessione per le macchine virtuali tramite port group.
L’installazione di VMware ESXi su un host comporta la creazione di uno standard vSwitch predefinito, dove all’interno troviamo un port group chiamato VM Network ed una porta VMkernel chiamata Management Network, utilizzata per la gestione dell’host ESXi.
È sempre buona pratica separare la rete delle macchine virtuali dalle reti di gestione, per ragioni di prestazioni ma soprattutto di sicurezza.