Skip to content

Installation

Abdul Wasey edited this page Sep 21, 2026 · 2 revisions

Installation

From a package

Debian and RPM packages are built by CI for Debian 12 and 13, Ubuntu 24.04 and Fedora. They install the engine, the XDP object, a systemd unit and a sample configuration.

sudo dpkg -i xdp-bfd_*.deb      # or: sudo dnf install ./xdp-bfd-*.rpm

The unit ships disabled, because an engine with no arguments would fail-loop. Nothing starts until you edit /etc/xdp-bfd/engine.conf and enable it; Deployment covers that.

The install runs xdp-bfd --check, which loads the object and compares its ABI against the binary. It prints the result and never fails the install, so a machine that cannot load it still installs cleanly and tells you why:

xdp-bfd: the XDP object loads and is ABI-matched on this kernel (6.8.0-31-generic).

If that says it did not load, see Supported kernels.

From source

make          # bfd_xdp.o, bfd_tx, bfd_loader
make check    # unit suites; no root, no NIC, no testbed

You need libbpf, a C compiler, and clang 17 or newer for the BPF object. The clang version matters only on the machine that builds the object, not on the machine that runs it.

Loading and attaching need root, or the four capabilities the packaged unit grants: CAP_BPF, CAP_PERFMON, CAP_NET_ADMIN and CAP_NET_RAW.

Which FRR

10.1.2 or newer. Anything older loops connecting and disconnecting on the data plane channel and never brings a session up.

Use the TCP transport, not unixc:, which is broken in every release so far:

bfdd_options="  -A 127.0.0.1 --dplaneaddr ipv4c:127.0.0.1:50700"

On a released FRR, also add more than about twenty peers through vtysh after the data plane has connected rather than from frr.conf.

See FRR compatibility for the per-version results and what a released FRR does not give you.

Clone this wiki locally