本記事ではスパニングツリープロトコル(STP)の拡張機能であるPortfast・BPDUガード・BPDUフィルターについて解説いたします。
Portfastについて
Portfastとは即時にフォワーディング状態へ遷移しユーザ通信を即座に可能にする技術です。
エッジポート(PCやサーバ向けのポート)に設定される事が多いです。
STPでは通常、ユーザデータの通信が可能になる状態(フォワーディング状態)になるまで最大50秒の時間がかかります。
その為、STPの処理が不要なエッジポート(PCやサーバなどの接続ポート)においても、フォワーディング状態になるまで利用出来ない課題がございます。
Portfastでは上記の課題を解決する事ができます!
Portfastが有効化されているポートの遷移は以下のようなイメージです。
よく誤解される事が多いのですが、PortFastはBPDUの送出を停止する機能ではありません。(PortFastのポートでもBPDUが送信されます。)
BPDUの送出を停止したい場合は、BPDUフィルターを実装する必要がございます。
誤ってL2SW向けのポートにPortfastを設定した場合、ブロードキャストストームが発生する可能性がございます。
ネットワークトラブルが発生する可能性がございますので、Portfastの誤設定や機器の誤接続には気をつけましょう。
BPDUガードについて
BPDUガード(BPDU Guard)はPortFastが設定されているポートにて機器やケーブルの誤接続によるL2ループを防ぐ機能です。
具体的には、BPDUガードが設定されたポートにてBPDUを受信した際、強制的にポートエラー状態(err-disable)にする事によりL2ループの発生を防止します。
BPDUガードのイメージ図は以下の通りです。
err-disableとは通常のシャットダウン状態とは異なり、復旧方法が特殊です。
復旧方法は以下の2パターンです。ぜひ、覚えておきましょう!
- 管理者が手動で復旧させる方法(shutdownコマンド+no shutdownコマンド)
- 自動復旧させる方法(errdisable recovery causeコマンド)
BPDUフィルター
BPDUフィルター(BPDU Filter)はBPDUの送信・受信を停止する機能です。
前述の通り、Portfastの設定だけではBPDUの送信を止める事が出来ませんが、BPDUフィルターを実装すればBPDUの送信も停止する事が可能です。
Portfastが有効になっているポートは「PCやサーバーが接続されているポート」という事が大前提です。
また、PCやサーバーはSTPに参加させる必要はございません。
その為、BPDUを送信する必要性がない為、BPDUフィルターを設定しBPDUの送出を停止しましょう。
BPDUフィルターは設定方法次第(グローバルで有効化 or ポート単位で有効化)で「BPDUの送受信を停止」or「BPDUの送信のみを停止」を選択する事が可能です。
※詳細は本記事の下部にて図解して説明しておりますので、興味のある方はご覧ください。
では、以下にてPortfast・BPDUガード・BPDUフィルターの設定方法を紹介します!
設定方法
Portfast・BPDUガード・BPDUフィルターの設定方法について紹介します!
Access ポート向け Portfastの設定
Portfastの有効化・無効化設定について、以下の2パターンに分けて紹介いたします。
Portfastの有効化
Portfastの有効化方法は2パターン「(グローバルで有効化 or ポート単位で有効化)」ございます。
・全ポートでportfastを有効化する場合(グローバルで有効化)
【設定コマンド】
SW(config)# spanning-tree portfast default
・各ポートでportfastを有効化する場合
【設定コマンド】
SW(config)# interface [インターフェース名&番号]
SW(config-if)# spanning-tree portfast
Portfastの無効化
Portfastの無効化設定は以下の2パターンございます。
・AccessPortの全ポートでportfastを無効化する場合(グローバルで有効化)
【設定コマンド】
SW(config)# spanning-tree portfast disable
・各ポートでportfastを無効化する場合(各ポートで有効化)
【設定コマンド】
SW(config)# interface [インターフェース名&番号]
SW(config-if)# spanning-tree portfast disable
以下の記事にて、Portfastに関する動作検証の結果を纏めております。ご興味のある方はぜひご覧ください。
>>参考記事: 「【検証結果】Portfastの設定変更や正常性確認方法を纏めました!」
補足: Trunkポート向けPortfastの設定(spanning-tree portfast trunk)
TrunkポートでPortfastを有効化したい場合は「spanning-tree portfast trunkコマンド」にて設定する必要がございます。
Trunkポート向け Portfastの有効化
【設定コマンド】
SW(config)# interface [インターフェース名&番号]
SW(config-if)# spanning-tree portfast trunk
BPDUガードの設定
BPDUガードの有効化設定は以下の2パターン「(グローバルで有効化 or ポート単位で有効化)」ございます。
・Portfastが設定されている全ポートでBPDUガードを有効化する場合(グローバルで有効化)
【設定コマンド】
SW(config)# spanning-tree portfast bpduguard default
・Portfastの設定問わず各ポート単位でBPDUガードを有効化する場合(各ポートで有効化)
【設定コマンド】
SW(config)# interface [インターフェース名&番号]
SW(config-if)# spanning-tree bpduguard enable
以下の記事にて、BPDUガードに関する動作検証の結果を纏めております。ご興味のある方はぜひご覧ください。
>>参考記事: 「【検証結果】BPDUガードの設定変更や正常性確認方法を纏めました!」
BPDUフィルターの設定
BPDUフィルターの有効化設定は以下の2パターン「(グローバルで有効化 or ポート単位で有効化)」ございます。
・Portfastが設定されている全ポートでBPDUフィルターを有効化する場合(グローバルで有効化)
【設定コマンド】
SW(config)# spanning-tree portfast bpduguard default
・Portfastの設定問わず各ポート単位でBPDUガードを有効化する場合(各ポートで有効化)
【設定コマンド】
SW(config)# interface [インターフェース名&番号]
SW(config-if)# spanning-tree bpdufilter enable
以下の記事にて、BPDUフィルターに関する動作検証の結果を纏めております。ご興味のある方はぜひご覧ください。
>>参考記事: 「【検証結果】BPDUフィルターの設定変更や正常性確認方法を纏めました!」
BPDUフィルターは設定方法(グローバル適用orポート単位で適用)次第でBPDUの動作仕様が異なります。
- グローバル適用した際はBPDUの送信のみを停止します。また、そのポートでBPDUを受信した場合、BPDUフィルタリングが無効になりBPDUの送信も再開されます。
- ポート適用した際はBPDUの受信・送信共に停止します。
まとめ
最後までお読み頂きましてありがとうございます。
本記事で内容を纏めましたので再度復習してみて下さいね!
- Portfastはエッジポートを即時にフォワーディング状態にしユーザ通信を即座に可能にする機能
- BPDUガードはBPDUを受信した際にポートエラー状態(err-disable)にする事によりループを防止する機能
- BPDUフィルターはBPDUの送信・受信を停止する機能
以下の記事にてSTPに関する記事を纏めておりますので、STPに関する幅広い知識を身に付けたい方はご覧下さい!
>>参考記事: 「STPの基本〜応用まで!STPの仕様と検証結果の記事をまとめました!」