Adayambitsa laibulale ya Aya yopanga ma eBPF ku Rust

Kutulutsidwa koyamba kwa laibulale ya Aya kumaperekedwa, komwe kumakupatsani mwayi wopanga ma eBPF m'chinenero cha Dzimbiri chomwe chimayenda mkati mwa Linux kernel mumakina apadera omwe ali ndi JIT. Mosiyana ndi zida zina zachitukuko za eBPF, Aya sagwiritsa ntchito libbpf ndi bcc compiler, koma m'malo mwake amapereka kukhazikitsidwa kwake komwe kumalembedwa ku Rust, komwe kumagwiritsa ntchito phukusi la libc crate kuti mupeze mafoni amtundu wa kernel. Kumanga Aya sikufuna zida za C chilankhulo kapena mafayilo amutu wa kernel. Khodi ya library imagawidwa pansi pa ziphaso za MIT ndi Apache 2.0.

Zofunikira zazikulu:

  • Thandizo la BTF (Mtundu Wamtundu wa BPF), womwe umapereka chidziwitso chamtundu wa BPF pseudocode poyang'ana mtundu ndi kupanga mapu kumitundu yoperekedwa ndi kernel yamakono. Kugwiritsa ntchito BTF kumapangitsa kuti pakhale ma eBPF onse ogwira ntchito omwe angagwiritsidwe ntchito popanda kubwezanso ndi mitundu yosiyanasiyana ya Linux kernel.
  • Thandizo la mafoni a "bpf-to-bpf", zosinthika zapadziko lonse lapansi ndi zoyambitsa, zomwe zimakulolani kupanga mapulogalamu a eBPF mofanana ndi mapulogalamu omwe amagwiritsa ntchito aya monga nthawi yothamanga yomwe imafotokozeranso ntchito poganizira ntchito mu eBPF.
  • Kuthandizira kwamitundu yosiyanasiyana ya kernel, kuphatikiza masanjidwe anthawi zonse, mamapu a hashes, ma stack, mizere, ma stack trace, komanso socket and performance tracking.
  • Kutha kupanga mitundu yosiyanasiyana yamapulogalamu a eBTF, kuphatikiza mapulogalamu osefera ndi kuyang'anira kuchuluka kwa magalimoto, othandizira magulu ndi machitidwe osiyanasiyana a socket, mapulogalamu a XDP.
  • Kuthandizira pamapulatifomu opangira ma asynchronous pempho mumayendedwe osatsekereza tokio ndi async-std.
  • Kusonkhana mwachangu, popanda kulumikizana ndi gulu la kernel ndi mafayilo amutu wa kernel.

Ntchitoyi ikuwoneka ngati yoyesera - API sinakhazikitsidwebe ndipo ikupitirizabe kukula. Komanso, mipata yonse yokonzedwayo sinakwaniritsidwebe. Pakutha kwa chaka, opanga akuyembekeza kubweretsa magwiridwe antchito a Aya kuti agwirizane ndi libbpf, ndipo mu Januware 2022 kuti apange kumasulidwa kokhazikika. Palinso mapulani ophatikizira magawo a Aya omwe amafunikira kuti alembe Rust code ya Linux kernel ndi magawo omwe amagwiritsidwa ntchito kutsitsa, kulumikiza, ndikulumikizana ndi mapulogalamu a eBPF.

Tiyeni tikumbukire kuti eBPF ndi womasulira wa bytecode womangidwa mu Linux kernel, yomwe imakupatsani mwayi wopanga ma network ogwiritsira ntchito, kuyang'anira magwiridwe antchito, kuyimba mafoni, kuwongolera, kuwongolera zochitika ndikusunga nthawi, kuwerengera pafupipafupi ndi nthawi ya ntchito, kuchita. kutsatira pogwiritsa ntchito kprobes/uprobes /tracepoints. Chifukwa chogwiritsa ntchito kuphatikiza kwa JIT, bytecode imamasuliridwa powuluka kukhala malangizo pamakina ndikuchitidwa ndi ma code awo. XDP imapereka zida zoyendetsera mapulogalamu a BPF pamlingo woyendetsa ma netiweki, ndikutha kulumikiza mwachindunji pakiti ya DMA, yomwe imakupatsani mwayi wopanga mapurosesa apamwamba kwambiri kuti azigwira ntchito movutikira kwambiri.

Source: opennet.ru

Kuwonjezera ndemanga