Ethernet Bonding: come garantire ridondanza e/o massimizzare la banda disponibile

Da Guide@Debianizzati.Org.

Debian-swirl.png Versioni Compatibili
Debian 6 "Squeeze"
Debian 7 "Wheezy"
Debian 8 "Jessie"
Verificala con Stretch

Indice

Introduzione

In ambiente server Windows si parla generalmente di teaming riguardo alla configurazione di due o più schede di rete in modo che siano viste come una sola. Gli obiettivi sono quelli di aumentare la banda disponibile, di garantire un bilanciamento di carico tra le varie schede di rete e garantire una maggior sicurezza, visto che se una delle schede di rete ha problemi, ci sono le altre a garantire che la trasmissione non cada.
Per lo stesso concetto su Linux si parla invece di bonding, che è perciò un sistema per avere due o più interfacce di rete legate in modo da apparire come una unica interfaccia fisica, o, per dirla con altre parole, un sistema che ha lo scopo di unire due o più flussi ethernet al fine di formare un unico canale.

Requisiti Generali

Prima di iniziare, è altamente raccomandata una verifica sull'integrità e la funzionalità delle singole schede di rete. Lanciando il comando 'mii-tool' dovreste vedere qualcosa di simile:

# mii-tool
eth0: negotiated 100baseTx-FD, link ok
eth1: negotiated 100baseTx-FD, link ok

Per far sì che il bonding funzioni, il kernel deve avere il supporto per il bonding delle periferiche:

# modinfo -n bonding
/lib/modules/2.6.20-16/kernel/drivers/net/bonding/bonding.ko

Tipi di bonding

Esistono diversi tipi di bonding, relativi a come il kernel gestirà i flussi di dati in entrata e in uscita dal sistema:

Requisiti degli switch

Con "switch" si può intendere sia un dispositivo switch vero e proprio che un altro computer Linux, il termina identifica cioè il dispositivo in cui confluiscono i cavi delle schede componenti il bond.

Installazione

Il bonding su Linux è gestito dal programma ifenslave.

Per Debian 7 (Wheezy) e precedenti, con privilegi di amministrazione basta:

# apt-get install ifenslave-2.6

Mentre a partire da Debian 8 (Jessie):

# apt-get install ifenslave

Configurazione

Warning.png ATTENZIONE
L'utente deve eliminare dal file /etc/network/interfaces qualsiasi configurazione esistente relativa alle interfacce di rete che si intende includere nel bond di rete, ovvero nessuna di esse deve essere definita.


Interfaces/modprobe.d

La configurazione vera e propria del networking viene fatta, come sempre, tramite il file /etc/network/interfaces. Supponendo che eth0 ed eth1 siano le schede ethernet presenti sulla nostra Debian box:

auto bond0
iface bond0 inet static
address <indirizzo_ip>
netmask <subnetmask>
network <indirizzo_di_rete>
gateway <ip_del_gateway>
up /sbin/ifenslave bond0 eth0 eth1
down /sbin/ifenslave -d bond0 eth0 eth1

Commentate eventuali riferimenti alle schede fisiche presenti nel file, quindi salvate. Aprite ora il file /etc/modprobe.d/arch/i386 (per architetture i386), oppure /etc/modprobe.d/arch/x86_64 (per architetture a 64 bit) e aggiungete le seguenti righe:

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

Riavviate il sistema di networking (oppure il sistema intero) e controllate eventuali messaggi d'errore al boot:

# service networking restart

Solo interfaces

auto bond0
iface bond0 inet static
address <indirizzo_ip>
netmask <subnetmask>
network <indirizzo_di_rete>
gateway <ip_del_gateway>
bond_mode <modalità_di_bonding_preferita>
bond_miimon 100
bond_downdelay 200
bond_updelay 200
bond-slaves eth0 eth1

Fatto questo riavviamo il sistema di networking con:

# /etc/init.d/networking restart

Sintassi alternativa

auto bond0
iface bond0 inet static
address <indirizzo_ip>
netmask <subnetmask>
network <indirizzo_di_rete>
gateway <ip_del_gateway>
bond_mode <modalità_di_bonding_preferita>
bond_miimon 100
bond_downdelay 200
bond_updelay 200
bond-slaves none

auto eth0
iface eth0 inet manual
bond-master bond0

auto eth1
iface eth1 inet manual
bond-master bond0

In questo caso si deroga a quanto scritto in inizio sezione, ovvero relativamente alla necessità di eliminare qualsiasi riferimento alle interfacce da includere in bond0.

Note finali

Approfondimenti

Documentazione

Sitografia




Guida scritta da: Ferdybassi

Swirl-auth40.png Debianized 40%

Estesa da:
Wtf 21:38, 20 mar 2012 (CET)
Verificata da:
Wtf, eccetto la configurazione tramite interfaces/modprobe.d.

Verificare ed estendere la guida | Cos'è una guida Debianized

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti