30 Minutes NetWorking
No.SW10

30Minutes NetWorking

BCMSN

第10回STP(2) ルートブリッジ

■ ブリッジID

スーパーインター博士

さてさて、ネット君。ブリッジの冗長構成をとるために、STPが必要なことはわかったな。

ハイパーネット助手

フラッディングによる、ブリッジングループの回避ですよね。

スーパーインター博士

うむ、そうだ。
さて、STPは、ルートブリッジを根とした、転送用の論理接続ツリーを作成することから始まるわけだが。

ハイパーネット助手

わけだが?

スーパーインター博士

どれをルートブリッジにするか、ということを決めなければならないわけだ。
ここで使用されるのが、ブリッジIDと呼ばれる値だ。

ハイパーネット助手

ぶりっじのIDですか?

スーパーインター博士

そうだ。OSPFで、ルータIDでDRを決定するように、STPではブリッジID(BID)でルートブリッジを決定する。

ハイパーネット助手

ルータIDは、ルータが持つインタフェースの中で最大のIPアドレスでしたよね。

スーパーインター博士

うむ。正確にはループバックが優先だがな。
OSPFのDRの選択は最大のルータIDだったが、STPの場合、最小のBIDを持つものがルートブリッジになる。

ハイパーネット助手

DRの選択とは逆なんですね。

スーパーインター博士

そういうことだな。
さて、そのBIDだが、64ビット(8バイト)の値で、以下のような構成になっている。

  • BID = プライオリティ(2バイト) + ブリッジのMACアドレス(6バイト)
ハイパーネット助手

プライオイリティって何です? 優先?

スーパーインター博士

プライオリティは、デフォルトは32,768(0x8000)が設定されている値だ。
簡単に言うと、そのブリッジが持っているMACアドレスに関係なくルートブリッジにする/しないを設定するための値だな。

ハイパーネット助手

??

スーパーインター博士

例えば。以下のような場合で、デフォルトの場合。どれがルートブリッジになる?

ルートブリッジの選択

[FigureSW10-01:ルートブリッジの選択]

  • SW-AのBID = 80.00.00.00.00.00.00.1A(9,223,372,036,854,775,834)
  • SW-BのBID = 80.00.00.00.00.00.00.80(9,223,372,036,854,775,938)
  • SW-CのBID = 80.00.00.00.00.00.00.A0(9,223,372,036,854,775,968)
ハイパーネット助手

これだと、SW-Aですよね。最小ですから。10進数だと9223京3702兆3685億5477万5千までは同一ですし。

スーパーインター博士

そうだ。プライオリティが全く同じのため、MACアドレスだけを見て決定していることになるわけだな。

ハイパーネット助手

え〜っと、確かにそうなりますね。最初の4桁のプライオリティ部分が全く同一ですから。

スーパーインター博士

ここで、SW-Cのプライオリティを変更する。1(0x0001)にしよう。最小値はどれだ?

  • SW-AのBID = 80.00.00.00.00.00.00.1A(9,223,372,036,854,775,834)
  • SW-BのBID = 80.00.00.00.00.00.00.80(9,223,372,036,854,775,938)
  • SW-CのBID = 00.01.00.00.00.00.00.A0(       281,474,976,710,816)
ハイパーネット助手

え〜っと。SW-Cになります。10進数だともろわかりですよね。

スーパーインター博士

うむ。この場合、MACアドレスはどういう値でも関係ないな? プライオリティの部分だけでルートブリッジが決定されることになるだろう?

ハイパーネット助手

そうですね。最初の4桁だけで大小が決まりますよね。

スーパーインター博士

つまり、「特にこのブリッジをルートブリッジにしたい/したくない」というときはプライオリティを変更するとMACアドレスに関係なく決定されると言うことだ。

ハイパーネット助手

なるほど。プライオリティがブリッジIDの桁の上位にあるから、まずプライオリティだけで比較されるのと同じわけなんですね。

■ ルートブリッジの決定

スーパーインター博士

さて、最小のブリッジIDを持つものがルートブリッジに選択されるわけだ。
どのように選択されるかというと、BPDUのやりとりで決定されるわけだな。

ハイパーネット助手

BPDUのやりとりで、ですか。

スーパーインター博士

うむ。BPDUにはルートブリッジのID(ルートID)を入れるフィールドがある。
その点を踏まえた上で、動作は以下のようになる。

[FigureSW10-02:ルートブリッジの決定動作]

ハイパーネット助手

は〜。まずは各ブリッジは自分がルートブリッジだと思ってるわけですね。

スーパーインター博士

そういうことだ。最初はみんな自分が王様だと思ってるわけだな。

ハイパーネット助手

なるほど、王様。それでBPDUの交換によって、自分より偉い王様がいることを知るわけですね。

スーパーインター博士

うむ。自分より偉い王様がいるとわかったら、臣下につくのだよ。

ハイパーネット助手

あはは。なるほどです。

■ ポートの決定

スーパーインター博士

さて、ルートブリッジの選択と同時に、各ブリッジはポートの状態を決定する。

ハイパーネット助手

ポートの状態ってなんです?

スーパーインター博士

うむ、STPにおいて、そのポートがどのような役割を果たすかという状態だな。

ハイパーネット助手

うぅ?

スーパーインター博士

まぁ、アレだ。どういう状態があるか知ってからの方が説明しやすい。次の5つだ。

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

データ転送を中止? 移行中? んん?

スーパーインター博士

リスニングとラーニングについては後述する。
まず、覚えて欲しいのはブロックフォワーディングだ。

ハイパーネット助手

ブロックは「データ転送中止」と、フォワーディングは「データ転送可能」ってことですよね。

スーパーインター博士

まぁ、ブロックの「中止」といっても、全く使えないわけではなくて、ブロックのポートに受け取ったフレームを他のポートから送信しない、他のポートが受け取ったフレームはブロックのポートから送信しない、という意味だが。

ハイパーネット助手

いえ、それは完全に中止してますよ。

スーパーインター博士

そうか? 「無効(ディゼーブル)」とは違うってことはわかって欲しかったんだが。

ハイパーネット助手

あ〜、そういう意味ですか。それはわかります。

スーパーインター博士

うむ。
さて、まず起動したブロックの各ポートはすべてブロックの状態であるところから始まる。

ハイパーネット助手

全部、転送中止状態ですか。

スーパーインター博士

そうだ。その後、ルートブリッジの選択、STPの計算が終わると、必要なポートはフォワーディングになるわけだ。
ループが発生しそうな冗長リンクのポートはブロックのまま、というわけだな。

ハイパーネット助手

ははぁ。

スーパーインター博士

通常のPCと接続されているポートは、冗長リンク、つまりブリッジングループと関係ないのでフォワーディング状態になるが。
問題は、他スイッチと接続しているポートだ。このポートは、以下の3つの特別なポート以外はブロック状態になる。

  • ルートブリッジの全ポート。
  • ルート(root)ポート … ルートブリッジに最も近いポート。
  • 指定(Designated)ポート … 各セグメントの中でルートブリッジに最も近いポート。
ハイパーネット助手

…。
すいません、両方とも「ルートブリッジに最も近い」ってことになってるですけど、どう違うんです?

スーパーインター博士

あ〜そうかそうか。言い方を変えよう。指定ポートは「各セグメントの指定ブリッジのポート」だ。

ハイパーネット助手

指定ブリッジって前回出てきましたよね。セグメントからルートブリッジへ最も近いブリッジだって。

スーパーインター博士

そうだ。図でルートポートと、指定ポートを説明しておこう。

ポートの決定

[FigureSW10-03:ポートの決定]

ハイパーネット助手

う、う〜ん。いまいちルートポートと指定ポートの区別が…。

スーパーインター博士

そうだな。それについては、次のところで話そう。ここで覚えておいて欲しいのは、3つの特別なポートはフォワーディングになり、それ以外はブロックになることによって、ループが防がれるということだ。

