本文へ
月極
日中EN

2026年1月18日読了 6 分aomori446

STP

STP (802.1D) と RSTP (802.1w) の動作原理、選出プロセス、および Cisco 拡張機能の設定

1. STP 概要

1.1 背景

STPを使用しない場合、スイッチ間の冗長リンクによって L2ループ (Layer 2 Loops) が形成され、ネットワークが麻痺する。

  1. ブロードキャストストーム (Broadcast Storms):ブロードキャストフレームがループ内を無限に循環し、帯域幅とCPUリソースを枯渇させる。
  2. MACアドレステーブルの不安定化 (MAC Database Instability):同一の送信元MACアドレスが異なるポート間で頻繁に書き換わる。
  3. フレームの重複受信 (Multiple Frame Transmission):宛先ホストが同じデータを重複して受信する。

1.2 コア機能

STPはアルゴリズムにより特定のポートを論理的に ブロック (Block) することで物理ループを断ち切り、ループのない論理トポロジを構築する。メインリンク障害時は、ブロックポートが自動的に転送を再開し、冗長性を確保する。


2. STP 選出プロセス (PVST+)

STPネットワークの収束は、厳格な 4ステップの選出順序 に従う。

選出原則:値が小さいほど優先される (Lower is Better)。

2.1 手順 1:ルートブリッジ (Root Bridge) の選出

  • 範囲:ブロードキャストドメイン全体(VLANごとに独立して選出)。
  • ルール:BID (Bridge ID) が最小 のスイッチが選出される。
  • BID = Priority (デフォルト 32768) + SysID (VLAN ID) + MAC Address
  • まずプライオリティを比較し、同じならMACアドレスを比較。
  • 特性:ルートブリッジ上の全ポートは 指定ポート (DP) となり、転送状態になる。

2.2 手順 2:ルートポート (Root Port - RP) の選出

  • 対象:各 非ルートブリッジ (Non-Root) スイッチ。
  • 数:各デバイスにつき 1つ のみ。
  • 目的:ルートブリッジへのパスコストが最小となるインターフェース。
  • 選出基準 (受信した BPDU を比較):
  1. 最小の Root Cost:累積パスコストが最小 (100M=19, 1G=4)。
  2. 最小の Sender BID:上流スイッチの BID が最小。
  3. 最小の Sender Port ID:上流ポートの (Priority.番号) が最小。

2.3 手順 3:指定ポート (Designated Port - DP) の選出

  • 対象:各 リンク (セグメント)。
  • 数:各リンクにつき 1つ のみ。
  • 目的:そのセグメントへのトラフィック転送を担当。
  • 選出基準:
  1. 最小の Root Cost:どちらがルートブリッジに近いか。
  2. 最小の My BID:コストが同じ場合、自身の BID を比較。
  3. 最小の My Port ID:BID も同じ場合、自身の Port ID を比較。

2.4 手順 4:非指定ポート (Blocking / NDP) のブロック

  • 対象:RP でも DP でもないポート。
  • 動作:NDP (Non-Designated Port) となり、Blocking 状態に移行。
  • 特性:BPDU の受信のみ行う。送信はしない。データ転送もしない。

3. ポート状態と RSTP による改善

3.1 従来の STP (802.1D) の状態

収束が遅い (30-50秒)。

| 状態 | 説明 | BPDU 送受信 | MAC学習 | データ転送 | 所要時間 |
| :— | :— | :— | :— | :— | :— |
| Disabled | インターフェース Shutdown | ❌ | ❌ | ❌ | - |
| Blocking | (安定) ブロック中、ループ防止 | 受信のみ | ❌ | ❌ | Max Age (20s) |
| Listening | BPDU 聴取、選出中 | ✅ | ❌ | ❌ | Fwd Delay (15s) |
| Learning | 送信元 MAC 学習 | ✅ | ✅ | ❌ | Fwd Delay (15s) |
| Forwarding | (安定) 通常転送 | ✅ | ✅ | ✅ | - |

3.2 RSTP (802.1w) の改善

状態の統合と新しい役割により 秒単位の高速収束 を実現。

状態のマッピング:

| 802.1D 状態 | RSTP 状態 | 動作 |
| :— | :— | :— |
| Disabled / Blocking / Listening | Discarding | データ転送しない |
| Learning | Learning | MAC学習する |
| Forwarding | Forwarding | データ転送する |

新しいポートの役割:

  • Alternate Port (AP):ルートポートのバックアップ。メイン経路障害時、即座に RP に切り替わる。
  • Backup Port (BP):指定ポートのバックアップ(ハブ環境でのみ使用)。

設定モード切替:

Switch(config)# spanning-tree mode rapid-pvst

4. Cisco 拡張機能 (Toolkit)

4.1 PortFast (ポートファスト)

  • 機能:Listening/Learning 段階をスキップし、即座に Forwarding に移行させる。
  • 適用:エンド端末 (PC/Server) を接続する Access インターフェースのみに使用。
# インターフェース設定 (推奨)
Switch(config-if)# spanning-tree portfast

# グローバル設定 (Trunk 以外の全ポートに適用)
Switch(config)# spanning-tree portfast default

4.2 BPDU Guard (BPDU ガード)

  • 機能:PortFast ポートにスイッチが誤接続されるのを防ぐ。BPDU を受信すると、そのポートを即座に err-disabled 状態にする。
  • 適用:PortFast と組み合わせて使用し、アクセス層のセキュリティを強化する。
# インターフェース設定
Switch(config-if)# spanning-tree bpduguard enable

# グローバル設定
Switch(config)# spanning-tree portfast bpduguard default

4.3 Root Guard (ルートガード)

  • 機能:配下のデバイスがルートブリッジを乗っ取るのを防ぐ。より優れた BPDU を受信すると、ポートは root-inconsistent 状態になる。
  • 適用:コア/ディストリビューション層で、下流へ接続する指定ポート (DP) に設定。
Switch(config-if)# spanning-tree guard root

5. 設定と確認

5.1 ルートブリッジ プライオリティの調整

# 方法 A:自動計算 (Primary=24576, Secondary=28672)
Switch(config)# spanning-tree vlan 10 root primary
Switch(config)# spanning-tree vlan 10 root secondary

# 方法 B:手動指定 (4096 の倍数である必要あり)
Switch(config)# spanning-tree vlan 10 priority 4096

5.2 よく使う確認コマンド

# STP 状態の概要確認 (最頻出)
Switch# show spanning-tree

# 特定 VLAN の選出詳細を確認
Switch# show spanning-tree vlan 10

# モードや PortFast/BPDU Guard のグローバル状態確認
Switch# show spanning-tree summary

# タイマーや BPDU 統計の確認
Switch# show spanning-tree detail

CCNA