はじめに
Cisco Catalyst で STP を設定・確認しようとすると、モードが複数あり、ルートブリッジの決め方や各 Guard の使いどころが分かりにくく感じられることがあります。本記事は、Catalyst の STP 設定を、モード選択からルートブリッジ、PortFast や各 Guard、確認コマンドまで一通り整理する設定リファレンスです。STP の仕組み自体は、関連記事『スパニングツリー(STP)とは|仕組みと RSTP・MSTP の違い』も参照してください。
- STP モード(PVST+ / Rapid-PVST+ / MST)の違いと選択の目安
- ルートブリッジを明示的に設計・設定する方法
- PortFast と各 Guard(BPDU Guard・Root Guard・Loop Guard)の使い分け
- 設定を確認し、不整合を切り分けるコマンド
要点を先に示すと、Catalyst の既定モードは Rapid-PVST+ です。VLAN 数が少なめなら Rapid-PVST+ のまま、VLAN 数が多くマルチベンダーで負荷分散も求めるなら MST を選ぶのが基本です。ルートブリッジは自動任せにせず明示的に設計し、端末を接続するエッジポートには PortFast と BPDU Guard を組み合わせる、という構成が出発点になります。
STP モードの選択(PVST+ / Rapid-PVST+ / MST)
Catalyst の STP には 3 つのモードがあります。
- PVST+: 802.1D ベースで、VLAN ごとに独立したスパニングツリーを動かす Cisco 拡張。収束は遅め。
- Rapid-PVST+: 802.1w ベースで、PVST+ と同じく VLAN 単位だが収束が速い。Catalyst の既定。
- MST: 802.1s ベースで、複数 VLAN を少数のインスタンスへ集約する。
既定は Rapid-PVST+ です。
参考: Cisco — Catalyst 9300 Configuring Spanning Tree Protocol (IOS XE 17.17)
“Rapid PVST+ is the default STP mode on your device.”
(Rapid PVST+ がこのデバイスの既定の STP モードである)
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9300/software/release/17-17/configuration_guide/lyr2/b_1717_lyr2_9300_cg/configuring_spanning_tree_protocol.html
動作モードは spanning-tree mode で切り替えます。
! 動作モードを Rapid-PVST+ に設定する例
Switch(config)# spanning-tree mode rapid-pvst
! MST に切り替える場合
Switch(config)# spanning-tree mode mst選択の目安は、VLAN 数と相互接続の相手です。VLAN 数が少〜中規模であれば、設定がシンプルな Rapid-PVST+ で十分なことが多いです。VLAN 数が多く、複数のツリーで冗長リンクを負荷分散したい場合や、IEEE 標準準拠のマルチベンダー環境では MST が選択肢になります。MST のリージョン設計やインスタンス割り当ての詳細は、別の個別記事で扱う予定です。
なお、ネットワーク内で PVST+ / Rapid-PVST+ と、IEEE 標準(単一インスタンスの RSTP/MSTP)の機器が混在する区間では、ネイティブ VLAN の扱いや境界ポートの挙動に注意が必要です。混在時の考え方は、『スパニングツリー(STP)とは|仕組みと RSTP・MSTP の違い』相互接続の解説も参照してください。

ルートブリッジの設計と設定
STP はルートブリッジを基準にツリーを構築します。ブリッジプライオリティが最小のスイッチがルートになり、同値なら MAC アドレスが小さいものが選ばれます。設定を任せきりにすると、古い機器など意図しないスイッチがルートになり、経路が最適化されないことがあります。ルートブリッジは明示的に設計することが推奨されます。
root primary/secondary とブリッジプライオリティ
ブリッジプライオリティの既定値は 32768 で、4096 刻みの値(0・4096・8192 …・61440)から選びます。値が小さいほどルートになりやすくなります。
ルートブリッジの指定には、マクロを使う方法と手動でプライオリティを指定する方法があります。spanning-tree vlan <id> root primaryは、そのスイッチをルートにするために必要なら、プライオリティを 24576 に下げます。spanning-tree vlan <id> root secondaryは、バックアップとしてプライオリティを 28672 に設定します。
参考: Cisco — Catalyst 2960-X Configuring Spanning Tree Protocol
“the switch priority is modified from the default value (32768) to 28672.”
(secondary 指定時、スイッチプライオリティは既定値 32768 から 28672 に変更される)
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst2960x/software/15-2_3_e/consolidated_guide/b_1523e_consolidated_2960x_cg/m_lay2_stp_cg_old.html
! VLAN 10 のルートブリッジに設定(コア/ディストリビューション層を推奨)
Switch(config)# spanning-tree vlan 10 root primary
! バックアップのルートブリッジ
Switch(config)# spanning-tree vlan 10 root secondary
! プライオリティを手動で指定する場合(4096 刻み)
Switch(config)# spanning-tree vlan 10 priority 24576なお、拡張システム ID が有効な環境では、表示上のプライオリティに VLAN ID が加算されます。例えば VLAN 10 でプライオリティ 24576 を設定すると、show spanning-treeでは 24586(24576 + sys-id-ext 10)と表示されます。設計上は、ルートをコアやディストリビューション層に置き、アクセス層のスイッチがルートにならないようにするのが基本です。
パスコストとポートプライオリティの調整
ルートブリッジが決まった後、各スイッチがどの経路でルートへ到達するかは、パスコストの合計で決まります。パスコストはリンク帯域に基づき、帯域が広いほど小さくなります。特定の経路を優先・回避させたい場合は、インターフェースでパスコストを調整します。
! ルートポート選出に影響するパスコストを調整
Switch(config-if)# spanning-tree vlan 10 cost 100複数の等コスト経路がある場合の優先順位は、対向スイッチの指定ポートのポートプライオリティで決まります。既定は 128 で、値が小さいほど優先されます(範囲外の値は拒否されます)。
! 等コスト経路での優先を制御するポートプライオリティ(小さいほど優先)
Switch(config-if)# spanning-tree vlan 10 port-priority 64
エッジポートと STP 保護機能(PortFast・各 Guard)
STP には、収束を速める PortFast と、不正な接続やループから保護する各種 Guard があります。適用する場所(エッジポートか、スイッチ間リンクか)によって使い分けます。
PortFast(エッジポートの高速化)
PortFast は、端末を直結するエッジポートを、Listening / Learning を経ずに即座に Forwarding にする機能です。サーバーや PC など、STP に参加しない機器を接続するアクセスポートで使います。スイッチ間のリンクには使いません。
! インターフェースで有効化
Switch(config-if)# spanning-tree portfast
! アクセスポート全体で既定有効化
Switch(config)# spanning-tree portfast defaultBPDU Guard
BPDU Guard は、PortFast ポートで BPDU を受信したときに、そのポートを err-disable にして遮断する機能です。エッジポートに想定外のスイッチが接続された場合の保護に使います。PortFast とセットで運用するのが基本です。
! インターフェースで有効化
Switch(config-if)# spanning-tree bpduguard enable
! PortFast ポート全体で既定有効化
Switch(config)# spanning-tree portfast bpduguard defaulterr-disable の確認や復旧(手動 /errdisable recovery)の詳細は、関連記事『Cisco BPDU Guard で err-disable になる原因|復旧の手順』で扱っています。
Root Guard
Root Guard は、指定ポートで上位 BPDU(より小さいプライオリティの BPDU)を受信したときに、そのポートを root-inconsistent 状態でブロックし、想定外のスイッチがルートブリッジになるのを防ぐ機能です。上位 BPDU の受信が止まれば自動的に回復します。ルートにしたくない方向(アクセス層など)の指定ポートに設定します。
! インターフェースで有効化
Switch(config-if)# spanning-tree guard rootLoop Guard
Loop Guard は、非指定ポート(ルートポート・代替ポートなど)で BPDU の受信が途絶えたときに、ポートを Forwarding へ遷移させず loop-inconsistent 状態にする機能です。単方向リンク障害による意図しないループを防ぎます。BPDU の受信が戻れば自動的に回復します。
参考: Cisco — Catalyst 9300 Configuring Optional Spanning-Tree Features
“Loop guard prevents alternate and root ports from becoming designated ports.”
(Loop Guard は、代替ポートやルートポートが指定ポートになるのを防ぐ)
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9300/software/release/17-16/configuration_guide/lyr2/b_1716_lyr2_9300_cg/configuring_optional_spanning_tree_features.html
! インターフェースで有効化
Switch(config-if)# spanning-tree guard loop
! point-to-point リンク全体で既定有効化
Switch(config)# spanning-tree loopguard defaultLoop Guard は point-to-point リンク向けで、PortFast ポートには設定しません。Root Guard と Loop Guard は同一ポートには併用しません。
BPDU Filter(注意)
BPDU Filter は BPDU の送受信を抑制する機能で、設定場所で挙動が大きく異なります。インターフェース単位(spanning-tree bpdufilter enable)は、そのポートで BPDU を送受信せず破棄するため、実質的に STP を無効化することになり、ループの危険があります。グローバル(spanning-tree portfast bpdufilter default)は、PortFast ポートが BPDU を受信すると PortFast を解除して通常の STP に戻ります。挙動の詳細と注意点は、前掲の BPDU Guard 記事を参照してください。

設定の確認と切り分けコマンド
設定後の確認と、不整合が出たときの切り分けには、次のコマンドが起点になります。
show spanning-tree summaryで、動作モード・どの VLAN のルートか・各 Guard の既定状態をまとめて確認できます。
Switch# show spanning-tree summary
Switch is in rapid-pvst mode
Root bridge for: VLAN0010, VLAN0020
Extended system ID is enabled
Portfast Default is disabled
PortFast BPDU Guard Default is disabled
PortFast BPDU Filter Default is disabled
Loopguard Default is disabled
EtherChannel misconfig guard is enabledshow spanning-tree vlan <id>で、ルート ID・ブリッジ ID・プライオリティと、各ポートの役割(Role)・状態(Sts)を確認します。ルートブリッジの設計どおりになっているかの検証に使います。
Switch# show spanning-tree vlan 10
VLAN0010
Spanning tree enabled protocol rstp
Root ID Priority 24586
This bridge is the root
Bridge ID Priority 24586 (priority 24576 sys-id-ext 10)
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- ----
Gi1/0/1 Desg FWD 4 128.1 P2p個別ポートの PortFast や BPDU Guard の状態は show spanning-tree interface <id> detailで確認できます。不整合でポートがブロックされた場合は、show spanning-tree inconsistentportsが切り分けの起点になります。Inconsistency 列で、Type / PVID / Root / Loop のいずれかが判別できます。
Switch# show spanning-tree inconsistentports
Name Interface Inconsistency
-------------------- ------------------------ ------------------
VLAN0010 GigabitEthernet1/0/1 Port VLAN ID Mismatch種別ごとの原因と対処は、それぞれの個別記事で扱っています。
- Type 不整合(アクセス/トランク不一致)
- PVID 不整合(ネイティブ VLAN 不一致)
- EtherChannel の channel-misconfig
- BPDU Guard による err-disable
まとめ
Cisco Catalyst の STP 設定は、モードの選択・ルートブリッジの設計・エッジと各 Guard の使い分け・確認コマンドという流れで押さえると、全体像がつかみやすくなります。本記事では、設定リファレンスとしてこれらを整理しました。
- Catalyst の既定は Rapid-PVST+ で、VLAN 数や相互接続に応じて MST も選択
- ルートブリッジは root primary / secondary で明示設計(24576/28672)
- エッジは PortFast と BPDU Guard、スイッチ間は Root Guard や Loop Guard
- BPDU Filter は実質 STP 無効化になりうるため慎重に扱う
- 確認の起点は
show spanning-tree summaryとvlan、interface detail - 不整合は
show spanning-tree inconsistentportsで種別を特定 - 個別エラーの原因と対処は各スポーク記事を参照
以上、最後までお読みいただきありがとうございました。
