【実務・中級編】 STPパスコスト(Path Cost)とポート役割の決定プロセス – インフラ・物理&L2/L3ネットワーク基礎実践ガイド

ネットワークの海へようこそ。
Web APIの設計やモダンなクラウドインフラの構築に日々奔走しているあなたなら、「冗長化」という言葉に幾度となく救われてきたはずです。アプリケーション層でのロードバランスやデータベースのレプリケーション、そして何重にも張り巡らせた可用性担保の仕組み。

しかし、その足元を支えるL2(レイヤー2)の世界——物理スイッチの配線はどうなっているでしょうか。
「とりあえず冗長化のためにケーブルを二重に挿したら、ネットワーク全体が完全に沈黙した」
――新米エンジニアの頃、誰もが一度はこのL2ループの悪夢を経験します。このループの暴走を防ぐために立ち上がる不世出のプロトコル、それが STP(Spanning Tree Protocol / IEEE 802.1D) です。

今回は、STPがどのようにトポロジを計算し、どのポートを生かしてどれを塞ぐのか。その心臓部である 「パスコスト(Path Cost)」 と 「ポート役割の決定プロセス」 に焦点を当て、シニアインフラエンジニアの視点から徹底的に解剖します。

—

1. なぜSTPが必要なのか? L2ループの恐怖と決定論理

IPルーティングの世界(L3)には、TTL(Time to Live)というパケットの寿命が存在するため、うっかりルーティングループを作ってもパケットが無限ループして即座に全滅することは稀です。しかし、イーサネット(L2)の世界にはそのようなパケット寿命の概念がありません。

ブロードキャストフレーム(ARPやDHCPリクエストなど)が冗長化されたスイッチ間を流れ始めると、スイッチは受信したポートとは別のすべてのポートへそのフレームを無慈悲に転送(フラディング)します。これが幾何級数的に増幅され、わずか数秒でネットワーク帯域は飽和し、CPU使用率は100%に張り付き、管理画面すら開かなくなる――これがL2ループの正体です。

STPは、このループを防ぐために、物理的な冗長トポロジの中から「ループのない一本の木(Spanning Tree)」を論理的に計算し、一部のポートを意図的に「ブロック(通信遮断)」します。その計算の勝敗を決める絶対的な物差しが、「パスコスト(Path Cost)」 なのです。

—

2. パスコスト(Path Cost)の正体とIEEE標準の変遷

スイッチが「ルートブリッジ(全体の根となる頂点スイッチ)」から自分自身までの距離を測る際、経由するリンクの帯域幅(速度)に応じてコストが加算されます。このコストの蓄積が パスコスト です。

IEEE 802.1D(従来のSTP)およびIEEE 802.1W(RSTP)では、リンクの速度に応じて標準的なパスコストが定義されています。ここでインフラエンジニアが絶対に知っておくべきトラップが、「コストの基準値には2種類の規格が存在する」 という点です。

IEEE 802.1D-1998(旧標準) vs IEEE 802.1t(新標準 / 長いパスコスト)

| リンク速度 | 旧パスコスト(16bit) | 新パスコスト(32bit / デフォルト推奨) |
| :— | :— | :— |
| 10 Mbps | 100 | 2,000,000 |
| 100 Mbps | 19 | 200,000 |
| 1 Gbps | 4 | 20,000 |
| 10 Gbps | 2 | 2,000 |
| 100 Gbps | N/A (サポート外) | 200 |
| 1 Tbps | N/A (サポート外) | 20 |

現代のデータセンターやオフィスフロアでは、1Gbpsや10Gbps、さらには40Gbps/100Gbpsが混在しています。もし古い「旧標準」のまま運用していると、1Gbpsと10Gbpsのパスコストの差が「4」と「2」になり、高速なリンクの利点を正確に反映した優先度制御ができなくなります。
そのため、現在のCisco IOSをはじめとする多くのモダンなOSでは、デフォルトで32bitのパスコスト(long形式)が採用されています。

—

3. ポート役割決定の4大判定基準(タイブレーカーの優先順位)

ネットワーク全体でルートブリッジが選出された後、各スイッチのポートは必ず以下の3つの役割のいずれかに割り当てられます。

1. Root Port(RP / ルートポート): ルートブリッジに最も近い、自分自身のポート(各non-rootスイッチに必ず1つ)
2. Designated Port(DP / 指定ポート): セグメント(スイッチ間のリンク)ごとに、ルートブリッジへ向けてフレームを送り出す代表ポート
3. Alternate / Backup / Discarding Port(非指定ポート): ループを防ぐためにトラフィックをブロックするポート

どのポートがどの役割を担うかは、以下の4つの判定基準(プライオリティ)を上から順に比較して決まります。この「上から順に負けたら終わり」という厳格な決定論理を体に叩き込む必要があります。

[判定 1] 相手から通知される「ルートブリッジID」が最も小さいか?
   ↓ (同点なら)
