Trunk de portas ethernet no Linux

Com o bonding é possivel transformar duas portas ethernet 100Mbits em uma porta (bond0) de 200Mbits no Linux. Essa mesma tecnologia é chamada de smarttrunk pela Enterays e Link aggregation pela Cisco. Pode-se utilizar o bonding em várias situações como por exemplo a Alta Disponibilidade (link entre as duas máquinas). As configurações apresentadas abaixo, foram testadas em um RedHat Enterprise 2.1, mas também são passados as linhas de comando para ser configurada em qualquer distribuição.

<update>
Foi publicado um artigo na Howto Forge que ensina a configurar o bonding no Debian.
</update>

<update2>
Esta técnica também é conhecida por Link Aggregation e é definida pela IEEE 802.3ad.
</update2>

O Kernel deverá ter suporte ao Bonding (Network device support -> Bonding driver support na compilação)

No /etc/modules.conf insira as linhas:
Alias bond0 bonding
probeall bond0 eth0 eth1 bonding # para carregar os módulos das outras eth antes de montar o bond
options bond0 miimon=100 updelay=200 downdelay=200

No /etc/sysconfig/network-scripts/ifcfg-bond0 insira:
DEVICE=bond0
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

Todas as interfaces que pretencerão ao balanceamento deverão ter seu /etc/sysconfig/network-scripts/ifcfg-ethX definidos assim:
DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=no
BOOTPROTO=none

Deve-se indicar qual interface será escrava (SLAVE=yes) nesse caso a interface eth0 sera master e a eth1 devera ser slave.

Caso a distribuição não suporte o parametro SLAVE e MASTER no ifcfg-ethx, a configuração manual pode ser configurada desta maneira:

Sem inserção de módulos:
# /sbin/ifconfig bond0 192.168.1.1 up
# /sbin/ifenslave bond0 eth0
# /sbin/ifenslave bond0 eth1

Com inserção de módulos:
# /sbin/insmod bonding
# /sbin/ifconfig bond0 up
# /sbin/ifenslave bond0 eth0
# /sbin/ifenslave bond0 eth1
# /sbin/modprobe bonding miimon=100 updelay=200 downdelay=200
# /sbin/ifconfig bond0 192.168.1.1 netmask 255.255.255.0
# /sbin/ifconfig bond0 up
# /sbin/route add default gw 192.168.1.254

Opções do módulo

  • mode= Possiveis valores são: 0 (politica de round-robing, default) , 1 (Politica de backup ativo), e 2 (XOR);
  • miimon= Utilize um valor inteiro para a frequência (em ms) do monitoramento de link MII. Valor igual a zero (padrão) significa que o monitoramento do link será desabilitado. Um bom valor caso você queira utilizar o monitoramento é 100;
  • downdelay= Utilize um valor inteiro para definir o tempo de atraso para desabilitado o link após ser detectada uma falha (em ms) . Deve ser multiplo de miimon, sendo o valor padrão zero;
  • updelay= Utilize um valor inteiro para definir o tempo de atraso para habilitar o link após ser detectado o estado de “link up” (em ms) . Deve ser multiplo de miimon, sendo o valor padrão zero;
  • arp_interval= Utilize um valor inteiro para a frequência do monitoramento arp (em ms). o Valor padrão é zero e significa que o monitoramento arp esta desabilitado. Este campo só é válido em modo active_backup;
  • arp_ip_target= Um endereço IP para utilizar quando o arp_interval é > 0. Este é o alvo da requisição arp que determina a saúde do link com o alvo. Especifique este valor no formato ddd.ddd.ddd.ddd.

Acho que é isso… espero ter ajudo… Um Abraço, Neto.

Posts relacionados:

12 thoughts on “Trunk de portas ethernet no Linux

  1. Neto gostei deste artigo mas tenho algumas duvidas:

    Tenho um link de radio ponto a ponto que da uns 2.0 Mb de banda ele é de 11 MB mas no frigir so da uns 2.0 MB. O Link esta interligado em modo Bridge.

    Tenho um modem ADSL no mesmo local ambos em cada ponta. Penso em ligar um tunel pela internet fechando o mesmo link via ADSL.

    Pergunta:

    E possivel fazer um trunk destes em cada ponta para transmitir dados em ambas as direções como forma de ter uma rota alternativa.

    Gostaria de receber uma sugestão sua

    Desde ja agradeço

    Jairo Jarbas F. Lopes
    teleseg@…
    45 xxxx-xxxx
    Cascavel – Pr

  2. Jairo, deixa eu ver se entendi:

    Você possui dois links, um via rádio e um via ADSL entre dois pontos. Sua intenção é criar um trunk entre esses dois links para ampliar a capacidade de transferência entre os dois pontos.

    Bem, acredito que não seja possível utilizar esta técnica na sua situação, uma vez que o bonding trabalha na camada 2 do modelo OSI, ou seja, você necessita de uma mídia direta que interligue as duas extremidades. Caso você possuisse duas ligações de rádio entre as pontas, e dependendo do equipamento utilizado, ai sim poderiamos utilizar esta técnica.

    O que você pode estar fazendo é no gateway de cada ponta (que acredito ser linux), criar regras de roteamento e balanceamento de carga entre os links, para atender a troca de informações entre as extremidades e o roteamento para “fora” caso esteja acessando algum endereço externo.

    Espero ter ajudado.
    Neto.

  3. Caro Neto,
    Tenho dois link´s ADSL e quero uní-los para obter uma performance de 2mb. O trunk seria a tecnologia mais indicada? Utilizo servidor na distruição Debian.
    Mitoso Junior

  4. Mitoso, O trunk é indicado para ligar duas máquinas entre si ou uma máquina em um switch (desde que este suporte trunk) ampliando assim o troughtput entre os servidores ou entre o servidor e sua rede (vide update no artigo). No caso de ADSL isto não funcionaria. Você terá que efetuar um balanceamento da saída entre os dois ADSLs usando basicamento o netfilter. Não é um processo muito trivial…

  5. olha quero somar dois links um esta na faixa de 200.000.000.1 e outro em 192.168.0.1 como faço para somar os dois ou seja quando requisitar uma pagina na interface bond0 sair pela eth0 e pela eth1 …

  6. Gostaria de somar 3 links adsl no fedora com o bond0. Isso é possivel? Obrigado!

  7. Quero fazer trunk em um servidor linux porém com uma idéia reversa a esse tipo de trunk mostrado aqui: quero permitir que 1 interface receba o tráfego de 2 vlans. Ou seja, minha interface deve reponder e enviar tráfego por 2 ips distintos. Já utilizei intefaces virtuais, porém sem sucesso. O gateway desse servidor é um equipamento Cisco

  8. Pingback: load balance com bonding ? - P?gina 2 - Under-Linux.org

  9. Olá José,

    Só para esclarecer uma dúvida: onde trabalho utilizamos Enterasys e costumamos chamar de trunk port ou Q-Trunk ou Trunk de Vlan a configuração de uma porta do switch para permitir que sejam trafegadas tags de mais de uma vlan naquela porta. Acredito que a terminologia correta seria “Link Aggregation”, ou seja, o termo utilizado pela Enterasys e pela Cisco para a configuração a ser realizada quando desejamos “agregar” a velocidade de duas ou mais portas em um link.

    Abraço,

    Marcelo Barragan.

  10. Olá José,

    Achei muito interessante o seu artigo, e gostaria apenas de esclarecer uma dúvida: onde trabalho utilizamos Enterasys e costumamos chamar de trunk port ou Q-Trunk ou Trunk de Vlan a configuração de uma porta do switch para permitir que sejam trafegadas tags de mais de uma vlan naquela porta. Acredito que a terminologia correta seria “Link Aggregation”, ou seja, o termo utilizado pela Enterasys e pela Cisco para a configuração a ser realizada quando desejamos “agregar” a velocidade de duas ou mais portas em um link.
    Desculpe-me se eu estiver equivocado!

    Abraço,

    Marcelo Barragan.

  11. Pingback: Link Aggregation « KiD LiNuX

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>