A compiler and runtime framework to help you build and distribute eBPF program easier.
eunomia-bpf
is a dynamic loading library/runtime and a compile toolchain framework, aim at helping you build and distribute eBPF programs easier.
With eunnomia-bpf, you can:
- A library to simplify
writing
eBPF programs:- simplify building CO-RE1
libbpf
eBPF applications: write eBPF kernel code only and automatically exposing your data withperf event
orring buffer
from kernel. - Automatically sample the data from hash maps and print
hists
in userspace. - Automatically generate and config
command line arguments
for eBPF programs. - You can writing the kernel part in both
BCC
andlibbpf
styles.
- simplify building CO-RE1
- Build eBPF programs with
Wasm
2: seeWasm-bpf
project- Runtime, libraries and toolchains to write eBPF with Wasm in C/C++, Rust, Go...covering the use cases from
tracing
,networking
,security
.
- Runtime, libraries and toolchains to write eBPF with Wasm in C/C++, Rust, Go...covering the use cases from
- simplify
distributing
eBPF programs:- A tool for push, pull and run pre-compiled eBPF programs as
OCI
images in Wasm module - Run eBPF programs from
cloud
orURL
within1
line of bash without recompiling, kernel version and architecture independent. - Dynamically load eBPF programs with
JSON
config file orWasm
module.
- A tool for push, pull and run pre-compiled eBPF programs as
For more information, see documents/introduction.md.
- Github Template:eunomia-bpf/ebpm-template
- example bpf programs: examples/bpftools
- tutorial: eunomia-bpf/bpf-developer-tutorial
You can get pre-compiled eBPF programs running from the cloud to the kernel in 1
line of bash:
```bash
# download the release from https://github.com/eunomia-bpf/eunomia-bpf/releases/latest/download/ecli
$ wget https://aka.pw/bpf-ecli -O ecli && chmod +x ./ecli
$ sudo ./ecli https://eunomia-bpf.github.io/eunomia-bpf/sigsnoop/package.json # simply run a pre-compiled ebpf code from a url
$ sudo ./ecli sigsnoop:latest # run with a name and download the latest version bpf tool from our repo
```
-
Install the
ecli
tool for running eBPF program from the cloud:$ wget https://aka.pw/bpf-ecli -O ecli && chmod +x ./ecli $ ./ecli -h Usage: ecli [--help] [--version] [--json] [--no-cache] url-and-args ....
-
Install the
ecc
compiler-toolchain for compiling eBPF kernel code to aconfig
file orWasm
module(clang
,llvm
, andlibclang
should be installed for compiling):$ wget https://github.com/eunomia-bpf/eunomia-bpf/releases/latest/download/ecc && chmod +x ./ecc $ ./ecc -h eunomia-bpf compiler Usage: ecc [OPTIONS] <SOURCE_PATH> [EXPORT_EVENT_HEADER] ....
or use the docker image for compile:
# for x86_64 and aarch64 docker run -it -v `pwd`/:/src/ ghcr.io/eunomia-bpf/ecc-`uname -m`:latest # compile with docker. `pwd` should contains *.bpf.c files and *.h files.
-
build the compiler, runtime library and tools:
see build for building details.
See examples for details about simple eBPF tools and eunomia-bpf library usage.
See github.com/eunomia-bpf/wasm-bpf/tree/main/examples for Wasm eBPF programs and examples.
We also have a prove of concept video: Writing eBPF programs in Wasm.
- Android support
MIT LICENSE
Footnotes
-
CO-RE: Compile Once – Run Everywhere ↩ ↩2
-
WebAssembly or Wasm: https://webassembly.org/ ↩ ↩2