Juin
5
2013

Agrégation de carte réseau sur RHEL


Voici une procédure permettant d’agréger 2 cartes réseaux sur un serveur Linux Centos/RHEL (5 et 6) :

Nous utiliserons le bonding.

Bonding est un pilote qui permet d’agréger plusieurs cartes réseaux de sorte à augmenter la bande passante et avoir une «haute disponibilité».

Si une interface Bond est montée avec 2 cartes réseaux à 100 Mbits/s, selon le mode utilisé le débit obtenu pourra être de 200 Mbits/s . La machine restera accessible si l’une des interfaces ne répond plus.

Pré-requis :

– Package iputils

 

Procédure :

Créer ou éditer le fichier /etc/modprobe.d/bond0.conf et mettre cette ligne :

alias netdev-bond0 bonding

Aller dans le répertoire /etc/sysconfig/network-scripts/ contenant le paramétrage de vos cartes réseaux.

Créer le fichier ifcfg-bond0 et paramétrez comme ceci :

Si vous êtes en DHCP :

DEVICE=”bond0″
ONBOOT=yes
BOOTPROTO=dhcp
NAME=”bond0″
BONDING_OPTS=”mode=4 miimon=100″

Si vous êtes en IP statique :

DEVICE=”bond0″
ONBOOT=yes
BOOTPROTO=none
NAME=”bond0″
BONDING_OPTS=”mode=4 miimon=100″
IPADDR=192.168.0.1
PREFIX=24
DNS1=8.8.8.8
DNS2=8.8.8.5
DOMAIN=croc-informatique.fr

Mode 4 permet d’effectuer la répartition de charge en utilisant le protocole LACP (802.3ad). L’utilisation de ce mode nécessite que le switch soit compatible avec ce protocole. Une agrégation sera également nécessaire sur celui-ci.

miimon (0 par défaut) indique le délai de surveillance des interfaces et ainsi permet d’assurer une continuité de service en cas de perte d’une des interfaces. La valeur conseillée est 100.

Maintenant, il faut paramétrer les interfaces qui seront utilisées pour l’agrégation.

Editez le fichier ifcfg-eth0 et laissez que ces paramètres :

DEVICE=eth0
NM_CONTROLLED=no
ONBOOT=yes
HWADDR=34:40:B5:AC:00:C0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=”System eth0″
UUID=0f1be574-c945-4499-a029-90150f247e80
SLAVE=yes
MASTER=bond0

 

SLAVE=yes et MASTER=bond0 permet ajouter l’interface à l’agrégation

NM_CONTROLLED=no : Permet d’empêcher NetworkManager de contrôler cette interface et d’éviter d’avoir certain problème.

Il y a surement des paramètres non nécessaire. A vous de tester.

Faire la même chose avec le fichier ifcfg-eth1 avec les paramètres propre à eth1 bien sûre.

Vérifier que la passerelle par défaut soit dans le fichier /etc/sysconfig/network ou ajoutez la :

GATEWAY=192.168.26.254

Redémarrez le service network :

service network restart

Vérifiez que tout fonctionne :

% ifconfig -a
bond0     Link encap:Ethernet  HWaddr AA:F3:FC:DA:74:BB
          inet addr:192.168.108.30  Bcast:192.168.108.255  Mask:255.255.255.0
          inet6 addr: fe80::5ef3:fcff:feda:74a4/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:12169 errors:0 dropped:0 overruns:0 frame:0
          TX packets:15745 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2794755 (2.6 MiB)  TX bytes:2601601 (2.4 MiB)

eth0      Link encap:Ethernet  HWaddr AA:F3:FC:DA:74:BB
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:9778 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10352 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2075894 (1.9 MiB)  TX bytes:1684361 (1.6 MiB)
          Interrupt:28 Memory:92000000-92012800

eth1      Link encap:Ethernet  HWaddr BB:F3:FC:DA:83:CC
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:2559 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5709 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:750032 (732.4 KiB)  TX bytes:957292 (934.8 KiB)
          Interrupt:100 Memory:c0000000-c0012800
 

Configuration Switch Cisco

Comme indiqué précédemment, lorsque le protocole LACP est utilisé pour le mode de bonding, il est nécessaire de configurer les ports du switchs pour que le loadbalancing fonctionne convenablement. Voici un exemple de configuration de port pour un équipement Cisco :

