목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

배경 정보

유니캐스트 트래픽 흐름 및 버퍼링

멀티캐스트 트래픽 흐름 및 버퍼링

입력 폐기 원인

문제 해결 시나리오

시나리오 1. 입력 폐기

1단계. 입력 폐기 시 포트 식별

2단계. ASIC 식별

3단계. 이그레스 병목이 발생한 포트 식별

Scenerio 2. HOLB로 입력 폐기

HOLB 완화:VOQ 제한 사용

HOLB 완화:트래픽 분류

관련 정보

소개

이 문서에서는 Cisco Nexus 5600/6000 시리즈 스위치의 입력 폐기 문제를 해결하는 방법에 대해 설명합니다.

사전 요구 사항

요구 사항

Cisco에서는 Cisco Nexus 6000 Series 컨피그레이션에 대한 기본적인 지식을 보유하고 있는 것이 좋습니다.

사용되는 구성 요소

이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.

- Cisco Nexus 6001

- 7.1(3)N1(1)

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다.이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다.네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 이해해야 합니다.

배경 정보

입력 폐기는 초과 가입 이그레스 포트를 나타냅니다.또한 특정 포트에서 유니캐스트 트래픽을 삭제할 가능성이 높습니다.이 문서에서는 유니캐스트 및 멀티캐스트 트래픽이 이 이 플랫폼에서 버퍼링되는 방법과 완화 단계와 함께 입력 폐기 발생 방법을 이해하는 데 도움이 됩니다.

유니캐스트 트래픽 흐름 및 버퍼링

유니캐스트 트래픽은 이그레스 버퍼 풀에서 먼저 대기된 다음 이그레스 큐가 가득 찬 후 인그레스 버퍼에 이미지에 표시됩니다.

16MB 인그레스 공유 버퍼와 9MB 이그레스 공유 버퍼가 있습니다.버퍼는 12 x 10 기가비트 포트 또는 3 x 40 기가비트 포트 간에 공유됩니다.공유 버퍼는 버스트 흡수에 적합합니다.

다음은 참조에 대한 메모리 할당을 시각적으로 나타낸 것입니다(Bigsur는 ASIC/Unified Port Controller의 이름).

멀티캐스트 트래픽 흐름 및 버퍼링

- 멀티캐스트 패킷은 버퍼링되고 이그레스 시 삭제됩니다.

- HOLB(Head of Line Blocking)를 방지하기 위해 멀티캐스트 패킷을 혼잡 지점에 가깝게 삭제합니다.

- 이미지에 표시된 것처럼 유니캐스트의 무손실 패브릭을 유지합니다.

대부분의 경우 이그레스 삭제는 항상 멀티캐스트/브로드캐스트/알 수 없는 유니캐스트 트래픽 때문입니다.

입력 폐기 원인

혼잡한 이그레스 포트로 인해 이그레스 버퍼가 먼저 가득 찬 다음 인그레스(ingress)의 후면 압력이 발생합니다.이는 유니캐스트 트래픽에만 적용됩니다.인그레스 버퍼가 꽉 차면 인그레스(ingress)에 트래픽이 삭제될 수 있으며, 이로 인해 입력이 폐기됩니다.

이 설명은 매우 높은 수준의 요약과 간단하지만, 특히 다른 종류의 트래픽, 대기열 등을 볼 때 더욱 그렇습니다.Nexus 플랫폼에서 자주 사용되는 VOQ(Virtual Output Queue)의 개념이 있습니다.VOQ는 이그레스 포트당 모든 IEEE 802.1p CoS(Class of Service)에 대한 인그레스 버퍼를 할당하는 것입니다.따라서 이그레스 포트당 8개의 VOQ가 있습니다.

한 CoS에서 한 이그레스 포트의 혼잡은 결국 인그레스 포트에서 해당 VOQ의 혼잡을 유발합니다.제한에 도달하면 트래픽이 삭제됩니다.그러나 다른 CoS 또는 다른 이그레스 인터페이스로 향하는 트래픽에는 영향을 주지 않으므로 HOLB가 방지되어 혼잡이 확산됩니다.인그레스(ingress)에서 이그레스(egress) 포트로의 트래픽 흐름과 재생 중인 다양한 블록이 이미지에 표시되어 있습니다.

문제 해결 시나리오

시나리오 1. 입력 폐기

랩 설정:

라인 레이트 트래픽 이그레스 e1/3 및 가능한 초과 서브스크립션:

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

이와 같이 시뮬레이션된 설정에서는 오버서브스크립션의 원인을 알고 있지만 트래픽 프로필이 버스트되는 프로덕션 설정에서는 이러한 명령을 통해 혼잡한 이그레스 포트를 찾아내는 것이 쉽지 않습니다.

