Objavljeno je prvo izdanje Aya biblioteke koja vam omogućuje pisanje eBPF rukovatelja temeljenih na kernelu u Rustu. Linux u namjenskom virtualnom stroju s JIT-om. Za razliku od drugih eBPF razvojnih alata, Aya ne koristi libbpf ili bcc kompajler, već nudi vlastitu implementaciju napisanu u Rustu koja koristi libc crate paket za izravan pristup sistemskim pozivima kernela. Izgradnja Aya-e ne zahtijeva C alate ili zaglavne datoteke kernela. Kod biblioteke distribuira se pod MIT i Apache 2.0 licencama.
Glavne značajke:
- Podrška za BTF (BPF Type Format), koji pruža informacije o tipu u BPF pseudokodu za provjeru tipa i usporedbu s tipovima koje pruža trenutna jezgra. Korištenje BTF-a omogućuje stvaranje univerzalnih eBPF rukovatelja koji se mogu koristiti bez ponovnog kompiliranja u različitim verzijama jezgre. Linux.
- Podrška za bpf-bpf pozive, globalne varijable i inicijalizatore omogućuje pisanje eBPF programa na način sličan regularnim programima koji koriste aya kao okruženje za izvođenje, redefinirajući funkcije za rad u eBPF-u.
- Podrška za različite tipove kernela, uključujući regularne nizove, hashove (hash mape), stogove, redove čekanja, tragove stogova, kao i strukture za sockete i praćenje performansi.
- Mogućnost izrade različitih vrsta eBTF programa, uključujući programe za filtriranje i upravljanje prometom, rukovatelje cgroup-ovima i razne socket operacije, XDP programe.
- Platforma podržava asinhronu obradu zahtjeva u neblokirajućem načinu rada Tokio i Async-std.
- Brza izgradnja, bez ikakve ovisnosti o izgradnji kernela i datotekama zaglavlja kernela.
Projekt se trenutno smatra eksperimentalnim - API još nije stabiliziran i još se razvija. Nadalje, još nisu implementirane sve planirane značajke. Do kraja godine, programeri se nadaju da će Ayinu funkcionalnost dovesti u ravnotežu s libbpf-om i objaviti prvo stabilno izdanje u siječnju 2022. Također planiraju integrirati dijelove Aye potrebne za pisanje Rust koda za kernel. Linux s komponentama koje se izvode u korisničkom prostoru i koriste se za učitavanje, spajanje i interakciju s eBPF programima.
Podsjećamo, eBPF je integriran u kernel Linux Interpreter bajtkoda koji vam omogućuje stvaranje rukovatelja mrežnim operacijama, praćenje aktivnosti sustava, presretanje sistemskih poziva, kontrolu pristupa, obradu događaja s mjerenjem vremena, izračunavanje učestalosti i trajanja operacija i izvođenje praćenja pomoću k-sondi/u-sondi/točaka praćenja. Zahvaljujući JIT (just-in-time) kompajliranju, bajtkod se u hodu prevodi u strojne instrukcije i izvršava s performansama izvornog koda. XDP pruža sredstva za pokretanje BPF programa na razini mrežnog upravljačkog programa, s izravnim pristupom DMA međuspremniku paketa, omogućujući stvaranje visokoučinkovitih rukovatelja za velika mrežna opterećenja.
Izvor: opennet.ru
