Le projet NetBSD développe un nouvel hyperviseur NVMM

Développeurs du projet NetBSD annoncé sur la création d'un nouvel hyperviseur et de la pile de virtualisation associée, qui sont déjà inclus dans la branche expérimentale NetBSD-current et seront proposés dans la version stable de NetBSD 9. NVMM est actuellement limité à la prise en charge de l'architecture x86_64 et fournit deux backends pour activation des mécanismes de virtualisation matérielle : x86-SVM avec prise en charge des extensions de virtualisation de processeur AMD et x86-VMX pour les processeurs Intel. Dans sa forme actuelle, il est possible d'exécuter jusqu'à 128 machines virtuelles sur un hôte, chacune pouvant se voir attribuer jusqu'à 256 cœurs de processeur virtuel (VCPU) et 128 Go de RAM.

NVMM comprend un pilote qui s'exécute au niveau du noyau du système et coordonne l'accès aux mécanismes de virtualisation matérielle, ainsi qu'une pile Libnvmm qui s'exécute dans l'espace utilisateur. L'interaction entre les composants du noyau et l'espace utilisateur s'effectue via IOCTL. Une fonctionnalité de NVMM qui le distingue des hyperviseurs tels que KVM est HAXM et Bhyve, est qu'au niveau du noyau, seul l'ensemble minimum requis de liaisons autour des mécanismes de virtualisation matérielle est effectué, et tout le code d'émulation matérielle est déplacé hors du noyau vers l'espace utilisateur. Cette approche permet de réduire la quantité de code exécuté avec des privilèges élevés et de réduire le risque de compromettre l'ensemble du système en cas d'attaques sur les vulnérabilités de l'hyperviseur. De plus, le débogage et les tests de fuzzing du projet sont sensiblement simplifiés.

Cependant, Libnvmm lui-même ne contient pas de fonctions d'émulateur, mais fournit uniquement une API qui vous permet d'intégrer la prise en charge de NVMM dans les émulateurs existants, par exemple QEMU. L'API couvre des fonctions telles que la création et le lancement d'une machine virtuelle, l'allocation de mémoire au système invité et l'allocation de VCPU. Pour améliorer la sécurité et réduire les vecteurs d'attaque possibles, libnvmm fournit uniquement les fonctions explicitement demandées : par défaut, les gestionnaires complexes ne sont pas appelés automatiquement et ne peuvent pas être utilisés du tout s'ils peuvent être évités. NVMM essaie de garder les choses simples, sans devenir trop compliquées, et vous permettant de contrôler autant d'aspects de votre travail que possible.

Le projet NetBSD développe un nouvel hyperviseur NVMM

La partie au niveau du noyau de NVMM est assez étroitement intégrée au noyau NetBSD et permet d'améliorer les performances en réduisant le nombre de changements de contexte entre le système d'exploitation invité et l'environnement hôte. Du côté de l'espace utilisateur, libnvmm essaie d'agréger les opérations d'E/S courantes et d'éviter de faire des appels système inutilement. Le système d'allocation de mémoire est basé sur le sous-système pmap, qui vous permet d'expulser les pages de mémoire invité vers la partition d'échange en cas de manque de mémoire dans le système. NVMM est exempt de verrous globaux et évolue bien, vous permettant d'utiliser simultanément différents cœurs de processeur pour exécuter différentes machines virtuelles invitées.

Une solution basée sur QEMU a été préparée qui utilise NVMM pour activer les mécanismes de virtualisation matérielle. Des travaux sont en cours pour inclure les correctifs préparés dans la structure principale de QEMU. La combinaison QEMU+NVMM est déjà il permet exécuter avec succès des systèmes invités avec FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 et d'autres systèmes d'exploitation sur des systèmes x86_64 avec des processeurs AMD et Intel (NVMM lui-même n'est pas lié à une architecture spécifique, par exemple, si le backend approprié est créé , il pourra fonctionner sur les systèmes ARM64 ). Parmi les domaines d'application ultérieurs du NVMM, l'isolation sandbox des applications individuelles est également notée.

Le projet NetBSD développe un nouvel hyperviseur NVMM

Source: opennet.ru

Ajouter un commentaire