- Estréllate y Arde - https://www.estrellateyarde.org -

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

Article printed from Estréllate y Arde: https://www.estrellateyarde.org

URL to article: https://www.estrellateyarde.org/so/channel-bonding-en-linux

Copyright © 2010 Estrellate y Arde