スパニングツリー(STP)は、スイッチの一部のポートをブロックして、ループのないトポロジを作ります。どのポートをブロックするかは、ルートブリッジ、ルートポート、指定ポートという順番で決まっていきます。
この記事では、3台のスイッチを三角形につないだ構成を例に、これらの用語と決まり方の基本を説明します。スパニングツリーが必要な理由は、【初心者わかりやすく】スパニングツリーを理解する第1歩 もあわせて参照してください。
- BPDU とブリッジ ID(優先度+MAC アドレス)
- ルートブリッジ、ルートポート、指定ポートの決まり方
- どのポートがブロッキングになり、ループを防ぐのか
BPDU(Bridge Protocol Data Unit)
3台のスイッチが次の図のように三角形につながり、ループができています。これらのスイッチでスパニングツリーを有効にすると、スイッチどうしで BPDU(Bridge Protocol Data Unit)というフレームをやり取りします。
BPDU には、送信元のスイッチのブリッジ ID、ルートブリッジだと考えているスイッチのブリッジ ID、ルートブリッジまでのパスコストなどが入っています。スイッチは BPDU を比べ合って、ルートブリッジや各ポートの役割を決めます。
ブリッジ ID は、ブリッジ優先度と MAC アドレスを並べた値です。優先度の既定値は 32768 で、0〜61440 の範囲で 4096 の倍数(0、4096、8192 … 61440)に設定できます。
Cisco の PVST+ では、優先度の下位の部分に VLAN 番号(拡張システム ID)が入ります。そのため、VLAN 1 では優先度が 32768+1=32769 のように表示されます。優先度を 4096 の倍数でしか設定できないのはこのためです。
ルートブリッジの選定
スパニングツリーでは、まずルートブリッジを1台選びます。ブリッジ ID が最も小さいスイッチがルートブリッジになります。比べるときは、まず優先度を比べ、同じなら MAC アドレスの小さい方が選ばれます。
この構成のブリッジ ID は次のとおりです(ここでは表記上、優先度と MAC アドレスを「:」で区切って並べます)。
| スイッチ | 優先度 | MAC アドレス | ブリッジ ID |
|---|---|---|---|
| SW1 | 32768 | 0000.0000.0001 | 32768:0000.0000.0001(最小) |
| SW2 | 32768 | 0000.0000.0002 | 32768:0000.0000.0002 |
| SW3 | 32768 | 0000.0000.0003 | 32768:0000.0000.0003 |
優先度はどれも 32768 で同じなので、MAC アドレスで比べます。ブリッジ ID が最も小さいのは SW1(32768:0000.0000.0001)なので、SW1 がルートブリッジになります。
優先度を既定値のままにすると、MAC アドレスが一番小さいスイッチがルートブリッジになります。実際のネットワークでは、ルートブリッジにしたいコアスイッチの優先度を小さくして、意図したスイッチがルートブリッジになるようにします(Cisco では spanning-tree vlan 1 priority 4096 などで設定します)。
ルートポートとは
ルートポートは、そのスイッチからルートブリッジへ最も近いポートです。近い・遠いは、ルートブリッジまでのパスコストの合計で決まります。パスコストはリンクの帯域幅から決まる値で、帯域幅が広いほど小さくなります。
| 帯域幅 | パスコスト(IEEE 802.1D の値) |
|---|---|
| 10 Mbps | 100 |
| 100 Mbps | 19 |
| 1 Gbps | 4 |
| 10 Gbps | 2 |
ルートポートは、ルートブリッジ以外の各スイッチに必ず1つだけあります。ルートブリッジ自身にはルートポートはありません。この記事では、ルートポートを RP と書きます。
指定ポートとは
指定ポートは、スイッチ間のリンクごとに、ルートブリッジへ最も近い側のポートです。リンクの上に端末を置いたとき、どちらのスイッチを通った方がルートブリッジに近いかを考えるとわかりやすくなります。指定ポートは、各リンクに必ず1つだけあります。この記事では、指定ポートを DP と書きます。
構成例
図1の構成で、すべてのリンクの帯域幅が同じ(パスコストが同じ)という前提で、ルートポートと指定ポートを決めていきます。
ルートポートを決める
SW2 と SW3 は、それぞれ SW1 へ直接つながるポートが、ルートブリッジまでのコストが最も小さいポートです(リンク1本分)。SW2 や SW3 を経由すると2本分になるので、SW1 に直接つながるポートがルートポートになります。ルートブリッジの SW1 にはルートポートはありません。
指定ポートを決める
SW1〜SW2 間と SW1〜SW3 間のリンクに端末があるとして、どちらのスイッチを通った方がルートブリッジに近いかを考えます。これは当然、ルートブリッジ自身のポートです。そのため、ルートブリッジのポートはすべて指定ポートになります。
では、SW2〜SW3 間のリンクはどうでしょうか。リンクの上に端末を置いても、左右対称なので、SW2 と SW3 のどちらを通ってもルートブリッジまでのコストは同じです。この場合は、ブリッジ ID の小さいスイッチを優先します。SW2 の方がブリッジ ID が小さいので、SW2 側のポートが指定ポートになります。
| 順番 | ルートポートの決め方 | 指定ポートの決め方 |
|---|---|---|
| 1 | ルートブリッジまでのパスコストが小さいポート | ルートブリッジまでのパスコストが小さい側のポート |
| 2 | BPDU を送ってきた隣のスイッチのブリッジ ID が小さいポート | ブリッジ ID が小さいスイッチのポート |
| 3 | 隣のスイッチのポート ID が小さいポート | ポート ID が小さいポート |
残ったポートをブロックする
ルートポートにも指定ポートにもならなかったポートは、ブロッキングポートになり、データの転送を止めます。この記事では BLK と書きます。この構成では、SW3 の SW2 側のポートがブロッキングポートになり、三角形のループが切れます。
ブロッキングポートも BPDU の受信は続けています。ほかのリンクが切れて BPDU が届かなくなると、ブロッキングポートが転送を始め、通信を続けられるようにします。
まとめ
| 役割 | 決まり方 | この構成 |
|---|---|---|
| ルートブリッジ | ブリッジ ID(優先度+MAC アドレス)が最も小さいスイッチ | SW1 |
| ルートポート(RP) | ルートブリッジ以外の各スイッチで、ルートブリッジに最も近いポート(1つ) | SW2、SW3 の SW1 側 |
| 指定ポート(DP) | 各リンクで、ルートブリッジに近い側のポート(1つ)。ルートブリッジのポートはすべて指定ポート | SW1 の2ポート、SW2 の SW3 側 |
| ブロッキングポート(BLK) | ルートポートにも指定ポートにもならなかったポート | SW3 の SW2 側 |
コメント
指定ポートの説明がすごく分かりやすかったです。