Begriff
eBPF (Extended Berkeley Packet Filter)
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Stell dir vor, du willst dein Auto tunen (Linux Kernel ändern). Früher musstest du Mechaniker sein, den Motor ausbauen, neu schweißen, einbauen (Kernel Modul schreiben, kompilieren, neustarten). Wenn du einen Fehler machst, explodiert das Auto (Kernel Panic/Absturz). eBPF erlaubt dir, kleine Mini-Programme ("Sandboxed Bytecode") zur Laufzeit in den Motor zu injizieren. Es ist sicher (der Kernel prüft es vorher: "Verifier"). Wenn das Programm crasht, passiert dem Auto nichts. Du kannst damit alles sehen und ändern: Jeden Netzwerk-Paket, jeden Festplatten-Zugriff. Es ist wie JavaScript für den Linux-Kernel.
Merksatz: Eine Technologie im Linux-Kernel, die es ermöglicht, benutzerdefinierte Programme sicher und effizient direkt im Kernel-Kontext auszuführen, ohne Module zu laden oder den Kernel neu zu kompilieren.
Kaum jemand schreibt rohes eBPF (das ist fast Assembler). Man nutzt Tools:
- Cilium: Ein Kubernetes-Netzwerk-Plugin, das Firewall-Regeln per eBPF macht (10x schneller als IPTables).
- Pixie: Observability. Zeigt dir SQL-Queries, ohne dass du deine Datenbank anfassen musst. Es liest einfach den RAM mit.
- Falco: Security. "Alarm, wenn Prozess X eine Datei öffnet!"
1. Der Verifier
Der strengste Lehrer der Welt. Bevor dein eBPF-Code läuft, scannt der Verifier jeden möglichen Pfad. "Gibt es eine Endlosschleife?" -> Verboten! "Greifst du auf Speicher zu, der dir nicht gehört?" -> Verboten! Das garantiert, dass eBPF niemals den Server abstürzen lässt.
2. XDP (eXpress Data Path)
Der Turbo-Modus für Netzwerk. eBPF läuft direkt auf der Netzwerkkarte (NIC), bevro das Paket den normalen Linux-Stack (TCP/IP) erreicht. Perfekt für DDoS-Schutz. Man wirft böse Pakete weg, bevor die CPU sie überhaupt bemerkt.
1. BPF Maps und Statefulness
Dürften eBPF Programme keine Daten speichern, wären sie nutzlose Filter.
Das Herz von eBPF sind Maps (Key-Value Stores, Ring-Buffer, Hash-Tables).
Läuft ein eBPF Programm im Kernel (z. B. bei jedem sys_execve), sammelt es dort Metriken und pusht sie synchron in eine Map (z.B. bpf_map_update_elem). Der Go/Python User-Space Agent pollt diese Map asynchron und liest die Ergebnisse verlustfrei aus, ohne dass der Kernel blockt. Diese Trennung von rasantem Kernel-Sammeln und gemächlichem User-Space-Parsen ermöglicht Netzwerkanalyse auf 100 Gigabit pro Sekunde Leitungen, ohne den Scheduler zu drosseln.
2. kprobes, uprobes und tracepoints
Wo genau klinkt man sich ein?
- kprobes (Kernel Probes): Man kapert dynamisch jede x-beliebige Linux-Kernel-Funktion. C-Code:
SEC("kprobe/__x64_sys_clone"). Wenn Linux einen Fork macht, ruft es erst den eBPF Hook. - uprobes (User Probes): Man kapert fremde Applikationen. Wenn eine fremde Node.js App
SSL_readin der OpenSSL C-Library (im User Space) aufruft, liest der eBPF Hook den Klartext des Passworts ab, noch bevor es verschlüsselt wird (genutzt von Hubble/Cilium für L7-Tracing ohne Proxy). - Tracepoints: Im Kernel hart codierte, stabile Anker für Entwickler. Sicherer als kprobes, da kprobes bei einem Kernel-Update oft brechen, wenn Linus Torvalds die interne Funktion umbenennt.
3. JIT Compilation (Just-In-Time)
Der eBPF Bytecode wird nicht im Kernel interpretiert (das wäre bei 10 Millionen Netzwerkpaketen zu langsam). Nachdem der Verifier bestanden ist, kickt sofort ein Kernel-JIT Compiler ein. Er übersetzt den virtuellen eBPF-Assembler direkt in nativen, rohen x86-64 Maschinen-Code für den Prozessor. Die Performance-Penalty eines eBPF-Netzwerk-Droppers im Vergleich zu einem fest-kompilierten Kernel-Modul ist mathematisch nicht existent (Zero Overhead). Deshalb deklariert Netflix eBPF als das ultimative Produktions-Profiling Werkzeug.
Quick-Check
Nur Linux?
Ursprünglich ja. Microsoft portiert es gerade massiv nach Windows ("eBPF on Windows"). Es wird der Standard für OS-Erweiterungen.Ist es schwer?
Ja, extrem. Du musst verstehen, wie Computer funktionieren (Stack, Heap, Syscalls). Aber als Nutzer von Cilium merkst du davon nichts.Warum Packet Filter?
Historischer Name. 1992 war es nur für Firewalls gedacht. Heute kann es alles (Tracing, Profiling, Security).