Bonding no Debian GNU/Linux
Introdução
Nessa dica darei um exemplo de bonding ou como conhecemos como LACP (Link Aggregation Control Protocol), em um Debian. Em outras distribuições GNU/Linux pode ser diferente mas o conceito é o mesmo e pode te servir como comparação.
Primeiro precisamos instalar um pacote essencial e configurar o módulo:
# apt install ifenslave # modprobe bonding # echo "bonding" >> /etc/modules
Sem os passos acima, seu LACP não subirá. Outro detalhe é que com a configuração que mostrarei, funcionou muito bem com diversos vendors como Huawei, Cisco e Mikrotik. Importante sempre checar se o balanceamento ficou OK.
Pegarei como exemplo uma interface Intel X520-SR2 que possui 2 portas de 10Gbps ópticas sfp+ nomeadas como enp1s0f0 e enp1s0f1.
auto bond0 iface bond0 inet static bond-slaves enp1s0f0 enp1s0f1 bond_mode 802.3ad bond-ad_select bandwidth bond_miimon 100 bond_downdelay 200 bond_updelay 200 bond-lacp-rate 1 bond-xmit-hash-policy layer2+3 address 199.18.0.10/27
Vamos necessitar de um reboot e para sabermos se ficou ok olharemos o /proc e veremos algo parecido com o que está abaixo, checando os status das interfaces. No exemplo abaixo a porta enp1s0f1 está down e por isso necessita ser checada:
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v5.10.0-19-amd64 Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer2+3 (2) MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 200 Down Delay (ms): 200 Peer Notification Delay (ms): 0 802.3ad info LACP rate: fast Min links: 0 Aggregator selection policy (ad_select): bandwidth System priority: 65535 System MAC address: 8c:dc:d4:af:c2:dc Active Aggregator Info: Aggregator ID: 1 Number of ports: 1 Actor Key: 15 Partner Key: 3649 Partner Mac Address: f4:de:af:69:c3:40 Slave Interface: enp1s0f0 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 8c:dc:d4:af:c2:dc Slave queue ID: 0 Aggregator ID: 1 Actor Churn State: none Partner Churn State: none Actor Churned Count: 1 Partner Churned Count: 1 details actor lacp pdu: system priority: 65535 system mac address: 8c:dc:d4:af:c2:dc port key: 15 port priority: 255 port number: 1 port state: 63 details partner lacp pdu: system priority: 32768 system mac address: f4:de:af:69:c3:40 oper key: 3649 port priority: 32768 port number: 11 port state: 61 Slave Interface: enp1s0f1 MII Status: down Speed: Unknown Duplex: Unknown Link Failure Count: 0 Permanent HW addr: 8c:dc:d4:af:c2:dd Slave queue ID: 0 Aggregator ID: 2 Actor Churn State: churned Partner Churn State: churned Actor Churned Count: 1 Partner Churned Count: 1 details actor lacp pdu: system priority: 65535 system mac address: 8c:dc:d4:af:c2:dc port key: 0 port priority: 255 port number: 2 port state: 71 details partner lacp pdu: system priority: 65535 system mac address: 00:00:00:00:00:00 oper key: 1 port priority: 255 port number: 1 port state: 1
Não esqueça de conferir o tráfego se está balanceado. Podemos usar o pacotes bmon e olhar as interfaces e corrigir se algo estiver errado. O problema acima é porque não existe um cordão óptico ligando a interface enp1s0f1 no switch:
# apt install bmon
# bmon -b -p bond0,enp1s0f0,enp1s0f1
Repare na imagem abaixo que uma das interfaces do bonding está fora e por isso não há tráfego:
Se estiver tudo OK verá um tráfego balanceado.