用于安全地处理与物理功能驱动器的虚拟功能驱动器通信的方法、系统和装置制造方法

文档序号:6534066阅读:191来源:国知局
用于安全地处理与物理功能驱动器的虚拟功能驱动器通信的方法、系统和装置制造方法
【专利摘要】在输入/输出虚拟化使能计算环境中,一种用于安全地处理与计算装置的物理功能驱动器的虚拟功能驱动器通信的装置、方法和系统包括:保持虚拟功能驱动器的通信简档;以及将通信简档应用于从虚拟功能驱动器到物理功能驱动器的通信,以确定通信是否呈现安全和/或性能条件。如果检测到安全和/或性能条件,则所述装置、方法和系统可禁用虚拟功能驱动器。
【专利说明】用于安全地处理与物理功能驱动器的虚拟功能驱动器通信的方法、系统和装置

【背景技术】
[0001]虚拟化表示使用计算机软件(例如,“虚拟机”或“系统镜像”)来模拟或以其它方式实现物理计算装置的功能或特征,以使得物理计算资源能够被共享。例如,多个虚拟机(VM)能够同时在相同物理计算系统上运行。在输入输出(I/O)装置的情况下,虚拟化技术能够被用于允许多个虚拟机共享相同的I/O硬件资源。
[0002]“云”计算经常表示通常由许多计算机服务器对作为服务的计算资源的提供,所述许多计算机服务器在距向其请求服务的位置遥远的(一个或多个)位置处被联网在一起。可使用虚拟化来分配云服务器或其资源的各部分。在云环境中,多个系统镜像(SI)可在独立联网服务器的不同处理部件上执行。
[0003]从安全或性能角度,虚拟化环境(诸如,VM和系统镜像(SI))能够被利用恶意软件破坏或以其它方式受到损害。随着VM或SI的数量增加,安全漏洞的风险、拒绝服务(DOS)攻击和其它安全和/或性能相关问题也可能增加。

【专利附图】

【附图说明】
[0004]在附图中作为例子而非作为限制图示在本公开中描述的概念。为了说明的简单和清楚,图中图示的元件未必按照比例绘制。例如,为了清楚,一些元件的尺寸可相对于其它元件被夸大。另外,在认为合适的情况下,参考标签已在各图之中被重复以指示对应或类似的元件。
[0005]图1是用于在虚拟化计算装置处理虚拟功能驱动器通信的系统的至少一个实施例的简化方框图;
图2是图1的计算装置的虚拟化执行环境的至少一个实施例的简化方框图;和图3是用于分析来自图1的系统中的虚拟功能驱动器的通信并且确定是否禁止虚拟功能驱动器的方法的至少一个实施例的简化流程图。

【具体实施方式】
[0006]尽管本公开的概念容许各种修改和替代形式,但已在附图中作为例子示出了其特定实施例并且将会在这里详细地描述该特定实施例。然而,应该理解,并不意图将本公开的概念限制于公开的特定形式,而是相反地,意图是覆盖符合本公开和所附权利要求的所有修改、等同物和替代物。
[0007]在下面的描述中,阐述了许多特定细节(诸如,逻辑实现方式、操作码、用于指定操作数的方式、资源分割/共享/复制实现方式、系统部件的类型和相互关系以及逻辑分割/集成选择)以便提供对本公开的更彻底的理解。然而,本领域技术人员将会理解,可在没有这种特定细节的情况下实践本公开的实施例。在其它实例中,控制结构、门级电路和完全软件指令序列未被详细示出以免模糊这里描述的概念的描述。利用所包括的描述,本领域普通技术人员将会能够在没有过度实验的情况下实现合适的功能。
[0008]在说明书中对“ 一个实施例”、“实施例”、“示例性实施例”等的提及指示所描述的实施例可包括特定特征、结构或特性,但每个实施例可不必包括所述特定特征、结构或特性。此外,这种短语未必表示相同实施例。另外,当结合实施例描述特定特征、结构或特性时,无论是否明确地描述,均认为结合其它实施例实现这种特征、结构或特性在本领域技术人员的知识范围内。
[0009]这里描述的概念的实施例可被实现于硬件、固件、软件或其任何组合中。实现在计算机系统中的实施例可包括部件之间的一个或多个点对点或基于总线的互连。这里描述的概念的实施例还可被实现为由一个或多个机器可读或计算机可读存储介质携带或存储在所述一个或多个机器可读或计算机可读存储介质上的指令,所述指令可由一个或多个处理器读取并且执行。机器可读或计算机可读存储介质可被体现为用于以机器(例如,计算装置)可读的形式存储或传送信息的任何装置、机构或物理结构。例如,机器可读或计算机可读存储介质可被体现为(一个或多个)只读存储器(ROM)装置;(一个或多个)随机存取存储器(RAM)装置;磁盘存储介质;光学存储介质;闪存装置;迷你或微型SD卡、存储棒等。
[0010]在附图中,为了容易描述,可示出示意性元件(诸如,表示装置、模块、指令块和数据元素的元件)的特定布置或排序。然而,本领域技术人员应该理解,附图中的示意性元件的特定排序或布置并不意图暗示需要处理的特定次序或顺序或者过程的分离。另外,在附图中包括示意性元件不意图暗示:在所有实施例中需要这种元件,或者由这种元件表示的特征不可被包括在一些实施例中或在一些实施例中与其它元件组合。
[0011]通常,可使用任何合适形式的机器可读指令(诸如,软件或固件应用、程序、函数、模块、例程、过程、进程、插件、小应用程序、窗口小部件、代码片段和/或其它)实现用于表示指令块的示意性元件,并且可使用任何合适的编程语言、库、应用编程接口(API)和/或其它软件开发工具实现每个这种指令。例如,可使用Java、C++和/或其它编程语言实现一些实施例。类似地,可使用任何合适的电子布置或结构(诸如,寄存器、数据存储、表、记录、阵列、索引、散列、映射、树、列表、图形、文件(任何文件类型)、文件夹、目录、数据库和/或其它)实现用于表示数据或信息的示意性元件。
[0012]另外,在附图中,在连接元件(诸如,实线或虚线或箭头)被用于图示两个或更多的其它示意性元件之间或之中的连接、关系或关联的情况下,不存在任何这种连接元件并不意图暗示不能够存在连接、关系或关联。换句话说,元件之间的一些连接、关系或关联可能未被示出在附图中以免模糊本公开。另外,为了容易图示,单个连接元件可被用于表示元件之间的多个连接、关系或关联。例如,在连接元件表示信号、数据或指令的通信的情况下,本领域技术人员应该理解,根据可能需要的,这种元件可表示用于实现通信的一个或多个信号路径(例如,总线)。
[0013]在一些I/O虚拟化技术中,能够使用映射到I/O装置的物理功能(PF)的虚拟功能(VF)共享I/O装置的物理资源。这种物理“功能”的一个例子是I/O装置的个体通信端口(例如,以太网端口)。虚拟化I/O系统中的每个VF和PF具有使应用软件能够与该功能通信或实现该功能的关联装置驱动器,例如系统软件。例如,在一些实施例(例如,外围部件互连(PCI)和/或PCI Express装置)中,每个VF驱动器能够支持用于I/O相关功能的唯一和/或分离的数据路径。这能够允许单个I/O端口的带宽被分割为更小的“片”,所述更小的片可被分配给特定VM、SI或“访客”。为了容易讨论,在这里使用术语“VM”,但术语“VM”意图作为简写来表示VM、S1、访客或无论是在单根(single-root)配置还是在多根(multiple-root)配置中实现虚拟化计算环境的其它类型的过程或机制。通过虚拟化实现的I/O资源的共享能够增加I/O装置的总利用率,并且由此减少虚拟系统的成本。
[0014]I/O虚拟化使能装置能够被配置为支持多个VF,以使得I/O装置的每个物理功能能够看起来像是多个分离的物理装置。由可被称为虚拟机管理器(VMM)或管理程序的软件将每个VF分派给VM。在一些实施例中,多个VF能够被分派给每个VM。物理功能驱动器(PF驱动器)管理I/O虚拟化能力装置的物理功能,并且响应于它从多个虚拟功能驱动器(VF驱动器)接收的对资源的请求。
[0015]外围部件互连(PCI)特别兴趣小组已开发了用于以标准方式解决I/O装置的共享的规范。一个这种规范是单根I/o虚拟化(SR-1OV)规范。SR-1OV规范的一些版本描述一种机制,通过该机制,VF驱动器能够在受限情况下直接与I/O硬件通信,但对于将会具有超出VF驱动器的特定VM的影响的任何通信,必须经过PF驱动器。如此,如果VF驱动器或它的关联VM受到损害(例如,从安全和/或性能角度),则它发送给PF驱动器的通信能够影响整个虚拟化I/O装置。
[0016]现在参照图1,用于检测安全和/或性能损害VF驱动器的说明性系统100被体现在主机计算装置I1的PF驱动器132中。如以下更详细解释的,PF驱动器132包括VF请求分析器134,VF请求分析器134监测由PF驱动器132从虚拟化系统中的各种VF驱动器接收的通信。VF请求分析器134保持每个VM的简档,该简档包括在VM中运行的每个VF驱动器的安全和/或性能相关属性。当PF驱动器132从特定VF驱动器接收通信时,VF请求分析器134使用关联的VM简档来确定该通信是否有效。VF请求分析器134随着时间监测由特定VF驱动器发出的有效和/或无效通信的数量以确定VF驱动器是否可能受到损害。如果VF请求分析器134确定特定VF驱动器可能受到损害,则它能够在不影响虚拟化系统的其它方面的情况下禁用该VF驱动器。通过识别和跟踪可疑VF驱动器通信,系统100能够将可疑VF驱动器的影响在其关联VM中隔离,并且防止可疑VF驱动器不利地影响更大的虚拟化I/O系统。
[0017]说明性主机计算装置110包括至少一个处理器112、存储器116、输入/输出(I/O)子系统118、数据存储装置128和一个或多个外围装置136。主机计算装置110可被体现为能够执行可由主机计算装置110或任何其部件执行的这里描述的功能和特征的任何合适类型的服务器计算机或其它计算装置。例如,主机计算装置110可被体现为计算机,个人计算机(PC)、桌上型计算机、膝上型计算机、笔记本计算机、手持式计算机、服务器,服务器阵列或服务器农场、web服务器、网络服务器、企业服务器、互联网服务器、工作站、迷你计算机、大型计算机、超级计算机、网络器具、web器具、分布式计算系统、多处理器系统、基于处理器的系统、或任何前述各项的组合和/或其它。
[0018]说明性处理器112包括至少一个处理器核114(例如,微处理器、微控制器、数字信号处理器和/或其它)。除了一定量的高速缓存之外,处理器112包括存储器116,或者另外以通信方式耦合到存储器116。存储器116可被体现为任何类型的合适的存储器装置,诸如动态随机存取存储器装置(DRAM)、同步动态随机存取存储器装置(SDRAM)、双倍数据速率动态随机存取存储器装置(DDR SDRAM)和/或其它易失性存储器装置。
[0019]处理器112还以通信方式耦合到I/O子系统118。说明性I/O子系统118包括存储器管理器120、一个或多个通信接口 124和一个或多个通信端口 126。说明性存储器管理器120可包括存储器控制器(例如,存储器控制器子系统或北桥)。在说明性实施例中,存储器管理器120包括促进或以其它方式辅助主机计算装置110的物理功能的虚拟化(并且特别地,I/O子系统118的物理功能的虚拟化)的硬件和/或固件部件。例如,说明性存储器管理器120通过在主机计算装置110上运行的软件过程来管理和促进虚拟存储器的使用。
[0020]说明性通信接口 124可被体现为网络接口控制器(NIC)、网卡或适配器、以太网控制器和/或其它。通常,通信接口 124包括使主机计算装置110能够与一个或多个有线或无线网络138通信以允许主机计算装置110与一个或多个远程计算装置(I)…(N)(其中N是正整数)140、160通信的电子电路(例如,以太网、快速以太网、千兆比特以太网和/或其它)。通信接口 124可包括一个或多个有线和/或无线网络接口以促进通过网络138的有线和/或无线部分的通信。通信接口 124可与主机计算装置110的母板是一体的,或者可被体现为经总线(诸如,PCI或PC1-Express连接器)连接到母板的扩展卡。
[0021]说明性通信端口 126包括相应通信接口 124的特定输入/输出端口,通过这些输入/输出端口,实现与网络138的通信。在说明性实施例中,通信端口 126被体现为能够使用I/O虚拟化技术共享的硬件资源。
[0022]尽管未具体地不出,但I/O子系统118可包括输入/输出控制器(例如,输入/输出控制器子系统或南桥)和固件装置。在其它实施例中,可使用具有其它配置的I/O子系统。例如,在一些实施例中,I/O子系统118可形成片上系统(SoC)的部分,并且与处理器112和主机计算装置110的其它部件一起被合并在单个集成电路芯片上。如此,将会理解,在一些实施例中,I/O子系统118的每个部件可位于共同集成电路芯片上。
[0023]I/O子系统118以通信方式耦合到数据存储装置128。数据存储装置128的各部分可被体现为用于存储数据和/或计算机指令的任何合适的装置,诸如盘存储装置(例如,硬盘)、物理和/或逻辑存储装置的网络和/或其它。在图1中示出的“静态”计算环境中,说明性数据存储装置存储操作系统130的至少部分。说明性操作系统130包括PF驱动器132,PF驱动器132包括VF请求分析器134。说明性操作系统130、PF驱动器132和VF请求分析器134被体现为一个或多个计算机化程序、逻辑和/或指令(例如,软件和/或固件函数、例程、库和/或其它)。为了更快处理或其它原因,操作系统130、PF驱动器132和/或VF请求分析器134的各部分可在操作期间被拷贝到存储器116。
[0024]在一些实施例中,根据例如主机计算装置110的预期使用,I/O子系统118可按照通信方式耦合到一个或多个外围装置136,诸如显示器、触摸板、小键盘、麦克风、扬声器和/或其它。另外,应该理解,为了描述的清楚,主机计算装置110可包括图1中未图示的其它部件、子部件和装置。
[0025]网络138可被体现为任何类型的有线和/或无线电信网络。例如,网络138可被体现为或以其它方式包括一个或多个公共或私人蜂窝网络、电话、数字订户线路(DSL)或线缆网络、局域网或广域网、公开可用全球网络(例如,互联网)或其任何组合。例如,在一些实施例中,网络138可被体现为或以其它方式包括全球移动通信系统(GSM)蜂窝网络。另外,网络138可根据促进主机计算装置110和/或远程计算装置140、160 (诸如,路由器、交换机、中间计算机和/或其它)之间或之中的通信的需要而包括任何数量的另外的装置。根据例如网络138的特定类型或配置,任何合适的通信协议(例如,TCP/IP)可被用于通过网络138实现通信。
[0026]远程计算装置140、160可被体现为任何合适类型的计算机或其它电子装置。例如,远程计算装置140、160中的每一个或任何一个可被体现为以上在主机计算装置110和/或其它的描述中提及的计算装置的类型的任何一种。通常,远程计算装置140、160包括与以上关于主机计算装置110描述的硬件部件相似或类似的硬件部件(例如,处理器、存储器、I/O子系统、数据存储装置、通信电路)。说明性远程计算装置140、160各自包括至少一个处理器142、162。说明性处理器142、162包括至少一个处理器核144、164。除了一定量的高速缓存之外,处理器142、162各自包括存储器146、166,或者另外以通信方式耦合到存储器146、166。处理器142、162还以通信方式分别耦合到I/O子系统148、168。说明性I/O子系统148、168各自包括通信接口 150、170,并且以通信方式耦合到数据存储装置152、172。在一些实施例中,I/O子系统148、168可按照通信方式耦合到一个或多个外围装置154,174ο
[0027]通常,主机计算装置110和远程计算装置140、160的相应部件如图1中所示那样通过一个或多个信号路径以通信方式耦合。这种信号路径可被体现为能够促进相应装置之间的通信的任何类型的有线或无线信号路径。例如,信号路径可被体现为任何数量的导线、印刷电路板轨迹、过孔、总线、点对点互连、中间装置和/或其它。而且,一般而言,上面描述的计算装置的部件中的一些可被合并在母板上,而其它部件可经例如外围端口按照通信方式耦合到母板。
[0028]现在参照图2,说明性虚拟化软件执行环境200被建立在主机计算装置110上以执行I/O虚拟化。软件执行环境200包括虚拟机监视器(VMM)或管理程序232,VMM或管理程序232是特权软件部件,该特权软件部件促进和管理I/O子系统硬件242 (例如,通信端口126或通信接口 124的其它物理资源)的虚拟化并且可另外促进和管理主机计算装置110的其它物理资源(例如,存储器和/或处理器资源)的虚拟化。在说明性单根实施例中,VMM或管理程序232允许多个访客操作系统(I)…(L)(其中L是正整数)216,226和/或其它访客应用在分离的虚拟机VM(I)…(L)中在主机计算装置110上同时或逐次执行。在多根实施例中,VMM或管理程序232允许和管理在不同计算资源(例如,多个服务器)上同时或逐次执行的多个访客(例如,SI)。在说明性实施例中,VMM或管理程序232由操作系统130在主机计算装置110的高特权或“根”模式中执行。如此,VMM或管理程序232和它的子部件(例如,PF驱动器132和/或它的任何子模块)可具有对I/O子系统硬件资源242和/或主机计算装置110的其它硬件资源的基本上完全的控制。
[0029]虚拟机210、220作为访客在VMM 232上执行。也就是说,由VMM 232在低特权、非特权或非根模式中执行VM 210、220。因此,与较高特权操作系统130相比,访客操作系统216、226是较小特权操作系统。由VM 210、220中的每一个执行的操作系统可以相同或不同。在一些实施例中,操作系统130、216、226中的任何一个或多个可被体现为可从华盛顿的雷德蒙的微软公司商购获得的WINDOWS操作系统、可从许多销售商(诸如,北卡罗来纳的Raleigh的Red Hat)商购获得的LINUX操作系统、和/或其它。
[0030]操作系统216、226中的每一个可执行许多(J,K)虚拟功能(VF)驱动器212、214、222、224,并且基于相应的操作系统216、226、相应VM 210、220的预期使用和/或其它准则,VF驱动器212、214、222、224中的每一个或任何一个可以相似或不同。
[0031]VMM 232翻译每个操作系统216、226的操作以在每个操作系统216、226和I/O子系统硬件242和/或主机计算装置110的其它硬件(例如,存储器、处理器等)之间提供抽象等级。在说明性实施例中,VMM 232为每个操作系统216、226提供主机计算装置110的一些或全部硬件部件的硬件抽象218、228。
[0032]关于I/O虚拟化,说明性VMM 232提供物理I/O装置功能244 (例如,以太网端口)的硬件抽象作为共享I/o资源250或使物理I/O装置功能244 “虚拟化”为共享I/O资源250。在一些实施例中,I/O装置功能能够被抽象为两个功能类型:物理功能(PF)和虚拟功能(VF),可根据SR-1OV规范配置这两个功能类型。例如,PF可以是全网络通信(例如,PC1-Express)功能,该功能包括某些扩展能力以配置和管理I/O虚拟化功能,而VF可以是“轻型”或更受限的网络通信功能,该功能包含用于数据传递的必要资源但具有最小化的配置资源组。如上所提到的,PF 244具有对应PF驱动器132,并且每个VF (I)...(M) 246,248具有对应 VF 驱动器 212、214、222、224。VF 驱动器 212、214、222、224 实现相应 VM 210,220和PF驱动器132之间的通信(例如,数据的发送和接收)。
[0033]VF 246、248中的一个或多个由其中包括PF驱动器132 (还可被称为“主驱动器”)的VMM 232分派给每个VM 210、220。VMM 232的配置管理器或与VMM 232关联的配置管理器配置并且管理VF 246、248和它们关联的存储器资源。VMM 232也实现VF驱动器212、214、222、224和PF驱动器132之间的通信(例如,使用共享虚拟存储器页)。使VF驱动器212、214、222、224能够与PF驱动器132通信的一个或多个通信信道230能够是硬件和/或软件通信信道。例如,在一些实施例中,(一个或多个)通信信道230可包括PC1-Express装置和/或基于软件的地址翻译技术。
[0034]说明性PF驱动器132管理I/O子系统硬件242的全局功能并且配置共享资源250。PF驱动器132在VMM 232中执行,并且因此在比VF驱动器212、214、222、224操作的环境更有特权的环境中操作。PF驱动器132允许VMM 232访问共享I/O资源250并且能够执行影响整个I/O装置的操作。因此,PF驱动器132在持久的环境中执行,在任何VF驱动器之前被加载,并且在所有VF驱动器已被卸载之后被卸载。
[0035]配置说明性虚拟化I/O环境,以使得全局地影响所有VM 210,220的VF驱动器通信应该必须经过PF驱动器132,而低风险操作可被直接从VF驱动器212、214、222、224传送到I/O子系统硬件242。I/O子系统硬件242和虚拟化I/O环境之间的通信发生在一个或多个通信信道240上,在说明性实施例中,所述一个或多个通信信道240是硬件通信信道。
[0036]如上所提及的,PF驱动器132包括VF请求分析器子模块134。继而,说明性VF请求分析器子模块134包括VM剖析器(profiler)子模块234和VF禁用器子模块236。说明性VF请求分析器134、VM剖析器234和VF禁用器236被体现为计算机化模块、例程、过程等(例如,软件)。如以下参考图3进一步所述的,VM剖析器234创建并且保持每个VM 210、220的简档238,简档238包括与在相应的VM 210,220中运行的每个VF驱动器212、214、222,224关联的安全和/或性能属性。在操作中,当PF驱动器132从各个VF驱动器212、214、222、224接收通信(例如,对共享I/O资源250的请求)时,VF请求分析器134基于VM简档238的对应属性来分析通信并且根据简档属性确定通信有效还是无效。如果VF请求分析器134例如基于有效或无效通信的数量、频率或组合确定VF驱动器212、214、222、224可能例如从安全和/或性能角度受到损害,则VF禁用器236能够禁用受到损害的VF驱动器 212、214、222、224。
[0037]说明性VM简档238被实现为VF请求分析器134可在虚拟化环境200中访问的一个或多个数据存储。例如,在一些实施例中,VM简档238被体现为包括整数数组的软件数据结构,其中数组中的每个整数对应于PF驱动器132能够从特定VM或VF驱动器接收的某个类型的通信的允许的数量。简档238能够最初由系统管理员设置(例如,使用配置工具,诸如ethtool),或者“默认”简档238能够由软件设计者提供并且后来由系统管理员或由PF驱动器132修改。替代地或者附加地,VM简档238能够由PF驱动器132在运行时间动态地修改。例如,如果随着时间VF请求分析器134注意到来自特定VM的通信的某个模式,则该特定VM的VM简档238可在运行时间被修改。
[0038]在一些实施例中,与VM简档238关联的属性指定与不同请求类型关联的限制。在许多情况中,来自VF驱动器212、214、222、224的通信是访问或使用共享I/O资源250中的一个或多个的请求。不同类型的通信可具有不同的预先指定格式,并且VF请求分析器134能够被配置为基于通信是否符合预期格式来确定通信是否有效。PF驱动器可从VF驱动器接收的通信消息的类型的一些说明性例子包括:访问虚拟通信信道(或其它资源)的请求、PF驱动器为指定通信端口(例如,虚拟站接口或VSI)添加一个或多个单播或多播地址过滤器的请求、PF驱动器为指定通信端口(例如,VSI)去除一个或多个单播或多播过滤器的请求、PF驱动器为指定通信端口(例如,VSI)添加一个或多个虚拟局域网(VLAN)标记过滤器的请求、和PF驱动器为指定通信端口(例如,VSI)去除一个或多个VLAN标记滤波器的请求、和/或其它。
[0039]可被包含在VM简档238中的属性类型的一些说明性例子包括:对硬件资源请求的数量(总数和/或一定时间段上的数量)的限制、访问控制列表(例如,VM或VF驱动器被允许发送给PF驱动器的消息类型的列表,存储在计算机存储器中)、消息速度限制(例如,VM或VF驱动器能够在一定时间段上发送给PF驱动器的消息的最大数量)、对VM或VF驱动器能够发送给PF驱动器的“无特权”消息的数量(总数和/或一定时间段上的数量)的限制(其中“无特权”可指示特定消息或消息类型不在访问控制列表上)、对VM或VF驱动器能够发送给PF驱动器的有效但“错误形式”的消息的数量(总数和/或一定时间段上的数量)的限制(其中“错误形式”意味着消息不符合预期消息格式)、对有效但请求访问未分配资源的请求的数量的限制、和特定VM或VF驱动器被允许请求由PF驱动器添加或去除的过滤器(例如,媒体访问控制或MAC过滤器、VLAN过滤器和/或其它)的列表。可被包括在VM简档238中的其它类型的属性包括:对通信类型的特定组合的限制、对通信(有效通信或无效通信)的总数的限制和对VM或VF驱动器能够发送给PF驱动器的有效通信的总数(总数和/或一定时间段上的数量)的限制。能够针对给定VM中的所有VF驱动器定义属性,或者针对VM中的每个VF驱动器分别定义属性。替代地,能够针对所有VM以相同方式定义属性或者针对不同VM不同地定义属性。
[0040]现在参照图3,示出了可由VF请求分析器134的各种模块作为计算机化逻辑和/或指令执行的说明性方法300。在块310,方法300分析来自VF驱动器212、214、222、224的输入通信(例如,数据包和/或访问或使用共享资源250的请求),确定通信类型(例如,请求的类型),并且将通信与对应VM简档238的相关属性进行比较。
[0041]在块312,方法300基于为该特定通信类型指定的限制来确定输入通信是否有效。例如,如果消息格式不与预期格式对应,或者如果消息类型不在适用的访问控制列表上,或者消息请求未分配的资源或未允许的过滤器,则只要这种请求的数量未超过预定限制,通信就可以被确定为有效,或者通信可被确定为无效。
[0042]如果通信被确定为有效,则在块314,有效通信的数量的计数增加。类似地,如果通信被确定为无效,则在块316,该特定消息类型的无效消息的数量的计数增加。换句话说,能够针对不同类型的无效消息分别保持无效消息的计数。在示例性块318、320和322,方法300执行各种测试以确定发出通信的VF驱动器是否可能受到损害(例如,从安全和/或性能角度)并且因此应该被禁用。在块318,方法300确定计数是否超过在对应VM简档238中为该特定通信类型指定的限制。例如,如果通信在块312被确定为错误形式请求,则在块316,错误形式请求的计数增加,并且在块318,将错误形式请求计数的当前值与错误形式请求限制(或错误形式请求的最大数量)进行比较。
[0043]如果通信类型的计数的当前值超过指定限制,则该方法前进至块324。如果在块318,通信类型的计数的当前值未超过指定限制,则在块320,方法300确定计数是否超过指定时间段的指定限制。换句话说,块320评估PF驱动器从VF驱动器接收通信的速率是否太高(例如,以便可能防止拒绝服务攻击)。如果通信速率超过指定限制,则该方法前进至块324。如果在块320通信速率未超过指定限制,则在块322,该方法确定已由PF驱动器从VF驱动器接收的不同通信类型的组合是否指示VF驱动器可能受到损害(例如,基于一个或多个其它通信类型的计数以及当前接收的通信类型的计数的当前值)。本领域技术人员应该理解,由块318、320、322图示的测试是示例性的,并且可由方法300相似地执行其它测试以确定是否禁用VF驱动器。此外,应该理解,显示块318、320、322的特定次序是说明性的,并且不一定所有实施例都需要该特定次序。替代地,根据方法300的特定设计或实现方式的要求,可按照任何合适的次序执行由方法300执行以确定特定VM或VF驱动器是否可能受到损害的测试。
[0044]在块324,作为块318、320或322 (在其它实施例中,或者其任何组合或者其它测试)的结果,方法300禁用已被确定为可能(或实际上)受到损害的VF驱动器。为了禁用VF驱动器,方法300 (或者更具体地讲,PF驱动器132)重新配置受到损害的VF驱动器,以使得在PF驱动器未重新使能受到损害的VF驱动器的访问的情况下,受到损害的VF驱动器不能与(一个或多个)网络138或与I/O子系统硬件242交互。当被禁用时,受到损害的VF驱动器不能向PF驱动器132发送任何通信,并且因此不能影响其它VM和VF驱动器的I/O操作。然而,如果通信不满足禁用传送VF驱动器的任何条件,则在块326,方法300满足由VF驱动器发出的通信请求。为了满足VF驱动器的请求,PF驱动器132分配在经分析的通信中由VF驱动器请求的共享资源250。
[0045]例子
以下提供这里公开的装置、系统和方法的说明性例子。装置、系统和方法的实施例可包括以下描述的例子中的任何一个或多个和任何组合。
[0046]在例子中,一种输入/输出虚拟化使能计算装置包括:请求分析器,用于确定来自多个虚拟功能驱动器的通信是否呈现安全和/或性能条件,并且基于来自被确定为呈现安全和/或性能条件的虚拟功能驱动器的通信的计数数量确定是否禁用虚拟功能驱动器。
[0047]在例子中,所述计算装置可包括:虚拟功能剖析器,用于保持至少一个通信简档,所述至少一个通信简档包括与从虚拟化使能计算装置的虚拟功能驱动器到物理功能驱动器的通信相关的数据。在例子中,所述通信简档可识别虚拟功能驱动器被允许发送给物理功能驱动器的通信的一个或多个类型。在例子中,所述通信简档可包括与虚拟功能驱动器可发送给物理功能驱动器的通信的类型相关的至少一个限制。在例子中,所述通信简档可包括与在一定时间段期间虚拟功能驱动器被允许发送给物理功能驱动器的任何类型的通信的数量相关的限制。在例子中,所述通信简档可包括与虚拟功能驱动器被允许发送给物理功能驱动器的对一个或多个对物理资源的请求相关的数据。在例子中,所述计算装置可包括至少一个计算机可访问存储介质,并且虚拟功能剖析器可在所述至少一个计算机可访问存储介质中被体现为软件模块。在例子中,所述计算装置可包括:虚拟功能禁用器,用于响应于确定来自虚拟功能驱动器的通信的计数数量呈现安全和/或性能条件而禁用虚拟功能驱动器。在例子中,所述虚拟功能禁用器可确定:由物理功能驱动器从虚拟功能驱动器接收的、呈现安全和/或性能条件的通信的计数数量是否超过呈现安全和/或性能条件的通信的允许数量。在例子中,所述虚拟功能禁用器可响应于确定由物理功能驱动器接收的、呈现安全和/或性能条件的通信的计数数量超过呈现安全和/或性能条件的通信的允许数量而禁用虚拟功能驱动器。在例子中,所述计算装置可包括至少一个计算机可访问存储介质,并且虚拟功能禁用器可在所述至少一个计算机可访问存储介质中被体现为软件模块。
[0048]在例子中,所述计算装置可包括至少一个计算机可访问存储介质,并且物理功能驱动器可在所述至少一个计算机可访问存储介质中被体现为软件模块。在例子中,所述计算装置可包括用于保持虚拟功能驱动器的简档的虚拟功能剖析器和用于基于简档禁用虚拟功能驱动器的虚拟功能禁用器,并且虚拟功能剖析器和虚拟功能禁用器可被体现为物理功能驱动器的软件子模块。在例子中,所述请求分析器可在计算装置的较高特权执行环境中运行,并且虚拟功能驱动器各自在计算装置的较低特权环境中运行。在例子中,所述计算装置可包括用于从虚拟功能驱动器接收通信的通信通道,并且通信通道可包括软件通信通道和硬件通信通道中的至少一个。
[0049]在另一例子中,一种用于处理从输入/输出虚拟化使能计算装置的多个虚拟功能驱动器到物理功能驱动器的通信的方法包括:在计算装置处,保持多个通信简档,每个通信简档包括和虚拟功能驱动器与物理功能驱动器的通信相关的数据;基于与虚拟功能驱动器对应的通信简档的至少部分来确定从虚拟功能驱动器到物理功能驱动器的通信是否呈现安全和/或性能条件;对从虚拟功能驱动器到物理功能驱动器的通信进行计数;以及基于所计数的从虚拟功能驱动器到物理功能驱动器的通信确定是否禁用虚拟功能驱动器。
[0050]在例子中,所述方法可包括:对呈现安全和/或性能条件的、从虚拟功能驱动器到物理功能驱动器的通信进行计数。在例子中,所述方法可包括:基于所计数的呈现安全和/或性能条件的通信确定是否禁用虚拟功能驱动器。在例子中,所述通信简档中的至少一个可包括与错误形式通信的允许数量相关的数据。在例子中,所述通信简档中的至少一个可包括与通信是否被列出在访问控制列表上相关的数据。在例子中,所述通信简档中的至少一个可包括与通信是否请求访问计算装置的未分配资源相关的数据。在例子中,所述通信简档中的至少一个可包括与被允许由通信设置的过滤器相关的数据。
[0051]在例子中,所述方法可包括:基于从虚拟功能驱动器发送给物理功能驱动器的某个类型的通信的数量禁用虚拟功能驱动器。在例子中,所述方法可包括:对从虚拟功能驱动器到物理功能驱动器的第一类型的通信进行计数,对从虚拟功能驱动器到物理功能驱动器的第二类型的通信进行计数,并且基于所计数的第一类型的通信和所计数的第二类型的通信来确定是否禁用虚拟功能驱动器。在例子中,所述方法可包括:对从虚拟功能驱动器到物理功能驱动器的所允许的通信进行计数,并且基于所计数的从虚拟功能驱动器到物理功能驱动器的所允许的通信确定是否禁用虚拟功能驱动器。在例子中,一种计算装置可包括:至少一个处理器;和计算机电路,耦合到所述至少一个处理器,并且计算机电路可被布置为使所述至少一个处理器执行任何前面的方法。在例子中,至少一个计算机可访问存储介质可包括多个指令,响应于执行所述多个指令,所述多个指令导致计算装置执行任何前面的方法。
[0052]在例子中,至少一个计算机可访问存储介质包括多个指令,响应于执行所述多个指令,所述多个指令导致计算装置:保持多个通信简档,其中每个通信简档包括和虚拟功能驱动器与物理功能驱动器的通信相关的数据;基于与虚拟功能驱动器对应的通信简档的至少部分来确定从虚拟功能驱动器到物理功能驱动器的通信是否呈现安全和/或性能条件;对从虚拟功能驱动器到物理功能驱动器的通信进行计数;以及基于所计数的从虚拟功能驱动器到物理功能驱动器的通信的数量,确定是否禁用虚拟功能驱动器。
[0053]在例子中,所述通信简档中的一个或多个可包括与下面各项中的至少一个相关的数据:错误形式通信的允许数量、通信是否被列出在访问控制列表上、通信是否请求访问计算装置的未分配资源、以及被允许由通信设置的过滤器。在例子中,所述指令可导致计算装置:基于所计数的从虚拟功能驱动器发送给物理功能驱动器的某个类型的通信禁用虚拟功能驱动器。在例子中,所述指令可导致计算装置:对从虚拟功能驱动器到物理功能驱动器的第一类型的通信进行计数,对从虚拟功能驱动器到物理功能驱动器的第二类型的通信进行计数,以及基于所计数的第一类型的通信和所计数的第二类型的通信确定是否禁用虚拟功能驱动器。在例子中,所述指令可导致计算装置:对从虚拟功能驱动器到物理功能驱动器的所允许的通信进行计数,并且基于所计数的从虚拟功能驱动器到物理功能驱动器的所允许的通信确定是否禁用虚拟功能驱动器。
[0054]尽管已在附图和前面的描述中详细地图示和描述了本公开的概念,但这种图示和描述在本质上要被视为是示例性的而非限制性的,应该理解,仅示出和描述了说明性实施例,并且希望保护符合本公开和叙述的权利要求的所有改变和修改。例如,可在SR-1OV规范或其它相似规范的情况下实现本公开的各方面,但不受此限制。进一步地,可在任何I/O虚拟化情况(包括单根和多根环境)中应用本公开的各方面,其中希望保护更大的虚拟化环境免于其受到损害的个体部件。
【权利要求】
1.一种输入/输出虚拟化使能计算装置,包括: 请求分析器,用于确定来自多个虚拟功能驱动器的通信是否呈现安全和/或性能条件,并且基于来自被确定为呈现安全和/或性能条件的虚拟功能驱动器的通信的数量确定是否禁用虚拟功能驱动器。
2.如权利要求1所述的计算装置,包括:虚拟功能剖析器,用于保持至少一个通信简档,所述至少一个通信简档包括与从所述虚拟化使能计算装置的虚拟功能驱动器到物理功能驱动器的通信相关的数据。
3.如权利要求2所述的计算装置,其中所述通信简档识别虚拟功能驱动器被允许发送给物理功能驱动器的通信的一个或多个类型。
4.如权利要求2或权利要求3所述的计算装置,其中所述通信简档包括与虚拟功能驱动器可发送给物理功能驱动器的通信的类型相关的至少一个限制。
5.如权利要求2-4中任何一项所述的计算装置,其中所述通信简档包括与在一定时间段期间虚拟功能驱动器被允许发送给物理功能驱动器的任何类型的通信的数量相关的限制。
6.如权利要求2-5中任何一项所述的计算装置,其中所述通信简档包括与虚拟功能驱动器被允许发送给物理功能驱动器的一个或多个对物理资源的请求相关的数据。
7.如权利要求2-6中任何一项所述的计算装置,包括:至少一个计算机可访问存储介质,其中所述虚拟功能剖析器在所述至少一个计算机可访问存储介质中被体现为软件模块。
8.如任一前面权利要求所述的计算装置,包括:虚拟功能禁用器,用于响应于确定来自虚拟功能驱动器的通信的数量呈现安全和/或性能条件而禁用虚拟功能驱动器。
9.如权利要求8所述的计算装置,其中所述虚拟功能禁用器确定:由物理功能驱动器从虚拟功能驱动器接收的、呈现安全和/或性能条件的通信的数量是否超过呈现安全和/或性能条件的通信的允许数量。
10.如权利要求9所述的计算装置,其中所述虚拟功能禁用器响应于确定由物理功能驱动器接收的、呈现安全和/或性能条件的通信的数量超过呈现安全和/或性能条件的通信的允许数量而禁用虚拟功能驱动器。
11.如权利要求8-10中任何一项所述的计算装置,包括:至少一个计算机可访问存储介质,其中所述虚拟功能禁用器在所述至少一个计算机可访问存储介质中被体现为软件模块。
12.如任一前面权利要求所述的计算装置,包括:至少一个计算机可访问存储介质,其中所述物理功能驱动器在所述至少一个计算机可访问存储介质中被体现为软件模块。
13.如权利要求12所述的计算装置,包括:用于保持虚拟功能驱动器的简档的虚拟功能剖析器和用于基于所述简档而禁用虚拟功能驱动器的虚拟功能禁用器,其中所述虚拟功能剖析器和虚拟功能禁用器被体现为物理功能驱动器的软件子模块。
14.如任一前面权利要求所述的计算装置,其中所述请求分析器在计算装置的较高特权执行环境中运行,并且虚拟功能驱动器各自在计算装置的较低特权环境中运行。
15.如任一前面权利要求所述的计算装置,包括:通信通道,用于从虚拟功能驱动器接收通信,其中所述通信通道包括软件通信通道和硬件通信通道中的至少一个。
16.一种用于处理从输入/输出虚拟化使能计算装置的多个虚拟功能驱动器到物理功能驱动器的通信的方法,所述方法包括,在计算装置处: 保持多个通信简档,每个通信简档包括和虚拟功能驱动器与物理功能驱动器的通信相关的数据; 基于与虚拟功能驱动器对应的通信简档的至少部分来确定从虚拟功能驱动器到物理功能驱动器的通信是否呈现安全和/或性能条件; 对从虚拟功能驱动器到物理功能驱动器的通信的数量进行计数;以及 基于所计数的从虚拟功能驱动器到物理功能驱动器的通信的数量,确定是否禁用虚拟功能驱动器。
17.如权利要求16所述的方法,包括:对呈现安全和/或性能条件的、从虚拟功能驱动器到物理功能驱动器的通信的数量进行计数。
18.如权利要求17所述的方法,包括:基于呈现安全和/或性能条件的通信的数量,确定是否禁用虚拟功能驱动器。
19.如权利要求16-18中任何一项所述的方法,其中所述通信简档中的至少一个包括与错误形式通信的允许数量相关的数据。
20.如权利要求16-19中任何一项所述的方法,其中所述通信简档中的至少一个包括与通信是否被列出在访问控制列表上相关的数据。
21.如权利要求16-20中任何一项所述的方法,其中所述通信简档中的至少一个包括与通信是否请求访问计算装置的未分配资源相关的数据。
22.如权利要求16-21中任何一项所述的方法,其中所述通信简档中的至少一个包括与被允许由通信设置的过滤器相关的数据。
23.如权利要求16-22中任何一项所述的方法,包括:基于从虚拟功能驱动器发送给物理功能驱动器的某个类型的通信的数量来禁用虚拟功能驱动器。
24.如权利要求16-23中任何一项所述的方法,包括:对从虚拟功能驱动器到物理功能驱动器的第一类型的通信的数量进行计数,对从虚拟功能驱动器到物理功能驱动器的第二类型的通信的数量进行计数,以及基于第一类型的通信的数量和第二类型的通信的数量确定是否禁用虚拟功能驱动器。
25.如权利要求16-24中任何一项所述的方法,包括:对从虚拟功能驱动器到物理功能驱动器的所允许的通信的数量进行计数,并且基于从虚拟功能驱动器到物理功能驱动器的所允许的通信的数量确定是否禁用虚拟功能驱动器。
26.一种计算装置,包括: 至少一个处理器;和 计算机电路,耦合到所述至少一个处理器,所述计算机电路被布置为使所述至少一个处理器执行如权利要求16-25中任何一项所述的方法。
27.至少一个计算机可访问存储介质,包括多个指令,响应于执行所述多个指令,所述多个指令导致计算装置执行如权利要求16-25中任何一项所述的方法。
【文档编号】G06F9/455GK104321781SQ201380027883
【公开日】2015年1月28日 申请日期:2013年6月24日 优先权日:2012年6月29日
【发明者】N.R.贾尼, S.L.纳尔逊, G.D.卡明斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1