CN102202049B - 用于多虚拟机设备的网络策略实现 - Google Patents

用于多虚拟机设备的网络策略实现 Download PDF

Info

Publication number
CN102202049B
CN102202049B CN201110076194.XA CN201110076194A CN102202049B CN 102202049 B CN102202049 B CN 102202049B CN 201110076194 A CN201110076194 A CN 201110076194A CN 102202049 B CN102202049 B CN 102202049B
Authority
CN
China
Prior art keywords
network
virtual machine
strategy
computing equipment
network strategy
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.)
Expired - Fee Related
Application number
CN201110076194.XA
Other languages
English (en)
Other versions
CN102202049A (zh
Inventor
R·夏普
D·斯科特
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.)
Citrix Systems Inc
Original Assignee
Citrix Systems 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 Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN102202049A publication Critical patent/CN102202049A/zh
Application granted granted Critical
Publication of CN102202049B publication Critical patent/CN102202049B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • 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
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0894Policy-based network configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • 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/45583Memory management, e.g. access or allocation
    • 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/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)

Abstract

用于多虚拟机设备的网络策略实现包括通过应用网络策略到计算设备的虚拟化环境中的现有网络配置中来选择网络实现的方法。在虚拟化环境中执行的控制程序接收由虚拟机响应于生命周期事件产生的事件通知。响应于接收通知,控制程序调用策略引擎,该策略引擎应用网络策略到虚拟化环境的现有网络配置。该网络策略可相应于虚拟机或连接到该虚拟机的虚拟接口对象的网络对象。接着策略引擎识别具有符合所述网络策略的属性的现有网络配置,并且选择符合所述网络策略和网络配置的网络实现。

Description

用于多虚拟机设备的网络策略实现
技术领域
本申请总的涉及建立网络实现。本申请尤其涉及使用网络策略在虚拟化环境中建立网络实现。
背景技术
在许多虚拟化环境中,虚拟机联网策略是由系统管理员进行显示配置的,这些策略指示哪些网络可被虚拟机使用,哪些接口可被虚拟机用来建立网络以及虚拟机的网络安全策略。当虚拟化系统包括最小量的虚拟机,例如单个虚拟机时,通常可很容易地将网络策略硬编码到该虚拟化系统中。
当虚拟化环境包括多个虚拟机,显示和可预测地配置每个虚拟机是很困难的。配置每个虚拟机和管理联网配置所需的事件是非常多的。而且,管理每个联网配置和确保每个合适的安全策略被实施可能是繁重的。
一些系统中包括虚拟化环境,其中单台计算机上的虚拟机与本机上的其他虚拟机使用本地网络通信。在这些系统中,在那台计算机上有本地网络且不延伸到在不同计算机上的执行的其他虚拟机。在一些情况下,两台计算机通过本地网络连接,因此存在执行在这些计算机上的虚拟机之间能通过本地网络互相通信的需要。尽管一些系统支持执行在不同计算机上的虚拟机之间的本地网络,但通常要求为每台虚拟机单独配置网络。在这些系统中,管理员必须为每个虚拟机确定安全策略,接着使用该安全策略要求配置每个虚拟机。
因此需要一种解决多虚拟机环境中的网络配置的系统和方法。这样的系统和方法可以非显示地配置网络以及可使用多个不同的网络拓扑来为虚拟环境中的一个或多个虚拟机实现网络连接。而且,这样的系统可使用网络策略而不是为虚拟化环境中的每个虚拟机或者设备明确配置安全策略的方式来为特定设备或虚拟机指定安全要求。
发明内容
从最广义的意义上,本发明描述了使用网络策略创建网络组件和根据安全要求配置这些网络组件的方法和系统。使用网络策略而不是为虚拟化环境中每个虚拟机单独地创建或配置网络组件,这允许管理员可以动态配置网络而不是为每个虚拟机显示地配置网络拓扑。网络策略典型地是可移植性更强的并且不要求对虚拟化环境中的应用层作出改变。
在一个方面,此处描述了通过应用网络策略到计算设备的虚拟化环境内的现有网络配置来选择网络实现的方法。在计算设备上的虚拟化环境中执行的控制程序接收由虚拟机响应于生命周期事件产生的事件通知。响应于接收事件通知,控制程序调用应用网络策略到虚拟化环境中的现有网络配置的策略引擎。网络策略可相应于虚拟机、虚拟机的网络接口、或网络。接着,策略引擎识别具有符合该网络策略的属性的现有网络配置,并且选择符合该网络配置和网络策略的网络实现。
在一些实施例中,虚拟机可包括相应于包含网络策略的网络对象的虚拟接口对象。
在其他实施例中,事件通知可响应于诸如启动虚拟机、迁移虚拟机,重启虚拟机、或停止虚拟机的生命周期事件而发生。
在一个实施例中,控制程序可识别包括虚拟接口对象和网络对象的一个或多个网络配置。其中识别一个或多个网络配置可包括解析控制程序的工具堆栈的元数据。
在其他实施例中,事件通知可响应于请求执行服务器的生命周期事件而产生。可部分地基于虚拟机的网络策略来选择该执行服务器。
在一些实施例中,所应用的网络策略可指定网络通信是否要求加密。在其他实施例中,所应用的网络策略限制本地网络到单台主机。仍在另一个实施例中,网络策略指定用于传送网络通信一个或多个物理接口。
在其他方面,此处描述了通过应用网络策略到计算设备的虚拟化环境中的现有网络配置来选择网络实现的系统。该系统可包括在虚拟化环境中执行控制程序和策略引擎的计算设备。虚拟机可响应于生命周期事件产生事件通知。在一些情况下,控制程序接收该事件通知并响应于接收事件通知来调用策略引擎。该策略引擎可应用网络策略到虚拟化环境中现有的网络配置,其中网络策略相应于虚拟机。接着,策略引擎可识别至少一个具有符合网络策略的属性的现有网络配置,并且选择符合该网络策略和网络配置的网络实现。
附图说明
在下面的附图描述了此处描述的系统和方法的某些示意性实施例,其中相同的附图标记涉及相同的元件。这些所描述的实施例应被理解所公开的方法和系统的示意性说明,而不是对于本申请的任何限制。
图1A描述了提供对可执行应用程序的计算设备的远程访问的网络环境的实施例;
图1B和图1C是描述计算设备的实施例的框图;
图2A和图2B是描述虚拟化环境的实施例的框图;
图3A-3B是描述实现网络策略引擎的虚拟化环境的实施例的框图;
图4A是描述选择网络实现的方法的实施例的流程图。
具体实施方式
图1A描述了计算环境101的一个实施例,该计算环境包括与一个或多个服务器106A-106N(总的称为“服务器106”)通信的一个或多个客户机102A-102N(总的称为“客户机102”)。网络被安装在客户机102与服务器106之间。
在一个实施例中,计算环境101可包括安装在服务器106和客户机102之间的设备。这个设备可管理客户机/服务器连接,并且在一些情况下可在多个后端服务器之间负载平衡客户机连接。
客户机102在一些实施例中可被认为是单个客户机102或客户机102的一个组,而服务器106可被认为是单个服务器106或服务器106的一个组。在一个实施例中,单个客户机102可与不只一个服务器106通信,而在另一个实施例中,单个服务器106可与不只一个客户机102通信。仍在另一个实施例中,单个客户机102与单个服务器106通信。
在一些实施例中,客户机102可被称为下面术语中的任何一个:客户机102、客户端、客户计算机、客户设备、客户计算设备、本地机器、远程机器、客户节点、端点、端节点或第二机器。在一些实施例中,服务器106可被称为下列术语中的任何一个:服务器、本地机器、服务器群、主计算设备或第一机器。
在一个实施例中,客户机102可以是虚拟机102C。虚拟机102C可以是任何虚拟机,而在一些实施例中虚拟机102C可以是由XenSolution、CitrixSystems、IBM、VMware公司开发的虚拟机监控程序或任何其他虚拟机监控程序管理的任何虚拟机。在其他实施例中,虚拟机102C可以由任何虚拟机监控程序管理,而仍在其他实施例中,虚拟机102C可由在服务器106上执行的虚拟机监控程序或在客户机102上执行的虚拟机监控程序管理。
在一些实施例中,客户机102可以执行、操作或者以其它方式提供应用,该应用可为下列应用中的任何一个:软件、程序、可执行指令、虚拟机、虚拟机监控程序、web浏览器、基于web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、Java小程序、与类似软IP电话的网络电话(VoIP)通信相关的软件、流式传输视频和/或音频的应用、促进实时数据通信的应用、HTTP客户机、FTP客户机、Oscar客户机、Telnet客户机或可执行指令的任何其他集合。仍在其他实施例中包括显示由在服务器106或其他位于远程的机器上远程执行的应用所产生的应用输出的客户设备102。在这些实施例中,客户设备102可以在应用窗口、浏览器或其他输出窗口中显示应用输出。在一个实施例中,应用是桌面,而在其他实施例中,应用是产生桌面的应用。
在一些实施例中,服务器106执行远程呈现客户端或其他客户端或程序,这些客户端或程序使用瘦客户端或远程显示协议来捕获由在服务器106上执行的应用产生的显示输出并且将应用显示输出传输到远程客户机102。瘦客户端或远程显示协议可以是下列协议的任何一个:由位于Ft.LauderdaleFlorida的Citrix Systems公司制造的独立计算架构(ICA)协议;或由位于Washington,Redmond的Microsoft公司制造的远程桌面(RDP)协议。
计算环境101可包括不只一个服务器106A-106N,这样的服务器106A-106N逻辑上一起聚合到服务器群106中。服务器群106可包括地理上分散并且逻辑上一起聚合到服务器群106中的服务器106,或者互相之间位置接近的并且逻辑上一起聚合到服务器群106中的服务器106。在一些实施例中,服务器群106中地理上分散的服务器106A-106N可使用WAN、MAN或LAN通信,其中不同地理区域可以被表征为:不同大陆、大陆的不同地区、不同国家、不同州、不同城市、不同校园、不同房间、或前述地理位置的任何组合。在一些实施例中,服务器群106可以作为单个实体被管理,而在其它实施例中,服务器群106可包括多个服务器群106。
在一些实施例中,服务器群106可包括执行实质上类似的类型的操作系统平台(例如,由Washington,Redmond的Microsoft公司制造的WINDOWS NT、Unix、Linux或SNOW LEOPARD)。在其他实施例中,服务器群106可包括执行第一类型操作系统平台的第一组服务器106和执行第二类型操作系统平台的第二组服务器106。在其他实施例中,服务器群106可包括执行不同类型操作系统平台的服务器106。
在一些实施例中,服务器106可为任何服务器类型。在其他实施例中,服务器106可以是下列服务器类型的任何一个:文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器、防火墙、应用服务器或主应用服务器、执行活动目录的服务器106、或者执行提供防火墙功能、应用功能或负载平衡功能的应用加速程序的服务器106。在一些实施例中,服务器106可以是包含远程认证拨入用户服务的RADIUS服务器。在服务器106包括设备的实施例中,服务器106可以是由下列制造商的任何一个制造的设备:Citrix应用网络组、Silver Peak Systems公司、Riverbed Thechnology公司、F5 Networks公司、或Juniper NetWorks公司。一些实施例中包括第一服务器106A,其接收来自客户机102的请求、转发该请求到的第二服务器106B,以及使用来自第二服务器106B的响应来对客户机102所产生的请求进行响应。第一服务器106A可获得对客户机102可用的应用列表,以及与寄载应用列表中所识别的应用的应用服务器106相关的地址信息。第一服务器106A还可使用web接口对客户机请求提供响应,并直接与客户机102通信以向客户机102提供对所识别应用的访问。
在一些实施例中,服务器106可执行下列应用中的任何一个:使用瘦客户端协议传输应用显示数据到客户机的瘦客户端应用、远程显示呈现应用、Citrix Systems公司的CITRIX ACCESS SUITE的任何部分,诸如METAFRAM或者CITRIX PRESENTATION SERVER;Microsoft公司制造的MICROSOFT WINDOWS终端服务或由Citrix Systems公司开发的ICA客户端。另一个实施例中包括是诸如下列应用服务器的服务器106:提供电子邮件服务的邮件服务器,例如由Microsoft公司制造的MICROSOFT EXCHANGE;web或Internet服务器、桌面共享服务器,协同服务器或任何其他类型的应用服务器。仍在其他实施例中服务器106执行下列类型的所寄载的服务器应用的任何一个:Citrix Online Division公司提供的GOTOMEETING、位于California,SantaClara的WebEx公司提供的WEBEX,或者Microsoft公司提供的MicrosoftOffice LIVE MEETING。
在一些实施例中,客户机102可以是寻求访问服务器106提供的资源的客户机节点。在其他实施例中,服务器106可为客户机102或客户机节点提供对所寄载的资源的访问。在一些实施例中,服务器106作为主节点运行,这样它可与一个或多个客户机102或服务器106通信。在一些实施例中,主节点可识别并且向一个或多个客户机102或服务器106提供与寄载所请求的应用的服务器106相关的地址信息。仍在其他实施例中,主节点可以是服务器群106、客户机102、客户机节点102的集群或设备。
一个或多个客户机102和/或一个或多个服务器106可以在被安装在计算环境中的机器和设备之间的网络104上传输数据。网络104可包括一个或多个子网,且可被安装在客户机102、服务器106和被包含在计算环境101中的计算机器和设备的任何组合之间。在一些实施例中网络104可以是:局域网(LAN)、城域网(MAN)、广域网(WAN),包括位于客户机102和服务器106之间的多个子网104的主网104、具有专用子网104的主公共网104、具有公共子网104的主专用网104或者具有专用子网104的主专用网104。仍在进一步的实施例中网络104可以是任何的下列网络类型:点对点网络、广播网络、电信网络、数据通信网络、计算机网络、ATM(异步传输模式)网络、SONET(同步光纤网络)网络、SDH(同步数字体系)网络、无线网络、有线网络或包括诸如红外信道或者卫星频带无线链路的网络104。网络104的拓扑在不同的实施例中可以不同,可能的网络拓扑包括:总线型网络拓扑、星型网络拓扑、环型网络拓扑、基于中继器的网络拓扑或者分层星型网络拓扑。其他的实施例中包括使用协议在移动设备间通信的移动电话网络的网络104,其中,协议可以是下列协议的任何一个:AMPS、TDMA、CDMA、GSM、GPRSUMTS或可在移动设备间传输数据的其他任何协议。
图1B所示是计算设备100的实施例,其中如图1A所示的客户机102和服务器106可以被部署为和/或被执行在此处所描述和图示的计算设备100的任何实施例上。被包含在计算设备100中的系统总线150可以和下列组件通信:中央处理单元121、主存储器122、存储装置128、输入输出(I/O)控制器123、显示设备124A-124N、安装设备116和网络接口118。在一个实施例中存储装置128包括:操作系统、软件程序和客户机代理120。在一些实施例中,I/O控制器123还连接到键盘126和定位设备127。其他实施例中可包括连接到不只一个输入输出设备130A-130N的I/O控制器123。
图1C描述了计算设备100的一个实施例,其中如图1A所示的客户机102和服务器106可以被部署为和/或被执行在此处所描述和图示的计算设备100的任何实施例上。被包含在计算设备100中的系统总线150可以和下列组件通信:桥170和第一I/O设备130A。在另一个实施例中,桥170还和主中央处理单元121通信,其中中央处理单元121可进一步与第二I/O设备130B、主存储器122和缓冲存储器140通信。I/O端口、存储器端口103和主处理器被包含在中央处理单元121中。
在计算设备100的实施例中可包括被下列组件配置的任何一个表征的中央处理单元121:响应并处理从主存储器单元122取出的指令的逻辑电路;微处理器单元,诸如:由Intel公司制造的微处理器单元;由Motorola公司制造的微处理器单元;由Califirnia,Santa Clara的Transmeta公司制造的微处理器单元;诸如International Business Machines公司制造的RS/6000处理器;由Advanced Micro Devices公司制造的处理器;或逻辑电路的任何其他组合。仍在中央处理单元122的其他实施例可包括下列任何组合:微处理器、微控制器、具有单处理核的中央处理单元、具有两个处理核的中央处理单元或具有不只一个处理核的中央处理单元。
尽管图1C描述了包括单个中央处理单元121的计算设备,但在一些实施例中计算设备100可包括一个或多个处理单元121。在这些实施例中,计算设备100可存储和执行固件或其他可执行指令,这些固件或指令在被执行时,指引一个或多个处理单元121来同时执行指令或同时在一个数据片上执行指令。在其他实施例中,计算设备100可存储和执行固件或其他可执行指令,这些固件或指令在被执行时,指引一个或多个处理单元121各自执行一组指令的一部分。例如每个处理单元121可被指示执行程序的一部分或者程序中的特定模块。
在一些实施例中,处理单元121可包括一个或多个处理核。例如处理单元121可有两个核、四个核、8个核等。在一个实施例中,处理单元121可包括一个或多个并行处理核。在一些实施例中处理单元121的处理核可访问作为全局地址空间的可利用内存、或在其他实施例中,计算设备100的存储器可被分段并分配到处理单元121的特定核。在一个实施例中,计算设备100中的一个或多个处理核或处理器可各自访问本地存储器。仍在又一个实施例中,计算设备100的存储器可在一个或多个处理器或处理核之间共享,而其他存储器可被特定处理器或处理器子集访问。在计算设备100包括不只一个处理单元的实施例中,多个处理单元可被包含在单个集成电路(IC)中。在一些实施例中,这些多个处理器可通过内部高速总线连接在一起,该总线可被称为元件互联总线。
在计算设备100包括一个或多个处理单元121,或处理单元121包括一个或多个处理核的实施例中,处理器可同时在多片数据上执行单个指令(SIMD),或在其他实施例中处理器可同时在多片数据上执行多个指令(MIMD)。在一些实施例中,计算设备100可包括任意数量的SIMD和MIMD处理器。
在一些实施例中,计算设备100可包括图像处理器或图形处理单元(未示出)。图形处理单元可包括软件和硬件的任何组合,并且还可输入图形数据和图形指令、从所输入的数据和指令渲染图形和输出所渲染的图形。在一些实施例中,图形处理单元可被包含在处理单元121的内部。在其他实施例中,计算设备100可包括一个或多个处理单元121,其中至少一个处理单元121被专用于处理和渲染图形。
在计算设备100的一个实施例中包括通过也称为背侧总线的第二总线与缓冲存储器140通信的中央处理单元,而在计算设备100的又一个实施例中包括使用系统总线150与缓冲存储器140通信的中央处理单元121。在一些实施例中,本地系统总线150也被中央处理单元所使用来与多种类型的I/O设备130A-130N进行通信。在一些实施例中,本地系统总线150可以是下列类型总线的任何一个:VESA VL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。计算设备100的其他实施例中包括是与中央处理单元121通信的视频显示器124的I/O设备130A-130N。仍在计算设备100的其他形式中包括通过下列连接的任何一个连接到I/O设备130A-130N的处理器121,这些连接如下:。超传输(HyperTransport)、快速I/O或者InfiniBand。计算设备100的进一步的实施例包括处理器121,该处理器使用本地互连总线与一个I/O设备130A进行通信,并使用直接连接与第二I/O设备130B进行通信。
在一些实施例中,计算设备100包括主存储器单元122和缓冲存储器140。缓冲存储器140可以是任何存储器类型,且在一些实施例中可以是下列类型存储器的任何一个:SRAM、BSRAM或EDRAM。其他实施例中包括的缓冲存储器140和主存储器单元122,可以是下列类型存储器的任何一个:静态随机访问存储器(SRAM)、Burst(脉冲串)SRAM或SynchBurst SRAM(BSRAM)、动态随机访问存储器DRAM、快速页模式DRAM(FPM DRAM)、增强DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、脉冲串扩展数据输出DRAM(BEDO DRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100 SDRAM、双数据传输率SDRAM(DDR SDRAM)、增强SRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)、铁电RAM(FRAM)或任何其他类型的存储器。进一步的实施例包括可通过下列方式访问主存储器122的中央处理单元121,这些方式包括:系统总线150、存储器端口103、或允许处理器121访问存储器122的其他连接、总线或端口。
计算设备100的一个实施例支持下列安装设备116的任何一个:CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB设备、可引导介质、可引导CD、诸如KNOPPIX
Figure BSA00000461769500091
的用于GNU/Linux分发的可引导CD、硬盘驱动器或适于安装应用或软件的任意其它设备。在一些实施例中应用可包括客户机代理120或客户机代理120的任意部分。计算设备100还可以包括可以是一个或者多个硬盘驱动器或者独立磁盘冗余阵列的存储设备128,这里存储设备被配置为存储操作系统、软件、程序应用、或者至少客户机代理120的一部分。计算设备100的进一步实施例中包括用作存储设备128的安装设备116。
计算设备100还可包括网络接口118以通过多种连接,包括但不限于标准电话线路、LAN或WAN链路(例如802.11,T1,T3、56kb、X.25、SNA、DECNET)、宽带连接(如ISDN、帧中继、ATM、千兆以太网、SONET上以太网(Ethernet-over-SONET))、无线连接、或上述任意或全部的一些组合,来连接到局域网(LAN)、广域网(WAN)或因特网。使用多种通信协议(例如TCP/IP、IPX、SPX、NetVIOS、Ehernet、ARCNET、SONET、SIDH、光纤分布数据接口(FDDI)、RS232、RS485、IEEE802.11、IEEE802.11aIEEE802.11b、IEEE802.11g、CDMA、GSM、WiMax和直接异步连接)也可建立连接。计算设备100的一个形式包括可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS),或Citrix Systems公司制造的Gitrix网关协议的隧道协议来与其他计算设备100’通信的网络接口118。网络接口118的形式可以包括内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算设备100连接到能够通信并执行这里所描述的方法和系统的网络的任意其它设备中的任何一个。
计算设备100的实施例包括下列I/O设备130A-130N的任何一个:键盘126、定位设备127、鼠标、触控板、光笔、轨迹球、话筒、绘图板、视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机、或可执行此处描述的方法和系统的任何其他输入/输出设备。在一些实施例中I/O控制器123可连接多个I/O设备130A-130N以便控制一个或多个I/O设备。I/O设备130A-130N的一些实施例被配置为提供存储或安装介质116,而其他实施例可为接收诸如由Twintech Industry公司制造的设备的USB闪存驱动线的USB存储设备提供通用串行总线(USB)。仍在其他实施例中I/O设备130可以是系统总线150和外部通信总线,如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线或串行SCSI总线之间的桥。
在一些实施例中,计算设备100可以连接多个显示设备124A-124N,在其他实施例中计算设备100可以连接单个显示设备124,而仍在其他实施例中计算设备100可以连接相同类型或形式的显示设备124A-124N或不同的类型或形式的显示设备。显示设备124A-124N的实施例可被如下方式支持和允许:一个或多个I/O设备130A-130N、I/O控制器123、I/O设备130A-130N和I/O控制器123的组合、能支持显示设备124A-124N的硬件和软件的任何组合、任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示设备124A-124N对接、通信、连接或使用显示设备。在一些实施例中,计算设备100可被配置为使用一个或多个显示设备124A-124N,这些配置包括:有多个连接器以与多个显示设备124A-124N对接;多个视频适配器且每个视频适配器与显示设备124A-124N中的一个或多个连接;有操作系统被配置用于支持多个显示设备124A-124N;使用被包含在计算设备100内部的电路和软件来连接并使用多个显示设备124A-124N;和在主计算设备100和多个次级计算设备上的执行软件来使主计算设备100能使用次级计算设备的显示设备作为用于主计算设备的显示设备124A-124N。仍在计算设备100的其它实施例中,可包括由多个次级计算设备提供的多个显示设备124A-124N并通过网络连接到主计算设备100。
在一些实施例中,计算设备100可执行任意操作系统,而在其他实施例中,计算设备100可执行下列操作系统的任何一个:诸如WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE、WINDOWS XP和WINDOWS VISTA的版本的MICROSOFT WINDOWS的操作系统;不同发行版本的Unix和Linux操作系统;由苹果计算机出品的MAC OS的任意版本;由国际商业机器公司出品的OS/2;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算设备的操作系统,或者任意其它操作系统。仍在其他实施例中,计算设备100可执行多个操作系统。例如计算设备100可执行PARALLELS或能执行或管理执行第一操作系统的虚拟机的又一个虚拟化平台,而计算设备100执行不同于第一操作系统的第二操作系统。
计算设备100可以体现为下列计算设备的任何一个:计算工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、便携通信设备、媒体播放设备、游戏系统、移动计算设备、笔记本、由苹果计算机公司出品的IPOD系列设备、由索尼公司出品的PLAYSTATION系列设备的任何一个、由Nintendo公司出品的Nintendo系列设备的任何一个;由微软公司出品的XBOX系列设备的任何一个或能够通信并有足够的处理器能力和存储容量以执行此处所述的方法和系统的任意其它类型和/或形式的计算或者电信或媒体设备。在其它实施例中,计算设备100可以是诸如下列移动设备的任何一个的移动设备:JAVA使能蜂窝电话或个人数据助理(PDA),诸如i55sr、i58sr,i85s,i88s,i90c,i95c1或im1100,以上这些均由摩托罗拉公司制造;由Kyocera公司制造的6035或7135;由Samsung电子有限公司制造的i300或i330;由Palm公司出品的Treo180、270、600、650、680、700p、700w或750智能电话;或能执行此处所述的方法和系统的任何其他移动计算设备。仍在其他实施例中,计算设备100可以是下列移动计算设备中的任何一个:黑莓的任一系列,或由Research In Motion Limited出品的其他手持设备;由苹果计算机公司出品的iPhone;Palm Pre;掌上电脑;掌上电脑电话或任何其他手持移动设备。
图2A示出虚拟化环境的一个实施例。被包括在计算设备201中硬件层可包括一个或多个物理磁盘214、一个或多个物理设备206、一个或多个物理处理器208和物理存储器216。在一些实施例中,固件212可被存储在物理存储器216的存储器元件中并且由一个或多个物理处理器208执行。计算设备210还可包括被存储在物理存储器216的存储器元件中并且由一个或多个物理处理器208执行的操作系统214。仍进一步,虚拟机监控程序202可被储在物理存储器216的存储器元件中并且由一个或多个物理处理器208执行。一个或多个虚拟机232A-C(总称为232)在一个或多个物理处理器208上执行。每个虚拟机232可以有虚拟磁盘226A-C和虚拟处理器228A-C。在一些实施例中,第一虚拟机232A可在虚拟处理器228A上执行包括工具堆栈234的控制程序220。在其他实施例中,一个或多个虚拟机232B-C可在虚拟处理器228B-C上执行客户操作系统230A-B。
进一步参考图2A,在一个实施例的更多细节中,所描述的虚拟化环境包括Type2虚拟机监控程序202,或执行在计算设备201上的操作系统214中的虚拟机监控程序。在一些实施例中,Type2虚拟机监控程序在操作系统214环境中执行并且虚拟机在虚拟机监控程序之上的层次执行。在许多实施例中,Type2虚拟机监控程序在用户操作系统的上下文中执行,这样Type2虚拟机监控程序与用户操作系统进行交互。
在一些实施例中,虚拟化计算环境包括计算设备201。计算设备201可以是任何计算设备,在一些实施例中计算设备201可以是此处描述的任何计算机、设备或计算机器。尽管图2A示出了单个计算设备201,在一些实施例中由计算设备201存储和执行的模块、程序、虚拟机和命令可以被不只一个计算设备201执行。仍在其他实施例中,计算设备201可以是服务器群。
在一个实施例中,计算设备201可包括硬件层210,该硬件层包括与计算设备201通信的一个或多个硬件。在一些实施例中,硬件层210可包括一个或多个物理磁盘204、一个或多个物理设备206、一个或多个物理处理器208和存储器216。
在一些实施例中,硬件层210可包括一个或多个物理磁盘204。物理磁盘204可以是任何硬盘,而在一些实施例中物理磁盘204可以是此处描述的任何硬盘。在一些实施例中硬件层210可包括一个物理磁盘204。在其他实施例中,硬件层210可包括不只一个物理磁盘204。在一些实施例中计算设备201可与被包含在硬件层210中作为物理磁盘204的外部硬盘通信。
在其他实施例中,硬件层210可包括处理器208。在一些实施例中,处理器208可以是任何处理器,而其他实施例中处理器208可以是此处描述的任何处理器。处理器208可包括一个或多个处理核。在其他实施例中计算设备201可包括一个或多个处理器208。在一些实施例中,计算设备201可包括一个或多个不同处理器,例如处理单元、图形处理单元或物理引擎。
在一些实施例中,物理设备206可以是被包含在计算设备201中的任何设备。在一些实施例中物理设备206可以是在计算设备201中所包含的设备的任何组合。在一些实施例中,计算设备201可包括一个或多个物理设备206。物理设备206可以是下列设备中的任何一个:网络接口卡、视频卡、键盘、鼠标、输入设备、显示器、显示设备、扬声器、光驱、存储设备、通用串行总线连接、连接到计算设备201的任何设备、与计算设备201通信的任何设备、打印机、扫描仪或任何其他设备或此处所描述的任何设备。
硬件层210还可包括可包含任何类型存储器的物理存储器216。在一些实施例中物理存储器216可包括此处描述的任何存储器类型。物理存储器216可存储数据,以及在一些实施例中可存储一个或多个程序或可执行指令集。图2A所示固件212被存储在计算设备201的物理存储器216中的。被存储在物理存储器216中的程序或可执行指令可由计算设备201上的一个或多个处理器208所执行。
在一些实施例中,固件212可以是可执行指令和硬件的任一组合,其控制与计算设备201通信的硬件或被包含在计算设备201内的硬件。在一些实施例中,固件212可控制硬件层210内的一个或多个硬件。在多个实施例中,固件212可被计算设备201内的一个或多个处理器208所执行。在一些实施例中,固件212可以是诸如基本输入/输出系统(BI OS)的启动固件。执行在计算设备201上的另外固件212可以与BIOS接合。
在一个实施例中,计算设备201可包括由一个或多个物理处理器208执行的操作系统214。在一些实施例中,操作系统214是能直接访问硬件层210中硬件设备的用户操作系统。操作系统214可以是任何操作系统并且在一些实施例中,操作系统214可以是此处所描绘的任何操作系统。图2A示出了一个实施例,其中虚拟机监控程序202在正在计算设备201上执行的操作系统214的上下文中执行。在这个实施例中,操作系统214可被称为宿主操作系统214,而其他操作系统可被称为客户操作系统。客户操作系统可包括执行在虚拟机232上的客户操作系统230A-B,和/或控制程序220。
在一些实施例中,计算设备201可包括虚拟机监控程序202。在一些实施例中,虚拟机监控程序202可以是在计算设备201上由处理器208执行以便管理任一数量的虚拟机的任一程序。虚拟机监控程序202可以被称为虚拟机监控器,或平台虚拟化软件。在一些实施例中,虚拟机监控程序202可以是监控执行在计算设备上的虚拟机的可执行指令和硬件的任何组合。尽管图2A示出了包括Type2虚拟机监控程序202的虚拟化环境,计算设备201可执行任何其他类型的虚拟机监控程序。例如,计算设备可以执行包括Type1虚拟机监控程序202的虚拟化环境。在一些实施例中,计算设备201可执行一个或多个虚拟机监控程序202。这些一个或多个虚拟机监控程序202可以是相同类型的虚拟机监控程序或不同类型的虚拟机监控程序。
在一些实施例中,虚拟机监控程序202可以以模拟直接访问系统资源的操作系统230或控制程序220的任何方式向虚拟机232上执行的操作系统230或控制程序220提供虚拟资源。系统资源可包括:物理设备、物理磁盘、物理处理器、物理存储器216和被包含在计算设备201硬件层210中的任何其他组件。在这些实施例中,虚拟机监控程序202可被用来仿真虚拟硬件、划分物理硬件、虚拟化物理硬件和执行访问计算环境的虚拟机。仍在其他实施例中,虚拟机监控程序202为执行在计算设备201上的虚拟机2323控制处理器调度和存储器分区。虚拟机监控程序202可包括由位于California,Palo Alto的VMWare公司制造的虚拟机监控程序;XEN虚拟机监控程序,其开发由开源Xen.org社区监督的开源产品;由微软公司提供的HyperV、虚拟服务器和虚拟PC虚拟机监控程序,或其他。在一些实施例中,计算设备201执行虚拟机监控程序202,该虚拟机监控程序创建客户操作系统可在其上执行的虚拟机平台。在这些实施例中,计算设备201可被称为宿主服务器。这样的计算设备的例子是由位于FL,Fort Lauderdale的Citrix Systems公司提供的XEN SERVER。
在一个实施例中,虚拟机监控程序202建立操作系统230在其中执行的虚拟机232A-B(总的表示为232)。例如,在这些实施例的一个中,虚拟机监控程序202将虚拟机映像加载进虚拟机232。在这些实施例的另一个中,虚拟机监控程序202在虚拟机232中执行操作系统230。在这些实施例的另一个中,虚拟机232执行操作系统230。
在一个实施例中,虚拟机监控程序202控制至少一个虚拟机232的执行。在又一个实施例中,虚拟机监控程序202将由计算设备201提供的至少一个硬件资源的抽象提供给至少一个虚拟机232。这个抽象还可被称为计算设备201上可利用的硬件、内存、处理器和其他系统资源的虚拟化或虚拟视图。在一些实施例中,硬件或硬件资源可以是在硬件层210中可利用的任何硬件资源。在其他实施例中,虚拟机监控程序202控制虚拟机232访问计算设备201中可利用的物理处理器208的方式。控制对物理处理器208的访问可包括确定虚拟机232是否应该访问处理器208以及物理处理器性能如何呈现给虚拟机232。
在一些实施例中,计算设备201可寄载或执行一个或多个虚拟机232。虚拟机232可被称为域、客户和/或DOMAIN U。虚拟机232是一组可执行指令,当其被处理器208执行时,模拟物理计算机的操作,从而虚拟机232可类似物理计算设备执行程序或进程。尽管图2A计算设备201寄载3个虚拟机232的实施例,在其他实施例中,计算设备201可寄载任何数量的虚拟机232。在一些实施例中,虚拟机监控程序202为每个虚拟机232提供物理硬件、内存、处理器和对该虚拟机可利用的其他系统资源的唯一的虚拟视图。在一些实施例中,该唯一的虚拟视图可以基于下列任何一个:虚拟机许可;向一个或多个虚拟机标识符应用的策略引擎;访问虚拟机的用户;在虚拟机上执行的应用;被虚拟机访问的网络;或任何其他类似标准。在其他实施例中,虚拟机监控程序202向每个虚拟机232提供物理硬件、存储器、处理器和对该虚拟机可利用的其他系统资源的大体类似的虚拟视图。
每个虚拟机232可包括虚拟磁盘226A-C(总称为226)和虚拟处理器228A-C(总称为228)。在一些实施例中,虚拟磁盘226是计算设备201的一个或多个物理磁盘204的虚拟化视图,或计算设备201的一个或多个物理磁盘204的一部分的虚拟化视图。物理磁盘204的虚拟化视图可由虚拟机监控程序202产生、提供和管理。在一些实施例中,虚拟机监控程序202可为每个虚拟机232提供物理磁盘204的唯一虚拟视图。因此,在这些实施例中,当与其他虚拟磁盘226相比较时,被包含在每个虚拟机232中的虚拟磁盘226可以是唯一的。
虚拟处理器228可以是计算设备201的一个或多个物理处理器208的虚拟化视图。在一些实施例中,物理处理器208的虚拟化视图可由虚拟机监控程序202产生、提供和管理。在一些实施例中,虚拟处理器228基本上具有至少一个物理处理器208的所有相同特征。在其他实施例中,虚拟处理器228提供物理处理器208的经修改的视图,从而虚拟处理器228的至少一些特征可以不同于相应的物理处理器208。
控制程序220可执行至少一个应用来管理和配置在虚拟机232以及在一些实施例中计算设备上执行的客户操作系统。在一些实施例中,控制程序220可被称为控制操作系统、控制域、域0或dom 0。在一些实施例中,控制程序220可以是XEN虚拟机监控程序的DOMAIN 0或DOM 0。控制程序220可以执行管理应用或程序以进一步显示管理员用来访问每个虚拟机232的功能和/和管理虚拟机232的用户接口。在一些实施例中,由管理程序产生的用户接口可被用于终止虚拟机232的执行、为虚拟机232分配资源、为虚拟机232指派权限或者管理与虚拟机232相关的安全证书。在一些实施例中,控制程序220可启动新的虚拟机232或终止正在执行的虚拟机232。在其他实施例中,控制程序220可直接访问硬件层210内的硬件和/或资源。仍在又一个实施例中,控制程序220可与执行在计算设备210上且在虚拟机232的上下文之外的程序和应用相接口。类似地,控制程序220可与执行在虚拟机232的上下文内的程序和应用相接口。
在一个实施例中,虚拟机监控程序202可执行虚拟机232内的控制程序220。虚拟机监控程序202可创建和启动虚拟机232。在虚拟机监控程序202执行虚拟机232内的控制程序220的实施例中,该虚拟机232也可被称为控制虚拟机232。仍在又一个实施例中,控制程序220执行在被授权直接访问计算设备201上物理资源的虚拟机232中。
在一些实施例中,在第一计算设备201A(未示出)上的控制程序220A(未示出)可与在第二计算设备201B(未示出)上的控制程序220B(未示出)交换数据。在这些实施例中,第一计算设备201A可远离第二计算设备201B。控制程序220A-B可通过在第一计算设备201A上执行的虚拟机监控程序202A(未示出)和在第二计算设备201B上执行的虚拟机监控程序202B(未示出)之间的通信链路交换数据。通过这条通信链路,计算设备201A-B可交换关于处理器和资源池中其他可利用的物理资源的数据。而且通过虚拟机监控程序202A-B之间的连接,虚拟机监控程序202A-B可管理分布在一个或多个计算设备201A-B上的资源池,例如在第一计算设备201A和第二计算设备201B上的可利用资源。虚拟机监控程序202A-B还可虚拟化这些资源并使它们对于在计算设备201A-B上执行的虚拟机232成为可利用的。在本实施例的又一情况下,单个虚拟机监控程序202可管理和控制在计算设备201A-B上执行的虚拟机232。
在一些实施例中,控制程序220与一个或多个客户操作系统230A-B(统称为230)交互。控制程序220可通过虚拟机监控程序202与客户操作系统230通信。通过虚拟机监控程序202,客户操作系统230可请求访问物理磁盘204、物理处理器208、内存216、物理设备206和硬件层210中的任何其他组件。仍在其他实施例中,客户操作系统230可通过由虚拟机监控程序202建立的通信信道与控制程序220通信,诸如,例如通过由虚拟机监控程序202使可利用的多个共享内存页。
在一些实施例中,控制程序220包括用于与计算设备201所提供的网络硬件直接通信的网络后端驱动程序。在这些实施例的一个,网络后端驱动程序处理来自至少一个客户操作系统230的至少一个虚拟机请求。在其他实施例中,控制程序220包括用于与计算设备201上存储元件通信的块后端驱动程序。在这些实施例的一个,块后端驱动程序根据从客户操作系统230接收到的至少一个请求从存储元件中读数据和写数据。
在又一个实施例中,控制程序220包括工具堆栈224。在又一个实施例中,工具堆栈224提供用于与虚拟机监控程序202交互、与其他控制程序220(例如,在第二计算设备201B上)通信或管理计算设备201上的虚拟机232的功能。在又一个实施例中,工具堆栈224包括用于向虚拟机群的管理员提供改善的管理功能的经定制的应用。在一些实施例中,至少一个工具堆栈224和控制程序220包括用于提供远程配置和控制运行在计算设备201上的虚拟机的接口的管理API。在其他实施例中,控制程序220通过工具堆栈224与虚拟机监控程序202通信。
在一个实施例中,虚拟机监控程序202在由虚拟机监控程序202创建的虚拟机232内执行客户操作系统230。在又一个实施例中,客户操作系统230向计算设备201的使用者提供对计算环境中的资源的访问。仍在又一个实施例中,资源包括程序、应用、文档、文件、多个应用、多个文件、可执行程序文件、桌面环境、计算环境和对计算设备201可利用的其他资源。仍在又一个实施例中,资源可以通过多种访问方法传送到计算设备201,这些访问方法包括但不限于以下方法:传统直接在计算设备上安装、通过应用流的方法传送到计算设备201上、将第二计算设备201’上资源的执行所产生的输出数据传送到计算设备201且通过表示层协议与计算设备201通信、将通过在第二计算设备201’上执行的虚拟机执行资源所产生的输出数据传送到计算设备201,或者从连接到计算设备201上的诸如USB设备的可移动存储设备上执行或通过在设备201上执行的虚拟机执行并且产生输出数据。在一些实施例中,计算设备201传输由资源的执行所产生的输出数据到另一个计算设备201’。
在一个实施例中,客户操作系统230与该客户操作系统230在其上执行的虚拟机结合在一起,形成意识不到其是虚拟机的完全虚拟化的虚拟机;这样的机器可被称为“Domain U HVM(硬件虚拟机)虚拟机”。在又一个实施例中,完全虚拟化机包括模拟基本输入/输出系统(BIOS)的软件以便在完全虚拟化机中执行操作系统。仍在又一个实施例中,完全虚拟化机可包括提供与虚拟机监控程序202通信的功能的驱动程序。在这样的实施例中,驱动程序典型地意识到自己执行在虚拟化的环境中。
在又一个实施例中,客户操作系统230与该客户操作系统230在其上所执行的虚拟机结合在一起,形成意识到其是虚拟机的超虚拟化(paravirtualized)的虚拟机;这样的机器可被称为“Domain U PV虚拟机”。在又一个实施例中,超虚拟化机包括完全虚拟化机中所不包含的另外的驱动程序。仍在又一个实施例中,超虚拟化机包括如上所述的被包含在控制程序220中的网络后端驱动程序和块驱动程序。
图2B中所示的是说明Type1虚拟机监控程序202的虚拟化环境的又一个实施例。执行在计算设备201上的虚拟机监控程序202可以直接访问硬件层210中的硬件和资源。由虚拟机监控程序202管理的虚拟机232可以是不安全的虚拟机232B和/或安全虚拟机232C。尽管图2A所描述的虚拟化环境中图示了宿主操作系统214,图2B中的虚拟化环境的实施例不执行宿主操作系统。
进一步参考图2B,更详细地,虚拟化环境包括Type1虚拟机监控程序202。在一些实施例中Type1虚拟机监控程序202执行在“裸金属”上,从而虚拟机监控程序202可以直接访问计算设备201上执行的所有应用和进程、计算设备201上所有资源和计算设备201上所有硬件或与计算设备201通信的所有硬件。尽管Type2虚拟机监控程序202通过宿主操作系统214访问系统资源,Type1虚拟机监控程序202可直接访问所有系统资源。Type1虚拟机监控程序202可直接执行在计算设备201的一个或多个物理处理器上,并且可包括存储在物理存储器216中的程序数据。
在采用Type1虚拟机监控程序202配置的虚拟化环境中,宿主操作系统可被一个或多个虚拟机232所执行。这样计算设备201的使用者可以指派一个或多个虚拟机232作为该使用者的个人机器。这个虚拟机可通过允许用户以与用户通过宿主操作系统与计算设备201交互的大体相同方式来与计算设备交互来模拟宿主操作系统。
虚拟机232可以是不安全的虚拟机232B和安全的虚拟机232C。尽管图2B示出了安全的虚拟机和不安全的虚拟机,有时它们也被称为有特权的和无特权的虚拟机。在一些实施例中,可基于虚拟机与在相同虚拟化环境中执行的其他虚拟机的比较来确定虚拟机的安全。例如,要是第一虚拟机访问资源池则第二虚拟机不访问相同的资源池;当第一虚拟机被认为是安全虚拟机232A时第二虚拟机可被认为是不安全的虚拟机232B。在一些实施例中,虚拟机323访问一个或多个系统资源的能力可使用由控制程序220或虚拟机监控程序202产生的配置接口来进行配置。在其他实施例中,虚拟机232可承受的访问量可以是回顾下列标准集的任意集的结果:访问虚拟机的用户、执行在虚拟机上的一个或多个应用、虚拟机标识符、基于一个或多个因素指派给虚拟机的风险等级或任何其他类似标准。
在一些实施例中,不安全虚拟机232B可被阻止访问安全虚拟机232A可以访问的资源、硬件、存储器位置和应用。例如安全虚拟机232C可访问一个或多个公司资源,而不安全虚拟机232B不能访问任何公司资源。
图3A所示的是执行虚拟化环境302的计算设备201的实施例,其具有可包括多个网络接口卡(NIC)316A-316N的硬件层210。虚拟化环境302可包括控制虚拟机304、一个或多个附加虚拟机232A-232B和虚拟机监控程序202。在一些情况下每个附加虚拟机232可执行客户操作系统(guest OS)230A-230B,并且可包括一个或多个虚拟接口(VIF)对象332A-332N。控制虚拟机340可执行控制程序220和网络策略引擎322。在一些情况下,控制程序220可包括工具堆栈224和一个或多个包含或实现网络策略320A-320B的网络对象335A-335B。
进一步参考图3A,更详细地,在一个实施例中,计算设备201可以是此处所描述的任何计算设备100。在一些实施例中,计算设备201可以是服务器106或客户机102。计算设备201可以被称为主机、计算机、第一计算机、第二计算机、第三计算机等。
正如计算设备201可以是此处所描述的任何计算机100,硬件层210也可以是此处所描述的任何硬件层210并且可包括此处描述的任何计算机硬件。在一个实施例中,硬件层210可包括一个或多个NIC316A-316N。计算设备201可包括一个NIC316、两个NIC316或任意其他数量的NIC316。NIC316可以使任何NIC,并且每个被包含在硬件层210中的NIC316可以是相同类型的NIC或可以是不同类型的NIC。
执行在计算设备201上的虚拟化环境302可以是此处所描述的任何虚拟化环境。虚拟化环境302可包括任何虚拟机监控程序配置,诸如图2A所示的虚拟机监控程序配置或图2B所示的虚拟机监控程序配置。在一个实施例中,被包含在虚拟化环境302中的虚拟机监控程序202可以是任何虚拟机监控程序202,或此处所描述的任何虚拟机监控程序202。
图3A示出了包括虚拟化环境302的计算设备302,该虚拟化环境包括诸如此处所描述的任何控制虚拟机340的控制虚拟机340。控制虚拟机340可执行诸如此处所述的任何控制程序220的控制程序220。在一些实施例中,控制程序220可包括工具堆栈224,该工具堆栈224包括描述一个或多个网络配置的元数据。尽管图3A图示了包括控制虚拟机340和两个附加虚拟机232A-232B的虚拟化环境302,在一些实施例中,虚拟化环境302可包括任何数量的虚拟机232。虚拟机232可执行诸如此处所描述的任何客户操作系统230的客户操作系统230。
在一些实施例中,工具堆栈224可包括描述被包含在虚拟化环境的一个或多个虚拟机中的对象的元数据。例如,元数据可包括关于每个虚拟机232的当前配置的信息。配置信息可包括:虚拟机232中对象使用的网络配置;虚拟机232中接口对象的数量和类型;哪个对象目前正在虚拟机232中运行;和哪个外部机器和网络目前正在与虚拟机232相接口。在一个实施例中,元数据包括网络对象335和网络策略320。在一些实施例中,工具堆栈224可被用于为虚拟机232产生网络实现以便用于和其他虚拟机232通信或访问公共网。
在一些实施例中,工具堆栈224可被存储在控制虚拟机340的存储仓库中。元数据可以由虚拟机232和在虚拟化环境302中所执行对象产生。在其他实施例中,工具堆栈224元数据可从远离主机201的存储仓库动态获得。例如控制程序220可从为虚拟化系统存储工具堆栈元数据的远程计算机流式传输或下载元数据。在其他实施例中,可使用从远程计算机下载或流式传输的元数据来更新或产生工具堆栈224元数据。例如,当控制虚拟机340启动或执行控制程序220时,控制虚拟机340或控制程序220可向远程计算机请求工具堆栈元数据更新。作为响应,远程计算机可以传输、流式传输或其他方式发送涉及虚拟化环境302的控制虚拟机340元数据。
控制程序220还可包括一个或多个网络对象335A-335B。尽管如图3A所示的网络对象335A-335B(此处以后通称为网络对象335)被包含在控制程序220中,在其他实施例中,网络对象335被存放在下列位置中的任何一个:控制虚拟机340;工具堆栈224元数据;或位于远程虚拟机232或远程物理机器上的远程存储仓库。在一些实施例中,网络对象335可以是被配置为连接一个或多个VIF对象332的对象。仍在其他实施例中,网络对象335可以执行一个或多个网络策略320A-320B。网络对象335可定义特定网络策略。在又一个实施例中,网络对象335可定义包括一个或多个网络策略320A-320B的网络配置。因此当VIF对象332连接到网络对象335时,VIF对象332可根据网络策略或被包含在网络对象335中的配置来运行。
图3A图示了包括两个网络对象335A-335B的虚拟化环境302。在其他实施例中,虚拟化环境302可包括单个网络对象335,或多个网络对象335。在一些实施例中,网络对象335可与同一虚拟化环境302中的VIF对象332连接,即包围网络对象335和VIF对象332的同一虚拟化环境302。在其他实施例中,网络对象335可以与和网络对象335位于同一物理机器201上的VIF对象323,和/或与位于和网络对象335所处的物理机201不同物理机上的VIF对象332相连接。例如,在一个计算设备201上的网络对象335可以连接位于与初始计算设备202远离的另一计算设备上的VIF对象332。
在一些实施例中,网络策略320可以是与特定网络配置相关的一个或多个策略。例如网络策略320包括一组指导原则,通过这些指导原则,执行在虚拟机232中的对象可与其他虚拟机232中的其他对象交互。在一些实施例中,网络策略可被用于指定可在在一个或多个虚拟机232之间创建的网络的属性。这些属性包括:是否加密和如何加密连接连接上传输的数据;哪个NIC卡用来建立连接;是否限制到特定物理计算机201的网络通信量;是否避免传输网络通信量到特定虚拟机232;网络通信量是否能或应该通过物理NIC316传输到执行在远程物理计算机上的虚拟机232;是否在传输数据到网络上之前压缩数据;任何其他网络属性。配置网络连接的属性可进一步包括指定子属性,诸如加密算法类型、NIC类型,和其他类似子属性。
网络策略320可使用一个或多个策略语言来书写,并且由管理员使用与控制程序220相接口的配置应用来进行配置。在一些实施例中,网络对象335可实施指定网络配置的一个或多个属性的单个网络策略。在其他实施例中,网络对象可实施一个或多个网络策略,这些网络策略一起创建指定特定网络的一个或多个属性的网络配置。
可通过将虚拟或物理对象与标签相关联来进行指定一些属性,诸如那些要求网络通信量不被传输到特定虚拟机或或物理机,或者那些要求网络通信量不被物理机或特定虚拟机所产生的属性。当创建网络策略320时,策略语言可参考与对象相关联的标签。例如身份识别标签可被存储在虚拟机232上或以其他方式与虚拟机232相关联。当指定网络通信不应被传输到被标记的虚拟机的网络策略323被创建时,网络策略320可识别该使用标签的虚拟机。因此,如果包括网络策略320的网络对象335被移动到不同的虚拟化环境302或计算机201,网络对象335不需要进行重新配置。相反,网络对象335可以继续实施防止网络通信被路由或以其他方式传输到包含指定标签的虚拟机的网络配置。因此,当网络策略320被实施时,新虚拟化环境302或计算机201中的存储指定标签或与指定标签相关联的任何虚拟机232将被避开,从而它将不会接收到网络通信。
策略语言的一个实施例可包括如下:
ALLOW_CROSS_SERVER=true
REQIRE_ENCRYPTION=true
PHYSICAL_IFS_ALLOWED={TAG(testdev_network1),TAG(testdev_network2)}
ISOLATE_FROM={NAME(my_insecure_vm)}
上述代码解释了网络策略的一个实施例,该网络策略指定驻留在设备上的一个或多个虚拟机可驻留在通过本地网络104连接的多个分开的物理计算机上。在这个实施例中,网络通信应该被加密(例如,REQIRE_ENCRYPTION=true)并且该通信应该由具有下列标签或与下列标签相关联的网络接口卡316提供服务:testdev_network1、testdev_network2。而且这个实施例说明了对网络通信的限制,其中网络通信不能在连接具有标签“my_insecure_vm”的虚拟机232或设备的任何网络上传输。
在一些实施例中,控制虚拟机340可执行网络策略引擎322,该策略引擎用于执行或实施一个或多个网络策略320。网络策略引擎322可与一个或多个网络对象335和网络对象335的一个或多个网络策略320相接口。这些策略320可被存储在诸如缓冲存储器的存储仓库中,和被存储在诸如数据库、列表、表格或任何其他存储元素的数据单元中。在一些实施例中,当控制虚拟机340接收到改变一个或多个虚拟机232的状态的API调用时,控制虚拟机340可调用策略引擎322。在其他实施例中,在遇到生命周期事件时,策略引擎322可被虚拟化环境302调用或被虚拟机232直接调用。在被调用时,网络策略引擎322可执行一个或多个功能,这些功能在遇到生命周期事件时识别相应于被包含在虚拟机232中的VIF对象的一个或多个网络对象335。当网络策略引擎322无法识别包括匹配虚拟机232的一个或多个VIF对象的网络配置的网络对象335时,网络策略引擎322可以产生指示网络配置不能被汇编的错误。
尽管图3A示出了执行在控制虚拟机340上的网络策略引擎322,在一些实施例中,网络策略引擎322的实例化的例子可以执行在任何虚拟机232上。仍在其他实施例中,网络策略引擎322可执行在虚拟机监控程序202上。
在其他实施例中,每个虚拟机232可包括一个或多个虚拟接口(VIF)对象332。VIF对象332可被用来建立两个或多个虚拟机232之间的本地网络。在一些实施例中,VIF对象332可与网络对象335相接口,从而网络对象335可以实施指定VIF对象332连接的网络的属性应该是什么的网络策略。在其他实施例中,一个或多个VIF对象332可注册到网络对象335,从而网络对象335可以便于注册到该网络对象的VIF对象332之间的本地网络创建。在一些实施例中,VIF对象332可与本地网络上的其他VIF对象332通信。在其他实施例中,VIF对象332可与远程物理计算机上其他VIF对象332通信,从而在VIF对象332之间建立本地网络,然而,本地网络要求与NIC316相接口以便与那些在远程计算机上的VIF对象332建立本地网络。网络对象335的网络策略或配置可以概括VIF对象332之间创建的网络的属性。
在一些实施例中,当生命周期事件发生时,每个虚拟机232可产生通知。生命周期事件可包括:启动或重启虚拟机;停止虚拟机;迁移虚拟机;或其他类似生命周期事件。通知可包括虚拟机232可传输到控制虚拟机340的警告的产生。当生命周期事件发生时,由虚拟化环境302确定诸如网络拓扑是否是虚拟机232所要求的。使用网络策略可创建网络拓扑,并且在一个实施例中可包括在虚拟机232和其他虚拟机之间建立本地连接,或在虚拟机232和物理网络接口卡316之间建立连接。控制程序220或虚拟化环境302可根据一个或多个网络策略320创建网络拓扑。
如图3B所示的是虚拟化系统390的一个实施例,该系统包括一个或多个计算设备201A-201N,和包括工具堆栈元数据355和网络接口卡316的控制计算设备203。每个计算设备201A-201N可包括虚拟化环境302,该虚拟化环境包括控制虚拟机340和一个或多个附加虚拟机232,一个或多个NIC316,和还包括工具堆栈元数据350的控制虚拟机340。
进一步参考图3B,更详细地,在一个实施例中虚拟化系统390可是如下的环境,其中执行各自的虚拟化环境302的多个计算设备201可以互相通信以及与为每个计算设备201提供对共享资源访问的控制计算机203通信。在一些实施例中,计算设备201和控制计算机203可通过诸如此处描述的任何网络104的网络104进行通信。在其他实施例中,计算设备201和控制计算机可以是此处所描述的任何计算机101。
在一些实施例中,每个计算设备201是图3A所描述的计算设备201的任何实施例。类似地,每个计算设备201可以是图3A所示的计算设备201的配置,其与虚拟化系统390中另一个计算机201的配置不同。在一些实施例中,计算设备201可通过网络104和NIC316互相之间通信。
在一些实施例中,控制计算机203可包括诸如此处所述的任何NIC316的NIC316。而且,控制计算机203可通过网络104和控制计算机203的NIC316与其他计算机201通信。
在一些实施例中,控制计算机203还可包括工具堆栈元数据355,工具堆栈元数据355可以是系统390中每个计算设备201的元数据355的集合。在一些实施例中,工具堆栈元数据355是用于每个计算设备201的元数据355的组合。当控制虚拟机340启动或当虚拟化环境302执行时,在虚拟化环境302中执行的控制虚拟机340或另一个应用能从存储在控制计算机203上的元数据355池获得元数据350。所获得的元数据350可被存储在请求元数据350的虚拟机232上,并且可被用来更新虚拟机232所存储的元数据。当控制虚拟机340停止执行时,元数据350可被传输到元数据355池。在一些实施例中,元数据355,350可存储网络对象335。创建包括在远程物理计算机执行的虚拟机的本地网络可要求使用存储在控制计算机203的工具堆栈元数据355中的集中的网络对象335。
在一些实例中,可在一个计算机201A上的一个虚拟机232A和位于与第一计算机201A远离的第二计算机201B上的第二虚拟机232B之间创建本地网络。在这个例子中,本地网络可以使用每个虚拟机232A,232B中的VIF对象进行创建。VIF对象可注册到网络对象335,从而网络对象335可以根据网络对象335的网络策略或配置在VIF对象间创建本地网络。在这个例子中,网络对象335可以是从主元数据存储335下载的部分元数据,或者网络对象335可通过计算机201A-201B和控制计算机203之间的网络被计算设备201A-201B所访问。
如图4所示的是实现网络配置的方法400的实施例。在一个例子中,控制虚拟机340的控制程序220拦截虚拟机生命周期事件通知(步骤402)。当收到生命周期事件通知时,策略引擎322可识别产生生命周期事件的虚拟机232的VIF对象332(步骤404),并且识别连接到所识别的VIF对象332的网络对象335(步骤406)。当识别被连接到一个或多个网络对象335的VIF对象332时,策略引擎322可识别网络策略320(步骤408)。策略引擎接着可执行符合所识别的策略320、网络对象335和VIF对象332的网络实现(步骤410)。在一些实施例中,方法400可被下列对象或应用整体执行或部分执行:控制程序220、网络策略引擎322、控制虚拟机340和虚拟化环境302。
进一步参考图4,更详细地,在一个实施例中控制程序220拦截拦截虚拟机生命周期事件通知(步骤402)。在其他实施例中,任何下列应用或对象可拦截虚拟机生命周期事件通知:控制程序220的工具堆栈224;网络策略引擎322;虚拟化环境302;控制虚拟机340上执行的任何应用;网络引擎322;或控制虚拟机340。仍在其他实施例中,生命周期事件响应于工具堆栈的客户机请求虚拟机状态改变的控制API调用而产生。这些API调用可被客户机传输到工具堆栈,且可以例如是下列API调用的之一:VM.start(vm标识符)或Vm.shutdown(vm标识符)。在这些API调用的每一个中的参数是意欲启动或关闭的虚拟机的标识符。在一些实施例中,当出现生命周期事件时,控制程序220可拦截或接收来自VIF对象332或在虚拟机232上执行的任何其他应用或对象的虚拟机生命周期事件。虚拟机生命周期事件可包括启动虚拟机232、停止虚拟机232、迁移虚拟机232或重启虚拟机232。在一些实施例中,产生生命周期事件可发生在虚拟机生命周期事件发生前或者后。在多个实施例中,虚拟机232可响应于生命周期事件的发生而产生生命周期事件通知。例如当启动虚拟机232时,在虚拟机232启动后产生生命周期事件。
在一些实施例中,控制程序220拦截本地网上具有VIF332对象的那些虚拟机232的生命周期事件。在多个例子中,VIF对象具有相关联的网络配置或策略。当生命周期事件发生时,控制程序220的工具堆栈224可以获得关于VIF对象332的网络配置的信息并且使用这些信息来确定是否存在具有了列表VIF对象332的所必须的网络配置的网络对象335。
当收到生命周期事件时,产生生命周期事件的虚拟机232的VIF对象332被识别(步骤404)。在一些实施例中,方法400还包括首次调用识别VIF对象332的网络策略引擎322,或网络策略引擎322的实例。在其他实施例中,网络策略引擎322可基本上总是在执行,从而在事件虚拟机232产生生命周期事件通知的任何时候都执行,策略引擎322可相应地识别该虚拟机232的VIF对象332。在其他实施例中,诸如控制程序220的单独的程序识别VIF对象332。VIF对象332可是执行或存储在产生生命周期事件的虚拟机232内的接口对象。例如,当虚拟机启动时,在控制虚拟机340中执行的网络策略引擎322或一些其他应用识别所启动的虚拟机232中的VIF对象332。
一旦虚拟机的VIF对象332被识别,连接到所识别的VIF对象332的网络对象335被识别(步骤406)。在一些实施例中,识别网络对象335可以包括查询或解析工具堆栈元数据以便识别包括相应于所识别的VIF对象332的标识符的网络对象335。网络对象335可包括链接或注册到该网络对象的那些VIF对象332的列表。因此识别网络对象335可包括解析存储在工具堆栈元数据的每个网络对象335的列表。网络对象335可被连接、链接或以其他方式和一个或多个VIF对象332相关联。在一些实施例中不只一个网络对象335可对应于特定的VIF对象332。在一些实施例中,策略引擎322可通过获得VIF对象332的标识符来加速该进程,并且为VIF的标识符解析工具堆栈元数据。
图4中描述的方法400可包括识别一个或多个VIF对象332和一个或多个网络对象335。类似地,方法400可包括识别VIF对象332和网络对象335的任何组合。例如,两个VIF对象332可对应于单个网络对象335,而其他实施例中单个VIF对象332可对应于多个网络对象335。
当识别虚拟机232的VIF对象332和虚拟机232的网络对象335时,网络策略可被识别(步骤408)。识别网络策略320可包括识别网络对象335的网络策略320。在其他实施例中,识别网络策略320可包括识别虚拟机232的网络策略320或VIF对象332的网络策略320。所识别的网络策略320可对由网络策略引擎322产生的最终网络实现加以约束。在一些实施例中网络现是这样被创建的,它符合由所识别的网络策略320所限制的约束条件和由VIF对象332和网络对象335之间连接所限制的约束条件。
在一些实例中,网络策略引擎322可能无法识别符合一个或多个网络策略320或符合生命周期事件的网络对象335和VIF对象332的合适的网络配置。在这些例子中,可产生错误来使进程400停止。在一些实施例中,控制程序220还可进一步响应于该故障以便通过产生共同符合所识别的网络策略320的VIF对象332和/或网络对象335来识别先前存在的网络配置,并且实现生命周期事件操作。
在其他实施例中,控制程序220可拦截要求选择服务器来执行虚拟机、应用或服务的生命周期事件。例如当启动虚拟机232时,控制程序220需要选择有足够量的资源以服务虚拟机232的物理计算机201。在这个例子中,控制程序220可能不得不选择服务器或计算机来执行虚拟机232。在一些实施例中,选择服务器或计算机可以是部分地基于通过VIF对象332、虚拟化环境302或使用者与虚拟机232相关联的网络策略的进程。
在一些实例中,虚拟机生命周期事件可要求建立一个或多个网络连接。例如,如果虚拟机232包括建立网络连接的VIF对象332,当虚拟机232停止时,网络配置被中断。因此,当虚拟机重启时,网络配置可以根据一个或多个网络策略320重新建立。建立网络连接可包括:识别虚拟机232的VIF对象332的标签或标识符;确定标签是否别列入在网络对象335中;识别网络策略320;和选择符合网络策略320和VIF对象332与网络对象335之间所建立的连接的底层网络实现。
控制程序220或网络策略引擎322可使用所识别的网络策略320来为符合策略320的VIF对象332和网络对象335解析工具堆栈224元数据。当识别一个或多个VIF对象332、网络对象335和网络策略320时,网络策略引擎322可选择符合网络策略320约束条件和由VIF对象332和网络对象335所限制的连接的特定的底层网络实现。在一些实施例中,选择网络实现可包括执行穷举式或启发式搜索。在一些实施例中,有多个符合策略320和VIF对象/网络对象所要求的网络约束的网络实现。选择、产生或执行这个底层网络实现可包括选择和配置特定网络组件以使最终的网络符合网络策略320和VIF对象/网络对象连接。选择和执行该网络实现可包括创建或修改服务于所选择的网络配置(例如网络对象)接收/发送网络通信的隧道。创建或修改通信隧道可包括实现GRE隧道,ssh隧道,虚拟交换等。
在一个实施例中,当虚拟化环境302或控制程序220从执行在虚拟化环境302中的虚拟机232接收生命周期事件通知、标志或消息时,控制程序220可指导网络策略引擎322产生网络实现。产生和执行网络实现的方法可首先包括搜索遇到生命周期事件并使得产生生命周期事件通知的虚拟机的VIF对象332。该方法进一步该包括识别连接到VIF对象332或与VIF对象332相关的网络对象335。然后,识别网络策略320并且确定网络对象335与其所连接的VIF对象332是否符合网络策略320所限制的约束条件。当满足所述约束条件时,网络策略引擎323选择符合网络策略320且遵守网络对象335和VIF对象332之间连接的网络实现。当它们不符合约束条件时,产生指示没有符合策略320的VIF对象/网络对象的相应配置。
尽管已经参照附图描述和示意了一些示例实施例,应该理解这些实施例仅是说明性的而不限于此处所描述的方法和系统。另外地,可在硬件、可编程设备、固件、软件或上述组合中实现此处描述的方法和系统或它们的部分特征。此处描述的方法和系统或此处描述的方法和系统的一部分也可以在诸如如磁介质(例如,硬驱、软驱)、光介质(光盘,数字通用光盘)或半导体存储介质(易失的和非易失的)的处理器可读的存储介质或机器可读的介质中实现。

