なんかてきとうに

わりと個人的な忘備録的ですよ。

お勉強

Spanning Tree Protocol (STP)

Spanning Tree Protocol は LANに冗長性を持たせたいけれど、ループになると困るというときに使う技術です。

スイッチ2つを2本のケーブルで普通につなぐと、そこがループになってしまいます。

パケットをブロードキャストで飛ばすとスイッチ間をひたすら行ったり来たりするように。

するとすごくパフォーマンスが落ちます。

なので、2本つないでおくんだけど、普段は片方しか通信しないようにするのがSTPです。

3つのスイッチをそれぞれつないで3角形にしたときなんかも、1カ所使わないようにしてループをなくします。

で、どこかが切れたら今まで使わなくしていたところを使うように自動で切り替えます。

なんでTree(木)なのかというと、1つのスイッチを頂点にしたツリー構造を作るからです。

図がないと辛い。

Spannin Tree Protocol は IEEE 802.1d 802.1w 802.1s などで定められています。

普通STPと呼んでいるのは802.1dで、Rapid STP(RSTP) というと 802.1w Multiple STP(MSTP) というと 802.1sをさすことが多いです。

最新の802.1d(2004)では 802.1wを取り込んでしまっているので802.1dといたっときにどれをさすのかややこしいです。

ちなみに802.1sは 802.1Q (2005) に取り込まれています。

STP

いわゆるSTPについて。

STPはBPDU(Bridge Protocol Data Unit)というのをやり取りして 木を作ります。

手順は

木のトップを決める 使うノード間接続を決める、使わないノード間接続の役割を決める。 という3段階です。

まず、互いにBPDUを送りあって、もっともBridgeIDが低いノードを探します。それが木のトップになります。

次に木のトップが決まったらトップからBPDUを送信します。

他のスイッチは受け取ったBPDUのうち、コストが最も低いポートを上位との接続ポートにします。

この時点で木が完成します。

最後に接続されてるルートの両端とも上位との接続ポートに指定しなかったルートについて、

どちらが上位かを決めます。

ポートには DP(designated port) RP(root port) BP(blocked port) の3種のがあります。

ポートの状態には Blocking Listening Leartning Forwarding Disable の5種類があります。

実際の動作は

STPを動作させるとまずすべてのポートがBlockingになります、次にListeningになってBPDUを送受します。

そして、最もBridgeIDの低いスイッチ(Root Bridge)が決まると、そこからBPDUが順に流れてきます。

BridgeIDですが、16ビットの優先度と48ビットのMACアドレスによって決まります。

優先度については自由に決められるので、優先度を使ってRoot Bridgeを任意に選出させることができます。

Root Bridge以外のスイッチは、流れてきたBPDUのうちコストが最も小さなものが流れてきたポートをroot portにします。

コストが同じ時は送信してきたスイッチのBridgeIDが小さい方をroot portにします。 BridgeIDも一緒だった時はPortPriorityで決めます。

root port の対向は designated port になります。(なのでRoot Bridgeのポートは全部designated portです。)

ちなみにコストは標準だと インターフェース速度によって決まりますが、手動で任意の数値を割り当てることもできます。

重要なことですが、コストは"入ってきたインターフェース"のものをプラスするということです。

Root Bridgeから出たBPDUのコストはすべて0です、受け取った側がポートのコストを追加します。

そして、受け取ったBPDUのコストが一番小さいものをその他のポートから流します。