Contents

Introduction

Prerequisites

Requirements

Componentes Utilizados

Informações de Apoio

Fluxo De Tráfego Unicast E Buffer

Fluxo De Tráfego Multicast E Buffer

O que causa descartes de entrada?

Cenários de Troubleshooting

Cenário 1. Descartes de entrada

Etapa 1. Identificar Portas Com Descartes De Entrada

Etapa 2. Identificação ASIC

Etapa 3. Identificar a porta congestionada de saída

Cenário 2. Descartes de entrada com HOLB

Mitigação de HOLB: Ativar limite de VOQ

Mitigação de HOLB: Classificação de tráfego

Informações Relacionadas

Introduction

Este documento descreve como solucionar problemas de descarte de entrada nos switches Cisco Nexus 5600/6000 Series.

Prerequisites

Requirements

A Cisco recomenda que você tenha conhecimento básico da configuração do Cisco Nexus 6000 Series.

Componentes Utilizados

As informações neste documento são baseadas nestas versões de software e hardware:

- Cisco Nexus 6001

- 7.1(3)N1(1)

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.

Informações de Apoio

Os descartes de entrada são uma indicação de uma porta de saída com excesso de assinaturas. Isso também significa que você provavelmente está descartando o tráfego unicast nessa porta específica. Este artigo ajuda a entender como o tráfego unicast e multicast é colocado em buffer nesta plataforma e como as devoluções de entrada podem ocorrer juntamente com as etapas de mitigação.

Fluxo De Tráfego Unicast E Buffer

O tráfego unicast é enfileirado no pool de buffer de saída primeiro e, em seguida, o buffer de entrada após a fila de saída estar cheia, como mostrado na imagem.

Há buffer compartilhado de ingresso de 16 MB e buffer compartilhado de saída de 9 MB. Os buffers são compartilhados entre portas de 12 x 10 gig ou 3 portas de 40 gig. O buffer compartilhado é bom para absorção de intermitência.

Aqui está uma representação visual da alocação de memória para sua referência (Bigsur é o nome do ASIC/Unified Port Controller), como mostrado na imagem.

Fluxo De Tráfego Multicast E Buffer

- Os pacotes multicast são colocados em buffer e descartados na saída

- Descartar o pacote multicast perto do ponto de congestionamento para evitar o bloqueio do chefe de linha (HOLB)

- Mantenha a estrutura sem perdas para unicast, como mostrado na imagem.

Na maioria dos casos, quedas de saída são sempre devidas ao tráfego multicast/broadcast/unicast desconhecido.

O que causa descartes de entrada?

Uma porta de saída congestionada faz com que os buffers de saída sejam preenchidos primeiro e depois causa a pressão de retorno na entrada. Isso é apenas para tráfego unicast. Quando os buffers de entrada estiverem cheios, você poderá potencialmente descartar o tráfego na entrada, o que resultará em descartes de entrada.

Essa explicação está em um nível muito alto e é fácil de digerir, mas há um pouco mais nisso, especialmente quando você olha para diferentes classes de tráfego, filas, etc. Há um conceito de Virtual Output Queue (VOQ) que é frequentemente usado na plataforma Nexus. VOQ é uma alocação de buffers de entrada para cada Classe de Serviço (CoS - Class of Service) IEEE 802.1p por porta de saída. Há 8 VOQ por porta de saída.

O congestionamento em uma porta de saída em um CoS eventualmente sangra no congestionamento de seu VOQ correspondente na porta de entrada. Quando o limite é atingido, o tráfego é descartado. No entanto, ele não afeta o tráfego destinado a outras CoS ou outras interfaces de saída, evitando, assim, o HOLB, que de outra forma causaria a propagação do congestionamento. O fluxo de tráfego da porta de ingresso para saída e os vários blocos em jogo são como mostrado na imagem.

Cenários de Troubleshooting

Cenário 1. Descartes de entrada

Configuração do laboratório:

Tráfego de taxa de linha egressando e1/3 e possível excesso de assinatura:

nexus6001# sh int e1/3

Ethernet1/3 is up

Dedicated Interface

Hardware: 1000/10000 Ethernet, address: 002a.6a56.7a8a (bia 002a.6a56.7a8a)

Description: spirent 4/11

MTU 1500 bytes, BW 1000000 Kbit,, BW 1000000 Kbit, DLY 10 usec

reliability 255/255, txload 251/255, rxload 25/255

Encapsulation ARPA, medium is broadcast

Port mode is trunk

full-duplex, 1000 Mb/s

Beacon is turned off

Input flow-control is off, output flow-control is off

Switchport monitor is off

EtherType is 0x8100

Last link flapped 11:39:20

Last clearing of "show interface" counters 00:00:15

0 interface resets

30 seconds input rate 98683696 bits/sec, 8223 packets/sec

30 seconds output rate 986853640 bits/sec, 82019 packets/sec

Load-Interval #2: 5 minute (300 seconds)

input rate 98.68 Mbps, 8.22 Kpps; output rate 986.85 Mbps, 82.01 Kpps

RX

124003 unicast packets  0 multicast packets  0 broadcast packets

124003 input packets  186004500 bytes

0 jumbo packets  0 storm suppression bytes

0 runts  0 giants  0 CRC  0 no buffer

0 input error  0 short frame  0 overrun   0 underrun  0 ignored

0 watchdog  0 bad etype drop  0 bad proto drop  0 if down drop

0 input with dribble  0 input discard

0 Rx pause

TX

1236745 unicast packets  9 multicast packets  0 broadcast packets

1236754 output packets  1860065401 bytes

0 jumbo packets

0 output error  0 collision  0 deferred  0 late collision

0 lost carrier  0 no carrier  0 babble 0 output discard

0 Tx pause

nexus6001# sh int e1/4

Ethernet1/4 is up

Dedicated Interface

Hardware: 1000/10000 Ethernet, address: 002a.6a56.7a8b (bia 002a.6a56.7a8b)

Description: spirent 4/12

MTU 1500 bytes, BW 1000000 Kbit,, BW 1000000 Kbit, DLY 10 usec

reliability 255/255, txload 25/255, rxload 251/255

Encapsulation ARPA, medium is broadcast

Port mode is access

full-duplex, 1000 Mb/s

Beacon is turned off

Input flow-control is off, output flow-control is off

Switchport monitor is off

EtherType is 0x8100

Last link flapped 10:53:31

Last clearing of "show interface" counters 00:00:04

0 interface resets

30 seconds input rate 986840376 bits/sec, 82236 packets/sec

30 seconds output rate 98421072 bits/sec, 8223 packets/sec

Load-Interval #2: 5 minute (300 seconds)

input rate 986.84 Mbps, 82.23 Kpps; output rate 98.42 Mbps, 8.22 Kpps

RX

326332 unicast packets  0 multicast packets  0 broadcast packets

326332 input packets  489496500 bytes

0 jumbo packets  0 storm suppression bytes

0 runts  0 giants  0 CRC  0 no buffer

0 input error  0 short frame  0 overrun   0 underrun  0 ignored

0 watchdog  0 bad etype drop  0 bad proto drop  0 if down drop

0 input with dribble  863 input discard >>>>>>

0 Rx pause

TX

32633 unicast packets  2 multicast packets  0 broadcast packets

32635 output packets  48819096 bytes

0 jumbo packets

0 output error  0 collision  0 deferred  0 late collision

0 lost carrier  0 no carrier  0 babble 0 output discard

0 Tx pause

Em uma configuração simulada como esta, você sabe a causa do excesso de assinaturas, mas em uma configuração de produção onde o perfil de tráfego interrompeu e pode ser um desafio identificar as portas de saída congestionadas através desses comandos.

As etapas listadas aqui ajudam a identificar as portas de saída congestionadas.

Etapa 1. Identificar Portas Com Descartes De Entrada

Descartes de entrada vistos na porta e1/4:

nexus6001# sh int e1/4 | in i disc

0 input with dribble  3024 input discard

0 lost carrier  0 no carrier  0 babble 0 output discard

nexus6001# sh queuing int e1/4

Ethernet1/4 queuing information:

TX Queuing

qos-group  sched-type  oper-bandwidth

0       WRR            100

RX Queuing

qos-group 0 >>>> Drops in QOS 0

q-size: 100160, q-size-40g: 100160, HW MTU: 1500 (1500 configured)

drop-type: drop, xon: 0, xoff: 0

Statistics:

Pkts received over the port             : 9612480

Ucast pkts sent to the cross-bar        : 9587016

Mcast pkts sent to the cross-bar        : 0

Ucast pkts received from the cross-bar  : 961249

Pkts sent to the port                   : 961261

Pkts discarded on ingress               : 3024 >>>>>>

Per-priority-pause status               : Rx (Inactive), Tx (Inactive)

Etapa 2. Identificação ASIC

- Mapeie a interface para o número ASIC interno (UPC) dessa saída.

- Descubra a ID ASIC de entrada da ID da porta de entrada na qual você notou quedas.

nexus6001# sh hard internal bigsur all-ports

Bigsur Port Info:

Port     |asic|inst|inst|

name     |idx |slot|asic|eport|logi|flag|adm|opr|if_index|diag|ucVer

---------+----+----+----+-----+----+----+---+---+--------+----+-----

sup1     |0   |0   |0   | 0 - |48  |b3  |en |dn |15010000|pass| 0.00

sup0     |0   |0   |0   | 1 - |49  |b3  |en |dn |15020000|pass| 0.00

1gb1/1   |1   |0   |1   | 2 - |0   |b3  |en |up |1a000000|pass| 0.00

1gb1/2   |1   |0   |1   | 3 - |1   |b3  |en |up |1a001000|pass| 0.00

1gb1/3   |1   |0   |1   | 0 - |2   |b3  |en |up |1a002000|pass| 0.00

1gb1/4   |1** |0   |1   | 1 - |3   |b3  |en |up |1a003000|pass| 0.00 >>>>** is the asic number

1gb1/5   |1   |0   |1   | 6 - |4   |b3  |en |up |1a004000|pass| 0.00

1gb1/6   |1   |0   |1   | 7 - |5   |b3  |en |up |1a005000|pass| 0.00

1gb1/7   |1   |0   |1   | 4 - |6   |b3  |en |up |1a006000|pass| 0.00

1gb1/8   |1   |0   |1   | 5 - |7   |b3  |en |up |1a007000|pass| 0.00

1gb1/9   |1   |0   |1   |10 - |8   |b3  |en |up |1a008000|pass| 0.00

1gb1/10  |1   |0   |1   |11 - |9   |b3  |en |up |1a009000|pass| 0.00

1gb1/11  |1   |0   |1   | 8 - |10  |b3  |en |up |1a00a000|pass| 0.00

xgb1/12  |1   |0   |1   | 9 - |11  |b3  |en |dn |1a00b000|pass| 0.00

xgb1/13  |2   |0   |2   | 2 - |12  |b3  |en |dn |1a00c000|pass| 0.00

xgb1/14  |2   |0   |2   | 3 - |13  |b3  |en |dn |1a00d000|pass| 0.00

xgb1/15  |2   |0   |2   | 0 - |14  |b3  |en |dn |1a00e000|pass| 0.00

xgb1/16  |2   |0   |2   | 1 - |15  |b3  |en |dn |1a00f000|pass| 0.00

xgb1/17  |2   |0   |2   | 6 - |16  |b3  |en |dn |1a010000|pass| 0.00

xgb1/18  |2   |0   |2   | 7 - |17  |b3  |en |dn |1a011000|pass| 0.00

