Microsoft heeft aangekondigd de broncode van de laag voor paravirtualisatie OpenHCL en de virtuele machine monitor OpenVMM vrij te geven, speciaal ontwikkeld voor de werking van OpenHCL. De code van OpenVMM en OpenHCL is geschreven in Rust en wordt verspreid onder de MIT-licentie. OpenVMM behoort tot de hypervisors van de tweede laag, die in ƩƩn beschermingsring samenwerkt met de kernel van het besturingssysteem, vergelijkbaar met producten zoals VirtualBox en VMware Workstation. Het ondersteunt werking bovenop host-systemen op basis van Linux (x86_64), Windows (x86_64, Aarch64) en macOS (x86_64, Aarch64), met gebruikmaking van de door deze besturingssystemen aangeboden virtualisatie-API's: KVM, SHV (Microsoft Hypervisor), WHP (Windows Hypervisor Platform) en Hypervisor.framework.
Onder de mogelijkheden die door OpenVMM worden ondersteund:
- Opstarten in UEFI- en BIOS-modi, directe opstart van de Linux-kernel;
- Ondersteuning voor paravirtualisatie op basis van Virtio-drivers (virtio-fs, virtio-9p, virtio-net, virtio-pmem);
- Ondersteuning voor paravirtualisatie op basis van VMBus (storvsp, netvsp, vpci, framebuffer);
- Emulatie van vTPM, NVMe, UART, chipset i440BX + PIIX4, IDE HDD, PCI en VGA;
- Backends voor doorsturen van grafiek, invoerapparaten, console, opslag en netwerktoegang;
- Beheer via de opdrachtregelinterface, interactieve console, gRPC en ttrpc.
OpenHCL wordt gepositioneerd als een omgeving met paravirtualisatiecomponenten (paravisor), die bovenop de hypervisor OpenVMM werkt. Een belangrijke eigenschap van virtualisatiesystemen op basis van OpenVMM en OpenHCL is dat de componenten voor paravirtualisatie niet aan de kant van het host-systeem worden uitgevoerd, maar in ƩƩn virtuele machine met het gast systeem. De isolatie van de paravirtualisatielaag van het gastbesturingssysteem wordt daarbij verzekerd door de tweede-laags hypervisor OpenVMM. OpenHCL kan in dit geval worden beschouwd als virtuele firmware die op een hoger privilege-niveau draait dan het gastbesturingssysteem.
De scheiding tussen het gastbesturingssysteem en de componenten van OpenHCL wordt gerealiseerd met behulp van het concept van virtuele vertrouwensniveaus (VTL, Virtual Trust Level), waarvoor zowel softwaremechanismen als hardwaretechnologieƫn zoals Intel TDX (Trust Domain Extensions), AMD SEV-SNP (Secure Encrypted Virtualization-Secure Nested Paging) en ARM CCA (Confidential Compute Architecture) kunnen worden gebruikt. Voor de uitvoering van de componenten van OpenHCL wordt een afgeslankte versie van de Linux-kernel gebruikt, die alleen de minimaal noodzakelijke componenten bevat die nodig zijn voor de werking van OpenVMM.

OpenHCL kan werken op x86-64 en ARM64 platforms en ondersteunt Intel TDX, AMD SEV-SNP en ARM CCA uitbreidingen voor extra isolatie. OpenHCL omvat een set services, stuurprogramma's en emulators die worden gebruikt voor de toegang tot hardware, het laten functioneren van virtuele apparaten aan de gastzijde en het emuleren van hardware-apparaten (bijvoorbeeld kan er een chip voor het opslaan van cryptografische sleutels worden geĆ«muleerd ā vTPM).
Voor de vertaling van toegang tot hardware aan de gastzijde worden bestaande stuurprogramma's voor para-virtualisatie gebruikt of kan er directe apparaatbinding aan de virtuele machine plaatsvinden, waardoor bestaande gastsystemen naar een omgeving op basis van OpenHCL kunnen worden verplaatst zonder dat er wijzigingen in gemaakt hoeven te worden. Bovendien bevat OpenHCL componenten voor diagnose en debugging virtuele machines, uitgevoerd met behulp van extensies voor vertrouwelijke computeren.
In tegenstelling tot het al bestaande open project COCONUT-SVSM (Secure VM Service Module), dat services en geƫmuleerde apparaten biedt voor gastsystemen die draaien in vertrouwelijke virtuele machines (CVM, Confidential Virtual Machine), stelt OpenHCL gebruikers in staat om standaardinterfaces in gastsystemen te gebruiken, terwijl COCONUT-SVSM vereist dat er speciale interactie met SVSM is geregeld, wat wijzigingen in het gastensysteem en het gebruik van aparte stuurprogramma's impliceert.
Toepassingen van de para-virtualizer OpenHCL omvatten scenario's zoals het migreren van bestaande systemen naar het gebruik van hardwareversnellers Azure Boost zonder wijzigingen in het schijfbeeld van het gastensysteem; het draaien van bestaande gastsystemen in virtuele machines die vertrouwelijke computeren mogelijk maken (bijvoorbeeld met Intel TDX en AMD SEV-SNP); en het opzetten van geverifieerde opstartprocessen voor virtuele machines, met gebruik van de UEFI Secure Boot modus en vTPM.
Het is opmerkelijk dat het OpenVMM-project zich richt op het gebruik met OpenHCL en momenteel niet klaar is voor zelfstandig gebruik op hostsystemen voor de implementatie door eindgebruikers. De problemen met OpenVMM die het gebruik in traditionele hostomgevingen belemmeren, buiten de koppeling met OpenHCL, zijn onder meer: slechte documentatie van de beheersinterface; gebrek aan adequate prestatieoptimalisatie van backends voor opslag, netwerk en grafische middelen; geen ondersteuning voor bepaalde stuurprogramma's (zoals IDE-schijven en PS/2-muizen); er is geen garantie op stabiliteit van de API en functionaliteit. Desalniettemin heeft de combinatie van OpenVMM en OpenHCL al het niveau van industriƫle implementatie bereikt en wordt deze door Microsoft gebruikt op het Azure-platform (Azure Boost SKU) voor het beheer van meer dan 1,5 miljoen virtuele machines.
Bron: opennet.ru
