对CPU进行独占受控访问的硬件虚拟化模块的制作方法

文档序号:14718678发布日期:2018-06-16 23:26阅读:151来源:国知局

本公开一般地涉及通过计算机系统中的一个或多个中央处理单元(CPU)来监视虚拟机的执行。



背景技术:

本节描述了可以被采用的方法,但不一定是先前已经被构思或采用的方法。因此,除非以其他方式明确说明,本节中所描述的任何方法都不是针对本说明书中的权利要求的现有技术,并且本节中所描述的任何方法不因为被包括在本节中而被承认是现有技术。

“虚拟化”是使用基于软件的可执行代码来仿真一个或多个物理机器的技术,每个仿真被称为“虚拟机”(VM)的实例。一个或多个虚拟机可以由管理程序来执行,管理程序是在诸如Linux之类的主机操作系统(OS)之内执行的;主机OS(例如,Linux)可以提供优化管理程序操作的虚拟化基础设施,例如通过提供基于内核的虚拟机(KVM),该KVM提供改进的仿真操作。管理程序控制虚拟机对一个或多个CPU的访问,该一个或多个CPU执行包括主机OS、管理程序、和虚拟机的基于软件的可执行代码。

虚拟机的使用将一个或多个CPU暴露至在虚拟机、管理程序、和/或主机OS中的任一个之内执行的有缺陷的(“多错误的”)或恶意的软件代码的攻击之下。虚拟机还可能威胁计算设备中的本机操作:例如,在计算网络中本机执行网络路由操作的网络路由器设备当被在网络路由器设备中执行的虚拟机攻击时可能遭遇灾难性的网络故障。

附图说明

参考附图,其中具有相同参考编号的元件表示相似的元件,并且其中:

图1示出了根据示例实施例的具有针对虚拟机的受控执行对一个或多个CPU和主机资源进行独占访问的装置的示例计算系统。

图2示出了根据示例实施例的图1的装置。

图3示出了根据示例实施例的与图1和2的装置对相应的虚拟机进行受控执行相关联的示例虚拟机属性。

图4示出了根据示例实施例的示例CPU接口管理器电路。

图5示出了根据示例实施例的示例存储器管理器电路。

图6示出了根据示例实施例的示例输入/输出(I/O)管理器电路。

图7示出了根据示例实施例的执行虚拟机的受控执行的图1的装置的示例方法。

具体实施方式

概述

在一个实施例中,方法包括提供对计算系统的一个或多个中央处理单元(CPU)中的每一个CPU进行独占访问并且对计算系统的主机资源进行独占访问的装置;以及基于装置根据虚拟机的规定策略控制对CPU中的任一CPU或主机资源中的任一主机资源的访问,通过装置控制计算系统中的虚拟机的执行,规定策略由装置独占地维持。

在另一实施例中,装置包括:至少一个中央处理单元(CPU)接口管理器电路,该至少一个CPU接口管理器电路被配置用于提供对计算系统的一个或多个CPU中的每一个CPU的独占访问;以及至少一个主机接口管理器电路,该至少一个主机接口管理器电路被配置用于提供对计算系统的主机资源的独占访问。CPU接口管理器电路被配置用于基于装置根据虚拟机的规定策略控制对CPU中的任一CPU或主机资源中的任一主机资源的访问来控制计算系统中的虚拟机的执行,规定策略由装置独占地维持。

在另一实施例中,逻辑被编码在一个或多个非暂态有形介质中用于由机器执行,并且当逻辑由机器执行时可操作以用于:提供对计算系统的一个或多个中央处理单元(CPU)中的每一个CPU进行独占访问并且对计算系统的主机资源进行独占访问的机器;以及基于机器根据虚拟机的规定策略控制对CPU中的任一CPU或主机资源中的任一主机资源的访问,通过机器控制计算系统中的虚拟机的执行,规定策略由机器独占地维持。

详细描述

