Aya, de eerste bibliotheek die eBPF-controllers maakt in Rust

Linus torvalds evenals vele ontwikkelaars Kernel en verschillende distributies hebben hun waardering uitgesproken voor Rust en zelfs meer dan eens is de kwestie van de implementatie van stuurprogramma's in deze programmeertaal op de Linux Kernel gepresenteerd.

En hierover zijn al verschillende werken verschenen, waarvan we hebben het hier al op de blog genoemd en we kunnen bijvoorbeeld vermelden experiment geslaagd van de alternatieve set hulpprogramma's, coreutils, herschreven in Rust (Dit omvat hulpprogramma's zoals sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln en ls).

Gelet hierop heeft Linus torvalds zijn punt voor dit initiatief niet volledig uitgesproken en heeft hij de negatieve punten geuit (u kunt de details raadplegen Op de volgende link.)

Ondanks de harde kritiek van Linus, de werken over implementatie Roest in de Kernel is niet gestopt met bewegen en onlangs de eerste versie van de Aya-bibliotheek werd gepresenteerd, waarmee u eBPF-stuurprogramma's in Rust kunt maken die in de Linux-kernel worden uitgevoerd op een speciale JIT virtuele machine.

In tegenstelling tot andere EBPF-ontwikkeltools, Aya gebruikt geen libbpf en de BCC-compilerMaar biedt zijn eigen implementatie geschreven in Rust die het libc-ladepakket gebruikt om rechtstreeks toegang te krijgen tot kernelsysteemaanroepen. Het bouwen van Aya vereist geen C-taaltools of kernelheaders.

Voor degenen die niet op de hoogte zijn van eBPF, moeten ze weten dat dit een bytecode-interpreter is ingebouwd in de Linux-kernel waarmee u handlers voor netwerkbewerkingen kunt maken, systeemwerking kunt bewaken, systeemaanroepen kunt onderscheppen, toegang kunt regelen, gebeurtenissen met timing kunt verwerken, de frequentie en tijd van bewerkingen kunt berekenen en kunt volgen met behulp van kprobes / uprobes / tracepoints.

Dankzij JIT-compilatie wordt bytecode on-the-fly vertaald in machine-instructies en draait met de prestaties van native code. XDP biedt een middel om BPF-programma's op netwerkstuurprogrammaniveau uit te voeren, met directe toegang tot de DMA-pakketbuffer, zodat u krachtige stuurprogramma's kunt maken voor hoge netwerkbelasting.

Over Aya

Van de genoemde belangrijkste functies van Aya kunnen we dat vinden heeft de ondersteuning voor BTF (BPF-type-indeling), die type-informatie in BPF-pseudocode biedt om typen die door de huidige kernel worden geleverd te controleren en te vergelijken. Het gebruik van BTF maakt het mogelijk om universele eBPF-stuurprogramma's te maken die kunnen worden gebruikt zonder ze opnieuw te hoeven compileren met verschillende versies van de Linux-kernel.

Net als de ondersteuning voor bpf-naar-bpf-oproepen, globale variabelen en initializers, waarmee programma's voor eBPF kunnen worden ontworpen naar analogie met conventionele programma's die aya als uitvoeringstijd gebruiken, waarbij functies worden geannuleerd, rekening houdend met het werk in eBPF.

Aan de andere kant heeft het ook de ondersteuning voor interne kerneltypes, inclusief reguliere arrays, hash-kaarten, stapels, wachtrijen, stacktraces en structuren voor sockets en het bijhouden van prestaties.

ook heeft de mogelijkheid om verschillende soorten eBTF-programma's te maken, inclusief programma's voor filtering en verkeersbeheer, cgroup en verschillende socketstuurprogramma's, XDP-programma's en ook platformondersteuning voor asynchrone aanvraagverwerking in niet-blokkerende Tokio-modus en async-std.
Snelle compilatie, zonder gebonden te zijn aan kernelcompilatie of kernelheaders.

Het is belangrijk om dat te vermelden het project wordt nog steeds als experimenteel beschouwd omdat de API nog niet is gestabiliseerd en blijft evolueren. Ook zijn nog niet alle bedachte functies geïmplementeerd.

Tegen het einde van het jaar hopen de ontwikkelaars de functionaliteit van Aya op één lijn te brengen met libbpf en vormen in januari 2022 de eerste stabiele versie. Het is ook de bedoeling om de Aya-onderdelen die nodig zijn om Rust-code voor de Linux-kernel te schrijven, te combineren met de gebruikersruimtecomponenten die worden gebruikt om eBPF-programma's te laden, te koppelen en ermee te werken.

Eindelijk als je meer wilt weten erover, je kunt controleer de details in de volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.