トポロジチェンジとは
STPにおいて、以下のケースを「トポロジチェンジ」と呼びます。
STPが有効になっているポート(かつportfastの設定が無いポート)において、
- LinkDownする
- LinkUpする
- BPDUを受信していたが受信しなくなる
- 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を受信した場合は再計算は発生しません。
コメント