IPで経路制御を実現するためには,レイヤー3であて先を判断するルーターやレイヤー3スイッチ(L3スイッチ)を使う。両者の働きはほぼ同じであるが,L3スイッチのほうがネットワークを設計するときの自由度が大きい。これらネットワーク機器は意外と障害率が高い。特に最近のL3スイッチは実装密度が高いせいか壊れる率が高いようだ。具体的には,特定のポートだけが機能しないといったことがよくある。障害が発生したスイッチはいずれ交換しなければならない。このような不測の事態に備えて,大事な機器は冗長構成にしておいた方がよい。

 冗長構成を採るというのは,2台以上の装置を設置してそれらのうちのどれか一つが稼働していれば通信できるようにすることである。実は,L3スイッチで冗長構成を作ると,ルーターの世界では気にしなくてよかったことに気を配らなければならなくなる。パケットのループである。今回は,ループとうまく付き合うための仕組み,スパニングツリーについて見ていく。

Step1:
典型的な冗長構成

 ネットワーク機器は運用を開始したら滅多に手を加えないものである。L3スイッチ製品には電源スイッチのついていないものもあるくらいだ。とはいえ,定期的なメンテナンスや装置故障,ソフトのバージョンアップが随時発生するため,まったく止めないというわけにはいかない。

 パソコンやプリンタなどがつながる末端のスイッチなら,そのスイッチを使っている機器だけが影響を受けるので,それほど大きな問題にはならない。これが複数のスイッチを集約する中心的なスイッチだと影響範囲は広くなる。最悪の場合,1台のスイッチを止めただけでネットワーク全体が止まってしまうことになる。そのような事態に備えて,中~大規模のネットワークでは重要な機器を冗長構成にするのが一般的である。冗長構成とは2台以上の装置を設置して,そのうちの1台が稼働していれば通信できるようにすることだ。

図1●典型的な冗長構成
上位にあるスイッチを2台用意して,どちらか一つが動いていれば通信できるようにする。
図2●ルーターとスイッチの違い
ルーターはブロードキャストをブロックするが,L3スイッチはルーター部分を通らずL2スイッチ部分しか通らないのでブロードキャストは素通りする。
図3●ループの仕組み
二重化構成をとると,パケットがスイッチの各ポートでコピーされて飛び出してくる。パケットが永遠に回り続けると,パケットが増え続けてスイッチが機能しなくなってしまうことがある。

 冗長構成にするとネットワークは急に複雑になる。設計だけでなく,運用する際にもスキルが問われるようになる。そのため,あまり凝った構成は避け,実績のある典型的な「お決まりのパターン」を使うことが多い。典型的な冗長構成というのは,図1[拡大表示] のように,階層構造にする方法だ。

 接続の仕方にはさまざまなバリエーションが考えられるが,上位スイッチを2台用意し,両方と接続する方法がよく用いられる。こうすると上位のスイッチのうちどちらかが停止しても,もう一方で通信を継続することができる。

 このような階層型のネットワークは,ルーターでネットワークを組むときにもよく使われてきた。多くの実績がある構成である。ところが,これをL3スイッチで実現すると,ルーターのときには気にしなくてよかったことに配慮する必要がでてくる。それがループである。ループとは1台もしくは複数のスイッチの間でパケットがぐるぐると回り,それぞれのスイッチに到達するたびにポートの数だけパケットをコピーして増やしてしまうことだ。

 ルーターなら気にしなくてよいのに,L3スイッチだとなぜループに気を付けなければいけないのか。それはルーターがブロードキャストを止めるのに対して,L3スイッチだと素通りさせてしまうからである(図2[拡大表示] )。

 ルーターはポートに対してサブネットを割り当てる。そのため,ブロードキャストがルーターのポートを越えて転送されることはない。L3スイッチもルーターと同じくレイヤー3で転送先を決めることができる。ただし,それはあくまでVLAN間のルーティングの話であり,ポートからポートへはレイヤー2のまま転送される。L3スイッチをルーター部とL2スイッチ部に分けて考えれば分かりやすいだろう。

 ループと言っても,その現象を目の当たりにしたことのない人にはあまりピンと来ないかもしれない。ループには一つのスイッチでループする場合と,複数スイッチ間でループになる場合がある。同じスイッチでのループは,ケーブルの差し間違いで起こることが多い。複数スイッチ間でのループは,冗長構成を取ったときに必ず現れる。

 ループの問題点は,全ノードにパケットを送信するブロードキャスト・パケットが大量に生み出され,ループが解消されるまでその現象が続くことである。L2スイッチは,あて先MACアドレスを見て転送先を決めるブリッジに相当する装置だ。1対1の通信であるユニキャストのパケットに関しては,その端末のいるポートにだけ転送する。しかしブロードキャスト・パケットに関しては,(そのVLAN内の)全ポートにパケットをコピーする。そのため,パケットがループを一周するたびに,周囲のポートにコピーがばらまかれることになる(図3[拡大表示])。このような現象をブロードキャスト・ストームと呼ぶ。

 ブロードキャスト・ストームが発生すると,ネットワーク上に無駄なトラフィックが大量に発生する。それだけでなく,スイッチそのものが能力の限界に達して機能しなくなってしまうことがある。実際,多くのスイッチ製品はブロードキャスト・ストームが発生するとCPU使用率が100%近くになってしまう。

 このような状態になるとスイッチはネットワークにつながる機器を制御するためのプロトコルSNMP(Simple Network Management Protocol)に応答しなくなったり,RIP(Routing Information Protocol)やOSPF(Open Shortest Path First)などのルーティング・プロトコルが止まってしまったり,といった具合にどんどん悪い方へ進んでしまう。最悪の場合には,ネットワーク全体がメルトダウン(パケット転送が全くできなくなってしまう状態のこと)してしまう。

 こういった現象は実際に体験してみるのが一番だが,本当のネットワークでループを起こすと大変な事態になってしまうので注意してほしい。