こんにちは!ネットワークの世界へようこそ。インフラ・ネットワークスペシャリストの私です。
日々のインフラ運用、本当にお疲れ様です。スイッチの電源を入れ、ケーブルを挿せば魔法のように通信が始まるイーサネットの世界ですが、その裏側ではネットワーク全体を崩壊させる「悪夢」を防ぐための、無数のいぶし銀なプロトコルたちが働いています。
今回は、そんなL2(データリンク層)の守護神たちの中から、「ループガード(Loop Guard)」という機能にスポットを当ててみましょう。
「スパニングツリー(STP)があるからループなんてしないよ」と思ったそこのあなた。実は、ケーブル1本の「片方向の故障」という、意外と身近で恐ろしい罠が潜んでいるんです。一歩ずつ、その仕組みと現実世界での例えを交えながら優しく紐解いていきましょう!
—
1. 郵便配達で例える「L2ループ」の恐怖
まず、ネットワークのL2ループがなぜそんなに恐ろしいのか、郵便配達に例えて考えてみましょう。
あなたの会社の本社と支社を繋ぐために、スイッチAとスイッチBという2台の郵便受け(ネットワーク機器)があるとします。もし、この2台の間に手紙が行き来するルートが2本(二重の道)あったらどうなるでしょうか?
郵便物は「あっちの道へ、こっちの道へ」と無限にぐるぐると回り続け、郵便受けはあっという間にパンクしてしまいますよね。コンピュータの世界でも同じです。宛先不明のブロードキャストフレームがネットワーク内を無限に回り続ける「ブロードキャストストーム」が発生し、わずか数秒でネットワーク全体がダウンしてしまいます。
この悲劇を防ぐために生まれたのが、みんな大好きSTP(Spanning Tree Protocol)です。
STPは、ネットワークのなかで「今は使わないでおこうね」というお休み中のルート(ブロッキングポート)を自動的に作り出し、一本道の安全な木(ツリー)の構造を保ちます。
通常、スイッチ同士は「生きてるよ!」という生存確認の手紙(BPDU:Bridge Protocol Data Unit)を定期的にお互いへ送り合っています。
「あ、ちゃんとお隣から手紙が届いているから、このお休みルートはまだ閉じておこう」と、スイッチが賢く判断しているわけです。
—
2. 「片方向リンク障害」という静かなる暗殺者
ここで、今回の主役である「ループガード」が必要になるシチュエーションが登場します。
想像してみてください。スイッチAからスイッチBへ向かう「行き」の光ファイバーは正常なのに、スイッチBからスイッチAへ向かう「帰り」の光ファイバーが、ネズミにかじられたり、コネクタの不良で「プツリ」と切れてしまったとします。
これが「単方向リンク障害(Unidirectional Link Failure)」です。
このとき、何が起きるでしょうか?
1. スイッチBは、スイッチAからの手紙(BPDU)が届かなくなります。
2. スイッチBは、「あれ? お隣からの生存確認が途絶えたぞ。もしかして障害が起きて、このお休みルートを開放(フォワーディング状態)しなきゃいけないのかな?」と勘違いしてしまいます。
3. スイッチBはお休みルートを「通信OK」に変えてしまいます。
4. その結果、「行きはよいよい、帰りはダメ」な状態のまま、見事にL2ループが完成してしまうのです。
スイッチAからは手紙を送っているのに、スイッチBからは届かない。片方向だけが通信できるというアンバランスな状況が、ネットワークを裏側から崩壊させるトリガーになります。恐ろしいですよね。
—
3. ループガード(Loop Guard)の救出劇
この「お隣からの手紙が来なくなったぞ……! でも待てよ、本当に障害なのかな?」というスイッチの勘違いを防ぐのが、ループガードです。
ループガードを有効にしているポートでは、もしお隣からのBPDU(生存確認の手紙)がパタッと途絶えたとき、スイッチはこう考えます。
「おかしいな、今まで届いていた手紙が急に止まったぞ。ケーブルの帰りが壊れたんじゃないか? 念のため、このポートは勝手に開けずに、『不安全(Loop-Inconsistent)状態』にして通信をブロックしておこう!」
つまり、ループガードは、「確証が得られない限り、絶対にポートをフォワーディング(転送)状態にさせない」という、極めて慎重で頼もしい番人なのです。
障害が復旧して再びBPDUが届くようになると、ループガードは自動的にポートを元の正常な状態に戻してくれます。なんて優秀なんでしょう!
—
4. 実務で設定してみよう(Cisco IOSの例)
それでは、実際のCisco Catalystスイッチを例に、ループガードの設定方法を見ていきましょう。インフラの現場ではどのように設定されているのか、一緒に確認してみましょうね。
ループガードは、主に非指定ポート(Non-designated port / 主にブロッキングされる側)やルートポートで有効にします。
全域(グローバル)でデフォルト有効にする場合
すべてのポイント・ツー・ポイントのアクセスポートやトランクポートで一括してループガードを効かせたい場合は、グローバルコンフィギュレーションモードで次のように設定します。
Switch(config)# spanning-tree loopguard default
*※注意:すべてのポートに影響するため、環境によっては意図しないポートがブロックされるリスクがあります。実務では次のようにポート単位で適用することが多いです。*
個別(インターフェース)で有効にする場合
特定のポート(ここでは GigabitEthernet 0/1)に絞ってループガードを適用する、最も安全で確実な方法です。
Switch(config)# interface GigabitEthernet 0/1
Switch(config-if)# spanning-tree guard loop
*【設定のポイント】*
spanning-tree guard loopを投入することで、このポートが万が一BPDUを受信しなくなった際、勝手にフォワーディング状態へ遷移するのを防ぎ、ループを未然にブロックします。- コマンド設定後は、
show spanning-tree interface GigabitEthernet 0/1などのコマンドで、現在のステータスが正しくガードされているか必ず確認するクセをつけましょう。
—
5. まとめ:現場で活きる「備え」
いかがでしたでしょうか? 今回はイーサネットの隠れた脅威である「単方向リンク障害」と、それを鮮やかに防ぐ「ループガード」について解説しました。
- L2ループはネットワークを一瞬でマヒさせる。
- 片方向リンク障害は、STPに「お隣が消えた」と勘違いをさせ、ループを引き起こす。
- ループガードは、生存確認が途絶えた際にポートを安全にブロックし、ネットワークの崩壊を防ぐ。
教科書通りの綺麗な環境だけでなく、ファイバーの物理的な破損やトランシーバーの片側故障といった「現実世界のトラブル」は、いつ私たちのインフラに牙をむくかわかりません。
こうしたプロトコルの背景にあるストーリーや、設計者の思想を少しずつ知ることで、トラブルシューティングの引き出しは確実に増えていきます。一歩ずつ、確実にスキルアップしていきましょう!
それでは、また次回のネットワークの深淵でお会いしましょう。インフラエンジニアの皆さん、今日もご安全に!
コメント