4.5. Utiliser une liaison de canal
Pour améliorer les performances, ajuster les options de modules disponibles pour déterminer quelle combinaison fonctionne le mieux. Prêtez une attention particulière à
miimon
ou à arp_interval
, et au paramètre arp_ip_target
. Voir Section 4.5.1, « Relier des propriétés utilisateur » pour obtenir une liste des options disponibles et comment déterminer rapidement les meilleurs pour votre interface liée.
4.5.1. Relier des propriétés utilisateur
C'est une bonne idée de tester quels paramètres de module de liaison de canaux fonctionnent le mieux pour vos interfaces reliées avant de les ajouter à la directive
BONDING_OPTS="bonding parameters"
de votre fichier de configuration d'interface de liaison (par exemple ifcfg-bond0
). Les paramètres d'interfaces reliés peuvent être configurés sans décharger (ou recharger) le module de liaison en manipulant des fichiers dans le système de fichiers sysfs
.
sysfs
est un système de fichiers virtuels qui représente des objets de noyau en tant que répertoires, fichiers, et liens symboliques. sysfs
peut être utilisé pour chercher des informations sur les objets de noyau, et peut aussi manipuler ces objets par l'utilisation de commandes système de fichiers normaux. Le système de fichiers virtuel sysfs
est monté sous le répertoire /sys/
. Toutes les interfaces de liaison peuvent être configurées dynamiquement par interaction et en manipulant des fichiers dans le répertoire /sys/class/net/
.
Afin de déterminer les meilleurs paramètres pour votre interface de liaison, créez un fichier d'interface de liaison de canaux comme
ifcfg-bond0
en suivant les instructions de Section 4.4.2, « Créer une interface de canal de liaison ». Insérer les directives SLAVE=yes
et MASTER=bond0
dans les fichiers de configuration pour chaque interface reliée à bond0
. Une fois terminé, vous pouvez continuer à tester les paramètres.
Commencez par appeler la liaison que vous venez de créer en exécutant
ifup bondN
en tant qu'utilisateur root
:
~]# ifup bond0
Si vous avez créé le fichier d'interface de liaison
ifcfg-bond0
, vous pourrez apercevoir bond0
dans la sortie de la commande ip link show
en tant qu'utilisateur root
:
~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
link/ether 52:54:00:e9:ce:d2 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
link/ether 52:54:00:38:a6:4c brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
link/ether 52:54:00:38:a6:4c brd ff:ff:ff:ff:ff:ff
Pour apercevoir toutes les liaisons existantes, même si elles ne sont pas actives, exécutez :
~]$ cat /sys/class/net/bonding_masters
bond0
Vous pouvez confiugurer chaque liaison individuellement en manipulant des fichiers qui se trouvent dans
/sys/class/net/bondN/bonding/
. Commencez par désactiver la liaison que vous configurez :
~]# ifdown bond0
Par exemple, pour activer le monitoring MII sur le bond0 avec une seconde d'intervalle, exécutez en tant qu'utilisateur
root
:
~]# echo 1000 > /sys/class/net/bond0/bonding/miimon
Pour configurer le bond0 en mode
balance-alb
, exécutez soit :
~]# echo 6 > /sys/class/net/bond0/bonding/mode
... ou, utiliser le nom du mode :
~]# echo balance-alb > /sys/class/net/bond0/bonding/mode
Après avoir configuré les options pour la liaison en question, vous pouvez l'activer et la tester en exécutant
ifup bondN
. Si vous décidez de changer les options, désactivez l'interface, modifiez ses paramètres à l'aide de sysfs
, réactivez-la et testez-la à nouveau.
Une fois que vous aurez déterminé le meilleur jeu de paramètres pour votre liaison, ajouter ces paramètres sous forme de liste séparée par des espaces à la directive
BONDING_OPTS =
du fichier /etc/sysconfig/network-scripts/ifcfg-bond N
pour l'interface de liaison que vous configurez. Chaque fois que ce lien est activé (par exemple, par le système au cours de la séquence de démarrage quand la directive ONBOOT=yes
est définie), les options de liaison spécifiées dans BONDING_OPTS
prendront effet pour cette liaison.
La liste suivante fournit les noms de nombreux paramètres de liaison de canaux connus, ainsi qu'une description de ce qu'ils font. Pour plus d'informations, voir la brève description de chaque
parm
en sortie de modinfo collage
, ou pour plus d'informations, voir https://www.kernel.org/doc/Documentation/networking/bonding.txt.
Liaisons de paramètres d'interface
ad_select=value
- Indique la logique de sélection d'aggrégation 802.3ad à utiliser. Voici les valeurs possibles :Les politiques de sélection de
stable
ou0
— valeur par défaut. L'agrégateur actif est choisi par la plus grande bande passante globale. Une nouvelle sélection de l'agrégateur actif a lieu uniquement lorsque tous les esclaves de l'agrégateur actif sont désactivés ou si l'agrégateur actif n'a aucun esclave.bandwidth
ou1
— l'agrégateur est choisi par la plus grande bande passante globale. Une resélection a lieu à nouveau si :- Un esclave est ajouté ou supprimé d'une liaison ;
- Un état de lien d'esclave change ;
- Un état d'association 802.3ad d'esclave change ;
- L'état administratif de la liaison change à actif.
count
ou2
— l'agrégateur est choisi par le plus grand nombre d'esclaves. La resélection a lieu comme expliqué dans la configuration debandwidth
ci-dessus.
bandwidth
et decount
permettent le basculement des agrégations 802.3ad en cas de panne partielle de l'agrégateur actif. Cela permet de maintenir l'agrégateur en disponibilité maximale, soit en bande passante ou en nombre d'esclaves, actif en permanence. arp_interval=time_in_milliseconds
- Indique la fréquence du contrôle
ARP
, en millisecondes.Important
Il est essentiel que les paramètresarp_interval
etarp_ip_target
soient spécifiés, ou bien, que le paramètremiimon
soit spécifié. Si tel n'est pas le cas, on risque la dégradation de la performance réseau si un lien échoue.Si vous utilisez cette confiuguration enmode=0
ou enmode=2
(les deux modes d'équilibrage des charges), le commutateur de réseau doit être configuré pour distribuer des paquets équitablement entre les cartes réseau. Pour plus d'informations sur la façon de procéder, voir https://www.kernel.org/doc/Documentation/networking/bonding.txt.La valeur est définie à0
par défaut, ce qui a pour effet de le désactiver. arp_ip_target=ip_address[,ip_address_2,…ip_address_16]
- Indique l'adresse
IP
cible des requêtesARP
quand le paramètrearp_interval
est activé. On peut spécifier jusqu'à 16 adressesIP
dans une liste séparée par des virgules. arp_validate=value
- Validater la source/distribution des sondes
ARP
; la valeur par défaut estnone
. Autres valeurs possiblesactive
,backup
, etall
. downdelay=time_in_milliseconds
- Indique (en millisecondes) la durée à attendre suite à un échec de lien avant de désactiver ce lien. La valeur doit correspondre à un multiple de la valeur spécifiée dans le paramètre
miimon
. La valeur est définie à0
par défaut, pour la désactivation. fail_over_mac=value
- Spécifie si le mode active-backup doit définir tous les esclaves à la même adresse MAC au moment de la mise en esclavage (le comportement traditionnel), ou, lorsque activé, effectuer un traitement spécial de l'adresse MAC de la liaison conformément à la stratégie sélectionnée. Les valeurs possibles sont :
none
ou0
— Valeur par défaut. Cette configuration désactivefail_over_mac
, et cause le processus de liaison à définir tous les esclaves d'une liaison d'active-backup à la même adresse au moment de la mise en esclavage.active
or1
— les politiques « active »fail_over_mac
indiquent que l'adresse MAC de la liaison doivent toujours correspondre à l'adresse MAC de l'esclave actif actuellement. L'adresse MAC des esclaves ne change pas, mais l'adresse MAC de la liaison change en cas d'échec.Cette politique s'avère utile pour les périphériques qui ne peuvent jamais changer d'adresse MAC, ou pour les périphériques qui refusent les émissions entrantes avec leur propre source MAC (qui interfère avec le moniteur de l'ARP). L'inconvénient de cette politique est que chaque périphérique sur le réseau doit être mis à jour via ARP spontané, contrairement à la méthode normale de commutateurs qui surveillent le trafic entrant pour mettre à jour leurs tables ARP. Si l'ARP spontané est perdu, la communication peut être perturbée.Lorsque cette stratégie est utilisée en conjonction au moniteur MII, les périhériques, qui affirment un lien avant de réellement transmettre ou recevoir, sont particulièrement sensibles à la perte de l'ARP spontané, et définir un délai en amont qui convient peut d'avérer utile.follow
ou2
— les causes de la politique « follow »fail_over_mac
amènent l'adresse MAC de la liaison à être sélectionnée normalement (l'adresse MAC du premier esclave ajouté à la liaison). Cependant, le deuxième et des esclaves suivants ne sont pas définis à cette adresse MAC quand ils sont en rôle de sauvegarde ; un esclave est programmé avec l'adresse MAC de la liaison au moment du basculement (et l'esclave anciennement actif reçoit l'adresse MAC de l'esclave nouvellement actif).Cette politique est utile pour les périphériques multiports, qui sont soit perturbés ou victimes d'une pénalité de performance quand des ports mulitples sont programmés sur une même adresse MAC.
- lacp_rate=value
- Indique le taux auquel les partenaires de liens doivent transmettre les paquets LACPDU en mode 802.3ad. Les valeurs possibles sont les suivantes :
slow
or0
— valeur par défaut. Indique que les partenaires doivent transmettre les LACPDU toutes les 30 secondes.fast
or1
— indique que les partenaires doivent transmettre les LACPDU après chaque seconde qui s'écoule
miimon=time_in_milliseconds
- Indique (en millisecondes) la fréquence de la surveillance de liens MII. Cela est utile dans les situations de haut débit car MII est utilisé pour vérifier si la carte réseau est active. Pour vérifier que le pilote d'une carte réseau particulière prenne bien en charge l'outil MII, saisir la commande suivante en tant qu'utilisateur root :
~]#
ethtool interface_name | grep "Link detected:"
Avec cette commande, remplacez interface_name> par le nom de l'interface du périphérique, comme par exempleeth0
, mais pas l'interface de liaison. Si MII est pris en charge, la commande renverra :Liens détectés : oui
Si vous utilisez une interface liée en haut débit, le module de chaque carte réseau (NIC) doit prendre l'outil MII en charge. Définir la valeur à0
(la valeur par défaut), stoppe cette fonctionnalité. Quand on configure ce paramètre, il est bon de commencer par la valeur100
.Important
Il est essentiel que les paramètresarp_interval
etarp_ip_target
soient spécifiés, ou bien, que le paramètremiimon
soit spécifié. Si tel n'est pas le cas, on risque la dégradation de la performance réseau si un lien échoue. mode=value
- Vous permet de spécifier la politique de mise en liaison. La value peut correspondre à une des possibilités suivantes :
balance-rr
ou0
— définit une politique round-robin de répartition des charges et de diffusion de tolérance d'erreurs. Toutes les transmissions sont reçues et diffusées sur chaque interface esclave liée, en commençant par la première disponibleactive-backup
or1
— définit une politique active-backup de tolérance d'erreurs. Toutes les transmissions sont reçues et diffusées en commençant par la première interface disponible. Une autre interface esclave liée n'est utilisée que si l'interface esclave liée échoue.balance-xor
ou2
— les transmissions sont basées sur la politique de hachage sélectionnée. La valeur par défaut consiste à tirer un hachage par l'OUX (XOR) des adresses MAC source et de destination, multiplié par le modulo du nombre d'interfaces d'esclave. Dans ce mode, le trafic destiné à des homologues spécifiques sera toujours envoyé sur la même interface. Comme la destination est déterminée par l'adresse MAC, cette méthode fonctionne mieux pour le trafic en direction d'homologues sur le même lien ou réseau local. Si le trafic doit passer par un routeur unique, alors ce mode d'équilibrage de trafic sera sous-optimal.broadcast
ou3
— définit une politique de diffusion de tolérance d'erreurs. Toutes les transmissions sont diffusées sur toutes les interfaces esclaves.802.3ad
ou4
— définit une politique d'agrégation de liens dynamiques IEEE 802.3ad. Crée des groupes d'agrégation qui partagenent les mêmes configurations en matière de vitesse et de duplex. Transmet ou reçoit sur tous les esclaves dans l'agrégateur actif. Requiert un commutateur conforme à 802.3ad.balance-tlb
ou5
— définit une politique Transmit-Load-Balancing (TLB) de tolérance aux pannes et d'équilibrage des charges. Le trafic sortant est distribué selon la charge en cours sur chaque interface esclave. Le trafic entrant est reçu par l'esclave actuel. Si l'esclave récepteur échoue, un autre esclave reprend l'adresse MAC de l'esclave qui a échoué. Ce mode convient uniquement aux adresses locales connues du module de liaison du noyau et ne peut donc être utilisé pour un pont avec des machines virtuelles.balance-alb
ou6
— définit une politique Adaptive-Load-Balancing (ALB) de tolérance aux pannes et d'équilibrage des charges. Inclut la transmission et la réception de l'équilibrage des charges pour le traficIPv4
. La réception de l'équilibrage des charges est effectuée par négociationARP
Ce mode convient uniquement aux adresses locales connues du module de liaison du noyau et ne peut donc être utilisé pour un pont avec des machines virtuelles.
primary=interface_name
- Indique le nom de l'interface, par exemple
eth0
, du périphérique principal. Le périphériqueprimaire
correspondra à la première parmi les interfaces de liaison à être utilisée et ne sera pas abandonnée, sauf en cas d'échec. Ce paramètre est particulièrement utile lorsqu'une carte réseau de l'interface de liaison est plus rapide et, par conséquent, capable de supporter une charge plus élevée.Ce paramètre de configuration n'est valide que quand l'interface de liaison est en modeactive-backup
. Voir https://www.kernel.org/doc/Documentation/networking/bonding.txt pour plus d'informations. primary_reselect=value
- Spécifie la politique de resélection de l'esclave primaire. Cela affecte la façon dont l'esclave primaire est choisie pour devenir l'esclave actif en cas de défaillance de l'esclave actif ou de recouvrement de l'esclave primaire. Ce paramètre est conçu pour empêcher la volte-face entre l'esclave primaire et d'autres esclaves. Les valeurs possibles sont :
always
ou0
(valeur par défaut) - l'esclave primaire devient l'esclave actif quand il revient.better
ou1
— l'esclave primaire devient l'esclave actif quand l'esclave est «up» à nouveau, si la vitesse et le duplex de l'esclave primaire sont supérieurs à la vitesse et au duplex de l'esclave actif actuel.failure
ou2
— l'esclave primaire devient actif si l'esclave actuel actif échoue et si l'esclave primaire est «up».
Le paramètreprimary_reselect
sera ignoré dans les deux cas suivants :- Si aucun esclave n'est actif, le premier esclave rétabli devient un esclave actif.
- Après avoir été rendu esclave au début, l'esclave primaire est toujours l'esclave actif.
Modifier la politiqueprimary_reselect
viasysfs
va entraîner une sélection immédiate du meilleur esclave actif selon la nouvelle politique. Cela risque ou non de résulter par un changement de l'esclave actif, selon les circonstances. resend_igmp=range
- Spécifie le nombre de rapports d'adhésion à IGMP à produire suite à un basculement. Un rapport d'adhésion est délivré immédiatement après le basculement ; les paquets suivants sont envoyés dans des intervalles de 200ms chacun.Les valeurs varient entre
0
to255
; la valeur par défaut est1
. La valeur0
empêche la parution du rapport d'adhésion à IMGP suite à un basculement.Cette option est utile pour les modes de liaisonbalance-rr
(mode 0),active-backup
(mode 1),balance-tlb
(mode 5) etbalance-alb
(mode 6), pour lesquels un basculement peut faire passer le trafic IGMP d'un esclave à une autre. C'est pourquoi un nouveau rapport IGMP doit être émis pour que le commutateur transmette le trafic IGMP entrant sur l'esclave nouvellement sélectionné. updelay=time_in_milliseconds
- Indique (en millisecondes) la durée à attendre pour activer un lien. La valeur doit correspondre à un multiple de la valeur spécifiée dans le paramètre
miimon
. La valeur est définie à0
par défaut, pour la désactivation. use_carrier=number
- Spécifie si oui ou non le paramètre
miimon
doit utiliser MII/ETHTOOL ioctls ounetif_carrier_ok()
pour déterminer le lien de l'état. La fonctionnetif_carrier_ok()
dépend du pilote du périphérique pour maintenir son étatnetif_carrier_on/off
; la plupart des pilotes de périphériques supportent cette fonction.Les outils MII/ETHTOOL ioctls utilisent une séquence d'appels dépréciés dans le noyau. Cependant, c'est toujours configurable si le pilote du périphérique ne supporte pasnetif_carrier_on/off
.Les valeurs acceptées sont les suivantes :1
— configuration par défaut. Permet à l'utilisation denetif_carrier_ok()
.0
— permet l'utilisation de MII/ETHTOOL ioctls.
Note
Si l'interface de liaison insiste pour que le lien soit « up », il est possible que votre pilote de périphérique de réseau ne supporte pasnetif_carrier_on/off
. xmit_hash_policy=value
- Sélectionne la politique de hachage de transmission utilisée pour la sélection des esclaves en modes
balance-xor
ou802.3ad
. Les valeurs acceptées sont les suivantes :0
orlayer2
— valeur par défaut. Ce paramètre utilise l'OUX (XOR) des adresses MAC de matériel pour générer le hachage. La formule utilisée est la suivante :(source_MAC_address XOR destination_MAC) MODULO slave_count
Cet algorithme mettra les trafics dans un réseau homologue particulier sur le même esclave, et est conforme à 802.3ad.1
oulayer3+4
— utilise les informations de protocole des couches supérieures (si disponible) pour générer le hachage. Cela permet au trafic en direction d'un réseau homologue de s'étaler sur plusieurs esclaves, quoi qu'une simple connexion puisse s'étaler sur plusieurs esclaves.La formule utilisée pour les paquets TCP et UDP non fragmentés est la suivante :((source_port XOR dest_port) XOR ((source_IP XOR dest_IP) AND
0xffff
) MODULO slave_countPour des paquets frragmentés TCP ou UDP, et pour tout autre protocole de traficIP
, les informations de port source ou de destination sont omises. Pour le trafic non-IP
, la formule est la même que pour la politique de hachage de transfertlayer2
.Cette politique à pour but d'imiter le comportement de certains commutateurs ; les commutateurs Cisco avec les PFC2, et certains produits Foundry et IBM.L'algorithme utilisé pour cette politique n'est pas comforme à 802.3ad.2
oulayer2+3
— utilise une combinaison d'informations layer2 et layer3 pour générer le hachage.Utilise l'OUX (XOR) des adresses MAC de matériel et les adressesIP
pour générer le hachage. La formule est la suivante :(((source_IP XOR dest_IP) AND
0xffff
) XOR ( source_MAC XOR destination_MAC )) MODULO slave_countCet algorithme mettra les trafics dans un réseau homologue particulier sur le même esclave. Pour le traficIP
, la formule est la même que pour la politique de hachage de transmission de layer2.Cette politique a pour but de fournir une distribution de trafic plus équilibrée qu'avec le layer 2 uniquement, surtout dans les environnements où le périphérique de passerelle du layer3 est requis pour atteindre la plupart des destinations.L'algorithme de hachage est déterminé.