Introducing eunomia-bpf v1.0: Simplifying eBPF with CO-RE and WebAssembly
The world of eBPF (Extended Berkeley Packet Filter) has been rapidly evolving, offering developers powerful tools to monitor and modify the behavior of systems at the kernel level. Today, we're thrilled to introduce the latest milestone in this journey - eunomia-bpf v1.0. This release is a testament to our commitment to simplifying and enhancing the eBPF development experience with CO-RE (Compile Once, Run Everywhere) and WebAssembly.
eunomia-bpf is not just another tool in the eBPF ecosystem. It's a dynamic loading library/runtime and a compile toolchain framework designed with a singular vision - to make building and distributing eBPF programs easier and more efficient.
With the rise of cloud-native applications and the need for fine-grained system monitoring, eBPF has become an indispensable tool for developers. However, the complexities associated with writing, compiling, and distributing eBPF programs have often been a barrier. This is where eunomia-bpf steps in, offering a suite of tools and features that streamline the entire process.
What's New in eunomia-bpf v1.0
The eunomia-bpf v1.0 release marks a significant milestone in our journey to simplify and enhance the eBPF development experience. Here's a deep dive into the new features and enhancements that cater to both novice and experienced eBPF developers:
- Expanded Architectural Support:
aarch64Compatibility: Recognizing the growing adoption of ARM-based systems, we've expanded our support to include the
aarch64architecture. Whether you're on
aarch64, expect a consistent eunomia-bpf experience.
Cross-Compilation: Our commitment to
aarch64goes beyond mere compatibility. Given our build servers are x86_64-based, we've employed cross-compilation techniques to produce
aarch64executable files and docker images. For the tech-savvy, our build scripts and workflow files are readily available in our repository.
Reduced External Dependencies with AppImage:
- Self-Contained Binaries: Our precompiled binaries for
ecliare now packaged as AppImages. This means all required dependency libraries are bundled within, eliminating pesky version conflicts, especially with libraries like
Universal Compatibility: Thanks to static linking with
libfuse, the released
eccAppImages can run seamlessly across distributions, independent of the locally provided
glibc. All you need is kernel support for fuse. For those interested, our repository houses the workflow files detailing the AppImage construction with all dependencies.
Diverse Attachment Types:
- Broadened eBPF Program Support: Version
1.0introduces support for a variety of eBPF program types, including:
- tc: Monitor traffic control with precision.
- xdp: Keep an eye on XDP-related packets.
- profile: Gain insights into the kernel stack and user stack activities on specific processor cores.
Hands-on Learning: To help developers get started, we offer tests and examples tailored for each of these attachment types.
Revamped OCI in ecli:
- Modular and Efficient: The OCI component of ecli has been meticulously refactored, leading to a more modular and efficient design.
ecli-server: With the new
ecli-server, developers can harness the power of OpenAPI to run ecli programs on their local machines remotely. Whether you're using the OpenAPI interface to run and fetch logs or executing programs remotely via
ecli, the experience is as intuitive as local runs.
- Enhanced Cross-Kernel Execution: Building on our legacy of supporting cross-kernel version execution without local BTF dependencies, v1.0 takes it a step further.
- A Dedicated Project: We've carved out this functionality into a standalone project, bpf-compatible. This project focuses on leveraging btfhub to trim BTF files across different distributions and kernel versions. The trimmed files are then embedded into the executable, ready to be accessed via specific APIs.
Core Features of eunomia-bpf
eunomia-bpf v1.0 is more than just a set of new features. It's a culmination of our vision to provide a comprehensive framework for eBPF development:
Simplified eBPF Program Writing: With eunomia-bpf, developers can focus solely on writing the kernel code. The framework takes care of data exposure, command-line argument generation, and more.
Building eBPF with Wasm: Our integration with WebAssembly opens up new avenues for eBPF development. Whether you're working in C/C++, Rust, Go, or other languages, eunomia-bpf has got you covered.
Distributing eBPF Programs with Ease: Our tools for pushing, pulling, and running pre-compiled eBPF programs as OCI images in Wasm modules simplify the distribution process. Plus, with support for dynamic loading through JSON or Wasm modules, deployment is a breeze.
Getting Started with eunomia-bpf
Ready to dive in? Here are some resources to kickstart your journey with eunomia-bpf:
Github Template: Explore our template at eunomia-bpf/ebpf-template for a hands-on introduction.
Example BPF Programs: Delve into real-world applications with our example programs.
Tutorials: For a deeper understanding, check out our comprehensive developer tutorial.
eunomia-bpf v1.0 is more than just a release; it's a promise. A promise to continually simplify and enhance the eBPF development experience. As the eBPF landscape evolves, so will eunomia-bpf, ensuring that developers always have the best tools at their disposal.
For more insights and detailed documentation, head over to https://github.com/eunomia-bpf/eunomia-bpf