Step3:
VLANに適用する

図5●VLANごとに最適な頂点の位置は異なる
VLANごとに最適なスパニングツリーを構成できない。
図6●典型的なPVSTの使い方
PVST(Per VLAN Spanning Tree)を使うと,冗長構成を採る2台のスイッチを両方使ってVLANごとに適したスパニングツリーを作成できる。
図7●RSTPによるツリーの構築
RSTP(Rapid Spanning-Tree Protocol)はタイマーで状態を管理するのではなく,隣り合うスイッチ同士が直接やり取りして代表ポートを決めていく。

 スパニングツリーとVLANは極めて相性が悪い。VLANが登場したのは1990年代後半であるのに対して,スパニングツリーはVLANが生まれるよりもずっと前に作られた。このため,時代のニーズにそぐわなくなっているのが実情である。相性を悪くする根本的な原因は,BPDUにVLANタグを付けられないことにある。

 タグVLANの環境でスパニングツリーを動かすと,各ポートが所属しているポートVLAN(ネイティブVLAN)のツリー構成に従うことになる。何も設定しなければ普通VLAN ID=1がネイティブVLANとして使われる。

 スパニングツリーの仕様上,BPDUはこのネイティブVLAN上にしか流れない。結局,VLAN環境でスパニングツリーを動かすと,VLAN ID=1の上でツリーが作られ,すべてのVLANはそのツリーを利用することになる。このような仕組みで動作すると,ツリーの形をVLANごとに最適化できないため不便である。

 ではVLANごとにツリー状態を最適化できたら,どんなメリットがあるだろうか。説明を分かりやすくするため,ここではネットワークをリング型で構成したとする(図5[拡大表示])。もちろん普通はリング型にしない。

 リング型の場合,頂点から最も遠いスイッチにブロックポートができ,ループを解消する。ここでVLAN2が図5左側のようにブロックポートを挟んで存在したとしよう。するとVLAN2の通信はぐるっと大回りすることになり,明らかに最適とは言えない。このように,どこが最適なスパニングツリーの頂点なのかは,物理的な接続具合だけでなく,VLANの配置によっても変わってくる。

 VLANごとに違うツリー状態を作ることを実現する機能がある。Ciscoが独自技術として製品に搭載しているPVST(Per VLAN Spanning Tree)だ。PVSTはBPDUにもVLANタグを付ける。こうしてVLANごとに最適なツリー状態を作ることができる。

 PVSTは,VLANごとに違うツリー状態を作ることで装置の負荷分散も実現できる。例えば,図6[拡大表示]のような典型的な階層構造のネットワークを見てみる。スイッチ(1)と(2)を冗長構成にしたとしよう。スイッチ(1)を頂点として選ぶとスイッチ(2)はまったく使われない状態になってしまう。そこで,偶数番号のVLANはスイッチ(1)を頂点とし,奇数番号のVLANはスイッチ(2)を頂点とすれば,両方同時に利用できる。

 このようにPVSTを使ってVLANごとに違うツリー状態を作ることは,実際のオフィスLANで実用されている。

Step4:新しいスパニングツリー

 スパニングツリーは,正しく理解すれば難なく運用できる技術である。ところが,ネットワークの現場では嫌われることが多いようだ。その理由として,(1)設定が難しい,(2)ツリーの全体像がつかみづらい,(3)障害時の切り替え時間が長い(数十秒),(4)VLANとの相性が悪い,などが考えられる。

 (1)の設定が難しいというのは誤解であり,設定は決して難しくない。最低限ツリーの頂点の位置さえ決めておけば,ほとんどのケースで満足のいく結果が得られるはずだ。(2)のツリーの全体像がつかみづらいのは,その通りである。ネットワーク監視装置を使ってグラフィカルにツリー状態を把握できると便利だ。ところが,そういったソフトは特定の装置専用になっていることが多く,複数メーカーのスイッチを使うマルチベンダー環境では使えないことが多い。(3)の障害時の切り替え時間が長いのも確かに問題だ。障害発生から迂回路への切り替えに数十秒かかってしまうのは,現代のオフィスLANの事情にそぐわない。

 (4)のVLANとの相性が悪いということに関しては,前述のようにVLANごとに適するスパニングツリーを設定できるPVSTもある。だが,PVSTはCiscoが独自にスパニングツリーを機能拡張したものだ。標準化されたものではない。また,PVSTを使うときにはVLANの数に注意しなければいけない。VLANがたくさんあるとスパニングツリーの状態管理もその数だけ行わなければならないため,スイッチの負荷が大きくなってしまう。現実の世界では,VLANごとにツリー状態を変える必要はない。図6の例のように偶数番号VLAN用,奇数番号VLAN用といった感じでツリー状態を二つに分けるくらいで十分なことが多い。

 スパニングツリーを標準化しているIEEEでもこれらは問題になっている。検討されているのは,通信停止時間をより短くするための仕組みだ。それがIEEE 802.1w RSTP(Rapid Spanning-Tree Protocol)である。

 そもそもスパニングツリーの動作が遅いのはタイマーを使って状態を管理するためである。スパニングツリーの仕様は,多様な環境で動くことを想定しタイマーの値として長めのものを推奨値としている。ここまでの説明では,すべてのスイッチがスパニングツリーを動かすことを暗黙のうちに前提にしていた。ところが,実際にはスパニングツリーをサポートしない製品もある。そういう装置が介在することを考慮してタイマーの値は長めになっている。

 より高速にツリーの状態を安定させるにはタイマーを使った状態管理から脱却し,隣り合うスイッチ同士で直接情報をやり取りする必要がある。

 RSTPではBPDUを改造し,Proposal(提案)とAgreement(同意)を使って安全,かつ高速にツリーを作り上げていく(図7[拡大表示])。例えば,B1は自分がルートブリッジだと思い込んだとする。するとB1は周りのスイッチに対してProposal BPDUを送信し,そのポートを代表ポートとしてフォワード状態にしてもよいかを問い合わせる。提案されたB2は一度全ポートをブロック状態にしてから,B1がルートブリッジとしてふさわしいかを判断する。B1がルートブリッジとしてふさわしいのであればAgreement BPDUを返し,そのポートをルートポートとしてフォワード状態にする。

 その後,一度ブロック状態にしてしまった所を元に戻さないといけない。B2は逆側のポートがつながるスイッチB3に対し,Proposal BPDUを送信して代表ポートとしてフォワード状態にしてよいかを問い合わせる。以下この繰り返しでツリーが完成していく。RSTPではこのようなネゴシエーションに基づいてツリーが作られるため,ツリー状態は早く安定する。

 RSTPではポートの役割として,ルートポート,代表ポート,ブロックポート以外に,代替ポートというのが新しく作られている。代替ポートはルートブリッジへ2番目に小さいコストで到達するポートのこと。使用中のルートポートがダウンしたとき,即座に次のルートポートとして利用する。代替ポートのおかげで上位スイッチへのアップリンクを2本出すような典型的な冗長構成パターンでは,瞬時にリンク障害を迂回することができる。その切り替え速度は実に数十ミリ秒である。この速度で切り替われば,利用者はトポロジ変更があったことすら気づかない。RSTPは標準としてこの機能を組み込んでいるので,(CiscoのUplink Fastのように)特別な設定を必要としないのもメリットだ。

 RSTPはスパニングツリーの補完機能というよりも,置き換えという位置付けで開発されている。市場に出荷されているLANスイッチ製品にも実装が進んできており,RSTPは実用の段階に入っている。RSTPがスパニングツリーの標準になる日もそう遠くないと思われる。

 VLANとの相性という問題に関しては,現在,IEEE 802.1s MST (Multiple Spanning Tree)として標準化が進められている。MSTを使うと,ツリー状態を複数作って,それぞれのツリーにVLANを対応付けられるようになる。

 そのようなツリー状態をMSTでは「インスタンス」と呼んでいる。同じ物理ポートであっても,(ルートポート,代表ポート,ブロックポートなどの)役割は,このインスタンスごとに変えることができる。ツリー状態を複数作りたければ新たなインスタンスを作り,どのVLANをそれに対応付けるか指定すればよい。インスタンス番号は1~15まで指定できるので,合計16個の独立したツリー状態(インスタンス)を作ることができる。

 PVSTと違い,MSTではインスタンスを複数作ったとしても送信されるBPDUの数は増えない。実際にBPDUのやり取りをするのはインスタンス番号0のツリーだけで,他のインスタンスはそのBPDUの中に必要な情報を埋め込むことでツリーが作られる。そのため,インスタンスごとに(Hello Timeのような)タイマー値を変えることはできないことに注意してほしい。

 MSTは通常のスパニングツリーと相互接続できるように作られている。従って,冗長構成を採っているネットワークの中心部だけでMSTを動かし,パソコンやプリンタなどの端末がつながるスイッチとは通常のスパニングツリーで動かすことも可能である。

 MSTはRSTPを使うことを前提に開発されているため,MSTとRSTPは同時に利用することになる。MSTを実装しているスイッチ製品も多くなってきているため,MSTも実用の段階にきていると言ってよいだろう。