このドキュメントでは、レイヤ 2 ネットワークの安定性を向上させることを目的としたスパニングツリープロトコルの機能について説明します。
このドキュメントでは、読者がスパニングツリープロトコル(STP)の基本的な動作に精通していることを前提としています。
詳細は、『Catalystスイッチでのスパニングツリープロトコル(STP)についての説明と設定方法』を参照してください。
このドキュメントは、Cisco IOSが稼働するCatalystスイッチに基づいていますが、ここで説明する機能のアベイラビリティは、使用するソフトウェアリリースによって異なる場合があります。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
ドキュメント表記の詳細については、『シスコテクニカルティップスの表記法』を参照してください。
Spanning Tree Protocol(STP; スパンニング ツリー プロトコル)により、物理的に冗長化されたトポロジがループのないツリー状のトポロジに解決されます。STPの問題の1つは、ハードウェアの障害が誤動作の原因となり、フォワーディングループ(STPループ)が発生することです。 このようなループは、重大なネットワーク停止の原因となる可能性があります。
このドキュメントでは、レイヤ2ネットワークの安定性の向上を目的としたSTPループガード機能について説明します。また、ブリッジプロトコルデータユニット(BPDU)のスキュー検出についても説明します。BPDU スキュー検出は、時間内に BPDU が受信されなかった場合に syslog メッセージを生成する診断機能です。
STPループガード機能は、Catalyst 4500スイッチではCisco IOS®ソフトウェアリリース12.1(12c) EW、Catalyst 6500ではCisco IOSソフトウェアリリース12.1(11b) EXで導入されました。
STP では、設定、トポロジ、トポロジ内でのポートの相対的な位置、およびその他の考慮事項に基づいて、ブリッジ(またはスイッチ)の各ポートに内部的な役割が与えられます。
ポートの役割によって、STP の観点から見たポートの動作が決まります。ポートでは、ポートの役割に基づいて、STP BPDU の送信や受信が行われ、データ トラフィックの転送やブロックが行われます。
次のリストは各 STP ポートの役割の簡潔な要約です。
指定:リンク(セグメント)ごとに1つの指定ポートが選択されます。 指定ポートはルート ブリッジに最も近いポートです。このポートは、そのリンク(セグメント)上で BPDU を送信し、ルート ブリッジにトラフィックを転送します。STP によってコンバージされたネットワークでは、指定ポートはすべて STP フォワーディング ステートになります。
ルート:ブリッジは1つのルートポートのみを持つことができます。ルート ポートはルート ブリッジに到達するポートです。STP によってコンバージされたネットワークでは、ルート ポートは STP フォワーディング ステートになります。
Alternate:代替ポートはルートブリッジにつながっていますが、ルートポートではありません。代替ポートは STP ブロッキング ステートになります。
バックアップ:これは、同じスイッチ間の2つ以上のポートが直接または共有メディア経由で相互に接続されている特殊なケースです。この場合、1つのポートが指定ポートになり、残りのポートはブロックされます。このポートの役割はバックアップです。
STP ループ ガード機能では、レイヤ 2 の転送ループ(STP ループ)に対する防御が追加で提供されます。 冗長トポロジで STP ブロッキング ポートが誤って forwarding 状態に移行すると、STP ループが発生します。これは通常、物理的に冗長化されたトポロジのいずれかのポート(必ずしも STP ブロッキング ポートとは限らない)で STP BPDU が受信されなくなったために発生します。STP の動作は、ポートのロールに基づく BPDU の継続的な送受信に依存しています。指定ポートでは BPDU が送信され、指定ポート以外のポートでは BPDU が受信されます。
物理的に冗長化されたトポロジのいずれかのポートで BPDU が受信されなくなると、STP ではトポロジにループがないと判断されます。最終的には、代替ポートまたはバックアップポートからのブロッキングポートが指定ポートになり、フォワーディングステートに移行します(この状況によりループが発生します)。
ループガード機能では、追加のチェックが行われます。BPDUが非指定ポートで受信されず、ループガードが有効になっている場合、そのポートはリスニング/ラーニング/フォワーディングステートではなく、STPループ不整合ブロッキングステートに移行します。Loop Guard 機能がない場合、ポートは、指定ポートのロールを担ってしまいます。ポートは、STP フォワーディング ステートに移行し、ループが発生します。
Loop Guard によって loop-inconsistent ポートがブロックされると、次のメッセージが表示されます。
%SPANTREE-2-LOOPGUARD_BLOCK: Loop guard blocking port FastEthernet0/24 on VLAN0050.
ループ不整合 STP ステートのポートで BPDU が受信されると、そのポートは別の STP ステートに移行します。これは、受信されたBPDUに対して、回復が自動的に行われ、操作が不要であることを意味します。復旧すると、次のメッセージがログに記録されます。
%SPANTREE-2-LOOPGUARD_UNBLOCK: Loop guard unblocking port FastEthernet0/24 on VLAN0050.
この動作を説明するために、次の例を検討します。
スイッチ A はルート スイッチです。スイッチ B とスイッチ C の間のリンクで単方向リンク障害が発生しているため、スイッチ C では、スイッチ B からの BPDU が受信されていません。
単方向リンク障害
ループガードが無効の場合は、max_ageタイマーの期限が切れた時点で、スイッチCのSTPブロッキングポートがSTPリスニングステートに移行し、さらにforward_delay時間が2回経過してからフォワーディングステートに移行します。この状況により、ループが発生してしまいます。
ループが作成される
ループガードを有効にすると、max_ageタイマーの期限が切れたときに、スイッチCのブロッキングポートがSTPループ不整合ステートに移行します。STPループ不整合ステートのポートは、ユーザトラフィックを渡さないため、ループは作成されません。loop-inconsistentステートは、実質的にはブロッキングステートと同じです。
ループガードの有効化によるループの防止
ループ ガード機能はポート単位で有効になります。しかし、STP レベルでポートをブロックしている限り、ループ ガードでは VLAN 単位で不整合ポートがブロックされます(Per-VLAN STP のため)。
つまり、トランクポートでBPDUが特定の1つのVLANに対してのみ受信されない場合、そのVLANだけがブロックされます(STPループ不整合ステートに移行します)。 同じ理由から、EtherChannel インターフェイスでループ ガードが有効になっている場合は、1 つのリンクだけでなく、特定の VLAN のチャネル全体がブロックされます(STP の観点では、EtherChannel は 1 つの論理ポートと見なされるため)。
ループガードはどのポートで有効になりますか。最も明白な答えはブロッキング ポートです。ただし、これは100 %正しくありません。ループガードは、アクティブなトポロジのすべての可能な組み合わせについて、非指定ポート(より正確には、ルートポートと代替ポート)で有効にする必要があります。ループガードがVLAN単位の機能でない限り、同じ(トランク)ポートを一方のVLANに指定し、もう一方のVLANに非指定ポートを指定できます。
考えられるフェールオーバーシナリオも考慮する必要があります。
例
ループガードが有効になっているポート
デフォルトでは、ループガードは無効になっており、次のコマンドを使用して、指定したインターフェイスでループガードを有効にします。
Router(config)#interface gigabitEthernet 1/1 Router(config-if)#spanning-tree guard loop
ループガードはすべてのポイントツーポイントリンクで有効にできます。ポイントツーポイント リンクは、各リンクのデュプレックス ステータスによって検出されます。デュプレックスが全二重の場合、リンクはポイントツーポイントと見なされます。グローバル設定は、ポート単位で設定または上書きできます。
ループガードをグローバルに有効にするには、次のコマンドを発行します。
Router(config)#spanning-tree loopguard default
インターフェイスごとにループガードを無効にするには、次のコマンドを発行します。
Router(config-if)#no spanning-tree guard loop
ループガードをグローバルに無効にするには、次のコマンドを発行します。
Router(config)#no spanning-tree loopguard default
ループガードのステータスを確認するには、次のコマンドを発行します。
Router#show spanning-tree summary Switch is in pvst mode Root bridge for: none EtherChannel misconfig guard is enabled Extended system ID is disabled Portfast Default is disabled PortFast BPDU Guard Default is disabled Portfast BPDU Filter Default is disabled Loopguard Default is enabled UplinkFast is disabled BackboneFast is disabled Pathcost method used is short Name Blocking Listening Learning Forwarding STP Active ---------------------- -------- --------- -------- ---------- ---------- Total 0 0 0 0 0
ループ ガードと Unidirectional Link Detection(UDLD; 単方向リンク検出)の両機能は、単方向リンクによって生じる STP 障害を防止するという意味で、部分的に共通するところがあります。ただし、これら 2 つの機能では、機能と問題へのアプローチ方法が異なっています。
次の表は、ループ ガードと UDLD の機能を説明したものです。
| 機能 | ループ ガード | UDLD |
|---|---|---|
| コンフィギュレーション | ポート単位 | ポート単位 |
| アクションの精度 | VLAN 単位 | ポート単位 |
| 自動リカバリ | Yes | はい、err-disable タイムアウト機能付き |
| 単方向リンクを原因とする STP 障害に対する保護 | はい、冗長トポロジのすべてのルート ポートと代替ポート上で有効になっている場合 | はい、冗長トポロジのすべてのリンク上で有効になっている場合 |
| ソフトウェアの問題を原因とする STP 障害に対する保護(指定スイッチが BPDU を送信しない) | Yes | いいえ |
| 誤配線からの保護 | いいえ | Yes |
設計上のさまざまな考慮事項に基づいて、UDLD とループ ガード機能のどちらかを選択できます。STPに関しては、2つの機能の最も顕著な違いは、UDLDにはソフトウェアの問題に起因するSTP障害に対する保護がないことです。
その結果、指定スイッチからは BPDU が送信されません。ただし、このタイプの障害は、単方向リンクによって発生する障害よりも(ある程度)頻度が低くなります。その代わり、UDLDはEtherChannel上の単方向リンクの場合により柔軟に対応できます。この場合、UDLDは障害が発生したリンクだけを無効にし、残りのリンクでチャネルの機能を維持できます。このような障害が発生すると、ループガードはチャネル全体をブロックするためにループ不整合ステートにします。
また、ループガードは、共有リンクやリンクアップ以降常にリンクが単方向の状況では機能しません。最後のケースでは、ポートは BPDU を受信せず、指定ポートになります。この動作は正常である可能性があるため、この特定のケースはループガードでは対処できません。UDLD を使用すれば、このようなシナリオに対しても防止が可能です。これまでの説明からわかるように、UDLD とループ ガードを両方とも有効にすれば最高レベルの保護が得られます。
ルート ガード
ルート ガードはループ ガードと同時には使用できません。ルート ガードは指定ポートで使用されるもので、ポートが指定ポート以外になることが防止されます。ループ ガードは指定ポート以外のポートで動作し、max_age の期限切れによってポートが指定ポートになることが防止されます。ルート ガードはループ ガードと同じポートで有効にすることはできません。あるポートにループ ガードが設定されると、そのポートではルート ガードは無効になります。
アップリンク ファーストとバックボーン ファースト
アップリンク ファーストとバックボーン ファーストはどちらもループ ガードに対して透過的です。再コンバージェンス時にバックボーンファーストによってmax_ageがスキップされると、ループガードはトリガーされません。アップリンクファーストおよびバックボーンファーストの詳細については、次を参照してください。
PortFast、BPDU ガード、ダイナミック VLAN
ループガードは、PortFastがイネーブルになっているポートではイネーブルにできません。BPDU ガードは PortFast が有効になっているポートで動作しますが、BPDU ガードにも一部の制限が適用されます。ループ ガードはダイナミック VLAN に対しては有効にできませんが、これはこれらのポートでは PortFast が有効であるためです。
共有リンク
共有リンクではループガードを有効にしないでください。共有リンクでループガードを有効にすると、共有セグメントに接続されたホストからのトラフィックをブロックできます。
多重スパニングツリー(MST)
ループ ガードは MST 環境で正常に動作します。
| 改定 | 発行日 | コメント |
|---|---|---|
3.0 |
01-Jun-2026
|
スペル、文法、文の構造、間隔などを更新 |
2.0 |
18-Dec-2023
|
再認定 |
1.0 |
14-Oct-2022
|
初版 |