Predstavljena je biblioteka Aya za izradu eBPF handlera na jeziku Rust

Predstavljen je prvi izdanak biblioteke Aya, koja omogućava stvaranje eBPF obrtnika u programskom jeziku Rust, pokrenutih unutar Linux jezgra u posebnoj virtuelnoj mašini s JIT-om. Za razliku od drugih alata za razvoj eBPF programa, Aya ne koristi libbpf i bcc kompajler, već nudi vlastitu implementaciju napisan u Rustu, koja koristi crate paket libc za direktan pristup sistemskim pozivima jezgra. Za izgradnju Aya nije potrebno imati alate za programski jezik C i zaglavlja jezgra. Kod biblioteke distribuira se pod MIT i Apache 2.0 licencama.

Glavne mogućnosti:

  • Podrška za BTF (BPF Type Format) format, koji pruža informacije o tipovima u pseudokodu BPF za proveru tipova i usklađivanje sa tipovima koje trenutno jezgro pruža. Primena BTF omogućava stvaranje univerzalnih eBPF obrtnika koji se mogu koristiti bez ponovnog kompajliranja sa različitim verzijama Linux jezgra.
  • Podrška za ‘bpf-to-bpf’ pozive, globalne varijable i inicijalizatore, što omogućava formiranje eBPF programa u skladu s običnim programima, koristeći aya kao runtime, koji redefiniše funkcije uzimajući u obzir rad u eBPF-u.
  • Podrška za razne tipove jezgra, uključujući obične nizove, heš mape, steke, redove, praćenje stoga, kao i strukture za sokete i praćenje performansi.
  • Mogućnost stvaranja raznih tipova eBTF programa, uključujući programe za filtriranje i upravljanje saobraćajem, obrtnike cgroup i razne operacije sa soketima, XDP programe.
  • Podrška za platforme za asinkrono obradu zahteva u neblokirajućem režimu tokijo i async-std.
  • Brza izgradnja, bez vezivanja za izgradnju jezgra i zaglavlja jezgra.

Projekat se za sada smatra eksperimentalnim - API još nije stabilizovan i nastavlja se razvijati. Takođe nisu implementirane sve zamišljene mogućnosti. Do kraja godine, programeri planiraju dovesti funkcionalnost Aya do pariteta s libbpf, a u januaru 2022. godine formirati prvo stabilno izdanje. Planira se i objedinjavanje delova Aya potrebnih za pisanje koda u Rustu za Linux jezgro s komponentama koje rade u korisničkom prostoru i koriste se za učitavanje, učvršćivanje i interakciju sa eBPF programima.

Podsjećamo da eBPF predstavlja ugrađeni interpretator bajtkoda u Linux kernelu koji omogućuje kreiranje rukovaoca mrežnih operacija, praćenje rada sustava, presretanje sistemskih poziva, kontrolu pristupa, obradu događaja uz očuvanje vremenskog otiska, brojanje frekvencija i trajanja operacija te izvršavanje traganja koristeći kprobes/uprobes/tracepoints. Zahvaljujući primjeni JIT kompajliranja, bajtkod se u letu prevodi u strojne instrukcije i izvršava s performansama nativnog koda. XDP nudi sredstva za pokretanje BPF programa na razini mrežnog drajvera, s mogućnošću izravnog pristupa DMA-buforu paketa, što omogućuje kreiranje visokoperformantnih rukovaoca za rad u uvjetima velike mrežne opterećenosti.

Izvor: opennet.ru

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