Definition „extended Berkeley Packet Filter“ Welche Vorteile bietet eBPF?

Von chrissikraus Lesedauer: 4 min |

Anbieter zum Thema

Mit dem extended Berkeley Packet Filter, kurz eBPF, kann auf Linux-Systemen Code im Kernel ausgeführt werden. Dadurch werden verschiedene Anwendungen aus Bereichen wie Networking, Sicherheit oder Observability auf einer niedrigeren Systemebene ermöglicht.

Die eBee ist das offizielle Logo von eBPF und wurde ursprünglich von Vadim Shchekoldin entworfen.
Die eBee ist das offizielle Logo von eBPF und wurde ursprünglich von Vadim Shchekoldin entworfen.
(Bild: ebpf.io)

Der extended Berkeley Packet Filter (eBPF) ist eine Technologie, mit der auf Linux-Systemen Analysen maschinennah ausgeführt werden können, ohne die Sicherheit oder Funktion des Systems zu gefährden. Er wurde 2014 entwickelt und ging aus dem in den 90er Jahren veröffentlichten Berkeley Packet Filters (BPF) hervor.

Der BPF wurde seinerzeit entwickelt, um genauere Kontrolle über den Netzwerkverkehr eines Systems zu bekommen. Er ermöglichte es, den Netzwerkverkehr zu analysieren und eigene Filterregeln auf die Pakete anzuwenden. Der auf dieser Basis entwickelte eBPF baut die Fähigkeiten des BPF weiter aus. Es handelt sich um ein Open-Source-Projekt mit einer aktiven Community.

Funktionsweise des eBPF

Der eBPF ermöglicht das sichere Ausführen von benutzerdefiniertem Code im Kernel und erlaubt Entwicklern tiefe Einblicke in das Verhalten eines Systems. Das Besondere ist, dass all das möglich ist, ohne dabei etwas am Code des Kernels ändern zu müssen. Möglich wird das dadurch, dass der eBPF eine Art virtuelle Maschine auf Ebene des Kernels aufbaut. So können Anweisungen direkt im Kernel ausgeführt werden und unmittelbar an dessen Funktionen anknüpfen.

Die virtuelle Maschine bringt dabei einige Sicherheitsfunktionen mit, um die Integrität und Sicherheit des Kernels zu bewahren. eBPF-Programme laufen grundsätzlich isoliert vom Rest des Betriebssystems und erhalten damit keinen generellen Zugriff auf den Kernel. Es werden zudem nur Programme ausgeführt, die zuvor als sicher und gültig eingestuft wurden.

Die virtuelle Maschine des eBPF bringt dafür einen eigenen Verifier mit, welcher ein strenges Regelwerk für eBPF-Programme durchsetzt. Vor der Ausführung prüft der Verifier verschiedene Eigenschaften, z. B. ob das Programm das System beschädigen oder zum Absturz bringen könnte oder ob eine Endlosschleife das Erreichen des Programmendes verhindern würde.

Vorteile des eBPF

Der eBPF bietet Entwicklern und Entwicklerinnen viele Vorteile von effizienterer Arbeitsweise bis zu erhöhter Sicherheit trotz systemnaher Operationen.

Effizienteres Arbeiten

Die Funktionen, die der eBPF ermöglicht, könnten auch auf andere Weise realisiert werden, z. B. über Anwendungen, die im User Space arbeiten. Der eBPF arbeitet direkt im Kernel Space und ist damit direkt auf der untersten Ebene des Systems aktiv. Dadurch kann er deutlich effizienter arbeiten als ein Programm, das auf höheren und weiter abstrahierten Ebenen des Systems arbeiten. Weil er so nahe am Kernel eingesetzt wird, vermeidet er unnötige Paketkopien, was ihn vor allem bei Anfragen nach spezifischen Paketen merklich effizienter macht.

Schnelle, plattformunabhängige Verarbeitung

eBPF-Anwendungen nutzen einen JIT-Compiler, werden also zur Laufzeit kompiliert. Beim Kompilieren wird auch die jeweilige Plattform mit einbezogen, sodass für jede Plattform die passenden Anweisungen erstellt werden. Das bedeutet, dass Programmierer mit eBPF plattformunabhängig arbeiten können. Alternativ kann plattformspezifischer Bytecode direkt per Interpreter verarbeitet werden.

Kein direkter Eingriff in den Kernel

Der eBPF erlaubt zur Laufzeit Operationen, für die man normalerweise in den Quellcode von Kernel-Modulen eingreifen müsste. Durch die Virtualisierung muss der Quellcode nicht dauerhaft verändert werden. Stattdessen wird dynamisch ins System eingegriffen, wenn der Bedarf dafür entsteht. Die Veränderungen sind jederzeit reversibel und haben über die Laufzeit des eBPF-Programms hinaus keinen Bestand.

Erhöhte Sicherheit

Der Verifier der eBPF-VM lässt nicht zu, dass sicherheitskritischer Code ausgeführt wird. Auch Funktionen wie Endlosschleifen, die die Stabilität des Kernels gefährden könnten, werden abgewiesen. Gerade im Vergleich mit individuell programmierten Kernelmodulen bietet die strikte Prüfung durch den Verifier eine höhere Sicherheit.

Anwendungsgebiete des eBPF

Der eBPF hat in einigen Szenarien echte Vorteile zu bieten. Im Zusammenhang mit Containerumgebungen wie Kubernetes oder Docker können z. B. komplexe Sicherheitsrichtlinien oder individuelle, performante Netzwerkdatenpfade realisiert werden. Allgemein kann eBPF mit jeder Kernelfunktion arbeiten und Funktionen in folgenden Bereichen realisieren:

  • Observability, z. B. Überwachung der Performance von Anwendungen
  • Sicherheit, z. B. Überwachung oder Abwehr von Bedrohungen
  • Leistungsoptimierung, z. B. Optimierung der Leistung von Dateisystemen
  • Cloudoptimierung, z. B. Realisierung von Netzwerk- und Sicherheitsfunktionen in Cloud-Anwendungen

Einschränkungen des eBPF

Es gibt auch Szenarien, in denen der eBPF unvorteilhaft sein kann. Wenn Ressourcen wie CPU-Zyklen knapp oder teuer sind, könnte der eBPF im Vergleich zu einfacheren Tools wie IPTables im Nachteil sein. eBPF-Anwendungen können einen hohen Ressourcenbedarf zur Konsequenz haben, sodass in manchen Konstellationen eine andere Lösung wirtschaftlicher wäre. Zudem muss bedacht werden, dass aus Sicherheitsgründen bestimmte Kontrollstrukturen wie Schleifen unzulässig sind. Dadurch werden die Möglichkeiten beschränkt, die ein Programmierer mit eBPF nutzen kann. Für komplexe Szenarien kann ein eigenes Kernel-Modul die flexiblere Wahl sein.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Fazit

eBPF ist ein nützliches Werkzeug, das wertvolle Überwachungs- und Analysefunktionen für Pakete unter Linux einfacher, sicherer und effizienter macht. Die Technologie erfreut sich wachsender Beliebtheit und wird von Größen wie Google, Netflix, Meta, Apple oder Android produktiv genutzt. Es werden immer weitere Tools entwickelt, die die Prinzipien des eBPF nutzen, z. B. Cilium. Das Projekt „eBPF for Windows“ arbeitet daran, die immer beliebter werdenden Fähigkeiten von eBPF auch auf modernen Windows-Systemen verfügbar zu machen.

(ID:49602892)