El Bonding (también conocido como teaming, y en switching como trunking) es, básicamente, la unión de varias interfaces de red para que trabajen como una única interfaz lógica. Esta configuración permite establecer configuraciones de activo-pasivo, balanceo de carga o crear un agregado de interfaces con un ancho de banda que supone la suma del de todas las interfaces asignadas.
Antes de comenzar la configuración, nos aseguramos de tener cargado el módulo bonding:
# lsmod | grep bonding bonding 109558 0 ipv6 264641 29 bonding,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6,cnic
En caso de no estar lo cargamos:
# modprobe bonding
Tenemos que configurar unos parámetros de kernel para añadir esta nueva interfaz/funcionalidad:
# vi /etc/modprobe.conf
alias bond0 bonding options bond0 mode=6 miimon=100
El valor mode, especificado en 6 indica que el tipo de bonding va a ser de balanceo de carga. Los posibles valores son de 0 a 6:
- 0: round robin policy, defecto
- 1: active backup policy
- 2: XOR
- 3: brodcast
- 4: 802.3ad
- 5: balance-tlb
- 6: balance-alb
El valor miimon indica con un valor entero la frecuencia de monitorización del link. Para conocer todos estos parámetros en condiciones os recomiendo revisar la documentación del kernel sobre bonding
Ahora vamos a crear el fichero de configuración para la interfaz Bond0, que será la que en nuestro caso creará el bonding de eth0 y eth1. El fichero de configuración se crea en la misma ruta que el resto /etc/sysconfig/network-scripts/ifcfg-XXX. Este fichero es el que contendrá la configuración IP, NETMASK, etc.
# vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 ONBOOT=yes IPADDR=192.168.1.190 NETMASK=255.255.255.0 BROADCAST=192.168.1.255 NETWORK=192.168.1.0 USERCTL=no BOOTPROTO=none
Ahora configuramos eth0 y eth1, en ellas no establecemos ninguna configuración IP, sino que especificamos que es una interfaz esclavo (slave) y que su master es bond0:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 ONBOOT=yes USERCTL=no BOOTPROTO=none MASTER=bond0 SLAVE=yes
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1 ONBOOT=yes USERCTL=no BOOTPROTO=none MASTER=bond0 SLAVE=yes
Una vez configurado, reiniciamos el servicio de red:
# /etc/init.d/network restart
Si todo ha ido bien ya veremos la interfaz bond0 en ifconfig:
# ifconfig bond0 Link encap:Ethernet HWaddr 08:00:27:00:C8:7A inet addr:192.168.1.190 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe00:c87a/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:1029 errors:0 dropped:0 overruns:0 frame:0 TX packets:1198 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:101972 (99.5 KiB) TX bytes:182347 (178.0 KiB) eth0 Link encap:Ethernet HWaddr 08:00:27:00:C8:7A UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:946 errors:0 dropped:0 overruns:0 frame:0 TX packets:1144 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:90003 (87.8 KiB) TX bytes:175136 (171.0 KiB) Interrupt:11 Base address:0xc020 eth1 Link encap:Ethernet HWaddr 08:00:27:00:C8:7A UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:94 errors:0 dropped:0 overruns:0 frame:0 TX packets:59 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:12695 (12.3 KiB) TX bytes:8325 (8.1 KiB) Interrupt:10 Base address:0xc060 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:1241 errors:0 dropped:0 overruns:0 frame:0 TX packets:1241 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:170253 (166.2 KiB) TX bytes:170253 (166.2 KiB)
Podemos monitorizar el estado del bonding desde /proc/net/bonding/bond0:
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) Bonding Mode: load balancing (round-robin) MII Status: up MII Polling Interval (ms): 0 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth0 MII Status: up Speed: 100 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:00:c8:7a Slave queue ID: 0 Slave Interface: eth1 MII Status: up Speed: 100 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:fd:48:08 Slave queue ID: 0