Die Bibliothek Aya für die Erstellung von eBPF-Handlern in Rust wurde vorgestellt.

Die erste Version der Aya-Bibliothek wurde vorgestellt, die es ermöglicht, eBPF-Handler in der Programmiersprache Rust zu erstellen, die innerhalb des Linux-Kernels in einer speziellen virtuellen Maschine mit JIT ausgeführt werden. Im Gegensatz zu anderen Werkzeugen zur Entwicklung von eBPF-Programmen verwendet Aya nicht libbpf und den bcc-Compiler, sondern bietet eine eigene Implementierung, die in Rust geschrieben ist und das crate-Paket libc für den direkten Zugriff auf Systemaufrufe des Kernels nutzt. Für den Aufbau von Aya ist kein C-Compiler und keine Kernel-Header erforderlich. Der Code der Bibliothek wird unter den Lizenzen MIT und Apache 2.0 verteilt.

Hauptfunktionen:

  • Unterstützung des BTF-Formats (BPF Type Format), das Informationen über Typen im Pseudocode BPF für Typprüfungen und Zuordnungen zu Typen bereitstellt, die vom aktuellen Kernel angeboten werden. Die Verwendung von BTF ermöglicht die Erstellung universeller eBPF-Handler, die ohne Neukompilierung mit verschiedenen Versionen des Linux-Kernels verwendet werden können.
  • Unterstützung von „bpf-to-bpf“-Aufrufen, globalen Variablen und Initialisierern, was es ermöglicht, Programme für eBPF ähnlich wie herkömmliche Programme zu gestalten, wobei aya als Laufzeitumgebung fungiert, die Funktionen unter Berücksichtigung der Ausführung in eBPF überschreibt.
  • Unterstützung verschiedener Kerneltypen, einschließlich normaler Arrays, Hashmaps, Stacks, Warteschlangen, Stacktraces sowie Strukturen für Sockets und Performance-Tracking.
  • Fähigkeit, verschiedene Arten von eBPF-Programmen zu erstellen, einschließlich Filter- und Verkehrsmanagementprogrammen, cgroup-Handlern und verschiedenen Socket-Operationen, sowie XDP-Programmen.
  • Unterstützung von Plattformen für asynchrone Anfrageverarbeitung im nicht blockierenden Modus mit tokio und async-std.
  • Schnelle Erstellung, ohne Bindung an den Kernel-Build oder Kernel-Header-Dateien.

Das Projekt wird derzeit als experimentell betrachtet – die API ist noch nicht stabilisiert und entwickelt sich weiter. Zudem sind noch nicht alle vorgesehenen Funktionen implementiert. Bis Ende des Jahres rechnen die Entwickler damit, die Funktionalität von Aya auf das Niveau von libbpf zu bringen, und im Januar 2022 den ersten stabilen Release zu veröffentlichen. Auch geplant ist die Integration der Teile von Aya, die erforderlich sind, um Code für den Linux-Kernel in Rust zu schreiben, mit Komponenten, die im Benutzermodus arbeiten und zum Laden, Anfügen und Interagieren mit eBPF-Programmen verwendet werden.

eBPF ist ein in den Linux-Kernel integrierter Bytecode-Interpreter, der es ermöglicht, Netzwerkanwendungen zu erstellen, Systemaktivitäten zu überwachen, Systemaufrufe abzufangen, Zugriffsrechte zu kontrollieren, zeitgestempelte Ereignisse zu verarbeiten, die Häufigkeit und Ausführungszeiten von Operationen zu zählen und Tracing mithilfe von kprobes/uprobes/tracepoints durchzuführen. Durch den Einsatz von JIT-Kompilierung wird der Bytecode zur Laufzeit in Maschinencode übersetzt und mit der Leistung von nativen Code ausgeführt. XDP bietet die Möglichkeit, BPF-Programme auf der Ebene des Netzwerktreibers auszuführen und ermöglicht den direkten Zugriff auf DMA-Paketpuffer, wodurch leistungsstarke Handler für den Betrieb unter hoher Netzwerkbelastung erstellt werden können.

Quelle: opennet.ru

Kaufen 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