CiscoスイッチにはSTP(Spanning-Tree Protocol)という機能によりループを防止するためのプロトコルがあります。うまく設定することでループを防止しつつ障害時の迂回経路を設計することができます。ここではSTPの基本設定を事前検討から設定完了後の動作確認まで行います。
STP 設定の目的
STP(スパニングツリープロトコル) を利用すると、複数の L2 スイッチで冗長構成をつくり、ループになった構成上でブロードキャストストームを防止しながら、障害時の迂回経路を確保することができます。
ループ構成上で STP が有効になっていると、スイッチ同士が情報を連携し合い優先順位に利用する値や MAC アドレス、ポート速度などをもとにループを防止するポイントが自動で計算されて決まります。
このように STP を有効にしているだけでも、ループは防止できますが、優先順位に利用する設定値を変更することでデータをブロックするポイントやデータの流れを考慮した設計が可能になります。
STP の基本設定で事前に検討すること
STP を設定する上で意識する必要のある重要な点は、主に以下の2点です。
① ルートスイッチの決定
② ブロッキングポートの位置
①のどのスイッチをルートスイッチに決定するかは最も重要な設定になります。接続されたすべてのスイッチはルートスイッチの位置を基準に計算されて自身の各種ステータスが決定されることになります。
一般的にエンド機器が接続されるスイッチに対してデータが流れてくる上流側のスイッチをルートスイッチに設定します。
また、ルートスイッチの障害時に役割を引き継ぐセカンダリルートスイッチも決めておきます。
②のブロッキングポートの位置は、ルートスイッチを基準に自動的に設定されますが、効率的なデータの流れを確保するために調整が必要な場合があります。
STP の基本設定
以下のサンプル構成を参考に、SwitchA~Cの3台のスイッチをループ状に接続して、VLAN1に対してプライオリティ値で優先順位をつけることで、ルートスイッチおよびセカンダリルートスイッチを設定する。

STP モードの設定。 ※デフォルトでPVST+が有効。

コマンド実行例: PVST+ モードに設定します。 ※デフォルトで有効。
SwitchB (config)# spanning-tree mode pvst
STP の有効化設定。 ※デフォルトで有効。

コマンド実行例:VLAN1のSTPを有効にします。※デフォルトで有効。
(config)# spanning-tree 1
コマンド実行例:あえて無効にする場合 no を最初に入力
(config)# no spanning-tree 1
ブリッジプライオリティの設定
スイッチAとスイッチBに対してプライオリティ値を設定します。


VLANごとに最小のブリッジIDを持ったスイッチがルートスイッチになります。ブリッジIDは、以下で設定するプライオリティ値とMACアドレスの組み合わせとなります。プライオリティ値が同じ場合はMACアドレスが最小のスイッチがルートスイッチに選出されます。
コマンド実行例: SwitchAへプライオリティ値4096を設定
SwitchA# configure terminal
SwitchA(config)# spanning-tree vlan 1 priority 4096
SwitchA(config)#
※プライオリティ値の設定値をミスした場合、以下のように有効な値を設定するよう求められます。
SwitchA(config)# spanning-tree vlan 1 priority 10
% Bridge Priority must be in increments of 4096.
% Allowed values are:
0 4096 8192 12288 16384 20480 24576 28672
32768 36864 40960 45056 49152 53248 57344 61440
ルートスイッチの障害時に役割を引き継ぐセカンダリルートスイッチを設定します。
コマンド実行例: SwitchBへプライオリティ値8192を設定
SwitchB# configure terminal
SwitchB(config)# spanning-tree vlan 1 priority 8192
SwitchB(config)#
STP設定完了後のブロッキングポートの位置
設定が完了し、ルートスイッチが決定されると各スイッチでSTPの計算によりルートポートや指定ポート、非指定ポートは以下の図のように決定され最終的にプロッキングポートの位置が確定します。

RP(Root Port)=ルートポート
DP(Designated Port)=指定ポート
NDP (Non Designated Port) =非指定ポート ,ブロッキングポート
SwitchAがルートスイッチのこの構成では、すべてのリンクで 1Gbps を使用しているため、SwitchB と SwitchC のルートポート(RP)はパスコストが最も低くなるルートスイッチと直接接続するポートになります。
SwitchAはルートスイッチなので、すべてのポートが指定ポート(DP)となります。
SwitchB と SwtichC はどちらもルートスイッチまでの距離(パスコスト)が等しいので、プライオリティ値の低い(優先順位が高い) SwitchB側のポートが指定ポート(DP)となり、SwitchC 側のポートが非指定ポート(NDP)となりブロッキング状態となります。
STP ステータスの確認
以下の接続インターフェイスの情報を追記したものを参考にステータスを確認します。


コマンド実行例:

Root ID ではルートスイッチの各情報が表示されていて、プライオリティ値や MAC アドレスなどが確認できます。
プライオリティ値は、設定した値(4096)と VLAN ID(1)を足した値になります。
SwitchA は、自身がルートスイッチなので、「This bridge is the root」と表示されます。
その他、各種タイマー(Hello Time, Max Age, Forward Delay)の設定が確認できますが、この例ではデフォルトの設定値になります。
Bridge ID では自身の情報が確認できます。自身がルートスイッチなので上の情報と同じになります。
つづくInterfaceの項目では、STPに参加している自身のインターフェイスのスパニングツリーステータスが確認できます。上の結果では、
Gi1/0/1, Gi1/0/2 ともに、指定ポート(Desg)として動作しており、 Forwarding (FWD) のステータスになっていることなどがわかります。
続いて SwitchB と SwitchC を順に確認します。
コマンド実行例:


SwitchCではGi0/2のステータスがBLK(Blocking)されていていることがわかります。
冗長経路の切り替わり動作
STP は利用している経路に障害があれば検知して再計算された結果、冗長経路として存在しているブロッキングポートを自動で開放して転送可能な状態にします。たとえば、以下のようなリンク障害の場合、ループ構成はなくなるので、ブロッキングポートはリスニングとラーニングのステータスを経由して約30秒でフォワーディング(FWD)状態になり使用できるようになります。

上記の個所がリンクダウンした場合、STP のステータスは以下のようになります。
SwitchAでは、リンクダウンしたGi1/0/1がなくなっています。

SwitchBでは、特にステータスに変化はありません。

SwitchCでは、リンクダウンしたGi1/0/1がなくなり、Gi1/0/2 がブロッキング(BLK)からフォワーディング(FWD)に切り替わりました。

参考リンク
STP(スパニングツリープロトコル) 拡張機能と設定 – Cisco スイッチ
STP(Spanning Tree Protocol)とは – 概要と仕組み
コメント