Dell Unity: Como alterar o algoritmo de balanceamento de carga do vínculo ou tronco LACP (corrigível pela Dell)

Summary: O tráfego do protocolo de controle de agregação de links (LACP) é balanceado para gravações nas SPs do Unity em um tronco ou vínculo LACP, mas não é equilibrado uniformemente quando as respostas são enviadas às solicitações de leitura. ...

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

Em determinadas condições e ambientes de rede, o algoritmo padrão pode usar como padrão uma única interface.

Exemplos:

Quando o endereço MAC de origem é o mesmo (também conhecido como quando se usa um roteador), o MAC será sempre o mesmo e a porta usada para transmissões será sempre a mesma.

Além disso, em circunstâncias especiais, MACs diferentes também podem resultar no mesmo valor.  
Por exemplo, se os MACs sempre terminam em um número par (0,2,4,6,8,A,C ou E) e há duas portas no tronco ou vínculo LACP, o cálculo do hash direcionará o tráfego pela mesma porta todas as vezes também.

Os troncos ou vínculos LACP mostram que o tráfego não está balanceado usando uma única interface em vez de todas as interfaces uniformemente.
Isso pode ser confirmado na rede de produção (pelos SysAdmins do switch de rede) ou observando a exibição gráfica da rede no Unisphere em Desempenho do sistema>.


Largura de banda da porta Ethernet
 
Nota: Isso também pode ser visto em 'netstat -i' Saída no shell de serviço.  

Cause

O LACP no Unity usa a camada 2 como seu "xmit_hash_policy" padrão.

Usar a camada 2+3 como a "xmit_hash_policy" destina-se a fornecer uma distribuição de tráfego mais equilibrada do que a camada 2 sozinha, especialmente em ambientes onde um dispositivo de gateway de camada 3 é necessário para alcançar a maioria dos destinos.

Referência: https://www.kernel.org/doc/Documentation/networking/bonding.txtEsse hiperlink direcionará você para um site fora da Dell Technologies.

Layer2 usa XOR de endereços MAC de hardware e campo de ID de tipo de pacote para gerar o hash.
A fórmula é

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


Layer2+3 usa uma combinação de informações de protocolo layer2 e layer3 para gerar o hash.
O hash é gerado usando uma combinação do XOR dos endereços MAC de hardware e os endereços IP.
A fórmula é

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.


Tanto a Layer2 quanto a Layer2+3 são compatíveis com 802.3ad.

Resolution

Para o código OE 4.3 e posterior do Unity:

Altere o xmit_hash_policy com o svc_network_bond comando.
Família Dell Unity™ versão 4.3: Notas técnicas dos comandos de serviço — página 74.
Uso:

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


A sintaxe seria semelhante à do exemplo abaixo:

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


Os valores aceitáveis para xmit_hash_policy are:


0 ou layer2 Configuração
padrão Esse parâmetro usa o XOR de endereços MAC de hardware para gerar o hash.

1 ou layer3+4 Usa informações de protocolo da camada superior (quando disponíveis) para gerar o hash.
Isso permite que o tráfego para um ponto de rede específico abranja vários escravos, embora uma única conexão não abranja vários escravos.

2 ou layer2+3 Usa uma combinação de informações de protocolo layer2 e layer3 para gerar o hash - O algoritmo Mode 2 ou Layer2+3 é compatível com 802.3ad.



Para o código OE do Unity 4.2.3.9670635 e anterior:

Entre em contato com o serviço de atendimento ao cliente Dell e mencione este número KBA.

Para código OE do Unity 5.3.x ou posterior
Fazer a alteração não exige o shell de serviço e nenhuma reinicialização é necessária.
Este é um exemplo de configuração do array Unity no xmit_hash_policy do laboratório.
Esse array do Unity é configurado com um tronco LACP conhecido como bond22.
SSH no array Unity usando a conta de serviço.

Primeiro, verifique qual é a configuração do 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
#

Em seguida, defina o xmit_hash_policy como 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.
#
Verifique se xmit_hash_policy foi configurado como 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: Os utilitários de linha de comando netstat e arp Exigem que o shell de serviço esteja ativado.


Exemplo 'netstat -i' output, que mostra os membros de um vínculo e pode ser usado para determinar se o tráfego está sendo hash.  
Neste exemplo, 'bond20' (o vínculo LACP) é composto pelas interfaces 'eth20' e 'eth21'.  
Observe a diferença na coluna TX-OK, que representa o tráfego de saída do 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

Exemplo de saída de "arp" no shell de serviço que mostra os endereços MAC (HWaddress) para cada endereço IP. 
Eles devem ser diferentes para que o LACP balanceie com precisão o tráfego de carga em várias portas físicas.  
Há várias interfaces que devem ser filtradas pela interface que você está usando.  
Use 'ip addr' para encontrar o "Iface" que é atribuído ao endereço IP que você deseja investigar.
 
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.