【中堅NWエンジニア脱却】RSTPの復旧時間が遅い場合はPortfast設定を疑おう

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互換モードとなる流れです

TCN BPDU発生時のPortfast有無による動作の違い

この記事を書いた人