Představena knihovna Aya pro vytváření ovladačů Rust eBPF

Je představena první verze knihovny Aya, která umožňuje vytvářet eBPF handlery v jazyce Rust, které běží uvnitř linuxového jádra ve speciálním virtuálním stroji s JIT. Na rozdíl od jiných vývojových nástrojů eBPF Aya nepoužívá libbpf a kompilátor bcc, ale místo toho nabízí vlastní implementaci napsanou v Rustu, která používá balíček libc crate pro přímý přístup k systémovým voláním jádra. Sestavení Aya nevyžaduje nástroje v jazyce C ani soubory záhlaví jádra. Knihovní kód je distribuován pod licencí MIT a Apache 2.0.

Základní možnosti:

  • Podpora BTF (BPF Type Format), která poskytuje informace o typu v pseudokódu BPF pro kontrolu typu a mapování na typy poskytované aktuálním jádrem. Použití BTF umožňuje vytvářet univerzální ovladače eBPF, které lze použít bez rekompilace s různými verzemi linuxového jádra.
  • Podpora volání „bpf-to-bpf“, globálních proměnných a inicializátorů, která vám umožňuje navrhovat programy pro eBPF podobným způsobem jako běžné programy, které používají aya jako běhové prostředí, které předefinuje funkce s přihlédnutím k práci v eBPF.
  • Podpora různých typů jader, včetně běžných polí, hashových map, zásobníků, front, trasování zásobníků a také struktur pro sledování soketů a výkonu.
  • Schopnost vytvářet různé typy eBTF programů, včetně programů pro filtrování a správu provozu, cgroup handlerů a různých operací soketů, XDP programů.
  • Podpora platforem pro asynchronní zpracování požadavků v neblokujícím režimu tokio a async-std.
  • Rychlé sestavení, bez jakéhokoli připojení k sestavě jádra a souborům záhlaví jádra.

Projekt je zatím považován za experimentální – API zatím nebylo stabilizováno a nadále se vyvíjí. Také všechny plánované příležitosti ještě nebyly realizovány. Do konce roku vývojáři očekávají, že funkcionalitu Aya sjednotí s libbpf a v lednu 2022 vytvoří první stabilní verzi. Existují také plány zkombinovat části Aya potřebné k napsání kódu Rust pro linuxové jádro s komponentami uživatelského prostoru používanými k načítání, připojení a interakci s programy eBPF.

Připomeňme, že eBPF je interpret bytecode zabudovaný v linuxovém jádře, který umožňuje vytvářet obslužné rutiny síťových operací, monitorovat provoz systému, zachycovat systémová volání, řídit přístup, zpracovávat události při zachování časování, počítat frekvenci a čas operací, provádět trasování pomocí kprobes/uprobes/tracepoints. Díky použití JIT kompilace je bajtkód překládán za běhu do strojových instrukcí a vykonáván s výkonem nativního kódu. XDP poskytuje nástroje pro spouštění programů BPF na úrovni síťového ovladače s možností přímého přístupu k vyrovnávací paměti paketů DMA, což umožňuje vytvářet vysoce výkonné procesory pro práci při velkém zatížení sítě.

Zdroj: opennet.ru

Přidat komentář