Quais são as diferenças entre os modos de ligação de canal no Linux?

8

No Linux, você pode combinar várias interfaces de rede em uma interface de rede "vinculada" para fornecer failover.

Mas existem vários modos, alguns dos quais não requerem suporte a switch. Eu não estou restrito no meu switch em que eu possa usar qualquer um dos modos.

No entanto, ao ler sobre os diferentes modos, não fica imediatamente claro quais são os prós e contras de cada um.

  1. Alguns modos fornecem um failover mais rápido?
  2. E quanto ao impacto da carga da CPU em cada modo?
  3. Quais modos podem combinar a largura de banda em vez de apenas fornecer redundância?
  4. Existem limitações para isso?
  5. O balance-rr requer suporte a switch?
  6. Confiabilidade? Quais são as suas experiências a longo prazo?
por Matt 08.11.2012 / 23:37

3 respostas

9
  1. O maior fator no failover é a velocidade com que uma falha de link é detectada. Desconecte o cabo do host e eles funcionarão muito bem. Deixe um link ativo em um switch que, de outra forma, estaria inoperante, e a maioria dos modos (exceto os que suportam beacons / keepalives) enviarão parte de seu tráfego para lugar algum.

  2. Em geral, o tráfego de rede é controlado por interrupção. Os vários algoritmos de hash não farão uma diferença significativa.

  3. Qualquer modo que não esteja ativo / standby ou broadcast-all compartilhará o tráfego em graus variados. Alguns modos podem equilibrar por pacote, outros trabalham por fluxo. O primeiro distribuirá mais uniformemente a carga enquanto o último é muito mais útil (leia-se: funcional / estável) nas redes reais.

  4. Sim - existem limitações em cada modo, mas precisamos saber muito mais sobre seu aplicativo para falar com eles.

  5. Somente o LACP / 802.3ad (modo 4) requer explicitamente suporte no comutador. Dito isso, só porque você envia para o switch com um determinado padrão não significa que o switch irá enviar-lhe de volta da mesma maneira.

  6. O único modo em que confio na produção é o 802.3ad, que, com um switch apropriadamente configurado, garante que apenas os links corretos terminarão no canal, além de fornecer alguma medida de simetria no compartilhamento de tráfego. e uma resposta previsível quando um link está inativo. Este modo também evita alguns problemas comuns, mas desagradáveis (isto é, inundação unicast). Ativo / espera também é bastante comum. Os outros modos podem ser necessários para certas circunstâncias, mas, IMO, tendem a ser mais dolorosos.

Outros modos de equilíbrio baseados em fluxo / MAC / IP ou ativo / em espera também podem ser bons e podem ser necessários ao lidar com switches não gerenciados.

    
por 09.11.2012 / 00:03
10

A maioria desses pontos é descrita em detalhes no arquivo de documentação /usr/src/linux/Documentation/networking/bonding.txt do pacote fonte do Linux da sua distro favorita. A velocidade do failover é controlada pelo parâmetro "miimon" para a maioria dos modos, mas não deve ser definido como muito baixo; os valores normais estão abaixo de um segundo de qualquer maneira.

Aqui estão as melhores partes, completadas por mim:

   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, backup ativo, balance-tlb e balance-alb não precisam de suporte ao switch.

O

balance-rr aumenta o desempenho ao preço da fragmentação, apresenta um desempenho ruim com alguns protocolos (CIFS) e com mais de 2 interfaces.

balance-alb e balance-tlb podem não funcionar corretamente com todos os switches; muitas vezes há alguns problemas de arp (algumas máquinas podem não conseguir se conectar umas às outras, por exemplo). Você pode precisar ajustar várias configurações (miimon, updelay) para obter uma rede estável.

balance-xor pode ou não exigir configuração de switch. Você precisa configurar um grupo de interface ( não LACP) nos switches HP e Cisco, mas aparentemente não é necessário nos switches D-Link, Netgear e Fujitsu.

802.3ad requer absolutamente um grupo LACP no lado do comutador. É a melhor opção suportada para aumentar o desempenho.

Nota: o que você fizer, uma conexão de rede sempre passa por um e apenas um link físico. Portanto, ao agregar as interfaces do GigE, uma transferência de arquivos da máquina A para a máquina B não pode ultrapassar 1 gigabit / s, mesmo que cada máquina tenha 4 interfaces GigE agregadas (qualquer que seja o modo de ligação em uso).

    
por 09.11.2012 / 00:02
1

Os documentos do kernel respondem a algumas dessas perguntas:

Ligação Ethernet

    
por 08.11.2012 / 23:45