この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、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スイッチでは、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シリーズスイッチは、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:
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つのオプションがあります。
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パケットに制限しています。
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つ以上を使用します。
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サービスリクエストをオープンして、詳細な調査を行ってください。