Dell Unity: Zmiana algorytmu równoważenia obciążenia łącza LACP lub wiązania (z możliwością naprawienia przez firmę Dell)
Summary: Ruch protokołu LACP (Link Aggregation Control Protocol) jest zrównoważony w przypadku zapisu do SP Unity za pośrednictwem łącza trunkingowego lub wiązania LACP, ale nie jest równomiernie zrównoważony, gdy odpowiedzi są wysyłane do żądań odczytu. ...
Symptoms
W pewnych warunkach sieciowych i środowiskach domyślny algorytm może domyślnie używać jednego interfejsu.
Przykłady:
Gdy źródłowy adres MAC jest taki sam (np. w przypadku korzystania z routera), adres MAC będzie zawsze taki sam, a port używany do transmisji będzie zawsze taki sam.
Ponadto, w szczególnych okolicznościach, różne adresy MAC mogą również dawać tę samą wartość.
Na przykład, jeśli adresy MAC zawsze kończą się liczbą parzystą (0,2,4,6,8,A,C lub E) i istnieją dwa porty w magistrali lub wiązaniu LACP, obliczenie skrótu spowoduje skierowanie ruchu przez ten sam port za każdym razem.
Łącza lub powiązania LACP pokazują, że ruch nie jest zrównoważony, korzystając z jednego interfejsu zamiast wszystkich interfejsów równomiernie.
Można to potwierdzić w sieci produkcyjnej (za pomocą narzędzia SysAdmin przełącznika sieciowego) lub patrząc na graficzny wyświetlacz sieciowy w Unisphere w sekcji SYSTEM >Performance.
netstat -i' Dane wyjściowe w powłoce usługi.
Cause
LACP w Unity używa layer2 jako domyślnego "xmit_hash_policy".
Użycie warstwy 2+3 jako "xmit_hash_policy" ma na celu zapewnienie bardziej zrównoważonej dystrybucji ruchu niż sama warstwa 2, szczególnie w środowiskach, w których urządzenie bramy warstwy 3 jest wymagane do dotarcia do większości miejsc docelowych.
Numer referencyjny: https://www.kernel.org/doc/Documentation/networking/bonding.txt
Warstwa 2 używa XOR sprzętowych adresów MAC i pola identyfikatora typu pakietu do wygenerowania skrótu.
Wzór jest następujący:
hash = source MAC XOR destination MAC XOR packet type ID slave number = hash modulo slave count.
Warstwa 2+3 używa kombinacji informacji o protokole warstwy 2 i warstwy 3 do wygenerowania skrótu.
Skrót jest generowany przy użyciu kombinacji XOR sprzętowych adresów MAC i adresów IP.
Wzór jest następujący:
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.
Zarówno warstwa 2, jak i warstwa 2+3 są zgodne ze standardem 802.3ad.
Resolution
W przypadku Unity OE Code 4.3 i nowszych:
Zmień parametr xmit_hash_policy z svc_network_bond polecenie.
Rodzina Dell Unity™ w wersji 4.3: Polecenia serwisowe — uwagi techniczne — strona 74.
Zwyczaj:
svc_network_bond [-h|--help] -d <device> {-s -o <option> -v <value>} {-g [-o <option>]}
Składnia byłaby podobna do poniższego przykładu:
service@(none) spb:~> svc_network_bond -s -d bond23 -o xmit_hash_policy -v 2
Dopuszczalne wartości dla xmit_hash_policy są:
0 lub layer2 Ustawienie
domyślne: ten parametr używa XOR sprzętowych adresów MAC do wygenerowania skrótu.
1 lub layer3+4 Używa informacji o protokole górnej warstwy (jeśli są dostępne) do wygenerowania skrótu.
Pozwala to na to, aby ruch do określonego peera sieci obejmował wiele urządzeń podrzędnych, chociaż pojedyncze połączenie nie obejmie wielu urządzeń podrzędnych.
2 lub layer2+3 Używa kombinacji informacji o protokole warstw2 i warstwy3 do wygenerowania skrótu — algorytm Mode 2 lub Layer2+3 jest zgodny ze standardem 802.3ad.
W przypadku kodu Unity OE 4.2.3.9670635 i starszych:
Skontaktuj się z działem obsługi klienta firmy Dell i powołaj się na ten numer artykułu bazy wiedzy.
W przypadku kodu Unity OE 5.3.x lub nowszego
Wprowadzenie zmiany nie wymaga powłoki usługi i nie jest wymagane ponowne uruchomienie.
Oto przykład ustawiania macierzy Unity w xmit_hash_policy naszego laboratorium.
Macierz Unity jest skonfigurowana z łączem LACP znanym jako bond22.
Połącz się z macierzą Unity za pomocą SSH przy użyciu konta usługi.
Najpierw sprawdź, na co jest ustawiony jego xmit_hash_policy.
# 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 #
Następnie ustaw xmit_hash_policy na 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 i arp Wymagaj włączenia powłoki usług.
Przykład 'netstat -i' output, który pokazuje elementy członkowskie powiązania i może służyć do określenia, czy ruch jest haszowany.
W tym przykładzie 'bond20' (wiązanie LACP) składa się z interfejsów 'eth20' i 'eth21'.
Zwróć uwagę na różnicę w kolumnie TX-OK, która reprezentuje ruch wychodzący z aparatu Unity.
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
Przykładowy wynik "arp" w powłoce usługi, który pokazuje adresy MAC (HWaddress) dla każdego adresu IP.
Powinny one wyglądać inaczej w przypadku protokołu LACP, aby dokładnie równoważyć obciążenie ruchu na wielu portach fizycznych.
Istnieje kilka interfejsów, które należy filtrować według używanego interfejsu.
Użyj
'ip addr' , aby znaleźć "Iface", który jest przypisany do adresu IP, który chcesz zbadać.
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