Laeborari ea Aya ea ho theha li-handers tsa eBPF ho Rust e hlahisitsoe

Phatlalatso ea pele ea laeborari ea Aya e hlahisoa, e u lumellang hore u thehe li-handers tsa eBPF ka puo ea Rust e tsamaeang ka har'a kernel ea Linux mochining o ikhethileng o nang le JIT. Ho fapana le lisebelisoa tse ling tsa ntlafatso ea eBPF, Aya ha e sebelise libbpf le bcc compiler, empa e fana ka ts'ebetsong ea eona e ngotsoeng ho Rust, e sebelisang sephutheloana sa libc crate ho fihlella mehala ea sistimi ea kernel ka kotloloho. Ho aha Aya ha ho hloke lisebelisoa tsa puo ea C kapa lifaele tsa hlooho ea kernel. Khoutu ea laeborari e ajoa tlasa laesense ea MIT le Apache 2.0.

Lintlha tsa bohlokoa:

  • Tšehetso bakeng sa BTF (Mofuta oa Mofuta oa BPF), e fanang ka boitsebiso ba mofuta ho BPF pseudocode bakeng sa ho hlahloba mofuta le ho etsa 'mapa ho mefuta e fanoeng ke kernel ea hona joale. Tšebeliso ea BTF e etsa hore ho khonehe ho theha li-handler tsa eBPF tse ka sebelisoang ntle le ho kopanngoa le mefuta e fapaneng ea Linux kernel.
  • Tšehetso bakeng sa mehala ea "bpf-to-bpf", mefuta-futa ea lefats'e le li-initiatives, e leng se u lumellang hore u rale mananeo a eBPF ka mokhoa o ts'oanang le mananeo a tloaelehileng a sebelisang aya e le nako ea ho sebetsa e hlalosang mesebetsi e nahanelang mosebetsi oa eBPF.
  • Ts'ehetso bakeng sa mefuta e fapaneng ea kernel, ho kenyeletsoa li-arrays tse tloaelehileng, limmapa tsa li-hashes, mekotla, mela, mesaletsa ea li-stack, hammoho le li-socket le libopeho tsa ho latela ts'ebetso.
  • Bokhoni ba ho theha mefuta e fapaneng ea mananeo a eBTF, ho kenyelletsa le mananeo a ho sefa le ho laola sephethephethe, li-cgroup handlers le lits'ebetso tse fapaneng tsa socket, mananeo a XDP.
  • Ts'ehetso bakeng sa liforomo bakeng sa ts'ebetso ea kopo e sa tsitsang ka mokhoa o sa thibeleng tokio le async-std.
  • Kopano e potlakileng, ntle le khokahano ea kernel le lifaele tsa hlooho ea kernel.

Morero o ntse o nkuoa e le oa liteko - API ha e so tsitsa mme e ntse e tsoela pele. Hape, menyetla eohle e reriloeng ha e e-so fihleloe. Qetellong ea selemo, bahlahisi ba lebelletse ho tlisa ts'ebetso ea Aya ho lekana le libbpf, mme ka Pherekhong 2022 ho theha tokollo ea pele e tsitsitseng. Ho boetse ho na le merero ea ho kopanya likarolo tsa Aya tse hlokahalang ho ngola Rust code bakeng sa Linux kernel le likarolo tsa sebaka sa mosebelisi tse sebelisetsoang ho kenya, ho hokela le ho sebelisana le mananeo a eBPF.

A re hopoleng hore eBPF ke mofetoleli oa bytecode e hahiloeng ka har'a kernel ea Linux, e leng se u lumellang hore u thehe bahlokomeli ba ts'ebetso ea marang-rang, ho shebella ts'ebetso ea tsamaiso, ho thibela lithelefono tsa tsamaiso, ho laola phihlello, liketsahalo tsa ts'ebetso ha u ntse u boloka nako, ho bala khafetsa le nako ea ts'ebetso, ho etsa joalo. ho latela ka ho sebelisa kprobes/uprobes /tracepoints. Ka lebaka la ts'ebeliso ea JIT compilation, bytecode e fetoleloa hang-hang ka litaelo tsa mochini mme e etsoa ka ts'ebetso ea khoutu ea lehae. XDP e fana ka lisebelisoa tsa ho tsamaisa mananeo a BPF boemong ba mokhanni oa marang-rang, ka bokhoni ba ho fihlella ka ho toba pakete ea DMA buffer, e leng se u lumellang hore u thehe li-processor tse sebetsang hantle bakeng sa ho sebetsa tlas'a mojaro o boima oa marang-rang.

Source: opennet.ru

Eketsa ka tlhaloso