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
