Memperkenalkan perpustakaan Aya untuk membuat penangan eBPF di Rust

Rilis pertama perpustakaan Aya disajikan, yang memungkinkan Anda membuat penangan eBPF dalam bahasa Rust yang berjalan di dalam kernel Linux di mesin virtual khusus dengan JIT. Tidak seperti alat pengembangan eBPF lainnya, Aya tidak menggunakan libbpf dan kompiler bcc, melainkan menawarkan implementasinya sendiri yang ditulis dalam Rust, yang menggunakan paket libc crate untuk mengakses panggilan sistem kernel secara langsung. Membangun Aya tidak memerlukan perkakas bahasa C atau file header kernel. Kode perpustakaan didistribusikan di bawah lisensi MIT dan Apache 2.0.

Fitur utama:

  • Dukungan untuk BTF (BPF Type Format), yang menyediakan informasi tipe dalam pseudocode BPF untuk pemeriksaan tipe dan pemetaan ke tipe yang disediakan oleh kernel saat ini. Penggunaan BTF memungkinkan pembuatan penangan eBPF universal yang dapat digunakan tanpa kompilasi ulang dengan versi kernel Linux yang berbeda.
  • Dukungan untuk panggilan β€œbpf-to-bpf”, variabel global dan inisialisasi, yang memungkinkan Anda merancang program untuk eBPF dengan cara yang mirip dengan program biasa yang menggunakan aya sebagai runtime yang mendefinisikan ulang fungsi dengan mempertimbangkan pekerjaan di eBPF.
  • Dukungan untuk berbagai jenis kernel, termasuk array reguler, peta hash, tumpukan, antrian, pelacakan tumpukan, serta struktur pelacakan kinerja dan soket.
  • Kemampuan untuk membuat berbagai jenis program eBTF, termasuk program untuk memfilter dan mengatur lalu lintas, penangan cgroup dan berbagai operasi soket, program XDP.
  • Dukungan untuk platform untuk pemrosesan permintaan asinkron dalam mode non-pemblokiran tokio dan async-std.
  • Perakitan cepat, tanpa koneksi apa pun ke rakitan kernel dan file header kernel.

Proyek ini masih dianggap eksperimental - API belum stabil dan terus berkembang. Selain itu, semua peluang yang direncanakan belum terealisasi. Pada akhir tahun, pengembang berharap untuk menyamakan fungsionalitas Aya dengan libbpf, dan pada Januari 2022 untuk membuat rilis stabil pertama. Ada juga rencana untuk menggabungkan bagian Aya yang diperlukan untuk menulis kode Rust untuk kernel Linux dengan komponen ruang pengguna yang digunakan untuk memuat, melampirkan, dan berinteraksi dengan program eBPF.

Ingatlah bahwa eBPF adalah penerjemah bytecode yang dibangun ke dalam kernel Linux, yang memungkinkan Anda membuat penangan operasi jaringan, memantau operasi sistem, mencegat panggilan sistem, mengontrol akses, memproses peristiwa sambil mempertahankan waktu, menghitung frekuensi dan waktu operasi, melakukan penelusuran menggunakan kprobes/uprobes /tracepoints. Berkat penggunaan kompilasi JIT, bytecode diterjemahkan dengan cepat ke dalam instruksi mesin dan dieksekusi dengan kinerja kode asli. XDP menyediakan alat untuk menjalankan program BPF di tingkat driver jaringan, dengan kemampuan untuk mengakses buffer paket DMA secara langsung, yang memungkinkan Anda membuat prosesor berkinerja tinggi untuk bekerja di bawah beban jaringan yang berat.

Sumber: opennet.ru

Tambah komentar