【STP③】ブロッキングポートの選出と計算方法解説

stp-part3

STPの基本的な考え方は分かったしいよいよブロッキングポートの具体的な計算をやってみたいな!

チャーチルさん

ポン先生

OK! ただしSTPは出てくる用語や数字が多いので最初は苦労するかもね。

この記この記事ではブロッキングポートの具体的な計算や選出プロセスについて解説します。内容を理解できればSTPの基本的な設計ができるようになります。おそらく初見では難しい点があるかもしれませんが繰り返し読んで一つずつ理解していきましょう。

前回の記事を読んでいる事が前提となります。

STP基本情報

STP用語

STPは出てくる用語が非常に多いです。まずは各用語をまとめておきます(詳細は各章で説明)。

■STP用語
用語説明
BPDUスイッチ間で交換されるSTPの情報。主にルートブリッジのID、ルートパスコスト、自信のブリッジID、ポートIDなどが格納されている。※これ以外にも情報は格納されている。
ルートブリッジSTPトポロジーにおいて親玉になるスイッチ。各計算時にも基準になる。
ブリッジIDルートブリッジを決めるための優先度で各スイッチ毎に固有の値を持つ。ブリッジプライオリティとMACアドレスで構成され、ネットワーク上で最小のブリッジIDを持つスイッチがルートブリッジとなる。
ブリッジプライオリティルートブリッジを決めるための値。一般的にはブリッジプライオリティの値でルートブリッジを制御する。0~65535の範囲で4096刻みで設定可能。
ルートポートあるスイッチから見たときに一番ルートブリッジに近いポート。
パスコストスイッチポートのコスト値で小さいほど距離が小さい事を意味する。ポートの帯域幅で値が決まる(手動で設定も可能)。
ルートパスコストルートブリッジに到達するまでのパスコストの合計。
ポートID同じスイッチのポート同士で比較する際に利用される値(ルートポート選出時)。ルートプライオリティとポート番号で構成される。
ポートプライオリティポートの優先度を設定する値。小さい方が有利。
セグメント各スイッチ間の物理的な接続の事(ネットワークセグメントとは別の意味)。
指定ポートあるセグメントにおいてルートブリッジに近い方のポート
ブロッキングポート通信を遮断しているポート。これによりループを止めている。

また、スイッチおよびポートのステータスや選出ルールも複数あるため一覧で出しておきます。

■STPスイッチステータス
名前本サイト表記選出数・箇所選出基準①選出基準②(①で確定しない場合)
ルートブリッジRB
(Root Bridge)
1ネットワークに1台最小ブリッジIDのスイッチ
(最小ブリッジプライオリティのスイッチ)
最小MACアドレスのスイッチ
非ルートブリッジ非RBRBが決定すればその他スイッチは全て非RB--

■STPポートステータス
名前本サイト表記選出数・箇所選出基準①選出基準②
(①で確定しない場合)
選出基準③
(②で確定しない場合)
ルートポートRP
(Root Port)
非RBあたり1ポート
※RBは無し
ルートパスコスト最小ポート受信したBPDUのポートID最小ポート
(ポートプライオリティ最小ポート)
受信したBPDUのポート番号若番ポート
指定ポートDP
(Designated Port)
セグメントあたり1ポート
※RBは全ポートがDPで確定
最小のルートパスコストのRPを持つ側のスイッチのポートブリッジID最小ポート-
非指定ポート
(ブロッキングポート)
BKP
(Blocking Port)
1ループあたり1ポートRP, DPに選出されなかった残りのポート--

BPDU

STPは予めネットワーク管理者がどういった構成なのか入力する訳ではなく、スイッチ同士が自動的に計算しトポロジーを構成します。ただし、スイッチも自分の他にどういったスイッチがあるのか初期状態では知りません。そこでBPDU(Bridge Protocol Data Unit)というフレームを送信し、お互いの情報を交換することでSTPのステータスを計算します。

BPDUの送受信

STPではBPDUが全てと言っても過言ではない程重要な情報です。BPDUの具体的な内容は以下表の通りですが、全てを暗記する必要はありません。重要なポイントについては次章以降で説明しますが、ひとまずはBPDUという情報を交換してブロッキングポートを決めているという理解でOKです。

