STPの「見えない死角」を撃ち抜く:Loop Guardが守るネットワークの深淵
ネットワークエンジニアとして数多の現場を渡り歩いてきたが、STP(Spanning Tree Protocol)ほど、そのシンプルさゆえに「裏切られた時の代償」が大きいプロトコルも珍しい。特に、物理層やデータリンク層で発生する「単方向リンク障害(Unidirectional Link Failure)」は、ネットワークを破滅的なループへと導く沈黙の凶器だ。
今日は、STPの仕様上の弱点を補完し、インフラの堅牢性を担保するための最後の砦である「Loop Guard」について、その深淵を覗いていきたい。
—
なぜBPDUの「沈黙」が致命的なのか
STPの基本動作は、BPDU(Bridge Protocol Data Unit)の交換に基づいている。ルートブリッジから発信されたBPDUが対向のスイッチに届くことで、ネットワークは木構造を維持し、ループを回避する。
しかし、もし光ファイバーの片側だけが断線し、物理的にはリンクアップしているが、片方向からしか通信できない状況になったらどうなるか?
1. 非指定ポート(Non-designated port)が、本来届くはずのBPDUを受け取れなくなる。
2. Max Ageタイマーが経過し、当該ポートは「対向にスイッチはいない」と判断する。
3. ポートは「リスニング」から「学習」、そして「転送(Forwarding)」状態へ遷移する。
4. 結果:その先でループが形成され、ブロードキャストストームが発生。ネットワークの制御プレーンとデータプレーンが瞬時に飽和する。
これは、STPの「正常系」の振る舞いが、故障によって「異常系」に悪用される典型的なケースだ。この沈黙を検知し、安全側に倒すのが Loop Guard の役割である。
—
Loop Guardの内部挙動:パケットレベルの防壁
Loop Guard が有効なポートは、通常であればBPDUを受信し続ける状態を期待する。もし、このポートがBPDUの受信を停止した場合、Loop Guard は即座にポートを loop-inconsistent 状態(実質的なブロック状態)へと強制遷移させる。
この挙動の美しい点は、単に通信を遮断するだけでなく、「対向から正しい情報が送られてこない限り、一切のトラフィックを流さない」という、ゼロトラストの思想に近い厳格なポリシーにある。
Cisco Catalystにおける設定例
設定は極めてシンプルだが、その影響範囲は大きい。アクセスポートではなく、スイッチ間を接続するトランクポートに対して適用するのが鉄則だ。
# インターフェースコンフィグモードへ移行
interface GigabitEthernet1/0/1
# ループガードを有効化
spanning-tree guard loop
# 【補足】エラーディセーブル状態からの自動復旧ポリシー(必要に応じて)
errdisable recovery cause loopguard
errdisable recovery interval 300
—
極限のインフラに向けた最適化と注意点
Loop Guard を導入する際、インフラアーキテクトとして考慮すべきは「可用性」と「セキュリティ」のバランスだ。
1. UDLDとの併用こそが正義
Loop Guard はBPDUの受信という「論理的挙動」に依存する。一方で、UDLD(Unidirectional Link Detection)は、L2ヘッダーレベルでのエコーパケットを用いた「物理的・論理的リンクの疎通確認」を行う。
堅牢なデータセンターネットワークを構築するなら、Loop Guard(STPの論理保護)と UDLD(物理層・データリンク層の異常検知)の両方を有効にするのがベストプラクティスだ。
2. TCPバッファとリンクの安定性
ループ障害がネットワークを飽和させると、TCPのハンドシェイク(SYN/SYN-ACK/ACK)はタイムアウトし、RTT(Round Trip Time)は劇的に悪化する。Loop Guard によって物理的なリンクを速やかに切り離すことは、再送制御やTCPのウィンドウサイズ調整(tcp_rmem / tcp_wmem)が効かなくなるほどの輻輳を防ぐための、最も効率的なパケット制御と言える。
3. ヘッダー圧縮とトラフィックエンジニアリング
もし、あなたがVXLANやEVPNなどのオーバーレイネットワークを構築しているなら、Underlay側の Loop Guard は必須だ。アンダーレイでループが起きれば、ヘッダー圧縮アルゴリズムやカプセル化のオーバーヘッド以前に、全通信がデッドロックする。インフラの「足元」を固めてこそ、初めてTLSのハンドシェイク最適化やRTT削減の恩恵を享受できるというものだ。
—
現場からの教訓
最後に一つだけ、現場でよくあるミスを共有しよう。
Loop Guard をルートポート(Root Port)に設定してはいけない。ルートポートで Loop Guard が作動すると、ルートブリッジへのパスそのものが遮断され、ネットワーク全体が孤立する可能性がある。あくまで、「BPDUを受信し続けるべき、非指定ポート」に対して適用する。
プロトコルは嘘をつかない。BPDUという小さなパケットが届かなくなった時、そこに何が起きているのかを想像する力こそが、我々エンジニアの真価だ。ネットワークの深淵を愛する者として、皆さんのインフラが今日も安定してパケットを転送し続けることを願っている。
コメント