Introduction
Ce document décrit comment la polarisation CEF (Cisco Express Forwarding) peut entraîner une utilisation non optimale des chemins redondants vers un réseau de destination. La polarisation CEF est l'effet lorsqu'un algorithme de hachage choisit un chemin particulier et que les chemins redondants restent complètement inutilisés.
Conditions préalables
Conditions requises
Aucune spécification déterminée n'est requise pour ce document.
Components Used
Les informations de ce document sont basées sur un commutateur Cisco Catalyst 6500 qui fonctionne sur 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.
Informations générales
CEF commute les paquets en fonction de la table de routage qui est remplie par les protocoles de routage, tels que EIGRP (Enhanced Interior Gateway Routing Protocol) et OSPF (Open Shortest Path First). CEF effectue l'équilibrage de charge une fois la table de routage (RIB) calculée. Dans une conception de réseau hiérarchique, il peut y avoir de nombreux chemins redondants à coût égal de couche 3 (L3). Considérez cette topologie où le trafic circule de la couche d'accès à travers la distribution et le coeur de réseau et dans le data center.
Supposons que, pour atteindre le réseau 10.1.1.1 à partir du routeur 1 (R1) [en haut à gauche], il existe deux chemins de coût égal (L1, L2). La décision de l’une des deux liaisons est prise par un algorithme de hachage. Par défaut, les paramètres SIP (Source IP) et DIP (Destination IP) sont utilisés comme paramètres dans l'algorithme de hachage.
Voici une description du fonctionnement de l'algorithme de hachage :
Lorsqu'il n'y a que deux chemins, le commutateur/routeur effectue une opération d'OR exclusif (XOR) sur les bits d'ordre inférieur (un bit lorsque l'une des deux liaisons doit être sélectionnée, deux bits pour les liaisons 3 à 4, etc.) du SIP et du DIP. Le fonctionnement XOR du même SIP et du même DIP entraîne toujours l’utilisation du paquet de la même liaison.
Le paquet passe ensuite à la couche de distribution, où le même algorithme de hachage est utilisé avec la même entrée de hachage, et sélectionne une seule liaison pour tous les flux, ce qui laisse l'autre liaison sous-utilisée. Ce processus est appelé polarisation CEF (utilisation du même algorithme de hachage et de la même entrée de hachage qui entraîne l'utilisation d'une liaison ECMP (Equal-Cost Multi-Path) unique pour TOUS les flux).
Cet exemple illustre ce processus de manière plus détaillée :
- Le trafic provenant de 10.240.18.1 et destiné à 10.240.20.1 entre dans le réseau au niveau du routeur A et est commuté CEF. Comme il existe deux chemins de coût égal vers le réseau 10.240.20.0/24, les adresses source et de destination du paquet passent par l’algorithme de hachage et le résultat est un chemin spécifique utilisé pour atteindre la destination. Dans ce cas, le chemin emprunté par les paquets est vers le routeur C. À partir de là, les paquets vont vers le routeur F, puis vers leur destination finale.
- Le trafic provenant de 10.240.18.2 et destiné à 10.240.20.1 entre dans le réseau au niveau du routeur A et est également commuté CEF. Comme il existe deux chemins de coût égal vers le réseau 10.240.20.0/24, les adresses source et de destination du paquet passent par l’algorithme de hachage et CEF choisit un chemin. Dans ce cas, le chemin emprunté par les paquets est vers le routeur B.
- Le trafic provenant de 10.240.18.3 et destiné à 10.240.20.1 entre dans le réseau au niveau du routeur A et est également commuté CEF. Comme il existe deux chemins de coût égal vers le réseau 10.240.20.0/24, les adresses source et de destination du paquet passent par l’algorithme de hachage et CEF choisit un chemin. Dans ce cas, le chemin emprunté par les paquets est vers le routeur B.
- Les paquets provenant de 10.240.18.2 et 10.240.18.3 arrivent tous deux au routeur B, qui a à nouveau deux chemins de coût égal pour atteindre 10.240.20.1. Il exécute à nouveau ces ensembles de paires source et de destination via l’algorithme de hachage, qui produit les mêmes résultats que l’algorithme de hachage sur le routeur A. Cela signifie que les deux flux de paquets traversent un chemin, dans ce cas, la liaison vers le routeur E. La liaison vers le routeur D ne reçoit aucun trafic.
- Une fois que le trafic provenant des réseaux 10.240.18.2 et 10.240.18.3 est reçu sur le routeur E, il est commuté le long du chemin vers le routeur F, puis vers sa destination finale.
Comment éviter la polarisation CEF
- Alternate entre la configuration des entrées de hachage par défaut (SIP et DIP) et full (SIP + DIP + Layer4 ports) sur chaque couche du réseau.
Le Catalyst 6500 propose quelques options pour l'algorithme de hachage :
- Par défaut : utilisez les adresses IP source et de destination, avec des poids inégaux donnés à chaque liaison afin d'éviter la polarisation.
- Simple : utilisez les adresses IP source et de destination, avec un poids égal attribué à chaque liaison.
- Full : utilisez l'adresse IP source et de destination et le numéro de port de couche 4, avec des poids inégaux.
- Full Simple : utilisez l'adresse IP source et de destination et le numéro de port de couche 4, avec des poids égaux attribués à chaque liaison.
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>
Actuellement, il n'existe aucune commande permettant de vérifier l'algorithme de partage de charge utilisé. La meilleure façon de savoir quelle méthode est utilisée est de vérifier la configuration actuelle via la commande show running-config. Si aucune configuration n'est présente à partir du partage de charge mls ip cef, l'algorithme de poids inégal source et de destination par défaut est utilisé.
Note: 1) Le Catalyst 6500 ne prend pas en charge le partage de charge par paquet. 2) L'option full n'inclut PAS d'ID universel dans le hachage. Si elle est utilisée à chaque couche d’une topologie multicouche, la polarisation est possible. Il est conseillé d'utiliser l'option simple avec cette commande afin d'obtenir un meilleur partage de charge et d'utiliser moins de contiguïtés matérielles.
- Alternate entre un nombre pair et impair de liaisons ECMP au niveau de chaque couche du réseau.
L'équilibrage de charge CEF ne dépend pas de la manière dont les routes de protocole sont insérées dans la table de routage. Par conséquent, les routes OSPF présentent le même comportement que le protocole EIGRP. Dans un réseau hiérarchique où plusieurs routeurs effectuent le partage de charge sur une ligne, ils utilisent tous le même algorithme pour le partage de charge.
L'algorithme de hachage équilibre la charge de cette manière par défaut :
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
Le nombre avant le signe deux-points représente le nombre de chemins de coût égal. Le nombre après le signe deux-points représente la proportion du trafic qui est transféré par chemin.
Cela signifie que :
- Pour deux chemins de coût égal, le partage de charge est compris entre 46,666 % et 53,333 %, et non entre 50 % et 50 %.
- Pour trois chemins de coût égal, le partage de charge est compris entre 33,33 % et 33,33 % et 33,33 % (comme prévu).
- Pour quatre chemins de coût égal, le partage de charge est compris entre 20 % et 20 % et entre 25 % et 25 % et 25 % et 25 %.
Ceci montre que, quand il y a même un nombre de liaisons ECMP, le trafic n'est pas équilibré en charge
Une façon de désactiver la polarisation CEF est d'appliquer un poids d'anti-polarisation, qui a été introduit dans la version 12.2(17d)SXB2.
Afin d'activer le poids anti-polarisation, entrez cette commande :
6500(config)# mls ip cef load-sharing full simple
Utilisez cette commande s'il existe deux chemins de coût égal et que les deux doivent être utilisés de manière égale. L'ajout du mot clé simple permet au matériel d'utiliser le même nombre de contiguïtés que dans la contiguïté CEF de Cisco IOS®. Sans le mot clé simple, le matériel installe des entrées de contiguïté supplémentaires afin d'éviter la polarisation de la plate-forme.
- Cisco IOS a introduit un concept appelé ID unique/ID universel qui permet d'éviter la polarisation CEF. Cet algorithme, appelé algorithme universel (par défaut dans les versions actuelles de Cisco IOS), ajoute une valeur spécifique de routeur de 32 bits à la fonction de hachage (appelée ID universel - il s'agit d'une valeur générée aléatoirement au moment du démarrage du commutateur et pouvant être contrôlée manuellement). Cela entraîne la fonction de hachage sur chaque routeur avec un ID unique, ce qui garantit que la même paire source/destination hachera dans une valeur différente sur différents routeurs le long du chemin. Ce processus améliore le partage de charge à l'échelle du réseau et évite le problème de polarisation. Ce concept d'ID unique ne fonctionne pas pour un nombre pair de chemins de coût égal en raison d'une limitation matérielle, mais il fonctionne parfaitement pour un nombre impair de chemins de coût égal. Afin de résoudre ce problème, Cisco IOS ajoute un lien à la table de contiguïté matérielle lorsqu'il y a un nombre pair de chemins de coût égal afin de faire croire au système qu'il y a un nombre impair de liaisons de coût égal.
Afin de configurer une valeur personnalisée pour l'ID universel, utilisez :
6500(config)ip cef load-sharing algorithm universal