スパニングツリー(STP)とは|仕組みと RSTP・MSTP の違い

  • URLをコピーしました!
目次

はじめに

L2(レイヤー 2)ネットワークでスイッチを冗長構成にすると、経路がループを形成し、ブロードキャストフレームが回り続ける「ブロードキャストストーム」や、MAC アドレステーブルの不安定化を招くことがあります。スパニングツリープロトコル(STP)は、こうした L2 ループを防ぐために、冗長経路の一部を論理的にブロックし、ループのない 1 本の経路へ収束させる仕組みです。

本記事は、STP の基礎(仕組み・BPDU・ポートの役割と状態遷移)から、STP・RSTP・MSTP の違い、ベンダー別の実装差、そして実際にポートがブロックされた際の切り分けの起点までを、実務目線で整理するハブ記事です。

この記事でわかること
  • STP がループを防ぐ仕組みと、BPDU が果たす役割
  • ルートブリッジの選出と、ルートポート・指定ポート・非指定ポートの違い
  • ポートが Forwarding に至るまでの状態遷移(802.1D と RSTP)
  • STP・RSTP・MSTP の違いと使い分けの考え方
  • Cisco・FortiSwitch・Arista・ALAXALA などベンダー別の実装差と、ポートブロック時の切り分け

要点を先に示すと、STP は冗長経路を持つ L2 網で、2 点間の有効な経路を常に 1 本だけにするためのプロトコルです。スイッチ同士が BPDU を交換してルートブリッジを選び、各ポートの役割と状態を決めることで、ループのないツリー構造を作ります。RSTP(802.1w)はこの収束を高速化した拡張、MSTP(802.1s)は複数 VLAN をインスタンス単位でまとめて扱う拡張にあたります。

スパニングツリー(STP)とは|仕組みと BPDU

STP は、IEEE 802.1D で標準化された L2 のループ防止プロトコルです。複数経路で相互接続されたスイッチ群の中から、ループを生まない経路だけを残し、残りの経路を待機(ブロック)状態に置きます。

参考: Cisco — Cisco Nexus 3548 Layer 2 Switching Configuration Guide
“STP provides a loop-free network at the Layer 2 level.”
(STP は Layer 2 レベルでループのないネットワークを提供する)
https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus3548/sw/layer_2_switching/60x/b_Cisco_N3548_Layer_2_Switching_Config_602_A1_1/b_Cisco_N3548_Layer_2_Switching_Config_602_A1_1_chapter_010.pdf

L2 ループが発生すると、次のような問題が連鎖的に起きます。

  • ブロードキャストフレームが経路内を回り続け、帯域と CPU を消費するブロードキャストストーム
  • 同一フレームが複数経路から届くことによる MAC アドレステーブルの不安定化(MAC フラッピング)
  • 同報フレームの重複受信によるアプリケーション側の誤動作

STP はこれらを防ぐため、スイッチ間で BPDU(Bridge Protocol Data Unit) と呼ばれる制御フレームを定期的に交換し、ネットワーク全体のトポロジを把握したうえで、ループになる経路を 1 つずつブロックします。BPDU はユーザーデータではなく STP 専用の制御情報で、スイッチはこれを転送せず、自身のトポロジ計算に使います。

ルートブリッジとポートの役割

STP はまず、ネットワーク内で基準となる 1 台の ルートブリッジ を選びます。選出では、各スイッチが持つブリッジ ID(ブリッジプライオリティと MAC アドレスの組)を比較し、最小のものがルートブリッジになります。

ルートブリッジが決まると、各スイッチのポートに役割が割り当てられます。

  • ルートポート: 各スイッチからルートブリッジへ最短(最小パスコスト)で到達するポート。スイッチごとに 1 つ
  • 指定ポート: 各セグメント(リンク)でルートブリッジ側へフレームを転送する役割を持つポート
  • 非指定ポート: 上記以外のポート。ループを防ぐためにブロック状態に置かれる

パスコストはリンク帯域に基づく値で、帯域が広いほど小さくなります。STP はパスコストの合計が最小になる経路を有効化し、それ以外をブロックします。

ポートの状態遷移

802.1D の STP では、ポートは次の状態を順に遷移して Forwarding(転送)に至ります。

  • Blocking(ブロッキング): BPDU は受信するが、データフレームは転送しない。
  • Listening(リスニング): トポロジ計算に参加し、ポートの役割を確定する。
  • Learning(ラーニング): MAC アドレスの学習を始めるが、まだ転送はしない。
  • Forwarding(フォワーディング): データフレームの転送を始める。

