Predstavljena Aya biblioteka za stvaranje eBPF rukovatelja u Rustu

Predstavljeno je prvo izdanje Aya biblioteke koja vam omogućuje stvaranje eBPF rukovatelja u jeziku Rust koji se pokreću unutar Linux kernela u posebnom virtualnom stroju s JIT-om. Za razliku od drugih eBPF razvojnih alata, Aya ne koristi libbpf i bcc kompajler, već umjesto toga nudi vlastitu implementaciju napisanu u Rustu, koja koristi paket libc crate za izravan pristup pozivima sustava kernela. Izgradnja Aye ne zahtijeva alate za jezik C ili datoteke zaglavlja kernela. Kod knjižnice distribuira se pod licencama MIT i Apache 2.0.

Glavne značajke:

  • Podrška za BTF (BPF Type Format), koji pruža informacije o tipu u BPF pseudokodu za provjeru tipa i mapiranje na tipove koje pruža trenutna jezgra. Korištenje BTF-a omogućuje stvaranje univerzalnih eBPF rukovatelja koji se mogu koristiti bez ponovne kompilacije s različitim verzijama Linux kernela.
  • Podrška za pozive "bpf-to-bpf", globalne varijable i inicijalizatore, što vam omogućuje da dizajnirate programe za eBPF na sličan način kao i obični programi koji koriste aya kao runtime koji redefinira funkcije uzimajući u obzir rad u eBPF-u.
  • Podrška za različite tipove kernela, uključujući regularne nizove, hash karte, hrpe, redove čekanja, tragove stogova, kao i strukture za praćenje utičnica i performansi.
  • Mogućnost kreiranja raznih vrsta eBTF programa, uključujući programe za filtriranje i upravljanje prometom, rukovatelje cgroup i razne operacije utičnica, XDP programe.
  • Podrška za platforme za asinkronu obradu zahtjeva u neblokirajućem načinu tokio i async-std.
  • Brza montaža, bez ikakve veze sa sklopom kernela i datotekama zaglavlja kernela.

Projekt se još uvijek smatra eksperimentalnim - API još nije stabiliziran i nastavlja se razvijati. Također, sve planirane prilike još nisu realizirane. Do kraja godine programeri očekuju da će funkcionalnost Aya-e uskladiti s libbpf-om, au siječnju 2022. stvoriti prvo stabilno izdanje. Također postoje planovi za kombiniranje dijelova Aye potrebnih za pisanje Rust koda za Linux kernel s komponentama korisničkog prostora koje se koriste za učitavanje, pripajanje i interakciju s eBPF programima.

Podsjetimo se da je eBPF tumač bajt-koda ugrađen u Linux kernel, koji vam omogućuje stvaranje rukovatelja mrežnim operacijama, praćenje rada sustava, presretanje sistemskih poziva, kontrolu pristupa, obradu događaja uz održavanje vremena, izračunavanje učestalosti i vremena operacija, izvođenje praćenje pomoću kprobes/uprobes /tracepoints. Zahvaljujući korištenju JIT kompilacije, bajt kod se u hodu prevodi u strojne instrukcije i izvršava s izvedbom izvornog koda. XDP pruža alate za pokretanje BPF programa na razini mrežnog upravljačkog programa, s mogućnošću izravnog pristupa međuspremniku DMA paketa, što vam omogućuje stvaranje procesora visokih performansi za rad pod velikim opterećenjem mreže.

Izvor: opennet.ru

Dodajte komentar