Skip to content

STP

基本概念

STP(Spanning Tree Protocol)は、Layer2ループを防ぐために冗長リンクの一部をブロックする仕組み。
Root Bridge を基準に、各ポートの役割と状態を決めてトポロジを1本の木構造にする。

項目内容
目的Layer2ループ防止、ブロードキャストストーム回避
代表バリアントSTP (Spanning Tree Protocol), RSTP (Rapid Spanning Tree Protocol), MST (Multiple Spanning Tree)
経路選択の基準Root Path Cost(小さい方が優先)
起動時の流れ要点
1スイッチは使用ポートを Blocking から Listening へ遷移させる
2初期状態では「自分がRoot Bridge」とみなし、BPDUを送信する
3自分より優位(Bridge IDが小さい)のBPDUを受信したら、その送信元をRoot Bridgeとして扱う
4優位BPDUを受信しなければ、自身がRoot Bridgeになる

重要: 起動直後は全スイッチが「自分がRoot」として振る舞い、BPDU交換で最終的なRootが収束する。

学習マップ(読む順)

  1. STP / RSTP / MST の違いスパニングツリープロトコル一覧 で全体像を把握
  2. STP ポート状態一覧 / RSTP ポート状態一覧 / 対応早見表 で状態と役割を固める
  3. ルートブリッジ選出 / 役割選出順序 / 便利な法則 で問題の解き方を固定
  4. パスコスト / Port ID / Port Priority で計算・タイブレークを整理
  5. モード選択 / 混在時の動作 / MST で実装差分を整理
  6. STP拡張機能 / PortFast / BPDU Guard〜UDLD で運用保護を仕上げる

STP / RSTP / MST の違い

方式規格特徴向いている場面
STP (Spanning Tree Protocol)802.1D旧来方式。収束が遅め旧環境との互換が必要なとき
RSTP (Rapid Spanning Tree Protocol)802.1wSTPの高速収束版一般的なL2ネットワーク
MST (Multiple Spanning Tree)802.1s複数VLANをインスタンス単位で制御VLAN数が多く経路分散したいとき

スパニングツリープロトコル一覧

プロトコルSTPRSTPMSTCST (Common Spanning Tree)
規格IEEE802.1dIEEE802.1wIEEE802.1sIEEE802.1q
Ciscoでの実装PVST+Rapid PVST+MST(RSTPベースで動作)無し
インスタンスの数VLANごとに1つVLANごとに1つ複数のVLANで1つ全体で1つ
インスタンスごとの負荷分散不可

重要: 「複数VLANを1つのインスタンスに割り当てる」ができるのは MST (MSTP)。 補足: MST は Rapid PVST+ そのものではなく、RSTP (Rapid Spanning Tree Protocol) ベースでインスタンス単位に高速収束する方式。

覚え方: キーボード配列の位置で覚えると混ざりにくい。

text
Q W
S D

D → W → S802.1D → 802.1w → 802.1s(古い→高速→集約)。
S → Q802.1Q(VLAN文脈)を連想する。

MST インスタンス0(IST)

用語意味
IST (Internal Spanning Tree)MSTインスタンス 0。MSTリージョン内の基準となるインスタンス
MSTI (Multiple Spanning Tree Instance)インスタンス 1-15。VLANを割り当てて負荷分散に使う
CIST (Common and Internal Spanning Tree)リージョン内のISTとリージョン間のCSTを含む全体木
項目IST(インスタンス0)のポイント
デフォルトVLAN所属明示マッピングしないVLANはインスタンス 0 に入る
役割MSTリージョン内の共通制御プレーン(基準ツリー)として動作
試験での頻出「全VLANのデフォルトはどのMSTインスタンスか」→ 0
設定目的コンフィグモードコマンド
MSTモード有効化Global configspanning-tree mode mst
VLANをMSTIへ割当(例)MST configurationinstance 1 vlan 10,20
確認コマンド見るポイント
show spanning-tree mstインスタンスごとのRoot/Role/State
show spanning-tree mst configurationname / revision / VLAN-to-instance マッピング

重要: instance 0(IST)は予約インスタンス。通常は instance 1-15 を設計してVLANを振り分ける。

