PV-IOMMU, Xen IOMMU -paravirtualisointimekanismi

Xen logo

Los XCP-NG-projektin kehittäjät ilmoittivat Äskettäin he työskentelevät uuden projektin parissa, jolla on nimi "PV-IOMMU" ja joka sallii vierasjärjestelmien pääsyn rajoitettuihin IOMMU:n toimintoihin, jotka on toteutettu paravirtualisoinnilla Xen-ympäristössä.

Periaatteessa PV-IOMMU lupaa antaa Dom0:lle mahdollisuuden käyttää paravirtualisoitua IOMMU:ta, joka tarjoaa useita etuja, kuten DMA-suojauksen Dom0:lle ja tuen Linux VFIO:lle.

Mikä on IOMMU?

IOMMU tunnetaan eri nimillä valmistajasta riippuen (mm. VT-d Intelissä, AMD-Vi AMD:ssä, SMMU ARM:ssa), Se on toteutettu erityinen laite jonka päätehtävä on kääntää tai suodattaa DMA-pyynnöt (Direct Memory Access) laitteista laitteen fyysiseen muistiin. Virtualisoinnissa sitä käytetään sallimaan vierasjärjestelmien suora pääsy oheislaitteisiin, kuten Ethernet-sovittimiin, näytönohjainkortteihin ja tallennusohjaimiin.

Mitä etuja IOMMU-paravirualisoinnilla saavutetaan?

Aiemmin, Xen-hypervisor käytti IOMMU:ta pääsyn uudelleenohjaamiseen PCI-laitteita ja valvoa näiden laitteiden pääsyä muistiin. Kuitenkin, Vakaus- ja turvallisuussyistä vieraat eivät voineet päästä suoraan IOMMU-kortteliin laitteiston tarjoama.

Esittelemme uuden paravirtualisoidun IOMMU:n nimeltä PV-IOMMU. Se toteuttaa pohjimmiltaan ne ominaisuudet, joita vieras odottaa IOMMU:lta, ja tiivistää kaikki laitteiston sisäiset yksityiskohdat. Xenissä lisäsimme tällaisille toiminnoille uuden hyperkutsun (joka on HYPERVISOR_iommu_op), joka tarjoaa erilaisia ​​IOMMU-toimintoja, joita vieras voi käyttää (jos sallittu).

Tästä huolimatta Vieraalle on voitu tarjota käyttöliittymä jotta voit käyttää IOMMU:ta, käyttämällä yksinkertaistettua Xen-paravirtualisoitua infrastruktuuria, piilottaen samalla matalan tason laitteiston yksityiskohdat. Tämä käyttöliittymä, nimeltään PV-IOMMU, tiivistää kaikki laitteiston sisäiset tiedot ja tarjoaa joukon IOMMU-toimintoja, joita vieras voi käyttää, jos se on sallittu. PV-IOMMU:n toiminnot näkyvät alioperaatioina HYPERVISOR_iommu_op-hyperkutsussa, ja ne on suunniteltu vieraalle sopivalla tavalla.

Yksi tärkeimmistä ominaisuuksista, joita isäntä odottaa IOMMU:lta, on kyky luoda ja muokata "IOMMU-verkkotunnuksia", jotka ovat joukko käännöksiä, jotka tekevät muistikontekstin ja joita voidaan soveltaa laitteeseen (tai useisiin laitteisiin). Näitä verkkotunnuksia kutsutaan Xenissä "IOMMU-konteksteiksi", jotta vältetään sekaannukset Xen-verkkotunnuksiin, jotka ovat virtuaalikoneita.

IOMMU-paravirtualisoinnista erottuvien etujen joukossa mainitaan seuraavat:

  • DMA-suojaus Dom0:lle: IOMMU-paravirtualisointi mahdollistaa suoran muistin käytön (DMA) suojauksen hallinta-alueelle (Dom0) virtualisointiympäristöissä. Tämä auttaa parantamaan järjestelmän turvallisuutta ja vakautta estämällä laitteita pääsemästä suoraan järjestelmämuistiin, mikä voi vaarantaa Dom0:n eheyden.
  • Linux VFIO tuki: IOMMU-paravirtualisointi mahdollistaa virtualisoidun joustavan I/O-infrastruktuurin tukemisen käyttäjälaitteille (VFIO) virtualisointiympäristöissä, jolloin käyttäjäsovellukset ja virtuaalikoneet voivat käyttää suoraan laitteistolaitteita.
  • Helpottaa SPDK:n käyttöönottoa Xenin kanssa: IOMMU-paravirtualisointi on myös osa jatkuvaa pyrkimystä tukea SPDK:ta Xenin kanssa. Tämä avaa oven uudelle nopealle datapolulle virtuaalikoneen tallennusta varten, mikä voi mahdollisesti parantaa tallennustehoa virtualisoiduissa ympäristöissä.

Sen lisäksi myös yksi Xenin ongelmista on tarkoitus ratkaista IOMMU:n kanssa, tällä hetkellätai sallii useiden IOMMU-kontekstien olemassaolon yhdessä Xen-verkkotunnuksessa. Xen IOMMU -alijärjestelmän uudelleensuunnittelua harkitaan kuitenkin useiden IOMMU-kontekstien huomioon ottamiseksi ja olemassa olevien ominaisuuksien muokkaamista niiden hyödyntämiseksi. Vaikka toiminnallinen PoC, joka toteuttaa ensimmäisen lähestymistavan, on otettu käyttöön tietyin rajoituksin ja puutteellisella tuella, mutta mainitaan, että osajärjestelmän täydellistä uudelleensuunnittelua työstetään tulevaisuutta varten.

Lopuksi on mainittava, että Nykyisessä kehitysvaiheessa PV-IOMMU tukee vain Intel VT-d:tä, mutta tuki AMD-Vi:lle ja SMMUv3:lle on tarkoitus lisätä pian. Jos olet kiinnostunut oppimaan siitä lisää, voit tutustua yksityiskohtiin osoitteessa seuraava linkki.