XDP programs with eBPF¶
Two projects with example code:
- Using kernel samples/bpf XDP programs and libbpf
- Using BCC toolkit
Kernel samples/bpf¶
The kernel include some examples of XDP-eBPF programs, see kernel samples/bpf.
There are also some XDP eBPF code examples in the prototype-kernel
project under prototype-kernel/kernel/samples/bpf. Simply run
make
inside this directory to compile the samples.
Special XDP eBPF cases¶
With XDP the eBPF program gets “direct” access to the raw/unstructured packet-data. Thus, eBPF uses some “direct access” instruction for accessing this data, but for safety this need to pass the in-kernel validator.
Walking the packet data, requires writing the boundary checks in a specialized manor.
Like:
if (data + nh_off > data_end)
return rc;