はじめに
この文書は、スイッチド ネットワークにおけるユニキャスト パケット フラッディングの考えられる原因と影響について説明しています。
前提条件
要件
このドキュメントに関する固有の要件はありません。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
表記法
ドキュメントの表記法の詳細は、「シスコ テクニカル ティップスの表記法」を参照してください。
問題の定義
LAN スイッチでは転送テーブル(レイヤ 2 テーブル、Content Addressable Memory(CAM)テーブル)の使用により、フレームの VLAN 番号と宛先 MAC アドレスに基づいてトラフィックが特定のポートに誘導されます。着信 VLAN にフレームの宛先 MAC アドレスに対応するエントリがない場合、その(ユニキャスト)フレームはそれぞれの VLAN 内のすべての転送ポートに送信されてしまうため、フラッディングを引き起こします。
限定されたフラッディングは通常のスイッチング プロセスの一部です。ただし、継続的にフラッディングが発生することによって、ネットワークのパフォーマンスが悪影響を受ける場合があります。この文書では、フラッディングによってどのような問題が引き起こされるかについて説明し、ある特定のトラフィックが継続的にフラッディングされる最も一般的な理由を示します。
Catalyst 2900 XL、3500 XL、2940、2950、2970、3550、3750、4500/4000、5000、6500/6000 シリーズ スイッチなどの最近のスイッチでは、VLAN ごとに L2 転送テーブルが管理されていることに注意してください。
フラッディングの原因
フラッディングの根本的原因は、スイッチの L2 転送テーブルにパケットの宛先 MAC アドレスが登録されていないことにあります。このような場合、(パケットを受信したポートを除く)VLAN 内のすべての転送ポートからパケットが送信されてしまうため、フラッディングが発生します。次のケース スタディでは、宛先 MAC アドレスがスイッチで認識されない一般的な原因を示します。
原因 1:非対称ルーティング
大量のトラフィックがフラッディングされると、帯域幅の低いリンクが飽和状態になり、ネットワークのパフォーマンスが低下したり、そのような帯域幅の低いリンクを経由して接続されているデバイスにまったく接続できなくなったりする危険性があります。次の図を検討してみます。
上記の図では、VLAN 1 のサーバ S1 が VLAN 2 のサーバ 2 へのバックアップ(バルク データ転送)を実行しています。サーバ S1 のデフォルト ゲートウェイは、ルータ A の VLAN 1 インターフェイスをポイントしています。サーバ S2 のデフォルト ゲートウェイは、ルータ B の VLAN 2 インターフェイスをポイントしています。S1 から S2 へのパケットは次のパスを通ります。
S2 から S1 に送信されるパケットは、次のパスを通ります。
このような配置では、スイッチ A が VLAN 2 内で S2 MAC アドレスから送信されたトラフィックを「見る」ことがないことに注意してください(ルータ B によって送信元 MAC アドレスが書き換えられており、パケットは VLAN 1 だけに到達するため)。これは、スイッチ A が S2 MAC アドレスにパケットを送信するたびに、パケットが VLAN 2 にフラッディングされることを意味します。同じ状況がスイッチ B での S1 MAC アドレスでも発生します。
この動作は非対称ルーティングと呼ばれます。パケットは送信される方向によって異なるパスを通ります。フラッディングを引き起こす最大の原因は 2 つありますが、非対称ルーティングはそのうちの 1 つです。
ユニキャスト フラッディングの影響
上記の例をもう一度見てください。この例では、S1 と S2 間のデータ転送のパケットは、ほとんどの場合、スイッチ A では VLAN 2 に、スイッチ B では VLAN 1 にフラッディングされます。これは、スイッチ B の VLAN 1 に接続しているすべてのポート(この例ではワークステーション W)が S1 と S2 間の通信パケットをすべて受信することを意味します。ここで、サーバのバックアップが 50 Mbps の帯域幅を使用するとします。このトラフィック量によって、10 Mbps リンクは飽和状態になります。そのため、PC にまったく接続できなくなるか、またはパフォーマンスが著しく低下します。
このフラッディングは非対称ルーティングが原因であり、サーバ S1 がブロードキャスト パケット(Address Resolution Protocol(ARP)など)を送信すると、フラッディングを停止できる場合があります。スイッチ A はこのパケットを VLAN 1 にフラッディングし、スイッチ B は S1 の MAC アドレスを受信して学習します。スイッチはトラフィックを常に受信しているわけではないため、この転送エントリはやがてエージング アウトし、再びフラッディングが起こります。同じプロセスが S2 にも当てはまります。
非対称ルーティングによって生じるフラッディングを制限するには、いくつかの方法があります。詳細は、次のドキュメントを参照してください。
通常は、ルータの ARP タイムアウトとスイッチの転送テーブルのエージング タイムを近付ける方法をとります。それによって、ARP パケットがブロードキャストされます。その結果、L2 転送テーブルのエントリがエージング アウトする前に、再学習が行われるようになります。
この種の問題がよく見られるシナリオは、冗長レイヤ 3(L3)スイッチ(Mutilayer Switch Feature Card(MSFC)が搭載された Catalyst 6000 など)で、Hot Standby Router Protocol(HSRP)を使用したロード バランスを設定しているケースです。このケースでは、1 台のスイッチが偶数番号の VLAN に対してアクティブになり、別の 1 台のスイッチが奇数番号の VLAN に対してアクティブになります。
原因 2:スパニングツリー プロトコルにおけるトポロジの変更
フラッディングが原因で生じるもう 1 つの一般的な問題は、スパニング ツリー プロトコルの Topology Change Notification(TCN; トポロジ変更通知)です。TCN は、転送トポロジが変更された後に、転送テーブルを訂正することを目的に設計されました。トポロジの変更後は、それまで特定のポートを通じてアクセスしていた宛先に別のポートからアクセスするようになります。これによって接続不能になる事態を避けるために、TCN が必要になります。TCN は転送テーブルのエージング タイムを短縮することによって機能します。そのため、アドレスが再学習されていなければ、エージング アウトすることになり、フラッディングが発生します。
TCN は、転送状態に移行したポート、または転送状態から別の状態に移行したポートによってトリガされます。TCN の発行後は、特定の宛先 MAC アドレスがエージング アウトしても、ほとんどの場合、そのアドレスは再学習されるため、しばらくの間はフラッディングは発生しません。問題となるのは、TCN が短い間隔で繰り返し発行される場合です。スイッチの転送テーブルがすぐにエージングするため、フラッディングがほとんど絶え間なく発生します。
一般に、適切に構成されたネットワークでは、TCN が発行されることはほとんどありません。スイッチのポートがアップまたはダウンするときに、ポートの STP の状態が「転送」に変わるか、または「転送」から別の状態に変わると、最終的に TCN が発行されます。ポートがフラッピングしていると、TCN が繰り返し発行され、そのたびにフラッディングが発生します。
STP PortFast 機能を有効にしたポートでは、転送状態に移行するか、転送状態から別の状態に移行しても、TCN は発行されません。すべてのエンドデバイス ポート(プリンタ、PC、サーバなど)で PortFast を設定すれば、TCN の量を低く抑えることができます。TCN の詳細については、次のドキュメントを参照してください。
注:MSFC IOS には、VLAN 内で TCN が発行された場合に、VLAN インターフェイスを通じて ARP テーブルにエントリを再入力する最適化機能があります。この機能を使用すると、ARP 要求がブロードキャストされ、ホストからの ARP 応答によってホストの MAC アドレスが再学習されるため、TCN を原因とするフラッディングを抑制できます。
原因 3:転送テーブルのオーバーフロー
その他にフラッディングの原因として考えられるものに、スイッチの転送テーブルのオーバーフローがあります。この場合、転送テーブルのスペースが使用可能になるまで、新しいアドレスが学習されないため、そのようなアドレス宛てのパケットがフラッディングされます。転送テーブルのスペースが使用可能になると、新しいアドレスが学習されます。最近のスイッチは、ほとんどの場合、MAC アドレスを収容できる十分な大きさの転送テーブルを持つように設計されているため、転送テーブルがオーバーフローする可能性はゼロとは言えませんが、めったにありません。
転送テーブルの消耗は、ネットワーク攻撃によって、1 台のホストがそれぞれ異なる送信元 MAC アドレスを持つフレームを生成し続けるようになることによっても発生します。このような攻撃を受けると、転送テーブルのリソースが独占されてしまいます。転送テーブルが飽和状態になると、アドレスを新たに学習できなくなるため、他のトラフィックがフラッディングされます。この種の攻撃は、スイッチの転送テーブルを調べることで検出できます。大部分の MAC アドレスが同じポートまたはポートのグループを指しています。このような攻撃を防ぐには、ポート セキュリティ機能を使用して、信頼できないポートで学習される MAC アドレスの数を制限します。
Cisco IOS® または CatOS ソフトウェアが稼働する Catalyst スイッチのコンフィギュレーション ガイドには、「ポート セキュリティの設定」または「ポート ベースのトラフィック制御の設定」というセクションがあります。詳細については、シスコ スイッチ製品ページで、各スイッチのテクニカル ドキュメントを参照してください。
注:フラッディングを阻止するために「Restrict」の条件でポートセキュリティを設定したスイッチポートでユニキャストフラッディングが発生すると、セキュリティ違反が発生します。
Router(config-if)#switchport port-security violation restrict
注:このようなセキュリティ違反が発生すると、「restrict」モードに設定された該当ポートは、最大値を下回るまで十分な数のセキュアMACアドレスを削除するまで、未知の送信元アドレスを持つパケットをドロップすることになります。これにより、SecurityViolationカウンタが増加します。
注:この動作の代わりに、スイッチポートが「Shutdown」状態に移行した場合は、そのスイッチポートがユニキャストフラッディングに対して無効にされるように、Router(config-if)#switchport block unicastを設定する必要があります。
過剰なフラッディングの検出方法
ほとんどのスイッチでは、フラッディングを検出するための特別なコマンドは実装されていません。Cisco IOS システム ソフトウェア(ネイティブ)バージョン 12.1(14)E 以降、または Cisco CatOS システム ソフトウェア バージョン 7.5 以降が稼働する Catalyst 6500/6000 Supervisor Engine 2 以降のシリーズ スイッチには、「ユニキャスト フラッド保護」機能が実装されています。この機能を使用すると、VLAN ごとにユニキャスト フラッディングを監視して、フラッディングが一定量を超えた場合に指定したアクションを実行できます。このアクションには、syslog への記録、VLAN の制限、または VLAN のシャットダウンがありますが、フラッディングの検出には、syslog が最も役に立ちます。フラッディングが一定量を超え、syslog への記録がアクションとして指定されている場合は、次のようなメッセージが表示されます。
%UNICAST_FLOOD-4-DETECTED: Host 0000.0000.2100 on vlan 1 is flooding
to an unknown unicast destination at a rate greater than/equal to 1 Kfps
表示されている MAC アドレスは、このスイッチ上でパケットのフラッディングが発生している発信元 MAC です。スイッチは宛先 MAC アドレスを参照することにより転送を実行するため、通常は、どの宛先 MAC アドレスに対してフラッディングが発生しているかを確認する必要があります。Catalyst 6500/6000スーパーバイザエンジン2以降のCisco IOS(ネイティブ)バージョン12.1(20)Eには、フラッディングが発生しているMACアドレスを表示する機能が実装されています。
cat6000#sh mac-address-table unicast-flood
Unicast Flood Protection status: enabled
Configuration:
vlan Kfps action timeout
------+----------+-----------------+----------
55 1 alert none
Mac filters:
No. vlan souce mac addr. installed on time left (mm:ss)
-----+------+-----------------+------------------------------+------------------
Flood details:
Vlan souce mac addr. destination mac addr.
------+----------------+-------------------------------------------------
55 0000.2222.0000 0000.1111.0029, 0000.1111.0040, 0000.1111.0063
0000.1111.0018, 0000.1111.0090, 0000.1111.0046
0000.1111.006d
さらに、MAC アドレス 0000.2222.0000 から、destination mac addr セクションに表示されている MAC アドレスにトラフィックが送信されているかどうかを調べることができます。トラフィックが正当なものである場合は、宛先 MAC アドレスがスイッチで認識されない原因を確認する必要があります。
パフォーマンスが低下したり、デバイスに接続できなくなったりしたときには、ワークステーション上でパケットのトレースをキャプチャすることによって、フラッディングが発生しているかどうかを検出できる場合があります。通常は、ワークステーションに関係のないユニキャスト パケットが、ポートで繰り返し検出されることはありません。 このような状況が起こっている場合は、フラッディングが発生している可能性があります。フラッディングの原因が異なれば、パケット トレースの状態もまた異なります。
原因が非対称ルーティングにある場合は、特定の MAC アドレス宛てのパケットが存在する可能性が高いため、宛先が応答した後もフラッディングは止まりません。原因が TCN にある場合は、フラッディング中に多数の異なるアドレスが含まれます。フラッディングはやがておさまりますが、後で再び始まります。
原因が L2 転送テーブルのオーバーフローにある場合は、おそらく非対称ルーティングと同じようなフラッディングが見られます。非対称ルーティングと異なるのは、不自然なパケットが多いという点、または異なる送信元 MAC アドレスを持つ正常なパケットが異常に大量に存在するという点です。
関連情報