25
2023
05
22:29:53

对 ”Intel Virtualization Technology for Directed I/O (VT-d)的总结

最近在调研有关GPU虚拟化的内容,在阅读了"A Full GPU Virtualization Solution with Mediated Pass-Through"之后,对其中提到的"Directed pass-through"、“Mediated pass-through”、“API forwarding”、“Device emulation"产生了一定的疑惑,遂顺着论文中提到的参考文献对这些部分进行了了解。关于对VT-d的内容,是第一次了解,具体内容,均来自virtualization-technology-for-directed-io-vt-d-enhancing-intel-platforms-for-efficient-virtualization-of-io-devices.html" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line: none; border-bottom: 1px solid rgb(128, 128, 128); cursor: pointer;">vt-d的官方文档,可以直接到里面去看相关内容。

下面对有关vt-d的内容进行简要概述:vt-d技术是一种让虚拟机能够直接控制设备,通过硬件辅助重定向来保证其安全性和可靠性,通过直接给虚拟机分配设备来保证其I/O性能的方法。具体内容如下。

虚拟化解决方案能够允许多个操作系统和应用分别运行在一个计算机的独立的分区上。使用去你华能力,一个物理计算机系统能够像多个虚拟系统一样运行。Intel Virtualization Technology(Intel VT)通过为虚拟机增加硬件支持,来提升虚拟机的性能和健壮性。

Intel Virtualization Technology for Directed I/O(VT-d)通过为虚拟技术提供硬件支持,扩展了Intel的虚拟化技术(上文提到的Intel VT)。VT-d增加了对I/O设备虚拟化的支持。(这是具体的地方,vt-d相对于原来的intel-vt就是增加了对I/O设备虚拟化的支持)。

Intel VT-d能够提高系统的安全性和可靠性,同时提高I/O设备在虚拟化环境中的性能。这能够帮助开发人员降低成本,通过降低潜在的闲置时间和增加吞吐率。

Introduction

在创建虚拟机时,vmm(又名hypervisor)对宿主机的硬件具有完全的掌握。VMM为客户机软件(虚拟机的操作系统及其上面运行的应用)提供了对物理机硬件资源的抽象,并且能够提供对处理器、内存、中断、I/O等资源的选择性控制。

VMM支持对来自虚拟机软件I/O请求的虚拟化。这主要通过两种已知的模型来完成:对硬件设备的仿真、半虚拟化。对任何I/O设备虚拟化模型的可靠性要求都要求VMM能够保证相关虚拟机仅对自己需要访问的资源进行访问。

VT-d帮助VMM更好地利用硬件资源,通过提升应用的兼容性和可靠性,并且提供额外的安全、隔离、I/O性能。通过利用集成在Intel的芯片集中的VT-d硬件辅助,VMM能够实现更高层度的性能、可用性、可靠性、安全性。

Intel的VT-d为VMM提供了以下两种能力:

  • 利用硬件辅助重定向保证设备的隔离性,来提高可靠性和安全性。

  • 通过直接对硬件设备的分配,提高I/O性能和可用性

下面对硬件辅助重定向和对硬件设备的直接分配进行介绍。

Hardware Assisted Remapping for Protection

Intel VT-d通过限制设备的直接内存访问(DMA)的访问区域,使之只能访问预先分配的区域来提供保护。这是通过被称为DMA-remapping的硬件特性来实现的。芯片中的VT-d DMA重定向硬件逻辑位于能够DMA的外围I/O设备与计算机的物理内存之间。它是通过计算机系统软件(1)来进行编程的。在虚拟化环境中,系统软件(1处所提到的系统软件)就是VMM。在原生的没有虚拟化软件的环境中,系统软件(1处所提到的系统软件)就是原生操作系统。DMA重定向将输入的DMA请求的地址翻译为正确的物理内存地址,并基于由系统软件提供的信息,检查是否具有访问相应物理地址的权限。

Intel VT-d使系统软件能够创造多个DMA 保护域。每一个保护域就是一个包含物理机物理内存子集的隔离的环境。取决于软件使用模型,一个DMA保护域可能代表分配给虚拟机的内存,或者运行在虚拟机中的driver分配的DMA内存或者是vmm的一部分。VMT-d架构使系统软件能够将一个或多个I/O设备赋给一个保护域。DMA隔离是通过利用地址转换表,来限制I/O设备对其没有权限访问的保护域。这提供了每一个虚拟机的计算资源之间的必要隔离。

当I/O设备想要访问某个内存位置时,DMA重定向硬件会检查地址转换表,来判断该设备是否对那块内存区域具有访问权限。如果设备想要访问超出其允许访问范围的内存,DMA 重定向硬件会阻塞该访问请求,并且向系统软件报告该错误。 如图1所示。

为了提高性能,频繁使用的remapping-structure entries,例如I/O设备和保护域之间的映射、用于DMA地址翻译的页表入口都会被缓存。VT-d也支持Peripheral Component Interconnect Special Interest Group (PCI-SIG) Address Translation Services (ATS)指定,指定了允许对设备特定的DMA地址转换进行缓存的标准方式。

I/O performance through direct Assignment

虚拟化允许在一个服务器上创造出多个虚拟机。这种方法最大化了服务器的硬件利用率,但是服务器应用需要进行很多I/O。基于软件的I/O虚拟化方法使用I/O设备的仿真。通过仿真层,vmm为虚拟机提供了对于硬件设备的一直视图,设备能够在多个VM之间共享。但是,这种方法会降低I/O设备的I/O性能。VT-d能够通过直接将设备赋给VM的方法来解决虚拟化I/O设备的本地性能丢失。

在这个模型中,VMM通过显示自身仅有一些控制功能,来让设备能够对其分区进行直接分配。没有采用对来自一个分区的全部I/O请求调用VMM,只有在虚拟机软件访问会对系统功能和隔离性进行产生影响的保护资源时(I/O配置访问信息、中断管理等),才会调用VMM。

为了支持对于I/O设备的直接VM分配,一个VMM必须要加强对于DMA请求的隔离。I/O设备能够分配给某个域,DMA 重定向硬件能被用来限制从I/O设备到由其保护域拥有的物理内存的DMA请求。

当一个VM在其VMM上启动时,被提供给客户机os的作为其物理内存范围的地址空间,被称为客户机物理内存(GPA),可能与宿主机物理地址(HPA)不一样。能够进行DMA的设备需要HPA来传输来自和到物理内存区域的数据。然而,在直接分配模型中,客户机操作系统的设备驱动管理设备,为DMA capable设备提供GPA,而不是其请求的HPA。DMA重定向硬件能够用来进行相应的转换。由于GPA是VMM提供的,所以VMM知道从GPA到HPA的转化。VMM通过GPA到HPA的转换信息,编程了DMA重定向硬件。通过重映射技术,数据能够直接被传输到虚拟机的合适buffer,而不是通过中间的软件仿真层。

图2描述了基于I/O的软件仿真和基于I/O的硬件直接分配对比图。在基于I/O的仿真中,软件层控制虚拟机和设备之间的所有I/O。

在直接分配模型中,未经修改的虚拟机操作系统驱动控制其被分配的设备。在接收路径中,DMA重映射硬件把虚拟机操作系统驱动提供的GPA转化为正确的HPA,因此,数据可以被直接传输到虚拟机操作系统的buffer。VT-d支持的中断重映射允许中断控制被直接赋给VM,进一步减少VMM开销。

Intel VT-d Usage Models

OS和VMM能够利用VT-d的I/O内存管理功能来隔离设备到不同的保护域,用以防止设备进行任何会影响系统功能的恶意DMA。

VT-d能够成为创建服务器中安全和隔离的工作分区的基础。一个虚拟的应用是一个自包含的执行环境解决方案,用于优化到应用提前定义的应用或者服务,像病毒扫描和固件引用或者应用的硬件管理。

在虚拟机环境中的虚拟机能够被分成不同的保护域,从应用端到设备端。这样,一个保护域中的I/O设备出现问题,就不会影响其他保护域中的。

总结

VT-d主要是通过Hardware Assisted Remapping和Direct Assignment来分别对其安全性和性能进行改进。相对于device emulated方法,主要是少了一层虚拟层,对硬件的驱动直接就位于guest os中,直接通过虚拟机来控制真实设备,性能有优势。然后安全性的方面,里面提到了domain,是指内存中I/O设备只能DMA其中的几个内存保护域,也可以理解成,只有位于那个内存保护域中的应用才能访问相应的设备。考虑到虚拟机也是通过内存分隔,来实现隔离,这样就可以实现虚拟机的设备之间互不影响。但是这种方法,也有缺陷,影响虚拟机之间对设备的共享。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/4190.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: