スイッチを使ったネットワークで、冗長化のために複数の経路を用意すると「ループ」が発生します。このループを防ぐために使われるのが「STP(スパニングツリープロトコル)」です。本記事では、STPの基本的な仕組みから障害時の動作まで、現場で役立つ知識を図解とともに解説します。

👷 現場での体験談

かつてSTPを無効化したスイッチを誤って接続してしまい、ネットワーク全体がダウンした経験があります。ブロードキャストストームが発生し、スイッチのCPU使用率が100%に張り付きました。

その時の復旧作業で学んだのは、STPの重要性と、どのポートがブロックされているかを事前に把握しておく必要性です。今でもネットワーク図にはSTPのポート状態を必ず記載しています。

STPが必要な理由とブロードキャストストーム
ネットワークループが引き起こす問題

スイッチで構成されたネットワークに物理的なループが存在すると、以下の深刻な問題が発生します。

ループによる主な障害

障害の種類発生する問題影響度
ブロードキャストストームブロードキャストフレームが無限に増幅され帯域を占有致命的
MACアドレステーブル不安定同一MACが複数ポートから学習され通信が不安定に高い
フレーム重複受信同じフレームが複数回届きアプリケーションが誤動作中程度
CPU負荷増大大量のフレーム処理によりスイッチCPUが過負荷致命的
⚠ 注意

ブロードキャストストームが発生すると、数秒でネットワーク全体が使用不能になります。スイッチの管理ポートにもアクセスできなくなるため、物理的にケーブルを抜く必要があります。

STPの基本動作とルートブリッジ選定
ルートブリッジの選定プロセス

STPは、ネットワーク内で1台の「ルートブリッジ」を選定し、そこを起点にツリー構造を構築します。選定は以下の優先順位で行われます。

1
ブリッジプライオリティの比較

デフォルトは32768。最も小さい値を持つスイッチがルートブリッジになります。

2
MACアドレスの比較

プライオリティが同じ場合、MACアドレスが最も小さいスイッチが選ばれます。

図1: ブリッジプライオリティによるルートブリッジ選定

SW1 (4096)
最優先
SW2 (8192)
SW3 (32768)
SW4 (32768)
低(MAC)
BPDUの役割とやり取り

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.be01
ポート状態の遷移と役割
5つのポート状態

STPでは、各ポートが以下の状態を遷移しながら最適な経路を構築します。Blocking状態からForwarding状態まで、通常30〜50秒かかります。

ポート状態の詳細

状態動作MAC学習継続時間
BlockingBPDUのみ受信、フレーム転送なしなし20秒
ListeningBPDU送受信、ループチェックなし15秒
LearningMACアドレス学習開始あり15秒
Forwarding通常のフレーム転送を実行あり継続
Disabled管理的にシャットダウンなし継続
ポートの役割

STPは各ポートに役割を割り当て、どのポートを使用するかを決定します。

図2: ポート役割別の配置割合

Designated Port
85%
Root Port
70%
Alternate Port
30%
Backup Port
5%
STP・RSTP・MSTPの違いと選び方
プロトコルの進化と特徴

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

実務での選択基準

プロトコル収束時間適用場面推奨度
STP30〜50秒旧型機器との接続
RSTP数秒以内一般的な企業ネットワーク
MSTP数秒以内大規模・多VLAN環境中〜高
障害発生時の動作とトラブルシューティング
リンク障害時のコンバージェンス

アクティブなリンクに障害が発生すると、STPは自動的に代替経路に切り替えます。RSTPの場合、この切り替えは数秒で完了します。

1
障害検出

リンクダウンを検知するか、BPDUの受信が途絶える(Max Age: 20秒)

2
トポロジ再計算

BlockingポートがListening→Learning→Forwardingへ遷移

3
通信再開

代替経路がアクティブになり、通信が復旧する

よくある障害と対処法
! 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の状態を確認し、意図したトポロジになっているか検証する