要約

  • BFD は特定のデータプロトコル経路を高速に監視し、セッションの意味は端点、カプセル化、パラメータに結び付く。
  • Up だけでは、全 ECMP メンバー、アドレスファミリ、経路、MTU、サービスが同じ正常経路を使うとは言えない。
  • サービス可達性には、BFD 識別子とタイマー、RIB/FIB、メンバー別確認、双方向の実サイズ試験、アプリ取引を結んだ記録が要る。

緑の表示なのに消えるフロー

仮想的な場面を考えよう。保守作業が終わり、ルーティング隣接はすべて戻った。顧客側ネクストホップの BFD も Up なので変更を完了扱いにする。ところが大きな転送は止まり続ける。小さな制御パケットは束の正常メンバーへハッシュされ、本番フローの一部は FIB または MTU 処理に問題のある別メンバーへ送られていた。

BFD の判定が虚偽なのではない。観測の適用範囲を人が広げ過ぎた。緑は一つのセッションと、そのパケットが通った経路の状態である。「サービスが届く」は、経路選択、関連する全転送メンバー、往復、実際のパケット長、アプリケーションまで含む大きな主張だ。

RFC 5880 が BFD に与える仕事は意図的に限定されている。二つの転送エンジン間の双方向経路について、インターフェースやデータリンク、可能な範囲で転送エンジン自体の障害を低遅延で検出する。媒体やルーティングプロトコルから独立しているから高速かつ汎用だが、どのクライアントと経路への助言かを記録しなければならない。

BFD には発見機構がない。アプリケーションが必要性を判断し、アドレスとパラメータを指定する。通信経路およびデータプロトコルごとにセッションが作られる。物理リンク、仮想回線、トンネル、MPLS LSP、マルチホップ経路のいずれでも動くが、結果の意味はそのカプセル化に結び付いたままだ。

Up が記録しているもの

非同期モードでは両端が BFD Control パケットを周期送信し、十分長く受信できないと Down になる。Demand モードでは独立の接続確認手段を前提に周期送信を止められ、Poll シーケンスで明示確認する。Echo 機能は遠端の転送経路でパケットを折り返す。

三者の証拠力は同じではない。Echo は制御交換だけでは見えない転送障害を検出し得る。Demand は別の確認手段に依存する。BFD が制御エンジン上ならルーティングプロセスと障害を共有し得る。C ビットは遠端実装が制御プレーン非依存と申告するかを示すだけだ。Up の一語だけ保存すれば、解釈に必要な文脈が消える。

タイマーも主張の一部である。希望送信間隔、必要受信間隔、検出倍率が非同期モードの検出時間を決める。ある時刻の Up は、その条件で状態機械が Down と判定していないことを示す。直後の無障害や、クライアントプロトコルの正しい反応までは保証しない。

RFC 5881 は単一ホップ IPv4/IPv6 で範囲を具体化する。セッションは遠端システム、インターフェース、プロトコルに結び付く。同じリンクでも IPv4 と IPv6 は別セッションが必要だ。複数セッションが多様性の証拠になるのは、実際に別のネットワーク層経路を通る場合だけである。

同 RFC は BFD をネットワークサービスの接続確認用 OAM と位置付ける一方、通常の BFD をインターネット越しのアプリ間障害検出に使えないと明記する。隣接装置へ BFD が届くことと、利用者の DNS 問い合わせ、購入、ファイル転送が成功することは別だ。

結果を使うのはクライアント

RFC 5882 では BFD は助言役である。ルーティングなどのクライアントが状態を受け、自分の機構で動作を変える。BFD はアプリ固有情報を運ばない。Down が経路撤回を速めても、隣接、トポロジー、転送の決定主体はクライアントだ。

履歴も加工され得る。実装は短い Up/Down/Up をヒステリシスでクライアントから隠せる。AdminDown は管理上の意図であり、必ずしもデータ経路障害ではない。現在状態、遷移、通知、実際のクライアント動作を分けて残す必要がある。

ECMP では BFD と利用者フローが別メンバーを通り得る。小さな制御パケットが通っても実サイズは MTU で落ちる。復路だけ壊れることも、RIB に経路があって期待する FIB がないことも、ネットワーク配送後にアプリが拒否することもある。

情報源