Memo d'un Geek

Le savoir ne vaut que s'il est partagé

L’agrégation de liens Ethernet ou bonding sous Linux Debian

janv. 072016

La technique de Bonding appelée Channel bonding ou Port trucking consiste à regrouper des liens cartes réseaux afin de mettre en place du load balancing et ou améliorer la tolérance de pannes.

Pour mettre cette technique en place j'utilise "ifenslave".

Il existe 7 mode différents de bonding en gros 7 options pour ce module les voici : Il est bien sur possible d'utiliser plus de 2 interfaces réseaux.

  • balance-rr ou 0 : dans ce mode, les paquets sont transmis aux esclaves dans un ordre séquentiel suivant une ronde. Ce mode gère évidemment la répartition de charge et la tolérance de panne.
  • active-backup ou 1 : un esclave sur les deux est actif et le passif devient actif en canne de panne de ce dernier. Ce mode ne gère que la tolérance de panne.
  • balance-xor ou 2 : une interface est affectée à l’envoi vers une même adresse MAC. Ainsi les transferts sont parallélisés et le choix de l’interface suit la règle : (Adresse MAC de la source XOR Adresse MAC de la destination) modulo nombre d’interfaces. Ce mode gère tolérance de panne et répartition de charge.
  • broadcast ou 3 : tous les paquets sont transmis à tous les esclaves. Ce mode gère la tolérance de panne, mais on est loin d’une répartition de charge…
  • 802.3ad ou 4 : crée des groupes d’agrégation qui partagent les mêmes paramètres de vitesse / duplex. Utilise tous les esclaves dans l’agrégateur actif selon la spécification 802.3ad. La plupart des commutateurs de réseau nécessiteront un peu de configuration pour activer le mode 802.3ad.
  • balance-tlb ou 5 : (adaptive transmit load balancing) seule la bande passante en sortie est répartie selon la charge calculée en fonction de la vitesse, ceci pour chaque interface. Le flux entrant est affecté à l’interface courante. Si celle-ci devient inactive, une autre prend alors l’adresse MAC et devient l’interface courante.
  • balance-alb ou 6 : (adaptive load balancing) ce mode inclut en plus du tlb une répartition de charge sur le flux entrant et seulement pour un trafic IPv4. L’équilibrage est réalisé au niveau ARP. Le module intercepte les réponses pour y réécrire l’adresse MAC de l’une des interfaces du bond tout en tenant compte des spécificités du protocole ARP. La répartition entre les différentes interfaces se fait de façon séquentielle (round robin).

undefined

1- Pré-requis :

Dans mon cas je suis sous Gnu/Linux Debian Wheezy il me faut donc charger le paquet 'ifenslave', mon réseau est en 192.168.0.0/24

apt-get install ifenslave

2- Installation :

Une fois ifenslave d'installer il reste a créer le fichier /etc/modprobe.d/bond.conf pour charger le module bonding.

#/etc/modprobe.d/bond.conf
alias bond0 bonding options bonding mode=0 arp_interval=2000 arp_ip_target=192.168.0.100

Ensuite nous désactivont les deux cartes réseaux afin de réaliser leur configuration en agrégation de liens.

ifconfig eth0 down
ifconfig eth1 down

Il reste à modifier le fichier de configuration des cartes réseaux /etc/network/interfaces

- fichier d'origine -

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
        address 192.168.0.100
        netmask 255.255.255.0
        gateway 192.168.0.1
        broadcast 192.168.0.255
        network 192.168.0.0
        dns-nameservers 192.168.0.1

 - fichier modifié -

# The loopback network interface
auto lo
iface lo inet loopback
auto bond0
iface bond0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.1
dns-search mondomaine.com
slaves eth0 eth1
bond_mode balance-rr
bond_miimon 100
bond_downdelay 200
bond_updelay 200
mtu 9000

3- Tests :

Une fois que tout est paramétré il suffit d'activer la carte réseau virtuel 'bond0'

 ifconfig bond0 up

Afin de verifier que tout est en place :

ip addr show

ce qui donneras quelque chose dans le style :

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast master bond0 state UP qlen 1000
    link/ether 00:0c:29:e2:28:13 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast master bond0 state UP qlen 1000
    link/ether 00:0c:29:e2:28:13 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP 
    link/ether 00:0c:29:e2:28:13 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.100/24 brd 192.168.0.255 scope global bond0

 

Voila ce qui finit cette petite info, pour plus d'information les pages man sont toujours d'une grande aide.

Il n'y a pas de commentaires publiés.

Nouveau commentaire

Atom

Copyleft @2017 http://www.mangeolle.fr