Mímisbrunnr知恵の泉

← コンピュータネットワーク 一覧

🎓 レベル:発展 | 重要度:A(必須) 📎 前提:VLANとトランク

要点(BLUF)

なぜループが致命的か

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)という制御フレームを交換し、次を決めます。

  1. ルートブリッジの選出ブリッジID(優先度+MAC)が最小のスイッチが根(ルート)になる。優先度が同じならMACが小さい方。
  2. 各スイッチのルートポート選出:ルートまで最小コストの1ポート。コストは帯域で決まり、速いリンクほど低コスト(例 1Gで4、10Gで2)。
  3. 各セグメントの指定ポート選出:そのリンクでルートに近い側のポートが転送役。あぶれたポートがブロックされます。
graph TD
  Root["ルートブリッジ(ブリッジID最小)"]
  S2["スイッチ2"]
  S3["スイッチ3"]
  Root ---|"指定ポート↔ルートポート"| S2
  Root ---|"指定ポート↔ルートポート"| S3
  S2 ---|"片側がブロックされ輪が切れる"| S3

ポートの役割と状態

端末ポート向けの高速化と保護

! 端末ポートを高速化しつつ、誤接続を遮断
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は古い機器ほど小さい傾向があるため、意図したスイッチを根にしたいなら優先度を明示的に下げるのが運用の鉄則です。

⚠️ よくある誤解

対応 lab

関連