Aya-biblioteket til at skabe eBPF-håndterere i Rust-sproget er blevet præsenteret.

Den første version af biblioteket Aya er blevet præsenteret, hvilket gør det muligt at skabe eBPF-handlere i Rust, som kører inden i Linux-kernen i en speciel virtuel maskine med JIT. I modsætning til andre værktøjer til udvikling af eBPF-programmer bruger Aya ikke libbpf og compiler bcc, men tilbyder sin egen implementering skrevet i Rust, der bruger crate-pakken libc til direkte adgang til systemopkald i kernen. Det er ikke nødvendigt at have C-værktøjer og kerneloverskriftsfiler for at kompilere Aya. Bibliotekets kode distribueres under MIT- og Apache 2.0-licenser.

Hovedfunktioner:

  • Understøttelse af formatet BTF (BPF Type Format), der giver typeinformation i BPF-pseudokode til typekontrol og sammenligning med de typer, der leveres af den aktuelle kerne. Anvendelse af BTF muliggør oprettelse af universelle eBPF-handlere, der kan bruges uden rekompilering med forskellige versioner af Linux-kernen.
  • Understøttelse af 'bpf-to-bpf'-opkald, globale variabler og initializatorer, hvilket gør det muligt at udforme eBPF-programmer på linje med almindelige programmer, der bruger aya som runtime til at redefinere funktioner med hensyn til brug i eBPF.
  • Understøttelse af forskellige kerntyper, herunder almindelige arrays, hash maps, stacks, queues, stack tracing samt strukturer til sockets og performance tracking.
  • Mulighed for at oprette forskellige typer eBTF-programmer, herunder programmer til filtrering og trafikstyring, cgroup-handlere og forskellige operationer med sockets, samt XDP-programmer.
  • Understøttelse af platforme til asynkron behandling af forespørgsler i non-blocking mode med tokio og async-std.
  • Hurtig kompilering, uden binding til kernelkompilering og kerneloverskriftsfiler.

Projektet betragtes stadig som eksperimentelt - API'et er ikke stabiliseret og fortsætter med at udvikle sig. Ikke alle planlagte funktioner er heller ikke blevet implementeret. Inden året er omme forventer udviklerne at bringe Aya's funktionalitet op på niveau med libbpf, og i januar 2022 planlægger de at formulere den første stabile udgivelse. Der er også planer om at kombinere dele af Aya, der er nødvendige for at skrive kode i Rust til Linux-kernen, med komponenter, der arbejder i brugerområdet og bruges til at indlæse, tilknytte og interagere med eBPF-programmer.

Vi minder om, at eBPF er en indbygget bytecode-interpretator i Linux-kernen, der gør det muligt at oprette håndteringsprogrammer til netværksoperationer, overvåge systemdrift, opfange systemopkald, kontrollere adgang, behandle begivenheder med tidsstempler, tælle frekvenser og udføre operationstider, samt udføre tracing ved hjælp af kprobes/uprobes/tracepoints. Takket være brugen af JIT-kompilering oversættes bytecode i realtid til maskininstruktioner og udføres med ydeevne som native kode. XDP giver værktøjer til at køre BPF-programmer på netværksdriverens niveau med direkte adgang til DMA-pakke-buffere, hvilket muliggør oprettelse af højtydende håndteringsprogrammer, der kan håndtere store netværksbelastninger.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster