英特尔® I/O 虚拟分配技术(VT-d):增强英特尔平台性能,高效虚拟化 I/O 设备

提交新文章

2007年11月06日 09:56


虚拟化解决方案支持多个操作系统和应用在同一台计算机的多个独立分区中运行。借助虚拟化,一台物理计算机系统可以作为多个“虚拟”系统使用。英特尔® 虚拟化技术(英特尔® VT)为高效的虚拟机增加了硬件支持,从而改进了当前虚拟机解决方案的性能和稳固性。

英特尔® I/O 虚拟分配技术(VT-d)通过为虚拟化解决方案提供硬件辅助扩展了英特尔的虚拟化技术(VT)发展蓝图。VT-d 不仅能够继续支持 IA-32 (VT-x)和英特尔® 安腾® 处理器(VT-i)的虚拟化,还为I/O 设备提供了全新的虚拟化支持。

英特尔® VT-d 可以帮助最终用户改进系统的安全性和可靠性,并提升虚拟环境中 I/O 设备的性能。这些特性将帮助 IT 经理更好地利用数据中心资源,缩短潜在的停机时间并提高生产量,从而降低总拥有成本。

简介

为了创建虚拟机(或客户机),虚拟机监视器(VMM)aka hypervisor 扮演了主机角色,全面控制平台硬件。VMM 向客户机软件(操作系统和应用软件)提供物理机抽象,并可保持对处理器资源、物理内存、中断管理和数据 I/O 的选择性控制。

VMM 可支持客户机软件的 I/O 虚拟化请求。这可利用以下两种常见模式之一在软件中完成:设备模拟或半虚拟化。上述或任何 I/O 设备虚拟化(IOV)模式的一般可靠性和保护要求就是隔离并限制设备仅访问那些由 VMM 分配给该设备的资源。

英特尔 VT-d 是英特尔虚拟化技术硬件架构的最新成员。VT-d 能够改进应用的兼容性和可靠性,并提供更高水平的可管理性、安全性、隔离性和 I/O 性能,从而帮助 VMM 更好地利用硬件。通过使用构建在英特尔芯片组内部的 VT-d 硬件辅助,VMM 能够获得更出色的性能、可用性、可靠性、安全性和可信度。

英特尔® I/O 虚拟分配技术可赋予 VMM 软件以下能力:

  • 使用硬件辅助重映射进行设备隔离,从而提升可靠性和安全性
  • 通过直接分配设备来提高 I/O 性能和可用性


通过硬件辅助重映射实现保护

英特尔 VT-d 通过限制设备对于预先分配的域或物理内存区域进行直接内存访问(DMA) 来进行保护。这是通过一种称为 DMA 重映射的硬件能力来实现的。芯片组中的 VT-d DMA 重映射硬件逻辑位于支持 DMA 的外设 I/O 设备和计算机的物理内存之间,其编程由计算机系统软件完成。在虚拟化环境中,系统软件即为 VMM。在没有虚拟化软件的本地环境中,系统软件就是本地操作系统。DMA 重映射可将接收的 DMA 请求的地址转换为相应的物理内存地址,并根据系统软件提供的信息对访问此物理地址的许可进行检查。

英特尔 VT-d 支持系统软件创建多个 DMA 保护域。每个保护域都是一个包含主机物理内存子集的独立环境。根据软件使用模式,DMA 保护域可以代表分配给虚拟机(VM)的内存,或者运行在 VM 中(或作为 VMM 的一部分)的客户机操作系统驱动程序分配的 DMA 内存。VT-d 架构支持系统软件为一个保护域分配一台或多台 I/O 设备。通过利用地址转换表来限制 I/O 设备访问未分配给它的保护域的物理内存,可实现 DMA 隔离。这种必要的隔离可确保每台虚拟机保持计算机资源的独立。

当任何既定的 I/O 设备尝试访问特定的内存位置时,DMA 重映射硬件就会查看地址转换表,获取该设备访问特定保护域的许可。如果设备尝试访问许可范围之外的区域,那么 DMA 重映射硬件就会阻止此类访问,并向系统软件报错。请参见图1

  

图 1:VT-d DMA 重映射。设备 1 未分配给域 C ,因此当设备 1 试图进入域 C 的内存位置范围时,就会被 VT-d 硬件阻止。

为了提高性能,经常使用的重映射结构条目,如 I/O 设备到保护域的映射和用于 DMA 地址转换的页面表格条目都被保存到高速缓存中。VT-d 还支持外设组件互连特别兴趣小组(PCI-SIG)地址转换服务(ATS)规范,后者规定了支持设备特定 DMA 转换在端点设备中进行高速缓存的标准方法。

通过直接分配提高 I/O 性能

虚拟化支持在单个服务器上创建多个虚拟机。这种组合能够最大限度提高服务器硬件的利用率,但是服务器应用却需要大量的 I/O 性能。基于软件的 I/O 虚拟化方法可使用 I/O 设备模拟。通过这个模拟层,VMM 能够为 VM 提供硬件设备的统一视图,且该设备可以在多个 VM 之间实现共享,但它会降低高 I/O 性能设备的 I/O 性能。通过直接将设备分配给 VM,VT-d 可解决虚拟化 I/O 设备本机性能或本机功能的损失问题。

在此模式中,VMM 将自身限制在支持设备直接分配到其分区的控制功能上。除了从分区为所有(或大部分)I/O 请求调用 VMM 外,系统只有在客户机软件访问影响系统功能和隔离的受保护资源(如 I/O 配置访问、中断管理等)时才会调用 VMM。

为了将 I/O 设备直接分配给 VM,VMM 必须增强 DMA 请求的独立性。可将 I/O 设备分配给域,并利用 DMA 重映射硬件限制 I/O 设备对其域目前所拥有的物理内存进行直接内存访问。

当通过 VMM 启动 VM 或客户机时,客户机操作系统的地址空间作为其物理地址范围提供,称为客户机物理地址(GPA),可能与真正的主机物理地址(HPA)不同。支持 DMA 的设备需要利用 HPA 在物理内存位置之间传输数据。但是,在直接分配模式中,客户机操作系统设备驱动程序控制着设备,并提供支持 DMA 的设备需要的 GPA(而不是 HPA)。此时,可利用 DMA 重映射硬件进行适当的转换。由于 GPA 由 VMM 提供,因此它了解 GPA 到 HPA 的转换。VMM 将为 DMA 重映射硬件编辑 GPA-HPA 转换信息,这样,DMA 重映射硬件就可以执行必要的转换。通过重映射,数据可即刻直接传输到客户机适当的缓冲区,而不是进入中间的软件模拟层。

图 2:基于软件模拟的 I/O 与基于硬件的直接分配 I/O

图 2 对比显示了基于软件模拟的 I/O 与基于硬件直接分配的 I/O 。在基于模拟的 I/O 中,中间软件层控制着 VM 和设备之间的所有 I/O。数据通过模拟层传输到设备,并从设备传输到模拟层。

在直接分配模式中,未修改的客户机操作系统驱动程序控制着它分配的设备。在接收路径上,DMA 重映射硬件能够将客户机操作系统驱动程序提供的 GPA 转换为正确的 HPA,这样,数据可直接被传输到客户机操作系统的缓冲区(而不是通过模拟层进行传输)。VT-d 架构中的中断重映射特性支持使中断控制能力也直接分配到 VM,从而进一步降低了 VMM 的开销。

英特尔® VT-d 使用模式

支持的操作系统和 VMM 能够利用 I/O 内存管理的 VT-d 功能来隔离设备和保护域,以防止设备执行任何不当的 DMA,对系统功能造成影响。

VT-d 可以为在服务器、工作站和称为虚拟设备的新型软硬件组合产品中创建安全而独立的工作分区奠定坚实的基础。虚拟设备是一种自包含的执行环境解决方案,为一组预定的应用和/或服务(如病毒扫描和防火墙设备或者硬件管理设备)进行了优化。

从应用端到设备端,虚拟环境中的虚拟机可划分为几个不同的保护域。这样,某个域中某台 I/O 设备上的问题就被隔离,避免对其它域产生影响,从而为 IT 用户带来更出色的系统可靠性和更长的正常工作时间。

一些测试和开发环境(其使用的服务器带有多个 VM)及工作站(其虚拟环境中同时运行多个操作系统)也将从隔离的工作分区中获益。

服务器使用模式

许多服务器应用都是 I/O 密集型应用,尤其是网络和存储应用。数据中心内主要的 I/O 要求就是可扩充性和性能。随着关键任务应用移植到虚拟数据中心服务器和基础设施上,这些可支持服务器的整合、可靠性和可用性。通过支持多个操作系统的多个分区来满足动态医疗环境中的各种关键任务需求,政府部门和医疗机构也可以从 I/O 虚拟化提供的独立性和安全性中受益。它们将获得更高的安全性,满足其保护日常处理的私人信息的要求。

增强性能

虚拟化可支持将工作负载整合到未被充分利用的服务器上。随着大量工作负载的不断整合,I/O 使用和带宽要求逐渐提高,I/O 性能就会遭遇瓶颈。要提高性能,可将专用高性能 I/O 设备直接分配给对 I/O 性能要求较高的 VM。基于英特尔® VT-d 的 I/O 虚拟化可支持高性能 I/O 设备(如多端口千兆位和万兆位网卡)分配给亟需高 I/O 性能的 VM,而不必担心平台上的其它 VM 会影响其操作。英特尔积极响应 PCI-SIG 推动的 I/O 虚拟化规范,致力于推动在多个 VM 之间自然地共享单个设备。

增强可靠性和安全性——本地操作系统和服务器整合

在整合的虚拟服务器中使用多个 I/O 设备的情况越来越多;而一个虚拟服务器中包含多达 4 台联网设备的情景也屡见不鲜。通过将I/O 设备与保护域隔离,英特尔 VT-d 能帮助 VMM 改进可靠性和安全性。

通过控制设备对于具体内存范围的访问,VMM 可实现端到端(VM 到设备)隔离。这有助于提升安全性、可靠性和可用性。

在非虚拟化平台上也可以实现设备隔离。设备驱动程序开发人员可以使用将设备与特定内存范围相隔离的方法来调试硬件或正在访问不当的内存范围的设备驱动程序 DMA。

回避“回弹缓冲区”情况

具有英特尔 VT-d DMA 重映射功能的系统软件能够通过避免回弹缓冲区[i] 情况来提升性能。当回弹缓冲区在执行 DMA 的 32 位设备和由于 32 位地址限制而不可访问的物理内存范围之间使用时,系统软件能够使用英特尔 VT-d DMA 重映射功能来将数据重定向至高内存,而不是执行缓存副本。

客户机使用模式

英特尔® 虚拟化技术(英特尔® VT)支持部署第三方厂商提供的自包含虚拟设备来执行重要的安全和管理服务,以支持在采用英特尔® 博锐™ 技术的台式机上进行深度数据包检查和策略遵从等活动。这些防篡改的虚拟设备能为关键服务提供更加安全、稳定的环境,并在一个数据包中囊括了所有必要的软件,从而减轻了复杂性并提高了效率。使用带有服务或可管理性分区的 VT-d 能够提供独立、可控且受保护的环境来支持客户机平台,同时确保虚拟机的内存保护和 I/O 优化。

基于 VT-d 的虚拟设备

虚拟设备是一个自包含虚拟执行环境,它是对一组预定的应用和/或服务所进行的优化。轻型虚拟机监视器(LVMM)是一种使用英特尔 VT 将客户机平台分为 2 个执行环境分区的虚拟机监视器(VMM)。一个分区是用户的 VM,可以运行 Windows XP* 等操作系统和一些用户需要的应用,如视频和渲染、开发和测试以及常用的办公应用等。另一个是服务分区(或服务 VM),可以在独立的执行环境中运行服务操作系统(SOS)。除(在此例中)网络接口控制器外,用户分区拥有平台上的全部设备。这些设备归服务分区所有,具有监控和/或过滤网络流量并对客户机平台上其它 VM 的网络设备进行虚拟化处理的能力。运行在服务分区中的管理应用可支持远程控制台管理与平台的其它部分和用户环境相隔离的客户机系统。





图 3 中介绍的架构显示了通过服务分区物理网卡(NIC)驱动程序的网络流量。然后,桥接驱动程序将在服务分区网络堆栈与用户分区网络堆栈之间路由数据包。在用户分区中,虚拟网卡驱动程序将所有输出的数据包从用户分区发送到桥接驱动程序,然后桥接驱动程序再将其转发到物理网卡。





 

 

图 3:客户机 VMM 架构

此网络架构将阻止恶意网络流量的保护能力提升到了一个更高的水平。借助 VT 和 VT-d,它还获得了将恶意攻击及其所分配的资源隔离到单个分区的能力。VT-d 为基于“虚拟设施”架构的一类新应用奠定了基础。其执行效果比将网卡设备模式展示给用户分区的虚拟化方案更出色。在此方案中,用户分区对网卡设备的所有访问都将被截取和模拟,以阻止恶意代码的繁殖。

LVMM 和服务分区必须受到映射到用户分区的 DMA 总线主控设备的保护。这些支持 DMA 的设备能够访问整个系统内存,也可以有意或无意地访问(读/写)管理 LVMM 和服务分区代码和数据结构的内存页面。此类访问会危及到 IT 机密的安全,或者破坏内存使平台失去作用。VT-d 通常被用于防止设备发生这些 DMA 问题。

如上所述,VT-d 能够支持 2 种系统内存视图:客户机物理地址(GPA)主机物理地址(HPA)。LVMM 具有 HPA 视图,系统物理地址空间和用户及服务分区则拥有各自的 GPA 视图。LVMM 保存着阴影页表(shadow page table),以便将 GPA 转换为 HPA,来支持 CPU 的访问。同样,使用 VT-d DMA 重映射引擎和相应的转换表,LVMM 为所有支持 DMA 的 I/O 设备保存了 GPA 到 HPA 的映射。图 4 展示了这一使用模式。

 

图 4:客户机 VMM 中的 VT-d 使用模式

DMA 映射可通过下列方法完成:

  • 将服务分区的所有内存页添加到一个域内,这样,只有映射到服务分区(网卡)的 DMA 设备能够访问这些页面。
  • 将其余页面(不包括保存的 LVMM 和 BIOS)均添加到用户分区域中,则除映射到服务分区的设备之外的其它所有设备都能够访问这些页面(如 iGFX、PCI/PCIe 插卡等)。
  • 保存 LVMM 和 BIOS 的区域将通过不出现在 VT-d 转换页表的方式来避免 DMA 访问。

此设备-域映射具有下列优势:

  • 映射到一个域的 I/O 设备不能访问另一个域的内存。例如用户分区中的 PCI/PCIe 插卡不能访问 LVMM 或服务分区。
  • 服务和用户分区中的设备驱动程序无需任何更改即可运行以纳入 GPA - HPA 映射。当设备使用 GPA 发出 I/O 请求时,VT-d 硬件将透明地执行这种转换。
  • 如果设备意外地试图访问映射域之外的地址,VT-d 硬件将会报错。LVMM 捕捉到这一错误后,将通知服务分区。服务分区中可选的管理应用将根据错误的严重程度采取适当措施(如显示错误信息或使平台重启)来处理这些错误。


客户机使用模式

IT 部门面临很多资产管理和安全维护问题。下面列举了在客户机使用模式中使用 VT-d 的一些实例。

客户机隔离与恢复

通过隔离主要可管理性和安全性服务以避免最终用户访问,同时使最终用户服务保持同等的灵活性和性能,这种能力使 IT 部门受益匪浅。管理与安全服务被隔离到性能管理设施或服务分区中,从而保护了 IT 服务的安全。用户和服务分区的另一个优势在于,如果用户分区出现重大问题,服务分区或 IT 分区就能够独立地远程重建用户分区。

端点访问控制

使用 VT-d 对设备进行虚拟化处理可支持更加安全的端点访问控制EAC——网络访问控制)。这可更好地保护访问企业的客户机,实现更好的接入点可管理性。企业将确定可接受性参数(以访问策略方式表示)。该访问策略将由策略决定点(PDP)来解释,后者负责控制用于控制访问的策略执行点(PEP)。访问控制可包括下列任何内容:

  • 无限制访问。
  • 根据流量过滤情况进行的有条件访问。
  • 只能访问特定资源的限制性访问。

EAC 采用的方法可分解为以下几个主要步骤:

  • 收集——监控、读取和存储客户机系统的安全措施。
  • 报告——为 PDP 的消耗确定一系列措施。
  • 评估——解读报告和企业的政策。
  • 执行——应用访问控制规则。
  • 纠错——应用专为实现平台符合性的配置规则。

病毒爆发遏制

IT 部门仍然存在着一些软肋。病毒可能会进入电脑,尝试访问或损害机密数据或在企业中迅速繁殖。病毒爆发遏制可在系统检测到威胁之后立即对其进行遏制。英特尔® VT 和 VT-d 能够帮助更快速地检测并遏制病毒,限制其在被攻击系统和其它联网系统中传播。将对虚拟设备或服务分区启动流程进行监控,以确保其它 VMM、虚拟设备程序、驱动程序或操作系统不会加载被损坏的软件或流氓软件。最终,被损坏的分区将停止工作,且 IT 人员得到通知,同时支持载入未被破坏的环境、操作系统和软件。

在已了解威胁的情况下,被损坏的分区可以切换到专用网络进行纠错;客户机可使用补丁进行更新,以抵御病毒爆发。如果情况更加严重,客户机可能会自动关闭,以保护其自身和和网络其它部分。

嵌入式电脑健康防护

通过在英特尔平台内提供嵌入式的资产管理、供应、自我诊断、自我修复和自我优化能力,嵌入式电脑健康防护能够降低客户机的生命周期成本。这种独立于操作系统的框架基于英特尔主动管理技术,利用了英特尔的处理器、芯片组和网卡中的平台特定知识。

嵌入式电脑健康的主要目标是:

  • 可部署性:能够利用 IT 环境中当前部署的协议和服务。最大限度减少开发和部署新协议和服务的需求。
  • 高可用性:无论电脑硬件或操作系统的运行状态如何,均可提供远程管理能力。
  • 独立于操作系统:无论电脑上安装的操作系统的类型或版本如何,均可提供一些基本的平台管理功能和界面。
  • 防篡改功能:防止最终用户删除或禁用远程管理服务。

VT-d 的安全隐患

在电脑上创建可信分区和内存保护,可支持企业和 IT 人员更好地保护敏感数据。虚拟设备或服务分区管理着多个安全分区,并促进基于商业市场需求和政策的可靠信息通信。通常,系统越复杂就越容易受到攻击。而使用 VT-d,IT 部门只需在必要的时候再增加复杂性;从而创造更安全的执行环境,并提高检测和阻止攻击的能力。

支持 VT 和 VT-d 的系统仅支持载入经 IT 人员许可的代码。如果系统中存在恶意代码,经过 IT 人员验证的启动程序将检测到修改信息,并启动相应的纠错程序,如重新加载一份安全的备份虚拟映像。

网络攻击可以通过监控不应改变的内存页来防御。当发现无效页面访问时,监控代理将通知 VMM,而随后 VMM 就会以阻止此类访问作为响应。完整性代理(Integrity Agent)使用 VM 边界(边界内不允许分区间的直接访问)来进行自我保护。

IT 安全机制均建立在创建不易受到攻击的隔离执行环境的能力的基础之上。英特尔 VT 和 VT-d 技术均有助于创建此类可信环境,这种环境将在遇到恶意攻击或硬件故障时发挥作用。

英特尔® VT-d 需求

2007 年下半年,VT-d 将被用于英特尔客户机、工作站和精选的服务器产品中。

硬件

  • 采用支持 VT-d 的芯片组的平台

VT-d 需要的软件支持

  • VMM(或 Hypervisor)具备虚拟化环境中 VT-d 特性所需的支持。不必修改在 VMM 上运行的客户机。
  • 需要操作系统支持,从而使操作系统能够充分利用本地操作系统环境或非虚拟化环境中的 VT-d 保护特性。

平台的 BIOS 要求

  • 使用 VT-d 需要具备 BIOS 支持。BIOS 需要通过 ACPI 表向 VMM 说明 VT-d 的能力(如 DMA 重映射引擎的数量等)。


结论

VT-d 的架构能够为构建带有完整的应用- I/O 设备数据转换隔离的虚拟环境提供硬件机制。这可支持创建出具有更出色的可用性、可靠性和安全性的虚拟环境。凭借 VT-d,软件开发人员可以开发并发展其架构,为高度可用的 I/O 资源共享提供全面保护,为越来越高涨的 I/O 需求提供卓越的性能和可扩充性。

英特尔平台对于 I/O 设备虚拟化提供的 VT-d 支持有力地补充了现有英特尔 VT 对处理器和内存资源进行虚拟化处理的能力。二者共同谱写的 VT 技术发展蓝图提供了一个完整的解决方案,可为英特尔平台的虚拟化提供全面的硬件支持。I/O 资源的虚拟化是向支持数据中心、企业和家庭的一系列新兴使用模式迈进的重要一步。

资源 

英特尔® 虚拟化技术:http://www.intel.com/technology/virtualization/index.htm

技术与研究

架构

芯片

平台优势

软件与应用

研究

标准与计划

新闻与活动

架构

芯片              

平台优势

软件与应用

研究

标准与计划

新闻与活动

PCI-SIG I/O 虚拟化(IOV)规范——地址转换服务

相关阅读 

如何将英特尔® 虚拟化技术集成到英特尔安腾架构简介中

如何通过 VT-x 和 VT-i 应对虚拟化挑战

英特尔® 虚拟化技术相关文章

英特尔® I/O 虚拟分配技术

英特尔® I/O 虚拟分配技术架构规范(PDF)

商标信息

须经英特尔许可,方可公开使用英特尔的商标。在有关英特尔产品的广告宣传和促销活动中对英特尔商标的适当使用需随附适当的法律声明。

*文中涉及的其它名称及商标属于各自所有者资产。


[i]“回弹缓冲区”是一块用于临时存储 I/O 设备和设备不可访问内存区域之间复制数据的内存区域。此类复制工作会大幅增加开销,导致增加延迟、降低吞吐率和/或在执行 I/O 时增加 CPU 负载。

作者简介

自 1978 年以来,他先后从事过多项工作,如顾问、讲师、作家、分析师及应用开发人员。如要与他联系,请发送电子邮件至:twburger@gmail.com