Aya, prva biblioteka koja je kreirala eBPF kontrolere u Rustu

Linus torvalds kao i mnogi programeri Kernel i različite distribucije izrazili su svoju naklonost prema Rustu pa je čak i više puta predstavljeno pitanje implementacije upravljačkih programa u ovom programskom jeziku na Linux Kernel.

I na tome su već objavljena razna djela već smo spomenuli ovdje na blogu i možemo spomenuti, na primjer, eksperiment uspješno iz alternativnog skupa uslužnih programa, coreutils, prepisanih u Rust (To uključuje uslužne programe poput sort, cat, chmod, chown, chroot, cp, date, dd, echo, ime hosta, id, ln i ls).

S obzirom na ovo, Linus torvalds nije u potpunosti dao svoj stav u korist ove inicijative i izrazio je negativne stavove (možete pogledati detalje U sledećem linku.)

Uprkos oštrim Linusovim kritikama, radovi o implementaciji Rđa u kernelu se nije prestala kretati dalje i nedavno predstavljena je prva verzija Aya biblioteke, koji vam omogućuje stvaranje eBPF upravljačkih programa u Rustu koji se izvode unutar Linux kernela u posebnoj JIT virtualnoj mašini.

Za razliku od ostalih razvojnih alata EBPF, Aya ne koristi libbpf i BCC kompajler, ali nudi sopstvenu implementaciju napisanu na Rustu koji koristi paket libc ladice za direktan pristup sistemskim pozivima kernela. Za izgradnju Aya nisu potrebni alati na jeziku C ili zaglavlja jezgra.

Za koga je nisu svjesni eBPF-a, trebali bi znati da je ovo interpretator bajt koda ugrađeno u Linux jezgru koja vam omogućava da kreirate rukovaoce mrežnim operacijama, nadgledate rad sistema, presrećete sistemske pozive, kontrolirate pristup, obrađujete događaje s vremenom, računate učestalost i vrijeme operacija i pratite pomoću kprobes / uprobes / tracepoints.

Zahvaljujući JIT kompilaciji, bajt kod se u hodu prevodi u mašinske upute i radi sa performansama izvornog koda. XDP pruža sredstvo za pokretanje BPF programa na nivou mrežnog upravljačkog programa, sa direktnim pristupom DMA međuspremniku paketa, omogućavajući vam izgradnju upravljačkih programa visokih performansi za velike mrežne uvjete opterećenja.

O Aji

Od spomenutih ključnih karakteristika od Aye to možemo pronaći ima podršku za BTF (BPF format formata), koji pruža informacije o tipu u BPF pseudokodu za provjeru i usporedbu tipova koje pruža trenutni kernel. Korištenje BTF-a omogućava stvaranje univerzalnih eBPF upravljačkih programa koji se mogu koristiti bez ponovnog kompiliranja s različitim verzijama Linux kernela.

Kao i podrška za bpf-to-bpf pozive, globalne varijable i inicijalizatori, koji omogućava dizajn programa za eBPF po analogiji s konvencionalnim programima koji koriste aya kao vrijeme izvršenja, poništavajući funkcije uzimajući u obzir rad u eBPF-u.

S druge strane, ima i podrška za interne tipove jezgra, uključujući redovite nizove, hashmape, stogove, redove, tragove stogova i strukture za utičnice i praćenje izvedbe.

Tambien ima sposobnost stvaranja različitih vrsta eBTF programa, uključujući programe za filtriranje i upravljanje prometom, cgroup i razne socket drajvere, XDP programe i podršku platformi za asinhronu obradu zahtjeva u neblokirajućem tokyo načinu i async-std.
Brza kompilacija, bez vezivanja za kompilaciju jezgra ili zaglavlja jezgre.

Važno je to napomenuti projekt se i dalje smatra eksperimentalnim jer API još nije stabiliziran i nastavlja da se razvija. Takođe, još nisu implementirane sve zamišljene funkcije.

Do kraja godine, programeri se nadaju da će Ayinu funkcionalnost izjednačiti s libbpfom i u januaru 2022. formiraju prvu stabilnu verziju. Također se planira kombinirati dijelove Aye potrebne za pisanje Rust koda za Linux jezgru s komponentama korisničkog prostora koje se koriste za učitavanje, spajanje i interakciju s eBPF programima.

Konačno ako vas zanima više o tome, možete detalje provjerite na sljedećem linku.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.