Bonding
| Fiche express | |
|---|---|
| Type | Agrégation/redondance de cartes réseau |
| Module noyau | bonding
|
| État runtime | /proc/net/bonding/bondX
|
| Voir aussi | Ifenslave · Ethtool · Nmcli |
Le bonding regroupe plusieurs interfaces réseau physiques (esclaves) derrière une
interface logique unique (bondX), pour de la redondance de lien, de
l'agrégation de bande passante, ou les deux selon le mode choisi.
Modes de bonding
Les modes se déclarent numériquement ou par mot-clé :
| Mode | Mot-clé | Comportement |
|---|---|---|
| 0 | balance-rr |
Répartition (round-robin) séquentielle des paquets sur
chaque interface esclave — équilibrage de charge, mais sans garantie d'ordre à l'arrivée. |
| 1 | active-backup |
Une seule interface active à la fois ; bascule sur
l'esclave restant en cas de panne. Pas d'équilibrage de charge, redondance pure — le mode le plus simple à câbler (aucune configuration côté switch requise). |
| 2 | balance-xor |
L'interface maître prend l'adresse MAC d'une des esclaves.
Une même transmission reste sur une seule interface une fois établie, mais les transmissions se répartissent entre interfaces au fil du temps. |
| 3 | broadcast |
Envoi de chaque paquet sur toutes les interfaces esclaves —
tolérance de panne maximale, aucun gain de bande passante. |
| 4 | 802.3ad |
Agrégation de liens selon la norme LACP (802.3ad) — nécessite un
switch compatible et configuré en conséquence côté port. |
| 5 | balance-tlb |
Équilibrage de charge en émission uniquement (transmit
load balancing). |
| 6 | balance-alb |
Équilibrage de charge en émission et en réception
(adaptive load balancing). |
En pratique, deux modes couvrent l'essentiel des besoins : active-backup (mode 1) pour de la simple redondance sans dépendre de la configuration du switch, et 802.3ad (mode 4) pour de l'agrégation réelle de bande passante avec un switch qui le supporte.
Options de monitoring du lien
miimon=xxx— intervalle en millisecondes entre deux vérifications de
l'état physique du lien (MII). C'est le seul paramètre réellement indispensable pour détecter une panne de câble/interface ; une valeur de 100 à 200 ms est courante.
arp_interval=xxx— intervalle en millisecondes du monitoring par requêtes
ARP, alternative àmiimon(0 = inactif par défaut). Utile pour détecter des pannes quemiimonne voit pas (lien physique up mais chemin cassé plus loin sur le réseau).
arp_ip_target=IP1,IP2— adresses IP cibles des requêtes ARP de monitoring
(jusqu'à 16, séparées par des virgules). Requis si arp_interval est utilisé.
Il faut spécifier miimon ou la combinaison arp_interval/
arp_ip_target — sans l'un des deux, aucune détection de panne n'est active.
Mise en place
Charger le module
vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
Les options de mode/miimon peuvent aussi être déclarées ici, mais dans ce cas ne pas les
répéter dans le fichier ifcfg-bond0 — les deux déclarations rentreraient en
conflit.
modprobe bonding
Créer l'interface bond (RHEL/CentOS)
# /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
IPADDR=192.168.132.10
NETMASK=255.255.252.0
GATEWAY=192.168.132.1
USERCTL=no
BOOTPROTO=none
ONBOOT=yes
BONDING_OPTS="mode=1 miimon=100 primary=eth1"
Rattacher chaque interface physique
# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
TYPE=ETHERNET
IPV6INIT=no
Répéter pour ifcfg-eth1 (même contenu, DEVICE=eth1), sans
IPADDR sur les interfaces esclaves — l'adresse IP appartient à l'interface
bond0, pas aux esclaves.
systemctl restart network # ou : nmcli connection reload (voir Nmcli)
Vérification
cat /proc/net/bonding/bond0 # état du bond, interface active, esclaves détectés
ip link show
Test de bascule : débrancher (ou ifdown) les interfaces une à une pour vérifier
que le service ne coupe pas.
ifdown eth0
cat /proc/net/bonding/bond0
Note : en mode load-balancing (2/5/6), un client distant reste associé à une seule interface physique à un instant T ; si c'est précisément cette carte qui tombe, sa connexion en cours est tout de même coupée — seule une nouvelle connexion sera répartie ailleurs.
Manipulation à chaud
ip link set dev bond0 up
ip link set dev bond0 down
ifenslave bond0 eth0 eth1 # rattacher les esclaves, voir Ifenslave
ifenslave -d bond0 eth2 # détacher une interface du bond
ifenslave -c bond0 eth2 # changer l'interface active (mode actif/passif)
ip link set dev bond0 addr 00:0a:xx:xx:xx:xx
ip addr add 10.158.10.10/24 brd + dev bond0
Fichiers utiles
cat /sys/class/net/bonding_masters # liste des bonds actifs
echo 1000 > /sys/class/net/bond0/bonding/miimon # ajuster le monitoring à chaud
echo 6 > /sys/class/net/bond0/bonding/mode # changer de mode à chaud (à froid recommandé)
Logs et débogage
dmesg | grep bonding
grep bonding /var/log/messages*
Activer le mode debug du module (verbeux, à réserver au diagnostic) :
# /etc/modprobe.d/bonding.conf
options bonding debug=1