O post de hoje é sobre Ethernet Bonding. Tentarei explicar seu uso a partir de uma arquitetura simplificada bem comum nos dias de hoje aplicada no Linux CentOS 6.8 SAGE versão 27-17 modificado pelo CEPEL.
Mais o que seria a Ethernet Bonding?
É a técnica usada para a vinculação de dois ou mais canais ethernet em um único canal com a finalidade de balanceamento de carga e alta disponibilidade desse canal. A Ethernet Bonding é descrita na norma IEEE 802.3ad intitulada Link Aggregation.
Como falei, o uso da ethernet bonding, hoje é bem comum de ser encontrado em subestações, ainda mais com o advento da norma IEC 61850. Isso porque a norma prevê o conceito de alta disponibilidade.
Então considerando a arquitetura abaixo de uma rede 61850 e switches com o protocolo STP (Spanning Tree Protocol) ativado. Vamos entender melhor a necessidade do uso da Ethernet Bonding e configurar nossas IHM´s da melhor forma.
Configurar nossas IHM´s Linux da melhor forma é fazer com que as mesma possam prover redundância em seus links, mas antes disso vamos conhecer os parâmetros necessários para a sua configuração da Ethernet Bonding.
Mode: Modo como as interfaces bonding irão funcionar.
- Mode=0 (balance round-robin) – Modo padrão. Provê tolerância a falhas e balanceamento de carga. Transmite pacotes em ordem sequencial entre as interfaces escravos. Todas as interfaces ficam ativas.
- Mode=1 (active-backup) – Provê tolerância a falhas. Pacotes são enviados e recebidos por meio da interface escrava ativada. As outras interfaces escravas só serão utilizadas se a interface escrava ativada falhar.
- Mode=2 (balance-xor) – Provê tolerância a falhas e balanceamento de carga XOR (ou-exclusivo). O uso desse modo combina o endereço MAC da solicitação de entrada com o endereço MAC de uma das interfaces de escravos.
- Mode=3 (broadcast) – Provê difusão para tolerância a falhas. Todos os pacotes serão enviados em todas as interfaces escravas.
- Mode=4 (802.3ad) – Provê a norma IEEE 802.3ad Agregação de link dinâmico. Cria grupos de agregação que compartilham as mesmas configurações de velocidade e modo duplex. Utiliza todos os escravos no agregador ativo de acordo com a especificação 802.3ad.
- Mode=5 (balance-tlb) – O tráfego de saída é distribuído de acordo com a carga atual (calculada em relação à velocidade) em cada interface escrava. O tráfego recebido é recebido pela interface escrava atual. Se a interface escrava receptor falhar, outra interface escrava assume o endereço MAC da interface escrava receptora.
- Mode=6 (balance-alb) – O balanceamento de carga de recebimento é alcançado pela negociação ARP. O driver de ligação intercepta as respostas ARP enviadas pelo sistema local ao sair e substitui o endereço de hardware de origem pelo endereço de hardware exclusivo de um dos escravos na ligação, de modo que diferentes pares usem diferentes endereços de hardware para o servidor.
Miimon: Tempo de espera para monitoramento da interface bonding, em milissegundos.
Downdelay: Tempo de espera para desabilitar uma interface escrava após ter sido
detectado um falha de link, em milissegundos. Usar em conjunto com miimon.
Updelay: Tempo de espera para ativar uma interface escrava após detecção de
normalização de falha de link, em milissegundos.
Configurando o bonding
Para a configuração das nossas IHM´s Linux selecionaremos as interfaces escravas eth0 e eth1. O modo será active-backup (mode=1), onde somente umas das interfaces escravas permanece ativa. Iremos monitorar o bonding a cada 100 milissegundos (miimon=100) e o comportamento das interfaces escravas se dará da seguinte maneira: interface escrava ativa só será desabilitada após 200 milissegundos da falha do link (downdelay=200) e a interface de backup assumirá após 200 milissegundos após o retorno do link (updelay=200).
Com o usuário root vamos as configurações.
Primeiramente vamos carregar o modulo bonding do kernel.
# modeprobe bonding
Em seguida vamos criar, caso não existam, e editar os arquivos com o conteúdo abaixo:
# vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
IPADDR=192.168.80.3
NETMASK=255.255.255.0
GATEWAY=192.168.80.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
HWADDR=00:2A:FF:34:CD:6A (Obs.: Colocar o endereço MAC da sua interface)
USERCTL=no
MASTER=bond0
SLAVE=yes
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
HWADDR=00:2A:FF:34:CD:6B (Obs.: Colocar o endereço MAC da sua interface)
USERCTL=no
MASTER=bond0
SLAVE=yes
# vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bond0 miimon=100 mode=1 downdelay=200 updelay=200
Após todos os arquivos estarem devidamente configurados reinicialize o serviço network.
# services network restart
Para monitorar o estado do bonding e as interfaces escravas você pode rodar o comando abaixo.
# cat /proc/net/bonding/bond
Espero que o post tenha alcançado e atendido a sua busca por informações.