TL

BFD(高速障害検知)

ルーティングプロトコル任せだと障害検知に数秒かかる問題を、専用の軽量ハローだけでミリ秒単位に縮める仕組みが分かる。非同期モードとエコーモードの使い分けまで理解できる。

応用BFDルーティング障害検知OSPFBGPネットワーク最終更新: 2026-07-03
TL;DR要点だけ先に
  • 1.BFDはOSPF/BGP等のHelloタイマに頼らず、専用の軽量セッションで双方向の生存確認を行い、数秒かかっていた障害検知をミリ秒単位に短縮する。
  • 2.非同期モードは双方が定周期でBFD制御パケットを送り合い、エコーモードは片側だけが自分宛パケットを折り返して相手のフォワーディング平面だけを検査する。
  • 3.BFDが障害を検知すると上位プロトコルへ即座に通知し、Hello/Deadタイマの満了を待たずに再計算・経路切替を始めさせる。

ルーティングプロトコル自身の検知は遅い

OSPF は Hello タイマと Dead タイマ(既定は Hello 10秒・Dead 40秒)で隣接の生死を判定し、BGP も Keepalive と Hold Timer(既定は Keepalive 60秒・Hold 180秒)で同様の仕組みを持ちます。ルーティングプロトコル(OSPF / BGP) が学習・共有する経路そのものは正しくても、障害の「発見」がプロトコル本来の仕事の副産物 になっている点が問題です。Dead タイマを極端に短縮すれば検知は速まりますが、CPU で処理される Hello の生成・パースコストが増え、負荷時の誤検知(フォールスポジティブ)も増えます。OSPF・BGP・静的経路・EIGRP などプロトコルごとに検知ロジックとタイマがばらばらである点も運用を複雑にします。BFD(Bidirectional Forwarding Detection、RFC 5880)は、この「検知」だけを専用プロトコルとして切り出し、上位プロトコルには結果だけを通知する設計で解決します。

設計思想:検知と経路計算の分離

BFD セッションは2点間(一般には直接のリンクまたは1ホップ先)で独立に確立され、上位プロトコルが何であるかを意識しません。OSPF が使おうが BGP が使おうが静的経路が使おうが、BFD からは「このパス、生きてるか死んでるか」の2値しか出てきません。上位側はこの状態変化をイベントとして受け取り、死んだと分かった瞬間にSPF再計算なり経路選択のやり直しなりを即座に開始します。タイマ満了を待つ受動的な検知から、専用ハローによる能動的な検知への転換です。

BFDは「何が壊れたか」ではなく「生きているか」だけを見る

BFDはリンク断・インターフェース障害・対向機器のフォワーディング停止など、経路上のどこかで疎通が失われた事実だけを検知します。原因の切り分けや代替経路の計算は一切行わず、それは呼び出し元の上位プロトコルの責務のままです。責務を分離しているからこそ、BFDは単一の軽量実装で全プロトコルに使い回せます。

非同期モード:双方向ハローの相互監視

既定かつ最も一般的なのが**非同期モード(Asynchronous Mode)**です。両端が独立に BFD 制御パケットを一定間隔(例:数十ミリ秒〜数百ミリ秒)で送り合い、互いに「相手から一定時間内にパケットが届いているか」だけを監視します。

BFDセッションの主要パラメータ(RFC5880):
  Desired Min TX Interval   自分が送信したい最小間隔
  Required Min RX Interval  自分が受信を要求する最小間隔
  Detect Mult               検知乗数(連続何回分の未受信で障害と判定するか)

ネゴシエーション:
  実際の送信間隔 = max(自分のDesired Min TX, 相手のRequired Min RX)
  検知時間       = 実際の受信間隔 × 相手が通知したDetect Mult

たとえば送信間隔 50ms・Detect Mult 3 なら、検知時間はおよそ 150ms です。両端は起動時にこれらの値を制御パケット内でネゴシエーションし、以降は合意した間隔で送り続けます。片方が Detect Mult 回連続でパケットを受け取れなければ、その瞬間にセッションを Down 状態へ遷移させます。OSPF の Dead タイマが「40秒間 Hello が来なければ」であるのに対し、BFD は間隔もカウントも1桁小さく、数十〜数百ミリ秒での検知を実現します。

方式検知主体典型的な検知時間負荷の掛かる場所
OSPF Hello/Deadルーティングプロセス自身数秒〜数十秒制御プレーンCPU
BGP Keepalive/Holdルーティングプロセス自身数十秒〜分制御プレーンCPU
BFD 非同期モード専用の軽量セッション数十〜数百ミリ秒分散可能(一部はデータプレーン/ASICで処理)

エコーモード:フォワーディング平面だけを検査する

エコーモード(Echo Mode)は非同期モードと発想が異なります。片側(アクティブ側)だけが、自分宛の IP アドレスを宛先とした BFD エコーパケットを対向機器へ送り、対向機器はそれを制御プレーンに一切上げず、フォワーディング平面でそのまま送信元へ折り返すだけです。自分が送ったパケットが自分に戻ってくるかどうかで、往復のフォワーディング経路が生きているかを判定します。

エコーモードの流れ:
  A → (自分のIPを宛先に埋め込んだエコーパケット) → B
  B は制御プレーンで処理せず、受信インターフェースで折り返す
  A → 戻ってきたパケットを自分で検査 → 届けば生存、途切れれば障害

対向側 B の CPU 負荷はほぼゼロで、A 側の検知間隔だけを詰めれば速く検知できる点が利点です。ただしエコーモードは対向機器のフォワーディング能力(データプレーン)しか検査せず、対向の制御プレーンが生きているかは別問題として残ります。そのため実装では、低頻度の非同期モードのハローと組み合わせ、エコーモードで高速検知、非同期モードでセッション自体の生存確認という二段構えにするのが一般的です。

ミリ秒検知は誤検知とのトレードオフ

検知間隔を詰めるほど、瞬間的な輻輳やCPUスパイクによる遅延・パケットロスも障害と誤認しやすくなります。特にBFDパケットの生成・受信がソフトウェア処理(制御プレーンCPU)に依存する実装では、負荷時にBFD自身が期限内に処理されず誤ってセッションをDownさせる恐れがあります。ASICやラインカードでBFDパケットを処理する「ハードウェアオフロード」対応の有無が、実運用で使える検知間隔の下限を左右します。

上位プロトコルとの連携

BFD 単体では経路を1本も学習しません。価値が出るのは、OSPF・BGP・MPLS・静的経路など上位プロトコルにセッションを登録し、Down イベントを配線するときです。

連携の基本パターン:
  1. 該当インターフェース/ネイバーに対してBFDセッションを確立
  2. 上位プロトコル(例: OSPF)はBFDセッションの状態をサブスクライブ
  3. BFDがDetect Multの未受信でセッションをDownと判定
  4. 上位プロトコルへ即座に「ネイバーロスト」を通知
  5. OSPFはDeadタイマ満了を待たずにLSA再送出・SPF再計算を開始
     BGPは即座にセッションをリセットし代替パスを選定

OSPF は本来 Dead タイマ(既定40秒)が切れるまで隣接断を検知できませんが、BFD と連携すれば実際のリンク断からミリ秒〜数百ミリ秒で LSA を出し直せます。BGP でも同様に、経路収束 で解説した Keepalive/Hold Timer による数十秒単位の遅れを避け、BFD の通知だけで即座にセッションをリセットして代替経路の広告に移れます。特に eBGP マルチホップや、物理リンク断が直接インターフェースダウンとして見えないトンネル構成では、BFD が唯一の高速な障害検知手段になることもあります。

BFDが要らないケースもある

直結のイーサネットリンクで、対向のリンクダウンがそのまま物理層の信号断として即座に伝わる環境では、リンク断自体が実質ミリ秒で検知できるためBFDの追加効果は限定的です。BFDが真に効くのは、L2スイッチや光伝送装置を挟んで物理層の断が伝搬しない構成、マルチホップ越しのBGPセッション、あるいは対向機器の制御プレーンだけが固まるような「リンクは生きているがネイバーは死んでいる」ケースです。

一段でまとめると

BFD は「障害検知」という単一の仕事を上位プロトコルから切り出し、軽量な専用パケットの往復だけで数十〜数百ミリ秒の検知時間を実現する仕組みです。非同期モードは双方向の定周期ハローで汎用的に使え、エコーモードは対向のフォワーディング平面だけを狙って片側の負荷を抑えます。検知そのものは万能ではなく、間隔を詰めるほど誤検知のリスクとハードウェアオフロードの要否が実務上の焦点になります。設計時は、対象がOSPFのようなリンクステート型IGPか、収束に時間のかかるBGPかを踏まえ、どのセッションにBFDを紐付けると障害復旧が最も速くなるかを見極めることが要点です。

ネットワーク Article

BFD(高速障害検知)を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

BFD

比較で見る軸

難易度: advanced / カテゴリ: ネットワーク / タグ数: 6

導入後に効く点

非同期モードは双方が定周期でBFD制御パケットを送り合い、エコーモードは片側だけが自分宛パケットを折り返して相手のフォワーディング平面だけを検査する。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
ネットワーク
タグ数
6

判断チェックリスト

  • 自社の用途が「BFD / ルーティング」に近いか確認する。
  • 強みである「BFDはOSPF/BGP等のHelloタイマに頼らず、専用の軽量セッションで双方向の生存確認を行い、数秒かかっていた障害検知をミリ秒単位に短縮する。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

BFDルーティング障害検知OSPFBGPBFDルーティング障害検知
参考: 公式情報