PV-IOMMU, un meccanismo di paravirtualizzazione Xen IOMMU

Il logo Xen

I annunciati gli sviluppatori del progetto XCP-NG Recentemente stanno lavorando a un nuovo progetto che porta questo nome «PV-IOMMU» e che consente ai sistemi ospiti di accedere a funzioni limitate dell'IOMMU implementate tramite paravirtualizzazione in ambiente Xen.

Fondamentalmente, PV-IOMMU promette di consentire a Dom0 di utilizzare un IOMMU paravirtualizzato, che offre numerosi vantaggi come la protezione DMA per Dom0 e il supporto per Linux VFIO.

Cos'è l'IOMMU?

IOMMU conosciuto con nomi diversi a seconda del produttore (VT-d in Intel, AMD-Vi in AMD, SMMU in ARM, tra gli altri), È un dispositivo speciale implementato la cui funzione principale è tradurre o filtrare le richieste DMA (Accesso diretto alla memoria) dai dispositivi alla memoria fisica della macchina. Nella virtualizzazione, viene utilizzato per consentire ai sistemi guest di accedere direttamente ai dispositivi periferici come adattatori Ethernet, schede grafiche e controller di archiviazione.

Quali benefici si ottengono con la paravirualizzazione di IOMMU?

in precedenza, l'hypervisor Xen ha utilizzato IOMMU per reindirizzare l'accesso dei dispositivi PCI e controllarne l'accesso alla memoria. Tuttavia, Per ragioni di stabilità e sicurezza, gli ospiti non potevano accedere direttamente al blocco IOMMU fornito dall'hardware.

Presentiamo un nuovo IOMMU paravirtualizzato chiamato semplicemente PV-IOMMU. Fondamentalmente implementa le funzionalità che l'ospite si aspetta da un IOMMU, astraendo tutti i dettagli interni dell'hardware. In Xen abbiamo aggiunto una nuova hypercall per tali operazioni (che è HYPERVISOR_iommu_op) che fornisce varie operazioni IOMMU che l'ospite può utilizzare (se consentito).

Nonostante questo, è stato possibile offrire un'interfaccia all'ospite per consentirti di accedere a IOMMU, utilizzando un'infrastruttura paravirtualizzata Xen semplificata, nascondendo i dettagli hardware di basso livello. Questa interfaccia, chiamata PV-IOMMU, astrae tutti i dettagli interni dell'hardware e fornisce una serie di operazioni IOMMU a cui l'ospite può accedere, se consentito. Le operazioni in PV-IOMMU sono esposte come operazioni secondarie nell'hypercall HYPERVISOR_iommu_op e sono progettate in modo conveniente per l'ospite.

Una delle caratteristiche principali che l'host si aspetta da un IOMMU è la capacità di creare e modificare "Domini IOMMU" che sono un insieme di traduzioni che creano contesto di memoria e che possono essere applicate a un dispositivo (o più dispositivi). Questi domini sono chiamati "Contesti IOMMU" in Xen per evitare confusione con i domini Xen che sono macchine virtuali.

Tra i diversi vantaggi che risaltano dalla paravirtualizzazione di IOMMU, si menzionano i seguenti:

  • Protezione DMA per Dom0: La paravirtualizzazione IOMMU consente la protezione dell'accesso diretto alla memoria (DMA) per il dominio di gestione (Dom0) negli ambienti di virtualizzazione. Ciò aiuta a migliorare la sicurezza e la stabilità del sistema impedendo ai dispositivi di accedere direttamente alla memoria di sistema, cosa che potrebbe compromettere l'integrità di Dom0.
  • Supporto VFIO per Linux: La paravirtualizzazione IOMMU facilita il supporto per l'infrastruttura I/O flessibile virtualizzata per i dispositivi utente (VFIO) negli ambienti di virtualizzazione, consentendo alle applicazioni utente e alle macchine virtuali di accedere direttamente ai dispositivi hardware.
  • Semplifica l'implementazione di SPDK con Xen: Anche la paravirtualizzazione di IOMMU fa parte di uno sforzo continuo per supportare SPDK con Xen. Ciò apre le porte a un nuovo percorso dati veloce per lo storage delle macchine virtuali, che può potenzialmente aumentare le prestazioni di storage negli ambienti virtualizzati.

Oltre a questo, anche uno dei problemi di Xen dovrebbe essere risolto con IOMMU, dal momento che attualmenteo consente l'esistenza di più contesti IOMMU in un singolo dominio Xen. Tuttavia, si sta prendendo in considerazione una riprogettazione del sottosistema Xen IOMMU per tenere conto di più contesti IOMMU e modificare le funzionalità esistenti per utilizzarli. Sebbene sia stato implementato un PoC funzionale che implementa il primo approccio, con alcune limitazioni e un supporto incompleto, si segnala che per il futuro si sta lavorando ad una riprogettazione completa del sottosistema.

Infine, va detto che Nell'attuale fase di sviluppo, PV-IOMMU supporta solo Intel VT-d, ma è previsto che presto venga aggiunto il supporto per AMD-Vi e SMMUv3. Se sei interessato a saperne di più, puoi consultare i dettagli nel seguente link