Aya, první knihovna, která v Rustu vytvořila řadiče eBPF

Linus torvalds stejně jako mnoho vývojářů Jádro a různé distribuce vyjádřili svou zálibu v Rustovi a dokonce i při více než jedné příležitosti byla představena otázka implementace ovladačů v tomto programovacím jazyce na linuxovém jádře.

A k tomu již byla vydána různá díla, z nichž jsme již zmínili zde na blogu a můžeme zmínit například zážitek úspěšné z alternativní sady nástrojů, coreutils, přepsaných v Rustu (To zahrnuje nástroje jako sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln a ls).

Vzhledem k tomu se Linus torvalds plně nevyjádřil ve prospěch této iniciativy a vyjádřil negativní body (viz podrobnosti Na následujícím odkazu.)

Navzdory ostré kritice Linuse, práce o implementaci Rez v jádře nepřestal jít dál a nedávno byla představena první verze knihovny Aya, který vám umožňuje vytvářet ovladače eBPF v Rustu, které běží uvnitř jádra Linuxu ve speciálním virtuálním stroji JIT.

Na rozdíl od jiných vývojových nástrojů EBPF Aya nepoužívá libbpf a kompilátor BCCAle nabízí vlastní implementaci napsanou v Rustu který používá balíček šuplíků libc pro přímý přístup k systémovým voláním jádra. Budování Aya nevyžaduje nástroje jazyka C ani záhlaví jádra.

Pro koho to je nevědí o eBPF, měli by vědět, že se jedná o interpret bytového kódu zabudované do linuxového jádra, které umožňuje vytvářet obslužné rutiny síťových operací, sledovat provoz systému, zachytávat volání systému, řídit přístup, zpracovávat události s načasováním, počítat frekvenci a čas operací a sledovat pomocí kprobes / uprobes / tracepoints

Díky kompilaci JIT se bytecode překládá do strojových instrukcí za běhu a běží s výkonem nativního kódu. XDP poskytuje prostředky ke spouštění programů BPF na úrovni síťových ovladačů s přímým přístupem k vyrovnávací paměti paketů DMA, což vám umožňuje vytvářet vysoce výkonné ovladače pro vysoké zatížení sítě.

O společnosti Aya

Ze zmíněných klíčových funkcí od Ayy to můžeme najít má podporu pro BTF (Formát typu BPF), který poskytuje informace o typu v pseudokódu BPF ke kontrole a porovnání typů poskytovaných aktuálním jádrem. Použití BTF umožňuje vytvářet univerzální ovladače eBPF, které lze použít, aniž byste je museli překompilovat s různými verzemi linuxového jádra.

Stejně jako podpora volání bpf-to-bpf, globální proměnné a inicializátory, který umožňuje navrhovat programy pro eBPF analogicky s běžnými programy používajícími aya jako čas provedení, přičemž ruší funkce s přihlédnutím k práci v eBPF.

Na druhou stranu má také podpora interních typů jádra, včetně pravidelných polí, hash map, zásobníků, front, trasování zásobníků a struktur pro zásuvky a sledování výkonu.

Také má schopnost vytvářet různé typy eBTF programů, včetně programů pro filtrování a správu provozu, cgroup a různých ovladačů soketů, programů XDP a také podpory platformy pro neblokující asynchronní zpracování tokijského režimu a async-std.
Rychlá kompilace bez vazby na kompilaci jádra nebo záhlaví jádra.

Je důležité to zmínit projekt je stále považován za experimentální, protože API ještě není stabilizováno a nadále se vyvíjí. Také ještě nebyly implementovány všechny koncipované funkce.

Do konce roku vývojáři doufají, že funkčnost Aya srovnají s libbpf a v lednu 2022 tvoří první stabilní verzi. Rovněž se plánuje kombinace Aya částí potřebných k napsání Rust kódu pro linuxové jádro s komponentami uživatelského prostoru použitými k načtení, připojení a interakci s programy eBPF.

Konečně pokud máte zájem dozvědět se více o tom můžete zkontrolujte podrobnosti v následujícím odkazu.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.