Einführung
In diesem Dokument wird beschrieben, wie die Polarisierung mit Cisco Express Forwarding (CEF) die suboptimale Nutzung redundanter Pfade zu einem Zielnetzwerk verursachen kann. Die CEF-Polarisierung ist der Effekt, wenn ein Hash-Algorithmus einen bestimmten Pfad auswählt und die redundanten Pfade vollständig ungenutzt bleiben.
Voraussetzungen
Anforderungen
Für dieses Dokument bestehen keine speziellen Anforderungen.
Verwendete Komponenten
Die Informationen in diesem Dokument basieren auf einem Cisco Catalyst Switch der Serie 6500, der auf einer Supervisor Engine 720 ausgeführt wird.
Die Informationen in diesem Dokument wurden von den Geräten in einer bestimmten Laborumgebung erstellt. Alle in diesem Dokument verwendeten Geräte haben mit einer leeren (Standard-)Konfiguration begonnen. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen.
Hintergrundinformationen
CEF schaltet die Pakete auf der Grundlage der Routing-Tabelle um, die von den Routing-Protokollen belegt wird, z. B. EIGRP (Enhanced Interior Gateway Routing Protocol) und OSPF (Open Shortest Path First). CEF führt einen Lastenausgleich durch, sobald die Routing-Tabelle (RIB) berechnet wird. In einem hierarchischen Netzwerkdesign können viele redundante Pfade auf Layer 3 (L3) mit gleichen Kosten vorhanden sein. Betrachten wir diese Topologie, in der der Datenverkehr vom Access Layer über den Distribution-Layer und den Core bis zum Rechenzentrum fließt.
Nehmen wir an, dass es für die Erreichbarkeit des Netzwerks 10.1.1.1 von Router 1 (R1) [Oben links] zwei Equal-Cost-Pfade (L1, L2) gibt. Die Entscheidung, welche der beiden Links verwendet wird, wird durch einen Hashing-Algorithmus getroffen. Standardmäßig werden die Quell-IP (SIP) und die Ziel-IP (DIP) als Parameter im Hash-Algorithmus verwendet.
Im Folgenden wird die Funktionsweise des Hashing-Algorithmus beschrieben:
Wenn nur zwei Pfade vorhanden sind, führt der Switch/Router einen exklusiven OR-Betrieb (XOR) für die Bits der unteren Ordnung (ein Bit, wenn eine von zwei Verbindungen ausgewählt werden muss, zwei Bit für 3-4 Verbindungen usw.) des SIP und DIP durch. Der XOR-Betrieb desselben SIP und DIP führt immer zur Paketverwendung derselben Verbindung.
Das Paket wird dann an den Distribution Layer weitergeleitet, wo der gleiche Hash-Algorithmus zusammen mit der gleichen Hash-Eingabe verwendet wird. Anschließend wird eine einzelne Verbindung für alle Datenflüsse ausgewählt, sodass die andere Verbindung nicht voll ausgelastet ist. Dieser Prozess wird als CEF-Polarisierung bezeichnet (Verwendung desselben Hash-Algorithmus und derselben Hash-Eingabe, die zur Verwendung einer einzigen Equal-Cost Multi-Path (ECMP)-Verbindung für ALLE Flows führt).
Dieses Beispiel veranschaulicht diesen Prozess genauer:
- Datenverkehr, der von 10.240.18.1 stammt und für 10.240.20.1 bestimmt ist, geht an Router A in das Netzwerk ein und ist CEF-Switched. Da es zwei Equal-Cost-Pfade zum 10.240.20.0/24-Netzwerk gibt, durchlaufen die Quell- und Zieladressen des Pakets den Hash-Algorithmus, und das Ergebnis ist ein bestimmter Pfad zum Erreichen des Ziels. In diesem Fall verläuft der Pfad der Pakete zum Router C. Von dort gehen die Pakete zum Router F und zum endgültigen Ziel.
- Datenverkehr, der von 10.240.18.2 stammt und für 10.240.20.1 bestimmt ist, geht an Router A in das Netzwerk ein und ist ebenfalls CEF-geswitcht. Da es zwei Equal-Cost-Pfade zum 10.240.20.0/24-Netzwerk gibt, durchlaufen die Quell- und Zieladressen des Pakets den Hash-Algorithmus, und CEF wählt einen Pfad. In diesem Fall verläuft der Pfad der Pakete zum Router B.
- Datenverkehr, der von 10.240.18.3 stammt und für 10.240.20.1 bestimmt ist, geht an Router A in das Netzwerk ein und ist auch CEF-Switched. Da es zwei Equal-Cost-Pfade zum 10.240.20.0/24-Netzwerk gibt, durchlaufen die Quell- und Zieladressen des Pakets den Hash-Algorithmus, und CEF wählt einen Pfad. In diesem Fall verläuft der Pfad der Pakete zum Router B.
- Die Pakete, die von 10.240.18.2 und 10.240.18.3 stammen, kommen beide an Router B an, der wiederum über zwei kostengünstige Pfade bis 10.240.20.1 verfügt. Diese Quell- und Zielpaare werden erneut über den Hash-Algorithmus ausgeführt, der dieselben Ergebnisse liefert wie der Hash-Algorithmus auf Router A. Dies bedeutet, dass beide Paketströme einen Pfad durchlaufen - in diesem Fall die Verbindung zu Router E. Die Verbindung zu Router D empfängt keinen Datenverkehr.
- Nachdem der Datenverkehr, der von 10.240.18.2 und 10.240.18.3 stammt, auf Router E empfangen wurde, wird er auf dem Pfad zu Router F umgeschaltet und dann zum endgültigen Ziel weitergeleitet.
Vermeidung von Polarisierung mit CEF
- Als Alternative zwischen Standard-Hashing (SIP und DIP) und vollständigem Hashing (SIP + DIP + Layer4-Ports) wird die Konfiguration auf jeder Netzwerkschicht eingegeben.
Der Catalyst 6500 bietet einige Optionen für den Hash-Algorithmus:
- Standard - Verwenden Sie die Quell- und Ziel-IP-Adresse, wobei jeder Verbindung ungleiche Gewichte zugewiesen werden, um Polarisierung zu verhindern.
- Einfach - Verwenden Sie die Quell- und Ziel-IP-Adresse, wobei jedem Link das gleiche Gewicht zugewiesen wird.
- Voll - Verwenden Sie die Quell- und Ziel-IP-Adresse und die Layer-4-Portnummer mit ungleichen Gewichten.
- Vollständig einfach: Verwenden Sie die Quell- und Ziel-IP-Adresse und die Layer-4-Portnummer, wobei für jede Verbindung das gleiche Gewicht angegeben wird.
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>
Derzeit gibt es keine Befehle zum Überprüfen des verwendeten Lastverteilungsalgorithmus. Am besten können Sie herausfinden, welche Methode verwendet wird, indem Sie die aktuelle Konfiguration mit dem Befehl show running-config überprüfen. Wenn keine Konfiguration vorhanden ist, die mit der Lastverteilung mls ip cef beginnt, wird der Standard-Algorithmus zur ungleichen Gewichtsverteilung von Quelle und Ziel verwendet.
Hinweis: 1) Der Catalyst 6500 unterstützt keine Lastverteilung pro Paket. 2) Die vollständige Option enthält KEINE universelle ID im Hash. Wenn sie auf jeder Ebene einer Multilayer-Topologie verwendet wird, ist eine Polarisierung möglich. Es wird empfohlen, die einfache Option mit diesem Befehl zu verwenden, um eine bessere Lastverteilung und eine geringere Anzahl an Hardware-Adjacencies zu erreichen.
- Alternative zwischen einer geraden und ungeraden Anzahl von ECMP-Verbindungen auf jeder Netzwerkschicht.
Der CEF-Lastenausgleich hängt nicht davon ab, wie die Protokollrouten in die Routing-Tabelle eingefügt werden. Daher zeigen die OSPF-Routen das gleiche Verhalten wie EIGRP. In einem hierarchischen Netzwerk mit mehreren Routern, die die Lastverteilung in einer Reihe durchführen, verwenden alle denselben Algorithmus für die Lastverteilung.
Die Lastverteilung des Hash-Algorithmus erfolgt standardmäßig wie folgt:
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
Die Zahl vor dem Doppelpunkt stellt die Anzahl der Pfade mit gleichen Kosten dar. Die Zahl nach dem Doppelpunkt stellt den Anteil des Datenverkehrs dar, der pro Pfad weitergeleitet wird.
Das bedeutet:
- Bei zwei gleichen Kostenpfaden beträgt die Lastverteilung 46,666 % bis 53,333 %, nicht 50 % bis 50 %.
- Bei drei gleichen Kostenpfaden beträgt die Lastverteilung 33,33 % - 33,33 % - 33,33 % (wie erwartet).
- Bei vier gleichen Kostenpfaden liegt die Lastverteilung bei 20 % bis 20 % bis 40 % und nicht bei 25 % bis 25 % bis 25 %.
Dies zeigt, dass bei einer geringen Anzahl von ECMP-Verbindungen kein Load Balancing des Datenverkehrs erfolgt.
Eine Möglichkeit zur Deaktivierung der CEF-Polarisierung ist das Anti-Polarisationsgewicht, das in Version 12.2(17d)SXB2 eingeführt wurde.
Um Anti-Polarisation Gewicht zu aktivieren, geben Sie den folgenden Befehl ein:
6500(config)# mls ip cef load-sharing full simple
Verwenden Sie diesen Befehl, wenn zwei Pfade mit gleichen Kosten vorhanden sind und beide gleichermaßen verwendet werden müssen. Durch das Hinzufügen des Schlüsselworts Simple kann die Hardware die gleiche Anzahl von Adjacencies verwenden wie die Cisco IOS® CEF-Adjacency. Ohne das simple Schlüsselwort installiert die Hardware zusätzliche Adjacency-Einträge, um eine Polarisierung der Plattform zu vermeiden.
- Cisco IOS hat ein Konzept namens eindeutiger ID/universeller ID eingeführt, das eine Polarisierung der CEF verhindert. Dieser Algorithmus, der universelle Algorithmus (der Standardwert in aktuellen Cisco IOS-Versionen), fügt der Hash-Funktion einen 32-Bit-Router-spezifischen Wert hinzu (die so genannte universelle ID - dies ist ein willkürlich generierter Wert zum Zeitpunkt des Switch-Bootvorgangs, der manuell gesteuert werden kann). Dadurch wird die Hash-Funktion auf jedem Router mit einer eindeutigen ID versehen, wodurch sichergestellt wird, dass dasselbe Quell-/Zielpaar auf verschiedenen Routern entlang des Pfads in einen anderen Wert hash. Dieser Prozess sorgt für eine bessere netzwerkweite Lastverteilung und umgeht das Polaritätsproblem. Dieses einzigartige -ID-Konzept funktioniert aufgrund einer Hardware-Einschränkung nicht für eine gerade Anzahl von Pfaden mit gleichen Kosten, aber es funktioniert perfekt für eine seltsame Anzahl von Pfaden mit gleichen Kosten. Um dieses Problem zu beheben, fügt Cisco IOS der Hardware-Adjacency-Tabelle einen Link hinzu, wenn es eine gerade Anzahl von Pfaden zu gleichen Kosten gibt, damit das System davon ausgeht, dass es eine ungerade Anzahl von Links zu gleichen Kosten gibt.
Um einen benutzerdefinierten Wert für die universelle ID zu konfigurieren, verwenden Sie:
6500(config)ip cef load-sharing algorithm universal