STPの概念
基本的に、スイッチによるネットワークはツリー型にすることになっている。トポロジとして見た場合のツリー構造の特徴は、接続されている各スイッチはツリーの起点(root、ルート)に向かう経路が1つしかないことである。見た目はすっきりしてよいが、ループ構造を持つネットワークと違ってリンクの障害が発生した場合に迂回経路がなく、ネットワークが分断されてしまうというデメリットがある。
一方STPとは、図2のようなループの存在するネットワークを、論理的にツリー型ネットワークとして使うプロトコルである。これは、ループの原因となっているスイッチ間の接続を論理的に切断し、トラフィックの送受信を行なうポートを決めることで実現される。
もし、このネットワークのどこかでリンクが切れた場合、STPは新しい論理ネットワークを構築しようとする。その結果、ループとなっていた部分が活性化し、迂回路として使えるようになるわけだ。
ここで、STPで用いる専門用語を説明しよう。まずツリーの起点となるスイッチを「ルートブリッジ」と呼ぶ。続いてルートブリッジから、外へ向かって接続されているリンクをたどると1つのスイッチに行き着く。このスイッチを代表ブリッジ(Designated Bridge、または指定ブリッジ)と呼び、代表ブリッジにつながる上流のポートを「代表ポート(Designated Port、または指定ポート)」と呼ぶ。このためルートブリッジに接続されているポートはすべて代表ポートとなる。
ルート以外の場所では、各スイッチから(ルートブリッジから見た)外側に接続されているスイッチが代表ブリッジであり、代表ブリッジを接続しているポートが代表ポートである。逆にルートブリッジへ向かう代表ブリッジのポートを「ルートポート」と呼ぶ。
このようにして見ていくと、スパニングツリーでは代表ポートとルートポートだけでトラフィックの送受信を行なうことがわかる。
それではルートブリッジを決定し、代表ポートとルートポートを決めていく仕組みについて説明を進めよう。
STPの動作
STPでは、スイッチが接続されると定期的にBPDU(Bridge Protocol Data Unit)という情報をマルチキャスト用のMACアドレスで送信する。送信元はBPDUを送信したスイッチのMACアドレスである。
STPではBPDUをスイッチ間で交わすことにより、ルートブリッジを決定する。そのために参照されるのが「ブリッジID」である。ブリッジIDは2バイトのプライオリティとスイッチのMACアドレスで構成されている。プライオリティは意図的に特定のスイッチをルートにしたい場合に設定する情報で、特に指定がなければ設定しなくてよい。初期値は16進数で0800となっている。
ルートブリッジの決め方は簡単で、もっとも小さいブリッジIDを持つスイッチがルートブリッジになる。最初はすべてのスイッチが自分のブリッジIDをルートIDに設定してBPDUを交換するが、受け取ったBPDUのブリッジIDと比較して、小さいほうがルートブリッジのIDとしてスイッチに保存される。そのあと定期的に送信されるBPDUのルートIDには新たなルートブリッジのIDが設定され、やがてルートブリッジと直接リンクを持たないスイッチへと伝搬する。そして、最終的にすべてのスイッチに正しいルートブリッジが設定される。
ルートブリッジが決まると、各スイッチからルートブリッジまでの経路長をルートブリッジまでの「パスコスト」という値で評価し、これによってブロックするポートを決定する。パスコスト値は定数をルートポートのリンクスピードで割った商が推奨値となっている。この値は管理者がスイッチに設定することもできる。ただしルートブリッジは自身がルートなのでルートポートを持たない。そのため、ルートブリッジのパスコストは0となる。つまり、パスコスト値は各代表ブリッジで計算して設定することになる。
各スイッチのルートポートで受信したBPDUには、ルートブリッジからのパスコスト値が含まれている。その値に、ルートポートのリンクスピードから求めたパスコスト値を加えた値がそのスイッチのルートパスコストとなる。
1つのスイッチに2カ所以上の接続先スイッチがある場合、それぞれの接続先からBPDUを受信することになる。その中でもっともルートパスコストの小さいポートを活かし、そのほかのポートをブロック状態にする。ツリーはルートに向かって1つの経路しか存在しないので、この方法によりスパニングツリーが完成するのである。
STPとRSPTの違い
STPはアクティブなリンクが障害になった場合に、それまでブロック(無効化)していたリンクを活性化する。しかし、実際はポートの接続状態が変化すると、タイマーで時間を取ってから、各パラメータの再計算を行なってポートをフォワード(有効状態)へ切り替える。そのため、各タイマーを初期値のままで運用すると、経路切り替えに50秒もかかってしまう。
これではあまりにも時間がかかるので、ポートの状態遷移をタイミングによって行なうのではなく、直接接続しているスイッチとのやり取りで高速化したのがRSTPである。
RSTPでは、リンクの障害を検知するとすぐ変更通知を出し、そのあと「プロポーザル(予約)」と「アグリーメント(合意)」のメッセージを交わすだけで経路切り替えが完了する。このように高速な経路切り替えが行なえるのは、あらかじめブロッキング状態のポートの役割を決めておき、変更に対して即座に対応できるようにしているためである。また経路切り替えにSTPのようにタイマーを使っていないので、経路切り替え処理が高速化できた。
(次ページ、「1つの物理ネットワークを複数のLANとして使うVLAN」に続く)
この連載の記事
-
第5回
ネットワーク
銅線の限界に挑む10GBASE-Tの仕組みとは? -
第4回
ネットワーク
1GbpsのEthernetの実現手段を知ろう -
第3回
ネットワーク
Ethernetで通信をスムーズに行なう工夫とは? -
第2回
ネットワーク
Ethernetのフレーム構造を理解しよう -
第1回
ネットワーク
Ethernetはどのように誕生したの? -
ネットワーク
入門Ethernet<目次> - この連載の一覧へ