Configurando Bonding de Placas de Rede no CentOS 7 com Mode 4

Técnica de Bonding

O bonding (agregação) é uma tecnologia de ligação de placas de rede no sistema Linux, que permite combinar n placas de rede físicas em uma única interface lógica. Essa técnica oferece várias vantagens, como aumento da capacidade de rede, redundância e balanceamento de carga.

O bonding é implementado no nível do kernel do Linux como um módulo (driver). Para utillizá-lo, o sistema precisa ter esse módulo disponível. Podemos verificar as informações do módulo usando o comando modinfo:


modinfo bonding
filename:       /lib/modules/3.10.0-957.1.3.el7.x86_64/kernel/drivers/net/bonding/bonding.ko.xz
author:         Thomas Davis, tadavis@lbl.gov and many others
description:    Ethernet Channel Bonding Driver, v3.7.1
version:        3.7.1
license:        GPL
alias:          rtnl-link-bond
retpoline:      Y
rhelversion:    7.6
srcversion:     120C91D145D649655185C69
depends:        
intree:         Y
vermagic:       3.10.0-957.1.3.el7.x86_64 SMP mod_unload modversions 
signer:         CentOS Linux kernel signing key
sig_key:        E7:CE:F3:61:3A:9B:8B:D0:12:FA:E7:49:82:72:15:9B:B1:87:9C:65
sig_hashalgo:   sha256
parm:           max_bonds:Número máximo de dispositivos vinculados (int)
parm:           tx_queues:Número máximo de filas de transmissão (padrão = 16) (int)
parm:           num_grat_arp:Número de notificações de peer para enviar em eventos de failover (alias de num_unsol_na) (int)
parm:           num_unsol_na:Número de notificações de peer para enviar em eventos de failover (alias de num_grat_arp) (int)
parm:           miimon:Intervalo de verificação de link em milissegundos (int)
parm:           updelay:Atraso antes de considerar o link up, em milissegundos (int)
parm:           downdelay:Atraso antes de considerar o link down, em milissegundos (int)
parm:           use_carrier:Usar netif_carrier_ok (vs MIO ioctls) no miimon; 0 para desligado, 1 para ligado (padrão) (int)
parm:           mode:Modo de operação; 0 para balance-rr, 1 para active-backup, 2 para balance-xor, 3 para broadcast, 4 para 802.3ad, 5 para balance-tlb, 6 para balance-alb (charp)
parm:           primary:Dispositivo de rede primário para uso (charp)
parm:           primary_reselect:Reescolher slave primário quando ele estiver ativo; 0 para sempre (padrão), 1 apenas se a velocidade do primário for melhor, 2 apenas em falha do slave ativo (charp)
parm:           lacp_rate:Taxa de transmissão LACPDU para solicitar do parceiro 802.3ad; 0 para lento, 1 para rápido (charp)
parm:           ad_select:Lógica de seleção de agregação 802.3ad; 0 para estável (padrão), 1 para largura de banda, 2 para contagem (charp)
parm:           min_links:Número mínimo de links disponíveis antes de ativar o carrier (int)
parm:           xmit_hash_policy:Método de hash para balance-alb, balance-tlb, balance-xor, 802.3ad; 0 para camada 2 (padrão), 1 para camada 3+4, 2 para camada 2+3, 3 para encapsulamento camada 2+3, 4 para encapsulamento camada 3+4 (charp)
parm:           arp_interval:intervalo arp em milissegundos (int)
parm:           arp_ip_target:alvos arp em formato n.n.n.n (array de charp)
parm:           arp_validate:validar src/dst de probes ARP; 0 para nenhum (padrão), 1 para ativo, 2 para backup, 3 para todos (charp)
parm:           arp_all_targets:falhar em qualquer/todos os alvos de timeout arp; 0 para qualquer (padrão), 1 para todos (charp)
parm:           fail_over_mac:Para active-backup, não definir todos os slaves com o mesmo MAC; 0 para nenhum (padrão), 1 para ativo, 2 para seguir (charp)
parm:           all_slaves_active:Manter todos os quadros recebidos em uma interface definindo o flag ativo para todos os slaves; 0 para nunca (padrão), 1 para sempre. (int)
parm:           resend_igmp:Número de relatórios de associação IGMP para enviar em falha de link (int)
parm:           packets_per_slave:Pacotes para enviar por slave no modo balance-rr; 0 para slave aleatório, 1 pacote por slave (padrão), >1 pacotes por slave. (int)
parm:           lp_interval:O número de segundos entre instâncias onde o driver de bonding envia pacotes de aprendizado para cada switch de slaves. O padrão é 1. (uint)

Sete Modos de Operação do Bonding

O bonding oferece sete modos de operação, cada um com suas próprias vantagens e desvantagens:

  1. balance-rr (mode=0): Padrão, com alta disponibilidade (tolerância a falhas) e balanceamento de carga. Requer configuração do switch, os pacotes são enviados em rodízio entre as placas.
  2. active-backup (mode=1): Apenas alta disponibilidade (tolerância a falhas). Não requer cnofiguração do switch. Apenas uma placa de rede está ativa a qualquer momento, com um único endereço MAC externo.
  3. balance-xor (mode=2): Menos comum
  4. broadcast (mode=3): Menos comum
  5. 802.3ad (mode=4): Agregação dinâmica de links 802.3ad, requer configuração do switch
  6. balance-tlb (mode=5): Menos comum
  7. balance-alb (mode=6): Com alta disponibilidade (tolerância a falhas) e balanceamento de carga, sem necessidade de configuração do switch (a distribuição de tráfego para cada interface não é perfeitamente equilibrada).

Configuração do Bonding no CentOS 7


Sistema: CentOS 7.5
Placas de rede: ifcfg-eth0, ifcfg-eth1
bond0: 10.162.97.41
Modo de carga: mode4 (agregação dinâmica de links 802.3ad)

1. Desativar e Parar o Serviço NetworkManager


systemctl stop NetworkManager.service
systemctl disable NetworkManager.service

Nota: É essencial desativar o NetworkManager, pois ele pode interferir na configuração do bonding.

2. Carregar o Módulo Bonding


modprobe bonding

Se não houver mensagens de erro, o módulo foi carrregado com sucesso. Para verificar se o módulo está ativo:


lsmod | grep bonding
bonding 136705 0

3. Criar o Arquivo de Configuração para a Interface bond0


vim /etc/sysconfig/network-scripts/ifcfg-bond0

Configure com o seguinte conteúdo (ajustando conforme necessário):


DEVICE=bond0
TYPE=Bond
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.162.97.41
NETMASK=255.255.255.0
GATEWAY=10.162.97.253
DNS1=10.1.0.62
BONDING_MASTER=yes
BONDING_OPTS="mode=4 miimon=100"

A opção BONDING_OPTS="mode=4 miimon=100" especifica o modo de operação como agregação dinâmica de links 802.3ad, com verificação de link a cada 100 milissegundos.

4. Modificar o Arquivo de Configuração da Interface eth0


vim /etc/sysconfig/network-scripts/ifcfg-eth0

Configure com o seguinte conteúdo:


TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=29d2526a-2eec-4a5e-8190-3d1fe5e04f57
DEVICE=eth0.97
ONBOOT=yes
MASTER=bond0
SLAVE=yes
VLAN=yes
TYPE=Vlan
VLAN_ID=97

5. Modificar o Arquivo de Configuração da Interface eth1


vim /etc/sysconfig/network-scripts/ifcfg-eth1

Configure com o seguinte conteúdo:


TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth1
UUID=dae63958-841f-4666-9308-28bda92dc66f
DEVICE=eth1.97
ONBOOT=yes
MASTER=bond0
SLAVE=yes
VLAN=yes
TYPE=Vlan
VLAN_ID=97

6. Testar a Configuração

Reinicie o serviço de rede:


systemctl restart network

Verifique as informações de status da interface bond0:


cat /proc/net/bonding/bond0

Exemplo de saída:


Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: 20:67:7c:1f:15:f0
Active Aggregator Info:
    Aggregator ID: 1
    Number of ports: 1
    Actor Key: 15
    Partner Key: 1
    Partner Mac Address: 00:00:00:00:00:00

Slave Interface: eth0.97
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 20:67:7c:1f:15:f0
Slave queue ID: 0
Aggregator ID: 1

Slave Interface: eth1.97
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 20:67:7c:1f:15:f8
Slave queue ID: 0
Aggregator ID: 2

Verifique as informações das interfaces de rede com o comando ifconfig:


ifconfig

Para testar a alta disponibilidade, desconecte um dos cabos de rede. No modo 4 (802.3ad), o sistema deve continuar operando com a outra interface, mantendo a conectividade.

Tags: CentOS bonding network 802.3ad link-aggregation

Publicado em 6-18 01:36