STP・スパニングツリープロトコルとは
ネットワークを構成する上で、冗長性を確保するために、ネットワークをループ(円環)状にする場合があります。 しかし、このような構成では、ブロードキャストをはじめ、ありとあらゆる通信データが、構成されたネットワーク上を永遠に循環することになります。
レイヤ2ヘッダには、TTL(Time To Live)値は、ありません。そのために、永遠にループし続けることになります。その結果、スイッチのCPU負荷が上がってしまい、スイッチの処理能力が限界を超えてしまい、最悪の場合、暴走してしまうかもしれませんし、ネットワークの帯域幅を浪費して、ネットワークがダウンしてしまいます。

この循環を防ぐために、スパニングツリープロトコル(STP)があります。もちろん、Cisco Catalyst スイッチでも使用できます。スパニングツリープロトコル(以下、STP)は、IEEE 802.1Dとして標準化されています。
STP は、与えられた優先順位を元に、ブリッジ間でBPDU(Bridge Protocol Data Unit)と呼ばれる制御情報をやり取りして、ブロックするポートとフォワードするポートを決定します。
このようにして、任意のポートをブロック状態にして、受信したデータフレームを破棄することで、物理的にループを構成にしているネットワークであっても、データフレームがループの中をいつまでも巡り続ける事態を防ぐことができます。
STP は、障害時に迂回経路が確保できるという利点があるため、大規模なネットワークには欠かせない、プロトコルなのです。
さて、その STP ですが、STP には、IEEE802.1D と IEEE802.1w という複数の種類が存在します。現在、主流になっているのは、IEEE802.1W で、通称、RSTP(ラピッドスパニングツリープロトコル)と呼ばれています。
STPでは、下のように5つの状態を移行するので、最大で50秒(20秒+15秒+15秒)の通信断が発生します。
・Disabled(無効)
↓(ポートは管理上シャットダウンされています)
・Blocking
↓(最大経過時間20秒)
・Listening
↓(転送遅延15秒)
・Learning
↓(転送遅延15秒)
・Forwarding
その間、通信ができない状態になりますので、ミッションクリティカルな環境において、あまり向いているとは言えません。そこで、このSTPの弱点を克服するべく、RSTPというプロトコルが開発されています。
RSTPを使用すれば、スパニングツリーの再計算が1秒程度となり、非常に高速になります。RSTP は、STP(IEEE802.1D)とは互換性があるため、STP と混在の環境でも動作が可能です。
BID
ここからは、IEEE802.1D(STP)について解説していきます。
STPの動作ですが、電源を入れると、BPDUが、ブリッジID(BID)と共に送信され、まずは、ルートブリッジの選出が行われます。Cisco機器では、デフォルトで送信間隔が2秒になっています。

ルートブリッジの決定と各種ポートの選出
STPでは、以下の選出が行われます。
- ネットワークごとに1つのルートブリッジ
- ルートブリッジ以外のスイッチごとに1つのルートポート
- セグメントごとに1つの代表(指定)ポート
- ブロックするポートの決定
ルートポートと代表ポートは、データトラフィックの転送に使用されます。ブロッキングポートでは、BPDUの受信だけが行なわれ、データフレームは破棄され、アドレスは学習されないようになります。
STPのポート役割
英語表記 | 日本語 |
---|---|
Root Port | ルートポート |
Designated Port | 指定ポート |
Blocking Port | ブロッキングポート |
ルートブリッジの選出
全てのスイッチが、BPDUを受信と確認を行い、最終的に最小のBID値を持つブリッジがルートブリッジとして選出されます。
ルートポート(Root Port)の選出
ルートスイッチでない各スイッチごとに、1つのポートをルートポートとして選出します。ルートブリッジへの最小のコストを持つパスが最適パスを提供するルートポートになります。
代表(指定)ポート(Designated Port)の選出
スパニングツリーに参加するポートを選択する。 ここでも、ルートブリッジへの最小のコストを持つパスが最適パスを提供する代表(指定)ポートになります。ルートブリッジ上のポートは、全て代表(指定)ポートになります。
ブロッキングポートの決定
RP(Root Port)、DP(Designated Port)になれずに、残ったポートがブロッキングポートになります。
RP、DPの選出で行われる、パスコストの計算には、以下の値が使われます。
<ポートパスコスト値>
帯域幅 | 新コスト | 旧コスト |
10Mbps | 100 | 100 |
100Mbps | 19 | 10 |
1Gbps | 4 | 1 |
10Gbps | 2 | 1 |
新しい機器や古い機器での構成、また異機種間での構成では、新コスト、旧コストが入り混じってしまうため、各機器で、コストのカスタマイズが必要になる場合があります。
PVST+(Per VALN Spanning Tree Plus)
Catalystスイッチでは、デフォルトでPVST+が有効になっています。
PVST+(Per VALN Spanning Tree Plus)とは、VLAN単位でSTPを動作させるプロトコルで、VLANごとに異なるルートブリッジを設定することができます。ルートブリッジを複数のスイッチに分散させることで、ロードバランシングを実現できます。
前身となるPVSTでは、Cisco独自のISL(Inter-Switch Link)を用いるVLANしかサポートしていませんでした。また、複数のVLANが存在するスイッチドネットワークにおいて、1つのトポロジーを構成するCST(Common Spanning Tree)との互換性がありません。
そこで、PVST+という、標準規格のIEEE 802.1Qでも使用できるよう一部を改変したシスコ独自のプロトコルが開発されました。
PVST+のブリッジID
BID(ブリッジID)は、優先順位(ブリッジプライオリティ)とMACアドレスで構成されます。PVST+では、VLAN単位でSTPインスタンスを実行するため、プライオリティとして、先頭の4ビットのみを用い、残りの12ビットで、VLAN IDを含めるようにしています。
そのため、プライオリティの値は、先頭の4ビットで表現するため、0と4096の倍数で指定することになります。
デフォルトのPVST+のブリッジプライオリティは、「32768 + VLAN ID」となります。

プライオリティ値 | VLAN ID(拡張システムID) | ➡ | PVST+のブリッジID |
0001 | 000000000001 | ➡ | 4096+1=4097 |
0010 | 000000000001 | ➡ | 8192+1=8193 |
0011 | 000000000001 | ➡ | 12288+1=12289 |
Catalystスイッチでは、デフォルトでPVST+が有効になっており、「spanning-tree extend system-id」コマンドがデフォルトで設定されています。
PVST+は、ハイエンドの製品でしか無効にすることができないため、Catalyst2960では、「no spanning-tree extend system-id」コマンドを適用して、PVST+を無効にすることができないようになっています。
それでは、スパニングツリープロトコルの概要を把握したところで、実際にいくつか、スパニングツリープロトコルを用いたネットワークを構築して、スパニングツリープロトコルがどんなものか体験していきましょう。