TL

スパニングツリープロトコル(STP/RSTP)の収束

冗長配線したのにループで網が落ちる、その悪夢をSTPがどう防ぐかが腑に落ちる。ルートブリッジ選出からRSTPの高速収束まで、ポート状態遷移で一気に押さえられる。

応用STPRSTPL2スイッチループ防止BPDU最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.STPはBPDU交換で最小ブリッジIDのルートブリッジを選び、各ブリッジでルートへの最小コスト経路を残して冗長リンクをブロックし、物理ループを論理的な木に変える。
  • 2.ポート役割はルートポート・指定ポート・非指定(ブロッキング)の順に決まり、コスト→送信ブリッジID→ポートIDのタイブレークで一意に定まる。
  • 3.従来STPはタイマ駆動で収束に約50秒かかるが、RSTPは提案/合意ハンドシェイクとエッジ/ポイントツーポイントの区別で、トポロジ変化を秒未満で収束させる。

STP が解く問題:TTL のない世界のループ

L2スイッチは冗長性のために複数経路で結ばれますが、イーサネットフレームには /network/ethernet-switching-internals/ で述べたとおりL3の TTLに相当する寿命がありません。物理ループがあると、ブロードキャストや未知ユニキャストのフラッディングが永遠に回り、複製のたびに増殖して帯域を食い尽くす ブロードキャストストーム が起きます。さらにMACアドレステーブルが複数ポートで同一MACを学習し直す MACフラッピング も併発し、網が数秒で麻痺します。

STP(IEEE 802.1D)の発想は単純です。物理的にループした網から、冗長リンクを論理的にブロックして1本の木(スパニングツリー)を作る。木にはループがないので、フレームは安全に流れます。リンク障害時にはブロックしていた経路を復活させ、冗長性も確保します。問題は「どのリンクを止めるか」を、各ブリッジが中央制御なしに分散合意で決めることです。

ステップ1:ルートブリッジの選出

木を作るにはまず根を決めます。STPは網全体で ただ1台のルートブリッジ を選びます。基準は ブリッジID(BID)が最小 のブリッジです。BIDは次の構造を持ちます。

フィールドサイズ役割
ブリッジプライオリティ2バイト管理者が設定する優先度。既定32768。小さいほど優先
拡張システムIDプライオリティ下位12ビットVLAN番号を埋め込む(PVST+系)
MACアドレス6バイトプライオリティが同値のときのタイブレーク。小さいほど優先

各ブリッジは起動時「自分がルートだ」と主張する BPDU(Bridge Protocol Data Unit) を送り合います。BPDUにはルートBID・送信元BID・ルートまでのパスコストが入っています。あるブリッジが自分より小さいルートBIDを載せたBPDUを受け取ったら、主張を取り下げてそのルートBIDを採用し、以後はそれを中継します。この比較が網全体で収束すると、最小BIDのブリッジだけが「自分がルート」と言い続け、全員がそれをルートと認めます。優先度を意図的に下げて特定機を確実にルートにするのが実務の定石です。

ステップ2:ポート役割の決定

ルートが決まると、各ブリッジは自分のポートに役割を割り当てます。鍵は ルートパスコスト(ルートブリッジまでの累積コスト)です。コストはリンク帯域に反比例し、速いリンクほど小さくなります。

役割選定基準状態
ルートポート(RP)そのブリッジでルートへ最小コストのポート。各非ルートブリッジに1つフォワーディング
指定ポート(DP)各セグメントでルートへ最小コストを提供する側のポートフォワーディング
非指定ポートRPでもDPでもない冗長ポートブロッキング

決定は次の順で進みます。

1. ルートブリッジ自身: 全ポートが指定ポート(RPCは0)
2. 各非ルートブリッジ:
     ルートパスコストが最小のポート → ルートポート(RP)
3. 各セグメント(リンク)ごと:
     より小さいルートパスコストを送る側のポート → 指定ポート(DP)
