本記事ではスパニングツリープロトコル(STP)の拡張機能であるルートガード・ループガードについて解説いたします。
ルートガード(Root Guard)について
ルートガード(Root Guard)とは新たに導入されたL2機器がルートブリッジになる事を防止する機能です。
ルートガードが設定されているポートで優先度の高いBPDU(プライオリティ値が小さいBPDU)を受信するとポートエラー(root-inconsistent 状態)へ遷移させる事ができます。
root-inconsistent状態へ遷移させ通信出来なくさせる事により、意図しないL2機器がルートブリッジになる事を防止する事が可能です。
「root-inconsistent 状態」は一時的に通信不可状態にするだけであり、優先度の高いBPDUを受信しなくなると自動的に回復してポートエラー状態は解消されます。
※ルートガードは「指定ポート」を強制する機能です。
具体的には以下の図にて解説いたします!
以下の図の通り、例えばルードガードが設定されていないポートに優先度の高い機器(例えば私物のL2SW)が接続された場合、ルートブリッジが切り替わっていまう可能性がございます。
ルートブリッジの切り替わりにより、L2ネットワークが不安定になります。
以下の図の通り、ルードガードを実装していれば、例え優先度の高い機器が接続されてもルートスイッチになる事はありません。
ネットワークのトラブルを未然に防ぐ事が可能です!
BPDUガードとルートガードは非常に類義点が多いので、大きな違いを紹介いたします。
・「BPDUガード」はプライオリティ値に関わらずBPDUを受信するとポートエラー状態(err-disable)へ遷移します。
・「ルートガード」はプライオリティ値が小さいBPDU(ルートブリッジになろうとしているBPDU)を受信するとポートエラー状態(root-inconsistent)へ遷移します。つまり、プライオリティ値が大きいBPDUの受信は許可するという事です。
また、エラー状態(err-disable vs root-inconsistent)も異なりますので、エラー時の挙動や復旧方法も異なる点は理解しておきましょう!
ループガード(Loop Guard)について
ループガード(Loop Guard)は片リンク障害や誤接続等によりブロッキングポートでBPDUを受信しなくなった際にL2ループの発生を防止する機能です。
ループガードが設定されているポートでBPDUを受信しなかった場合、ポートエラー(loop-inconsistent 状態)へ遷移させL2ループの発生を防止します。
「loop-inconsistent 状態」は一時的に通信不可状態にするだけであり、再度BPDUを受信した場合自動的に回復してポートエラー状態は解消されます。
また、ループガードはBPDUが受信出来ない時にルートポート・代替ポートが指定ポートへ遷移する事を防止する機能である点を理解しておきましょう!
具体的には以下の図にて解説いたします!
以下の図の通り、例えば光ケーブルの片リンク障害によりSW3がSW2経由でのBPDUが受信出来なかった場合、SW3は障害が発生したと認識し「ブロッキングポート」と「指定ポート」へ遷移してしまいます。
結果、以下の図のようにL2ループが発生してしまいます。
ループガードを設定すれば、以下の図のように上記のような問題を解消する事が可能です!
ルートガードとループガードの同時設定(併用設定)について
ルートガードとループガードの機能は排他的な関係にあり、双方の機能を同時に有効化する事はできません。
なぜなら、ルートガード・ループガードは以下のような排他的な機能である為です。
・ルートガードは「指定ポートを強制する機能」
・ループガードは「ルートポート・代替ポートが指定ポートへ遷移する事を防止する機能」
ルートガードとループガードの同時設定は出来ない点は理解しておきましょう!
ルートガードとループガード 設定方法
ではルートガード・ループガードの設定方法について紹介します。
ルートガードの設定(spanning-tree guard root)
ルートガードを有効化する場合は「spanning-tree guard rootコマンド」で設定する事が可能です。
SW(config)# interface [インターフェース名&番号]
SW(config-if)# spanning-tree guard root
以下の記事にて、ルートガードに関する動作検証の結果を纏めております。ご興味のある方はぜひご覧ください。
>>参考記事: 「【検証結果】ルートガードの設定変更や正常性確認方法を纏めました!」
ループガードの設定(spanning-tree loopguard)
ループガードの有効化設定は以下の2パターンございます。
・L2機器全体でループガードを有効化する場合(グローバルで有効化)
SW(config)# spanning-tree loopguard default
・各ポート単位でループガードを有効化する場合(各ポートで有効化)
SW(config)# interface [インターフェース名&番号]
SW(config-if)# spanning-tree guard loop
以下の記事にて、ループガードに関する動作検証の結果を纏めております。ご興味のある方はぜひご覧ください。
>>参考記事: 「【検証結果】ループガードの設定変更や正常性確認方法を纏めました!」
ルートガードとループガード まとめ
最後までお読み頂きましてありがとうございます。
本記事で内容を纏めましたので再度復習してみて下さいね!
- ルートガードは新たに導入されたL2機器がルートブリッジになる事を防止する機能
- ループガードは片リンク障害等によりブロッキングポートでBPDUを受信しなくなった場合にL2ループの発生を防止する機能
- ルートガード・ループガードの同時設定は不可
以下の記事にてSTPに関する記事を纏めておりますので、STPに関する幅広い知識を身に付けたい方はご覧下さい!
>>参考記事: 「STPの基本〜応用まで!STPの仕様と検証結果の記事をまとめました!」