Predstavljena Aya biblioteka za stvaranje eBPF rukovatelja u Rustu

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

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster