Den første utgivelsen av Aya-biblioteket, som lar deg skrive kjernebaserte eBPF-håndterere i Rust, har blitt utgitt. Linux i en dedikert virtuell maskin med en JIT. I motsetning til andre eBPF-utviklingsverktøy bruker ikke Aya libbpf eller bcc-kompilatoren, men tilbyr sin egen implementering skrevet i Rust som bruker libc crate-pakken for å få direkte tilgang til kjernesystemkall. Å bygge Aya krever ikke C-verktøykjeder eller kjerneheaderfiler. Bibliotekskoden distribueres under MIT- og Apache 2.0-lisensene.
Nøkkelegenskaper:
- Støtte for BTF (BPF Type Format), som gir typeinformasjon i BPF-pseudokode for typesjekk og matching mot typer levert av den gjeldende kjernen. Bruk av BTF muliggjør opprettelse av universelle eBPF-håndterere som kan brukes uten rekompilering på tvers av forskjellige kjerneversjoner. Linux.
- Støtte for "bpf-to-bpf"-kall, globale variabler og initialiseringer, som lar deg designe programmer for eBPF på lignende måte som vanlige programmer som bruker aya som en kjøretid som omdefinerer funksjoner som tar hensyn til arbeid i eBPF.
- Støtte for ulike kjernetyper, inkludert vanlige arrays, hashe-kart, stabler, køer, stabelspor, samt socket- og ytelsessporingsstrukturer.
- Evne til å lage ulike typer eBTF-programmer, inkludert programmer for filtrering og håndtering av trafikk, cgroup-behandlere og ulike socket-operasjoner, XDP-programmer.
- Støtte for plattformer for asynkron forespørselsbehandling i ikke-blokkerende modus tokio og async-std.
- Rask montering, uten noen tilkobling til kjernesamlingen og kjerneoverskriftsfiler.
Prosjektet anses for øyeblikket som eksperimentelt – API-et er ennå ikke stabilisert og er fortsatt i utvikling. Videre er ikke alle planlagte funksjoner implementert ennå. Innen årets slutt håper utviklerne å bringe Ayas funksjonalitet på nivå med libbpf, og gi ut den første stabile utgivelsen i januar 2022. De planlegger også å integrere delene av Aya som trengs for å skrive Rust-kode for kjernen. Linux med komponenter som kjører i brukerområdet og brukes til å laste inn, koble til og samhandle med eBPF-programmer.
Som en påminnelse er eBPF en kjerneintegrert Linux En bytekodetolk som lar deg opprette nettverksoperasjonshåndterere, overvåke systemaktivitet, fange opp systemanrop, kontrollere tilgang, behandle hendelser med tidsstyring, beregne hyppigheten og varigheten av operasjoner og utføre sporing ved hjelp av kprobes/uprobes/tracepoints. Takket være just-in-time (JIT)-kompilering oversettes bytekode til maskininstruksjoner på sparket og utføres med innebygd kodeytelse. XDP gir muligheten til å kjøre BPF-programmer på nettverksdrivernivå, med direkte tilgang til DMA-pakkebufferen, noe som muliggjør opprettelse av høyytelseshåndterere for tunge nettverksbelastninger.
Kilde: opennet.ru