MST の VLAN グルーピングと負荷分散

項目ポイント
基本動作複数VLANを1つのMSTインスタンスにまとめ、インスタンス単位でSTP計算する
MSTI 1: VLAN 1-2MSTI 2: VLAN 3-4 のように分割できる
効果インスタンスごとに別のRoot Bridgeを選べるため、経路を分散しやすい
ブロッキングブロッキングポートはインスタンス単位で決まる(同じ物理ポートでもインスタンスで役割が変わる)
方式インスタンス数の考え方スイッチ負荷
PVST+ (Per-VLAN Spanning Tree Plus)VLANごとに1インスタンスVLAN数に比例して増えやすい
MST (Multiple Spanning Tree)VLANをまとめて少数インスタンス化抑えやすい
設定目的コンフィグモードコマンド例
VLAN 1-2 を MSTI 1 に割当MST configurationinstance 1 vlan 1-2
VLAN 3-4 を MSTI 2 に割当MST configurationinstance 2 vlan 3-4
MSTI 1 のRootを優先化Global configspanning-tree mst 1 root primary
MSTI 2 のRootを優先化Global configspanning-tree mst 2 root primary

重要: MST は「インスタンス数を減らして負荷を抑える」と同時に、「インスタンスごとのRoot分離で負荷分散」も狙える。

show spanning-tree mst の見方(Root Bridge判定)

