Aya, prima bibliotecă care a creat controlere eBPF în Rust

Linus torvalds, precum și mulți dezvoltatori Kernel și diferite distribuții și-au exprimat dragostea lor despre Rust și chiar în mai multe ocazii a fost prezentată problema implementării driverelor în acest limbaj de programare pe nucleul Linux.

Și pe aceasta, au fost deja lansate diverse lucrări, dintre care am menționat deja aici pe blog și putem menționa, de exemplu, experiment de succes din setul alternativ de utilități, coreutils, rescris în Rust (Aceasta include utilități precum sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln și ls).

Având în vedere acest lucru, Linus torvalds nu și-a exprimat în totalitate punctul în favoarea acestei inițiative și a exprimat punctele negative (puteți consulta detaliile În următorul link.)

În ciuda criticilor dure din partea lui Linus, lucrările despre implementare Rugina din nucleu nu s-a oprit din mers și recent a fost prezentată prima versiune a bibliotecii Aya, care vă permite să creați drivere eBPF în Rust care rulează în nucleul Linux într-o mașină virtuală specială JIT.

Spre deosebire de alte instrumente de dezvoltare EBPF, Aya nu folosește libbpf și compilatorul BCCDar oferă propria implementare scrisă în Rust care folosește pachetul sertar libc pentru a accesa direct apelurile de sistem kernel. Clădirea Aya nu necesită instrumente de limbaj C sau anteturi de nucleu.

Pentru cei care nu știu eBPF, ar trebui să știe că acesta este un interpret de bytecode încorporat în kernel-ul Linux care vă permite să creați handler-uri de operațiuni de rețea, să monitorizați funcționarea sistemului, să interceptați apelurile de sistem, să controlați accesul, să procesați evenimentele cu sincronizarea, să calculați frecvența și ora operațiunilor și să urmăriți utilizând kprobes / uprobes / tracepoints.

Datorită compilării JIT, bytecode este tradus în instrucțiuni automate din mers și rulează cu performanța codului nativ. XDP oferă un mijloc de a rula programe BPF la nivelul driverului de rețea, cu acces direct la bufferul de pachete DMA, permițându-vă să construiți drivere de înaltă performanță pentru condiții ridicate de încărcare a rețelei.

Despre Aya

Dintre caracteristicile cheie menționate de la Aya putem afla că are suport pentru BTF (Format tip BPF), care oferă informații de tip în pseudocod BPF pentru a verifica și compara tipurile furnizate de nucleul curent. Utilizarea BTF face posibilă crearea de drivere eBPF universale care pot fi utilizate fără a fi nevoie să le recompilați cu diferite versiuni ale kernel-ului Linux.

La fel de bine ca suport pentru apeluri bpf-la-bpf, variabile globale și inițializatoare, care permite proiectarea programelor pentru eBPF prin analogie cu programele convenționale care folosesc aya ca timp de execuție, anulând funcțiile luând în considerare munca în eBPF.

Pe de altă parte, are și suport pentru tipurile de kernel interne, inclusiv tablouri regulate, hashmaps, stive, cozi, urme de stivă și structuri pentru socluri și urmărirea performanței.

también are capacitatea de a crea diverse tipuri de programe eBTF, inclusiv programe de filtrare și gestionare a traficului, cgroup și diverse drivere de socket, programe XDP și, de asemenea, suport de platformă pentru procesarea cererilor asincrone în modul Tokyo non-blocant și async-std.
Compilație rapidă, fără a fi legată de compilația kernelului sau a antetelor kernelului.

Este important să menționăm că proiectul este încă considerat experimental deoarece API-ul nu este încă stabilizat și continuă să evolueze. De asemenea, nu toate funcțiile concepute au fost încă implementate.

Până la sfârșitul anului, dezvoltatorii speră să aducă funcționalitatea lui Aya la egalitate cu libbpf. iar în ianuarie 2022 formează prima versiune stabilă. De asemenea, este planificată combinarea părților din Aya necesare pentru a scrie codul Rust pentru nucleul Linux cu componentele spațiului utilizatorului utilizate pentru a încărca, atașa și interacționa cu programele eBPF.

În cele din urmă dacă sunteți interesat să aflați mai multe despre asta, poți verificați detaliile în linkul următor.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: AB Internet Networks 2008 SL
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.