具体实施例使得虚拟机的能够可靠和安全地管理,这可以保证保护计算系统中央处理单元(CPU)免受虚拟机任何潜在的攻击。具体实施例提供了基于硬件的装置,该基于硬件的装置可以通过将CPU与计算系统的任意主机资源隔离来保证保护计算系统CPU。具体地,基于硬件的装置将CPU与任意主机资源(例如,计算系统的任意存储器设备或计算系统的任意输入/输出(I/O)设备)物理地隔离。此外,所有基于软件的指令基于“薄”基于软件的接口被发送至装置,“薄”基于软件的接口包括定义用于通过装置执行指令的基元的可执行代码。因此,所有可执行操作是通过基于硬件的装置的。此外,基于硬件的装置可以基于确定访问请求是否满足由装置独占维持的规定策略而选择性地授权对CPU和/或I/O设备的访问。

图1示出了示例计算系统10,该计算系统10具有提供对计算系统10的一个或多个CPU14进行独占访问以及对计算系统10的主机资源(包括I/O设备16和系统存储器18)进行独占访问的装置12。换句话说,硬件设备(例如,任意CPU14、任意I/O设备16、或系统存储器18)不可以被访问,除非硬件设备被允许由基于硬件的装置12(也被称为硬件虚拟化模块(HVM)12)进行访问。I/O设备16可以包括向网络设备(例如,网络路由器设备、网络交换设备、传感器节点等等)提供网络连接的一个或多个网络接口电路、直接连接的主机传感器、键盘接口、通用串行总线(UES)接口、外围组件互连(PCI)总线接口等等。I/O设备可以通过一个或多个I/O设备连接92被耦合至HVM12。

计算系统10还可以包括基于软件的资源,例如管理程序20、可选的主机操作系统(OS)22、和管理程序-HVM接口24。管理程序20可以管理虚拟机26(也被称为“租户”虚拟机)的执行。主机OS22可以在旨在与用户进行交互的计算系统中被实现,但是主机OS在不旨在与用户进行交互的计算系统10中不是必须的,例如被配置为在局域网和/或广域网中执行网络操作的路由器设备。

管理程序-HVM接口24可以被实现为覆盖硬件虚拟化模块12的可执行代码一个“薄”层。管理程序-HVM接口24可以包括用于CPU14的可执行指令的可执行基元和虚拟结构,这使得管理程序20执行虚拟机26的管理,而不需要主机操作系统22或直接访问CPU14。

被实现为例如现场可编程门阵列(FPGA)和/或专用集成电路(ASIC)的硬件虚拟化模块(HVM)12(下面将进一步详细描述)可以基于可执行代码在由HVM12独占维护的策略之下的受控执行来将消息26发送至管理程序-HVM接口24并且从管理程序-HVM接口24接收消息26。具体地,HVM12将CPU14和基于硬件的主机资源16和18与管理程序20提供的虚拟化和虚拟机26隔离。基于将相应的命令通过系统总线28(该系统总线28在HVM12与相应的CPU14之间提供直接和独占的连接)输出至适当的CPU14,HVM12还可以拦截所有硬件和软件中断,并且基于由HVM12独占维护的规定策略来选择性地授权中断。

现有虚拟化技术通常假定CPU是“可信实体”,这样I/O设备和存储器设备通常被直接连接至CPU;因此,CPU对有缺陷的或恶意的软件代码的执行可能在被直接连接至CPU的系统存储器和/或I/O设备中产生致命错误,尤其是在有缺陷的或恶意的软件代码可能产生可执行代码和/或数据非易失性存储器的损坏时;被连接至CPU的I/O设备还可能将CPU暴露至由基于网络的实体用流量洪泛CPU的攻击(例如,拒绝服务攻击)之下。针对有缺陷的或恶意的软件代码的安全担忧也出现在被实现为机器对机器(M2M)网关的计算系统中,M2M网关可以被实现为具有用于在M2M资产(例如,传感器、执行器、人机界面模块(HIM)等等)之间发送和接收数据的内置I/O端口的网络路由器设备;不管怎样,这样的M2M通常可以被用于工厂自动化、系统监视和维护、闭环控制应用等等,并且越来越多地用于诸如维护/维修车辆、货运车辆、或甚至客运车辆之类的移动车辆上。

示例实施例可以保证外部代理在物理上不可能攻击任意CPU14或任意主机资源16和18,由于HVM12提供对CPU14和主机资源16和18进行独占访问:HVM12可以保证根据由HVM12独占维持的规定策略在没有HVM12的许可的情况下对任意硬件组件14、16、或18的访问是不可能的。

图2示出了根据实施例的图1的HVM12的进一步细节。HVM12可以包括CPU接口管理器电路30和主机接口管理器电路32。主机接口管理器电路32可以包括存储器管理器电路34和I/O管理器电路36。

CPU接口管理器电路30可以被配置用于提供通过相应的系统总线28对计算系统的一个或多个CPU14中的每一个CPU进行独占访问。相应的CPU14的每个系统总线28可以包括例如地址总线、数据总线、和包括时钟信号、中断信号等等的时序/控制信号。CPU接口管理器电路30可以被配置用于基于CPU管理器电路30根据由HVM12独占地维护的规定策略(包括虚拟机的VM专用策略和/或由HVM模块12维护的全局规定策略)控制对任意CPU14或主机资源(例如,任意可识别I/O设备16、系统存储器18中的任意可识别位置)的访问来控制虚拟机26的执行。如下面针对图4所描述的,CPU管理器电路30可以被配置用于基于相应的虚拟机26的相应的策略和/或全局规定策略、相对于由HVM模块12控制的其他虚拟机(例如,VM2、VM3)26来调度虚拟机(例如,VM1)26。示例VM专用策略可以包括分配给虚拟机26的优先级和/或服务质量(QoS)值、与虚拟机26和/或I/O设备16相关联的拥挤阈值条件等等。

响应于确定虚拟机(例如,VM2)将要被执行(也被称为“活跃的VM”),CPU管理器电路30可以将与活跃的VM相关联的指令经由相应的系统总线28发送至一个或多个CPU14。响应于在执行虚拟机26的指令期间接收到来自CPU14的I/O请求,CPU管理器电路30可以确定该请求是否符合由HVM12独占地维持的VM专用策略和/或全局策略。I/O管理器电路36可以确定针对活跃的虚拟机执行的指令是否被授权访问识别的I/O设备16,并且基于确定该指令被授权访问识别的I/O设备16选择性地授予访问。类似地,存储器管理器电路34可以被配置用于确定由CPU14针对活跃的虚拟机执行的指令是否被授权访问系统存储器18中的识别的位置,并且选择性地授予访问或拒绝访问。

HVM12还可以包括它自己的存储器电路38,该存储器电路38被配置用于存储虚拟机26的规定VM专用和/或全局策略,下面将针对图3进行详细描述。

图3示出了根据示例实施例的由HVM12独占维持的针对HVM12对相应的虚拟机26进行受控执行的示例虚拟机属性和策略40。在一个实施例中,属性和策略40可以被专有地存储在HVM12的存储器电路28之内;在另一实施例中,属性和策略40可以被专有地存储在图1的系统存储器18之内;在另一实施例中,属性和策略40可以被存储在存储器电路38和/或系统存储器18中,例如在存储器电路38中存储至少活跃VM(和可选的下一个VM26)的相应的策略40,并且在系统存储器18中存储剩下的策略。

由HVM12独占维持的针对虚拟机26的属性和策略40可以包括虚拟机标识符42、虚拟机优先级44、基底存储器地址46、存储器地址限制48、指令指针50、授权的I/O端口16的列表52、存储器分配列表54、授权的共享存储器空间56的列表、和注册的中断58的列表。虚拟机标识符42可以唯一地标识相应的虚拟机,例如图1中示出为“VM1”。虚拟机优先级44可以标识相应的虚拟机26相对于其他虚拟机26的相对优先级,使得CPU管理器32能够实现基于优先级的(或基于服务质量的)虚拟机调度,下面将针对图4进行详细描述。基底存储器地址46可以标识相应的地址偏移(“Addr_VM1”),从而标识分配给相应的虚拟机26的存储器区域60(图5中示出的)的开始地址,并且地址限制48可以指定分配给相应的虚拟机26的存储器区域60的大小。地址限制48针对所有虚拟机可以是相同值,以便所有虚拟机具有相同大小的存储器区域60;替代地,例如基于相应的优先级44,地址限制48可以针对不同虚拟机26被设置为不同值;替代地,例如基于正在被执行的虚拟机26的数量,地址限制48可以由HVM12动态地设置。

