■ ブリッジ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ギガイーサネットがあるので、この計算式を修正した値が使われている。
帯域幅 | コスト |
---|---|
10Gbps | 2 |
1Gbps | 4 |
100Mbps | 19 |
10Mbps | 100 |
[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の交換により、ルートブリッジが選出される
- ルートブリッジの選出後、ポートの設定が行われる。
- ルートブリッジの全ポートはフォワーディング
- ルートブリッジへの最小コストのポートがルートポート。
- セグメントの最小コストのポートは指定ポート
- ルートブリッジは最小のブリッジIDのブリッジが選択される。