Claims (20)

1.一种虚拟化环境中使用网络策略选择网络实现的方法,所述方法包括:
由在计算设备上的虚拟化环境中执行的控制程序接收由虚拟机响应于虚拟机生命周期事件所产生的事件通知;
由所述控制程序响应于接收所述事件通知调用策略引擎;
由所述策略引擎应用网络策略到所述虚拟化环境中现有的网络配置,所述网络策略相应于所述虚拟机;
由所述策略引擎识别具有符合所述网络策略的属性的现有网络配置;
由所述策略引擎选择符合所述网络策略和所述网络配置的网络实现。
2.根据权利要求1所述的方法,其中接收由所述虚拟机产生的事件通知还包括接收由具有相应于包括所述网络策略的网络对象的虚拟接口对象的虚拟机产生的事件通知。
3.根据权利要求1所述的方法,其中响应于虚拟机生命周期事件产生事件通知还包括产生响应于包括启动虚拟机、迁移虚拟机、重启虚拟机和停止虚拟机的任何组合的虚拟机生命周期事件的事件通知。
4.根据权利要求1所述的方法,还包括识别包括虚拟接口对象和网络对象的一个或多个网络配置。
5.根据权利要求4所述的方法,其中识别一个或多个网络配置还包括解析所述控制程序的工具堆栈的元数据。
6.根据权利要求1所述的方法,其中响应于虚拟机生命周期事件产生事件通知还包括响应于要求执行服务器的虚拟机生命周期事件产生事件通知。
7.根据权利要求6所述的方法,还包括部分基于所述虚拟机的所述网络策略选择执行服务器。
8.根据权利要求1所述的方法,其中应用网络策略还包括应用指定网络通信是否要求加密的网络策略。
9.根据权利要求1所述的方法,其中应用网络策略还包括应用限制本地网络到单台主机的网络策略。
10.根据权利要求1所述的方法,其中应用网络策略还包括应用指定用于传送网络通信的一个或多个物理接口的网络策略。
11.一种虚拟化环境中使用网络策略选择网络实现的设备,所述设备包括:
用于由在计算设备上的虚拟化环境中执行的控制程序接收由虚拟机响应于虚拟机生命周期事件所产生的事件通知的装置;
用于由所述控制程序响应于接收所述事件通知调用策略引擎的装置;
用于由所述策略引擎应用网络策略到所述虚拟化环境中现有的网络配置的装置,所述网络策略相应于所述虚拟机;
用于由所述策略引擎识别具有符合所述网络策略的属性的现有网络配置的装置;以及
用于由所述策略引擎选择符合所述网络策略和所述网络配置的网络实现的装置。
12.根据权利要求11所述的设备,其中用于接收由所述虚拟机产生的事件通知的装置还包括用于接收由具有相应于包括所述网络策略的网络对象的虚拟接口对象的虚拟机产生的事件通知的装置。
13.根据权利要求11所述的设备,其中响应于虚拟机生命周期事件产生事件通知还包括产生响应于包括启动虚拟机、迁移虚拟机、重启虚拟机和停止虚拟机的任何组合的虚拟机生命周期事件的事件通知。
14.根据权利要求11所述的设备,还包括用于识别包括虚拟接口对象和网络对象的一个或多个网络配置的装置。
15.根据权利要求14所述的设备,其中用于识别一个或多个网络配置的装置还包括用于解析所述控制程序的工具堆栈的元数据的装置。
16.根据权利要求11所述的设备,其中响应于虚拟机生命周期事件产生事件通知还包括响应于要求执行服务器的虚拟机生命周期事件产生事件通知。
17.根据权利要求16所述的设备,还包括用于部分基于所述虚拟机的所述网络策略选择执行服务器的装置。
18.根据权利要求11所述的设备,其中用于应用网络策略的装置还包括用于应用指定网络通信是否要求加密的网络策略的装置。
19.根据权利要求11所述的设备,其中用于应用网络策略的装置还包括用于应用限制本地网络到单台主机的网络策略的装置。
20.根据权利要求11所述的设备,其中用于应用网络策略的装置还包括用于应用指定用于传送网络通信的一个或多个物理接口的网络策略的装置。
CN201110076194.XA 2010-03-23 2011-03-23 用于多虚拟机设备的网络策略实现 Expired - Fee Related CN102202049B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/729772 2010-03-23
US12/729,772 US8887227B2 (en) 2010-03-23 2010-03-23 Network policy implementation for a multi-virtual machine appliance within a virtualization environtment
US12/729,772 2010-03-23

Publications (2)

Publication Number Publication Date
CN102202049A CN102202049A (zh) 2011-09-28
CN102202049B true CN102202049B (zh) 2014-03-12

Family

ID=44512352

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110076194.XA Expired - Fee Related CN102202049B (zh) 2010-03-23 2011-03-23 用于多虚拟机设备的网络策略实现

Country Status (3)

Country Link
US (2) US8887227B2 (zh)
EP (2) EP2378711B1 (zh)
CN (1) CN102202049B (zh)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2972548B1 (fr) * 2011-03-08 2013-07-12 Thales Sa Dispositif pour l'amelioration de la tolerance aux fautes d'un processeur
US9054886B2 (en) 2011-07-11 2015-06-09 Oracle International Corporation System and method for using a multicast group to support a flooding mechanism in a middleware machine environment
US9332005B2 (en) 2011-07-11 2016-05-03 Oracle International Corporation System and method for providing switch based subnet management packet (SMP) traffic protection in a middleware machine environment
CN102307153A (zh) * 2011-10-14 2012-01-04 王宁 一种虚拟桌面传输设备和方法
US9294351B2 (en) * 2011-11-10 2016-03-22 Cisco Technology, Inc. Dynamic policy based interface configuration for virtualized environments
CN104247332B (zh) * 2012-02-20 2017-10-17 维图斯瑞姆Ip控股公司 处理关于虚拟机和网络之间的通信的流量的方法和系统
US9088570B2 (en) * 2012-03-26 2015-07-21 International Business Machines Corporation Policy implementation in a networked computing environment
US9195518B1 (en) * 2012-03-27 2015-11-24 Vmware, Inc. System and method for communicating production virtual machine access events to a service appliance in a virtualized environment
US8949931B2 (en) 2012-05-02 2015-02-03 Cisco Technology, Inc. System and method for monitoring application security in a network environment
US8843926B2 (en) * 2012-06-11 2014-09-23 Pristine Machine Guest operating system using virtualized network communication
CN103684838B (zh) * 2012-09-25 2017-02-08 华为技术有限公司 虚拟机的网络策略配置方法及装置、系统
US9280488B2 (en) 2012-10-08 2016-03-08 International Business Machines Corporation Asymmetric co-existent address translation structure formats
US9740624B2 (en) 2012-10-08 2017-08-22 International Business Machines Corporation Selectable address translation mechanisms within a partition
US9355032B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Supporting multiple types of guests by a hypervisor
US9348757B2 (en) 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
US9355040B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Adjunct component to provide full virtualization using paravirtualized hypervisors
US9600419B2 (en) 2012-10-08 2017-03-21 International Business Machines Corporation Selectable address translation mechanisms
US9471331B2 (en) * 2012-10-12 2016-10-18 Citrix Systems, Inc. Maintaining resource availability during maintenance operations
US9015714B2 (en) * 2012-11-27 2015-04-21 Citrix Systems, Inc. Diagnostic virtual machine created to monitor cluster of hypervisors based on user requesting assistance from cluster administrator
WO2014094287A1 (zh) * 2012-12-21 2014-06-26 华为技术有限公司 虚拟机控制策略的配置方法和交换机
US9219937B2 (en) 2013-01-10 2015-12-22 Yona Shaposhnik Universal multiplexer for content channels via injecting
KR20140103559A (ko) * 2013-02-18 2014-08-27 한국전자통신연구원 웹 기반 콘텐츠 서비스 이동을 위한 객체 이동 시스템 및 방법
US9246774B2 (en) 2013-02-21 2016-01-26 Hewlett Packard Enterprise Development Lp Sample based determination of network policy violations
US9672059B2 (en) * 2013-02-21 2017-06-06 Nec Corporation Virtualization system
CN103268250A (zh) * 2013-04-23 2013-08-28 深圳市京华科讯科技有限公司 基于虚拟化的内存复用系统
US20140359127A1 (en) * 2013-06-03 2014-12-04 Microsoft Corporation Zero touch deployment of private cloud infrastructure
CN103441986B (zh) * 2013-07-29 2017-05-17 中国航天科工集团第二研究院七〇六所 一种瘦客户端模式的数据资源安全管控方法
CN105659534A (zh) * 2013-09-16 2016-06-08 慧与发展有限责任合伙企业 多虚拟化方案选择
WO2015070376A1 (zh) * 2013-11-12 2015-05-21 华为技术有限公司 一种实现虚拟化安全的方法和系统
CN104717181B (zh) * 2013-12-13 2018-10-23 中国电信股份有限公司 虚拟安全网关的安全策略配置系统与方法
US9785576B2 (en) * 2014-03-27 2017-10-10 Intel Corporation Hardware-assisted virtualization for implementing secure video output path
US10530837B2 (en) * 2014-04-10 2020-01-07 International Business Machines Corporation Always-on monitoring in the cloud
US9413740B2 (en) * 2014-07-22 2016-08-09 Microsoft Technology Licensing, Llc Establishing secure computing devices for virtualization and administration
DE102014218215A1 (de) * 2014-09-11 2016-03-17 Siemens Aktiengesellschaft System zur Unterstützung bei intermittierender Konnektivität, ein entsprechendes lokales Gerät sowie eine entsprechende Rechnerwolken-Plattform
WO2016045082A1 (zh) * 2014-09-26 2016-03-31 华为技术有限公司 一种策略实现方法和装置以及系统
CN104408016B (zh) * 2014-10-14 2017-09-19 张世寅 受引导器控制的计算机智能设备及该设备的控制方法
US9766919B2 (en) * 2015-03-05 2017-09-19 Vmware, Inc. Methods and apparatus to select virtualization environments during deployment
CN107155403B (zh) * 2015-03-26 2019-11-29 华为技术有限公司 一种生命周期事件的处理方法及vnfm
US20160283259A1 (en) * 2015-03-28 2016-09-29 Mcafee, Inc. Management of agentless virtual machines via security virtual appliance
CN105162788B (zh) * 2015-09-17 2019-07-26 深信服科技股份有限公司 网络权限的控制系统及方法
US10505791B2 (en) 2016-12-16 2019-12-10 Futurewei Technologies, Inc. System and method to handle events using historical data in serverless systems
US10838747B2 (en) * 2017-12-14 2020-11-17 Hewlett Packard Enterprise Development Lp Virtual appliances
CN111262740B (zh) * 2020-01-18 2022-12-23 苏州浪潮智能科技有限公司 一种通过网络策略模板创建云主机的方法、系统及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101076782A (zh) * 2004-12-10 2007-11-21 英特尔公司 提供虚拟刀片服务器的方法和装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2419701A (en) * 2004-10-29 2006-05-03 Hewlett Packard Development Co Virtual overlay infrastructure with dynamic control of mapping
US9137251B2 (en) * 2005-03-16 2015-09-15 Fortinet, Inc. Inheritance based network management
US8370819B2 (en) * 2005-03-25 2013-02-05 Microsoft Corporation Mechanism to store information describing a virtual machine in a virtual disk image
US8799980B2 (en) 2005-11-16 2014-08-05 Juniper Networks, Inc. Enforcement of network device configuration policies within a computing environment
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US8949826B2 (en) * 2006-10-17 2015-02-03 Managelq, Inc. Control and management of virtual systems
US8458695B2 (en) * 2006-10-17 2013-06-04 Manageiq, Inc. Automatic optimization for virtual systems
BRPI0808859A2 (pt) 2007-03-12 2014-09-09 Citrix Systems Inc Sistemas e métodos para configurar, aplicar e gerenciar políticas de segurança
CN102217228B (zh) 2007-09-26 2014-07-16 Nicira股份有限公司 管理和保护网络的网络操作系统
US8667556B2 (en) * 2008-05-19 2014-03-04 Cisco Technology, Inc. Method and apparatus for building and managing policies
US20100199351A1 (en) * 2009-01-02 2010-08-05 Andre Protas Method and system for securing virtual machines by restricting access in connection with a vulnerability audit
US8844040B2 (en) * 2009-03-20 2014-09-23 Citrix Systems, Inc. Systems and methods for using end point auditing in connection with traffic management

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101076782A (zh) * 2004-12-10 2007-11-21 英特尔公司 提供虚拟刀片服务器的方法和装置

Also Published As

Publication number Publication date
EP2378711A1 (en) 2011-10-19
EP2958257B1 (en) 2018-08-29
US20110239268A1 (en) 2011-09-29
US8887227B2 (en) 2014-11-11
CN102202049A (zh) 2011-09-28
EP2958257A1 (en) 2015-12-23
US9344334B2 (en) 2016-05-17
US20150040183A1 (en) 2015-02-05
EP2378711B1 (en) 2015-08-12

Similar Documents

Publication Publication Date Title
CN102202049B (zh) 用于多虚拟机设备的网络策略实现
CN102368201B (zh) 虚拟化环境中存储优化选择
US10938642B2 (en) Network offering in cloud computing environment
CN104067288B (zh) 存储加密方法
EP2812799B1 (en) Tagging physical resources in a cloud computing environment
US9083651B2 (en) Controlling a network interface using virtual switch proxying
CN102971722B (zh) 用于创建和传送加密的虚拟盘的系统和方法
CN102446121B (zh) 根据用户指定的虚拟机指标分配虚拟机
US9703581B2 (en) Managing unallocated server farms in a desktop virtualization system
US20150160877A1 (en) System Updates With Personal Virtual Disks
CN104487943A (zh) 受信文件间接操作
CN104487959A (zh) 虚拟机的安全管理
CN104246703A (zh) 为云资源指定状态
CN102754077A (zh) 可从外部媒体装置引导的安全虚拟化环境
Gogouvitis et al. Seamless computing in industrial systems using container orchestration
US20220300611A1 (en) Run-time communications protocol parameter adjustment in containerized applications
KR20150108682A (ko) 복수의 가상머신을 포함하는 vdi 서버에서의 소프트웨어 설치방법 및 이를 이용하는 vdi 서버

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140312

CF01 Termination of patent right due to non-payment of annual fee