Unión de interfaces de red (channel bonding) en Linux

El channel bonding o unión de interfaces de red consiste en simular un dispositivo de red con gran ancho de banda uniendo varias tarjetas de red independientes, de manera que las aplicaciones sólo verán un interfaz de red. Con el channel bonding conseguimos varias cosas:

  • mayor ancho de banda: el ancho de banda de la interfaz virtual será la suma de los anchos de banda de las interfaces reales.
  • balanceo de carga: tendremos balanceo de carga del tráfico de red entre todas las interfaces reales (por defecto Round Robin).
  • redundancia: si falla una tarjeta de red los datos irán sólo por las que estén en buen estado.

En Linux se encarga del channel bonding el módulo Linux Channel Bonding. Veamos cómo activarlo en un equipo con dos interfaces de red (eth0 y eth1):

  1. instalamos ifenslave (interface enslave, paquete ifenslave):
    # apt-get install ifenslave
  2. cargamos en el kernel el módulo bonding (el parámetro miimon=100 significa que monitoriza cada 100 ms si las tarjetas reales funcionan):
    # modprobe bonding miimon=100
  3. editamos /etc/network/interfaces y configuramos la interfaz virtual bond0 (con la directiva slaves definimos las tarjetas de red reales que forman bond0):
    auto bond0
    iface bond0 inet static
          address 192.168.0.100
          netmask 255.255.255.0
          broadcast 192.168.0.255
          gateway 192.168.0.1
          slaves eth0 eth1

    Para que al arrancar sólo se active bond0 eliminaremos las líneas auto eth0 y auto eth1.

  4. levantamos la interfaz virtual:
    # ifup bond0

    Si las interfaces reales están up las echaremos abajo:

    # ifdown eth0
    # ifdown eth1
  5. comprobamos si todo está correcto (las tres interfaces deben tener la misma MAC):
    # ifconfig
    bond0     Link encap:Ethernet  HWaddr 00:11:22:33:44:55
              inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
              inet6 addr: fe80::211:22ff:fe33:4455/64 Scope:Link
              UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
              RX packets:1357 errors:0 dropped:0 overruns:0 frame:0
              TX packets:793 errors:14 dropped:0 overruns:0 carrier:14
              collisions:0 txqueuelen:0
              RX bytes:144979 (141.5 KiB)  TX bytes:148606 (145.1 KiB)
     
    eth0      Link encap:Ethernet  HWaddr 00:11:22:33:44:55
              inet6 addr: fe80::211:22ff:fe33:4455/64 Scope:Link
              UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
              RX packets:462 errors:0 dropped:0 overruns:0 frame:0
              TX packets:303 errors:14 dropped:0 overruns:0 carrier:14
              collisions:0 txqueuelen:1000
              RX bytes:51388 (50.1 KiB)  TX bytes:51796 (50.5 KiB)
              Interrupt:17 Base address:0x1800
     
    eth1      Link encap:Ethernet  HWaddr 00:11:22:33:44:55
              inet6 addr: fe80::211:22ff:fe33:4455/64 Scope:Link
              UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
              RX packets:895 errors:0 dropped:0 overruns:0 frame:0
              TX packets:490 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:93591 (91.3 KiB)  TX bytes:96810 (94.5 KiB)
              Interrupt:16 Base address:0x8400

Artículos en la categoría "Configurar la red en Linux"

  1. Configurar la resolución de nombres de dominio (DNS) en Linux
  2. Configurar una interfaz PPP en Linux
  3. Bluetooth en Linux
  4. Redes Wireless LAN (Wi-Fi) en Linux
  5. Unión de interfaces de red (channel bonding) en Linux
  6. Controlar la red en Linux

