Introduzione
In questo documento vengono descritti gli scenari in cui potrebbe verificarsi la polarizzazione nel bilanciamento del carico del canale della porta e vengono forniti suggerimenti per prevenirli.
Prerequisiti
Requisiti
Cisco raccomanda la conoscenza dei seguenti argomenti:
Componenti usati
Il documento può essere consultato per tutte le versioni software o hardware.
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Introduzione
La polarizzazione è un problema in cui l'algoritmo hash seleziona alcuni percorsi nella rete e lascia inutilizzati i percorsi ridondanti.
Topologia
Configurazione
N7K1 e N7K2 sono collegati in VPC e Po100, Po200, Po300 e Po301 sono in VPC port-channel.
N7K1 e N7K2 funzionano come switch L2 puro e su questi switch non viene eseguito alcun routing.
Tutti gli switch eseguono lo stesso algoritmo di bilanciamento del carico del canale della porta.
Il problema della polarizzazione viene rilevato sul traffico in uscita dalle N7K1 e N7K2, a prescindere dal fatto che il traffico tra l'origine e la destinazione si trovi sulla stessa VLAN (senza routing) o su VLAN diverse con routing in corso sulle N7K3 o N7k4.
Flusso traffico
L'origine invia più flussi alla destinazione (con più indirizzi IP di origine e destinazione, e le informazioni sulla porta L4 variano anche da pacchetto a pacchetto). Per garantire che in una situazione ideale il traffico sia distribuito equamente tra le interfacce membro del canale della porta, viene usata una buona combinazione di traffico.
Il traffico proveniente dalla sorgente arriva alla linea N7k3/N7k4 per passare poi alla destinazione via N7K1/N7K2.
Un collegamento tra i collegamenti membri di Po100 e Po200 su ciascuno dei collegamenti N7K1 e N7K2 invia quasi il 99% del traffico e l'altro rimane inattivo. In altre parole, su ciascuno switch N7K1 e N7K2, un collegamento tra 4/2 e 4/3 trasporta il 99% del traffico unicast e l'altro meno dell'1%. Analogamente, un collegamento tra 9/2 e 9/3 comporta il 99% del traffico e l'altro meno dell'1%. L'output della sezione sulla risoluzione dei problemi mostra il traffico sulle interfacce membro Po100 e Po200 su N7K1. Uscita simile si può vedere su N7K2.
Indipendentemente dal tipo di algoritmo di bilanciamento del carico del canale della porta utilizzato, il problema può essere considerato se lo stesso algoritmo di bilanciamento del carico del canale della porta viene utilizzato sulla coppia N7K1/N7K2 e sulla coppia N7K3/N7K4. Di seguito è riportato il comando per controllare l'algoritmo di bilanciamento del carico del canale della porta:
N7K1# show port-channel load-balance
Warning: Per Packet Load balance configuration has higher precedence
System config:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
Port Channel Load-Balancing Configuration for all modules:
Module 1:
Non-IP: src-dst mac
IP: src-dst ip rotate 0
Module 2:
Non-IP: src-dst mac
IP: src-dst ip rotate 0
Module 3:
Non-IP: src-dst mac
IP: src-dst ip rotate 0
Module 4:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
Module 7:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
Module 8:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
Module 9:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
Risoluzione dei problemi
Se il bilanciamento del carico non è uniforme su una porta-canale, può essere dovuto alla polarizzazione.
Quando il traffico raggiunge gli switch N7K3 e N7K4, viene inoltrato agli switch N7K1/N7K2 tramite Po301 di N7K4 e Po300 di N7K3. In questo caso, viene attivato l'algoritmo di bilanciamento del carico e alcuni flussi vengono inoltrati all'N7K1, mentre altri flussi vengono inoltrati all'N7K2.
Inizialmente, tutto il traffico arriva negli switch N7K3/N7K4 su eth1/1 e, in base all'indirizzo IP src-dst e alle informazioni sulla porta l4, alcuni flussi vengono hashati sul collegamento diretto verso N7K1 e altri flussi sul collegamento diretto verso N7K2. L'hashing viene eseguito in base al valore rbh calcolato dallo switch. Per semplicità, si supponga che, in base all'algoritmo di bilanciamento del carico utilizzato, lo switch separi il traffico in entrata in due flussi (flusso X e flusso Y). Il flusso X viene inviato dal collegamento di un membro del canale della porta e il flusso Y viene inviato dall'altro collegamento del membro del canale della porta.
Ora, quando il traffico sta atterrando sulla coppia N7K1/N7K2, ci possono essere due possibilità. Considerate X e Y intercambiabili.
Caso 1:
N7K3 ha inviato il flusso X a N7K1 e il flusso Y a N7K2
N7K4 ha inviato il flusso Y a N7K1 e il flusso X a N7K2
Caso2:
N7K3 ha inviato il flusso X a N7K1 e il flusso Y a N7K2
N7K4 ha inviato il flusso X a N7K1 e il flusso Y a N7K2
Nel caso 1, N7K1 e N7K2 ricevono entrambi i tipi di flussi (flusso X e flusso Y) e anche dopo aver utilizzato lo stesso algoritmo di bilanciamento del carico del canale della porta utilizzato da N7K3/N7K4, nessuna polarizzazione sarebbe vista come i flussi in uscita da Po100 e Po200 su collegamenti diversi. Pertanto, si verifica una migliore distribuzione del traffico tra le interfacce membro del canale della porta.
Nel caso 2, N7K1 riceve solo il flusso X e N7K2 riceve solo il flusso Y e ciò potrebbe creare polarizzazione se l'algoritmo di bilanciamento del carico del canale della porta usato su questi switch è lo stesso usato nella coppia N7K3/N7K4. Poiché N7K1 e N7K2 utilizzano lo stesso algoritmo di bilanciamento del carico del canale della porta, N7K1 invia il flusso X su un solo collegamento membro di Po100/Po200 e l'altro collegamento membro non inoltra alcun traffico. Analogamente, N7K2 invia il flusso Y su un solo collegamento membro di Po100/Po200 e l'altro collegamento membro non inoltra alcun traffico.
Poiché il traffico che riceve gli switch N7K1 e N7K2 è già classificato come traffico iniziale, viene utilizzato un solo collegamento di membro canale porta per inviare tutto il traffico in entrata dallo switch N7K1/N7K2 e non verrà inviato nulla dall'altro collegamento di membro. Se la velocità del traffico in entrata supera la larghezza di banda del collegamento tra una porta e il canale, il traffico aggiuntivo può essere scartato in quanto l'altro collegamento tra il membro del canale della porta non inoltrerebbe questo traffico.
Un problema simile si può verificare quando si usano più di due collegamenti nel canale della porta. Ad esempio, se in un canale di porta vengono utilizzati quattro collegamenti, a seconda dell'hashing non si verifica alcuna polarizzazione oppure viene rilevata una polarizzazione parziale in cui solo due dei quattro collegamenti membri del canale di porta vengono utilizzati per inoltrare tutto il traffico in entrata. Gli altri due collegamenti non inoltrano alcun messaggio
La polarizzazione è causata dal progetto ed è quindi importante analizzare il progetto per accertarsi che non si verifichi alcuna polarizzazione. Di seguito viene mostrata l'uscita che indica la polarizzazione che avviene su Po100 e Po200 su N7k1 (un output simile può essere visto anche su N7K2).
N7K1# show port-channel summary | i 200
200 Po200(SU) Eth LACP Eth9/2(P) Eth9/3(P)
N7K1# show port-channel traffic interface port-channel 200
NOTE: Clear the port-channel member counters to get accurate statistics
ChanId Port Rx-Ucst Tx-Ucst Rx-Mcst Tx-Mcst Rx-Bcst Tx-Bcst
------ --------- ------- ------- ------- ------- ------- -------
200 Eth9/2 0.0% 99.99% 44.44% 4.00% 0.0% 100.00%
200 Eth9/3 0.0% 0.00% 55.55% 96.00% 0.0% 0.0%
N7K1# show port-channel summary | i 100
100 Po100(SU) Eth LACP Eth4/2(P) Eth4/3(P)
N7K1# show port-channel traffic interface port-channel 100
NOTE: Clear the port-channel member counters to get accurate statistics
ChanId Port Rx-Ucst Tx-Ucst Rx-Mcst Tx-Mcst Rx-Bcst Tx-Bcst
------ --------- ------- ------- ------- ------- ------- -------
100 Eth4/2 0.0% 99.99% 40.55% 7.00% 0.0% 100.00%
100 Eth4/3 0.0% 0.00% 54.44% 93.00% 0.0% 0.0%
Soluzioni
In questa sezione vengono descritte alcune delle soluzioni utilizzate per evitare la polarizzazione.
- Progettazione corretta: poiché la causa principale della polarizzazione è una progettazione non corretta, è consigliabile modificare la progettazione della rete per assicurarsi che non vi sia spazio per la polarizzazione nella topologia.
Se non è possibile apportare modifiche al progetto, è possibile eseguire le operazioni seguenti.
- Utilizzare algoritmi di bilanciamento del carico del canale della porta diversi a ogni livello di switch (un algoritmo sulla coppia N7K1/N7k2 e un algoritmo diverso sulla coppia N7K3/N7k4). Quando si modifica l'algoritmo di bilanciamento del carico, gli switch N7k1/N7k2 eseguono ora l'hashing del traffico in entrata in base ad alcune informazioni diverse da quelle utilizzate dagli switch N7k3/N7k4. Pertanto, il traffico in uscita utilizza tutti i collegamenti membro porta-canale. (la decisione sull'algoritmo da scegliere dipende dal tipo di traffico ricevuto dallo switch.)
- Se si desidera utilizzare lo stesso algoritmo di bilanciamento del carico, utilizzare valori di rotazione diversi a ogni livello di switch. Il
rotate comando introduce la casualità nell'algoritmo di hashing compensando l'input hash con i byte configurati dall'utente e aiuta a evitare la polarizzazione. Utilizzate un valore di rotazione per la coppia N7k1/N7k2 e un valore di rotazione diverso per la coppia N7k3/N7k4.