4. RPでもDPでもないポート → 非指定(ブロッキング)でループを断つ

ブロッキングポートはデータフレームを送受信しませんが、BPDUの受信は続けます。これにより、現用リンクが切れたときブロッキングポートが昇格して経路を引き継げます。

タイブレークは4段階で一意に決まる

コストが同点のとき、STPは次の優先順位で勝者を決めます。1) 最小ルートBID、2) 最小ルートパスコスト、3) 送信側ブリッジの最小BID、4) 送信側の最小ポートID(プライオリティ+ポート番号)。この多段比較により、対称な網でも必ず一意なツリーに収束します。「自分のポート優先度」ではなく「対向(送信側)のBID/ポートID」で割れる点が誤解しやすい要所です。

ステップ3:従来STPのポート状態遷移

STPはポートをいきなり転送状態にはしません。ループを避けるため、タイマで段階的に遷移します。

状態データ転送MAC学習BPDU標準滞在時間
Blockingしないしない受信のみ—(最大20秒で次へ)
Listeningしないしない送受信15秒(Forward Delay)
Learningしないする送受信15秒(Forward Delay)
Forwardingするする送受信安定状態
Disabledしないしないしない管理停止

ListeningとLearningにそれぞれ15秒(Forward Delay)、Blockingから抜ける判定に最大20秒(Max Age)を要するため、ブロックされていたポートが新たに転送を始めるまで最悪で約50秒 かかります。Listeningでツリー再計算とBPDU合意を待ち、Learningで先回りしてMACテーブルを作り、転送開始時の不要なフラッディングを減らす、という段取りです。

なぜ二段階の待ち時間が要るのか

網の直径分だけBPDUが伝播し、全ブリッジの役割が確定するには時間がかかります。確定前に転送を始めると、過渡的なループが発生しかねません。Forward Delayはこの「全員の合意が行き渡る最大時間」を保守的に見積もった固定値です。安全ですが遅い。この50秒という代償を、後述のRSTPがハンドシェイクで置き換えます。

RSTP:ハンドシェイクで秒未満に収束させる

RSTP(IEEE 802.1w、現在は802.1Dに統合)は役割・選出のロジックはSTPを踏襲しつつ、収束を抜本的に速くします。要点は3つです。

第一に ポート役割の整理。ブロッキングを2種に分け、ルートポートのバックアップを 代替ポート(Alternate)、指定ポートのバックアップを バックアップポート(Backup) と明示します。代替ポートはルートポート障害時に即座に昇格できる「控え」です。

第二に 状態の簡素化。BlockingとListeningを廃止し、状態は Discarding / Learning / Forwarding の3つになります。

第三に、最大の高速化要因である 提案/合意(Proposal/Agreement)ハンドシェイク。隣接スイッチ間で「このポートを指定ポートにして転送開始してよいか」を直接やり取りし、同意が取れた区間から順に転送を開放します。タイマ待ちを、リンクごとの明示的な握手に置き換えるのが本質です。

# ポイントツーポイントリンクでの提案/合意(概略)
上流DP候補 → 下流: Proposal(私を指定ポートにしたい)
下流: 自分の他ポートを一旦Discardに落とす(同期: sync)
下流 → 上流: Agreement(同意する)
上流: そのポートを即Forwardingへ
→ 握手は隣接区間ごとに連鎖し、ルートから末端へ波及
エッジポートとリンク種別が高速化の前提

RSTPは末端(PC直結など他スイッチがいない)ポートを エッジポート とみなし、ループの心配がないので即Forwardingにします。設定はCiscoのPortFast相当です。また握手が成立するのは ポイントツーポイント(全二重)リンク のみ。半二重の共有セグメントは相手が1台と確定できないため、従来同様タイマ収束にフォールバックします。全二重スイッチング環境が高速収束の前提です。

トポロジ変更通知(TCN)の違い

