Introducerede Aya-bibliotek til oprettelse af eBPF-handlere i Rust

Den første udgivelse af Aya-biblioteket præsenteres, som giver dig mulighed for at oprette eBPF-handlere i Rust-sproget, der kører inde i Linux-kernen i en speciel virtuel maskine med JIT. I modsætning til andre eBPF-udviklingsværktøjer bruger Aya ikke libbpf og bcc-kompileren, men tilbyder i stedet sin egen implementering skrevet i Rust, som bruger libc-kassepakken til at få direkte adgang til kernesystemkald. At bygge Aya kræver ikke C-sprogværktøj eller kerneheader-filer. Bibliotekskoden distribueres under MIT- og Apache 2.0-licenserne.

Nøglefunktioner:

  • Understøttelse af BTF (BPF Type Format), som giver typeinformation i BPF-pseudokode til typekontrol og tilknytning til typer leveret af den aktuelle kerne. Brugen af ​​BTF gør det muligt at skabe universelle eBPF-handlere, der kan bruges uden genkompilering med forskellige versioner af Linux-kernen.
  • Understøttelse af "bpf-til-bpf"-kald, globale variabler og initialiseringer, som giver dig mulighed for at designe programmer til eBPF på samme måde som almindelige programmer, der bruger aya som en runtime, der omdefinerer funktioner under hensyntagen til arbejde i eBPF.
  • Understøttelse af forskellige kernetyper, inklusive almindelige arrays, hash-kort, stakke, køer, stakspor samt strukturer til sporing af socket og ydeevne.
  • Mulighed for at skabe forskellige typer eBTF-programmer, herunder programmer til filtrering og styring af trafik, cgroup-handlere og forskellige socket-operationer, XDP-programmer.
  • Understøttelse af platforme til asynkron anmodningsbehandling i ikke-blokerende tilstand tokio og async-std.
  • Hurtig samling uden nogen forbindelse til kernesamlingen og kernehovedfilerne.

Projektet betragtes stadig som eksperimentelt - API'et er endnu ikke stabiliseret og fortsætter med at udvikle sig. Desuden er alle planlagte muligheder endnu ikke blevet realiseret. Ved udgangen af ​​året forventer udviklerne at bringe Ayas funktionalitet til paritet med libbpf og i januar 2022 at skabe den første stabile udgivelse. Der er også planer om at kombinere de dele af Aya, der er nødvendige for at skrive Rust-kode til Linux-kernen med de brugerrumskomponenter, der bruges til at indlæse, vedhæfte og interagere med eBPF-programmer.

Lad os huske på, at eBPF er en bytekode-fortolker indbygget i Linux-kernen, som giver dig mulighed for at oprette netværksoperationshandlere, overvåge systemdrift, opsnappe systemopkald, kontrollere adgang, behandle hændelser og samtidig bevare timing, beregne frekvensen og tidspunktet for operationer, udføre sporing ved hjælp af kprobes/uprobes/tracepoints. Takket være brugen af ​​JIT-kompilering bliver bytekode oversat til maskininstruktioner og eksekveret med native kodes ydeevne. XDP leverer værktøjer til at køre BPF-programmer på netværksdriverniveau med mulighed for direkte adgang til DMA-pakkebufferen, som giver dig mulighed for at skabe højtydende processorer til at arbejde under stor netværksbelastning.

Kilde: opennet.ru

Tilføj en kommentar