スイッチを使ったネットワークで、冗長化のために複数の経路を用意すると「ループ」が発生します。このループを防ぐために使われるのが「STP(スパニングツリープロトコル)」です。本記事では、STPの基本的な仕組みから障害時の動作まで、現場で役立つ知識を図解とともに解説します。
かつてSTPを無効化したスイッチを誤って接続してしまい、ネットワーク全体がダウンした経験があります。ブロードキャストストームが発生し、スイッチのCPU使用率が100%に張り付きました。
その時の復旧作業で学んだのは、STPの重要性と、どのポートがブロックされているかを事前に把握しておく必要性です。今でもネットワーク図にはSTPのポート状態を必ず記載しています。
スイッチで構成されたネットワークに物理的なループが存在すると、以下の深刻な問題が発生します。
ループによる主な障害
| 障害の種類 | 発生する問題 | 影響度 |
|---|---|---|
| ブロードキャストストーム | ブロードキャストフレームが無限に増幅され帯域を占有 | 致命的 |
| MACアドレステーブル不安定 | 同一MACが複数ポートから学習され通信が不安定に | 高い |
| フレーム重複受信 | 同じフレームが複数回届きアプリケーションが誤動作 | 中程度 |
| CPU負荷増大 | 大量のフレーム処理によりスイッチCPUが過負荷 | 致命的 |
ブロードキャストストームが発生すると、数秒でネットワーク全体が使用不能になります。スイッチの管理ポートにもアクセスできなくなるため、物理的にケーブルを抜く必要があります。
STPは、ネットワーク内で1台の「ルートブリッジ」を選定し、そこを起点にツリー構造を構築します。選定は以下の優先順位で行われます。
デフォルトは32768。最も小さい値を持つスイッチがルートブリッジになります。
プライオリティが同じ場合、MACアドレスが最も小さいスイッチが選ばれます。
図1: ブリッジプライオリティによるルートブリッジ選定
BPDU(Bridge Protocol Data Unit)は、STPの制御情報を運ぶフレームです。スイッチは2秒ごとにBPDUを送信し、ネットワークトポロジを維持します。
SW1# show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 4096
Address 0023.04ee.be01
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 4096 (priority 4096 sys-id-ext 1)
Address 0023.04ee.be01STPでは、各ポートが以下の状態を遷移しながら最適な経路を構築します。Blocking状態からForwarding状態まで、通常30〜50秒かかります。
ポート状態の詳細
| 状態 | 動作 | MAC学習 | 継続時間 |
|---|---|---|---|
| Blocking | BPDUのみ受信、フレーム転送なし | なし | 20秒 |
| Listening | BPDU送受信、ループチェック | なし | 15秒 |
| Learning | MACアドレス学習開始 | あり | 15秒 |
| Forwarding | 通常のフレーム転送を実行 | あり | 継続 |
| Disabled | 管理的にシャットダウン | なし | 継続 |
STPは各ポートに役割を割り当て、どのポートを使用するかを決定します。
図2: ポート役割別の配置割合
STPは時代とともに進化し、収束時間の短縮や複数VLAN対応などの機能が追加されてきました。現在、主に使われるのは以下の3種類です。
- STP(802.1D): 従来型。収束に30〜50秒かかるが互換性が高い
- RSTP(802.1w): 高速版。収束時間を数秒に短縮
- MSTP(802.1s): 複数のスパニングツリーを管理しVLAN単位で経路を最適化
! RSTPの設定例
SW1(config)# spanning-tree mode rapid-pvst
SW1(config)# interface GigabitEthernet0/1
SW1(config-if)# spanning-tree portfast
SW1(config-if)# spanning-tree bpduguard enable実務での選択基準
| プロトコル | 収束時間 | 適用場面 | 推奨度 |
|---|---|---|---|
| STP | 30〜50秒 | 旧型機器との接続 | 低 |
| RSTP | 数秒以内 | 一般的な企業ネットワーク | 高 |
| MSTP | 数秒以内 | 大規模・多VLAN環境 | 中〜高 |
アクティブなリンクに障害が発生すると、STPは自動的に代替経路に切り替えます。RSTPの場合、この切り替えは数秒で完了します。
リンクダウンを検知するか、BPDUの受信が途絶える(Max Age: 20秒)
BlockingポートがListening→Learning→Forwardingへ遷移
代替経路がアクティブになり、通信が復旧する
! STPの状態確認コマンド
SW1# show spanning-tree summary
SW1# show spanning-tree interface GigabitEthernet0/1 detail
SW1# show spanning-tree inconsistentports
! ログでトポロジ変更を確認
SW1# show logging | include TOPOLOGY_CHANGE現場でよく遭遇するトラブルには以下があります。
- 意図しないルートブリッジ選定: プライオリティを明示的に設定して制御
- 頻繁なトポロジ変更: PortFastを有効化して端末ポートを除外
- 不正なBPDU受信: BPDUガードで不正な機器の接続を検知
- 遅い収束: RSTPへの移行を検討
PortFastはエンドデバイス(PC、サーバー)が接続されるポートにのみ設定してください。スイッチ間接続に設定するとループが発生する可能性があります。
スパニングツリープロトコルは、冗長化されたスイッチネットワークでループを防ぐために不可欠な技術です。ルートブリッジを中心にツリー構造を構築し、障害時には自動的に代替経路に切り替えることで、高可用性を実現します。
- STPはBPDUを使ってネットワークトポロジを管理し、ループを防ぐ
- ポート状態はBlocking→Listening→Learning→Forwardingと遷移する
- 現在はRSTPが主流で、収束時間が大幅に短縮されている
- PortFastとBPDUガードで端末接続ポートを最適化できる
- 定期的にSTPの状態を確認し、意図したトポロジになっているか検証する



