
Estoy intentando conectar un servidor Linux con dos NIC de 1 Gbps con un conmutador Netgear ProSafe GSM7248V2 mediante vinculación, específicamente el modo 802.3ad. Los resultados son muy confusos; agradecería cualquier sugerencia sobre qué probar a continuación.
Del lado del servidor, este es mi /etc/network/interfaces:
auto bond0
iface bond0 inet static
address 192.168.1.15/24
gateway 192.168.1.254
dns-nameservers 8.8.8.8
dns-search my-domain.org
bond-slaves eno1 eno2
bond-mode 4
bond-miimon 100
bond-lacp-rate 1
bond-xmit_hash_policy layer3+4
hwaddress aa:bb:cc:dd:ee:ff
La configuración del switch es la siguiente:
(GSM7248V2) #show port-channel 3/2
Local Interface................................ 3/2
Channel Name................................... fubarlg
Link State..................................... Up
Admin Mode..................................... Enabled
Type........................................... Dynamic
Load Balance Option............................ 6
(Src/Dest IP and TCP/UDP Port fields)
Mbr Device/ Port Port
Ports Timeout Speed Active
------ ------------- --------- -------
0/7 actor/long Auto True
partner/long
0/8 actor/long Auto True
partner/long
(GSM7248V2) #show lacp actor 0/7
Sys Admin Port Admin
Intf Priority Key Priority State
------ -------- ----- -------- -----------
0/7 1 55 128 ACT|AGG|LTO
(GSM7248V2) #show lacp actor 0/8
Sys Admin Port Admin
Intf Priority Key Priority State
------ -------- ----- -------- -----------
0/8 1 55 128 ACT|AGG|LTO
(GSM7248V2) #show lacp partner 0/7
Sys System Admin Prt Prt Admin
Intf Pri ID Key Pri Id State
------ --- ----------------- ----- --- ----- -----------
0/7 0 00:00:00:00:00:00 0 0 0 ACT|AGG|LTO
(GSM7248V2) #show lacp partner 0/8
Sys System Admin Prt Prt Admin
Intf Pri ID Key Pri Id State
------ --- ----------------- ----- --- ----- -----------
0/8 0 00:00:00:00:00:00 0 0 0 ACT|AGG|LTO
Creo que xmit "layer3+4" es más compatible con el equilibrio de carga tipo 6 del conmutador. Lo primero que sorprende es que el conmutador no ve la dirección MAC del socio LACP.
Del lado del servidor, este es el contenido de /proc/net/bonding/bond0:
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer3+4 (1)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
802.3ad info
LACP rate: fast
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: ac:1f:6b:dc:2e:88
Active Aggregator Info:
Aggregator ID: 15
Number of ports: 2
Actor Key: 9
Partner Key: 55
Partner Mac Address: a0:21:b7:9d:83:6a
Slave Interface: eno1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ac:1f:6b:dc:2e:88
Slave queue ID: 0
Aggregator ID: 15
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
system priority: 65535
system mac address: ac:1f:6b:dc:2e:88
port key: 9
port priority: 255
port number: 1
port state: 63
details partner lacp pdu:
system priority: 1
system mac address: a0:21:b7:9d:83:6a
oper key: 55
port priority: 128
port number: 8
port state: 61
Slave Interface: eno2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ac:1f:6b:dc:2e:89
Slave queue ID: 0
Aggregator ID: 15
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
system priority: 65535
system mac address: ac:1f:6b:dc:2e:88
port key: 9
port priority: 255
port number: 2
port state: 63
details partner lacp pdu:
system priority: 1
system mac address: a0:21:b7:9d:83:6a
oper key: 55
port priority: 128
port number: 7
port state: 61
Si entiendo esto correctamente, significa que el controlador de enlace de Linux determinó correctamente todos los detalles del agregador (clave, números de puerto, prioridad del sistema, prioridad del puerto, etc.). A pesar de eso, recibo esto en dmesg después de reiniciar el servicio de red:
[Dec14 20:40] bond0: Releasing backup interface eno1
[ +0.000004] bond0: first active interface up!
[ +0.090621] bond0: Removing an active aggregator
[ +0.000004] bond0: Releasing backup interface eno2
[ +0.118446] bond0: Enslaving eno1 as a backup interface with a down link
[ +0.027888] bond0: Enslaving eno2 as a backup interface with a down link
[ +0.008805] IPv6: ADDRCONF(NETDEV_UP): bond0: link is not ready
[ +3.546823] igb 0000:04:00.0 eno1: igb: eno1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
[ +0.160003] igb 0000:05:00.0 eno2: igb: eno2 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
[ +0.035608] bond0: link status definitely up for interface eno1, 1000 Mbps full duplex
[ +0.000004] bond0: Warning: No 802.3ad response from the link partner for any adapters in the bond
[ +0.000008] bond0: first active interface up!
[ +0.000166] IPv6: ADDRCONF(NETDEV_CHANGE): bond0: link becomes ready
[ +0.103821] bond0: link status definitely up for interface eno2, 1000 Mbps full duplex
Ambas interfaces están activas, la conexión de red parece bastante normal, solo recibo esa extraña advertencia de que no hay ningún socio compatible con 802.3ad.
Además, cuando intento copiar simultáneamente dos archivos binarios grandes (de 10 GB cada uno) desde dos máquinas diferentes conectadas al mismo conmutador, cada una conectada con 1 Gbps, el rendimiento general de la interfaz bond0 en el servidor está muy por debajo de 1 Gbps, aunque Se esperaría algo más cercano a 2 Gbps (la velocidad de lectura, etc. no es un factor limitante aquí, todos los SSD, bien almacenados en caché, etc.). Cuando copio los mismos archivos secuencialmente, uno tras otro, desde las mismas máquinas, alcanzo fácilmente rendimientos cercanos a 1 Gbps.
¿Tiene, por favor, alguna idea de qué podría estar mal aquí? Con respecto al diagnóstico, la advertencia confusa aparece en dmesg (no hay socio compatible con 802.3ad) y en la salida sh lacp del conmutador (no hay MAC del socio, aunque el registro de puerto normal muestra la dirección MAC correcta de la NIC conectada). En cuanto al rendimiento de la red, realmente no puedo ver ninguna agregación utilizando dos conexiones diferentes. Estaría muy agradecido por cualquier pista.
Respuesta1
El conmutador está configurado para long
un tiempo de espera de LACP: un LACPDU cada 30 segundos.
El sistema Linux está configurado para bond-lacp-rate 1
.
No puedo encontrar qué hace esto realmente en Debian, pero si pasa la lacp_rate=1
opción del módulo a vincular (referencia), entonces ese es el tiempo de espera rápido: una LACPDU cada 1 segundo.
Esta falta de coincidencia entre la velocidad LACP lenta y rápida es una configuración incorrecta.
Toda la documentación de ejemplo que puedo encontrar dice que Debian acepta, bond-lacp-rate slow
lo que con suerte lo corregirá.
Probablemente también podría eliminar la bond-lacp-rate
línea de su archivo de configuración, ya que el valor predeterminado es velocidad lenta, luego descargar el módulo de vinculación o reiniciar para aplicar.
No pruebe el rendimiento con solo dos transmisiones. La layer3+4
política no garantiza que dos flujos obtengan cada uno una NIC separada, solo que, dados suficientes flujos, el tráfico debería equilibrarse de manera algo uniforme.
Pruebe con, digamos, 16 o 32 transmisiones TCP iperf3 simultáneas. El rendimiento total de todas las transmisiones debería estar cerca de 2 Gbps.