Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Premesse

Verifica

Identificazione dell'interfaccia interessata

Identificazione delle interfacce in entrata e in uscita

Allocazione buffer

Risoluzione dei problemi

Modifica allocazione buffer

Modifica buffer per coda

Analisi Delle Perdite Di Output Con Wireshark

Approcci alternativi

Informazioni correlate

Introduzione

Questo documento descrive come risolvere i problemi di output su interfacce ad alta velocità su piattaforme Catalyst serie 9000 con ASIC UADP.

Prerequisiti

Requisiti

Cisco raccomanda la conoscenza dei seguenti argomenti:

- Nozioni base sulla QoS standard

- CLI (Modular QoS Command Line Interface)

- Wireshark

Componenti usati

Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:

- Tipi di ASIC UADP 2.0 e UADP 3.0

- Catalyst 9200

- Catalyst 9300

- Catalyst 9400

- Catalyst 9500

- Catalyst 9600

- Software Cisco IOS® XE 16.X o 17.X

Nota: per i comandi che vengono usati per abilitare queste funzionalità su altre piattaforme Cisco, consultare la guida alla configurazione appropriata.

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.

Premesse

Le riduzioni dell'output sulle interfacce ad alta velocità sono un problema che può verificarsi in qualsiasi ambiente di rete, in particolare quando si tratta di interfacce che supportano velocità di trasferimento dei dati pari o superiori a 10 Gbps. Le perdite di output si verificano quando i pacchetti vengono scartati dall'interfaccia prima di poter essere trasmessi sulla rete.

L'interpretazione dell'utilizzo dell'interfaccia viene spesso fraintesa quando si verificano cali di output con bassi livelli di utilizzo:

- Quando si invia troppo traffico da una singola interfaccia, i buffer dell'interfaccia possono sovraccaricarsi e si verificano perdite di output. Un'interfaccia con un numero insufficiente di buffer può anche aumentare la probabilità di perdite di output.

- I cali di output possono essere causati anche da una mancata corrispondenza tra la velocità dell'interfaccia e la velocità del dispositivo collegato. Ad esempio, se un'interfaccia da 10 Gbps è collegata a un dispositivo che supporta solo una velocità di trasferimento dati di 1 Gbps, l'interfaccia può rilasciare i pacchetti se non è in grado di rallentare la velocità di trasferimento dati per adeguarla alle funzionalità del dispositivo.

Tuttavia, nella maggior parte dei casi, le perdite di output sono causate dal traffico di microburst che ha esaurito i buffer della porta:

- Un microburst si riferisce a un fenomeno in cui una grande quantità di traffico viene inviata in un periodo di tempo molto breve, in genere dura solo pochi millisecondi e supera la larghezza di banda disponibile dell'interfaccia.

- Quando si verifica un microburst, i dispositivi di rete devono inserire il traffico nel buffer finché non possono essere trasmessi alla rete. Se le dimensioni del buffer vengono superate, i pacchetti vengono scartati.

Il traffico di rete è spesso misurato dall'utilizzo medio di un collegamento (misurato in 30 secondi - 5 minuti a seconda della configurazione). Sebbene questa media mostri un flusso stabile e relativamente uniforme, se osservata a una scala di millisecondi l'utilizzo dell'interfaccia è spesso molto frammentato.

Figura 1. Mostra una rappresentazione visiva della causa sottostante delle perdite di output sull'interfaccia ad alta velocità.

1. I flussi di pacchetti A, B e C rappresentano gruppi di bit in un flusso.

2. I flussi A, B e C vengono trasmessi tramite l'interfaccia 100G e ricevuti allo switch dell'hop successivo.

3. Si noti che A e alcuni bit B vengono inoltrati correttamente all'esterno dell'interfaccia in uscita 10G.

- Tuttavia, quando il flusso C arriva, lo switch ha memorizzato nel buffer alcuni bit del flusso B a causa dell'impossibilità di rimuovere i bit dalla coda rapidamente quando arrivano.

- Il buffer diventa pieno e non può contenere sia i bit B rimanenti che tutti i bit del pacchetto C.

- Se il classificatore in entrata determina che non c'è spazio nemmeno per un bit del fotogramma successivo, scarta l'intero pacchetto!

4. Il flusso A e alcuni del flusso B vengono trasmessi tramite l'interfaccia 10G.

I termini "velocità/larghezza di banda" dell'interfaccia possono in qualche modo dare un nome improprio:

- Larghezza di banda = dati (bit)/tempo

- I bit non "accelerano fisicamente" quando attraversano da 10G > 100G > 10G

La differenza di "velocità" è la capacità di interfoliazione/numero di corsie/numero di impulsi per intervallo di tempo, meccanismo di codifica e così via, rispetto al mezzo (luce/elettroni) che va più veloce.

Suggerimento: utilizzare il comando load-interval <30-600> in modalità di configurazione interfaccia per modificare il ritardo dell'intervallo di caricamento in secondi. (l'intervallo di caricamento rappresenta la frequenza con cui lo switch esegue il polling dei contatori dell'interfaccia).

Verifica

La risoluzione dei problemi di output su interfacce ad alta velocità può essere un processo complesso, ma di seguito sono riportati alcuni passaggi generali che possono aiutare a identificare e risolvere il problema:

Identificare l'interfaccia interessata:

