■ スイッチの動作
今回からは新しい話だ。
まず、スイッチの基本動作について復習といこう。
3分間第18回の内容ですか?
まぁ、そうなるな。念のための復習だ。
ネット君相手ならば必須事項だからな。
うぅぅ。
スイッチ、つまりトランスペアレントブリッジの動作なわけだが、まず、転送の際にフレームに手を加えないことが1つ。
だから、トランスペアレント(透過)なんですよね。
まぁ、そうだな。
そして、受信の際、送信元MACアドレスを学習し、受信ポートに対応づけることを行う。
3分間第17回で話してましたね。
その学習により、宛先があるポートにのみ転送が可能になるんですよね。
そういうことだ。このMACアドレスとポートの対応表のことを、CAMテーブルという。
きゃむ。
そして、ブロードキャストと宛先がCAMにないユニキャストは受信ポート以外のすべてのポートから送信される。これをフラッディングという。
でしたよね。
ブリッジの欠点でしたっけ。
と、まぁこんな感じなわけだ。
思い出したかね?
思い出すも何も、ちゃんと理解してますって。
■ 冗長リンク
さて。普通にスイッチを使うならば、先ほどの基本動作を理解していればなんら問題はない。
普通にスイッチを使うならば?
普通じゃない状況だとまずいんですか?
普通に、という言い方はちょっと変だな。別に変な形で使うわけではなくて、以下のような冗長リンクが存在する場合、問題が発生するのだよ。
[FigureSW09-01:冗長リンクがあるネットワーク]
冗長リンク?
つまり、どちらかのスイッチがダメになった場合でも大丈夫な形ってことですか?
そういうことだな。スイッチの故障でネットワークが停止しないために、このような冗長構成をとることはよくある。
だが、トランスペアレントブリッジの場合、これが問題になる。
[FigureSW09-02:ブリッジングループ]
はわ〜。
CAMテーブルが完成していない、正常でない状態で起こるループだな。
でも、これって、使用していればそのうちCAMテーブルにホストBが登録されて、正常に戻るんじゃないんですか?
確かにそういう場合もある。
だが、ブロードキャストの場合は完全にループすることになる。
[FigureSW09-03:ブロードキャストによるループ]
あう〜。フラッディング…。
そういうことだ。トランスペアレントブリッジの基本動作上、どうしてもこのループは発生してしまう。
このようなループが発生すると、最終的には通信不能にまで陥ってしまうことが多い。ブロードキャストストームと呼ばれる所以だな。
じゃあ、例えば、普段はSW2のポート1のケーブルをはずしておいて。
で、SW1のダウン時のみSW2のポート1をつなぐようにすればいいんじゃないですか?
それは確かにそうだが。
障害時に、人間が切り替えるのは「冗長構成」とは言わんぞ。
うぅ〜ん。
だが、ネット君のアイデアがヒントになるわけだ。
つまり、通常時はループが起きないように特定のポートが転送を中止しておけばいいわけだ。
ふむふむ。
そして、障害検出時は、そのいままで転送を中止していたポートが動き出せばいい。
これを実現するのが、STPだ。
すぱにんぐつりー?
■ STP
そう、そのスパニングツリーだ。
聞き覚えがあるな?
?
うむ、予想通り。
うぅぅ。
OSPFのSPFツリーを作成するためのアルゴリズムとしても使用されているのが、スパニングツリーだ。
「ループのない木構造」のことだな。
木構造って、あれですか? DNSのドメイン名前空間とかでも使われている、データ構造の?
そうだ。
その木構造のうち、ループのないものをスパニングツリーと呼ぶのだよ。
[FigureSW09-04:木構造・スパニングツリー]
普通、左のような「子は複数の親を持てる」場合は「グラフ」というのだが、グラフも木構造の一種だからな。
木構造の中で、「子は1つの親しか持たない」木は、ループが存在しないのでスパニングツリーというわけだ。
??
……博士、すいませんがネットワークの講座を…。
む? アルゴリズムとデータ構造を知っておくと、色々便利なのだが。
まぁいいだろう。ともかくスパニングツリーとはそういうものだ。
え〜っと、ループを持たない木構造ですね。
そうだ。STPでは、あるブリッジを根[root]とみなして、スパニングツリーを構成するわけだ。
[FigureSW09-05:スパニングツリー前]
通常状態では転送を中止しているポートを設定することにより、スパニングツリーとなる。
[FigureSW09-06:スパニングツリー]
ははぁ。
で、障害時は転送を中止していたポートが転送を再開するんですね。
そういうことだ。もう一度、スパニングツリーを再構成するわけだな。
[FigureSW09-07:スパニングツリー再構成]
は〜。なるほど。
つまり、ブリッジの物理接続とは別の、転送用の論理接続をスパニングツリーアルゴリズムを使って構成するわけだな。
転送用の論理接続…。
は〜、上手く考えてますねぇ。
■ BPDU
さて、ルーティングプロトコルでルーティングテーブルを作成するためにアドバタイズが送られるように、STPでも送られるデータがある。BPDUと呼ばれるデータだ。
びーぴーでーゆー?
ルーティングプロトコルみたいに、ブリッジが持っている情報を交換するわけですね?
そうだ。
BPDUは以下の情報を持つ。
- ルート情報 … ルートに設定されたブリッジのID
- パスコスト … そのリンクのルートブリッジからの距離
- ブリッジ情報 … BPDUを送信したブリッジの情報
- ポート情報 … BPDUを送信したポートの情報
- タイマ … スパニングツリーを構成するための時間
るーとぶりっじ? BPDUを送信?
まぁ、それは後でちゃんと説明する。
このBPDUは2秒に1回送信される。それにより各ブリッジは現在のトポロジ状態を把握するわけだな。
で、ループが起きないように転送を中止するポートを決めるわけですね。
そうなんだが、そこまでいくには色々段階を踏まなければ。
段階については後述するとして、まず、STP独特の用語を覚えてもらおう。まず、ルートブリッジ。
さっきのBPDUの情報のなかにありましたね。
これは名前の通り、スパニングツリーの根[root]に置かれるブリッジだ。
STPはルートブリッジを中心としてループの有無を判断する。
さっきの図でいうと、SW1のことですね。
[FigureSW09-08:ルートブリッジ]
そうだ。そして、次の用語は、指定ブリッジ。
これはそのセグメントからルートブリッジも到達するためのブリッジのことを指す。
[FigureSW09-09:指定ブリッジ]
「でじぐねいてっど」って、OSPFにもでてきましたよね。DRとBDR。
あれって、「代表ルータ」でしたけど、今回は「指定」?
どちらかと言えば、[designate]は「指名する」だから、「指定」の方が正しい翻訳かもな。
ともかく、指定ブリッジは、ルートブリッジまでのパスが最短のブリッジがなる。
なるほど。
さて、どのようにトポロジ内でルートブリッジが決定され、STPが実行されていくかといえば。
といえば?
それは長くなるので次回だな。
あららら。
STPの話は当分続くぞ。では、また次回。
いぇっさ〜。
30分間ネットワーキングでした〜♪
- トランスペアレントブリッジ
- [Transparent Bridge]
- CAM
- [Content-Addressable Memory]
- フラッディング
-
[Flooding]
「洪水」「氾濫」の意味。
すべてのポートにフレームが「氾濫」していくから。
- STP
-
[Spanning-Tree Protocol]
規格名ではIEEE802.1d。
- BPDU
- [Bridge Protocol Data Unit]
- 指定ブリッジ
- [Designated Bridge]
- ブロードキャストストーム
- [Broadcast Storm]
- ハイパーネット君の今日のポイント
-
- ブリッジで冗長構成をすると、ループが発生する。
- ループが発生すると、最終的には通信不能になる。
- ループを防止するためにおこなうのがSTP。
- 特定のポートからの転送をおこなわない。
- 障害時は転送をやめていたポートが再開する
- STPを実現するためにブリッジはBPDUを送受信する。