Bonding sous Linux

Le bonding sous Linux est l’équivalent de l’etherchannel de chez Cisco ou encore le portchannel de chez H3C. Mais si cela ne vous parle pas encore, il s’agit en fait de faire du « teaming » (ou fusion) entre plusieurs interfaces réseau en une seule.

Quelle est l’avantage d’une telle manœuvre ? En réalité, on peut faire du teaming de plusieurs sortes qui présentent toutes de vrais avantages.

On peut par exemple configurer notre bonding pour avoir un lien actif et un lien de backup (mode Active-Backup) ce qui permet d’avoir une disponibilité garantie en cas de chute d’un des liens.

On peut également le configurer en mode broadcast ce qui nous permettrait d’envoyer les paquets sur toutes les interfaces et ainsi est insensible aux erreurs sur un des liens.

Un autre mode intéressant est le 802.3ad (plus connu sous Link Aggregation) qui permet de réunir plusieurs interfaces physique en une interface logique et, ainsi, nous permettre de doubler, tripler, quadrupler la bande passante d’un lien.

Mais comment configurer cela sous Linux. Rien de bien compliquer. Nous allons voir ici une configuration sous CentOS (manipulation compatible RedHat et dérivés).

Tout d’abord, modifions le fichier /etc/modprobe.conf pour y rajouter les lignes suivantes :

alias bond0 bonding
options bond0 miimon=80 mode=5

En créant l’alias bond0, nous définissons une nouvelle interface nommée bond0 en lui associant plusieurs options. L’une des options importante est le mode. Ce mode nous permet de créer un bonding en choisissant le mode qu’on désire.

Voici la liste des modes disponibles :

mode=0 (Balance Round Robin)
mode=1 (Active backup)
mode=2 (Balance XOR)
mode=3 (Broadcast)
mode=4 (802.3ad)
mode=5 (Balance TLB)
mode=6 (Balance ALB)

Une fois le fichier modprobe.conf modifié, il faut créer la nouvelle interface bond0. Nous allons donc créer le fichier /etc/sysconfig/network-scripts/ifcfg-bond0

# nano /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
IPADDR=X.X.X.X
NETMASK=X.X.X.X
GATEWAY=X.X.X.X
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

IPADDR est l’ip de notre interface logique , NETMASK le masque de sous-réseau et GATEWAY la passerelle par défaut.

Ensuite, il faut configurer les interfaces qui feront parties de ce bonding :

# nano /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes

On fait la même manipulation pour eth1, eth2, … , ethX. MASTER étant l’interface logique à laquelle on veut associer l’interface.

Une fois tout cela fait, on peut relancer le service :

# /etc/init.d/network restart

Un petit ifconfig nous permettra de voir si notre interface bond0 est bien créée.

 

A très bientôt pour un autre tuto 🙂