【初心者わかりやすく】スパニングツリーを理解する第1歩

 

LAN スイッチを冗長化して接続すると、どうしてもループ構成ができてしまいます。レイヤ2でループ構成になると、フレームが際限なく増え、MAC アドレステーブルも正しく作れなくなります。

ループを起こさずに冗長化を保つためのプロトコルとして、昔から使われ、今でもよく使われているのがスパニングツリー(STP)です。この記事では、スパニングツリーをざっくり理解するための考え方を、簡単な例で説明します。

この記事でわかること
  1. レイヤ2のループで何が起きるのか、スパニングツリーが何をするのか
  2. ルートブリッジの決まり方(ブリッジ ID)
  3. ルートブリッジからの「遠さ」の測り方(パスコスト)
  4. どのポートでデータ通信をブロックするのか(具体例)

スパニングツリーとは

スパニングツリーは、イーサネットの冗長化のためのプロトコルです。物理的にはループする形でつないでも、一部のポートでデータ通信をブロックすることで、レイヤ2のループが起きないようにします。使っている経路に障害が起きると、ブロックしていたポートが通信を始め、別の経路に切り替わります。

ループすると何が起きるのか

イーサネットのフレームには、IP パケットの TTL のような「何回転送されたら捨てる」という仕組みがありません。そのため、ループ構成でブロードキャストフレームが流れると、スイッチ間をいつまでも回り続け、コピーされながら増えていきます(ブロードキャストストーム)。

また、同じ送信元のフレームが別々のポートから届くので、スイッチは MAC アドレスがどのポートの先にいるのかを決められず、MAC アドレステーブルの学習先が入れ替わり続けます。

ブロードキャストが回り続ける・フレームが増え続ける(ブロードキャストストーム)・MAC アドレステーブルの 学習先が定まらない
図1 ループ構成で起きること

名前の由来は「広がる木」

スパニングツリー(Spanning Tree)は「広がる木」という意味で、木の根っこ(ルート)から枝が広がっていくイメージから名付けられています。木の枝は、先どうしがくっつくことがないので、ループにはなりません。

スパニングツリーでも、根っこにあたるスイッチ(ルートブリッジ)を決め、そこから枝のように経路を広げます。枝の先どうしをつなぐリンクがループの原因になるので、そこでデータ通信をブロックします。

ルートブリッジ(根っこ)枝の先どうしはつながない(ここでデータ通信をブロック)
図2 スパニングツリーのイメージ。根っこから広がる木の枝の先どうしはつながない

スパニングツリーを理解する手順

図2のとおり、まずはループ構成の中でルートブリッジを決めることが一番大事です。次に、各スイッチからルートブリッジまでの距離を計算し、どのスイッチの最短経路にも使われないリンクの片側でデータ通信をブロックします。

ルートブリッジを決める

ルートブリッジは、ネットワークの中で必ず1台だけです。ルートブリッジは、ブリッジ ID(ブリッジプライオリティ+MAC アドレス)で決まり、この値がもっとも小さいスイッチがルートブリッジになります。

Cisco Catalyst のブリッジプライオリティの既定値は 32768 で、0〜61440 の範囲で 4096 刻みに変更できます。ブリッジプライオリティが同じスイッチどうしでは、MAC アドレスが一番小さいスイッチがルートブリッジになります。

補足

Cisco の PVST+ や Rapid PVST+ では VLAN ごとにスパニングツリーを動かすため、ブリッジプライオリティに VLAN 番号を足した値(拡張システム ID)を使います。たとえば既定値のまま VLAN 1 なら、32768+1=32769 と表示されます。

何も設定しないと、MAC アドレスがたまたま一番小さいスイッチがルートブリッジになります。実際のネットワークでは、コアスイッチなどルートブリッジにしたいスイッチのプライオリティを小さく設定しておくのが一般的です。

ルートブリッジからの距離を計算する

ルートブリッジから「遠い」「近い」は、ルートブリッジまでの経路にあるポートのコスト(パスコスト)の合計で決まります。この合計をルートパスコストと呼びます。ポートの速度が遅いほどコストは大きくなり、コストの合計が大きいほどルートブリッジから遠いと考えます。

ポートの速度コスト(ショート)コスト(ロング)
10 Mbps1002,000,000
100 Mbps19200,000
1 Gbps420,000
10 Gbps22,000

コストの値には、IEEE 802.1D-1998 のショート(16 ビット)と、IEEE 802.1D-2004 のロング(32 ビット)の2種類があります。Cisco のスイッチでは、どちらを使うかを spanning-tree pathcost method で設定でき、既定はモデルやバージョンによって異なります。