リンク障害でツリーが変わると、古いMACアドレステーブルのエントリは誤った経路を指したままになり得ます。STPは TCN BPDU をルートへ送り、ルートが網全体に変更を告知して、各ブリッジはエージング時間を既定300秒から Forward Delay(15秒)まで短縮 してテーブルを早く入れ替えます。間接的で遅い方式です。

RSTPはこれを根本から変えます。変化を検知したスイッチ自身が即座にTC(Topology Change)を網へ氾濫させ、関係するMACエントリを 即時フラッシュ します。ルートへの往復を待たないため、テーブルの再学習も速い。下表に収束特性をまとめます。

観点STP(802.1D 従来)RSTP(802.1w)
ポート状態数5(Disabled含む)3(Discarding/Learning/Forwarding)
収束方式Forward Delay/Max Ageのタイマ駆動提案/合意ハンドシェイク
代表的な収束時間約30〜50秒1秒未満(多くは数百ミリ秒)
冗長ポートの扱いBlockingで一括Alternate / Backupに明示分離
変更通知TCNをルート経由で告知、エージング短縮検知スイッチが即TC氾濫+即フラッシュ
ループ防御は他機構と併用する

STP/RSTPだけに頼るのは危険です。BPDUが何らかの理由で途絶えると、ブロッキングポートがタイマ満了で転送を開始しループを生みます。実務ではエッジポートに BPDU Guard(想定外BPDU受信でポートを遮断)、上流に Root Guard(外部からのルート奪取を拒否)、片方向リンク障害に UDLD/Loop Guard を併用します。STPは「正しく動くときの設計」であり、異常系の防御は別途必要です。

全体像を一段で

STPは「最小BIDのルートを1台選び、各ブリッジでルートへ最小コストの経路だけを残して残りをブロックし、物理ループを木に変える」プロトコルです。役割決定はコスト→ルートBID→送信側BID→送信側ポートIDのタイブレークで一意に収束し、従来STPはその合意が行き渡るのを保守的なタイマで待つため約50秒を要しました。RSTPは提案/合意ハンドシェイクとエッジ/ポイントツーポイントの区別、即時TC氾濫により、同じ役割ロジックのまま収束を秒未満へ短縮します。L2のフラッディングとMAC学習、その引き金になるブロードキャスト/マルチキャストの挙動と合わせて捉えると、STPは「冗長性を保ちながらループだけを断つ自動制御」として一貫して読み解けます。

試験・面接で問われる要点

「ルートブリッジの選出基準は」→ 最小ブリッジID(プライオリティ+MAC)。「ルートポートの基準は」→ そのブリッジからルートへ最小ルートパスコストのポート。「タイブレークの順序は」→ ルートBID→ルートパスコスト→送信側BID→送信側ポートID。「STPの収束が遅い理由は」→ Listening/Learning各15秒とMax Age 20秒のタイマ駆動で約50秒。「RSTPが速い理由は」→ 提案/合意ハンドシェイクとエッジ/P2Pの区別、即時TCフラッシュ。この5点を状態遷移と結びつけられれば上級です。

ネットワーク Article

スパニングツリープロトコル(STP/RSTP)の収束を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

STP

比較で見る軸

難易度: advanced / カテゴリ: ネットワーク / タグ数: 5

導入後に効く点

ポート役割はルートポート・指定ポート・非指定(ブロッキング)の順に決まり、コスト→送信ブリッジID→ポートIDのタイブレークで一意に定まる。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
ネットワーク
タグ数
5

判断チェックリスト

  • 自社の用途が「STP / RSTP」に近いか確認する。
  • 強みである「STPはBPDU交換で最小ブリッジIDのルートブリッジを選び、各ブリッジでルートへの最小コスト経路を残して冗長リンクをブロックし、物理ループを論理的な木に変える。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

STPRSTPL2スイッチループ防止BPDUSTPRSTPL2スイッチ
参考: 公式情報