スパニングツリー(STP)の基本・設定方法を解説

本記事ではスパニングツリープロトコル(STP)の基本動作について解説いたします。

スパニングツリープロトコルとは

スパニングツリープロトコル(Spanning Tree Protocol : STP)はリング状に形成されたレイヤー2ネットワークにおいて、ブロードキャストストームの発生を防止するL2技術です。

STPでは「BPDU(Bridge Protocol Data Unit)」という制御プロトコルにて隣接するL2機器の検出し、以下の図のようにスイッチのいづれかのポートをブロッキングポート(一時的に転送出来ない状態)にする事により、ブロードキャストストームの発生を防止します。
※もちろん、障害が発生した場合は自動でロッキングポートを解除する事が可能です。

スパニングツリーの必要性

【補足】BPDUとは

BPDUとはSTPが有効化されているL2機器同士でやりとりされる制御プロトコルであり、2秒毎にマルチキャストアドレス「01-80-c2-00-00-00」宛へ送出しております。BPDUにはSTPに関する情報(ブリッジID・パスコスト・各Timer値など)が格納されております。
詳細は次章以降で説明するのでこの時点では何となく「STP関連の情報をやりとりする際に利用される」と覚えておいて下さい!

では以下にて、具体的なSTPの動作について解説いたします。

スパニングツリープロトコルの動作内容

STPでは前述の通り、ブロードキャストストームの発生防止を実現する為にブロッキングポート(一時的に転送出来ない状態)にする必要がございます。
※「ブロッキングポートが出来る事 = 一時的に冗長構成ではなくなる」という意味になる為、例えばL2機器に障害が発生した際障害を検知しブロッキングポートを自動的に解除する必要がございます。

上記の点を踏まえて、STPでは障害を検知する為に代表となるスイッチ(ルートブリッジ)を選定し、ルートブリッジからBPDUを各スイッチへ流し込む事によりL2ネットワーク内の各L2機器やリンクの状態(トポロジー状態)を常に監視しております。

ポイント
ルートブリッジがRoot(親)となり、階層構造(ツリー構造)でSTPトポロジー全体を把握しているとイメージして頂ければと思います。

上記のような仕組みを実装する為に、STPではスパニングツリーアルゴリズム(STA)を用いて実現しており、以下の流れに沿って動作いたします。

▼スパニングツリーアルゴリズムの仕様(動作順序)はコチラ!▼

  1. ルートブリッジの選出
  2. ルートポートの選出
  3. 指定ポートの選出
  4. ブロッキングポートの選出

では、上記①〜④に関して詳細を解説いたします。

①ルートブリッジの選出

まず最初に実施する事はL2ネットワーク内で代表となるスイッチ(ルートブリッジ)を選定いたします。
ルートブリッジの選定基準はBPDUの中に含まれている「ブリッジID」の値が最小なスイッチがルートブリッジに選出されます。

【補足】ブリッジIDについて

ブリッジIDは8Byte(内訳: ブリッジプライオリティ[2byte]+Macアドレス[6byte])で構成されております。




>>参考記事: spanning-tree extend system-idとは?図解解説します!

上記を踏まえて、具体的な「ルートブリッジの選定基準」を以下にまとめました。

▼ルートブリッジの選定基準▼

  • ブリッジプライオリティの値が小さいスイッチ

    ブリッジプライオリティが最小のスイッチがルートブリッジに選定されます。また、ブリッジプライオリティのデフォルト値は32768であり、明示的にルートブリッジを定義する必要がある場合は以下のコマンドで設定変更する必要がございます。

  • ブリッジプライオリティの値が同じ場合は、MACアドレスが小さいスイッチ

ルートブリッジ

※実業務では保守運用面やトラブル発生時の対応を踏まえて、筆者としては明示的にブリッジプライオリティを設定する事を推奨いたします。

②ルートポートの選出

次に実施する事はルートポートの選出です。

ルートポート(Route Port : RP)とは受信ポート(BPDUの受信やユーザ通信の受信が可能なポート)です。ルートポートはルートブリッジ以外のスイッチにアサインされ、ルートブリッジに一番近いポート(ルートブリッジまでのパスコストが一番最小なポート)が選出されます。

【補足】パスコストとは

パスコストとはルートブリッジまでの距離を示したパラメータであり、帯域幅に基づきパスコストの値が確定します。
※広帯域のリンクである程パスコストの値が低くなり、ルートブリッジまでの距離も短いという事になります。

