Kwethulwe ilabhulali ye-Aya yokudala izibambi ze-eBPF eRust

Ukukhishwa kokuqala komtapo wezincwadi we-Aya kwethulwa, okukuvumela ukuthi udale izibambi ze-eBPF ngolimi lwe-Rust olusebenza ngaphakathi kwe-Linux kernel emshinini okhethekile obonakalayo one-JIT. Ngokungafani namanye amathuluzi okuthuthukisa e-eBPF, u-Aya akasebenzisi i-libbpf kanye nesihlanganisi se-bcc, kodwa esikhundleni salokho inikeza ukuqaliswa kwayo okubhalwe ku-Rust, esebenzisa iphakheji ye-libc crate ukufinyelela ngokuqondile izingcingo zesistimu ye-kernel. Ukwakha i-Aya akudingi ithuluzi lolimi elingu-C noma amafayela ekhanda le-kernel. Ikhodi yelabhulali isatshalaliswa ngaphansi kwe-MIT kanye namalayisensi e-Apache 2.0.

Izici ezibalulekile:

  • Usekelo lwe-BTF (Ifomethi Yohlobo lwe-BPF), ehlinzeka ngolwazi lohlobo ku-BPF pseudocode ukuze kuhlolwe uhlobo nokumepha ezinhlotsheni ezinikezwe i-kernel yamanje. Ukusetshenziswa kwe-BTF kwenza kube nokwenzeka ukudala izibambi ze-eBPF zomhlaba wonke ezingasetshenziswa ngaphandle kokuhlanganiswa nezinguqulo ezihlukile ze-Linux kernel.
  • Ukusekelwa kwezingcingo β€œze-bpf-to-bpf”, okuguquguqukayo komhlaba kanye neziqalisi, ezikuvumela ukuthi udizayine izinhlelo ze-eBPF ngendlela efanayo nezinhlelo ezijwayelekile ezisebenzisa i-aya njengesikhathi sokusebenza esichaza kabusha imisebenzi ngokucabangela umsebenzi ku-eBPF.
  • Ukusekelwa kwezinhlobo ezihlukahlukene ze-kernel, okuhlanganisa ama-array avamile, amamephu we-hashes, izitaki, imigqa, ukulandelelwa kwezitaki, kanye nezinhlaka zesokhethi nezokulandela ukusebenza.
  • Ikhono lokudala izinhlobo ezahlukene zezinhlelo ze-eBTF, okuhlanganisa izinhlelo zokuhlunga nokuphatha ithrafikhi, izibambi zeqembu kanye nemisebenzi ehlukahlukene yamasokhethi, izinhlelo ze-XDP.
  • Ukusekelwa kwezinkundla zokucutshungulwa kwesicelo okungavumelaniyo kumodi engavimbeli i-tokio ne-async-std.
  • Ukuhlanganiswa okusheshayo, ngaphandle kokuxhumeka kumhlangano we-kernel namafayela ekhanda le-kernel.

Iphrojekthi isathathwa njengokuhlola - i-API ayikaqiniswa futhi iyaqhubeka nokuthuthuka. Futhi, wonke amathuba ahleliwe abengakafezeki. Ekupheleni konyaka, onjiniyela balindele ukuletha ukusebenza kwe-Aya ekulinganeni ne-libbpf, futhi ngoJanuwari 2022 ukudala ukukhishwa kokuqala okuzinzile. Kukhona nezinhlelo zokuhlanganisa izingxenye ze-Aya ezidingekayo ukuze kubhalwe ikhodi ye-Rust ye-Linux kernel nezingxenye zesikhala somsebenzisi ezisetshenziselwa ukulayisha, ukunamathisela, nokuxhumana nezinhlelo ze-eBPF.

Masikhumbule ukuthi i-eBPF ingumhumushi we-bytecode eyakhelwe ku-Linux kernel, evumela ukuthi udale izibambi zokusebenza kwenethiwekhi, uqaphe ukusebenza kwesistimu, ubambe izingcingo zesistimu, ulawule ukufinyelela, ucubungule imicimbi ngenkathi ugcina isikhathi, ubale imvamisa nesikhathi sokusebenza, wenze ukulandelela usebenzisa i-kprobes/uprobes /tracepoints. Ngenxa yokusetshenziswa kokuhlanganiswa kwe-JIT, i-bytecode ihunyushwa ngokuphazima kweso ukuya emiyalweni yomshini futhi isetshenziswe ngokusebenza kwekhodi yomdabu. I-XDP ihlinzeka ngamathuluzi okusebenzisa izinhlelo ze-BPF ezingeni lomshayeli wenethiwekhi, enekhono lokufinyelela ngokuqondile kubhafa yephakethe le-DMA, elikuvumela ukuthi udale amaphrosesa asebenza kahle kakhulu ukuze asebenze ngaphansi komthwalo osindayo wenethiwekhi.

Source: opennet.ru

Engeza amazwana