Portfast・BPDUガード・BPDUフィルターの仕様・設定方法を解説

本記事ではスパニングツリープロトコル(STP)の拡張機能であるPortfast・BPDUガード・BPDUフィルターについて解説いたします。

Portfastについて


Portfastとは即時にフォワーディング状態へ遷移しユーザ通信を即座に可能にする技術です。
エッジポート(PCやサーバ向けのポート)に設定される事が多いです。


STPでは通常、ユーザデータの通信が可能になる状態(フォワーディング状態)になるまで最大50秒の時間がかかります。
その為、STPの処理が不要なエッジポート(PCやサーバなどの接続ポート)においても、フォワーディング状態になるまで利用出来ない課題がございます。


Portfastでは上記の課題を解決する事ができます!
Portfastが有効化されているポートの遷移は以下のようなイメージです。
portfastの挙動

【補足】Portfastの仕様

よく誤解される事が多いのですが、PortFastはBPDUの送出を停止する機能ではありません。(PortFastのポートでもBPDUが送信されます。)


BPDUの送出を停止したい場合は、BPDUフィルターを実装する必要がございます。

注意点
誤ってL2SW向けのポートにPortfastを設定した場合、ブロードキャストストームが発生する可能性がございます。
ネットワークトラブルが発生する可能性がございますので、Portfastの誤設定や機器の誤接続には気をつけましょう。

BPDUガードについて


BPDUガード(BPDU Guard)はPortFastが設定されているポートにて機器やケーブルの誤接続によるL2ループを防ぐ機能です。
具体的には、BPDUガードが設定されたポートにてBPDUを受信した際、強制的にポートエラー状態(err-disable)にする事によりL2ループの発生を防止します。


BPDUガードのイメージ図は以下の通りです。
BPDUガードの仕様

err-disableの復旧方法について

err-disableとは通常のシャットダウン状態とは異なり、復旧方法が特殊です。
復旧方法は以下の2パターンです。ぜひ、覚えておきましょう!

  • 管理者が手動で復旧させる方法(shutdownコマンド+no shutdownコマンド)
  • 自動復旧させる方法(errdisable recovery causeコマンド)

BPDUフィルター


BPDUフィルター(BPDU Filter)はBPDUの送信・受信を停止する機能です。


前述の通り、Portfastの設定だけではBPDUの送信を止める事が出来ませんが、BPDUフィルターを実装すればBPDUの送信も停止する事が可能です。

PC・サーバー向けポートにおける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フィルター設定の注意点

BPDUフィルターは設定方法(グローバル適用orポート単位で適用)次第でBPDUの動作仕様が異なります。

    • グローバル適用した際はBPDUの送信のみを停止します。また、そのポートでBPDUを受信した場合、BPDUフィルタリングが無効になりBPDUの送信も再開されます。

BPDUフィルターの挙動(PC)

    • ポート適用した際はBPDUの受信・送信共に停止します。

BPDUフィルターの挙動(SW)

まとめ

最後までお読み頂きましてありがとうございます。


本記事で内容を纏めましたので再度復習してみて下さいね!

▼Portfast・BPDUガード・BPDUフィルターの基本はコチラ!▼

  • Portfastはエッジポートを即時にフォワーディング状態にしユーザ通信を即座に可能にする機能
  • BPDUガードはBPDUを受信した際にポートエラー状態(err-disable)にする事によりループを防止する機能
  • BPDUフィルターはBPDUの送信・受信を停止する機能



以下の記事にてSTPに関する記事を纏めておりますので、STPに関する幅広い知識を身に付けたい方はご覧下さい!

▼ あなたにオススメな記事 ▼

>>参考記事: STPの基本〜応用まで!STPの仕様と検証結果の記事をまとめました!