Aya, det första biblioteket som skapade eBPF-kontroller i Rust

Linus torvalds liksom många utvecklare Kärna och olika distributioner har uttryckt sitt tycke om Rust och även vid mer än ett tillfälle har frågan om implementering av drivrutiner i detta programmeringsspråk på Linux-kärnan presenterats.

Och på detta har olika verk redan släppts, varav vi har redan nämnt här på bloggen och vi kan till exempel nämna experimentera framgångsrik från den alternativa uppsättningen verktyg, coreutils, omskrivna i Rust (Detta inkluderar verktyg som sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln och ls).

Med tanke på detta har Linus torvalds inte helt gett sin poäng för detta initiativ och har uttryckt de negativa punkterna (du kan läsa detaljerna I följande länk.)

Trots den hårda kritiken från Linus, verk om implementering Rost i kärnan har inte slutat gå vidare och nyligen den första versionen av Aya-biblioteket presenterades, som låter dig skapa eBPF-drivrutiner i Rust som körs inuti Linux-kärnan i en speciell JIT-virtuell maskin.

Till skillnad från andra EBPF-utvecklingsverktyg, Aya använder inte libbpf och BCC-kompilatornMen erbjuder sin egen implementering skriven i Rust som använder libc-lådepaketet för direkt åtkomst till kärnsystemsamtal. Att bygga Aya kräver inte C-språkverktyg eller kärnhuvuden.

För dem som är omedvetna om eBPF, de borde veta att detta är en bytecode-tolk inbyggd i Linux-kärnan som låter dig skapa nätverksoperatörshanterare, övervaka systemdrift, avlyssna systemanrop, kontrollera åtkomst, processhändelser med timing, beräkna frekvensen och tiden för operationer och spåra med kprobes / uprobes / tracepoints.

Tack vare JIT-sammanställning översätts bytecode till maskininstruktioner i farten och körs med prestanda för inbyggd kod. XDP ger ett sätt att köra BPF-program på nätverksdrivrutinenivå, med direkt åtkomst till DMA-paketbufferten, så att du kan bygga högpresterande drivrutiner för höga nätverksbelastningsförhållanden.

Om Aya

Av de viktigaste funktionerna som nämns från Aya kan vi hitta det har stöd för BTF (BPF-typformat), som ger typinformation i BPF-pseudokod för att kontrollera och jämföra typer som tillhandahålls av den aktuella kärnan. Användning av BTF gör det möjligt att skapa universella eBPF-drivrutiner som kan användas utan att behöva kompilera dem med olika versioner av Linux-kärnan.

Så väl som stöd för bpf-till-bpf-samtal, globala variabler och initialiserare, som gör det möjligt att utforma program för eBPF i analogi med konventionella program som använder aya som exekveringstid, vilket avbryter funktioner med hänsyn till arbetet i eBPF.

Å andra sidan har den också stöd för interna kärntyper, inklusive vanliga matriser, hashmaps, stackar, köer, stackspår och strukturer för uttag och prestationsspårning.

Tambien har förmågan att skapa olika typer av eBTF-program, inklusive program för filtrering och trafikhantering, cgroup- och olika sockeldrivrutiner, XDP-program och även plattformssupport för asynkron bearbetning av begäran i icke-blockerande tokyo-läge och async-std.
Snabb sammanställning utan att vara bunden till kärnkompilering eller kärnhuvuden.

Det är viktigt att nämna det projektet anses fortfarande vara experimentellt eftersom API: n inte är stabiliserat än och fortsätter att utvecklas. Dessutom har inte alla tänkta funktioner ännu implementerats.

I slutet av året hoppas utvecklarna att få Ayas funktionalitet i nivå med libbpf och i januari 2022 utgör den första stabila versionen. Det planeras också att kombinera de delar av Aya som behövs för att skriva Rust-kod för Linux-kärnan med de användarutrymmeskomponenter som används för att ladda, bifoga och interagera med eBPF-program.

Slutligen om du är intresserad av att veta mer om det kan du kolla detaljerna i följande länk.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.