Aya, prvá knižnica, ktorá v Ruste vytvorila radiče eBPF

Linus torvalds, ako aj mnohí vývojári Jadro a rôzne distribúcie sa im páči Rust a dokonca aj pri viac ako jednej príležitosti bola predstavená otázka implementácie ovládačov v tomto programovacom jazyku na jadre Linuxu.

A k tomu už vyšli rôzne diela, z toho tu na blogu sme už spomínali a môžeme spomenúť napríklad experiment úspešný z alternatívnej sady nástrojov, coreutils, prepísaná v Rust (Patria sem pomôcky ako sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln a ls).

Vzhľadom na to Linus torvalds úplne nehovoril v prospech tejto iniciatívy a vyjadril negatívne body (môžete si prečítať podrobnosti Na nasledujúcom odkaze.)

Napriek ostrej kritike Linusa práce o implementácii Hrdza v jadre sa neprestala posúvať ďalej a nedávno bola predstavená prvá verzia knižnice Aya, ktorý vám umožňuje vytvárať ovládače eBPF v Ruste, ktoré bežia vo vnútri jadra Linuxu na špeciálnom virtuálnom stroji JIT.

Na rozdiel od iných vývojových nástrojov EBPF Aya nepoužíva libbpf a kompilátor BCCAle ponúka vlastnú implementáciu napísanú v Rust , ktorý používa zásuvkový balík libc na priamy prístup k systémovým volaním jadra. Budovanie Aya nevyžaduje nástroje v jazyku C ani hlavičky jadra.

Pre koho to je nevedia o eBPF, mali by vedieť, že ide o interpret bytových kódov zabudované do jadra Linuxu, ktoré vám umožňuje vytvárať obslužné rutiny sieťových operácií, monitorovať prevádzku systému, zachytávať systémové volania, riadiť prístup, spracovávať udalosti s načasovaním, počítať frekvenciu a čas operácií a sledovať pomocou kprobes / uprobes / tracepoints.

Vďaka kompilácii JIT sa bytecode za behu prekladá do strojových pokynov a beží s výkonom natívneho kódu. XDP poskytuje prostriedky na spúšťanie programov BPF na úrovni sieťových ovládačov s priamym prístupom k vyrovnávacej pamäti paketov DMA, čo vám umožňuje vytvárať výkonné ovládače pre vysoké zaťaženie siete.

O spoločnosti Aya

Z uvedených kľúčových funkcií od Ayy to nájdeme má podporu pre BTF (Formát typu BPF), ktorý poskytuje informácie o type v pseudokóde BPF na kontrolu a porovnanie typov poskytovaných aktuálnym jadrom. Používanie BTF umožňuje vytvárať univerzálne ovládače eBPF, ktoré sa dajú použiť bez toho, aby ste ich museli znovu kompilovať s rôznymi verziami jadra Linuxu.

Rovnako ako podpora hovorov bpf-to-bpf, globálne premenné a inicializátory, ktorý umožňuje navrhovať programy pre eBPF analogicky s bežnými programami používajúcimi ako čas vykonania aya, pričom rušia funkcie zohľadňujúce prácu v eBPF.

Na druhej strane má tiež podpora interných typov jadra, vrátane bežných polí, hash máp, zásobníkov, front, trasovania zásob a štruktúr pre zásuvky a sledovanie výkonu.

tiež má schopnosť vytvárať rôzne typy programov eBTF, vrátane programov na filtrovanie a správu prenosu, cgroup a rôznych ovládačov soketov, programov XDP a tiež podpory platformy pre neblokujúce tokiové asynchrónne spracovanie požiadaviek a async-std.
Rýchla kompilácia bez viazanosti na kompiláciu jadra alebo hlavičky jadra.

Je dôležité spomenúť to projekt sa stále považuje za experimentálny, pretože API ešte nie je stabilizované a neustále sa vyvíja. Tiež ešte neboli implementované všetky koncipované funkcie.

Do konca roka vývojári dúfajú, že funkčnosť Ayy sa vyrovnajú libbpf a v januári 2022 tvoria prvú stabilnú verziu. Plánuje sa tiež skombinovať časti Aya potrebné na napísanie kódu Rust pre jadro Linuxu s komponentmi užívateľského priestoru použitými na načítanie, pripojenie a interakciu s programami eBPF.

Konečne ak máte záujem dozvedieť sa viac o tom môžete skontrolujte podrobnosti v nasledujúcom odkaze.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Za údaje zodpovedá: AB Internet Networks 2008 SL
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.