Step3:
狙い通りに設計する

 スパニングツリーそのものは,初期状態の設定でも一応は動作する。何も設定しなくても動くものの,どこがツリーの頂点になって,どこが切り離されたポート「ブロックポート」になるのか,把握するのが難しくなってしまう。「ツリーの頂点をどこにするか」だけは最低限設定すべきである。このとき,スパニングツリーの頂点は,(1)通常運用時のツリー状態,(2)ネットワークに障害が起こったときのツリー状態,(3)ツリーの頂点が壊れた時のツリー状態,といった具合に,障害時の状態についても考慮して設計した方がよい。

 ツリーの頂点のブリッジ(スイッチ)をスパニングツリーでは「ルートブリッジ」と呼ぶ。ネットワーク内でどれがルートブリッジになるかは「ブリッジID」という値で決まり,値の最も小さいブリッジがルートブリッジになる。ブリッジIDは「ブリッジプライオリティ+MACアドレス」という格好で定義されている。

 ブリッジIDは8バイトで,先頭の2バイトがブリッジプライオリティ,残りの6バイトがMACアドレスである。基本的に,ブリッジプライオリティでブリッジIDの大小が決まるが,ブリッジプライオリティが同じ場合はMACアドレスを見る。ブリッジプライオリティが異なる場合,MACアドレスは無視される。

 ブリッジプライオリティは1~65535の値を取り,初期値は32768と定められている。初期状態の設定で動かしたときにどれがルートブリッジになるか分からない。すべてのブリッジ(スイッチ)が同じブリッジプライオリティ(32768)を使うからである。このときは,MACアドレスの数値の大小で決まることになる。運を天に任せたようなものだ。それでは困るので,通常はルートブリッジにしたいスイッチのブリッジプライオリティを小さい値に変更する。変更する値は,デフォルトの値である32768よりも小さければよいので,数字自体は適当に小さなものを選べばよい。このように設定するだけで,そのスイッチがツリーの頂点になってくれる。

 前述の通り,運用状態のルートブリッジが停止したとき,次にどのスイッチがルートブリッジになるのかも考えておいた方がよい。これは運用状態のルートブリッジよりは大きく,デフォルトの値よりは小さな値を設定すればよい。この設計さえきちんとしておけば,8割くらいは満足のいく結果が得られるだろう。

ポートの役割を設定

 今度はどこをブロックポート(切り離されたポート)にするかを制御してみよう。各ポートにはコストという値が設定されている。IEEE標準では速度に応じて表のような値が初期値として推奨されている。特に何も設定しなければ,どのポートも同じ初期値が付いていると思ってよい。

 まず,それぞれの経路に関して,合計でいくつのコストでルートブリッジに到達できるのかを計算する。

 コストは,回線速度が速いほど小さな値が割り振られている。こうすることで,より高速な回線を優先的に選ぶようにしている。

図5●ポートの役割の決め方
まず頂点であるルートブリッジを決める。するとルートポートが決まり,その対向側が代表ポートになる。最後に,残ったケーブルに注目し,そのケーブルの両端にあるポートのどちらをブロックポートにするかを決める。

 各スイッチからツリーの頂点(ルートブリッジ)に到達する経路はいろいろある。最も小さなコストで到達できる経路上にあるポートをルートポートと呼ぶ(図5[拡大表示])。ルートポートはツリーを作り上げるのに必要なポートなので,ブロックされることはない。

 ルートポートにつながっている相手スイッチのポートを,代表ポートと呼ぶ。代表ポートはツリーを連結するために欠かせないポートなので,これもブロックされることはない。

 次に,ツリーを構成していない残ったケーブルに注目する。そのケーブルの両端にあるポートは共に役割を与えられてない。両端のポートのうち,どちらかを切り離すことで,ループは完全に解消されるはずである。どちらのポートを切り離すか,そのルールは簡単だ。対象となるケーブルからルートブリッジを見たときに,「どちらのポートを経由した方がより小さいコストで到達できるか」で決まるからだ。コストが同じなら,両端のスイッチのブリッジIDを比較して小さな方が生かされる。初期設定で動かしているならブリッジプライオリティは両方とも32768なので,最終的にはMACアドレスの大小で勝負が決まることになる。

 結局,ルートブリッジの位置さえ決めてしまえば,ルートポートと代表ポートは自動で決まり,残されたポートは1/2の確率で切り離されることになる。どちらをブロックポートにするのか決める要素は,ポートのコストだ。生かしたい方のポートには小さなコストを設定すればよい。もちろん,コストをうまく設計すればルートポートの位置(しいては代表ポートの位置)も狙った通りに決められる。

 余力がある場合には障害時のツリー状態も考慮してコストを設定するとよい。だが,そこまでするよりも経路の切り替わりで影響を受けるスイッチはどれか,切り替わりで何秒程度通信が止まってしまうのか,などに配慮する方がよい。

 スパニングツリーはこのようなルールでツリーが形作られるため,ブロックされるポートが特定のスイッチに集まりやすい。例えば図4-1[拡大表示]をよく見ると,頂点であるスイッチ(1)は大活躍しているのに,スイッチ(2)は全く利用されていない状態にある。冗長構成として2台並べたうちの片一方は全然使われずに,障害時に備えて待機している状態である。

 もともと1台で済むところを信頼性をあげるために冗長構成にしているので,そのうちの一方が待機するのは理にかなっているが,やはりもったいない気がしてしまう。2台とも同時に使えれば,使える帯域を倍にすることができるからである。

 実はこのような構成は,スパニングツリーが頂点を一つしか決められないことから来る制限事項なのだ。ただし,実際に運用されているLANスイッチを使ったネットワークでは,VLANとスパニングツリーをうまく組み合わせることで,負荷分散するような構成も実用されている。次号ではスパニングツリーをより便利に使うための工夫について紹介する。