🎓 レベル:発展 | 重要度:A(必須) 📎 前提:VLANとトランク
要点(BLUF)
- 冗長化のためスイッチを輪のように接続すると、L2にはTTLがないため、ブロードキャストが永遠に回り続けるブロードキャストストームが起きます。
- STP(Spanning Tree Protocol)は、物理的な輪の中から一部のポートをブロックし、ループのない木構造(スパニングツリー)を自動で作ります。
- 現在は高速収束するRSTP(Rapid PVST+)が主流で、端末ポートを即座に使うPortFast、不正BPDUを弾くBPDU Guardを併用します。
なぜループが致命的か
L2フレームにはTTL(生存時間)がありません。輪になった経路にブロードキャストが1つ入ると、減衰せず無限に増殖し、(1) 帯域を食い尽くし、(2) MACテーブルが宛先ポートを行き来して壊れ(MACフラッピング)、(3) CPUが飽和して、数秒でLAN全体が停止します。冗長配線は欲しいが、ループは絶対に許せない——この矛盾を解くのがSTPです。
graph TD A["スイッチA"] B["スイッチB"] C["スイッチC"] A ---|"リンク1"| B B ---|"リンク2"| C C ---|"リンク3(このどれかをブロックして輪を切る)"| A
STPの動作(3つの選出)
スイッチは BPDU(Bridge Protocol Data Unit)という制御フレームを交換し、次を決めます。
- ルートブリッジの選出:ブリッジID(優先度+MAC)が最小のスイッチが根(ルート)になる。優先度が同じならMACが小さい方。
- 各スイッチのルートポート選出:ルートまで最小コストの1ポート。コストは帯域で決まり、速いリンクほど低コスト(例 1Gで4、10Gで2)。
- 各セグメントの指定ポート選出:そのリンクでルートに近い側のポートが転送役。あぶれたポートがブロックされます。
graph TD Root["ルートブリッジ(ブリッジID最小)"] S2["スイッチ2"] S3["スイッチ3"] Root ---|"指定ポート↔ルートポート"| S2 Root ---|"指定ポート↔ルートポート"| S3 S2 ---|"片側がブロックされ輪が切れる"| S3
ポートの役割と状態
- 役割:ルートポート(ルート方向)/指定ポート(各セグメントの転送役)/非指定(ブロック)。
- 状態(古典STP):Blocking → Listening → Learning → Forwarding と進み、収束に30〜50秒かかります。
- RSTP(802.1w / Rapid PVST+):状態を Discarding / Learning / Forwarding に整理し、数秒で収束。CCNAの既定はこちら。
端末ポート向けの高速化と保護
- PortFast:PC直結のアクセスポートを、選出を待たず即 Forwarding にする。端末はループを作らない前提。
- BPDU Guard:PortFastポートでBPDUを受けたら(=スイッチが挿された=ループ危険)即座に
err-disabledで遮断。 - Root Guard:意図しないスイッチがルートを奪うのを防ぐ。
! 端末ポートを高速化しつつ、誤接続を遮断
Switch(config)# interface Gi0/1
Switch(config-if)# spanning-tree portfast
Switch(config-if)# spanning-tree bpduguard enable
! このスイッチを確実にルートにしたい(優先度を下げる)
Switch(config)# spanning-tree vlan 1 root primary
確認:
Switch# show spanning-tree
なぜ「優先度+MAC」で根を決めるのか(設計の直観)
完全に分散した環境で、追加の合意なしに全員が同じ1台を根として選べる必要があります。そこで「比較可能で必ず一意になる値(優先度+MAC)の最小」という単純規則を全員が適用すれば、中央管理なしに同じ結論へ収束します。ただしMACは古い機器ほど小さい傾向があるため、意図したスイッチを根にしたいなら優先度を明示的に下げるのが運用の鉄則です。
⚠️ よくある誤解
- 「STPはリンクを冗長化して同時に使う」ではない。STPは冗長リンクを**待機(ブロック)**させ、障害時に切り替えます。同時に使って束ねたいなら EtherChannel(
[[02-05_EtherChannelと近隣探索]])。 - 「PortFastは全ポートに付けてよい」ではない。スイッチ間ポートに付けるとループ保護が消え危険。端末直結ポート専用です。
- 「ルートは速いスイッチが自動で選ばれる」ではない。選出基準は速度ではなくブリッジID。明示設定しないと古い低速機が根になることもあります。
対応 lab
- なし(IOS設定とshow読解)
関連
- 前:
[[02-03_VLANとトランク]]/次:[[02-05_EtherChannelと近隣探索]] - 冗長リンクを束ねて使う:
[[02-05_EtherChannelと近隣探索]]/L2防御:[[07-03_L2セキュリティ]]