2026年6月4日
2026年6月4日
Spanning Tree の設定手順|ルートブリッジの指定・PortFast・BPDU Guardとループ時の確認方法
Spanning Tree Protocol(STP)は、スイッチを冗長に配線したときに生じるループを防ぐための仕組みです。この記事では、STP の動作を設定に必要な範囲で押さえたうえで、ルートブリッジを意図したスイッチに固定する、サーバーをつなぐポートを素早く使えるようにする、誤接続からネットワークを守る、という 3 つの設定を順に説明します。例は Cisco IOS 系のコマンドと Linux ブリッジを使いますが、考え方はほかのメーカーでも共通です。
STP が必要になる理由
2 台のスイッチを 2 本のケーブルでつなぐなど、L2 ネットワークに輪(ループ)ができると、ブロードキャストのフレームが輪の中を回り続けます。L2 のフレームには IP パケットの TTL に当たる仕組みが無いため、フレームは増え続け、数秒でネットワーク全体が使えなくなります。これがブロードキャストストームです。
STP は、スイッチ同士が BPDU という制御フレームを交換し、ループの原因になるポートを自動的にブロック状態にします。普段は 1 本の経路だけを使い、その経路が切れたときにブロックしていたポートを開いて通信を続けます。
設定前に押さえておく用語
- ルートブリッジ: STP の木構造の根になるスイッチです。ブリッジ ID(優先度と MAC アドレスの組み合わせ)が最も小さいスイッチが選ばれます。優先度の既定値は 32768 で、4096 単位で設定します。
- ポートの役割: ルートブリッジへ向かう最短のポートがルートポート、各セグメントで転送を担うのが指定ポート、それ以外がブロックされる代替ポートやバックアップポートです。
- パスコスト: ルートブリッジまでの距離を表す値で、リンク速度が速いほど小さくなります。経路の選び方を調整するときに使います。
方式の違い
最初の STP(IEEE 802.1D)は、トポロジーが変わってから通信が再開するまでに数十秒かかります。RSTP(802.1w、現在は 802.1D に統合)は、隣接スイッチとのやり取りで状態を素早く切り替えるため、多くの場合は数秒以内に収束します。MSTP(802.1s、現在は 802.1Q に統合)は、複数の VLAN をグループにまとめて木構造を作る方式です。Cisco 機器では、VLAN ごとに木構造を作る PVST+ と、その RSTP 版である Rapid PVST+ がよく使われます。
新しく組む構成では、RSTP 系の方式を選ぶのが一般的です。ただし、同じネットワーク内で方式が混在すると、互換動作になって収束が遅くなったり、意図しないポートがブロックされたりします。既存の機器が使っている方式を先に確認してください。
手順1:現在の状態を確認する
設定を変える前に、どのスイッチがルートブリッジになっていて、どのポートがブロックされているかを確認します。
Switch# show spanning-tree summary
Switch# show spanning-tree vlan 10
show spanning-tree vlan 10 の出力では、Root ID の欄にルートブリッジのブリッジ ID が、Bridge ID の欄にそのスイッチ自身の ID が表示されます。両者が一致していれば、そのスイッチがルートブリッジです。各ポートの役割(Root、Desg、Altn など)と状態(FWD、BLK など)も一覧で確認できます。表記は機種や OS のバージョンによって少しずつ異なります(2026年10月現在)。
よくある問題は、何も設定していないために、古いスイッチやアクセス層の小さなスイッチがルートブリッジに選ばれているケースです。優先度が同じなら MAC アドレスの小さいスイッチが選ばれるため、製造が古い機器ほど選ばれやすくなります。その結果、通信がネットワークの端を経由する遠回りの経路を通ります。
手順2:ルートブリッジを指定する
ネットワークの中心にあるコアスイッチ(またはディストリビューションスイッチ)をルートブリッジにし、2 番目の候補も決めておきます。
! 方式を Rapid PVST+ にする
CoreSW1(config)# spanning-tree mode rapid-pvst
! CoreSW1 をルートブリッジ、CoreSW2 を予備にする
CoreSW1(config)# spanning-tree vlan 10,20 priority 4096
CoreSW2(config)# spanning-tree vlan 10,20 priority 8192
spanning-tree vlan 10 root primary のように、優先度を自動で決めるマクロコマンドもあります。ただし、このコマンドは実行時点のほかのスイッチの値をもとに優先度を計算するだけです。後から優先度の低いスイッチが追加されると、ルートブリッジが入れ替わる可能性があります。値を明示しておくほうが、後から構成を読む人にも意図が伝わります。
設定後は、再び show spanning-tree vlan 10 で Root ID がコアスイッチの ID になっていることを確認します。ルートブリッジが変わる瞬間は木構造が組み直されるので、通信が一時的に途切れることがあります。作業は利用者の少ない時間帯に行ってください。
手順3:サーバーや端末のポートを設定する
サーバーや PC をつなぐポートは、ほかのスイッチとつながることがない「エッジポート」です。STP の通常の手順に従うと、リンクが上がってから転送を始めるまでに時間がかかります。その間に DHCP の取得や PXE ブートがタイムアウトすることがあります。PortFast を有効にすると、こうしたポートはすぐに転送状態になります。
Switch(config)# interface GigabitEthernet1/0/5
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 10
Switch(config-if)# spanning-tree portfast
Switch(config-if)# spanning-tree bpduguard enable
同時に有効にしている BPDU Guard は、そのポートで BPDU を受け取ったときにポートを停止(err-disabled)させる機能です。エッジポートに誤ってスイッチがつながれ、ループが生じるのを防ぎます。新しい IOS では、PortFast の指定が spanning-tree portfast edge という形になっている場合があります。使っている機種のコマンドリファレンスで確認してください。
使ってはいけないポート
スイッチ同士をつなぐポートや、仮想化ホストのようにブリッジ機能を持つ機器をつなぐポートには、PortFast を設定しないでください。ループを検出する前に転送が始まり、ストームの原因になります。BPDU Filter を使うと BPDU の送受信そのものが止まるため、ループに気づけなくなります。用途を理解していない状態では避けたほうが安全です。
手順4:ルートブリッジの位置を守る
アクセス層のポートに、優先度を低く設定したスイッチがつながれると、ルートブリッジが奪われることがあります。下位のスイッチへ向かうポートに Root Guard を設定すると、そのポートからより優先度の高い BPDU を受け取ったとき、ポートを一時的にブロックします。
Switch(config)# interface GigabitEthernet1/0/48
Switch(config-if)# spanning-tree guard root
Linux ブリッジで STP を使う場合
KVM などで Linux ブリッジに複数の物理 NIC を参加させる場合、STP はブリッジ作成時の既定では無効です。上流のスイッチと二重につなぐなら、ループ対策として有効にします。
sudo ip link add name br0 type bridge stp_state 1
sudo ip link set dev br0 type bridge priority 61440
sudo ip link set eth0 master br0
sudo ip link set eth1 master br0
sudo ip link set br0 up
# ポートの状態(forwarding / blocking など)を確認
bridge link show
カーネルのブリッジが実装しているのは従来の STP で、RSTP は使えません。RSTP が必要な場合は mstpd などの別のデーモンが必要になります。サーバー側がルートブリッジにならないよう、優先度は大きな値にしています。冗長化そのものが目的であれば、STP よりも LACP などのリンクアグリゲーション(ボンディング)のほうが、両方の回線を同時に使えるので適しています。
ループが疑われるときの確認
通信が急に遅くなり、スイッチのポートのランプが一斉に激しく点滅する場合は、ループを疑います。
- トポロジー変更の回数を見る:
show spanning-tree detailで、トポロジー変更の発生回数と、最後に変更を通知してきたポートを確認します。回数が増え続けていれば、どこかのポートが上下を繰り返しています。 - err-disabled のポートを探す:
show interfaces status err-disabledで、BPDU Guard などで止まったポートを確認します。その先に何がつながれたかを現地で確かめます。 - 最近の配線変更を確かめる: 実務で多い原因は、会議室や執務エリアに持ち込まれた小型スイッチの配線や、同じスイッチの 2 つのポートをケーブルでつないでしまうことです。
設定を変更する前には、show running-config の内容を保存しておき、必要なら元に戻せるようにしてください。可能であれば、検証用の機器で同じ設定を試してから本番に反映します。
まとめ
- STP は L2 ループによるブロードキャストストームを防ぐ仕組みで、新規構成では RSTP 系の方式が一般的です。方式の混在には注意します。
- 何も設定しないと古いスイッチがルートブリッジに選ばれやすいので、コアスイッチの優先度を明示して固定し、予備の候補も決めておきます。
- サーバーや端末のポートには PortFast と BPDU Guard を設定し、スイッチ間のポートには PortFast を使いません。
- Linux ブリッジは既定で STP が無効で、従来の STP のみに対応します。回線の冗長化が目的ならボンディングも検討します。
- ループが疑われるときは、トポロジー変更の回数、err-disabled のポート、最近の配線変更の順に確認します。