Writing

Notes on networking, the Linux data path, firmware, and running things myself. Mostly the write-ups I wanted to exist when I was solving the problem.

Line-card BFD for plain Linux

12 parts · Jul 2026 to Aug 2026

Building a BFD offload whose fast path runs in XDP, from measuring the folklore about software BFD to a dual-stack engine with echo and multihop. Every claim backed by a packet capture. Starts with a primer if the terms are new.

  1. What all of this means
  2. Measuring the folklore
  3. The folklore is partly wrong
  4. The TX bake-off
  5. RX-clocked TX
  6. Results, and putting FRR in the loop
  7. Hardening, and a review that found real edges
  8. One session to sixty-four
  9. IPv6, and the bake-off argument in miniature
  10. Echo mode, and instrumentation that cannot see its own failure
  11. Multihop, and a test that validated nothing
  12. Every bug came from a capture, none from a log

Upstream bugs in FRR’s BFD daemon

6 posts · Jul 2026 to Aug 2026

Six bugs found while pointing an external dataplane at FRR, each written up from the issue and the fix. Buffer accounting, a transport that never worked, and two cases where the instrumentation agreed with the wrong answer.

  1. Two bytes of padding, and a transport that never worked
  2. How 8KB of buffer silently lost BFD sessions
  3. Deleting sessions into a buffer nobody would flush
  4. A read of zero bytes that looked like a closed socket
  5. The RFC says negotiate, but nobody was listening
  6. Enabling echo mode took the session down

Other posts