スパニングツリープロトコル(STP)

STPの再計算~ルートブリッジ変更の影響やトポロジチェンジ/ポートステートチェンジについて~

トポロジチェンジとは

STPにおいて、以下のケースを「トポロジチェンジ」と呼びます。

STPが有効になっているポート(かつportfastの設定が無いポート)において、

  1. LinkDownする
  2. LinkUpする
  3. BPDUを受信していたが受信しなくなる
  4. BPDUを受信していなかったが受信し始める

トポロジチェンジが発生すると、STPの場合は全体に周知され、トポロジチェンジを周知されたスイッチMACアドレステーブルの有効期限をFoward delayの値に短縮します

これは、トポロジチェンジが発生した際にはSTPのRootPortが変わった可能性があり、その場合、MACアドレステーブルも変わる必要があるからです。

注意点として、「トポロジチェンジ」が周知されたスイッチは必ずMACアドレステーブルの有効期限を短縮しますが、必ずしも通信断が発生するとは限りません。

「通信断」が発生する場合は必ず「トポロジチェンジ」が先に発生していますが、 RootPortが変更となる場合にポートステートがForwardからListeningに変わり、その結果「通信断」が発生します

なお、これはあくまでSTPの話です。RSTPではこの事実を根拠に、トポロジチェンジは、Block PortがForwardに変わるときのみに発生することになりました。また、トポロジチェンジが周知される範囲も必要な箇所に限定されます。

この章での本質は以下です。

---

ポートステートの変化は必ずListeningからやり直しなので、トポロジチェンジ後、再計算によりポートステートの変化が必要な場合はListeningによる通信断が発生します。

逆に言うと、RootPortを保持できれば、コストが変わろうが、ListeningやLearning状態にはならず、通信断は発生しません。(トポロジチェンジによるMACアドレステーブル有効期限の短縮は、独立した別の動作)

ルートブリッジ変更による影響

ルートブリッジが変更になると、多くのスイッチでRootPortを保持できませんので、前述の通り、多くのスイッチで30秒程度の通信断が発生する可能性があります。通常は『どのスイッチをルートブリッジにするか』を設計し、設定すべきですが、稀にデフォルトでSTPが有効になっているスイッチを『L2ループ防止だ』と設計もせずに動作させる人もいるかもしれません。その場合は最悪です。

MACアドレスに従ってルートブリッジが決まりますので、L2スイッチが故障しても30秒程度の通信断が発生する可能性があるばかりか、代替機を追加した場合においても通信断発生の可能性があります。

ケース別の再計算

★ケース① STPが有効になっているポートがLinkDownした場合

そのポートがDesignated Portの場合、RootPortは変更しないので再計算は発生しません。

そのポートがRootPortの場合、RootPortは変更となるため、全ポートListening状態となり、 Learningを経て、新たなRootPortが選定され、通信が再開されます(収束まで30秒)。

※ただし、Uplinkfastが設定されている場合はただちに代替のUplinkがForwarding状態となり、再計算は発生しません。Uplinkについてはこちらを参照下さい

★ケース② STPが有効になっているポートがLinkUpした場合

そのポートが優位なBPDUを受信し始めた場合はRootPortの変更となる(結果そのポートが RootPortとなる)ため、全ポートListening状態となり、Learningを経て、通信が再開されます(30秒)。

そのポートが劣位なBPDUを受信、もしくはBPDUを受信しない場合は再計算は発生しませんが、 そのポートのみListening状態となり、Learningを経て、(Block portにならなければ)通信が再開されます(30秒)。

※ただし、Portfastが設定されている場合はただちにForwarding状態となります。

★ケース③ BPDUを受信していたポートが受信しなくなった場合

収束状態において、BPDUを受信しているポートはUplink、つまり、RootPortか代替Portのいづれかです。

それがRootPortであれば、 最後にBPDUを受信してから20秒(MaxAge)経った後、全ポートListening状態となり、 Learningを経て新たなRootPortが選定され、通信が再開されます(障害から最大50秒)。

それが代替Portの場合は、そのポートだけListening状態となり、Learningを経てDesignated Portになります。

★ケース④ BPDUを受信していなかったポートが受信し始めた場合

そのポートが優位なBPDUを受信し始めた場合はRootPortの変更となる(結果そのポートが RootPortとなる)ため、全ポートListening状態となり、Learningを経て、通信が再開されます(30秒)。

そのポートが劣位なBPDUを受信した場合は再計算は発生しません。

コメント

タイトルとURLをコピーしました