Rust-en eBPF kudeatzaileak sortzeko Aya liburutegia aurkeztu da

Aya liburutegiaren lehen bertsioa aurkezten da, Linux kernelaren barruan exekutatzen diren Rust hizkuntzan eBPF kudeatzaileak sortzeko aukera ematen duena JIT-rekin makina birtual berezi batean. Beste eBPF garapen tresnak ez bezala, Ayak ez ditu libbpf eta bcc konpilatzailea erabiltzen, Rust-en idatzitako inplementazio propioa eskaintzen du, libc crate paketea erabiltzen duena nukleoko sistema-deiak zuzenean sartzeko. Aya eraikitzeak ez du C hizkuntzako tresnarik edo nukleoko goiburuko fitxategiak behar. Liburutegiaren kodea MIT eta Apache 2.0 lizentzien arabera banatzen da.

Ezaugarri nagusiak:

  • BTF (BPF Type Format) euskarria, motaren informazioa BPF pseudokodean ematen duena, mota egiaztatzeko eta uneko nukleoak emandako motekin mapatzeko. BTF erabiltzeak eBPF kudeatzaile unibertsalak sortzea ahalbidetzen du, Linux kernelaren bertsio ezberdinekin birkonpilatu gabe erabil daitezkeenak.
  • "bpf-to-bpf" deiak, aldagai globalak eta hasierako abiarazleetarako euskarria, eBPFrako programak diseinatzeko aukera ematen baitu aya exekuzio-denbora gisa erabiltzen duten programa arrunten antzera, eBPF-ko lana kontuan hartuta funtzioak birdefinitzen dituena.
  • Nukleo mota ezberdinetarako laguntza, array arruntak, hash mapak, pilak, ilarak, pila-trazak barne, baita socket eta errendimenduaren jarraipena egiteko egiturak ere.
  • Hainbat eBTF programak sortzeko gaitasuna, trafikoa iragazteko eta kudeatzeko programak, cgroup kudeatzaileak eta hainbat socket eragiketa, XDP programak barne.
  • Tokio eta async-std modu ez-blokeatzailean eskaera asinkronoak prozesatzeko plataformetarako laguntza.
  • Muntaketa azkarra, nukleoaren muntaketa eta nukleoaren goiburuko fitxategiekin inolako konexiorik gabe.

Proiektua esperimentaltzat jotzen da oraindik - APIa oraindik ez da egonkortu eta garatzen jarraitzen du. Gainera, aurreikusitako aukera guztiak ez dira oraindik gauzatu. Urte amaierarako, garatzaileek Ayaren funtzionaltasuna libbpf-ekin parekotasunera eramatea espero dute, eta 2022ko urtarrilean lehen bertsio egonkorra sortzea. Linux nukleorako Rust kodea idazteko Aya-ren zatiak eBPF programak kargatzeko, eransteko eta elkarreragiteko erabiltzen diren erabiltzaile-espazioko osagaiekin konbinatzeko asmoa ere badago.

Gogora dezagun eBPF Linux nukleoan integratutako bytecode interprete bat dela, eta horrek aukera ematen dizu sareko eragiketen kudeatzaileak sortzeko, sistemaren funtzionamendua kontrolatzeko, sistema deiak atzemateko, sarbidea kontrolatzeko, gertaerak prozesatzeko denbora mantenduz, eragiketen maiztasuna eta denbora kalkulatzeko, egiteko. kprobes/uprobes/tracepoints erabiliz trazatzea. JIT konpilazioaren erabilerari esker, bytecode-a hegan itzultzen da makinaren argibideetara eta jatorrizko kodearen errendimenduarekin exekutatzen da. XDP-k sareko kontrolatzaile mailan BPF programak exekutatzeko tresnak eskaintzen ditu, DMA paketeen bufferera zuzenean sartzeko aukerarekin, eta horrek errendimendu handiko prozesadoreak sortzeko aukera ematen du sareko karga astunean lan egiteko.

Iturria: opennet.ru

Gehitu iruzkin berria