見る場所何を判断するか判定ポイント
##### MST0 / ##### MST1 などの見出しどのインスタンスの情報かインスタンスごとにRoot判定は別
Root IDそのインスタンスのRoot Bridge情報Priority + MAC Address を確認
Bridge ID(または Bridge Identifier自装置のBridge情報Root ID と一致なら自装置がRoot
This bridge is the root 表示自装置がRootかどうか表示があればそのインスタンスでRoot
Root Portnon-rootかどうかRoot Port があれば non-root(通常)
Priorityの読み方内容
設定Priorityspanning-tree mst <instance-id> priority <value> で設定する値(4096刻み)
表示Priority設定Priority + sys-id-ext(MSTでは通常、sys-id-extはinstance-id)
MST1で priority 0 を設定すると表示が 1 に見えることがある
設定目的コンフィグモードコマンド
MST1の優先度を上げるGlobal configspanning-tree mst 1 priority 0
MST2のRoot候補にするGlobal configspanning-tree mst 2 root primary
確認コマンド見るポイント
show spanning-tree mst全MSTインスタンスの Root ID / Bridge ID / Role / State
show spanning-tree mst <instance-id>指定インスタンスだけ詳細確認
show running-config | section spanning-tree mstinstanceごとのpriority/root設定

重要: 問題文で「設定されているPriority」を聞かれたら、sys-id-ext を除いた設定値で判断する。

STP ポート状態一覧

状態データ転送BPDU送信BPDU受信役割/意味
Disabledしないしない(原則)しない(原則)管理的にshutdown、またはSTP対象外
Blockingしないしないするループ回避のため待機(非転送)
Listeningしないするするトポロジ計算中(MAC学習前)
LearningしないするするMACアドレス学習のみ開始
Forwardingするするする通常の転送状態
Broken (BKN*)しない状態依存状態依存不整合(例: trunk/access不一致)で保護停止
方式主な状態表現
STP (802.1D)Blocking / Listening / Learning / Forwarding / Disabled
RSTP (802.1w), MST (802.1s)Discarding / Learning / Forwarding(実装上は簡略表示されることがある)
確認コマンド見るポイント
show spanning-tree vlan <VLAN-ID>各ポートの State/Role、root path
show spanning-tree inconsistentportsBroken/不整合ポートの有無

重要: 設定不一致時に出る Broken は「STP自体が停止」ではなく、該当ポートを保護している状態。

RSTP ポート状態一覧

RSTP (Rapid Spanning Tree Protocol) は STP の5状態を3状態に整理している。

RSTP状態データ転送MAC学習BPDU送信BPDU受信役割/意味STP対応
Discardingしないしないする(主にDesignated Port)する転送しない待機/遮断状態Blocking + Listening
Learningしないするする(主にDesignated Port)する転送前の学習状態Learning
Forwardingするするする(主にDesignated Port)する通常転送状態Forwarding

RSTP ポート役割

役割データ転送主な役目障害時の動き
Root Portする非ルートSWのRoot Bridge向き最短経路ダウン時は Alternate Port が昇格候補
Designated Portするセグメント代表としてBPDU送出/転送代替経路側で再選出が発生
Alternate PortしないRoot Port の予備(代替)Root Port障害時に即切替しやすい
Backup PortしないDesignated Port の予備(同一セグメント内)指定ポート障害時に代替として動作
役割判定のポイント内容
すべてのSWが Alternate/Backup を持つわけではないループ/冗長構成があるときに出現
転送するのは Root Port と Designated PortAlternate/Backup は非転送
設定目的コンフィグモードコマンド
RSTP系モードへ切替Global configspanning-tree mode rapid-pvst
確認コマンド見るポイント
show spanning-tree summaryRSTPモードかどうか、全体のSTP状態
show spanning-tree vlan <VLAN-ID>各ポートの Role/State(Discarding/Learning/Forwarding)

重要: RSTPでは Discarding が STP の BlockingListening を含む。

STP / RSTP 役割と状態の対応早見表

プロトコル役割 (Role)代表状態 (State)転送
STPRoot PortForwardingする
STPDesignated PortForwardingする
STPNon-Designated PortBlockingしない
RSTPRoot PortForwardingする
RSTPDesignated PortForwardingする
RSTPAlternate PortDiscardingしない
RSTPBackup PortDiscardingしない
見分けのコツ内容
STPの非転送役割Non-Designated(状態は Blocking)
RSTPの非転送役割Alternate / Backup(状態は Discarding)
収束中のSTPListening / Learning を経由して Forwarding へ遷移

ルートブリッジとモードの見分け方

show spanning-tree vlan <VLAN-ID> の出力で、モードとルートブリッジ判定を読み取れる。

見たい項目どこを見るか判定ポイント
STPモードSpanning tree enabled protocol ...ieee = STP (PVST+), rstp = RSTP (Rapid PVST+), mstp = MST
ルートブリッジかRoot IDBridge ID(または自身Address)両者が同じなら root、異なれば non-root
補助判定Root Port の有無root は通常 Root Port を持たない

重要: 問題で show spanning-tree vlan 10 が出た場合、判定対象は VLAN 10 のインスタンス情報。

ルートブリッジ選出と Bridge Priority

項目内容
選出対象各VLANインスタンスごとにRoot Bridgeを選出
判定キー最小の Bridge ID を持つスイッチ
Bridge ID 構成Priorityフィールド(設定Priority + VLAN ID) + MAC Address
タイブレークPriorityが同値なら MAC Address の小さい方が勝つ
設定目的コンフィグモードコマンド
Bridge Priority を明示設定Global configspanning-tree vlan <VLAN-ID> priority <value>
Root候補に昇格Global configspanning-tree vlan <VLAN-ID> root primary
Secondary Root候補に設定Global configspanning-tree vlan <VLAN-ID> root secondary
Priority の実務ルール
設定範囲0 - 61440
刻み幅4096 ごと
デフォルト32768
代表例4096, 8192, 28672, 32768
表示Priorityの補足
表示値は 設定Priority + VLAN IDVLAN 1で priority 0 を設定すると表示は 1
4096刻みが必要なのは「設定Priority」表示Priorityは4096刻みにならない場合がある
確認コマンド見るポイント
show spanning-tree vlan <VLAN-ID>Root ID / Bridge ID、現在のRoot
show running-config | section spanning-treepriority / root primary / root secondary の設定

重要: priority 100 のような4096刻みでない値は設定不可(エラーになる)。

STP 役割選出順序

手順何を選ぶか選出ルール(小さい方が優先)
1Root BridgeBridge ID(Bridge Priority + MAC Address)
2Root Port(各 non-root SW)Root Path Cost → 送信元 Bridge ID → 送信元 Port ID
3Designated Port(各セグメント)Root Path Cost → Bridge ID → Port ID
4Non-Designated Port上記で選ばれなかったポート(STPではBlocking)
用語意味
Root PortRoot Bridge への最短経路ポート(non-root で1本)
Designated Portそのセグメントで転送を代表するポート(セグメントごとに1本)
Non-Designated Portループ回避のため転送停止するポート

Port ID の組み合わせルール

項目内容
Port ID 構成Port Priority + Port Number
比較順序1) Port Priority 2) Port Number
判定ルール小さい Port ID が優先
使う場面具体例
Root Port / Designated Port の最終タイブレークCostとBridge IDまで同値なら Port ID で決着

Port Priority のデフォルトと負荷分散

項目内容
デフォルト値128
判定ルール小さい Port Priority を持つポートの Port ID が有利
使いどころ並行リンクで VLAN ごとに優先ポートを分け、STP経路を分散する
設定目的コンフィグモードコマンド
VLAN1-3 を Fa0/1 優先Interface configspanning-tree vlan 1-3 port-priority 64
VLAN4-6 を Fa0/3 優先Interface configspanning-tree vlan 4-6 port-priority 64
確認コマンド見るポイント
show spanning-tree vlan <VLAN-ID>Root Port が VLAN ごとに期待どおりに分かれているか
show spanning-tree vlan <VLAN-ID> detailPort ID(priority.number)と Port Role

重要: この方式は「VLANごとに別リンクを通常経路にする」ため、結果としてロードバランシングになる。

便利な法則(試験向け)

法則使いどころ
Root Bridge には Root Port が無い役割問題の一次判定
Root Bridge のポートは全て Designated PortルートSW側のDPを一気に確定
non-root スイッチは Root Port が1本だけ誤選択肢を即除外
Root Port の対向ポートは Designated Port隣接セグメントのDPを高速確定
各セグメントの Designated Port は1本だけセグメント単位の消去法
Forwarding になるのは Root Port と Designated Port状態問題の高速判定
余ったポートは Blocking/Discardingループ防止の基本

覚え方: 「Root を先に決める → 各SWの帰り道(Root Port)を1本決める → 各セグメントの代表(Designated)を1本決める」。

使い方のコツ: まず「Root側DP」と「RP対向DP」を塗りつぶすと、多くのセグメントでDP選出が終わる。

RSTP 役割選出順序

手順何を選ぶか選出ルール(優先順)
1Root Bridge最小 Bridge ID(Bridge Priority + MAC Address)
2Root Port(各 non-root SW)最良BPDUを受信するポート(Root Path Cost → 送信元Bridge ID → 送信元Port ID)
3Designated Port(各セグメント)そのセグメントで最良BPDUを広告できるポート
4Alternate Port同一SWで Root Port になれず、かつそのセグメントで Designated Port でもない非転送ポート(代替経路)
5Backup Port同一セグメント上で Designated Port の予備となる非転送ポート
非転送役割典型シナリオ状態
Alternate Port冗長リンクで「もう一方の上り」が待機Discarding
Backup Port共有セグメント内で同一SW上のDP予備(出現はまれ)Discarding
確認コマンド見るポイント
show spanning-tree vlan <VLAN-ID>各ポートの Role(Root/Desg/Altn/Bkup)と State
show spanning-tree interface <IF> detail対象IFが受信しているBPDU情報と役割

重要: RSTPでも「Root Port と Designated Port だけが転送」。Alternate/Backup は常に非転送。 補足: 手順2と手順3は厳密な時系列というより論理判定。Alternate は「RP/DP にならなかった候補」と覚えると判定しやすい。

パスコスト

パスコストは、Root Bridge までの経路を選ぶときのメトリック。合計コストが小さい経路が優先される。

項目short pathcostlong pathcost
ビット長16-bit32-bit
指定範囲1 - 655351 - 200000000
デフォルトで使う場面STP / RSTPMST
目的モードコマンド補足
パスコスト方式を変更Global configspanning-tree pathcost method {short | long}方式は装置全体に適用される
インターフェースのコストを手動設定Interface configspanning-tree cost <value><value> の範囲は採用中の方式に依存
bash
Switch(config)# spanning-tree pathcost method long
Switch(config-if)# spanning-tree cost 20000
確認コマンド見るポイント
show spanning-tree各ポートの Cost、Root path cost
show running-config | section spanning-treepathcost method の設定有無

ルートパスコスト計算(試験最小ルール)

ルール使い方
ルートパスコスト = 経路上のポートコスト合計各候補経路を足し算して比較
合計が小さい経路が勝つRoot Port / Designated Port の第一判定
同値なら Bridge ID が小さい方第二判定(送信元Bridge比較)
さらに同値なら Port ID が小さい方最終判定
試験での割り切り実務上の意味
すべての速度コストを丸暗記しなくてもOK問題文の値で大小比較できれば十分
まず「明らかに大きい経路」を除外候補を絞ってから同値判定に進む

覚え方: 「合計コスト → Bridge ID → Port ID」の順で決着。

覚え方: short = 16-bit = STP/RSTP, long = 32-bit = MST

重要: pathcost method は Global config で設定する。Interface config では設定できない。

モード選択と使い分け

STPモード(STP / RSTP / MST)は、同じドメイン内では基本的にどれか1つを選ぶ運用(排他)になる。
境界で異なるモードが接続されるケースはあるが、設計上はドメイン単位で統一するのが安全。

判断ポイント推奨
迷ったときの基本デフォルト方式に合わせる
STP / RSTP中心short を使う
MST中心long を使う
高速リンクでコストを細かく差分付けしたいlong を検討する

重要: 方式を変えるとコスト設計の前提が変わるため、ネットワーク内で統一して運用する。

ドメイン内で STP / RSTP が混在したときの動作

項目動作
グローバル設定spanning-tree mode rapid-pvst で Rapid PVST+(RSTP)を有効化
隣接が RSTPそのポートは RSTP として動作
隣接が STP (Spanning Tree Protocol)そのポートは STP (802.1D) 互換動作にフォールバック
影響範囲フォールバックはポート単位(スイッチ全体がSTP化するわけではない)
試験での判定ポイント正誤
rapid-pvst は RSTP を有効化する
STP隣接ポートが shutdown する
隣接側スイッチまで自動で RSTP になる
STP機能(PortFast/UplinkFast/BackboneFast)が自動削除される✗(設定は自動削除されない)
設定目的コンフィグモードコマンド
Rapid PVST+ を有効化Global configspanning-tree mode rapid-pvst
確認コマンド見るポイント
show spanning-tree summary現在のSTPモード(PVST/Rapid PVST/MST)
show spanning-tree interface <IF> detailIF単位の役割・状態、隣接との互換動作の確認

STP 拡張機能一覧

