こんにちは!ネットワークの世界へようこそ。
普段、私たちが何気なくスマートフォンやPCでウェブサイトを見たり、メッセージを送受信したりするとき、裏側では膨大な数の「スイッチ」と呼ばれるネットワーク機器が、休むことなくパケット(データのパケット)をバケツリレーのように運んでいます。
もし、このバケツリレーのルートが「ぐるぐる回るループ状」になっていたらどうなるでしょうか?データは永遠に出口を見つけられず、ネットワーク全体がパニックを起こしてフリーズしてしまいます。
これを防ぐための、まさに「ネットワーク界の交通整理の神様」とも言える仕組みが、今回ご紹介する「スパニングツリープロトコル(STP:Spanning Tree Protocol)」です。
一見すると「ルートポート」「指定ポート」「パスコスト」など、難しそうな専門用語が並びますが、実はこれ、「郵便配達員が、一番早くて安全なルートを見つける仕組み」と全く同じなんです。
今回は、インフラやネットワークの勉強を始めたばかりのあなたに向けて、専門用語を現実世界に例えながら、一歩ずつ丁寧に紐解いていきます。読み終わる頃には、スイッチたちの健気な「話し合い」の様子が頭に浮かぶようになりますよ。それでは、一緒に深淵なるプロトコルの世界を覗いてみましょう!
—
1. なぜネットワークに「交通整理」が必要なの?
ネットワークの信頼性を高めるために、私たちはよくスイッチ同士を複数のケーブルで「二重化(予備の道を作ること)」します。片方のケーブルが断線しても、もう片方があれば通信を続けられるからですね。
しかし、ここに大きな罠があります。
L2(レイヤ2)というネットワークの階層では、データ(フレーム)に「ここまで来たら消滅する」という寿命(TTL)がありません。そのため、道がぐるっと一周する輪っか(ループ)になっていると、データは永遠にその輪の中を回り続けてしまいます。これを「ブロードキャストストーム」と呼び、ネットワークが完全に麻痺する原因になります。
そこで登場するのがSTPです。
STPは、物理的には繋がっている予備の道を、「論理的に(ソフトウェアの力で)通行止め」にすることで、ネットワークを1本の「木(ツリー)」のような、絶対にループしない形に整えてくれるのです。
—
2. 郵便配達に例えて納得!3つのポート役割
STPが有効なネットワークでは、スイッチの接続口(ポート)にそれぞれ「役割」が与えられます。まずは、この3つの役割を「郵便配達」に例えて覚えてしまいましょう。
| ポートの名前 | 現実世界でのイメージ | ネットワークでの役割 |
| :— | :— | :— |
| ルートポート (Root Port: RP) | 本局(中心)へ向かう「最短の玄関口」 | ルートブリッジ(リーダーのスイッチ)に一番近いポート。スイッチに必ず1つ選ばれます。 |
| 指定ポート (Designated Port: DP) | 各地域を代表する「郵便局の発送窓口」 | データを送り出すための代表ポート。リンク(回線)ごとに必ず1つ選ばれます。 |
| 非指定ポート (Non-Designated Port: NDP / Alternate Port) | 普段は閉まっている「通行止めのゲート」 | ループを防ぐために、通信を遮断(ブロック)しているポート。予備の道として待機します。 |
スイッチたちは、お互いに「ハロー!」と挨拶を交わしながら、どのポートを「使い」、どのポートを「お休み(ブロック)」させるかを自動的に決めていきます。
—
3. 道の「通りやすさ」を表す「パスコスト(Path Cost)」
では、どうやって「最短のルート」を決めるのでしょうか?その判断基準になるのが「パスコスト(Path Cost)」です。
これは、道路の「走りやすさ(舗装状況)」のようなものです。
太くて綺麗な高速道路はスイスイ走れますが、細い砂利道は進むのに時間がかかりますよね。ネットワークの世界では、「通信速度(帯域幅)が速い回線ほど、コストが低い(通りやすい)」と定義されています。
代表的なリンク速度と、STPで定められているパスコストの基準値を見てみましょう。
| リンクの速度 (帯域幅) | コスト値(標準的なIEEE 802.1D準拠) | 道路に例えると? |
| :— | :— | :— |
| 10 Mbps (10BASE-T) | 100 | デコボコの砂利道(かなり通りにくい) |
| 100 Mbps (Fast Ethernet) | 19 | 一般道路(そこそこ走れる) |
| 1 Gbps (Gigabit Ethernet) | 4 | バイパス道路(スイスイ走れる) |
| 10 Gbps (10 Gigabit Ethernet) | 2 | 高速道路(あっという間に到着!) |
> 一歩進んだ豆知識:
> 100Gbpsなどの超高速回線が登場した現代では、上記の古い基準(16ビットで表現)だとコスト値が小さくなりすぎて区別がつかなくなってしまいます。そのため、現代のネットワークでは、より大きな桁数でコストを計算する「Path Cost Method: Long(32ビット表現)」という新しい基準も使われています。ですが、まずは上記の「速いほどコストが低い!」という基本をしっかり押さえましょう!
—
4. 運命の決定戦!ポート役割を決める「4つの判定ルール」
スイッチたちは、以下の4つの判定ルールを上から順番に適用して、一歩も譲らない厳格な論理で「ルートポート(RP)」や「指定ポート(DP)」を決定していきます。
このルールは、ネットワークエンジニアの登竜門とも言える超重要項目です。一緒にゆっくり見ていきましょう。
ルール1:最も低い「ルートブリッジID」を持つこと
まずはネットワーク内のリーダー(本局)である「ルートブリッジ」を決めます。すべてのスイッチの中で、最も「ブリッジID(プライオリティ値 + MACアドレス)」という数字が小さいスイッチがリーダーになります。
すべての決定は、このリーダーへの「近さ」が基準になります。
ルール2:ルートブリッジまでの「累計パスコスト」が最も低いこと
ここが今回の主役です!
自分のポートからリーダー(ルートブリッジ)にたどり着くまでに、「通過する通り道のパスコストを足し算した合計値(ルートパスコスト)」が最も低いポートが、ルートポート(RP)に選ばれます。
ルール3:送信元の「ブリッジID」が最も低いこと
もし、コストを計算した結果が「引き分け(同点)」だった場合はどうするでしょうか?
その場合は、「隣でデータを送ってくれているスイッチのブリッジID(数字)」を比較し、より小さい(優秀な)スイッチと繋がっているポートを優先します。
ルール4:送信元の「ポートID」が最も低いこと
もし隣のスイッチも同じで、2本の物理ケーブルで並列に繋がっているような超・引き分け状態の場合は、最後の手段です。
「相手のスイッチの、どのポート番号から送られてきたか(ポートID)」を比較し、ポート番号(数字)が小さい方を優先します。
—
5. 実践編:Ciscoスイッチでの確認とコスト調整
理論を学んだら、実際のネットワーク機器(Cisco製スイッチ)でどのように表示され、どのように設定を変更できるのかを見てみましょう。実務でもそのまま使える設定例を用意しました。
STPの状態を確認するコマンド
スイッチにログインし、以下のコマンドを叩くことで、どのポートがどんな役割(RPやDP)になっているか、コストがいくらになっているかが一目瞭然でわかります。
Switch# show spanning-tree vlan 1
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 0010.5a0d.1234
Cost 4 <-- ルートブリッジまでの合計コスト
Port 1 (GigabitEthernet0/1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 0010.5a0d.5678
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Gi0/1 Root FWD 4 128.1 Shr <-- ルートポート(RP)に選定され、通信可能(FWD)
Gi0/2 Altn BLK 4 128.2 Shr <-- 非指定ポート(Altn)になり、ブロック(BLK)
上記の出力を見ると、Gi0/1 が Root(ルートポート)として通信を行い(FWD: Forwarding)、Gi0/2 が Altn(代替ポート/非指定ポート)としてブロック(BLK: Blocking)されているのがわかりますね。
パスコストを意図的に変更して、ルートをコントロールする
時には、「自動で決まったルートではなく、あえて別の太い回線をメインで使わせたい!」という場面が出てきます。そんなときは、手動でポートのコスト値を書き換えてあげましょう。
以下は、特定のインターフェースのコスト値を手動で変更し、優先度をコントロールする設定ファイルの例です。
!
! スイッチのグローバルコンフィギュレーションモードに入ります
Configure terminal
!
! 意図的に経路を変更したいインターフェースを選択します
interface GigabitEthernet0/2
!
! このポートのSTPコストを「2」に手動設定します(標準の「4」より低くする)
! コストを低くすることで、STPに「こちらの方が通りやすい道だ」と認識させます
spanning-tree vlan 1 cost 2
!
end
!
! 設定を保存します
write memory
このように、コストを「4」から「2」に下げてあげることで、スイッチは「おっ、Gi0/2 の方が近道だな!」と判断し、自動的に Gi0/2 をメインのルートポート(RP)に切り替えてくれます。
—
まとめ:ネットワークの美しき「自律分散」
スパニングツリープロトコル(STP)の仕組み、いかがでしたでしょうか?
人間が1台ずつ「君はここを通行止めにしてね」と指示をしなくても、スイッチ同士が自律的に「パスコスト」を計算し、4つの判定ルールに従って「ルートポート」「指定ポート」を決めていく。そして、もしどこかの回線が切れたら、即座にそれを検知して「非指定ポート」のゲートを開放する。
この一連の動きは、まるでネットワーク自体が生きているかのように美しく、そして合理的ですよね。
インフラエンジニアとしての第一歩は、こうしたプロトコルの「健気なルール」を愛し、理解してあげることから始まります。コマンドひとつでその動きをコントロールできたときの感動を、ぜひ実機やシミュレータで味わってみてください。
一歩ずつ、焦らずに進んでいきましょう。あなたのインフラエンジニアとしての旅路を、心から応援しています!
コメント