De Aya-bibliotheek is gepresenteerd voor het creƫren van eBPF-handlers in de programmeertaal Rust

De eerste release van de Aya-bibliotheek is gepresenteerd, waarmee eBPF-handlers kunnen worden gemaakt in de programmeertaal Rust, die binnen de Linux-kernel draaien in een speciale virtuele machine met JIT. In tegenstelling tot andere tools voor de ontwikkeling van eBPF-programma's, gebruikt Aya geen libbpf en de bcc-compiler, maar biedt het een eigen implementatie, geschreven in Rust, die het crate-pakket libc gebruikt voor directe toegang tot systeemcalls van de kernel. Voor de bouw van Aya is geen C-toolchain of kernel headerbestanden vereist. De code van de bibliotheek wordt verspreid onder de MIT- en Apache 2.0-licenties.

Belangrijkste mogelijkheden:

  • Ondersteuning voor het BTF-formaat (BPF Type Format), dat type-informatie in pseudocode BPF biedt voor type-controle en matching met de types die door de huidige kernel worden geleverd. Het gebruik van BTF maakt het mogelijk om universele eBPF-handlers te maken die zonder recompilatie met verschillende versies van de Linux-kernel kunnen worden gebruikt.
  • Ondersteuning voor 'bpf-to-bpf'-aanroepen, globale variabelen en initialisatoren, waardoor programma's voor eBPF kunnen worden gemaakt die lijken op gewone programma's, waarbij aya als runtime fungeert die functies herdefinieert met inachtneming van het werken in eBPF.
  • Ondersteuning voor verschillende type kernels, inclusief gewone arrays, hashes (hashmap), stacks, queues, stack tracing, en structuren voor sockets en prestatiemonitoring.
  • Mogelijkheid om verschillende types eBTF-programma's te maken, inclusief programma's voor filtering en verkeersbeheer, cgroup-handlers en verschillende socketbewerkingen, en XDP-programma's.
  • Ondersteuning voor platforms voor asynchrone verwerking van verzoeken in niet-blokkerende modus, zoals tokio en async-std.
  • Snelle bouw, zonder afhankelijkheid van de kernelbuild en kernel headerbestanden.

Het project wordt voorlopig als experimenteel beschouwd — de API is nog niet gestabiliseerd en blijft zich ontwikkelen. Ook zijn nog niet alle geplande mogelijkheden gerealiseerd. Voor het einde van het jaar hopen de ontwikkelaars de functionaliteit van Aya gelijk te trekken met libbpf, en in januari 2022 de eerste stabiele release te vormen. Ook is het plan om delen van Aya te combineren die nodig zijn om code in Rust voor de Linux-kernel te schrijven met componenten die in de gebruikersruimte werken en gebruikt worden voor het laden, aankoppelen en interactie met eBPF-programma's.

We herinneren eraan dat eBPF een ingebouwde bytecode-interpreter in de Linux-kernel is, die het mogelijk maakt om netwerkbewerkers te creƫren, systeembewerkingen te volgen, systeemaanroepen te onderscheppen, toegang te controleren, gebeurtenissen met tijdregistratie te verwerken, de frequentie en uitvoeringstijd van operaties te tellen en tracing uit te voeren met behulp van kprobes/uprobes/tracepoints. Dankzij JIT-compilatie wordt bytecode onmiddellijk omgezet in machine-instructies en uitgevoerd met de prestaties van native code. XDP biedt middelen voor het uitvoeren van BPF-programma's op het niveau van de netwerkdriver, met directe toegang tot de DMA-buffer van pakketten, waardoor het mogelijk is om hoogpresterende verwerkers te creƫren die omgaan met zware netwerklasten.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster