Linux:Bonding pour fiabiliser son réseau ethernet
Un article de Djjnet.
Le bonding permet de fiabiliser et augmenter la bande passante d'un réseau ethernet. Cela est obtenu en multipliant les interfaces réseaux connectées pour un même lien virtuel. Si une carte réseau tombe en panne, le lien réseau est toujours assuré.
Attention, l'utilisation du bonding nécessite une attribution des IP de manière statique, sans DHCP.
Sommaire |
Configuration du module noyau bonding
Le module bonding possède 7 modes de fonctionnement. Nous prenons ici le premier balance-rr ou 0. Il fait du round robin sur les cartes esclaves configurées.
Pour un noyau 2.6 récent, sur une debian Etch par exemple, créer un fichier /etc/modprobe.d/network-bond avec pour contenu :
alias bond0 bonding options bonding mode=balance-rr miimon=100 downdelay=200 updelay=200
Pour un noyau 2.6 ancien, il faut créer un fichier /etc/modutils/network-bond avec le même contenu et lancer la commande :
update-modules
Sur une de mes cartes mères, j'ai dû ajouter un alias pour le module skge nécessaire pour la carte ethernet Marvell.
alias eth3 skge
Résultat de lshw pour cette carte réseau :
product: 88E8001 Gigabit Ethernet Controller vendor: Marvell Technology Group Ltd.
Installation du package ifenslave
apt-get install ifenslave-2.6
Configuration du réseau
Modification du fichier /etc/network/interfaces :
Dans les lignes up et down, il faut indiquer à ifenslave les interfaces réseaux à ajouter ou supprimer du bonding
auto bond0
iface bond0 inet static
address 192.168.100.101
netmask 255.255.255.0
network 192.168.100.0
broadcast 192.168.100.255
gateway 192.168.100.1
up /sbin/ifenslave bond0 eth0 eth3
down /sbin/ifenslave -d bond0 eth0 eth3
Voir l'état du bonding
cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008) Bonding Mode: load balancing (round-robin) MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 200 Down Delay (ms): 200 Slave Interface: eth0 MII Status: up Link Failure Count: 0 Permanent HW addr: 00:05:5d:69:fc:6f Slave Interface: eth1 MII Status: up Link Failure Count: 0 Permanent HW addr: 00:11:d8:e2:88:45
Cas de plusieurs interfaces avec un mode de bonding différent
Cette partie est basée sur une Debian squeeze.
Il faudrait avoir par exemple dans le fichier d'option de modprobe mais cela ne fonctionne pas, les deux interfaces ont le même mode.
alias bond0 bonding options bonding mode=0 miimon=100 downdelay=200 updelay=200 alias bond1 bonding options bonding mode=1 miimon=100 downdelay=200 updelay=200
Même avec le install indiqué sur [1]
Il est possible de modifier le mode une fois le module chargé mais ce n'est pas adapté à un chargement au démarrage du serveur :
ifdown bond0 echo 0 > /sys/class/net/bond0/bonding/mode ifup bond0
Il faut donc supprimer /etc/modprobe.d/network-bond.conf et passer toute la configuration au niveau de /etc/network/interface ainsi :
auto bond0
iface bond0 inet static
address 192.168.100.2
netmask 255.255.255.0
gateway 192.168.100.1
bond-slaves eth1 eth3
bond-mode active-backup
bond-miimon 100
bond-downdelay 200
bond-updelay 200
auto bond1
iface bond1 inet static
address 192.168.0.18
netmask 255.255.255.0
bond-mode balance-rr
bond-miimon 100
bond-downdelay 200
bond-updelay 200
bond-slaves eth0 eth2
Pour relancer sans reboot :
/etc/init.d/networking stop rmmod bonding /etc/init.d/networking start
En vérifiant on a :
cat /sys/class/net/bond1/bonding/mode balance-rr 0 cat /sys/class/net/bond0/bonding/mode active-backup 1


