STP(Spanning Tree Protocol)の役割
スイッチを複数台つないで冗長構成を組むと、ケーブルがループを形成してしまうことがあります。冗長構成は障害発生時のバックアップとして重要ですが、レイヤ2ネットワークにおいてループがあると、ブロードキャストフレームが延々と回り続け、ネットワークが麻痺する「ブロードキャストストーム」が発生してしまいます。
STP(Spanning Tree Protocol)は、このようなループによる障害を防ぐためのプロトコルです。STPはスイッチ間でやり取りされる情報を基に「あるポートをブロッキング状態にする」ことで、ループを論理的に排除します。そして、障害発生時には自動的にブロックしていたポートを有効化し、迂回経路を利用できるようにします。
つまり、STPは「普段はループを防止しつつ、障害時には自動でリカバリを行う仕組み」と考えると分かりやすいです。
BPDUとその役割
STPでスイッチ間の制御を行うために用いられるのが BPDU(Bridge Protocol Data Unit) です。BPDUは専用のマルチキャストアドレス(0180.C200.0000)宛に定期的に送信され、ルートブリッジの選出やポートの役割決定に利用されます。
BPDUには以下のような主要フィールドがあります。
| フィールド | 説明 | サイズ |
|---|---|---|
| Protocol ID | 常に0 | 2byte |
| Version | STPバージョン(802.1Dなら0) | 1byte |
| Message Type | BPDUの種類(通常: 0x00、TC通知: 0x80) | 1byte |
| Flags | トポロジ変更通知や応答を示す | 1byte |
| Root ID | ルートブリッジのブリッジID | 8byte |
| Path Cost | ルートに至る累積コスト | 4byte |
| Bridge ID | 自スイッチのブリッジID | 8byte |
| Port ID | ポート番号と優先度 | 2byte |
| Message Age | BPDU生成からの経過時間(実質ホップ数) | 2byte |
| Max Age | BPDU保持時間(デフォルト20秒) | 2byte |
| Hello Time | BPDU送信間隔(デフォルト2秒) | 2byte |
| Forward Delay | Listening/Learning状態にとどまる時間(デフォルト15秒) | 2byte |
この中で特に重要なのが Root ID(ルートブリッジの決定) と Path Cost(ルートまでの距離) です。
ブリッジIDとルートブリッジ選出
各スイッチは ブリッジID を持っており、これは「ブリッジプライオリティ(2byte)」+「MACアドレス(6byte)」で構成されます。
STPでは、このブリッジIDが最も小さいスイッチが「ルートブリッジ」として選ばれます。つまり、ブリッジプライオリティが最優先で比較され、同じであればMACアドレスの数値が小さい方が勝ちます。
パスコストと経路選択
ルートブリッジが決まった後、各スイッチはルートに至る最適経路を決定します。その基準となるのが パスコスト です。パスコストはリンク帯域幅に基づいて計算され、値が小さいほど「良い経路」と判断されます。
従来は「コスト=1000 ÷ 帯域幅(Mbps)」で算出していましたが、1Gbpsと10Gbpsが同じ値になってしまうため、現在はIEEEで改定された以下の表が使われます。
| 帯域幅 | コスト(改定後) | コスト(改定前) |
|---|---|---|
| 10Gbps | 2 | 1 |
| 1Gbps | 4 | 1 |
| 100Mbps | 19 | 10 |
| 10Mbps | 100 | 100 |
スパニングツリープロトコル(STP)の基本動作
スパニングツリーは、スイッチ同士がループ状に接続されてしまうと発生するブロードキャストストームを防ぐための仕組みです。ループを完全に切り離すのではなく、あくまで「論理的にツリー構造」に変えて、通信が循環しないように制御します。そのために、STPは決まった手順でポートの役割を選んでいきます。試験でも頻出の分野なので、動作の流れをきちんと理解することが大切です。
ルートブリッジの選出
最初のステップはネットワーク全体の中心となる「ルートブリッジ」を決めることです。ルートブリッジは一種の基準点で、他のスイッチが自分との距離を測る目印になります。
各スイッチは定期的にBPDUという制御フレームを送り合います。その中には「ブリッジID」という識別番号が含まれています。ブリッジIDは「ブリッジプライオリティ(優先度)」と「MACアドレス」を組み合わせたもので、数値として最も小さいスイッチがルートブリッジになります。
もしプライオリティが同じなら、MACアドレスの値が小さい方が選ばれます。言い換えると「一番優先度が高く、かつ古株っぽいスイッチ」がルートになります。
ルートポート(RP)の選出
ルートブリッジが決まったら、次に各スイッチは「ルートブリッジに一番近いポート」を探します。これがルートポートです。非ルートブリッジごとに1つだけ選ばれるのが特徴です。
「一番近い」とは物理的な距離ではなく、帯域幅ごとに決まっているパスコストの合計が最も小さいことを意味します。例えば1Gbpsのリンクならコストは4、100Mbpsなら19といった具合です。つまり太い道ほど安いコストで目的地に行ける、というイメージです。
もし同じパスコストで競り合った場合は、①送信元ブリッジID、②送信元ポートID の順に比較して決めます。この順位付けは試験に出やすい部分なので押さえておきましょう。
指定ポート(DP)の選出
ルートポートが決まったら、次は「各リンクでルートブリッジに一番近い側のポート」を指定ポートとします。指定ポートは1つのリンクにつき必ず1つだけ選ばれます。
ルートブリッジにあるポートはすべて指定ポートになるのがルールです。それ以外のリンクでは、まずルートパスコストを比較し、同じならブリッジID、それでも同じならポートIDで決定します。
ここで大事なのは「ルートポートは受信側、指定ポートは送信側」という役割分担です。試験問題では「どちらのポートがBPDUを送り出すのか?」という観点で問われることがあります。
非指定ポート(NDP)の選出
最後に残ったポートはすべて非指定ポートとなり、ブロッキング状態に入ります。ここでは通常のデータフレームは流れず、BPDUの受信だけを続けます。これによりループを未然に防ぐのです。
つまりSTPでは、ルートポートと指定ポートだけが実際に通信を流し、非指定ポートはループを避けるための安全弁のような役割を果たします。
各ポートの役割まとめ
| ポートの種類 | 状態 | 選出基準と特徴 |
|---|---|---|
| ルートポート (RP) | Forwarding | 各非ルートブリッジで1つだけ選ばれる。ルートブリッジに最も近いポート。 |
| 指定ポート (DP) | Forwarding | 各リンクで1つだけ選ばれる。ルートブリッジの全ポートは必ず指定ポート。 |
| 非指定ポート (NDP) | Blocking | RPやDPに選ばれなかった残りのポート。データを流さずループを防ぐ。 |
STP決定の流れ
どんなネットワーク構成でも、STPの動きは次の順番で整理できます。
- ルートブリッジを決定(ブリッジIDが最小のスイッチ)
- ルートポートを決定(各非ルートブリッジごとに最小のパスコストを持つポート)
- 指定ポートを決定(各リンクごとにルートに最も近いポート)
- 非指定ポートを決定(残りのポート。ブロッキングでループを防ぐ)
覚えておきたいのは、「ルートポートはベストなBPDUを受信するポート」「指定ポートはベストなBPDUを送り出すポート」という考え方です。ここを理解していれば、試験でトポロジー図を見せられても落ち着いて判断できます。