- Iniziare restringendo l'interfaccia che sperimenta i cali di output.

- Usare il comando show interfaces | include is up|L'output totale elimina l'output del comando o utilizza gli strumenti di monitoraggio per determinare l'interfaccia che deve affrontare il problema.

Identifica interfacce in entrata e in uscita:

- Per verificare i mapping tra l'interfaccia e ASIC, eseguire il comando show platform software fed <switch|active> ifm mapping.

Verifica allocazione buffer:

- È importante verificare l'allocazione del buffer e la configurazione dell'interfaccia per le interfacce interessate.

Verificare i microburti con Wireshark:

- Le cadute di output sulle interfacce ad alta velocità possono spesso essere causate da microburst del traffico.

- Usare strumenti di analisi del traffico come Wireshark per monitorare i modelli di traffico e identificare eventuali microburst potenziali.

Considerare l'aggiornamento dell'hardware:

- Se i passaggi precedenti non risolvono il problema, è necessario aggiornare l'hardware, ad esempio l'interfaccia, il dispositivo o l'infrastruttura di rete, per gestire l'aumento del traffico.

Identificazione dell'interfaccia interessata

Per identificare l'interfaccia interessata che presenta perdite di output, utilizzare il comando show interfaces.

- Questo comando fornisce informazioni dettagliate su ciascuna interfaccia, incluse statistiche sugli errori di input e output, sui pacchetti ignorati e altre informazioni critiche.

Per ridurre l'elenco delle interfacce e identificare rapidamente l'interfaccia interessata, usare il comando show interfaces | include is up|Il comando Totale output drops per filtrare le interfacce verso il basso o admin down e visualizzare solo quelle attive e quelle con drop.

- Ad esempio, è possibile utilizzare questo comando per visualizzare solo le interfacce che hanno sperimentato perdite di output.

Cat9k(config)#show interfaces | in is up|Total output drops

HundredGigE1/0/1 is up, line protocol is up (connected)

Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 54845

HundredGigE1/0/10 is up, line protocol is up (connected)

Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 1540231

--snip--

Suggerimento: utilizzare il comando show interfaces e filtrare l'output con i criteri appropriati per identificare rapidamente e facilmente l'interfaccia interessata. Adottare le misure necessarie per risolvere il problema.

Per impostazione predefinita, sugli switch Catalyst serie 9000 i pacchetti in uscita vengono mostrati in byte anziché in pacchetti. È importante determinare se la quantità di riduzioni di output rilevate ha avuto un impatto reale o è stata semplicemente causata da un traffico temporaneo in modalità bursty.

Per calcolare la percentuale dei byte di output totali trasmessi su un'interfaccia e scartati:

- Raccoglie il conteggio totale delle perdite di output dall'interfaccia.

- Raccoglie il conteggio totale dei byte di output dall'interfaccia.

- Calcolare la percentuale di perdite di output. Dividere il conteggio totale delle perdite di output per il conteggio totale dei byte di output e moltiplicarlo per 100.

Questa opzione fornisce la percentuale di byte di output scartati sull'interfaccia e consente di determinare se si è verificato un problema di congestione o di allocazione del buffer da risolvere o se le perdite di output sono state causate da traffico microbus temporaneo.

Per raccogliere le informazioni, usare il comando show interface <interface>.

Cat9k#show interfaces twentyFiveGigE 1/0/41

TwentyFiveGigE1/0/41 is up, line protocol is up (connected)

Hardware is Twenty Five Gigabit Ethernet, address is dc77.4c8a.4289 (bia dc77.4c8a.4289)

MTU 1500 bytes, BW 25000000 Kbit/sec, DLY 10 usec,

reliability 255/255, txload 3/255, rxload 1/255

Encapsulation ARPA, loopback not set

Keepalive set (10 sec)

Full-duplex, 10Gb/s, link type is auto, media type is SFP-10GBase-AOC1M

input flow-control is on, output flow-control is off

ARP type: ARPA, ARP Timeout 04:00:00

Last input 00:00:06, output 00:00:10, output hang never

Last clearing of "show interface" counters 6w1d

Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 299040207

Queueing strategy: Class-based queueing

Output queue: 0/40 (size/max)

30 second input rate 767000 bits/sec, 155 packets/sec

30 second output rate 14603000 bits/sec, 1819 packets/sec

931864194 packets input, 572335285416 bytes, 0 no buffer

Received 933005 broadcasts (933005 multicasts)

0 runts, 0 giants, 0 throttles

0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored

0 watchdog, 0 multicast, 0 pause input

0 input packets with dribble condition detected

1067891106 packets output, 5930422327799 bytes, 0 underruns

--snip--

Totale riduzioni di output: 299040207

Byte di output totali: 5930422327799

Percentuale di riduzioni di output = 299040207/5930422327799 x 100 = 0,005%

In questo esempio, le perdite di output totali rappresentano lo 0,005% della quantità totale di byte trasmessi su questa interfaccia nelle ultime sei settimane (ultima cancellazione dei contatori: 6w1d).

- Il numero totale di pacchetti rispetto al numero scartato è minimo e non avrà alcun impatto.

Identificazione delle interfacce in entrata e in uscita

Per allocare meglio i soft buffer e gestire il traffico sugli switch Catalyst serie 9000, è possibile selezionare le interfacce in entrata e in uscita in ASIC diversi.

Un buffer soft, noto anche come buffer dinamico o buffer condiviso, si riferisce a una parte di memoria allocata dinamicamente per memorizzare temporaneamente i pacchetti in periodi di congestione o carico di traffico elevato.

Suggerimento: per informazioni dettagliate sull'allocazione dei buffer negli switch Catalyst serie 9000, consultare il documento Comprensione dell'allocazione dei buffer negli switch Catalyst serie 9000.

Basandosi sull'architettura di un modello specifico di switch Catalyst 9000, è importante notare che spesso questi switch incorporano più ASIC responsabili di diverse funzioni.

Per verificare l'interfaccia per i mapping ASIC, eseguire il comando show platform software fed <switch|active> ifm mapping

In questo esempio viene illustrata l'interfaccia per i mapping ASIC. Intervallo di interfacce Da TenGigabit Ethernet1/0/1 a TenGigabit Ethernet1/0/24 mappato all'ASIC 1, mentre il resto è mappato all'ASIC 0:

Cat9k#show platform software fed switch active ifm mappings

Interface                 IF_ID    Inst Asic Core Port SubPort Mac  Cntx LPN  GPN  Type Active

TenGigabitEthernet1/0/1   0x9        3   1   1    0      0      11   0    1    1    NIF  Y

TenGigabitEthernet1/0/2   0xa        3   1   1    1      0      10   1    2    2    NIF  Y

TenGigabitEthernet1/0/3   0xb        3   1   1    2      0      9    2    3    3    NIF  Y

TenGigabitEthernet1/0/4   0xc        3   1   1    3      0      8    3    4    4    NIF  Y

TenGigabitEthernet1/0/5   0xd        3   1   1    4      0      7    4    5    5    NIF  Y

TenGigabitEthernet1/0/6   0xe        3   1   1    5      0      6    5    6    6    NIF  Y

TenGigabitEthernet1/0/7   0xf        3   1   1    6      0      5    6    7    7    NIF  Y

TenGigabitEthernet1/0/8   0x10       3   1   1    7      0      4    7    8    8    NIF  Y

TenGigabitEthernet1/0/9   0x11       3   1   1    8      0      3    8    9    9    NIF  Y

TenGigabitEthernet1/0/10  0x12       3   1   1    9      0      2    9    10   10   NIF  Y

TenGigabitEthernet1/0/11  0x13       3   1   1    10     0      1    10   11   11   NIF  Y

TenGigabitEthernet1/0/12  0x14       3   1   1    11     0      0    11   12   12   NIF  Y

TenGigabitEthernet1/0/13  0x15       2   1   0    12     0      11   0    13   13   NIF  Y

TenGigabitEthernet1/0/14  0x16       2   1   0    13     0      10   1    14   14   NIF  Y

TenGigabitEthernet1/0/15  0x17       2   1   0    14     0      9    2    15   15   NIF  Y

TenGigabitEthernet1/0/16  0x18       2   1   0    15     0      8    3    16   16   NIF  Y

TenGigabitEthernet1/0/17  0x19       2   1   0    16     0      7    4    17   17   NIF  Y

TenGigabitEthernet1/0/18  0x1a       2   1   0    17     0      6    5    18   18   NIF  Y

TenGigabitEthernet1/0/19  0x1b       2   1   0    18     0      5    6    19   19   NIF  Y

TenGigabitEthernet1/0/20  0x1c       2   1   0    19     0      4    7    20   20   NIF  Y

TenGigabitEthernet1/0/21  0x1d       2   1   0    20     0      3    8    21   21   NIF  Y

TenGigabitEthernet1/0/22  0x1e       2   1   0    21     0      2    9    22   22   NIF  Y

TenGigabitEthernet1/0/23  0x1f       2   1   0    22     0      1    10   23   23   NIF  Y

TenGigabitEthernet1/0/24  0x20       2   1   0    23     0      0    11   24   24   NIF  Y

TenGigabitEthernet1/0/25  0x21       1   0   1    24     0      11   0    25   25   NIF  Y

TenGigabitEthernet1/0/26  0x22       1   0   1    25     0      10   1    26   26   NIF  Y

TenGigabitEthernet1/0/27  0x23       1   0   1    26     0      9    2    27   27   NIF  Y

TenGigabitEthernet1/0/28  0x24       1   0   1    27     0      8    3    28   28   NIF  Y

TenGigabitEthernet1/0/29  0x25       1   0   1    28     0      7    4    29   29   NIF  Y

TenGigabitEthernet1/0/30  0x26       1   0   1    29     0      6    5    30   30   NIF  Y

TenGigabitEthernet1/0/31  0x27       1   0   1    30     0      5    6    31   31   NIF  Y

TenGigabitEthernet1/0/32  0x28       1   0   1    31     0      4    7    32   32   NIF  Y

TenGigabitEthernet1/0/33  0x29       1   0   1    32     0      3    8    33   33   NIF  Y

TenGigabitEthernet1/0/34  0x2a       1   0   1    33     0      2    9    34   34   NIF  Y

TenGigabitEthernet1/0/35  0x2b       1   0   1    34     0      1    10   35   35   NIF  Y

TenGigabitEthernet1/0/36  0x2c       1   0   1    35     0      0    11   36   36   NIF  Y

TenGigabitEthernet1/0/37  0x2d       0   0   0    36     0      11   11   37   37   NIF  Y