18 Comments:

  1. Excelente!! tenia años, y repito, AÑOS buscando como hacer esto!!, justo me cae como anillo al dedo!!

    Ya mismo me pongo a probar.

  2. Hola sabes tengo una pregunta y la otra tarjeta la que se va a conectar a un swhicht que pasa con ella donde entra en accion, gracias.

  3. oigan disculpen las molestia, pero esto se puede hacer con fax modems, si alguien me pudiese ayudar, lo que pasa que tengo un ciber cafe con 4 dial ups y pues nunca consigo buenas velocidades ya que no estan unidas las conexiones, si alguien me pudiese ayudar de antemano muchas gracias

  4. Silvestre Figueroa

    Pensar que hace unos dias estaba buscando la manera de resolverlo layers mas arriba… la verdad que descubrir bonding y probarlo me ahorro mucho tiempo :D, tiempo que pienso invertir para implementar esta solucion :D

  5. Saludos, es posible hacer bonding con dos tarjetas inalambricas? (uso wicd), ambas se conectaran a routers distintos, claro esta, en este caso aumentaria mi ancho de banda. ;P

  6. - se puede crear por ejemplo unas 4 interfaces de red virtuales y hacer bonding con todas?

    - una vez que haces bonding, puedes hacer una conexion pppoe a traves de la interfaz bond0 a ver si te conectas a internet 4 veces mas rapido ? (mi router adsl soporta bridge)

    - o hay que crear 4 conexiones pppoe primero y despues hacerle el bonding a ellas? .. como se puede hacer?

  7. Pingback:Nuevo logo, virtualbox « Meshias

  8. Hola, tengo una duda que me gustaria resolver. Estado probando hacer el bonding,802.3d, link aggregation o de las mil maneras que lo llaman. Pero mis tarjetas de red no permiten esta tecnologia, almenos me es imposible hacerlo en un Windows 2003 server. La pregunta sería, si para Linux importa que soporten esta tecnologia, o con la correspondiente configuración podría llevarlo a cabo.

  9. lo que quisiera saber es si esto afecta si el equipo es un controlador de dominio ademas quisiera saber como compruebo que todas las peticiones realizadas a este equipo se dan por la nueva tarjeta.

  10. Pingback:blogs.clavedigital.com/ncastillo

  11. Hola,

    Sería posible configurar un “doble bonding”. Es decir crear un bonding1 (formado con dos interfaces físicos) y un bonding2 (formado con otros dos interfaces físicos) y finalmente un tercer bonding12 (formado con el bonding1 y bonding2).

    Gracias.

  12. no puedo cargar mi bonding al momento de reiniciar los servicios de red o reiniciar el sistema me marca el siguiente error

    [587.705944]BUG: scheduling while atomic: ifenslave/34410/0×00000100
    [587.705438]NOHZ: local:softirq_pending 02

    ayuda por favor pienso q no esta bien cargado el controlador pero no estoy seguro y no hay informacion sobre este error.

  13. Cabe aclarar que esto NO AUMENTA la velocidad de descarga, pero SI la CAPACIDAD de ancho de banda, es decir, pueden descargar a la velocidad del enlace con mayor velocidad, una segunda descarga iría a la velocidad del siguiente enlace, y así… no es que realmente se unan las dos. Estos bondings se hacen para tener redundancia y mas solidez en redes grandes, por ejemplo, el de una oficina de 2-3 pisos.

    Mas info: http://www.kernel.org/pub/linux/kernel/people/marcelo/linux-2.4/Documentation/networking/bonding.txt

    Respecto a este post, MUY BUENO, muy bien explicado y fácil de hacerse. Gracias por el artículo.

    Saludos.

  14. Aun asi, con un acelerador de descargas si que se aumentaria la velocidad de descarga de un solo archivo, ya que los aceleradores de descarga crean varias conexiones por lo tanto utilizaria todas las interfaces “esclavizadas” por la interfaz bond…y no te digo ya si descargas torrent con cientos de conexiones….

  15. esto lo he probado amigos, pero entonces cuando le hago peticiones a la nueva iface no responde, ni esa ni las fisicas, que puede ser …???

  16. Muchas gracias por esta página. Me ha aclarado muchas dudas. Sólo tengo una: si tenemos en un RedHat dos tarjetas de red con su IP, etc y deseo establecer el bonding entre ellas, ¿necesitaría nuevas Ip, máscara etc o podría utilizar las ya existentes?
    Gracias.