XDP-Programmable Data Path in the Linux Kernel DIPTANUPROGRAMMING GON CHOUDHURY Diptanu Gon Choudhury works erkeley Packet Filter was introduced almost two decades ago and has on large-scale distributed been an important component in the networking subsystem of the systems. His interests lie in kernel for assisting with packet filtering. Extended BPF can do much designing large-scale cluster B schedulers, highly available more than that and is gradually finding its way into more kernel subsystems control plane systems, and high-performance as a generic event-processing infrastructure. In this article, I provide enough network services. He is the author of the background to help you understand how eBPF works, then describe a simple upcoming O’Reilly book Scaling Microservices. and fast firewall using Express Data Path (XDP) and eBPF.
[email protected] Berkeley Packet Filter (BPF) has been around for more than two decades, born out of the requirement for fast and flexible packet filtering machinery to replace the early ’90s imple- mentations, which were no longer suitable for emerging processors. BPF has since made its way into Linux and BSDs via libpcap, which is the foundation of tcpdump. Instead of writing the packet filtering subsystem as a kernel module, which can be unsafe and fragile, McCanne and Jacobson designed an efficient yet minimal virtual machine in the kernel, which allows execution of bytecode in the data path of the networking stack. The virtual machine was very simple in design, providing a minimalistic RISC-based instruction set, with two 32-bit registers, but it was very effective in allowing developers to express logic around packet filtering.