使われないリンクの片側をブロックする

各スイッチは、ルートブリッジまでのルートパスコストが一番小さい経路を使います。どのスイッチの最短経路にも使われないリンクが残ったら、そのリンクの片側のポートでデータ通信をブロックします。どちら側をブロックするかは、次の具体例で見ていきます。

具体例

4台のスイッチが四角形につながった構成で考えます。下のスイッチをルートブリッジとし、各リンクのコストを図3のようにします。わかりやすくするため、コストは 10 と 100 という説明用の値にしています。

コスト 10コスト 10コスト 10コスト 100ルートブリッジSW-ASW-BSW-C
図3 具体例の構成とリンクのコスト(説明用の値)

左右の SW-A と SW-B は、ルートブリッジまでコスト 10 で行けます。一番上の SW-C は、SW-B を通る右回りならコスト 20(10+10)、SW-A を通る左回りならコスト 110(100+10)です。SW-C は、コストの小さい右回りの経路を使います。

コスト 10コスト 10コスト 10コスト 100ルートブリッジSW-ASW-BSW-CSW-A → ルート:10SW-B → ルート:10SW-C 右回り:20SW-C 左回り:110
図4 各スイッチからルートブリッジまでのコスト

では、各スイッチからルートブリッジまでの経路で、使われていないリンクはどこでしょうか。それは、SW-C と SW-A の間のリンク(図5の破線)です。

コスト 10コスト 10コスト 10コスト 100ルートブリッジSW-ASW-BSW-CSW-C と SW-A の間のリンクはどのスイッチの最短経路にも使われない
図5 どのスイッチの最短経路にも使われないリンク

このリンクの両端のどちらのポートでデータ通信をブロックすればよいのでしょうか。ここで、このリンクの上に端末がいると想像してみてください。その端末がルートブリッジに行くには、どちらのスイッチを通るのが近いでしょうか。

コスト 10コスト 10コスト 10コスト 100ルートブリッジSW-ASW-BSW-Cリンク上の端末SW-C 経由ならルートまでコスト 20SW-A 経由ならルートまでコスト 10
図6 リンクの上に端末がいると考える

SW-A を通ればコスト 10、SW-C を通ればコスト 20 なので、SW-A を通る経路が選ばれます。このリンクにとって、ルートブリッジへの出口は SW-A 側のポートになり、SW-C 側のポートは使われません。そのため、SW-C 側のポートでデータ通信をブロックします。

コスト 10コスト 10コスト 10コスト 100ルートブリッジSW-ASW-BSW-Cブロック指定ポート
図7 SW-C 側のポートでデータ通信をブロックする

このとき、リンクごとにルートブリッジに近い側のポートを「指定ポート」と呼びます。この例の SW-C と SW-A の間のリンクでは、SW-A 側が指定ポートです。両側のコストが同じ場合は、ブリッジ ID が小さいスイッチの側、それも同じならポート ID が小さい側が選ばれます。

ブロックしたポートの役目

ブロックしたポートも、スパニングツリーの制御フレーム(BPDU)は受け取り続けています。たとえば SW-B とルートブリッジの間のリンクが切れると、SW-C はブロックしていたポートを使って SW-A 経由でルートブリッジに向かうようになります。従来の STP(IEEE 802.1D)では、この切り替えに数十秒かかります。切り替えを速くしたのが RSTP(IEEE 802.1w)です。

この例で、各リンクの両端のポートがどうなったかをまとめると、次のようになります。

リンクルートブリッジに近い側(指定ポート)反対側
ルートブリッジ — SW-AルートブリッジSW-A(ルートポート:SW-A からルートへの出口)
ルートブリッジ — SW-BルートブリッジSW-B(ルートポート)
SW-B — SW-CSW-BSW-C(ルートポート)
SW-A — SW-CSW-ASW-C(ブロック)

ここまでがスパニングツリーを理解するための第1歩です。ルートポートや指定ポートといったポートの役割は、次の記事で詳しく説明しています。

まとめ

項目ポイント
ループの問題フレームが回り続けて増える(ブロードキャストストーム)。MAC アドレステーブルの学習先が定まらない
スパニングツリーの考え方ルートブリッジを根っことした木の形にし、枝の先どうしをつなぐリンクの片側をブロックする
ルートブリッジブリッジ ID(プライオリティ+MAC アドレス)が一番小さいスイッチ。Catalyst のプライオリティの既定値は 32768
遠さの測り方ルートブリッジまでのポートのコストの合計(ルートパスコスト)。速いポートほどコストが小さい
ブロックするポートどの最短経路にも使われないリンクで、ルートブリッジから遠い側のポート

コメント