Predstavená knižnica Aya na vytváranie obslužných programov eBPF v Ruste

Predstavuje sa prvé vydanie knižnice Aya, ktorá vám umožňuje vytvárať obslužné nástroje eBPF v jazyku Rust, ktoré bežia vo vnútri linuxového jadra v špeciálnom virtuálnom stroji s JIT. Na rozdiel od iných vývojových nástrojov eBPF Aya nepoužíva libbpf a kompilátor bcc, ale namiesto toho ponúka vlastnú implementáciu napísanú v Ruste, ktorá používa balík libc crate na priamy prístup k systémovým volaniam jadra. Budovanie Aya nevyžaduje nástroje v jazyku C ani hlavičkové súbory jadra. Kód knižnice je distribuovaný pod licenciami MIT a Apache 2.0.

Kľúčové vlastnosti:

  • Podpora pre BTF (BPF Type Format), ktorá poskytuje informácie o type v pseudokóde BPF na kontrolu typu a mapovanie na typy poskytované aktuálnym jadrom. Použitie BTF umožňuje vytvárať univerzálne obslužné programy eBPF, ktoré možno použiť bez rekompilácie s rôznymi verziami linuxového jadra.
  • Podpora volaní „bpf-to-bpf“, globálnych premenných a inicializátorov, ktorá vám umožňuje navrhovať programy pre eBPF podobným spôsobom ako bežné programy, ktoré používajú aya ako runtime, ktoré predefinuje funkcie s prihliadnutím na prácu v eBPF.
  • Podpora pre rôzne typy jadier, vrátane bežných polí, hash máp, zásobníkov, frontov, trasovania zásobníkov, ako aj štruktúr sledovania soketov a výkonu.
  • Schopnosť vytvárať rôzne typy eBTF programov, vrátane programov na filtrovanie a riadenie prevádzky, cgroup handlerov a rôznych soketových operácií, XDP programov.
  • Podpora platforiem pre asynchrónne spracovanie požiadaviek v neblokujúcom režime tokio a async-std.
  • Rýchla montáž bez akéhokoľvek pripojenia k zostave jadra a hlavičkovým súborom jadra.

Projekt je zatiaľ považovaný za experimentálny – API ešte nie je stabilizované a pokračuje vo vývoji. Taktiež ešte neboli zrealizované všetky plánované príležitosti. Do konca roka vývojári očakávajú, že funkcionalitu Aya zosúladia s libbpf a v januári 2022 vytvoria prvé stabilné vydanie. Existujú tiež plány na spojenie častí Aya potrebných na napísanie kódu Rust pre jadro Linuxu s komponentmi používateľského priestoru, ktoré sa používajú na načítanie, pripojenie a interakciu s programami eBPF.

Pripomeňme si, že eBPF je interpret bajtového kódu zabudovaný do jadra Linuxu, ktorý umožňuje vytvárať obslužné programy sieťových operácií, monitorovať prevádzku systému, zachytávať systémové volania, riadiť prístup, spracovávať udalosti pri zachovaní načasovania, počítať frekvenciu a čas operácií, vykonávať sledovanie pomocou kprobes/uprobes/tracepoints. Vďaka použitiu JIT kompilácie sa bajtový kód za behu prekladá do strojových inštrukcií a vykonáva sa s výkonom natívneho kódu. XDP poskytuje nástroje na spúšťanie programov BPF na úrovni sieťového ovládača s možnosťou priameho prístupu k vyrovnávacej pamäti paketov DMA, čo umožňuje vytvárať vysokovýkonné procesory pre prácu pri veľkom zaťažení siete.

Zdroj: opennet.ru

Pridať komentár