NIC Bonding – Aprenda o que é e como configurar
NIC Bonding ou NIC Teaming consiste em combinar múltiplas interfaces rede numa única interface lógica de modo a conseguir um maior throughput ou garantir redundância. O conceito é análogo ao de Port Channel, uma configuração nos equipamentos Cisco que tem o mesmo objectivo.
Agora que já se tem uma ideia do que é, porque não configurar?
Para este tutorial foi usada uma máquina virtual com o sistema operativo Linux CentOS, possuindo este, um módulo no kernel para a agregação de várias interfaces de rede. Contudo estas configurações podem também ser aplicadas numa máquina física, com esta ou outra distribuição que possua este mesmo módulo.
Em primeiro, o utilizador deve criar as várias interfaces de rede nas configurações da máquina virtual, e estas devem todas pertencer à mesma VLAN.
Esquema:
Para configurar o NIC Bonding devem seguir os seguintes passos:
Passo 1) Arrancar o sistema operativo, e desligar o NetworkManager.
service NetworkManager stop |
(desligar no startup da máquina o serviço)
chkconfig NetworkManager off |
Passo 2) Ir para a directoria /etc/sysconfig/network-scripts
cd /etc/sysconfig/network-scripts |
Aí devemos encontrar vários ficheiros semelhantes a: ifcfg-xxx, em que xxx corresponde ao nome das interfaces presentes na máquina.
Neste caso foram usadas duas interfaces, a eth0 e eth1. O modo de configuração é active-backup, o qual será explicado mais à frente.
Passo 3) Editar os ficheiros das interfaces necessárias ao bond.
Configuração eth0
nano ifcfg-eth0 |
Alterar a linha:
BOOTPROTO=dhcp |
para
BOOTPROTO=none |
Adicionar:
MASTER=bond0 SLAVE=yes |
Configuração eth1
nano ifcfg-eth0 |
Alterar a linha:
BOOTPROTO=dhcp |
para
BOOTPROTO=none |
Adicionar:
MASTER=bond0 SLAVE=yes |
Passo 4) Criar a interface lógica bond0, na mesma directoria das interfaces de rede
nano ifcfg-bond0 |
e adicionar as seguintes linhas:
DEVICE=bond0 BOOTPROTO=dhcp ONBOOT=yes USERCTL=no |
O BOOTPROTO, na interface lógica bond0 foi definido como DHCP, pois estas interfaces de rede pertencem à VLAN de NAT, e assim é-lhe atribuído um endereço IP pela aplicação de virtualização (neste caso o VMWare). Contudo este pode ser estático, e definido pelo utilizador (BOOTPROTO=static).
Criar o ficheiro bonding.conf, na directoria /etc/modprob.d/ e adicionar as seguintes linhas:
alias bond0 bonding options bond0 miimon=80 mode=1 fail_over_mac=1 |
Alguns detalhes destas options: |
- miimon → corresponde ao tempo que a interface fica “down” após a falha da interface slave que está activa.
- mode → corresponde ao modo de funcionamento da interface virtual (bond0). Neste caso foi usado o modo active-backup, em que existem várias interfaces físicas ligadas, mas que só uma está em funcionamento. No caso de avaria da interface que está a activa, a outra interface que está desligada entra em activo, ou seja, estando presente como forma de backup.
- fail_over_mac → quando uma das interfaces falha, esta opção faz com que o endereço MAC da interface lógica (bond0) seja igual ao da interface que está activa no momento. Esta linha torna-se necessária porque, cada vez que uma interface falha-se e fosse mantido o mesmo endereço MAC o próprio VMWare detectava que já existia uma interface de rede com o mesmo endereço MAC, e a máquina virtual ficava sem conectividade. No entanto num ambiente com uma máquina física, este problema não ocorreria e esta opção não iria ser necessária, porque o switch físico simplesmente detectava que o host tinha mudado de interface de rede.
Logo esta opção obriga que o endereço MAC seja alterado para o da interface slave que está activa no momento.
Passo 5) Reiniciar as interfaces:
/etc/init.d/network restart |
(Pode Verificar as interfaces através do comando ifconfig)
Passo 6) Para verificar o modo de funcionamento do bonding.
cat /proc/net/bonding/bond0 |
Mais concretamente, é possível observar neste ficheiro, o modo de funcionamento da interface bond, as opções, e também qual a interface slave que está activa e o número de vezes que as slave falharam.
Outros modos de configuração de bonding:
- balance-rr ou 0 — define uma política de balanceamento de carga e redundância baseada no algoritmo round-robin.
- active-backup ou 1 — define uma política em que uma interface está activa e caso esta falhe, se existir uma outra de backup, essa entra em funcionamento.
- balance-xor ou 2 — define uma política XOR para balanceamento de carga e redundância. Neste método, ao endereço MAC de origem é feito o XOR com o endereço MAC de destino, fazendo com que a mesma interface slave seja usada para o mesmo destino.
- broadcast ou 3 — Para todas as transmissões são utilizadas todas as interfaces slave.
- 802.3ad ou 4 — define uma política baseada no IEEE 802.ad dynamic link aggregation. Requer que o switch seja compatível com este standard.
- balance-tlb ou 5 — define uma política de transmissão com balanceamento de carga adaptativo. O tráfego é distribuído baseando-se na carga de cada uma das interfaces slave. O tráfego de entrada é processado pela respectiva interface. Se alguma destas falhar, uma outra interface slave assume o papel da interface slave que falhou.
- balance-alb ou 6 — neste modo o driver de bonding, intercepta ARP Replies, e substitui o endereço MAC de origem pelo endereço MAC de uma das interfaces slave, de forma que os clientes usem diferentes endereços MAC de destino, que correspondem às diferentes interfaces de rede presentes na máquina.
Este artigo tem mais de um ano
Em modo windows e no que diz respeito a servidores Hp Proliant, para fazer teaming, teria de usar aplicativos que nao vêem junto ao SO. Na altura em que precisei delas, esse aplicativo pagava-se uma licença de uso.
Acabámos por desistir.
Assim fica a questão. Para windows, o que é que se pode arranjar?
Em Windows Server 2012 R2, podes fazer teaming com facilidade sem recurso a aplicações de terceiros:
http://technet.microsoft.com/en-us/library/hh831648.aspx
Tenho isto a funcionar num Proliant G5 em modo agregado e tem funcionado 5*
Nos servidores IBM ( e já la vão alguns anos) usava mas com outra designação para fazer o mesmo ( loadbalancing). Teaming ou NIC Teaming.
Está Disponivel em SO desde o Windows Server 2003.
Em Servidores HP Proliant mais antigos optei por usar o teaming que era fornecido com o software da Intel :
http://www.intel.com/support/network/sb/cs-009747.htm
http://www.ehow.com/how_6715822_configure-windows-2003-servers-dell.html
Foi só a mim que o primeiro parágrafo soou chinês?
Pode ser uma excelente definição de “NIC Bounding”, mas com certeza não é para o comum dos mortais!
Verdade
Quem tiver interesse por esta técnica, quase de certeza que percebeu o primeiro parágrafo…
Acho eu…
A questão é, como é que eu sei se tenho interesse se não perceber a que se destina este tutorial?
Mas o Pedro já deu uma explicação mais detalhada em baixo!
eh eh eh…quando não se percebe…parece chinês 🙂
Eu explico por outras palavras:NIC Bounding é uma técnica que te permite juntar duas placas de rede para o mesmo fim. Ou seja, em primeiro ficas com redundâncias (em vez de uma placa tens duas…se uma falhar..a outra dá resposta). Depois o Throughput..ou seja, se cada placa suportar, por exemplo 100 Mbps…passas a ter 200 Mbps (na teoria).
Mais simples assim? Abraço
Gostei mais desta explicação haha, agora tenho a certeza 😉
Ah agora sim, muito obrigado!
Na verdade chama-se : “Link aggregation”. Usa-se em links de fibra para ligar entre AS’s de ISP’s. Se é que me percebes 😀
Quando digo ISP’s, tambem digo links internacionais, e transatlanticos.
Olá!
Genericamente, o que se consegue é uma maior bandwidth.
De facto pode ocorrer situações, em que se consegue um maior throughput através de multiplas streams. O throughput vai depender da latência ao ponto com o qual estamos a comunicar e do tamanho do pacotes enviados. Há situações em que colocar mais bandwidth não resolve o problema.
Exacto, mais bandwidth ou traduzindo para português…largura de banda. Mas na verdade, o que depois interessa é o Throughput que se consegue.
Exemplo…eu contratei uma ligação a 10 Mbps…no entanto, o Throughput (aquilo que se consegue na verdade) é na ordem dos 9 Mbps.
Muito bom tutorial! Parabéns ao autor!
Nunca fiz isso, mas como nunca tive necessidade, nunca fiz, já percebi como se faz agora 🙂
Atenção que na solução apresentada com modo ‘active-backup’ a única vantagem é a redundância, pois em cada instante apenas estará em uso, uma interface de rede. Para termos maior largura de banda teríamos de usar um dos outros modos, em que são usadas as duas placas ao mesmo tempo.
Outra nota interessante é que não estamos limitados a usar apenas duas interfaces slave. Podemos usar mais, se tivermos e quisermos. É só fazer a configuração individual de cada uma, definindo-as como ‘slaves’ do Bond0.
Correcto. Este modo apenas oferece redundância. E está certo que se podem utilizar mais que duas interfaces para esta configuração.
Isto também funcionaria com Wifis? Ou seja, ambas ligadas á mesma rede wireless e/ou uma ligada a uma rede e outra wifi ligada a outra rede?
Não, tem de ter o mesmo router.
Logo, terias de arranjar um AP com dois rádios.
Então quer dizer, que um tipo que peça a password do wifi emprestada a dois ou 3 vizinhos pode ter a bandwish aumentada duas ou 3 vezes? hum… dá para montar quase um backbone. lool
o que quer dizer que seriam necessarias mais duas ou 3 placas wifi? Certo?
Parabéns pelo artigo!
Esse esquema funcionaria como um roteador de load balance?
E quanto a casos de uso?
Assumindo um utilizador numa network caseira com 2 NIC de 1GB que joga online onde a latência é um factor crucial, em que medida o NIC bonding ajuda?
Assumindo um utilizador com um router com portas 1GB com 2 desktop com 2 NIC de 1GB, em que medida o NIC bonding ajuda?
É claro que NIC bonding é excelente num cenário empresarial em que há 2 linhas, mas para o utilizador comum (IMHO 99% dos utilizadores do PPlware) em que é que o NIC bonding contribui?
Em ambiente de datacenter de pequenas empresas é muito utilizado para ligar servidores em modo de redundância, ou alta disponibilidade. Na pratica, e simplificando, o que se faz é juntar várias placas de rede como se fossem apenas uma. Por exemplo, um servidor que tenha 4 portas de rede de 1 Gbit, juntam-se as 4 numa que daria, grosso modo, 4 Gbit. Se tivermos o segundo servidor com a mesma configuração, e tudo ligado a um bom switch, a troca de informação entre os 2 servidores será feita através de um link de 4 Gbit. Também é util para NAS, Storage servers, etc..
Muito bem Luís, para quem quer implementar está bastante compreensível.
qual a diferença disto e do bridge? ou é a mesma coisa?