Ngawanohkeun perpustakaan Aya pikeun nyieun pawang eBPF di Rust

Pelepasan munggaran perpustakaan Aya dibere, nu ngidinan Anjeun pikeun nyieun pawang eBPF dina basa Rust nu ngajalankeun jero kernel Linux Ubuntu dina mesin virtual husus kalawan JIT. Beda sareng alat pangembangan eBPF anu sanés, Aya henteu nganggo libbpf sareng kompiler bcc, tapi nawiskeun palaksanaan sorangan anu ditulis dina Rust, anu nganggo pakét libc crate pikeun ngaksés telepon sistem kernel langsung. Ngawangun Aya henteu meryogikeun alat basa C atanapi file lulugu kernel. Kode perpustakaan disebarkeun dina lisensi MIT jeung Apache 2.0.

fitur konci:

  • Rojongan pikeun BTF (BPF Type Format), anu nyayogikeun inpormasi jinis dina pseudocode BPF pikeun mariksa jinis sareng pemetaan kana jinis anu disayogikeun ku kernel ayeuna. Pamakéan BTF ngamungkinkeun pikeun nyiptakeun pawang eBPF universal anu tiasa dianggo tanpa kompilasi deui sareng versi anu béda tina kernel Linux.
  • Rojongan pikeun "bpf-to-bpf" panggero, variabel global sarta initializers, nu ngidinan Anjeun pikeun ngarancang program pikeun eBPF dina cara nu sarupa jeung program biasa nu make aya salaku runtime nu redefines fungsi nyokot kana akun gawé di eBPF.
  • Rojongan pikeun rupa-rupa jinis kernel, kalebet susunan biasa, peta hashes, tumpukan, antrian, jejak tumpukan, ogé stop kontak sareng struktur tracking kinerja.
  • Kamampuhan pikeun nyieun rupa-rupa program eBTF, kaasup program pikeun nyaring jeung ngatur lalulintas, pawang cgroup sarta sagala rupa operasi stop kontak, program XDP.
  • Rojongan pikeun platform pikeun pamrosésan pamundut asinkron dina mode non-blocking tokio sareng async-std.
  • Majelis gancang, tanpa aya sambungan kana rakitan kernel sareng file lulugu kernel.

Proyék masih dianggap ékspérimén - API henteu acan stabilisasi sareng terus berkembang. Ogé, sagala kasempetan rencanana teu acan kawujud. Nepi ka tungtun taun, pamekar ngaharepkeun pikeun mawa fungsionalitas Aya kana parity kalawan libbpf, sarta dina Januari 2022 nyieun release stabil munggaran. Aya ogé rencana pikeun ngagabungkeun bagian tina Aya diperlukeun pikeun nulis kode Rust pikeun kernel Linux Ubuntu jeung komponén pamaké-spasi dipaké pikeun muka, ngagantelkeun, sarta berinteraksi sareng program eBPF.

Hayu urang émut yén eBPF mangrupikeun juru bytecode anu diwangun dina kernel Linux, anu ngamungkinkeun anjeun nyiptakeun pawang operasi jaringan, ngawas operasi sistem, telepon sistem intercept, aksés kontrol, prosés prosés bari ngajaga waktos, ngitung frékuénsi sareng waktos operasi, ngalaksanakeun. tracing ngagunakeun kprobes / uprobes / tracepoints. Hatur nuhun kana pamakéan kompilasi JIT, bytecode ditarjamahkeun dina laleur kana parentah mesin sarta dieksekusi kalawan kinerja kode asli. XDP nyadiakeun alat pikeun ngajalankeun program BPF di tingkat supir jaringan, kalawan kamampuhan pikeun langsung ngakses panyangga pakét DMA, nu ngidinan Anjeun pikeun nyieun prosesor-kinerja tinggi pikeun digawé dina beban jaringan beurat.

sumber: opennet.ru

Tambahkeun komentar