802.1D の既定タイマーでは、Listening と Learning にそれぞれ Forward Delay(既定 15 秒)を要し、リンク障害の検知には Max Age(既定 20 秒)が関わります。このため、トポロジ変化からの収束に 30〜50 秒程度かかる点が、802.1D の実務上の弱点でした。

この収束時間を短縮したのが RSTP(802.1w)で、状態は Discarding(破棄)・Learning・Forwarding の 3 つに整理され、隣接ポート間の合意(Proposal/Agreement)により数秒で収束します。RSTP の詳細は次セクションで扱います。

STP・RSTP・MSTP の違い

STP には世代があり、収束の速さやインスタンスの扱いが異なります。ここでは 802.1D(STP)・802.1w(RSTP)・802.1s(MSTP)の違いと、実務での使い分けの考え方を整理します。

RSTP(802.1w)による収束の高速化

RSTP は 802.1D を高速化した規格で、802.1D との後方互換性を保ちつつ、トポロジ変化からの収束を数秒程度まで短縮します。前述のとおり、ポートの状態は Discarding(破棄)・Learning・Forwarding の 3 つに整理されています。

収束が速くなる主な要因は、ポートの役割が増えたことと、リンク種別に応じた遷移方式です。RSTP では、802.1D のルートポート・指定ポートに加え、次の 2 つの役割が定義されます。

  • Alternate ポート: ルートポートに対する代替経路。通常はブロックされ、ルートポートが失われた際に素早く切り替わる。
  • Backup ポート: 同一セグメント上の指定ポートに対する予備。ハブなどの共有メディア接続でのみ現れる。

さらに RSTP は、ポートのリンク種別を区別します。全二重で 1 対 1 接続される point-to-point ポートでは、隣接ポート間の合意(Proposal/Agreement)によりタイマーを待たずに転送へ移行できます。端末を接続する edge ポート(Cisco の PortFast に相当)は即座に Forwarding になります。半二重の shared ポートでは、従来どおりタイマーに依存します。

このため、現在の L2 ネットワークでは 802.1D の素の STP ではなく、RSTP または Cisco の Rapid-PVST+ が動作しているのが一般的です。

MSTP(802.1s)とインスタンス設計の考え方

RSTP は高速ですが、ネットワーク全体で 1 つのスパニングツリーしか持ちません。一方、Cisco の PVST+/Rapid-PVST+ は VLAN ごとに独立したインスタンスを動かすため、VLAN 数が増えると BPDU と CPU の負荷が増大します。

この中間として、複数の VLAN を少数のインスタンス(MSTI)にまとめて扱うのが MSTP(802.1s)です。例えば「VLAN 10・20・30 をインスタンス 1」「VLAN 40・50・60 をインスタンス 2」のようにグループ化し、インスタンスごとに異なるルートブリッジを設定することで、冗長リンクをまたいだ負荷分散ができます。

MSTP では、同じ設定を持つスイッチ群が 1 つの MST リージョン を形成します。リージョンに属する条件は、次の 3 つがすべて一致することです。

参考: Cisco — Cisco Nexus 5000 Series Configuring Multiple Spanning Tree
“they must have the identical MST name, VLAN-to-instance mapping, and MST revision number.”
(同一 MST リージョンに属するには、同じ MST 名・VLAN-instance マッピング・MST リビジョン番号を持つ必要がある)
https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus5000/sw/configuration/guide/cli/CLIConfigurationGuide/MST.html

この 3 要素(リージョン名・リビジョン番号・VLAN-instance マッピング)のいずれかがずれていると、スイッチは別リージョンの境界と見なされます。リージョン外からは、内部構成が見えない 1 つの論理ブリッジ(ブラックボックス)として扱われます。なお、1 つのリージョンで扱えるインスタンス数には上限があり、その値はベンダーや機種・バージョンに依存します。具体的な上限や設定コマンドは、後続の MST 個別記事で扱います。

3 規格の使い分け

実務での位置づけを整理すると、次のようになります。

規格収束の速さインスタンスの扱い主な位置づけ
STP(802.1D)遅い(30〜50 秒)ネットワークで 1 つ原型。現在は基礎理解の対象
RSTP(802.1w)速い(数秒)ネットワークで 1 つ標準的な高速化版
Rapid-PVST+(Cisco)速い(数秒)VLAN ごとに 1 つCisco 既定。VLAN 数が多いと負荷増
MSTP(802.1s)速い(数秒)VLAN をインスタンスへ集約大規模・多 VLAN 環境の標準

VLAN 数が少なければ RSTP や Rapid-PVST+ で十分な場合が多く、VLAN 数が多くマルチベンダーで負荷分散も求める環境では MSTP が選択肢になります。各ベンダーが具体的にどの規格を既定で採用しているかは、次セクションで整理します。

ベンダー別の STP 実装と相互接続

同じ STP でも、既定モードや対応規格、独自拡張の有無はベンダーごとに異なります。ここでは代表的な 4 ベンダーの実装を整理し、異なる実装が混在する区間での注意点をまとめます。

Cisco(PVST+/Rapid-PVST+/MST)

Cisco の Catalyst では、15.2(4)E 以降 Rapid-PVST+ が既定モードです。対応するのは次の 3 つです。

  • PVST+: VLAN ごとに独立したスパニングツリーを動かす Cisco 拡張(802.1D ベース)。
  • Rapid-PVST+: PVST+ と同じく VLAN 単位だが、802.1w ベースで収束が速い。
  • MST: 802.1s に基づき、複数 VLAN をインスタンスへ集約する。

PVST+/Rapid-PVST+ は VLAN ごとにタグ付き BPDU を送る点が、後述の相互接続で重要になります
(参照: Cisco Catalyst 9300 Layer 2 Configuration Guide, IOS XE 17.17 — https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9300/software/release/17-17/configuration_guide/lyr2/b_1717_lyr2_9300_cg/configuring_spanning_tree_protocol.html

FortiSwitch・Arista EOS・ALAXALA AX の実装

この 3 ベンダーは、いずれも IEEE 標準(STP/RSTP/MSTP)をベースにしています。

FortiSwitch は、FortiGate 配下(FortiLink)で運用される L2 スイッチで、MSTP(802.1s)と Per-VLAN RSTP(RPVST/RPVST+)に対応します。MSTP は STP/RSTP と後方互換で、1 つのリージョンで 15 個の MST インスタンスを扱えます。運用上の注意として、FortiLink モードでは FortiGate と FortiSwitch の間で STP は動作しません。この区間のループ防止は STP に依存しない設計になります。
(参照: FortiSwitchOS Administration Guide — https://docs.fortinet.com/document/fortiswitch/7.6.5/fortiswitchos-administration-guide/364614/stp

Arista EOS は、既定で MSTP が動作します。RSTP・Rapid-PVST にも対応し、1 リージョンあたり最大 65 インスタンスを扱えます。

参考: Arista — EOS Spanning Tree Protocol
“By default, Arista switches use MSTP.”
(Arista のスイッチは既定で MSTP を使用する)
https://www.arista.com/en/um-eos/eos-spanning-tree-protocol

Arista はデータセンターでの採用が多く、ログメッセージの形式(小文字の Stp: プレフィックス)が Cisco とは異なります。この差は障害切り分けで混同しやすいため、後続のトラブルセクションで触れます。

ALAXALA AX は、PVST+・シングルスパニングツリー(802.1D/802.1w)・マルチプルスパニングツリー(802.1s)に対応します。国内のエンタープライズや公共系で採用が多いベンダーです。ただし、マルチプルスパニングツリーは他のツリー種別と併用できないという制約があります。(参照: ALAXALA AX シリーズ コンフィグレーションガイド — https://www.alaxala.com/jp/techinfo/archive/manual/AX3630S/HTML/11_10/CFGUIDE/0356.HTM

PVST+ 系への対応はベンダーで分かれます。Cisco と ALAXALA は PVST+/Rapid-PVST+ に対応し、Arista は Rapid-PVST に対応、FortiSwitch は MSTP をベースに RPVST+ との相互接続に対応します。

異なる実装をまたぐ相互接続の注意

混在で最も注意が必要なのが、Cisco の PVST+/Rapid-PVST+ と、IEEE 標準の単一インスタンス(RSTP/MSTP)機器をまたぐ区間です。

Cisco の PVST+/Rapid-PVST+ は、VLAN ごとに BPDU を送出します。一方、IEEE 標準の機器は、ネイティブ VLAN(通常 VLAN 1)を流れる IEEE 標準 BPDU を共通スパニングツリー(CST)として処理し、それ以外の VLAN の PVST+ BPDU は理解せず、通常フレームとしてフラッディング(透過)します。この非対称性が、ネイティブ VLAN の不一致や境界ポートの不整合を招きやすい点が、混在区間の最大の落とし穴です。

FortiSwitch の公式ドキュメントでも、CIST のルートが RPVST+ 側にある場合、境界の FortiSwitch は VLAN 1 の情報のみを処理し、VLAN 2 以上の BPDU は整合性チェックにのみ使う、と整理されています。
(参照: FortiSwitch Configuring STP settings — https://docs.fortinet.com/document/fortiswitch/8.0.0/fortilink-guide/173292/configuring-stp-settings

実務では、混在区間で次の点を押さえると、ループや片寄せ(全トラフィックが 1 リンクに集中する状態)を避けやすくなります。

  • 両端でネイティブ VLAN を一致させる。
  • 境界における既定ルートブリッジの位置を意識し、PVST+ 側と IEEE 標準側のルートの関係を設計で決めておく。

なお、Cisco 機器側で発生する Type/PVID 不整合は、こうした混在や設定不一致の典型的な兆候です。具体的な切り分けは、後続のトラブルセクションで扱います。

STP で多いトラブルと切り分けの地図

STP 関連のトラブルは、いくつかの典型パターンに分かれます。ログとコマンドで種類を見分け、該当する個別記事へ進むための地図として整理します。切り分けの起点となるコマンドはベンダーで異なりますが、Cisco であれば show spanning-tree summary で動作モードを、show spanning-tree inconsistentports で不整合の種別を確認するのが第一歩です。

ポートが Blocking/Inconsistent になる(Type/PVID 不整合)

設定変更をしていないのにポートが遮断され、ログに不整合系のメッセージが出るパターンです。Cisco の PVST+/Rapid-PVST+ では、ポートの種別(アクセス/トランク)が両端で食い違う Type 不整合と、両端トランクでネイティブ VLAN がずれる PVID 不整合が代表的です。

参考: Cisco — Troubleshoot Spanning Tree PVID- and Type-Inconsistencies
“Type inconsistency—A PVST+ BPDU is received on a non-802.1Q trunk.”
(Type 不整合: PVST+ BPDU が非 802.1Q トランクで受信された)
https://www.cisco.com/c/en/us/support/docs/lan-switching/spanning-tree-protocol/24063-pvid-inconsistency-24063.html

これらは前セクションの PVST+ と IEEE 標準 STP の混在区間でも起きやすく、不整合 BPDU の受信が止まれば自動的にブロックが解除されます。詳しい原因と対処は、既存記事『Cisco スイッチで Inconsistent port type が出る原因と対処』で扱っています。

BPDU Guard と err-disable

PortFast と BPDU Guard を有効にしたポートで BPDU を受信すると、ポートは err-disable 状態でシャットダウンします。これは Inconsistent ブロックとは挙動が異なり、不整合が解消しても自動では戻らず、手動操作または errdisable recovery の設定で復旧します。ログメッセージも別系統のため、混同しないことが切り分けの要点です。

ループ検出機能との併用と無効化の是非

STP とは別に、ベンダー独自のループ検出機能を備える機器もあります。これらは STP を補完するもので、STP を無効化する口実にするものではありません。STP を無効化してループ検出だけに頼る構成は、誤配線時のループ防止を運用側の責任に移すことになるため、慎重な検討が求められます。

まとめ

スパニングツリー(STP)は、冗長な L2 ネットワークでループを防ぐための基盤技術です。世代やベンダーによって既定モードや挙動が異なり、その差を押さえることが障害切り分けの速さにつながります。本記事では、基礎から実装差、トラブルの地図までを整理しました。

  • STP は冗長な L2 経路のループを防ぎ、有効経路を 1 本に収束させる仕組み
  • 802.1D は収束が遅く、RSTP は数秒に高速化、MSTP は VLAN をインスタンスへ集約
  • 動作の基礎はルートブリッジの選出と、ポートの役割および状態遷移
  • 既定モードはベンダーで異なり、Cisco は Rapid-PVST+、Arista は MSTP
  • PVST+ と IEEE 標準 STP の混在区間はネイティブ VLAN の不一致に注意
  • Inconsistent ブロックは自動回復、BPDU Guard の err-disable は手動復旧が基本
  • 具体的なエラー対処とベンダー別の設定は各スポーク記事を参照

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次