ハイパーネット助手

ルートブリッジのポート、ルートポート、指定ポートですね。

スーパーインター博士

うむ。上の図を木構造で書くとこうなっているのがわかるだろう。
四角のノードがスイッチ。丸のノードがセグメントだ。

木構造

[FigureSW10-04:木構造]

ハイパーネット助手

確かに。スパニングツリーになってますよね。

■ パスコスト

スーパーインター博士

さて、ネット君。「ルートポートに近い」と言ったが、どうやってそれを判断するのかね?

ハイパーネット助手

へ? どうやってって…。

スーパーインター博士

発想はルーティングプロトコルと同じだ。

ハイパーネット助手

メトリック?

スーパーインター博士

うむ、STPではメトリックとは呼ばないがな。コストと呼ぶ。
これは、以下の計算式により求まる。

  • コスト = 1000 ÷ リンクの帯域幅(Mbps)
ハイパーネット助手

1000割るメガの帯域幅。10Mだと、100。100Mだと10。1Gだと1ってことですね。

スーパーインター博士

そうなのだが、現在は10ギガイーサネットがあるので、この計算式を修正した値が使われている。

帯域幅コスト
10Gbps2
1Gbps4
100Mbps19
10Mbps100

[TableSW10-01:パスコスト]

ハイパーネット助手

2、4、19、100ってまた中途半端な値ですね。

スーパーインター博士

それは私に文句を言われてもな。
一応、コストは管理者が独自に設定も可能だ。

ハイパーネット助手

はぁ。

スーパーインター博士

ともかく、このコストを元にルートブリッジまでの「距離」が識別されるわけだ。
この値をBPDUに入れて、ポートの状態を決定するわけだな。

[FigureSW10-05:ポートの決定動作]

ハイパーネット助手

なるほど。ルートブリッジへの最小コスト、ルートポートと指定ポート。なんとなくわかったような。

スーパーインター博士

うむ。このように、各ポートの役割が決定することをコンバージェンスという。

ハイパーネット助手

こんばーじぇんす。
ルーティングプロトコルでも出てきましたよね。

スーパーインター博士

ま、意味的には同じだ。すべてのブリッジ(ルータ)が同一のSTP(ルート情報)を持った状態のことだな。

ハイパーネット助手

なるほど。たしかにそうですね。

スーパーインター博士

ちなみに、コストが同じだった場合、BIDが小さい側のブリッジのポートが指定ポートになる。

同一コストの場合

[FigureSW10-06:同一コストの場合]

ハイパーネット助手

ふむふむ。

スーパーインター博士

さらに、1台のスイッチから同一セグメントへ複数のポートから接続していた場合、ポートIDが小さいポートが使用される。

同一セグメントへの接続の場合

[FigureSW10-07:同一セグメントへの接続の場合]

ハイパーネット助手

はは〜。なんか考えられてますねぇ。

スーパーインター博士

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

ハイパーネット助手

はい。

スーパーインター博士

まだまだ次もSTPだ。では、また次回。

ハイパーネット助手

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

ブリッジID
[Bridge ID]
修正した値
修正前のコストと、修正したコストのどちらを使うかは、すべてのスイッチで統一しておく必要があります。
コンバージェンス
[convergence]
ポートID
ポートプライオリティとも。すべてのポートはデフォルトで同一の値を持つ。
もしすべてが同一だった場合、ポート番号が小さい方が選択される。
ハイパーネット助手ハイパーネット君の今日のポイント
  • ルートブリッジは最小のブリッジIDのブリッジが選択される。
    • ブリッジIDはプライオリティ+MACアドレス
    • BPDUの交換により、ルートブリッジが選出される
  • ルートブリッジの選出後、ポートの設定が行われる。
    • ルートブリッジの全ポートはフォワーディング
    • ルートブリッジへの最小コストのポートがルートポート。
    • セグメントの最小コストのポートは指定ポート

30 Minutes NetWorking No.SW10

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