XDP stands for Express Data Path. It is a set of Linux kernel hook points that allow eBPF programs to be invoked. There are 3 supported modes:
- Hardware offload: eBPF programs are compiled and loaded to NIC hardware
- Native: eBPF programs are called by the NIC device drivers (before
skb
allocation) - Generic: eBPF programs are invoked higher up the stack (after
skb
allocation)
These are in the order of most performant to least performant, where the "general thinking" is Generic
is only useful for testing and debugging purposes.
This project is used to explore the capabilities of XDP and its performance characteristics so we have practical experiences with this technology.
docker build -t haih/xdp .
The compiled binaries are located in haih/xdp:/root/bin/ directory.