Compania Microsoft a anunțat deschiderea codului sursă al stratului pentru asigurarea para-virtualizării OpenHCL și a monitorului de mașini virtuale OpenVMM, dezvoltat special pentru organizarea funcționării OpenHCL. Codul OpenVMM și OpenHCL este scris în limbajul Rust și este distribuit sub licența MIT. OpenVMM se încadrează în categoria hipervizoarelor de nivel doi, funcționând în același cerc de protecție cu nucleul sistemului de operare, similar cu produse precum VirtualBox și VMware Workstation. Este compatibil cu sistemele gazdă pe bază de Linux (x86_64), Windows (x86_64, Aarch64) și macOS (x86_64, Aarch64), utilizând API-urile de virtualizare KVM, SHV (Microsoft Hypervisor), WHP (Windows Hypervisor Platform) și Hypervisor.framework furnizate de aceste OS-uri.
Printre caracteristicile susținute în OpenVMM se numără:
- Încărcarea în moduri UEFI și BIOS, încărcarea directă a nucleului Linux;
- Sustinerea para-virtualizării pe baza driverelor Virtio (virtio-fs, virtio-9p, virtio-net, virtio-pmem);
- Sustinerea para-virtualizării pe baza VMBus (storvsp, netvsp, vpci, framebuffer);
- Emularea vTPM, NVMe, UART, chipset-ului i440BX + PIIX4, IDE HDD, PCI și VGA;
- Backend-uri pentru redirecționarea graficii, dispozitivelor de intrare, console, stocării și accesului la rețea;
- Administrare prin interfața de linie de comandă, consolă interactivă, gRPC și ttrpc.
OpenHCL se poziționează ca un mediu cu componente de para-virtualizare (para-hipervizor), care funcționează deasupra hipervizorului OpenVMM. Caracteristica principală a sistemelor de virtualizare bazate pe OpenVMM și OpenHCL este că componentele pentru para-virtualizare rulează nu pe partea sistemului gazdă, ci într-o singură mașină virtuală cu sistemul de operare invitat. Izolarea stratului de para-virtualizare de sistemul de operare invitat este asigurată de hipervizorul de nivel doi OpenVMM. OpenHCL, în această aplicație, poate fi considerat un firmware virtual, operând la un nivel mai înalt de privilegii decât sistemul de operare care rulează în mediu invitat.
Separarea sistemului invitat și a componentelor OpenHCL se realizează folosind conceptul de niveluri virtuale de încredere (VTL, Virtual Trust Level), pentru realizarea cărora pot fi utilizate atât mecanisme software, cât și tehnologii hardware, cum ar fi Intel TDX (Trust Domain Extensions), AMD SEV-SNP (Secure Encrypted Virtualization - Secure Nested Paging) și ARM CCA (Confidential Compute Architecture). Pentru a rula componentele OpenHCL se utilizează o versiune restrânsă a nucleului Linux, care include doar componentele minime necesare pentru funcționarea OpenVMM.

OpenHCL poate funcționa pe platformele x86-64 și ARM64 și suportă extensiile Intel TDX, AMD SEV-SNP și ARM CCA pentru izolație suplimentară. OpenHCL include un set de servicii, drivere și emițători utilizate pentru a organiza accesul la hardware, a asigura funcționarea dispozitivelor virtuale pe partea gazdelor și a emula dispozitive hardware (de exemplu, poate emula un cip pentru stocarea cheilor criptografice — vTPM).
Pentru translația accesului la hardware pe partea gazdelor se aplică drivere existente cu suport pentru paravirtualizare sau se poate realiza atașarea directă a dispozitivelor la mașina virtuală, ceea ce permite migrarea sistemelor gazdă existente în medii bazate pe OpenHCL fără a le modifica. În plus, OpenHCL include componente pentru diagnosticare și depanare. mașini virtuale, realizate folosind extensii pentru a asigura calcule confidențiale.
Spre deosebire de proiectul deschis existent COCONUT-SVSM (Secure VM Service Module), care furnizează servicii și dispozitive emulate pentru sistemele gazdă care funcționează în confidențialitate virtuálne mašini (CVM, Confidential Virtual Machine), OpenHCL permite utilizarea interfețelor standard în sistemele gazdă, în timp ce COCONUT-SVSM necesită organizarea unei interacțiuni speciale cu SVSM, modificarea sistemului gazdă și utilizarea de drivere separate.
Printre aplicațiile paravirtorului OpenHCL se numără scenarii precum migrarea sistemelor existente la utilizarea acceleratoarelor hardware Azure Boost fără a necesita modificări în imaginea discului sistemului gazdă; rularea sistemelor gazdă existente în mașini virtuale care oferă calcule confidențiale (de exemplu, bazate pe Intel TDX și AMD SEV-SNP); organizarea unei încărcări verificate a mașinilor virtuale, folosind modul UEFI Secure Boot și vTPM.
Se menționează în mod special că proiectul OpenVMM se concentrează pe utilizarea împreună cu OpenHCL și nu este încă pregătit pentru a fi utilizat separat pe sistemele de gazduire pentru implementări dedicate utilizatorilor finali. Printre problemele OpenVMM care împiedică utilizarea sa în medii de gazduire în context tradițional, în afara integrării cu OpenHCL, se numără: documentația slabă a interfeței de management; lipsa optimizării corespunzătoare a performanței backend-urilor pentru stocare, rețea și grafică; absența suportului pentru anumite drivere (de exemplu, HDD-uri IDE și mouse-uri PS/2); lipsa unei garanții de stabilitate a API-ului și funcționalității. Totuși, integrarea dintre OpenVMM și OpenHCL a atins deja un nivel de implementare industrială și este utilizată de Microsoft pe platforma Azure (SKU Azure Boost) pentru operarea a peste 1.5 milioane de mașini virtuale.
Sursa: opennet.ro