指令指针50可以标识针对相应的虚拟机26将由CPU14执行的下一个指令在系统存储器18中的存储器地址位置(相对于基底存储器地址46)。授权的I/O端口的列表可以标识由相应的虚拟机26可访问的I/O设备16,并且可以选择性地包括将规定地址指令与相应的授权的I/O设备16相关联的特定存储器地址值;因此,对I/O设备16的可访问性可以根据需要在每个指令的基础上被建立,从而使得可以建立I/O设备16不能被访问除非相应的I/O端口和相应的可执行指令的相关联的存储器地址在列表52中被指定的策略。如图3所示出的,列表52还可以指定给定虚拟机26和/或在虚拟机26之内执行的指定指令是否具有只读访问、只写访问、或读写(R/W)访问。存储器分配列表54可以指定针对相应的虚拟机26在系统存储器18中的存储器区域60的规定分配,包括用于存储用于执行与相应的虚拟机“VM1”26相关联的操作的可执行代码的指令部分54a、用于存储与相应的虚拟机“VM26”相关联的数据的数据部分54b、和用于存储通常存储在CPU寄存器14(例如当另一虚拟机被CPU14执行时被用来存储指令寄存器值)中的寄存器缓存部分54c。

属性和策略40还可以包括授权的共享存储器列表56,该授权的共享存储器列表56可以指定一个或多个存储器地址位置,该一个或多个存储器地址位置可以被另一虚拟机(例如,“VM3”)26共享。

属性和策略40还可以指定注册的中断58,该注册的中断58在相应的虚拟机“VM1”26的执行期间被注册为授权的中断;因此,I/O设备16和/或CPU28的未授权的中断可以被HVM12忽略。

图4示出了根据示例实施例的由图2的CPU管理器电路30调度虚拟机26的示例。CPU管理器电路30可以包括中断处理器电路62、VM调度器电路64、VM交换机电路66、和活跃VM检测器电路68。中断处理器电路62可以例如从CPU14中的一个CPU、从I/O设备等等接收一个或多个中断信号72。中断处理器电路62和VM调度器电路64可以各自接收定时器中断,例如指示分配用于执行相应的虚拟机26的规定时间间隔(例如,1秒)的期满。中断处理器电路62还可以接收当前活跃的虚拟机“ActiveVMx”的标识70,并且作为响应(例如基于图3的注册的中断58)确定接收到的中断信号72相对于针对相应的活跃的虚拟机70维持的规定策略是否应该被处理。因此,中断处理器电路62基于在例如注册的中断58中指定的相应的策略40可以通过输出交换命令74响应中断72,或忽略中断信号72。例如基于定时器中断和相对于相应的优先级44的虚拟机的队列等等,虚拟机调度器电路64可以调度将被执行的下一个虚拟机“NextVMy”76。VM交换机电路66可以通过将下一个虚拟机标识符76提供至活跃的VM检测器电路68来响应交换信号74:活跃的VM检测器电路68可以响应于确定下一个虚拟机“VMy”76是活跃的来输出交换命令78;活跃的VM检测器电路68还可以响应于检测下一个虚拟机“VMy”是空闲的并且不是活跃的来将VM增值信号80输出至VM调度器电路64。

因此,CPU管理器电路30可以基于相应虚拟机26的相应的策略44并进一步基于相应的虚拟机26是活跃的还是空闲的来调度虚拟机26(相对于其他虚拟机),相应的策略44包括分配至每个虚拟机26的相应的优先级44。

图5示出了根据示例实施例的与存储器管理电路34相关联的操作。响应于CPU管理器电路30在操作82中接收到针对指定的存储器地址的存储器访问请求,存储器管理器电路34在操作84中可以相对于基底存储器地址46、地址限制48、和存储器分配54执行范围检测和地址转换。如果在操作84中存储器管理器电路34确定来自CPU14的存储器访问请求符合VM策略40,则存储器管理器电路34可以基于在操作86中添加相应的虚拟机26的基底物理地址46以获得用于到达系统存储器18之内的所请求的存储器地址的物理地址88来授权存储器访问。如果在操作84中存储器管理器电路34确定存储器访问请求不符合相应的策略40,则例如基于返回错误中断、错误标识、或空数据存储器访问可以被拒绝。

图6示出了根据示例实施例的示例I/O管理器电路36。I/O管理器电路36可以包括通过一个或多个I/O连接(图1的92)被耦合至一个或多个I/O设备16的物理接口90。I/O管理器电路36还可以包括发送控制器93、接收控制器94、发送复用器96、接收解复用器98、虚拟机发送缓冲器100、虚拟机接收缓冲器102、发送解复用器104、接收复用器106、总线发送控制器电路108、和总线接收控制器电路110。I/O管理器电路36在CPU管理器电路30的控制之下可以基于相应的虚拟机26的相应的规定策略40以及基于由HVM12建立的和维持的规定拥挤情况选择性地在I/O设备16和CPU14之间发送数据。

I/O管理器电路36的发送控制器电路108被配置用于基于相应的策略40来确定CPU14在执行相应的虚拟机26的标识目的地期间是否被授权访问标识的I/O设备16。响应于确定CPU被授权访问识别的I/O设备16,发送器控制器电路108可以基于使得发送解复用器电路104将访问请求存储在相应的虚拟机26的适当的先进先出缓冲器电路100中来选择性地授权对标识的I/O设备16的访问。具体地,每个虚拟机26具有针对每个注册的I/O设备16的相应的发送缓冲器100和接收缓冲器102,其中相关联的拥挤策略由I/O管理器电路36实施;因此,如果I/O管理器电路36在任意发送缓冲器100中检测到溢出情况(例如,由于流氓虚拟机对I/O设备16的攻击)或在任意接收缓冲器102中检测到溢出情况(例如,由于流氓I/O设备16的攻击),则I/O管理器电路36可以实现正确行为,例如丢弃溢出数据、清除拥挤的缓冲器100或102等等。发送复用器电路96可以从(注册的I/O设备16的)发送缓冲器输出排队的指令,使得发送控制器93能够将指令输出至目的地I/O设备16以用于代表活跃的虚拟机26执行相应的I/O操作。

类似于将指令流从CPU14发送至识别的I/O设备16,接收控制器电路94被配置用于基于活跃的虚拟机26的相应的策略40来确定I/O设备16是否被授权访问CPU。假定I/O设备16被授权访问相关联的虚拟机26的CPU,接收解复用器98可以将接收到的指令(例如,接收到的数据分组、传感器消息、PCI数据帧等等)存储在与活跃的虚拟机26的I/O设备16相关联的适当的接收缓冲器102中。如上所述,I/O管理器电路36可以监视接收缓冲器102的拥挤情况并且丢弃引起拥挤情况的任意指令,从而针对诸如拒绝服务攻击之类的攻击提供附加安全。接收复用器电路106可以从接收缓冲器102输出排队的指令,使得接收控制器电路110能够根据活跃的虚拟机26的处理将指令(例如,数据分组)从注册的I/O设备16输出至系统总线28,使其由CPU14执行。

图7示出了根据示例实施例的HVM12执行对虚拟机26的受控执行的示例方法。

如上所述,HVM12中的CPU管理器电路30提供对计算系统10的每个CPU28的独占访问,其中计算系统10可以被实现为例如计算网络中的路由器设备。CPU管理器电路30在操作120中可以响应于相应的虚拟机26的新虚拟机注册来创建虚拟机上下文条目40。VM上下文条目40可以包括用于虚拟机执行(例如,44、56、58)、系统存储器18中的存储器分配(例如,图3的46、48、54)、授权的I/O设备16的列表52等等的策略。CPU管理器电路30在操作120还可以通过将VM标识符42添加至由VM调度电路64维持的VM队列来调度虚拟机26。如上所述,存储器管理器电路34在操作122中提供对计算系统10的系统存储器18的独占访问,并且I/O管理器电路36在操作124中通过I/O设备连接90(例如,独立连接、I/O总线等等)提供对I/O设备16的独占访问。如果图6的相应的接收缓冲器102到达拥挤情况,则I/O管理器电路36在操作124中还可以拒绝由尝试到达执行规定虚拟机26的任意CPU14的I/O设备16进行的访问。

