Point
・RSTPを利用する際は、対向がスイッチではない全てのポートにPortfast設定を行いましょう
・適切なPortfast設定がない場合、障害時の復旧が50秒程度になるケースがあります
・Portfastは単にリンクアップ時の迅速な通信開始を行う設定ではないためです
・STP、RSTP、Portfast、TCNなどの技術的単語の詳細については他サイトで確認をお願いします
RSTP利用時に復旧が遅くなるケースがある
RSTPを有効にした場合、障害時の復旧時間としては2~3秒程度が期待されます
しかし実際にはSTPと同じぐらい(50秒前後)かかってしまう場合があります
スイッチでRSTPだけを有効にしている(ノーマルSTPが混在していない)環境でも
障害時の復旧が思ったほど早くならないケースがあります
見落とされがちなPortfast設定
復旧が遅くなる理由として、見落とされがちなのはPortfast設定です
(PortfastはCiscoスイッチにおける名称であり、他社スイッチの場合は異なる名称の可能性があります)
現実的にはノーマルSTP設定が混ざっていたなどの設定ミスや、物理的な結線ミスなども原因として考えられますが、趣旨とずれるため本記事では扱いません
PortfastはPCやサーバが接続されるアクセスポートに設定し、リンクアップ時に即座にアップさせる(STPに邪魔させない)機能だと思っている方は多い気がします
私も昔は思っていました
しかし実際には対向がRSTPを扱えないネットワーク機器(FWやVPN装置など)の場合もPortfast設定を行う必要があります
スイッチは全部RSTP有効で、PCが接続されたポートには全部Portfastが入っているのに
復旧時間が想定よりも長い場合は、一度全ポートのPortfast設定を見直してみてください
原因はSTPとの互換性確保
ノーマルSTPの改良版としてPVSTP、RSTP、MTPなど色々でており
STPとRSTPの間には互換性があることはよく知られています
互換性がクセモノであり、Portfastが必要となる原因でもあります
技術的な詳細は割愛しますが、ノーマルSTPの大きな欠点はBPDUが能動的にやりとりされず、
各スイッチが2秒毎に送信を繰り返すことです
対象ネットワーク全体にBPDUのバケツリレーが終わるまで待つ必要があり
「これぐらいの時間があればBPDUのバケツリレーが終わるだろう」
というイメージで、余裕を見て待ち時間が定められました
結果として50秒程度の復旧時間となってしまっています
50秒は長すぎるということで、RSTPではBPDU受信時にすぐに返信し、
能動的に打ち返すことで数秒での復旧が可能になっています
RSTP動作上のポイントとなるのが、対向スイッチからBPDUが返ってくるはずという点であり
BPDUが返ってこない場合、対向がRSTP有効スイッチであるとみなしません
対向が非RSTPの時にノーマルSTPとの互換性が発動し、BPDUを待つ動作をとります
Portfast設定は、設定したポートの対向がスイッチではないと宣言する、というイメージを持ってもらえるとわかりやすそうです
<RSTP有効スイッチ>ーーー<RSTP有効スイッチ> ⇒ 迅速なBPDU交換
<RSTP有効スイッチ>ーーー<PC/サーバなど> ⇒ BDPUが返ってこないため、Portfast設定が必要
少し詳細に言うと、本記事の問題が発生するのはTCN BPDUがブロードキャストされた場合です
※TCNはTopology Change Notificationの略で、トポロジーが変化したことを伝える役割を持ちます
リンクダウンであればブロードキャストはされず、対象スイッチのみでやりとりしますが
例えばルートブリッジがダウンした場合はSTP/RSTPの対象スイッチ全体に伝えて
コストやルートブリッジの選出などを行う必要があるため、ブロードキャストを行います
ブロードキャストドメインの全てのスイッチに伝播させるため、Portfastが有効になっていない(つまり対向をスイッチとみなしている)ポートからもTCN BPDUが送信されます
対向スイッチでRSTPが有効ではない場合、BPDUが返ってこないためSTP互換モードとなる流れです