Proseguiamo l'argomento del networking virtuale di VMware ESX/ESXi mostrando e descrivendo le configurazioni avanzate degli switch virtuali e dei Port Groups. Vedremo in particolare le funzionalità per bilanciare il carico di rete e le politiche di failover.
Nell'immagine sottostante vengono indicati gli oggetti e i termini chiave di una rete virtuale gestibile con ESX/ESXi, descritti nel precedente articolo "Virtual networking: concetti base".
Configurazione del NIC Teaming
Uno switch virtuale può essere connesso a più interfacce di rete fisiche (quelle dell'host ESX/ESXi); la politica di gestione di tali interfacce è chiamata NIC Teaming.
Il NIC Teaming permette di configurare le funzionalità per il bilanciamento del carico di rete e per il failover:
- il bilanciamento del carico (Load Balancing) permette di distribuire il traffico di rete (quello tra macchine virtuali e rete fisica) attraverso 2 o più interfacce di rete fisiche. In pratica si ottiene un throughput più alto, e la quantità di dati trasmessi nell'unità di tempo sarà superiore a quella disponibile con una sola interfaccia Ethernet.
- il failover è il meccanismo per cui il traffico di rete viene instradato su un'altra interfaccia di rete fisica quando la prima ha un problema.
Le interfacce fisiche di uno stesso team devono trovarsi nello stesso dominio di broadcast. Per intenderci, non devono essere collegate a porte di uno witch fisico che appartengono a VLAN diverse.
Il NIC Teaming è configurabile sia a livello di Virtual Switch che di Port Group. Se le impostazioni di un Port Group non vengono modificate, allora vengono ereditate le impostazioni dello switch virtuale.
Nella pratica:
- collegarsi al vCenter Server tramite vSphere Client, e selezionare l'host ESX/ESXi dall'inventario. In alternativa, ci si può collegare direttamente all'host ESX/ESXi, sempre con vSphere Client;
- andare sul tab Configuration e selezionare la voce Networking nel menu a sinistra;
- fare clic sulla voce Properties relativa allo switch da modificare;
- nella finestra Properties dello switch, selezionare lo switch virtuale e fare clic su Edit. In questo modo le impostazioni assegnate allo switch verranno ereditate da tutti i Port Groups; se invece si vuole modificare in modo specifico le impostazioni di un Port Group, selezioniamo quest'ultimo e clicchiamo su Edit. In tal caso il Port Group non erediterà le impostazioni del vSwitch, ma adotterà quelle per lui specificate;
- per modificare le impostazioni di Failover e Load Balancing, fare clic su NIC Teaming
Load Balancing
VMware ESX/ESXi offre 3 diversi metodi per il bilanciamento del carico:
- Route based on the originating port ID, ossia l'instradamento si basa sulla porta virtuale che permette al traffico di rete di attraversare lo switch virtuale. Per capire meglio, ogni macchina virtuale ha un port-ID che identifica la sua associazione allo switch virtuale: il carico è bilanciato in base all'ID e nient'altro. E' un meccanismo che abbraccia tutti i protocolli. Quando si utilizza questa impostazione, il traffico proveniente da un'interfaccia di rete virtuale (appartenente ad una determinata macchina virtuale) è inviato sempre allo stesso uplink (stessa scheda fisica dell'host ESX/ESXi), a meno che non si verifichi un failover verso un'altra interfaccia fisica . Anche le risposte vengono ricevute sulla stessa scheda fisica, in quanto lo switch fisico esterno memorizza l'associazione con essa (associazione porta - indirizzo MAC). Questa impostazione fornisce una distribuzione uniforme del traffico se il numero di interfacce di rete virtuali è superiore al numero di uplinks fisici.
- Route based on source MAC hash, ossia l'instradamento è basato sull'hash dell'indirizzo MAC sorgente. In pratica il traffico in uscita da ogni macchina virtuale è associato ad un uplink in base all'indirizzo MAC dell'interfaccia virtuale. Valgono le stesse considerazioni del punto precedente: il traffico proveniente da un'interfaccia di rete virtuale (appartenente ad una determinata macchina virtuale) è inviato sempre allo stesso uplink (stessa scheda fisica dell'host ESX/ESXi) ed anche le risposte vengono ricevute sulla stessa scheda fisica, in quanto lo switch fisico esterno memorizza l'associazione con essa (associazione porta - indirizzo MAC). Una macchina virtuale non può utilizzare più di un uplink a meno che non utilizzi più indirizzi MAC sorgenti per il traffico in uscita.
- Route based on IP hash, ossia l'instradamento è basato su un hash degli indirizzi IP (sorgente e destinazione) di ogni pacchetto. Affinché questo metodo possa funzionare, è necessario che lo switch fisico aggreghi le porte connesse agli uplinks tramite protocollo Ether-Channel 802.3ad. Il bilanciamento viene eseguito per il traffico in uscita: viene utilizzato un uplink differente per ogni sessione “IP-sorgente – IP destinazione”. In pratica, se una VM con un determinato IP comunica con 2 indirizzi IP differenti, esterni all'host ESX/ESXi, va ad impegnare 2 interfacce fisiche (uplinks) distinte.
- Use explicit failover order: con questa impostazione non c'è bilanciamento del carico ma solo failover, in base alle impostazioni di failover specificate nel riquadro "Failover order" presenta nella stessa finestra.
Con l'instradamento basato su porta virtuale, il traffico in uscita di una macchina virtuale è mappato in modo statico ad un'interfaccia fisica: non importa quanto sia occupata la scheda di rete, il traffico continuerà a transitare per la stessa scheda e non sarà mai inoltrato verso un'interfaccia inattiva o più scarica. Tuttavia, poiché il calcolo per la scelta della scheda di rete viene effettuato solo una volta, questo metodo impegna pochissimo la CPU. Inoltre, poiché ci si basa sulle porte, se una macchina virtuale è stata configurata con più interfacce di rete virtuali, si ha la certezza che, per ognuna di queste vNIC, saranno utilizzati uplinks diversi (ovviamente se le schede di rete fisiche saranno maggiori di una).
Con il metodo basato su MAC sorgente, il traffico in uscita da ogni macchina virtuale è associato a una specifica scheda di rete fisica, in base all'indirizzo MAC della vNIC. Questo comportamento è quasi identico al precedente, ma per macchine con più NIC virtuali non è garantito l'uso di schede di rete fisiche differenti. Questa opzione non viene consigliata quasi mai.
L'instradamento basato su IP è l'unico metodo che permette, ad una machina virtuale dotata di una sola vNIC, di utilizzare la larghezza di banda complessiva di più interfacce di rete fisiche. Richiede tuttavia una modifica sulla configurazione dello switch fisico esterno, con l'attivazione di funzioni (Ether-channel) che non tutti gli switch supportano.
Failover
La configurazione del failover, e quindi del metodo di rilevamento della caduta di un uplink, prevede la scelta di uno dei 2 metodi seguenti:
- Link Status only - si basa esclusivamente sullo stato del collegamento (link status) fornito dalla scheda di rete. Possono essere rilevati guasti dovuti ad un cavo di rete staccato o allo switch fisico esterno con problemi di alimentazione. Non è possibile tuttavia rilevare errori di configurazione, come ad esempio una porta dello switch fisico bloccata dal protocollo spanning tree, o configurata in modo errato a livello di VLAN, o ancora problemi di connettività verso l'esterno sullo switch fisico (cavi di rete staccati su altre porte).
- Beacon Probing - si inviano pacchetti di beacon (beacon packets, pacchetti sonda per il rilevamento di errori sulla rete) e si rimane in ascolto. In questa modalità, l'host ESX/ESXi invia in broadcasts pacchetti beacon da tutti gli uplinks del team. Lo switch fisico esterno inoltra (per sua natura) i pacchetti su tutte le porte appartenenti allo stesso dominio di broadcast; pertanto, ogni uplink rimane in attesa dei pacchetti beacon inviati dagli altri uplinks dello stesso team. Se un uplink non riceve pacchetti di beacon per 3 volte consecutive, viene marcato come "failed". In tal caso la caduta del link può essere docuta sia a problemi sulla porta fisica direttamente connessa allo switch esterno, ma anche a problemi a valle che non permettono ai pacchetti beacon di raggiungere quell'uplink. Questo metodo permette di rilevare problemi sui collegamenti in maniera più precisa della semplice modalità "Link Status only".
Notify switch
L'opzione Notify Switch, quando attiva, permette all'host ESX/ESXi di notificare immediatamente, allo switch fisico esterno, i cambiamenti avvenuti a seguito di failover. Le notifiche avvengono anche quando un'interfaccia virtuale di una qualsiasi VM viene collegata allo switch virtuale, nell'ottica di diminuire i tempi di latenza.
Failback
Per impostazione predefinita, le interfacce fisiche dello stesso team lavorano secondo una logica di Failback: se una scheda fisica in stato "failed" ritorna in linea, essa riprende servizio immediatamente rimpiazzando l'interfaccia che aveva assunto il suo ruolo. Di default, la modalità Failback è impostata su Yes. Al contrario, impostando il Failback su No, l'interfacia di rete viene mantenuta inattiva anche dopo essere tornata in linea (ovviamente finchè un'altra interfaccia non va in errore e si richiede un nuovo failover).
Ordine di failover (failover order)
L'opzione Failover Order specifica come distribuire il carico di lavoro sulle interfacce di rete fisiche.
Le opzioni sono 3:
- Active Uplinks: le interfacce in questo gruppo sono tutte up e parte attiva del team.
- Stanby Uplinks: le interfacce in questo gruppo rimangono in standby per entrare in funzione in situazioni di failover, prendendo il posto di quelle andate in down.
- Unused Uplinks: le interfacce in questo gruppo semplicemente non vengono utilizzate.