Inhalt

Einführung

Hintergrund

Voraussetzungen

Topologie

Konfiguration

Datenverkehrsfluss

Fehlerbehebung

Problemumgehung

Einführung

In diesem Dokument werden die Szenarien erläutert, in denen eine Polarisierung beim Port-Channel-Lastenausgleich erfolgen könnte, und es werden Vorschläge zur Vermeidung dieser Szenarien gegeben.

Hintergrund

Polarisierung ist ein Problem, bei dem der Hash-Algorithmus bestimmte Pfade im Netzwerk auswählt und redundante Pfade ungenutzt lässt.

Voraussetzungen

Es wird empfohlen, über Kenntnisse zu den folgenden Themen zu verfügen.

Link Aggregation Control Protocol

Cisco Nexus-Plattformen

Topologie

Konfiguration

N7K1 und N7K2, die mit VPC und Po100, Po200, Po300 und Po301 verbunden sind, befinden sich im VPC-Port-Channel.

N7K1 und N7K2 fungieren als reine L2-Switches ohne Routingvorgänge auf diesen Switches.

Alle Switches verwenden denselben Port-Channel-Lastenausgleichsalgorithmus.

Das Polarisationsproblem zeigt sich beim Datenverkehr, der von N7K1 und N7K2 ausgeht, unabhängig davon, ob sich der Datenverkehr von der Quelle zum Ziel im gleichen VLAN (ohne Routing) befand oder ob sich dieser in einem anderen VLAN befand, während das Routing auf N7K3 oder N7k4 stattfindet.

Datenverkehrsfluss

Die Quelle sendet mehrere Streams an das Ziel (mit mehreren Quell- und Ziel-IP-Adressen, und die L4-Portinformationen variieren ebenfalls von Paket zu Paket). Eine gute Mischung aus Datenverkehr wird verwendet, um sicherzustellen, dass der Datenverkehr in einer idealen Situation gleichmäßig auf die Schnittstellen der Port-Channel-Teilnehmer verteilt wird.

Der Datenverkehr vom Quellland auf N7k3/N7k4 und dann über N7K1/N7K2 zum Ziel.

Eine Verbindung zwischen den Mitglieds-Verbindungen von Po100 und Po200 auf jedem der N7K1 und N7K2 sendet fast 99 % des Datenverkehrs aus, und die andere Verbindung bleibt inaktiv. (d. h. auf jedem Switch N7K1 und N7K2 führt eine Verbindung zwischen 4/2 und 4/3 99 % Unicast-Datenverkehr und die andere Verbindung weniger als 1 %, ähnlich überträgt eine Verbindung zwischen 9/2 und 9/3 99 % Datenverkehr und die andere Verbindung weniger als 1 %. Ausgabe im Abschnitt "Fehlerbehebung" zeigt den Datenverkehr an den Schnittstellen po100 und po200 von N7K1, eine ähnliche Ausgabe ist auf N7K2 zu sehen.)

Unabhängig vom verwendeten Algorithmus zum Port-Channel-Lastenausgleich kann das Problem auftreten, wenn für das N7K1/N7K2-Paar und das N7K3/N7K4-Paar derselbe Algorithmus zum Port-Channel-Lastenausgleich verwendet wird. Der Befehl zur Überprüfung des Port-Channel-Lastenausgleichsalgorithmus ist unten aufgeführt.

N7K1# show port-channel load-balance

Warning: Per Packet Load balance configuration has higher precedence

System config:

Non-IP: src-dst mac

IP: src-dst ip-l4port-vlan rotate 0

Port Channel Load-Balancing Configuration for all modules:

Module 1:

Non-IP: src-dst mac

IP: src-dst ip rotate 0

Module 2:

Non-IP: src-dst mac

IP: src-dst ip rotate 0

Module 3:

Non-IP: src-dst mac

IP: src-dst ip rotate 0

Module 4:

Non-IP: src-dst mac

IP: src-dst ip-l4port-vlan rotate 0

Module 7:

Non-IP: src-dst mac

IP: src-dst ip-l4port-vlan rotate 0

