こんにちは!ネットワークの世界へようこそ。インフラエンジニアの主筆ライターがお届けする今回のテーマは、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+といった高速版が必須。
「なぜこのポートはオレンジ色(ブロッキング)で点灯しているんだろう?」
そんな疑問を持ったときは、背後でスイッチたちが静かに手紙をやり取りし、あなたのネットワークを守ってくれている姿を想像してみてください。
インフラの基礎を固めることは、トラブルシューティングの引き出しを増やすことへの第一歩です。一歩ずつ、確実に知識を血肉にしていきましょう!それではまた次回の技術解説でお会いしましょう。
コメント