在操作126中,CPU管理器电路30中的VM交换机电路66可以通过基于活跃状态(图4的68)和上述策略(图4的62、64)确定下一个虚拟机76来响应中断信号72(或定时器中断)。例如基于将由指令指针50指定的下一个指令从系统存储器18输出至系统总线20上的地址总线并且在系统总线28上输出中断信号,VM交换机电路66和活跃的虚拟机检测器电路68在操作128中可以使得下一个虚拟机78的上下文被CPU14执行。

响应于在操作130中在执行活跃的虚拟机26的标识的目的地期间接收到针对I/O访问的CPU请求,CPU管理器电路30可以在操作132中确定活跃的虚拟机26的标识指令是否被授权访问标识的主机资源(例如,系统存储器18中指定的存储器地址、或I/O设备16的指定的I/O地址)。CPU管理器电路30在操作134中可以基于根据策略40确定相应的请求被授权来选择性地授予由CPU14执行对活跃的虚拟机的访问;如上所述,如果访问请求违反虚拟机26的相应的策略44,CPU管理器电路30还可以拒绝CPU14的访问请求,例如通过发送空数据来终止指令或在严重的情况下终止虚拟机26的实例。

根据示例实施例,硬件虚拟化模块使能虚拟机的基于硬件的监视,例如硬件虚拟化模块被实现为M2M嵌入式虚拟机。虚拟机与CPU基于硬件的隔离针对本地和外部攻击提供强安全性,包括防止占用控制虚拟机调度或CPU周期、防止篡改系统存储器、防止诸如拒绝服务攻击之类的洪泛类型攻击等等。因此,示例实施例提供了可以管理客户虚拟机的虚拟化需求的可靠并安全的装置。此外,示例实施例还使得由任意处理器供应商制造的CPU能够被利用,包括不支持虚拟化的CPU核心。

任意所公开的电路HVM模块12可以通过使用不同制造技术在硬件中被实现。所公开的电路的示例实现方式包括硬件逻辑,该硬件逻辑在诸如可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPGA)之类的逻辑阵列中被实现,或通过诸如专用集成电路(ASIC)之类的集成电路的掩膜编程被实现。如指定的,HVM12在硬件中被实现,由此HVM12不是使用由诸如微处理器电路之类的相应的内部处理器电路执行的基于软件的可执行资源被实现的。因此,本说明书中所使用的术语“电路”仅指使用一个或多个集成电路实现的基于硬件的电路,并且包括用于执行所描述的操作的逻辑。

任意图1-7中所描述的操作可以被实现为存储在HVM12中的机器可读非暂态有形存储介质上(例如,ROM、EEPROM、非易失性RAM等等)的可执行代码,该操作基于使用一个或多个集成电路实现的机器执行代码被完成;本文所描述的操作还可以被实现为可执行逻辑,可执行逻辑被编码在一个或多个非暂态有形介质中以用于由包括集成电路的机器来执行(例如,可编程逻辑阵列或器件、现场可编程门阵列、可编程阵列逻辑、专用集成电路等等)。

此外,针对任意图1-7所描述的操作可以以任意适当的顺序被执行,或至少一些操作是并行执行的。本文所描述的操作的执行仅是示例的方式;由此,操作不一定要由本文所描述的基于机器的硬件组件来执行;相反,其他基于机器的硬件组件可以被用来以任意适当的顺序执行所公开的操作,或至少一些操作是并行执行的。

虽然已经结合目前被认为是用于实施所附权利要求中指定的主题的最佳模式描述了本公开的示例实施例,但是应当理解的是,示例实施例仅是说明性的,并且不限制所附权利要求中所指定的主题。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1