Aya, prva knjižnica, ki je ustvarila krmilnike eBPF v Rustu

Linus torvalds, pa tudi mnogi razvijalci Jedro in različne distribucije so izrazili svojo naklonjenost Rustu in celo večkrat je bilo predstavljeno vprašanje implementacije gonilnikov v tem programskem jeziku v jedru Linuxa.

In o tem so že izšla različna dela, od tega smo že omenili tukaj na blogu in lahko omenimo na primer poskus uspešen iz nadomestnega nabora pripomočkov, coreutils, prepisan v Rust (Sem spadajo pripomočki, kot so sort, cat, chmod, chown, chroot, cp, date, dd, echo, ime gostitelja, id, ln in ls).

Glede na to Linus torvalds ni v celoti izrazil svoje stališče v prid tej pobudi in je izrazil negativne točke (podrobnosti si lahko ogledate V naslednji povezavi.)

Kljub ostrim kritikam Linusa, dela o izvajanju Rja v jedru se ni nehala premikati naprej in pred kratkim predstavljena je bila prva različica knjižnice Aya, ki vam omogoča, da v Rustu ustvarite gonilnike eBPF, ki se izvajajo v jedru Linuxa v posebnem navideznem računalniku JIT.

Za razliko od drugih razvojnih orodij EBPF Aya ne uporablja libbpf in prevajalnika BCCVendar ponuja lastno izvedbo, napisano v Rustu ki uporablja paket libc predala za neposreden dostop do sistemskih klicev jedra. Zgradba Aya ne zahteva jezikovnih orodij C ali glav jedra.

Za koga je ne poznajo eBPF, bi morali vedeti, da gre za tolmač bajt kod vgrajeno v jedro Linuxa, ki omogoča ustvarjanje upravljavcev omrežnih operacij, spremljanje delovanja sistema, prestrezanje sistemskih klicev, nadzor dostopa, obdelavo dogodkov s časovnim razporedom, izračun pogostosti in časa operacij ter sledenje z uporabo kprobes / uprobes / sledilne točke.

Zahvaljujoč kompilaciji JIT se bytecode sproti prevede v strojna navodila in deluje z zmogljivostjo izvorne kode. XDP omogoča zagon programov BPF na ravni omrežnega gonilnika z neposrednim dostopom do vmesnega pomnilnika DMA, kar vam omogoča, da zgradite visoko zmogljive gonilnike za pogoje z visoko obremenitvijo omrežja.

O Aji

Od omenjenih ključnih lastnosti od Aya lahko to najdemo ima podporo za BTF (Oblika zapisa BPF), ki zagotavlja informacije o tipih v psevdokodo BPF za preverjanje in primerjavo vrst, ki jih ponuja trenutno jedro. Uporaba BTF omogoča ustvarjanje univerzalnih gonilnikov eBPF, ki jih je mogoče uporabljati, ne da bi jih bilo treba ponovno prevesti z različicami jedra Linuxa.

Pa tudi podpora za bpf-to-bpf klice, globalne spremenljivke in inicializatorji, ki omogoča zasnovo programov za eBPF po analogiji z običajnimi programi, ki uporabljajo aya kot čas izvajanja, pri čemer prekliče funkcije ob upoštevanju dela v eBPF.

Po drugi strani pa ima tudi podpora za notranje tipe jeder, vključno z običajnimi nizi, hashmapi, skladi, čakalnimi vrstami, sledovi skladov in strukturami za vtičnice in sledenje učinkovitosti.

Tudi ima možnost ustvarjanja različnih vrst programov eBTF, vključno s programi za filtriranje in upravljanje prometa, cgroup in različnimi gonilniki vtičnic, programi XDP in tudi podporo platformi za asinhrono obdelavo zahtev v neblokirajočem tokyo načinu in async-std.
Hitro prevajanje brez vezave na prevajanje jedra ali glave jedra.

Pomembno je omeniti to projekt še vedno velja za eksperimentalnega, saj API še ni stabiliziran in se še naprej razvija. Prav tako še niso bile izvedene vse zasnovane funkcije.

Do konca leta razvijalci upajo, da bodo funkcionalnost Aye izenačili z libbpf in januarja 2022 oblikujejo prvo stabilno različico. Načrtovana je tudi kombinacija delov Aya, potrebnih za pisanje kode Rust za jedro Linuxa, s komponentami uporabniškega prostora, ki se uporabljajo za nalaganje, pripenjanje in interakcijo s programi eBPF.

Končno če vas zanima več glede tega lahko podrobnosti preverite na naslednji povezavi.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.