【入門編】 スパニングツリープロトコル(STP:IEEE 802.1D)の基本アルゴリズムとコンバージェンスの遅延課題 – インフラ・物理&L2/L3ネットワーク基礎実践ガイド

こんにちは!ネットワークの世界へようこそ。インフラエンジニアの主筆ライターがお届けする今回のテーマは、L2(レイヤー2)ネットワークの守護神であり、同時に初心者泣かせの「ちょっと気が長いお巡りさん」こと、スパニングツリープロトコル(STP:IEEE 802.1D)です。

ネットワークを冗長化するためにスイッチ同士をグルグルとループ状につないだら、パケットが永遠にぐるぐる回り続けてネットワークがダウンした……なんていう悲劇(broadcast storm)、現場ではよくある話です。そんなループ地獄を防ぐためにSTPは生まれたのですが、昔の規格である802.1Dは「安全確実だけど、とにかく動きが遅い!」という致命的な弱点を持っていました。

今回は、パケットがワイヤーの上をどう駆け巡っているのか、その裏側のドラマを身近な例えを交えながら、一歩ずつ優しく紐解いていきましょう!

—

1. なぜL2ループは恐ろしいのか? 身近な例えで理解する

イーサネットの世界には、IPパケットのような「生存回数(TTL)」という概念がありません。届いたブロードキャストフレーム(「誰かいますかー!」と叫ぶ声)は、宛先が見つからないと、知っている限りの他のポートへすべて転送してしまいます。

これを身近な例えで考えてみましょう。
あるオフィスに「伝言ゲーム」が大好きな新人が4人いたとします。A君、B君、C君、D君が四角形に並んでいて、全員が「聞こえた声はすぐ隣の2人に同時に伝える」というルールで動いています。
ここでA君が「お疲れ様です!」と大きな声を出したらどうなるでしょう?

1. A君の声を聞いたB君とD君が、それぞれ両隣へその声を伝えます。
2. その声を聞いたC君は、B君とD君の両方から同時に「お疲れ様です!」と聞き、頭がパニックになってさらに大声で周囲に叫び返します。
3. 結果、オフィスの空気は一瞬で「お疲れ様です!」の残響音で埋め尽くされ、誰もまともな仕事ができなくなります。

これがネットワークでいうブロードキャストストームであり、スイッチのCPU使用率が100%に張り付いて通信が完全に麻痺する瞬間です。このループを物理的なケーブルを抜かずに自動で防いでくれるのが、STPなんです。

—

2. STPの基本:どうやって「お邪魔な道」を見つけるのか?

STPは、ネットワーク全体を1本の木の形(ツリー構造)に見立て、ループしている部分のパスを1つだけ「お休み(ブロッキング)」させることで、論理的な一本道を作り出します。そのために、スイッチたちは定期的にBPDU(Bridge Protocol Data Unit)という「自己紹介&状況報告のお手紙」を交換し合っています。

ここで選ばれるのが、ネットワーク全体の「司令塔」であるルートブリッジ(Root Bridge)です。

ルートブリッジ選出のルール

ネットワーク内のすべてのスイッチは、自分がルートブリッジになろうと「私こそが一番偉い!」という手紙(BPDU)を配ります。その際の判断基準はシンプルです。

1. ブリッジプライオリティ(Bridge Priority)が一番小さい(数字が若い)こと

  • デフォルトでは多くの機器で 32768 が入っています。ここをあえて 4096 などに設定して、「俺がボスだ!」と立候補させます。

2. MACアドレスが一番小さいこと

  • プライオリティが同じ場合は、ハードウェアに刻まれた固有のMACアドレスの若さで勝負が決まります。

郵便配達のルート網で例えるなら、「一番本局(ルートブリッジ)から近い効率的なルートはどれか?」を全員で話し合って決める作業ですね。

—

3. なぜコンバージェンス(収束)が遅いのか?(802.1Dの悲劇)

ルートブリッジが決まると、各スイッチは「ルートブリッジへの最短経路(Root Port)」と、各セグメントごとの「代表ポート(Designated Port)」を決め、それ以外の余分なポートを「ブロッキングポート(Blocked Port)」にしてお休みさせます。

