Quelles sont les différences entre les modes de liaison de canaux sous Linux?

8

Sous Linux, vous pouvez combiner plusieurs interfaces réseau en une interface réseau "liée" pour assurer le basculement.

Mais il existe plusieurs modes, dont certains ne nécessitent pas de prise en charge de commutateur. Je ne suis pas contraint dans mon commutateur car je peux utiliser n'importe lequel des modes.

Cependant, en lisant sur les différents modes, il n'est pas immédiatement clair quels sont les avantages et les inconvénients de chacun.

  1. Certains modes offrent-ils un basculement plus rapide?
  2. Qu'en est-il de l'impact de la charge CPU pour chaque mode?
  3. Quels modes peuvent combiner la bande passante plutôt que de simplement fournir une redondance?
  4. Y a-t-il des limites à cela?
  5. Balance-rr nécessite-t-il la prise en charge des commutateurs?
  6. Fiabilité? Quelles sont vos expériences sur le long terme?
Mat
la source
vous avez lu le guide de liaison du noyau , n'est-ce pas? Il devrait répondre à vos questions.
le-wabbit
Oui, cela vous dit ce qu'ils font dans une certaine mesure. Mais cela ne vous dit pas à quel point ils fonctionnent dans un environnement de production. Certains disent "aucun support de commutateur requis". Alors que d'autres n'ont aucun commentaire et vous laissent deviner.
Matt
Je ne sais pas pourquoi le downvote. C'est une question parfaitement valable et sur le sujet n'est-ce pas?
Matt
La personne qui a voté contre et / ou fermé a donné une raison pour que je puisse au moins avoir une chance d'améliorer la question.
Matt
Je soupçonne le vote négatif, peut-être parce que la façon dont votre question est posée donne l'impression que vous n'avez pas fait beaucoup de recherches ou de lecture de la documentation avant de la poser. Voir l'info-bulle sur les votes négatifs.
Zoredache

Réponses:

9
  1. Le facteur le plus important dans le basculement est la vitesse à laquelle une défaillance de liaison est détectée. Débranchez le câble de l'hôte et ils fonctionneront tous assez bien. Laissez un lien en direct sur un commutateur autrement mort et la plupart des modes (à l'exception de ceux qui prennent en charge les balises / keepalives) vont envoyer une partie de votre trafic nulle part.

  2. D'une manière générale, le trafic réseau est généré par interruption. Les différents algorithmes de hachage ne feront pas de différence significative.

  3. Tout mode qui n'est pas actif / en veille ou tout diffusé partagera le trafic à des degrés divers. Certains modes peuvent s'équilibrer par paquet, d'autres fonctionnent par flux. Le premier répartira la charge de manière plus uniforme tandis que le second est beaucoup plus utile (lire: fonctionnel / stable) dans les réseaux réels.

  4. Oui - il y a des limites à chaque mode, mais nous devons en savoir beaucoup plus sur votre application pour leur parler.

  5. Seul LACP / 802.3ad (mode 4) requiert explicitement la prise en charge du commutateur. Cela dit, ce n'est pas parce que vous envoyez au commutateur avec un modèle particulier que le commutateur vous renverra de la même manière.

  6. Le seul mode auquel j'ai tendance à faire confiance en production est le 802.3ad qui, avec un commutateur correctement configuré, garantira que seules les bonnes liaisons se retrouveront dans le canal, tout en fournissant une certaine symétrie dans le partage du trafic et une réponse prévisible lorsqu'un le lien est en panne. Ce mode évite également certains problèmes courants mais désagréables (par exemple, les inondations unicast). Active / veille est également assez courant. Les autres modes peuvent être nécessaires dans certaines circonstances mais, à mon avis, l'OMI ont tendance à être plus douloureux.

D'autres modes d'équilibrage basés sur le flux / MAC / IP ou actifs / en veille peuvent également convenir et peuvent être nécessaires pour traiter des commutateurs non gérés.

rnxrx
la source
10

La plupart de ces points sont décrits en détail dans le /usr/src/linux/Documentation/networking/bonding.txtfichier de documentation du paquet source linux de votre distribution préférée. La vitesse de basculement est contrôlée par le paramètre "miimon" pour la plupart des modes, mais ne doit pas être réglée trop bas; les valeurs normales sont de toute façon inférieures à une seconde.

Voici les meilleures pièces, complétées par moi:

   balance-rr or 0
       Round-robin policy: Transmit packets in sequential
       order from the first available slave through the
       last. This mode provides load balancing and fault
       tolerance. 


   active-backup or 1
       Active-backup policy: Only one slave in the bond is
       active.  A different slave becomes active if, and only
       if, the active slave fails. The bond's MAC address is
       externally visible on only one port (network adapter)
       to avoid confusing the switch.

       This mode provides fault tolerance. The "primary"
       option affects the behavior of this mode.

   balance-xor or 2
       XOR policy: Transmit based on the selected transmit
       hash policy.  The default policy is a simple [(source
       MAC address XOR'd with destination MAC address) modulo
       slave count].  Alternate transmit policies may be
       selected via the xmit_hash_policy option.

       This mode provides load balancing and fault tolerance.

   broadcast or 3
       Broadcast policy: transmits everything on all slave
       interfaces.  This mode provides fault tolerance.

   802.3ad or 4
       IEEE 802.3ad Dynamic link aggregation.  Creates
       aggregation groups that share the same speed and
       duplex settings.  Utilizes all slaves in the active
       aggregator according to the 802.3ad specification.

       Slave selection for outgoing traffic is done according
       to the transmit hash policy, which may be changed from
       the default simple XOR policy via the xmit_hash_policy
       option. Note that not all transmit policies may be 802.3ad
       compliant, particularly inregards to the packet mis-ordering
       requirements of section 43.2.4 of the 802.3ad standard.
       Differing peer implementations will have varying tolerances for
       noncompliance.

       Note: Most switches will require some type of configuration
       to enable 802.3ad mode.

   balance-tlb or 5
       Adaptive transmit load balancing: channel bonding that
       does not require any special switch support.  The
       outgoing traffic is distributed according to the
       current load (computed relative to the speed) on each
       slave.  Incoming traffic is received by the current
       slave.  If the receiving slave fails, another slave
       takes over the MAC address of the failed receiving
       slave.

   balance-alb or 6
       Adaptive load balancing: includes balance-tlb plus
       receive load balancing (rlb) for IPV4 traffic, and
       does not require any special switch support.

       When a link is reconnected or a new slave joins the
       bond the receive traffic is redistributed among all
       active slaves in the bond by initiating ARP Replies
       with the selected MAC address to each of the
       clients. The updelay parameter must
       be set to a value equal or greater than the switch's
       forwarding delay so that the ARP Replies sent to the
       peers will not be blocked by the switch.

balance-rr, active-backup, balance-tlb et balance-alb n'ont pas besoin de prise en charge des commutateurs.

balance-rr augmente les performances au prix de la fragmentation, fonctionne mal avec certains protocoles (CIFS) et avec plus de 2 interfaces.

balance-alb et balance-tlb peuvent ne pas fonctionner correctement avec tous les commutateurs; il y a souvent des problèmes d'arp (certaines machines peuvent ne pas se connecter entre elles par exemple). Vous devrez peut-être modifier divers paramètres (miimon, mise à jour) pour obtenir un réseau stable.

balance-xor peut ou non nécessiter une configuration de commutateur. Vous devez configurer un groupe d'interface ( pas LACP) sur les commutateurs HP et Cisco, mais apparemment ce n'est pas nécessaire sur les commutateurs D-Link, Netgear et Fujitsu.

802.3ad nécessite absolument un groupe LACP du côté du commutateur. C'est la meilleure option prise en charge dans l'ensemble pour augmenter les performances.

Remarque: quoi que vous fassiez, une connexion réseau passe toujours par un et un seul lien physique. Ainsi, lors de l'agrégation d'interfaces GigE, un transfert de fichiers de la machine A vers la machine B ne peut pas dépasser 1 gigabit / s, même si chaque machine possède 4 interfaces GigE agrégées (quel que soit le mode de liaison utilisé).

wazoox
la source
Notez que 802.3ad ne rend pas obligatoire l'utilisation de LACP. LACP est juste un protocole de contrôle pour la configuration d'agrégation de liens dynamiques , vous pouvez parfaitement avoir une configuration LA statique sans LACP.
le-wabbit
1
C'est vrai, cependant la plupart des commutateurs ne permettent pas la configuration d'agrégation de liens statiques et appellent les agrégats en "mode LACP".
wazoox
802.3ad définit les deux - LA statique et LACP. Si un commutateur prétend se conformer à 802.3ad, il doit implémenter les deux. Chaque modèle de commutateur que j'avais sous la main qui implémentait LACP, implémentait également LA statique.
le-wabbit
1

Les documents du noyau répondent à certaines de ces questions:

Liaison Ethernet

FINESEC
la source
1
Veuillez consacrer du temps à améliorer cette réponse au-delà de la simple fourniture d'un lien. Le lien est utile, mais les réponses ici devraient être plus qu'un simple lien vers la documentation.
Zoredache
Merci pour ce lien. Section 12.1.1 Sélection du mode de liaison MT pour la topologie à commutateur unique est ce que je recherchais.
Matt
Oui, c'est pourquoi j'ai collé le lien sans aucun commentaire ;-)
FINESEC