Ethernet Bonding
|
Ethernet Bonding El ‘bonding’ de tarjetas de red nos permite utilizar múltiples tarjetas como si tuviéramos una sola. Se puede utilizar para hacer balanceo de carga, agregación de enlaces y ancho de banda, tolerancia a fallos.
Historia
El controlador bonding, originalmente creado por Donald Becker, está incluido en prácticamente todas las distribuciones de GNU/Linux y permite sumar las capacidades de varias interfaces físicas de red con objeto de crear una interfaz lógica. Esto se lleva a cabo con el objeto de contar con redundancia o bien balanceo de carga.
Modos de Bonding
*modo 0 o balance-rr : Utiliza el método Round-Robin entre las tarjetas de red que forman el enlace.Es decir, transmite los paquetes en orden secuencial desde la primera tarjeta esclava hasta la última,y entonces vuelve a empezar por la primera de nuevo. Esta opción ofrece balanceo de carga y tolerancia a fallos. *modo 1 o active-backup : Sólo una de las tarjetas esclavas está activa. Si la tarjeta activa falla, otra tarjeta se vuelve activa y recibe el tráfico. Esta opción ofrece tolerancia a fallos. *modo 2 o balance-xor : Se aplica una política XOR basada en dirección MAC origen XOR dirección MAC destino. De esta forma se selecciona la misma tarjeta esclava para cada MAC destino. Esta opción ofrece balanceo de carga y tolerancia a fallos. *modo 3 o broadcast : Se retransmiten todos los paquetes a todas las tarjetas esclavas. Esta opción ofrece tolerancia a fallos. *modo 4 o 802.3ad : 802.3ad nos permite agregar varios enlaces para conseguir un mayor ancho de banda. Todos los enlaces deben tener la misma velocidad y ancho de banda. Es necesario equipamiento de red que soporte 802.3ad. En redes esto se conoce como Port Trunking y en Cisco como LACP. *modo 5 o balance-tlb : El tráfico saliente se distribuye según la carga de trabajo en cada tarjeta esclava *modo 6 o balance-alb : Incluye el balanceo del tráfico saliente ( modo 5 ) más el balanceo del tráfico entrante
Ejemplo de Configuración Básica
Si tenemos un sistema con cuatro tarjetas de red ( eth0 a eth3 ) la configuración necesaria para configurar el bonding es la siguiente : Creamos el archivo /etc/modproble.d/bonding.confcon el siguiente contenido : alias bond0 bonding
La configuración de las tarjetas esclavas estará en /etc/sysconfig/network-scripts/ifcfg-ethX y será como la siguiente
DEVICE=ethX MACADDR=xx:xx:xx:xx:xx:xx <-- la que sea en cada caso ONBOOT=yes BOOTPROTO=none MASTER=bond0 SLAVE=yes
Y para la tarjeta bond0 en /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 ONBOOT=yes BOOTPROTO=none IPADDR=10.0.0.3 NETMASK=255.255.255.0 NETWORK=10.0.0.0 GATEWAY=10.0.0.1 BONDING_OPTS="mode=0 miimon=100"
El parámetro miimon indica cada cuantos milisegundos se comprueba el estado de las tarjetas activas. Para comprobar que el bonding funciona hago lo siguiente. En una máquina lanzo un ping a la ip de la tarjeta bond0 y en el equipo con el bonding ejecuto el comando :
watch -d -n1 netstat -i
Para que nos arroje una aplicacion llamada Kernel Interface Table y luego con :
Con el parámetro -d veremos resaltado con gris los cambios que ocurran, en este caso el número de paquetes que se envían y reciben. Y veremos como se van alternando las siguientes tarjetas de red en la recepción y envío de paquetes según el algoritmo indicado en el archivo ifcfg-bond0 Si queremos quitar una de las tarjetas de red del enlace bond0 tenemos que ejecutar el comando
ifenslave -d bond0 ethX
Y veremos como los nuevos paquetes se distribuyen entre el resto de tarjetas de red disponibles.