STPの概要と本質

スポンサーリンク
スポンサーリンク

STPの概要

STPとは、Spanning Tree Protocol(スパニングツリープロトコル)の略で、Ethernetの経路冗長化の技術です。

Ethernetの経路を物理的に冗長構成(複数経路)にすると、通常はL2ループが発生し、使い物にならないネットワークになります。ですが各スイッチでこのSTPを有効にすることで、論理的にL2ループの無い単一経路にすることができます。そして、もしその単一経路が障害で使えなくなった場合、自動で別の経路に切り替えることができます

近年はLinkAggregationという技術により、L2の経路冗長と同時に負荷分散も可能になりましたので、実装されることは少なくなってきています。STPの中にもPVSTP, Rapid PVSTP, MSTPという、VLAN単位での負荷分散をするものもありますが、LinkAggregationに比べると設定の容易性も機能も劣ります。

また、WANの網内での経路冗長への適用として、STPから発展したSPBという技術がやや注目されていることにも触れておきます。

スポンサーリンク

STPの本質

STPは設定は比較的簡単ですが、きちんと理解するのは意外と難しいです。STPを簡単に覚えるためには、本質を掴むことが大切です。

STPの本質は、以下に集約できます。

  1. まずRootBridgeが決まり、RootBridgeを最上流としてBPDUが下流スイッチに流れていく。
  2. BPDUが流れる向きに依って、各スイッチがUpLinkとDownLinkを区別する。BPDUを受信するポートUpLinkBPDUを送信するポートDownLinkとなる。
  3. UpLinkについては、Path Costが最小の1ポートのみを開放し(Root Portのこと)、他のポートをブロックする(RSTPで言うAlternate Port, 代替ポートのこと)。
  4. DownLinkについては基本的にすべて開放する(Designated Port)が、例外的に自分のスイッチ内でループする場合は片方をブロックする(RSTPで言うBackup Portのこと)。

スポンサーリンク

この本質を押さえれば分かる通り、この次に押さえるべき重要な事項が、BPDUの動きを把握することです。

STPは種類が色々ありますが、共通して言えるのは、先程の本質とBPDUの動きさえ押さえてしまえば、大抵の動作は理解できる、ということです。

ここでは分かり易い説明を試みるため、教科書に書かれているような説明とは違ったアプローチをしますが、本質的には同じことを言っています

BPDUの動作を理解する

STPではまず最初にRoot Bridgeを決めます。最小のBridge IDを持つスイッチがRoot Bridgeになります。

このBridge IDは以下のように表現されます。

[Priority(0000〜FFFF)]:[MAC address(0000:0000:0000〜FFFF:FFFF:FFFF]

Priority を小さくすれば、MACアドレスの大小に関係なくRoot Bridgeになるので、設定次第でどのスイッチをRoot Bridgeにするかを変更できます。

このRoot Bridgeを頂点としてBPDUが下位のスイッチに伝搬されていきます。例えるならば、Root Bridgeが源泉BPDUが水です。BPDUは上流(Root Bridge)から下流(下位スイッチ)に流れていきます。

BPDUには流れの強さがあり、当然強いほうから弱い方に押し流されるので、強いほうが上流、弱いほうが下流になり、弱いほうはBPDUの送信を止めます。

スポンサーリンク

流れの強さというのはPath Cost送信元Bridge ID送信元Port IDの3つで決まります。より流れの強いBPDUのことを、『優位なBPDU』と呼びます。上記の例では、Path Costがともに4で同じであるため、送信元Bridge IDを比較し、小さいほうであるSW#2から出るBPDUが優位なBPDU、すなわち流れの強いBPDUになりますので、SW#3はBPDUの送信を止めます

下位の各スイッチにおいて、BPDUを受信するポートがUpLink(上流へ向かうポート)、BPDUを送信するポートがDownLink(下流へ向かうポート)です。

このUpLinkは、uplinkfastで使われてるのと同じ意味です。

UpLink(ルートブリッジへのルート)が複数ある時は、優位なBPDUを受信しているポートのみがRoot Portとして通信できるようになり、それ以外のポートはBlock Portとなります(RSTPにおいてはAlternate Port(代替ポート)として定義されます)。

また、DownLinkは基本的には全てDesignated Portとして通信許可されますが、例外として、自身で送出したBPDUがSTP非対応のハブ経由で別ポートに戻ってくる場合は、優位なBPDUを送信する1ポートのみがDesignated Portとして通信許可され、それ以外はBlock Portとなります(RSTPにおいてはBackup Portとして定義されます)。

スポンサーリンク

補足ですが、Backup PortはSTP対応スイッチと非対応ハブを接続するので、素人目から見てL2ループの発生を思わせるためか、実装されているのを見たことがありません

さらに補足ですが、ハブを介さなくても同じスイッチの別ポートをLANケーブルを直結すれば片方がBackup Portになりますが、この構成に意味はありません。結線誤り時のループ回避にはなります。

まとめ

  • BPDU受信ポートはUpLinkと呼ばれ、1ポートだけ通信可(Root Port)でそれ以外は通信不可(Alternate Port: 代替ポート)
  • BPDU送信ポートはDownLinkと呼ばれ、基本全て通信可(Designated Port)、ただし例外で自身のBPDUを送受信し合うポートは、1ポートだけ通信可(Designated Port)になり、それ以外は通信不可(Backup Port)

Path Costの決まり方

Ethernetの速度に応じて Port Costが決められており(ただし設定で変更可)、Root Bridgeからそのスイッチまでに経由するポートのPort Costを合算したPath Costを、BPDUで伝搬します。Root Bridge は PathCost=0で下位スイッチにBPDUを送信します。

スポンサーリンク

1つのスイッチからDownLinkへ送信されるBPDUは必ず同じPath Costを持っています。つまり、スイッチはBPDUを受信する際に受信ポートのPort CostをPath Costに足します。このとき対向スイッチのBPDU送信ポートのPort Costは無関係です。

Bridge ID と Port IDは、1つ上流にあるスイッチのものを利用します。同じスイッチから2つの経路でBPDUを受信しているときは Path Costと Bridge ID は同一ですので、 Port IDにより優位性が決まります

まとめ

  • Port Cost は UpLink に対して適用し、DownLinkにも影響を与える
  • Port PriorityはDownLinkに対して適用し、直下のスイッチのみに影響を与える

STPとLoop Detection(ループディテクション)の違い

STPのことを”ループ防止を実現するもの“、とする記載もたまに見かけますが、個人的にはこの表現は目的を外していると考えています。

STPの本質は経路冗長であり、物理的にL2ループ状態が作られているのが正しい構成なのです。そのため、ループが発生したときにループを止めることが出来ても、人間がログなりSNMPtrapを見ても、それが正しい構成なのか誤りなのかが判断しにくいです。

一方、Loop Detectionという機能はまさにループ防止・検知のための技術なので、アラームが来れば、それはループが発生したことを意味しますので、人間にとって分かり易いです。

また、Loop Detectionでは、STPでは実現できないループ検知手法を持っていることが多いです。

例えば、STP有効スイッチの配下にあるハブでループが起きたときは検知できませんが、Loop Detection有効スイッチの配下にあるループは検知可能です。

また、メーカによってはuplink, downlinkを設定し、uplinkではループ検知フレームを送出するが、検知時にポートをブロックしない、という設定を入れることができます。

STPとLoop Detectionの違いは、まさに目的の違いであり、Loop Detectionのほうがループ検知・防止に特化しているのです。

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク