목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

문제

문제 해결 및 솔루션

Catalyst 3850 Series 스위치

솔루션

Catalyst 4500 Series 스위치

솔루션

Catalyst 6500 Series 스위치

솔루션

관련 Cisco 지원 커뮤니티 토론

소개

이 문서에서는 IPV6 멀티캐스트 수신기 검색 패킷의 플러딩으로 인한 다양한 Catalyst 플랫폼의 높은 CPU 사용률 및 이 문제를 완화하는 방법에 대해 설명합니다.

사전 요구 사항

필수 구성 요소가 없습니다.

요구 사항

이 문서에 대한 특정 요건이 없습니다.

사용되는 구성 요소

이 문서의 정보는 Cisco Catalyst 6500 Series 스위치, Catalyst 4500 Series 스위치 및 Catalyst 3850 Series 스위치를 기반으로 합니다.

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다.이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다.

문제

CPU로 펀딩되는 333.xxxx.xxxx 범위의 MAC 주소를 사용하는 IPv6 멀티캐스트 트래픽으로 인해 일부 Cisco Catalyst 플랫폼에서 높은 CPU 사용률이 표시될 수 있습니다.

RFC7042에 따라, 모든 MAC-48 멀티캐스트 식별자는 "33-33" 앞에 접두사를 붙입니다(즉, 33-33-00-00-00-00-00-33-FF-FF-FF-FF-FF-FF-FF-FF-FF) 범위의 범위에 2**3222 멀티캐스트 MAC MAC 식별자가 [IP4444464444444444에 지정된 대로 사용됩니다. v6 멀티캐스트16개의 8진수 DST[1]부터 DST[16]까지 구성된 멀티캐스트 대상 주소가 DST인 IPv6 패킷은 처음 2개의 8진수가 3333의 16진수로, 마지막 4개의 8진수가 DST의 마지막 4진수로 이더넷 멀티캐스트 주소로 전송됩니다. 그림 1에 나와 있습니다.

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

|0 0 1 1 0 0 1 1|0 0 1 1 0 0 1 1|

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

|   DST[13]     |   DST[14]     |

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

|   DST[15]     |   DST[16]     |

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

(Figure 1: Address Mapping - Multicast)

특정 NIC 카드를 사용하는 호스트 디바이스가 절전 모드로 전환되면 IPv6 멀티캐스트 트래픽이 플러딩되는 경우가 종종 있습니다.이 문제는 특정 호스트 벤더에 국한되지 않습니다. 특정 칩셋이 다른 특정 벤더보다 이러한 동작을 더 자주 나타내 왔습니다.

문제 해결 및 솔루션

다음 절차를 사용하여 CPU 사용률이 높은 Catalyst 스위치가 이 문제의 영향을 받는지 확인하고 각 솔루션을 구현할 수 있습니다.

Catalyst 3850 Series 스위치

Catalyst 3850 스위치에서 NGWC L2M 프로세스는 CPU를 사용하여 IPv6 패킷을 처리합니다.스위치에서 MLD(Multicast Listener Discovery) 스누핑이 비활성화되면 MLD 가입/탈퇴 패킷이 모든 멤버 포트로 플러딩됩니다.그리고 수신 MLD 가입/탈퇴 패킷이 많은 경우 이 프로세스에서는 모든 멤버 포트에서 패킷을 전송하기 위해 더 많은 CPU 사이클을 사용합니다.특정 호스트 시스템이 절전 모드로 전환되면 초당 수천 개의 IGMPv6 MLD 트래픽을 전송할 수 있습니다.

3850#show processes cpu detailed process iosd sorted | exc 0.0

Core 0: CPU utilization for five seconds: 43%; one minute: 35%; five minutes: 33%

Core 1: CPU utilization for five seconds: 54%; one minute: 46%; five minutes: 46%

Core 2: CPU utilization for five seconds: 75%; one minute: 63%; five minutes: 58%

Core 3: CPU utilization for five seconds: 48%; one minute: 49%; five minutes: 57%

PID    T C  TID    Runtime(ms) Invoked uSecs  5Sec      1Min     5Min     TTY   Process

12577  L           2766882     2422952 291    23.52     23.67   23.69   34816 iosd

12577  L 3  12577  1911782     1970561 0      23.34     23.29   23.29   34818 iosd

12577  L 0  14135  694490      3264088 0      0.28      0.34    0.36    0     iosd.fastpath

162    I           2832830     6643    0      93.11     92.55   92.33   0     NGWC L2M

솔루션

영향을 받는 스위치에 ipv6 mld 스누핑을 구성하여 ipv6 mld 스누핑을 전역적으로 활성화합니다.이렇게 하면 CPU 사용률이 낮아집니다.

3850#conf t

Enter configuration commands, one per line. End with CNTL/Z.

3850(config)#ipv6 mld snooping

3850(config)#end

MLD 스누핑이 활성화된 경우 VLAN별 IPv6 멀티캐스트 주소 테이블이 소프트웨어 및 하드웨어에서 생성됩니다.그런 다음 스위치에서는 하드웨어에서 IPv6 멀티캐스트 주소 기반 브리징을 수행하여 이러한 패킷이 소프트웨어에서 처리되지 않도록 합니다.

MLD 스누핑 구성에 대한 자세한 내용을 보려면 링크를 클릭하십시오.

이전 버전의 IOS XE에서 이 문제로 인해 CPU 대기열이 중단되어 해당 대기열의 모든 제어 패킷이 CPU로 이동하지 못하는 것을 발견했습니다.이는 IOS 버전 3.3.3 및 3.6.0 이상에서 CSCuo14829를 통해 수정되었습니다.자세한 내용은 이 버그를 참조하십시오.

Catalyst 4500 Series 스위치

Catalyst 4500 Series 스위치는 TCAM(Ternary Content Addressable Memory)을 사용하여 IPv6 멀티캐스트 트래픽의 하드웨어 포워딩을 지원합니다. 이 내용은 Cisco Catalyst 4500E 및 4500X Series 스위치의 멀티캐스트에서 설명합니다.

IPv6 Multicast Listener Discovery 트래픽의 경우 스위치에서 CPU 리소스를 사용하여 소프트웨어 전달을 수행해야 합니다. Catalyst 4500 스위치에서 IPv6 MLD 스누핑 구성 MLD 스누핑은 전역적으로 또는 VLAN별로 활성화 또는 비활성화할 수 있습니다.MLD 스누핑이 활성화된 경우 VLAN별 IPv6 멀티캐스트 MAC 주소 테이블이 소프트웨어로 구성되고 소프트웨어별 VLAN IPv6 멀티캐스트 주소 테이블이 생성됩니다.그런 다음 스위치는 하드웨어에서 IPv6 멀티캐스트 주소 기반 브리징을 수행합니다.이는 Catalyst 4500 시리즈 스위치의 예상 동작입니다.

CPU에 펀딩되는 패킷의 유형을 확인하기 위해 "debug platform packet all buffer" 다음에 "show platform cpu packet buffered" 명령을 실행할 수 있습니다.

4500#debug platform packet all buffer

platform packet debugging is on

Cat4500#sh platform cpu packet buffered

Total Received Packets Buffered: 1024

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

Index 0:

33 days 11:42:21:833532 - RxVlan: 214, RxPort: Te1/15

Priority: Normal, Tag: Dot1Q Tag, Event: L2 Router, Flags: 0x40, Size: 90

Eth: Src 44:39:C4:39:5A:4A Dst 33:33:FF:7F:EB:DB Type/Len 0x86DD

Remaining data&colon;

0: 0x60 0x0  0x0  0x0  0x0  0x20 0x0  0x1  0xFE 0x80

10: 0x0  0x0  0x0  0x0  0x0  0x0  0x46 0x39 0xC4 0xFF

20: 0xFE 0x39 0x5A 0x4A 0xFF 0x2  0x0  0x0  0x0  0x0

30: 0x0  0x0  0x0  0x0  0x0  0x1  0xFF 0x7F 0xEB 0xDB

40: 0x3A 0x0  0x5  0x2  0x0  0x0  0x1  0x0  0x83 0x0

이 패킷은 소스 mac 주소 44:39:C4:39:5A:4A에서 vlan 214의 인터페이스 Tengigabitethernet1/15에 도착했습니다.이 경우 프로토콜 0x86DD는 IPv6이고 Dst MAC 33:33:FF:7F:EB:DB는 멀티캐스트 IPv6 MLD 노드에 사용됩니다.

솔루션

이 트래픽으로 인해 높은 CPU 사용률을 수정하는 두 가지 옵션이 있습니다.

1. 엔드 호스트에서 IPv6 멀티캐스트 수신기 검색 트래픽 생성을 비활성화합니다.이 작업은 NIC 드라이버를 업그레이드하거나 IPv6 패킷을 전송하는 호스트의 BIOS에서 기능을 비활성화하여 수행할 수 있습니다.BIOS에서 기능을 비활성화하거나 NIC 드라이버를 업그레이드하는 데 도움이 되는 클라이언트 시스템의 공급업체에 문의할 수 있습니다.

2. CPU에 펀딩되는 과도한 양의 IPv6 멀티캐스트 수신기 검색 트래픽을 삭제하려면 CoPP(Control Plane Policing)를 활성화합니다.그리고 이러한 패킷은 하나의 링크 로컬 홉으로 제한됩니다. 따라서 이러한 패킷이 CPU에 펀딩될 것으로 예상됩니다.

ipv6 access-list IPv6-Block

permit ipv6 any any

!

class-map TEST

match access-group name IPv6-Block

!

policy-map ipv6

class TEST

police 32000 conform-action drop exceed-action drop

!

control-plane

service-policy input ipv6

위의 예에서는 CPU에서 처리하는 IPv6 트래픽의 양을 초당 3,2000패킷으로 제한합니다.

Catalyst 6500 Series 스위치

Catalyst 6500 스위치는 TCAM에 포워딩 항목이 있는 한 일반적으로 CPU 지원이 필요하지 않은 TCAM을 사용하여 하드웨어에서 포워딩 결정을 합니다.

Catalyst 6500 스위치의 Supervisor Engine 720에는 2개의 CPU가 있습니다.CPU 하나는 NMP(Network Management Processor) 또는 SP(Switch Processor)입니다. 다른 CPU는 RP(Route Processor)라고 하는 Layer 3 CPU입니다.

프로세스 및 인터럽트 CPU 사용률은 show process cpu 명령에 나열됩니다.아래에 표시된 대로, 높음 인터럽트로 인해 발생한 CPU는 대부분 트래픽을 기반으로 합니다.Interrupt switched traffic은 특정 프로세스와 일치하지 않지만 전달해야 하는 트래픽입니다.다음 예는 인터럽트로 인해 RP에서 CPU 사용률이 높은 Catalyst 6500 스위치를 보여줍니다.

6500#show process cpu

CPU utilization for five seconds: 98%/92%;

one minute: 99%; five minutes: 99% PID Runtime(ms)   Invoked

인터페이스 또는 레이어 3 VLAN이 많은 양의 트래픽을 삭제하는지 확인합니다.(입력 대기열이 삭제됩니다.) 이 경우 트래픽이 해당 vlan에서 RP로 펀딩될 수 있습니다.

Vlan19 is up, line protocol is up

Input queue: 0/75/6303532/0 (size/max/drops/flushes); Total output drops: 0

Queueing strategy: fifo

5 minute input rate 19932000 bits/sec, 26424 packets/sec

5 minute output rate 2662000 bits/sec, 1168 packets/sec

다음 명령을 사용하여 인터페이스 vlan 19의 입력 대기열 버퍼에서 모든 패킷을 찾을 수 있습니다.

6500#show buffer input-interface vlan 19 packet

또는 NetDR 캡처를 사용하여 Catalyst 6500 스위치의 CPU로 이동하는 트래픽을 캡처할 수 있습니다. 이 문서에서는 NetDR 캡처를 사용하여 캡처된 패킷을 해석하는 방법에 대해 설명합니다.

------- dump of incoming inband packet -------

interface Vl16, routine mistral_process_rx_packet_inlin, timestamp 03:17:56.380

dbus info: src_vlan 0x10(16), src_indx 0x1001(4097), len 0x5A(90)

bpdu 0, index_dir 0, flood 1, dont_lrn 0, dest_indx 0x4010(16400)

E8820000 00100000 10010000 5A080000 0C000418 01000008 00000008 4010417E

mistral hdr: req_token 0x0(0), src_index 0x1001(4097), rx_offset 0x76(118)

requeue 0, obl_pkt 0, vlan 0x10(16)

destmac 33.33.FF.4A.C3.FD, srcmac C8.CB.B8.29.33.62, protocol 86DD

protocol ipv6: version 6, flow 1610612736, payload 32, nexthdr 0, hoplt 1

class 0, src FE80::CACB:B8FF:FE29:3362, dst FF02::1:FF4A:C3FD

솔루션

아래 솔루션 중 하나 이상을 사용하십시오.

1. 다음 컨피그레이션을 사용하여 IPv6 멀티캐스트 패킷을 삭제합니다.

6500(config)#mac-address-table static 3333.FF4A.C3FD vlan <vlan #> drop

2. IPv6 멀티캐스트 트래픽을 사용하지 않거나 관리자 종료 인터페이스(이 예에서는 Gi1/22)로 리디렉션합니다.

6500(config)#mac-address-table 3333.FF4A.C3FD vlan 19 interface Gi1/22

3. VACL(Vlan Access Control List)을 사용하여 IPv6 멀티캐스트 트래픽을 삭제합니다.

6500(config)#mac access-li extended Multicast_MAC

6500(config-ext-macl)#permit any host 3333.FF4A.C3FD

6500(config-ext-macl)#exit

6500(config)#vlan access-map block-ipv6 10

6500(config-access-map)#action drop

6500(config-access-map)#match mac address Multicast_MAC

6500(config-access-map)#exit

6500(config-access-map)#vlan access-map block-ipv6 20

6500(config-access-map)#action forward

6500(config-access-map)#exit

6500(config)#vlan filter block-ipv6 vlan-list <vlan #>

4. IPv6 MLD 스누핑을 비활성화합니다.

6500(config)#no ipv6 mld snoopin

5. CoPP(Control Plane Policing)를 사용하여 IPv6 멀티캐스트 트래픽 삭제

6500(config)#ipv6 access-list test

6500(config-ipv6-acl)#permit ipv6 any any

6500(config-ipv6-acl)#exit

6500(config)#class-map TEST

6500(config-cmap)#match access-group name test

6500(config-cmap)#exit

6500(config)#policy-map ipv6

6500(config-pmap)#class TEST

6500(config-pmap-c)#police 320000 conform-action drop exceed-action drop

6500(config-pmap-c)#exit

6500(config)#control-plane

6500(config-cp)#service-policy in ipv6

6500(config-cp)#exit

6. 인그레스 인터페이스에서 스톰 제어를 사용합니다.storm-control은 1초 간격 동안 수신 트래픽 레벨을 모니터링하며, 이 간격 동안 구성된 트래픽 스톰 제어 레벨과 트래픽 레벨을 비교합니다.트래픽 스톰 제어 레벨은 포트의 사용 가능한 총 대역폭의 백분율입니다.각 포트에는 모든 트래픽 유형(브로드캐스트, 멀티캐스트, 유니캐스트)에 사용되는 단일 트래픽 스톰 제어 레벨이 있습니다.

6500(config)#interface Gi2/22

6500(config-if)#storm-control multicast level 10

7. SP(스위치 프로세서)에서 CPU가 높은 경우 아래에서 해결 방법을 적용합니다.

6500(config)#mls rate-limit ipv6 mld 10 1

이 문서에 제공된 정보를 기준으로 이유를 확인할 수 없는 경우 TAC 서비스 요청을 열어 자세히 조사하십시오.