Die Entwickler des XCP-NG-Projekts bekannt gegeben Vor kurzem arbeiten sie an einem neuen Projekt, das diesen Namen trägt «PV-IOMMU» und das ermöglicht Gastsystemen den Zugriff auf begrenzte Funktionen der IOMMU, die durch Paravirtualisierung in der Xen-Umgebung implementiert werden.
Grundsätzlich PV-IOMMU verspricht, Dom0 die Nutzung einer paravirtualisierten IOMMU zu ermöglichen, das mehrere Vorteile bietet, wie z. B. DMA-Schutz für Dom0 und Unterstützung für Linux VFIO.
Was ist IOMMU?
IOMMU ist je nach Hersteller unter unterschiedlichen Namen bekannt (u. a. VT-d bei Intel, AMD-Vi bei AMD, SMMU bei ARM). Es ist ein spezielles Gerät implementiert dessen Hauptfunktion ist DMA-Anfragen übersetzen oder filtern (Direct Memory Access) von Geräten auf den physischen Speicher der Maschine. Bei der Virtualisierung wird es verwendet, um Gastsystemen den direkten Zugriff auf Peripheriegeräte wie Ethernet-Adapter, Grafikkarten und Speichercontroller zu ermöglichen.
Welche Vorteile ergeben sich durch die IOMMU-Paravirualisierung?
zuvor, Der Xen-Hypervisor nutzte IOMMU, um den Zugriff umzuleiten von PCI-Geräten und steuert den Zugriff dieser Geräte auf den Speicher. Jedoch, Aus Stabilitäts- und Sicherheitsgründen konnten Gäste nicht direkt auf den IOMMU-Block zugreifen von der Hardware bereitgestellt.
Wir präsentieren eine neue paravirtualisierte IOMMU, die einfach PV-IOMMU heißt. Es implementiert im Wesentlichen die Funktionen, die der Gast von einer IOMMU erwartet, und abstrahiert alle internen Details der Hardware. In Xen haben wir einen neuen Hypercall für solche Operationen hinzugefügt (HYPERVISOR_iommu_op), der verschiedene IOMMU-Operationen bereitstellt, die der Gast verwenden kann (sofern erlaubt).
Trotzdem Es ist gelungen, dem Gast eine Schnittstelle anzubieten um Ihnen den Zugriff auf IOMMU zu ermöglichen, Verwendung einer vereinfachten paravirtualisierten Xen-Infrastruktur, während Hardwaredetails auf niedriger Ebene ausgeblendet werden. Diese Schnittstelle namens PV-IOMMU abstrahiert alle internen Details der Hardware und stellt eine Reihe von IOMMU-Vorgängen bereit, auf die der Gast zugreifen kann, sofern dies zulässig ist. Die Operationen in PV-IOMMU werden als Unteroperationen im Hypercall HYPERVISOR_iommu_op bereitgestellt und sind so gestaltet, dass sie für den Gast bequem sind.
Eine der Hauptfunktionen, die der Host von einer IOMMU erwartet, ist die Möglichkeit, „IOMMU-Domänen“ zu erstellen und zu ändern. Hierbei handelt es sich um eine Reihe von Übersetzungen, die den Speicherkontext erstellen und auf ein Gerät (oder mehrere Geräte) angewendet werden können. Diese Domänen werden in Xen „IOMMU-Kontexte“ genannt, um Verwechslungen mit Xen-Domänen zu vermeiden, bei denen es sich um virtuelle Maschinen handelt.
Zu den verschiedenen Vorteilen, die sich aus der Paravirtualisierung von IOMMU ergeben, zählen die folgenden:
- DMA-Schutz für Dom0: Die Paravirtualisierung von IOMMU ermöglicht den Schutz des direkten Speicherzugriffs (DMA) für die Verwaltungsdomäne (Dom0) in Virtualisierungsumgebungen. Dies trägt zur Verbesserung der Systemsicherheit und -stabilität bei, indem verhindert wird, dass Geräte direkt auf den Systemspeicher zugreifen, was die Integrität von Dom0 gefährden könnte.
- Linux VFIO-Unterstützung: Die Paravirtualisierung von IOMMU erleichtert die Unterstützung einer virtualisierten flexiblen I/O-Infrastruktur für Benutzergeräte (VFIO) in Virtualisierungsumgebungen, sodass Benutzeranwendungen und virtuelle Maschinen direkt auf Hardwaregeräte zugreifen können.
- Erleichtert die Implementierung von SPDK mit Xen: Die Paravirtualisierung von IOMMU ist auch Teil der laufenden Bemühungen, SPDK mit Xen zu unterstützen. Dies öffnet die Tür zu einem neuen schnellen Datenpfad für die Speicherung virtueller Maschinen, der möglicherweise die Speicherleistung in virtualisierten Umgebungen steigern kann.
Darüber hinaus auch Eines der Probleme von Xen soll mit IOMMU behoben werden, seit aktuelloder ermöglicht die Existenz mehrerer IOMMU-Kontexte in einer einzelnen Xen-Domäne. Es wird jedoch über eine Neugestaltung des Xen-IOMMU-Subsystems nachgedacht, um mehrere IOMMU-Kontexte zu berücksichtigen und vorhandene Funktionen zu ändern, um sie zu nutzen. Obwohl ein funktionaler PoC implementiert wurde, der den ersten Ansatz umsetzt, mit gewissen Einschränkungen und unvollständiger Unterstützung, wird erwähnt, dass für die Zukunft an einer vollständigen Neugestaltung des Subsystems gearbeitet wird.
Abschließend sollte erwähnt werden, dass In der aktuellen Entwicklungsphase unterstützt PV-IOMMU nur Intel VT-d, aber es ist geplant, bald Unterstützung für AMD-Vi und SMMUv3 hinzuzufügen. Wenn Sie mehr darüber erfahren möchten, können Sie die Details im einsehen folgenden Link