Aya, det første bibliotek, der oprettede eBPF-controllere i Rust

Linus torvalds såvel som mange udviklere Kernel og forskellige distributioner har udtrykt deres smag for Rust og endda ved mere end én lejlighed er emnet for implementering af controllere i dette programmeringssprog på Linux-kernen blevet præsenteret.

Og herom er der allerede gjort kendt forskellige værker, heraf vi har allerede nævnt her på bloggen og vi kan nævne f.eks eksperiment succes fra den alternative pakke af hjælpeprogrammer, coreutils, omskrevet i Rust (Dette inkluderer værktøjer som sort, cat, chmod, chown, chroot, cp, date, dd, echo, værtsnavn, id, ln og ls).

I betragtning af dette har Linus torvalds ikke fuldt ud givet sit synspunkt til fordel for dette initiativ og har givet udtryk for de negative punkter (du kan konsultere detaljerne I følgende link.)

Trods Linus' hårde kritik, jobs om implementeringen af Rust in the Kernel er ikke holdt op med at bevæge sig fremad og for nylig den første version af Aya-biblioteket blev introduceret, som giver dig mulighed for at oprette eBPF-drivere i Rust, der kører inde i Linux-kernen i en speciel virtuel JIT-maskine.

I modsætning til andre EBPF-udviklingsværktøjer, Aya bruger ikke libbpf og BCC-kompilerenMen tilbyder sin egen implementering skrevet i Rust Den bruger libc-kassepakken til at få direkte adgang til kernesystemkald. At bygge Aya kræver ikke C-sprogværktøjer eller kerneoverskrifter.

For hvem det er uvidende om eBPF, bør de vide, at dette er en bytekode-fortolker indbygget i Linux-kernen, der giver dig mulighed for at oprette netværksoperationscontrollere, overvåge systemets ydeevne, opsnappe systemkald, kontrollere adgang, behandle tidsindstillede hændelser, beregne frekvens og timing af operationer og spore ved hjælp af kprobes/uprobes/tracepoints.

Takket være JIT-kompilering oversættes bytekode til maskininstruktioner på farten og kører med ydeevnen af ​​native kode. XDP giver mulighed for at køre BPF-programmer på netværksdriverniveau med direkte adgang til pakke-DMA-bufferen, hvilket giver dig mulighed for at skabe højtydende drivere til høje netværksbelastningsforhold.

Om Aya

Af de nævnte nøglefunktioner af Aya kan vi finde det har understøttelse af BTF (BPF Type Format), som giver typeinformation i BPF-pseudokode til kontrol og sammenligning af typer leveret af den aktuelle kerne. Brug af BTF gør det muligt at skabe universelle eBPF-drivere, der kan bruges uden at skulle rekompilere dem med forskellige versioner af Linux-kernen.

samt ham understøttelse af bpf-til-bpf-opkald, globale variabler og initialiseringer, som gør det muligt at designe programmer til eBPF analogt med konventionelle programmer, der bruger aya som eksekveringstid, og tilsidesætter funktioner under hensyntagen til arbejdet i eBPF.

Det har den på den anden side også understøttelse af interne kernetyper, inklusive almindelige arrays, hash-kort, stakke, køer, stakspor og strukturer til sockets og performance-sporing.

også har mulighed for at lave forskellige typer eBTF-programmer, herunder programmer til trafikfiltrering og -styring, cgroup og forskellige socket-drivere, XDP-programmer og også platformunderstøttelse til asynkron anmodningsbehandling i ikke-blokerende tokyo-tilstand og async-std.
Hurtig build, ikke bundet til kernel build eller kernel headers.

Det er vigtigt at nævne det projektet betragtes stadig som eksperimentelt, da API'et endnu ikke er stabiliseret og fortsætter med at udvikle sig. Derudover er ikke alle udtænkte funktioner endnu blevet implementeret.

Ved udgangen af ​​året håber udviklerne at bringe Ayas funktionalitet på niveau med libbpf. og i januar 2022 danne den første stabile version. Det er også planlagt 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.

Endelig hvis du er interesseret i at vide mere om det, kan du tjek detaljerne i følgende link.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for data: AB Internet Networks 2008 SL
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.