Lo scopo di questo documento è di descrivere la realizzazione di un router per l’accesso alla rete che utilizzi connessioni Internet multiple al fine di bilanciare le richieste della LAN verso l’esterno e di ottenere la ridondanza dell’accesso alla rete gestendo situazioni di fault di una o più linee.Per ottenere l’obiettivo, si utilizzerà il modulo Net Balancer di Zeroshell. Infine, si esaminerà la possibilità di aggregazione (Bonding) di VPN con lo scopo di aumentare la banda di collegamento punto-punto tra sedi remote tramite Internet.
La trattazione è suddivisa nelle seguenti sezioni:
- È davvero possibile aumentare la banda di connessione a Internet?
- Configurazione dei gateway multipli di accesso a Internet
- Fault tolerance dei collegamenti a Internet mediante il Failover Monitor
- Bilanciamento manuale del traffico
- Aggregazione di VPN e aumento di banda in layer 2
Load balancing e Failover con una ADSL e 3 UMTS/HSDPA
E’ davvero possibile aumentare la banda di connessione a Internet?
La risposta a questa domanda non è affermativa in assoluto. Dipende da cosa si intende con aumentare la banda di connessione a Internet.
Quello che il Net Balancer sostanzialmente fa è di distribuire in
round-robin (pesato) le richieste provenienti dalla LAN sui diversi
gateway verso Internet. In altre parole, se sulla LAN vi è in un dato
momento un solo utente, che effettua una sola connessione TCP (per
esempio effettua un solo download da web), il suo traffico fluirà tutto
da un singolo gateway e quindi non si gioverà del bilanciamento delle
connessioni. Se invece la LAN è affollata da utenti, ognuno dei quali
effettua molte richieste per volta, l’insieme di tutte le connessioni
avrà mediamente a disposizione una banda maggiore, pari alla somma delle
bande dei singoli accessi.
In conclusione, si deduce, che una
singola connessione non potrà mai avere più banda di quella offerta da
un singolo link, ma, molte connessioni contemporanee avranno mediamente a
disposizione una banda complessivamente maggiore, che tenderà alla
somma delle bande di tutti i link a Internet di cui si fa il
bilanciamento.
Diverso è invece il discorso
dell’aggregazione di VPN. In tal caso, il bilanciamento del traffico
avviene al livello di Layer 2 ed è pertanto possibile ottenere un
incremento di banda anche per singola connessione TCP/IP.
Configurazione dei gateway multipli di accesso a Internet
Un gateway di accesso a Internet può essere:
- Un router, come ad esempio un router ADSL. In questo caso il gateway viene identificato nel Net Balancer dal suo indirizzo IP;
- Un modem con cui si instaura una connessione Point-to-Point (ppp), quale un modem ADSL PPPoE oppure un modem UMTS/HSDPA. In questo caso il gateway, che per sua natura non ha un IP, viene identificato dall’interfaccia Point-to-Point assegnata.
Prima di
procedere con la registrazione dei gateway nel Net Balancer è necessario
assicurarsi che essi siano fisicamente e logicamente connessi al box
Zeroshell. Ciò si traduce, nel caso si tratti di un router, nel
connetterlo ad un’interfaccia Ethernet e nell’assegnare alla stessa un
indirizzo IP appartenente alla subnet dell’indirizzo IP del router.
Tanto per fissare le idee, supponiamo di connettere il router con IP
192.168.1.254 alla ETH01 assegnando a questa l’IP 192.168.1.253.
Se invece si tratta di un modem, bisogna
connetterlo fisicamente al box Zeroshell via Ethernet in caso di PPPoE o
USB in caso di connessione mobile 3G e creare l’interfaccia
Point-to-Point rispettivamente da [Setup][Network][New PPPoE] o
[Setup][Network][New 3G Modem]. Praticamente al modem verrà assegnata in
automatico un’interfaccia Point-to-Point del tipo ppp0, ppp1, … Con tale interfaccia si indicherà il modem all’interno del Net Balancer.
Configurazione di un gateway nel Net Balancer
Cliccando sul bottone [Add] per aggiungere un nuovo gateway o [Change] per modificarlo, compare la finestra Gateway Configuration illustrata nella figura sopra. Il significato dei parametri è il seguente:
- Description: È una descrizione testuale del gateway. Potrebbe contenere il nome dell’Internet Service Provider.
- Status: Se impostato su Enabled il Net Balancer considera attivo il gateway e lo gestisce, altrimenti, semplicemente lo ignora. Se per esempio, ci si accorge che un collegamento a Internet fallisce troppo spesso, si può decidere di disabilitarlo amministrativamente agendo su questa voce.
- Weight:
È un numero intero che rappresenta il peso (importanza) del link. La
sua funzione dipende dalla modalità in cui il Net Balancer è impostato:
- Se la modalità è Load Balancing and Failover lo smistamento delle richieste verso Internet avviene proporzionalmente al peso. Più è alto il peso di un gateway, maggiore è la probabilità che una richiesta gli venga assegnata. Si deduce pertanto, che il peso va impostato proporzionalmete alla banda che un link può sostenere. Se tutti i link hanno la stessa portata, il peso può essere impostato a 1 per tutti i gateway. In questa maniera lo smistamento delle richieste Internet avviene uniformemente su tutti i link.
- Se invece la modalità è soltanto Failover, uno solo dei gateway a disposizione viene utilizzato per soddisfare le richieste a Internet. Gli altri gateway vengono tenuti nello stato di Spare, pronti ad intervenire in caso di fault di quello attivo. L’ordine con cui il Net Balancer decide di attivare un gateway, dipende dal peso. Il gateway attivo è quello con peso maggiore tra quelli che non sono nello stato di Fault.
- IP Address: Rappresenta l’indirizzo IP del gateway nell’ipotesi che si tratti di un router.
- Network Interface: Rappresenta l’interfaccia Point-to-Point assegnata al gateway nell’ipotesi che si tratti di un modem PPPoE (xDSL o cavo) o un modem 3G (UMTS o HSDPA).
- Timeout Coefficient: entra in gioco nella gestione del Failover di un link. Va posto su valori bassi per link veloci e non congestionati. Si può aumentare il suo valore se il link viene messo troppo spesso nello stato di Fault a causa di congestionamento. Per un link di tipo GPRS, per esempio, che classicamente ha tempi di risposta alti, bisogna impostare questo valore almeno a 4.
Conclusa
la configurazione dei gateway corrispondenti ai diversi collegamenti
alla WAN è già possibile attivare il Net Balancer. Esso effettuerà il load balancing delle connessioni a Internet da subito.
Fault tolerance dei collegamenti a Internet mediante il Failover Monitor
Il Net Balancer può essere impostato per funzionare in una delle seguenti due modalità che incide sul modo con cui un collegamento viene scelto per soddisfare una data richiesta verso Internet:
- Load Balancing and Failover: le richieste di accesso a Internet vengono bilanciate automaticamente e proporzionalmente al peso (parametro Weight) di ciascun gateway. In caso di guasto di un gateway, questo viene escluso dal bilanciamento automatico evitando la perdita di pacchetti IP. È possibile forzare manualmente l’assegnazione di un certo tipo di traffico in base a opportuni criteri (IP sorgente, IP destinazione, porte TCP/UDP, …);
- Failover: un solo link risulta attivo per volta (quello con peso più alto fra quelli che non sono nello stato di Fault). Gli altri sono nello stato di Spare, pronti per intervenire in caso di interruzione del collegamento attivo. Benché in questa modalità non avvenga alcun bilanciamento automatico, è comunque possibile bilanciare manualmente il traffico come vedremo in seguito.
Si deduce,
che la tolleranza ai guasti viene garantita indipendentemente dalla
modalità di funzionamento del Net Balancer. Per isolare un link
malfunzionante, ponendolo nella condizione di Fault, intervengono
due meccanismi: il primo di questi controlla la connessione fisica con
il gateway (modem o router). Il secondo meccanismo, denominato Failover Monitor, effettua un’analisi più accurata della linea verificando che non ci siano problemi di routing.
Poiché il primo meccanismo per il
controllo dei link fisici è implicito nel Net Balancer ed è attivo
automaticamente senza la necessità di configurarlo, non ci soffermiamo
ulteriormente su di esso. Poniamo invece l’attenzione sul Failover Monitor,
che invece, va attivato e configurato esplicitamente. L’attendibilità
nella gestione del failover da parte di questo componente è fortemente
influenzata dal livello di congestione delle linee dati e dal
conseguente tempo di risposta sulle stesse. Se non accuratamente
configurato, il Failover Monitor potrebbe porre erroneamente nella
condizione di fault una linea che è invece soltanto congestionata.
Peggio ancora, potrebbe far oscillare velocemente il suo stato traActive e Fault causando
la chiusura delle connessioni verso Internet. Qualora si notino
anomalie di questo tipo, anche dopo aver tarato opportunamente i
parametri descritti sotto, conviene disabilitare il Failover Monitor. È
senz’altro preferibile non avere del tutto il Failover Monitor attivo,
piuttosto che averlo, ma con funzionamento instabile. Vediamo adesso i
parametri di configurazione:
- ICMP failover checking: se impostato su Enabled attiva il Failover Monitor. Affinché il Failover Monitor inizi realmente a funzionare è necessario specificare e abilitare almeno un Failover IP Address. Tali indirizzi IP devono essere esterni alla propria LAN e raggiungibili ognuno tramite tutti i gateway.
- Number of probes before marking DOWN: indica il numero di ping falliti prima che un link venga messo nello stato di Fault;
- Number of probes before marking UP: indica il numero di ping consecutivi effettuati con successo necessari prima di riportare un link fuori servizio nuovamente in attività;
- Reply timeout (seconds): rappresenta il tempo massimo da attendere per una risposta ICMP. In caso di link congestionati può essere utile aumentare questo valore. Si tenga presente che il tempo effettivo di attesa si ottiene moltiplicando questo valore per il Timeout Coefficient visto nel paragrafo precedente;
- Pause before starting a new cycle (seconds): tra un ciclo di monitoring e il successivo viene effettuata una pausa la cui durata è rappresentata da questo valore;
- Immediately restart PPPoE and 3G Mobile: se questa voce è abilitata, viene effettuato un reset della connessione Point-to-Point interessata dal fault. Ciò può accelerare la risoluzione del problema, ma ha lo svantaggio di richiedere la rinegoziazione del indirizzo IP se questo è assegnato dinamicamente.
Per raggiungere la configurazione ottimale del sistema di failover possono essere necessari diversi tentativi. In generale, si tratta di ottenere il giusto compromesso tra rapidità di intervento nell’isolare un collegamento a Internet non funzionante e evitare il più possibile di mettere in fault connessioni che sono soltanto congestionate.
Bilanciamento manuale del traffico
Per svariati motivi può essere necessario evitare che alcuni tipi di traffico siano bilanciati automaticamente. È necessario, in altre parole, vincolare determinate connessioni ad un certo gateway. Per far ciò, il Net Balancer mette a disposizione l’interfaccia web [Net Balancer][Balancing Rules] che appare subito molto simile all’interfaccia del Firewall e del Classificatore QoS. Infatti, le regole con cui si sceglie quali connessioni instradare manualmente su un certo gateway si impostano, come nel firewall, basandosi sugli indirizzi IP, sulle porte TCP/UDP e via dicendo.
Regola di instradamento manuale per il traffico SMTP
Nell’esempio in figura, si illustra come il traffico SMTP (porta 25 TCP), generato dal server di posta elettronica con indirizzo IP 192.168.0.20, sia constretto ad uscire dal router 192.168.1.250 a cui corrisponde un link in fibra ottica.
Aggregazione di VPN e aumento di banda in layer 2
Le VPN LAN-to-LAN configurabili in Zeroshell sono ottenute con OpenVPN e interfacce virtuali TAP. Quest’ultime appaiono a tutti gli effetti come delle vere e proprie interfacce Ethernet e come tali si possono aggregare con il Bonding. Ciò è stato possibile già dalla prima release di Zeroshell. Tuttavia, affinché il bonding di VPN abbia un senso, è necessario che ogni tunnel VPN facente parte del bond fluisca su di un link Internet separato. Prima dell’introduzione del Net Balancer, ciò si otteneva con delle route statiche che richiedevano che almeno un peer avesse due IP pubblici. Adesso invece, grazie al Net Balancer, nel form di configurazione delle VPN site-to-site è possibile scegliere il gateway da cui instaurare la connessione cifrata. Ciò semplifica enormente la configurazione non richiedendo, più un doppio IP pubblico e di aggiungere route statiche.
Scelta del gateway su cui instaurare la VPN
Una volta create le VPN e assegnate al rispettivo gateway è possibile creare l’interfaccia bond come in figura sotto:
Creazione dell’interfaccia bond aggregando 2 VPN
L’interfaccia BOND00 ottenuta è anche essa equivalente ad un’interfaccia Ethernet: gli si possono assegnare indirizzi IP, aggiungere VLAN 802.1q o la si può assegnare ad un bridge. Come già anticipato all’inizio, poiché il load balancing nei bonding avviene al livello di trame Ethernet, anche una singola connessione TCP/IP si gioverà dell’aumento di banda dovuto alla presenza di link multipli.