Ilianzisha maktaba ya Aya ya kuunda vidhibiti vya eBPF huko Rust

Toleo la kwanza la maktaba ya Aya limewasilishwa, ambalo hukuruhusu kuunda vidhibiti vya eBPF katika lugha ya Rust inayoendeshwa ndani ya kinu cha Linux kwenye mashine maalum ya mtandaoni iliyo na JIT. Tofauti na zana zingine za ukuzaji za eBPF, Aya haitumii libbpf na kikusanya bcc, lakini badala yake inatoa utekelezaji wake ulioandikwa kwa Rust, ambao hutumia kifurushi cha libc crate kufikia simu za mfumo wa kernel moja kwa moja. Kuunda Aya haihitaji zana za lugha ya C au faili za kichwa cha kernel. Nambari ya maktaba inasambazwa chini ya leseni za MIT na Apache 2.0.

Vipengele muhimu:

  • Usaidizi wa BTF (Muundo wa Aina ya BPF), ambayo hutoa maelezo ya aina katika pseudocode ya BPF kwa ukaguzi wa aina na ramani kwa aina zinazotolewa na kernel ya sasa. Matumizi ya BTF huwezesha kuunda vishikilizi vya eBPF zima ambavyo vinaweza kutumika bila kukusanywa tena na matoleo tofauti ya kinu cha Linux.
  • Usaidizi wa simu za "bpf-to-bpf", vigezo vya kimataifa na vianzilishi, vinavyokuruhusu kubuni programu za eBPF kwa njia sawa na programu za kawaida zinazotumia aya kama muda wa utekelezaji ambao hufafanua upya kazi kwa kuzingatia kazi katika eBPF.
  • Usaidizi wa aina mbalimbali za kernel, ikiwa ni pamoja na safu za kawaida, ramani za heshi, rafu, foleni, ufuatiliaji wa rafu, pamoja na soketi na miundo ya kufuatilia utendaji.
  • Uwezo wa kuunda aina mbalimbali za programu za eBTF, ikiwa ni pamoja na programu za kuchuja na kusimamia trafiki, washughulikiaji wa kikundi na shughuli mbalimbali za tundu, programu za XDP.
  • Usaidizi wa majukwaa ya usindikaji wa ombi lisilosawazisha katika hali isiyozuia ya tokio na async-std.
  • Mkusanyiko wa haraka, bila muunganisho wowote kwa mkusanyiko wa kernel na faili za vichwa vya kernel.

Mradi bado unachukuliwa kuwa wa majaribio - API bado haijaimarishwa na inaendelea kuendelezwa. Pia, fursa zote zilizopangwa bado hazijatekelezwa. Kufikia mwisho wa mwaka, wasanidi programu wanatarajia kuleta utendakazi wa Aya kwa usawa na libbpf, na mnamo Januari 2022 kuunda toleo la kwanza thabiti. Pia kuna mipango ya kuchanganya sehemu za Aya zinazohitajika ili kuandika msimbo wa kutu kwa kinu cha Linux na vijenzi vya nafasi ya mtumiaji vinavyotumika kupakia, kuambatisha na kuingiliana na programu za eBPF.

Hebu tukumbuke kwamba eBPF ni mkalimani wa bytecode iliyojengwa kwenye kernel ya Linux, ambayo inakuwezesha kuunda washughulikiaji wa uendeshaji wa mtandao, kufuatilia uendeshaji wa mfumo, kukata simu za mfumo, kudhibiti upatikanaji, matukio ya mchakato wakati wa kudumisha muda, kuhesabu mzunguko na wakati wa shughuli, kufanya. kufuatilia kwa kutumia kprobes/uprobes /tracepoints. Shukrani kwa matumizi ya mkusanyiko wa JIT, bytecode inatafsiriwa kwa kuruka kwenye maagizo ya mashine na kutekelezwa kwa utendakazi wa msimbo asilia. XDP hutoa zana za kuendesha programu za BPF katika kiwango cha dereva wa mtandao, na uwezo wa kufikia moja kwa moja bafa ya pakiti ya DMA, ambayo inakuwezesha kuunda wasindikaji wa utendaji wa juu wa kufanya kazi chini ya mzigo mkubwa wa mtandao.

Chanzo: opennet.ru

Kuongeza maoni