CN109564524B - 虚拟化管理器的安全引导 - Google Patents

虚拟化管理器的安全引导 Download PDF

Info

Publication number
CN109564524B
CN109564524B CN201780047337.XA CN201780047337A CN109564524B CN 109564524 B CN109564524 B CN 109564524B CN 201780047337 A CN201780047337 A CN 201780047337A CN 109564524 B CN109564524 B CN 109564524B
Authority
CN
China
Prior art keywords
virtualization
virtualized
host
hypervisor
components
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201780047337.XA
Other languages
English (en)
Other versions
CN109564524A (zh
Inventor
A·N·利果里
B·沃塞尔斯特罗姆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN109564524A publication Critical patent/CN109564524A/zh
Application granted granted Critical
Publication of CN109564524B publication Critical patent/CN109564524B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/006Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving public key infrastructure [PKI] trust models
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3249Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Stored Programmes (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

虚拟化主机上的虚拟化管理器的多阶段引导操作在卸载卡处启动。在所述引导的第一阶段,使用存储在所述卸载卡的防篡改位置处的安全密钥。在第二阶段,使用安全模块来测量固件程序,并且在所述卸载卡处实例化第一版本的虚拟化协调器。所述第一版本的所述虚拟化协调器获得不同版本的所述虚拟化协调器,并在所述卸载卡上启动所述不同版本。所述虚拟化管理器的其他部件(例如不在所述卸载卡上运行的各种管理程序部件)由所述不同版本的所述虚拟化控制器启动。

Description

虚拟化管理器的安全引导
背景技术
许多公司和其他组织操作计算机网络,计算机网络使众多计算系 统互连以支持其操作,例如其中计算系统位于同一位置(例如,作为 本地网络的一部分)或者相反地位于多个截然不同的地理位置中(例 如,经由一个或多个私有或公共中间网络连接)。例如,容纳大量互 连计算系统的数据中心已经变得很常见,例如由单个组织操作并且代 表单个组织的私有数据中心,以及由如企业的实体操作以向客户提供 计算资源的公共数据中心。一些公共数据中心运营商为由各种客户拥 有的硬件提供网络访问、电源和安全安装设施,而其他公共数据中心 运营商提供还包括可供其客户使用的硬件资源的“全面服务”设施。
用于商用硬件的虚拟化技术的出现已针对管理大规模计算资源 而为具有多样化需求的许多客户提供益处,从而允许各种计算资源有 效且安全地由多个客户共享。例如,虚拟化技术可以通过向每个用户 提供由单个虚拟化主机托管的一个或多个“来宾”虚拟机来允许单个 物理虚拟化主机在多个用户之间共享。每个这样的虚拟机都可以表示 充当不同逻辑计算系统的软件模拟,其向用户提供它们是给定硬件计 算资源的唯一运营商的假象,同时还在各种虚拟机之间提供应用隔离 和安全性。在同一主机上实例化多个不同的虚拟机也可以帮助提高数 据中心的整体硬件利用率水平,从而获得更高的投资回报。
可以在各种虚拟化环境中的每个虚拟化主机上安装相应的虚拟 化管理器,其可以例如包括管理虚拟机实例和/或管理程序。除了其 他任务之外,虚拟化管理器可以负责代表客户在主机上启动/停止来 宾虚拟机,充当来宾虚拟机与主机和网络的各种硬件部件之间的中 介,收集与来宾虚拟机相关的量度,并执行安全规则。从虚拟化环境 的运营商的角度来看,虚拟化管理器消耗的资源(例如,主机CPU周 期、主机存储器等)可能倾向于减少可以在主机上实例化的来宾虚拟 机的数量,并因而降低运营商的主机硬件和相关基础设施的货币化水 平。另外,在至少一些情况下,由虚拟化管理器执行以支持来宾虚拟 机的管理或后台操作可能具有干扰对时间敏感的客户应用的趋势。因 此,设计有效满足现代虚拟化环境的安全性和功能要求的虚拟化管理 器可能是一项非常重大的挑战。
附图说明
图1示出了根据至少一些实施方案的示例系统环境,其中可以在 虚拟化计算服务处采用部分卸载的虚拟化管理器。
图2示出了根据至少一些实施方案的虚拟化主机的示例部件。
图3示出了根据至少一些实施方案的卸载卡的示例部件,其可以 用于主机处的虚拟化管理器部件的子集。
图4示出了根据至少一些实施方案的可由虚拟化管理器使用的 可信平台模块的示例部件。
图5示出了根据至少一些实施方案的可以用于虚拟化管理器的 示例多阶段引导过程的各方面。
图6是示出根据至少一些实施方案的可以被执行以增强用于与 虚拟化管理器相关联的可执行程序的存储设备的安全性的操作的各 方面的流程图。
图7是示出根据至少一些实施方案的可以执行以在虚拟化计算 服务的安全基础设施内注册虚拟化主机的操作的各方面的流程图。
图8示出了根据至少一些实施方案的与虚拟化主机的部件相关 联的不同信任级别的示例。
图9示出了根据至少一些实施方案的为启动来宾虚拟机在各个 虚拟计算服务部件层之间可能需要的交互的示例。
图10示出了根据至少一些实施方案的虚拟化主机处的来宾虚拟 机的示例状态转换。
图11示出了根据至少一些实施方案的将虚拟化主机的主存储器 划分为由卸载的虚拟化管理器部件管理的部分和由管理程序管理的 部分的示例。
图12示出了根据至少一些实施方案的主机存储器的管理程序管 理的部分和包含在由卸载的虚拟化管理器部件管理的存储器部分中 的元数据的示例内容。
图13示出了根据至少一些实施方案的虚拟化管理器的部件之间 的示例性存储器库存相关交互。
图14示出了根据至少一些实施方案的在虚拟化管理器的部件之 间的与来宾虚拟机实例化和终止相关联的示例存储器相关交互。
图15示出了根据至少一些实施方案的在虚拟机管理器的部件之 间的与管理程序的实时更新相关联的示例交互。
图16是示出根据至少一些实施方案的可以由部分卸载的虚拟化 管理器的各种部件执行的存储器管理相关操作的各方面的流程图。
图17是示出根据至少一些实施方案的与管理程序的实时更新相 关联的操作的各方面的流程图。
图18示出了根据至少一些实施方案的机会性管理程序的示例子 部件和通信机制。
图19和图20共同示出了根据至少一些实施方案的与机会性管理 程序执行管理任务相关联的事件的示例序列。
图21是示出根据至少一些实施方案的与在管理程序处实现中断 驱动和基于队列的任务相关联的操作的各方面的流程图。
图22是示出根据至少一些实施方案的与在管理程序处管理不同 预期持续时间的任务相关联的操作的各方面的流程图。
图23提供了根据至少一些实施方案的通过使用机会性管理程序 可以使应用的响应时间变化减少的示例。
图24是示出可在至少一些实施方案中使用的示例计算设备的框 图。
虽然在本文中通过若干实施方案和说明性附图的示例来描述各 实施方案,但所属领域的技术人员应认识到,各实施方案并不限于所 描述的实施方案或附图。应理解,附图及其详细描述并不意图将各实 施方案限制为所公开的特定形式,而是相反,意图是覆盖落入如通过 随附的权利要求书所界定的精神和范围内的所有修改、等效物以及替 代方案。在本文中使用的标题是仅出于组织的目的,而非意图用于限 制说明书或权利要求书的范围。如贯穿此申请案所使用,词语“可”以 许可性意义使用(即,意味着具有某种可能),而非以强制性意义使用 (即,意味着必须)。类似地,词语“包括(include、including和includes)” 意味着包括但不限于。当用于权利要求书中时,术语“或”用作包括性 或而非用作排他性或。例如,短语“x、y或z中的至少一个”意指x、 y和z中的任一个以及其任何组合。
具体实施方式
描述了用于在虚拟化主机处使用部分卸载的虚拟化管理器的虚 拟机管理的方法和装置的各种实施方案。在各种实施方案中,除了可 用于联网、交互设备等的各种其他硬件部件之外,给定虚拟化主机可 以包括一个或多个主物理CPU(中央处理单元)或核以及主存储器(例 如,包括一个或多个随机存取存储器或RAM设备)。为了代表各种客 户端支持来宾虚拟机,可以通过虚拟化管理器的部件创建CPU的虚 拟化版本和/或主存储器的虚拟化部分并将其分配给来宾虚拟机,可 以使来宾虚拟机可以访问虚拟化网络设备,等。虚拟化主机的虚拟化 管理器可以在不同实施方案中包括软件、固件和/或硬件部件的各种 组合,所述组合共同地使得在虚拟化主机上建立和管理来宾虚拟机能 够实现。
这里可以使用术语“部分卸载”来描述在各种实施方案中具有以 下特性的虚拟化管理器:在虚拟化主机上支持来宾虚拟机所需的至少 一些虚拟化管理任务可能不使用虚拟化主机的主CPU或核执行。这 些任务可以被指定为“卸载的”任务,从而减少主机的物理CPU上与 虚拟化管理相关的开销。在各种实施方案中,对于至少一些卸载的任 务,不是使用主机的CPU,可以使用位于卸载卡(例如,可通过实现 外围部件互连-快速或PCI-E标准的一个版本的总线或诸如QuickPath 互连(QPI)或UltraPath互连(UPI)之类的其他互连,从主CPU访问的 卡)上的一个或多个处理器。在其他实施方案中,一些卸载的虚拟化 管理任务可以在虚拟化主机外部的计算设备处实现,例如,在经由网 络连接、可从来宾虚拟机运行所在的虚拟化主机访问的单独主机处实 现。负责实现卸载的任务的固件和/或软件部件在本文中通常可以称 为卸载的虚拟化管理器部件(OVMC)或卸载的虚拟化管理部件。下面进一步详细描述可以在各种实施方案中采用的若干不同OVMC的示 例,诸如虚拟化控制器和网络处理卸载器。
在至少一些实施方案中,与管理来宾虚拟机相关联的工作负载可 以在较高级别被划分为较大部分和较小部分,较大部分被卸载,较小 部分由在虚拟化主机上运行的机会性管理程序来实现。如下面进一步 详细讨论的,管理程序可以被描述为机会性,因为在来宾虚拟机自愿 放弃物理CPU的情况下,管理程序主要利用主机的物理CPU,因为 有机会这样做。(例如,当来宾虚拟机需要执行输入/输出操作、读取 定时器值或执行来宾虚拟机自身无法完成的某一其他操作时)。默认 情况下,管理程序的一些或所有子部件进程可能保持静止或处于空闲 状态(即,不消耗CPU周期)。在大多数操作条件下,仅当来宾虚拟机 放弃物理CPU时,子部件中的一个或多个可以从静止状态转换到活 动状态。在一些这样的实施方案中,可以维护包括供管理程序执行的 未完成的虚拟化管理任务的队列或类似逻辑数据结构,其中任务条目 在卸载的虚拟化管理器部件(在某些情况下,其反过来可能已经接收 到来自虚拟化计算服务的控制平面部件的对于一些任务的请求)的请 求下被添加到队列中。当机会性管理程序能够利用物理CPU时,它 可以从队列中获得未完成的任务,执行对应的操作,然后放弃物理 CPU以使来宾虚拟机能够恢复其处理。
在一些实施方案中,由机会性管理程序处理的虚拟化管理任务可 以被分类为至少两个类别,例如,基于任务的预期持续时间或其相对 复杂性。较短或较简单的任务可以运行完成,而较复杂或较长的任务 可以使用其状态转换对应于相应子任务的状态机来处理。因此,例如, 长任务T1可以被分成N个不同的子任务ST1、ST2、......、STN。在 一些实施方案中,当机会性管理程序被给予利用物理CPU的机会, 并且管理程序确定T1尚未完成时,可以使用T1的持久状态机表示 来识别T1的下一个未完成的子任务STk。然后,管理程序可以执行 STk,更新持久状态机以指出它已经这样做,并且将物理CPU放弃, 让给来宾虚拟机。通常,机会性管理程序可以设计为最小化其对主机 的物理CPU的使用,并且主要在来宾虚拟机在至少某个时间间隔内 (例如,完成I/O操作所需的时间)不期望使用物理CPU时使用物理 CPU。作为虚拟化管理任务的这种机会性调度的结果,在至少一些实 施方案中,可以显著减少在来宾虚拟机处发起的各种类型的事务或操 作的执行的可变性。例如,如果给定的来宾虚拟机用于包括对时间敏 感的事务的应用,则由于使用机会性管理程序,可以最小化或降低事 务响应时间的变化(例如,与其他虚拟化管理技术相比)。应用操作(尤 其是短持续时间对时间敏感的操作)的响应性的变化,在此可以称为 “抖动”或“CPU抖动”。
在至少一些实施方案中,虚拟化管理器可以在提供商网络的虚拟 化计算服务处实现。实体(诸如公司或公共部门组织)所建立的用于将 可通过互联网和/或其他网络访问的一个或多个网络可访问服务(诸如 各种类型的基于云的计算或存储服务)提供给一组分布式客户端的网 络在本文中可称为提供商网络。提供商网络有时可称为“公共云”环 境。在某些情况下,提供商网络的资源可以分布在多个数据中心之间, 而多个数据中心又可以分布在许多城市、州和国家之间。在至少一个 实施方案中,这里所描述的各种类虚拟化管理器可以部署在位于提供 商网络外部的数据中心的主机处;例如,虚拟化计算服务的各种管理 或控制平面部件可以在提供商网络内执行,并且这种控制平面部件可 以与在位于客户拥有的数据中心(或在提供商网络外部的其他一些场 所)的虚拟化主机处运行的部分卸载的虚拟化管理器进行通信。
在至少一些实施方案中,虚拟化计算服务可以支持用于将来宾虚 拟机分配给虚拟化主机的多租户模式。在多租户模式中,给定的虚拟 化主机可用于为几个不同的客户实例化相应的来宾虚拟机。相比之 下,在单租户模式(在各种实施方案中,其也可以被支持或被替代地 支持)中,给定的虚拟化主机可以仅用于单个客户端的来宾虚拟机。 特别是在多租户模式中,且甚至在单租户模式中,确保满足客户端的 安全性和/或隔离要求可能是至关重要的。从虚拟化计算服务提供商 的角度来看,理想情况下应该如此设计虚拟化管理器部件,使得它们 的安全机制不能(以非常高的概率)由于外部攻击或错误而被成功攻 破。在发生被攻破的极少数情况下,应尽快识别攻破行为,并应采取 补救措施以减少攻破行为的影响(例如禁用或关闭虚拟化管理器)。
为了帮助满足这些和其他安全要求,在至少一些实施方案中,可 以为部分卸载的虚拟化管理器实现安全的多阶段引导过程。在各种实 施方案中,虚拟化控制器(虚拟化管理器的卸载部件之一)可以负责在 给定虚拟化主机处编排安全引导过程。在制造虚拟化主机的部件期 间,可以将所选安全密钥对的公钥烧到安装在卡上的防篡改设备中, 在该卡上将运行一个或多个卸载的虚拟化管理器部件(包括虚拟化控 制器)。例如,可以在虚拟化计算服务可访问的硬件安全模块(HSM) 设备上(例如,经由在提供商网络上实现的HSM服务)单独存储该密 钥对的私钥。在各种实施方案中,在引导过程的第一阶段,公钥可用 于验证一个或多个固件程序的签名。在其中使用烧到卸载卡的硬件中 的密钥来实施安全性的该第一阶段通常可以包括执行固件(例如,存 储在卸载卡上的串行外围接口(SPI)闪存存储器中),其在虚拟化主机 的生命周期内发生更改/更新的可能性很小。在至少一些实施方案中, 在第一阶段结束之后可能不再使用在第一阶段期间加载的固件的至 少一些。也就是说,在引导的第一阶段完成之后,在下一次引导之前 可能不再需要在第一阶段期间加载的程序。在至少一个实施方案中, 如果第一阶段失败(例如,如果使用烧入的密钥不能验证固件程序的 签名),则可以使虚拟化主机不可引导(或者非常难以引导)。
在各种实施方案中,如果第一阶段成功,则可以启动引导过程的 第二阶段,在此期间可以使用安全模块(在至少一些实现方式中也安 装在卸载卡上)来“测量”各种固件/软件程序。在一些实施方案中,安 全模块可以根据由标准组织批准的规范(例如由可信计算组联盟提交 并由国际标准化化组织和国际电工委员会(ISO/IEC)批准的可信平台 模块规范的各种版本中的任何一个)来实现。在这样的实施方案中, 安全模块可以被称为可信平台模块或TPM。在其他实施方案中,可 以使用支持与TPM类似的安全相关特征但不一定完全符合TPM规范 的其他硬件部件或设备。在以下大部分描述中,TPM可以用作安全 模块的主要示例,其在引导期间由虚拟化管理器使用,并且用于诸如 检查主机的软件状态之类的其他操作;然而,这里描述的利用TPM 的算法可以在采用其他类型的安全模块而不是采用TPM的实施方案 中同样成功地使用。诸如TPM之类的安全模块可以用于各种加密、 散列和随机数相关的操作,如下面进一步详细讨论的。TPM支持的 功能之一可以是使用存储在一组处理器控制寄存器(PCR)中的散列值 来存储软件/固件状态(和状态改变)的证据。在使用所选择的PCR的 给定软件/固件程序M1的测量期间,可以基于PCR的当前内容(H1) (例如,用于PCR的某一初始值,或对应于某一其他软件/固件程序的 散列值)和程序M1的内容,来生成加密强度散列值H2。然后,在称 为“通过M1扩展PCR”的操作中,可以将取决于PCR的先前状态和“正 在被测量”的程序的新散列值H2存储在PCR中。实际上,PCR扩展 机制可以使得一系列改变或事件的历史能够以(几乎)不可能伪造的方 式存储在硬件中,同时可被验证(例如,通过对预期或已知版本的程 序进行散列操作序列,并将PCR内容与序列的最终结果进行比较)。 在各种实施方案中,在引导过程的该第二“测量”阶段期间,因此可以 将所加载的固件/软件的确切版本的证据存储在TPM的PCR中的一 个或多个中。与在引导的第一阶段使用的固件相比,在一些实施方案 中,在第二阶段加载的新版本固件可能至少有时在虚拟化主机的生命 周期期间被部署,然后可以从安全模块获得对改变版本的基于散列的 测量。
在各种实施方案中,在引导过程的第二阶段接近结束时,可以在 卸载卡的一个或多个处理器上启动虚拟化控制器的特殊精简版或最 小版本。使用特殊最小版本的主要目标可以包括提供足够的功能以能 够对虚拟化控制器的更全功能版本执行实时更新。可以在卸载卡处从 加密的存储设备(例如,另一个闪存部件或固态驱动器)获得该不同的 版本。用于解密不同版本的密钥可以存储在安全模块中,并且如果安 全模块的状态(例如,一个或多个PCR值)指出引导过程的先前阶段已 成功,则可以使密钥仅可用于虚拟化控制器的最小版本。下面提供关 于最初(第一次启动主机时)加密用于新版本虚拟化控制器的存储设备 的方式的细节。然后可以启动不同的全功能版本的虚拟化控制器以替 换最小版本(即,在与运行最小版本相同的卸载设备处理器上)。这种 就地替换技术可能潜在地用于随时间的推移,部署虚拟化控制器的若 干新版本,例如,在每种情况下首先在“测量”阶段接近结束时启动相 同的最小版本。
在不同的实施方案中,在虚拟化控制器的全功能版本到位之后, 签名检查可以用作相对于初始化或启动部分卸载的虚拟化管理器的 各种其他部件(例如,网络处理卸载器和/或管理程序)的安全机制。在 各种实施方案中,这些附加部件中的一些还可以在卸载卡(例如,运 行虚拟化控制器的同一卡,或不同的卸载卡)上运行,而其他部件可 以在虚拟化主机的主CPU上运行。在各种实施方案中,虚拟化控制 器的全功能版本可以参与虚拟化主机在虚拟化计算服务的网络安全 基础设施中的登记,例如,通过与主机身份管理服务的交互,如下所 述,以便在虚拟化主机的生命周期期间,可以在虚拟化主机处安全地 获得各种软件和/或固件的新版本。在成功启动虚拟化管理器的所有 部件并且已完成多阶段安全引导过程之后,可以代表虚拟计算服务的 客户端启动正常的虚拟化管理操作-例如,当被请求时,可以由虚 拟化管理器实例化(或者终止)来宾虚拟机。如果引导的任何操作由于 安全相关的错误而失败,则虚拟化主机将处于不可引导状态(如果在 第一阶段期间发生错误),或者可以使用TPM和/或网络安全基础设施 部件,跟踪故障的证据。
在至少一些实施方案中,关于虚拟化主机的主存储器的相当一部 分的存储器分配决策可以由卸载的虚拟化管理器部件处理,从而进一 步减少机会性管理程序的工作负载,并使得管理程序的实时更新能够 实现。在一个这样的实施方案中,主存储器的一个部分(例如,几千 兆字节中的几百兆字节)可以留给机会性管理程序,而剩余部分的分 配可以由卸载的部件(例如虚拟化协调器的存储器分配器)管理。在启 动管理程序之后(例如,在上面讨论的多阶段引导过程接近结束时), 卸载的部件可以向管理程序提交存储器库存查询,并可以提供指出可 用于来宾虚拟机的主存储器量(其将由卸载的部件分配给各个来宾虚 拟机)的响应。当启动新的来宾虚拟机时,可以由卸载的虚拟化管理 器部件从可用存储器中选择要用于来宾虚拟机(以及诸如来宾虚拟机 的设备状态信息之类的元数据)的物理存储器的特定部分。可以由卸 载的虚拟化管理器部件向管理程序通知关于来宾虚拟机的分配决策。 管理程序可以为管理程序管理的部分内的存储器分配设置其自己的 页面表(例如,具有相对小的页面大小,例如4千字节),而用于相应 来宾虚拟机(它们可以与管理程序使用不同的页面大小)的页面表的位 置可以由卸载的虚拟化管理器部件进行选择。在至少一些实施方案 中,可以由卸载的虚拟化管理器部件选择要用于来宾虚拟机的页面表的特定存储器区域,并且可以以数据结构(这可以在本文中称为分页 元数据)向管理程序提供所选择的区域的指示。然后,管理程序可以 使用数据结构中包含的信息来设置来宾虚拟机的页面表。在至少一些 实施方案中,主存储器的管理程序管理的某部分可以被预留用于管理 程序的实时更新(例如,以存储表示新版本管理程序的可执行图像)。 下面提供有关管理程序的存储器管理和实时更新的更多细节。
示例系统环境
图1示出了根据至少一些实施方案的示例系统环境,其中可以在 虚拟化计算服务处采用部分卸载的虚拟化管理器。如图所示,系统 100包括提供商网络102,在该提供商网络上可以代表各种客户端120 实现多个网络可访问服务。在所描绘的实施方案中,提供商网络的服 务可以尤其包括虚拟化计算服务(VCS)132以及包括块设备存储服务 160(其通过块设备级程序接口提供存储卷)的多个存储相关服务,以 及对象存储服务170(其公开用于访问非结构化存储对象的web服务 接口)。在各种实施方案中,还可以在提供商网络上支持许多安全相 关服务,包括硬件安全模块(HSM)设备服务150。在所描绘的实施方 案中,一些服务可以利用其他服务来履行客户端请求-例如,用于 虚拟化计算服务的来宾虚拟机的至少一部分持久存储可以通过存储 服务的一个或多个获得,与虚拟化计算服务相关联的安全密钥可以存 储在HSM服务中,依此类推。
在所描绘的实施方案中,VCS 132可以包括虚拟化主机机群145 和控制平面机群140。可以采用主机机群145的虚拟化主机134来实 例化来宾虚拟机(GVM)138。例如,虚拟化主机134A可以包括GVM 138A和138B,而虚拟化主机134B包括GVM 138K。客户端120可 以利用GVM来运行各种应用,其中一些应用可能涉及使用提供商网 络102的其他服务的资源,和/或可能涉及使用提供商网络102外部 的资源。在所描绘的实施方案中,虚拟化主机134的至少一些可以包 括相应的部分卸载的虚拟化管理器(PVM)136。例如,主机134A包 括PVM136A,主机134B包括PVM 136B,依此类推。如上所述, 在使用PVM的场景中,管理虚拟化主机134的本地来宾虚拟机138 的管理的全部职责可以在机会性管理程序(其使用虚拟化主机的主 CPU)和一个或多个其他虚拟化管理部件(它们可以在安装在卸载卡 (例如PCI-E卡或通过外围互连连接的其他卡)上的处理器上运行)之 间分配。
PVM方法可以被设计为减少虚拟化管理工作负载,其消耗虚拟 化主机的资源(例如主CPU和主存储器),其可以替代地被部署,用于 客户端请求的GVM。在各种实施方案中,诸如网络协议处理之类的 虚拟化管理任务(例如,关于在VCS处使用的封装协议)以及甚至为来 宾虚拟机的存储器分配可以完全或主要在卸载的虚拟化管理器部件 处执行,如下所述。在各种实施方案中,可以最小化管理程序本身的 CPU使用和存储器占用-例如,大多数或所有管理程序子部件可以 默认保持静默或空闲,主要是如果和当来宾虚拟机138放弃物理 CPU,执行虚拟化管理任务。由于默认静默模式的管理程序行为, GVM(在特殊情况下除外)被允许消耗物理CPU周期,需要多长时间 就多长时间,而不会被管理程序中断,各种应用操作的性能变化可能 会减少。可以对虚拟化管理器部件本身采用安全的多阶段引导过程, 包括安全密钥、TPM测量等的组合。可以支持各种PVM部件的链加 载和/或实时更新,其总体目标是当需要替换或升级虚拟化管理器部 件时避免重新引导来宾虚拟机。注意,至少在一些实施方案中,并非 机群145的所有虚拟化主机都可以使用部分卸载的虚拟化管理器。例 如,一些主机可以包括相应的管理虚拟机和/或完整的非机会性管理 程序,并且可以不包括可以用于将虚拟化管理处理从主CPU转移开 的卸载卡。
在所描绘的实施方案中,VCS的控制平面机群140可以包括多 个子部件,包括例如主机身份管理器172、放置管理器174、监视管 理器176等。在所描绘的实施方案中,主机身份管理器172可以将虚 拟化主机134登记在VCS 132的公钥基础设施内,从而增强主机与提供商网络102的各种其他部件之间的通信的安全性。放置管理器 174可以负责确切地确定将使用哪个(哪些)虚拟化主机来履行给定客 户端对一个或多个GVM 138的请求。在某些情况下,虚拟化主机可 以以多租户模式使用,其中几个不同客户端的GVM在单个虚拟化主机上实例化,而在其他情况下,至少一些主机可以专用于单个客户端 的GVM(单租户模式)。监视管理器176可以收集与各个GVM 138和 /或主机134相关联的各种量度(例如,性能测量值、健康状态指示符 等),包括最初可以由管理程序的子部件和/或由卸载的虚拟化管理器部件获得的量度。
在所描绘的实施方案中,VCS 132可以实现一组面向客户端的编 程接口160(例如,应用编程接口或API、基于web的控制台、命令 行工具、图形用户接口等),使客户端132能够提交获取、释放来宾 虚拟机138和与来宾虚拟机138进行交互的请求。例如,“launchGVMs”请求或命令的等效物可用于实例化具有指定特性的一 个或多个GVM 138,而“terminateGVMs”命令或请求的等效物可用于 禁用客户端的GVM中的一个或多个。通常,在VCS 132的控制平面 部件处接收到的客户端请求可以被转换为内部格式并且被发送到在适当的虚拟化主机处的PVM以便实现。在PVM本身内,在一些实 施方案中,卸载的部件可以首先接收内部命令/请求,将某个版本的 命令/请求传递给机会性管理程序(例如,使用异步基于队列的协议以 便不中断GVM使用主机资源),以便在必要时实现。下面提供可以在VCS 132处采用的各种低开销安全虚拟化管理技术的各个方面的细 节。
示例虚拟化主机部件
图2示出了根据至少一些实施方案的虚拟化主机的示例部件。如 图所示,虚拟化主机202可以包括主物理处理器组204、主存储器(例 如,随机存取存储器或RAM的一个或多个模块)208、部分卸载的虚 拟化管理器(PVM)270和零个或多个来宾虚拟机GVM 250,例如GVM 250A-250C。(虚拟化主机202还可以包括许多其他部件,例如, 各种持久存储设备,其在图2中未示出以避免混乱。)在所描绘的实 施方案中,主物理处理器组204可以包括多个物理CPU(pCPU),包 括pCPU 205A-205C。在GVM的生命周期期间,PVM 270可以将称 为vCPU或虚拟CPU的虚拟化版本的pCPU分配给各个GVM。每个 GVM 250都可以包括代表虚拟化计算服务的客户端运行的操作系统 (例如,操作系统252A-252C)和一组应用(例如,254A-254C)的相应 实例。
在所描绘的实施方案中,PVM 270可以包括机会性精简的管理程 序220(其使用pCPU)和一个或多个卸载的虚拟化管理器部件(OVMC) 272,其不使用pCPU。OVMC 272可以包括例如虚拟化控制器215 和网络处理卸载器216。在一些实施方案中,可以使用相应的片上系 统设计来实现OVMC中的各个OVMC。尽管在所描绘的实施方案中 OVMC 272被示出为并入单个卸载卡210(例如,PCI-E卡)中,但是 在不同实施方案中可以采用关于OVMC的布置和组织的其他方法。 例如,在一个实施方案中,可以使用单个片上系统实现方式来执行虚 拟化控制器和网络处理卸载器的功能,从而消除对两个不同OVMC 的需要。在另一个实施方案中,相应的卸载卡可以用于虚拟化控制器 215和网络处理卸载器216。在所描绘的实施方案中,如其名称所暗 示的,虚拟化控制器可以负责组织或编排在主机202处执行的大部分 虚拟化管理工作-例如,它可以是如下面所讨论的引导PVM的第一 部件,触发PVM的其他部件的启动,与VCS控制平面进行通信,针 对来宾虚拟机做出存储器分配决策,以此类推。在所描绘的实施方案 中,网络处理卸载器216可以负责实现一个或多个网络协议(包括例 如VCS内使用的封装协议),并且充当GVM和虚拟化主机外部的网 络端点之间的中介。
在所描绘的实施方案中,管理程序220可以被描述为被精简,因 为由至少一些常规管理程序执行的大部分工作可以由OVMC 272代 替处理,从而降低管理程序220的复杂性和大小。另外,管理程序 220可以被指定为机会性,因为在大多数情况下,在管理程序使用CPU周期之前,它可以等到GVM自愿放弃对pCPU 205的控制。因 此,例如,当特定GVM 138发出I/O请求(其中预期I/O花费大约时 间T1完成)并且放弃pCPU,直到接收到对I/O请求的响应时,管理 程序可以利用这个机会来使用pCPU来执行一个或多个虚拟化管理 任务(其通常可以花费时间T2,其中T2<<T1),同时GVM不期望使 用pCPU。在所描绘的实施方案中,这样,管理程序220可以对应用 254的性能具有最小的影响。
在所描绘的实施方案中,管理程序220本身可以包括多个子部 件,包括一组操作系统内核级部件222、管理程序协调器225、一个 或多个GVM管理器228、隔离/安全部件229和/或消息传递管理器 231。在至少一些实施方案中,管理程序协调器225、GVM管理器228中的各个、隔离/安全部件229和/或消息传递管理器231都可以被实 现为相应的用户模式进程。在各种实施方案中,这些部件中的至少一 些可以被实现为相应静态链接程序的实例,使用简单的专用协议经由 管道彼此通信。在所描绘的实施方案中,管理程序的子部件可以默认 保持被动或静默,仅响应于事件(例如来自其他子部件的消息。由 GVM发起的上下文切换等)而作出反应和激活。在一些实现方式中, 例如,几个管理程序子部件通常可以在大多数时间在轮询系统调用 (例如epoll()或等效调用)时保持被阻止。
内核级部件222可以提供对各种低级操作(例如对由GVM发出的 对VM退出指令的初始响应(例如,当GVM放弃pCPU时))的支持。 如名称所暗示的,管理程序协调器225可以负责编排其他子部件的操 作。管理程序协调器225可以例如实现API,该API可以用于OVMC272和管理程序之间的通信,发起GVM启动和终止(例如,在OVMC 的请求下),公开由GVM管理器收集的量度,提供调试功能等。
每个GVM管理器228都可以负责基于协调器225提供的规范来 启动或实例化相应的GVM,监视GVM的量度和日志,等等。在一 些实施方案中,GVM管理器228还可以帮助某些设备的GVM请求 的I/O操作,例如,通过捕获GVM I/O请求并将它们转换为在OVMC 的帮助下完成的存储器映射的I/O操作。在至少一些实施方案中,根 据安全相关的最小特权原则,GVM管理器238可以在GVM的实例 化期间尽快丢弃其自身的许多特权。例如,在为GVM生成一个或多 个vPCU(虚拟CPU)线程并且已映射GVM的存储器之后,GVM管 理器可能会禁用其某些特权以减少破坏安全的机会。在一个实施方案 中,GVM管理器228可以检查GVM存储器的随机样本是否如预期 的那样归零(而不是一次性检查整个GVM存储器),从而提高了启动 GVM的速度。在一些实施方案中,在GVM管理器和GVM之间可 以存在1对1映射,而在其他实施方案中,单个GVM管理器可以负 责多个GVM。
消息传递管理器231可以充当虚拟化控制器215和管理程序之间 的中介,例如,通过将由虚拟化控制器使用基于队列的协议发出的命 令转换为管理程序内的管道消息。安全和隔离部件229可以负责,例 如,当GVM终止时擦除或清理GVM存储器,从而可以避免GVM上的无意共享数据。应注意,在至少一些实施方案中,PVM可包括 附加部件(图2中未示出),而在至少一个实施方案中,可能不需要图 2中所示的PVM部件中的一个或多个。
示例卸载卡部件
图3示出了根据至少一些实施方案的卸载卡的示例部件,其可以 用于主机处的虚拟化管理器部件的子集。如图所示,卸载卡302可以 包括一对片上系统(SOC)315和316,其具有各自的卸载处理器组 317A和317B(区别于上面讨论的虚拟化主机的主pCPU)。在所描绘 的实施方案中,SOC中的一个(例如,315)可以用于虚拟化控制器, 而另一个可以用于网络处理卸载器。安全引导ROM 325可以由虚拟 化控制器用于多阶段引导操作的初始阶段,如下面进一步详细讨论 的。卸载卡302还可以包括安全模块(诸如可信平台模块(TPM))330, 其也可以在引导过程期间广泛使用和/或用于引导后状态验证;TPM 的示例子部件在图4中示出。
另外,在各种实施方案中,卸载卡302可包括多个存储、电源和 连接相关部件。例如,一个或多个闪存设备/接口(或SSD)335可以包 含在卸载卡内。例如,这些设备可以用于存储与各种虚拟化管理部件、 来宾虚拟机部件等相对应的固件和/或软件。在各种实施方案中, PCI-E接口340可用于与管理程序进行通信和/或用于SOC之间的通 信。在其他实施方案中,可以使用其他类型的互连和对应的接口,例 如QuickPath互连(QPI)或UltraPath互连(UPI)的变体。在一些实施方 案中,网络接口345可以用于虚拟化管理器和虚拟化计算服务的控制 平面之间的通信,以及在至少一个实施方案中用于来宾虚拟机和各种 网络端点之间的数据平面通信。在一些实施方案中,卸载卡302还可 以包括电源360,例如,足以在较长时间的电源故障的情况下使 OVMC保持工作至少一些针对性小时数或天数。在一些实现方式中, 可使用基于超级电容器的电源。
在一些实施方案中,卸载的虚拟化管理器部件可能不需要在同一 卡上有分离的SOC。例如,在一个实施方案中,可以使用能够执行 虚拟化控制器功能以及网络卸载任务的单个SOC。在其他实施方案 中,可以使用单独的卡来执行网络处理任务,与用于虚拟化控制器的 卡不同。图3中所示的一组卸载卡部件并不是全面的;在一些实施方 案中,可以在卡上结合若干其他部件,例如定时器等。在各种实现方 式中,可能不需要图3中所示的至少一些部件。
图4示出了根据至少一些实施方案的可由虚拟化管理器使用的 可信平台模块(TPM)的示例部件。如前所述,可以在各种实施方案中 使用提供类似功能但不一定完全符合TPM标准或规范的其他类型的 安全模块或设备。如图3所示,可信平台模块可以包含在卸载卡内, 该卸载卡在一些实施方案中包括虚拟化控制器;在其他实施方案中, TPM可以位于卸载卡之外(例如,在经由总线或其他互连可从虚拟化 控制器到达的单独卡上,或者在虚拟化主机外部的设备处)。使用TPM 实现的请求或命令可以称为“可信计算请求(TCR)”。一般而言,在各 种实施方案中可以支持许多不同类型的TCR,包括例如验证虚拟化 主机和/或GVM的软件/固件配置的请求、生成和/或存储诸如散列值 或密钥之类的密码伪像的请求、将加密值与对应的配置状态相关联或 “密封”以便如果配置状态已经改变则不能解密所述值的请求等等。除 了在下面在多阶段引导的上下文中讨论的源自虚拟化管理器部件之 外,在不同实施方案中,TCR可以源自软件栈的多个不同层。例如, 一些TCR可以源自GVM的应用层(或者与包括TPM的虚拟化主机进 行通信的外部实体),并且可以被转换为从诸如虚拟化管理器之类的 较低级别的软件传输到TPM的特定命令序列。其他TCR可能源自操 作系统层、设备驱动程序层等。
在所描绘的实施方案中,图4的TPM 410,除了其他部件之外, 还可以包括I/O接口484、ROM 475、一组平台配置寄存器(PCR)470、 密钥集424和密码处理器426。在不同的实现方式中,可以通过I/O 接口484利用许多不同类型的通信总线或互连,包括例如低引脚数(LPC)总线、PCI-E总线、串行外围接口(SPI)总线、增强型串行外围 接口(eSPI)总线、内部集成电路(I2C)总线等。在各种实施方案中,ROM 475可用于TPM固件。
包括多个单个的PCR(例如PCR0-PCRk)的PCR组470可用于 存储与虚拟化主机的各种配置元件相对应的散列签名。特别地,在各 种实施方案中,可以在虚拟化管理器自身的引导期间使用PCR的一 个或多个,如下面更详细地讨论的。密钥组424可以包括例如用于各种TCR的一个或多个认可密钥、存储根密钥和/或证明密钥。认可密 钥可以是通常在制造时永久嵌入TPM硬件中的加密密钥。在至少一 些实施方案中,可以不在TPM外部释放认可密钥,并且可以使用对 应的公钥来验证TPM本身是真实的。认可密钥也可用于加密数据; 使用对应的公钥,可以稍后解密加密版本,从而可以验证在TPM处 执行解密的事实。在一些实施方案中,存储根密钥可用于保护代表在 GVM或虚拟化管理器部件处运行的应用创建的新密钥,以便在没有 TPM的情况下不能使用新密钥。在某些实现方式中,与可以在制造 TPM时创建和存储的认可密钥不同,可以在某实体(例如提供商网络 管理员)获得TPM的所有权时,创建存储根密钥。在一些实施方案中, 可以在与平台证明者的交互中利用证明密钥,例如,以验证虚拟化主 机的共享配置元件满足虚拟化计算服务和/或客户端的要求。
在各种实施方案中,可以使用密码处理器426获得许多不同类型 的密码值。例如,可以使用密钥生成器428获得密码强度密钥(诸如 与Rivest-Shamir-Adleman(RSA)算法或其他类似算法相关联的密钥)。 可以在散列生成器432处使用SHA(安全散列算法)的若干变体中的 任何变体(诸如SHA-1),来产生满足期望质量等级的散列值。在一些 情况下,这种散列值可用于在虚拟化管理器引导过程的一个或多个阶 段期间扩展PCR。在所描绘的实施方案中,可以使用RNG(随机数/ 噪声生成器)430获得高质量随机噪声值或随机数。可以从序列号源 434获得单调递增的序列号,并且可以将其用作现时值或用于需要唯 一标识符的其他应用。在一些实施方案中,还可以或替代地使用TPM 来执行其他类型的密码功能。在一些实施方案中,对称和非对称密码 引擎都可以包括在TPM中;在其他实施方案中,可以包括对称或非 对称密码引擎而不是两种类型的引擎。
在各种实施方案中,TPM可以支持各种数据项(例如密钥(包括用 于下面讨论的引导过程的后续阶段的密钥))的“密封”。当密封诸如密 钥之类的对象时,可以从接收到密封密钥的请求时将所选择的一组 (或全部)PCR的内容记录在TPM中。如果和当所选择的PCR具有与 密封时具有的相同的值,则可以仅提取密封数据。在至少一个实施方 案中,例如,除了图4中所示的部件(所述部件通常可用于主机范围 而不是GVM特定的TCR)之外,TPM还可以包括GVM特定的子部 件。
多阶段引导过程
图5示出了根据至少一些实施方案的可以用于虚拟化管理器的 示例多阶段引导过程的各方面。在图5的左侧,按顺序示出了各个阶 段的概述;在右侧,示出了在几个阶段中使用的主要安全技术。在至 少一些实施方案中,当虚拟化主机通电时,可以开始多阶段引导过程。 在初始安全引导阶段501,一个或多个固件程序(例如,从卸载卡处的 SPI闪存存储器中)可以读入并且在一个或多个卸载处理器(例如,在 虚拟化控制器将在其上运行的卸载卡处)处执行。在该初始(并且通常 非常短)阶段期间,可以使用烧到硬件(例如,在卸载卡的防篡改存储 位置,其可以、也可以不被合并到诸如TPM之类的安全模块中)的公钥来验证固件的签名。如元素504所示,在至少一些实施方案中,公 钥所属的密钥对的对应私钥可以存储在硬件安全模块设备中。在所描 绘的实施方案中,在阶段501完成之后,通常可不必重新使用在该阶 段期间使用的固件。实际上,引入将要运行很长时间或重新使用(例 如,在引导过程的稍后阶段和/或引导后,例如用于PCI-E配置空间 仿真的代码)的固件可能代表启动过程的第二阶段的开始。在所描绘 的实施方案中,可以预期在阶段501使用的固件在虚拟化主机的使用 寿命期间保持不变,这是为什么烧到硬件中的密钥可能是该阶段的适 当安全机制的原因之一。相比之下,可以随时间的推移修改在阶段 501之后的阶段中使用的固件或软件(例如,以引入增强特征或去除错 误)。
在第二阶段期间,其被在图5中称为测量引导阶段506,执行或 启动的固件/软件程序的一个或多个可用于扩展安全模块的PCR(或 若干PCR),如元素509所示,从而留下程序的精确(并且难以伪造) 证据。例如,在一个实施方案中,特定PCR,例如PCR-k,可以在测量的引导阶段期间扩展三次,对于相应的固件程序M1、M2和M3, 每个一次。令V0为阶段506开始时PCR-k中的初始值(其可以例如 完全包括零)。就在加载并执行M1之前,安全模块可以计算以V0和 M1作为输入的散列函数H的值(例如,使用图4中所示的散列生成 器432或等效物),并将该值存储在PCR-k中。因此,PCR-k的新值 可以如下设置:PCR-k←H(V0,M1)。接下来,当加载M2时,取得 PCR-k的当前值和新程序M2的散列函数输出可以存储在PCR-k中,如下:PCR-k←H(H(V0,M1),M2)。类似地,当要加载M3时,可以通 过M3再次扩展PCR-k,从而将PCR-0的最终值设置如下: PCR-k←H(H(H(V0,M1),M2),M3)。结果,假设使用密码强度散列函 数,所有程序的密码强度表示和程序被激活的顺序可以存储在安全模 块中。在各种实施方案中,可以通过安全模块的I/O接口使得可以被 称为被加载的固件/软件的“测量值”的PCR值可被访问,并且因此可 以用于验证程序的预期版本是用过的。
在测量的引导阶段结束时或者接近结束时,在所描绘的实施方案 中,可以加载和启动虚拟化控制器的特殊最小版本(这里可以表示为 Vmin),如元素511所示。由于可以通过扩展一个或多个PCR来存储 各种程序的测量值,这意味着PCR(例如,上述示例中的PCR-k)将包 含至少部分地基于Vmin的内容的散列值。最小版本的主要目的可以 包括提供具有刚好足够功能的公共基线,以允许随着时间的推移启动 (例如,通过链加载)虚拟化控制器的更完整版本。链加载是用于用新 程序替换当前正在执行的程序的技术,例如,使用公共数据区在当前 正在执行的程序和新程序之间传递信息。为了确保执行引导过程的早 期阶段(在更新到虚拟化控制器的新的完整版本之前)而不会发生破坏 安全的情形,可以在启动链加载之前检查PCR的内容,如元素514 所示。考虑一个示例情况,将安装虚拟化控制器的完整版本V4,例 如在特定年份的6月1日。稍后,比方说,在12月1日,将安装V5 版本。在这两种情况下,前三个阶段(直到Vmin(虚拟化控制器的特 殊最小版本)的启动)可能是相同的(假设没有针对这些阶段的固件程 序被更改),因此,当Vmin启动时,相同的值可能存储在TPM PCR 中,且在引导的早期阶段没有任何改变的事实可以通过读取PCR的 内容来验证。在6月的情况下,Vmin可以通过链加载来替换为V4, 而在12月的情况下,Vmin可以直接替换为V5(例如,不必通过V4 或其他中间版本)。
在至少一些实施方案中,虚拟化控制器的新版本(例如,Vnew) 可以存储在可从卸载卡访问的加密存储设备(例如,基于闪存的设备 或SSD)中。为了解密Vnew,可能必须由Vmin从安全模块获得密钥 (如元素509所示)。在所描绘的实施方案中,安全模块可以仅在PCR 状态表示引导的早期阶段(例如测量的引导阶段)的成功和安全完成的 情况下才提供密钥。因此,在至少一些实施方案中,如果以某种方式 对引导的早期阶段进行攻击和破坏,则PCR值将与预期值不匹配, 并且对Vnew的实时更新可能会被阻止。在一些实施方案中,在对应 于元素501的操作中使用的相同密钥可以用于存储设备,而在其他实 施方案中,可以使用不同的密钥。
在所描绘的实施方案中,如元素516中所示,可以使用从安全模 块获得的密钥,从加密的存储设备检索虚拟化控制器的新版本Vnew。 然后,可以由虚拟化控制器的完整版本Vnew来启动虚拟化管理器的 其他部件(其可执行版本也可以从加密的存储设备检索)(元素521)。 如前所述,这些附加部件中的至少一些(诸如管理程序和/或网络处理 卸载器)可以在除用于虚拟化控制器本身的处理器之外的处理器上运 行。在各种实施方案中,这些部件的可执行版本可以在被写入加密存 储设备之前由虚拟化计算服务的控制平面部件进行签名。可以使用虚 拟化主机登记到的公钥基础设施来检查每个部件的签名,如元素519 和524所示。下面在图7的上下文中讨论用于在这种基础设施中登记 主机的过程。
在虚拟化管理器的所有部件(诸如在图2的上下文中讨论的虚拟 化控制器Vnew、网络处理卸载器和机会性管理程序的子部件)已经成 功实例化之后,可以认为多阶段引导完成(元素526)。至少在一些实 施方案中,管理程序子部件的一个或多个可以将其自身置于如前所述 的静止状态。然后,虚拟化管理器可以开始处理与GVM相关的请求, 例如实例化/启动GVM、终止现有GVM、验证主机的软件/固件状态 等的请求。
加密存储设备的初始密钥生成
图6是示出根据至少一些实施方案的可以被执行以增强用于与 虚拟化管理器相关联的可执行程序的存储设备的安全性的操作的各 方面的流程图。此类程序可以尤其包括虚拟化控制器的完整版本(以 上称为Vnew)、管理程序版本和/或网络处理卸载器版本。在图6所 描绘的实施方案中,TPM用作安全模块,但是在各种实施方案中可 以采用其他类型的安全模块。如元素601所示,可以启动虚拟化主机 的第一次引导(例如,虚拟化主机在制造和测试之后在数据中心中安 装之后第一次引导虚拟化主机)。可以执行图5中所示的前几个引导 阶段(例如,使用烧入的密钥来保护其安全的第一引导阶段和测量的 引导阶段),直到并包括Vmin的启动(元素604)。
然后,Vmin可以尝试检查存储设备是否处于有效状态,例如, 通过检查存储设备的标头部分的内容。如果标头为空(或者具有表明 尚未生成存储设备的加密密钥的某个其他值),则这可以表明存储设 备处于无效状态(元素607)。然后,在所描绘的实施方案中,Vmin可 以使用TPM的密码引擎为存储设备生成加密密钥(例如,符合诸如 AES-256-XTS之类的高级加密标准的密钥)(元素610)。然后可以使 用PCR的当前内容(在此时包括在元素604中提到的引导过程的阶段 期间生成的散列值)在TPM处密封该密钥(元素613)。
在所描绘的实施方案中,密钥的密封版本可以放置在存储设备的 标头(元素616),其中它可以用作存储设备已经正确初始化的指示符。 在随后对存储设备的访问中(例如,每次都必须从存储设备检索完整 版本的虚拟化控制器时,如在与图5的元素511相对应的操作中), 可以从TPM检索密钥的未密封版本,以解密存储设备的内容(元素 619)。
虚拟化主机在VCS网络安全基础设施中的登记
在其生命周期期间,每个虚拟化主机都可能必须与提供商网络的 各种其他部件(诸如包括虚拟化计算服务本身的一个或多个服务的控 制平面实体)安全地进行通信。为此,在至少一些实施方案中,可能 要求在主机上运行的虚拟化管理器通过与跟虚拟化计算服务相关联 的主机身份管理服务的网络交互,来将主机登记/注册为公钥基础设 施或某一其他类似安全基础设施的成员。在一些实施方案中,可以使 用虚拟化计算服务内的资源来实现这样的主机身份管理服务(例如, 使用图1中所示的主机身份管理器172的一个或多个),而在其他实 施方案中,主机身份管理服务可以在虚拟化计算服务的外部。一般而 言,在各种实施方案中,主机身份管理服务可以负责将虚拟化主机注 册/登记在安全基础设施中、根据需要更新和轮换所得到的证书、管 理证书撤销列表和/或维护各个虚拟化主机上的相应密钥存储的内 容。
图7是示出根据至少一些实施方案的可以执行以在虚拟化计算 服务的安全基础设施内注册虚拟化主机的操作的各方面的流程图。如 图6所示,TPM用作图7所描绘的实施方案中的安全模块,但是在 其他实施方案中可以使用其他类型的安全模块。如元素701所示,虚 拟化管理器的部件(诸如虚拟化控制器的最小版本Vmin)可以通过生 成安全密钥对(例如,使用TPM)并然后创建自签名证书以用于与主机 身份管理服务(HIMS)的安全通信会话中来开始注册过程。诸如 TLS(传输层安全性)之类的任何适当的安全/加密网络协议可用于建 立会话的连接(元素704)。在至少一些实施方案中,虚拟化控制器可 以是部分卸载的虚拟化管理器的部件,其为注册目的,与HIMS进行 交互。
HIMS可以通过向虚拟化管理器发送质询有效载荷(例如,包括一 些随机数据,以及由虚拟化管理器为会话提供的公钥)来发起其参与 注册过程(元素707)。质询消息可以验证公钥并将质询有效载荷发送 到TPM(元素710)。TPM可以例如使用证明密钥和一个或多个PCR 的当前值来准备响应有效载荷(元素713),并且将响应有效载荷提供 给虚拟化管理器。
接着,响应有效载荷可以由虚拟化管理器传递到HIMS(元素 716)。HIMS可以使用响应有效载荷,确认虚拟化主机的状态对于注 册是可接受的或有效的。然后,HIMS可以注册或登记虚拟化主机, 例如,通过为主机生成X509身份证书,并将身份证书发送到主机处的虚拟化管理器(元素719)。在所描绘的实施方案中,身份证书可用 于保护来自虚拟化主机的至少一些后续通信。在一些实施方案中, HIMS还可以发送一个或多个附加证书,以存储在虚拟化管理器可访 问的本地密钥存储区中(例如,在加密存储设备中,或在TPM)(元素722)。虚拟化管理器可以使用这样的附加证书来验证为各种部件(包括 虚拟化控制器的全功能版本、机会性管理程序和/或网络处理卸载器) 的更新而生成的有效载荷的签名。在一些实施方案中,可以使用用于 验证虚拟化控制器版本的签名的证书来扩展TPM的PCR;也就是说, 可以测量该证书,就像测量前面讨论的引导过程的第二阶段中的固件 部件一样。
在已经注册主机并且已经启动完整版本的虚拟化管理器之后,可 以启动各种与GVM相关的操作,例如响应于客户端请求,启动/终止 GVM。为了进一步增强虚拟化计算服务的安全性,在至少一些实施 方案中,HIMS或虚拟化计算服务的其他控制平面部件可以通过向虚 拟化管理器或经由虚拟化管理器向TPM发送查询(例如证明查询)来 周期性地(或响应于触发条件)验证主机的状态(元素725)。例如,这种 验证查询可以包括识别一个或多个软件/固件程序的版本(在TPM处 存储有其测量值或其他指示符)的请求。可以从TPM检索适当的验证 数据,并将其提供给HIMS或其他控制平面部件。如果没有接收到对 这样的查询的响应,或者接收到意外/无效响应,则在一些实施方案 中,HIMS或其他控制平面部件可以触发警报以指出主机处于无效或 被攻破状态,并且可以启动适当的补救措施(例如禁用和调试主机)。
虚拟化主机中的信任级别
图8示出了根据至少一些实施方案的与虚拟化主机的部件相关 联的不同信任级别的示例。作为上述各种技术(包括多阶段引导过程、 用于实时更新的针对新版本虚拟化管理器部件的加密存储设备、与主 机身份管理服务的交互以及管理程序的责任最小化)的结果,可以最 小化在虚拟化主机上持续存在的未检测到的安全攻破的可能性。如图 8中的箭头885所示,从安全角度来看,在虚拟化主机上运行的大多 数软件/固件部件802,包括精简的机会性管理程序820、网络处理卸 载器816和来宾虚拟机850,可以被认为是不可信的。针对这些部件 中的各个部件的安全攻击或者引入这些部件中的各个部件的错误影 响往往会是局部化的,而不会导致任何广泛的中断,因为与虚拟化计 算服务的安全敏感部分的大部分交互都可以由虚拟化控制器执行。由 于传统上由管理程序处理的许多功能已被卸载,因此可以减少针对管 理程序的安全攻破的机会,并且可以最小化针对管理程序本身的任何 成功安全攻击的影响。
在所描绘的实施方案中,如箭头880所示,虚拟化控制器可以被 认为是软件/固件栈的主要可信部件。如上所述,使用安全模块的能 力和最早引导阶段的烧入的密钥,可以最小化持续成功攻破虚拟化控 制器安全性的可能性。此外,对虚拟化管理器的各种部件使用实时更 新以及由主机身份管理服务检查虚拟化主机的状态可以提高检测到 攻击的速度并在发生攻击时采取补救措施的速度(对运行来宾虚拟机 的影响最小)。
来宾虚拟机实例化
图9示出了根据至少一些实施方案的为启动来宾虚拟机在各个 虚拟计算服务部件层之间可能需要的交互的示例。服务的客户端910 可以使用服务的编程接口915(例如,使用基于安全超文本传输协议 的web服务接口)发送实例化或启动GVM的请求(具有GVM的期望 特性,例如在请求中指出的存储器大小、处理能力级别、操作系统版 本等)。可以在控制平面部件960处接收客户端的请求,并将其转换 为内部格式以便传输到所选择的虚拟化主机。可以例如由控制平面的 放置管理器基于期望GVM的特性、主机处的可用资源容量等来选择 特定主机。在一些实施方案中,REST(代表性状态转移)应用编程接口 可以由在虚拟化主机的卸载卡处运行的虚拟化控制器进行支持。控制 平面部件可以使用虚拟化控制器的编程接口918来将GVM实例化请 求的内部版本发送到虚拟化控制器965。
在所描绘的实施方案中,然后,基于卸载卡的虚拟化控制器可以 格式化针对机会性管理程序970的对应请求。在至少一些实施方案 中,基于队列的协议可用于从卸载卡向管理程序发送请求,例如,使 用基于PCI-E的DMA(直接存储器访问)。当经由管理程序的编程接 口921接收到GVM实例化请求时,可以识别要专用于虚拟化主机的 主机的资源子集,并且可以使用适当的机器图像来启动来宾虚拟机 (元素980)。在各种实施方案中,可以由一个或多个虚拟化管理器部 件从存储位置读取要用于来宾虚拟机的机器图像。在一些实施方案 中,每个虚拟化主机都可以具有时隙映射972的多个GVM“时隙”973 (例如,时隙973A-973K),每个时隙都表示用于给定GVM的资源。 使用中的时隙(例如时隙973A或973K)可以表示对应的资源当前被分 配给客户端,而空闲时隙可以用于新的GVM。在至少一些实施方案 中,虚拟化主机的主存储器的分配给给定GVM的特定部分可以由虚 拟化控制器选择,如下面进一步详细讨论的。
图10示出了根据至少一些实施方案的虚拟化主机处的来宾虚拟 机的示例状态转换。在使用上面在图9的上下文中讨论的那种特定时 隙实例化GVM之前,可以认为GVM处于不存在状态1001。当为一 个实例分配时隙时,例如,通过与主机的虚拟化管理器一起操作的虚 拟化计算服务的控制平面部件,该实例可以最初处于非活动状态 1004。然后,GVM可以移动到活动状态1007,例如,初始“规范待 决”状态1010,GVM可以从该状态转换到若干其他活动状态。
在规范待决状态1010中,可能已经为GVM分配了机会性管理 程序的GVM管理器进程,但是可能尚未向GVM管理器进程提供 GVM的规范(包括实例化GVM进程所需的详细信息)。从规范待决状 态1010,GVM可以进入暂停状态1013。在暂停状态下,规范可能已 提供给GVM管理器,但GVM的虚拟CPU线程(vCPU)尚未安排在 物理CPU(pCPU)上执行。暂停状态可以用于例如调试目的和/或附接 /分离设备。
当使vPCU在pCPU上可运行时,GVM可以进入运行状态1016, 并且可以使用pCPU来运行客户端的应用。通过将vCPU状态存储在 为GVM元数据预留的存储器区域(将在管理程序的实时更新期间使 用),可以从暂停状态1013到达序列化状态1019,如下所述。从序列化状态1019或运行状态,可以例如在管理程序的实时更新需要时由 管理程序的GVM管理器部件暂停GVM。另外,在所描绘的实施方 案中,从运行或暂停状态,GVM可以进入退出状态1022,例如,当 通知管理程序,GVM将被终止时,或者当需要中止似乎卡住的正在 运行的GVM的操作时。在各种实施方案中,在计划的或请求的GVM 重新引导的情况下,重新启动之后,GVM可以被放回到非活动状态 (然后是活动状态)。
当决定永久地从虚拟化主机终止GVM时,可能必须擦除或清除 主机的主存储器的为GVM分配的部分(以及其他资源),例如,以防 止无意中从终止的GVM向下一个占用其时隙的GVM传输数据。这 样,GVM可以从退出状态1022转换到擦除状态1010,在该擦除状 态,管理程序的安全部件确保存储器被覆写(例如,用零)。如果由于 某种原因不能擦除存储器,则可以将对应的时隙视为“损坏的时 隙”1080,并且可以通知虚拟化计算服务的控制平面,该时隙不可用 于新的GVM。在一些实施方案中,可以启动使损坏的时隙的存储器 可用的修复操作。如果擦除成功,则与时隙相关联的存储器可以重新 用于以不存在状态1001开始的新GVM。
存储器管理卸载
除了上面讨论的与引导相关和与安全相关的操作之外,在至少一 些实施方案中,可以在卸载的虚拟化管理器部件处执行虚拟化主机处 的存储器分配任务的相当大的子集。特别地,在机会性管理程序可以 管理虚拟化主机的主存储器的相对小部分时,在至少一些实施方案 中,关于存储器的其余部分的分配决策可以由虚拟化控制器或单独的 卸载的存储器管理器作出。该方法可以具有进一步减少管理程序必须 完成的工作量的益处,从而使得来宾虚拟机能够利用更多的pCPU周 期。另外,如下所述,该方法还可以实现管理程序的实时更新,在此 期间可以不必重新引导运行的来宾虚拟机。
图11示出了根据至少一些实施方案的将虚拟化主机的主存储器 划分为由卸载的虚拟化管理器部件管理的部分和由管理程序管理的 部分的示例。如图所示,虚拟化主机的主存储器1110被划分为管理 程序管理的部分1115和由卸载的虚拟化管理器部件(OVMC)管理的 部分1120。在所描绘的实施方案中,OVMC管理的部分可以用于GVM 存储器分配,并且还可以用于每个GVM的元数据1121,其可以用于 在管理程序更新期间存储GVM设备状态。在所描绘的实施方案中, 可以在管理程序的实时更新期间覆写管理程序管理部分1115中的至 少一些。相比之下,至少部分地因为它不是由管理程序管理,OVMC 管理部分1120的内容可以跨管理程序更新而存在。
图12示出了根据至少一些实施方案的主机存储器的管理程序管 理的部分和包含在由卸载的虚拟化管理器部件管理的存储器部分中 的元数据的示例内容。在所描绘的实施方案中,管理程序管理的部分 1215可以包括一个或多个页面表1217、由管理程序的操作系统内核 级部件使用的数据结构1218、管理程序进程存储器1219(例如分配给 管理程序协调器、GVM管理器等等的特定存储器区域)以及实时更新 图像存储部分1221。在一些实施方案中,在管理程序处使用的页面 表1217可以被配置为管理相当小尺寸(例如四千字节或八千字节页面) 的各个分配。当执行管理程序的实时更新时,可以使用部分1221的 内容就地引导管理程序。稍后可以使用部分1221来存储另一个最近 更新的管理程序版本。这样,管理程序管理的存储器部分1215在各 个时间点都可以包括管理程序的两个版本-当前版本和部分1221中 的待引导版本。
主存储器的每GVM元数据部分1251可以包括用于碰巧在虚拟 化主机处被实例化的各种不同GVM的存储器的相应部分。在所描绘 的实施方案中,每个每GVM元数据部分都可以包括用于GVM的一 个或多个页面表以及设备状态保存区域。因此,例如,在所描绘的示例中,GVM1-元数据部分包括页面表1257A和设备状态保存区域 1259A,同时GVM2-元数据部分包括页面表1257B和设备状态保存 区域1259B。在至少一些实施方案中,GVM特定页面表1257中的条 目的页面大小可以与管理程序使用的页面大小不同。例如,在一种实 现方式中,管理程序可以以4千字节的页面从其部分分配存储器,而 用于GVM的页面大小可以是2兆字节。在至少一种实现方式中,不 同的页面大小可以用于同一主机上的不同GVM-例如,GVM1的页 面的大小可以各自为2兆字节,而GVM2的页面的大小可以各自为4 兆字节。在各种实施方案中,可以基于预期的存储器分配模式来确定 要用于管理程序和不同GVM的页面的特定大小(例如,通过虚拟化计 算服务的控制平面)。在各种实施方案中,GVM的I/O设备(例如,一 个或多个直通I/O设备)、vCPU等的状态可以保存在GVM的状态保 存区域中,例如,在执行管理程序实时更新时GVM暂停的短期内。 在至少一些实施方案中,OVMC可以确定主存储器的哪些区域将用 于给定GVM(例如,用于GVM的操作系统和应用)和GVM的元数据,并将该信息提供给管理程序。因此,在可以由OVMC作出GVM特 定的存储器分配决策时,在这些实施方案中,OVMC可以将这些决 策的至少一些结果提供给管理程序。注意,在至少一些实现方式中, 给定GVM的页面表和设备状态保存区域可能不是连续的。
在各种实施方案中,为了代表GVM作出存储器分配决策,OVMC 可能首先需要从管理程序获得关于存储器的信息。图13示出了根据 至少一些实施方案的虚拟化管理器的部件之间的示例性存储器库存 相关交互。如图所示,OVMC 1310可以发出命令1322以启动机会性 管理程序可执行程序1325,例如,在前面描述的多阶段引导操作的 后期阶段期间。当管理程序启动时,它可以向OVMC 1310发送消息 1325,指出已准备好进行工作。
OVMC可以向管理程序提交存储器库存请求1328,实际上要求 管理程序指出将由OVMC管理的存储器区域。管理程序可以例如以 可用存储器描述符1331的形式提供所请求的信息。OVMC随后可以 将该存储器的各个部分分配给各个GVM(例如,用于在GVM内运行 的操作系统进程和应用进程)和/或用于每GVM元数据(例如GVM特 定的页面表和设备状态存储信息),以在管理程序的实时更新期间使 用。
图14示出了根据至少一些实施方案的在虚拟化管理器的部件之 间的与来宾虚拟机实例化和终止相关联的示例存储器相关交互。 OVMC 1410可以接收启动请求1402的指示,例如,从虚拟计算服务 的控制平面部件(其中可能已经接收到来自客户端的对GVM的对应 请求)。该请求可以指出要实例化的GVM的各种性质,包括例如要为 GVM建立的存储器的大小、要分配给GVM的处理能力等。OVMC 1410可以为GVM本身分配存储器(即,用于将在GVM上执行的操 作系统和应用),以及为GVM的页面表和如果/当在管理程序的实时 更新期间简短地暂停GVM可能必须保存的各种元数据条目分配存储 器。关于为GVM及其元数据分配的存储器的信息1422可以由OVMC 提供给机会性管理程序1435,并且OVMC可以更新其关于可用于(如 果有的话)主机上的附加GVM的空闲存储器量的记录。在至少一些实 施方案中,可以在OVMC处使用伙伴分配算法1425来响应GVM的 存储器请求。
在代表其实例化GVM的客户端已经完成在GVM上运行它们的 应用之后,客户端可以向虚拟化计算服务的控制平面发送GVM终止 请求。可以从控制平面向OVMC 1410提供GVM终止请求的内部版 本1404的指示。终止命令1428可以由OVMC发送到机会性管理程 序1435。作为响应,管理程序可以关闭GVM。在关闭GVM之后, 可以擦除或清除物理存储器的已经分配给GVM的部分(例如,通过由 机会性管理程序1435的部件用零覆写存储器),并可以向OVMC 1410 提供存储器可用于其他GVM的指示1431。OVMC可以相应地更新 其存储器分配的记录,并且在需要时将至少一些释放的存储器用于某 个其他GVM。
图15示出了根据至少一些实施方案的在虚拟机管理器的部件之 间的与管理程序的实时更新相关联的示例交互。在所描绘的实施方案 中,OVMC可以从虚拟化计算服务的控制平面部件接收用于部署新 版本机会性管理程序的请求1502。作为响应,可以将用于存储新版 本可执行图像的命令1522从OVMC发送到机会性管理程序1535的 当前运行的版本。在一些实现方式中,OVMC可以发送新版本的内 容,而在其他实现方式中,OVMC可以提供要从其获得新版本的位 置的指示。新版本的内容可以保存在虚拟化主机的主存储器的管理程序管理部分的实时更新图像存储部分1575中。在至少一些实施方案 中,除了各种增强和/或错误修复之外,新版本还可以包括用于将当 前版本的管理程序用于其操作的现有数据结构(包括用于存储器管理 的结构)转换为修改的版本,供新版本管理程序使用的代码。
在各种实施方案中,新版本管理程序1435跨虚拟化主机机群的 部署可以在两个时间上分离的步骤中执行:分发阶段,在该分发阶段 期间,新版本存储在机群中某个数量的主机或所有主机的主机存储器 的管理程序管理的部分中,以及激活阶段,在该激活阶段期间,通过 实时引导在主机上启动新版本。这两个阶段可能由于各种原因而是分 离的-例如,因为可能需要花费大量时间来确认新版本已经存储在 (可能非常大的)目标主机组中而没有错误,和/或尝试避免主机机群的 目标部分的不同部分最终会运行不同版本的管理程序的情况。
在所描绘的实施方案中,为了触发所存储的新版本管理程序的激 活,可以将实时更新请求1504发送到OVMC 1510。OVMC 1510又 可以将就地引导命令1528发送到管理程序1535的当前版本。当前版 本可暂时暂停任何正在运行的GVM,序列化GVM的状态(使用 OVMC管理的存储器),然后使用存储的新版本来实现实时更新1565。 在所描绘的实施方案中,如果重新引导到新版本成功,则新版本机会 性管理程序可以重新激活暂停的GVM(如果有的话),并将管理程序 就绪消息1531发送到OVMC。在各种实施方案中,可以不必为管理 程序的更新而重新引导GVM,并且GVM暂停的时间间隔通常可以 足够小,使得至少一些GVM用户或应用可能不会注意到暂停。由于 GVM状态在就地重新引导之前保存在OVMC管理的存储器的一部 分中,因此即使由于某种原因,实时更新失败并且先前运行的管理程 序必须恢复其操作,GVM也可以被快速重新激活。
图16是示出根据至少一些实施方案的可以由部分卸载的虚拟化 管理器的各种部件执行的存储器管理相关操作的各方面的流程图。如 元素1601所示,卸载的虚拟化管理器部件(OVMC)可以在虚拟化主机 处启动机会性管理程序的一个或多个部件,例如,在前面讨论的多阶 段引导操作的稍后阶段之一中。管理程序可以预留主机的主存储器的 一部分,用于第一页面表以管理其自己的存储器分配(即,管理程序 的内部存储器分配,用于管理程序的各个子部件,例如管理程序控制 器、GVM管理器等等,与为GVM分配的存储器相反)(元素1604)。 在至少一些实施方案中,基于例如来自管理程序的子部件预期的典型 存储器分配模式,可以将该管理程序页面表中表示的页面的大小设置 为4千字节或某种其他相对小的页面大小。
主机主存储器的第二部分(也构成主机主存储器的管理程序管理 部分的一部分)可以留出用于管理程序的实时更新(元素1607),例如, 以当需要更新时存储新版本管理程序。在所描绘的实施方案中,新版 本在该阶段可能不一定可用,但是可以预留最终供其使用的空间。
OVMC可以向管理程序发送存储器库存请求(元素1610),例如, 以确定OVMC为GVM和相关联的元数据管理多少主存储器(以及哪 些特定部分)。在所描绘的实施方案中,管理程序可以将存储器的该 OVMC管理部分的大小和位置的指示发送回OVMC(元素1613)。 OVMC管理的部分可以包括可用的总物理存储器(由管理程序在其初 始化期间检测到的)和管理程序管理的部分之间的差。在管理程序实 时更新期间,OVMC管理的部分可以保持保留(即,可以不被覆写)。
在处理了关于OVMC管理的存储器区域的信息之后,OVMC可 以在主机处启用GVM的实例化。当要实例化新的GVM时,OVMC 可以从OVMC管理的区域选择要用于GVM的存储器区域(例如,包 括GVM特定的页面表、用于GVM的操作系统和进程的空间以及用 于保存GVM封送设备状态信息的元数据区域(元素1616)。在可以由 OVMC选择要在其中设置GVM的页面表的特定存储器地址范围时, 在各种实施方案中,管理程序可以负责实际创建页面表。用于页面表 的地址范围可以由OVMC作为GVM分页元数据的一部分提供给管 理程序。在至少一些实施方案中,GVM特定的页面表可以支持与管 理程序用于存储器的管理程序管理部分的一个或多个页面大小不同 的页面大小(或多个大小)。在一些实现方式中,分页元数据可以包括 要用于GVM的页面大小的指示。可以由OVMC向管理程序通知关 于为GVM作出的分配决策(元素1619)。
如果和当要在GVM终止之前执行管理程序的实时更新,则管理 程序可以暂停GVM的虚拟CPU并将设备状态保存在由OVMC为 GVM分配的元数据区域中(元素1622)。在所描绘的实施方案中,可 以在不重新引导主机的GVM的情况下执行管理程序的实时更新;相 反,在暂停GVM的短间隔之后,可以恢复GVM的状态。当GVM 最终终止时,OVMC分配给它的存储器可以被管理程序擦除(元素 1625),并且可以通知OVMC,终止的GVM的存储器可用,例如, 可用于其他GVM。
图17是示出根据至少一些实施方案的与管理程序的实时更新相 关联的操作的各方面的流程图。如元素1701中所示,虚拟化主机处 的卸载的虚拟化管理器部件(OVMC)可以接收将在主机(当前版本的 机会性管理程序已经在其上运行)上安装或部署新版本机会性管理程 序的指示。例如,可以从在其上正在使用虚拟化主机的虚拟化计算服 务的控制平面部件接收该指示。OVMC可以将新版本的可执行文件 的内容(或指向其内容的指针)发送到管理程序的当前版本(元素 1704),例如,发送到管理程序控制器子部件。在一些实施方案中, 除了新特征、错误修复等之外,新版本还可以包括用于在管理程序处 使用的各种数据结构的转换功能。例如,可以在新版本管理程序中将 新属性添加到特定的存储器管理相关数据结构,并且可以提供转换功 能,以将旧数据结构(其可能存储在由OVMC分配的元数据区域中) 转换为修改后的数据结构。
当前管理程序版本可以将新版本的可执行文件存储在主机主存 储器的被指定用于实时更新的部分中(元素1707)。在安全地存储新版 本之后,OVMC可以在某个时刻向当前管理程序发送请求或命令以 通过实时更新激活新版本(元素1710)-例如,使用不需要来宾虚拟机 重新引导的更新过程。在一些实施方案中,响应于来自虚拟化计算服 务的控制平面的另一通信,可以将激活命令/请求从OVMC发送到管 理程序。在其他实施方案中,实时更新可以由OVMC发起,而无需 来自控制平面的任何附加通信或指令,或者由当前版本的管理程序本 身(例如,一旦新版本已经存储在主存储器的管理程序管理的部分中, 就可以启动实时更新)。
在所描绘的实施方案中,当前版本的管理程序(例如,管理程序 的GVM管理器部件)可以静默或暂停运行GVM,作为实时更新的一 部分。与给定GVM相关联的状态信息(包括例如虚拟CPU状态、直 通I/O设备状态等)可以存储在主存储器的OVMC管理部分的适当的每GVM元数据部分中(元素1713)。
在所描绘的实施方案中,在暂停和保存GVM的状态信息之后, 管理程序可以执行对新版本的就地重新引导,例如,使用“kexec”机 制的等效物(元素1716)。在该阶段期间,可以覆写先前由管理程序的 更新前版本使用的主存储器的至少一部分,但是主存储器的OVMC 管理部分可以保持不变。在新版本管理程序引导后,它可以重新激活 暂停的GVM(元素1719)。在一些实施方案中,可以向OVMC提供实 时更新成功的通知(元素1722)。在各种实施方案中,可以在虚拟化主 机的生命周期期间多次执行类似的一组操作,因为在虚拟化计算服务 处开发和部署了新版本管理程序。
在至少一个实施方案中,可以在虚拟化服务的控制平面部件处执 行针对来宾虚拟机的至少一些存储器分配,这些控制平面部件不是卸 载卡本身的一部分。在一些这样的实施方案中,例如,在与虚拟化主 机分开的主机(可通过网络从虚拟化主机访问该主机)上运行的控制平 面部件可以负责向虚拟化主机的管理程序查询关于可用于GVM的存 储器、分配的每GVM存储器等等。这样的远程控制平面部件可以被 认为是相对于虚拟化主机的卸载的虚拟化管理器部件的另一种变体。
管理程序上的机会性任务处理
如前所述,在各种实施方案中,虚拟化管理器可以被设计为最小 化主机资源(例如,物理CPU和物理存储器)的消耗,主机资源另外可 以用于来宾虚拟机。在一些实施方案中,该最小化的一个方面可以包 括管理程序推迟某些虚拟化管理任务,直到GVM自愿放弃物理CPU, 然后在GVM不期望获得物理CPU的时间间隔期间利用机会执行任 务。为了这样做,在各种实施方案中,可以采用由OVMC或虚拟化 计算服务的控制平面发出的命令/请求的异步方法。此外,默认情况 下,管理程序的一些或所有子部件可以保持静默或被动状态,当出现 利用主机资源的机会,和/或当接收到来自其他子部件的消息时,退 出被动状态。如前所述,这种机会性方法可以帮助减少在GVM上执 行的应用操作的性能的可变性或抖动。
图18示出了根据至少一些实施方案的机会性管理程序的示例子 部件和通信机制。如图所示,虚拟化主机1802可以包括多个物理CPU (pCPU)1805,包括pCPU 1805A和1805B。主机还可以包括机会性 的默认静默管理程序1820,以及卸载卡1810上的一个或多个卸载的 虚拟化管理器部件(OVMC)1872。OVMC可以包括网络处理卸载器 1815和虚拟化控制器1816。在所描绘的实施方案中,管理程序1820 可以包括管理程序协调器1825、内核级部件1822、一个或多个GVM 管理器1828、隔离/安全部件1829和队列管理器1875。
在所示的示例情况下,每个pCPU 1805被指定供相应的GVM使 用-例如,GVM管理器1828A将分配给GVM 1850A的虚拟CPU 映射到pCPU 1805A,而GVM管理器1828B将分配给GVM1850B 的虚拟CPU映射到pCPU 1805B。在其他实施方案中,可以不必强制 执行GVM和pCPU之间的1:1映射-例如,可以在若干GVM之间 共享单个pCPU,或者可以将给定GVM映射到多于一个pCPU。
在所描绘的实施方案中,队列管理器1875可以充当虚拟化控制 器1816和管理程序的其他部件之间的中介。在一些实现方式中,虚 拟化控制器1816可以将其自身暴露为NVMe(非易失性存储器快速) 设备,并且队列管理器可以将由虚拟化控制器发布的管理命令/请求 转换为逻辑“待办事项”任务队列1848中的相应条目(例如条目T5和 T6)。此类任务的示例可以尤其包括收集与给定GVM、各种硬件子部 件或管理程序本身相关联的量度、启动现有GVM的关闭或重启、启 动新GVM、擦除正在被终止的GVM使用的存储器等等。注意,在 至少一些实施方案中,可以使用面向队列或先进先出协议而不必实现 物理队列数据结构。也就是说,逻辑“待办事项”任务队列1848有时 可以使用除队列之外的物理数据结构(例如缓冲器的链接列表等)来实 现。在至少一些实施方案中,可以使用简单队列的变体-例如,可 以基于相对优先级而不是使用纯粹的先进先出策略将条目排列在队 列内。
当由于GVM释放pCPU而被激活时,管理程序的其他部件(例如, 管理程序协调器1825)可以检查待办事项任务队列的内容,并且如果 存在未完成的任务,则采取响应动作。根据任务的性质,管理程序协 调器可以自己执行任务,或将其传递给另一个子部件进行实现。在任 务完成之后,在一些实施方案中,表示所请求操作的结果的条目(例 如,T1或T2)可以放置在可选的完成任务队列1849中。在所描绘的 实施方案中,如果/当对应的条目已经被放置在完成的任务队列1849 中,队列管理器可以向虚拟化控制器提供已经完成所请求的任务的指 示(和/或所请求的任务的结果)。在一些实施方案中,可以不实现完成 的任务队列。在至少一种实现方式中,管道可以用作管理程序子部件 的至少一些之间的统一内部通信机制。几个或所有子部件通常可能花 费大部分时间阻塞在轮询原语上(例如,使用epoll()系统调用或逻辑 等效物),等待消息。
在所描绘的实施方案中,一旦管理程序子部件至少完成了分配给 它的给定虚拟化管理任务的目标部分,它就可以转换到默认的被动或 静默状态,并且用于该任务的pCPU可以被释放回已经放弃了pCPU 的GVM。在不同实施方案中,GVM可能出于各种原因放弃pCPU, 例如,因为GVM必须等待I/O操作完成,或者因为必须读取定时器 值,等等。在一些实施方案中,GVM可能会请求将由管理程序部件 协调或执行的操作,并且可能会放弃pCPU以使管理程序能够执行所 请求的操作。在各种实施方案中,GVM的管理部件(诸如操作系统部件或设备驱动程序级部件)通常可能会放弃pCPU。
在一些实现方式中,GVM发布特定虚拟化指令(其可以被称为 “VM退出”指令)可以向内核级部件1822指出,正在放弃pCPU。内 核级部件可以通知管理程序1820的一个或多个其他部件(诸如与正在 切换上下文的GVM相关联的GVM管理器1828,和/或管理程序协 调器1825),有pCPU可用。该通知可以触发对待办事项任务队列1848 的检查(使用现在可用的pCPU),这又可以导致一个或多个排队任务 的执行(以及GVM请求的导致GVM释放pCPU的操作(如果请求这 样的操作的话))。释放的pCPU可用于执行排队任务的至少一部分。 在各种实施方案中,当排队的任务完成时,执行该任务的管理程序部 件可以重新转换到其默认的被动/静默状态。在各种实施方案中,排 队的虚拟化管理任务可以主要(或仅)在GVM不期望使用pCPU的时 间段期间使用pCPU来执行。
在大多数情况下,在各种实施方案中,在机会性管理程序处理的 各个虚拟化管理任务可能花费很少的时间,特别是相对于GVM(其放 弃pCPU导致该任务的执行)通常期望在放弃pCPU后不使用pCPU的 间隔长度而言。结果,在管理程序自身释放pCPU之前,管理程序可 以运行大多数任务直到完成。然而,在至少一些实施方案中,有时可 能需要或请求管理程序来执行持续时间比较长的虚拟化管理任务。在 这样的实施方案中,可以使用状态机来管理较长任务所需的工作,状 态机的各个转换对应于整个任务的可分开执行的子任务。在图18所 描绘的实施方案中,状态机存储区域1862可用于处理这种持续时间 比较长的任务。
在所描绘的实施方案中,并非一次执行整个较长的任务,可以在 管理程序释放pCPU之前,一次执行对应状态机的一个或几个状态转 换,其中已经完成状态转换的指示被存储在区域1862中。当有pCPU 可用时,管理程序部件在某些情况下可以确定(例如,通过检查待办 事项任务队列的头部)由状态机表示的任务尚未完成。然后,管理程 序部件可以检查当前状态机、识别需要完成的工作以执行下一个转 换、执行该工作、更新区域1862中的状态机表示以及然后释放pCPU 以重新进入其静止状态,即使还有更多的状态转换仍未完成。每次管 理程序部件获得执行持续时间比较长的任务的工作的大多数的机会 时,它都可能会这样做,直到任务最终完成。在某些情况下,可以在 将pCPU释放回GVM之前完成多于一个状态转换。
在一些情况下,虚拟化管理任务可以例如由虚拟化计算服务的控 制平面分配高优先级,指出应该尽快完成任务,即使这需要在GVM 自愿放弃pCPU之前激活管理程序部件。基于中断的机制可以用于这 种高优先级任务,在大多数实施方案中,这通常需要的可能性很低。 虚拟化控制器可以向管理程序发出中断,而不是被动地将任务排队, 从而使管理程序部件唤醒并启动高优先级任务。这样的高优先级任务 可以包括例如诊断或解决特定来宾虚拟机的不健康状态(例如,如果 GVM看起来卡在无限循环中或者对正常通信没有响应)。在一些实施 方案中,基于中断的机制可以用作OVMC和管理程序之间的交互的 备份技术,主要在基于队列的机制看起来不足的特殊情况下使用。
图19和图20共同示出了根据至少一些实施方案的与机会性管理 程序执行管理任务相关联的事件的示例序列。在默认状态1945,来 宾虚拟机1910利用pCPU 1950,而管理程序1925的进程/部件保持 在静默或被动状态(即,不消耗pCPU周期),等待GVM 1910释放pCPU。
GVM 1910最终可能自愿地释放pCPU,如图19的元素1947中 所示。在一些情况下,GVM 1910可以向管理程序1925发出请求1924 (诸如定时器访问请求或I/O请求),这需要响应,GVM才能够继续, 并且pCPU 1950被放弃,直到获得响应。在一些情况下,GVM 1910 可以放弃pCPU而不发出工作请求1924-例如,如果在GVM上运行 的应用发出sleep()命令或等效物。
如元素1948所示,然后,管理程序1925可以获取pCPU 1950。 管理程序可以检查待办事项任务队列1971以查看是否存在任何未完 成(尚未完成)的虚拟化管理任务。在所描绘的情况下,任务T5和T6 存在于待办事项队列1971中,因此管理程序可以发起对应于至少队 列头部的任务的工作(即,T5)。与GVM请求1924相关联的工作可以 继续(例如,与对队列1971的检查和任务T5的执行并行)。在各种实 施方案中,排队的任务的典型持续时间可能比处理GVM请求1924 所需的时间短得多。
最终可以由管理程序使用由GVM 1910放弃的pCPU完成出列的 任务(如图20的元素1949所示)。在所描绘的实施方案中,指出T5 已经完成的条目可以被放置在完成的任务队列1957中。在某些情况 下,与GVM请求1924相关联的工作可能仍在进行中。在所描绘的实施方案中,管理程序可以在完成T5之后放弃pCPU(如图20的元 素1950中所示),即使任务T6可能仍未完成。在一些实施方案中, 管理程序可以估计GVM请求1924将要花多长时间,并且如果其估 计指出在GVM请求被履行之前可以完成排队的任务,则执行多于一 个的排队任务(例如,T5和T6两者)。最终可以向GVM 1910提供对 应于GVM请求1924的响应1952。然后,GVM可以重新获取pCPU, 并且管理程序可以再次重新进入默认静止状态(元素1945)。
如前所述,对于某些虚拟化管理任务,可以采用基于中断的方法 来激活管理程序。图21是示出根据至少一些实施方案的与在管理程 序处实现中断驱动和基于队列的任务相关联的操作的各方面的流程 图。如元素2101所示,虚拟化计算服务的控制平面可以将请求R1 发送到卸载的虚拟化管理器部件。OVMC可以确定所请求的操作的 优先级或紧急性(元素2104)。如果需要立即或紧急响应(即,如果请 求R1具有相对于平均虚拟化管理任务的高优先级),如在对应于元素 2107的操作中确定的,则可以使用中断机制来激活管理程序(元素 2110)。R1所需的工作细节可以提供给管理程序以立即实现。在至少 一些实施方案中,管理程序可以依次中断或暂停GVM以执行高优先 级工作(元素2113)。如前所述,在某些情况下,高优先级请求可能涉 及解决或调试GVM的异常或意外状态-例如,GVM似乎没有响应 正常通信或似乎陷入循环。
如果R1对应于不必立即完成的正常优先级任务,也如在对应于 元素2107的操作中确定的那样,则可以使用基于队列的协议来异步 地向管理程序通知R1(元素2116)。例如,包含R1细节的任务描述符 可以被放入队列或某个其他位置,当GVM放弃pCPU并且管理程序 从被动状态转换到主动状态时,管理程序部件可以从该队列或该某个 其他位置读取该任务描述符。
如上所述,在某些情况下,与相对较短的大多数任务相比,可能 必须由管理程序执行持续时间比较长的虚拟化管理任务。图22是示 出根据至少一些实施方案的与在管理程序处管理不同预期持续时间 的任务相关联的操作的各方面的流程图。如元素2201所示,物理CPU 可以变得可用于管理程序(例如,当GVM自愿释放pCPU时)。管理 程序可以例如通过检查逻辑待办事项任务队列或流水线的头部来识 别尚未完成的未完成虚拟化管理任务T1(元素2204)。
在所描绘的实施方案中,虚拟化管理任务可以被分类为运行到完 成任务(通常持续时间短)和需要状态机的任务(持续时间较长)。如果 管理程序确定T1是运行到完成任务(如在对应于元素2207的操作中 确定的),则管理程序可以在释放pCPU以供GVM使用之前完成T1 (元素2210)。否则,如果T1是需要使用状态机的较长任务,也如在 对应于元素2207的操作中确定,则可以访问(或创建,如果这是第一 次遇到T1的话)T1的状态机表示。可以实现与状态机的下一转换相 对应的工作。可以更新状态机表示以指出已经执行了转换,并且可以 由管理程序释放pCPU(元素2213)。在一些实施方案中,关于任务是 否需要状态机的决定可以至少部分地在卸载的虚拟化管理器部件处 或在虚拟化计算服务的控制平面部件处作出-即,管理程序可以不 必自己做该决定。
注意,在各种实施方案中,除了图5、图6、图7、图16、图17、 图21和图22的流程图中所示的操作之外的至少一些操作可用于实现 上述各种虚拟化管理技术。所示操作中的一些在一些实施方案中可不 被实现或可以不同的顺序实现或并行而不是顺序实现。
图23提供了根据至少一些实施方案的通过使用机会性管理程序 可以使应用的响应时间变化减少的示例。元素2310示出了可以使用 虚拟化计算服务的来宾虚拟机运行的对时间敏感的应用或测试的示 例伪代码部分。在该示例中,在循环中执行一万次对时间敏感的操作 的迭代。对时间敏感的操作可以包括在某些情况下可以仅在pCPU上 执行的计算,或者在其他情况下,可以包括以请求-响应模式与某个 其他网络端点进行通信。
两个直方图样式的图2315和2316分别表示在使用非机会性管理 程序以及使用机会性管理程序的情况下的响应时间频率分布。在每个 图中,对于对时间敏感的操作的各个迭代测量的响应时间沿着X轴 增大,而响应时间的出现频率沿着Y轴增大。当采用传统的非机会 性管理程序时,与应用的对时间敏感的操作相关联的处理可能会经常 被中断,导致类似于图2315中所示的响应时间频率分布的响应时间 频率分布。尽管响应时间的最大数量(分布模式2371)可能对应于应用 任务未被中断很多的情况(即,由于管理程序或其他虚拟化管理部件 导致的中断最少),但仍然存在大量的响应时间大于所述模式,表明 有相当大的变化。响应时间中的较大扩展可能是由应用的各种管理程 序生成的中断引起的,不同的中断花费不同的时间量,在每种情况下, 这取决于由管理程序执行的虚拟化管理任务。
相比之下,在使用上述类型的机会性管理程序(在来宾虚拟机自 愿放弃之前倾向于不获取物理CPU)的情况下,响应时间的分布可能 完全不同。绝大多数响应时间可以紧密地聚集在最小中断值周围,从 而表明比使用非机会性管理程序时低得多的抖动。可能仍有一些响应 时间较长的情况,但这些情况也往往接近最小中断模式值。在各种实 施方案中,通过使用机会性和占用资源少的管理程序使得对时间要求 严格的应用操作的响应时间的变化的减少,对于某些类别的应用可能 具有巨大的价值。
使用案例
上述技术,将大部分虚拟化管理处理工作负载从虚拟化主机的主 CPU和存储器卸载,以及实现具有增强的安全特征的多阶段虚拟化 管理器引导过程,可以在各种环境中有用。在于提供商网络中实现的 许多大规模虚拟化计算服务中,与虚拟化管理相关联的开销可能会意 味着大量的业务成本。无法分配给服务客户的虚拟机的CPU周期和 存储器空间可能会导致提供商网络运营商的投资回报率降低。此外, 至少对于某些应用,虚拟化管理部件干扰客户应用的程度可能会影响 对时间要求严格的应用的结果,且因此可能会影响客户满意度。这里 描述的卸载技术可以显著减少与虚拟化管理相关联的资源(例如, CPU和存储器)占用,并降低应用性能的可变性。当从卸载卡处理大 部分虚拟化管理而不是使用操作系统和完整管理程序的单独管理实 例时,服务客户的安全性和隔离要求也可以更容易地履行。
本公开的实施方案可以鉴于以下条款来描述:
1.一种方法,其包括:
在虚拟化主机的第一卸载卡的一个或多个部件上执行:
启动所述虚拟化主机的虚拟化管理器的多阶段引导操作的第一 阶段,其中所述第一阶段包括使用第一密钥对来验证至少一个固件程 序,其中所述第一密钥对的第一密钥存储在所述第一卸载卡的防篡改 部分;
响应于确定所述第一阶段已成功完成,启动所述多阶段引导操作 的第二阶段,其中所述第二阶段包括(a)使用安全模块来测量一个或多 个固件程序和(b)在所述第一卸载卡上启动第一版本的虚拟化协调器;
利用由所述第一版本的虚拟化协调器从所述安全模块获得的特 定密钥,从存储设备获得不同版本的所述虚拟化协调器;
在所述第一卸载卡上启动所述不同版本的所述虚拟化协调器;
初始化所述虚拟化管理器的一个或多个其他部件以完成所述多 阶段引导操作,包括在未安装在所述第一卸载卡上的处理器上运行的 至少一个部件;以及
在所述多阶段引导操作成功完成之后,由所述虚拟化管理器响应 于来自提供商网络的虚拟化计算服务的控制平面部件的命令,在所述 虚拟化主机处实例化来宾虚拟机。
2.如条款1所述的方法,其中所述一个或多个其他部件包括在 所述虚拟化主机的一个或多个CPU处运行的管理程序。
3.如条款1所述的方法,其中所述虚拟化管理器的所述一个或 多个其他部件包括被配置为从所述虚拟化主机的一个或多个CPU卸 载网络处理操作的设备。
4.如条款1所述的方法,其还包括:
在所述虚拟化主机和所述提供商网络的身份服务之间建立安全 通信会话;
响应于来自所述身份服务的请求,由所述第一卸载卡的所述一个 或多个部件,至少部分地基于(a)证明身份密钥和(b)一个或多个平台 配置寄存器,从所述安全模块获得签名的有效载荷;以及
将所述签名的有效载荷提供给所述身份服务,以使所述虚拟化主 机能够在所述虚拟化计算服务的公钥基础设施中登记。
5.如条款1所述的方法,其中所述实例化所述来宾虚拟机包括:
通过以下项中的一个或多个,在所述第一卸载卡的所述一个或多 个部件与所述虚拟化管理器的所述一个或多个其他部件之间进行通 信:(a)外围部件互连-快速(PCI-E)总线,(b)QuickPath互连(QPI)或 (c)UltraPath互连(UPI)。
6.一种系统,其包括:
提供商网络的计算服务的虚拟化主机,其中所述虚拟化主机包括 第一卸载卡,其中所述第一卸载卡包括虚拟化管理器的一个或多个部 件;
其中所述一个或多个部件被配置为:
启动所述虚拟化管理器的多阶段引导操作的第一阶段,其中所述 第一阶段包括使用第一密钥对,其中所述第一密钥对的特定密钥存储 在防篡改位置;
响应于确定所述第一阶段已成功完成,启动所述多阶段引导操作 的第二阶段,其中所述第二阶段包括(a)使用安全模块来测量一个或多 个固件程序和(b)在所述第一卸载卡上启动第一版本的虚拟化协调器;
使用所述第一版本的所述虚拟化协调器,获得不同版本的所述虚 拟化协调器;
在所述第一卸载卡上启动所述不同版本的所述虚拟化协调器;以 及
初始化所述虚拟化管理器的一个或多个其他部件以完成所述多 阶段引导操作,包括在未安装在所述第一卸载卡上的处理器上运行的 至少一个部件。
7.如条款6所述的系统,其中所述一个或多个其他部件包括在 所述虚拟化主机的一个或多个CPU处运行的管理程序。
8.如条款7所述的系统,其中所述管理程序包括一个或多个静 止进程,其被配置为推迟一个或多个类别的虚拟化操作,直到所述虚 拟化主机的来宾虚拟机已经放弃对CPU的控制。
9.如条款6所述的系统,其中所述第一密钥对的第二密钥存储 在所述虚拟化主机外部的硬件安全模块设备处。
10.如条款6所述的系统,其中所述虚拟化主机位于所述提供商 网络外部的数据中心。
11.如条款6所述的系统,其中所述虚拟化管理器的所述一个或 多个其他部件包括被配置为执行网络处理操作的片上系统。
12.如条款6所述的系统,其中所述虚拟化管理器被配置为:
确定验证在所述虚拟化主机上运行的特定程序的版本的请求已 由所述计算服务的控制平面部件发送;以及
导致对所述请求的响应被生成,其中所述响应包括从所述安全模 块获得的数据。
13.如条款6所述的系统,其中在完成所述多阶段引导操作之后, 所述虚拟化协调器被配置为:
在所述虚拟化主机上启动来宾虚拟机的启动;
确定所述虚拟化管理器的特定部件的附加版本可用;以及
启动所述特定部件到所述附加版本的实时更新,其中所述来宾虚 拟机在所述实时更新的至少一部分期间继续运行。
14.如条款6所述的系统,其中所述一个或多个部件被配置为:
在获得所述不同版本的所述虚拟化协调器之前,确定指定用于所 述虚拟化协调器的更新版本的存储区域尚未使用加密密钥进行保护;
使用所述安全模块,生成用于所述存储区域的加密密钥;
使所述加密密钥在所述安全模块处密封;以及
利用所述加密密钥对所述存储区域进行一次或多次后续访问。
15.如条款6所述的系统,其中所述一个或多个部件被配置为:
与提供商网络的身份服务建立安全通信会话;
响应于来自所述身份服务的请求,至少部分地基于(a)证明身份密 钥和(b)一个或多个平台配置寄存器,从所述安全模块获得签名的有效 载荷;以及
将所述签名的有效载荷提供给所述身份服务,以使所述虚拟化主 机能够在所述计算服务的公钥基础设施中登记。
16.一种存储程序指令的非暂时性计算机可访问存储介质,所述 指令当在一个或多个处理器上执行时:
在虚拟化主机的第一卸载卡处启动所述虚拟化主机的虚拟化管 理器的多阶段引导操作的第一阶段,其中所述第一阶段包括使用第一 密钥对,其中所述第一密钥对的特定密钥存储在防篡改位置;
响应于确定所述第一阶段已成功完成,启动所述多阶段引导操作 的第二阶段,其中所述第二阶段包括(a)使用安全模块来测量一个或多 个固件程序和(b)在所述虚拟化主机的第一卸载卡启动第一版本的虚 拟化协调器;
使用所述第一版本的所述虚拟化协调器,获得不同版本的所述虚 拟化协调器;
在所述第一卸载卡上启动所述不同版本的所述虚拟化协调器;以 及
初始化所述虚拟化管理器的一个或多个其他部件以完成所述多 阶段引导操作,包括在未安装在所述第一卸载卡上的处理器上运行的 至少一个部件。
17.如条款16所述的非暂时性计算机可访问存储介质,其中所 述一个或多个其他部件包括在所述虚拟化主机的一个或多个CPU处 运行的管理程序。
18.如条款16所述的非暂时性计算机可访问存储介质,其中所 述虚拟化管理器的所述一个或多个其他部件包括片上系统,其被配置 为从所述虚拟化主机的一个或多个CPU卸载网络处理操作。
19.如条款16所述的非暂时性计算机可访问存储介质,其中所 述指令当在所述一个或多个处理器上执行时:
在获得所述不同版本的所述虚拟化协调器之前,确定指定用于所 述虚拟化协调器的更新版本的存储区域尚未使用加密密钥进行保护;
使用所述安全模块,生成用于所述存储区域的加密密钥;
使所述加密密钥在所述安全模块处密封;以及
利用所述加密密钥对所述存储区域进行一次或多次后续访问。
20.如条款16所述的非暂时性计算机可访问存储介质,其中所 述指令当在所述一个或多个处理器上执行时:
与提供商网络的身份服务建立安全通信会话;
响应于来自所述身份服务的请求,至少部分地基于(a)证明身份密 钥和(b)一个或多个平台配置寄存器,从所述安全模块获得签名的有效 载荷;以及
将所述签名的有效载荷提供给所述身份服务,以将所述虚拟化主 机登记到所述计算服务的公钥基础设施中。
说明性计算机系统
在至少一些实施方案中,实现本文描述的一种或多种技术(包括 实现部分卸载的虚拟化管理器等的技术)的一部分或全部的服务器可 包括通用计算机系统,其包括或被配置为访问一个或多个计算机可访 问的介质。图24示出了这种通用计算设备9000。在所图示的实施方 案中,计算设备9000包括一个或多个处理器9010,所述处理器经由 输入/输出(I/O)接口9030耦合到系统存储器9020(所述系统存储器可 包括非易失性和易失性存储器模块两者)。计算设备9000还包括耦合 到I/O接口9030的网络接口9040。
在各种实施方案中,计算设备9000可以是包括一个物理处理器 9010的单处理器系统,或者包括若干物理处理器9010(例如,两个、 四个、八个或另一个合适数量)的多处理器系统。处理器9010可为能 够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器 9010可为通用或嵌入式处理器,所述通用或嵌入式处理器实施多种 指令集架构(ISA)中的任一个,例如x86、PowerPC、SPARC或MIPS ISA或者任何其他合适的ISA。在多处理器系统中,处理器9010中 的每一个通常可但未必实施相同的ISA。在一些实现方式中,替代常 规的处理器或除常规的处理器外,还可使用图形处理单元(GPU)。
系统存储器9020可被配置为存储可由处理器9010访问的指令和 数据。在至少一些实施方案中,系统存储器9020可包括易失性和非 易失性部分两者;在其他实施方案中,可使用仅易失性存储器。在各 种实施方案中,可使用任何合适的存储器技术来实施系统存储器9020 的易失性部分,所述存储器技术例如静态随机存取存储器(SRAM)、 同步动态RAM或任何其他类型的存储器。对于系统存储器的非易失 性部分(例如,所述系统存储器可包括一个或多个NVDIMM),在一 些实施方案中,可使用基于闪存的存储器设备,包括NAND闪存设 备。在至少一些实施方案中,系统存储器的非易失性部分可包括电源, 例如超级电容器或其他电力存储设备(例如,电池)。在各种实施方案 中,基于忆阻器的电阻式随机存取存储器(ReRAM)、三维NAND技 术、铁电RAM、磁阻RAM(MRAM)或各种类型的相变存储器(PCM) 中的任何相变存储器可至少用于系统存储器的非易失性部分。在所图 示的实施方案中,实施一个或多个期望功能的程序指令和数据,例如 上文描述的那些方法、技术以及数据,被示出作为代码9025和数据 9026存储在系统存储器9020内。
在一个实施方案中,I/O接口9030可以被配置为协调设备中的处 理器9010、系统存储器9020和任何外围设备之间的I/O流量,包括 网络接口9040或其他外围接口诸如各种类型的卸载卡、持久和/或易 失性存储设备等。在一些实施方案中,I/O接口9030可执行任何必需 的协议、定时或其他数据变换以将来自一个部件(例如,系统存储器 9020)的数据信号转换成适合于由另一部件(例如,处理器9010)使用 的格式。在一些实施方案中,I/O接口9030可以包括对通过各种类型 的外围总线(例如外围部件互连(PCI)或PCI-Express总线标准的变体, 或例如通用串行总线(USB)标准)连接的设备的支持。在一些实施方案 中,I/O接口9030的功能可分成两个或更多个单独的部件,例如像北 桥和南桥。并且,在一些实施方案中,I/O接口9030的功能中的一些 或全部,例如到系统存储器9020的接口,可直接并入到处理器9010 中。
网络接口9040可以被配置为允许数据在计算设备9000和连接到 一个或多个网络9050的其他设备9060(诸如例如图1至图23所示的 其他计算机系统或设备)之间交换。在各种实施方案中,网络接口9040 可经由任何合适的有线或无线通用数据网络(例如像多种以太网网络) 支持通信。另外,网络接口9040可经由例如模拟话音网络或数字光 纤通信网络等电信/电话网络、经由例如光纤通道等存储区域网络 SAN或经由任何其他合适类型网络和/或协议来支持通信。
在一些实施方案中,系统存储器9020可以是计算机可访问介质 的一个实施方案,该计算机可访问介质被配置为存储如上针对图1至 图23所述的用于实现对应方法和装置的实施方案的程序指令和数 据。然而,在其他实施方案中,程序指令和/或数据可被接收、发送 或存储在不同类型的计算机可访问介质上。一般来说,计算机可访问 介质可包括非暂时性存储介质或存储器介质,例如磁性或光学介质, 例如经由I/O接口9030耦合到计算设备9000的磁盘或DVD/CD。非 暂时性计算机可访问存储介质还可包括任何易失性或非易失性介质, 例如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、 ROM等,所述易失性或非易失性介质在计算设备9000的一些实施方 案中可被包括作为系统存储器9020或另一类型的存储器。此外,计 算机可访问介质可包括经由例如网络和/或无线链路等通信介质传送 的传输介质或信号,例如电信号、电磁信号或数字信号,例如可经由 网络接口9040实施。多个计算设备(诸如图24中说明的计算设备)的 一部分或全部可用以在各种实施方案中实现所描述的功能性;举例来 说,在多种不同的设备和服务器上运行的软件部件可合作以提供该功 能性。在一些实施方案中,除了或替代于使用通用计算机系统实现, 可使用存储设备、网络设备或专用计算机系统实现所描述的功能性的 一部分。如本文所用的术语“计算设备”至少指代所有这些类型的设 备,并且不限于这些类型的设备。
结论
各个实施方案还可包括接收、发送或存储根据前面的描述实现在 计算机可访问介质上的指令和/或数据。一般来说,计算机可访问介 质可包括存储介质或存储器介质,例如磁性或光学介质,例如,磁盘 或DVD/CD-ROM、易失性或非易失性介质例如RAM(例如,SDRAM、 DDR、RDRAM、SRAM等)、ROM等,以及经由通信介质(例如网络 和/或无线链路)传送的传输介质或信号,例如电信号、电磁信号或数 字信号。
如附图中所图示且在本文中描述的各种方法表示方法的示例性 实施方案。所述方法可用软件、硬件或其组合实施。可改变方法的次 序,且可添加、重新排序、组合、省略、修改各种元素等。
可进行各种修改和改变,如得益于本公开的所属领域技术人员将 明白的。意图涵盖所有此类修改和改变,且因此,以上描述意图被视 为说明性而非限制性意义。

Claims (25)

1.一种系统,包括:
提供商网络的计算服务的虚拟化主机,其中所述虚拟化主机包括第一卸载卡,其中所述第一卸载卡包括虚拟化管理器的一个或多个部件;
其中所述一个或多个部件被配置为:
启动所述虚拟化管理器的多阶段引导操作的第一阶段,其中所述第一阶段包括使用第一密钥对来验证至少一个固件程序,其中所述第一密钥对的特定密钥存储在所述第一卸载卡的防篡改位置;
响应于确定所述第一阶段已成功完成,启动所述多阶段引导操作的第二阶段,其中所述第二阶段包括(a)使用安全模块来测量一个或多个固件程序和(b)在所述第一卸载卡上启动第一版本的虚拟化协调器;
利用由所述第一版本的虚拟化协调器从所述安全模块获得的特定密钥,从存储设备获得不同版本的所述虚拟化协调器;
在所述第一卸载卡上启动所述不同版本的所述虚拟化协调器;以及
初始化所述虚拟化管理器的一个或多个其他部件以完成所述多阶段引导操作,包括在未安装在所述第一卸载卡上的处理器上运行的至少一个部件。
2.如权利要求1所述的系统,其中所述一个或多个其他部件包括在所述虚拟化主机的一个或多个CPU处运行的管理程序。
3.如权利要求2所述的系统,其中所述管理程序包括一个或多个静止进程,所述静止进程被配置为推迟一个或多个类别的虚拟化操作,直到所述虚拟化主机的来宾虚拟机已经放弃对CPU的控制。
4.如权利要求1所述的系统,其中所述第一密钥对的第二密钥存储在所述虚拟化主机外部的硬件安全模块设备处。
5.如权利要求1所述的系统,其中所述虚拟化主机位于所述提供商网络外部的数据中心。
6.如权利要求1所述的系统,其中所述虚拟化管理器的所述一个或多个其他部件包括被配置为执行网络处理操作的片上系统。
7.如权利要求1所述的系统,其中所述虚拟化管理器被配置为:
确定验证在所述虚拟化主机上运行的特定程序的版本的请求已由所述计算服务的控制平面部件发送;以及
导致对所述请求的响应被生成,其中所述响应包括从所述安全模块获得的数据。
8.如权利要求1所述的系统,其中在完成所述多阶段引导操作之后,所述虚拟化协调器被配置为:
在所述虚拟化主机上启动来宾虚拟机的启动;
确定所述虚拟化管理器的特定部件的附加版本可用;以及
启动所述特定部件到所述附加版本的实时更新,其中所述来宾虚拟机在所述实时更新的至少一部分期间继续运行。
9.如权利要求1所述的系统,其中所述一个或多个部件被配置为:
在获得所述不同版本的所述虚拟化协调器之前,确定指定用于所述虚拟化协调器的更新版本的存储区域尚未使用加密密钥进行保护;
使用所述安全模块,生成用于所述存储区域的加密密钥;
使所述加密密钥在所述安全模块处密封;以及
利用所述加密密钥对所述存储区域进行一次或多次后续访问。
10.如权利要求1所述的系统,其中所述一个或多个部件被配置为:
与提供商网络的身份服务建立安全通信会话;
响应于来自所述身份服务的请求,至少部分地基于(a)证明身份密钥和(b)一个或多个平台配置寄存器,从所述安全模块获得签名的有效载荷;以及
将所述签名的有效载荷提供给所述身份服务,以使所述虚拟化主机能够在所述计算服务的公钥基础设施中登记。
11.一种系统,包括耦合到存储器的处理器,所述存储器包括当在一个或多个处理器上执行时使所述系统执行以下操作的指令:
在虚拟化主机的第一卸载卡处启动所述虚拟化主机的虚拟化管理器的多阶段引导操作的第一阶段,其中所述第一阶段包括使用第一密钥对来验证至少一个固件程序,其中所述第一密钥对的特定密钥存储在所述第一卸载卡的防篡改位置;
响应于确定所述第一阶段已成功完成,启动所述多阶段引导操作的第二阶段,其中所述第二阶段包括(a)使用安全模块来测量一个或多个固件程序和(b)在所述虚拟化主机的第一卸载卡启动第一版本的虚拟化协调器;
利用由所述第一版本的虚拟化协调器从所述安全模块获得的特定密钥,从存储设备获得不同版本的所述虚拟化协调器;
在所述第一卸载卡启动所述不同版本的所述虚拟化协调器;以及
初始化所述虚拟化管理器的一个或多个其他部件以完成所述多阶段引导操作,包括在未安装在所述第一卸载卡上的处理器上运行的至少一个部件。
12.如权利要求11所述的系统,其中所述一个或多个其他部件包括在所述虚拟化主机的一个或多个CPU处运行的管理程序。
13.如权利要求11所述的系统,其中所述虚拟化管理器的所述一个或多个其他部件包括片上系统,所述片上系统被配置为从所述虚拟化主机的一个或多个CPU卸载网络处理操作。
14.如权利要求11所述的系统,其中所述指令当在所述一个或多个处理器上执行时使得所述系统:
在获得所述不同版本的所述虚拟化协调器之前,确定指定用于所述虚拟化协调器的更新版本的存储区域尚未使用加密密钥进行保护;
使用所述安全模块,生成用于所述存储区域的加密密钥;
使所述加密密钥在所述安全模块处密封;以及
利用所述加密密钥对所述存储区域进行一次或多次后续访问。
15.如权利要求11所述的系统,其中所述指令当在所述一个或多个处理器上执行时使得所述系统:
与提供商网络的身份服务建立安全通信会话;
响应于来自所述身份服务的请求,至少部分地基于(a)证明身份密钥和(b)一个或多个平台配置寄存器,从所述安全模块获得签名的有效载荷;以及
将所述签名的有效载荷提供给所述身份服务,以将所述虚拟化主机登记到所述计算服务的公钥基础设施中。
16.一种方法,包括:
在虚拟化主机的第一卸载卡的一个或多个部件上执行:
启动所述虚拟化主机的虚拟化管理器的多阶段引导操作的第一阶段,其中所述第一阶段包括使用第一密钥对来验证至少一个固件程序,其中所述第一密钥对的第一密钥存储在所述第一卸载卡的防篡改部分;
响应于确定所述第一阶段已成功完成,启动所述多阶段引导操作的第二阶段,其中所述第二阶段包括(a)使用安全模块来测量一个或多个固件程序和(b)在所述第一卸载卡上启动第一版本的虚拟化协调器;
利用由所述第一版本的虚拟化协调器从所述安全模块获得的特定密钥,从存储设备获得不同版本的所述虚拟化协调器;
在所述第一卸载卡上启动所述不同版本的所述虚拟化协调器;
初始化所述虚拟化管理器的一个或多个其他部件以完成所述多阶段引导操作,包括在未安装在所述第一卸载卡上的处理器上运行的至少一个部件;以及
在所述多阶段引导操作成功完成之后,由所述虚拟化管理器响应于来自提供商网络的虚拟化计算服务的控制平面部件的命令,在所述虚拟化主机处实例化来宾虚拟机。
17.如权利要求16所述的方法,其中所述一个或多个其他部件包括在所述虚拟化主机的一个或多个CPU处运行的管理程序。
18.如权利要求16所述的方法,其中所述虚拟化管理器的所述一个或多个其他部件包括被配置为从所述虚拟化主机的一个或多个CPU卸载网络处理操作的设备。
19.如权利要求16所述的方法,其还包括:
在所述虚拟化主机和所述提供商网络的身份服务之间建立安全通信会话;
响应于来自所述身份服务的请求,由所述第一卸载卡的所述一个或多个部件,至少部分地基于(a)证明身份密钥和(b)一个或多个平台配置寄存器,从所述安全模块获得签名的有效载荷;以及
将所述签名的有效载荷提供给所述身份服务,以使所述虚拟化主机能够在所述虚拟化计算服务的公钥基础设施中登记。
20.如权利要求16所述的方法,其中所述实例化所述来宾虚拟机包括:
通过以下项中的一个或多个,在所述第一卸载卡的所述一个或多个部件与所述虚拟化管理器的所述一个或多个其他部件之间进行通信:(a)外围部件互连-快速(PCI-E)总线,(b)QuickPath互连(QPI)或(c)UltraPath互连(UPI)。
21.一种存储程序指令的非暂时性计算机可访问存储介质,所述指令当在一个或多个处理器上执行时:
在虚拟化主机的第一卸载卡处启动所述虚拟化主机的虚拟化管理器的多阶段引导操作的第一阶段,其中所述第一阶段包括使用第一密钥对来验证至少一个固件程序,其中所述第一密钥对的特定密钥存储在所述第一卸载卡的防篡改位置;
响应于确定所述第一阶段已成功完成,启动所述多阶段引导操作的第二阶段,其中所述第二阶段包括(a)使用安全模块来测量一个或多个固件程序和(b)在所述虚拟化主机的第一卸载卡启动第一版本的虚拟化协调器;
利用由所述第一版本的虚拟化协调器从所述安全模块获得的特定密钥,从存储设备获得不同版本的所述虚拟化协调器;
在所述第一卸载卡上启动所述不同版本的所述虚拟化协调器;以及
初始化所述虚拟化管理器的一个或多个其他部件以完成所述多阶段引导操作,包括在未安装在所述第一卸载卡上的处理器上运行的至少一个部件。
22.如权利要求21所述的非暂时性计算机可访问存储介质,其中所述一个或多个其他部件包括在所述虚拟化主机的一个或多个CPU处运行的管理程序。
23.如权利要求21所述的非暂时性计算机可访问存储介质,其中所述虚拟化管理器的所述一个或多个其他部件包括片上系统,其被配置为从所述虚拟化主机的一个或多个CPU卸载网络处理操作。
24.如权利要求21所述的非暂时性计算机可访问存储介质,其中所述指令当在所述一个或多个处理器上执行时:
在获得所述不同版本的所述虚拟化协调器之前,确定指定用于所述虚拟化协调器的更新版本的存储区域尚未使用加密密钥进行保护;
使用所述安全模块,生成用于所述存储区域的加密密钥;
使所述加密密钥在所述安全模块处密封;以及
利用所述加密密钥对所述存储区域进行一次或多次后续访问。
25.如权利要求21所述的非暂时性计算机可访问存储介质,其中所述指令当在所述一个或多个处理器上执行时:
与提供商网络的身份服务建立安全通信会话;
响应于来自所述身份服务的请求,至少部分地基于(a)证明身份密钥和(b)一个或多个平台配置寄存器,从所述安全模块获得签名的有效载荷;以及
将所述签名的有效载荷提供给所述身份服务,以将所述虚拟化主机登记到所述计算服务的公钥基础设施中。
CN201780047337.XA 2016-06-30 2017-06-29 虚拟化管理器的安全引导 Active CN109564524B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/199,479 US10318737B2 (en) 2016-06-30 2016-06-30 Secure booting of virtualization managers
US15/199,479 2016-06-30
PCT/US2017/040076 WO2018005850A1 (en) 2016-06-30 2017-06-29 Secure booting of virtualization managers

Publications (2)

Publication Number Publication Date
CN109564524A CN109564524A (zh) 2019-04-02
CN109564524B true CN109564524B (zh) 2023-10-27

Family

ID=59315767

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780047337.XA Active CN109564524B (zh) 2016-06-30 2017-06-29 虚拟化管理器的安全引导

Country Status (6)

Country Link
US (2) US10318737B2 (zh)
EP (1) EP3479223B1 (zh)
JP (1) JP6728409B2 (zh)
CN (1) CN109564524B (zh)
AU (1) AU2017290741B2 (zh)
WO (1) WO2018005850A1 (zh)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9225638B2 (en) 2013-05-09 2015-12-29 Vmware, Inc. Method and system for service switching using service tags
US10078754B1 (en) * 2013-09-24 2018-09-18 Amazon Technologies, Inc. Volume cryptographic key management
US10225137B2 (en) 2014-09-30 2019-03-05 Nicira, Inc. Service node selection by an inline service switch
US9531590B2 (en) 2014-09-30 2016-12-27 Nicira, Inc. Load balancing across a group of load balancers
US10609091B2 (en) * 2015-04-03 2020-03-31 Nicira, Inc. Method, apparatus, and system for implementing a content switch
IL238690B (en) 2015-05-07 2019-07-31 Mellanox Technologies Ltd Network-based computational accelerator
US10318737B2 (en) 2016-06-30 2019-06-11 Amazon Technologies, Inc. Secure booting of virtualization managers
US10917324B2 (en) * 2016-09-28 2021-02-09 Amazon Technologies, Inc. Network health data aggregation service
US10862777B2 (en) 2016-09-28 2020-12-08 Amazon Technologies, Inc. Visualization of network health information
US10911263B2 (en) 2016-09-28 2021-02-02 Amazon Technologies, Inc. Programmatic interfaces for network health information
US10621351B2 (en) * 2016-11-01 2020-04-14 Raptor Engineering, LLC. Systems and methods for tamper-resistant verification of firmware with a trusted platform module
US10461943B1 (en) * 2016-11-14 2019-10-29 Amazon Technologies, Inc. Transparently scalable virtual hardware security module
US10447668B1 (en) 2016-11-14 2019-10-15 Amazon Technologies, Inc. Virtual cryptographic module with load balancer and cryptographic module fleet
US10114759B2 (en) * 2016-12-06 2018-10-30 Vmware, Inc. Trapless shadow page tables
US10404456B2 (en) * 2016-12-29 2019-09-03 Sprint Communications Company L.P. Network function virtualization (NFV) hardware trusted hosted MANO
US10866824B2 (en) * 2017-01-13 2020-12-15 Citrix Systems, Inc. Continuous uptime of guest virtual machines during upgrade of a virtualization host device
US10564995B2 (en) 2017-06-07 2020-02-18 Red Hat, Inc. Dynamic control of halt polling based on receiving a monitoring instruction executed by a guest
US10771439B2 (en) * 2017-06-28 2020-09-08 Microsoft Technology Licensing, Llc Shielded networks for virtual machines
US10909248B2 (en) * 2017-06-29 2021-02-02 Microsoft Technology Licensing, Llc Executing encrypted boot loaders
US10382350B2 (en) * 2017-09-12 2019-08-13 Mellanox Technologies, Ltd. Maintaining packet order in offload of packet processing functions
US11005771B2 (en) 2017-10-16 2021-05-11 Mellanox Technologies, Ltd. Computational accelerator for packet payload operations
US11502948B2 (en) 2017-10-16 2022-11-15 Mellanox Technologies, Ltd. Computational accelerator for storage operations
US10797966B2 (en) 2017-10-29 2020-10-06 Nicira, Inc. Service operation chaining
US10841243B2 (en) 2017-11-08 2020-11-17 Mellanox Technologies, Ltd. NIC with programmable pipeline
US10708240B2 (en) 2017-12-14 2020-07-07 Mellanox Technologies, Ltd. Offloading communication security operations to a network interface controller
JP6584487B2 (ja) * 2017-12-20 2019-10-02 キヤノン株式会社 情報処理装置、その制御方法およびプログラム
US10726132B2 (en) * 2018-03-08 2020-07-28 Hewlett Packard Enterprise Development Lp Enclave launch and authentication
US10805192B2 (en) 2018-03-27 2020-10-13 Nicira, Inc. Detecting failure of layer 2 service using broadcast messages
US11750654B2 (en) * 2018-04-25 2023-09-05 Dell Products, L.P. Integrity assurance of a secured virtual environment
US11218364B2 (en) * 2018-06-25 2022-01-04 Amazon Technologies, Inc. Network-accessible computing service for micro virtual machines
US11595250B2 (en) 2018-09-02 2023-02-28 Vmware, Inc. Service insertion at logical network gateway
US10833949B2 (en) 2018-11-20 2020-11-10 Amazon Technologies, Inc Extension resource groups of provider network services
US10824469B2 (en) 2018-11-28 2020-11-03 Mellanox Technologies, Ltd. Reordering avoidance for flows during transition between slow-path handling and fast-path handling
US10963282B2 (en) 2018-12-11 2021-03-30 Amazon Technologies, Inc. Computing service with configurable virtualization control levels and accelerated launches
US11360796B2 (en) 2019-02-22 2022-06-14 Vmware, Inc. Distributed forwarding for performing service chain operations
US11805109B1 (en) * 2019-02-25 2023-10-31 Amazon Technologies, Inc. Data transfer encryption offloading using session pairs
US11184439B2 (en) 2019-04-01 2021-11-23 Mellanox Technologies, Ltd. Communication with accelerator via RDMA-based network adapter
US11354415B2 (en) * 2019-06-29 2022-06-07 Intel Corporation Warm boot attack mitigations for non-volatile memory modules
US11520530B2 (en) * 2019-09-24 2022-12-06 Amazon Technologies, Inc. Peripheral device for configuring compute instances at client-selected servers
US11113046B1 (en) 2019-09-24 2021-09-07 Amazon Technologies, Inc. Integration and remote control of a pre-assembled computer system into a server for a virtualization service
US11853771B1 (en) 2019-09-24 2023-12-26 Amazon Technologies, Inc. Offload card based virtualization of a pre-assembled computer system integrated into a server for a virtualization service
US11243589B1 (en) 2019-09-24 2022-02-08 Amazon Technologies, Inc. Remote power button actuation device for a pre-assembled computer system integrated into a server for a virtualization service
US11064017B2 (en) 2019-09-24 2021-07-13 Amazon Technologies, Inc. Peripheral device enabling virtualized computing service extensions
US11140218B2 (en) 2019-10-30 2021-10-05 Vmware, Inc. Distributed service chain across multiple clouds
CN110955442B (zh) * 2019-11-11 2023-03-07 郑州信大先进技术研究院 一种适用于PCI-E密码卡的Bootloader
KR20210087628A (ko) * 2020-01-03 2021-07-13 삼성전자주식회사 네트워크 기반 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법
US11659061B2 (en) 2020-01-20 2023-05-23 Vmware, Inc. Method of adjusting service function chains to improve network performance
KR20210097379A (ko) * 2020-01-30 2021-08-09 삼성전자주식회사 보안 장치, 전자 장치, 보안 부트 관리 시스템, 부트 이미지 생성 방법 및 부트 체인 실행 방법
US11569997B1 (en) 2020-03-09 2023-01-31 Amazon Technologies, Inc. Security mechanisms for data plane extensions of provider network services
US11451643B2 (en) 2020-03-30 2022-09-20 Amazon Technologies, Inc. Managed traffic processing for applications with multiple constituent services
US11212356B2 (en) 2020-04-06 2021-12-28 Vmware, Inc. Providing services at the edge of a network using selected virtual tunnel interfaces
IL276538B2 (en) 2020-08-05 2023-08-01 Mellanox Technologies Ltd A cryptographic device for data communication
CN114095153A (zh) 2020-08-05 2022-02-25 迈络思科技有限公司 密码数据通信装置
EP4202668A4 (en) * 2020-09-08 2024-01-31 Huawei Cloud Computing Tech Co Ltd COMPUTER SYSTEM AND CONTAINER MANAGEMENT METHOD AND DEVICE
US11734043B2 (en) 2020-12-15 2023-08-22 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
US11611625B2 (en) 2020-12-15 2023-03-21 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
CN114691286A (zh) * 2020-12-29 2022-07-01 华为云计算技术有限公司 服务器系统、虚拟机创建方法及装置
US11934333B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Storage protocol emulation in a peripheral device
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US12007921B2 (en) 2022-11-02 2024-06-11 Mellanox Technologies, Ltd. Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1997955A (zh) * 2004-06-24 2007-07-11 英特尔公司 提供可信平台模块的安全虚拟化的方法和装置
CN101599025A (zh) * 2009-07-07 2009-12-09 武汉大学 可信密码模块安全虚拟化方法
CN104982005A (zh) * 2013-01-22 2015-10-14 亚马逊技术有限公司 虚拟化环境中的特权加密服务

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069442B2 (en) * 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7484091B2 (en) 2004-04-29 2009-01-27 International Business Machines Corporation Method and system for providing a trusted platform module in a hypervisor environment
US20050251806A1 (en) 2004-05-10 2005-11-10 Auslander Marc A Enhancement of real-time operating system functionality using a hypervisor
US7685635B2 (en) 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US8032899B2 (en) 2006-10-26 2011-10-04 International Business Machines Corporation Providing policy-based operating system services in a hypervisor on a computing system
US7996836B1 (en) 2006-12-29 2011-08-09 Symantec Corporation Using a hypervisor to provide computer security
US20080244553A1 (en) 2007-03-28 2008-10-02 Daryl Carvis Cromer System and Method for Securely Updating Firmware Devices by Using a Hypervisor
US8127292B1 (en) 2007-06-22 2012-02-28 Parallels Holdings, Ltd. Virtualization system with hypervisor embedded in bios or using extensible firmware interface
US8201161B2 (en) 2008-01-07 2012-06-12 Lenovo (Singapore) Pte. Ltd. System and method to update device driver or firmware using a hypervisor environment without system shutdown
US8514868B2 (en) 2008-06-19 2013-08-20 Servicemesh, Inc. Cloud computing gateway, cloud computing hypervisor, and methods for implementing same
US8239557B2 (en) 2008-06-25 2012-08-07 Red Hat, Inc. Virtualization management using a centralized server
US9733959B2 (en) 2008-09-15 2017-08-15 Vmware, Inc. Policy-based hypervisor configuration management
US8205197B2 (en) * 2008-11-12 2012-06-19 Lenovo (Singapore) Pte. Ltd. Apparatus, system, and method for granting hypervisor privileges
JP4961459B2 (ja) * 2009-06-26 2012-06-27 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムにおける制御方法
US8370614B2 (en) * 2009-10-29 2013-02-05 Hewlett-Packard Development Company, L.P. Booting a computer device
US8244956B2 (en) 2009-11-30 2012-08-14 Red Hat Israel, Ltd. Mechanism for automatic adjustment of virtual machine storage
US8433802B2 (en) 2010-01-26 2013-04-30 International Business Machines Corporation System and method for fair and economical resource partitioning using virtual hypervisor
KR20130114672A (ko) * 2011-01-19 2013-10-17 인터내셔널 비지네스 머신즈 코포레이션 소프트웨어를 업데이트하는 장치 및 방법
US9229752B2 (en) * 2013-03-12 2016-01-05 International Business Machines Corporation Systems and methods to offload hardware support using a hypervisor subpartition
US9323552B1 (en) 2013-03-14 2016-04-26 Amazon Technologies, Inc. Secure virtual machine memory allocation management via dedicated memory pools
US9268549B2 (en) * 2013-03-27 2016-02-23 Vmware, Inc. Methods and apparatus to convert a machine to a virtual machine
US9361145B1 (en) 2014-06-27 2016-06-07 Amazon Technologies, Inc. Virtual machine state replication using DMA write records
US9535846B2 (en) 2014-07-28 2017-01-03 International Business Machines Corporation Using a decrementer interrupt to start long-running hardware operations before the end of a shared processor dispatch cycle
US9529633B2 (en) 2014-09-11 2016-12-27 Amazon Technologies, Inc. Variable timeslices for processing latency-dependent workloads
US9886297B2 (en) 2014-12-11 2018-02-06 Amazon Technologies, Inc. Systems and methods for loading a virtual machine monitor during a boot process
US10068092B2 (en) * 2015-01-21 2018-09-04 Microsoft Technology Licensing, Llc Upgrading a secure boot policy on a virtual machine
US9667414B1 (en) * 2015-03-30 2017-05-30 Amazon Technologies, Inc. Validating using an offload device security component
US10318737B2 (en) 2016-06-30 2019-06-11 Amazon Technologies, Inc. Secure booting of virtualization managers

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1997955A (zh) * 2004-06-24 2007-07-11 英特尔公司 提供可信平台模块的安全虚拟化的方法和装置
CN101599025A (zh) * 2009-07-07 2009-12-09 武汉大学 可信密码模块安全虚拟化方法
CN104982005A (zh) * 2013-01-22 2015-10-14 亚马逊技术有限公司 虚拟化环境中的特权加密服务

Also Published As

Publication number Publication date
AU2017290741B2 (en) 2019-10-31
US20180004954A1 (en) 2018-01-04
EP3479223B1 (en) 2021-08-18
CN109564524A (zh) 2019-04-02
JP6728409B2 (ja) 2020-07-22
US10318737B2 (en) 2019-06-11
EP3479223A1 (en) 2019-05-08
AU2017290741A1 (en) 2019-01-17
WO2018005850A1 (en) 2018-01-04
JP2019525313A (ja) 2019-09-05
US20190311128A1 (en) 2019-10-10
US11023589B2 (en) 2021-06-01

Similar Documents

Publication Publication Date Title
CN109564524B (zh) 虚拟化管理器的安全引导
CN109564514B (zh) 用于部分卸载的虚拟化管理器处的存储器分配的方法和系统
CN109564523B (zh) 使用机会性管理程序降低性能可变性
US9781117B2 (en) Multinode hubs for trusted computing

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant