Predstavená knižnica Aya na vytváranie eBPF spracovateľov v jazyku Rust

Bol predstavený prvý výstup knižnice Aya, ktorá umožňuje vytvárať v jazyku Rust eBPF spracovateľov, spúšťaných v rámci jadra Linuxu v špeciálnom virtuálnom stroji s JIT. Na rozdiel od iných nástrojov na vývoj eBPF programov, Aya nepoužíva libbpf a kompilátor bcc, ale ponúka vlastnú implementáciu napísanú v Rust, ktorá používa crate balík libc na priame volanie systémových volaní jadra. Na zostavenie Ayu nie je potrebné mať nástroje pre jazyk C a hlavičkové súbory jadra. Kód knižnice je distribuovaný pod licenciami MIT a Apache 2.0.

Hlavné možnosti:

  • Podpora formátu BTF (BPF Type Format), ktorý poskytuje informácie o typoch v pseudokóde BPF na overovanie typov a zladenie s typmi poskytovanými aktuálnym jadrom. Použitie BTF umožňuje vytvárať univerzálne eBPF spracovateľov, ktoré je možné používať bez prekompilácie s rôznymi verziami jadra Linuxu.
  • Podpora volaní „bpf-to-bpf“, globálnych premenných a inicializátorov, čo umožňuje formátovať programy pre eBPF analogicky s bežnými programami, ktoré používajú aya ako runtime, predefinujúce funkcie s ohľadom na prácu v eBPF.
  • Podpora rôznych typov jadra, vrátane bežných polí, hashov (hash map), zásobníkov, frontov, trasovaní zásobníka, ako aj štruktúr pre sokety a sledovanie výkonu.
  • Možnosť vytvárať rôzne typy eBTF programov, vrátane programov na filtrovanie a riadenie prevádzky, spracovateľov cgroup a rôznych operácií so soketmi, XDP programov.
  • Podpora platforiem pre asynchrónne spracovanie požiadaviek v neblokujúcom režime tokio a async-std.
  • Rýchla zostava, bez a bez väzby na zostavenie jadra a hlavičkové súbory jadra.

Projekt sa zatiaľ považuje za experimentálny — API ešte nie je stabilizované a stále sa vyvíja. Tiež zatiaľ neboli implementované všetky zamýšľané funkcie. Do konca roka vývojári očakávajú sprístupnenie funkčnosti Ayu na parite s libbpf a v januári 2022 formovanie prvého stabilného vydania. Taktiež sa plánuje zlúčenie častí Ayu potrebných na písanie kódu na Rust pre jadro Linux s komponentmi fungujúcimi v priestore používateľa a používanými na načítanie, pripojenie a interakciu s programami eBPF.

Pripomíname, že eBPF je integrovaný interpret bajtkódu v jadre Linuxu, ktorý umožňuje vytvárať spracovateľov sieťových operácií, sledovať činnosť systémov, zachytávať systémové volania, kontrolovať prístup, spracovávať udalosti so zaznamenávaním časovania, počítať frekvenciu a čas vykonávania operácií, vykonávať trasovanie pomocou kprobes/uprobes/tracepoints. Vďaka použití JIT kompilácie je bajtkód v reálnom čase prevedený na strojové inštrukcie a vykonáva sa s výkonom nativného kódu. XDP poskytuje prostriedky pre spúštanie BPF programov na úrovni sieťového ovládača, s možnosťou prístupu priamo k DMA bufferu paketov, čo umožňuje vytvárať vysoko výkonné spracovateľov pre prácu v podmienkach vysokého sieťového zaťaženia.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster