30 Minutes NetWorking
No.SW11

30Minutes NetWorking

BCMSN

第11回STP(3) STP再計算

■ STPタイマー

スーパーインター博士

さて、ネット君。
ルートブリッジの決定と、それにともなうポートの決定はわかったかな?

ハイパーネット助手

ブリッジIDと、ルートポート、指定ポート、ですよね?

スーパーインター博士

うむ、そうだ。STPは、ルートポート、指定ポートをフォワーディング。その他のポートをブロッキングにすることにより、ループのない論理接続構成を作成する。

ハイパーネット助手

でした。

スーパーインター博士

さて、わざわざSTPなんてもの持ち出した理由は、冗長構成をとりながら、ループのないループフリー環境を作り出すため、だったよな?

ハイパーネット助手

ですよね。
どっかのリンクやブリッジがダメになっても、代替パスがあって大丈夫、でもループはダメだよ、という形にしたいからですよね。

スーパーインター博士

そうだ。なので、障害時にどのような動作をするか、ということを説明しよう。
まず、覚えて欲しいのは、STPで使われるタイマーだ。以下はすべてデフォルト値だ。

  • スイッチダイアメータ … 7
  • Helloタイム … 2秒
  • 最大タイム … 20秒
  • 転送遅延 … 15秒
ハイパーネット助手


これ、なんの秒数ですか?

スーパーインター博士

それは今から説明する。まず、スイッチダイアメータは本当はタイマーと違うが、ここでまとめて説明させてもらう。
スイッチダイアメータはスパニングツリーの範囲を示す値だ。

ハイパーネット助手

範囲?

スーパーインター博士

そうだ。IEEEが定めるSTPの最大経由スイッチ数だ。任意のスイッチから、任意のスイッチまで、元と宛を含めて7つまでのスイッチの範囲で収まること。

ハイパーネット助手

ん〜っと。つまり、数え始めのスイッチを抜いて、6つまでってことですか?
ルータ風に言うと、6ホップまで?

スーパーインター博士

うむ、そういうことだ。

スイッチダイアメータ

[FigureSW11-01:スイッチダイアメータ]

ハイパーネット助手

ルートの位置は関係ない?

スーパーインター博士

うむ。ルートブリッジが決定される前も考える必要があるからな。
そして、このダイアメータの値により、他のタイマーを変更するとより効果的なSTPになる。 ▼ link

ハイパーネット助手

ははぁ。

スーパーインター博士

次は、最大タイマ
最大タイマの時間BPDUが届かなければそのリンクはダウンしたと判断する。

ハイパーネット助手

障害の検出時間ですね。20秒ってことは、Hello10回? ずいぶん長いんですね。

スーパーインター博士

まぁ、確かにそうかもな。
最後の転送遅延。これはポートの遷移のところで話そう。ともかく、3つのタイマは必ず覚えておくこと。

ハイパーネット助手

Helloタイマ、最大タイマ、転送遅延の3つですね。

■ 障害の検出

スーパーインター博士

さて、STPではそれぞれのスイッチの各ポートはBPDUをHelloタイマ間隔で送信している。

ハイパーネット助手

2秒に1回ですね。

スーパーインター博士

うむ。そして、直接接続の障害以外最大タイマの時間BPDUを受け取らなかったら障害が発生した、と考える。

ハイパーネット助手

直接接続はいいんですか?

スーパーインター博士

直接接続の場合、障害があったことはすぐわかるからな。

[FigureSW11-02:障害の発生]

スーパーインター博士

さて、セグメント5の指定ポートであったスイッチCのポートで障害が発生してしまったわけだ。
こうなると、セグメント5に対しフレームが届かなくなってしまう。さてどうする?

ハイパーネット助手

どうするって? こういう時のための冗長構成ですよね。
スイッチDのブロックになってるポートをフォワード(指定ポート)にして、セグメント5に届けるようにします。

ポート状態の変更

[FigureSW11-03:ポート状態の変更]

スーパーインター博士

確かにそうだ。それにより、セグメント5にフレームが届くようになる。
だが。

ハイパーネット助手

だが?
なんか間違ってました?

スーパーインター博士

ネット君が間違うのはよくあることだが、今回はちゃんとあっているぞ。その通り、フォワーディングになる。
だが、ここで問題になるのは、そんなにすぐフォワーディングにしてもいいのか、もし21秒後にスイッチCのポートが復旧したらどうなる、という問題だ。

ハイパーネット助手

21秒後に? そりゃまたずいぶんきまぐれなポートですね。
え〜っと、その場合はスイッチDのポートがまたブロックになるんじゃないかな?

スーパーインター博士

結果的には確かにブロッキングになる。だが、スイッチBのポートが復旧したことに気づくまで、ネットワークでループが発生することになってしまう。

ハイパーネット助手

う、う〜ん。確かにそうなってしまいますね。

スーパーインター博士

この例は簡単な形にしてあるので、ループが発生する時間が短いが、トポロジによっては長時間ループが発生する可能性もある。
さて、どうすればいい?

ハイパーネット助手

どうすればいいと言われましても。

スーパーインター博士

スイッチがネットワークの正確なトポロジを知るまでの間、時間を稼げばいい
そうすれば、ループを防ぐことができる。ルーティングループを防ぐのにも似たような方式があったな?

ハイパーネット助手

・・・・・・ホールドダウンタイム?

スーパーインター博士

そうだ。それが転送遅延タイマだ。

■ ポート遷移

スーパーインター博士

前回、ポートの状態というのを説明したな。

  • Blocked(ブロック) … データの転送をすべて停止している状態。デフォルト。
  • Listening(リスニング) … 移行中。
  • Learning(ラーニング) … 移行中。
  • Fowarding(フォワーディング) … データの転送を行う状態。
  • Disable(ディゼーブル) … そのポートが無効になっている状態。
ハイパーネット助手

コレですよね。停止と移行中と転送と無効。
ブロックとフォワーディング、ディゼーブルはわかりますけど、リスニングとラーニングってなんです? 移行中って?

スーパーインター博士

うむ。先ほどの話がそれには関係ある。
つまり、ネットワークの正確なトポロジを知るまでの間、時間を稼ぐための状態がリスニングとラーニングだ。

ハイパーネット助手

ははぁ。トポロジの状態把握中って感じですか?

スーパーインター博士

そうだな。リスニング、ラーニング中はトポロジ状態を把握してる最中だから、ループの危険性があるため、データ転送を行わない

ハイパーネット助手

っていうと、さっきの5つの状態のうち、データを転送するのはフォワーディングだけですか。

スーパーインター博士

うむ。

ハイパーネット助手

へぇ。で、リスニングとラーニングってどう違うんですか?

スーパーインター博士

それは後で説明するとして。では、STPでどのようにホールドダウンタイムを稼ぐか説明しよう。
まず、障害を検出したり、新たなBPDUを受け取ったりしてSTPの再計算が必要な状態になったとする。

ハイパーネット助手

障害を検出した場合、STPの再計算が必要なのはわかりますけど。
新たなBPDUを受け取った場合?

スーパーインター博士

そうだ。新しくスイッチが追加されたり、いままでダウンしていたスイッチ・リンクが復旧したりすると、いままで受け取っていなかったBPDUが届くことになる。その場合、あらたなツリーが必要なるだろ?

トポロジの変更の把握

[FigureSW11-04:トポロジの変更の把握]

ハイパーネット助手

そうですね。確かに。

スーパーインター博士

まぁ、つまり障害・障害復旧・追加・削除などによりトポロジに変更が合った場合、STPの再計算が必要、ということだな。
STPの再計算が必要になったスイッチは、すべてのポートをブロックにする。

ハイパーネット助手

全部ですか? 新しくBPDUを受け取ったとか、受け取らなかったポートだけじゃなくて?

スーパーインター博士

全部ブロックだ。トポロジがどういう状態かわからないのに、フォワーディング状態のポートを残しておくとループが発生する可能性があるからな。

ハイパーネット助手

なるほど。

スーパーインター博士

その後は…、図にしよう。

ポート遷移

[FigureSW11-05:ポート遷移]

ハイパーネット助手

ブロックから、リスニング、ラーニング、で。
フォワーディングか、ブロックに戻る?

スーパーインター博士

そうなる。もしそのポートが新しいSTPの結果によりルートポートか指定ポートになるなら、そのポートはフォワーディングに遷移。そうでなければブロックに遷移、ということだな。

ハイパーネット助手

あ、なるほど。

スーパーインター博士

つまり、ブロックからフォワーディング状態に移るまで、つまりコンバージェンスに達するまで50秒の時間がかかる、ということだ。

ハイパーネット助手

20 + 15 + 15で50秒ッスね。
結構長いんですね。

スーパーインター博士

そうだな。50秒というのはかなりの時間だ。これを短縮する技術の話はまた先の回で話すとして。
リスニングとラーニングの違いを話しておかなければな。

  • リスニング … データ転送中止。STP再計算中。
  • ラーニング … データ転送中止。STP再計算中。ただし、受け取ったフレームのMACアドレスをCAMテーブルに記憶。
ハイパーネット助手

んん? CAMテーブルに記憶するかしないか?

スーパーインター博士

