本記事ではスパニングツリープロトコル(STP)の基本動作について解説いたします。
スパニングツリープロトコル(Spanning tree)とは
スパニングツリープロトコル(Spanning Tree Protocol : STP)はリング状に形成されたレイヤー2ネットワークにおいて、ブロードキャストストームの発生を防止するL2技術です。
STPでは「BPDU(Bridge Protocol Data Unit)」という制御プロトコルにて隣接するL2機器の検出し、以下の図のようにスイッチのいづれかのポートをブロッキングポート(一時的に転送出来ない状態)にする事により、ブロードキャストストームの発生を防止します。
※もちろん、障害が発生した場合は自動でロッキングポートを解除する事が可能です。
BPDUとはSTPが有効化されているL2機器同士でやりとりされる制御プロトコルであり、2秒毎にマルチキャストアドレス「01-80-c2-00-00-00」宛へ送出しております。BPDUにはSTPに関する情報(ブリッジID・パスコスト・各Timer値など)が格納されております。
詳細は次章以降で説明するのでこの時点では何となく「STP関連の情報をやりとりする際に利用される」と覚えておいて下さい!
では事象では、具体的なSTPの動作について解説いたします。
Spanning treeの動作内容
STPでは前述の通り、ブロードキャストストームの発生防止を実現する為に、いずれかのポートをブロッキングポート(一時的に転送出来ないポート状態)にする必要がございます。
つまり、「ブロッキングポートが出来る事 = 一時的に冗長構成ではなくなる」という事になります。
その為、L2機器に障害が発生した場合は、その障害を検知しブロッキングポートを自動的に解除する仕組みが必要になります。
STPではL2ネットワーク内の障害を検知する為に代表となるスイッチ(ルートブリッジ)を選定し、ルートブリッジからBPDUという制御通信を各スイッチへ流し込む事により、L2ネットワーク内の各L2機器やリンクの状態(トポロジー状態)を監視しております。
ルートブリッジがRoot(親)となり、階層構造(ツリー構造)でSTPトポロジー全体を把握しているとイメージして頂ければと思います。
STPでは上記のような仕組みをスパニングツリーアルゴリズム(STA)にて実現しており、以下の流れに沿って動作いたします。
- ルートブリッジの選出
- ルートポートの選出
- 指定ポートの選出
- ブロッキングポートの選出
では、上記①〜④に関して詳細を紹介いたします。
①ルートブリッジの選出
まず最初に実施する事はL2ネットワーク内で代表となるスイッチ(ルートブリッジ)を選定いたします。
ルートブリッジの選定基準はBPDUの中に含まれている「ブリッジID」の値が最小なスイッチがルートブリッジに選出されます。
※ブリッジIDは8Byte(内訳: ブリッジプライオリティ[2byte]+Macアドレス[6byte])で構成されております。
具体的な「ルートブリッジの選定基準」を以下にまとめました。
- ブリッジプライオリティの値が小さいスイッチ
ブリッジプライオリティが最小のスイッチがルートブリッジに選定されます。また、ブリッジプライオリティのデフォルト値は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に関する幅広い知識を身に付けたい方はご覧下さい!
>>参考記事: 「STPの基本〜応用まで!STPの仕様と検証結果の記事をまとめました!」
では、次章ではSTPの基本設定についてご紹介します!
Spanning treeの設定方法
本章ではSTPの設定方法について紹介いたします!
Spanning tree の有効化・無効化設定
STPの有効化及び無効化設定は「spanning-tree modeコマンド」にて設定します。
詳細のコマンドは以下の通りです!
・全VLANのSTP有効化
全VLANにてSTPを有効化したい場合は「spanning-tree mode pvstコマンド」で設定します。
【設定コマンド】
SW(config)# spanning-tree mode pvst
・全VLANのSTP無効化
また、全VLANにてSTPを無効化したい場合は「no spanning-tree mode pvstコマンド」で設定します。
【設定コマンド】
SW(config)# no spanning-tree mode pvst
・特定VLANのSTP有効化
一部のVLANのみSTPを有効化したい場合は「spanning-tree vlan [vlan番号]コマンド」で設定します。
【設定コマンド】
SW(config)# spanning-tree vlan [vlan番号]
※VLAN5を有効化を場合
SW(config)# spanning-tree vlan 5
・特定VLANのSTP無効化
また、一部のVLANのみSTPを無効化したい場合は「no spanning-tree vlan [vlan番号]コマンド」で設定します。
【設定コマンド】
SW(config)# no spanning-tree vlan [vlan番号]
※VLAN5を無効化を場合
SW(config)# no spanning-tree vlan 5
Spanning tree priority ブリッジプライオリティの設定
STPのブリッジプライオリティを設定する場合は「spanning-tree vlan [vlan番号] priority [ブリッジプライオリティ]」にて設定します。
詳細のコマンドは以下の通りです!
【設定コマンド】
SW(config)# spanning-tree vlan [vlan番号] priority [ブリッジプライオリティ]
※VLAN5のブリッジプライオリティを0にする場合
SW(config)# spanning-tree vlan 5 priority 0
以下の記事にて、ルートブリッジの設定変更(ブリッジプライオリティの設定変更)に関する動作検証の結果を纏めております。
ご興味のある方はぜひご覧ください。
>>参考記事: 「【検証結果】ルートブリッジの設定変更や正常性確認方法を纏めました!」
Spanning tree cost パスコストの設定
パスコストを設定する場合は「spanning-tree vlan [vlan番号] cost [コスト値]」にて設定します。
詳細は以下の通りです。
【設定コマンド】
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
以下の記事にて、指定ポートの設定変更に関する動作検証の結果を纏めております。ご興味のある方はぜひご覧ください。
>>参考記事: 「【検証結果】指定ポートの設定変更や正常性確認方法を纏めました!」
Spanning tree port-priority ポートプライオリティの設定
ポートプライオリティを設定する場合は「spanning-tree vlan [vlan番号] port-priority [ポートプライオリティ値]」にて設定します。
詳細は以下の通りです。
【設定コマンド】
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
Spanning treeのまとめ
最後までお読み頂きましてありがとうございます。
本記事で内容を纏めましたので再度復習してみて下さいね!
- STPはL2リンクの冗長化時にブロードキャストストームの発生を防止するプロトコル
- STPはBPDUを用いてブロードキャストストームの発生を防止する
- STPはブリッジIDを用いてルートブリッジを選出する
- STPでは3つのポート種別(ルートポート・指定ポート・ブロッキングポート)がある