본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
이 문서에서는 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 스위치에서 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 스위치는 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:
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 사용률을 수정하는 두 가지 옵션이 있습니다.
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 스위치는 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
아래 솔루션 중 하나 이상을 사용하십시오.
6500(config)#mac-address-table static 3333.FF4A.C3FD vlan <vlan #> drop
6500(config)#mac-address-table 3333.FF4A.C3FD vlan 19 interface Gi1/22
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 #>
6500(config)#no ipv6 mld snoopin
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
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 서비스 요청을 열어 자세히 조사하십시오.