TenGigabitEthernet1/0/38  0x2e       0   0   0    37     0      10   10   38   38   NIF  Y

TenGigabitEthernet1/0/39  0x2f       0   0   0    38     0      9    9    39   39   NIF  Y

TenGigabitEthernet1/0/40  0x30       0   0   0    39     0      8    8    40   40   NIF  Y

TenGigabitEthernet1/1/1   0x31       0   0   0    40     0      0    19   41   41   NIF  N

TenGigabitEthernet1/1/2   0x32       0   0   0    41     0      0    18   42   42   NIF  N

TenGigabitEthernet1/1/3   0x33       0   0   0    42     0      0    17   43   43   NIF  N

TenGigabitEthernet1/1/4   0x34       0   0   0    43     0      0    16   44   44   NIF  N

TenGigabitEthernet1/1/5   0x35       0   0   0    44     0      0    15   45   45   NIF  N

TenGigabitEthernet1/1/6   0x36       0   0   0    45     0      0    14   46   46   NIF  N

TenGigabitEthernet1/1/7   0x37       0   0   0    46     0      0    13   47   47   NIF  N

TenGigabitEthernet1/1/8   0x38       0   0   0    47     0      0    12   48   48   NIF  N

FortyGigabitEthernet1/1/1 0x39       0   0   0    48     0      4    4    49   49   NIF  N

FortyGigabitEthernet1/1/2 0x3a       0   0   0    49     0      0    0    50   50   NIF  N

Allocazione buffer

L'allocazione dei buffer è un fattore importante per evitare la perdita di output, in quanto i buffer vengono utilizzati per archiviare temporaneamente il traffico che non può essere inoltrato a causa di congestione o altre variabili. Se non sono disponibili buffer sufficienti, il traffico viene interrotto e le prestazioni della rete risultano inadeguate e potrebbero verificarsi interruzioni. Questa verifica consente di verificare che lo switch disponga di spazio di buffer sufficiente per gestire carichi di traffico elevati.

Il comando show platform hardware feed switch active qos queue stats interface <interfaccia> consente di visualizzare le statistiche per coda su un'interfaccia, incluse le informazioni sul numero di byte accodati nei buffer e sul numero di byte scartati a causa della mancanza di buffer disponibili.

In questo esempio:

- Le code da 0 a 4 contengono attualmente traffico accodato. Il traffico ricevuto su questa interfaccia viene temporaneamente archiviato nei buffer finché non può essere trasmesso.

- Solo la coda 2 ha registrato traffico scartato o scartato (24010607 byte).

Cat9k#show platform hardware fed active qos queue stats interface twentyFiveGigE 1/0/41

----------------------------------------------------------------------------------------------

AQM Global counters

GlobalHardLimit: 16257   |   GlobalHardBufCount: 0

GlobalSoftLimit: 39039   |   GlobalSoftBufCount: 0

----------------------------------------------------------------------------------------------

High Watermark Soft Buffers:  Port Monitor Disabled

----------------------------------------------------------------------------------------------

Asic:0 Core:0 DATA Port:8 Hardware Enqueue Counters

----------------------------------------------------------------------------------------------

Q Buffers          Enqueue-TH0          Enqueue-TH1          Enqueue-TH2             Qpolicer

(Count)              (Bytes)              (Bytes)              (Bytes)              (Bytes)

-- ------- -------------------- -------------------- -------------------- --------------------

0       0                    0             40588200              9368282                    0

1       0                    0             23584521               789524                    0

2       0                    0                    0         110307150901                    0

3       0                    0                    0            487852543                    0

4       0                    0                    0              5483512                    0

5       0                    0                    0                    0                    0

6       0                    0                    0                    0                    0

7       0                    0                    0                    0

Asic:0 Core:0 DATA Port:8 Hardware Drop Counters

--------------------------------------------------------------------------------------------------------------------------------

Q             Drop-TH0             Drop-TH1             Drop-TH2             SBufDrop              QebDrop         QpolicerDrop

(Bytes)              (Bytes)              (Bytes)              (Bytes)              (Bytes)              (Bytes)

-- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------

0                    0                    0                    0                    0                    0                    0

1                    0                    0                    0                    0                    0                    0

2                    0                    0             24010607 <-- (drops on Q2)  0                    0                    0

3                    0                    0                    0                    0                    0                    0

4                    0                    0                    0                    0                    0                    0

5                    0                    0                    0                    0                    0                    0

6                    0                    0                    0                    0                    0                    0

7                    0                    0                    0                    0                    0                    0

Risoluzione dei problemi

Modifica allocazione buffer

Per aumentare il valore dei soft buffer utilizzati da un'interfaccia, utilizzare il comando qos queue-softmax-multiplier in modalità di configurazione globale:

- Specificate un valore compreso tra 100 e 4800. Il valore predefinito è 100.

- Questo comando aumenta la capacità di una coda a porta singola di assorbire i microburst.

- Questo comando aumenta le soglie della coda delle porte in modo che la coda delle porte possa utilizzare unità buffer aggiuntive dal pool condiviso.

Questa configurazione si applica a tutte le interfacce:

- Lo stesso processo di allocazione dei buffer presume che i microburst non si verifichino contemporaneamente su tutte le porte dello switch.

