スイッチやハブを接続する際、やってはいけないのがループ構成だ。これは、2台のスイッチを2本のLANケーブルで直結したり、1本のケーブルの両端を同じスイッチに接続した場合などに生じる。では、なぜループを作ってはいけないのか、ループを作ると何が起こるのだろうか。
ループ構成を作ってみると
2台のスイッチでループを作るとどうなるのか。理由の説明の前に、結果から紹介しよう。ここでは、PCを数台ずつ接続した2台のスイッチを用意した。最初に1本のLANケーブルでスイッチ間を結び、通信が行なわれていることを確認。スイッチのフロント部のアクセスランプは、通信にあわせて点滅している。
しかし、この状態で、もう1本のLANケーブルを接続すると、直後からアクセスランプは点灯したままとなった。スイッチ間を流れるトラフィックを調べたところ使用帯域は常時100%近い状態になり(図1)、その内容はほぼすべてがブロードキャストフレームだった。ブロードキャストフレームが大量に流れ続ける、いわゆる「ブロードキャストストーム」という現象だ。
図1 ループ状態になったスイッチの間を流れるトラフィック量
この状態で1台のPCからほかのPCにpingを試したところ、「Request timed out.」が続き、通信は一回も成功しなかった。もちろん、Windowsのファイル共有によるPC間のファイル転送やインターネットのWebサイトへのアクセスもできない。
「2台のスイッチを2本のケーブルでつなぐと何が起こる?」の回答は、ブロードキャストストームが発生し、スイッチに接続したノード間では通信ができなくなるというわけだ。確かに、やってはいけないことである。
写真1 実験に利用した2台のスイッチ。下段のインテリジェントスイッチは、初期状態ではSTPが有効になっているため、無効にして実験した
それでは、なぜループを作るとブロードキャストストームが発生するのか。ブロードキャストフレームは、宛先MACアドレスが「FF:FF:FF:FF:FF:FF」となったEthernetフレームで、同じサブネットに属するすべてのノードに対して送られる。IPのブロードキャストと異なり、ブロードキャストフレームにはサブネット内だけに送信する機能はない。ただし、ルータはブロードキャストを転送しないため、結果的にサブネット内に限定される。ブロードキャストフレームは、IPアドレスからMACアドレスを解決するARPなどで使われ、PCは定期的にブロードキャストフレームを出している。
それでは、PCがブロードキャストフレームを送信した際、どのように伝わっていくのか。ループになっていない正常なネットワークでは、各ノードに一方通行で送られる(図2)。つまり、スイッチはすべてのポートにブロードキャストフレームを転送するが、送信元のポートに対しては行なわない。そのため、一度送ったパケットが送信元に戻ってくることはない。
図2 通常のネットワークでのブロードキャストフレームの流れ
一方、2本のケーブルでスイッチがループになっているネットワークでは、状況が異なる(図3)。スイッチが一方のケーブルから送信したブロードキャストフレームは、対向のスイッチによってもう一方のケーブルから戻ってきてしまうのだ。するとスイッチは再度フレームを転送し、それがまた戻ってくる。この繰り返しが生じるため、ブロードキャストストームが発生するのだ。
図3 ループ状態のネットワークを行き交うブロードキャストフレーム
IPには、一定の台数以上のルータを経由したパケットを破棄する「TTL(Time To Live)」という仕組みがある。これはルータを経由するたびにパケットのヘッダにあるTTLの値を1つずつ減らし、0になったら破棄するという仕組みだ。これによって、宛先が不明なパケットがインターネット上を流れ続けるといった事態を防止している。
ところがEthernetにはこうした仕組みがなく、ブロードキャストフレームが自動的に破棄されることはない。そのため、スイッチがループ状になっている限り、フレームは永遠にスイッチ間を回り続ける。
ループの弊害は、スイッチ間のトラフィックの増加だけでない。ループ状態になると、スイッチに接続しているPCに対しても大量のブロードキャストフレームが送り続けられる。この処理の負荷のため、PCの動作速度が低下することがあるのだ。
今回の実験でも、ループ状態になったら、1台のWindows 2000搭載PCがマウスカーソルすら動かない状態になってしまった。OSのハングアップで処理が止まってしまったとも考えたが、ループを解消したとたん正常に動くようになった。PCのフリーズは、CPUやネットワークインターフェイスの性能によって起きる場合、起きない場合がある。だが、たとえ動作をしていてもCPU負荷は高まっており、使いにくい状態に陥ることは間違いない。
ブロードキャストストームを防ぐには、STP(Spanning Tree Protocol)対応のインテリジェントスイッチを導入するのがよい。STPは、スイッチ間に複数の経路がある場合、一方の経路を遮断することでループを解消する仕組みだ(図4)。
図4 ループを防ぐSTP(Spanning Tree Protocol)
また、STPには有効になっている経路に障害が発生したら、もう一方の経路を有効にする機能がある。そのため、事前に複数の経路を作っておくことで、ネットワークの冗長化の手段としても利用できる。
STP対応のインテリジェントスイッチは、通常のノンインテリジェントなスイッチと比べると価格は高い。そのため、フロアスイッチにまで導入するのは難しいかもしれない。だが、バックエンドに使うスイッチだけでもSTP対応の製品にすれば、トラブルも減るはずだ。
本記事は、ネットワークマガジン2004年12月号の特集を再編集したものです。内容は原則として掲載当時のものであり、現在とは異なる場合もあります。 |