여기에 나열된 단계는 혼잡한 이그레스 포트를 식별하는 데 도움이 됩니다.

1단계. 입력 폐기 시 포트 식별

포트 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)

2단계. ASIC 식별

- 이 출력에서 인터페이스를 내부 ASIC(UPC) 번호에 매핑합니다.

- 인그레스 포트 ID에서 드롭을 확인한 인그레스 ASIC ID를 확인합니다.

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.

3단계. 이그레스 병목이 발생한 포트 식별

- VOQ 카운터로 혼잡한 이그레스 포트를 식별합니다.

- drop에 어떤 이그레스 포트가 기여하는지 확인하려면 voq asic-num 카운터의 ASIC 번호를 사용합니다.

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

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

Scenerio 2. HOLB로 입력 폐기

랩 설정:

모든 포트는 vlan 100에 있습니다.

e1/4 및 e1/1에서 입력 폐기(인그레스 인터페이스의 트래픽 속도에 따라 달라짐)를 볼 수 있습니다.

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

Scenerio 1에 대해 문서화된 것과 동일한 프로세스를 사용하여 이그레스 병목 포트를 찾을 수 있습니다.

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

영향을 받아야 하는 흐름은 10.10.10.50에 있습니다. 10.10.10.101과 10.10.10.102 사이의 흐름은 깨끗해야 합니다.

그러나 이것은 그렇지 않다.정체 또는 저속 유출 이그레스 포트는 트래픽을 이그레스 포트로 전송하는 하나 이상의 인그레스 포트의 모든 버퍼를 소진하여 이러한 인그레스 포트의 모든 트래픽에 영향을 미칠 수 있습니다.이것은 전형적인 HOLB 문제입니다.

고속 트래픽 생성기는 흐름이 삭제되었음을 나타냅니다.포트 번호는 이미지에 표시된 대로 Spient 포트 번호입니다.

HOLB 완화:VOQ 제한 사용

이 시나리오를 피하기 위해 설정된 임계값으로 VOQ(유니캐스트 트래픽에만 해당)를 구성할 수 있습니다.

nexus6001(config)# hard unicast voq-limit

컨피그레이션 후에는 혼잡하지 않은 포트로 향하는 흐름은 영향을 받지 않습니다.

이미지에 표시된 것처럼 VOQ 제한 컨피그레이션 후의 Spient Traffic Generator 보기가 표시됩니다.

이 구성에서는 HOLB로 인한 삭제를 방지하기 위해 확실한 이점을 제공합니다.기본 컨피그레이션이 아닌 이유는 무엇입니까?

일반적으로 프로덕션 환경의 트래픽은 자연적으로 폭발할 수 있습니다.VOQ 임계값을 비활성화하면, 삭제 없이 인그레스 버퍼가 트래픽 마이크로 버스트를 흡수할 수 있습니다.

VOQ 제한을 활성화해야 하는 상황이 발생하지 않는 한 기본값을 비활성화하는 것이 좋습니다.

HOLB 완화:트래픽 분류

QoS 컨피그레이션을 사용하여 HOLB를 완화하는 또 다른 방법이 있습니다.인그레스(ingress)는 특정 VOQ에만 영향을 주므로, 이는 특정 QOS 클래스이며, 이는 특정 QOS 클래스이므로, 영향받는 트래픽을 정체를 알 수 없는 포트에 다른 QOS 그룹에 매핑할 수 있습니다.이 출력에서 인그레스 삭제는 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)

여기서 컨피그레이션은 중요한 트래픽을 QoS-Group 2에 매핑합니다.

1. 삭제할 수 없는 트래픽에 대한 ACL을 정의합니다.목표는 이 트래픽을 다른 QOS 그룹으로 분류하여 영향을 받지 않도록 하는 것입니다.

ip access-list SINGLEFLOW

statistics per-entry

10 permit ip 10.10.10.101/32 10.10.10.102/32

2. 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. 네트워크 QoS 구성:

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. 다양한 정책을 적용합니다.네트워크 QoS는 시스템 전체에 적용되지만 분류 정책을 단일 인터페이스에 적용할 수 있습니다.

system qos

service-policy type network-qos NQOS-GRP2

interface Ethernet1/1

service-policy type qos input QOS_POLICY_FIX_AFFECTED_FLOW

5. QoS 그룹 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)

관련 정보

- Nexus 6000 Series 스위치 QoS 컨피그레이션 예

- 기술 지원 및 문서 − Cisco Systems