Projekt NetBSD opracowuje nowy hiperwizor NVMM

Twórcy projektu NetBSD ogłosił o stworzeniu nowego hypervisora ​​i powiązanego stosu wirtualizacji, które są już zawarte w eksperymentalnej gałęzi NetBSD-bieżącej i będą oferowane w stabilnej wersji NetBSD 9. NVMM jest obecnie ograniczony do obsługi architektury x86_64 i zapewnia dwa backendy dla umożliwienie sprzętowych mechanizmów wirtualizacji: x86-SVM z obsługą rozszerzeń wirtualizacji procesorów AMD i x86-VMX dla procesorów Intel. W obecnej postaci na jednym hoście można uruchomić do 128 maszyn wirtualnych, z których każdej można przydzielić aż 256 rdzeni procesorów wirtualnych (VCPU) i 128 GB pamięci RAM.

NVMM zawiera sterownik działający na poziomie jądra systemu i koordynujący dostęp do mechanizmów wirtualizacji sprzętu, a także stos Libnvmm działający w przestrzeni użytkownika. Interakcja między komponentami jądra a przestrzenią użytkownika odbywa się poprzez IOCTL. Cechą NVMM odróżniającą go od hypervisorów takich jak KVM jest HAXM i Bhyve polega na tym, że na poziomie jądra wykonywany jest tylko minimalny wymagany zestaw powiązań wokół mechanizmów wirtualizacji sprzętu, a cały kod emulacji sprzętu jest przenoszony z jądra do przestrzeni użytkownika. Takie podejście pozwala zmniejszyć ilość kodu wykonywanego z podwyższonymi uprawnieniami i zmniejszyć ryzyko naruszenia bezpieczeństwa całego systemu w przypadku ataków wykorzystujących luki w hypervisorze. Ponadto debugowanie i testowanie fuzzingu projektu jest zauważalnie uproszczone.

Jednak sam Libnvmm nie zawiera funkcji emulatora, a jedynie zapewnia API, które pozwala zintegrować obsługę NVMM z istniejącymi emulatorami, na przykład QEMU. Interfejs API obejmuje takie funkcje, jak tworzenie i uruchamianie maszyny wirtualnej, przydzielanie pamięci systemowi gościa i przydzielanie jednostek VCPU. Aby poprawić bezpieczeństwo i ograniczyć możliwe wektory ataków, libnvmm udostępnia tylko funkcje, które są jawnie wymagane — domyślnie złożone procedury obsługi nie są wywoływane automatycznie i mogą w ogóle nie być używane, jeśli można ich uniknąć. NVMM stara się zachować prostotę, bez zbytniego skomplikowania i pozwalając ci kontrolować jak najwięcej aspektów swojej pracy.

Projekt NetBSD opracowuje nowy hiperwizor NVMM

Część NVMM na poziomie jądra jest dość ściśle zintegrowana z jądrem NetBSD i pozwala na poprawę wydajności poprzez zmniejszenie liczby przełączeń kontekstu pomiędzy systemem gościa a środowiskiem hosta. Po stronie przestrzeni użytkownika libnvmm próbuje agregować typowe operacje we/wy i unikać niepotrzebnego wykonywania wywołań systemowych. System alokacji pamięci oparty jest na podsystemie pmap, który pozwala na eksmisję stron pamięci gościa do partycji wymiany w przypadku braku pamięci w systemie. NVMM jest wolny od globalnych blokad i dobrze się skaluje, co pozwala na jednoczesne używanie różnych rdzeni procesora do uruchamiania różnych maszyn wirtualnych gości.

Przygotowano rozwiązanie oparte na QEMU, które wykorzystuje NVMM do umożliwienia mechanizmów wirtualizacji sprzętu. Trwają prace nad włączeniem przygotowanych poprawek do głównej struktury QEMU. Kombinacja QEMU+NVMM już jest pozwala on pomyślnie uruchamiaj systemy gościa z FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 i innymi systemami operacyjnymi na systemach x86_64 z procesorami AMD i Intel (sam NVMM nie jest przywiązany do konkretnej architektury, jeśli np. zostanie stworzony odpowiedni backend , będzie mógł pracować na systemach ARM64). Wśród obszarów dalszego zastosowania NVMM zauważalna jest także izolacja piaskownicowa poszczególnych aplikacji.

Projekt NetBSD opracowuje nowy hiperwizor NVMM

Źródło: opennet.ru

Dodaj komentarz