Els desenvolupadors del projecte XCP-NG van donar a conèixer fa poc, que es troben treballant en un nou projecte el qual té com a nom «PV-IOMMU» i que permet que els sistemes convidats accedeixin a funcions limitades de la IOMMU implementada a través de la paravirtualització a l'entorn Xen.
Bàsicament, PV-IOMMU promet habilitar Dom0 per utilitzar un IOMMU paravirtualitzat, el que ofereix diversos avantatges com a protecció de DMA per a Dom0 i suport per a VFIO de Linux.
Què és IOMMU?
IOMMU conegut per diferents noms segons el fabricant (VT-d a Intel, AMD-Vi a AMD, SMMU a ARM, entre d'altres), és un dispositiu especial implementat la funció principal del qual és traduir o filtrar sol·licituds de DMA (Accés Directe a Memòria) de dispositius a la memòria física de la màquina. A la virtualització, s'utilitza perquè els sistemes convidats puguin accedir directament a dispositius perifèrics com adaptadors d'Ethernet, targetes gràfiques i controladors d'emmagatzematge.
Quins beneficis s'obtenen amb la paravirualització IOMMU?
anteriorment, l'hipervisor Xen feia servir IOMMU per redirigir l'accés de dispositius PCI i controlar l'accés dels dispositius a la memòria. No obstant això, per raons d'estabilitat i seguretat, els convidats no podien accedir directament al bloc IOMMU proporcionat pel maquinari.
Presentem una nova IOMMU paravirtualitzada simplement anomenada PV-IOMMU. Bàsicament implementa les característiques que l'hoste espera d'una IOMMU, abstraient tots els detalls interns del maquinari. A Xen, afegim una nova hipertrucada per a aquestes operacions (que és HYPERVISOR_iommu_op) que proporciona diverses operacions de IOMMU que l'hoste pot utilitzar (si està permès).
Tot i això, s'ha aconseguit oferir una interfície al convidat per permetre accedir a IOMMU, utilitzant una infraestructura paravirtualitzada simplificada de Xen, mentre amaga els detalls del maquinari de baix nivell. Aquesta interfície, anomenada PV-IOMMU, abstrau tots els detalls interns del maquinari i ofereix un conjunt d'operacions IOMMU a què el convidat pot accedir, si se li permet. Les operacions en PV-IOMMU s'exposen com a sub-operacions a la hipertrucada HYPERVISOR_iommu_op, i estan dissenyades de manera que siguin pràctiques per al convidat.
Una de les característiques principals que espera l'hoste d'una IOMMU és la capacitat de crear i modificar «Dominis IOMMU» que és un conjunt de traduccions que fa context de memòria i que es pot aplicar a un dispositiu (o múltiples dispositius). Aquests dominis s'anomenen «Contextos IOMMU» a Xen per evitar confusions amb els dominis Xen que són màquines virtuals.
Entre els diferents beneficis que es destaquen de la paravirtualització IOMMU, s'esmenten els següents:
- Protecció del DMA per a Dom0: La paravirtualització IOMMU permet protegir l'accés directe a memòria (DMA) per al domini d'administració (Dom0) en entorns de virtualització. Això ajuda a millorar la seguretat i estabilitat del sistema en evitar que els dispositius accedeixin directament a la memòria del sistema, cosa que podria comprometre la integritat de Dom0.
- Suport per a VFIO de Linux: La paravirtualització de l'IOMMU facilita el suport per a la infraestructura d'E/S virtualitzada flexible per a dispositius d'usuari (VFIO) en entorns de virtualització, permetent que aplicacions d'usuari i màquines virtuals puguin accedir directament als dispositius de maquinari.
- Facilita la implementació de SPDK amb Xen: La paravirtualització IOMMU també forma part d'un esforç continu per donar suport a SPDK amb Xen. Això obre la porta a un nou datapath ràpid per a l'emmagatzematge de màquines virtuals, cosa que potencialment pot impulsar el rendiment de l'emmagatzematge en entorns virtualitzats.
A més, també es planeja abordar un dels problemes de Xen amb IOMMU, ja que actualment no permet l'existència de múltiples contextos IOMMU en un sol domini Xen. Tot i això, s'està considerant un redisseny del subsistema IOMMU de Xen per tenir en compte múltiples contextos IOMMU i modificar les característiques existents per utilitzar-los. Tot i que s'ha implementat un PoC funcional que implementa el primer enfocament, amb certes limitacions i suport incomplet, s'esmenta que s'està treballant en un redisseny complet del subsistema per al futur.
Finalment, cal esmentar que a la fase actual de desenvolupament, PV-IOMMU només és compatible Intel VT-d, però es té previst afegir aviat suport per a AMD-Vi i SMMUv3. Si estàs interessat en poder conèixer més sobre això, pots consultar els detalls al següent enllaç.