[判定 2] 自身の「パスコスト(Root Path Cost)」が最も小さいか?
   ↓ (同点なら)
[判定 3] 相手の「送信元ブリッジID」が最も小さいか?
   ↓ (同点なら)
[判定 4] 相手の「送信元ポートID(Port Priority + Port番号)」が最も小さいか?

実務の現場でトラブルシューティングを行う際、「なぜこのポートがブロックされて、あっちのポートがフォワードしているんだ?」と首をかしげたときは、必ずこの4つのステップを上から順番にシミュレートしてください。大抵は「判定3(ブリッジID)」や「判定4(ポートID)」のタイブレーカーで勝負がついています。

—

4. 実務で役立つ設定例と検証コマンド

では、実際のネットワーク機器(Cisco Catalystスイッチを想定)で、パスコストを手動調整し、意図した通りのポート役割に制御するコンフィギュレーションを見てみましょう。

シナリオ:リンク帯域に応じたパスコストの確認と強制変更

デフォルトではリンク速度に応じて自動計算されるパスコストですが、アップリンクのトラフィックエンジニアリング(特定の太い回線にメインのパスを通したい場合など)において、手動でパスコストを書き換えるテクニックはインフラ運用の現場で頻繁に使われます。

[SW-A (Root)] --(1Gbps)---- [SW-C (Non-Root)]
    |                           |
  (1Gbps)                     (1Gbps)
    |                           |
[SW-B (Non-Root)] --(1Gbps)--+ (ここにループがある構成)

1. パスコスト計算方法の明示的な指定(Cisco IOS)

モダンなネットワークでは、必ず32bitのロングパスコストを使用するよう全体に宣言します。

! すべてのスイッチでロングパスコスト形式を有効化する
SW-A(config)# spanning-tree pathcost method long
SW-B(config)# spanning-tree pathcost method long
SW-C(config)# spanning-tree pathcost method long

2. 特定ポートのパスコストを手動変更する

例えば、GigabitEthernet 0/1 のパスコストを意図的に小さく(優先度を高く)し、ルートポートとして強制的に選択させたい場合の設定です。

SW-B(config)# interface GigabitEthernet 0/1
! デフォルトの1Gbpsのコスト(20000)を、あえて「100」に書き換えることで最優先パスに見せかける
SW-B(config-if)# spanning-tree cost 100
SW-B(config-if)# end

3. 状態の検証とデバッグ

設定が意図通りに反映され、どのポートがルートポート(RP)になり、どのポートがブロック(Altn)されているかを確認します。

SW-B# show spanning-tree vlan 1

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    24577
             Address     0011.2233.4455
             Cost        100          <-- 手動変更したコストが反映されている
             Root port   Gi0/1        <-- ルートポートとして選出
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Interface-name     Role Sts Cost      Prio.Nbr Type
  ------------------- ---- --- --------- -------- --------------------------------
  Gi0/1               Desg FWD 100       128.1    P2p 
  Gi0/2               Altn BLK 20000     128.2    P2p  <-- ループ防止のためブロック中(Alternate)

この show spanning-tree の出力結果をパッと見て、Role(役割)と Sts(ステータス:FWD=Forwarding / BLK=Blocking)が設計通りになっているかを瞬時に読み取れるかどうかが、ネットワークエンジニアの腕の見せ所です。

—

5. まとめとシニアからの実務Tips

STPのパスコストとポート決定ロジックは、一見すると枯れた古い技術のように思えるかもしれません。しかし、クラウドやコンテナが全盛の現代であっても、物理・仮想スイッチが入り交じるデータセンターの基盤、あるいはオフィスのフロアスイッチの足元では、今この瞬間もこの決定論理が動き続け、ネットワークの崩壊を防いでいます。

最後に、現場で役立つ実践的なTipsをいくつか授けます。

  • デフォルト任せにしない: STPのプライオリティやパスコストをデフォルト(すべておまかせ)のままにしていると、ハードウェアの換装や一時的なケーブルの差し替えで「意図しないスイッチがルートブリッジに昇格してしまう」というカオスな障害を引き起こします。主要なスイッチのプライオリティ(spanning-tree vlan X root primary 等)や、冗長パスのコストは必ず設計書に明記し、手動でコントロールしましょう。
  • RSTP(IEEE 802.1w)やMSTP(802.1s)への移行: 従来の遅いSTP(802.1D)は現代のインフラスピードには耐えません。収束が高速なRSTPや、VLANごとにツリーをまとめられるMSTPを必ず採用してください。ただし、パスコストを比較してポート役割を決める大原則のロジックは、RSTPやMSTPになっても何一つ変わりません。

プロトコルの裏側でパケットとタイブレーカーがどう処理されているのかを頭の中でイメージできるようになれば、どんな複雑なL2トポロジも怖くありません。さあ、安全で堅牢なネットワークを構築しに行きましょう!

コメント

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