このドキュメントでは、Catalyst 6500/6000 スイッチでの Address Resolution Protocol(ARP)または Content Addressable Memory(CAM)テーブル関連の問題をトラブルシューティングする方法について説明します。
このドキュメントに特有の要件はありません。
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
Catalyst スイッチでは、レイヤ 2 スイッチングやマルチレイヤ スイッチング(MLS)用に準備された数タイプのテーブルが維持管理されており、これらを高速メモリに保存することにより、フレームやパケット内の多数のフィールドを並行して比較できます。
ARP:IP アドレスを MAC アドレスにマッピングして、レイヤ 2 ブロードキャスト ドメイン内での IP 通信を提供します。たとえば、Host B から Host A に情報を送信する場合に、Host B の ARP キャッシュに Host A の MAC アドレスがないとします。Host B は、Host A の IP アドレスに関連付けられた MAC アドレスを取得するためにブロードキャスト ドメイン内のすべてのホスト用にブロードキャスト メッセージを生成します。ブロードキャスト ドメイン内のすべてのホストは ARP 要求を受信し、Host A だけが MAC アドレスで応答します。
CAM - レイヤ 2 スイッチング用の CAM テ-ブルは Catalyst スイッチの全モデルで使用されています。フレームがスイッチ ポートに到着すると、送信元の MAC アドレスが認識され CAM テーブルに記録されます。このテーブルには、到着ポートと VLAN もタイムスタンプとともに記録されます。あるスイッチ ポートで認識された MAC アドレスが他のポートに移動した場合は、一番後で到着したポートでの MAC アドレスとタイムスタンプが記録されます。このため、前回のエントリは削除されます。テーブル内の既存の MAC アドレスが正しい到着ポートのものであった場合は、そのタイムスタンプだけがアップデートされます。
Ternary Content Addressable Memory(TCAM) - マルチレイヤ スイッチングでは、マッチング、フィルタリング、または制御特定のトラフィックなど、従来のルーティングでは Access Control Lists(ACL; アクセス コントロール リスト)によって提供されていたすべてのプロセスが、ハードウェアで実装されますTCAM により、エントリ アクセス リストによるパケットの評価が 1 回のテーブル ルックアップでできるようになります。ほとんどのスイッチでは TCAM が複数装備されており、インバウンドとアウトバウンド両方のセキュリティ、および QoS ACL の同時評価が可能です。さらに、レイヤ 2 やレイヤ 3 の転送デシジョンが包括的に並行して行えます。
分散スイッチングでは、それぞれの Distributed Feature Card(DFC)は自身の CAM テーブルを維持する役割を果たします。これは、特定のエントリに一致している CAM エージングとトラフィックに応じて、各 DFC が MAC アドレスを学習し、それらをエージングすることを意味します。分散スイッチングでは、スーパーバイザ エンジンが一定の期間、特定の MAC アドレスのトラフィックを参照しないことがよくあります。そのため、エントリは期限切れになる可能性があります。DFC(ライン モジュールに存在)および Policy Feature Card(PFC; ポリシー フィーチャ カード)(スーパーバイザ モジュールに存在)など、異なるエンジンの間で CAM テーブルの整合性を保つために、現在、次の 2 つのメカニズムがあります。
ファブリックへのフラッディング(FF)
MAC 通知(MN)
PFC 上で MAC アドレス エントリの期限が切れている場合、show mac-address address <MAC_Address> all コマンドを使用すると、その MAC アドレスを保有する DFC または PFC が表示されます。
MAC アドレスに対するトラフィックがない場合でも、DFC または PFC 上でそのエントリが期限切れにならないようにするには、MAC アドレス同期を有効にします。同期をイネーブルにするには、次のコマンドを発行します。
!--- This is a global configuration command and is used to enable the synchronization. Cat6K-IOS(config)#mac-address-table synchronize
!--- This is a privileged EXEC command and is used to clear dynamic MAC addresses. Cat6K-IOS#clear mac-address-table dynamic
mac-address-table synchronize コマンドは、Cisco IOS® ソフトウェア リリース 12.2(18)SXE4 以降から利用できます。同期を有効にした後も、PFC または DFC に存在しないエントリが表示される場合があります。ただし、モジュールにはエントリの非同期をイーサネット アウトオブバンド チャネル(EOBC)を使用する他のモジュールから学ぶための手段があります。
注意:mac-address-table synchronize コマンドは、ルーテッド MAC エントリを消去します。これを回避するには、mac-address-table aging-time 0 routed-mac グローバル コンフィギュレーション コマンドを使用して、ルーテッド MAC の消去を無効にします。
Cisco Express Forwarding(CEF; Cisco エクスプレス フォワーディング)はレイヤ 3 の IP スイッチング テクノロジーであり、特にダイナミックなトラフィック パターンを持つネットワークでは、他のスイッチング テクノロジーよりも優れたパフォーマンスを提供します。CEF では、Forwarding Information Base(FIB; 転送情報ベース)と呼ばれるデータ ストラクチャのテーブルと隣接関係テーブルが維持管理されます。FIB テーブルにはルーティング テーブルの情報がミラーリングされ、転送デシジョンのために使用されます。隣接関係テーブルには、ネクストホップ デバイス用に事前に計算されたリンクレイヤ ヘッダーが置かれています。FIB テーブルのエントリは、ネクストホップ インターフェイスに基づき、隣接関係テーブルのエントリにマッピングされています。隣接関係テーブルに必要な情報が置かれていないと、デバイスでは CEF によるパケットのスイッチングが実行できません。
CEF で正常動作期間中に一定間隔でパケットが廃棄される場合は、おそらく、隣接関係テーブルが定期的にクリアされることが原因です。これは ARP エントリのエージングにより発生します。隣接関係テーブルに必要なネクストホップ情報が置かれていない間は、パケットは CEF スイッチングされません。ARP エントリはデフォルトでは 4 時間おきにリフレッシュされますが、ARP タイムアウトの設定値が短すぎると CEF 動作が分断されます。
ARP キャッシュにエントリが存続する時間を変更するには、インターフェイス コンフィギュレーション モードで arp timeout コマンドを発行します。
この脆弱性についての詳細は、Cisco Bug ID CSCeb53542(登録ユーザ専用)を参照してください。CEF の隣接性についての詳細は、『CEF の不完全な隣接関係に関するトラブルシューティング』を参照してください。
スイッチでは、送信元 MAC アドレス 00-00-00-00-00-00 は CAM テーブルでフィルタリングされます。これは無効な送信元 MAC です。このエラーが発生すると、次のような出力が syslog に表示されます。
%SYS-4-P2_WARN: 1/Filtering MAC address 00-00-00-00-00-00 on port 2/48 from host table
これらのメッセージは情報提供のためのもので、送信元 MAC アドレスが 00-00-00-00-00-00 のフレームが検出されたことを示しています。スイッチでは、これは CAM テーブルには加えられません。ただし、すべてゼロの MAC アドレスを送信元とするトラフィックの転送は行われます。
この問題を回避するためには、すべてゼロの送信元 MAC アドレスが設定されたフレームを生成する端末を特定します。通常は、次のデバイスのいずれかがこのようなフレームを送信しています。
トラフィック ジェネレータ(Spirent SmartBits など)
特定のタイプのサーバ(ロードバランシング IBM WebSphere サーバなど)
設定ミスのあるルータや端末(すべてゼロのブロードキャストを送信しているデバイスなど)
不良 NIC
LAN スイッチではレイヤ 2 テーブルと CAM テーブルのような転送テーブルが使用され、これにより、フレームの VLAN 番号と宛先 MAC アドレスに基づいて、特定のポートにトラフィックが誘導されます。着信 VLAN でフレームの宛先 MAC アドレスに対応するエントリがない場合、この(ユニキャスト)フレームは該当 VLAN 内のすべての転送ポートに送信されます。これによりフラッドが発生します。スイッチのレイヤ 2 転送テーブルにパケットの宛先 MAC アドレスがないことが、フラッドの元々の原因です。この場合、このパケットが受信されたポート以外の、VLAN 内のすべての転送ポートにパケットがフラッディングされます。
デフォルトの ARP テーブル エージング時間は 4 時間ですが、CAM でエントリが保持されるのは 5 分間だけです。宛先 MAC アドレスが CAM テーブルからエージング アウトされると、スイッチでは該当 VLAN 内のすべての転送ポートにフレームが送出されます。ユニキャスト フラッディングを防ぐには、CAM エージング タイマーを ARP タイムアウト同等以上にする必要があります。回避策として、問題が発生している VLAN の CAM エージング タイマー値を増やすために、次のコマンドのいずれかを発行して、ARP エージング時間に合せます。
CatOS の場合は、set cam agingtime コマンドを発行します。
Cisco IOS ソフトウェアの場合は、mac-address-table aging-time コマンドを発行します。
注:Hot Standby Router Protocol(HSRP)を実行するCatalyst環境では、CAMタイマーとARPタイマーが同期していることを確認することをお勧めします。
スイッチド ネットワークでのユニキャスト パケットのフラッドの可能性のある原因と影響についての詳細は、『スイッチド キャンパス ネットワークにおけるユニキャスト フラッディング』を参照してください。
ハイブリッド モードの場合、スーパーバイザ エンジンでは CatOS が稼働し、Multilayer Switch Feature Card(MSFC; マルチレイヤ スイッチ フィーチャ カード)では Cisco IOS が稼働します。CatOS はレイヤ 2 で動作し、VLAN、MAC アドレスおよびポート番号情報を保持するために CAM アドレス テーブルを構築します。MSFC の Cisco IOS はレイヤ 3 で動作し、IP アドレスから MAC アドレスへの解決を維持するために ARP テーブルを構築します。プリンタやサーバなどのデバイスの IP アドレスを変更すると、その新しい IP アドレスに ping できない可能性があります。ただし、同じ VLAN からは新しい IP アドレスに ping できます。これは MSFC での ARP 問題に関連している可能性があります。
次の回避策は、問題を切り分けて解決するのに役立ちます。
MSFC の ARP テーブルをクリアします。
MSFC2#clear arp int vlan 40
ARP タイムアウト値を確認します。デフォルト値は、4 時間です。VLAN の ARP タイムアウト値が高い場合は、デフォルト値または最適値にタイムアウト値を設定し直すことができます。
MSFC2#show int vlan 40 Vlan40 is up, line protocol is up Hardware is Cat6k RP Virtual Ethernet, address is 00d0.0050.33fc (bia 00d0.005 0.33fc) Internet address is 40.40.40.3/24 MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation ARPA, loopback not set Keepalive not supported ARP type: ARPA, ARP Timeout 04:00:00 Last input 00:00:00, output 00:01:44, output hang never Last clearing of "show interface" counters never Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
MSFC2#conf t Enter configuration commands, one per line. End with CNTL/Z. MSFC2(config)#int vlan 40 MSFC2(config-if)#arp timeout ? <0-2147483> Seconds MSFC2(config-if)#arp timeout 240
MSFC をリロードします。
MSFC2#write memory Building configuration... [OK] MSFC2#reload Proceed with reload? [confirm] Supervisor> (enable)
この問題が発生した際の syslog のエラー出力例を、次に示します。
%EARL-2-EARL4LOOKUPRAMERROR:Address eac6, data 0-0-8000-0, count 8
これが表示されるのは、CAM テーブルのルックアップを行う際です。これは、メモリをアクセスする際のパリティ エラーにより発生しています。通常、このエラーが生成されるのは、CAM テーブルにアクセスするために show cam コマンドを発行する際です。show cam コマンドを発行すると、スイッチがリセットされる場合もあります。
%EARL-2-EARLLOOKUPRAMERROR: Address [hex], data [hex]-[hex]-[hex]-[hex], count [dec]
このエラー メッセージでは、ルックアップ RAM パリティ エラーが検出されたことが示されています。Address の [hex] フィールドで示されるのは、エラーが検出された転送テーブル内のアドレスです。data の [hex]-[hex]-[hex]-[hex] フィールドで示されるのは、パリティ エラーが生成された RAM データの word0、word1、word2、および word3 です。count の [dec] フィールドで示されるのは、パリティ エラーの合計数です。
これが単発で発生している場合は、このメッセージは重大なものではなく、停止状態に至る可能性はありません。このメッセージが連続して表示される場合、スイッチでは、CAM テーブルに新規エントリを追加する際に不良 DRAM セクターへの書き込みが試行されていることを示しています。この場合、その DRAM あるいはスーパーバイザ自体を交換する必要があります。
アクティブ側のスーパーバイザ エンジンで設定されたスタティック CAM エントリは、ファースト スイッチオーバー後に消失します。この問題の回避策として、ファースト スイッチオーバー後に CAM エントリを再設定する必要があります。
この脆弱性についての詳細は、Cisco Bug ID CSCed87627(登録ユーザ専用)および CSCee27955(登録ユーザ専用)を参照してください。
TCAM に空きがない状態で、新規 ACL を追加しようとするか、既存の ACL にアクセス コントロール エントリ(ACE)を追加しようとすると、コミットやマップ プロセスが失敗します。それよりも前の設定は、有効なままです。Router Access Control List(RACL)の場合、ACL はマルチレイヤ スイッチ フィーチャ カード(MSFC)上のソフトウェアで実行され、相応のパフォーマンス上の低下があります。
ハイブリッド ソフトウェアが稼働するスイッチでは、TCAM のパターンやマスク容量を超過する Virtual Local Area Network Access Control List(VACL)や QoS ACL ACE を設定すると、次のような syslog メッセージがコンソールに表示されます。
%ACL-5-TCAMFULL: acl engine TCAM table is full
スーパーバイザの IOS システム、あるいは、ハイブリッド システムでの MSFC では、TCAM の容量を超過する RACL ACE を設定すると、次のような syslog メッセージがコンソールに表示されます。
%FM-4-TCAM_ENTRY: Hardware TCAM entry capacity exceeded
スーパーバイザの IOS システム、あるいは、ハイブリッド システムでの MSFC では、ACL がハードウェアで実行される(ACTIVE)インターフェイスと ACL がソフトウェアで実行される(INACTIVE)インターフェイスの識別のために show fm summary コマンドを発行します。
この問題の回避策は、スイッチの設定から、使用されていない ACL や QoS を削除することです。詳細は、『Catalyst 6500 シリーズ スイッチでの ACL について』を参照してください。
VLAN インターフェイスに ping を発行すると、その VLAN のソース IP を含む ARP 要求がデフォルト ルータ(MSFC)に送信されます。ただし、ルータは ARP 要求に応答せず、デバッグ ARP で次のエラー メッセージが表示されます。
IP ARP req filtered src [ip-address] [mac-address] dst [ip-address] [mac-address] wrong cable, interface-id
各 ARP データグラムでは、宛先 IP アドレスがローカル ホスト アドレスと一致しない場合、ARP 応答は廃棄されます。ソース IP アドレスが同じサブネットにない場合、ARP 要求は廃棄されます。複数のサブネットが同じケーブル上で共存できるまれなケースをサポートするには、このテストがコンフィギュレーション パラメータによって上書きされることが望ましいと言えます。
ARP 応答は、宛先プロトコルの IP アドレスがローカル ホストから到達可能であることがルーティング アルゴリズムによって判定された場合にだけ生成され、ネクスト ホップは同じインターフェイスを経由しません。ローカル ホストがゲートウェイとして機能する場合、宛先への ARP 応答は同じサブネット内に存在しない可能性があります。これは、ARP 要求の廃棄が正当であることを示しています。
これは、ARP 要求のソース IP アドレスが ARP のターゲット IP アドレスとは異なるサブネット上にあるため、Catalyst 6500 がすべての ARP 要求に応答しないように設定することによって解決できます。したがって、MSFC/Router は ARP が同じレイヤ 2 ドメインに残らなかったと判断し、間違ったケーブル タイプを示します。つまり、ARP の送信元と宛先が同じレイヤ 2 ドメインに属さない場合は、間違ったケーブルのデバッグ メッセージが生成されます。このシナリオで ARP が正常に機能するためには、回避策としてスタティック ルートを使用して、宛先プロトコル IP に到達できるようにする必要があります。
MAC アドレス テーブル内の 2 つのエントリは、MAC アドレスに関する情報を示します。
Cat6K#show mac-address-table int gi 6/11 Displaying entries from Line card 6: Legend: * - primary entry age - seconds since last seen n/a - not available vlan mac address type learn age ports ------+----------------+--------+-----+----------+-------------------------- [FE 1]: * 100 0011.857c.4d10 dynamic Yes 0 Gi6/11 [FE 2]: * 100 0011.857c.4d10 dynamic Yes 95 Gi6/11 Cat6K#show module 6 Mod Ports Card Type Model Serial No. --- ----- -------------------------------------- ------------------ ----------- 6 48 CEF720 48 port 10/100/1000mb Ethernet WS-X6748-GE-TX SADxxxxxxxx Mod MAC addresses Hw Fw Sw Status --- ---------------------------------- ------ ------------ ------------ ------- 6 001d.45fd.xx4a to 001d.45fd.xx79 2.6 12.2(14r)S5 12.2(18)SXF8 Ok Mod Sub-Module Model Serial Hw Status ---- --------------------------- ------------------ ----------- ------- ------- 6 Distributed Forwarding Card WS-F6700-DFC3B SALxxxxxxxx 4.6 Ok Mod Online Diag Status ---- ------------------- 6 Pass
2 つのレイヤ 2 フォワーディング ルックアップ エンジンは、DFC 環境に存在します。CEF720/dCEF720 アーキテクチャのラインカード上の同じポートで、FE1 と FE2 が同じ MAC アドレスを学習することは、dCEF 環境では一般的です。
Cisco のルータでは、各仮想 IP アドレスに対する Address Resolution Protocol(ARP; アドレス解決プロトコル)が必要です。ネットワーク ロード バランシングでは、パケットの配信にレベル 2 マルチキャストが使用されます。これに対して、Cisco の RFC 実装でマルチキャストが使用されるのは、IP マルチキャストでだけです。そのため、ルータでマルチキャスト IP アドレスが認識されない場合、ARP エントリが自動的に作成されることはなく、ルータに ARP エントリを手動で追加する必要があります。
通常、ユニキャスト IP アドレス(クラスタの仮想アドレス)からマルチキャスト MAC アドレス解決が行われた場合、シスコのデバイスでは ARP テーブルにマルチキャスト MAC アドレス(クラスタの仮想 MAC アドレス)が置かれることはありません。 この問題を解決するには、ユニキャスト仮想 IP アドレスからマルチキャスト MAC アドレスへのスタティック マッピングが必要です。
詳細は、『Microsoft Network Load Balancing のための Catalyst スイッチの設定例』の「マルチキャスト モード」セクションを参照してください。
改定 | 発行日 | コメント |
---|---|---|
1.0 |
27-Oct-2009 |
初版 |