Aya, perpustakaan pertama yang mencipta pengawal eBPF di Rust

Linus torvalds serta banyak pembangun Kernel dan pengedaran yang berbeza telah menyatakan minat mereka terhadap Rust dan bahkan pada lebih dari satu kesempatan, isu pelaksanaan pemacu dalam bahasa pengaturcaraan ini pada Linux Kernel telah dikemukakan.

Dan mengenai ini, pelbagai karya telah dikeluarkan, di antaranya kita sudah sebutkan di sini di blog dan kita boleh menyebut, sebagai contoh, eksperimen berjaya dari kumpulan utiliti alternatif, inti inti, ditulis semula dalam Rust (Ini termasuk utiliti seperti sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln, dan ls).

Oleh itu, Linus torvalds belum sepenuhnya memberikan pendapatnya terhadap inisiatif ini dan telah menyatakan perkara negatif (anda boleh melihat perinciannya Dalam pautan berikut.)

Walaupun kritikan keras dari Linus, karya-karya tersebut mengenai pelaksanaan Karat di Kernel tidak berhenti bergerak dan baru-baru ini versi pertama perpustakaan Aya dipersembahkan, yang membolehkan anda membuat pemacu eBPF di Rust yang berjalan di dalam kernel Linux dalam mesin maya JIT khas.

Tidak seperti alat pembangunan EBPF lain, Aya tidak menggunakan libbpf dan penyusun BCC, tetapi menawarkan pelaksanaannya sendiri yang ditulis dalam Rust yang menggunakan pakej laci libc untuk mengakses panggilan sistem kernel secara langsung. Membangun Aya tidak memerlukan alat bahasa C atau tajuk kernel.

Bagi mereka yang tidak menyedari eBPF, mereka harus tahu bahawa ini adalah jurubahasa bytecode terbina dalam kernel Linux yang membolehkan anda membuat pengendali operasi rangkaian, memantau operasi sistem, memintas panggilan sistem, mengakses kawalan, memproses peristiwa dengan pemasaan, mengira frekuensi dan masa operasi, dan melacak menggunakan kprobes / uprobes / tracepoint.

Terima kasih kepada penyusunan JIT, bytecode diterjemahkan ke dalam arahan mesin dengan cepat dan berjalan dengan prestasi kod asli. XDP menyediakan kaedah untuk menjalankan program BPF di tingkat pemacu rangkaian, dengan akses langsung ke penyangga paket DMA, yang memungkinkan anda untuk membina pemacu berprestasi tinggi untuk keadaan beban rangkaian yang tinggi.

Tentang Aya

Daripada ciri-ciri utama yang dinyatakan dari Aya kita dapat menjumpainya mempunyai sokongan untuk BTF (Format jenis BPF), yang memberikan maklumat jenis dalam pseudokod BPF untuk memeriksa dan membandingkan jenis yang disediakan oleh kernel semasa. Menggunakan BTF memungkinkan untuk membuat pemacu eBPF sejagat yang dapat digunakan tanpa harus mengkompilasi ulang mereka dengan versi kernel Linux yang berbeza.

Serta sokongan untuk panggilan bpf-ke-bpf, pemboleh ubah global dan pemula, yang memungkinkan untuk merancang program untuk eBPF dengan analogi dengan program konvensional yang menggunakan aya sebagai masa pelaksanaan, membatalkan fungsi dengan mengambil kira kerja di eBPF.

Sebaliknya, ia juga mempunyai sokongan untuk jenis kernel dalaman, termasuk susunan biasa, peta hash, tumpukan, barisan, jejak tumpukan, dan struktur untuk soket dan penjejakan prestasi.

Juga mempunyai kemampuan untuk membuat pelbagai jenis program eBTF, termasuk program untuk penapisan dan pengurusan lalu lintas, kumpulan dan pelbagai pemacu soket, program XDP dan juga sokongan platform untuk pemprosesan permintaan asinkron dalam mod tokyo tanpa sekatan dan async-std.
Penyusunan pantas, tanpa terikat dengan kompilasi kernel atau tajuk kernel.

Penting untuk disebutkan bahawa projek tersebut masih dianggap eksperimen kerana API belum stabil dan terus berkembang. Juga, belum semua fungsi yang disusun telah dilaksanakan.

Menjelang akhir tahun ini, para pembangun berharap agar fungsi Aya setaraf dengan libbpf dan pada Januari 2022 membentuk versi stabil pertama. Ia juga dirancang untuk menggabungkan bahagian-bahagian Aya yang diperlukan untuk menulis kod Rust untuk kernel Linux dengan komponen ruang pengguna yang digunakan untuk memuat, melampirkan, dan berinteraksi dengan program eBPF.

Akhirnya sekiranya anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh periksa butirannya di pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.