CN106201646B - 用于安全虚拟机间共享存储器通信的设备和方法 - Google Patents
用于安全虚拟机间共享存储器通信的设备和方法 Download PDFInfo
- Publication number
- CN106201646B CN106201646B CN201510415592.8A CN201510415592A CN106201646B CN 106201646 B CN106201646 B CN 106201646B CN 201510415592 A CN201510415592 A CN 201510415592A CN 106201646 B CN106201646 B CN 106201646B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- view
- shared memory
- secure
- computing device
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
公开了用于安全虚拟机间共享存储器通信的技术。用于安全虚拟机间共享存储器通信的技术包括具有硬件虚拟化支持的计算设备。虚拟机监视器(VMM)认证目标虚拟机的视图切换组件。VMM将安全存储器视图配置为访问共享存储器段。共享存储器段可包括源虚拟机或VMM的存储器页。视图切换组件使用硬件虚拟化支持切换到安全存储器视图而不生成虚拟机退出事件。视图切换组件可通过修改扩展页表(EPT)指针切换到安全存储器视图。目标虚拟机经由安全存储器视图访问共享存储器段。目标虚拟机和源虚拟机可使用存储在共享存储器段中的安全视图控制结构协调存储器页的所有权。描述和/或要求保护其他实施例。
Description
背景技术
电信和其他数据网络功能正日益被结合到网络数据中心中。例如,历史上分布在许多蜂窝塔之间的蜂窝基站功能现在可被结合到虚拟化网络数据中心中。网络功能(诸如分组交换和分组过滤)通常要求处理大量小数据分组。然而,在一个或多个虚拟机中执行这些网络功能可引入与虚拟机的隔离边界(例如,存储器或I/O隔离)相关联的开销。开销可限制网络功能虚拟化的吞吐量和可扩展性,尤其是针对小数据分组的虚拟机间通信。
典型的计算机处理器包括用于虚拟化操作的硬件支持。软件虚拟化包括透明地从在主操作系统或虚拟机监视器(VMM)内执行一个或多个宾客操作系统。硬件虚拟化特征可包括扩展权限模块、用于虚拟存储器寻址的硬件协助支持、用于扩展存储器许可的支持以及其他虚拟化特征。
附图说明
通过举例而非通过限制在附图中示出在此描述的概念。为了说明简单和清晰,图中所示元素无需按比例绘制。当认为合适时,已经在附图中重复参照标号以便表明相应的或类似的元素。
图1是用于安全虚拟机间共享存储器通信的计算设备的至少一个实施例的简化框图;
图2是图1的计算设备的环境的至少一个实施例的简化框图;
图3是可由图1和图2的计算设备执行的用于安全虚拟机间共享存储器通信管理的方法的至少一个实施例的简化流程图;
图4是示出可由图1和图2的计算设备建立的虚拟存储器页表结构的示意图;
图5是可由图1和图2的计算设备执行的用于访问共享存储器的方法的至少一个实施例的简化流程图;
图6是可由图1和图2的计算设备执行的用于授权对共享存储器的访问的方法的至少一个实施例的简化流程图;
图7是示出可由图1和图2的计算设备建立的安全视图控制结构的示意图;
图8是可由图1和图2的计算设备执行的用于占有共享存储器缓冲区的所有权的方法的至少一个实施例的简化流程图;以及
图9是可由图1和图2的计算设备执行的用于传输并收回共享存储器缓冲区的所有权的方法的至少一个实施例的简化流程图。
具体实施方式
尽管本公开的概念可受到各种修改和替代形式,已经通过举例在附图中示出并且将在此详细地描述其特定实施例。然而,应当理解的是不旨在将本公开的概念限制为所公开的具体形式,而是相反,本发明涵盖与本公开和所附权利要求书一致的所有修改、等效方案和替代方案。
在说明书中对“一个实施例”、“实施例”、“说明性实施例”等等的引用表明所描述的实施例可包括具体的特征、结构或特性,但是每个实施例可以包括或可无需包括该具体的特征、结构或特性。而且,这种短语无需指代相同的实施例。而且,当结合实施例描述具体的特征、结构或特性时,认为其在本领域普通技术人员结合显式地或未显式地描述的其他实施例实施这种特征、结构或特性的知识范围内。此外,应当认识到列表中包括的“A、B和C中的至少一个”形式的项目可意味着(A);(B);(C);(A和B);(A和C);(B和C);或者(A、B和C)。类似地,以“A、B、或C中的至少一个”的形式列出的项目可指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。
在某些情况下,可在硬件、固件、软件、或其任何组合中实现所公开的实施例。所公开的实施例还可被实现为由一个或多个瞬态或非瞬态机器可读(例如计算机可读)存储介质携带或存储在其上的指令,这些指令可由一个或多个处理器读取并执行。机器可读存储介质可被实施为任何用于存储或传输机器(例如,易失性或非易失性存储器、介质盘、或其他介质设备)可读形式的信息的存储设备、机构、或其他物理结构。
在附图中,可用特定安排和/或排序示出某些结构或方法特征。然而,应当认识到可不要求这种特定安排和/或排序。而是,在某些实施例中,可用与说明性附图中示出的不同的方式和/或顺序安排这种特征。此外,具体附图中包括结构或方法特征不意味着暗示在所有实施例中要求这种特征以及在某些实施例中可不包括这种特征或者这种特征可与其他特征组合。
现在参照图1,用于安全虚拟机间共享存储器通信的说明性计算设备100包括处理器120、I/O子系统128、存储器130和数据存储设备138。在使用中,如下所述,计算设备100被配置成用于支持两个或更多个虚拟机之间的安全共享存储器通信。具体而言,目标虚拟机(访问另一个、源虚拟机的共享存储器数据的虚拟机)用虚拟机监视器(VMM)认证视图切换组件。认证允许VMM控制并限制对共享存储器数据的访问。目标虚拟机请求访问共享存储器段,该共享存储器段可包括VMM自身所建立的源虚拟机或共享存储器的存储器页。VMM向计算设备100的安全视图扩展页表(EPT)添加所请求的共享存储器段。目标虚拟机可通过使用处理器120的虚拟化支持切换到安全视图EPT并且然后执行对共享存储器段的正常存储器访问,而访问共享存储器。目标虚拟机可访问源虚拟机的所有存储器,或者在某些实施例中,源虚拟机可向VMM注册具体的共享存储器段。
通过经由安全视图进行通信,计算设备100可允许安全访问共享存储器而不要求每次访问时VMM的虚拟机退出、超级调用或其他调用。因此,计算设备100可例如通过取消到VMM的不必要的上下文切换或通过减少所导致的EPT无效的数量,改善共享存储器性能。经改善的共享存储器性能可使得虚拟机间共享存储器通信对小数据分组(例如,64字节分组)或对更大量的处理器核可行,这进而可改善网络功能虚拟化的性能。此外,目标虚拟机和源虚拟机可使用共享存储器段协调共享存储器缓冲区的所有权。存储器缓冲区所有权的协调可通过避免不必要的EPT无效改善性能。
计算设备100可被体现为能够执行虚拟机间共享存储器通信并且以其他方式执行在此描述的功能的任何类型的设备。例如,计算设备100可被体现为但不限于工作站、服务器计算机、分布式计算系统、多处理器系统、膝上计算机、笔记本计算机、平板计算机、智能电话、移动计算设备、可穿戴计算设备、计算机、桌上计算机、消费者电子设备、智能电器和/或能够进行虚拟机间安全存储器通信的任何其他计算设备。如图1所示,说明性计算设备100包括处理器120、I/O子系统128、存储器130和数据存储设备128。当然,在其他实施例中,计算设备100可包括其他或附加组件,诸如通常在平板计算机中发现的那些(例如,各种输入输出设备)。此外,在某些实施例中,说明性组件中的一个或多个可被结合到另一个组件中或者以其他方式形成其一部分。例如,在某些实施例中,存储器130或其部分可被结合到处理器120中。
处理器120可被实施为能够执行在此描述的功能的任何类型的处理器。例如,处理器120可被实施为单核或多核处理器、数字信号处理器、微控制器、或其他处理器或处理/控制电路。此外,尽管被示出为包括单个处理器120,应当理解的是在某些实施例中,计算设备100可包括多个处理器120。处理器120包括用于虚拟化的基于硬件的、硬件协助的或硬件加速的支持。具体而言,处理器120包括虚拟机扩展(VMX)支持122、扩展页表(EPT)支持124和快速视图切换(FVS)支持126。VMX支持122通过提供两种执行模式支持操作系统的虚拟化执行:VMX根模式和VMX非根模式。VMX根模式允许执行软件具有对计算设备100及其硬件资源的广泛控制。因此,虚拟机监视器(VMM)或管理程序可以以VMX根模式执行。VMX非根模式限制对某些硬件指令的访问同时仍实现处理器120的普通环/权限系统。因此,一个或多个宾客虚拟机(VM)和/或操作系统(OS)可以以VMX非根模式执行。那些宾客OS可在环零中执行,类似于执行但没有虚拟化。某些硬件指令和某些其他系统事件的执行可触发向VMX根模式的硬件协助转换。那些硬件协助转换通常被称为虚拟机退出(VMExit)或超级调用。当遇到VMExit时,处理器120可将上下文从宾客VM切换到VMM以便处理VMExit。因此,VMExit可向虚拟化代码施加性能惩罚。VMX支持122可被体现为例如VT-x技术。
EPT支持124支持硬件协助的二级页地址转换。对于非虚拟化工作负载(或者当以VMX根模式操作时),处理器120可提供虚拟存储器地址(也被称为线性地址)到物理存储器地址之间的硬件协助的转换。处理器120可使用存储在存储器130中的并且由主操作系统、管理程序或VMM管理的一个或多个页表结构转换存储器地址。对于虚拟化工作负载(或当以VMX非根模式操作时),处理器120支持虚拟存储器地址(例如由在宾客VM中执行的应用所使用的)到宾客物理存储器地址的硬件协助的转换。宾客OS可在存储器130中维护一个或多个页表结构以便管理到宾客物理存储器地址的转换。然而,宾客物理存储器地址可不对应于存储器130内的实际物理存储器地址。EPT支持124提供宾客物理存储器地址到物理存储器地址(也被称为主物理存储器地址)之间的硬件协助的转换。EPT支持124可使用存储在存储器130中的并且由VMM或管理程序管理的一个或多个扩展页表结构转换存储器地址。在没有EPT支持124的情况下,宾客物理存储器地址和物理存储器地址之间的转换可要求一个或多个VMExit。EPT支持124还可支持将访问许可与每个宾客物理页和/或物理页(例如,读、写和/或执行许可)相关联。可被称为EPT违规的许可违规可生成允许VMM或管理程序处理EPT违规的VMExit。此外或可替代地,在某些实施例中,许可违规可生成可由宾客OS处理的虚拟化异常。EPT支持124可被体现为例如VT-x技术。
FVS支持126允许处理器120快速地并且原子地在两个或更多个存储器视图之间切换而不要求向VMX根模式的VMExit。存储器视图包括EPT所定义的宾客物理页映射和相关联的许可,并且因此可与EPT一一对应。FVS支持126可支持通过将存储器内虚拟机控制结构(VMCS)内的指针改变为指向不同的EPT结构,支持切换存储器视图。在某些实施例中,FVS支持126可允许处于VMX非根模式的软件选择已经由在VMX根模式内执行的软件预定义的若干存储器视图之一。相应地,FVS支持126可允许宾客VM(例如,在宾客VM内执行的宾客OS或应用软件)在存储器视图之间切换而不要求向VMM或管理程序的可能昂贵的上下文切换。FVS支持126可被体现为专用处理器指令,诸如某些处理器所支持的VMFUNC指令。
存储器130可被实施为能够执行在此描述的功能的任何类型的易失性或非易失性存储器或数据存储设备。在操作中,存储器130可存储在计算设备100的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库和驱动程序。存储器130可被细分为被称为页的固定大小的段。每个页可包括例如4096个字节的数据。存储器130进一步包括宾客页表132、一个或多个扩展页表(EPT)134和一个或多个扩展页表指针(EPTP)136。宾客页表132存储虚拟存储器页和宾客物理存储器页之间的映射。如上所述,宾客页表132可由处理器120用于在虚拟存储器地址和宾客物理存储器地址之间转换。每个EPT 134存储宾客物理存储器页和物理存储器页之间的映射。如上所述,每个EPT 134可由处理器120的EPT支持124用于在宾客物理存储器地址和物理存储器地址之间转换。每个EPT 134还可包括针对每个宾客物理页的访问许可(例如,读、写和/或执行)。宾客页表132和EPT 134两者可被体现为一个或多个存储器内数据结构(诸如阵列、列表、关联阵列、嵌套或层级阵列或其他数据结构)。EPTP 136可由处理器120用于标识当前活跃的EPT 134。因此,改变与宾客VM相关联的EPTP136可允许计算设备100快速地改变针对宾客VM的物理存储器映射。如上所述,EPTP136可由FVS支持126管理。
存储器130经由I/O子系统128通信地耦合到处理器120,其可被实施为用于促成与计算设备100的处理器120、存储器130、以及其他组件的输入输出操作的电路和/或组件。例如,I/O子系统128可被实施为或以其他方式包括用于促成输入输出操作的存储器控制器中枢、输入/输出控制中枢、固件设备、通信链路(即,点到点链路、总线链路、导线、线缆、光导、印刷电路板迹线等等)和/或其他组件及子系统。在某些实施例中,I/O子系统128可形成片上系统(SoC)的一部分并且可与计算设备100的处理器120、存储器130和其他组件一起结合到单个集成电路芯片上。
数据存储设备138可被实施为被配置成用于数据的短期或长期存储的任何类型的设备,诸如例如存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器、或其他数据存储设备。计算设备100可包括通信子系统140。通信子系统140可被实施为能够允许计算设备100和其他远程设备之间通过网络的通信的任何通信电路、设备、网络接口控制器或其集合。通信子系统140可被配置成用于使用任何一种或多种通信技术(例如,无线通信或有线通信)和相关联的协议(例如,以太网、WiMAX等等)使这种通信生效。
在某些实施例中,计算设备100还可包括一个或多个外围设备142。外围设备142可包括任何数量的附加输入/输出设备、接口设备、和/或其他外围设备。例如,在某些实施例中,外围设备142可包括显示器、触摸屏、图形电路、键盘、鼠标、扬声器系统、和/或其他输入/输出设备、接口设备、和/或外围设备。
现在参照图2,在说明性实施例中,计算设备100在操作期间建立环境200。说明性实施例200包括虚拟机监视器(VMM)202、目标虚拟机204和源虚拟机206。尽管被示出为包括两个虚拟机(VM),应当理解的是其他实施例可包括附加VM。VMM 202包括认证模块208、安全视图模块210和共享存储器模块212。目标虚拟机204包括数据访问模块218、缓冲区所有权模块222、视图切换模块224和安全视图228。源虚拟机206包括数据访问模块218、访问控制模块230、缓冲区所有权模块222、视图切换模块224和安全视图228。环境200的各个模块可被实施为硬件、固件、软件或其组合。例如,环境200的模块、逻辑和其他组件各自可形成计算设备100的处理器或其他硬件组件的一部分或以其他方式由其建立。
VMM 202的认证模块208被配置成用于认证目标虚拟机204和/或源虚拟机206的视图切换组件226。认证模块208可执行能够确定视图切换组件226是否是值得信任的(诸如验证与视图切换组件226相关联的一个或多个数字签名或证书)的任何合适的认证过程。视图切换组件226可被实施为任何宾客操作系统内核、内核模块、驱动器、接口、用户空间应用或可用于切换存储器视图并由此访问安全视图228的其他组件。在认证之后,视图切换组件226可以能够切换到安全视图228而不进一步与VMM 202交互。因此,视图切换组件226的认证可保护安全视图228的安全、隐私和/或完整性。
如果视图切换组件226被成功认证,VMM 202的安全视图模块210被配置成用于将安全视图228配置为允许访问共享存储器段。安全视图228定义计算设备100的由目标虚拟机204和/或源虚拟机206使用的物理存储器映射。例如,可通过修改计算设备100的一个或多个EPT 134,配置安全视图228。因此,安全视图228可允许目标虚拟机204使用普通存储器访问指令直接访问与源虚拟机206和/或VMM 202相关联的物理存储器页。
VMM 202的共享存储器模块212被配置成用于建立可经由安全视图228由目标虚拟机204和/或源虚拟机206访问的共享存储器段214。共享存储器段214可例如在VMM 202的堆上建立。共享存储器段214可用于虚拟机204、206和/或VMM 202之间的安全虚拟存储器间通信。在某些实施例中,共享存储器模块212可建立一个或多个安全视图控制结构(SVCS)216。具体而言,共享存储器模块212可为每个安全视图228建立SVCS 216。每个SVCS 216可被包括在共享存储器段214内或单独地建立。如以下进一步所述,SVCS 216可由虚拟机204、206用于协调存储器缓冲区的所有权的转移。
目标虚拟机204和/或源虚拟机206的视图切换模块224被配置成用于从默认存储器视图切换到安全视图228而不生成虚拟机退出(VMExit)事件。视图切换模块224可使用处理器120的快速视图切换支持126切换视图而不生成VMExit事件。如上所述,视图切换模块224可包括执行视图切换的视图切换组件226。在切换到安全视图228之前,视图切换组件226可由VMM 202认证。
目标虚拟机204和/或源虚拟机206的缓冲区所有权模块222被配置成用于使用VMM202所建立的SVCS 216,协调从源虚拟机206到目标虚拟机204的存储器缓冲区的所有权转移。具体而言,安全视图228内的存储器缓冲区的所有权可被从源虚拟机206转移到目标虚拟机204,并且在接收到这些缓冲区的所有权之后,缓冲区可由目标虚拟机204处理。当安全视图228已经被填充超过预定容量时,源虚拟机206可收回已经由目标虚拟机204处理的缓冲区,并且VMM 202可清空安全视图228并且使EPT 134无效。
目标虚拟机204和/或源虚拟机206的数据访问模块218被配置成用于访问共享存储器段内的数据。数据访问模块218可读取包括在一个或多个共享存储器缓冲区内的数据、向一个或多个共享存储器缓冲区写入数据或者访问VMM 202所建立的共享存储器段214内的数据。数据访问模块218可包括执行数据访问的一个或多个应用220。应用220可包括网络功能应用,诸如路由器、防火墙、虚拟交换机、中间盒或其他虚拟网络电器。因此,所访问的共享存储器缓冲区可包括接收队列、传输队列、网络分组缓冲区或其他网络I/O数据。
源虚拟机206的访问控制模块230被配置成用于向VMM 202注册共享存储器段。注册共享存储器段允许源虚拟机206控制对其自身的存储器空间的特定段的访问。访问控制模块230可维护授权表232。授权表232包括对源虚拟机206的将与目标虚拟机204共享的宾客物理页的引用。
现在参考图3,在使用中,计算设备100可执行用于管理安全虚拟机间共享存储器通信的方法300。方法300可由VMM 202执行并且因此可以以VMX根模式执行,其中具有对计算设备100的完全访问,包括管理EPT134的能力。方法300在框302中开始,其中计算设备100接收认证虚拟机204、206的视图切换组件226的请求。在被授权访问安全视图228之前,虚拟机204、206请求认证视图切换组件226。虚拟机204、206可通过生成VMExit、超级调用或以其他方式调用VMM 202,请求认证。
在框304中,计算设备100认证所请求的视图切换组件226。视图切换组件226可被实施为任何宾客操作系统内核、内核模块、驱动器、接口、用户空间应用或可用于切换存储器视图并由此访问安全视图228的其他组件。计算设备100可使用用于证实、验证、证明或以其他方式确定视图切换组件226被授权和/或尚未被篡改的任何技术,认证视图切换组件226。例如,计算设备100可验证与视图切换组件226相关联的一个或多个数字签名或证书。如果视图切换组件226未被验证,计算设备100可生成错误消息或以其他方式拒绝允许未经验证的视图切换组件226能够访问安全视图228。
在框306中,计算设备100确定附加虚拟机204、206是否应当使视图切换组件226被认证。例如,多个目标虚拟机204可请求认证以便访问共享存储器。作为另一个示例,目标虚拟机204和源虚拟机206两者可请求认证以便使用VMM 202所建立的共享存储器段214通过安全信道进行通信。如果应当认证附加VM,方法300回环到框302。如果没有附加VM应当被认证,方法300前进到框308。
在框308中,计算设备100确定是否允许源虚拟机206选择性地允许访问共享存储器页。如果否,方法分支到框316,如下所述。如果将允许选择性访问,方法300前进到框310。
在框310中,计算设备100从源虚拟机206接收共享存储器段的注册。注册描述宾客物理存储器页、段或从源虚拟机206向目标虚拟机204共享的其他区域。源虚拟机206可使用任何合适的技术向VMM 202注册共享存储器段,包括执行VMExit或超级调用、写入源虚拟机206的宾客物理存储器或以其他方式调用VMM 202。在某些实施例中,在框312中,计算设备100可从源虚拟机206接收授权表232。授权表232标识应当与目标虚拟机204共享的宾客物理页。因为授权表232位于源虚拟机206的宾客物理页中并且对其进行引用,源虚拟机206可生成授权表232而不调用VMM 202。此外,VMM 202可在存储器130内原位地处理授权表232;也就是,不创建授权表232的附加副本。
在某些实施例中,在框314中,计算设备100可从源虚拟机206接收共享VMM 202所建立的共享存储器段的请求。源虚拟机206可使用任何合适的格式生成该请求。例如,源虚拟机206可通过更新授权表232以便标识存储在安全视图228内的页来请求访问共享存储器段214。因此,在那些实施例中,计算设备100可在先前认证过源虚拟机206的视图切换组件226。
在框316中,计算设备100从目标虚拟机204接收访问共享存储器段的请求。目标虚拟机204可请求访问源虚拟机206的共享存储器页和/或访问VMM 202所建立的共享存储器段214。目标虚拟机204可通过生成VMExit、超级调用或以其他方式调用VMM 202,请求访问。
在框318中,计算设备100通过修改适当的EPT 134向目标虚拟机204的安全视图228添加所请求的共享存储器段。在修改EPT 134之后,目标虚拟机204的宾客物理页被映射到与所请求的存储器段相对应的物理存储器页。因此,目标虚拟机204所执行的内核和/或用户模式的软件可通过目标虚拟机204的虚拟存储器空间访问那些页。在某些实施例中,在框320中,计算设备100可向安全视图EPT 134添加源虚拟机206的所有宾客物理页。因此,在那些实施例中,目标虚拟机204可被授权完全访问源虚拟机206的全部数据,包括应用数据、内核数据和I/O数据,诸如传输队列、接收队列和分组数据。此外或可替代地,在某些实施例中,源虚拟机206的某些或全部共享数据可被直接映射到计算设备100的硬件,诸如映射到通信子系统140。例如,源虚拟机206的一个或多个缓冲区可被使用虚拟化技术(诸如VT-d技术或单根I/O虚拟化(SR-IOV))直接映射到通信子系统140的NIC、端口、虚拟功能或其他组件。
在某些实施例中,在框322中,计算设备100可添加源虚拟机206的之前已经由源虚拟机206注册的宾客物理页。例如,计算设备100可检查源虚拟机206的授权表232并且添加授权表232中所标识的全部宾客物理页。因此,源虚拟机206可限制对其宾客物理存储器页的访问。在某些实施例中,在框324中,计算设备100可向安全视图EPT 134添加VMM 202所建立的共享存储器段214。
在修改安全视图EPT 134之后,方法300循环回到框302以便认证附加的虚拟机。如以下结合图5和图6进一步所述,在修改安全视图EPT 134之后,目标虚拟机204和/或源虚拟机206可访问共享存储器页而不生成进一步的VMExit、超级调用或以其他方式调用VMM202。
现在参照图4,示意图400示出可被建立以便提供虚拟机间共享存储器通信的页表结构的潜在实施例。框402示出源虚拟机206的虚拟机存储器布局。为了说明,源虚拟机206包括单个缓冲区404。缓冲区404可被实施为任何共享存储器数据结构。例如,缓冲区404可包括或以其他方式被实施为传输队列、接收队列或其他网络I/O数据结构。如所示,缓冲区404位于虚拟页406。框408示出源虚拟机206的宾客物理布局。如所示,缓冲区404位于宾客物理页410。可由源虚拟机206的宾客OS维护的宾客页表132a在虚拟存储器402的虚拟页到宾客物理存储器408的宾客物理页之间映射。如所示,宾客页表132a将虚拟页406映射到宾客物理页410。
示图400进一步示出物理存储器130的布局。如所示,缓冲区404位于物理存储器130内的物理页412。由VMM 202维护的扩展页表(EPT)134在宾客物理存储器408的宾客物理页到物理存储器130的物理页之间映射。如所示,EPT 134将宾客物理页410映射到物理页412。
框414示出目标虚拟机204的虚拟存储器布局。如所示,目标虚拟机204包括被示出为连续虚拟存储器块的安全视图228。在其他实施例中,安全视图228可以是非连续、稀疏或以其他方式分布在虚拟存储器414内。如上所述,目标虚拟机204仅可在用VMM 202认证其视图切换组件226之后访问安全视图228内的数据。如所示,来自源虚拟机206的缓冲区404被映射到安全视图228内的虚拟页416。框418示出目标虚拟机204的宾客物理布局。如所示,缓冲区404位于安全视图228内的宾客物理页420。可由目标虚拟机204的宾客OS维护的宾客页表132b在虚拟存储器414的虚拟页到宾客物理存储器418的宾客物理页之间映射。如所示,宾客页表132b将虚拟页416映射到宾客物理页420。
VMM 202管理缺省视图EPT 134a和安全视图EPT 134b。如所示,缺省视图EPT 134a将宾客物理页420映射到物理页422。物理页422不包括任何可用数据。例如,物理页422可被归零或以其他方式被清空数据。在某些实施例中,缺省视图EPT 134a可包括用于限制访问物理页422的许可集合。因此,对与来自缺省视图的缓冲区404相关联的宾客物理页420(或虚拟页416)的任何访问不被解析到包含缓冲区404的物理页412。相比之下,安全视图EPT134b将宾客物理页420映射到物理页412。因此,对与来自安全视图228的缓冲区404相关联的宾客物理页420(或虚拟页416)的访问确实访问包含缓冲区404的物理页412。
如所示,EPT指针136可指向缺省视图EPT 134a或安全视图EPT 134b。当将宾客物理页解析到物理页时,处理器120引用EPT指针136。如上所述,EPT指针136可由宾客软件(诸如视图切换组件226)使用FVS支持126例如通过执行VMFUNC处理器指令切换或以其他方式修改。因此,目标虚拟机204可通过修改EPT指针136控制对缓冲区404的访问而不调用VMM202。
如上所述,在某些实施例中,源虚拟机206可通过在授权表232中标识有待共享的页控制对宾客物理存储器页的访问。在说明性实施例中,授权表232位于虚拟存储器402的虚拟页424并且位于宾客物理存储器408的宾客物理页426。如所示,授权表232例如通过存储缓冲区404的宾客物理页号(例如,宾客物理页410)引用缓冲区404。授权表232进一步位于物理存储器130内的物理页428。如上所述,如果缓冲区404由授权表232引用,VMM 202可向安全视图EPT 134b添加对缓冲区404的引用。如所示,授权表232自身可对目标虚拟机204是不可访问的。
现在参考图5,在使用中,计算设备100可执行用于访问虚拟机间共享存储器段的方法500。方法500可由目标虚拟机204执行并且因此可以以VMX非根模式执行,具有对计算设备100的有限访问。方法500在框502中开始,其中计算设备100请求用VMM 202认证视图切换组件226。如以上结合图3的框302至304所述,目标虚拟机204在被授权访问安全视图228之前请求认证视图切换组件226。目标虚拟机204可通过生成VMExit、超级调用或以其他方式调用VMM 202,请求认证。如上所述,如果视图切换组件226未被验证,计算设备100可生成错误消息或以其他方式拒绝允许未经验证的视图切换组件226启用对安全视图228的访问。
在框504中,计算设备100向VMM 202请求访问共享存储器段。如以上结合图3的框316所述,目标虚拟机204可通过生成VMExit、超级调用或以其他方式调用VMM 202,请求访问。在某些实施例中,在框506中,目标虚拟机204可请求访问源虚拟机206的缓冲区或其他共享存储器页。在某些实施例中,在框508中,目标虚拟机204可请求访问VMM 202所建立的共享存储器段214。
在框510中,计算设备100切换到安全视图228。在切换到安全视图228之后,在目标虚拟机204内执行的一个或多个宾客应用220或操作系统的虚拟地址空间中,共享存储器段是可访问的。在某些实施例中,在框512中,计算设备100可将EPT指针136设置为指向与安全视图228相关联的EPT 134。例如,如图4所示,EPT指针136可被从指向缺省视图EPT 134a切换到指向安全视图EPT 134b。计算设备100可使用专用处理器指令(诸如VMFUNC指令)切换EPT指针136。在某些实施例中,切换EPT指针136可被限制为目标虚拟机204和/或处理器120的环零、内核模式或某种其他管理模式。因此,EPT指针136可由内核模式代码(诸如操作系统驱动器)切换。在某些实施例中,用户模式代码(诸如应用220)可致使通过调用内核模式驱动器切换EPT指针136。在某些实施例中,用户模式代码(诸如应用220)可被允许直接执行专用处理器指令(诸如VMFUNC指令)。
在框514中,计算设备100访问共享存储器段。例如,目标虚拟机204的应用220和/或操作系统可从共享存储器段读取数据或向其写入数据。在某些实施例中,目标虚拟机204可从源虚拟机206的存储器页读取或向其写入网络数据或其他I/O数据。具体而言,目标虚拟机204可对源虚拟机206的存储器页执行一个或多个直接存储器访问(DMA)操作,这可允许直接访问I/O设备和/或数据。此外或可替代地,目标虚拟机204可从VMM202所建立的共享存储器段214读取或向其写入数据。因此,共享存储器段214可用于虚拟机间消息传递、信令或不涉及访问源虚拟机206的存储器页的其他通信。在访问共享存储器段之后,方法500循环回到框514并且可继续访问共享存储器段。
现在参考图6,在使用中,计算设备100可执行用于授权访问虚拟机间共享存储器段的方法600。方法600可由源虚拟机206执行并且因此可以以VMX非根模式执行,具有对计算设备100的有限访问。方法600在框602中开始,其中计算设备100确定是否选择性地允许访问源虚拟机206的存储器页。如果否,方法600分支到框606,如下所述。如果选择性地允许访问,方法600前进到框604。
在框604中,计算设备100向源虚拟机206注册共享存储器段。如以上结合图3的框308所述,注册描述宾客物理存储器页、段或将从源虚拟机206向目标虚拟机204共享的其他区域。如上所述,计算设备100可在授权表232中标识有待共享的宾客物理页。源虚拟机206可使用任何合适的技术向VMM 202注册共享存储器段,包括执行VMExit或超级调用或以其他方式调用VMM 202。
在框606中,计算设备100确定是否访问VMM 202所建立的共享存储器段。如果否,方法600循环回到框602。因此,当不提供选择性访问并且不访问共享存储器段214时,目标虚拟机204可访问源虚拟机206的存储器而无需向VMM 202的任何请求或源虚拟机206所执行的其他确定动作。如果计算设备100确定访问共享存储器段214,方法600前进到框608。
在框608中,计算设备100请求用VMM 202认证源虚拟机206的视图切换组件226。如以上结合图3的框302至304所述,在被授权访问安全视图228之前,源虚拟机206请求认证视图切换组件226。源虚拟机206可通过生成VMExit、超级调用或以其他方式调用VMM 202,请求认证。如上所述,如果视图切换组件226未被验证,计算设备100可生成错误消息或以其他方式拒绝允许未经验证的视图切换组件226启用对安全视图228的访问。
在框610中,计算设备100切换到安全视图228。在切换到安全视图228之后,在源虚拟机206内执行的一个或多个宾客应用220或操作系统的虚拟地址空间中,共享存储器段是可访问的。在某些实施例中,计算设备100可将EPT指针136设置为指向与安全视图228相关联的EPT 134。例如,如图4所示,EPT指针136可被从指向缺省视图EPT 134a切换到指向安全视图EPT 134b。计算设备100可使用专用处理器指令(诸如VMFUNC指令)切换EPT指针136。在某些实施例中,切换EPT指针136可被限制为源虚拟机206和/或处理器120的环零、内核模式或某种其他管理模式。因此,EPT指针136可由内核模式代码(诸如操作系统驱动器)切换。在某些实施例中,用户模式代码(诸如应用220)可致使通过调用内核模式驱动器切换EPT指针136。在某些实施例中,用户模式代码(诸如应用220)可被允许直接执行专用处理器指令(诸如VMFUNC指令)。
在框612中,计算设备100向VMM 202请求访问共享存储器段214。如以上结合图3的框316所述,源虚拟机206可通过生成VMExit、超级调用或以其他方式调用VMM 202,请求访问。计算设备100可通过在授权表232中标识安全视图228内的页请求访问共享存储器段214。
在框614中,计算设备100访问VMM 202所建立的共享存储器段214。源虚拟机206可读取或写入存储在共享存储器段214内的数据。例如,源虚拟机206可使用共享存储器段214与目标虚拟机204传递或以其他方式管理存储器页的所有权,如以下结合图7至图9进一步所述。方法600循环回到框614以便继续访问共享存储器段214。
现在参照图7,示图700示出用于在源虚拟机206与目标虚拟机204之间传递存储器缓冲区的所有权的安全视图控制结构(SVCS)216的一个潜在实施例。如所示,SVCS 216与包括若干缓冲区404a至404e的说明性安全视图228相关联。那些缓冲区404可以是源虚拟机206所产生的共享存储器段。例如,每个缓冲区404可包括源虚拟机206的接收队列、传输队列或任何其他I/O缓冲区。
如所示,SVCS 216包括指向目标虚拟机204的宾客物理存储器418内的安全视图228内的位置的多个指针。在说明性实施例中,这些指针被存储为宾客页帧号。当然,在其他实施例中,那些指针可以以其他格式或者基于不同的地址空间存储。例如,SVCS 216可包括目标虚拟机204的虚拟存储器414内的指针和/或相对于安全视图228的偏移。
具体而言,说明性SVCS 216包括分别引用安全视图228的起始和结束的安全视图起始指针702和安全视图结束指针712。SVCS 216还包括处理指针704、当前指针706、下一指针708和高水位指针710。那些指针用于在源虚拟机206和目标虚拟机204之间协调存储器缓冲区的所有权,如以下进一步结合图8和图9所述。在说明性实施例中,SVCS 216还包括互斥714和一组状态标志716。互斥714和状态标志716可用于在源虚拟机206和目标虚拟机204之间协调对SVCS 216的并发访问。
如所示,SVCS 216将安全视图228划分为多个区域718、720、722。使用过的区域718是从安全视图起始指针702到处理指针712(包括)定义的并且在说明性实施例中包括缓冲区404a。使用过的区域718表示已经由目标虚拟机204处理的并且因此可由源虚拟机206收回的缓冲区404。使用中区域720是从处理指针704到下一指针708(不包括)定义的并且因此包括缓冲区404b至404e。使用中区域720表示已经刚由源虚拟机206共享的缓冲区404。处理指针704和当前指针706(不包括)之间的缓冲区(即,缓冲区404b)表示正在活跃地由目标虚拟机204处理的缓冲区404。未使用过的区域722(从下一指针(包括)到安全视图结束指针712(不包括))表示安全视图228内的可由从源虚拟机206共享的附加缓冲区404扩充的自由空间。高水位指针710引用安全视图228内的阈值地址。当安全视图228被填充在或超过高水位指针710时,使用过的区域718中的缓冲区可被收回。
现在参考图8,在使用中,计算设备100可执行用于占有共享存储器缓冲区的所有权的方法800。方法800可由目标虚拟机204执行并且因此可以以VMX非根模式执行,具有对计算设备100的有限访问。方法800在框802中开始,其中计算设备100切换到安全视图228。计算设备100可认证安全视图切换组件226并且然后通过更新EPT指针136切换到安全视图228,如以上结合图5所述。具体而言,计算设备100可请求访问VMM 202所建立的共享存储器段214。共享存储器段214包括安全视图控制结构(SVCS)216。
返回参考图4,示图400示出目标虚拟机204访问SVCS 216。如所示,SVCS 216位于安全视图228内的虚拟页430。如所示,宾客页表132b将虚拟页430映射到宾客物理页432。如所示,缺省视图EPT 134a将宾客物理页432映射到物理页434。物理页434不提供对SVCS 216的访问;例如,物理页434可被归零或者可设置许可以便限制对物理页434的访问。相比之下,安全视图EPT 134b将宾客物理页432映射到包含SVCS 216的物理页436。物理页436可由VMM 202分配、建立或以其他方式维护。例如,物理页436可分配在VMM 202的堆中。因此,在目标虚拟机204中执行的应用220和/或操作系统可经由安全视图228访问SVCS 216。
返回参考图8,在框804中,计算设备100读取SVCS 216以便确定任何使用中共享缓冲区是否准备就绪被处理。计算设备100可通过检查SVCS 216的处理指针704、当前指针706和/或下一指针708确定任何使用中共享缓冲区是否准备就绪被处理。例如,计算设备100可确定处理指针704是否小于下一指针708,表明附加缓冲区404已经由源虚拟机206共享。在框806中,计算设备100确定共享缓冲区是否就绪。如果否,方法800循环回到框804以便继续监视SVCS 216。如果共享缓冲区就绪,方法800前进到框808。
在框808中,计算设备基于SVCS 216的当前指针706处理使用中区域720内的一个或多个共享缓冲区。目标虚拟机204可执行处理共享缓冲区的任何操作。例如,目标虚拟机204可执行一个或多个虚拟网络功能,诸如分组路由、分组过滤或以其他方式处理网络分组数据。在框810中,在处理共享缓冲区之后,计算设备100递增SVCS 216的处理指针704。如上所述,递增处理指针704表示那些共享缓冲区已经由目标虚拟机204处理并且可由源虚拟机206收回。
在框812中,计算设备100确定安全视图228是否超过预定容量水平。计算设备100可例如通过确定SVCS 216的下一指针708是等于还是超过SVCS 216的高水位指针710进行该确定。在某些实施例中,计算设备100可将处理指针704与高水位指针710进行比较以便确定是否已经处理过所有共享缓冲区。在框814中,计算设备100基于安全视图228是否超过容量进行分支。如果未超过容量(即,如果下一指针708和/或处理指针704为超过高水位指针710),方法800循环回到框804以便继续处理共享缓冲区。如果安全视图228超过容量,方法800前进到框816。
在框816中,计算设备100可处理VMM 202所生成的EPT 134无效。如以下进一步所述,当安全视图228超过容量时,源虚拟机206可收回使用过的共享缓冲区。在收回该存储器之后,VMM 202可例如通过使与安全视图228相关联的当前EPT 134无效并且重新初始化任何相关联的SVCS 216来重置安全视图228。使EPT 134无效可移除处理器120所高速缓存的与使用过的缓冲区相关联的转换条目。在安全视图228被清空之后,目标虚拟机204可被要求例如通过切换到新的EPT 134重新初始化安全视图228。在处理任何EPT无效之后,方法800循环回到框804以便继续处理共享缓冲区。
现在参考图9,在使用中,计算设备100可执行用于转移共享存储器缓冲区的所有权的方法500。方法900可由源虚拟机206执行并且因此可以以VMX非根模式执行,具有对计算设备100的有限访问。方法900在框902中开始,其中计算设备100切换到安全视图228。计算设备100可认证安全视图切换组件226并且然后通过更新EPT指针136切换到安全视图228,如以上结合图6所述。具体而言,计算设备100可请求访问VMM 202所建立的共享存储器段214。如上所述,共享存储器段214包括SVCS 216。
在框904中,计算设备100产生有待与目标虚拟机204共享的新的共享缓冲区。共享缓冲区可被实施为例如源虚拟机206的一个或多个宾客物理页。在某些实施例中,共享缓冲区可包括源虚拟机206所生成的有待由目标虚拟机204处理的接收队列、传输队列或任何其他网络I/O数据。
在框906中,计算设备100向授权表232添加新创建的共享缓冲区。如上所述,向授权表232添加缓冲区表示该缓冲区应当与目标虚拟机204共享。在框908中,计算设备100向VMM 202发送与目标虚拟机204共享新的缓冲区的请求。如以上在图6中所述,源虚拟机206可使用任何适当的技术向VMM 202注册新创建的共享缓冲区,包括执行VMExit或超级调用或以其他方式调用VMM 202。VMM 202可在SVCS 216的下一指针708的位置处映射安全视图228内的新创建的共享缓冲区。在成功共享该缓冲区之后,下一指针708可被递增。
在框910中,计算设备100读取SVCS 216以便确定安全视图228是否超过容量。例如,计算设备100可确定下一指针708是等于还是超过高水位指针710。在框912中,计算设备100基于安全视图228是否超过容量进行分支。如果否,方法900分支循环回到框904以便继续产生共享存储器缓冲区。如果安全视图228超过容量,方法900前进到框914。
在框914中,计算设备100等待目标虚拟机204处理所用使用中共享存储器缓冲区404。源虚拟机206可在SVCS 216的状态标志716中设置一个或多个标志以便表明源虚拟机206正在等待完成。如上所述,目标虚拟机204可继续处理使用中缓冲区404直到使用中区域720中没有缓冲区404。源虚拟机206可监视SVCS 216以便确定目标虚拟机204何时已经完成处理使用中缓冲区404。此外或可替代地,不是等待目标虚拟机204,在某些实施例中,源虚拟机206可向目标虚拟机204的不同线程所维护的另一个安全视图228提交新创建的缓冲区。
在所有使用中缓冲区404被处理之后,在框916中,计算设备100从授权表232移除每个使用过的缓冲区404。如上所述,通过从授权表232移除那些缓冲区404,源虚拟机206指示那些缓冲区不应再与目标虚拟机204共享。在框918中,计算设备100收回每个使用过的缓冲区404。例如,源虚拟机206可释放、删除或以其他方式解除分配与使用过的区域718内的每个缓冲区404相关联的存储器。在收回之后,与使用过的缓冲区404相关联的存储器可由源虚拟机206重新使用。在框920中,计算设备100可处理VMM 202所生成的EPT无效。在已经收回与使用过的缓冲区404相关联的存储器之后,VMM 202可例如通过使与安全视图228相关联的当前EPT 134无效并且重新初始化任何相关联的SVCS 216来重置安全视图228。使EPT 134无效可移除处理器120所高速缓存的引用使用过的缓冲区的转换条目并且因此可允许重复使用存储器。在安全视图228被清空之后,源虚拟机206可被要求例如通过切换到新的EPT 134重新初始化安全视图228。通过仅当安全视图228超过容量时才收回存储器,计算设备100可减少EPT无效的数量,例如与当其被处理时收回每个缓冲区相比。在执行任何EPT无效之后,方法900循环回到框904以便继续产生共享缓冲区。
示例
以下提供在此公开的技术的说明性示例。这些技术的实施例可包括以下所描述的示例中的任何一个或多个以及任何组合。
示例1包括用于安全虚拟机间共享存储器通信的计算设备,该计算设备包括:认证模块,用于由该计算设备的虚拟机监视器响应于从该计算设备的目标虚拟机接收的认证该目标虚拟机的视图切换组件的请求,认证该视图切换组件;安全视图模块,用于由该虚拟机监视器响应于该视图切换组件的认证将安全存储器视图配置为响应于从该目标虚拟机接收的访问该计算设备的共享存储器段的请求,访问该共享存储器段,其中该安全存储器视图定义该计算设备的物理存储器映射;视图切换模块,用于由该目标虚拟机响应于访问该共享存储器段的该请求使用该视图切换组件切换到该安全存储器视图而无需虚拟机退出事件;以及数据访问模块,用于由该目标虚拟机响应于切换到该安全存储器视图,访问该共享存储器段。
示例2包括示例1所述的主题,并且其中,该视图切换组件包括操作系统内核、内核模式驱动器或用户级别应用。
示例3包括示例1和2中任一项所述的主题,并且其中,该共享存储器段包括该计算设备的一个或多个物理存储器页。
示例4包括示例1至3中任一项所述的主题,并且其中,配置该安全存储器视图包括配置该计算设备的扩展页表。
示例5包括示例1至4中任一项所述的主题,并且其中,切换到该安全存储器视图包括设置该计算设备的扩展页表指针以便引用该扩展页表。
示例6包括示例1至5中任一项所述的主题,并且其中,设置该扩展页表指针包括执行改变该扩展页表指针的处理器指令。
示例7包括示例1至6中任一项所述的主题,并且其中,该共享存储器段包括该计算设备的源虚拟机的宾客物理存储器页。
示例8包括示例1至7中任一项所述的主题,并且其中,该共享存储器段包括输入/输出缓冲区。
示例9包括示例1至8中任一项所述的主题,并且其中,该共享存储器段包括传输队列或接收队列。
示例10包括示例1至9中任一项所述的主题,并且进一步包括访问控制模块,用于由该源虚拟机向该虚拟机监视器注册该共享存储器段;其中,将该安全存储器视图配置为访问该共享存储器段包括将该安全存储器视图配置为访问该源虚拟机所注册的该共享存储器段。
示例11包括示例1至10中任一项所述的主题,并且其中,注册该共享存储器段包括在该源虚拟机的授权表中标识该共享存储器段的宾客物理页;以及向该虚拟机监视器提交该授权表。
示例12包括示例1至11中任一项所述的主题,并且进一步包括共享存储器模块,用于由该虚拟机监视器建立该共享存储器段;其中:该认证模块进一步用于由该虚拟机监视器响应于从该源虚拟机接收的认证该计算设备的源虚拟机的视图切换组件的请求,认证该视图切换组件;该视图切换模块进一步用于由该源虚拟机响应于该视图切换组件的认证使用该源虚拟机的该视图切换组件切换到该安全存储器视图而无需虚拟机退出事件;以及该数据访问模块进一步用于由该源虚拟机响应于切换到该安全存储器视图访问该共享存储器段;其中,将该安全存储器视图配置为访问该共享存储器段包括将该安全存储器视图配置为访问该虚拟机监视器所建立的该共享存储器段。
示例13包括示例1至12中任一项所述的主题,并且进一步包括访问控制模块,用于由该源虚拟机向该虚拟机监视器注册第二共享存储器段;其中:将该安全存储器视图配置为访问该共享存储器段包括将该安全存储器视图配置为访问该源虚拟机所注册的该第二共享存储器段;以及由该目标虚拟机访问该共享存储器段进一步包括由该目标虚拟机访问该第二共享存储器段。
示例14包括示例1至13中任一项所述的主题,并且进一步包括缓冲区所有权模块,用于:由该源虚拟机生成有待由该目标虚拟机处理的共享缓冲区,其中该第二共享存储器段包括该共享缓冲区;由该目标虚拟机响应于该共享存储器段的访问处理该共享缓冲区;以及由该目标虚拟机和该源虚拟机使用存储在由该虚拟机监视器所建立的该共享存储器段中的安全视图控制结构协调该共享缓冲区的所有权。
示例15包括示例1至14中任一项所述的主题,并且其中,注册该第二共享存储器段包括在该安全视图控制结构的下一指针处注册该共享缓冲区;处理该共享缓冲区包括响应于该共享缓冲区的处理递增该安全视图控制结构的处理指针;以及生成该共享缓冲区包括由该源虚拟机确定是否超过该安全视图的容量,并且响应于超过该源虚拟机的容量的确定,由该源虚拟机等待该目标虚拟机完成处理该共享缓冲区;由该源虚拟机响应于该目标虚拟机完成处理该共享缓冲区,从授权表移除该共享缓冲区;由该源虚拟机响应于从该授权表移除该共享缓冲区,收回该共享缓冲区;以及由该虚拟机监视器响应于收回该共享缓冲区将该计算设备的扩展页表无效。
示例16包括示例1至15中任一项所述的主题,并且其中,确定是否超过该安全视图的容量包括确定该安全视图控制结构的该下一指针是否超过该安全视图控制结构的参考指针。
示例17包括用于安全虚拟机间共享存储器通信的方法,该方法包括:由该计算设备的虚拟机监视器响应于从该计算设备的目标虚拟机接收的认证该目标虚拟机的视图切换组件的请求,认证该视图切换组件;由该虚拟机监视器响应于该视图切换组件的认证,将安全存储器视图配置为响应于从该目标虚拟机接收的访问该计算设备的共享存储器段的请求,访问该共享存储器段,其中该安全存储器视图定义该计算设备的物理存储器映射;由该目标虚拟机响应于访问该共享存储器段的该请求使用该视图切换组件切换到该安全存储器视图而无需虚拟机退出事件;以及由该目标虚拟机响应于切换到该安全存储器视图,访问该共享存储器段。
示例18包括示例17所述的主题,并且其中,该视图切换组件包括操作系统内核、内核模式驱动器或用户级别应用。
示例19包括示例17和18中任一项所述的主题,并且其中,该共享存储器段包括该计算设备的一个或多个物理存储器页。
示例20包括示例17至19中任一项所述的主题,并且其中,配置该安全存储器视图包括配置该计算设备的扩展页表。
示例21包括示例17至20中任一项所述的主题,并且其中,切换到该安全存储器视图包括设置该计算设备的扩展页表指针以便引用该扩展页表。
示例22包括示例17至21中任一项所述的主题,并且其中,设置该扩展页表指针包括执行改变该扩展页表指针的处理器指令。
示例23包括示例17至22中任一项所述的主题,并且其中,该共享存储器段包括该计算设备的源虚拟机的宾客物理存储器页。
示例24包括示例17至23中任一项所述的主题,并且其中,该共享存储器段包括输入/输出缓冲区。
示例25包括示例17至24中任一项所述的主题,并且其中,该共享存储器段包括传输队列或接收队列。
示例26包括示例17至25中任一项所述的主题,并且进一步包括由该源虚拟机向该虚拟机监视器注册该共享存储器段;其中,将该安全存储器视图配置为访问该共享存储器段包括将该安全存储器视图配置为访问由该源虚拟机所注册的该共享存储器段。
示例27包括示例17至26中任一项所述的主题,并且其中,注册该共享存储器段包括在该源虚拟机的授权表中标识该共享存储器段的宾客物理页;以及向该虚拟机监视器提交该授权表。
示例28包括示例17至27中任一项所述的主题,并且进一步包括由该虚拟机监视器建立该共享存储器段;由该虚拟机监视器响应于从该计算设备的源虚拟机接收的认证该源虚拟机的视图切换组件的请求,认证该视图切换组件;由该源虚拟机响应于该视图切换组件的认证使用该视图切换组件切换到该安全存储器视图而无需虚拟机退出事件;以及由该源虚拟机响应于切换到该安全存储器视图,访问该共享存储器段;其中,将该安全存储器视图配置为访问该共享存储器段包括将该安全存储器视图配置为访问该虚拟机监视器所建立的该共享存储器段。
示例29包括示例17至28中任一项所述的主题,并且进一步包括由该源虚拟机向该虚拟机监视器注册第二共享存储器段;其中:将该安全存储器视图配置为访问该共享存储器段还包括将该安全存储器视图配置为访问由该源虚拟机所注册的该第二共享存储器段;以及由该目标虚拟机访问该共享存储器段进一步包括由该目标虚拟机访问该第二共享存储器段。
示例30包括示例17至29中任一项所述的主题,并且进一步包括由该源虚拟机生成有待由目标虚拟机处理的共享缓冲区,其中该第二共享存储器段包括该共享缓冲区;由该目标虚拟机响应于该共享存储器段的访问,处理该共享缓冲区;以及由该目标虚拟机和该源虚拟机使用存储在该虚拟机监视器所建立的该共享存储器段中的安全视图控制结构协调该共享缓冲区的所有权。
示例31包括示例17至30中任一项所述的主题,并且其中,由该源虚拟机注册该第二共享存储器段包括在该安全视图控制结构的下一指针处注册该共享缓冲区;处理该共享缓冲区包括响应于该共享缓冲区的处理递增该安全视图控制结构的处理指针;以及生成该共享缓冲区包括由该源虚拟机确定是否超过该安全视图的容量,并且响应于超过该源虚拟机的容量的确定,由该源虚拟机等待该目标虚拟机完成处理该共享缓冲区;由该源虚拟机响应于该目标虚拟机完成处理该共享缓冲区从授权表移除该共享缓冲区;由该源虚拟机响应于从该授权表移除该共享缓冲区,收回该共享缓冲区;以及由该虚拟机监视器响应于收回该共享缓冲区,将该计算设备的扩展页表无效。
示例32包括示例17至31中任一项所述的主题,并且其中,确定是否超过该安全视图的容量包括确定该安全视图控制结构的该下一指针是否超过该安全视图控制结构的参考指针。
示例33包括计算设备,该计算设备包括处理器和存储器,该存储器存储有多条指令,当由该处理器执行时,该多条指令致使该计算设备执行示例17至32中任一项所述的方法。
示例34包括一种或多种机器可读存储介质,包括存储在其上的多条指令,响应于被执行,该多条指令致使计算设备执行如示例17至32中任一项所述的方法。
示例35包括计算设备,该计算设备包括用于执行如示例17至32中任一项所述的方法的装置。
示例36包括用于安全虚拟机间共享存储器通信的计算设备,该计算设备包括:用于由虚拟机监视器响应于从该计算设备的目标虚拟机接收的认证该目标虚拟机的视图切换组件的请求认证该视图切换组件的装置;用于由该虚拟机监视器响应于该视图切换组件的认证将安全存储器视图配置为响应于从该目标虚拟机接收的访问该计算设备的共享存储器段的请求访问该共享存储器段的装置,其中该安全存储器视图定义该计算设备的物理存储器映射;用于由该目标虚拟机响应于访问该共享存储器段的该请求使用该视图切换组件切换到该安全存储器视图而无需虚拟机退出事件的装置;以及用于由该目标虚拟机响应于切换到该安全存储器视图访问该共享存储器段的装置。
示例37包括示例36所述的主题,并且其中,该视图切换组件包括操作系统内核、内核模式驱动器或用户级别应用。
示例38包括示例36和37中任一项所述的主题,并且其中,该共享存储器段包括该计算设备的一个或多个物理存储器页。
示例39包括示例36至38中任一项所述的主题,并且其中,用于配置该安全存储器视图的该装置包括用于配置该计算设备的扩展页表的装置。
示例40包括示例36至39中任一项所述的主题,并且其中,用于切换到该安全存储器视图的该装置包括用于设置该计算设备的扩展页表指针以便引用该扩展页表的装置。
示例41包括示例36至40中任一项所述的主题,并且其中,用于设置该扩展页表指针的该装置包括用于执行改变该扩展页表指针的处理器指令的装置。
示例42包括示例36至41中任一项所述的主题,并且其中,该共享存储器段包括该计算设备的源虚拟机的宾客物理存储器页。
示例43包括示例36至42中任一项所述的主题,并且其中,该共享存储器段包括输入/输出缓冲区。
示例44包括示例36至43中任一项所述的主题,并且其中,该共享存储器段包括传输队列或接收队列。
示例45包括示例36至44中任一项所述的主题,并且进一步包括用于由该源虚拟机向该虚拟机监视器注册该共享存储器段的装置;其中,用于将该安全存储器视图配置为访问该共享存储器段的该装置包括用于将该安全存储器视图配置为访问由该源虚拟机所注册的该共享存储器段的装置。
示例46包括示例36至45中任一项所述的主题,并且其中,用于注册该共享存储器段的该装置包括用于在该源虚拟机的授权表中标识该共享存储器段的宾客物理页的装置;以及用于向该虚拟机监视器提交该授权表的装置。
示例47包括示例36至46中任一项所述的主题,并且进一步包括用于由该虚拟机监视器建立该共享存储器段的装置;用于由该虚拟机监视器响应于从该计算设备的源虚拟机接收的认证该源虚拟机的视图切换组件的请求认证该视图切换组件的装置;用于由该源虚拟机响应于该视图切换组件的认证使用该视图切换组件切换到该安全存储器视图而无需虚拟机退出事件的装置;以及用于由该源虚拟机响应于切换到该安全存储器视图访问该共享存储器段的装置;其中,用于将该安全存储器视图配置为访问该共享存储器段的该装置包括用于将该安全存储器视图配置为访问该虚拟机监视器所建立的该共享存储器段的装置。
示例48包括示例36至47中任一项所述的主题,并且进一步包括用于由该源虚拟机向该虚拟机监视器注册第二共享存储器段的装置,其中用于将该安全存储器视图配置为访问该共享存储器段的该装置进一步包括用于将该安全存储器视图配置为访问由该源虚拟机所注册的该第二共享存储器段的装置,并且其中用于由该目标虚拟机访问该共享存储器段的该装置进一步包括用于由该目标虚拟机访问该第二共享存储器段的装置。
示例49包括示例36至48中任一项所述的主题,并且进一步包括用于由该源虚拟机生成有待由目标虚拟机处理的共享缓冲区的装置,其中该第二共享存储器段包括该共享缓冲区;用于由该目标虚拟机响应于该共享存储器段的访问处理该共享缓冲区的装置;以及用于由该目标虚拟机和该源虚拟机使用存储在由该虚拟机监视器所建立的该共享存储器段中的安全视图控制结构协调该共享缓冲区的所有权的装置。
示例50包括示例36至49中任一项所述的主题,并且其中,用于由该源虚拟机注册该第二共享存储器段的该装置包括用于在该安全视图控制结构的下一指针处注册该共享缓冲区的装置;用于处理该共享缓冲区的该装置包括用于响应于该共享缓冲区的处理递增该安全视图控制结构的处理指针的装置;以及用于生成该共享缓冲区的该装置包括用于由该源虚拟机确定是否超过该安全视图的容量的装置,并且响应于超过该源虚拟机的容量的确定,用于由该源虚拟机等待该目标虚拟机完成处理该共享缓冲区的装置;用于由该源虚拟机响应于该目标虚拟机完成处理该共享缓冲区从授权表移除该共享缓冲区的装置;用于由该源虚拟机响应于从该授权表移除该共享缓冲区收回该共享缓冲区的装置;以及用于由该虚拟机监视器响应于收回该共享缓冲区将该计算设备的扩展页表无效的装置。
示例51包括示例36至50中任一项所述的主题,并且其中,用于确定是否超过该安全视图的容量的该装置包括用于确定该安全视图控制结构的该下一指针是否超过该安全视图控制结构的参考指针的装置。
Claims (17)
1.一种用于安全虚拟机间共享存储器通信的计算设备,所述计算设备包括:
认证模块,用于由所述计算设备的虚拟机监视器响应于从所述计算设备的目标虚拟机接收的认证所述目标虚拟机的视图切换组件的请求,认证所述视图切换组件;
安全视图模块,用于由所述虚拟机监视器响应于所述视图切换组件的认证,将安全存储器视图配置为响应于从所述目标虚拟机接收的访问所述计算设备的共享存储器段的请求访问所述共享存储器段,其中所述安全存储器视图定义所述计算设备的物理存储器映射;
视图切换模块,用于由所述目标虚拟机响应于访问所述共享存储器段的所述请求使用所述视图切换组件切换到所述安全存储器视图而无需虚拟机退出事件;以及
数据访问模块,用于由所述目标虚拟机响应于切换到所述安全存储器视图访问所述共享存储器段。
2.如权利要求1所述的计算设备,其中:
所述共享存储器段包括所述计算设备的一个或多个物理存储器页;以及
配置所述安全存储器视图包括配置所述计算设备的扩展页表。
3.如权利要求2所述的计算设备,其中,切换到所述安全存储器视图包括设置所述计算设备的扩展页表指针以便引用所述扩展页表。
4.如权利要求3所述的计算设备,其中,设置所述扩展页表指针包括执行改变所述扩展页表指针的处理器指令。
5.如权利要求1所述的计算设备,其中,所述共享存储器段包括所述计算设备的源虚拟机的宾客物理存储器页。
6.如权利要求5所述的计算设备,进一步包括:
访问控制模块,用于由所述源虚拟机向所述虚拟机监视器注册所述共享存储器段;
其中,将安全存储器视图配置为访问所述共享存储器段包括将所述安全存储器视图配置为访问由所述源虚拟机所注册的所述共享存储器段。
7.如权利要求1所述的计算设备,进一步包括:
共享存储器模块,用于由所述虚拟机监视器建立所述共享存储器段;其中:
所述认证模块进一步用于由所述虚拟机监视器响应于从所述计算设备的源虚拟机接收的认证所述源虚拟机的视图切换组件的请求,认证所述视图切换组件;
所述视图切换模块进一步用于由所述源虚拟机响应于所述视图切换组件的认证使用所述源虚拟机的所述视图切换组件切换到所述安全存储器视图而无需虚拟机退出事件;以及
所述数据访问模块进一步用于由所述源虚拟机响应于切换到所述安全存储器视图访问所述共享存储器段;
其中,将所述安全存储器视图配置为访问所述共享存储器段包括将所述安全存储器视图配置为访问由所述虚拟机监视器所建立的所述共享存储器段。
8.如权利要求7所述的计算设备,进一步包括:
访问控制模块,用于由所述源虚拟机向所述虚拟机监视器注册第二共享存储器段;其中:
将所述安全存储器视图配置为访问所述共享存储器段进一步包括将所述安全存储器视图配置为访问由所述源虚拟机所注册的所述第二共享存储器段;以及
由所述目标虚拟机访问所述共享存储器段进一步包括由所述目标虚拟机访问所述第二共享存储器段。
9.如权利要求8所述的计算设备,进一步包括缓冲区所有权模块,用于:
由所述源虚拟机生成有待由所述目标虚拟机处理的共享缓冲区,其中所述第二共享存储器段包括所述共享缓冲区;
由所述目标虚拟机响应于所述共享存储器段的访问处理所述共享缓冲区;以及
由所述目标虚拟机和所述源虚拟机使用存储在由所述虚拟机监视器所建立的所述共享存储器段中的安全视图控制结构,协调所述共享缓冲区的所有权。
10.如权利要求9所述的计算设备,其中:
注册所述第二共享存储器段包括在所述安全视图控制结构的下一指针处注册所述共享缓冲区;
处理所述共享缓冲区包括响应于所述共享缓冲区的处理递增所述安全视图控制结构的处理指针;以及
生成所述共享缓冲区包括由所述源虚拟机确定是否超过所述安全视图的容量,并且响应于超过所述源虚拟机的容量的确定,
由所述源虚拟机等待所述目标虚拟机完成处理所述共享缓冲区;
由所述源虚拟机响应于所述目标虚拟机完成处理所述共享缓冲区,从授权表移除所述共享缓冲区;
由所述源虚拟机响应于从所述授权表移除所述共享缓冲区,收回所述共享缓冲区;以及
由所述虚拟机监视器响应于收回所述共享缓冲区,将所述计算设备的扩展页表无效。
11.如权利要求10所述的计算设备,其中,确定是否超过所述安全视图的容量包括确定所述安全视图控制结构的所述下一指针是否超过所述安全视图控制结构的参考指针。
12.一种用于安全虚拟机间共享存储器通信的方法,所述方法包括:
由计算设备的虚拟机监视器响应于从所述计算设备的目标虚拟机接收的认证所述目标虚拟机的视图切换组件的请求,认证所述视图切换组件;
由所述虚拟机监视器响应于认证所述视图切换组件,将安全存储器视图配置为响应于从所述目标虚拟机接收的访问所述计算设备的共享存储器段的请求访问所述共享存储器段,其中所述安全存储器视图定义所述计算设备的物理存储器映射;
由所述目标虚拟机响应于访问所述共享存储器段的所述请求,使用所述视图切换组件切换到所述安全存储器视图而无需虚拟机退出事件;以及
由所述目标虚拟机响应于切换到所述安全存储器视图访问所述共享存储器段。
13.如权利要求12所述的方法,其中:
所述共享存储器段包括所述计算设备的一个或多个物理存储器页;以及
配置所述安全存储器视图包括配置所述计算设备的扩展页表。
14.如权利要求12所述的方法,其中,所述共享存储器段包括所述计算设备的源虚拟机的宾客物理存储器页,所述方法进一步包括:
由所述源虚拟机向所述虚拟机监视器注册所述共享存储器段;
其中,将所述安全存储器视图配置为访问所述共享存储器段包括将所述安全存储器视图配置为访问由所述源虚拟机所注册的所述共享存储器段。
15.如权利要求12所述的方法,进一步包括:
由所述虚拟机监视器建立所述共享存储器段;
由所述虚拟机监视器响应于从所述计算设备的源虚拟机接收的认证所述源虚拟机的视图切换组件的请求,认证所述视图切换组件;
由所述源虚拟机响应于认证所述述视图切换组件使用所述视图切换组件切换到所述安全存储器视图而无需虚拟机退出事件;以及
由所述源虚拟机响应于切换到所述安全存储器视图访问所述共享存储器段,
其中,将所述安全存储器视图配置为访问所述共享存储器段包括将所述安全存储器视图配置为访问由所述虚拟机监视器所建立的所述共享存储器段。
16.如权利要求15所述的方法,进一步包括:
由所述源虚拟机向所述虚拟机监视器注册第二共享存储器段,其中将所述安全存储器视图配置为访问所述共享存储器段进一步包括将所述安全存储器视图配置为访问由所述源虚拟机所注册的所述第二共享存储器段,并且其中由所述目标虚拟机访问所述共享存储器段进一步包括由所述目标虚拟机访问所述第二共享存储器段;
由所述源虚拟机生成用于由所述目标虚拟机处理的共享缓冲区,其中所述第二共享存储器段包括所述共享缓冲区;
由所述目标虚拟机响应于访问所述共享存储器段处理所述共享缓冲区;以及
由所述目标虚拟机和所述源虚拟机使用存储在由所述虚拟机监视器所建立的所述共享存储器段中的安全视图控制结构,协调所述共享缓冲区的所有权。
17.一种或多种机器可读存储介质,包括存储在其上的多条指令,响应于被执行,该多条指令致使计算设备执行如权利要求12至16中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/460,530 | 2014-08-15 | ||
US14/460,530 US9454497B2 (en) | 2014-08-15 | 2014-08-15 | Technologies for secure inter-virtual-machine shared memory communication |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106201646A CN106201646A (zh) | 2016-12-07 |
CN106201646B true CN106201646B (zh) | 2020-03-31 |
Family
ID=53716331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510415592.8A Active CN106201646B (zh) | 2014-08-15 | 2015-07-15 | 用于安全虚拟机间共享存储器通信的设备和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9454497B2 (zh) |
EP (1) | EP2985718B1 (zh) |
JP (1) | JP5989862B2 (zh) |
KR (1) | KR101782398B1 (zh) |
CN (1) | CN106201646B (zh) |
TW (1) | TWI556107B (zh) |
Families Citing this family (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10103872B2 (en) * | 2014-09-26 | 2018-10-16 | Intel Corporation | Securing audio communications |
US20160117246A1 (en) * | 2014-10-27 | 2016-04-28 | Thomson Licensing | Method and apparatus for cross-core covert channel |
US9891954B2 (en) * | 2014-11-04 | 2018-02-13 | Vmware, Inc. | Cluster resource management in a virtualized computing environment |
US9804830B2 (en) | 2014-12-19 | 2017-10-31 | Signalfx, Inc. | Anomaly detection using a data stream processing language for analyzing instrumented software |
US9703720B2 (en) | 2014-12-23 | 2017-07-11 | Intel Corporation | Method and apparatus to allow secure guest access to extended page tables |
US9753863B2 (en) * | 2014-12-27 | 2017-09-05 | Intel Corporation | Memory protection with non-readable pages |
US10469313B2 (en) * | 2015-01-29 | 2019-11-05 | Nec Corporation | Data file registration management system, method, management apparatus, and recording medium |
US10394692B2 (en) * | 2015-01-29 | 2019-08-27 | Signalfx, Inc. | Real-time processing of data streams received from instrumented software |
US9778945B2 (en) * | 2015-02-10 | 2017-10-03 | Red Hat Israel, Ltd. | Providing mode-dependent virtual machine function code |
US9684605B2 (en) * | 2015-02-23 | 2017-06-20 | Intel Corporation | Translation lookaside buffer for guest physical addresses in a virtual machine |
US9569247B2 (en) * | 2015-03-31 | 2017-02-14 | Red Hat Israel, Ltd. | Range based virtual machine functions |
US9870324B2 (en) * | 2015-04-09 | 2018-01-16 | Vmware, Inc. | Isolating guest code and data using multiple nested page tables |
US9727359B2 (en) * | 2015-04-27 | 2017-08-08 | Red Hat Israel, Ltd. | Virtual machine function based sub-page base address register access for peripheral component interconnect device assignment |
US9558029B2 (en) | 2015-05-17 | 2017-01-31 | Nicira, Inc. | Logical processing for containers |
CN106295385B (zh) * | 2015-05-29 | 2019-10-22 | 华为技术有限公司 | 一种数据保护方法和装置 |
WO2017058157A1 (en) * | 2015-09-29 | 2017-04-06 | Hewlett Packard Enterprise Development Lp | Application management data |
US10891144B2 (en) | 2015-11-01 | 2021-01-12 | Nicira, Inc. | Performing logical network functionality within data compute nodes |
US10447728B1 (en) | 2015-12-10 | 2019-10-15 | Fireeye, Inc. | Technique for protecting guest processes using a layered virtualization architecture |
US10846117B1 (en) * | 2015-12-10 | 2020-11-24 | Fireeye, Inc. | Technique for establishing secure communication between host and guest processes of a virtualization architecture |
US10108446B1 (en) | 2015-12-11 | 2018-10-23 | Fireeye, Inc. | Late load technique for deploying a virtualization layer underneath a running operating system |
US10063469B2 (en) | 2015-12-16 | 2018-08-28 | Nicira, Inc. | Forwarding element implementation for containers |
KR101953546B1 (ko) * | 2015-12-30 | 2019-06-03 | 한국전자통신연구원 | 가상 스위칭 장치 및 방법 |
US10055577B2 (en) * | 2016-03-29 | 2018-08-21 | Intel Corporation | Technologies for mutual application isolation with processor-enforced secure enclaves |
US10754772B2 (en) * | 2016-06-14 | 2020-08-25 | Sap Se | Reclamation of in-memory database memory resources |
US11442760B2 (en) | 2016-07-01 | 2022-09-13 | Intel Corporation | Aperture access processors, methods, systems, and instructions |
US10303899B2 (en) * | 2016-08-11 | 2019-05-28 | Intel Corporation | Secure public cloud with protected guest-verified host control |
US11989332B2 (en) | 2016-08-11 | 2024-05-21 | Intel Corporation | Secure public cloud with protected guest-verified host control |
TWI619013B (zh) * | 2016-08-24 | 2018-03-21 | 康齊科技股份有限公司 | 記憶體管理系統及其方法 |
US10176007B2 (en) * | 2016-08-30 | 2019-01-08 | Red Hat Israel, Ltd. | Guest code emulation by virtual machine function |
US10270715B2 (en) * | 2016-11-01 | 2019-04-23 | Oracle International Corporation | High performance network I/O in a virtualized environment |
WO2018107322A1 (en) * | 2016-12-12 | 2018-06-21 | Intel Corporation | System and method to improve nested virtual machine monitor performance |
CN106681937A (zh) * | 2016-12-12 | 2017-05-17 | 中国航空工业集团公司西安航空计算技术研究所 | 一种流命令格式的显示列表管理方法 |
US10645123B1 (en) | 2016-12-28 | 2020-05-05 | Juniper Networks, Inc. | Network traffic switching for virtual machines |
US10489877B2 (en) * | 2017-04-24 | 2019-11-26 | Intel Corporation | Compute optimization mechanism |
US10726514B2 (en) | 2017-04-28 | 2020-07-28 | Intel Corporation | Compute optimizations for low precision machine learning operations |
CN109460373B (zh) * | 2017-09-06 | 2022-08-26 | 阿里巴巴集团控股有限公司 | 一种数据共享方法、终端设备和存储介质 |
CN110892388B (zh) * | 2018-07-11 | 2022-07-22 | 华为技术有限公司 | 增强用户空间与内核空间的隔离性的方法和装置 |
US10983926B2 (en) | 2018-08-29 | 2021-04-20 | Red Hat, Inc. | Efficient userspace driver isolation for virtual machines |
CN109858265B (zh) * | 2018-11-22 | 2022-01-28 | 海光信息技术股份有限公司 | 一种加密方法、装置及相关设备 |
US10776021B2 (en) * | 2018-11-27 | 2020-09-15 | Red Hat, Inc. | Exit-less host page table switching and virtual machine function detection with memory pages storing an identification value that are mapped at the same guest physical addresses |
US11237859B2 (en) * | 2018-11-28 | 2022-02-01 | Red Hat Israel, Ltd. | Securing virtual machines in computer systems |
US11099874B2 (en) | 2019-01-28 | 2021-08-24 | Red Hat Israel, Ltd. | Efficient userspace driver isolation by shallow virtual machines |
US11126553B2 (en) * | 2019-01-31 | 2021-09-21 | EMC IP Holding Company LLC | Dynamic allocation of memory between containers |
US11347869B2 (en) * | 2019-03-08 | 2022-05-31 | International Business Machines Corporation | Secure interface control high-level page management |
US11640361B2 (en) | 2019-03-08 | 2023-05-02 | International Business Machines Corporation | Sharing secure memory across multiple security domains |
US11403409B2 (en) | 2019-03-08 | 2022-08-02 | International Business Machines Corporation | Program interruptions for page importing/exporting |
US11206128B2 (en) | 2019-03-08 | 2021-12-21 | International Business Machines Corporation | Secure paging with page change detection |
US11487906B2 (en) | 2019-03-08 | 2022-11-01 | International Business Machines Corporation | Storage sharing between a secure domain and a non-secure entity |
US11531627B2 (en) | 2019-03-08 | 2022-12-20 | International Business Machines Corporation | Secure storage isolation |
CN111796944A (zh) * | 2019-04-08 | 2020-10-20 | 维塔科技(北京)有限公司 | 切换共享内存区的方法和装置、存储介质和电子设备 |
CN111796901A (zh) * | 2019-04-08 | 2020-10-20 | 维塔科技(北京)有限公司 | 切换共享内存区的方法和装置、存储介质和电子设备 |
US20200401434A1 (en) * | 2019-06-19 | 2020-12-24 | Vmware, Inc. | Precision time protocol in a virtualized environment |
JP7309579B2 (ja) | 2019-11-14 | 2023-07-18 | 株式会社東芝 | 通信装置、通信方法及びプログラム |
GB2594534B (en) * | 2020-04-30 | 2022-09-21 | Metaswitch Networks Ltd | Processing user traffic in a virtualised network |
US11606346B2 (en) | 2020-06-29 | 2023-03-14 | Rockwell Automation Technologies, Inc. | Method and apparatus for managing reception of secure data packets |
US11599649B2 (en) * | 2020-06-29 | 2023-03-07 | Rockwell Automation Technologies, Inc. | Method and apparatus for managing transmission of secure data packets |
CN111988230B (zh) * | 2020-08-19 | 2023-04-07 | 海光信息技术股份有限公司 | 虚拟机通信方法、装置、系统及电子设备 |
CN112131011B (zh) * | 2020-11-26 | 2021-02-26 | 北京壁仞科技开发有限公司 | 用于管理资源的方法、计算设备和计算机可读存储介质 |
US20210117244A1 (en) * | 2020-12-26 | 2021-04-22 | Intel Corporation | Resource manager access control |
US11816498B2 (en) * | 2021-01-21 | 2023-11-14 | Nutanix, Inc. | Early event-based notification for VM swapping |
CN113064697B (zh) * | 2021-04-01 | 2022-09-23 | 上海交通大学 | 利用多硬件特性加速微内核进程间通信的方法 |
US11971818B1 (en) | 2022-07-13 | 2024-04-30 | Cadence Design Systems, Inc. | Memory view for non-volatile memory module |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
CN101819564A (zh) * | 2009-02-26 | 2010-09-01 | 国际商业机器公司 | 协助在虚拟机之间进行通信的方法和装置 |
CN102511034A (zh) * | 2009-09-24 | 2012-06-20 | 甲骨文国际公司 | 虚拟机监视器虚拟执行环境中基于使用情况的应用许可的系统和方法 |
TW201342064A (zh) * | 2011-12-22 | 2013-10-16 | Intel Corp | 用於資料讀取/寫入延伸分頁表違反之處理的決策動作決定技術 |
CN103870312A (zh) * | 2012-12-12 | 2014-06-18 | 华为技术有限公司 | 建立虚拟机共享存储缓存的方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060143389A1 (en) * | 2004-12-28 | 2006-06-29 | Frank Kilian | Main concept for common cache management |
US8166474B1 (en) * | 2005-09-19 | 2012-04-24 | Vmware, Inc. | System and methods for implementing network traffic management for virtual and physical machines |
JP5146174B2 (ja) * | 2008-07-28 | 2013-02-20 | 富士通株式会社 | 仮想マシンモニタ装置およびプログラム,ならびに仮想マシン間メモリ共有管理方法 |
FR2948789B1 (fr) * | 2009-07-28 | 2016-12-09 | Airbus | Composant logiciel et dispositif pour le traitement automatise de donnees multi-usages, mettant en oeuvre des fonctions ayant besoin de differents niveaux de surete ou limites de responsabilite |
EP2569698B1 (en) * | 2010-05-10 | 2019-07-10 | Citrix Systems, Inc. | Redirection of information from secure virtual machines to unsecure virtual machines |
US8893274B2 (en) * | 2011-08-03 | 2014-11-18 | Trend Micro, Inc. | Cross-VM network filtering |
JP2013242644A (ja) * | 2012-05-18 | 2013-12-05 | Panasonic Corp | 仮想計算機システム、制御方法、およびプログラム |
US9037823B2 (en) * | 2012-09-14 | 2015-05-19 | Intel Corporation | Protecting IAT/EAT hooks from rootkit attacks using new CPU assists |
US8904388B2 (en) * | 2013-01-10 | 2014-12-02 | Vce Company, Llc | Scripting language executor service for applications |
-
2014
- 2014-08-15 US US14/460,530 patent/US9454497B2/en active Active
-
2015
- 2015-07-06 JP JP2015134859A patent/JP5989862B2/ja active Active
- 2015-07-08 TW TW104122172A patent/TWI556107B/zh not_active IP Right Cessation
- 2015-07-10 KR KR1020150098275A patent/KR101782398B1/ko active IP Right Grant
- 2015-07-14 EP EP15176644.1A patent/EP2985718B1/en active Active
- 2015-07-15 CN CN201510415592.8A patent/CN106201646B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819564A (zh) * | 2009-02-26 | 2010-09-01 | 国际商业机器公司 | 协助在虚拟机之间进行通信的方法和装置 |
CN102511034A (zh) * | 2009-09-24 | 2012-06-20 | 甲骨文国际公司 | 虚拟机监视器虚拟执行环境中基于使用情况的应用许可的系统和方法 |
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
TW201342064A (zh) * | 2011-12-22 | 2013-10-16 | Intel Corp | 用於資料讀取/寫入延伸分頁表違反之處理的決策動作決定技術 |
CN103870312A (zh) * | 2012-12-12 | 2014-06-18 | 华为技术有限公司 | 建立虚拟机共享存储缓存的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US9454497B2 (en) | 2016-09-27 |
JP2016042354A (ja) | 2016-03-31 |
US20160048464A1 (en) | 2016-02-18 |
EP2985718A1 (en) | 2016-02-17 |
TW201629779A (zh) | 2016-08-16 |
KR101782398B1 (ko) | 2017-09-28 |
KR20160021028A (ko) | 2016-02-24 |
EP2985718B1 (en) | 2017-03-22 |
TWI556107B (zh) | 2016-11-01 |
JP5989862B2 (ja) | 2016-09-07 |
CN106201646A (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201646B (zh) | 用于安全虚拟机间共享存储器通信的设备和方法 | |
EP2891067B1 (en) | Virtual input/output memory management unit wihtin a guest virtual machine | |
US8954959B2 (en) | Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU | |
US10503405B2 (en) | Zero copy memory reclaim using copy-on-write | |
US10157146B2 (en) | Local access DMA with shared memory pool | |
US8392628B2 (en) | Sharing memory spaces for access by hardware and software in a virtual machine environment | |
US8893267B1 (en) | System and method for partitioning resources in a system-on-chip (SoC) | |
US7613898B2 (en) | Virtualizing an IOMMU | |
US8631170B2 (en) | Memory overcommit by using an emulated IOMMU in a computer system with a host IOMMU | |
US10671542B2 (en) | Application execution enclave memory method and apparatus | |
CN107924325B (zh) | 用于多级虚拟化的设备和方法 | |
US11194735B2 (en) | Technologies for flexible virtual function queue assignment | |
CN105980986B (zh) | 用于虚拟化计算的装置和方法 | |
US11836091B2 (en) | Secure memory access in a virtualized computing environment | |
US10331591B2 (en) | Logical-to-physical block mapping inside the disk controller: accessing data objects without operating system intervention | |
US20170147376A1 (en) | Input ouput memory management unit based zero copy virtual machine to virtual machine communication | |
US10255203B2 (en) | Technologies for zero-copy inter-virtual-machine data movement | |
US9921875B2 (en) | Zero copy memory reclaim for applications using memory offlining | |
CN112330229A (zh) | 资源调度方法、装置、电子设备及计算机可读存储介质 | |
US20220335109A1 (en) | On-demand paging support for confidential computing | |
US20160077981A1 (en) | Method and Apparatus for Efficient User-Level IO in a Virtualized System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |