¿Cuáles son las diferencias entre los modos de enlace de canales en Linux?

8

En Linux, puede combinar varias interfaces de red en una interfaz de red "unida" para proporcionar conmutación por error.

Pero hay varios modos, algunos de los cuales no requieren soporte de conmutador. No estoy limitado en mi cambio en que puedo usar cualquiera de los modos.

Sin embargo, al leer sobre los diferentes modos, no está claro de inmediato cuáles son los pros y los contras de cada uno.

  1. ¿Algunos modos proporcionan una conmutación por error más rápida?
  2. ¿Qué pasa con el impacto de carga de la CPU para cada modo?
  3. ¿Qué modos pueden combinar el ancho de banda en lugar de simplemente proporcionar redundancia?
  4. ¿Hay limitaciones para eso?
  5. ¿Balance-rr requiere soporte de interruptor?
  6. ¿Fiabilidad? ¿Cuáles son sus experiencias a largo plazo?
Mate
fuente
que tiene leer el howto unión del núcleo , ¿verdad? Debería responder a sus preguntas.
the-wabbit
Sí, te dice lo que hacen hasta cierto punto. Pero no le dice qué tan bien funcionan en un entorno de producción. Algunos dicen "no se requiere soporte de interruptor". Mientras que otros no tienen comentarios y te dejan adivinando.
Matt
No estoy seguro de por qué el voto negativo. Esta es una pregunta perfectamente válida y sobre el tema, ¿no?
Matt
Quien hizo el voto negativo y / o el voto cerrado por favor proporcione una razón para que al menos pueda tener la oportunidad de mejorar la pregunta.
Matt
Sospecho que el voto negativo puede deberse a que la forma en que se hace su pregunta hace que parezca que no investigó mucho ni leyó la documentación antes de preguntarla. Vea la información sobre herramientas de voto negativo.
Zoredache

Respuestas:

9
  1. El factor más importante en la conmutación por error es la velocidad con la que se detecta una falla de enlace. Desenchufe el cable del host y todos funcionarán bastante bien. Deje un enlace en vivo en un interruptor que de otro modo estaría muerto y la mayoría de los modos (excepto aquellos que admiten balizas / keepalives) no enviarán parte de su tráfico a ninguna parte.

  2. En términos generales, el tráfico de red es controlado por interrupción. Los diversos algoritmos de hash no harán una diferencia significativa.

  3. Cualquier modo que no esté activo / en espera o transmitido todo compartirá el tráfico en diversos grados. Algunos modos pueden equilibrarse por paquete, otros funcionan por flujo. El primero distribuirá la carga de manera más uniforme, mientras que el segundo es mucho más útil (léase: funcional / estable) en redes reales.

  4. Sí, hay limitaciones para cada modo, pero necesitamos saber mucho más acerca de su aplicación para hablar con ellos.

  5. Solo LACP / 802.3ad (modo 4) requiere explícitamente soporte en el conmutador. Dicho esto, el hecho de que envíe al conmutador con un patrón particular no significa que el conmutador le enviará de vuelta de la misma manera.

  6. El único modo en el que tiendo a confiar en la producción es 802.3ad que, con un conmutador configurado adecuadamente, asegurará que solo los enlaces correctos terminarán en el canal, además de proporcionar cierta medida de simetría en el tráfico compartido y una respuesta predecible cuando El enlace está caído. Este modo también evita algunos problemas comunes pero desagradables (es decir, inundaciones de unidifusión). Activo / en espera también es bastante común. Los otros modos pueden ser necesarios para ciertas circunstancias, pero, en mi opinión, tienden a ser más dolorosos.

Otros modos de equilibrio basados ​​en flujo / MAC / IP o activo / en espera también pueden estar bien, y pueden ser necesarios cuando se trata de conmutadores no administrados.

rnxrx
fuente
10

La mayoría de estos puntos se describen a fondo en el /usr/src/linux/Documentation/networking/bonding.txtarchivo de documentación del paquete fuente de Linux de su distribución favorita. La velocidad de la conmutación por error se controla mediante el parámetro "miimon" para la mayoría de los modos, pero no debe establecerse demasiado bajo; los valores normales están por debajo de un segundo de todos modos.

Aquí están las mejores partes, completadas por mí:

   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 y balance-alb no necesitan compatibilidad con conmutadores.

balance-rr aumenta el rendimiento al precio de la fragmentación, funciona mal con algunos protocolos (CIFS) y con más de 2 interfaces.

balance-alb y balance-tlb pueden no funcionar correctamente con todos los interruptores; a menudo hay algunos problemas de arp (algunas máquinas pueden no conectarse entre sí, por ejemplo). Es posible que deba ajustar varias configuraciones (miimon, updelay) para obtener una red estable.

balance-xor puede o no requerir la configuración del interruptor. Debe configurar un grupo de interfaz ( no LACP) en los conmutadores HP y Cisco, pero aparentemente no es necesario en los conmutadores D-Link, Netgear y Fujitsu.

802.3ad requiere absolutamente un grupo LACP en el lado del conmutador. Es la mejor opción compatible en general para aumentar el rendimiento.

Nota: hagas lo que hagas, una conexión de red siempre pasa por un único enlace físico. Entonces, al agregar interfaces GigE, una transferencia de archivos de la máquina A a la máquina B no puede superar 1 gigabit / s, incluso si cada máquina tiene 4 interfaces GigE agregadas (cualquiera que sea el modo de enlace en uso).

wazoox
fuente
Tenga en cuenta que 802.3ad no exige el uso de LACP. LACP es solo un protocolo de control para la configuración de agregación de enlaces dinámicos , puede tener una configuración de LA estática sin LACP.
the-wabbit
1
Eso es cierto, sin embargo, la mayoría de los switches no permiten la configuración de agregación de enlaces estáticos y llaman a los agregados "modo LACP".
wazoox
802.3ad define ambos: LA estática y LACP. Si un switch afirma cumplir con 802.3ad, necesita implementar ambos. Todos los modelos de conmutadores que tenía en mis manos que implementaban LACP, implementaban LA estática también.
the-wabbit
1

Los documentos del kernel responden algunas de esas preguntas:

Enlace Ethernet

FINESEC
fuente
1
Dedique un tiempo a mejorar esta respuesta más allá de simplemente proporcionar un enlace. El enlace es útil, pero las respuestas aquí deberían ser más que solo un enlace a la documentación.
Zoredache
Gracias por ese enlace. Sección 12.1.1 Selección de modo de enlace MT para topología de interruptor único es lo que estaba buscando.
Matt
Sí, por eso solo pegué el enlace sin ningún comentario ;-)
FINESEC