スパニングツリープロトコル(STP)は、イーサネットネットワークにおいてループのない論理トポロジーを構築するネットワークプロトコルです。STPの基本的な機能は、ブリッジループとその結果として発生するブロードキャスト放射を防ぐことです。また、スパニングツリーを用いることで、アクティブなリンクが故障した場合に備えて、バックアップリンクをネットワーク設計に組み込むことが可能になり、フォールトトレランスを実現できます。
その名の通り、STPは接続されたレイヤ2ブリッジのネットワーク内のノード間の関係を特徴付けるスパニングツリーを作成し、スパニングツリーの一部ではないリンクを無効にして、任意の2つのネットワークノード間に1つのアクティブなパスを残します。STPは、 Radia PerlmanがDigital Equipment Corporationで働いていたときに考案したアルゴリズムに基づいています。[ 1 ] [ 2 ]
2001年、IEEEは802.1wとしてラピッドスパニングツリープロトコル(RSTP )を導入しました。RSTPは、ネットワークの変更や障害への対応において、大幅に高速な復旧を実現します。これは、新しい収束動作とブリッジポートの役割を導入することで実現されています。RSTPは、標準のSTPとの下位互換性を持つように設計されています。
STPは元々 IEEE 802.1Dとして標準化されましたが、スパニングツリー(802.1D)、ラピッドスパニングツリー(802.1w)、およびマルチプルスパニングツリープロトコル(802.1s)の機能はその後IEEE 802.1Q-2014に組み込まれました。[ 3 ]
STPは現在でも使用されていますが、多くの最新ネットワークでは、耐障害性メカニズムとしてではなく、ループ保護メカニズムとして主に使用されています。LACPなどのリンクアグリゲーションプロトコルは、複数のリンクを結合してリンクレベルの耐障害性を提供すると同時に、リンク全体の容量を増加させます。しかし、スイッチレベルの冗長性を実装するには、マルチシャーシリンクアグリゲーションが必要であり、これは独自のバリアントしか存在しません。最短経路ブリッジングは、ループフリー転送とリンクアグリゲーションの両方を組み合わせたものですが、 2026年現在、STPやLACPほど普及していません。。
スパニングツリープロトコル(STP)の必要性は、ローカルエリアネットワーク(LAN)内のスイッチが、接続障害発生時の耐障害性向上のため、冗長リンクを使用して相互接続されることが多いことから生じた。[ 4 ]: 386しかし、この接続構成ではスイッチングループが発生し、ブロードキャスト放射やMACテーブルの不安定性を引き起こす。[ 4 ]: 388スイッチの接続に冗長リンクを使用する場合は、スイッチングループを回避する必要がある。[ 4 ]: 385
スイッチドLANにおける冗長リンクに関連する問題を回避するため、ネットワークトポロジを監視するためにスイッチにSTPが実装されます。スイッチ間のすべてのリンク、特に冗長リンクがカタログ化されます。スパニングツリーアルゴリズムは、LAN内のスイッチ間に優先リンクを1つ設定することで、冗長リンクでの転送をブロックします。この優先リンクは、障害が発生しない限りすべてのイーサネットフレームに使用され、障害が発生した場合は非優先冗長リンクが有効になります。ネットワークに実装されると、STPは1つのレイヤ2スイッチをルートブリッジとして指定します。すべてのスイッチは、転送のためにルートブリッジへの最適な接続を選択し、他の冗長リンクをブロックします。すべてのスイッチは、ブリッジ プロトコルデータユニット(BPDU)を使用してLAN内の隣接スイッチと常に通信します。[ 4 ] : 388
2つのスイッチ間に複数のリンクが存在する場合、STPルートブリッジは帯域幅に基づいて各パスのコストを計算します。STPは、コストが最も低いパス、つまり帯域幅が最も高いパスを優先リンクとして選択します。STPはこの優先リンクを2つのスイッチ間のイーサネットフレームに使用される唯一のパスとして有効にし、優先パスを接続するスイッチポートをルートポートとして指定することで、他のすべてのリンクを無効にします。[ 4 ]: 393
LAN内のSTP対応スイッチがルートブリッジを選出した後、ルートブリッジ以外のすべてのスイッチは、いずれかのポートをルートポートとして割り当てます。これは、スイッチをルートブリッジに接続するポート、または複数のパスがある場合は、ルートブリッジによって計算された優先パスのポートのいずれかです。すべてのスイッチがルートブリッジに直接接続されているわけではないため、スイッチ同士はSTP BPDUを使用して通信します。各スイッチは、自身のパスのコストに隣接スイッチから受信したコストを加算して、ルートブリッジへの特定のパスの総コストを決定します。ルートブリッジへのすべての可能なパスのコストが合計されると、各スイッチは、最終的にルートブリッジにつながる、コストが最も低い、または帯域幅が最も高いパスに接続するポートをルートポートとして割り当てます。[ 4 ] : 394
STPのパスコストのデフォルト値は、当初は「 1 Gbit/s /帯域幅」という式で計算されていました。より高速な通信速度が利用可能になった際、デフォルト値が調整されました。そうでなければ、1 Gbit/sを超える速度はSTPでは区別できなかったためです。後継のRSTPは、分子を大きくした同様の式「20 Tbit/s /帯域幅」を使用しています。これらの式から、表のサンプル値が得られます。[ 5 ]: 154
STPが有効になっているLAN内のすべてのスイッチポートは分類されます。[ 4 ]: 388
デバイスがスイッチ ポートに初めて接続されると、すぐにデータの転送を開始するわけではありません。代わりに、BPDU を処理してネットワークのトポロジーを決定する間、いくつかの状態を経由します。コンピュータ、プリンタ、サーバなどのホストに接続されたポートは、リスニング状態とラーニング状態を経由する約 30 秒の遅延の後、常に転送状態になります。リスニング状態とラーニング状態に費やされる時間は、転送遅延と呼ばれる値によって決まります (デフォルトは 15 秒で、ルート ブリッジによって設定されます)。別のスイッチが接続された場合、ネットワークでループが発生すると判断されると、ポートはブロッキング モードのままになることがあります。トポロジー変更通知 (TCN) BPDU は、ポートの変更を他のスイッチに通知するために使用されます。TCN は、ルート以外のスイッチによってネットワークに注入され、ルートに伝播されます。ルート スイッチは、TCN を受信すると、通常の BPDU にトポロジー変更フラグを設定します。このフラグは他のすべてのスイッチに伝播され、転送テーブル エントリを迅速にエージングアウトするように指示します。
STP を設定する前に、ネットワーク トポロジを慎重に計画する必要があります。[ 6 ] : 506、511基本的な構成では、 LAN 内のすべてのスイッチで STP を有効にし、各スイッチで同じバージョンの STP を選択する必要があります。管理者は、どのスイッチがルート ブリッジになるかを決定し、スイッチを適切に構成できます。ルート ブリッジがダウンすると、プロトコルはブリッジ ID に基づいて新しいルート ブリッジを自動的に割り当てます。すべてのスイッチがデフォルト ID などの同じブリッジ ID を持ち、ルート ブリッジがダウンすると、同点状態になり、プロトコルはスイッチの MAC アドレスに基づいて 1 つのスイッチをルート ブリッジとして割り当てます。スイッチにブリッジ ID が割り当てられ、プロトコルがルート ブリッジ スイッチを選択すると、ポート コスト、パス コスト、ポート プライオリティに基づいてルート ブリッジへの最適なパスが計算されます。[ 6 ] : 506最終的に、STP はリンクの帯域幅に基づいてパス コストを計算します。管理者は、ポート コストを設定することで、プロトコルの優先パスの選択に影響を与えることができます。ポートコストが低いほど、プロトコルが接続されたリンクを優先パスのルートポートとして選択する可能性が高くなります。[ 6 ] : 511トポロジー内の他のスイッチがルートポート、つまりルートブリッジへの最小コストパスを選択する方法は、ポート優先度によって影響を受ける可能性があります。優先度が高いほど、そのパスは最終的に優先度が低くなります。スイッチのすべてのポートの優先度が同じ場合、最も低い番号のポートがフレーム転送用に選択されます。[ 6 ] : 513

