Microsoft hat die Veröffentlichung des Quellcodes der Paravirtualisierungsschicht OpenHCL und des OpenVMM-Virtual Machine Monitors bekannt gegeben, die speziell zur Organisation der Funktionalität von OpenHCL entwickelt wurden. Der Code von OpenVMM und OpenHCL ist in Rust geschrieben und wird unter der MIT-Lizenz veröffentlicht. OpenVMM gehört zu den Hypervisoren der zweiten Ebene, die im gleichen Schutzring wie der Betriebssystemkernel arbeiten, ähnlich Produkten wie VirtualBox und VMware Workstation. Es wird die Ausführung auf Host-Systemen mit Linux (x86_64), Windows (x86_64, Aarch64) und macOS (x86_64, Aarch64) unterstützt, indem die von diesen Betriebssystemen bereitgestellten KVM-, SHV (Microsoft Hypervisor), WHP (Windows Hypervisor Platform) und Hypervisor.framework Virtualisierungs-APIs verwendet werden.
Zu den Funktionen, die von OpenVMM unterstützt werden:
- Booten im UEFI- und BIOS-Modus, direktes Laden des Linux-Kernels;
- Unterstützung der Paravirtualisierung über Virtio-Treiber (virtio-fs, virtio-9p, virtio-net, virtio-pmem);
- Unterstützung der Paravirtualisierung über VMBus (storvsp, netvsp, vpci, framebuffer);
- Emulation von vTPM, NVMe, UART, Chipsatz i440BX + PIIX4, IDE HDD, PCI und VGA;
- Backends für die Durchleitung von Grafik, Eingabegeräten, Konsole, Speicher und Netzwerkzugang;
- Verwaltung über die Befehlszeilenschnittstelle, interaktive Konsole, gRPC und ttrpc.
OpenHCL wird als Umgebung mit Paravirtualisierungs-komponenten (Paravisor) positioniert, die über dem Hypervisor OpenVMM arbeitet. Ein zentrales Merkmal der Virtualisierungssysteme auf Basis von OpenVMM und OpenHCL ist, dass die Komponenten für die Paravirtualisierung nicht auf der Seite des Host-Systems, sondern in einer virtuellen Maschine zusammen mit dem Gastbetriebssystem ausgeführt werden. Die Isolation der Paravirtualisierungsschicht von dem Gastbetriebssystem wird dabei durch den Hypervisor der zweiten Ebene OpenVMM gewährleistet. OpenHCL kann in diesem Kontext als virtuelle Firmware betrachtet werden, die auf einem höheren Berechtigungsebenen läuft als das im Gastumfeld ausgeführte Betriebssystem.
Die Trennung des Gastsystems und der Komponenten von OpenHCL erfolgt unter Verwendung des Konzepts der virtuellen Vertrauensstufen (VTL, Virtual Trust Level), für deren Implementierung sowohl software- als auch hardwarebasierte Technologien genutzt werden können, wie Intel TDX (Trust Domain Extensions), AMD SEV-SNP (Secure Encrypted Virtualization-Secure Nested Paging) und ARM CCA (Confidential Compute Architecture). Für die Komponenten von OpenHCL wird eine reduzierte Version des Linux-Kernels verwendet, die nur die minimal erforderlichen Komponenten für den Betrieb von OpenVMM beinhaltet.

OpenHCL kann auf x86-64- und ARM64-Plattformen betrieben werden und unterstützt die Erweiterungen Intel TDX, AMD SEV-SNP und ARM CCA für zusätzliche Isolation. OpenHCL besteht aus einer Reihe von Diensten, Treibern und Emulatoren, die für den Zugang zur Hardware, den Betrieb virtueller Geräte auf der Seite des Gastsystems und die Emulation von Hardwaregeräten verwendet werden (zum Beispiel kann ein Chip zur Speicherung von Verschlüsselungsschlüsseln — vTPM — emuliert werden).
Für die Übertragung des Zugriffs auf die Hardware des Gast-Systems werden bestehende Treiber mit Unterstützung für Paravirtualisierung verwendet oder es kann eine direkte Gerätebindung an die virtuelle Maschine durchgeführt werden. Dies ermöglicht die Übertragung bestehender Gast-Systeme in eine OpenHCL-Umgebung, ohne dass Änderungen erforderlich sind. Darüber hinaus umfasst OpenHCL Komponenten zur Diagnose und Fehlersuche. virtuellen Maschinen, die unter Verwendung von Erweiterungen zur Gewährleistung vertraulicher Berechnungen durchgeführt werden.
Im Gegensatz zum bestehenden Open-Source-Projekt COCONUT-SVSM (Secure VM Service Module), das Dienste und emulierte Geräte für Gast-Systeme in vertraulichen Umgebungen anbietet, ermöglicht OpenHCL die Verwendung standardisierter Schnittstellen in Gast-Systemen, während COCONUT-SVSM eine spezielle Interaktion mit SVSM erfordert, Änderungen im Gast-System vornimmt und separate Treiber verwendet. virtuellen Maschinen wurde vereinfacht. (CVM, Confidential Virtual Machine), OpenHCL ermöglicht die Nutzung standardisierter Schnittstellen in Gast-Systemen, während COCONUT-SVSM eine spezielle Interaktion mit SVSM erfordert, Änderungen im Gast-System und die Verwendung separater Treiber notwendig macht.
Zu den Anwendungen des Paravirtualisierers OpenHCL gehören Szenarien wie die Migration bestehender Systeme zur Nutzung von Hardwarebeschleunigern wie Azure Boost, ohne dass Änderungen am Disk-Image des Gastsystems erforderlich sind; der Betrieb vorhandener Gastsysteme in virtuellen Maschinen, die vertrauliche Berechnungen unterstützen (zum Beispiel basierend auf Intel TDX und AMD SEV-SNP); die Organisation eines überprüfbaren Bootvorgangs virtueller Maschinen unter Verwendung des UEFI Secure Boot-Modus und vTPM.
Es wird gesondert darauf hingewiesen, dass das OpenVMM-Projekt auf die Nutzung mit OpenHCL fokussiert ist und derzeit nicht für den separaten Einsatz auf Hosts für Implementierungen von Endbenutzern bereit ist. Zu den Problemen von OpenVMM, die seiner Nutzung in Host-Umgebungen im traditionellen Kontext, außerhalb der Verbindung mit OpenHCL, entgegenstehen, gehören: unzureichende Dokumentation der Verwaltungsoberfläche; fehlende Optimierung der Leistungsfähigkeit der Backends für Speicher, Netzwerk und Grafik; mangelnde Unterstützung einiger Treiber (z. B. IDE-Festplatten und PS/2-Mäuse); keine Garantie für die Stabilität der API und Funktionalität. Gleichzeitig hat die Kombination von OpenVMM und OpenHCL bereits einen Grad der industriellen Implementierung erreicht und wird von Microsoft in der Azure-Plattform (Azure Boost SKU) eingesetzt, um den Betrieb von über 1,5 Millionen virtuellen Maschinen sicherzustellen.
Quelle: opennet.ru
