こんにちは!ネットワークの世界へようこそ。
LANケーブルをスイッチに挿すだけで、PC同士が通信できるようになる……普段は何気なく使っているイーサネットですが、その裏側では「ブロードキャストストーム」というネットワーク崩壊の危機を避けるため、スイッチたちが常に緊迫したやり取りを繰り広げています。
その主役となる技術がSTP(Spanning Tree Protocol:スパニングツリープロトコル)です。
STPの目的は、ケーブルが輪っか(ループ)状に繋がっていても、どこか1箇所を論理的に「通行止め」にしてパケットの暴走を防ぐこと。そして、その通行止めを決めるためには「ネットワーク全体のリーダー(中心となる親玉スイッチ)」を1台決めなければなりません。このリーダーを「ルートブリッジ」と呼びます。
今回は、ネットワーク初心者が最初につまずきやすい「ブリッジID(Bridge ID)の構造」と「ルートブリッジが選ばれるアルゴリズム」について、身近な例えを交えながら世界一わかりやすく紐解いていきます。一歩ずつ一緒に理解していきましょう!
—
1. ルートブリッジ選出は「クラスの生徒会長選挙」と同じ!
スイッチの世界では、電源が入った瞬間に「誰がリーダー(ルートブリッジ)になるか」を決める選挙が始まります。
この選挙で使われるのが、各スイッチが持っている「名刺」= ブリッジID(Bridge ID: 略してBID)です。
スイッチたちは、BPDU(Bridge Protocol Data Unit)という「選挙ハガキ」のようなパケットをお互いに送り合い、「僕の名刺はこれです!」「私の名刺はこれよ!」と名刺交換を行います。
では、どんな名刺を持っているスイッチがリーダーに選ばれるのでしょうか?
日常の感覚だと「数字が大きい方が強そう」と思いがちですが、ネットワークの世界(特にルーティングやSTP)では「数字が小さい(若い)方が偉い(優先度が高い)」というゴルフスコアのようなルールが基本になります。
【ルートブリッジ選出の大原則】
全スイッチの中で、最も「ブリッジID(BID)」の数値が小さいスイッチが勝者(ルートブリッジ)になる!
とてもシンプルですよね。では、その「ブリッジID」の中身はどうなっているのでしょうか?
—
2. ブリッジID(BID)の解剖図:名刺に書かれた2つの情報
ブリッジIDは、合計64ビット(8バイト)のデータで構成されています。
難しく聞こえますが、中身を分解すると次の2つが合体しているだけです。
1. ブリッジプライオリティ(Priority):16ビット
2. MACアドレス(MAC Address):48ビット
郵便配達で例えるなら、「速達度(プライオリティ)」+「固有の住所(MACアドレス)」のような組み合わせです。
+-----------------------------+------------------------------------+
| プライオリティ (16ビット) | MACアドレス (48ビット) |
+-----------------------------+------------------------------------+
← 先頭(ここを最初に見る)→ ← 同点だったときの判定に使う →
① ブリッジプライオリティ(設定で変えられる「やる気度」)
名刺の先頭に書かれている「優先度」です。標準的な初期値は 32768 に設定されています。
エンジニアがコマンドを入力することで、「このスイッチをリーダーにしたいから、数値を小さくしよう!」とコントロールできる値です。
※なお、現代のネットワーク(PVST+など)では、この16ビットの内訳が「プライオリティ値(4ビット)」+「VLAN ID(12ビット:拡張システムID)」に分かれていますが、まずは「全体で数字が小さいほど優先される」と覚えておけば現場でも困りません。
② MACアドレス(世界に1つだけのマイナンバー)
スイッチの基板に焼き付けられた、世界で重複しない固有のハードウェア番号です。
もし複数のスイッチでプライオリティが同じ(全員初期値の 32768 など)だった場合、このMACアドレスを比較して、一番数字が小さいスイッチがルートブリッジに選ばれます。
—
3. 選出アルゴリズム:いざ、開票シミュレーション!
具体例で見てみましょう。3台のスイッチ(Switch-A, Switch-B, Switch-C)が三角形に接続されているとします。
| スイッチ名 | プライオリティ | スイッチのMACアドレス | 合計のブリッジID(BID) |
| :— | :— | :— | :— |
| Switch-A | 32768 | 00:11:11:11:11:11 | 32768.00:11:11:11:11:11 |
| Switch-B | 32768 | 00:22:22:22:22:22 | 32768.00:22:22:22:22:22 |
| Switch-C | 4096 | 00:33:33:33:33:33 | 4096.00:33:33:33:33:33 |
ステップ1:プライオリティを比較する
まずスイッチたちは、名刺の先頭にある「プライオリティ」を比べます。
- Switch-A:
32768 - Switch-B:
32768 - Switch-C:
4096
一番小さい値はどれでしょうか?
そうですね、Switch-Cの 4096 です!
この時点で、Switch-Cが文句なしのルートブリッジ(リーダー)に決定します。MACアドレスを比べるまでもありません。
もしプライオリティが全員同じだったら?
もしエンジニアが何も設定せず、Switch-Cのプライオリティも 32768 のままだった場合はどうなるでしょうか?
1. プライオリティは全員 32768 で同点
2. 次の判定基準であるMACアドレスを比較する
- Switch-A:
00:11:... - Switch-B:
00:22:... - Switch-C:
00:33:...
3. 一番値が小さい Switch-A がルートブリッジに決定!
このように、ルールさえ分かってしまえば判定は驚くほどロジカルです。
—
4. 実践編:Ciscoスイッチでの設定と確認コマンド
現場のエンジニアは、MACアドレスの偶然の大小でルートブリッジが決まってしまうのを嫌います。なぜなら、性能が低くて古いスイッチが、たまたまMACアドレスが小さかったせいでネットワーク全体の中心(ルートブリッジ)になってしまうと、通信のボトルネックや遅延の原因になるからです。
そのため、必ず「意図してプライオリティを小さく設定」します。
Cisco IOSでのルートブリッジ固定コマンド例
! ========================================================
! VLAN 1 において、Switch-A を絶対にメインのリーダーにする設定
! ========================================================
! 設定モードに入る
Switch-A# configure terminal
! プライオリティを直接小さな値(4096)に指定する場合
! (※プライオリティは4096の倍数で設定するルールがあります)
Switch-A(config)# spanning-tree vlan 1 priority 4096
! または、Cisco独自のお手軽コマンドで自動的に下げることも可能です
! Switch-A(config)# spanning-tree vlan 1 root primary
Switch-A(config)# end
Switch-A# write memory
状態確認コマンド:show spanning-tree を読み解く
設定が反映されたか確認してみましょう。現場で毎日叩く重要コマンドです。
Switch-A# show spanning-tree vlan 1
VLAN0001
Spanning tree enabled protocol ieee
!--- ここから上:現在選ばれている「ルートブリッジ」の情報 ---!
Root ID Priority 4097 <-- 設定値4096 + VLAN 1 の合計値
Address 0011.1111.1111
This bridge is the root <-- 「自分がリーダーです!」という宣言
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
!--- ここから下:コマンドを叩いている「自分自身」の情報 ---!
Bridge ID Priority 4097 (priority 4096 sys-id-ext 1)
Address 0011.1111.1111
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
(以下、ポートの状態が続きます...)
上記のように
コメント