Configurar o bonding em OpenSuse 10.2

O driver de bonding é um método em Linux de agregar várias interfaces físicas de rede numa única interface lógica. O melhor que este método tem é que as interfaces de rede não têm que ser do mesmo fabricante, pois alguns fabricantes fornecem drivers para Linux para realizar esta tarefa.

O comportamento da interface lógica depende do método configurado. É aconselhado configurar este driver como módulo, pois neste momento é a única forma de passar argumentos ao módulo e configurar diversas interfaces.

Para configurar o bonding é necessário que esteja instalado o utilitário ifenslave, pois é através deste que são agregadas as placas de rede. Este utilitário é fornecido juntamento com as sources do kernel, e encontra-se em Documentation/networking/ifenslave.c.

Em OpenSuSE 10.2, este utilitário já se encontra instalado e não é necessário executar os passos descritos em baixo. É necessário também que o kernel tenha sido compilado com suporte de bonding.

Para instalar:

    # gcc -Wall -O -I/usr/src/linux/include ifenslave.c -o ifenslave
    # cp ifenslave /sbin/ifenslave

Se as sources do kernel não estiverem instaladas em /usr/src/linux então, substituir o caminho.

Agora que temos o programa instalado, vamos configurar o OpenSuSE 10.2

Ambiente testado:

  • OpenSuSE 10.2
  • Kernel 2.6.18.8-0.5-bigsmp

Em primeiro lugar, vamos ter a certeza que o modulo é carregado sempre que reiniciar-mos o nosso sistema operativo. Para isso, editamos o ficheiro /etc/modprob.conf.local que é o local mais indicado para colocar-mos os nossos modulos.

Um pouco de explicação do bonding

O bonding, acima de tudo, vais-nos permitir configurar o computador com uma politica chamada 802.3ad. Também conhecido como Link Aggregation, permite agrupar diversas portas ethernet em paralelo, permitindo assim aumentar a velocidade para além dos limites dados por apenas uma porta ethernet, aumentando também a disponibilidade criada pela redundância.

Existem diversos modos de operação, sendo eles:

  • 0 – Balanceamento (round robin): Politica por defeito – envia os pacotes sequencialmente, desde o primeiro "escravo" até ao ultimo.
  • 1 – Backup activo: Apenas um "escravo" está activo. Um escravo diferente entra em actividade apenas se o "escravo" activo falhar. Fornece tolerância a falhas.
  • 2 – Politica XOR: Transmite baseado na politica de hash selecionada. Este modo fornece tolerância a falhas e balanceamento.
  • 3 – Broadcast: Transmite tudo em todos os "escravos". Este modo fornece tolerância a falhas.
  • 4 – 802.3ad – IEEE 802.3ad Dynamic Link Aggregation: Cria grupos agregados que partilham a mesma velocidade e modo. Utiliza todos os "escravos" segundo a especificação 802.3ad

Editar o ficheiro /etc/modprob.conf.local e adicionar as seguintes linhas:

  • alias bond0 bonding
  • options bond0 mode=4 miimon=100

Neste caso, optou-se pelo modo 4 (802.3ad), mas que, para que funcione, é necessário ter as interfaces ligadas a um switch que suporte este protocolo, porque senão não irá funcionar.

Após editar o ficheiro, vamos criar um ficheiro de configuração para a interface bond0. Entrar na directoria /etc/sysconfig/network. Copiar um ficheiro de uma interface já configurada e editar o ficheiro para realizar as alterações:

  • cp ifcfg-eth-XXXX ifcfg-bond0

Editamos o ficheiro recentemente criado e alteramos as opções:

vi ifcfg-bond0

opções de rede (alterar consoante as necessidades):

    BOOTPROTO=’static’
    BROADCAST=’192.168.100.255′
    IPADDR=’192.168.100.2′
    NETMASK=’255.255.255.0′
    NETWORK=’192.168.100.0′
    STARTMODE=’onboot’

opções do bonding

    BONDING_MASTER=’yes’
    BONDING_MODULE_OPTS=’mode=4 miimon=100′

listagem das interfaces "escravas"
    BONDING_SLAVE0=’eth0′
    BONDING_SLAVE1=’eth1′

Guardamos as alterações. Para o seguinte passo temos duas opções. Ou removemos os ficheiros de configuração das interfaces ou renomeamos para outro nome para que não sejam interpretados no proximo reboot.

  • rm -f ifcfg-eth-bus-XXXX:XX:XX.X (remover para todas as interfaces)

Agora, basta testar a nossa configuração:

  • ifdown ethX (fazer para todas as interfaces existentes e configuradas)
  • ifup bond0

A partir deste momento, temos a nossa interface bond0 configurada e em funcionamento. Resta neste momento adicionar a rota para a nossa gateway. Para testes, podemos executar na consola, mas é aconselhado através do YAST adicionar a rota permanentemente.

  • route add default gw 192.168.100.254 netmask 255.255.255.0

Verificar o nosso ficheiro /etc/resolv.conf e verificar se os servidores de nomes e o nome da rede estão bem configurados. Após garantirmos, testamos com um ping.

/sbin/ifconfig

bond0     Link encap:Ethernet  HWaddr 00:30:05:1B:05:3A
          inet addr:192.168.100.2  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::230:5ff:fe1b:53a/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:3538 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2544 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2115556 (2.0 Mb)  TX bytes:290026 (283.2 Kb)

eth0      Link encap:Ethernet  HWaddr 00:30:05:1B:05:3A
          inet6 addr: fe80::230:5ff:fe1b:53a/64 Scope:Link
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:1237 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2059 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:130279 (127.2 Kb)  TX bytes:236566 (231.0 Kb)

eth1      Link encap:Ethernet  HWaddr 00:30:05:1B:05:3A
          inet6 addr: fe80::230:5ff:fe1b:53a/64 Scope:Link
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:2301 errors:0 dropped:0 overruns:0 frame:0
          TX packets:485 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1985277 (1.8 Mb)  TX bytes:53460 (52.2 Kb)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:111 errors:0 dropped:0 overruns:0 frame:0
          TX packets:111 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:9896 (9.6 Kb)  TX bytes:9896 (9.6 Kb)

O output em cima mostra as interfaces configuradas. reparem que apenas a interface bond0 contém um IP definido (reparem nos MAC Address).

Possíveis problemas

Após um reboot à máquina, é possivel que surjam alguns problemas. Aqui ficam algumas soluções que podem tentar caso isso se verifique.

Ocasionalmente foi experimentado que algumas placas de rede não arrancam depois de um reboot. Para prevenir, os modulos dessas placas devem ser colocados em memoria mais cedo. Para tal, editar o ficheiro /etc/sysconfig/kernel, procurar a linha MODULES_LOADED_ON_BOOT="" e adicionar os modulos das nossas placas de rede. Realizar novo reboot.

Caso não resolva a alteração descrita em cima, retirar as alterações e editar a seguinte linha (no mesmo ficheiro): INITRD_MODULES="(lista de modulos)"  e acrescentar os modulos das placas. Executar o comando mkinitrd e realizar novo reboot.

Outro processo que também pode ajudar é alterar o seguinte ficheiro: /etc/sysconfig/network/config, procurar a linha WAIT_FOR_INTERFACES="XX" onde XX será o tempo em segundos.

Após isto tudo, se mesmo assim não resolver, vejam o ficheiro /var/log/messages, identificar algum erro que possa surgir e google for it.

Leave a Reply

Your email address will not be published. Required fields are marked *