目錄

簡介

必要條件

需求

採用元件

問題

疑難排解與解決方案

Catalyst 3850 系列交換器

解決方案

Catalyst 4500 系列交換器

解決方案

Catalyst 6500 系列交換器

解決方案

相關思科支援社群討論

簡介

本文檔介紹由於IPV6多播偵聽程式發現資料包泛洪而導致各種Catalyst平台上的CPU使用率較高，以及緩解此問題的方法。

必要條件

沒有先決條件。

需求

本文件沒有特定需求。

採用元件

本檔案中的資訊是根據Cisco Catalyst 6500系列交換器、Catalyst 4500系列交換器和Catalyst 3850系列交換器。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。

問題

某些Cisco Catalyst平台上可能會出現CPU使用率較高的情況，這是因為MAC地址在333.xxxx.xxxx範圍內的IPv6組播流量被傳送到CPU。

根據RFC7042，所有MAC-48組播識別符號的字首為「33-33」(即，從33-33-00-00-00-00到33-33-FF-FF-FF-FF範圍內的2**32組播MAC識別符號)均按照[RFC2464]中對IPv6組播指定的方式使用。具有多點傳送目的地位址DST的IPv6封包（由16個八位元組成DST[1]到DST[16]）會傳送到乙太網路多點傳送位址，該位址的前兩個八位元是值3336十六進位制的，最後四個八位元是DST的最後四個八位元，如圖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 系列交換器

在Catalyst 3850交換機上，NGWC L2M進程使用CPU處理IPv6資料包。當交換器上停用多點傳送監聽器探索(MLD)監聽時，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 snooping，以全域性啟用ipv6 mld snooping。這樣會降低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 系列交換器

Catalyst 4500系列交換器支援使用三重內容可定址記憶體(TCAM)的IPv6多點傳送流量的硬體轉送。 Cisco Catalyst 4500E和4500X系列交換器上的多點傳送對此進行說明

對於IPv6組播偵聽程式發現流量，交換機需要執行軟體轉發（使用CPU資源）。 如在Catalyst 4500交換器上設定IPv6 MLD窺探中所述，可以全域性或每個VLAN啟用或停用MLD窺探。當啟用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. 啟用控制平面策略(CoPP)，以丟棄要傳送到CPU的過量IPv6組播偵聽器發現流量。並且，這些資料包是一個本地鏈路的跳數限制，因此預計這些資料包將被轉發到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流量限製為每秒32000個資料包。

Catalyst 6500 系列交換器

Catalyst 6500交換器使用TCAM在硬體中作出轉送決定，而只要TCAM具有轉送專案，通常不需要CPU協助。

Catalyst 6500交換器上的Supervisor Engine 720具有兩個CPU。一個CPU是網路管理處理器(NMP)或交換機處理器(SP)。 另一個CPU是第3層CPU，稱為路由處理器(RP)。

show process cpu 命令中列出了進程和中斷CPU利用率。如下所示，高 由中斷導致的CPU主要基於流量。中斷交換流量，是與特定進程不匹配，但仍需要轉發的流量。以下示例顯示由於中斷而導致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. 使用VLAN訪問控制清單(VACL)丟棄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)捨棄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服務請求進行進一步調查。