そうだ。基本的にSTPの計算、というかループを防ぐための時間はリスニング中に終了していると思っていい。ラーニングはその後の転送のためMACアドレスを覚えるための時間だ。

ハイパーネット助手

ははぁ。そういうもんなんですか。

スーパーインター博士

そういうものだ。
あぁ、そうそう。ポートの移行中でデータ転送中止といってるが、BPDUは別だからな。

ハイパーネット助手

そうなんですか?

スーパーインター博士

もちろんだ。BPDUを受け取らなければ新しいSTPが計算できないし。
BPDUを送らなければ、隣接スイッチはそのスイッチがダウンしたと勘違いするだろう?

状態データ転送BPDUの転送CAMの更新
ブロックなし受信のみなし
リスニングなし送受信なし
ラーニングなし送受信あり
フォワーディングあり送受信あり
ディゼーブルなし受信するが処理しないなし

[TableSW11-01:ポートの状態と動作]

ハイパーネット助手

そう言われればそうですね。

スーパーインター博士

STPの再計算だが、基本的にスイッチ単位で実行される。
つまり、ダウンしたことが影響しないスイッチでは再計算は実行されない。

STPの再計算範囲

[FigureSW11-06:STPの再計算範囲]

ハイパーネット助手

影響って直接BPDUの受け渡しをするスイッチだけのことですか?

スーパーインター博士

いや、そういうわけではない。
例えば、下の図だ。

STPの再計算範囲・2

[FigureSW11-07:STPの再計算範囲・2]

スーパーインター博士

この場合、各スイッチが受け取るルートブリッジへのコストが変わってしまうため、3つのスイッチが影響を受ける。

ハイパーネット助手

ははぁ。影響…。

スーパーインター博士

わかったわかった。計算動作を示そう。
前回のポートの決定の図を使うぞ。

[FigureSW11-08:再計算]

ハイパーネット助手

なるほどです。確かに他のスイッチに影響してますね。

■ CAMテーブルの問題

スーパーインター博士

さて、どのような結果になるとしても、STPの再計算とCAMテーブルにはズレが生じることになる。

ハイパーネット助手

CAMテーブルとズレ? CAMテーブルってポートとMACアドレスの対応テーブルでしたよね。

スーパーインター博士

うむ。それはCAMテーブルのリフレッシュが5分間隔ということからくる問題だ。

[FigureSW11-09:CAMテーブルの問題]

ハイパーネット助手

あららら。STPが正しくなったのに、CAMテーブルが正しくなってない?

スーパーインター博士

そういうことだ。
これはCAMテーブルがリフレッシュされるか、PC-Aが新たに送信を行い、それがCAMテーブルの更新を引き起こすまで続けられる。

ハイパーネット助手

う〜ん。5分って長いですよね。そんな長時間データが届かなくなったりするんですか〜。

スーパーインター博士

うむ。では、これを防ぐにはどうする?

ハイパーネット助手

どうするって…。CAMテーブルのリフレッシュ間隔を短くする?

スーパーインター博士

それでは普通の、なんら問題がない状態でのスイッチの負荷が大きくなってしまう。
なので、再計算が実行されたことを通知し、CAMテーブルの消去をお願いするのだ。

[FigureSW11-10:トポロジ変更BPDU]

ハイパーネット助手

は〜。「CAMテーブルをクリアしてください」って通知を送るんですね。

スーパーインター博士

そういうことだな。

ハイパーネット助手

へ〜。

スーパーインター博士

さて、今回はこれぐらいにしておこう。

ハイパーネット助手

はい。

スーパーインター博士

STPはしばらく続くぞ。では、また次回。

ハイパーネット助手

はい。
30分間ネットワーキングでした〜♪

スイッチダイアメータ
[Switch Diameter]
ダイアメータ[diameter]は「直径」の意味。
効果的なSTP
参考リンクの「スパニングツリー プロトコル(STP)タイマーの理解と調整」参照のこと。
最大タイマ
[Max Age]
最大エイジタイマとも。
転送遅延
[Foward Delay]
ディレイタイマとも。
ハイパーネット助手ハイパーネット君の今日のポイント
  • 3つのタイマがSTPには存在する。
    • 障害検出とトポロジ変更につかうのが、最大タイマと転送遅延タイマ
    • 最大タイマの間、BPDUが届かなければ障害とみなす。
  • STPの再計算は障害やトポロジ変更時に行われる。
    • ブロック→リスニング→ラーニング→フォワーディングと移行する
    • コンバージェンスまで50秒かかる
  • CAMテーブルのリフレッシュも再計算後に行う

30 Minutes NetWorking No.SW11

管理人:aji-ssz(at)selene.is.dream.jp