Fa'ailoa le faletusi Aya mo le fa'atupuina o tagata eBPF i Rust

O le faʻasalalauga muamua o le faletusi Aya o loʻo tuʻuina atu, lea e mafai ai ona e fatuina tagata eBPF i le gagana Rust o loʻo tamomoe i totonu o le fatu Linux i se masini faʻapitoa faʻapitoa ma JIT. E le pei o isi mea e faʻaleleia ai le eBPF, e le faʻaogaina e Aya le libbpf ma le bcc compiler, ae o loʻo ofoina atu lana lava faʻatinoga na tusia i le Rust, lea e faʻaogaina ai le pusa libc crate e faʻaoga saʻo ai le kernel system calls. O le fausiaina o Aya e le manaʻomia se meafaigaluega ole gagana C poʻo faila ulutala fatu. O le fa'ailoga faletusi o lo'o tufatufaina i lalo ole laisene MIT ma Apache 2.0.

O mea taua:

  • Lagolago mo le BTF (BPF Type Format), lea e maua ai faʻamatalaga ituaiga ile BPF pseudocode mo le siakiina o ituaiga ma faʻafanua i ituaiga o loʻo tuʻuina atu e le fatu o loʻo iai nei. O le faʻaaogaina o le BTF e mafai ai ona fatuina tagata eBPF lautele e mafai ona faʻaogaina e aunoa ma le toe faʻapipiʻiina ma faʻasologa eseese o le fatu Linux.
  • Lagolago mo "bpf-to-bpf" valaau, fesuiaiga o le lalolagi ma amataga, lea e mafai ai ona e mamanuina polokalame mo le eBPF i se auala tutusa ma polokalame masani e faʻaogaina ai le aya e fai ma taʻaloga e toe faʻamalamalamaina ai galuega e faʻatatau i galuega i le eBPF.
  • Lagolago mo ituaiga fatu eseese, e aofia ai faʻasologa masani, faʻafanua faʻapipiʻi, faʻapipiʻi, faʻasologa, faʻasologa o faʻaputuga, faʻapea foʻi ma le faʻapipiʻi ma faʻasologa o faʻatinoga.
  • Malosiaga e fatu ai ituaiga eseese o polokalame eBTF, e aofia ai polokalame mo le faamamaina ma le puleaina o feoaiga, tagata e faʻaaogaina vaega ma faʻagaioiga socket eseese, polokalame XDP.
  • Lagolago mo fa'avae mo le fa'agaioiina o talosaga e le'i poloka i le tokio ma le async-std.
  • Faʻatasiga vave, e aunoa ma se fesoʻotaʻiga i le kernel faʻapotopotoga ma faila ulutala fatu.

O le poloketi o loʻo faʻataʻitaʻiina pea - e leʻi faʻamautuina le API ma faʻaauau pea ona atiaʻe. E le gata i lea, o avanoa uma na fuafuaina e leʻi faʻataunuʻuina. E oʻo atu i le faʻaiuga o le tausaga, ua faʻamoemoe le au atinaʻe e faʻapipiʻi le gaioiga a Aya i le tutusa ma le libbpf, ma ia Ianuari 2022 e fausia ai le faʻasalalauga muamua. O loʻo iai foʻi fuafuaga e tuʻufaʻatasia vaega o Aya e manaʻomia e tusi ai le Rust code mo le fatu Linux ma vaega faʻaoga-avanoa faʻaaogaina e utaina, faʻapipiʻi, ma fegalegaleai ma polokalame eBPF.

Seʻi o tatou manatua o le eBPF o se faʻaliliuga bytecode ua fausia i totonu o le Linux kernel, lea e mafai ai e oe ona fatuina ni tagata e faʻaogaina fesoʻotaʻiga, mataʻituina le faʻaogaina o le polokalama, faʻaogaina telefoni feaveaʻi, faʻatonuina le avanoa, faʻagasologa o mea e tutupu aʻo faʻatumauina le taimi, fuafua le taimi ma le taimi o gaioiga, faʻatino. su'ega e fa'aaoga ai kprobes/uprobes/tracepoints. Faʻafetai i le faʻaogaina o le JIT compilation, o le bytecode e faʻaliliu i luga o le lele i totonu o faʻatonuga masini ma faʻatinoina ma le faʻatinoga o le tulafono masani. E tuʻuina atu e le XDP meafaigaluega mo le faʻaogaina o polokalame BPF i le tulaga o le avetaʻavale fesoʻotaʻiga, faʻatasi ai ma le gafatia e faʻaoga saʻo ai le DMA packet buffer, lea e mafai ai ona e fatuina ni faʻasalalauga maualuga mo le galue i lalo o le mamafa o uta fesoʻotaʻiga.

puna: opennet.ru

Faaopoopo i ai se faamatalaga