- Se i microscopi si verificano in momenti casuali, il buffer condiviso può dedicare unità di buffer aggiuntive per assorbirli.

Utilizzare il comando qos queue-softmax-moltiplicator<100 4800>in modalità di configurazione globale per modificare l'allocazione del soft buffer. Se si configura questo parametro sul valore massimo disponibile, lo switch ha la probabilità più alta di eliminare o ridurre le perdite di output. Si tratta di una procedura consigliata per evitare le cadute quando possibile.

Cat9k(config)#qos queue-softmax-multiplier ?

<100-4800> multiplier(%)

Per identificare l'allocazione di soft buffer su Catalyst serie 9000, usare il comando show platform hardware fed active qos queue config interface<interface>.

Nell'esempio viene mostrato come allocare i soft buffer predefiniti su un'interfaccia negoziata a una velocità di 10 Gbps su un Catalyst 9500.

Cat9k#show platform hardware fed active qos queue config interface twentyFiveGigE 1/0/41

Asic:0 Core:0 DATA Port:8 GPN:141 LinkSpeed:0x12

AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 64 - 71

DrainFast:Disabled PortSoftStart:5 - 4320 BufferSharing:Disabled

DTS  Hardmax  Softmax   PortSMin  GlblSMin  PortStEnd   QEnable

----- --------  --------  --------  --------  ---------  -------

0   1  6   480   8  1920  16   960   0     0   3  5760      En <-- 1920 is the total soft buffers allocated to queue 0 on interface twentyFiveGigE 1/0/41

1   1  5     0  11  2880  16  1440   8   720   3  5760      En <-- 2880 is the total soft buffers allocated to queue 1 on interface twentyFiveGigE 1/0/41

2   1  5     0   6     0   0     0   0     0   3  5760      En

3   1  5     0   6     0   0     0   0     0   3  5760      En

4   1  5     0   6     0   0     0   0     0   3  5760      En

5   1  5     0   6     0   0     0   0     0   3  5760      En

6   1  5     0   6     0   0     0   0     0   3  5760      En

7   1  5     0   6     0   0     0   0     0   3  5760      En

Priority   Shaped/shared   weight  shaping_step  sharpedWeight

--------   -------------   ------  ------------   -------------

0      0     Shared            50           0           0

1      0     Shared            75           0           0

2      0     Shared         10000           0           0

3      0     Shared         10000           0           0

4      0     Shared         10000           0           0

5      0     Shared         10000           0           0

6      0     Shared         10000           0           0

7      0     Shared         10000           0           0

Port       Port            Port    Port

Priority   Shaped/shared   weight  shaping_step

--------   -------------   ------  ------------

2     Shaped          1023        1023

QPolicer     Refresh Credit   Max Credit  Interval Idx

-----------   --------------   ----------  ------------

0 Disabled                 0            0           0

1 Disabled                 0            0           0

2 Disabled                 0            0           0

3 Disabled                 0            0           0

4 Disabled                 0            0           0

5 Disabled                 0            0           0

6 Disabled                 0            0           0

7 Disabled                 0            0           0

Weight0 Max_Th0 Min_Th0 Weigth1 Max_Th1 Min_Th1  Weight2 Max_Th2 Min_Th2

------- ------- ------- ------- ------- -------  ------- ------- ------

0       0    1912       0       0    2137       0       0    2400       0 <-- Thresholds values in queue 0 on interface twentyFiveGigE 1/0/41

1       0    2295       0       0    2565       0       0    2880       0 <-- Thresholds values in queue 1 on interface twentyFiveGigE 1/0/41

2       0       0       0       0       0       0       0       0       0

3       0       0       0       0       0       0       0       0       0

4       0       0       0       0       0       0       0       0       0

5       0       0       0       0       0       0       0       0       0

6       0       0       0       0       0       0       0       0       0

7       0       0       0       0       0       0       0       0       0

Nell'esempio vengono mostrati i soft buffer allocati su un'interfaccia negoziata a una velocità di 10 Gbps su un Catalyst 9500 con moltiplicatore 4800 configurato.

Cat9k#show platform hardware fed active qos queue config interface twentyFiveGigE 1/0/41

Asic:0 Core:0 DATA Port:8 GPN:141 LinkSpeed:0x12

AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 64 - 71

DrainFast:Disabled PortSoftStart:4 - 42000 BufferSharing:Disabled

DTS  Hardmax  Softmax   PortSMin  GlblSMin  PortStEnd   QEnable

----- --------  --------  --------  --------  ---------  -------

0   1  6   480  10 42000   1  1312   0     0   4 42000      En <-- 42000 is the total soft buffers allocated to queue 0 on interface twentyFiveGigE 1/0/41

1   1  5     0  10 42000   1  1312   1  1312   4 42000      En <-- 42000 is the total soft buffers allocated to queue 1 on interface twentyFiveGigE 1/0/41

2   1  5     0   6     0   0     0   0     0   4 42000      En

3   1  5     0   6     0   0     0   0     0   4 42000      En

4   1  5     0   6     0   0     0   0     0   4 42000      En

5   1  5     0   6     0   0     0   0     0   4 42000      En

6   1  5     0   6     0   0     0   0     0   4 42000      En

7   1  5     0   6     0   0     0   0     0   4 42000      En

Priority   Shaped/shared   weight  shaping_step  sharpedWeight

