1. STP 概要#
1.1 背景#
STPを使用しない場合、スイッチ間の冗長リンクによって L2ループ (Layer 2 Loops) が形成され、ネットワークが麻痺する。
- ブロードキャストストーム (Broadcast Storms):ブロードキャストフレームがループ内を無限に循環し、帯域幅とCPUリソースを枯渇させる。
- MACアドレステーブルの不安定化 (MAC Database Instability):同一の送信元MACアドレスが異なるポート間で頻繁に書き換わる。
- フレームの重複受信 (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 を比較):
- 最小の Root Cost:累積パスコストが最小 (100M=19, 1G=4)。
- 最小の Sender BID:上流スイッチの BID が最小。
- 最小の Sender Port ID:上流ポートの (Priority.番号) が最小。
2.3 手順 3:指定ポート (Designated Port - DP) の選出#
- 対象:各 リンク (セグメント)。
- 数:各リンクにつき 1つ のみ。
- 目的:そのセグメントへのトラフィック転送を担当。
- 選出基準:
- 最小の Root Cost:どちらがルートブリッジに近いか。
- 最小の My BID:コストが同じ場合、自身の BID を比較。
- 最小の 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-pvst4. Cisco 拡張機能 (Toolkit)#
4.1 PortFast (ポートファスト)#
- 機能:Listening/Learning 段階をスキップし、即座に Forwarding に移行させる。
- 適用:エンド端末 (PC/Server) を接続する Access インターフェースのみに使用。
# インターフェース設定 (推奨)
Switch(config-if)# spanning-tree portfast
# グローバル設定 (Trunk 以外の全ポートに適用)
Switch(config)# spanning-tree portfast default4.2 BPDU Guard (BPDU ガード)#
- 機能:PortFast ポートにスイッチが誤接続されるのを防ぐ。BPDU を受信すると、そのポートを即座に err-disabled 状態にする。
- 適用:PortFast と組み合わせて使用し、アクセス層のセキュリティを強化する。
# インターフェース設定
Switch(config-if)# spanning-tree bpduguard enable
# グローバル設定
Switch(config)# spanning-tree portfast bpduguard default4.3 Root Guard (ルートガード)#
- 機能:配下のデバイスがルートブリッジを乗っ取るのを防ぐ。より優れた BPDU を受信すると、ポートは root-inconsistent 状態になる。
- 適用:コア/ディストリビューション層で、下流へ接続する指定ポート (DP) に設定。
Switch(config-if)# spanning-tree guard root5. 設定と確認#
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 40965.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