Les les développeurs du projet XCP-NG annoncés Récemment, ils travaillent sur un nouveau projet qui porte le nom «PV-IOMMU» et cela permet aux systèmes invités d'accéder à des fonctions limitées de l'IOMMU implémentées via la paravirtualisation dans l'environnement Xen.
En gros, PV-IOMMU promet de permettre à Dom0 d'utiliser un IOMMU paravirtualisé, qui offre plusieurs avantages tels que la protection DMA pour Dom0 et la prise en charge de Linux VFIO.
Qu’est-ce que l’IOMMU ?
IOMMU connu sous différents noms selon les constructeurs (VT-d chez Intel, AMD-Vi chez AMD, SMMU chez ARM, entre autres), Il s'agit d'un dispositif spécial mis en œuvre dont la fonction principale est traduire ou filtrer les requêtes DMA (Direct Memory Access) des appareils vers la mémoire physique de la machine. Dans la virtualisation, il est utilisé pour permettre aux systèmes invités d'accéder directement aux périphériques tels que les adaptateurs Ethernet, les cartes graphiques et les contrôleurs de stockage.
Quels sont les bénéfices obtenus avec la paraviralisation IOMMU ?
précédemment, l'hyperviseur Xen a utilisé IOMMU pour rediriger l'accès des périphériques PCI et contrôler l'accès de ces périphériques à la mémoire. Cependant, Pour des raisons de stabilité et de sécurité, les invités ne pouvaient pas accéder directement au bloc IOMMU fournis par le matériel.
Nous présentons un nouvel IOMMU paravirtualisé simplement appelé PV-IOMMU. Il implémente essentiellement les fonctionnalités que l'invité attend d'un IOMMU, en faisant abstraction de tous les détails internes du matériel. Dans Xen, nous avons ajouté un nouvel hypercall pour de telles opérations (qui est HYPERVISOR_iommu_op) qui fournit diverses opérations IOMMU que l'invité peut utiliser (si autorisé).
Malgré cela, il a été possible de proposer une interface au client pour vous permettre d'accéder à IOMMU, en utilisant une infrastructure paravirtualisée Xen simplifiée, tout en masquant les détails matériels de bas niveau. Cette interface, appelée PV-IOMMU, résume tous les détails internes du matériel et fournit un ensemble d'opérations IOMMU auxquelles l'invité peut accéder, s'il est autorisé. Les opérations dans PV-IOMMU sont exposées en tant que sous-opérations dans l'hyperappel HYPERVISOR_iommu_op et sont conçues d'une manière qui convient à l'invité.
L'une des principales fonctionnalités que l'hôte attend d'un IOMMU est la possibilité de créer et de modifier des « domaines IOMMU », qui sont un ensemble de traductions qui créent le contexte de la mémoire et qui peuvent être appliquées à un appareil (ou plusieurs appareils). Ces domaines sont appelés « Contextes IOMMU » dans Xen pour éviter toute confusion avec les domaines Xen qui sont des machines virtuelles.
Parmi les différents avantages qui ressortent de la paravirtualisation IOMMU, on mentionne les suivants :
- Protection DMA pour Dom0 : La paravirtualisation IOMMU permet une protection par accès direct à la mémoire (DMA) pour le domaine de gestion (Dom0) dans les environnements de virtualisation. Cela contribue à améliorer la sécurité et la stabilité du système en empêchant les appareils d'accéder directement à la mémoire système, ce qui pourrait compromettre l'intégrité de Dom0.
- Prise en charge Linux VFIO: La paravirtualisation IOMMU facilite la prise en charge de l'infrastructure d'E/S flexible virtualisée pour les périphériques utilisateur (VFIO) dans les environnements de virtualisation, permettant aux applications utilisateur et aux machines virtuelles d'accéder directement aux périphériques matériels.
- Facilite l’implémentation de SPDK avec Xen : La paravirtualisation IOMMU fait également partie d'un effort continu pour prendre en charge SPDK avec Xen. Cela ouvre la porte à un nouveau chemin de données rapide pour le stockage sur machine virtuelle, qui peut potentiellement améliorer les performances de stockage dans les environnements virtualisés.
En plus de cela, aussi l'un des problèmes de Xen devrait être résolu avec IOMMU, puisqu'actuellementou permet l'existence de plusieurs contextes IOMMU dans un seul domaine Xen. Cependant, une refonte du sous-système Xen IOMMU est envisagée pour prendre en compte plusieurs contextes IOMMU et modifier les fonctionnalités existantes pour les utiliser. Bien qu'un PoC fonctionnel mettant en œuvre la première approche ait été mis en œuvre, avec certaines limitations et un support incomplet, il est mentionné qu'une refonte complète du sous-système est en cours d'élaboration pour l'avenir.
Enfin, il convient de mentionner que Dans la phase actuelle de développement, PV-IOMMU ne prend en charge qu'Intel VT-d, mais la prise en charge d'AMD-Vi et SMMUv3 devrait être ajoutée prochainement. Si vous souhaitez en savoir plus, vous pouvez consulter les détails dans le lien suivant