Dell Unity: Ändern des LACP-Trunk- oder Bond-Lastenausgleichsalgorithmus (von Dell korrigierbar)
Summary: Der LACP-Datenverkehr (Link Aggregation Control Protocol) wird für Schreibvorgänge auf die Unity-SPs über einen LACP-Trunk oder eine Bündelung ausgeglichen, aber nicht gleichmäßig, wenn Antworten auf Leseanforderungen gesendet werden. ...
Symptoms
Unter bestimmten Netzwerkbedingungen und -umgebungen verwendet der Standardalgorithmus möglicherweise standardmäßig eine einzige Schnittstelle.
Beispiele:
Wenn die Quell-MAC-Adresse identisch ist (d. h. bei Verwendung eines Routers), ist die MAC immer identisch und der Port, der für Übertragungen verwendet wird, ist immer derselbe.
Unter besonderen Umständen können auch unterschiedliche MACs zum gleichen Wert führen.
Wenn MACs beispielsweise immer mit einer geraden Zahl enden (0, 2, 4, 6, 8, A, C oder E) und es zwei Ports im LACP-Trunk oder -Bond gibt, wird der Datenverkehr bei der Berechnung des Hash auch jedes Mal über denselben Port geleitet.
LACP-Trunks oder -Bonds zeigen an, dass der Datenverkehr nicht ausgeglichen ist und nur eine einzige Schnittstelle statt gleichmäßig alle Schnittstellen verwendet.
Dies kann im Produktionsnetzwerk (durch die Netzwerkswitch-Systemadministratoren) oder durch einen Blick auf die grafische Netzwerkanzeige in Unisphere unter SYSTEM >Performance bestätigt werden.
netstat -i' Ausgabe in der Service-Shell.
Cause
LACP auf Unity verwendet layer2 als standardmäßigen "xmit_hash_policy".
Die Verwendung von Layer2+3 als "xmit_hash_policy" soll eine ausgewogenere Verteilung des Datenverkehrs als Layer2 allein bieten, insbesondere in Umgebungen, in denen ein Layer3-Gateway-Gerät erforderlich ist, um die meisten Ziele zu erreichen.
Referenz: https://www.kernel.org/doc/Documentation/networking/bonding.txt
Layer2 verwendet XOR der Hardware-MAC-Adressen und das Pakettyp-ID-Feld, um den Hash zu erzeugen.
Die Formel lautet:
hash = source MAC XOR destination MAC XOR packet type ID slave number = hash modulo slave count.
Layer2+3 verwendet eine Kombination aus Layer2- und Layer3-Protokollinformationen, um den Hash zu erzeugen.
Der Hash wird mit einer Kombination aus dem XOR der Hardware-MAC-Adressen und den IP-Adressen erzeugt.
Die Formel lautet:
hash = source MAC XOR destination MAC XOR packet type ID hash = hash XOR source IP XOR destination IP hash = hash XOR (hash RSHIFT 16) hash = hash XOR (hash RSHIFT 8) And then hash is reduced modulo slave count.
Sowohl Layer2 als auch Layer2+3 sind 802.3ad-konform.
Resolution
Für Unity OE-Code 4.3 und höher:
Ändern Sie die xmit_hash_policy mit dem svc_network_bond Befehl.
Dell Unity-Produktreihe™ Version 4.3: Servicebefehle – Technische Hinweise – Seite 74.
Verwendung:
svc_network_bond [-h|--help] -d <device> {-s -o <option> -v <value>} {-g [-o <option>]}
Die Syntax ähnelt dem folgenden Beispiel:
service@(none) spb:~> svc_network_bond -s -d bond23 -o xmit_hash_policy -v 2
Die zulässigen Werte für xmit_hash_policy sind:
0 oder layer2 Standardeinstellung
: Dieser Parameter verwendet das XOR der Hardware-MAC-Adressen, um den Hash zu erzeugen.
1 oder layer3+4 Verwendet Protokollinformationen der oberen Schicht (falls verfügbar), um den Hash zu erzeugen.
Auf diese Weise kann der Datenverkehr zu einem bestimmten Netzwerk-Peer mehrere Slaves umfassen, obwohl eine einzelne Verbindung nicht mehrere Slaves umfasst.
2 oder layer2+3: Verwendet eine Kombination aus Layer2- und Layer3-Protokollinformationen, um den Hash zu erzeugen. Modus 2 oder Layer2+3-Algorithmus ist 802.3ad-konform.
Für Unity OE-Code 4.2.3.9670635 und älter:
Wenden Sie sich an den Dell Customer Service und geben Sie diese KBA-Nummer an.
Für Unity OE Code 5.3.x oder höher
Für die Änderung ist keine Service-Shell erforderlich und es ist kein Neustart erforderlich.
Hier ist ein Beispiel für das Einstellen des Unity-Arrays in der xmit_hash_policy unseres Labors.
Dieses Unity-Array ist mit einem LACP-Trunk namens bond22 konfiguriert.
Stellen Sie über das Servicekonto eine SSH-Verbindung zum Unity-Array her.
Überprüfen Sie zunächst, worauf der xmit_hash_policy eingestellt ist.
# svc_network_bond --get --device bond22 -o xmit_hash_policy INFO: Selected device: bond22 INFO: Option to show: xmit_hash_policy INFO: Execution code: 0 xmit_hash_policy=0 #
Legen Sie als Nächstes den xmit_hash_policy auf 2 fest
# svc_network_bond --set --device bond22 -o xmit_hash_policy -v 2 INFO: Selected device: bond22 INFO: Option to modify: xmit_hash_policy INFO: Requested value: 2 WARNING: Do you want to proceed? [yes/no]: yes <<<<<< sometimes y works and sometimes it fails on the first attempts. Retry then. INFO: Execution code: 0 INFO: Option 'xmit_hash_policy' has been successfully changed. #
# svc_network_bond --get --device bond22 -o xmit_hash_policy INFO: Selected device: bond22 INFO: Option to show: xmit_hash_policy INFO: Execution code: 0 xmit_hash_policy=2 #
Additional Information
netstat und arp Die Service-Shell muss aktiviert sein.
Beispiel 'netstat -i' output, die die Mitglieder einer Bündelung anzeigt und verwendet werden kann, um festzustellen, ob Datenverkehr gehasht wird.
In diesem Beispiel besteht "bond20" (die LACP-Bindung) aus den Schnittstellen "eth20" und "eth21".
Beachten Sie den Unterschied in der Spalte TX-OK, die den ausgehenden Datenverkehr von Unity darstellt.
21:12:03 service@(none) spb:~> netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg bond20 9000 0 101724658 0 11 0 126087418 0 0 0 BMmRU cmin0 9000 0 14341258 0 0 0 11301712 0 0 0 BMRU eth2 1500 0 0 0 0 0 0 0 0 0 BMU eth3 1500 0 0 0 0 0 0 0 0 0 BMU eth10 1500 0 0 0 0 0 0 0 0 0 BMU eth11 1500 0 0 0 0 0 0 0 0 0 BMU eth12 1500 0 0 0 0 0 0 0 0 0 BMU eth13 1500 0 0 0 0 0 0 0 0 0 BMU eth20 9000 0 52249885 0 1 0 38317 0 0 0 BMsRU eth21 9000 0 49474773 0 10 0 126049101 0 0 0 BMsRU eth22 1500 0 0 0 0 0 0 0 0 0 BMU eth23 1500 0 0 0 0 0 0 0 0 0 BMU eth_int 9000 0 14341055 0 0 0 11301598 0 0 0 BMRU eve_br0 1500 0 16 0 0 0 3656 0 0 0 BMRU lo 65536 0 963282566 0 0 0 963282566 0 0 0 LRU mgmt 1500 0 1405994 0 64 0 360538 0 0 0 BMRU mgmt_vdev 1500 0 356150 0 64 0 326216 0 0 0 BMRU srm 1500 0 135650 0 64 0 5 0 0 0 BMRU vetheve1 1500 0 16 0 0 0 3647 0 0 0 BMRU
Beispielausgabe von "arp" in der Service-Shell, in der die MAC-Adressen (HW-Adressen) für jede IP-Adresse angezeigt werden.
Diese sollten unterschiedlich sein, damit LACP einen präzisen Lastenausgleich des Datenverkehrs über mehrere physische Ports hinweg durchführen kann.
Es gibt mehrere Schnittstellen, die nach der verwendeten Schnittstelle filtern müssen.
Verwenden Sie
'ip addr' So finden Sie die "Iface", die der IP-Adresse zugewiesen ist, die Sie untersuchen möchten.
19:23:33 service@(none) spa:~> arp Address HWtype HWaddress Flags Mask Iface 10.98.25.61 ether 00:25:b5:02:01:fc C bond20 10.98.25.60 ether 00:25:b5:02:00:1c C bond20 10.98.25.70 ether 00:25:b5:02:00:dc C bond20 10.98.25.63 ether 00:25:b5:02:01:8c C bond20 10.98.25.65 ether 00:25:b5:02:01:6c C bond20 10.98.25.62 ether 00:25:b5:02:01:dc C bond20 10.98.25.64 ether 00:25:b5:02:01:9c C bond20 10.98.25.67 ether 00:25:b5:02:01:0c C bond20 10.98.25.66 ether 00:25:b5:02:01:7c C bond20 10.98.25.59 ether 00:25:b5:02:00:0c C bond20 peer ether 8e:92:80:4d:2d:02 C eth_int 10.98.25.69 ether 00:25:b5:02:00:fc C bond20 10.98.25.1 ether 00:08:e3:ff:fd:90 C bond20 10.98.25.68 ether 00:25:b5:02:01:1c C bond20