Interfaces bonding su Debian

Ritornano i nostri how-to prettamente tecnici :)

Questa volta (come sempre) approfitto dell’esperienza fatta durante il mio lavoro per condividere ciò che imparo; oggi vedremo come configurare il bonding delle interfaccie di rete di una macchina.

Partiamo con la teoria per i non addetti, dicasi bonding (da channel bonding), quel particolare modulo del kernel linux che consente di legare due o più interfaccie di rete fisiche ad un unica interfaccia virtuale, cosi da poterne configurare la modalità active-active al fine di raddoppiarne (o triplicarne in base al numero delle interfaccie) il throughput della larghezza di banda, o in modalità active-passive per crearne la ridondanza.

apt-get install ifenslave-2.6

Installiamo il pacchetto necessario, e poi disabilitiamo i moduli per l’ipv6, questo per evitare di ricevere fastidiosi messaggi del tipo: "ICMPv6 NA: someone advertises our address on bond0!"; creiamo il file /etc/modprobe.d/ipv6-off con dentro:

alias net-pf-10 off
alias ipv6 off

adesso settiamo l’interfaccia virtuale bond0 nell’apposito file /etc/network/interfaces:

auto bond0
iface bond0 inet static
pre-up modprobe bond0
hwaddress ether 00:11:22:33:44:55
address 192.168.0.28
netmask 255.255.255.0
network 192.168.0.0
gateway 192.168.0.5
slaves eth2 eth3

N.B. la direttiva slaves funziona SOLO su Debian, il suo funzionamento è legato al supporto proveniente dai comandi ifup e ifdown; inoltre il mac address può anche essere fittizzio, l’importante è che non ve ne sia uno uguale sullo stesso tronco di rete.

creare il file /etc/modprobe.d/aliases-bond ed editarlo come segue:

alias bond0 bonding
options bond0 mode=0 miimon=100 downdelay=200 updelay=200

La prima opzione che vediamo è mode=0, con questa direttiva decidiamo come deve lavorare il bonding:

mode=0

Questa modalità usa una policy di round-robin. Trasmette i pacchetti in ordine sequenziale dalla prima interfaccia slave disponibile fino all’ultima, per garantire sia load-balancing che ridondanza.

mode=1

Questa modalità usa una policy attivo-passivo: solo una interfaccia del bonding sarà attiva. L’altra interfaccia inattiva comincerà a lavorare se, e solo se, la prima interfaccia slave diviene non disponibile, e per evitare di incasinare gli switch il mac address virtuale esposto sulla rete verrà reso visibile solo sullo switch che ospita l’interfaccia attiva al momento. Modalità usata solo per questioni di ridondanza.

mode=2

Simile alla modalità zero, per la modalità attiva-attiva, ma senza round robin: il traffico verso un determinato mac address verrà inviato sempre e solo dalla stessa interfaccia, anche qui avremo sia load-balancing che ridondanza.

mode=3

Broadcast policy: trasmette tutto su tutte le interfaccie contemporaneamente, fornisce solo ridondanza.

mode=4

IEEE 802.3ad Dynamic link aggregation. Crea gruppi di aggregazione che condividono la stessa velocità e modalità di duplex dell’interfaccia. Tutte le interfaccie sono in modalità attiva-attiva secondo le specifiche 802.3ad

 

          *Pre-requisiti:

1. I driver delle schede di rete devono supportare ethtool..

2. Uno switch che supporta gli standard IEEE 802.3ad Dynamic link aggregation. Molti switch potrebbero richiedere una configurazione particolare per abilitare tale supporto.

mode=5

Adaptive transmit load balancing: Il traffico viene distribuito in base al carico attuale di ogni interfaccia. Il traffico in entrata viene preso dall’interfaccia slave attiva.

*Prerequisiti: Ethtool supportato dai driver delle schede di rete.

mode=6

Adaptive load balancing: simile alla modalità 5 ma funziona in entrambi i sensi, anche il traffico in entrata quindi, viene bilanciato tra le interfaccie slave disponibili.

La seconda opzione che vediamo è miimon, ed indica ogni quanti millisecondi deve essere fatto il monitoring delle risorse. Segue downdelay che indica il tempo, in millisecondi, che deve passare dal link failure per considerare l’interfaccia indisponibile, e quindi disabilitarla. Infine updowndelay, che è lo stesso di downdelay, ma questa volta indica il tempo che deve passare quando l’interfaccia, ritornata up, deve essere considerata disponibile.


Altri articoli che potrebbero interessarti

Come rimediare al bug di sicurezza in openssl su Debian ed Ubuntu Come già avrete appreso da diverse fonti, è stato rilevato un bug nel pacchetto openssl su debian (e...
Incompatibilità Ubuntu 8.04 con Dell Oramai da tempo sappiamo che dell ha scelto di rendere disponibile la preinstallazione di ubuntu server...
Aggiornamenti del repository Siamo un pò in ritardo lo so, ma da un pò di tempo sono l'unico a prendersi cura del repository...
Barcollo ma non mollo… Chi segue il mio blog da tempo sicuramente ne avrà avuto il sospetto qualche volta che fosse solo questione...
Ciao ciao ubuntu sei stata cmq una bella esperienza Era già da diverso tempo che ci stavo pensando ma dopo l'ultimo scherzetto mi sono finalmente...

About the Author

M0rF3uS al secolo Alex è un ggiovine 25enne appassionato di informatica e linux. Lavora come Network and System Administrator e nel tempo libero gioca un pò con la sua fotocamera (Canon EOS 1000D) riuscendo a volte, per sbaglio, a fare qualche scatto decente. Completano il corredo, degli hobbies "vorrei ma non posso" ossia l'astronomia e l'astronautica....si è uno di quelli che da grande vorrebbe fare l'astronauta (povero coglione vero?).