Table of Contents
Réseau : Agrégation de liens
Introduction
L’agrégation de liens est une notion de réseau informatique décrivant l’utilisation de plusieurs câbles ou ports réseau afin :
- d’accroître le débit d’un lien au-delà des limites d’un seul lien,
- d’accroître la redondance pour une meilleure disponibilité.
La plupart des implémentations sont aujourd’hui conformes à la clause 43 de la norme Ethernet IEEE 802.3-2005, plus souvent rencontrée sous le nom « IEEE 802.3ad ».
Avantages de l'agrégation de liens
L'agrégation de liens offre les avantages suivants:
- Fiabilité et disponibilité accrues. Si l'un des liens physiques du LAG tombe en panne, le trafic est réaffecté de manière dynamique et transparente à l'un des autres liens physiques.
- Meilleure utilisation des ressources physiques. Le trafic peut être équilibré entre les liens physiques.
- Augmentation de la bande passante. Les liens physiques agrégés offrent une bande passante supérieure à chaque lien individuel.
Du côté commutateur
Les deux types principaux de LAG sont statiques (également appelé manuel) et dynamiques. Les LAG dynamiques utilisent le protocole LACP (Link Aggregation Control Protocol) pour négocier les paramètres entre les deux périphériques connectés.
Agrégation de liens statique
Dans l'agrégation de liens statiques, tous les paramètres de configuration ne sont stockés qu'une seule fois sur les deux composants impliqués dans le LAG. Tant qu'un lien d'un LAG est actif, ce lien est également utilisé pour le transfert de données dans une agrégation de liens statique.
Agrégation de liens dynamique - Protocole de contrôle d'agrégation de liens (LACP)
Link Aggregation Control Protocol (LACP) est un protocole standardisé par l’IEEE qui est implémenté par différents constructeurs. Il fournit un mécanisme permettant de contrôler le groupement de plusieurs ports physiques en un canal logique de communication.
Le protocole de contrôle d’agrégation de liens (LACP) permet l’échange d’informations concernant l’agrégation de liens entre les deux membres dudit agrégat. Ces informations seront mises en paquets dans les unités de données du protocole de contrôle d'agrégation de liaisons (LACDU).
Chaque port individuel peut être configuré en tant que LACP actif ou passif à l'aide du protocole de contrôle.
- passif: l’équipement n’initiera pas de négociation LACP. Il répondra uniquement aux sollicitations des équipements « partenaires ». Le port ne transmettra des unités LACPDU que lorsque son homologue utilise une stratégie LACP active.
- actif: l’équipement initiera les négociations LACP. Le port transmettra des unités LACPDU, que sa contrepartie utilise ou non le protocole LACP.
Statique ou dynamique ?
Si des convertisseurs de média sont utilisés, il se peut que la liaison sur le commutateur soit active, mais que la connexion avec le commutateur à l'autre extrémité soit interrompue. Dans ce cas, le commutateur envoie toujours des données via cette connexion et le transfert de données est donc interrompu.
Pour plus de contrôle, il est judicieux d’utiliser l’agrégation dynamique de liens avec le protocole de contrôle d’agrégation de liens (LACP), qui prend en charge l’échange d’informations sur l’agrégation de liens entre les deux parties concernées.
Note Convertisseur de média: Un convertisseur de média permet de faire communiquer deux segments de réseau qui empruntent des supports physiques (médias) différents : coaxial, paires torsadées, fibre optique monomode ou multimode. C’est une solution très pratique en particulier pour prolonger un segment cuivre sur fibre optique, jusqu’à un local ou un bâtiment éloigné.
Du côté serveur
Les différents modes d’agrégation
L’agrégation de liens sous Linux propose jusqu’à 7 modes de fonctionnement que je vous propose de résumer ici. Attention, tous les modes ne sont pas forcément compatibles avec la configuration que j’utilise ici. Renseignez-vous bien avant de vous lancer sous peine d’avoir de sérieux problèmes…
- balance-rr ou 0: (round robin) 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: (LACP) 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).
Répartition des données sur les différents liens
En TCP/IP, l'arrivée de paquets désordonnés est certes supportée, mais les performances sont alors très médiocres car ceci est souvent interprété comme des pertes de paquets et entraine des retransmissions et des ralentissements de l'émission (en TCP, le protocole de transport généralement utilisé pour réaliser des transferts de données). Par ailleurs Ethernet n'est pas censé réordonner les trames. C'est pour ces raisons que les LAG Ethernet ne prévoient dans la plupart des cas ni d'envoyer les paquets au hasard sur les liens physiques, ni d'utiliser ceux-ci simplement l'un après l'autre, car rien ne garantit qu'un lien ne soit pas légèrement plus rapide ou plus lent que son voisin, selon sa longueur physique.
Les LAG Ethernet sont donc presque toujours implémentés de sorte que tous les paquets d'une session TCP soient transmis par le même lien physique. Cela évite que les paquets soient réordonnés (et donc évite des performances catastrophiques), mais ne permet cependant pas à une session unique de dépasser la vitesse d'un seul lien physique. C'est avec un nombre suffisamment8 élevé de sessions différentes qu'il est possible d'exploiter la vitesse totale du LAG dans ce contexte.
La norme 802.3ad exige que les trames soient livrées dans l’ordre (dans certaines limites), de manière à ce que les connexions simples ne fassent généralement pas l’objet d’un mauvais ordre dans les paquets. Mais tous les paquets de la session TCP seront transmis par le même lien physique.
Optimisation de l'utilisation de la bande passante
Procéder au traitement multithread du transfert
Lorsque on utilise un processus monothread pour transférer plusieurs fichiers sur un réseau, il est possible qu'on n'utilisie pas toute la bande passante disponible. Dans un transfert monothread de fichiers, chaque fichier doit attendre la fin du transfert du fichier précédent, ce qui gaspille la bande passante inutilisée.
On peut utiliser davantage de bande passante disponible et accélérer le transfert des données en copiant des fichiers en parallèle dans un traitement multithread, mais l'application de transfert doit pouvoir offrir ce genre de traitement.
Utiliser le mode balance-rr
Ce mode est le seul qui permet à une seule connexion TCP/IP de répartir le trafic entre plusieurs interfaces. C'est donc le seul mode permettant à un seul flux TCP/IP d'utiliser le débit de plusieurs interfaces. Cela a toutefois un coût: la segmentation aboutit souvent à ce que les systèmes homologues reçoivent les paquets en désordre, ce qui entraîne le déclenchement du système de contrôle de la congestion de TCP/IP, souvent par la retransmission de segments.