ここで大きな問題になるのが、ネットワークの形が変わったとき(障害発生時やケーブルの抜き差し)に、新しい正しい道が開通するまでの時間、いわゆるコンバージェンス(収束)の遅さです。

従来のIEEE 802.1Dでは、ポートの状態が「お休み(Blocking)」から「通信OK(Forwarding)」に変わるまでに、以下のステップを踏む必要があります。

  • Listening(リスニング)状態: 約15秒
  • Learning(ラーニング)状態: 約15秒

合計でなんと約30秒〜50秒(Max AgeやForward Delayのタイマーによる)もの時間がかかります!
現代のWebサービスやIP電話の現場で「障害が起きてから復旧するまで50秒お待ちください」なんて言ったら、ユーザーから大ブーイングどころか、システム運用者が青ざめる事態になってしまいますよね。

なぜそんなに待つ必要があるかというと、古いお便り(BPDU)や古いMACアドレスの記憶がネットワーク上に残っていて、一時的なループを引き起こすのを防ぐための「慎重すぎるクールダウン期間」だからです。石橋を叩きすぎて橋を壊しているようなものですね。

—

4. 実務での設定例とモダンな対策

現代のネットワークでは、この遅すぎる802.1Dの基本アルゴリズムを改良したRSTP(Rapid Spanning Tree Protocol: IEEE 802.1w)や、VLANごとに計算するPVST+ / Rapid-PVST+が標準的に使われています。

Cisco Catalystスイッチを例に、基本的なSTP(ここではモダンなRapid-PVST+)の設定を見てみましょう。実務では、意図しないスイッチが勝手にルートブリッジにならないよう、プライオリティの調整と「PortFast(エッジポート)」の設定が必須の作法となります。

! --- CiscoスイッチでのSTP基本設定例 ---

! 1. STPのモードをRapid-PVST+(高速収束版)に変更する
Switch(config)# spanning-tree mode rapid-pvst

! 2. このスイッチを特定のVLAN(例: VLAN 10)のルートブリッジに指定する
Switch(config)# spanning-tree vlan 10 root primary

! 3. PCやサーバーが接続される末端ポートには、STPの待ち時間をバイパスするPortFastを設定する
Switch(config)# interface range gigabitethernet 0/1 - 24
Switch(config-if-range)# switchport mode access
Switch(config-if-range)# spanning-tree portfast
Switch(config-if-range)# spanning-tree bpduguard enable

設定のポイント(現場の知見)

  • spanning-tree vlan 10 root primary を投入すると、現在のネットワーク内のルートブリッジのプライオリティを自動的に計算し、それより低い値(例: 24576 など)に設定して確実にボスへ昇格させます。
  • 末端の端末ポートに対して spanning-tree portfast を有効にすると、ListeningやLearningの待ち時間をスキップして一瞬で Forwarding 状態になり、PC起動時のネットワーク接続待ち(DHCPのタイムアウトなど)を防ぐことができます。
  • さらに bpduguard を有効にすることで、万が一ユーザーが勝手にハブや別のスイッチを持ち込んで接続した際、予期せぬBPDUを検知して即座にポートをシャットダウンし、ネットワーク全体の崩壊を防ぎます。

—

まとめ

今回は、L2ループを防ぐためのSTPの基本アルゴリズムと、歴史的な背景が生んだコンバージェンスの遅延課題について解説しました。

  • STPはBPDUという手紙を交換し合い、ルートブリッジ(ボス)を決める。
  • 余分なパスをブロッキングすることで、パケットの無限ループを防ぐ。
  • 従来の802.1Dは安全確認に30〜50秒かかるため、現代ではRSTPやRapid-PVST+といった高速版が必須。

「なぜこのポートはオレンジ色(ブロッキング)で点灯しているんだろう?」
そんな疑問を持ったときは、背後でスイッチたちが静かに手紙をやり取りし、あなたのネットワークを守ってくれている姿を想像してみてください。

インフラの基礎を固めることは、トラブルシューティングの引き出しを増やすことへの第一歩です。一歩ずつ、確実に知識を血肉にしていきましょう!それではまた次回の技術解説でお会いしましょう。

コメント

タイトルとURLをコピーしました