Step2:
ループを解消するスパニングツリー

 ループを解消するには経路のどこか一カ所を切断すればよい。実際,不慮の事故でループが発生してしまったときには,問題がありそうなケーブルを外すことで対処する。一般には,そのような作業を自動化する仕組みが用いられる。この仕組みの代表的なものに,IEEE802.1Dとして標準化された「スパニングツリー」がある。それでは,スパニングツリーについて詳しく見ていくことにしよう。

 その前に,話を簡単にするためにひとまずVLANの事は忘れていただきたい。VLANとスパニングツリーを組み合わせる方法については,後述する。

 スパニングツリーはその名の通り,ネットワークの接続状態をツリー型にしてループを解消する。もちろんケーブルをつなぎ変えたりするわけではない。あたかもツリー状態になっているかのようにポートを制御するのである。

 スパニングツリーを使うと,リンクがつながっているのに「パケットの送受信をしないポート」が現れる。ループを解消するためにそのポートだけケーブルを外しているような状態だ。そのようなポートをどこかに作ることでループを解消するのである。

図4●頂点の位置によるツリーの違い
ツリー状態は実際の物理構成に近いほうがよい。この図では(1)の方がよい。

 問題は送受信をしないポートがどこにできるか,ということである。これを考えるためにはまず,どこを頂点としたツリーにするのが最もよい構成なのかを把握しておく必要がある。頂点にするスイッチをどこにするかでツリーの形は様々に変わる(図4[拡大表示])。

 実際の物理接続がどうであれ,スパニングツリーが切り離したポートにはトラフィックは流れない。実際のトラフィックは図中の太線に沿って流れることになる。図4-1[拡大表示]の図で,スイッチ(4)からスイッチ(5)への到達経路は頂点であるスイッチ(1)を必ず経由する。(4)→(2)→(5)という経路もあるが,ツリーの頂点が(1)になっているときにはこの経路は使われない。図4-2[拡大表示]の図はスイッチ(3)を頂点にした場合だ。スイッチ(1)ではなく,スイッチ(2)を必ず経由するようにすれば,(4)→(2)→(5)という経路が可能になる。

 このように,頂点の位置でツリーの姿が変わるという特徴は障害を迂回するうえでとても大切なことである。例えば,普段は図4-1のようなツリー状態であっても,スイッチ(1)に障害が発生したら自動的に二重化したもう一方のスイッチを使った図4-2のようなツリー状態にすることができる。

 ネットワークを構築するスイッチは,二重化しているスイッチのうち機能している方のスイッチと一定間隔の時間で情報を交換しあっている。相手スイッチからの情報が流れなくなった場合,もう一方のスイッチがブロックされている状態を解いて機能するようになる。ブロックされているポートやリンクは永遠に使われない,というわけではない。障害や接続状況の変更に備えて待機している状態,と言うことができる。

 スパニングツリーの最も重要な機能は,ループのない状態を作ることである。ただしそれだけでなく,障害が発生したら新しいツリーを作り直して,障害を迂回する働きも持つのである。

 スパニングツリーによる障害の迂回でもう一つ重要なことは,一時的な障害でツリーの形が変わったとしても,障害が直れば元のツリー状態に戻る,ということである。安定した状態なら常に決まったツリー状態になるので,運用するときに最も最適なツリー状態になるように設計する必要がある。

 スパニングツリーのツリー状態は,実際の物理構成に近いほうがよい。実際の接続具合とスパニングツリーが作り上げる構成は近いほど分かりやすい。トラフィックの流れから見ても理にかなっていると言える。一般にスパニングツリーの頂点は,ネットワークの中心部に来るように配置する。図4の例で右側の二つの図を見比べると,上の方が対象性のある構成となっていることが分かるだろう。したがって,図4-1の図の方が好ましいと言える。

 以上のようにスパニングツリーでは頂点の位置によってツリーの形も大きく変わる。頂点をどこにするかによって,どこのポートが切り離されるか決まってくるからである。それでは続いて,ツリーを最適な状態に設計するための方法について見ていくことにしよう。