La compañía Microsoft anunció la apertura del código fuente de la capa para la paravirtualización OpenHCL y del monitor de máquinas virtuales OpenVMM, desarrollado específicamente para organizar el funcionamiento de OpenHCL. El código de OpenVMM y OpenHCL está escrito en el lenguaje Rust y se distribuye bajo la licencia MIT. OpenVMM se clasifica como un hipervisor de segundo nivel que opera en un mismo anillo de protección que el núcleo del sistema operativo, similar a productos como VirtualBox y VMware Workstation. Se admite el funcionamiento sobre sistemas anfitriones basados en Linux (x86_64), Windows (x86_64, Aarch64) y macOS (x86_64, Aarch64), utilizando las API de virtualización KVM, SHV (Microsoft Hypervisor), WHP (Windows Hypervisor Platform) y Hypervisor.framework proporcionadas por estos sistemas operativos.
Entre las funcionalidades admitidas en OpenVMM:
- Arranque en modos UEFI y BIOS, carga directa del núcleo de Linux;
- Soporte para la paravirtualización basada en controladores Virtio (virtio-fs, virtio-9p, virtio-net, virtio-pmem)
- Soporte para la paravirtualización basada en VMBus (storvsp, netvsp, vpci, framebuffer);
- Emulación de vTPM, NVMe, UART, chipset i440BX + PIIX4, HDD IDE, PCI y VGA;
- Backends para el reenvío de gráficos, dispositivos de entrada, consola, almacenamiento y acceso a red;
- Administración a través de la interfaz de línea de comandos, consola interactiva, gRPC y ttrpc.
OpenHCL se posiciona como un entorno con componentes de paravirtualización (paravirtualizador) que opera sobre el hipervisor OpenVMM. La característica clave de los sistemas de virtualización basados en OpenVMM y OpenHCL es que los componentes de paravirtualización se ejecutan no en el lado del sistema anfitrión, sino en una única máquina virtual con el sistema invitado. La aislación de la capa de paravirtualización del sistema operativo invitado se garantiza mediante el hipervisor de segundo nivel OpenVMM. En este uso, OpenHCL puede considerarse como un firmware virtual que se ejecuta a un nivel de privilegio más alto que el sistema operativo que se ejecuta en el entorno invitado.
La separación entre el sistema invitado y los componentes de OpenHCL se lleva a cabo utilizando el concepto de niveles de confianza virtual (VTL, Virtual Trust Level), que pueden realizarse mediante mecanismos tanto de software como de hardware, como Intel TDX (Trust Domain Extensions), AMD SEV-SNP (Secure Encrypted Virtualization-Secure Nested Paging) y ARM CCA (Confidential Compute Architecture). Para la ejecución de componentes de OpenHCL, se utiliza una versión reducida del núcleo de Linux que incluye únicamente los componentes mínimos necesarios para el funcionamiento de OpenVMM.

OpenHCL puede funcionar en plataformas x86-64 y ARM64, y admite las extensiones Intel TDX, AMD SEV-SNP y ARM CCA para aislamiento adicional. OpenHCL incluye un conjunto de servicios, controladores y emuladores utilizados para acceder al hardware, garantizar el funcionamiento de dispositivos virtuales en el lado del sistema huésped y emular dispositivos de hardware (por ejemplo, se puede emular un chip para almacenar claves criptográficas: vTPM).
Para la traducción del acceso al hardware en el lado del sistema huésped, se utilizan controladores existentes con soporte para paravirtualización o se puede realizar una vinculación directa de dispositivos a la máquina virtual, lo que permite trasladar al entorno basado en OpenHCL sistemas huéspedes existentes sin necesidad de realizar cambios en ellos. Además, OpenHCL incluye componentes para diagnóstico y depuración, máquinas virtuales, realizados utilizando extensiones para garantizar computación confidencial.
A diferencia del ya existente proyecto de código abierto COCONUT-SVSM (Módulo de Servicio de VM Segura), que proporciona servicios y dispositivos emulados para sistemas huéspedes que funcionan en entornos confidenciales máquinas virtuales (CVM, Máquina Virtual Confidencial), OpenHCL permite el uso de interfaces estándar en los sistemas huéspedes, mientras que COCONUT-SVSM requiere la organización de una interacción especial con SVSM, modificaciones en el sistema huésped y el uso de controladores separados.
Entre las aplicaciones del paravirtualizador OpenHCL se mencionan escenarios como la migración de sistemas existentes para utilizar aceleradores de hardware Azure Boost sin necesidad de realizar cambios en la imagen del disco del sistema huésped; la ejecución de sistemas huéspedes existentes en máquinas virtuales que garantizan computación confidencial (por ejemplo, basadas en Intel TDX y AMD SEV-SNP); y la organización de arranque verificado de máquinas virtuales utilizando el modo UEFI Secure Boot y vTPM.
Cabe destacar que el proyecto OpenVMM se centra en el uso de OpenHCL y aún no está listo para su aplicación separada en sistemas de hospedaje para implementaciones de usuarios finales. Entre los problemas de OpenVMM que obstaculizan su uso en entornos de hospedaje en un contexto tradicional, fuera del vínculo con OpenHCL, se mencionan: mala documentación de la interfaz de gestión; falta de optimización adecuada del rendimiento de los backend para almacenamiento, red y gráficos; falta de soporte para algunos controladores (por ejemplo, discos IDE y ratones PS/2); no hay garantía de estabilidad de la API y funcionalidad. Sin embargo, la combinación de OpenVMM y OpenHCL ya ha alcanzado un nivel de implementación industrial y está siendo utilizada por Microsoft en la plataforma Azure (SKU Azure Boost) para operar más de 1.5 millones de máquinas virtuales.
Fuente: opennet.ru
