롯 XCP-NG 프로젝트 개발자 발표 최근에 그들은 이름을 가진 새로운 프로젝트를 진행하고 있습니다. «PV-IOMMU» 이를 통해 게스트 시스템은 Xen 환경의 반가상화를 통해 구현된 IOMMU의 제한된 기능에 액세스할 수 있습니다.
기본적으로 PV-IOMMU Dom0이 반가상화된 IOMMU를 사용할 수 있도록 약속합니다.이는 Dom0에 대한 DMA 보호 및 Linux VFIO에 대한 지원과 같은 여러 가지 이점을 제공합니다.
IOMMU란 무엇인가요?
제조업체에 따라 다른 이름으로 알려진 IOMMU(Intel의 경우 VT-d, AMD의 경우 AMD-Vi, ARM의 경우 SMMU 등) 구현된 특수 장치입니다. 누구의 주요 기능은 DMA 요청 번역 또는 필터링 (직접 메모리 액세스) 장치에서 머신의 물리적 메모리로. 가상화에서는 게스트 시스템이 이더넷 어댑터, 그래픽 카드, 스토리지 컨트롤러와 같은 주변 장치에 직접 액세스할 수 있도록 하는 데 사용됩니다.
IOMMU 반가상화를 통해 어떤 이점을 얻을 수 있습니까?
이전에는 Xen 하이퍼바이저는 IOMMU를 사용하여 액세스를 리디렉션했습니다. PCI 장치를 제어하고 이러한 장치의 메모리 액세스를 제어합니다. 하지만, 안정성과 보안상의 이유로 게스트는 IOMMU 블록에 직접 액세스할 수 없습니다. 하드웨어에서 제공됩니다.
우리는 간단히 PV-IOMMU라고 불리는 새로운 반가상화 IOMMU를 제시합니다. 기본적으로 게스트가 IOMMU에서 기대하는 기능을 구현하여 하드웨어의 모든 내부 세부 정보를 추상화합니다. Xen에서는 게스트가 사용할 수 있는(허용되는 경우) 다양한 IOMMU 작업을 제공하는 이러한 작업(HYPERVISOR_iommu_op)에 대한 새로운 하이퍼콜을 추가했습니다.
그럼에도 불구하고 게스트에게 인터페이스를 제공하는 것이 가능해졌습니다. IOMMU에 액세스할 수 있도록, 단순화된 Xen 반가상화 인프라 사용, 낮은 수준의 하드웨어 세부 정보는 숨깁니다. PV-IOMMU라고 하는 이 인터페이스는 하드웨어의 모든 내부 세부 정보를 추상화하고 허용되는 경우 게스트가 액세스할 수 있는 일련의 IOMMU 작업을 제공합니다. PV-IOMMU의 작업은 HYPERVISOR_iommu_op 하이퍼콜의 하위 작업으로 노출되며 게스트에게 편리한 방식으로 설계되었습니다.
호스트가 IOMMU에서 기대하는 주요 기능 중 하나는 메모리 컨텍스트를 만들고 장치(또는 여러 장치)에 적용할 수 있는 변환 집합인 "IOMMU 도메인"을 생성하고 수정하는 기능입니다. 가상 머신인 Xen 도메인과의 혼동을 피하기 위해 Xen에서는 이러한 도메인을 "IOMMU 컨텍스트"라고 합니다.
IOMMU 반가상화의 다양한 이점은 다음과 같습니다.
- Dom0에 대한 DMA 보호: IOMMU 반가상화를 사용하면 가상화 환경에서 관리 도메인(Dom0)에 대한 DMA(직접 메모리 액세스) 보호가 가능합니다. 이는 Dom0의 무결성을 손상시킬 수 있는 시스템 메모리에 장치가 직접 액세스하는 것을 방지하여 시스템 보안과 안정성을 향상시키는 데 도움이 됩니다.
- 리눅스 VFIO 지원: IOMMU 반가상화는 가상화 환경에서 사용자 장치용 가상화된 유연한 I/O 인프라(VFIO)에 대한 지원을 촉진하여 사용자 애플리케이션과 가상 머신이 하드웨어 장치에 직접 액세스할 수 있도록 합니다.
- Xen을 사용하여 SPDK를 쉽게 구현할 수 있습니다. IOMMU 반가상화는 Xen을 통해 SPDK를 지원하려는 지속적인 노력의 일부이기도 합니다. 이는 가상 머신 스토리지를 위한 새롭고 빠른 데이터 경로를 열어 잠재적으로 가상화된 환경에서 스토리지 성능을 향상시킬 수 있습니다.
그 외에도, Xen의 문제 중 하나는 IOMMU를 통해 해결될 예정입니다., 현재부터또는 단일 Xen 도메인에 여러 IOMMU 컨텍스트가 존재할 수 있도록 허용합니다. 그러나 여러 IOMMU 컨텍스트를 설명하고 이를 활용하기 위해 기존 기능을 수정하기 위해 Xen IOMMU 하위 시스템을 재설계하는 것이 고려되고 있습니다. 첫 번째 접근 방식을 구현하는 기능적 PoC가 구현되었지만 특정 제한 사항과 불완전한 지원이 있지만 향후 하위 시스템의 완전한 재설계가 진행되고 있다고 언급됩니다.
마지막으로 현재 개발 단계에서 PV-IOMMU는 Intel VT-d만 지원합니다.하지만 AMD-Vi 및 SMMUv3에 대한 지원은 곧 추가될 예정입니다. 이에 대해 더 자세히 알고 싶으시면, 다음 링크.