Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Beeper: Application-Layer Parsing in eBPF
Beeper (BEEline's ParsER) is an application-layer parser for eBPF. It allows you to process L7 protocols directly in the kernel, which can accelerate user space applications significantly. It achieves this by constructing an Aho-Corasick-like DFA in user space, reducing the parsing complexity to an eBPF-compatible level. With beeper, you can for example monitor application-layer traffic, redirect it based on its payload, or respond to it, directly from the kernel. For more information, please have a look at the full paper.
| Protocol | Status | Minimal Kernel Version |
|---|---|---|
| HTTP/1.1 | ✅ | 6.8 |
| HTTP/2 | ✅ | 6.8 |
| gRPC | WIP |
Use cases
hyper-fast-path uses beeper to serve static assets from the kernel. This improves the throughput of HTTP servers by up to 2.8x.
Usage
First, in the Rust program, create a new parser instance, add the desired headers that it should parse, and attach it to an existing eBPF program:
use ;
let h2 = new
.capture_hdr?
.capture_hdr?
.parse_fn
.extract_fn
.attach?;
Next, in your eBPF program, import the beeper.h header, define the stub functions, and call them with the input buffer:
// stub funcs
// the header matches occur in the same order as configured in user space
int
Finally, to make this all compile, beeper relies on xbpf. Add the following to build.rs:
use clang_args;
use Builder;
Please refer to the example for a simple HTTP monitoring tool.
Build
To build and test beeper, you need to install the following packages:
You should now be able to compile and test beeper as follows:
RUST_LOG=trace
Citation
If you use this library to conduct your own research, please cite the full paper as follows:
@misc{beeline,
title={Enforcing Application-Layer Policies in eBPF},
author={Laurin Brandner and Ayush Mishra and Sebastiano Miano and Aurojit Panda and Gianni Antichi and Laurent Vanbever},
year={2026},
eprint={2605.31084},
archivePrefix={arXiv},
primaryClass={cs.NI},
url={https://arxiv.org/abs/2605.31084},
}