KernelScript: Cross-Boundary Typed DSL for eBPF Applications
The paper introduces KernelScript, a DSL for eBPF that types maps, program handles, and execution domains to unify cross-boundary relationships, prevent bugs at compile time, and reduce diff size.
Presents a new DSL and type system for eBPF to ensure consistency and prevent bugs at compile time
Before reading this…
Applications
- →Packet processing
- →Tracing
- →Scheduling
To understand this paper, make sure you know these concepts first:
- Understanding of eBPFfind papers →
- Familiarity with C programmingfind papers →
Abstract
More Like ThiseBPF lets developers extend Linux with custom packet processing, tracing, and scheduling logic, and a verifier proves before execution that the code will not crash the kernel. The programming model, however, is fragmented: a single application spans kernel code, a userspace loader, and shared maps, yet the relationships among these pieces go unchecked. E.g. A map or event type defined differently on each side silently corrupts shared state. We observe that these cross-boundary relationships duplicate information that a type system can unify. We present KernelScript, a DSL that types maps, program handles, and execution domains in one source, then compiles to standard C through the original toolchain. We evaluate KernelScript on 43 eBPF workloads covering XDP, TC, kprobe, tracepoint, and struct_ops. KernelScript rejects cross-boundary bugs at compile time that standard C/libbpf still builds and loads, a unified source shrinks the diffs for cross-boundary changes by 5x, and generated code remains compatible with the existing toolchain.