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 "ligada" para fornecer failover.

Mas existem vários modos, alguns dos quais não precisam de suporte de switch. Não estou restrito ao meu switch, pois posso usar qualquer um dos modos.

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

  1. Alguns modos fornecem um failover mais rápido?
  2. E o impacto da carga da CPU para 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 para switch?
  6. Confiabilidade? Quais são suas experiências em longo prazo?
Matt
fonte
você tem ler a ligação howto Kernel , não é? Deve responder suas perguntas.
precisa
Sim, ele diz o que eles fazem até certo ponto. Mas isso não mostra o desempenho delas em um ambiente de produção. Alguns dizem que "não é necessário suporte para switch". Enquanto outros não têm comentários e deixam você adivinhando.
Matt
Não sei por que o voto negativo. Essa é uma pergunta perfeitamente válida e, sobre o assunto, não é?
Matt
Quem fez a votação final e / ou a votação fechada, forneça um motivo para que eu possa pelo menos ter a chance de melhorar a questão.
Matt
Eu suspeito que o voto negativo, talvez porque a maneira como sua pergunta seja feita pareça que você não pesquisou muito ou leu a documentação antes de fazer a pergunta. Veja a dica de ferramenta de voto negativo.
Zoredache

Respostas:

9
  1. O principal fator do failover é a velocidade com que uma falha no link é detectada. Desconecte o cabo do host e todos eles funcionarão muito bem. Deixe um link ao vivo em um switch inoperante e a maioria dos modos (exceto os que suportam beacons / keepalives) enviarão parte do seu tráfego a lugar nenhum.

  2. De um modo geral, o tráfego de rede é acionado 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 / em espera ou transmitido todos compartilhará o tráfego em vários graus. Alguns modos podem se equilibrar por pacote, enquanto outros funcionam por fluxo. O primeiro distribuirá a carga de maneira mais uniforme, enquanto o último é muito mais útil (leia-se: funcional / estável) nas redes reais.

  4. Sim - existem limitações para cada modo, mas precisamos saber muito mais sobre sua aplicação para falar com eles.

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

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

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

rnxrx
fonte
10

A maioria desses pontos é descrita detalhadamente no /usr/src/linux/Documentation/networking/bonding.txtarquivo de documentação do pacote fonte do Linux da sua distribuição favorita. A velocidade do failover é controlada pelo parâmetro "miimon" na maioria dos modos, mas não deve ser definida como muito baixa; valores normais estão abaixo de um segundo de qualquer maneira.

Aqui estão as melhores partes, concluídas 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 de 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 todas as opções; geralmente há alguns problemas de arp (algumas máquinas podem falhar na conexão entre si, por exemplo). Pode ser necessário ajustar várias configurações (miimon, updelay) para obter uma rede estável.

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

O 802.3ad exige absolutamente um grupo LACP no lado do comutador. É a melhor opção com suporte geral para aumentar o desempenho.

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

wazoox
fonte
Observe que o 802.3ad não exige o uso do LACP. O LACP é apenas um protocolo de controle para a configuração de agregação de link dinâmico ; você pode perfeitamente ter uma configuração de LA estática sem o LACP.
the-wabbit
1
Isso é verdade, porém a maioria dos comutadores não permite a configuração de agregação de link estático e chama os agregados de "modo LACP".
Woox
O 802.3ad define LA e LACP estáticos. Se um comutador afirma estar em conformidade com o 802.3ad, ele precisa implementar os dois. Todo modelo de switch que eu tinha em minhas mãos que implementava o LACP também implementava o LA estático.
the-wabbit
1

Os documentos do kernel respondem a algumas dessas perguntas:

Ligação Ethernet

FINESEC
fonte
1
Por favor, dedique algum tempo a melhorar esta resposta, além de apenas fornecer um link. O link é útil, mas as respostas aqui devem ser mais do que apenas um link para a documentação.
Zoredache
Obrigado por esse link. Seção 12.1.1 Seleção do modo de ligação MT para topologia de comutador único é o que eu procurava.
Matt
Sim, é por isso que eu apenas colei o link sem nenhum comentário ;-)
FINESEC 8/12/12