Module 8:

Non-IP: src-dst mac

IP: src-dst ip-l4port-vlan rotate 0

Module 9:

Non-IP: src-dst mac

IP: src-dst ip-l4port-vlan rotate 0

Fehlerbehebung

Wird ein ungleichmäßiger Lastenausgleich auf einem Port-Channel beobachtet, kann dies durch Polarisierung geschehen.

Wenn der Datenverkehr die N7K3- und N7K4-Switches erreicht, werden sie über Po301 von N7K4 und Po300 von N7K3 an die N7K1/N7K2-Switches weitergeleitet. Hier wird ein Load Balancing-Algorithmus aktiviert, und einige Datenflüsse werden an N7K1 und andere an N7K2 weitergeleitet.

Zunächst wird der gesamte Datenverkehr an die Switches N7K3/N7K4 an der eth1/1 geleitet. Basierend auf den src dest ip- und l4-Port-Informationen werden bestimmte Datenflüsse an der Verbindung gehasht, die zu N7K1 führt, und andere Datenflüsse, die an der Verbindung zu N7K2 gesendet werden. Das Hashing erfolgt auf Basis des RBH-Werts, der vom Switch berechnet wird. Aus Gründen der Einfachheit sollten wir davon ausgehen, dass der Switch den eingehenden Datenverkehr basierend auf dem verwendeten Lastenausgleichsalgorithmus in zwei Datenflüsse (Fluss X und Fluss Y) aufteilt. Flow X wird von einer Port-Channel-Mitglieds-Verbindung gesendet und Fluss Y von der anderen Port-Channel-Mitglieds-Verbindung gesendet.

Wenn der Datenverkehr nun auf dem N7K1/N7K2-Paar landet, gibt es zwei Möglichkeiten. (X und Y sind austauschbar)

Fall 1:

N7K3 sendete Flow X an N7K1 und Flow Y an N7K2

und

N7K4 gesendet Flow Y an N7K1 und Flow X an N7K2

Fall 2:

N7K3 sendete Flow X an N7K1 und Flow Y an N7K2

und

N7K4 sendete Flow X an N7K1 und Flow Y an N7K2

In Fall 1 empfangen N7K1 und N7K2 beide Flows (Fluss X und Fluss Y) und selbst nach Verwendung desselben Port-Channel-Lastenausgleichsaldos-Algorithmus wie bei N7K3/N7K4 wird keine Polarisierung als Ausgangsströme aus Po100 und Po200 auf verschiedenen Verbindungen betrachtet. Daher wird eine bessere Verteilung des Datenverkehrs zwischen Port-Channel-Schnittstellen festgestellt.

In Fall 2 empfängt N7K1 nur den Flow X und N7K2 nur den Flow Y. Dies kann zu einer Polarisierung führen, wenn der auf diesen Switches verwendete Port-Channel-Lastverteilungsalgorithmus mit dem in N7K3/N7K4-Paaren verwendeten Algorithmus identisch ist. Da N7K1 und N7K2 denselben Port-Channel-Lastenausgleichsalgorithmus verwenden, sendet N7K1 Flow X für nur eine Mitglieds-Verbindung von Po100/Po200, und die andere Mitgliedsverbindung leitet keinen Datenverkehr weiter. Entsprechend sendet N7K2 den Fluss Y nur für eine Mitglieds-Verbindung des Po100/Po200, und die andere Mitglieds-Verbindung leitet keinen Datenverkehr weiter.

Da der Datenverkehr, den die Switches N7K1 und N7K2 empfangen, bereits als Ausgangspunkt klassifiziert ist, wird nur eine Port-Channel-Mitgliedsverbindung verwendet, um den gesamten eingehenden Datenverkehr über den Switch N7K1/N7K2 zu senden, und es wird nichts über die andere Mitglieds-Verbindung gesendet. Wenn die Rate für eingehenden Datenverkehr die Bandbreite der einzelnen Port-Channel-Verbindung überschreitet, kann der zusätzliche Datenverkehr verworfen werden, da die andere Port-Channel-Mitgliedsverbindung diesen Datenverkehr nicht weiterleitet.

