このドキュメントでは、スパニングツリープロトコル(STP)のPortFastおよびブリッジプロトコルデータユニット(BPDU)ガード拡張機能について説明します。
このドキュメントに関する固有の要件はありません。
次のソフトウェア バージョンでは、STP PortFast BPDU ガードが導入されています。
Catalyst 6500/6000プラットフォームではCisco IOS®ソフトウェアリリース12.0(7)XE
Catalyst 4500/4000(Supervisor Engine III)では Cisco IOS ソフトウェア リリース 12.1(8a)EW
Catalyst 4500/4000(Supervisor Engine IV)では Cisco IOS ソフトウェア リリース 12.1(12c)EW
Catalyst 2900XLおよび3500XLシリーズではCisco IOSソフトウェアリリース12.0(5)WC5
Catalyst 3750シリーズスイッチではCisco IOSソフトウェアリリース12.1(11)AX
Catalyst 3750 MetroスイッチではCisco IOSソフトウェアリリース12.1(14)AX
Catalyst 3560シリーズスイッチではCisco IOSソフトウェアリリース12.1(19)EA1
Catalyst 3550シリーズスイッチではCisco IOSソフトウェアリリース12.1(4)EA1
Catalyst 2970シリーズスイッチではCisco IOSソフトウェアリリース12.1(11)AX
Catalyst 2955シリーズスイッチではCisco IOSソフトウェアリリース12.1(12c)EA1
Catalyst 2950シリーズスイッチではCisco IOSソフトウェアリリース12.1(6)EA2
Catalyst 2950 Long-Reach Ethernet(LRE)スイッチではCisco IOSソフトウェアリリース12.1(11)EA1
Catalyst 2940シリーズスイッチではCisco IOSソフトウェアリリース12.1(13)AY
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
ドキュメント表記の詳細については、『シスコテクニカルティップスの表記法』を参照してください。
適切に設計されたスイッチドネットワークでは、スパニングツリープロトコル(STP)により、冗長パスがブロッキングステートに設定されてレイヤ2ループが防止されます。通常、アップ状態のポートはすべて、ユーザトラフィックを渡す前にSTPステート(リスニング、ラーニング、およびフォワーディング)を通過します。従来の802.1Dを使用した場合の約30秒のコンバージェンス遅延は、スイッチ間リンクには適していますが、スイッチングループを自力では形成できないPC、サーバ、プリンタなどのエンドホストに接続されたポートには不要です。
課題は、エンドホストに接続しているポートがSTPブリッジプロトコルデータユニット(BPDU)をまったく受信していないことです。BPDUがこのようなポートに到着した場合、通常は、誰かが不正なスイッチに接続したか、デバイスがブリッジをエミュレートするソフトウェアを実行しているかという2つの問題のいずれかが発生しています。いずれの場合も、トポロジが不安定になる可能性があります。特に、不正なデバイスが上位ブリッジIDをアドバタイズし、絶対に参加してはならないルートブリッジの選択を強制する場合は不安定になります。
実際の例でリスクを説明します。Linuxベースのブリッジングアプリケーションを実行するユーザPCがアクセスポートに接続されました。アプリケーションが低いブリッジプライオリティを主張するBPDUを送信したため、ネットワークはPCをルートブリッジとして選択しました。これにより、スパニングツリートポロジ全体が機能不足のホストに移行し、リンクが輻輳してネットワークが停止しました。BPDUガードは、このクラスの障害を防ぐためだけに存在します。
PortFastでは、アクセスポートまたはトランクポートがブロッキング状態から直接転送状態に遷移するため、リスニングフェーズとラーニングフェーズは省略されます。これにより、エンドデバイスに接続されているポートの起動遅延が解消されます。これは、即時のネットワークアクセスを期待するホスト(ブート時にDHCPを使用するワークステーションなど)にとって重要です。
PortFastは、単一のエンドステーションに接続されているポート専用です。別のスイッチにリンクしているポートでこの機能を有効にすると、STPが冗長パスを検出する前にフォワーディングを開始するため、ループのリスクを防ぐように設計されています。
BPDUガードは、PortFastが有効なポートではBPDUが認識されないという前提を適用することで、PortFast機能を補完します。BPDUガードが有効になっていて、ポートがBPDUを受信すると、スイッチは即座にポートをシャットダウンしてerrdisable状態にします。これにより、次の2つの方法でトポロジが保護されます。
ポートが単にブロックされるのではなく、管理上ディセーブルにされているため、ネットワークオペレータの注意がイベントに集まり、問題のデバイスは問題が解決されるまで問題なく隔離されます。
errdisable状態になったポートは、errdisable recoveryが設定されていない限り、自動的に回復しません。インターフェイスを手動で再度有効にするか(shutdownの後にno shutdown)、またはBPDU Guardによる原因の自動回復を設定できます。
次にメッセージの例を示します。
2000 May 12 15:13:32 %SPANTREE-2-RX_PORTFAST:Received BPDU on PortFast enable port. Disabling 2/1 2000 May 12 15:13:32 %PAGP-5-PORTFROMSTP:Port 2/1 left bridge port 2/1
次の例を考えてみます。
ブリッジ接続
トポロジは、コア層とアクセス層を形成する3つのスイッチと、1つのエンドデバイスで構成されます。
他のすべてのSTPパラメータをデフォルトのままにしておくと、STPは期待どおりに収束します。スイッチAがルートとして選択され、冗長パスがブロックされてループが遮断されます。特に、スイッチBに面するスイッチCポートはブロック状態になります(そのリンクでは赤い「X」で示されます)。 破線の矢印は、トポロジを通過するSTP BPDUの通常のフローをトレースしています。これは、PortFastによってデバイスDに即時の接続が提供され、STPによって冗長コアリンクが静かに管理される安定したネットワークと見なすことができます。
LinuxベースのブリッジアプリケーションをPCで起動
この例は、BPDUガードが停止するように設計されているシナリオと同様に、デバイスDが単純なエンドホストのように動作しなくなり、STPに参加し始めると、どうなるかを示しています。LinuxベースのブリッジアプリケーションがPC(デバイスD)で起動されます。 アプリケーションは、ブリッジプライオリティ0(または現在のルートプライオリティよりも低い値)をアドバタイズします。 STPは常に最も低いブリッジIDを優先するため、Linuxベースのブリッジがルート選択に勝ち、スイッチAからルートブリッジの役割を引き継ぎます。
この再選択により、トポロジ全体の形状が変更されます。2台のコアスイッチ(AおよびB)間の高速ギガビットイーサネットリンクは、ブロッキングに移行します(コアリンクに移動する赤い「X」で示されます)。 その結果、以前はギガビットコアを使用していたすべてのVLANトラフィックが、より低速な100 Mbpsパスに流されてしまいます。トラフィックの需要がそのリンクで伝送できる量を超えると、スイッチはフレームの廃棄を開始し、その結果、接続が停止します。
BPDUガードはこの問題をどのようにして防止しますか。 スイッチCでは、デバイスDへのポートでPortFastが有効になっているため、そのポートはBPDUを受信しません。デバイスDがSTP BPDUを送信すると、BPDUガードはポートをerrdisable状態にしてシャットダウンします。デバイスDは、ルート選択に影響を与える前に切り離され、コートポロジはそのまま維持されます。
推奨されるアプローチは、アクセスポートに面するホストでPortFastとBPDU Guardを一緒に有効にすることです。 STP PortFast BPDUガードは、グローバルまたはインターフェイス単位で有効または無効にできます。デフォルトでは、STP BPDUガードは無効になっています。
CatSwitch-IOS(config-if)#spanning-tree portfast CatSwitch-IOS(config-if)#spanning-tree bpduguard enable
CatSwitch-IOS(config)#spanning-tree portfast bpduguard default
グローバルコマンドを使用すると、PortFastで設定されたすべてのポートが自動的にBPDU Guardを継承するため、各インターフェイスで個別に設定する必要はありません。
STP BPDUガードがポートをディセーブルにしても、ポートを手動でイネーブルにしない限り、ポートはディセーブル状態のままです。errdisable状態からポート自体を自動的に再度有効にするように、ポートを設定できます。errdisable-timeout interval を設定し、timeout 機能をイネーブルにする、次のコマンドを発行します。
CatSwitch-IOS(config)#errdisable recovery cause bpduguard CatSwitch-IOS(config)#errdisable recovery interval 400
機能が有効か無効かを確認するには、次の該当するコマンドを実行します。
CatSwitch-IOS#show spanning-tree summary totals Root bridge for: none. PortFast BPDU Guard is enabled UplinkFast is disabled BackboneFast is disabled Spanning tree default pathcost method used is short Name Blocking Listening Learning Forwarding STP Active -------------------- -------- --------- -------- ---------- ---------- 1 VLAN 0 0 0 1 1 CatSwitch-IOS#
| 改定 | 発行日 | コメント |
|---|---|---|
4.0 |
05-Jun-2026
|
スペルチェック、文法、スペース、概要が更新されました。 |
3.0 |
12-May-2025
|
シスコのガイドラインに準拠するように書式を更新。 |
2.0 |
22-Mar-2024
|
書式を更新。CCWアラートを修正。再認定 |
1.0 |
29-Nov-2001
|
初版 |