interface GigabitEthernet1/0/1

description Port 1

switchport access vlan 10

switchport mode access

no cdp enable

channel-group 1 mode active

spanning-tree portfast

end

interface GigabitEthernet1/0/2

description Port 2

switchport access vlan 10

switchport mode access

no cdp enable

channel-group 1 mode active

spanning-tree portfast

end

interface Port-channel1

description Agrégation 1

switchport access vlan 10

switchport mode access

end

Annexes :

Les modes :

en fonction du mode sélectionné l’agrégat fonctionnera de façon différente.

Mode 0 : Round Robin , équilibrage de charge

La transmission des paquets se fait de façon séquentielle sur chacune des cartes actives dans l’agrégat. Ce mode augmente la bande passante et gère la tolérance de panne.

Mode 1 : Active – passive

Ce mode ne gère que la tolérance de panne. Si une des interfaces est désactivée, une autre du bond prend le relais.

Mode 2 : Balance xor

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.

Mode 3 : Broadcast

Tout le trafic est envoyé par toutes les interfaces

mode 4 : 802.3ad

Ce mode s’appuie sur la norme IEEE 802.3ad Dynamic link aggregation. Toutes les interfaces du groupe sont agrégées de façon dynamique, ce qui augmente la bande passante et gère la tolérance de panne.

Cela implique que le switch gère le 802.ad et les interfaces soient compatibles mii-tool et/ou ethtool.

mode 5 : balance-tlb

Adaptive transmit load balancing : seule la bande passante en sortie est load balancée 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.

mode 6 : balance-alb

Adaptive load balancing : ce mode inclut en plus du tlb un load balancing 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écificiter du protocoleARP. La répartition entre les différentes interfaces, se fait de façon séquentielle ( round robin ).

autres paramètres

arp_interval

Définit le délais en millisecondes entre chaque requête monitor ARP compatible avec le mode 0 ou 2 . Si la valeur est à 0 alors ARP monitoring est désactivé.

0 est la valeur par défaut

arp_ip_target

Définit les adresses IP si l’option arp_interval > 0 . Il peut être affecté un maximum de 16 adresses à l’agrégat dont le caractère de séparation est la virgule no adresse ip est la valeur par défaut

downdelay

Définit le temps en millisecondes pour qu’une interface soit détecter down

0 est la valeur par défaut

lacp_rate

Définit le type d’intervalle entre chaque packet LACPDU pour le mode 802.3ad soit : slow ou 0 une requête toutes les 30 seconds

fast ou 1 une requête toutes les seconds

slow est la valeur par défaut

max_bonds

Définit le nombre maximum d’agrégat pour cette instance

1 est la valeur par défaut

miimon

Définit la fréquence des MII link monitoring en millisecondes. Il est conseillé de positionner cette valeur à 100.

0 est la valeur par défaut

primary

Option utilisable pour les modes actif-passif. Favorise une interface dans un agrégat. Si celle-ci venait à redevenir active, elle prend la main sur les autres.

updelay

Définit le temps en millisecondes pour qu’une interface soit détecter comme active.

0 est la valeur par défaut

use_carrier

Définit si on utilise le monitoring de MII ou ETHTOOL ou non

1 est la valeur par défaut

xmi_hash_policy

Définit la règle à utiliser pour déterminer l’interface pour les modes balance-xor et 802.3ad. Cette option peut prendre 2 valeur :

layer2 : utilise XOR de l’adresse MAC dont la formule est : (source MAC XOR destination MAC ) modulo le nombre d’interfaces

layer3+4 : cette valeur n’est pas compatible avec toutes les implémentation 802.3ad. De plus elle fonctionne avec des protocoles de haut niveau ( TCP ou UDP )

layer2 est la valeur par défaut

 

Sources

http://panoramicsolution.com/blog/?p=388

http://doc.ubuntu-fr.org/bonding

Articles similaires

Au sujet de l'auteur: Olivier Legras

Auteur de ce Blog, je partage quelques unes de mes notes que je juge utile à vous comme à moi. Je suis très heureux de voir que mon blog a de plus en plus d'affluence. Merci à vous!

Laissez un commentaire