HINT:
BACKGROUND:
Ethernet bonding permette di raggruppare interfacce ethernet. E' possibile avere quindi settaggi in alcune modalità diverse.
Questo hint è stato reso il più semplice possibile, ma se si hanno dei
suggerimenti o commenti, prego di inviarli per email all'indirizzo sopra citato.
SORGENTI:
Tutto quello che occorre è incluso nel codice sorgente Linux.
INSTALLAZIONE:
Settaggi del Kernel
Nel Kernel 2.4 e 2.6, occorrerà aggiungere la seguente opzione per compilare il kernel.
KERNEL 2.4 Network device support ---> <M> Bonding driver support o <*> Bonding driver support
KERNEL 2.6 Device Drivers --->Networking support ---><M> Bonding driver support o <*> Bonding driver support
A questo punto è possibile ricompilare il kernel.
Modifiche agli script di boot
Dopo che à finita la ricompilazione del kernel occorre andare nella directory Documentation/networking nei file source del kernel linux.
Si troverà un programma chiamato ifenslave.c. Ci sarà bisogno di compilare il programma nel modo seguente.
gcc -O -I/usr/src/linux/include ifenslave.c -o ifenslave cp ifenslave /sbin chmod 755 /sbin/ifenslave
Adesso ci sarà bisogno di creare un nuovo ifup e ifdown che sia compatibile con il bonding.
cat > /etc/sysconfig/network-devices/ifup << "EOF" #!/bin/sh source /etc/sysconfig/rc source $rc_functions source $network_devices/ifconfig.$1 if [ -f $network_devices/ifup-$1 ] then $network_devices/ifup-$1 else if [ -z $IP ] && [ -z $SLAVE ] then echo "variabile IP mancante per ifconfig.$1, impossibile continuare" exit 1 fi if [ -z $NETMASK ] && [ -z $SLAVE ] then echo -n "NETMASK variabile mancante per ifconfig.$1, " echo "using 255.255.255.0" NETMASK=255.255.255.0 fi if [ -z $BROADCAST ] && [ -z $SLAVE ] then echo -n "BROADCAST variabile mancante per ifconfig.$1, " echo "uso dell'indirizzo di default" fi if [ -z $SLAVE ] then echo "Attivazione dell'interfaccia $1 ..." ifconfig $1 $IP netmask $NETMASK broadcast $BROADCAST evaluate_retval else echo "Attivazione dell'interfaccia $1 interface..." ifenslave $MASTER $1 evaluate_retval fi fi EOF
cat > /etc/sysconfig/network-devices/ifdown << "EOF" #!/bin/sh source /etc/sysconfig/rc source $rc_functions source $network_devices/ifconfig.$1 if [ -f $network_devices/ifdown-$1 ] then $network_devices/ifdown-$1 else if [ -z $SLAVE ] then echo "Disattivazione dell'interfaccia $1 ..." ifconfig $1 down evaluate_retval fi fi EOF
Adesso è necessario di ricreare il file ifconfig(interfaccia). Non sarà necessari cambiare l'esistente se l'adattatore non sarà un componente del bonding.
Per interfacce che non sono membri del bonding
cat > /etc/sysconfig/network-devices/ifconfig.{interfaccia_non_parte_del_bonding} << "EOF" ONBOOT=yes IP={indirizzp_ip} NETMASK={subnet_mask} BROADCAST={indirizzo_broadcast} EOF
L'interfaccia del bonding è il nome delle interfacce ethernet adesso raggruppate. Per l'interfaccia del bonding. Questa sarà per ognuna bond0
cat > /etc/sysconfig/network-devices/ifconfig.bond0 << "EOF" ONBOOT=yes IP={indirizzp_ip} NETMASK={subnet_mask} BROADCAST={indirizzo_broadcast} EOF
Per le interfacce che sono membri del bonding
cat > /etc/sysconfig/network-devices/ifconfig. <br>{interface_that_is_bonded} << "EOF" ONBOOT=yes MASTER=bond0 SLAVE=yes EOF
Spiegazione di cosa c'è da fare adesso :
Ok questa è la parte più complessa. Ecco degli esempi di file sopra citati.
eth0 è l'interfaccia della wan.
eth1 e eth2 sono le interfacce per la rete 192.168.0.0
ifconfig.eth0 dovrebbe assomigliare a questo
ONBOOT=yes IP=64.30.195.78 <br> NETMASK=255.255.255.0 BROADCAST=64.30.195.255
ifconfig.bond0 dovrebbe assomigliare a questo
ONBOOT=yes IP=192.168.0.1 NETMASK=255.255.255.0 BROADCAST=192.168.0.255
ifconfig.eth1 e ifconfig.eth2 dovrebbero assomigliare a questo
ONBOOT=yes MASTER=bond0 SLAVE=yes
Adesso all'avvio bond0 sarà l'insieme di eth1 e eth2.
Opzioni di boot :
Occorrerà aggiungere le righe seguenti al file modprobe.conf per 2.6 o al file modules.conf per 2.4
alias bond0 bonding options bond0 miimon=100
Ha funzionato?
Adesso dopo il riavvio, è possibile controllare se il bonding funziona bene.
E' possibile eseguire “ifconfig bond0”, se appaiono dati probabilmente funziona bene.
Controllare che le informazioni sull'indirizzo IP siano corrette.
Ecco l'output come riferimento
bond0 Link encap:Ethernet HWaddr 00:00:D1:1F:20:49 inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:36491 errors:0 dropped:0 overruns:0 frame:0 TX packets:37519 errors:57 dropped:0 overruns:5 carrier:52 collisions:1 txqueuelen:0 RX bytes:3295515 (3.1 Mb) TX bytes:13366345 (12.7 Mb)
E' possibile usare anche: cat /proc/net/bonding/bond0.
Ecco l'output come riferimento
Ethernet Channel Bonding Driver: v2.6.0 (January 14, 2004) Bonding Mode: load balancing (round-robin) MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth1 MII Status: up Link Failure Count: 0 Permanent HW addr: 00:00:d1:1f:20:49 Slave Interface: eth2 MII Status: up Link Failure Count: 0 Permanent HW addr: 00:00:d1:1f:20:4a Slave Interface: eth3 MII Status: up Link Failure Count: 0 Permanent HW addr: 00:00:d1:1f:20:4b
Volere più di un raggruppamento ethernet :
Di default i driver bonding consentono solo un gruppo bonded. Volendo più raggruppamenti di interfacce è possibile utilizzare i seguenti comandi.
Cambiare modprobe.conf o modules.conf modificare
options bond0 miimon=100 in options bond0 miimon=100 max_bonds={#_of_teams}
esempio
options bond0 miimon=100 max_bonds=3
creerebbe bond0 bond1 bond2
Modifiche ai programmi esistenti :
La sola modifica è che non viene specificata l'interfaccia eth{x}, al suo posto bisognerà specificare l'interfaccia bond0.
Per maggiori informazioni :
Per maggiori informazioni vedere il Documentation/network/bonding.txt nei sorgenti del kernel.
VERSIONE: 1.1
CHANGELOG:
Nuove Versioni di questo documento possono essere viste sul sito http://cvs.jg555.com/viewcvs.cgi/lfs-hints