El proyecto NetBSD está desarrollando un nuevo hipervisor NVMM

Desarrolladores de proyectos NetBSD ellos proclamaron sobre la creación de un nuevo hipervisor y la pila de virtualización asociada, que ya están incluidos en la rama experimental actual de NetBSD y se ofrecerán en la versión estable de NetBSD 9. NVMM actualmente se limita a admitir la arquitectura x86_64 y proporciona dos backends para Habilitación de mecanismos de virtualización de hardware: x86-SVM con soporte para extensiones de virtualización de CPU AMD y x86-VMX para CPU Intel. En su forma actual, es posible ejecutar hasta 128 máquinas virtuales en un host, a cada una de las cuales se le pueden asignar hasta 256 núcleos de procesador virtual (VCPU) y 128 GB de RAM.

NVMM incluye un controlador que se ejecuta en el nivel del kernel del sistema y coordina el acceso a los mecanismos de virtualización de hardware, y una pila Libnvmm que se ejecuta en el espacio del usuario. La interacción entre los componentes del kernel y el espacio del usuario se realiza a través de IOCTL. Una característica de NVMM que lo distingue de hipervisores como KVM es HAXM y Bhyve, es que a nivel del kernel sólo se realiza el conjunto mínimo requerido de enlaces alrededor de los mecanismos de virtualización de hardware, y todo el código de emulación de hardware se mueve fuera del kernel al espacio del usuario. Este enfoque le permite reducir la cantidad de código ejecutado con privilegios elevados y reducir el riesgo de comprometer todo el sistema en caso de ataques a vulnerabilidades en el hipervisor. Además, las pruebas de depuración y fuzzing del proyecto se simplifican notablemente.

Sin embargo, Libnvmm en sí no contiene funciones de emulador, solo proporciona una API que le permite integrar el soporte NVMM en emuladores existentes, por ejemplo, QEMU. La API cubre funciones como la creación y el lanzamiento de una máquina virtual, la asignación de memoria al sistema invitado y la asignación de VCPU. Para mejorar la seguridad y reducir posibles vectores de ataque, libnvmm proporciona solo funciones que se solicitan explícitamente; de ​​forma predeterminada, los controladores complejos no se llaman automáticamente y es posible que no se utilicen en absoluto si se pueden evitar. NVMM intenta mantener las cosas simples, sin complicarse demasiado y permitiéndole controlar tantos aspectos de su trabajo como sea posible.

El proyecto NetBSD está desarrollando un nuevo hipervisor NVMM

La parte a nivel de kernel de NVMM está bastante integrada con el kernel de NetBSD y permite un rendimiento mejorado al reducir la cantidad de cambios de contexto entre el sistema operativo invitado y el entorno host. En el lado del espacio de usuario, libnvmm intenta agregar operaciones de E/S comunes y evitar realizar llamadas al sistema innecesariamente. El sistema de asignación de memoria se basa en el subsistema pmap, que le permite desalojar páginas de memoria invitadas a la partición de intercambio en caso de escasez de memoria en el sistema. NVMM no tiene bloqueos globales y se escala bien, lo que le permite usar simultáneamente diferentes núcleos de CPU para ejecutar diferentes máquinas virtuales invitadas.

Se ha preparado una solución basada en QEMU que utiliza NVMM para habilitar mecanismos de virtualización de hardware. Se está trabajando para incluir los parches preparados en la estructura principal de QEMU. La combinación QEMU+NVMM ya está permite ejecutar con éxito sistemas invitados con FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 y otros sistemas operativos en sistemas x86_64 con procesadores AMD e Intel (NVMM en sí no está vinculado a una arquitectura específica, por ejemplo, si se crea el backend apropiado , podrá funcionar en sistemas ARM64). Entre las áreas de aplicación adicional de NVMM también se destaca el aislamiento sandbox de aplicaciones individuales.

El proyecto NetBSD está desarrollando un nuevo hipervisor NVMM

Fuente: opennet.ru

Añadir un comentario