--------   -------------   ------  ------------   -------------

0      0     Shared            50           0           0

1      0     Shared            75           0           0

2      0     Shared         10000           0           0

3      0     Shared         10000           0           0

4      0     Shared         10000           0           0

5      0     Shared         10000           0           0

6      0     Shared         10000           0           0

7      0     Shared         10000           0           0

Port       Port            Port    Port

Priority   Shaped/shared   weight  shaping_step

--------   -------------   ------  ------------

2     Shaped          1023        1023

QPolicer     Refresh Credit   Max Credit  Interval Idx

-----------   --------------   ----------  ------------

0 Disabled                 0            0           0

1 Disabled                 0            0           0

2 Disabled                 0            0           0

3 Disabled                 0            0           0

4 Disabled                 0            0           0

5 Disabled                 0            0           0

6 Disabled                 0            0           0

7 Disabled                 0            0           0

Weight0 Max_Th0 Min_Th0 Weigth1 Max_Th1 Min_Th1  Weight2 Max_Th2 Min_Th2

------- ------- ------- ------- ------- -------  ------- ------- ------

0       0   33851       0       0   37833       0       0   42480       0 <-- Thresholds values in queue 0 on interface twentyFiveGigE 1/0/41

1       0   33468       0       0   37406       0       0   42000       0 <-- Thresholds values in queue 1 on interface twentyFiveGigE 1/0/41

2       0       0       0       0       0       0       0       0       0

3       0       0       0       0       0       0       0       0       0

4       0       0       0       0       0       0       0       0       0

5       0       0       0       0       0       0       0       0       0

6       0       0       0       0       0       0       0       0       0

7       0       0       0       0       0       0       0       0       0

Nota: l'allocazione dei soft buffer varia. È possibile che l'allocazione non corrisponda all'output indicato sopra. L'output dell'allocazione varia a seconda della piattaforma specifica utilizzata, dei criteri QoS applicati e della velocità operativa negoziata dell'interfaccia in questione.

Modifica buffer per coda

La modifica del buffer per coda può essere utilizzata per scenari in cui non è possibile utilizzare il moltiplicatore SoftMax o in scenari in cui si tenta di ottimizzare i buffer per adattarli a un profilo di traffico.

- Per modificare l'allocazione del buffer della coda sullo switch per interfaccia, è necessario utilizzare le mappe dei criteri.

- Nella maggior parte dei casi è possibile modificare la mappa dei criteri corrente di un'interfaccia e modificare i buffer per singola classe.

Nell'interfaccia di esempio, l'output di ventiCinqueGigE 1/0/1 è diminuito. Come mostrato nell'output del comando, la mappa dei criteri in uscita applicata a questa interfaccia.

Il comando show platform hardware feed switch active qos queue stats interface<interface> consente di visualizzare le statistiche per coda su un'interfaccia, incluse le informazioni sul numero di byte accodati nei buffer e sul numero di byte scartati a causa della mancanza di buffer disponibili.

Cat9k#show platform hardware fed active qos queue stats interface twentyFiveGigE 1/0/1

----------------------------------------------------------------------------------------------

AQM Global counters

GlobalHardLimit: 16257   |   GlobalHardBufCount: 0

GlobalSoftLimit: 39039   |   GlobalSoftBufCount: 0

----------------------------------------------------------------------------------------------

High Watermark Soft Buffers:  Port Monitor Disabled

----------------------------------------------------------------------------------------------

Asic:0 Core:0 DATA Port:8 Hardware Enqueue Counters

----------------------------------------------------------------------------------------------

Q Buffers          Enqueue-TH0          Enqueue-TH1          Enqueue-TH2             Qpolicer

(Count)              (Bytes)              (Bytes)              (Bytes)              (Bytes)

-- ------- -------------------- -------------------- -------------------- --------------------

0       0                    0                    0                   82                    0

1       0                    0                    0                 7517                    0

2       0                    0                    0         110307150901                    0

3       0                    0                    0           7174010710                    0

4       0                    0                    0                    0                    0

5       0                    0                    0                    0                    0

6       0                    0                    0                    0                    0

7       0                    0                    0                    0

Asic:0 Core:0 DATA Port:8 Hardware Drop Counters

--------------------------------------------------------------------------------------------------------------------------------

Q             Drop-TH0             Drop-TH1             Drop-TH2             SBufDrop              QebDrop         QpolicerDrop

(Bytes)              (Bytes)              (Bytes)              (Bytes)              (Bytes)              (Bytes)

-- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------

0                    0                    0                    0                    0                    0                    0

1                    0                    0                    0                    0                    0                    0

2                    0                    0             24010607                    0                    0                    0

3                    0                    0             20071103                    0                    0                    0

4                    0                    0                    0                    0                    0                    0

5                    0                    0                    0                    0                    0                    0

6                    0                    0                    0                    0                    0                    0

7                    0                    0                    0                    0                    0                    0

Per ridurre le perdite di output su questa interfaccia, in base ai contatori di accodamento, da Q0 a Q1 hanno una frequenza di accodamento molto bassa, e quindi non possono richiedere un numero di buffer pari a Q2 e Q3. L'azione consigliata consiste nell'allocare più buffer alla coda 2 e alla coda 3, poiché queste code hanno una quantità maggiore di traffico accodato rispetto a qualsiasi altra coda.

