【入門編】 IEEE 802.1D Spanning Tree Protocol (STP) の基本概念と動作原理 – インフラ・物理&L2/L3ネットワーク基礎実践ガイド

ネットワークの世界へ足を踏み入れたばかりの皆さん、こんにちは!
インフラ・ネットワークの世界を日々探求しているプロトコルスペシャリストの私です。

ネットワークを勉強し始めると、必ずと言っていいほどぶ wall(壁)になるのが「L2ループ(レイヤ2ループ)」と、それを華麗に防いでくれる救世主「STP(Spanning Tree Protocol:スパニングツリープロトコル)」ですよね。

「スイッチの線をたくさん繋いだら、ネットワークが突然フリーズして通信できなくなった…」
そんな冷や汗モノのトラブル、実は現場のエンジニアなら誰もが一度は経験する通過儀礼です。なぜ通信がループするとネットワークが崩壊してしまうのか? そして、STPというプロトコルは一体どんな魔法を使ってそれを防いでいるのか?

今回は、難しい英語のヘッダーやビット数の計算はひとまず置いておいて、身近な「郵便配達」の世界に例えながら、STPの基本概念と動作原理を一緒に優しく紐解いていきましょう!

—

1. なぜネットワークで「ループ」が起きるといけないの?

まずは、私たちがなぜSTPという仕組みをわざわざ動かさなければならないのか、その「恐怖」からお話ししますね。

ネットワークを冗長化(トラブルに強くするために、同じ区間に予備のケーブルを何本も繋ぐこと)しようとして、スイッチ同士を複数のケーブルで繋いだことはありませんか?
「あっちのケーブルが切れても、こっちのケーブルがあるから安心!」……一見すると素晴らしい設計ですよね。

しかし、イーサネット(Ethernet)の世界には、宛先が分からないパケットや、みんな宛てのパケット(ブロードキャスト)を受け取ると、「入ってきたポート以外ぜんぶのポートにコピーを配りまくる」という、ちょっとおバカで素直すぎる習性があります。

これを郵便配達に例えてみましょう。

  • あなたが「この手紙の宛先、ちょっと分からないから、とりあえず全員に配って!」と郵便局員に手紙を渡しました。
  • 郵便局員Aは、繋がっているすべての道(ケーブル)へその手紙をコピーして送り出します。
  • 隣の郵便局員Bは、「おっ、新しい手紙だ!」と受け取り、また別の道へコピーを送り出します。
  • その手紙はぐるっと回って、最初の郵便局員Aのところに戻ってきてしまいました。
  • 郵便局員Aは「おっ、また新しい手紙だ!」と、さらにコピーを配ります。

……お分かりでしょうか? この瞬間、たった1通の手紙が無限にコピーされ続け、道路(ケーブル)は手紙の山で埋め尽くされ、他のまともな荷物が一切通れなくなってしまいます。 これが、ネットワークの世界における「ブロードキャストストーム(嵐)」であり、L2ループによるネットワークの窒息死です。

—

2. STPの登場:木(ツリー)の構造でループを断つ!

この無限ループの恐怖からネットワークを救い出すのが、IEEE 802.1Dで標準化された STP(Spanning Tree Protocol) です。

STPの名前の由来は、数学のグラフ理論に出てくる「全域木(Spanning Tree)」から来ています。難しく聞こえますが、要するにこういうことです。

「ネットワーク全体の中で、ループしている余計な道路(ケーブル)を、自動的に一時通行止めにして、枝分かれした『木』のようなきれいな一本道(階層構造)に作り変えちゃおう!」

STPが稼働しているスイッチたちは、お互いに「BPDU(Bridge Protocol Data Unit)」という専用の挨拶メッセージをこっそり交わし合い、「どの道を塞ぎ、どの道を生かすか」を会議で決めています。

この会議は、大きく分けて以下の3つのステップで進みます。一歩ずつ理解していきましょう!

—

3. STPの動作原理:3つのステップで決まる役割

STPの世界では、スイッチたちのリーダーを決め、そこから一番効率の良い道を選んでいきます。

ステップ1:ルートブリッジ(リーダー)の選出

まず、ネットワーク全体を束ねる「おやぶん(ボス)」であるルートブリッジ(Root Bridge)を1台決めます。
スイッチにはそれぞれ「ブリッジID(優先度 + MACアドレス)」という固有の名札がついています。この名札の中で、「一番数字が小さい(優先度が高い)やつがリーダーになろう!」というルールになっています。

ステップ2:ルートポートの決定

リーダー(ルートブリッジ)が決まったら、リーダー以外のスイッチたちは、「リーダーに一番早く、安くたどり着ける道(ポート)」を1つだけ選びます。これをルートポート(Root Port)と呼びます。
ここで使われるのが「パスコスト(Path Cost)」という概念です。ケーブルのスピードが速ければ速いほどコストは安くなります(例:1Gbpsならコスト4、100Mbpsならコスト19など)。リーダーへ行くまでに一番コストが安い道が選ばれます。

ステップ3:指定ポート(Designated Port)とブロッキングポートの決定

スイッチとスイッチの間を結ぶ「セグメント(枝)」ごとに、リーダー側から「こっちの道を通ってね!」と交通整理をする指定ポート(Designated Port)が決められます。
そして、リーダーへの最短ルートでもなく、指定ポートでもない、「余計なループを生んでしまうポート」が、悲劇を防ぐためのブロッキングポート(Blocking Port)=通行止めになります。

通行止めになったポートは、普段のデータ通信は一切できませんが、リーダーからの挨拶(BPDU)を受け取る耳だけは開いたまま、「いざという時(メインの道が切れた時)」にすぐ復活できるように待機しています。

—

4. 実務での設定例(Cisco Catalystスイッチの場合)

それでは、実際の現場でどのようにSTPが動いているのか、ネットワークの定番であるCisco IOSのコマンドを例に見てみましょう。実務でもそのまま参考になる設定です。

! ------------------------------------------------------------
! ネットワークの中心となるスイッチ(ルートブリッジ候補)の設定
! ------------------------------------------------------------
Switch_A# configure terminal
Switch_A(config)# spanning-vlan 1 priority 4096 
! ↑ プライオリティを小さく(4096)設定することで、このスイッチが
!   確実にルートブリッジ(おやぶん)に選ばれるようにします。
!    (デフォルトは32768です)

! ------------------------------------------------------------
! 端っこにある通常のスイッチ(アクセススイッチ)の設定
! ------------------------------------------------------------
Switch_B# configure terminal
Switch_B(config)# interface range GigabitEthernet 0/1 - 2
Switch_B(config-if-range)# spanning-tree portfast
! ↑ エンドユーザーのPCやサーバーが繋がるポートにはPortFastを設定し、
!   スイッチの電源が入ったときのSTPの待ち時間(リスニング・ラーニング)を
!    スキップしてすぐに通信できるようにします。

現場でトラブルシューティングを行う際も、現在のSTPの状態を確認するコマンドは必須のスキルです。

! ------------------------------------------------------------
! STPの現在の状態を確認するコマンド
! ------------------------------------------------------------
Switch_A# show spanning-tree vlan 1

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    4096
             Address     aabb.cc00.1100
            This bridge is the root  <-- 「このスイッチがルートだよ」と表示されています!
  
  Bridge ID  Priority    4096
             Address     aabb.cc00.1100
             
  Interface        Role Sts Cost   Prio.Nbr Type
----------------- ---- --- ------ -------- --------------------------------
Gi0/1             Desg FWD 4      128.1    P2p 
Gi0/2             Desg FWD 4      128.2    P2p

この show spanning-tree の出力結果で、Role が Desg(指定ポート)、Root(ルートポート)、そしてステータス Sts が FWD(Forwarding:転送中)なのか BLK(Blocking:ブロック中)なのかを確認しながら、パケットがどこを流れているのかを頭の中でイメージしていくのが、インフラエンジニアの醍醐味です。

—

5. おわりに

いかがでしたでしょうか?
IEEE 802.1D Spanning Tree Protocolは、一見すると複雑なアルゴリズムに見えますが、本質は「みんなでリーダーを決めて、みんなで最短ルートを計算し、余分な道をそっと塞ぐ」という非常にシンプルな助け合いの仕組みです。

物理的に線を繋ぐだけで簡単にネットワークが広がる現代だからこそ、このSTPのような見えない制御プロトコルが私たちのインフラを裏でしっかりと支えてくれています。

日々の運用やトラブルシューティングで「おや、これはループしているな?」と気づいたときは、ぜひ今回の郵便配達の例や、スイッチ同士の会話(BPDU)に思いを馳せてみてください。きっとネットワークの構造がより立体的に見えてくるはずです。

それでは、また次の深淵でお会いしましょう!

コメント

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