PV-IOMMU, en Xen IOMMU paravirtualiseringsmekanisme

Xen logo

masse Udviklere af XCP-NG-projektet annonceret For nylig arbejder de på et nyt projekt, som har navnet «PV-IOMMU» og som giver gæstesystemer adgang til begrænsede funktioner i IOMMU implementeret gennem paravirtualisering i Xen-miljøet.

Dybest set PV-IOMMU lover at gøre det muligt for Dom0 at bruge en paravirtualiseret IOMMU, som giver flere fordele såsom DMA-beskyttelse til Dom0 og understøttelse af Linux VFIO.

Hvad er IOMMU?

IOMMU kendt under forskellige navne afhængigt af producenten (VT-d i Intel, AMD-Vi i AMD, SMMU i ARM, blandt andre), Det er en speciel enhed implementeret hvis hovedfunktion er oversætte eller filtrere DMA-anmodninger (Direkte hukommelsesadgang) fra enheder til maskinens fysiske hukommelse. I virtualisering bruges det til at give gæstesystemer direkte adgang til perifere enheder såsom Ethernet-adaptere, grafikkort og lagercontrollere.

Hvilke fordele opnås med IOMMU paravirualisering?

tidligere, Xen-hypervisoren brugte IOMMU til at omdirigere adgang af PCI-enheder og kontroller disse enheders adgang til hukommelsen. Imidlertid, Af stabilitets- og sikkerhedsmæssige årsager kunne gæster ikke få direkte adgang til IOMMU-blokken leveret af hardwaren.

Vi præsenterer en ny paravirtualiseret IOMMU blot kaldet PV-IOMMU. Det implementerer dybest set de funktioner, som gæsten forventer af en IOMMU, og abstraherer alle de interne detaljer i hardwaren. I Xen tilføjede vi et nyt hyperkald til sådanne operationer (som er HYPERVISOR_iommu_op), der giver forskellige IOMMU-operationer, som gæsten kan bruge (hvis tilladt).

På trods af dette, det har været muligt at tilbyde en grænseflade til gæsten for at give dig adgang til IOMMU, ved hjælp af en forenklet Xen paravirtualiseret infrastruktur, mens de skjuler hardwaredetaljer på lavt niveau. Denne grænseflade, kaldet PV-IOMMU, abstraherer alle interne detaljer i hardwaren og giver et sæt IOMMU-operationer, som gæsten kan få adgang til, hvis det er tilladt. Operationerne i PV-IOMMU er eksponeret som underoperationer i HYPERVISOR_iommu_op hyperkaldet, og er designet på en måde, der er bekvem for gæsten.

En af de vigtigste funktioner, som værten forventer af en IOMMU, er evnen til at oprette og ændre "IOMMU Domains", som er et sæt oversættelser, der skaber hukommelseskontekst, og som kan anvendes på en enhed (eller flere enheder). Disse domæner kaldes "IOMMU Contexts" i Xen for at undgå forveksling med Xen-domæner, som er virtuelle maskiner.

Blandt de forskellige fordele, der skiller sig ud fra IOMMU paravirtualisering, er følgende nævnt:

  • DMA beskyttelse til Dom0: IOMMU paravirtualisering muliggør direkte hukommelsesadgang (DMA) beskyttelse for administrationsdomænet (Dom0) i virtualiseringsmiljøer. Dette hjælper med at forbedre systemets sikkerhed og stabilitet ved at forhindre enheder i at få direkte adgang til systemhukommelsen, hvilket kan kompromittere Dom0's integritet.
  • Linux VFIO support: IOMMU paravirtualisering letter understøttelse af virtualiseret fleksibel I/O-infrastruktur for brugerenheder (VFIO) i virtualiseringsmiljøer, hvilket tillader brugerapplikationer og virtuelle maskiner at få direkte adgang til hardwareenheder.
  • Gør det nemt at implementere SPDK med Xen: IOMMU paravirtualisering er også en del af en igangværende indsats for at understøtte SPDK med Xen. Dette åbner døren til en ny hurtig datasti til lagring af virtuel maskine, som potentielt kan øge lagringsydelsen i virtualiserede miljøer.

Ud over det også et af Xens problemer er planlagt til at blive løst med IOMMU, siden pteller tillader eksistensen af ​​flere IOMMU-kontekster i et enkelt Xen-domæne. Imidlertid overvejes et redesign af Xen IOMMU-undersystemet for at tage højde for flere IOMMU-kontekster og ændre eksisterende funktioner for at gøre brug af dem. Selvom der er implementeret en funktionel PoC, der implementerer den første tilgang, med visse begrænsninger og ufuldstændig support, nævnes det, at der arbejdes på et komplet redesign af delsystemet for fremtiden.

Endelig skal det nævnes, at I den nuværende udviklingsfase understøtter PV-IOMMU kun Intel VT-d, men understøttelse af AMD-Vi og SMMUv3 er planlagt til at blive tilføjet snart. Hvis du er interesseret i at lære mere om det, kan du se detaljerne i følgende link.