Proyek NetBSD sedang mengembangkan hypervisor NVMM baru

Pengembang Proyek NetBSD diumumkan tentang pembuatan hypervisor baru dan tumpukan virtualisasi terkait, yang sudah termasuk dalam cabang eksperimental NetBSD saat ini dan akan ditawarkan dalam rilis stabil NetBSD 9. NVMM saat ini terbatas untuk mendukung arsitektur x86_64 dan menyediakan dua backend untuk mengaktifkan mekanisme virtualisasi perangkat keras: x86-SVM dengan dukungan untuk ekstensi virtualisasi CPU AMD dan x86-VMX untuk CPU Intel. Dalam bentuknya yang sekarang, dimungkinkan untuk menjalankan hingga 128 mesin virtual pada satu host, yang masing-masing dapat dialokasikan hingga 256 inti prosesor virtual (VCPU) dan RAM 128 GB.

NVMM menyertakan driver yang berjalan pada tingkat kernel sistem dan mengoordinasikan akses ke mekanisme virtualisasi perangkat keras, dan tumpukan Libnvmm yang berjalan di ruang pengguna. Interaksi antara komponen kernel dan ruang pengguna dilakukan melalui IOCTL. Salah satu fitur NVMM yang membedakannya dengan hypervisor seperti KVM adalah HAXM dan Bhyve, adalah bahwa pada level kernel hanya set pengikatan minimum yang diperlukan di sekitar mekanisme virtualisasi perangkat keras yang dilakukan, dan semua kode emulasi perangkat keras dipindahkan dari kernel ke ruang pengguna. Pendekatan ini memungkinkan Anda untuk mengurangi jumlah kode yang dieksekusi dengan hak istimewa yang lebih tinggi dan mengurangi risiko kompromi seluruh sistem jika terjadi serangan terhadap kerentanan di hypervisor. Selain itu, debugging dan pengujian fuzzing proyek menjadi lebih sederhana.

Namun Libnvmm sendiri tidak memuat fungsi emulator, melainkan hanya menyediakan API yang memungkinkan Anda mengintegrasikan dukungan NVMM ke dalam emulator yang sudah ada, misalnya QEMU. API mencakup fungsi-fungsi seperti membuat dan meluncurkan mesin virtual, mengalokasikan memori ke sistem tamu, dan mengalokasikan VCPU. Untuk meningkatkan keamanan dan mengurangi kemungkinan vektor serangan, libnvmm hanya menyediakan fungsi yang diminta secara eksplisitβ€”secara default, penangan kompleks tidak dipanggil secara otomatis dan tidak boleh digunakan sama sekali jika dapat dihindari. NVMM mencoba membuat segalanya tetap sederhana, tanpa menjadi terlalu rumit, dan memungkinkan Anda mengontrol sebanyak mungkin aspek pekerjaan Anda.

Proyek NetBSD sedang mengembangkan hypervisor NVMM baru

Bagian tingkat kernel NVMM cukup terintegrasi dengan kernel NetBSD, dan memungkinkan peningkatan kinerja dengan mengurangi jumlah peralihan konteks antara OS tamu dan lingkungan host. Di sisi ruang pengguna, libnvmm mencoba menggabungkan operasi I/O umum dan menghindari panggilan sistem yang tidak perlu. Sistem alokasi memori didasarkan pada subsistem pmap, yang memungkinkan Anda untuk mengeluarkan halaman memori tamu ke partisi swap jika terjadi kekurangan memori dalam sistem. NVMM bebas dari kunci global dan berskala dengan baik, memungkinkan Anda menggunakan inti CPU yang berbeda secara bersamaan untuk menjalankan mesin virtual tamu yang berbeda.

Solusi berbasis QEMU telah disiapkan yang menggunakan NVMM untuk mengaktifkan mekanisme virtualisasi perangkat keras. Pekerjaan sedang dilakukan untuk memasukkan patch yang telah disiapkan ke dalam struktur utama QEMU. Kombinasi QEMU+NVMM sudah ada memungkinkan berhasil menjalankan sistem tamu dengan FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 dan OS lainnya pada sistem x86_64 dengan prosesor AMD dan Intel (NVMM sendiri tidak terikat pada arsitektur tertentu, misalnya jika backend yang sesuai dibuat , itu akan dapat bekerja pada sistem ARM64). Di antara area penerapan NVMM lebih lanjut, isolasi sandbox dari aplikasi individual juga dicatat.

Proyek NetBSD sedang mengembangkan hypervisor NVMM baru

Sumber: opennet.ru

Tambah komentar