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

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

復習されたい方はコチラ!
本記事はSTPを理解されている前提の記事になっておりますので、STPに関して復習されたい人は以下の記事をご確認下さい。

Portfastについて

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

上記の課題を改善する為に作られたのが、Portfastです。
Portfastとはエッジポート(PCやサーバのポート)を即時にフォワーディング状態(リスニング状態・ラーニング状態をスキップ)する事により、ユーザ通信を即座に可能にする技術です。

portfastの挙動

【補足】Portfastの仕様

PortFastはBPDUの送出を停止する機能ではありません。(PortFastのポートでもBPDUが送信されます。)
BPDUの送出を停止にはBPDUフィルターを実装する必要がございます。

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

BPDUガードについて

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

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の設定

Portfastの設定は有効化・無効化の2パターンに分けて紹介いたします。

Portfastの有効化

Portfastの有効化設定は以下の2パターンございます。

・全ポートで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に関する動作検証の結果を纏めております。ご興味のある方はぜひご覧ください。

BPDUガードの設定

BPDUガードの有効化設定は以下の2パターンございます。

・Portfastが設定されている全ポートでBPDUガードを有効化する場合(グローバルで有効化)

【設定コマンド】
SW(config)# spanning-tree portfast bpduguard default

・Portfastの設定問わず各ポート単位でBPDUガードを有効化する場合(各ポートで有効化)

【設定コマンド】
SW(config)# interface [インターフェース名&番号]
SW(config-if)# spanning-tree bpduguard enable

以下の記事にて、BPDUガードに関する動作検証の結果を纏めております。ご興味のある方はぜひご覧ください。

BPDUフィルターの設定

BPDUフィルターの有効化設定は以下の2パターンございます。

・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フィルターの挙動(PC)

  • ポート適用した際はBPDUの受信・送信共に停止します。
  • BPDUフィルターの挙動(SW)

まとめ

いかがでしたでしょうか?

Portfast・BPDUガード・BPDUフィルターについて以下の点は理解しておきましょう!

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

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