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 :
  • stable ou 0 — 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 ou 1 — 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 ou 2 — l'agrégateur est choisi par le plus grand nombre d'esclaves. La resélection a lieu comme expliqué dans la configuration de bandwidth ci-dessus.
Les politiques de sélection de bandwidth et de count 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ètres arp_interval et arp_ip_target soient spécifiés, ou bien, que le paramètre miimon 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 en mode=0 ou en mode=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êtes ARP quand le paramètre arp_interval est activé. On peut spécifier jusqu'à 16 adresses IP dans une liste séparée par des virgules.
arp_validate=value
Validater la source/distribution des sondes ARP ; la valeur par défaut est none. Autres valeurs possibles active, backup, et all.
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 ou 0 — Valeur par défaut. Cette configuration désactive fail_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 or 1 — 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 ou 2 — 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 or 0 — valeur par défaut. Indique que les partenaires doivent transmettre les LACPDU toutes les 30 secondes.
  • fast or 1 — 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 exemple eth0, 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 valeur 100.

Important

Il est essentiel que les paramètres arp_interval et arp_ip_target soient spécifiés, ou bien, que le paramètre miimon 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 ou 0 — 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 disponible
  • active-backup or 1 — 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 ou 2 — 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 ou 3 — définit une politique de diffusion de tolérance d'erreurs. Toutes les transmissions sont diffusées sur toutes les interfaces esclaves.
  • 802.3ad ou 4 — 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 ou 5 — 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 ou 6 — 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 trafic IPv4. La réception de l'équilibrage des charges est effectuée par négociation ARP 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érique primaire 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 mode active-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 ou 0 (valeur par défaut) - l'esclave primaire devient l'esclave actif quand il revient.
  • better ou 1 — 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 ou 2 — l'esclave primaire devient actif si l'esclave actuel actif échoue et si l'esclave primaire est «up».
Le paramètre primary_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 politique primary_reselect via sysfs 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 to 255; la valeur par défaut est 1. La valeur0 empêche la parution du rapport d'adhésion à IMGP suite à un basculement.
Cette option est utile pour les modes de liaison balance-rr (mode 0), active-backup (mode 1), balance-tlb (mode 5) et balance-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 ou netif_carrier_ok() pour déterminer le lien de l'état. La fonction netif_carrier_ok() dépend du pilote du périphérique pour maintenir son état netif_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 pas netif_carrier_on/off.
Les valeurs acceptées sont les suivantes :
  • 1 — configuration par défaut. Permet à l'utilisation de netif_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 pas netif_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 ou 802.3ad. Les valeurs acceptées sont les suivantes :
  • 0 or layer2 — 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 ou layer3+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_count
    Pour des paquets frragmentés TCP ou UDP, et pour tout autre protocole de trafic IP, 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 transfert layer2.
    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 ou layer2+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 adresses IP 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_count
    Cet algorithme mettra les trafics dans un réseau homologue particulier sur le même esclave. Pour le trafic IP, 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é.