- Per modificare l'allocazione del buffer, è possibile utilizzare la configurazione del rapporto dei buffer della coda <0-100> nella mappa dei criteri applicata all'interfaccia ventFiveGigE 1/0/1.

Nota: se questo comando è configurato su ciascuna classe del criterio, la sua somma deve essere 100. Tuttavia, se è configurata una sola classe, il sistema sottrae uniformemente i buffer dalle altre code.

In questo esempio viene mostrato come configurare una percentuale di buffer della coda in una mappa dei criteri.

Cat9k(config)#policy-map test

Cat9k(config-pmap)# class Voice

Cat9k(config-pmap-c)# priority level 1

Cat9k(config-pmap-c)# queue-buffers ratio 5

Cat9k(config-pmap-c)# class Video

Cat9k(config-pmap-c)# bandwidth remaining percent 50

Cat9k(config-pmap-c)# queue-buffers ratio 15

Cat9k(config-pmap-c)# class BuisnessCritical

Cat9k(config-pmap-c)# bandwidth remaining percent 30

Cat9k(config-pmap-c)# queue-buffers ratio 40           <-- Queue 3

Cat9k(config-pmap-c)# class class-default

Cat9k(config-pmap-c)# bandwidth remaining percent 20

Cat9k(config-pmap-c)# queue-buffers ratio 40           <-- Queue 4

A partire dalla versione Cisco IOS XE 17.2.1, gli switch basati su UADP 3.0 (Catalyst 9500 High Performance e Catalyst 9600) possono essere configurati per condividere i buffer Active Queue Management (AQM) tra i due core all'interno dello stesso ASIC.

- Una porta configurata con la condivisione del buffer utilizza uno qualsiasi dei buffer AQM disponibili indipendentemente dai core a cui sono mappati i buffer AQM.

- Ciò consente di gestire picchi di traffico più elevati che avrebbero saturato il buffer di un singolo core AQM.

- È possibile abilitare questa funzione con il comando qos share-buffer in modalità di configurazione globale.

- Per controllare la funzionalità, usare il comando show platform hardware fed active qos queue config interface. Si tratta di una configurazione globale che interessa l'intero sistema.

È possibile disabilitare la condivisione del buffer usando il comando no, no qos share-buffer.

Cat9k(config)#qos share-buffer

Cat9k(config)#end

Analisi Delle Perdite Di Output Con Wireshark

Per verificare la presenza di microburst in una rete, è possibile utilizzare uno strumento di acquisizione pacchetti come Wireshark:

- Wireshark acquisisce i pacchetti e consente di analizzare il traffico di rete in tempo reale o in fase di post-acquisizione.

- Per identificare i microscopi che si verificano quando si verifica una caduta con Wireshark, avviare l'acquisizione del pacchetto sull'interfaccia interessata e controllare l'interfaccia più volte fino a quando non si verifica una caduta in uscita.

- Una volta completata la cattura, aprire il file in Wireshark e cercare i periodi di traffico elevato seguiti da quelli di traffico basso o assente. Questi sono potenziali microscopi.

Per acquisire e analizzare in modo efficace le perdite di output su un'interfaccia, attenersi alle seguenti raccomandazioni:

- Non utilizzare EPC (Embedded Packet Capture). L'EPC limita tutto il traffico a un massimo di 1000 pacchetti al secondo (pps), che possono potenzialmente invalidare i dati.

- Si consiglia di utilizzare un SPAN solo TX dell'interfaccia in cui vengono identificate le perdite di output.

- Le porte di origine e di destinazione devono avere la stessa velocità oppure la porta di destinazione deve avere una velocità maggiore rispetto alla porta di origine quando si utilizza SPAN. Ciò garantisce che la sessione SPAN non introduca ulteriori congestioni di rete o perdite di pacchetti dovute a velocità delle porte non corrispondenti.

- È importante raccogliere la sessione SPAN durante l'aumento attivo delle perdite di output. In questo modo è possibile acquisire il traffico rilevante e identificare la root cause del microburst. Se la sessione SPAN viene raccolta dopo che si sono verificate le cadute, non sarà possibile acquisire il traffico rilevante.

Per verificare se questi periodi di traffico elevato sono effettivamente dei microscopi, usate la funzione grafico I/O di Wireshark. Poiché il grafico I/O visualizza una rappresentazione grafica del traffico di rete nel tempo, è più facile identificare i microscopi. Per creare un grafico di I/O, selezionare Statistiche > Grafico I/O:

Nota: per dimostrare questa procedura, abbiamo usato un'acquisizione pacchetto su un'interfaccia a 1 Gbps. Tuttavia, le procedure sono le stesse per la risoluzione dei problemi di output su qualsiasi interfaccia ad alta velocità.

Figura 2. Selezionare il grafico I/O.

Il grafico successivo mostra una linea che rappresenta la quantità di dati in transito nel tempo. Cercate i picchi nel grafico, che indicano i periodi di traffico elevato. Se questi picchi sono seguiti da periodi di traffico basso o nullo, è possibile che si sia identificato un microscopio.

Figura 3. Mostra il grafico I/O dell'acquisizione dei pacchetti.

È importante assicurarsi che tutti i pacchetti siano selezionati senza alcun filtro di visualizzazione applicato. Inoltre, selezionate l'opzione Grafico linea (Line Graph) e impostate l'asse Y su Bit (Bits) per analizzare correttamente il traffico.

