Aya, die erste Bibliothek zur Erstellung von eBPF-Controllern in Rust

Linus Torvalds sowie viele Entwickler Kernel und verschiedene Distributionen haben ihr Gefallen an Rust ausgedrückt und sogar mehr als einmal wurde das Thema der Implementierung von Treibern in dieser Programmiersprache auf dem Linux-Kernel vorgestellt.

Und dazu sind bereits diverse Arbeiten erschienen, von denen haben wir hier im Blog schon erwähnt und wir können zum Beispiel erwähnen, Experiment Ausstieg aus dem alternativen Satz von Dienstprogrammen, coreutils, neu geschrieben in Rust (Dazu gehören Dienstprogramme wie sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln und ls).

Vor diesem Hintergrund hat Linus Torvalds seine Meinung zu dieser Initiative nicht vollständig abgegeben und die negativen Punkte zum Ausdruck gebracht (Sie können die Details einsehen Im folgenden Link.)

Trotz der scharfen Kritik von Linus, die Werke über die Umsetzung Rost im Kernel hat nicht aufgehört, sich weiterzuentwickeln und vor kurzem die erste Version der Aya-Bibliothek wurde vorgestellt, mit dem Sie eBPF-Treiber in Rust erstellen können, die innerhalb des Linux-Kernels in einer speziellen virtuellen JIT-Maschine ausgeführt werden.

Im Gegensatz zu anderen EBPF-Entwicklungstools Aya verwendet weder libbpf noch den BCC-Compiler, Aber bietet eine eigene Implementierung in Rust . geschrieben die das libc-Drawer-Paket verwendet, um direkt auf Kernel-Systemaufrufe zuzugreifen. Das Erstellen von Aya erfordert keine C-Sprachtools oder Kernel-Header.

Für die, die eBPF nicht kennen, sollten sie wissen, dass dies ein Bytecode-Interpreter ist in den Linux-Kernel integriert, der es Ihnen ermöglicht, Netzwerkoperations-Handler zu erstellen, den Systembetrieb zu überwachen, Systemaufrufe abzufangen, den Zugriff zu kontrollieren, Ereignisse mit Timing zu verarbeiten, die Häufigkeit und Zeit von Operationen zu berechnen und mit kprobes / uprobes / tracepoints zu verfolgen.

Dank der JIT-Kompilierung wird Bytecode im Handumdrehen in Maschinenanweisungen übersetzt und läuft mit der Leistung von nativem Code. XDP bietet die Möglichkeit, BPF-Programme auf Netzwerktreiberebene mit direktem Zugriff auf den DMA-Paketpuffer auszuführen, sodass Sie Hochleistungstreiber für hohe Netzwerklastbedingungen erstellen können.

Über Aya

Von den genannten Hauptmerkmalen von Aya können wir das finden hat die Unterstützung für BTF (BPF-Typformat), das Typinformationen in BPF-Pseudocode bereitstellt, um vom aktuellen Kernel bereitgestellte Typen zu überprüfen und zu vergleichen. Die Verwendung von BTF ermöglicht es, universelle eBPF-Treiber zu erstellen, die verwendet werden können, ohne sie mit verschiedenen Versionen des Linux-Kernels neu kompilieren zu müssen.

Ebenso wie Unterstützung für BPF-zu-BPF-Aufrufe, globale Variablen und Initialisierer, die es ermöglicht, analog zu herkömmlichen Programmen Programme für eBPF zu entwerfen, die aya als Ausführungszeit verwenden, und Funktionen unter Berücksichtigung der Arbeit in eBPF aufheben.

Auf der anderen Seite hat es auch die Unterstützung für interne Kernel-Typen, einschließlich regulärer Arrays, Hashmaps, Stacks, Warteschlangen, Stack-Traces und Strukturen für Sockets und Performance-Tracking.

Auch hat die Fähigkeit, verschiedene Arten von eBTF-Programmen zu erstellen, darunter Programme zur Filterung und Verkehrsverwaltung, cgroup und verschiedene Socket-Treiber, XDP-Programme sowie Plattformunterstützung für asynchrone Anfrageverarbeitung im nicht blockierenden Tokio-Modus und async-std.
Schnelle Kompilierung, ohne an Kernel-Kompilierung oder Kernel-Header gebunden zu sein.

Es ist wichtig, das zu erwähnen das Projekt gilt noch als experimentell, da die API noch nicht stabilisiert ist und entwickelt sich weiter. Auch sind noch nicht alle erdachten Funktionen implementiert.

Bis Ende des Jahres hoffen die Entwickler, die Funktionalität von Aya mit libbpf . auf Augenhöhe zu bringen und bilden im Januar 2022 die erste stabile Version. Es ist auch geplant, die Aya-Teile, die zum Schreiben von Rust-Code für den Linux-Kernel erforderlich sind, mit den User-Space-Komponenten zu kombinieren, die zum Laden, Anhängen und Interagieren mit eBPF-Programmen verwendet werden.

Schließlich wenn du mehr wissen möchtest darüber kannst du Überprüfen Sie die Details im folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.