Linux-Technologie: extended Berkeley Packet Filter bald auch für Windows

Microsoft hat ein Open-Source-Projekt begonnen, um eBPF auch auf Windows 10 und ab Windows Server 16 zum Laufen zu bringen: eBPF for Windows.

Lesezeit: 3 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 57 Beiträge

(Bild: EFKS/Shutterstock.com)

Von
  • Silke Hahn

Microsoft hat das Projekt "eBPF for Windows" aus der Taufe gehoben, damit Entwickler die aus dem Linux-Umfeld stammende Technologie künftig auch nativ unter Windows einsetzen können. Bei dem Projekt handelt es sich ausdrücklich nicht um einen Fork von eBPF, sondern um ein Verbindungsstück, das existierende Open-Source-Projekte windowsfähig machen soll: In einer Windows-spezifischen Hosting-Umgebung sollen eBPF-Programme künftig auch unter Windows laufen.

Bereits existierende eBPF-Programme bilden der Ankündigung im Microsoft-Cloudblog zufolge den Grundstock, so soll das Microsoft-Team gebräuchliche eBPF-Toolchains und -APIs im Rahmen des Projekts für Windows adaptieren. Bislang war das nur für Windows Subsystem für Linux 2.0 möglich gewesen.

Dabei erfindet Microsoft das Rad nicht neu, sondern eröffnet seinen Nutzern Möglichkeiten, die Linux-Nutzer längst hatten. Mit der Technologie eBPF (extended Berkeley Packet Filter) ließ sich bislang vor allem der Linux-Kernel erweitern und modifizieren. eBPF erlaubt das Ausführen von Programmen im Kernel in einer abgesicherten Sandbox, sodass der Quellcode des Kernel und die Kernel-Module von den Erweiterungen unangetastet bleiben. Dabei funktioniert eBPF bei Linux ähnlich wie eine virtuelle Maschine unter Java. Die noch relativ neue Technik zur Datenverarbeitung kommt beispielsweise beim Monitoring von Speicherauslastung, CPU und Traffic zum Einsatz. Die Systemüberwachung lässt sich dabei ohne zwischengeschaltete Agenten steuern.

Als Einsatzgebiete bei Windows kommen wohl primär der Schutz vor Denial-of-Service-Angriffen und Observability in Betracht. Das von Microsoft nun angekündigte Vorhaben steckt jedoch offenbar noch in den Kinderschuhen und sucht zunächst die Zusammenarbeit mit der eBPF-Community, um die noch recht neue Technologie über das Betriebssystem Linux hinaus auch für das eigene Betriebssystem zu erschließen, eine Adaption an Windows 10 und den Windows Server ab Version 16 aufwärts ist geplant. Die Initiatoren versprechen sich davon zusätzliche Programmierbarkeit, Erweiterbarkeit und mehr Agilität in der Softwareentwicklung auch für Windows und den Windows Server. Ihnen kommt zupass, dass rings um eBPF bereits ein Ökosystem aus Werkzeugen, Produkten und Einsatzszenarien existiert.

Um zu verstehen, was eBPF ist, dürfte ein Blick in die Projektbeschreibung hilfreich sein: Mit eBPF wird der Linux-Kernel dem ePBF-Team zufolge programmierbar, und bestehende Layer lassen sich mit zusätzlichen Funktionen anreichern, ohne das Gesamtsystem komplexer zu machen oder die Sicherheit zu kompromittieren. Diese Eigenschaften haben dazu geführt, dass nun auf eBPF basierende Software entsteht und bereits entstanden ist, die das Verhalten des Kernels umprogrammiert und eine gewünschte Logik auch auf mehrere Untersysteme ausdehnen kann, die zuvor unabhängig waren und einzeln angesprochen werden mussten.

Technologie für Monitoring-Aufgaben im Linux-Kernel: eBPF steht für extended Berkeley Packet Filter

(Bild: eBPF.io)

eBPF erfasst alle Systemaufrufe und erlaubt umfassendes Filtern auf Netzwerk-Ebene sowie das Nachverfolgen von Prozessen und ihrem Kontext. Dadurch kombiniert die Technologie die Sichtbarkeit und gezielte Steuerung sämtlicher Systemaspekte, was zu einem besonders guten Kontrollzugriff führen und die Sicherheit erhöhen soll. Da eBPF-Programme sich an Trace Points und Probe Points sowohl im Kernel als auch in Nutzeranwendungen anheften lassen, eröffnen sich Entwicklern hier tiefere Einblicke in das Verhalten der Runtime, der Anwendungen und des Systems.

Bei der Paketverarbeitung und innerhalb von Netzwerkprozessen lassen sich zusätzliche Protokoll-Parser einbinden und eine geänderte Logik zur Weiterverarbeitung programmieren. Dadurch sind Anpassungen bei geänderten Anforderungen einfach vorzunehmen, ohne den Kontext der Paketverarbeitung zu verlassen. Der JIT-Compiler sorgt für eine Performance bei der Ausführung, die laut eBPF-Team an die von nativ im Kernel kompiliertem Code heranreicht. eBPF ermöglicht obendrein das Sammeln und Aggregieren metrischer Daten innerhalb des Kernels. Die Aufbereitung zur Veranschaulichung der Daten zum Beispiel in Histogrammen geschieht dem Team zufolge an der Quelle der Ereignisse und ohne den Umweg über statische Counter.

Architektur des Microsoft-Projekts "eBPF for Windows" – Projekt und verwandte Komponenten

(Bild: Microsoft)

Wie die Architektur des nun von Microsoft angekündigten Projekts zur Einbindung der eBPF-Technologie ausschauen wird, ist ansatzweise der Ankündigung im Blog zu entnehmen. Beispielsweise lässt sich mit dem Compiler Clang eBPF-Bytecode aus zahlreichen Programmiersprachen erzeugen. Den Bytecode können Anwendungen oder auch Entwickler manuell weiterverarbeiten, Letzteres zum Beispiel per Kommandozeile. In beiden Fällen erfolgt der Zugriff auf eine gemeinsam genutzte Library, die die nötigen Libbpf-APIs einbindet. Die Library sendet den eBPF-Bytecode an einen statischen Verifier, der in einer abgesicherten Umgebung läuft und Kernel-Komponenten die Authentifizierung des Nutzer-Daemons mittels vertrauenswürdigem Schlüssel erlaubt.

Hat der Bytecode die Sicherheitsüberprüfung durch den Verifier erfolgreich durchlaufen, lässt er sich in einen uBPF-Interpreter laden, der im Windows-Kernel-Modus ausführbar ist. Alternativ kann der JIT-Compiler (just-in-time) den Code kompilieren und nativen Code in den Ausführungskontext im Kernel-Modus laden. Zurzeit sind zwei netzwerkspezifische Hooks vorhanden (XDP und Socket Bind), zahlreiche weitere Hooks und Helper sollen folgen. Das Ziel sind offenbar eBPF-Programme, die hinsichtlich ihres Quellcodes zwischen Linux und Windows kompatibel sind.

Lesen Sie auch

Das eBPF-for-Windows-Projekt ist auf GitHub verortet. Laut Ankündigung plant Microsoft für die Zukunft auch eine Community-getriebene Stiftung, die innerhalb des bestehenden eBPF-Ökosystems angesiedelt sein soll. Weitere Hinweise lassen sich dem Blogeintrag in den Cloudblogs von Microsoft entnehmen.

(sih)