martes, 8 de febrero de 2011

Bondades del bonding

¿ Dispones en tu equipo de 2 tarjetas de red ?. ¿ Te gustaría sacarle partido a la ethernet que tienes integrada en la placa base ?
Haz bonding.
Con el término bonding entendemos la unión de 2 interfaces de red como si fuese un grupo, de modo que podemos hacer que actúen en conjunto, o bien en balanceo de carga, o una activa y otra de backup... etc.

La implementación es bastante sencilla y en este caso lo explico para Fedora aunque en otras distros de Linux es igual o muy similar. En Ubuntu ver ifenslave

Hoy en día creo que todas, o casi todas las distros incluyen el módulo del kernel necesario para levantar una interfaz "bond". EL módulo se llama como no, bonding. Este módulo por defecto no se carga en el inicio del kernel, pero si existen los ficheros de configuración para el bonding de las tarjetas y una adecuada definición, al arrancar  el servicio de red,  el módulo se cargará en memoria. El comportamiento o modo de operación del interfaz de bonding se hace asignando unos parámetros en la  carga del módulo. Esta parametrización se realiza en el  archivo de configuración del módulo, que estará ubicado bajo /etc/modprobe.d (o directamente en /etc/modprobe.conf si en  tu SO se encuentra).

Ejemplo
Supongamos tengo 2 ethernet , eth0 y eth1.
Primero definimos la interfaz bond  que agrupará las 2 tarjetas. La llamaremos bond0




mihost@root#vi /etc/sysconfig/network-scripts/ifcfg-bond0


El prefijo ifcfg- es la nomenclatura para la definición de los fichero de configuracion de las interfaces)



NBOOT=yes
DEVICE=bond0
IPADDR=192.168.50.210
NETMASK=255.255.255.0
GATEWAY=192.168.50.1
BOOTPROTO=none
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=no 

Ajustar los valores a las IPs que tengais de router y a vuestra red

Luego editamos los ficheros de configuración de eth0 y eth1 para que queden similares a:

mihost@root#vi /etc/sysconfig/network-scripts/ifcfg-eth0


SLAVE=yes 
MASTER=bond0
 ONBOOT=yes 
TYPE=Ethernet 
DEVICE=eth0 
BOOTPROTO=none 
PEERDNS=yes 
USERCTL=no 
IPV6INIT=no



mihost@root#vi /etc/sysconfig/network-scripts/ifcfg-eth1


SLAVE=yes
MASTER=bond0
ONBOOT=yes
TYPE=Ethernet
DEVICE=eth1
BOOTPROTO=none

Finalmente agregamos un ficherito de configuración para que en el arranque el módulo bondig tome sus parámetros, en este caso he elegido el modo active-backup (o mode 1), donde el tráfico pasa por la primera tarjeta disponible quedando la segunda como backup en el caso de fallo. Tambén se prodría haber configurado para que las dos actúen a la vez (mode 4 o link-aggregation) o en balanceo de carga por Round Robin (mode 0). Mas info tirando de man o aquí

mihost@root#vi /etc/modprobe.d/netbond.conf

alias bond0 bonding
options bonding miimon=100 mode=active-backup primary=eth1


Y ya está. Reiniciais los servicios de red con service network restart.... y al hacer ifconfig veréis un bonito interfaz bond0.

Podréis seguir el estado  del interfaz en el fichero /proc/net/bonding/bond0




3 comentarios:

  1. Te iba a preguntar si has investigado el bonding pero con tarjetas WIFI. Por ejemplo, tienes dos conexiones a internet y dos tarjetas WIFI configuradas de tal manera que puedes aprovechar los dos conexiones a internet.
    Estuve haciendo pruebas el año pasado y me estanque en dos puntos. El primero es que el chip de las tarjetas tiene que soportar bonding. El segundo es la dificultad de gestionar el tráfico entre ambas tarjetas. Para este segundo punto pienso que es más fácil segregar tipo de tráfico por tarjeta X. Por ejemplo, tráfico http por tarjeta A y tráfico P2P por tarjeta B.

    ResponderEliminar
  2. Hola!!

    Pues no, no he investigado. En principio el estándar 802.1ax (ver http://standards.ieee.org/getieee802/download/802.1AX-2008.pdf) de agregación de tarjetas está definido según el estándar ethernet 802.3, pero es posible como comentas que si el chipset soporte bonding pudiera hacerse.
    Donde veo la dificultad es que en la comunicación wireless la trama ethernet es distinta y no sé si esto puede ser manejado por el Link aggregation
    Lo investigaré. Gracias por el aporte

    ResponderEliminar
  3. Por aqui leo hay un "task" en curso del IEEE para el desarrollo del 802.11ad :
    http://www.ieee802.org/11/Reports/tgad_update.htm

    ResponderEliminar