スパニングツリーのルートブリッジは、ブリッジIDが最小(最低)のブリッジです。各ブリッジには、設定可能な優先度番号とMACアドレスがあります。ブリッジIDは、ブリッジ優先度とMACアドレスを連結したものです。たとえば、優先度が32,768、MACアドレスが0200.0000.1111のブリッジのIDは、 32768.0200.0000.1111です。ブリッジ優先度のデフォルト値は32,768で、4096の倍数でのみ設定できます。[ a ] 2つのブリッジIDを比較する場合、まず優先度部分が比較され、優先度が同じ場合にのみMACアドレスが比較されます。すべてのスイッチの中で優先度が最も低いスイッチがルートになります。同点の場合は、優先度とMACアドレスの両方が最も低いスイッチがルートになります。例えば、スイッチA (MAC = 0200.0000.1111 ) とスイッチB (MAC = 0200.0000.2222 ) の両方の優先度が 32,768 の場合、スイッチAがルート ブリッジとして選択されます。[ b ]ネットワーク管理者がスイッチBをルート ブリッジにしたい場合は、その優先度を 32,768 未満に設定する必要があります。[ c ]
最もよく受信されたBPDU(ルートへの最適なパス)を決定するための一連のイベントは次のとおりです。

上記のルールは、アルゴリズムによって計算されるスパニングツリーを決定する1つの方法を説明していますが、記述されているルールはネットワーク全体の知識を必要とします。ブリッジは、自身が持つ情報のみに基づいてルートブリッジを特定し、ポートの役割(ルート、指定、またはブロック)を計算する必要があります。各ブリッジが十分な情報を持っていることを保証するために、ブリッジはブリッジプロトコルデータユニット(BPDU)と呼ばれる特別なデータフレームを使用して、スパニングツリープロトコル、ブリッジID、およびルートパスのコストに関する情報を交換します。
BPDUは定期的に(デフォルトでは2秒ごとに)交換され、スイッチがネットワークの変更を追跡し、必要に応じてポートでの転送を開始および停止できるようにします。ホストをスイッチに接続する際やトポロジーの変更時に発生する遅延を防ぐために、Rapid STPが開発されました。これにより、これらの状況下でスイッチポートが迅速に転送状態に移行できるようになります。
オリジナルのSTP仕様(802.1D)[ 5 ]には2種類のBPDUがあります: 63(ラピッドスパニングツリー(RSTP)拡張機能は特定のRSTP BPDUを使用します)。
IEEE 802.1DおよびIEEE 802.1aqのBPDUは、以下の形式をとります。
トポロジー変更通知(TCN)BPDUは、ポートのアップやダウンなど、ネットワークトポロジーの変更を通知するために使用されます。
コンフィギュレーションBPDU(CBPDU)は、スパニングツリーの計算に使用され、ルートブリッジによって送信され、すべてのスイッチに情報を提供します。
最初のスパニングツリープロトコルは、1985 年にデジタル機器コーポレーションでラディア・パールマンによって発明されました。[ 1 ] 1990 年に、IEEE は、パールマンが設計したアルゴリズムに基づいて、プロトコルの最初の標準規格である 802.1D を発表しました。 [ 13 ]その後、さまざまな拡張機能を組み込んだバージョンが 1998 年に[ 14 ]および 2004 年に[ 15 ]発表されました。DEC STP と呼ばれる、パールマンに触発されたオリジナルのスパニングツリープロトコルは標準規格ではなく、メッセージ形式やタイマー設定が IEEE バージョンとは異なります。一部のブリッジは、IEEE および DEC バージョンの両方のスパニングツリープロトコルを実装していますが、それらの相互運用はネットワーク管理者にとって問題を引き起こす可能性があります。[ 16 ]
標準規格の異なる実装は、例えばデフォルトのタイマー設定の違いなどにより、相互運用が保証されるわけではありません。IEEEは、ベンダーに対し、どの機能とオプションが実装されているかを宣言するプロトコル実装適合性ステートメント[ 15 ]を提供することを推奨しており、これにより、異なる実装が正しく相互運用されるかどうかをユーザーが判断できるようになります。
2001年、IEEEはIEEE 802.1wとしてRapid Spanning Tree Protocol(RSTP)を導入しました。その後、RSTPはIEEE 802.1D-2004に組み込まれ、元のSTP標準は廃止されました。[ 17 ] RSTPは標準STPとの下位互換性を持つように設計されました。
RSTP は、トポロジ変更後のスパニングツリーの収束を大幅に高速化し、これを実現するために新しい収束動作とブリッジポートの役割を導入します。STP はトポロジ変更への応答に 30 ~ 50 秒かかることがありますが、RSTP は通常、3 × hello 時間(デフォルト: 3 × 2 秒) 以内、または物理リンク障害から数ミリ秒以内に変更に応答できます。hello 時間は、RSTP がいくつかの目的で使用する重要な設定可能な時間間隔であり、デフォルト値は 2 秒です。[ 18 ] [ 19 ]
RSTPは、リンク障害発生後の収束を高速化するために、新しいブリッジポートの役割を追加します。
スイッチポートが取り得る状態の数は、STPの元の5つから3つに減らされました。
RSTPの運用詳細:
STPとRSTPはスイッチポートをVLANごとに分離しません。[ 20 ]ただし、複数のVLANが存在するイーサネットスイッチ環境では、異なるVLANのトラフィックが異なるリンクを使用するように、複数のスパニングツリーを作成することが望ましい場合がよくあります。
IEEEがVLAN用のスパニングツリープロトコル標準を公開する前は、VLAN対応スイッチを販売していた多くのベンダーが、VLAN対応の独自のスパニングツリープロトコルバージョンを開発していました。シスコは、PVST ( Per-VLAN Spanning Tree )は、 VLANカプセル化に独自のスイッチ間リンク(ISL) を使用する独自のプロトコルであり、PVST+ は802.1Q VLAN カプセル化を使用します。どちらの標準も、VLAN ごとに個別のスパニングツリーを実装します。Cisco スイッチは現在、一般的に PVST+ を実装しており、LAN 内の他のスイッチが同じ VLAN STP プロトコルを実装している場合にのみ、VLAN のスパニングツリーを実装できます。HP は、一部のネットワークスイッチで PVST と PVST+ の互換性を提供しています。[ 20 ] Force10 Networks、Alcatel-Lucent、Extreme Networks、Avaya、Brocade Communications Systems、BLADE Network Technologiesの一部のデバイスはPVST+ をサポートしています。[ 21 ] [ 22 ] [ 23 ] Extreme Networks は、VLAN がタグなし/ネイティブであるポートと、ID 1 の VLAN でのサポートがないという 2 つの制限付きでこれを行っています。PVST+ は MSTP リージョンを横断してトンネルできます。[ 24 ]
スイッチベンダーのジュニパーネットワークスは、シスコのPVSTとの互換性を提供するためにVLANスパニングツリープロトコル(VSTP)を開発・実装し、両ベンダーのスイッチを1つのLANに含めることができるようにしました。[ 20 ] VSTPプロトコルは、ジュニパーネットワークスのEXシリーズとMXシリーズのみでサポートされています。VSTPの互換性には2つの制限があります。
デフォルトでは、VSTP はコア スパニング ツリー プロトコルとして RSTP プロトコルを使用しますが、ネットワークに古いブリッジが含まれている場合は STP の使用を強制できます。[ 26 ] Juniper Networks スイッチでの VSTP の設定に関する詳細情報は、公式ドキュメントに掲載されています。[ 27 ]
Cisco は Rapid Spanning Tree Protocol の独自バージョンも公開しました。これは PVST と同様に、VLAN ごとにスパニングツリーを作成します。Cisco はこれを次のように呼んでいます。高速VLANスパニングツリー(RPVST)。
マルチプルスパニングツリープロトコル(MSTP)は、元々はIEEE 802.1s -2002で定義され、後にIEEE 802.1Q -2005に統合されたもので、VLANの有用性をさらに高めるためにRSTPを拡張したものです。
標準では、1 つ以上の VLAN をマッピングするスパニング ツリーは、マルチプル スパニング ツリー(MST) と呼ばれます。MSTP では、スパニング ツリーは個々の VLAN または VLAN のグループに対して定義できます。さらに、管理者はスパニング ツリー内で代替パスを定義できます。スイッチは最初に MST 領域に割り当てられ、次に VLAN がこの MST にマッピングまたは割り当てられます。共通スパニング ツリー(CST) は、複数の VLAN がマッピングされる MST です。この VLAN のグループは、MST インスタンス(MSTI) と呼ばれます。CST は、STP および RSTP 標準との下位互換性があります。 1 つの VLAN のみが割り当てられている MST は、内部スパニング ツリー(IST) です。[ 20 ]
一部の独自のVLANごとのスパニングツリー実装とは異なり、[ 28 ] MSTPはすべてのスパニングツリー情報を単一のBPDUフォーマットに含めます。これにより、各VLANのスパニングツリー情報を伝達するために必要なBPDUの数が削減されるだけでなく、RSTPおよび事実上従来のSTPとの下位互換性も確保されます。MSTPは、標準のRSTP BPDUの後に情報の追加領域と多数のMSTIメッセージ(0~64インスタンスですが、実際には多くのブリッジはより少ないインスタンスをサポートしています)をエンコードすることでこれを実現します。これらのMSTI構成メッセージはそれぞれ、各インスタンスのスパニングツリー情報を伝達します。各インスタンスには、構成済みのVLANを割り当てることができ、これらのVLANに割り当てられたフレームは、MST領域内にあるときはいつでもこのスパニングツリーインスタンスで動作します。各BPDUでVLANからスパニングツリーへのマッピング全体を伝達することを避けるため、ブリッジはVLANのMD5ダイジェストをMSTP BPDUのインスタンステーブルにエンコードします。このダイジェストは、他のMSTPブリッジによって、他の管理設定値とともに使用され、隣接するブリッジが自身と同じMSTリージョンにあるかどうかを判断するために使用されます。
MSTP は RSTP ブリッジと完全に互換性があり、MSTP BPDU は RSTP BPDU として RSTP ブリッジで解釈できます。これにより、設定変更なしで RSTP ブリッジとの互換性が確保されるだけでなく、MSTP 領域外の RSTP ブリッジは、領域内の MSTP ブリッジの数に関係なく、その領域を単一の RSTP ブリッジとして認識します。MSTP 領域を単一の RSTP ブリッジとして認識しやすくするために、MSTP プロトコルでは、RSTP で使用されるメッセージ経過時間タイマーの代わりに、残りのホップ数と呼ばれる変数をタイム トゥ ライブ カウンターとして使用します。メッセージ経過時間は、スパニング ツリー情報が MST 領域に入ったときに一度だけインクリメントされるため、RSTP ブリッジは、その領域をスパニング ツリー内の 1 つのホップとしてのみ認識します。RSTP または STP ブリッジ、あるいはエンドポイントに接続されている MSTP 領域の端にあるポートは、境界ポートと呼ばれます。 RSTPと同様に、これらのポートはエッジポートとして構成することができ、エンドポイントに接続された際に転送状態を迅速に変更することを容易にします。
IEEE 802.1aq(最短経路ブリッジング(SPB)とも呼ばれる)は、スイッチ間の冗長リンクを複数の等コストパスでアクティブにすることができ、より大規模なレイヤ2トポロジ、より高速な収束、およびメッシュネットワーク上のすべてのパスでトラフィックの負荷共有を可能にすることで、すべてのデバイス間の帯域幅の増加によるメッシュトポロジの使用の改善を実現します。[ 29 ] [ 30 ] SPBは、スパニングツリープロトコル(STP)、マルチプルスパニングツリープロトコル(MSTP)、ラピッドスパニングツリープロトコル(RSTP)、リンクアグリゲーション、マルチプルMAC登録プロトコル(MMRP)など、複数の既存の機能を1つのリンクステートプロトコルに統合します。[ 31 ]
ブリッジ ID (BID) は BPDU パケット内のフィールドです。長さは 8 バイトです。最初の 2 バイトはブリッジ優先度で、0 ~ 65,535 の符号なし整数です。最後の 6 バイトはブリッジによって提供されるMAC アドレスです。IEEE 802.1D-2004 より前は、最初の 2 バイトで 16 ビットのブリッジ優先度が与えられていました。IEEE 802.1D-2004 以降は、最初の 4 ビットが設定可能な優先度で、最後の 12 ビットがブリッジ システム ID 拡張を格納します。MST の場合、ブリッジ システム ID 拡張には MSTP インスタンス番号が格納されます。一部のベンダーは、ブリッジ システム ID 拡張に VLAN ID を格納し、Cisco のPVSTのように VLAN ごとに異なるスパニング ツリーを使用できるようにしています。
スパニングツリーは、収束に時間がかかる古いプロトコルです。不適切な使用や実装は、ネットワーク障害の原因となる可能性があります。リンクのブロッキングは、高可用性を実現し、ループを防止するための粗雑な手法です。現代のネットワークでは、論理的または物理的なトポロジーのループの自然な動作を抑制、制御、または抑制するプロトコルを使用することで、接続されているすべてのリンクを活用できます。
より新しく、より堅牢なプロトコルには、同じくパールマンによって作成されたTRILL (Transparent Interconnection of Lots of Links)プロトコル[ 32 ]やIEEEのShortest Path Bridgingなどがあります。
ネットワーク機器間の接続をレイヤ3 IPリンクとして構成し、IPルーティングを利用して冗長性を確保し、ループを防止する方法は、一般的な代替手段である。
Cisco Virtual Switching SystemやVirtual PortChannel、HP Intelligent Resilient Frameworkといったスイッチ仮想化技術は、複数のスイッチを単一の論理エンティティに統合します。このようなマルチシャーシ・リンクアグリゲーション・グループは、通常のポートトランクと同様に機能しますが、複数のスイッチを介して分散されます。一方、パーティショニング技術は、単一の物理シャーシを複数の論理エンティティに分割します。
ネットワークのエッジでは、ユーザーによる意図しないループを防止するために、ループ検出機能が構成されています。
{{cite book}}: CS1 maint: 複数の名前: 著者リスト (リンク)オリジナルのスパニングツリープロトコル(STP)はIEEE Std 802.1Dの2004年改訂版から削除されたため、IEEE Std 802.1Dの現行改訂版を参照するIEEE Std 802.1Q-2003の実装の適合性を主張するには、RSTPの実装が必要です。
最短経路ブリッジングがイーサネットファブリックのスパニングツリーに取って代わる。