Dell Unity: Come modificare l'algoritmo di bilanciamento del carico del trunk o del bond LACP (correggibile da Dell)

Summary: Il traffico LACP (Link Aggregation Control Protocol) è bilanciato per le scritture negli SP Unity su un trunk o un bond LACP, ma non è bilanciato in modo uniforme quando le risposte vengono inviate alle richieste di lettura. ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

In determinate condizioni e ambienti di rete, l'algoritmo predefinito potrebbe utilizzare per impostazione predefinita un'unica interfaccia.

Esempi:

Quando l'indirizzo MAC di origine è lo stesso (ovvero quando si utilizza un router), il MAC sarà sempre lo stesso e la porta utilizzata per le trasmissioni sarà sempre la stessa.

Inoltre, in circostanze speciali, MAC diversi possono generare lo stesso valore.  
Ad esempio, se i MAC terminano sempre con un numero pari (0,2,4,6,8,A,C o E) e sono presenti due porte nel trunk o nel bond LACP, il calcolo dell'hash indirizzerà il traffico attraverso la stessa porta ogni volta.

I trunk o i collegamenti LACP mostrano che il traffico non è bilanciato, utilizzando un'unica interfaccia anziché tutte le interfacce in modo uniforme.
Questa operazione può essere confermata sulla rete di produzione (dagli amministratori di sistema dello switch di rete) o osservando la visualizzazione grafica della rete in Unisphere in SYSTEM >Performance.


Larghezza di banda della porta Ethernet
 
NOTA: Questo può essere visto anche in 'netstat -i' Output nella shell di servizio.  

Cause

LACP su Unity utilizza il livello 2 come "xmit_hash_policy" predefinito.

L'utilizzo di Layer2+3 come "xmit_hash_policy" ha lo scopo di fornire una distribuzione più bilanciata del traffico rispetto al solo Layer2, soprattutto negli ambienti in cui è richiesto un dispositivo gateway di livello 3 per raggiungere la maggior parte delle destinazioni.

Riferimento: https://www.kernel.org/doc/Documentation/networking/bonding.txtQuesto link ipertestuale indirizza a un sito web esterno a Dell Technologies.

Layer2 utilizza XOR degli indirizzi MAC hardware e il campo ID del tipo di pacchetto per generare l'hash.
La formula è

hash = source MAC XOR destination MAC XOR packet type ID
slave number = hash modulo slave count.


Layer2+3 utilizza una combinazione di informazioni di protocollo layer2 e layer3 per generare l'hash.
L'hash viene generato utilizzando una combinazione di XOR degli indirizzi MAC hardware e degli indirizzi IP.
La formula è

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.


Sia Layer2 che Layer2+3 sono conformi allo standard 802.3ad.

Resolution

Per Unity OE Code 4.3 e versioni successive:

Modificare la xmit_hash_policy colla svc_network_bond comando.
Famiglia Dell Unity™ versione 4.3: Note tecniche sui comandi di servizio - pagina 74.
Uso:

 svc_network_bond [-h|--help] -d <device> {-s -o <option> -v <value>} {-g [-o <option>]}


La sintassi sarebbe simile all'esempio seguente:

service@(none) spb:~> svc_network_bond -s -d bond23 -o xmit_hash_policy -v 2


I valori accettabili per xmit_hash_policy sono:


0 o layer2 Impostazione
predefinita Questo parametro utilizza lo XOR degli indirizzi MAC hardware per generare l'hash.

1 o layer3+4 Utilizza le informazioni sul protocollo del livello superiore (se disponibili) per generare l'hash.
Ciò consente al traffico verso un particolare peer di rete di estendersi su più slave, anche se una singola connessione non si estenderà su più slave.

2 o layer2+3: utilizza una combinazione di informazioni sul protocollo layer2 e layer3 per generare l'hash: l'algoritmo Mode 2 o Layer2+3 è conforme a 802.3ad.



Per Unity OE codice 4.2.3.9670635 e versioni precedenti:

Contattare l'assistenza clienti Dell e fare riferimento a questo numero KBA.

Per Unity OE Code 5.3.x o versione successiva
Se si apporta la modifica, non è necessaria la Service Shell e non è necessario riavviare il sistema.
Di seguito è riportato un esempio di impostazione di Unity Array nel xmit_hash_policy del laboratorio.
Questo Unity Array è configurato con un trunk LACP noto come bond22.
Accedere con SSH all'array Unity utilizzando l'account di servizio.

Innanzitutto, verificare l'impostazione del 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
#

Quindi, imposta il xmit_hash_policy su 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.
#
Verificare se xmit_hash_policy stato configurato su 2
# 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

NOTA: Utilità della riga di comando netstat e arp Richiede l'abilitazione della Service Shell.


Esempio 'netstat -i' output, che mostra i membri di un bond e può essere utilizzato per determinare se il traffico viene sottoposto ad hashing.  
In questo esempio, 'bond20' (il bond LACP) è costituito dalle interfacce 'eth20' e 'eth21'.  
Si noti la differenza nella colonna TX-OK, che rappresenta il traffico in uscita da 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

Esempio di output di 'arp' sulla shell di servizio che mostra gli indirizzi MAC (HWaddress) per ogni indirizzo IP. 
Questi devono essere diversi per consentire al LACP di bilanciare con precisione il carico del traffico su più porte fisiche.  
Esistono diverse interfacce che devono essere filtrate in base all'interfaccia in uso.  
Utilizzare 'ip addr' per trovare il "Iface" assegnato all'indirizzo IP che si desidera analizzare.
 
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

Affected Products

Dell EMC Unity Family

Products

Dell EMC Unity Family, VNXe2 Series
Article Properties
Article Number: 000034481
Article Type: Solution
Last Modified: 04 Jul 2025
Version:  6
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.