El equipo de NetBSD esta desarrollando un nuevo hipervisor NVMM

Los desarrolladores del proyecto NetBSD recientemente anunciaron la creación de un nuevo hipervisor y su pila de virtualización asociada, que ya están incluidas en la rama experimental de NetBSD-current y se ofrecerán en la versión estable de NetBSD 9.

NVMM aún está limitado a la compatibilidad con la arquitectura x86_64 y ofrece dos versiones para el uso de mecanismos de virtualización de hardware.

Uno de ellos es x86-SVM con soporte para la virtualización de CPU AMD y extensiones x86-VMX para CPU Intel.

En su forma actual, es posible iniciar en un host hasta 128 máquinas virtuales, cada una de las cuales puede asignarse hasta 256 núcleos de procesador virtual (VCPU) y 128 GB de RAM.

Sobre el hipervisor NVMM

En la presentación de este hipervisor los desarrolladores del proyecto NetBSD explican que NVMM incluye un controlador que funciona en el nivel de kernel del sistema.

Y que además coordina el acceso a los mecanismos de virtualización basados ​​en hardware y la pila Libnvmm, que se ejecuta en el espacio del usuario.

La interacción de 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 los hipervisores como KVM, HAXM y Bhyve es que, a nivel del kernel, solo se realiza el conjunto mínimo requerido de mecanismos de virtualización de hardware y todo el código de emulación del equipo se elimina del kernel al espacio del usuario.

Este enfoque reduce la cantidad de código ejecutado con privilegios elevados y reduce el riesgo de que todo el sistema se vea comprometido en caso de ataques a vulnerabilidades en el hipervisor.

Además, se simplifica considerablemente la depuración y las pruebas de confusión del proyecto.

Al mismo tiempo Libnvmm en sí no contiene funciones de emulador, sino que solo proporciona una API que permite integrar el soporte NVMM en los emuladores existentes, por ejemplo, en QEMU.

API de virtualización

La API cubre funciones como crear y ejecutar una máquina virtual, asignar memoria al sistema huésped y distribuir la VCPU.

Para aumentar la seguridad y reducir los posibles vectores de ataque, libnvmm solo proporciona funciones solicitadas explícitamente.

De ​​manera predeterminada, los controladores complejos no se invocan automáticamente y no se pueden usar en absoluto si se pueden prescindir de ellos.

NVMM trata de hacer soluciones simples, sin caer en complicaciones y permitiéndose controlar tantos aspectos del trabajo como sea posible.

La parte de nivel de kernel de NVMM está bastante bien integrada con el kernel NetBSD y le permite lograr un mayor rendimiento al reducir la cantidad de cambios de contexto entre el sistema operativo invitado y el entorno host.

En el espacio del usuario, libnvmm trata de agregar las operaciones típicas de E / S y sin la necesidad de hacerlo, no recurrir a las llamadas del sistema.

Rendimiento

Al contrario de otros controladores de kernel de seudo multiplataforma, como VirtualBox o HAXM, NVMM está bien integrado en el kernel NetBSD y esto permite optimizar los cambios de contexto entre los invitados y el host, para evitar operaciones costosas en ciertos casos.

Seguridad

El sistema de asignación de memoria se basa en el subsistema pmap, que le permite desplazar las páginas de la memoria del invitado a la partición de intercambio en caso de falta de memoria en el sistema.

NVMM está libre de bloqueos y escalas globales, lo que le permite utilizar simultáneamente diferentes núcleos de CPU para ejecutar diferentes máquinas virtuales invitadas.

Basado en QEMU, se preparó una solución utilizando NVMM para habilitar los mecanismos de virtualización de hardware.

Se está trabajando para incorporar los parches preparados en el equipo principal de QEMU.

El paquete QEMU + NVMM ya le 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).

El backend podrá trabajar en sistemas ARM64). Desde áreas de aplicación adicional, NVMM también observó el aislamiento en el área de pruebas de aplicaciones individuales.

Fuente: http://blog.netbsd.org


Sé el primero en comentar