Figura 4. Mostra come selezionare l'opzione Grafico a linee e impostare l'asse Y su Bit.

Quando si analizza un'acquisizione di pacchetti di grandi dimensioni, è fondamentale identificare il periodo di tempo specifico a cui si è interessati. Ad esempio, in questo scenario, si può osservare che c'è una grande quantità di traffico in prossimità di 30 secondi.

Se si fa clic sul picco di una punta nel grafico I/O, Wireshark seleziona il pacchetto sullo sfondo. Nel nostro scenario, i pacchetti 79280 e 101896 sono stati selezionati per creare un sottoinsieme dell'acquisizione del pacchetto al fine di funzionare entro i timestamp in cui si sospetta la presenza di microburst.

Figura 5. Mostra come creare un sottoinsieme dell'acquisizione del pacchetto che si concentra sui timestamp sospetti della presenza di microburst.

Per esportare il primo e l'ultimo pacchetto selezionato in un nuovo file, accertarsi di selezionare le icone radio Range e Captured.

Figura 6. Mostra come esportare e salvare il sottoinsieme dell'acquisizione del pacchetto.

Dopo aver salvato il file, aprirlo e tornare al grafico I/O. Verificare che l'intervallo sia impostato su 1 ms per rappresentare graficamente i picchi rilevati su una base di millisecondi.

Figura 7. Mostra il grafico I/O del sottoinsieme esportato dell'acquisizione del pacchetto.

Quando il grafico viene visualizzato, è importante identificare i picchi che rappresentano i periodi in cui il traffico è stato trasmesso alla velocità della linea per un intero millisecondo, che causano il riempimento del buffer e dove potrebbero essere state generate le perdite di output. Ad esempio, su un'interfaccia a 1 Gbps, corrisponde a 1.000.000 di bit al millisecondo. Fare clic sul picco di un picco che rappresenta un potenziale microscopio. Aiuta a identificare il pacchetto che ha causato le perdite di output. Questo pacchetto può quindi essere analizzato ulteriormente per determinare la causa principale del microburst e adottare le misure correttive necessarie.

Figura 8. Mostra come identificare il potenziale traffico di microburst nel grafico I/O.

Avviso: è importante essere a conoscenza di questa limitazione quando si usa Wireshark o qualsiasi altro strumento di acquisizione pacchetti su un'interfaccia ad alta velocità. Le interfacce ad alta velocità, come 40G e 100G, generano un volume considerevole di traffico di rete che può sovraccaricare le risorse del sistema usate per acquisire i pacchetti. Di conseguenza, questo può causare la perdita di pacchetti durante il processo di acquisizione e può influire sull'accuratezza e la completezza dei dati acquisiti.

Approcci alternativi

Se le risorse allocate a una coda sono esaurite e si verificano ancora cali, è necessario considerare opzioni alternative per gestire la congestione. Tra queste vi sono:

- Aggiornamento delle velocità dell'interfaccia. È possibile passare da 1G a 10G, da 10G a 25G o 40G per aumentare la larghezza di banda in uscita e ridurre il rapporto di sovrabbonamento.

- Sostituire la piattaforma con una più grande per coda/per interfaccia buffer.

- Regolare le impostazioni dell'applicazione per ridurre le dimensioni della frammentazione che causa le perdite di output.

- Utilizzare uno scheduler di coda per assegnare la priorità a una classe di traffico rispetto a un'altra. Questo metodo assegna la priorità alla protezione del traffico più importante a scapito dell'aumento delle cadute per il traffico meno importante.

- Implementare algoritmi di gestione della congestione, ad esempio WRED (Weighted Random Early Discard) o WTD (Weighted Tail Drop), per anticipare il traffico. Le soglie WRED o WTD possono causare la caduta anticipata del traffico bursty, con conseguente riduzione automatica delle finestre di trasmissione per i client finali. Ciò consente al traffico di altro tipo con minore bursty di affrontare una riduzione della congestione, garantendo un'allocazione minima del buffer per diverse classi di traffico durante i periodi di alta congestione.

- Traffico di polizia più vicino all'origine di un'applicazione nota a larghezza di banda elevata, ad esempio i backup dei dati per ridurre la frequenza e la gravità dei burst sulla rete. Questo offre alle aree a bassa larghezza di banda tra l'origine e la destinazione, situate in altri punti della rete, maggiori opportunità di gestire in modo efficace sia il traffico che il normale traffico di rete.

- Utilizzare i canali porta. Tuttavia, è importante notare che, a causa dell'hashing, esiste la possibilità che più flussi siano diretti a un singolo membro, il che può portare a cadute persistenti.

È importante notare che alcune di queste opzioni richiedono configurazioni più complesse, ad esempio la progettazione del traffico, ma possono fornire vantaggi significativi per ridurre la congestione della rete e le perdite di output.

Informazioni correlate

- White paper sulle piattaforme di switching Cisco Catalyst 9000: QoS e code

- Guida alla configurazione di Quality of Service, Cisco IOS XE 17.x

- Matrice di compatibilità tra dispositivi ottici Cisco

- Supporto per l'innovazione: in che modo Cisco TAC sta trasformando la documentazione e semplificando il self-service

- Documentazione e supporto tecnico – Cisco Systems