内容

概要

前提条件

要件

使用するコンポーネント

問題

トラブルシューティングとソリューション

Catalyst 3850 シリーズ スイッチ

解決方法

『Catalyst 4500 Series Switches

解決方法

Cisco Catalyst 6500 シリーズ スイッチ

解決方法

関連するシスコ サポート コミュニティ ディスカッション

概要

このドキュメントでは、IPV6 Multicast Listener Discovery(MDRR)パケットのフラッディングに起因する、さまざまなCatalystプラットフォームでの高いCPU使用率と、この問題を軽減する方法について説明します。

前提条件

前提条件はありません。

要件

このドキュメントに特有の要件はありません。

使用するコンポーネント

このドキュメントの情報は、Cisco Catalyst 6500シリーズスイッチ、Catalyst 4500シリーズスイッチ、およびCatalyst 3850シリーズスイッチに基づくものです。

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期（デフォルト）設定の状態から起動しています。

問題

一部のCisco Catalystプラットフォームでは、3333.xxxx.xxxxの範囲のMACアドレスを持つIPv6マルチキャストトラフィックがCPUにパントされるため、CPU使用率が高くなる可能性があります。

RFC7042に従って、[RFC2464] for IPv6マルチキャストで指定されているように、すべてのMAC-48マルチキャスト識別子の先頭に「33-33」(つまり、33-33-00-00-00-00 ～ 33-33-FF-FF-FF-FFの範囲の2**32マルチキャストMAC識別子)が使用されます。マルチキャスト宛先アドレスがDST[1] ～ DST[16]のIPv6パケットは、図1に示すように、最初の2オクテットが値3333 16で、最後の4オクテットがDSTの最後の4オクテットであるイーサネットマルチキャストアドレスに送信されます。

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

|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マルチキャストトラフィックがフラッディングされることもあります。この問題は特定のホストベンダーに限定されるものではありませんが、特定のチップセットでは他のチップセットよりも頻繁にこの現象が発生することが確認されています。

トラブルシューティングとソリューション

次の手順を使用して、CatalystスイッチでCPU使用率が高いことが、この問題の影響を受けているかどうかを確認し、それぞれのソリューションを実装できます。

Catalyst 3850 シリーズ スイッチ

Catalyst 3850スイッチでは、NGWC L2M ProcessはCPUを使用してIPv6パケットを処理します。Multicast Listener Discovery(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スヌーピングを設定し、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 Switches

Catalyst 4500シリーズスイッチは、Ternary Content Addressable Memory(TCAM)を使用したIPv6マルチキャストトラフィックのハードウェア転送をサポートします。 これについては、「Cisco Catalyst 4500Eおよび4500Xシリーズスイッチでのマルチキャスト」を参照してください

IPv6 Multicast Listener Discovery(MLDP)トラフィックに関しては、スイッチがソフトウェア転送（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使用率を修正するには、2つのオプションがあります。

1. エンドホストでのIPv6マルチキャストリスナー探索トラフィックの生成を無効にします。これは、NICドライバをアップグレードするか、IPv6パケットを送信するホストのBIOSの機能を無効にすることで実行できます。クライアントマシンのベンダーに連絡して、BIOSの機能を無効にしたり、NICドライバをアップグレードしたりできます。

2. コントロールプレーンポリシング(CoPP)を有効にして、CPUにパントされている過剰な量のIPv6マルチキャストリスナー検出(MLDP)トラフィックをドロップします。また、これらのパケットは1つのリンクローカルのホップ制限であるため、これらのパケットが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トラフィックの量を1秒あたり32000パケットに制限しています。

Cisco Catalyst 6500 シリーズ スイッチ

Catalyst 6500スイッチは、TCAMを使用するハードウェアで転送の決定を行います。TCAMが転送エントリを持っている限り、通常はCPUのサポートを必要としません。

Catalyst 6500スイッチのSupervisor Engine 720には2つのCPUがあります。1つのCPUは、ネットワーク管理プロセッサ(NMP)またはスイッチプロセッサ(SP)です。 もう1つのCPUは、ルートプロセッサ(RP)と呼ばれるレイヤ3 CPUです。

プロセスおよび割り込みCPU使用率は、show process cpuコマンドで表示されます。次に示すように、High 割り込みによって発生する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つ以上を使用します。

1. 次の設定を使用して、IPv6マルチキャストパケットをドロップします。

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

2. IPv6マルチキャストトラフィックを未使用またはadmin shutdownインターフェイス（この例ではGi1/22）にリダイレクトします。

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

3. IPv6マルチキャストトラフィックをドロップするには、Vlan Access Control List(VACL)を使用します。

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秒間のインターバルで着信トラフィックレベルを監視し、そのインターバルの間にトラフィックレベルと設定済みのトラフィックストーム制御レベルを比較します。トラフィックストーム制御レベルは、ポートの使用可能な総帯域幅のパーセンテージです。各ポートには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サービスリクエストをオープンして、詳細な調査を行ってください。