上記を踏まえて、具体的な「ルートポートの選出の選定基準」を以下にまとめました。

▼ルートポートの選定基準▼

  • ルートブリッジ迄のパスコストが最小のポート
  • ルートブリッジ迄のパスコストが同じ場合は、上流スイッチのブリッジIDが最小のポート
  • 上流スイッチのブリッジIDが同じ場合は、上流のPortID(port priority + port番号)が最小のポート

ルートポート

③指定ポートの選出

次に実施する事は指定ポートの選出です。

指定ポート(Designated Port : DP)とは送信ポート(BPDUの送信やユーザ通信の送信が可能なポート)です。※死活監視の為、BPDUの受信は実施します。
指定ポートはリンク毎に1ポート選出され、各リンクの中でルートブリッジに一番近いポート(ルートブリッジまでのパスコストが一番最小なポート)が選出されます。
上記を踏まえて、具体的な「指定ポートの選出の選定基準」を以下にまとめました。

▼指定ポートの選定基準▼

  • ルートブリッジ迄のパスコストが最小のポート
  • ルートブリッジ迄のパスコストが同じ場合は、ブリッジIDが小さいスイッチのポートを優先

指定ポート

④ブロッキングポートの選出

最後に実施する事はブロッキングポート(Non-Designated Port : NDP)の選出であり、ルートポート・指定ポートどちらにも選定されなかったポートがブロッキングポートになります。
ブロッキングポートとはBPDUの受信のみが可能なポートであり、データ通信の送受信は実施しません。

設定方法

STPの設定方法は以下の通りです。

STPの有効化・無効化設定

・全VLANのSTP有効化

【設定コマンド】
 SW(config)# spanning-tree mode pvst

・全VLANのSTP無効化

【設定コマンド】
 SW(config)# no spanning-tree mode pvst

・特定VLANのSTP有効化

【設定コマンド】
 SW(config)# spanning-tree vlan [vlan番号]
※VLAN5を有効化を場合
 SW(config)# spanning-tree vlan 5

・特定VLANのSTP無効化

【設定コマンド】
 SW(config)# no spanning-tree vlan [vlan番号]
※VLAN5を無効化を場合
 SW(config)# no spanning-tree vlan 5

ブリッジプライオリティの設定

【設定コマンド】
 SW(config)# spanning-tree vlan [vlan番号] priority [ブリッジプライオリティ]
※VLAN5のブリッジプライオリティを0にする場合
 SW(config)# spanning-tree vlan 5 priority 0

以下の記事にて、ルートブリッジの設定変更(ブリッジプライオリティの設定変更)に関する動作検証の結果を纏めております。ご興味のある方はぜひご覧ください。

パスコストの設定

【設定コマンド】
 SW(config)# interface [インターフェース名&番号]
 SW(config-if)# spanning-tree vlan [vlan番号] cost [コスト値]
※VLAN5のコスト値を0にする場合
 SW(config)# interface gigabitethernet1/0/1
 SW(config-if)# spanning-tree vlan 5 priority 1

以下の記事にて、指定ポートの設定変更に関する動作検証の結果を纏めております。ご興味のある方はぜひご覧ください。

ポートプライオリティの設定

【設定コマンド】
 SW(config)# interface [インターフェース名&番号]
 SW(config-if)# spanning-tree vlan [vlan番号] port-priority [ポートプライオリティ値]
※VLAN5のポートプライオリティ値を1にする場合
 SW(config)# interface gigabitethernet1/0/1
 SW(config-if)# spanning-tree vlan 5 port-priority 1

まとめ

いかがでしたでしょうか?

STPについて以下の点は理解しておきましょう!

▼STPの基本はコチラ!▼

  • STPはL2リンクの冗長化時にブロードキャストストームの発生を防止するプロトコル
  • STPはBPDUを用いてブロードキャストストームの発生を防止する
  • STPはブリッジIDを用いてルートブリッジを選出する
  • STPでは3つのポート種別(ルートポート・指定ポート・ブロッキングポート)がある
STPについて詳細を知りたい方はコチラ!
本記事の内容を理解された方は、以下の別記事にて「スパニングツリーの状態遷移やタイマー」について纏めておりますので、ご興味のある方はぜひご覧ください。