Dell Unity: Het LACP trunk of bond load-balancing algoritme wijzigen (op te lossen door Dell)
Summary: Het LACP-verkeer (Link Aggregation Control Protocol) wordt gebalanceerd voor schrijfbewerkingen naar de Unity SP's via een LACP-trunk of -binding, maar wordt niet gelijkmatig verdeeld wanneer antwoorden worden verzonden op leesverzoeken. ...
Symptoms
Onder bepaalde netwerkomstandigheden en -omgevingen kan het standaardalgoritme standaard één interface gebruiken.
Voorbeelden:
Wanneer het bron-MAC-adres hetzelfde is (ook wel bij gebruik van een router), zal de MAC altijd hetzelfde zijn en zal de poort die wordt gebruikt voor transmissies altijd hetzelfde zijn.
Onder bijzondere omstandigheden kunnen verschillende MAC's ook tot dezelfde waarde leiden.
Als MAC's bijvoorbeeld altijd eindigen op een even getal (0, 2, 4, 6, 8, A, C of E) en er twee poorten in de LACP-trunk of -binding zijn, zal de berekening van de hash het verkeer ook elke keer door dezelfde poort leiden.
LACP-trunks of -bindingen laten zien dat het verkeer niet in balans is, waarbij een enkele interface wordt gebruikt in plaats van alle interfaces gelijkmatig.
Dit kan worden bevestigd in het productienetwerk (door de netwerkswitch SysAdmins) of door te kijken naar de grafische netwerkweergave in Unisphere onder SYSTEEMPRESTATIES>.
netstat -i' Uitvoer in de Service Shell.
Cause
LACP op de Unity gebruikt layer2 als standaard-xmit_hash_policy.
Het gebruik van Layer2+3 als de "xmit_hash_policy" is bedoeld om een evenwichtigere verdeling van het verkeer te bieden dan Layer2 alleen, vooral in omgevingen waar een layer3-gatewayapparaat vereist is om de meeste bestemmingen te bereiken.
Referentie: https://www.kernel.org/doc/Documentation/networking/bonding.txt
Layer2 gebruikt XOR van hardware-MAC-adressen en het ID-veld van het pakkettype om de hash te genereren.
De formule is
hash = source MAC XOR destination MAC XOR packet type ID slave number = hash modulo slave count.
Layer2+3 gebruikt een combinatie van layer2- en layer3-protocolinformatie om de hash te genereren.
De hash wordt gegenereerd met behulp van een combinatie van de XOR van de hardware MAC-adressen en de IP-adressen.
De formule is
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.
Zowel Layer2 als Layer2+3 zijn 802.3ad-compatibel.
Resolution
Voor Unity OE-code 4.3 en hoger:
Wijzig de xmit_hash_policy met de svc_network_bond bevelen.
Dell Unity™ reeks versie 4.3: Technische opmerkingen voor serviceopdrachten - pagina 74.
Gebruik:
svc_network_bond [-h|--help] -d <device> {-s -o <option> -v <value>} {-g [-o <option>]}
De syntaxis is vergelijkbaar met het onderstaande voorbeeld:
service@(none) spb:~> svc_network_bond -s -d bond23 -o xmit_hash_policy -v 2
De aanvaardbare waarden voor xmit_hash_policy zijn:
0 of laag2 Standaardinstelling
: deze parameter gebruikt de XOR van hardware-MAC-adressen om de hash te genereren.
1 of laag3+4 Gebruikt protocolinformatie over de bovenste laag (indien beschikbaar) om de hash te genereren.
Hierdoor kan verkeer naar een bepaalde netwerkpeer meerdere slaves omvatten, hoewel een enkele verbinding niet meerdere slaves zal omvatten.
2 of laag2+3 Gebruikt een combinatie van laag2- en laag3-protocolinformatie om de hash te genereren - Mode 2 of Layer2+3-algoritme voldoet aan 802.3ad.
Voor Unity OE-code 4.2.3.9670635 en ouder:
Neem contact op met de klantenservice van Dell en vermeld dit KBA-nummer.
Voor Unity OE-code 5.3.x of hoger
Voor het aanbrengen van de wijziging is de serviceshell niet vereist en opnieuw opstarten is niet vereist.
Hier volgt een voorbeeld van het instellen van de Unity Array in de xmit_hash_policy van ons lab.
Deze Unity-array is geconfigureerd met een LACP-trunk die bekend staat als bond22.
Stuur SSH naar de Unity array met behulp van het serviceaccount.
Controleer eerst waarop de xmit_hash_policy is ingesteld.
# 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 #
Stel vervolgens de xmit_hash_policy in op 2
# 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 als arp Vereisen dat de Service Shell is ingeschakeld.
Voorbeeld 'netstat -i' output, die de leden van een bond toont en kan worden gebruikt om te bepalen of verkeer wordt gehasht.
In dit voorbeeld bestaat 'bond20' (de LACP-binding) uit de interfaces 'eth20' en 'eth21'.
Let op het verschil in de kolom TX-OK, die het uitgaande verkeer van de Unity vertegenwoordigt.
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
Voorbeelduitvoer van arp op de serviceshell waarin de MAC-adressen (HWaddress) voor elk IP-adres worden weergegeven.
Deze moeten verschillend zijn voor LACP om het verkeer nauwkeurig te verdelen over meerdere fysieke poorten.
Er zijn verschillende interfaces die moeten filteren op de interface die u gebruikt.
Gebruik
'ip addr' om de "Iface" die is toegewezen aan het IP-adres dat u wilt onderzoeken.
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