系統機能目的典型設定モード
収束高速化PortFast端末接続ポートを即Forwardingへ遷移Interface config(spanning-tree portfast
収束高速化UplinkFast代替アップリンクへの切替を高速化(旧来機能)Global config(spanning-tree uplinkfast
収束高速化BackboneFast間接リンク障害の収束を高速化(旧来機能)Global config(spanning-tree backbonefast
保護BPDU Guard (Bridge Protocol Data Unit Guard)エッジポートでBPDU受信時に遮断Interface config(spanning-tree bpduguard enable
保護BPDU Filter (Bridge Protocol Data Unit Filter)BPDU送受信を抑制して不要BPDUを減らすInterface/Global config
保護Root Guard想定外のRoot Bridge化を防止Interface config(spanning-tree guard root
保護Loop GuardBPDU欠落時のループを防止Interface config(spanning-tree guard loop
保護UDLD (Unidirectional Link Detection)単方向リンクを検出して保護Interface config(udld enable/aggressive
代表的な確認コマンド見るポイント
show spanning-tree summaryPortFast/BPDU Guard/BPDU Filter などの有効状況
show spanning-tree interface <IF> detailポート単位のガード設定と状態
show spanning-tree inconsistentportsRoot/Loop 不整合の検出ポート
show udldUDLD 全体状態

PortFast オプション

コマンドコンフィグモード主な用途注意点
spanning-tree portfastInterface configアクセスポートを即Forwardingにする端末接続ポート向け(SW間リンクには通常使わない)
spanning-tree portfast trunkInterface configトランクでもPortFastを有効化接続先がスイッチの場合はループリスクに注意
spanning-tree portfast disableInterface configそのIFのPortFastを無効化誤って有効化したIFの戻しに使う
spanning-tree portfast defaultGlobal config既定でPortFastを有効化(主にアクセスポート一括)意図しないIFまで有効化しないよう設計確認が必要
典型パターン設定例
PC接続アクセスポートで有効化switchport mode access + spanning-tree portfast
トランクで明示有効化switchport mode trunk + spanning-tree portfast trunk
全体の既定有効化spanning-tree portfast default(Global config)
確認コマンド見るポイント
show spanning-tree summaryPortFast default の有効状態
show spanning-tree interface <IF> detail対象IFでPortFastが有効か
show running-config interface <IF>IF単位の spanning-tree portfast 設定有無

重要: PortFast は収束を速める機能であり、ループ防止機能ではない。エッジポートでは BPDU Guard (Bridge Protocol Data Unit Guard) 併用が基本。

BPDU Guard / BPDU Filter / Root Guard / Loop Guard / UDLD

機能何を防ぐか典型適用ポート異常時アクション
BPDU Guard (Bridge Protocol Data Unit Guard)エッジポートへのBPDU流入(想定外SW接続)PortFast有効のアクセスポートBPDU受信で err-disable
BPDU Filter (Bridge Protocol Data Unit Filter)不要なBPDU送信/処理端末向けアクセスポート(慎重に適用)BPDU処理を抑制(適用ミスでループリスク)
Root Guard想定外の superior BPDU 受信による Root Bridge 乗っ取りアクセス側や下位SW向きRoot-inconsistent 状態にして転送停止
Loop GuardBPDU 欠落による一方向障害時のループ非指定ポート(冗長リンク)Loop-inconsistent 状態にして転送停止
UDLD (Unidirectional Link Detection)物理/光リンクの単方向通信光リンクや上位間リンク通常: 警告中心、アグレッシブ: 再試行失敗でポート無効化
機能有効化コマンド(Interface config)代表的な確認コマンド
BPDU Guardspanning-tree bpduguard enableshow spanning-tree summary / show spanning-tree interface <IF> detail
BPDU Filterspanning-tree bpdufilter enableshow spanning-tree summary / show spanning-tree interface <IF> detail
Root Guardspanning-tree guard rootshow spanning-tree inconsistentports
Loop Guardspanning-tree guard loopshow spanning-tree inconsistentports
UDLDudld port enable / udld port aggressiveshow udld / show udld GigabitEthernet 0/3

BPDU Guard のポイント

項目内容
使いどころユーザ端末接続ポート(PortFast)
事故パターンアクセスポートに誤ってSW接続
挙動BPDU受信で即 err-disable(ループ拡大を防ぐ)
復旧原因除去後に shutdown / no shutdown または errdisable recovery

UDLD モード

モード挙動異常時設定例(Interface config)
normal単方向リンクを検出して状態を通知する原則ポートは自動停止しないudld port enable
aggressive検出時に再試行して相手応答を確認する再試行失敗でポートを err-disableudld port aggressive

UDLD 構文差分(Global / Interface)

用途コンフィグモードコマンド
全体をアグレッシブ有効化Global configudld aggressive
全体を通常有効化Global configudld enable
特定IFをアグレッシブ有効化Interface configudld port aggressive
特定IFを通常有効化Interface configudld port enable

重要: インターフェースで設定する場合は udld port ... を使う。

確認コマンド見るポイント
show udld全体の有効/無効、各ポートの状態
show udld GigabitEthernet 0/3対象IFの Enabledin aggressive mode 表示

覚え方: BPDU Guard は「エッジ保護」、BPDU Filter は「BPDU抑制」、Root Guard は「偽Root防止」、Loop Guard は「BPDU消失対策」、UDLD は「単方向リンク検出」。

重要: Loop Guard と UDLD は役割が重なる部分があるが、検出レイヤが違うため併用されることが多い。