Saltar al contenido

SpainClouds

Portada » Blogs » ECMP: cómo repartir tráfico entre múltiples caminos sin perder el control

ECMP: cómo repartir tráfico entre múltiples caminos sin perder el control

ECMP: cómo repartir tráfico entre múltiples caminos sin perder el control

Qué ocurre cuando una red dispone de varias rutas igualmente buenas hacia el mismo destino, cómo decide por dónde enviar cada flujo y qué problemas aparecen cuando el reparto deja de ser uniforme.

Idea clave: ECMP no suele repartir cada paquete de forma alterna. En redes modernas, lo habitual es mantener cada flujo en un mismo camino y distribuir flujos diferentes entre los caminos disponibles.

1. ¿Qué es ECMP en redes?

ECMP son las siglas de Equal-Cost Multi-Path. Describe la capacidad de un router o switch de capa 3 para instalar y utilizar varias rutas hacia un mismo prefijo cuando esas rutas tienen el mismo coste desde el punto de vista del protocolo de enrutamiento.

En lugar de elegir un único siguiente salto y dejar los demás como respaldo, el equipo puede mantener varios next-hops activos al mismo tiempo. De esta forma aumenta el uso de los enlaces disponibles y, además, una avería puede absorberse con rapidez porque ya existen caminos alternativos en la tabla de reenvío.

El término “equal-cost” es importante: ECMP clásico trabaja con rutas que el protocolo considera equivalentes. Dos enlaces físicos de capacidades muy distintas pueden acabar con el mismo coste si la métrica está configurada así, pero eso no significa que el tráfico vaya a repartirse de forma proporcional a la capacidad.

2. ¿Por qué es importante ECMP en redes y centros de datos?

Las redes de centros de datos, los fabrics leaf-spine, muchos diseños de backbone y determinadas arquitecturas WAN se apoyan en rutas paralelas. Tener varios caminos no solo mejora la resiliencia: permite sumar capacidad útil sin obligar a que todo el tráfico atraviese un único enlace.

Imaginemos dos routers de agregación conectados mediante cuatro caminos de 10 Gbit/s hacia una misma zona. Si el enrutamiento utiliza un solo camino, la red puede saturar un enlace mientras los otros permanecen casi vacíos. Con ECMP, diferentes flujos pueden usar distintos next-hops y aprovechar mejor la infraestructura.

Pero hay una consecuencia práctica: “cuatro caminos” no equivale automáticamente a “cuatro veces más rendimiento para una conexión”. Una única sesión TCP normalmente queda fijada a un único camino. El beneficio aparece cuando existen suficientes flujos concurrentes para que el algoritmo de reparto tenga algo que distribuir.

3. Cómo funciona ECMP paso a paso

3.1 El protocolo descubre rutas equivalentes

OSPF, IS-IS, BGP u otro mecanismo de control calcula o aprende más de una ruta válida hacia el mismo destino. Si esas rutas cumplen las reglas de equivalencia y la plataforma admite el número de caminos resultante, varias pueden instalarse para reenvío.

3.2 La tabla de reenvío conserva varios next-hops

La RIB contiene la información de routing; la FIB es la estructura optimizada que usa el plano de datos para reenviar paquetes. En un destino con ECMP, la FIB puede asociar el prefijo a varios siguientes saltos en vez de a uno solo.

3.3 El equipo calcula un hash

Para decidir qué camino corresponde a un flujo, el dispositivo suele calcular un hash a partir de campos de las cabeceras. Dependiendo del fabricante y de la configuración, puede usar origen y destino IP, protocolo, puertos TCP/UDP, etiquetas MPLS, campos IPv6 u otros elementos.

Con una política de cinco tuplas, dos sesiones entre los mismos hosts pueden tomar caminos diferentes si cambian los puertos de transporte. Esto aumenta la “entropía”: hay más combinaciones posibles que el algoritmo puede repartir.

3.4 El hash selecciona un miembro del grupo

El resultado del hash se mapea a uno de los next-hops disponibles. Mientras el conjunto de caminos y la función de reparto no cambien, los paquetes del mismo flujo suelen seguir la misma ruta. Ese comportamiento reduce el riesgo de reordenamiento de paquetes, algo especialmente incómodo para TCP.

3.5 Si falla un camino, el grupo se recalcula

Cuando un next-hop deja de ser válido, los flujos asociados deben moverse a los caminos restantes. El impacto exacto depende de la convergencia del protocolo, la detección del fallo, la implementación del hardware y del algoritmo de hashing. Algunos equipos utilizan técnicas de hashing resiliente para minimizar cuántos flujos cambian de camino cuando entra o sale un miembro.

Qué se reparte realmente

En ECMP, el tráfico no se reparte normalmente paquete a paquete, sino que el equipo intenta mantener juntos los paquetes que pertenecen a una misma comunicación. Esto evita que unos paquetes lleguen antes que otros y se produzca un reordenamiento innecesario.

Para decidir por qué camino enviar cada comunicación, el router utiliza un hash basado en datos como las direcciones IP y, habitualmente, los puertos. Ese resultado asigna el flujo a un next-hop concreto. Por eso, una única conexión no puede aprovechar simultáneamente todos los enlaces ECMP.