xgb1/19  |2   |0   |2   | 4 - |18  |b3  |en |dn |1a012000|pass| 0.00

xgb1/20  |2   |0   |2   | 5 - |19  |b3  |en |dn |1a013000|pass| 0.00

xgb1/21  |2   |0   |2   |10 - |20  |b3  |en |dn |1a014000|pass| 0.00

xgb1/22  |2   |0   |2   |11 - |21  |b3  |en |dn |1a015000|pass| 0.00

xgb1/23  |2   |0   |2   | 8 - |22  |b3  |en |dn |1a016000|pass| 0.00

xgb1/24  |2   |0   |2   | 9 - |23  |b3  |en |dn |1a017000|pass| 0.00

xgb1/25  |3   |0   |3   | 2 - |24  |b3  |en |dn |1a018000|pass| 0.00

xgb1/26  |3   |0   |3   | 3 - |25  |b3  |en |dn |1a019000|pass| 0.00

xgb1/27  |3   |0   |3   | 0 - |26  |b3  |en |dn |1a01a000|pass| 0.00

xgb1/28  |3   |0   |3   | 1 - |27  |b3  |en |dn |1a01b000|pass| 0.00

xgb1/29  |3   |0   |3   | 6 - |28  |b3  |en |dn |1a01c000|pass| 0.00

xgb1/30  |3   |0   |3   | 7 - |29  |b3  |en |dn |1a01d000|pass| 0.00

xgb1/31  |3   |0   |3   | 4 - |30  |b3  |en |dn |1a01e000|pass| 0.00

xgb1/32  |3   |0   |3   | 5 - |31  |b3  |en |dn |1a01f000|pass| 0.00

xgb1/33  |3   |0   |3   |10 - |32  |b3  |en |dn |1a020000|pass| 0.00

xgb1/34  |3   |0   |3   |11 - |33  |b3  |en |dn |1a021000|pass| 0.00

xgb1/35  |3   |0   |3   | 8 - |34  |b3  |en |dn |1a022000|pass| 0.00

xgb1/36  |3   |0   |3   | 9 - |35  |b3  |en |dn |1a023000|pass| 0.00

xgb1/37  |4   |0   |4   | 2 - |36  |b3  |en |dn |1a024000|pass| 0.00

xgb1/38  |4   |0   |4   | 3 - |37  |b3  |en |dn |1a025000|pass| 0.00

xgb1/39  |4   |0   |4   | 0 - |38  |b3  |en |dn |1a026000|pass| 0.00

xgb1/40  |4   |0   |4   | 1 - |39  |b3  |en |dn |1a027000|pass| 0.00

xgb1/41  |4   |0   |4   | 6 - |40  |b3  |en |dn |1a028000|pass| 0.00

xgb1/42  |4   |0   |4   | 7 - |41  |b3  |en |dn |1a029000|pass| 0.00

xgb1/43  |4   |0   |4   | 4 - |42  |b3  |en |dn |1a02a000|pass| 0.00

xgb1/44  |4   |0   |4   | 5 - |43  |b3  |en |dn |1a02b000|pass| 0.00

xgb1/45  |4   |0   |4   |10 - |44  |b3  |en |dn |1a02c000|pass| 0.00

xgb1/46  |4   |0   |4   |11 - |45  |b3  |en |dn |1a02d000|pass| 0.00

xgb1/47  |4   |0   |4   | 8 - |46  |b3  |en |dn |1a02e000|pass| 0.00

xgb1/48  |4   |0   |4   | 9 - |47  |b3  |en |dn |1a02f000|pass| 0.00

40gb2/1  |5   |1   |0   | 2 - |0   |b3  |dis|dn |1a0f0000|pass| 0.00

40gb2/2  |5   |1   |0   | 1 - |1   |b3  |dis|dn |1a0f1000|pass| 0.00

40gb2/3  |6   |1   |1   | 2 - |2   |b3  |dis|dn |1a0f2000|pass| 0.00

40gb2/4  |6   |1   |1   | 1 - |3   |b3  |dis|dn |1a0f3000|pass| 0.00

Done.

Etapa 3. Identificar a porta congestionada de saída

- Identifique a porta de saída congestionada com contadores de VOQ.

- Use o número ASIC em counters voq asic-num para descobrir qual porta de saída contribui para as quedas.

nexus6001# sh plat soft qd info counters voq asic-num 1

+----------+------------------------------+------------------------+-----------+

|      port|                      TRANSMIT|               TAIL DROP|  HEAD DROP|

+----------+------------------------------+------------------------+-----------+

Eth1/3

QUEUE-3                       3222876464                  8545008           0

Eth1/4

QUEUE-3                        323451170                        0           0

Eth1/6

QUEUE-3                           871362                        0           0

SUP_HI

QUEUE-0                             2041                        0           0

+----------+------------------------------+------------------------+-----------+

Cenário 2. Descartes de entrada com HOLB

Configuração do laboratório:

Todas as portas estão na vlan 100.

Você pode ver os descartes de entrada em e1/4 e e1/1, que dependem da taxa de tráfego nas interfaces de entrada para 1/3.

nexus6001# sh int e1/4 | in discard|rate

30 seconds input rate 592103840 bits/sec, 49341 packets/sec

30 seconds output rate 166412120 bits/sec, 13863 packets/sec

input rate 592.10 Mbps, 49.34 Kpps; output rate 834.82 Mbps, 69.55 Kpps

0 input with dribble  15245 input discard

0 lost carrier  0 no carrier  0 babble 0 output discard

nexus6001# sh int e1/1 | in discard|rate

30 seconds input rate 986839872 bits/sec, 82236 packets/sec

30 seconds output rate 99790992 bits/sec, 8310 packets/sec

input rate 986.84 Mbps, 82.23 Kpps; output rate 500.88 Mbps, 41.73 Kpps

0 input with dribble  110632 input discard

0 lost carrier  0 no carrier  0 babble 0 output discard

Com o uso do mesmo processo conforme documentado para o cenário 1. Você pode encontrar a porta congestionada de saída.

nexus6001# sh plat so qd info counters voq asic-num 1 <snip>

+----------+------------------------------+------------------------+-----------+

|      port|                      TRANSMIT|               TAIL DROP|  HEAD DROP|

+----------+------------------------------+------------------------+-----------+

Eth1/3

QUEUE-3                       3893719464                164782171           0

O fluxo que deve ser afetado é para 10.10.10.50. O fluxo entre 10.10.10.101 e 10.10.10.102 deve estar limpo.

No entanto, não é esse o caso. Uma porta de saída presa ou de drenagem lenta pode fazer com que todos os buffers em uma ou mais portas de entrada que enviam tráfego para a porta de saída sejam esgotados, afetando assim todo o tráfego nessas portas de entrada. Este é o problema clássico do HOLB.

Os geradores de tráfego spirent mostram que os fluxos são descartados. Os números de porta são números de porta Spirent, como mostrado na imagem.

Mitigação de HOLB: Ativar limite de VOQ

Para evitar esse cenário, os VOQs (somente para tráfego unicast) podem ser configurados com um limite definido.

nexus6001(config)# hard unicast voq-limit

Após a configuração, os fluxos para portas não congestionadas não são afetados.

A exibição do gerador de tráfego Spirent após a configuração do limite de VOQ é como mostrado na imagem.

Embora essa configuração mostre uma clara vantagem para evitar quedas devido a HOLB. Por que essa não é a configuração padrão?

Normalmente, o tráfego em um ambiente de produção pode se estourar por natureza. Pela desabilitação do limite de VOQ, você permite que os buffers de ingresso absorvam uma microintermitência de tráfego sem a necessidade de descarte.

A menos que a situação justifique a necessidade de habilitar o limite de VOQ, é recomendável usar o padrão, que é deixá-lo desabilitado.

