Building a Lightning Fast Firewall with Java & eBPF by Mohammed Aboullaite, Johannes Bechberger

Learn how to build a high-performance network firewall by combining Java and eBPF to run sandboxed programs in the Linux kernel for packet filtering & security.

Key takeaways
  • eBPF is a technology that makes the Linux kernel programmable by allowing users to run sandboxed programs within the kernel safely

  • XDP (eXpress Data Path) with eBPF enables high-performance packet filtering and network processing at the kernel level before packets reach the network stack

  • The eBPF verifier ensures programs are safe to run in the kernel by checking bounds, memory access, and other security constraints

  • Java developers can now write eBPF programs using Java syntax through Project Panama integration, without needing to write C code directly

  • eBPF programs are event-driven and must be attached to specific hook points in the kernel like system calls, network interfaces, or kernel functions

  • Key use cases include networking/firewalls, observability/monitoring, and security tooling

  • eBPF maps provide bidirectional communication between userspace and kernel space programs, allowing data sharing and configuration

  • Performance benefits come from processing packets early in the network path and reducing context switches between kernel and userspace

  • eBPF programs can be dynamically loaded and updated without requiring kernel module compilation or system reboots

  • The technology is being widely adopted by companies like Meta, Cloudflare and others for production use cases like load balancing and monitoring