La ventaja aparece cuando existen muchos flujos diferentes. Cada uno puede ser asignado a un camino distinto, haciendo que el tráfico se distribuya entre los enlaces disponibles. Cuanta más diversidad de flujos exista, más posibilidades hay de conseguir un reparto equilibrado.

4. Ejemplo práctico de ECMP con cuatro rutas de igual coste

Supongamos que R1 tiene cuatro rutas de igual coste hacia 10.20.0.0/16. Cada next-hop conduce por un enlace de 10 Gbit/s:

  • 10.0.0.2 por el enlace A
  • 10.0.1.2 por el enlace B
  • 10.0.2.2 por el enlace C
  • 10.0.3.2 por el enlace D

En teoría existe una capacidad agregada de 40 Gbit/s hacia ese destino. Ahora aparecen 200 flujos TCP independientes. Si el hash distribuye razonablemente bien, podríamos observar aproximadamente 50 flujos por camino. No será necesariamente un 25 % exacto en cada enlace, porque el hash reparte flujos, no bits.

Esa diferencia es crítica. Si uno de los flujos transporta 6 Gbit/s y muchos otros apenas consumen unos pocos Mbit/s, un enlace puede quedar mucho más cargado que los demás aunque el número de flujos parezca equilibrado.

Destino: 10.20.0.0/16

Next-hops ECMP:
-> 10.0.0.2
-> 10.0.1.2
-> 10.0.2.2
-> 10.0.3.2

Hash conceptual:
H(src_ip, dst_ip, protocolo, src_port, dst_port)
resultado % 4 -> selecciona un next-hop

Si el hash de una conexión concreta devuelve el índice 2, todos sus paquetes irán normalmente por el tercer camino. Una segunda conexión entre los mismos servidores, pero con otro puerto de origen, puede generar un hash diferente y acabar en otro enlace.

5. Errores comunes al configurar ECMP y cómo evitarlos

Confundir ECMP con agregación de ancho de banda por sesión.

Una única conexión de 20 Gbit/s no va a atravesar cuatro enlaces de 10 Gbit/s simplemente porque existan cuatro rutas ECMP. Si necesitas más rendimiento para una sola transferencia, hay que revisar el diseño de aplicación, el transporte o mecanismos específicos de multipath.

Asumir que el reparto será perfectamente uniforme.

Un buen hash distribuye combinaciones, pero no conoce necesariamente el caudal real de cada flujo. Hay que observar bytes y paquetes por miembro, no solo contar sesiones.

Tener poca entropía.

Si muchos paquetes comparten casi todos los campos usados por el hash, pueden concentrarse en pocos caminos. Esto aparece, por ejemplo, con ciertos túneles: desde el exterior, numerosos flujos internos pueden parecer un único flujo. Conviene verificar qué campos puede usar la plataforma para calcular el hash y cómo trata encapsulaciones.

Provocar polarización.

En redes con varias etapas ECMP, dos equipos pueden tomar decisiones de hash correlacionadas y empujar una cantidad desproporcionada de tráfico por combinaciones concretas de enlaces. Distintos seeds de hashing, algoritmos mejorados o más entropía pueden reducir este problema.

Ignorar la asimetría de ruta.

El camino de ida y el de vuelta no tienen por qué coincidir. Para IP puro suele ser aceptable, pero puede complicar firewalls stateful, NAT, sondas que esperan simetría o herramientas de troubleshooting que observan solo un sentido.

No comprobar los límites de la plataforma.

El número máximo de next-hops ECMP, los campos del hash, el soporte de hashing resiliente y el comportamiento con IPv6, VXLAN o MPLS dependen del equipo y del software. El diseño lógico debe contrastarse siempre con las capacidades reales del plano de datos.

6. Checklist para implementar y verificar ECMP

Confirma que las rutas son realmente de igual coste y que todas llegan a la FIB.

Comprueba cuántos next-hops ECMP admite la plataforma en ese escenario.

Identifica qué campos utiliza el hash y si incluye puertos de capa 4.

Mide distribución por bytes y paquetes, no únicamente por número de flujos.

Valida qué ocurre con túneles y encapsulaciones: pueden ocultar entropía.

Prueba fallos de un miembro y observa cuánto tarda en redistribuirse el tráfico.

Revisa si existe hashing resiliente para reducir movimientos masivos de flujos.

Comprueba si la red tolera caminos de ida y vuelta distintos.

Lo qué debes recordar sobre ECMP

ECMP es una herramienta para utilizar varios caminos equivalentes de forma simultánea. Su eficacia depende menos de “tener muchas rutas” que de cómo se distribuyen los flujos entre ellas. El punto clave es entender el hash: qué información utiliza, cuánta diversidad recibe y cómo reacciona cuando cambia el conjunto de next-hops.

Cuando el diseño se valida con tráfico real, métricas por enlace y pruebas de fallo, ECMP puede ofrecer una combinación muy útil de capacidad y resiliencia. Cuando se da por hecho que el reparto será perfecto, aparecen enlaces calientes, sesiones limitadas por un solo camino y diagnósticos difíciles de interpretar.