こんにちは!ネットワークの世界へようこそ。インフラエンジニアとして日々ルーターやスイッチと格闘している私ですが、初めてネットワークの仕組みを勉強したとき、一番「なんだこれ!?」と頭を悩ませたのが、今回解説する STP(スパニングツリープロトコル)のポート状態遷移 です。
「ループを防ぐってどういうこと?」「いきなり通信が止まるんだけど!?」――そんな不安や疑問を抱えている初学者の方も多いはずです。
今回は、このSTPがネットワークの暴走を防ぐために、ポートをどのようなステップで慎重に「開通」させていくのかを、身近な例えを交えながら一緒に一歩ずつ紐解いていきましょう!
—
1. なぜSTPの「状態遷移」を知る必要があるのか?
オフィスのネットワークを頑丈にするために、スイッチ同士を複数のケーブルで繋ぐ「冗長化(バックアップ)」は現場の基本中の基本です。しかし、ケーブルを輪っか(ループ)状に繋いでしまうと、中を流れるデータ(イーサネットフレーム)が永遠にぐるぐると回り続け、ネットワーク全体がマヒしてしまう「ブロードキャストストーム」という恐ろしい現象が起きます。
このネットワークの無限ループを自動で見つけ出し、「いざという時のために、普段はこのルートは塞いでおこう!」と交通整理をしてくれるのが STP です。
ただ、スイッチの電源を入れたり、新しいケーブルを挿したりしたとき、スイッチたちは「ここ、ループしてないよね……?」「どっちのルートが安全かな……?」とお見合い状態から話し合いを始めます。その結果、安全が確認されて実際に通信ができるようになるまで、いくつかの「ステップ(状態遷移)」を慎重に踏んでいくのです。この裏側の動きを知らないと、「新しいスイッチを繋いだのに、なぜか30秒くらい通信できない!」という現場のトラブルでパニックになってしまいます。
—
2. 郵便配達員に例えるSTPの4つのステージ
では、スイッチのポートが「ただの穴」から「安全な通信路」になるまでのドラマを、郵便配達の流れに例えて4つの段階で見ていきましょう。
私たちが手紙を送るとき、いきなり配達員が全速力で飛び出すわけにはいきませんよね。まずは地図を確認し、道が通れるか確かめ、準備運動をしてから出発します。STPもまったく同じなんです。
[電源ON / ケーブル接続]
↓
1. Blocking (ブロッキング状態) …… 配達員は待機中。耳を澄まして指令を待つ
↓ (約20秒)
2. Listening (リスニング状態) …… 地図を確認し、自分たちの役割を話し合う
↓ (約15秒)
3. Learning (ラーニング状態) …… 宛先リスト(MACアドレス)を作り始める
↓ (約15秒)
4. Forwarding (フォワーディング状態) … ついに配達(通信)スタート!
① Blocking(ブロッキング状態):まずはじっと待機
- どんな状態?:ループを防ぐために、「今は通信しちゃダメ!」とガチガチに封鎖されている状態です。
- 中の動き:データ(イーサネットフレーム)を転送することは一切できません。ただし、周囲のスイッチと「生きてる?」「ループしてない?」を確認するための合図(BPDU:Bridge Protocol Data Unitという制御用パケット)を受信することだけはできます。
- 例え:配達員がスタート地点で、まだ地図を開かずにじっと待機している状態です。
② Listening(リスニング状態):役割分担の会議中
- どんな状態?:ブロッキングを解除しても大丈夫そうな雰囲気を察知し、「このポートを使って通信してもループしないか?」を本格的に話し合う状態です。
- 中の動き:相変わらずユーザーのデータ(PCからの通信など)は一切通しません。スイッチ同士でBPDUを「送信・受信」し合い、誰がリーダーで、どのポートを生かしてどのポートを塞ぐべきか、全体の方針を決定します。
- 例え:朝礼で「今日の担当エリアはここね、そっちは通行止めだからこっちのルートで行こう」とみんなで確認し合っているところです。
③ Learning(ラーニング状態):準備運動と学習の開始
- どんな状態?:話し合いが終わり、「よし、このポートは使って良さそうだ!」と方向性が決まった後、実際の通信を始めるための「準備運動」をする状態です。
- 中の動き:まだユーザーのデータ転送は始めませんが、流れてくるフレームをチラ見して、「どの端末(MACアドレス)がどのポートの向こうにいるのか」というマッピング(MACアドレステーブルの学習)をこっそり始めます。これをしておかないと、いざ通信が始まったときに「どこに送ればいいかわからない!」とスイッチが迷ってしまうからです。
- 例え:配達員がバイクに跨がり、地域の地理(どの家がどこにあるか)の復習を始めている状態です。
④ Forwarding(フォワーディング状態):いよいよ通信スタート!
- どんな状態?:準備がすべて整い、完全に通常営業を始めた状態です。
- 中の動き:ユーザーからのイーサネットフレームの転送はもちろん、MACアドレスの学習も、BPDUのやり取りも、すべてフル稼働で行います。
- 例え:配達員が元気よく飛び出し、実際に荷物を届け始めた状態です!
—
3. 実務で知っておくべき「タイムラグ」と現代の進化形
ここで鋭い方はこう気付くはずです。「えっ、BlockingからForwardingになるまで、結構時間がかかりませんか?」と。
その通りなんです。従来のSTP(802.1D)では、Listening(約20秒)とLearning(約15秒)という待ち時間がそれぞれ存在し、ポートが繋がってから通信できるようになるまで、なんと約30〜50秒ものタイムラグがありました。
現場でケーブルを挿し直したときに「あれ、通信できない!故障かな?」と冷や汗をかく原因の多くは、このSTPの優しすぎる(=慎重すぎる)待ち時間だったりします。
現場の救世主:RSTP(Rapid Spanning Tree Protocol)
現代のネットワークでは、この待ち時間を劇的に短縮した RSTP(IEEE 802.1w) が主流です。RSTPでは、面倒な状態を整理して、実質的に「Discarding(破棄:Blockingと同じ)」と「Learning」、「Forwarding」の3つにまとめました。
これにより、障害が発生したときや新しい機器を繋いだときでも、数秒(数秒以内のコンバージェンス)でパケットが走り出すようになっています。
—
4. 現場での設定・確認コマンド(Cisco Catalystの例)
それでは、実際のネットワーク機器(Ciscoスイッチなど)で、このSTPの状態がどうなっているかを確認・設定する方法を軽く見てみましょう。実務ではCisco CLIを使う機会が非常に多いので、基本の形を押さえておくと安心です。
スイッチのポートのSTP状態を確認する
現在のポートがどの状態(ForwardingなのかBlockingなのか)にいるのかを調べるには、show spanning-tree コマンドを使用します。
Switch# show spanning-tree interface GigabitEthernet0/1
---
VLAN0001
Spanning tree enabled protocol ieee
Port 1 (GigabitEthernet0/1) of VLAN0001 is designated
Port path cost 4, Forward priority 128, Designated root
Cost 4, Port ID 128.1,
Designated port link type is point-to-point (backwards-compatible)
-- 注目ポイント:現在のステータスがここに表示されます --
Transition status: FWD (Forwarding)
- 解説:この例では
Transition status: FWD (Forwarding)と表示されており、このポートは現在無事にデータを転送できる状態(Forwarding)にあることがわかります。もしここにBLKUやLISなどの表示が出ていれば、まだ待機中や会議中であることが一目でわかります。
【参考】ポートの立ち上がりを爆速にする設定(PortFast)
オフィスのデスクにあるPCを繋ぐポートなど、「絶対にループしない(端末しか繋がらない)」とわかっているポートに対して、わざわざ30秒も待たせるのは業務効率が落ちますよね。そこで、Ciscoスイッチでは以下のように設定して、状態遷移をスキップさせることがよくあります。
Switch(config)# interface GigabitEthernet0/2
Switch(config-if)# spanning-tree portfast
%Warning: portfast should only be enabled on ports connected to a single host.
Connecting hubs, concentrators, switches, bridges... to this interface
will cause temporary bridging loops. Use with caution.
Switch(config-if)# spanning-tree bpdtguard enable
- コードの解説:
spanning-tree portfast:このコマンドを入れると、PCなどが接続された瞬間にポートが即座にForwarding状態(厳密にはListeningとLearningをバイパス)になり、待ち時間をゼロにできます。spanning-tree bpduguard enable:PortFastを設定したポートに、うっかり別のスイッチが繋がれてループが発生するのを防ぐため、「もし他のスイッチからのBPDUが届いたら、即座にポートをシャットダウン(Err-disabled)する」という安全装置です。現場ではセットで覚えるのが鉄則です!
—
5. まとめ
今回は、STPのポート状態遷移(Blocking、Listening、Learning、Forwarding)について、郵便配達の例えを交えながら解説しました。
- Blocking:まずはじっと待機(データのやり取りはしない)
- Listening:みんなで話し合い(ループしないか会議)
- Learning:準備運動(MACアドレスの学習を開始)
- Forwarding:いよいよ出発!(通常通信スタート)
ネットワークが裏側で「安全のためにどれだけ慎重に確認を行っているか」がイメージできたのではないでしょうか。インフラのトラブルシューティングに出会ったときは、「今、このポートはどの状態にいるんだろう?」と立ち止まって考えてみると、意外とすんなり原因が見えてきます。
一歩ずつ、着実にネットワークの深淵を楽しみながらマスターしていきましょう!それでは、また次回の記事でお会いしましょう!
コメント