den utviklere av XCP-NG-prosjektet annonsert Nylig jobber de med et nytt prosjekt som har navnet «PV-IOMMU» og som lar gjestesystemer få tilgang til begrensede funksjoner til IOMMU implementert gjennom paravirtualisering i Xen-miljøet.
I utgangspunktet PV-IOMMU lover å gjøre det mulig for Dom0 å bruke en paravirtualisert IOMMU, som gir flere fordeler som DMA-beskyttelse for Dom0 og støtte for Linux VFIO.
Hva er IOMMU?
IOMMU kjent under forskjellige navn avhengig av produsenten (VT-d i Intel, AMD-Vi i AMD, SMMU i ARM, blant andre), Det er en spesiell enhet implementert hvis hovedfunksjon er oversette eller filtrere DMA-forespørsler (Direkte minnetilgang) fra enheter til det fysiske minnet til maskinen. I virtualisering brukes det til å tillate gjestesystemer å få direkte tilgang til eksterne enheter som Ethernet-adaptere, grafikkort og lagringskontrollere.
Hvilke fordeler oppnås med IOMMU paraviralisering?
tidligere, Xen-hypervisoren brukte IOMMU for å omdirigere tilgang av PCI-enheter og kontrollere tilgangen til disse enhetene til minnet. Derimot, Av stabilitets- og sikkerhetsgrunner kunne ikke gjestene få direkte tilgang til IOMMU-blokken levert av maskinvaren.
Vi presenterer en ny paravirtualisert IOMMU ganske enkelt kalt PV-IOMMU. Den implementerer i utgangspunktet funksjonene som gjesten forventer fra en IOMMU, og abstraherer alle de interne detaljene til maskinvaren. I Xen la vi til et nytt hyperkall for slike operasjoner (som er HYPERVISOR_iommu_op) som gir ulike IOMMU-operasjoner som gjesten kan bruke (hvis tillatt).
Til tross for dette, det har vært mulig å tilby et grensesnitt til gjesten for å gi deg tilgang til IOMMU, ved hjelp av en forenklet Xen paravirtualisert infrastruktur, mens de skjuler maskinvaredetaljer på lavt nivå. Dette grensesnittet, kalt PV-IOMMU, abstraherer alle interne detaljer om maskinvaren og gir et sett med IOMMU-operasjoner som gjesten kan få tilgang til, hvis tillatt. Operasjonene i PV-IOMMU er eksponert som underoperasjoner i HYPERVISOR_iommu_op hypercall, og er utformet på en måte som er praktisk for gjesten.
En av hovedfunksjonene som verten forventer av en IOMMU er muligheten til å lage og endre "IOMMU Domains" som er et sett med oversettelser som skaper minnekontekst og som kan brukes på en enhet (eller flere enheter). Disse domenene kalles "IOMMU Contexts" i Xen for å unngå forvirring med Xen-domener som er virtuelle maskiner.
Blant de forskjellige fordelene som skiller seg ut fra IOMMU paravirtualisering, nevnes følgende:
- DMA-beskyttelse for Dom0: IOMMU paravirtualisering muliggjør direkte minnetilgang (DMA) beskyttelse for administrasjonsdomenet (Dom0) i virtualiseringsmiljøer. Dette bidrar til å forbedre systemsikkerheten og stabiliteten ved å forhindre at enheter får direkte tilgang til systemminnet, noe som kan kompromittere integriteten til Dom0.
- Linux VFIO-støtte: IOMMU paravirtualisering letter støtte for virtualisert fleksibel I/O-infrastruktur for brukerenheter (VFIO) i virtualiseringsmiljøer, slik at brukerapplikasjoner og virtuelle maskiner kan få direkte tilgang til maskinvareenheter.
- Gjør det enkelt å implementere SPDK med Xen: IOMMU paravirtualisering er også en del av en pågående innsats for å støtte SPDK med Xen. Dette åpner døren til en ny rask databane for virtuell maskinlagring, som potensielt kan øke lagringsytelsen i virtualiserte miljøer.
I tillegg til det også et av Xens problemer er planlagt tatt opp med IOMMU, siden nåeller tillater eksistensen av flere IOMMU-kontekster i et enkelt Xen-domene. Imidlertid vurderes en redesign av Xen IOMMU-delsystemet for å ta hensyn til flere IOMMU-kontekster og modifisere eksisterende funksjoner for å bruke dem. Selv om en funksjonell PoC som implementerer den første tilnærmingen er implementert, med visse begrensninger og ufullstendig støtte, nevnes det at det jobbes med en fullstendig redesign av delsystemet for fremtiden.
Til slutt skal det nevnes at I den nåværende utviklingsfasen støtter PV-IOMMU kun Intel VT-d, men støtte for AMD-Vi og SMMUv3 er planlagt lagt til snart. Hvis du er interessert i å lære mer om det, kan du se detaljene i følgende lenke.