Repository 32bit  Forum
Repository 64bit  Wiki

Linux Bonding Mini-Howto

Da Slacky.eu.
Versione delle 21:58, 9 set 2006, autore: Gohanz (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Questo documento descrive come installare ed usare due o piu' schede di rete in bonding su Slackware Linux 10.1

Indice

Premessa

Questa non vuole essere assolutamente un trattato sul bonding (alias port trunking) ne avere la pretesa di completezza e infallibilita'. Piu' che altro vuole essere una semplice quanto (spero) efficace e pratica raccolta di esperienze in ambito sistemistico con il bonding e la nostra amata Slackware.

Cosa fa il bonding?

Il bonding e' un driver di rete che permette di raggruppare logicamente due o piu' interfacce di rete (eth0, eth1 ..) e di farle funzionare come un unica entita', combinando a tutti gli effetti caratteristiche come banda e disponibilita' di servizio. Subito un esempio:

         +----------+                          +----------+
         |          |eth0                  eth0|          |
         |  Client  +--------------------------+  Server  |
         |          +--------------------------+          |
         |          |eth1                  eth1|          |
         +----------+                          +----------+
  

supponiamo di avere un client e un server rispettivamente con 2 schede di rete da 100Mb. per completezza di esempio sia:

  	Lato Client: eth0 --> 192.168.0.1

eth1 --> 192.168.0.2 Lato Server: eth0 --> 192.168.0.3 eth1 --> 192.168.0.4

Colleghiamo con un cavo cross l'eth0 del client con l'eth0 del server, facciamo lo stesso con un'altro cavo cross con le eth1. Ora proviamo a trasferire dal server al client una grossa mole di dati via ftp, quindi dal client lanciamo un ftp 192.168.0.3. Supponendo che il traffico segua solo la direzione

  	192.168.0.3 --> 192.168.0.1

avremo che il trasferimeto avviene con una banda di 100Mb/s, che ad occhio e croce significa 1GB ogni minuto e mezzo, dovendo trasferire per esempio una iso di un DVD da 4,5GB ci impiegheremo circa 6/8 minuti. E con l'altra scheda di rete che ci faccio? A meno che i file non siano piu' di uno, cosi' da poter sfruttare il traffico su 192.168.0.4 --> 192.168.0.2 trasferendoli a piu' mani ottimizzando tempo e banda; assolutamente niente. Qui entra in campo il bonding (finalmente), esso permette di aggregare logicamente la eth0 con la eth1 in una nuova scheda di rete che chiameremo bond0 a cui sara' assegnato un solo ip, la nuova situazione sara':

Lato Client: bond0 --> 192.168.0.1 Lato Server: bond0 --> 192.168.0.2

(ovviamente i collegamenti delle schede di rete con i due cavi cross rimarranno sempre gli stessi). Nella modalita' load-balancing del bonding avremo quindi le bond0 con una banda di ben 200Mb/s, il trasferimento via ftp impieghera' meta' tempo e, se avessimo avuto piu' di un file, con un piu' comodo mget *.

Dove posso usare il bonding?

Praticamente ovunque. Supponiamo invece di avere 2 schede da 100Mb, 2 schede Gigabit, stiamo parlando di 2Gb/s di banda. Ma perche' non esagerare con 3 o piu' schede ... parliamo di prestazioni ottenibili solo con fibra ottica. Attenti pero' ad esagerare, entrano in campo fattori come la potenza di calcolo di PC e Switch e i costi lievitano soprattutto per quest'ultimo. Immaginiamo solo che con una modica spesa ho elimitato uno dei colli di bottiglia del cluster hpc che tutti noi abbiamo in casa o al lavoro ;-) Tutto qui? Certamente no. In modalita' active-backup il bonding permette di usare solo la eth0, quindi sfruttare solo i 100Mb/s, ma in caso si guastasse o si rompesse il proprio cavetto Lan di collegamento, automaticamente e senza colpo ferire, entrerebbe in azione la eth1 (fin' ora rimasta a riposare). Immaginate la situazione in cui un sabato mattina la signora delle pulizie, passando l'aspirapolvere, strattona il cavo lan e il vostro prezioso server che deve funzionare 25 ore al giorno (e se si ferma per due secondi se ne accorge mezzo mondo) non e' piu' connesso alla rete: tempo i due suddetti secondi e il vostro capo vi tira giu dal letto. Se aveste avuto due schede di rete configurate in bonding, avrete potuto continuare a dormire (si sa, il venerdi notte si fa sempre tardi) e il lunedi, con calma e sorseggiando uno di quei buonissimi caffe delle machinette mangiasoldi, riattaccato il cavo Lan.

Ma quante sono le modalita' di Bonding?

Le modalita di bonding sono sei, andiamo ad elencarle:

mode0

balance-rr, questo e' la modalita' load-balancing con algoritmo round-robin vista sopra. In pratica i pacchetti vengono trasmessi in sequenza a partire dalla prima sheda di rete all'ultima appartenente al raggruppamento. In parole povere supponendo di avere 3 Slave: eth0, eth1, eth2 che appartengono al Master bond0, il pacchetto numero 1 passa dalla eth0, il 2 dalla eth1, il 3 dalla eth2, il 4 di nuovo dalla eth0 e cosi' via.

mode1

active-backup, questa e' la modalita' in cui e' attiva solo una slave per volta, la successiva scheda appartenente alla bond0 diventa attiva solo nel caso in cui la slave primaria, attualmenta attiva, perdesse il collegamento. Il MAC address visibile all'esterno e' solo il MAC assegnato alla bond0 (che corrisponde al MAC di una scheda fisica). Viene usata per garantire il Fault Tollerace del collegamento.

mode2

balance-xor, questa modalita' usa un algoritmo basato sull' XOR logico tra MAC address di destinazione e quello sorgente per garantire la selezione della medesima slave in base alla sorgente. Viene usata per garantire load-balancing e contemporaneamente fault-tollerance.

mode3

broadcast, questa modalita' viene usata per trasmettere tutti i pacchetti su tutte le schede di rete aggregate. Viene usata per garantire fault-tollerance.

mode4

802.3ad, vengono utilizzate tutte le schede di rete attive facenti parte della bond0 in accordo con le specifiche 802.3ad. Richiede Nic e Switch che supportino le specifiche 802.3ad.

mode5

balance-tlb, in questa modalita' si ha il load-balancing adattativo (in funzione del traffico) solo in trasmissione.

mode6

balance-alb, questa e' la modalita' di load-balancing adattativo in entrambe le direzioni.


Le modalita' piu' usate sono le prime 4, personalemnte ho potuto 
sperimentare solo le prime due, ed e' di queste che vi raccontero'.
Strumenti personali
Namespace

Varianti