Ewebata ọba akwụkwọ Aya maka imepụta ndị na-ahụ maka eBPF na Rust

Ewepụtara ntọhapụ mbụ nke ọba akwụkwọ Aya, nke na-enye gị ohere ịmepụta ndị na-ahụ maka eBPF n'asụsụ Rust na-agba n'ime Linux kernel na igwe mebere pụrụ iche nwere JIT. N'adịghị ka ngwaọrụ mmepe eBPF ndị ọzọ, Aya anaghị eji libbpf na bcc compiler, kama ọ na-enye mmejuputa ya nke edere na Rust, nke na-eji ngwugwu libc crate iji nweta oku sistemụ kernel ozugbo. Ụlọ Aya achọghị iji asụsụ C ma ọ bụ faịlụ nkụnye kernel. A na-ekesa koodu ọba akwụkwọ n'okpuru ikikere MIT na Apache 2.0.

Njirimara igodo:

  • Nkwado maka BTF ( Ụdị Ụdị BPF), nke na-enye ozi ụdị na BPF pseudocode maka ụdị nlele na nkewa na ụdị nke kernel dị ugbu a nyere. Ojiji nke BTF na-eme ka o kwe omume ịmepụta ndị na-ahụ maka eBPF zuru ụwa ọnụ nke enwere ike iji na-enweghị nchịkọta na ụdị Linux kernel dị iche iche.
  • Nkwado maka oku "bpf-to-bpf", mgbanwe zuru ụwa ọnụ na mmalite, nke na-enye gị ohere ịmepụta mmemme maka eBPF n'otu ụzọ ahụ na mmemme mgbe niile na-eji aya dị ka oge na-agba ọsọ na-akọwapụta ọrụ na-eburu n'uche ọrụ na eBPF.
  • Nkwado maka ụdị kernel dị iche iche, gụnyere nhazi oge niile, map hashes, stacks, queues, trace trace, yana sọket na ihe nleba anya arụmọrụ.
  • Ikike ịmepụta ụdị mmemme eBTF dị iche iche, gụnyere mmemme maka nzacha na ijikwa okporo ụzọ, ndị na-ahụ maka cgroup na ọrụ oghere dị iche iche, mmemme XDP.
  • Nkwado maka nyiwe maka nhazi arịrịọ asynchronous na tokio anaghị egbochi ya na async-std.
  • Mgbakọ ngwa ngwa, na-enweghị njikọ ọ bụla na mgbakọ kernel na faịlụ nkụnye kernel.

A ka na-ewere ọrụ a dị ka nnwale - API emebebeghị ka ọ kwụsie ike ma na-aga n'ihu na-etolite. Ọzọkwa, ohere niile akwadoro emezubeghị. Ka ọ na-erule ngwụsị nke afọ, ndị mmepe na-atụ anya iweta ọrụ nke Aya na nha anya na libbpf, yana na Jenụwarị 2022 imepụta ntọhapụ kwụsiri ike mbụ. Enwekwara atụmatụ ijikọta akụkụ nke Aya chọrọ iji dee koodu Rust maka Linux kernel yana ihe ndị ọrụ-ohere eji ebu, itinye, na imekọrịta na mmemme eBPF.

Ka anyị cheta na eBPF bụ onye ntụgharị okwu bytecode arụnyere n'ime Linux kernel, nke na-enye gị ohere ịmepụta ndị na-ahụ maka ọrụ netwọkụ, nyochaa ọrụ sistemụ, oku usoro oku, njikwa njikwa, usoro ihe omume mgbe ị na-ejigide oge, gbakọọ ugboro na oge ọrụ, rụọ ọrụ. ịchụ nta site na iji kprobes/uprobes /tracepoints. N'ihi iji mkpokọta JIT, a na-asụgharị bytecode ka ọ na-efegharị n'ime ntuziaka igwe wee jiri arụ ọrụ nke koodu obodo gbuo ya. XDP na-enye ngwaọrụ maka ịgba ọsọ mmemme BPF na ọkwa ọkwọ ụgbọ ala netwọkụ, na-enwe ike ịnweta ngwa ngwa DMA ngwugwu, nke na-enye gị ohere ịmepụta ndị nrụpụta ọrụ dị elu maka ịrụ ọrụ n'okpuru ibu netwọkụ dị arọ.

isi: opennet.ru

Tinye a comment