スパニングツリー/STPとは

f:id:Tsunamayomayo:20210610233252p:plain

1.まえがき

どうもです、Sorasukeです。
テストが終わり、ようやく色々な事が落ち着いたと思えば新しくやる事が増えたりとなかなかに忙しい毎日を送っています。
先々週あたりで書こうと思ってたんですがなかなか書く時間が取れなかった内容がいくつかありますので、それらについてを今週は何個か上げようと思います。
今回はSTPことスパニングツリープロトコルです。

2.事前知識

スパニングツリーは、スイッチを使って経路冗長化する際に発生するループの発生を抑えるものです。

経路冗長化を行うと、一般にブロードキャストストームというものが発生します。
ネットワーク機器は通常、ブロードキャスト通信というものを一定期間ごとに自動で行っています。これは、ブロードキャストアドレスというアドレスを使用して同一LAN上の全てのノードにデータを送る通信です。

一般にブロードキャスト通信はARPDHCP、ルーティングアップデートパケットの通信などで行われています。一度WireSharkを使ったことがある方は見たことがあるかもしれません。

ブロードキャスト通信は通常すべてのネットワーク機器がフレームを受信した時点で伝送が終了するのですが、冗長化したネットワークでネットワークが円環状になっていると延々ブロードキャスト通信を横に投げてしまうので、帯域を圧迫して通信のほとんどがブロードキャスト通信で圧迫され、他の通信ができなくなる、といったことが発生します。
はい、これをブロードキャストストーム、と呼びます。

これを予防するための機能がスパニングツリーです。

3.スパニングツリーとは

以下のように経路冗長化したネットワークがあるとします。
f:id:Tsunamayomayo:20210610225314p:plain

このネットワークの経路を、以下のように一部遮断します。
この遮断したポートをブロッキングポートと呼びます。
f:id:Tsunamayomayo:20210610225501p:plain

そうすることで、以下のようなツリー構成になります。
これにより、物理的には円環状に構成されたネットワークが論理的にはツリー構成となっているため、ブロキャスストームは発生しなくなります。 f:id:Tsunamayomayo:20210610225639p:plain

ちなみにですが、ここで上のルートに障害が起きた場合は自動で上のルートを遮断し、下側のルートを使って通信を行うように経路が切り替わります。
このようなツリー型の構成ではトップのネットワーク機器をルートブリッジなどと呼んだりします。

4.ルートブリッジの決め方

先ほど例を上げたネットワークではルートブリッジが分かりやすかったと思いますが、実際には複雑なネットワークが絡み合っており、想像するのが難しいと思います。

そこでどのようにルートブリッジが決められているかを知ることで、どのようなネットワークでもルートブリッジが分かるようになりましょう。

ルートブリッジは、ブリッジIDを使って計算されます。
計算には、プライオリティとMACアドレスの二つの数字が使用されます。
このブリッジIDが最も小さい値のスイッチがルートブリッジとして設定され、ツリー構造のトップになります。
f:id:Tsunamayomayo:20210610230557p:plain

このプライオリティは手動で設定することができます。

5.プライオリティの設定方法

STPの設定に必要なVLANやtrunkの設定については省略します。
最初からの設定が気になる、パケトレで実践してみたいという方は、以下のサイトを参考にするなどしてください。
peace3110.oops.jp

Switch>enable
Switch#conf t
Switch(config)#spanning-tree vlan 10 priority 8192
Switch(config)#end
↓設定の確認
Switch#show spanning-tree vlan 10

6.BPDU

ここは少し応用編というか、ちょっと難しいところです。
先ほど障害発生時に自動でうんぬんという話を書きました。
この処理はBPDUというフレームによって行われています。
このBPDUは色々な要素を使用しています。
全部書くと大変なので、いくつか抜粋して紹介します。

RootID

ルートブリッジのブリッジIDです。
8byteのデータサイズです。
ルートブリッジやブロッキングポートの判別に使用されます。

BridgeID

スイッチ自身のブリッジIDです。
同じく8byteのデータサイズです。
ルートブリッジやブロッキングポートの判別に使用されます。

Max Age

BPDUの最大保持時間です。
2byteのデータサイズです。
デフォルトの設定値である20sを超えてもBPDUが返ってこない場合は障害が発生したと認識されます。

その他

全体像は以下のサイトを参考にしてください。
www.infraexpert.com

6.おわりに

バイト先でSTPについての講師をやることがあったので、そのときに勉強した内容を折角なのでまとめてみました。
ご不明点などあればコメントいただければ返すかもしれません。
なかなか書けていませんでしたが、やっぱり書くと自分の中でスッとまとまる感覚がしていいですね、勉強会を開催したくなる…とまではいきませんがLT会などで人に話したくなる気持ちは少しわかったかもしれません。
それでは、また。