Tabela de Conteúdos

2.1.4 Agrupación de las interfaces de red

La mayoría de los sistemas actuales tienen dos o más conexiones de Ethernet. Estas conexiones se pueden usar por separado o en paralelo mediante una técnica llamada bonding. Esta técnica es muy interesante porque permite equilibrar la transmisión de los datos (los datos se transmiten a través de dos interfaces), y además se implementa tolerancia a fallos (si un enlace falla, la transmisión está asegurada por el otro enlace).

En nuestro servidor, agregamos dos interfaces físicas del sistema, eno1 y eno2, para crear una nueva interfaz de red bond0 de alta disponibilidad.

Ethernet bonding

Ethernet bonding, está regulada por la norma IEEE 802.3ad con el título link aggregation. Es un término técnico de las redes informáticas que describe el acoplamiento de dos o más canales de Ethernet en paralelo para producir un solo canal de mayor velocidad y/o aumentar la disponibilidad y la redundancia de ese canal.

Instalación

root@server~# apt install ifenslave

Configuración

Para crear la interfaz bond0 hay que cargar y configurar previamente el módulo bonding del kernel o núcleo de linux. Este módulo se cargará automáticamente después de la configuración, pero ahora hay que cargarlo de forma manual:

root@server:~# modprobe bonding

Con la siguiente línea de comandos se comprueba qué es lo que se carga en realidad:

root@server:~# lsmod | grep bonding
bonding               147456  0

El siguiente paso es la parametrización de la nueva interfaz de red y eliminar (o comentar) todas las referencias a las interfaces físicas que utilizará la nueva interfaz. Estas modificaciones se realizan, por supuesto, en el fichero /etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# allow-hotplug eno1
# iface eno1 inet dhcp

# Static IP address
#auto eno1
#iface eno1 inet static
#        address 192.168.1.100
#        netmask 255.255.255.0
#        network 192.168.1.0
#        broadcast 192.168.1.255
#        gateway 192.168.1.1

# Interface bonding
# Static IP address
auto bond0
iface bond0 inet static
        slaves eno1 eno2
        bond-mode balance-rr
        bond-miimon 100
        bond_downdelay 200
        bond_updelay 200

        address 192.168.1.100
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1

El parámetro de modo de enlace bond-mode balance-rr indica que la interfaz funcionará en modo de balance-rr, en el que los datos se transmiten alternativamente por las diferentes interfaces físicas que componen la nueva interfaz bond0.

Por último, hay que reiniciar los servicios de red:

root@server:~# systemctl restart networking

Verificación

El comando ifconfig le permite comprobar el estado de las interfaces de red:

root@server:~# ifconfig
bond0     Link encap:Ethernet  HWaddr 08:00:27:69:7a:b5
          inet addr:192.168.56.100  Bcast:192.168.56.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:47 errors:0 dropped:0 overruns:0 frame:0
          TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:5803 (5.6 KiB)  TX bytes:8608 (8.4 KiB)

eno1      Link encap:Ethernet  HWaddr 08:00:27:69:7a:b5
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:44 errors:0 dropped:0 overruns:0 frame:0
          TX packets:31 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5601 (5.4 KiB)  TX bytes:2842 (2.7 KiB)

eno2      Link encap:Ethernet  HWaddr 08:00:27:69:7a:b5
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:3 errors:0 dropped:0 overruns:0 frame:0
          TX packets:31 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:202 (202.0 B)  TX bytes:5766 (5.6 KiB)

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:193243 errors:0 dropped:0 overruns:0 frame:0
          TX packets:193243 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:31609190 (30.1 MiB)  TX bytes:31609190 (30.1 MiB)

A la interfaz bond0 se le asigna una dirección IP, concretamente 192.168.1.100, y las 3 interfaces (bond0, eno1 y eno2) tienen la misma dirección física (“HWaddr 08:00:27:69:7a:b5”), para que las tres sean “vistas” por el resto de la red como una sola interfaz.

Se puede obtener más informaciones sobre el estado de la interfaz bond0 con:

root@server:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200

Slave Interface: eno1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 08:00:27:69:7a:b5
Slave queue ID: 0

Slave Interface: eno2
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 08:00:27:22:af:bf
Slave queue ID: 0

Referencias