Bonding ethernet se utiliza para combinar varios interfaces de red en uno solo, para ser usados como redundancia o para aumentar el ancho de banda disponible.
Para usar bonding ethernet en linux, lo primero que hay que hacer es tener soporte en el kernel y cargar el módulo correspondiente si no está cargado, por ejemplo:
# modprobe bonding mode=balance-alb miimon=100
# modprobe e100
También hay que tener instalado ifenslave, que en debian es tan sencillo como:
# apt-get install ifenslave
Y después, configurar el interfaz de bonding y añadir los interfaces físicos que necesitemos:
# ifconfig bond0 192.168.1.1 netmask 255.255.255.0 up
# ifenslave bond0 eth0
# ifenslave bond0 eth1
Hay que tener en cuenta que al cargar el módulo hemos seleccionado el tipo de bonding, que debe ser uno de los siguientes:
- balance-rr
- Se reparte el tráfico en modo Robin Round, un paquete para cada interfaz contínuamente
- active-backup
- Solo un interfaz está activo, y se produce el cambio de activo al otro interfaz cuando el primero falla
- balance-xor
- Balanceo de carga entre interfaces y tolerancia a fallos, en base a una política de hash
- 802.3ad
- Se balancea la carga entre grupos de interfaces, que son creados en base a sus configuración de velocidad y duplex
- balance-tlb
- El tráfico de salida se reparte en base a la «carga» de cada interfaz, el tráfico de entrada se recibe en uno de los interfaces
- balance-alb
- Como el anterior pero también reparte el tráfico de entrada
Al cargar el módulo también se pasa el parámetro miimon, que especifica cada cuantos milisegundos se comprueba el estado de cada uno de los interfaces que pertenece al bonding.
Para comprobar el estado de los interfaces de bonding, se debe mirar los ficheros contenidos en el directorio, por ejemplo:
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: 2.6.1 (October 29, 2004)
Bonding Mode: load balancing (round-robin)
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 1000
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Link Failure Count: 1
Slave Interface: eth0
MII Status: up
Link Failure Count: 1