ネットワークの世界へ足を踏み入れたばかりの皆さん、こんにちは!
日々のインフラ構築や運用、本当にお疲れ様です。スイッチやルーターが織りなすパケットの旅は、時にミステリアスで、時に私達エンジニアを悩ませる奥深い世界ですよね。
さて、今回はスイッチングネットワークの「お守り」的存在であるスパニングツリープロトコル(STP)の、ちょっとマニアックだけど実務ではめちゃくちゃ重要な機能「BPDUフィルタ(BPDU Filter)」について、一緒に紐解いていきましょう!
「なんだか難しそうな名前だな……」と感じた方も大丈夫です。一歩ずつ、身近な例えから優しく解説していきますので、コーヒーでも飲みながらリラックスして読んでくださいね。
—
1. スパニングツリーとBPDU:オフィスの郵便配達に例えてみよう
ネットワークの基本ルールである「ループ(輪っか)」を防ぐために、スイッチ達は常に話し合いをしています。
「こっちの経路はメインで使うから、そっちは万が一の備えにふさいでおこうね」と、ネットワーク全体で交通整理をしてくれるのがスパニングツリープロトコル(STP)です。
そして、このスイッチ同士の会議で使われる「連絡文書」のことを、BPDU(Bridge Protocol Data Unit)と呼びます。
ここで、ちょっと想像してみてください。
あなたの会社のフロアに、総務部から各部署へ「業務連絡の封筒(BPDU)」が毎秒のように配られています。スイッチ同士が繋がっているポートであれば、この連絡網はなくてはならない必須のものです。
しかし、その連絡網の宛先が、スイッチではなく「一般の社員(パソコンやプリンターなどの端末)」のデスクだったらどうでしょう?
「お疲れ様です! こちらスパニングツリーのトポロジ変更通知です!」
なんて封筒が、自分のパソコンのLANポートに毎秒のように届いたら……パソコン側としては「いや、僕ら総務の会議に参加してないし、そんな業務連絡言われても困るんですけど!」ってなりますよね。
この「端末が繋がっているポート(エッジポート)」において、無駄な業務連絡(BPDU)をピタッとシャットアウトしてくれる優秀な警備員、それが今回主役のBPDUフィルタなんです。
—
2. BPDUフィルタって一体どんな機能?
BPDUフィルタは、一言で言うと「特定のポートで、BPDUの送信と受信を無効化する機能」です。
通常、ポートを「エッジポート(PortFastなどとも呼ばれます)」として設定すると、端末が接続された瞬間にポートがすぐ通信状態(Forwarding状態)になります。これによって、パソコンを繋いだ瞬間に「あれ、ネットに繋がるまで30秒も待たされる……」というイライラが解消されます。
しかし、エッジポートであっても、スイッチのデフォルトの挙動では、接続直後に数個のBPDUを親切心から「送信」してしまったり、万が一端末側から怪しいBPDUが送られてきたときに備えて待ち構えたりしています。
ここでBPDUフィルタを有効にすると、そのポートは完全に「STPの世界から孤立した平和な一帯」になります。
- BPDUを送らない: 接続されている端末に余計なプロトコルフレームを一切流しません。
- BPDUを受け取らない: 端末側から送られてきたBPDUを無視します(※グローバル設定とインターフェース設定で挙動が少し変わるので注意が必要です)。
—
3. 実務での設定例:Cisco Catalystスイッチの場合
それでは、実際の現場でどのように設定するのか、CiscoのIOSを例に見ていきましょう。
ネットワーク初学者の方も、「あ、こういう風にコマンドを叩くんだな」と雰囲気を掴んでもらえればバッチリです!
パターンA:インターフェースごとに個別にBPDUフィルタをかける
特定のポート(例えば、一般のPCが繋がる GigabitEthernet0/1)だけにBPDUフィルタを適用したい場合の書き方です。
! コンフィギュレーションモードへ移動します
configure terminal
! 対象のインターフェースを指定します
interface GigabitEthernet0/1
! このポートをエッジポート(PortFast)として動作させます
spanning-tree portfast
! このポートでのBPDUの送信・受信を無効化(フィルタリング)します
spanning-tree bpdufilter enable
! 設定を終了します
end
この設定を行うと、GigabitEthernet0/1 からは一切BPDUが送信されなくなります。端末側にとっては非常にクリーンな通信環境が保たれますね。
パターンB:スイッチ全体(グローバル)でデフォルト有効にする
もしフロア内の多くのポートにパソコンやサーバーが接続される場合、一つひとつのポートに設定を入れるのは大変ですよね。そんなときは、スイッチ全体に対して「PortFastが有効なポートなら、デフォルトでBPDUフィルタもかけちゃおう!」という一括設定が便利です。
! グローバルコンフィギュレーションモード
configure terminal
! スイッチ全体でPortFastが設定されたポートに対して、デフォルトでBPDUフィルタを有効化
spanning-tree portfast default
spanning-tree bpdufilter default
end
ただし、このグローバル設定には1つ大きな注意点があります。「BPDUfilter default」を設定した場合、もしそのポートにうっかり別のスイッチが接続されてしまった場合、ループ検知の話し合い(BPDUのやり取り)ができなくなってしまい、最悪の場合はネットワーク全体が巨大なループの渦に飲み込まれて大障害に発展します!
そのため、グローバル設定を使うときは「本当にこのポートには端末しか繋がらない」という確信がある現場、あるいは後述する「BPDUガード」と組み合わせて安全性を担保するアプローチが鉄則となります。
—
4. 適用上の注意点:優しさの裏に潜むリスク
BPDUフィルタは不要なフレームを減らしてネットワークを綺麗にしてくれる便利な機能ですが、現場のエンジニアとしては「諸刃の剣」であることを忘れてはいかがでしょうか。
私たちが実務で設計・構築を行う際、以下のポイントを必ず頭に入れておきます。
1. スイッチの誤接続(ループの恐怖)
先ほども少し触れましたが、BPDUフィルタを有効にしたポートに、ユーザーが間違えて別のスイッチやハブを接続してしまったとします。本来ならSTPが働いて「あ、ループするからこのポートをブロックしよう」と判断するはずが、BPDUフィルタがそれを遮断しているため、ループが検知されずにブロードキャストストーム(通信の暴走)が発生してしまいます。結果として、フロア全体のネットワークが完全にフリーズする……なんて悪夢のようなトラブルに繋がることも。
2. BPDUガードとの違いと組み合わせ
「じゃあ、万が一スイッチが繋がったらポートを即座にシャットダウンして守りたい!」という場合は、BPDUフィルタではなくBPDUガード(BPDU Guard)を使います。
- BPDUフィルタ: BPDUを「無視して流さない(穏健派)」
- BPDUガード: BPDUを受信したら「即座にポートをエラー無効(Err-disabled)にしてネットワークを守る(厳格派)」
現場の要件に合わせて、どちらを採用すべきか、あるいはCiscoの portfast bpduguard default のように安全装置をどう設計するかが、インフラエンジニアの腕の見せ所となります。
—
まとめ
今回は、イーサネットスイッチングの基本でありながら、現場の安全と効率を支える「BPDUフィルタ」について解説しました。
- BPDUフィルタは、端末(エッジポート)側への不要なBPDUの送受信をカットする機能。
- パソコンなどの端末にとっては通信がクリーンになり、立ち上がりもスムーズになる。
- ただし、スイッチの誤接続によるループ検知を無効化してしまうリスクがあるため、適用場所の選定には細心の注意が必要。
ネットワークの世界は、こうした一つひとつの機能の裏側にある「理由」や「リスク」を知ることで、ぐっと面白く、そして自信を持って構築できるようになります。
「一歩ずつ理解していきましょう!」の気持ちを大切に、これからも一緒にプロトコルの深淵を旅していきましょうね。それでは、また次回の技術記事でお会いしましょう!
コメント