Die Architektur des BPF-Befehlsumsets erhielt den Status eines vorgeschlagenen Standards.

Der IETF (Internet Engineering Task Force), der sich mit der Entwicklung von Protokollen und der Architektur des Internets beschäftigt, hat das RFC zur Architektur des BPF-Befehlsatzes abgeschlossen und die zugehörige Spezifikation unter der Kennung RFC 9669 veröffentlicht. Das RFC erhielt den Status eines „Vorgeschlagenen Standards“, wonach die Arbeit am Status des Entwurfsstandards (Draft Standard) beginnen wird, was im Wesentlichen die vollständige Stabilisierung und Berücksichtigung aller geäußerten Anmerkungen bedeutet.

Die veröffentlichte Spezifikation beschreibt eine Sammlung von BPF-Bytecode-Anweisungen und einer Niedrig-Level-virtuellen Maschine, die im eBPF-Kernel-Subsystem von Linux verwendet wird, um externe Handler auszuführen, die das Verhalten des Systems in Echtzeit ändern können, ohne den Kernel-Code anpassen zu müssen. Im Wesentlichen implementiert eBPF eine einfache virtuelle CPU mit ihrem eigenen Satz von Registern, RISC-ähnlichen Anweisungen, einem Stack und einem Befehlzählwerk. BPF-Programme werden in der Regel in einem Teilmenü der Programmiersprache C erstellt und dann in Bytecode kompiliert, der ausführbar ist in virtuellen Maschine. Eine virtuelle Maschine kann BPF-Programme sowohl durch Interpretation als auch durch die Anwendung von JIT-Compilation zur Übersetzung von Bytecode in Maschinencode zur Laufzeit ausführen.

Die Standardisierung der BPF-Befehlssatzarchitektur wird als Anreiz für die Erstellung von Drittanbieterimplementierungen angesehen, die mit der eBPF-Virtual-Machine kompatibel sind und BPF-Programme ausführen können, die für den Linux-Kernel geschrieben wurden. An der Entwicklung solcher virtuellen Maschinen arbeiten einige Hersteller von Netzwerkkarten, die Werkzeuge zur Hardwarebeschleunigung der Ausführung von BPF-Netzwerkpaketbearbeitern entwickeln. Ziel ist es, die Möglichkeiten des XDP (eXpress Data Path)-Subsystems zu erweitern, um BPF-Programme nicht nur auf der Ebene des Netzwerktreibers, sondern auch auf der Seite der Netzwerkkarte auszuführen.

Zum Beispiel hat das Unternehmen Netronome die Unterstützung für BPF in den Netronome Agilio CX SmartNIC-Adapter integriert und eine Sammlung von Beispielen für universelle BPF-Programme bereitgestellt, die nicht nur mit CPU im Kernel unter Verwendung eines beliebigen XDP-kompatiblen Treibers ausgeführt werden können, sondern auch auf der Netzwerk-Karte selbst. Dadurch werden Entscheidungen über das Verwerfen, Ändern oder Weiterleiten von Paketen getroffen, ohne CPU-Ressourcen zu beanspruchen. Zudem wird die Technologie XRP (eXpress Resubmission Path) entwickelt, die es ermöglicht, BPF für einige NVMe-Speicheroperationen, wie etwa das Arbeiten mit Indizes und das Aggregieren von Daten, auf die Ebene des NVMe-Treibers oder auf ein externes Gerät auszulagern.

Es wird angemerkt, dass die breitere Einführung solcher Funktionen bisher durch Risiken, die mit der Aufrechterhaltung der Kompatibilität und der Notwendigkeit zur Überwachung des Zustands von eBPF im Kernel verbunden sind, behindert wurde. Aufgrund dieser Risiken haben einige Hersteller die Implementierung von Hardwarebeschleunigung für BPF in ihre Geräte bis zur Etablierung eines Standards verschoben.

Quelle: opennet.ru

Erwerben Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster