Basado en una pregunta anterior hace más de un año (¿ Multiplexed 1 Gbps Ethernet? ), Salí y configuré un nuevo rack con un nuevo ISP con enlaces LACP por todo el lugar. Necesitamos esto porque tenemos servidores individuales (una aplicación, una IP) que sirven a miles de computadoras cliente en todo Internet por encima de 1 Gbps acumulativo.
Se supone que esta idea de LACP nos permite romper la barrera de 1 Gbps sin gastar una fortuna en conmutadores 10GoE y NIC. Desafortunadamente, me he encontrado con algunos problemas relacionados con la distribución del tráfico saliente. (Esto a pesar de la advertencia de Kevin Kuphal en la pregunta vinculada anterior).
El enrutador del ISP es un Cisco de algún tipo. (Lo deduje de la dirección MAC). Mi switch es un HP ProCurve 2510G-24. Y los servidores son HP DL 380 G5 con Debian Lenny. Un servidor es un hot standby. Nuestra aplicación no se puede agrupar. Aquí hay un diagrama de red simplificado que incluye todos los nodos de red relevantes con IP, MAC e interfaces.
Si bien tiene todos los detalles, es un poco difícil trabajar y describir mi problema. Entonces, por simplicidad, aquí hay un diagrama de red reducido a los nodos y enlaces físicos.
Así que me fui e instalé mi kit en el nuevo bastidor y conecté el cableado de mi ISP desde su enrutador. Ambos servidores tienen un enlace LACP a mi conmutador, y el conmutador tiene un enlace LACP al enrutador ISP. Desde el principio me di cuenta de que mi configuración de LACP no era correcta: las pruebas mostraron que todo el tráfico hacia y desde cada servidor estaba yendo a través de un enlace GoE físico exclusivamente entre el servidor para cambiar y el interruptor para enrutador.
Con algunas búsquedas en Google y mucho tiempo RTMF con respecto a la vinculación NIC de Linux, descubrí que podía controlar la vinculación NIC modificando /etc/modules
# /etc/modules: kernel modules to load at boot time.
# mode=4 is for lacp
# xmit_hash_policy=1 means to use layer3+4(TCP/IP src/dst) & not default layer2
bonding mode=4 miimon=100 max_bonds=2 xmit_hash_policy=1
loop
Esto hizo que el tráfico saliera de mi servidor a través de ambas NIC como se esperaba. Pero el tráfico se movía del conmutador al enrutador a través de un solo enlace físico, aún .
Necesitamos que el tráfico pase por ambos enlaces físicos. Después de leer y releer la Guía de administración y configuración del 2510G-24 , encuentro:
[LACP usa] pares de direcciones de origen-destino (SA / DA) para distribuir el tráfico saliente a través de enlaces troncalizados. SA / DA (dirección de origen / dirección de destino) hace que el conmutador distribuya el tráfico saliente a los enlaces dentro del grupo troncal en función de los pares de direcciones de origen / destino. Es decir, el conmutador envía tráfico desde la misma dirección de origen a la misma dirección de destino a través del mismo enlace troncalizado, y envía tráfico desde la misma dirección de origen a una dirección de destino diferente a través de un enlace diferente, dependiendo de la rotación de las asignaciones de ruta entre Enlaces en el maletero.
Parece que un enlace enlazado presenta solo una dirección MAC y, por lo tanto, mi ruta de servidor a enrutador siempre va a estar sobre una ruta de conmutador a enrutador porque el conmutador ve solo una MAC (y no dos, una de cada puerto) para ambos enlaces LACP'd.
Entendido. Pero esto es lo que quiero:
Un conmutador HP ProCurve más costoso es el 2910al que utiliza direcciones de origen y destino de nivel 3 en su hash. De la sección "Distribución de tráfico saliente a través de enlaces troncales" de la Guía de administración y configuración de ProCurve 2910al :
La distribución real del tráfico a través de una troncal depende de un cálculo que utiliza bits de la dirección de origen y la dirección de destino. Cuando hay una dirección IP disponible, el cálculo incluye los últimos cinco bits de la dirección IP de origen y la dirección IP de destino; de lo contrario, se usan las direcciones MAC.
OKAY. Entonces, para que esto funcione de la manera que quiero, la dirección de destino es la clave, ya que mi dirección de origen es fija. Esto lleva a mi pregunta:
¿Cómo funciona exactamente y específicamente el hashing de capa 3 LACP?
Necesito saber qué dirección de destino se utiliza:
- la IP del cliente , ¿el destino final?
- O la IP del enrutador , el próximo destino de transmisión del enlace físico.
No nos hemos apagado y comprado un interruptor de reemplazo todavía. Ayúdame a comprender exactamente si el hashing de la dirección de destino de LACP de capa 3 es o no lo que necesito. Comprar otro interruptor inútil no es una opción.