Linus torvalds, valamint sok fejlesztő Kernel és különböző disztribúciók kifejezték tetszésüket Rust és még többször bemutatták az illesztőprogramok ezen a programozási nyelven történő telepítésének kérdését a Linux kernelen.
És erről már különféle művek jelentek meg, amelyek közül már említettük itt a blogon és megemlíthetjük például kísérlet sikeres a Rust-ban átírt segédprogramok, coreutils alternatív készletéből (Ide tartoznak az olyan segédprogramok, mint a sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln és ls).
Ezt figyelembe véve Linus torvalds nem adta ki teljes mértékben ezt a kezdeményezést, és kifejezte a negatív pontokat (a részleteket megtekintheti A következő linken.)
Linus kemény kritikája ellenére, a munkák a megvalósításról A rozsda a magban nem szűnt meg tovább haladni és a közelmúltban bemutatták az Aya könyvtár első változatát, amely lehetővé teszi eBPF illesztőprogramok létrehozását a Rust-ban, amelyek a Linux kernelen belül futnak egy speciális JIT virtuális gépben.
Az EBPF más fejlesztési eszközeivel ellentétben Aya nem használja a libbpf fájlt és a BCC fordítót, de felajánlja a Rust-ban írt saját megvalósítását amely a libc fiók csomagot használja a rendszermag-hívások közvetlen eléréséhez. Az Aya felépítéséhez nincs szükség C nyelvű eszközökre vagy kernelfejlécekre.
Azok számára, akik nincsenek tudatában az eBPF-nek, tudnia kell, hogy ez egy bytecode tolmács beépítve a Linux kernelbe, amely lehetővé teszi hálózati műveletek kezelőinek létrehozását, a rendszer működésének figyelemmel kísérését, a rendszerhívások lehallgatását, a hozzáférés vezérlését, az események időzítéssel történő feldolgozását, a műveletek gyakoriságának és idejének kiszámítását, valamint a kprobes / uprobes / tracepoints használatát.
A JIT összeállításának köszönhetően a byte-kódot menet közben lefordítják gépi utasításokba és a natív kód teljesítményével fut. Az XDP lehetőséget nyújt a BPF programok futtatására a hálózati illesztőprogram szintjén, közvetlen hozzáféréssel a DMA csomag pufferhez, amely lehetővé teszi nagy teljesítményű illesztőprogramok készítését nagy hálózati terheléshez.
Aya-ról
Az említett főbb jellemzők közül Ayától megtudhatjuk rendelkezik a BTF támogatásával (BPF típusú formátum), amely típusinformációkat nyújt BPF álkódban az aktuális kern által biztosított típusok ellenőrzésére és összehasonlítására. A BTF használata lehetővé teszi olyan univerzális eBPF illesztőprogramok létrehozását, amelyek használhatók anélkül, hogy újra lefordítanák őket a Linux kernelének különböző verzióival.
Valamint a a bpf-to-bpf hívások támogatása, globális változók és inicializátorok, amely lehetővé teszi az eBPF programjainak megtervezését a hagyományos programokkal analóg módon, az aya-t futtatva, a funkciók törlésével, figyelembe véve az eBPF-ben végzett munkát.
Másrészt megvan az is belső kerneltípusok támogatása, beleértve a rendszeres tömböket, hashmapokat, halmokat, várólistákat, veremnyomokat és struktúrákat a foglalatokhoz és a teljesítménykövetéshez.
is képes különféle típusú eBTF programok létrehozására, beleértve a szűréshez és a forgalomkezeléshez szükséges programokat, a cgroup és a különféle socket meghajtókat, az XDP programokat, valamint az aszinkron kérelmek feldolgozásának platformtámogatását blokkolás nélküli tokyo módban és async-std.
Gyors fordítás anélkül, hogy a rendszermag fordításához vagy a kernel fejlécéhez lenne kötve.
Fontos ezt megemlíteni a projekt még mindig kísérleti jellegű, mivel az API még nem stabilizálódott és tovább fejlődik. Emellett még nem minden megvalósított funkciót hajtottak végre.
Az év végére a fejlesztők azt remélik, hogy az Aya funkcionalitása a libbpf-vel egyenértékű és 2022 januárjában alkotják az első stabil verziót. Tervezik továbbá az Aya azon részeinek összeállítását, amelyek szükségesek a Linux kernel Rust kódjának megírásához, és az eBPF programok betöltéséhez, csatolásához és azokkal való interakcióhoz használt felhasználói térkomponensekkel.
Végül ha érdekel többet tudni erről tudsz ellenőrizze a részleteket a következő linken.