Memperkenalkan perpustakaan Aya untuk mencipta pengendali eBPF dalam Rust

Keluaran pertama perpustakaan Aya dibentangkan, yang membolehkan anda mencipta pengendali eBPF dalam bahasa Rust yang dijalankan di dalam kernel Linux dalam mesin maya khas dengan JIT. Tidak seperti alat pembangunan eBPF yang lain, Aya tidak menggunakan libbpf dan pengkompil bcc, sebaliknya menawarkan pelaksanaannya sendiri yang ditulis dalam Rust, yang menggunakan pakej peti libc untuk mengakses terus panggilan sistem kernel. Membina Aya tidak memerlukan perkakas bahasa C atau fail pengepala kernel. Kod perpustakaan diedarkan di bawah lesen MIT dan Apache 2.0.

Ciri-ciri utama:

  • Sokongan untuk BTF (Format Jenis BPF), yang menyediakan maklumat jenis dalam pseudokod BPF untuk pemeriksaan jenis dan pemetaan kepada jenis yang disediakan oleh kernel semasa. Penggunaan BTF memungkinkan untuk mencipta pengendali eBPF universal yang boleh digunakan tanpa penyusunan semula dengan versi kernel Linux yang berbeza.
  • Sokongan untuk panggilan "bpf-to-bpf", pembolehubah global dan pemula, yang membolehkan anda mereka bentuk program untuk eBPF dengan cara yang sama seperti program biasa yang menggunakan aya sebagai masa jalan yang mentakrifkan semula fungsi dengan mengambil kira kerja dalam eBPF.
  • Sokongan untuk pelbagai jenis kernel, termasuk tatasusunan biasa, peta cincang, tindanan, baris gilir, surih tindanan, serta soket dan struktur penjejakan prestasi.
  • Keupayaan untuk mencipta pelbagai jenis program eBTF, termasuk program untuk menapis dan mengurus trafik, pengendali cgroup dan pelbagai operasi soket, program XDP.
  • Sokongan untuk platform untuk pemprosesan permintaan tak segerak dalam mod tidak menyekat tokio dan async-std.
  • Pemasangan pantas, tanpa sebarang sambungan ke pemasangan kernel dan fail pengepala kernel.

Projek ini masih dianggap percubaan - API belum lagi stabil dan terus berkembang. Selain itu, semua peluang yang dirancang masih belum direalisasikan. Menjelang akhir tahun, pembangun menjangkakan untuk membawa kefungsian Aya kepada setara dengan libbpf, dan pada Januari 2022 untuk mencipta keluaran stabil pertama. Terdapat juga rancangan untuk menggabungkan bahagian Aya yang diperlukan untuk menulis kod Rust untuk kernel Linux dengan komponen ruang pengguna yang digunakan untuk memuatkan, melampirkan dan berinteraksi dengan program eBPF.

Mari kita ingat bahawa eBPF ialah penterjemah bytecode yang dibina ke dalam kernel Linux, yang membolehkan anda membuat pengendali operasi rangkaian, memantau operasi sistem, memintas panggilan sistem, mengawal akses, memproses peristiwa sambil mengekalkan masa, mengira kekerapan dan masa operasi, melaksanakan mengesan menggunakan kprobes/uprobes/tracepoints. Terima kasih kepada penggunaan kompilasi JIT, bytecode diterjemahkan dengan cepat ke dalam arahan mesin dan dilaksanakan dengan prestasi kod asli. XDP menyediakan alatan untuk menjalankan program BPF di peringkat pemacu rangkaian, dengan keupayaan untuk mengakses secara terus penimbal paket DMA, yang membolehkan anda mencipta pemproses berprestasi tinggi untuk bekerja di bawah beban rangkaian yang berat.

Sumber: opennet.ru

Tambah komen