Ein ähnliches Problem tritt auf, wenn mehr als zwei Verbindungen im Port-Channel verwendet werden. Wenn z. B. vier Verbindungen in einem Port-Channel verwendet werden, würde je nach dem Hashing entweder keine Polarisierung stattfinden oder es wird eine partielle Polarisierung gegeben, bei der nur zwei der vier Port-Channel-Member-Verbindungen zum Weiterleiten des gesamten eingehenden Datenverkehrs verwendet werden und die anderen beiden Verbindungen nichts weiterleiten.

Die Polarisierung wird durch das Design verursacht und daher ist es wichtig, das Design zu analysieren, um sicherzustellen, dass keine Polarisierung erfolgt. Die folgende Ausgabe zeigt die Polarisation von Po100 und Po200 auf N7k1 (ähnliche Ausgabe ist auch auf N7K2 zu sehen).

N7K1# show port-channel summary | i 200

200   Po200(SU)   Eth      LACP      Eth9/2(P)    Eth9/3(P)

N7K1# show port-channel traffic interface port-channel 200

NOTE: Clear the port-channel member counters to get accurate statistics

ChanId      Port Rx-Ucst Tx-Ucst Rx-Mcst Tx-Mcst Rx-Bcst Tx-Bcst

------ --------- ------- ------- ------- ------- ------- -------

200    Eth9/2    0.0%  99.99%  44.44%   4.00%    0.0% 100.00%

200    Eth9/3    0.0%   0.00%  55.55%  96.00%    0.0%    0.0%

N7K1# show port-channel summary | i 100

100   Po100(SU)   Eth      LACP      Eth4/2(P)    Eth4/3(P)

N7K1# show port-channel traffic interface port-channel 100

NOTE: Clear the port-channel member counters to get accurate statistics

ChanId      Port Rx-Ucst Tx-Ucst Rx-Mcst Tx-Mcst Rx-Bcst Tx-Bcst

------ --------- ------- ------- ------- ------- ------- -------

100    Eth4/2    0.0%  99.99%  40.55%   7.00%    0.0% 100.00%

100    Eth4/3    0.0%   0.00%  54.44%  93.00%    0.0%    0.0%

CSCvq26885 wurde für externe Dokumentation eingereicht.

Problemumgehung

Befolgen Sie einige der Workarounds, die verwendet werden können, um sicherzustellen, dass keine Polarisierung stattfindet.

1. Sachgerechtes Design: Da die Hauptursache für Polarisierung ein ungeeignetes Design ist, sollten wir sicherstellen, dass das Netzwerkdesign geändert wird, um sicherzustellen, dass keine Polarisierung in der Topologie möglich ist.

Wenn keine Änderungen am Design möglich sind, können wir folgende Schritte ausführen.

2. Verwenden Sie auf jeder Switch-Ebene verschiedene Port-Channel-Lastenausgleichsalgorithmen (ein Algorithmus für das N7K1/N7k2-Paar und ein anderer Algorithmus für das N7K3/N7k4-Paar). Wenn der Lastenausgleichsalgorithmus geändert wird, hash die N7k1/N7k2-Switches den eingehenden Datenverkehr jetzt auf der Grundlage anderer Informationen als der von N7k3/N7k4-Switches verwendeten, sodass der ausgehende Datenverkehr alle Verbindungen der Port-Channel-Teilnehmer verwendet. (Die Wahl des Algorithmus hängt von der Art des vom Switch empfangenen Datenverkehrs ab.)

3. Wenn der Kunde denselben Lastenausgleichsalgorithmus verwenden möchte, verwenden Sie auf jeder Switch-Ebene unterschiedliche Rotationswerte. Der Befehl "Rotieren" führt zu Zufälligkeit im Hashing-Algorithmus, indem die Hash-Eingabe nach benutzerdefinierten Byte ausgeglichen wird und eine Polarisierung verhindert wird. (Verwenden Sie einen rotierenden Wert für N7k1/N7k2-Paar und einen anderen rotierenden Wert für N7k3/N7k4-Paar.)