Mitigação de HOLB: Classificação de tráfego

Há outro método para atenuar o HOLB com o uso da configuração de QoS. Como os descartes de entrada afetam apenas um VOQ específico que, por sua vez, é uma classe de QOS específica, você pode mapear o tráfego afetado para uma porta não congestionada para um grupo de QOS diferente. A partir dessa saída, os descartes de ingresso afetam a classe do Grupo de QOS 0.

nexus6001# sh queuing int e1/4

Ethernet1/4 queuing information:

TX Queuing

qos-group  sched-type  oper-bandwidth

0       WRR            100

RX Queuing

qos-group 0 >>>> Drops in QOS 0

q-size: 100160, q-size-40g: 100160, HW MTU: 1500 (1500 configured)

drop-type: drop, xon: 0, xoff: 0

Statistics:

Pkts received over the port             : 9612480

Ucast pkts sent to the cross-bar        : 9587016

Mcast pkts sent to the cross-bar        : 0

Ucast pkts received from the cross-bar  : 961249

Pkts sent to the port                   : 961261

Pkts discarded on ingress               : 3024 >>>>>>

Per-priority-pause status               : Rx (Inactive), Tx (Inactive)

A configuração aqui mapeia tráfego importante para o QoS-Group 2.

1. Defina a ACL para o tráfego que não deve ser descartado. O objetivo é classificar esse tráfego em um grupo de QOS diferente para que ele não seja afetado.

ip access-list SINGLEFLOW

statistics per-entry

10 permit ip 10.10.10.101/32 10.10.10.102/32

2. Classificação de QoS:

class-map type qos match-all FIX_AFFECTED_FLOW

match access-group name SINGLEFLOW

policy-map type qos QOS_POLICY_FIX_AFFECTED_FLOW

class FIX_AFFECTED_FLOW

set qos-group 2

3. Configuração de QoS de rede:

class-map type network-qos QOSGRP2

match qos-group 2

policy-map type network-qos NQOS-GRP2

class type network-qos QOSGRP2

class type network-qos class-default

4. Aplique as várias políticas. A QoS da rede abrange todo o sistema, enquanto a política de classificação pode ser aplicada a uma única interface.

system qos

service-policy type network-qos NQOS-GRP2

interface Ethernet1/1

service-policy type qos input QOS_POLICY_FIX_AFFECTED_FLOW

5. As quedas não são vistas para a classe de QoS do grupo 2:

nexus6001(config-if)# sh queuing int e1/1

Ethernet1/1 queuing information:

TX Queuing

qos-group  sched-type  oper-bandwidth

0       WRR            100

2       WRR              0

RX Queuing

qos-group 0

q-size: 100160, q-size-40g: 100160, HW MTU: 1500 (1500 configured)

drop-type: drop, xon: 0, xoff: 0

Statistics:

Pkts received over the port             : 525111

Ucast pkts sent to the cross-bar        : 327510

Mcast pkts sent to the cross-bar        : 0

Ucast pkts received from the cross-bar  : 0

Pkts sent to the port                   : 0

Pkts discarded on ingress               : 197868 >>>>

Per-priority-pause status               : Rx (Inactive), Tx (Inactive)

qos-group 2

q-size: 100160, q-size-40g: 100160, HW MTU: 1500 (1500 configured)

drop-type: drop, xon: 0, xoff: 0

Statistics:

Pkts received over the port             : 131413

Ucast pkts sent to the cross-bar        : 132096

Mcast pkts sent to the cross-bar        : 0

Ucast pkts received from the cross-bar  : 0

Pkts sent to the port                   : 0

Pkts discarded on ingress               : 0 >>> No Drops

Per-priority-pause status               : Rx (Inactive), Tx (Inactive)

Informações Relacionadas

- Exemplo de configuração de QoS dos switches Nexus 6000 Series

- Suporte Técnico e Documentação - Cisco Systems