L ogłosili twórcy projektu XCP-NG Ostatnio pracują nad nowym projektem o tej nazwie «PV-IOMMU» i to umożliwia systemom gościnnym dostęp do ograniczonych funkcji IOMMU zaimplementowanych poprzez parawirtualizację w środowisku Xen.
Zasadniczo PV-IOMMU obiecuje umożliwić Dom0 korzystanie z parawirtualnego IOMMU, który oferuje kilka korzyści, takich jak ochrona DMA dla Dom0 i obsługa Linux VFIO.
Co to jest IOMMU?
IOMMU znane pod różnymi nazwami w zależności od producenta (m.in. VT-d w Intelu, AMD-Vi w AMD, SMMU w ARM), Jest to zaimplementowane specjalne urządzenie którego główną funkcją jest tłumacz lub filtruj żądania DMA (Bezpośredni dostęp do pamięci) z urządzeń do pamięci fizycznej maszyny. W wirtualizacji umożliwia systemom gościa bezpośredni dostęp do urządzeń peryferyjnych, takich jak adaptery Ethernet, karty graficzne i kontrolery pamięci masowej.
Jakie korzyści daje parawirualizacja IOMMU?
Poprzednio hiperwizor Xen używał IOMMU do przekierowania dostępu urządzeń PCI i kontrolować dostęp tych urządzeń do pamięci. Jednakże, Ze względów stabilności i bezpieczeństwa goście nie mogli bezpośrednio uzyskać dostępu do bloku IOMMU zapewniane przez sprzęt.
Przedstawiamy nowe parawirtualne IOMMU zwane po prostu PV-IOMMU. Zasadniczo implementuje funkcje, których gość oczekuje od IOMMU, wyodrębniając wszystkie wewnętrzne szczegóły sprzętu. W Xen dodaliśmy nowe hiperwywołanie dla takich operacji (czyli HYPERVISOR_iommu_op), które udostępnia różne operacje IOMMU, z których może korzystać gość (jeśli jest to dozwolone).
Mimo to możliwe było udostępnienie interfejsu gościowi aby umożliwić Ci dostęp do IOMMU, przy użyciu uproszczonej, parawirtualnej infrastruktury Xen, ukrywając szczegóły sprzętu niskiego poziomu. Interfejs ten, zwany PV-IOMMU, wyodrębnia wszystkie wewnętrzne szczegóły sprzętu i zapewnia zestaw operacji IOMMU, do których gość może uzyskać dostęp, jeśli jest to dozwolone. Operacje w PV-IOMMU są widoczne jako podoperacje w hiperwywołaniu HYPERVISOR_iommu_op i są zaprojektowane w sposób wygodny dla gościa.
Jedną z głównych funkcji, których host oczekuje od IOMMU, jest możliwość tworzenia i modyfikowania „domen IOMMU”, które są zestawem tłumaczeń tworzących kontekst pamięci i które można zastosować na urządzeniu (lub wielu urządzeniach). Domeny te nazywane są w Xen „Kontekstami IOMMU”, aby uniknąć pomylenia z domenami Xen, które są maszynami wirtualnymi.
Wśród różnych korzyści, które wyróżniają się z parawirtualizacji IOMMU, wymienia się następujące:
- Ochrona DMA dla Dom0: Parawirtualizacja IOMMU umożliwia ochronę bezpośredniego dostępu do pamięci (DMA) dla domeny zarządzania (Dom0) w środowiskach wirtualizacyjnych. Pomaga to poprawić bezpieczeństwo i stabilność systemu, uniemożliwiając urządzeniom bezpośredni dostęp do pamięci systemowej, co mogłoby zagrozić integralności Dom0.
- Obsługa Linuxa VFIO: Parawirtualizacja IOMMU ułatwia obsługę zwirtualizowanej, elastycznej infrastruktury we/wy dla urządzeń użytkowników (VFIO) w środowiskach wirtualizacyjnych, umożliwiając aplikacjom użytkownika i maszynom wirtualnym bezpośredni dostęp do urządzeń sprzętowych.
- Ułatwia wdrożenie SPDK z Xen: Parawirtualizacja IOMMU jest również częścią ciągłych wysiłków mających na celu wsparcie SPDK za pomocą Xen. Otwiera to drzwi do nowej, szybkiej ścieżki danych dla pamięci maszyn wirtualnych, która może potencjalnie zwiększyć wydajność pamięci w środowiskach zwirtualizowanych.
Oprócz tego również Planuje się, że jeden z problemów Xena zostanie rozwiązany przez IOMMU, od obecnielub pozwala na istnienie wielu kontekstów IOMMU w jednej domenie Xen. Jednakże rozważa się przeprojektowanie podsystemu Xen IOMMU w celu uwzględnienia wielu kontekstów IOMMU i zmodyfikowania istniejących funkcji w celu wykorzystania ich. Chociaż wdrożono funkcjonalny PoC, który implementuje pierwsze podejście, z pewnymi ograniczeniami i niepełnym wsparciem, wspomina się, że trwają prace nad całkowitym przeprojektowaniem podsystemu na przyszłość.
Na koniec należy o tym wspomnieć W obecnej fazie rozwoju PV-IOMMU obsługuje tylko technologię Intel VT-d, ale wkrótce planowane jest dodanie obsługi AMD-Vi i SMMUv3. Jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami w zakładce następujący link.