I whakauruhia he whare pukapuka Aya mo te hanga i nga kaikawe eBPF i Rust

Ko te tukunga tuatahi o te whare pukapuka Aya e whakaatuhia ana, ka taea e koe te hanga i nga kaikawe eBPF ki te reo Rust e rere ana i roto i te kernel Linux i roto i te miihini mariko motuhake me te JIT. Kaore i rite ki etahi atu taputapu whanaketanga eBPF, karekau a Aya e whakamahi i te libbpf me te kaitoi bcc, engari ka tukuna tana ake whakatinanatanga i tuhia ki Rust, e whakamahi ana i te kete libc crate ki te uru tika ki nga waea punaha kernel. Ko te hanga Aya kaore e hiahiatia he taputapu reo C me nga konae pane pane kernel. Ka tohatohahia te waehere whare pukapuka i raro i nga raihana MIT me Apache 2.0.

Āhuatanga matua:

  • Tautoko mo te BTF (Hōputu Momo BPF), e whakarato ana i nga momo korero i roto i te pseudocode BPF mo te tirotiro momo me te mapi ki nga momo e whakaratohia ana e te kernel o naianei. Ma te whakamahi i te BTF ka taea te hanga i nga kaikawe eBPF ao ka taea te whakamahi me te kore e whakahiato me nga momo putanga rereke o te kernel Linux.
  • Tautoko mo nga piiraa "bpf-to-bpf", nga taurangi o te ao me nga kaiwhakaara, ka taea e koe te hoahoa i nga kaupapa mo te eBPF kia rite ki nga kaupapa o ia wa e whakamahi ana i te aya hei waahi whakahaere e tautuhi ana i nga mahi me te whakaaro ki nga mahi i roto i te eBPF.
  • Tautoko mo nga momo kakano, tae atu ki nga raupapa auau, nga mapi hashes, nga taapu, nga rarangi, nga tohu taapu, tae atu ki te turanga me nga hanganga aroturuki mahi.
  • Te kaha ki te hanga momo momo kaupapa eBTF, tae atu ki nga kaupapa mo te tātari me te whakahaere i nga waka, nga kaikawe cgroup me nga momo mahi turanga, nga kaupapa XDP.
  • Tautoko mo nga papaaho mo te tukatuka tono tukutahi i roto i te aratau aukati-kore tokio me te async-std.
  • Te huihuinga tere, kaore he hononga ki te huihuinga kernel me nga konae pane pane.

Kei te whakaaro tonu te kaupapa he whakamatautau - kaore ano te API kia whakapumau, ka whanake tonu. Waihoki, kaore ano kia tutuki nga huarahi katoa i whakamaheretia. Hei te mutunga o te tau, ka tumanako nga kaihanga ki te kawe i nga mahi a Aya ki te rite ki te libbpf, a i te Hanuere 2022 ki te hanga i te tuku tuatahi. He mahere ano ki te whakakotahi i nga waahanga o Aya e hiahiatia ana hei tuhi i te Waehere Rust mo te kernel Linux me nga waahanga mokowā-kaiwhakamahi e whakamahia ana ki te uta, ki te taapiri, ki te taunekeneke me nga kaupapa eBPF.

Kia maumahara tatou ko te eBPF he kaiwhakamaori bytecode i hangaia ki roto i te kernel Linux, e taea ai e koe te hanga i nga kaihautu mahi whatunga, te aro turuki i nga mahi a te punaha, te aukati i nga waea punaha, te mana whakahaere, te whakahaere i nga huihuinga i te wa e pupuri ana i te waa, te tatau i te auau me te wa o nga mahi, mahi. te whai i te whakamahi kprobes/uprobes/tracepoints. He mihi ki te whakamahinga o te whakahiato JIT, ka whakamaoritia te bytecode i runga i te rere ki nga tohutohu miihini ka mahia me te mahi o te waehere taketake. Ko te XDP e whakarato ana i nga taputapu mo te whakahaere i nga kaupapa BPF i te taumata taraiwa whatunga, me te kaha ki te uru tika ki te putea DMA packet buffer, e taea ai e koe te hanga i nga tukatuka mahi nui mo te mahi i raro i te kawenga whatunga taimaha.

Source: opennet.ru

Tāpiri i te kōrero