■BPDUデータ構造(バージョン0)
項目内容バイト数
Protocol Identifier値は0。2
Protocol Version IdentifierIEEE802.1D=0。1
BPDU Type通常は0。
Topology Change Notification BPDU = 0x80。
1
BPDU Flags1bit目:Topology Change
8bit目:Topology Change応答
※2bit〜7bitは未使用
1
Root IdentifierルートブリッジのブリッジID。8
Root Path Costルートパスコスト値。4
Bridge Identifier自分自身のブリッジID。8
Port IdentifierポートID値。2
Message Ageルートブリッジまでのホップ数。2
Max Age障害を検知するまでのBPDU保持時間。
デフォルトは20秒。
2
Hello TimeBPDU送信間隔。
デフォルトは2秒。
2
Forward Delayリスニングおよびラーニングの時間。
デフォルトは15秒。
2

なお、STPではBPDUを使ってブロッキングポートを以下プロセスで選出します。次章以降では各プロセスについて解説します。

ブロッキングポートが決まるまでの流れ
  1. ルートブリッジの選出
  2. ルートポートの選出
  3. 指定ポートの選出
  4. ブロッキングポートの選出

ルートブリッジの選出

この章の項目
  • ルートブリッジの選出ルール
  • ブリッジID
  • 具体例
    • RBケース1:ブリッジプライオリティで決定する場合
    • RBケース2:MACアドレスで決定する場合

ルートブリッジの選出ルール

RB(ルートブリッジ)はそのネットワークで中心となるスイッチです。STPにおいては各ステータスの計算の基準となる最重要スイッチと言えます。RBは以下ルールで決まります。

RB選出ルール
  • 1ネットワークあたり必ず1台のみ選出
  • 全スイッチを比較し最小ブリッジIDを持つスイッチがRBになる
    • 最小ブリッジプライオリティのスイッチ
    • ブリッジプライオリティが同じ場合は最小のMACアドレスを持つスイッチ 

ブリッジID

ブリッジIDとはRBを決めるための優先度です。ブリッジプライオリティMACアドレスで構成され、値が小さいほど有利になります。

ブリッジIDのデータ構造

上記通り頭にブリッジプライオリティが来るのでブリッジプライオリティでRBが決定すれば比較処理は完了ブリッジプライオリティで決着がつかなかったらMACアドレスで比較になります。

ブリッジプライオリティは設定可能な値なので設計次第ですが、設計漏れやミスがあり万が一同じ値でもちゃんとRBが決まるようにMACアドレス(筐体固有値)で比較する仕組みとなっています。

ブリッジプライオリティは0~65535の範囲の値で、4096刻みで設定可能です。

ポン先生

データ構造で見るとイメージ付きにくいかもしれないけど、例えば2桁の数字2つの大きさを比較する時、10の位で勝っていれば1の位を比較する必要はないよね(1の位まで比較するのは10の位が同じ時だけ)。これと同じでブリッジプライオリティの方が桁が上だからブリッジプライオリティでRBが決まればそこで比較処理は終わりなんだ。

   64 VS 18 → 10の位的に64の方が大きい(1の位は比較不要)
   14 VS 18 → 10の位は同じなので1の位を比較 → 18の方が大きい

具体例

RBケース1:ブリッジプライオリティで決定する場合

RBケース1:ブリッジプライオリティで決定する場合

  • スイッチAのブリッジプライオリティ=0であり最小
  • よって、スイッチA=RB
  • この場合、MACアドレスの大小は無関係

RBケース2:MACアドレスで決定する場合

RBケース2:MACアドレスで決定する場合

  • スイッチA, Bのブリッジプライオリティが共に4096
  • そのためMACアドレスの比較
  • スイッチBのMACアドレスの方が小さい
  • よって、スイッチB=RB

ルートポートの選出

この章の項目
  • ルートポートの選出ルール
  • パスコスト
  • ルートパスコスト
  • ポートID
  • 具体例
    • RPケース1:ルートパスコストで決定する場合
    • RPケース2:ポートプライオリティで決定する場合
    • RPケース3:ポート番号で決定する場合

ルートポートの選出ルール

RP(ルートポート)とは1台の非RBからRBへのルートの内、ネットワーク的に一番近いポートのことです。具体的には以下ルールで決定します。

RP選出ルール
  • RBはRPなし
  • 非RBは必ず1ポートがRPになる
  • ルートパスコストが最小のポートがRPになる
  • 同じルートパスコストのポートがある場合、BPDU送信元のポートID最小ポートがRP
    • 最小ポートプライオリティのポート
    • ポートプライオリティが同じ場合は若番のポート

パスコスト

まず、スイッチのポートには一定のコスト値が設定されています。これはポートの速度が遅いほど通信に時間がかかるのでその分重み付けをしているようなイメージです。単純に1Gbpsのポートより10Mbpsのポートの方が遅いので10Mポートの方は評価を低くするという事ですね。ポートの速度に基づいたコストのことをパスコストと言います。

パスコスト

パスコストはポートの速度によって以下のように決まっています(設定で変更も可能です。)

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

ルートパスコスト

ルートパスコストとはRBまでのパスコストの合計です。中間を経由するスイッチのポートのパスコストを足し合わせます。

ルートパスコスト

例えば上記の構成でスイッチCの1番ポート・2番ポートを見ると以下のようになります。

■スイッチC1番ポート
自身のパスコスト10でRBに到達可能
よってルートパスコストも10

■スイッチC 2番ポート
自身のパスコスト20でスイッチBに到達
スイッチBの2番ポートのパスコスト100を追加しRBに到達
ルートパスコストは20+100=120

ポートID

ルートパスコストで決まらない場合ポートIDを比較してRPを決定します。ポートIDとはRPを決めるための優先度です。ポートプライオリティポート番号で構成され、値が小さいほど有利になります。ブリッジID同様、ポート番号よりもポートプライオリティが上位(上の桁)なのでポートプライオリティの方が支配的です。

ポートプライオリティは0~240の値となります。

ポートIDのデータ構造

具体例

RPケース1:ルートパスコストで決定する場合

RPケース1:ルートパスコストで決定する場合
  • スイッチBの1番ポート:ルートパスコスト=15
  • スイッチBの2番ポート:ルートパスコスト=100
  • よってスイッチBのRPは1番ポート
  • スイッチCの1番ポート:ルートパスコスト=10
  • スイッチCの2番ポート:ルートパスコスト=120
  • よってスイッチCのRPは1番ポート

RPケース2:ポートプライオリティで決定する場合

RPケース2:ポートプライオリティで決定する場合
  • スイッチBのポート1、2は共にルートパスコスト10で同じ
  • ポートIDで比較する
  • まずはBPDU送信元(スイッチA)のポートプライオリティを比較する
  • スイッチAのポート1(128)よりもポート2(96)の方がポートプライオリティが低い
  • よってスイッチAのポート2に接続しているスイッチBのポート2がRPになる

スイッチBのRPを決めるプロセスだけど、スイッチBでは無くスイッチAのポートプライオリティ設定で決まるんだね。なんか間違えそう(*_*)

チャーチルさん

RPケース3:ポート番号で決定する場合

RPケース3:ポート番号で決定する場合
  • スイッチBのポート1、2は共にルートパスコスト10で同じ
  • ポートIDで比較する
  • まずはBPDU送信元(スイッチA)のポートプライオリティを比較する
  • スイッチAのポート1,2は共にポートプライオリティ128で同じ
  • スイッチAのポート番号を比較する
  • ポート1の方がポート2よりも若番(小さい番号)なのでスイッチAのポート1から送信されたBPDUの方が有利
  • よってスイッチAのポート1に接続しているスイッチBのポート1がRPになる

指定ポートの選出

この章の項目
  • 指定ポートの選出ルール
  • セグメント
  • 具体例
    • DPケース1:消去法的に決定する場合
    • DPケース2:ルートパスコストで決定する場合
    • DPケース3:ブリッジIDで決定する場合

指定ポートの選出ルール

DP(指定ポート)とは各セグメントで最もRBに近いポートです。DPは以下ルールで決定します。

DP選出ルール
  • RBは必ず全ポートがDPになる
  • 各セグメントあたり必ず1ポートのみDPになる
  • 最小のルートパスコストのRPを持つ側のスイッチのポートがDPになる
  • ルートパスコストで決まらない場合はブリッジIDが小さい方のスイッチのポートがDP

また、DPまで決定すれば残ったポートがBKP(ブロッキングポート)になります。

セグメントとDP

セグメントとはスイッチ間の物理的な接続のことです。
192.168.0.0/24などのネットワークセグメントのことではないので注意!

物理的な接続のため「1セグメント=スイッチA側のポート+スイッチB側のポート」の接続で構成されます。STPにおいてはスイッチA側ポートがDPならスイッチB側ポートは非DPとなります。

セグメントとDP

例えば上記接続の場合、
「スイッチAポート1⇔スイッチBポート1」の接続で一つのセグメント、
「スイッチAポート2⇔スイッチBポート2」の接続で一つのセグメント、
となります。

また、RBのポートは必ずDPになるためスイッチAがRBに決まれば(スイッチBの設定に関わらず)スイッチAのポートは全てDPになります。

具体例

DPケース1:消去法的に決定する場合

DPケース1:消去法的に決定する場合
  • RBであるスイッチAのポート1、2はDPで確定
  • スイッチB側はルートパスコストの低いポート1がRPに決定
  • ここでセグメント1は、「スイッチA側:DP、スイッチB側:RP」で確定
  • セグメント2について、既にスイッチA側:DPかつスイッチBのポート1がRPなのでスイッチBポート2は割り当てるステータスなし
  • この残ったポートがBKPになる

DPケース2:ルートパスコストで決定する場合

DPケース2:最小ルートパスコストで決定する場合-①
  • セグメント1、2のポートステータスは上記の通り
  • セグメント3はスイッチB側、スイッチC側共にRPは無いのでまだ何も決まっていない
  • この場合どうなるか?
DPケース2:最小ルートパスコストで決定する場合-②
  • 上記の場合スイッチB、スイッチCの最小ルートパスコストを比較する
  • そのスイッチの最小ルートパスコスト=RPのルートパスコスト
  • スイッチB=20、スイッチC=10なのでより小さいルートパスコスト値を持つスイッチC側のポート2がDPになる
  • 残ったスイッチBのポート1がBKP

セグメント3のポートのステータスを決めるプロセスだけど、参照するのはセグメント3のポート(スイッチBのポート1、スイッチCのポート2)のルートパスコストでは無いという点がポイントであり分かりにくい所かな。

チャーチルさん

DPケース3:ブリッジIDで決定する場合

DPケース3:ブリッジIDで決定する場合-①
  • セグメント1、2のポートステータスは上記の通り
  • スイッチA(RB)を中心にスイッチB経由、スイッチC経由どちらでもルートパスコストは同じ
  • この場合どうなるか?

DPケース3:ブリッジIDで決定する場合-②
  • 上記の場合スイッチB、スイッチCのブリッジIDを比較する
  • より小さいブリッジIDを持つスイッチB側のポート1がDPになる
  • 残ったスイッチCのポート2がBKP

まとめ

ポイント
  • BPDUを交換してSTPのステータスを計算している

  • STPでは以下項目が選出され最終的にブロッキングポートが決まる

    • ルートブリッジ

    • ルートポート

    • 指定ポート

    • ブロッキングポート

■STPスイッチステータス
名前本サイト表記選出数・箇所選出基準①選出基準②(①で確定しない場合)
ルートブリッジRB
(Root Bridge)
1ネットワークに1台最小ブリッジIDのスイッチ
(最小ブリッジプライオリティのスイッチ)
最小MACアドレスのスイッチ
非ルートブリッジ非RBRBが決定すればその他スイッチは全て非RB--
■STPポートステータス
名前本サイト表記選出数・箇所選出基準①選出基準②
(①で確定しない場合)
選出基準③
(②で確定しない場合)
ルートポートRP
(Root Port)
非RBあたり1ポート
※RBは無し
ルートパスコスト最小ポート受信したBPDUのポートID最小ポート
(ポートプライオリティ最小ポート)
受信したBPDUのポート番号若番ポート
指定ポートDP
(Designated Port)
セグメントあたり1ポート
※RBは全ポートがDPで確定
最小のルートパスコストのRPを持つ側のスイッチのポートブリッジID最小ポート-
非指定ポート
(ブロッキングポート)
BKP
(Blocking Port)
1ループあたり1ポートRP, DPに選出されなかった残りのポート--

STPの計算は理解するまでは正直しんどいと思います。分かりそうで分からないという点もあるでしょう。。。実際良くある構成であればどこかブロッキングポートになるかは予想できますが、特殊な接続だったり、一部ポートのコストが変わっただけで分からなくなります。どういったパラメータでもこの記事の内容を抑えておけば計算自体はできるのでネットワークエンジニアであればマスターしておきましょう。