Introducción
Este documento describe cómo la polarización de Cisco Express Forwarding (CEF) puede causar un uso subóptimo de las rutas redundantes a una red de destino. La polarización CEF es el efecto cuando un algoritmo hash elige una trayectoria determinada y las trayectorias redundantes permanecen completamente sin utilizar.
Prerequisites
Requirements
No hay requisitos específicos para este documento.
Componentes Utilizados
La información en este documento se basa en un switch Cisco Catalyst 6500 que se ejecuta en un Supervisor Engine 720.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Antecedentes
CEF conmuta los paquetes según la tabla de routing que se rellena con los protocolos de routing, como el protocolo de routing de gateway interior mejorado (EIGRP) y la ruta de acceso más corta primero (OSPF). CEF realiza un equilibrio de carga una vez que se calcula la tabla de routing (RIB). En un diseño de red jerárquico, puede haber muchas rutas redundantes de igual coste de capa 3 (L3). Considere esta topología en la que el tráfico fluye desde la capa de acceso a través de la distribución y el núcleo y hacia el Data Center.
Suponga que para alcanzar la red 10.1.1.1 del Router 1 (R1) [Superior Izquierda ], hay dos rutas de igual costo (L1 , L2). La decisión acerca de cuál de los dos links se utiliza es tomada por un algoritmo de hash. De forma predeterminada, la IP de origen (SIP) y la IP de destino (DIP) se utilizan como parámetros en el algoritmo hash.
A continuación se muestra una descripción del funcionamiento del algoritmo de hash:
Cuando sólo hay dos trayectos, el switch/router realiza una operación OR exclusiva (XOR) en los bits de orden inferior (un bit cuando se debe seleccionar uno de dos enlaces, dos bits para 3-4 links, etc.) del SIP y DIP. La operación XOR del mismo SIP y DIP siempre da como resultado el uso del paquete del mismo link.
Luego, el paquete pasa a la capa de distribución, donde se utiliza el mismo algoritmo de hash junto con la misma entrada de hash, y elige un único link para todos los flujos, lo que deja al otro link infrautilizado. Este proceso se denomina polarización CEF (uso del mismo algoritmo hash y la misma entrada de hash que da lugar al uso de un único enlace de ruta múltiple de igual coste (ECMP) para todos los flujos).
Este ejemplo ilustra este proceso con más detalle:
- El tráfico originado desde 10.240.18.1 y destinado a 10.240.20.1 ingresa a la red en el Router A y es conmutado por CEF. Debido a que hay dos trayectorias de igual costo a la red 10.240.20.0/24, las direcciones de origen y destino en el paquete pasan a través del algoritmo hash, y el resultado es una trayectoria específica usada para alcanzar el destino. En este caso, el trayecto que toman los paquetes es hacia el Router C. A partir de ahí, los paquetes van al Router F y hacia su destino final.
- El tráfico originado desde 10.240.18.2 y destinado a 10.240.20.1 ingresa a la red en el Router A y también es conmutado por CEF. Debido a que hay dos trayectorias de igual costo a la red 10.240.20.0/24, las direcciones de origen y destino en el paquete pasan a través del algoritmo hash y CEF elige una trayectoria. En este caso, la trayectoria que toman los paquetes es hacia el Router B.
- El tráfico originado desde 10.240.18.3 y destinado a 10.240.20.1 ingresa a la red en el Router A y también es conmutado por CEF. Debido a que hay dos trayectorias de igual costo a la red 10.240.20.0/24, las direcciones de origen y destino en el paquete pasan a través del algoritmo hash y CEF elige una trayectoria. En este caso, la trayectoria que toman los paquetes es hacia el Router B.
- Los paquetes originados desde 10.240.18.2 y 10.240.18.3 llegan al Router B, que nuevamente tiene dos trayectorias de igual costo para alcanzar 10.240.20.1. De nuevo, ejecuta estos conjuntos de pares de origen y destino a través del algoritmo hash, que produce los mismos resultados que el algoritmo hash en el Router A. Esto significa que ambos flujos de paquetes pasan por un trayecto - en este caso, el link hacia el Router E. El link hacia el Router D no recibe tráfico.
- Después de recibir el tráfico originado en 10.240.18.2 y 10.240.18.3 en el Router E, se lo conmuta a lo largo de la trayectoria al Router F y luego se lo conecta a su destino final.
Cómo evitar la polarización CEF
- Alternar entre la configuración de entrada de hashing predeterminada (SIP y DIP) y completa (puertos SIP + DIP + capa 4) en cada capa de la red.
El Catalyst 6500 proporciona algunas opciones para el algoritmo de hashing:
- Default - Use la dirección IP de origen y destino, con pesos desiguales dados a cada link para evitar la polarización.
- Simple: utilice la dirección IP de origen y de destino, con el mismo peso dado a cada link.
- Completo: utilice la dirección IP de origen y destino y el número de puerto de Capa 4, con pesos desiguales.
- Completa sencilla: utilice la dirección IP de origen y de destino y el número de puerto de capa 4, con los mismos pesos dados a cada link.
6500(config)#mls ip cef load-sharing ?
full load balancing algorithm to include L4 ports
simple load balancing algorithm recommended for a single-stage CEF router
6500(config)#mls ip cef load-sharing full ?
simple load balancing algorithm recommended for a single-stage CEF router
<cr>
Actualmente, no existen comandos para verificar el algoritmo de carga compartida en uso. La mejor manera de averiguar qué método está en uso es verificar la configuración actual a través del comando show running-config. Si no hay ninguna configuración que comience con mls ip cef load-sharing, el algoritmo de peso desigual de origen y destino predeterminado está en uso.
Nota: 1) El Catalyst 6500 no admite la distribución de carga por paquete. 2) La opción full NO incluye un ID universal en hash. Si se utiliza en cada capa de una topología multicapa, es posible la polarización. Se recomienda utilizar la opción simple con este comando para lograr un mejor reparto de la carga y para utilizar menos adyacencias de hardware.
- Alternar entre un número par e impar de links ECMP en cada capa de la red.
El balanceo de carga CEF no depende de cómo se inserten las rutas del protocolo en la tabla de ruteo. Por lo tanto, las rutas OSPF muestran el mismo comportamiento que EIGRP. En una red jerárquica donde hay varios routers que realizan el uso compartido de carga en una fila, todos utilizan el mismo algoritmo para el uso compartido de carga.
El algoritmo de troceo carga-balancea de esta manera de forma predeterminada:
1: 1
2: 7-8
3: 1-1-1
4: 1-1-1-2
5: 1-1-1-1-1
6: 1-2-2-2-2-2
7: 1-1-1-1-1-1-1
8: 1-1-1-2-2-2-2-2
El número antes de los dos puntos representa el número de trayectos de igual costo. El número después del signo de dos puntos representa la proporción de tráfico que se reenvía por ruta.
Esto significa que:
- Para dos rutas de igual costo, la distribución de la carga es del 46,666%-53,333%, no del 50%-50%.
- Para tres rutas de igual costo, la distribución de la carga es del 33,33%-33,33%-33,33% (como se esperaba).
- Para cuatro rutas de igual costo, la distribución de la carga es del 20%-20%-20%-40% y no del 25%-25%-25%-25%.
Esto ilustra que, cuando existe un número par de links ECMP, el tráfico no está balanceado de carga
Una manera de inhabilitar la polarización de CEF es el peso anti-polarización, que se introdujo en la versión 12.2(17d)SXB2.
Para habilitar el peso anti-polarización, ingrese este comando :
6500(config)# mls ip cef load-sharing full simple
Utilice este comando si hay dos trayectos de igual costo y ambos deben utilizarse de la misma manera. La adición de la palabra clave simple permite que el hardware utilice el mismo número de adyacencias que en la adyacencia CEF de Cisco IOS®. Sin la palabra clave simple, el hardware instala entradas de adyacencia adicionales para evitar la polarización de la plataforma.
- Cisco IOS introdujo un concepto llamado identificador único/ID universal que ayuda a evitar la polarización de CEF. Este algoritmo, denominado algoritmo universal (el valor predeterminado en las versiones actuales de Cisco IOS), agrega un valor específico de router de 32 bits a la función hash (denominado ID universal: es un valor generado aleatoriamente en el momento del inicio del switch que se puede controlar manualmente). Esto siembra la función hash en cada router con un ID único, lo que asegura que el mismo par de origen/destino se hash en un valor diferente en diferentes routers a lo largo de la trayectoria. Este proceso proporciona un mejor uso compartido de la carga en toda la red y elude el problema de polarización. Este concepto único -ID no funciona para un número par de trayectos de igual costo debido a una limitación de hardware, pero funciona perfectamente para un número impar de trayectos de igual costo. Para superar este problema, Cisco IOS agrega un link a la tabla de adyacencia de hardware cuando hay un número par de trayectos de igual costo para hacer que el sistema crea que hay un número impar de links de igual costo.
Para configurar un valor personalizado para el ID universal, utilice:
6500(config)ip cef load-sharing algorithm universal