Das NetBSD-Projekt entwickelt einen neuen NVMM-Hypervisor

NetBSD-Projektentwickler kündigte die über die Erstellung eines neuen Hypervisors und des zugehörigen Virtualisierungsstacks, die bereits im experimentellen NetBSD-Current-Zweig enthalten sind und in der stabilen Version von NetBSD 9 angeboten werden. NVMM beschränkt sich derzeit auf die Unterstützung der x86_64-Architektur und stellt zwei Backends für bereit Aktivierung von Hardware-Virtualisierungsmechanismen: x86-SVM mit Unterstützung für AMD- und x86-VMX-CPU-Virtualisierungserweiterungen für Intel-CPUs. In der aktuellen Form ist es möglich, bis zu 128 virtuelle Maschinen auf einem Host zu betreiben, denen jeweils bis zu 256 virtuelle Prozessorkerne (VCPU) und 128 GB RAM zugewiesen werden können.

NVMM umfasst einen Treiber, der auf Systemkernelebene ausgeführt wird und den Zugriff auf Hardware-Virtualisierungsmechanismen koordiniert, sowie einen Libnvmm-Stack, der im Benutzerbereich ausgeführt wird. Die Interaktion zwischen Kernel-Komponenten und Benutzerraum erfolgt über IOCTL. Ein Merkmal von NVMM, das es von Hypervisoren wie KVM unterscheidet, ist HAXM und Bhyve besteht darin, dass auf Kernel-Ebene nur der minimal erforderliche Satz an Bindungen rund um Hardware-Virtualisierungsmechanismen durchgeführt wird und der gesamte Hardware-Emulationscode aus dem Kernel in den Benutzerbereich verschoben wird. Mit diesem Ansatz können Sie die Menge des mit erhöhten Rechten ausgeführten Codes reduzieren und das Risiko einer Gefährdung des gesamten Systems bei Angriffen auf Schwachstellen im Hypervisor verringern. Darüber hinaus wird das Debuggen und Fuzzing-Testen des Projekts spürbar vereinfacht.

Allerdings enthält Libnvmm selbst keine Emulatorfunktionen, sondern stellt lediglich eine API bereit, die es ermöglicht, NVMM-Unterstützung in bestehende Emulatoren, beispielsweise QEMU, zu integrieren. Die API umfasst Funktionen wie das Erstellen und Starten einer virtuellen Maschine, die Zuweisung von Speicher für das Gastsystem und die Zuweisung von VCPUs. Um die Sicherheit zu verbessern und mögliche Angriffsvektoren zu reduzieren, stellt libnvmm nur Funktionen bereit, die explizit angefordert werden – komplexe Handler werden standardmäßig nicht automatisch aufgerufen und dürfen überhaupt nicht verwendet werden, wenn sie vermieden werden können. NVMM versucht, die Dinge einfach zu halten, ohne zu kompliziert zu werden, und Ihnen die Kontrolle über so viele Aspekte Ihrer Arbeit wie möglich zu ermöglichen.

Das NetBSD-Projekt entwickelt einen neuen NVMM-Hypervisor

Der Kernel-Level-Teil von NVMM ist ziemlich eng in den NetBSD-Kernel integriert und ermöglicht eine verbesserte Leistung, indem die Anzahl der Kontextwechsel zwischen dem Gastbetriebssystem und der Host-Umgebung reduziert wird. Auf der User-Space-Seite versucht libnvmm, allgemeine I/O-Vorgänge zu aggregieren und unnötige Systemaufrufe zu vermeiden. Das Speicherzuweisungssystem basiert auf dem pmap-Subsystem, das es Ihnen ermöglicht, Gastspeicherseiten auf die Swap-Partition zu verlagern, falls im System Speichermangel herrscht. NVMM ist frei von globalen Sperren und lässt sich gut skalieren, sodass Sie gleichzeitig verschiedene CPU-Kerne verwenden können, um verschiedene virtuelle Gastmaschinen auszuführen.

Es wurde eine QEMU-basierte Lösung vorbereitet, die NVMM verwendet, um Hardware-Virtualisierungsmechanismen zu ermöglichen. Derzeit wird daran gearbeitet, die vorbereiteten Patches in die Hauptstruktur von QEMU einzubinden. Die QEMU+NVMM-Kombination gibt es bereits ermöglicht Führen Sie Gastsysteme mit FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 und anderen Betriebssystemen erfolgreich auf x86_64-Systemen mit AMD- und Intel-Prozessoren aus (NVMM selbst ist beispielsweise nicht an eine bestimmte Architektur gebunden, wenn das entsprechende Backend erstellt wird , es wird auf ARM64-Systemen funktionieren können). Zu den weiteren Einsatzgebieten von NVMM gehört auch die Sandbox-Isolierung einzelner Anwendungen.

Das NetBSD-Projekt entwickelt einen neuen NVMM-Hypervisor

Source: opennet.ru

Kommentar hinzufügen