¿Qué es la unión de interfaces?
La vinculación (o vinculación de canales) es una tecnología habilitada por el kernel de Linux y Red Hat Enterprise Linux, que permite a los administradores combinar dos o más interfaces de red para formar una sola interfaz lógica "vinculada" para redundancia o mayor rendimiento. El comportamiento de las interfaces vinculadas depende del modo; en términos generales, los modos proporcionan servicios de equilibrio de carga o de espera activa. Además, pueden proporcionar monitoreo de integridad de enlaces.
¿Por qué utilizar la vinculación de interfaz?
Las dos razones importantes para crear un enlace de interfaz son:
1. Para proporcionar un mayor ancho de banda
2. Para proporcionar redundancia ante fallas de hardware
Uno de los requisitos previos para configurar un enlace es tener un conmutador de red compatible con EtherChannel (lo cual es cierto en el caso de casi todos los conmutadores).
Modos de vinculación
Según sus requisitos, puede configurar el modo de vinculación en cualquiera de los 7 modos siguientes.
Modo | Política | Cómo funciona | Tolerancia a fallos | Equilibrio de carga |
---|---|---|---|---|
0 | Round Robin | los paquetes se transmiten/reciben secuencialmente a través de cada interfaz uno por uno. | Sí | Sí |
1 | Copia de seguridad activa | una NIC activa mientras otra NIC está inactiva. Si la NIC activa deja de funcionar, se activa otra NIC. solo se admite en entornos x86. | Sí | No |
2 | XOR [OR exclusivo] | En este modo, la dirección MAC de la NIC esclava se compara con la MAC de la solicitud entrante y, una vez que se establece esta conexión, se utiliza la misma NIC para transmitir/recibir para la MAC de destino. | Sí | Sí |
3 | Transmitir | Todas las transmisiones se envían a todos los esclavos | Sí | No |
4 | Agregación de enlaces dinámicos | Las NIC agregadas actúan como una NIC, lo que da como resultado un mayor rendimiento, pero también proporciona conmutación por error en caso de que falle una NIC. La agregación de enlaces dinámicos requiere un conmutador compatible con IEEE 802.3ad. | Sí | Sí |
5 | Equilibrio de carga de transmisión (TLB) | El tráfico saliente se distribuye según la carga actual en cada interfaz esclava. El esclavo actual recibe el tráfico entrante. Si el esclavo receptor falla, otro esclavo asume la dirección MAC del esclavo fallido. | Sí | Sí |
6 | Equilibrio de carga adaptativo (ALB) | A diferencia de la Agregación de enlaces dinámicos, el Equilibrio de carga adaptativo no requiere ninguna configuración de conmutador en particular. El Equilibrio de carga adaptable solo se admite en entornos x86. La carga de los paquetes recibidos se equilibra a través de la negociación ARP. | Sí | Sí |
Creación de la conexión de red mediante nmcli
1. Creación de la interfaz de vinculación
1. Use el comando de conexión nmcli sin ningún argumento para ver las conexiones de red existentes. Puede acortar la "conexión ” argumento de “con “. Ejemplo:
# nmcli connection NAME UUID TYPE DEVICE ens33 59b61d18-90ed-4c3c-97e0-6c9e0528f25f 802-3-ethernet ens33 ens37 c09f18e1-793b-4d60-9107-98762cf593a7 802-3-ethernet ens37
2. Incluya el “agregar tipo de vínculo ” argumentos y cualquier información adicional para crear una conexión de enlace de red. El siguiente ejemplo crea una interfaz enlazada llamada bond0, define la interfaz como bond0, establece el modo en "active-backup “, y asigna una dirección IP a la interfaz enlazada.
# nmcli con add type bond con-name bond0 ifname bond0 mode active-backup ip4 192.168.219.150/24 Connection 'bond0' (1a75eef0-f2c9-417d-81a0-fabab4a1531c) successfully added.
El comando nmcli con muestra la nueva conexión de enlace.
# nmcli connection NAME UUID TYPE DEVICE bond0 1a75eef0-f2c9-417d-81a0-fabab4a1531c bond bond0 ens33 59b61d18-90ed-4c3c-97e0-6c9e0528f25f 802-3-ethernet ens33 ens37 c09f18e1-793b-4d60-9107-98762cf593a7 802-3-ethernet ens37
3. El comando 'nmcli con add type bond' crea un archivo de configuración de interfaz en /etc/sysconfig/network-scripts directorio. Por ejemplo:
# cat /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BONDING_OPTS=mode=active-backup TYPE=Bond BONDING_MASTER=yes BOOTPROTO=none IPADDR=192.168.219.150 PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=bond0 UUID=1a75eef0-f2c9-417d-81a0-fabab4a1531c ONBOOT=yes
4. El comando ip addr muestra la nueva interfaz bond0:
# ip addr show bond0 5: bond0: [BROADCAST,MULTICAST,MASTER,UP] mtu 1500 qdisc noqueue state DOWN qlen 1000 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff inet 192.168.219.150/24 brd 192.168.219.255 scope global bond0 valid_lft forever preferred_lft forever
2. Creación de las interfaces esclavas
1. Para cada interfaz que desee vincular, utilice el comando 'nmcli con add type bond-slave ' dominio. El siguiente ejemplo agrega el ens33 interfaz como esclavo de enlace. El comando no incluye el argumento con-name, por lo que se genera automáticamente un nombre. Puede establecer el nombre para las interfaces esclavas con el argumento con-name.
# nmcli con add type bond-slave ifname ens33 master bond0 Connection 'bond-slave-ens33' (79c40960-6b2c-47ba-a417-988332affed1) successfully added.
2. El siguiente ejemplo agrega el ens37 interfaz como un “esclavo de enlace “.
# nmcli con add type bond-slave ifname ens37 master bond0 Connection 'bond-slave-ens37' (46222a52-f2ae-4732-bf06-ef760aea0d7b) successfully added.
3. El comando nmcli con muestra las nuevas conexiones.
# nmcli connection NAME UUID TYPE DEVICE bond0 1a75eef0-f2c9-417d-81a0-fabab4a1531c bond bond0 ens33 59b61d18-90ed-4c3c-97e0-6c9e0528f25f 802-3-ethernet ens33 ens37 c09f18e1-793b-4d60-9107-98762cf593a7 802-3-ethernet ens37 bond-slave-ens33 79c40960-6b2c-47ba-a417-988332affed1 802-3-ethernet -- bond-slave-ens37 46222a52-f2ae-4732-bf06-ef760aea0d7b 802-3-ethernet --
4. Los comandos nmcli con add type bond-slave crean archivos de configuración de interfaz en /etc/sysconfig/network-scripts directorio. Por ejemplo:
# cat /etc/sysconfig/network-scripts/ifcfg-bond-slave-ens33 TYPE=Ethernet NAME=bond-slave-ens33 UUID=79c40960-6b2c-47ba-a417-988332affed1 DEVICE=ens33 ONBOOT=yes MASTER=bond0 SLAVE=yes
# cat /etc/sysconfig/network-scripts/ifcfg-bond-slave-ens37 TYPE=Ethernet NAME=bond-slave-ens37 UUID=46222a52-f2ae-4732-bf06-ef760aea0d7b DEVICE=ens37 ONBOOT=yes MASTER=bond0 SLAVE=yes
5. El comando ip addr incluye “SLAVE ” para las interfaces ens33 y ens37 y también incluye “master bond0 “.
3. Activando el Vínculo
1. Puede usar el comando nmcli para mostrar las conexiones. Abra primero los esclavos y luego abra la interfaz de enlace. Los siguientes comandos activan los esclavos:
# nmcli connection up bond-slave-ens33 # nmcli connection up bond-slave-ens37
2. El siguiente comando abre la interfaz bond0:
# nmcli con up bond0
3. El comando ip addr, o el comando ip link, ahora muestra las interfaces esclava y bond que están ACTIVAS.
# ip link 2: ens33: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff 3: ens37: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff 4: bond0: [BROADCAST,MULTICAST,MASTER,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff
Visualización de información de enlace de red
1. Cada interfaz de red contiene un directorio en el directorio /sys/class/net. Por ejemplo:
# ls /sys/class/net bond0 bonding_masters ens33 ens36 ens37 lo
2. En este ejemplo, existe un enlace de red denominado "bond0". Existe un directorio con el mismo nombre que contiene información de configuración para ese vínculo. Por ejemplo:
# ls /sys/class/net/bond0 addr_assign_type bonding carrier_changes dormant gro_flush_timeout iflink lower_ens37 operstate queues subsystem uevent address broadcast dev_id duplex ifalias link_mode mtu phys_port_id speed tx_queue_len addr_len carrier dev_port flags ifindex lower_ens33 netdev_group power statistics type
3. Dentro de este directorio hay un directorio de vinculación que contiene información para la interfaz bond0. Por ejemplo:
# ls /sys/class/net/bond0/bonding active_slave ad_aggregator ad_select arp_interval fail_over_mac mii_status num_unsol_na queue_id updelay ad_actor_key ad_num_ports ad_user_port_key arp_ip_target lacp_rate min_links packets_per_slave resend_igmp use_carrier ad_actor_sys_prio ad_partner_key all_slaves_active arp_validate lp_interval mode primary slaves xmit_hash_policy ad_actor_system ad_partner_mac arp_all_targets downdelay miimon num_grat_arp primary_reselect tlb_dynamic_lb
4. También existen directorios que contienen información de cada uno de los esclavos. Por ejemplo:
# ls /sys/class/net/bond0/lower_ens33 addr_assign_type bonding_slave carrier_changes dev_port flags ifindex master operstate queues subsystem uevent address broadcast device dormant gro_flush_timeout iflink mtu phys_port_id speed tx_queue_len upper_bond0 addr_len carrier dev_id duplex ifalias link_mode netdev_group power statistics type
5. Los siguientes son algunos ejemplos de visualización de archivos en el directorio /sys/class/net.
# cat /sys/class/net/bonding_masters bond0
# cat /sys/class/net/bond0/operstate up
# cat /sys/class/net/bond0/address 00:0c:29:54:f7:20
# cat /sys/class/net/bond0/bonding/active_slave ens33
# cat /sys/class/net/bond0/bonding/mode active-backup 1
# cat /sys/class/net/bond0/bonding/slaves ens33 ens37
6. El siguiente es un ejemplo de cómo ver el archivo /proc/net/bonding/bond0.
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: ens33 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens33 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:54:f7:20 Slave queue ID: 0 Slave Interface: ens37 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:54:f7:34 Slave queue ID: 0
Cómo deshabilitar IPv4 o IPv6 en una interfaz enlazada
Estos pasos solo son necesarios si bond1 no usará una dirección ipv4 o ipv6
# nmcli connection modify bond1 ipv4.method disabled
y/o
# nmcli connection modify bond1 ipv6.method ignore