Arsitektur Set Instruksi BPF Menerima Status Standar yang Diusulkan

Internet Engineering Task Force (IETF), yang bertanggung jawab atas pengembangan protokol dan arsitektur Internet, telah menyelesaikan RFC untuk arsitektur set instruksi BPF dan menerbitkan spesifikasi terkait di bawah pengidentifikasi RFC 9669. RFC telah diberi status sebuah "Standar yang Diusulkan", setelah itu pekerjaan akan dimulai untuk memberikan RFC status rancangan standar, yang sebenarnya berarti stabilisasi lengkap dan mempertimbangkan semua komentar yang dibuat.

Spesifikasi yang dipublikasikan menjelaskan serangkaian instruksi bytecode BPF dan mesin virtual tingkat rendah yang digunakan dalam subsistem kernel Linux eBPF untuk mengeksekusi penangan eksternal yang mampu mengubah perilaku sistem secara langsung tanpa memerlukan modifikasi kode kernel. Pada dasarnya, eBPF mengimplementasikan prosesor virtual sederhana dengan set register sendiri, instruksi mirip RISC, tumpukan, dan penghitung program. Program BPF biasanya ditulis dalam subset bahasa C dan kemudian dikompilasi menjadi bytecode yang cocok untuk dieksekusi di mesin virtualMesin virtual dapat mengeksekusi program BPF menggunakan interpretasi atau kompilasi just-in-time (JIT) untuk menerjemahkan bytecode menjadi instruksi mesin secara langsung.

Diharapkan bahwa standardisasi arsitektur set instruksi BPF akan mendorong terciptanya implementasi pihak ketiga yang kompatibel dengan mesin virtual eBPF dan mampu menjalankan program BPF yang ditulis untuk kernel Linux. Upaya sedang dilakukan untuk menciptakan implementasi tersebut. mesin virtual Beberapa produsen adaptor jaringan sedang mengembangkan alat akselerasi perangkat keras untuk penanganan paket jaringan BPF. Idenya adalah untuk memperluas kemampuan subsistem XDP (eXpress Data Path) agar dapat menjalankan program BPF tidak hanya pada tingkat driver jaringan, tetapi juga pada adaptor jaringan.

Misalnya, Netronome telah menambahkan dukungan BPF ke adaptor Netronome Agilio CX SmartNIC dan menyediakan kumpulan contoh program BPF universal yang dapat dijalankan tidak hanya menggunakan CPU di kernel dengan driver apa pun yang kompatibel dengan XDP, tetapi juga pada kartu jaringan sisi, yang memungkinkan Anda membuat keputusan tentang menghapus, memodifikasi, atau mengalihkan paket tanpa membuang sumber daya CPU. Secara terpisah, teknologi XRP (eXpress Resubmission Path) sedang dikembangkan, yang memungkinkan penggunaan BPF untuk memindahkan beberapa operasi dengan drive NVMe, seperti bekerja dengan indeks dan agregasi data, ke tingkat driver NVMe atau ke perangkat eksternal.

Perlu dicatat bahwa penerapan kemampuan tersebut secara lebih luas sejauh ini terhambat oleh risiko yang terkait dengan masalah kompatibilitas dan kebutuhan untuk memantau status eBPF di kernel. Karena risiko ini, beberapa produsen menunda penerapan akselerasi perangkat keras BPF ke dalam perangkat mereka hingga standar ditetapkan.

Sumber: opennet.ru

Tambah komentar