Skip to content
Abdul Wasey edited this page Sep 20, 2026 · 3 revisions

xdp-bfd

BFD that keeps its timers in the kernel.

A userspace BFD daemon has to wake up, be scheduled, and write a packet before its peer's detection timer expires. Under load that stops being reliable, and sessions flap for reasons that have nothing to do with the link. xdp-bfd moves transmission and detection into the driver path and softirq, so a 50 ms interval survives a box that is busy.

It is not a replacement for bfdd. FRR still owns the sessions, the configuration and the state you see in show bfd peer; this runs underneath as the data plane bfdd offloads to. It also runs standalone with a static session, which is mostly useful for testing.

Start here: Installation, then Deployment.

Running it

  • Installation - packages, building, what it needs.
  • Deployment - wiring it to FRR, in the right order, and checking that the fast path is actually carrying the traffic.
  • Monitoring - the statistics snapshot and what each counter means.
  • Troubleshooting - sessions that will not come up, and the handful of ways this goes wrong in practice.

Knowing what you are running

  • Limitations - where this differs from stock bfdd, and what it will refuse to do.
  • RFC conformance - what is implemented, per RFC.
  • Supported kernels - where the object is known to load, measured rather than assumed.
  • Security model - what the fast path does with a hostile packet, and what a flood costs.

Working on it

  • Testing - the suites, what each needs, and what only a testbed can reach.

Benchmark captures, the per-distro load records and the instruments that produced them are on the docs branch.

Clone this wiki locally