Para aplicar el Channel Bonding primero instalamos un paquete llamado “ifenslave”, que nos permitirá vincular las tarjetas físicas en una virtual, esto de la siguiente manera:
1. Abrimos la consola de comandos
2. Ingresamos como usuario privilegiado con la instrucción sudo su y luego ingresando la contraseña de nuestro usuario.
3. Finalmente ejecutamos el comando apt-get install ifenslave.
4. Como siguiente paso, activamos nuestro channel Bonding ejecutando el comando: modprobe bonding
Con el comando modinfo bonding se nos desplega toda la información y parámetros asociados al bonding.
# modinfo bonding
filename: /lib/modules/2.6.28-14-server/kernel/drivers/net/bonding/bonding.ko
author: Thomas Davis, tadavis@lbl.gov and many others
description: Ethernet Channel Bonding Driver, v3.3.0
version: 3.3.0
license: GPL
srcversion: CA9CCB77B640BAD1A0358AC
depends:
vermagic: 2.6.28-14-server SMP mod_unload modversions
parm: max_bonds:Max number of bonded devices (int)
parm: num_grat_arp:Number of gratuitous ARP packets to send on failover event (int)
parm: miimon:Link check interval in milliseconds (int)
parm: updelay:Delay before considering link up, in milliseconds (int)
parm: downdelay:Delay before considering link down, in milliseconds (int)
parm: use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int)
parm: mode:Mode of operation : 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp)
parm: primary:Primary network device to use (charp)
parm: lacp_rate:LACPDU tx rate to request from 802.3ad partner (slow/fast) (charp)
parm: xmit_hash_policy:XOR hashing method: 0 for layer 2 (default), 1 for layer 3+4 (charp)
parm: arp_interval:arp interval in milliseconds (int)
parm: arp_ip_target:arp targets in n.n.n.n form (array of charp)
parm: arp_validate:validate src/dst of ARP probes: none (default), active, backup or all (charp)
parm: fail_over_mac:For active-backup, do not set all slaves to the same MAC. none (default), active or follow (charp)
A continuación vemos en nuestra consola de comandos las interfaces de red que tenemos activas, con el comando ifconfig, en ellas aún no se nota nada nuevo. Ahora vamos a configurar nuestras interfaces de red para crear el bonding channel de la siguiente manera:
Editamos el archivo que contiene la configuración de nuestras interfaces con el comando
nano /etc/network/interfaces
Escribimos lo siguiente, no olvidando cambiar eth0 y eth1 por sus interfaces de red.
Damos Ctrl+O y luego Enter para guardar y regresamos a nuestra consola de comandos (Ctrl+x).
Básicamente lo que hicimos fue crear una interfaz virtual llamada “bond0”, que nos servirá como maestra a la cual estarán vinculadas como “esclavos” las interfaces físicas que tenemos activas.
La opción “bond_miimon 100” nos sirve para indicar cada cuanto tiempo en milisegundos se estará verificando las interfaces que se encuentran activas.
Para elegir modo de vinculación agregamos a la configuración de nuestra interfaz maestra la opción “bond_mode” seguido del tipo de vinculación que deseemos, nosotros usamos la opción que trae por defecto que es la opción 0 (round robin); esto es completamente dependiente de nuestra topología de red e intereses. Por lo tanto disponemos de varias opciones:
MODOS DE OPERACION
balance-rr (Round-robin policy) (por defecto) (modo 0): Transmitirá paquetes secuencialmente en todas las tarjetas de red pertenecientes al bonding, partiendo desde el primer dispositivo esclavo hasta el último. Uso: provee balanceo y alta disponibilidad.
Active-backup (Active-backup policy) (activo-pasivo) (modo 1):Solo uno de los esclavos del bonding envía y recibe paquetes. Uso: solo alta disponibilidad.
Balance-xor (XOR policy - modo 2): Se alterna la transmisión de paquetes entre los esclavos del bonding. Uso: provee balanceo y alta disponibilidad.
Broadcast policy (modo 3): Transmite todas las tramas por todas las interfaces slave. Este modo nos ofrece tolerancia a fallos. Uso: solo alta disponibilidad.
IEEE 802.3ad Dynamic link aggregation (modo 4): Crea grupos que comparten la misma velocidad y duplex. Las tarjetas deben soportar IEEE 802.3ad. Uso: alta disponibilidad y balanceo de carga.
Balance-tlb (Adaptive transmit load balancing - modo 5): Balancea todo el tráfico de salida, todo el tráfico de entrada es recibido por el esclavo activo. Uso: alta disponibilidad y balanceo de carga.
Balance-alb (Adaptive load balancing): Básicamente hace lo mismo que el mode5, pero también balancea el trafico de entrada. Uso: alta disponibilidad y balanceo de carga.
Ahora reiniciamos el servicio de networking de la computadora, para ello escribimos en el terminal /etc/init.d/networking restart. Al visualizar las interfaces de red con ifconfig se nos debe de mostrar una vista como la siguiente:
Y damos por finalizada la configuración de nuestro Channel Bonding.
IMPORTANTE:
De acuerdo a la imagen, se puede observar que tanto la interfaz bond0 y las interfaces físicas (eth0, eth1) comparten la misma dirección MAC, esto debido a que el bonding toma la dirección MAC del primer dispositivo y se la colca a todos los pertenecientes al channel bonding para evitar conflictos durante la comunicación. Esta es una práctica segura, pues aunque se desconecte el primer dispositivo de red, el bonding seguirá funcionando con la misma dirección MAC.
Realizamos la prueba de fuego: Reiniciar la pc.
Si ejecutamos el comando “dmesg” veremos los mensajes del kernel al iniciar el sistema, cuando el bonding es cargado se muestran mensajes como los siguientes:
# dmesg
(...)
[ 469.467868] ADDRCONF(NETDEV_UP): bond0: link is not ready
[ 469.541188] bonding: bond0: enslaving eth0 as a backup interface with a down link.
[ 469.550127] e100: eth0: e100_watchdog: link up, 100Mbps, full-duplex
[ 469.570291] bonding: bond0: link status definitely up for interface eth0.
[ 469.570295] bonding: bond0: making interface eth0 the new active one.
[ 469.570320] bonding: bond0: first active interface up!
[ 469.570502] ADDRCONF(NETDEV_CHANGE): bond0: link becomes ready
[ 469.600106] eth1: link up, 100Mbps, full-duplex, lpa 0x45E1
[ 469.600296] bonding: bond0: enslaving eth1 as a backup interface with an up link.
[ 480.260019] bond0: no IPv6 routers present
(...)
Para comprobar que todo ha funcionado correctamente se ha hecho uso de una herramienta llamada iperf. La cual nos ayudará a medir el ancho de banda entre dos equipos, para instalarla nuevamente ejecutamos como usuario privilegiado en la consola de comandos: apt-get install iperf
Conectamos nuestra computadora a otra en la cual también se haya instalado iperf y esté configurado con cannel bonding y ejecutamos la instrucción:
iperf -s (coloca nuestro pc en modo servidor para escucha de clientes iperf)
En el otro host ejecutar el comando:
iperf –c
Si todo va bien en seguida nos mostrará el ancho de banda de nuestra red y la velocidad de transferencia. Cabe mencionar que tanto iperf como bonding son herramientas extensas y en el presente documento se ha hecho referencia a las que se necesitaban para cumplir el objetivo previsto.
WEBOGRAFIA:
http://tuxjm.net/docs/Configuracion_Canal_Linux_Bonding_Active-Backup_en_Ubuntu_Server/
https://help.ubuntu.com/community/UbuntuBonding
http://www.estrellateyarde.org/so/channel-bonding-en-linux
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=nic_bonding_con_ifenslave_en_ubuntu
PARA WINDOWS
La idea principal es la misma, configurar ambas interfaces para vincularlas y hacerlas parecer como un solo dispositivo para aumentar el ancho de banda y ofrecer redundancia. El término utilizado para esta plataforma ya no será “bonding” sino “teaming” pero como se ha dicho, la idea es la misma.
Por ser software corporativo, importan muchos aspectos, las reglas básicas son las siguientes: