CN112136113A - 在虚拟交换机维修期间维持表观连接性 - Google Patents
在虚拟交换机维修期间维持表观连接性 Download PDFInfo
- Publication number
- CN112136113A CN112136113A CN201980031565.7A CN201980031565A CN112136113A CN 112136113 A CN112136113 A CN 112136113A CN 201980031565 A CN201980031565 A CN 201980031565A CN 112136113 A CN112136113 A CN 112136113A
- Authority
- CN
- China
- Prior art keywords
- virtual switch
- host
- network adapter
- virtual
- agent
- 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.)
- Pending
Links
- 230000006855 networking Effects 0.000 claims abstract description 76
- 238000012423 maintenance Methods 0.000 claims abstract description 44
- 230000006870 function Effects 0.000 claims description 287
- 238000005192 partition Methods 0.000 claims description 128
- 238000000034 method Methods 0.000 claims description 51
- 238000005538 encapsulation Methods 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 32
- 238000012546 transfer Methods 0.000 claims description 29
- 230000001133 acceleration Effects 0.000 claims description 17
- 230000002085 persistent effect Effects 0.000 claims description 4
- 239000003795 chemical substances by application Substances 0.000 description 280
- 230000008439 repair process Effects 0.000 description 29
- 239000000872 buffer Substances 0.000 description 17
- 230000008569 process Effects 0.000 description 16
- 238000012544 monitoring process Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 101150011258 Crppa gene Proteins 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000002405 diagnostic procedure Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/64—Routing or path finding of packets in data switching networks using an overlay routing layer
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
-
- 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/45591—Monitoring or debugging support
-
- 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/45595—Network integration; Enabling network access in virtual machine instances
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/082—Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0895—Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提出了用于虚拟联网层中的虚拟交换机的维修的各种创新。这些创新包括针对虚拟联网层的新架构以及在维修虚拟交换机时执行的新操作。在某些示例实现中,在虚拟交换机维修期间,对实际网络连接性的中断最小——在表示网络连接故障的超时阈值以下。在维修虚拟交换机时,可以维持针对主机、VM和物理网络适配器的连接。尽管发生对实际网络连接性的某种中断,但是在虚拟交换机的维修期间,可以维持VM与虚拟交换机之间的连接之上的表观连接性(对于VM)。类似地,在虚拟交换机的维修期间,可以维持主机与虚拟交换机之间的连接之上的表观连接性(对于主机)。
Description
版权公告
该专利文件的公开的一部分包含受版权保护的材料。版权所有者不反对任何人以在专利和商标局专利文件或记录中的形式拓制(facsimile reproduction)专利文件或专利公开,但是保留其他所有版权。
背景技术
在计算机系统中,硬件虚拟化使计算机系统的硬件的低层细节对用户抽象化,而不是呈现其资源可以被使用的虚拟计算平台。通常,计算机系统的输入设备、输出设备、网络适配器和其他硬件设备在虚拟平台中被呈现为逻辑抽象。计算机系统的处理单元、存储器、存储装置也类似地对用户隐藏。在很多常见配置中,计算机系统支持多个分区。在主机(父或根)分区中,主机控制在一个或多个来宾(guest)(子)分区中如何使用虚拟平台。在来宾分区中,主机创建来宾软件在其中执行的模拟计算机环境——虚拟机(“VM”)。可以使用虚拟平台的虚拟化资源将来宾OS安装在VM中,并且应用可以与VM中的来宾OS相结合执行。VM中的来宾OS和应用的执行就像直接在物理硬件上运行一样,尽管在访问系统资源方面有一些限制。主机可以访问计算机系统的硬件资源。当VM中的来宾OS或应用使用虚拟化资源时,主机可以调解(mediate)对计算机系统的硬件资源的访问。这样可以防止来宾软件滥用或过度使用系统资源,诸如网络访问、存储、存储器和处理单元。
虚拟平台可以隐藏用于访问网络的物理网络适配器的细节。相反,来宾分区中的来宾软件通过虚拟联网层连接到网络。在物理网络中,网络交换机具有多个端口,并且将流量从网络交换机的任何一个端口路由到网络交换机的任何其他端口。类似地,虚拟联网层可以包括虚拟交换机,虚拟交换机能够将流量从虚拟交换机的任何一个端口路由到虚拟交换机的任何其他端口。在通常的配置中,虚拟交换机的端口之一连接到物理网络适配器(其连接到外部网络),并且虚拟交换机的其他端口连接到VM。虚拟交换机允许一个物理网络适配器为任意数目的VM提供网络连接性。虚拟交换机还可以连接到主机。
不时地,虚拟交换机被更新或以其他方式改变。为了交换虚拟交换机的版本,到虚拟交换机的连接被断开或禁用。实际上,改变虚拟交换机的版本可以涉及(1)禁用针对主机的物理网络适配器,(2)禁用针对VM的虚拟网络适配器,(3)禁用针对主机的虚拟网络适配器,(4)从存储器中卸载虚拟交换机的先前版本,(5)将虚拟交换机的当前版本加载到存储器中,(6)恢复/启用针对主机的物理网络适配器,(7)恢复/启用针对VM的虚拟网络适配器,以及(8)恢复/启用针对主机的虚拟网络适配器。禁用物理或虚拟网络适配器可能会断开由主机或VM使用的网络连接。这可能导致在主机或VM上运行的应用停止,或者以其他方式导致在主机或VM管理网络连接的丢失和恢复时对应用的干扰(disruption)。VM的状态可能需要被保存,然后恢复,或者可能需要重新启动应用,从而可能导致大量停机时间、正确应用状态丢失和/或数据丢失。特别地,针对在主机上运行的应用的功能(例如,监测VM,执行诊断测试,或跟踪在主机或VM上运行的哪些应用处于活动状态)的丢失可能会给云服务提供商(其可以为企业或其他组织托管商业Web服务或关键基础设施服务)带来大量停机时间和收入损失。即使可以很好地管理针对主机和VM的网络连接丢失,在维修虚拟交换机的过程中,针对主机和VM的网络连接性也会中断。对于云服务提供商,虚拟交换机维修的后果可能是一个重大的问题。根据服务协议的条款,如果网络连接性中断的时间长于最小持续时间,则可能需要云服务提供商提供大幅折扣或支付退款。
发明内容
总的来说,详细描述提出了对于虚拟联网层中的虚拟交换机的维修的各种创新。这些创新包括针对虚拟联网层的新架构以及在维修虚拟交换机时执行的新操作。在某些示例实现中,在虚拟交换机维修期间,对实际网络连接性的中断最小——在表示网络连接故障的超时阈值以下。在虚拟交换机被维修时,可以维持针对主机、VM和物理网络适配器的连接。尽管发生对于实际网络连接性的某种中断,但是在虚拟交换机的维修期间,可以维持在VM与虚拟交换机之间的连接之上的表观连接性(apparent connectivity)(针对VM)。类似地,在虚拟交换机的维修期间,可以维持主机与虚拟交换机之间的连接之上的表观连接性(针对主机)。
根据本文中描述的创新的一个方面,一种计算机系统提供虚拟联网层。虚拟联网层包括虚拟交换机和虚拟交换机代理。虚拟交换机被配置为在虚拟交换机的多个端口之间传送数据。对于(多个)VM中的每个VM,虚拟交换机代理配置为调解VM与虚拟交换机之间通过VM网络适配器的连接之上的数据的传送。虚拟交换机代理还被配置为当改变虚拟交换机的版本时,存留(persist)对通过VM网络适配器的连接的特征进行限定的状态信息。这支持通过VM网络适配器的连接之上的、针对VM的表观连接性的维持。例如,虚拟交换机代理可以被配置为保存和取回针对连接的VM网络适配器的状态信息,和/或保存和取回针对虚拟交换机与VM之间的通道的状态信息。
虚拟联网层还可以包括主机网络适配器代理。主机网络适配器代理被配置为对于连接到虚拟联网层的主机,调解主机与虚拟交换机之间通过主机虚拟网络适配器的连接之上的数据的传送。主机网络适配器代理还被配置为当改变虚拟交换机的版本时,存留对通过主机虚拟网络适配器的连接的特征进行限定的状态信息。这支持通过主机虚拟网络适配器的连接之上的、针对主机的表观连接性的维持。例如,主机网络适配器代理可以被配置为保存和取回针对连接的主机虚拟网络适配器的状态信息,和/或保存和取回针对主机物理网络适配器的状态信息。
根据本文中描述的创新的另一方面,在提供虚拟联网层的计算机系统中,编排代理方执行用于维修虚拟交换机的操作。编排代理暂停通过虚拟交换机的网络流量,并且对于连接到虚拟交换机的(多个)VM中的每个VM,保存针对VM与虚拟交换机之间的连接的VM网络适配器的状态信息。编排代理方从存储器卸载虚拟交换机的第一版本,并且将虚拟交换机的第二版本加载到存储器中。对于(多个)VM中的每个VM,编排代理方取回针对VM与虚拟交换机之间的连接的VM网络适配器的状态信息,并且恢复VM网络适配器的状态。然后,编排代理方继续通过虚拟交换机的网络流量。以这种方式,对于VM,可以在虚拟交换机的维修期间维持其到虚拟交换机的连接之上的表观连接性。
编排代理方还可以执行涉及主机物理网络适配器的操作。例如,在暂停通过虚拟交换机的网络流量之前,编排代理方可以保存针对主机物理网络适配器的状态信息,并且释放从主机物理网络适配器分配的用于流量加速的任何硬件资源。在将虚拟交换机的第二版本加载到存储器中之后,编排代理方可以取回针对主机物理网络适配器的状态信息并且恢复主机物理网络适配器的状态。在继续通过虚拟交换机的网络流量之后,编排代理方可以绑定到主机物理网络适配器,从而启用从主机物理网络适配器分配硬件资源以用于流量加速。以这种方式,对于主机,可以在虚拟交换机的维修期间维持其到虚拟交换机的连接之上的表观连接性。
根据本文中描述的创新的另一方面,在提供虚拟联网层的计算机系统中,一个或多个服务管理器执行用于配置虚拟联网层的操作。(多个)服务管理器将虚拟交换机代理加载到存储器中,并且将虚拟交换机加载到存储器中。(多个)服务管理器向虚拟交换机代理注册虚拟交换机。对于(多个)VM中的每个VM,(多个)服务管理器创建VM与虚拟交换机之间的连接。(多个)服务管理器还可以将主机网络适配器代理加载到存储器中,并且向主机网络适配器代理注册虚拟交换机。以这种方式,(多个)服务管理器可以初始化虚拟联网层以执行用于维修虚拟交换机的操作,如上所述。
本发明可以实现为方法的一部分、被配置为执行该方法的计算机系统的一部分、或存储有用于使计算机系统执行该方法的计算机可执行指令的有形计算机可读介质的一部分。各种创新可以组合使用,也可以分别使用。提供本发明内容以便以简化的形式介绍概念的选择,这些概念将在下面的具体实施方式中进一步描述。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。通过以下参考附图进行的详细描述,本发明的前述和其他目的、特征和优点将变得更清楚。
附图说明
图1是示出可以在其中实现一些所描述的实施例的示例计算机系统的图。
图2是示出使用硬件虚拟化的示例计算机系统的图。
图3a、3b和4是示出示例架构的图,该示例架构包括具有虚拟交换机和虚拟交换机代理的网络虚拟化层。
图5a-5e是函数原型、接口、在注册中使用的参数、以及针对虚拟交换机和主机网络适配器代理的其他结构的列表。
图6a-6i是函数原型、接口、在注册中使用的参数、以及针对虚拟交换机和虚拟交换机代理的其他结构的列表。
图7a和7b是示出用于配置具有虚拟交换机和虚拟交换机代理的网络虚拟化层的示例技术的流程图。
图8a和8b是示出用于维修虚拟交换机的示例技术的流程图。
具体实施方式
详细描述提出了针对虚拟联网层中的虚拟交换机的维修的各种创新。特别地,这些创新包括用于虚拟联网层的新架构以及在维修虚拟交换机时执行的新操作。在一些示例实现中,限定连接的各种特征的状态信息在卸载虚拟交换机的先前版本之前被存留,然后被用于在加载虚拟交换机的当前版本之后恢复连接的状态。对实际网络连接性的中断是最小的——低于表示网络连接故障的超时阈值。取决于实现,这些创新可以提供各种优势。
例如,可以在虚拟交换机维修期间维持针对主机的表观网络连接性。在虚拟交换机维修期间,在主机上运行的应用(例如,监测应用、诊断应用)可以继续正常操作,而不会丢失应用状态或数据,并且对联网操作的干扰很小或没有。在虚拟交换机维修期间,可以将网络流量缓冲在虚拟联网层中,然后正常递送。
作为另一示例,从主机的角度来看,在虚拟交换机维修期间,网络适配器的状态可以看起来可操作。主机网络适配器代理可以在虚拟交换机维修期间保持在存储器中,使得主机在表观上保持(通过虚拟交换机)连接到网络适配器。或者,虚拟交换机代理可以在虚拟交换机维修期间保持在存储器中,使得主机在表观上保持(通过虚拟交换机)连接到网络适配器。在虚拟交换机维修期间,在主机上运行的应用无需执行特殊操作来维持网络连接。
作为另一示例,可以在不禁用主机物理网络适配器的情况下进行虚拟交换机维修。可以保存针对主机物理网络适配器的状态信息,该信息然后被取回以便快速恢复主机物理网络适配器的状态。
作为另一示例,可以在虚拟交换机维修期间维持针对VM的表观网络连接性。在虚拟交换机维修期间,在VM上运行的应用可以继续正常操作,而不会丢失应用状态或数据,并且对联网操作的干扰很小或没有。在虚拟交换机维修期间,可以将网络流量缓冲在虚拟联网层中,然后正常递送。
作为另一示例,从虚拟机的角度来看,在虚拟交换机维修期间,网络适配器的状态可以看起来可操作。虚拟交换机代理可以在虚拟交换机维修期间保持在存储器中,使得VM在表观上保持(通过虚拟交换机)连接到网络适配器。在虚拟交换机维修期间,在VM上运行的应用无需执行特殊操作来维持网络连接。
作为另一示例,VM可以在虚拟交换机维修期间继续运行。尽管交换了提供网络连接性的虚拟交换机的版本,但是仍然可以避免VM暂停和重新启动。
作为另一示例,可以加快虚拟交换机维修的过程。通过在虚拟交换机代理和/或主机网络适配器代理中保存/取回状态信息,可以快速恢复到虚拟交换机的连接的状态,而无需断开(tear down)和重新创建连接。此外,通过在虚拟交换机维修启动之前释放被分配用于流量加速的硬件资源(而网络流量仍然可以缓慢流过虚拟交换机),可以减少由虚拟交换机维修消耗的时间。
因此,在虚拟交换机被维修时,可以维持针对主机、VM和物理网络适配器的连接。尽管发生对实际网络连接性的某些中断,但是在虚拟交换机的维修期间,可以维持连接之上的表观连接性。
尽管虚拟交换机与网络适配器(例如,虚拟网络适配器或物理网络适配器)之间的连接可以是直接的,但是通常,该连接穿过中间驱动的一层或多层。虚拟交换机与网络适配器(例如,虚拟网络适配器或物理网络适配器)之间的连接可以使用虚拟交换机与网络适配器之间的逻辑通信通道(诸如VM总线通道或其他通道)。术语“连接”不表示或暗示两个连接的组件之间的直接物理连接。
本文中描述的示例的各种替代是可能的。例如,通过改变所描述的方法动作的顺序、分割、重复或省略某些方法动作等,可以更改本文中描述的一些方法。所公开的技术的各个方面可以组合或单独使用。不同实施例使用所描述的创新中的一项或多项。本文中描述的一些创新解决了背景技术中提到的一个或多个问题。通常,给定技术/工具不能解决所有这样的问题。
I.示例计算机系统。
图1示出了可以在其中实现所描述的一些创新的合适的计算机系统(100)的一般示例。本文中描述的创新涉及虚拟交换机维修。除了其在虚拟交换机维修中的使用,计算机系统(100)并不旨在对使用或功能范围提出任何限制,因为本发明可以在各种计算机系统中实现,包括被适配用于联网和/或硬件虚拟化的专用计算机系统。
参考图1,计算机系统(100)包括中央处理单元(“CPU”)的一个或多个处理核心(110……11x)和本地片上存储器(118)。(多个)处理核心(110……11x)执行计算机可执行指令。(多个)处理核心(110……11x)的数目取决于实现,并且例如可以是4或8个。本地存储器(118)可以是由相应(多个)处理核心(110……11x)可访问的易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)或这两者的某种组合。
本地存储器(118)可以以计算机可执行指令的形式存储实现在虚拟交换机的维修期间维持表观连接性的虚拟联网层的软件(180),以用于相应处理核心(110……11x)执行操作。在图1中,本地存储器(118)是片上存储器,诸如一个或多个高速缓存,利用处理核心(110……11x)对该存储器的访问操作、传输操作等较快。
计算机系统(100)可以包括图形处理单元(“GPU”)的处理核心(未示出)和本地存储器(未示出)。GPU的处理核心的数目取决于实现。替代地,计算机系统(100)包括片上系统(“SoC”)的一个或多个处理核心、专用集成电路(“ASIC”)或其他集成电路、以及相关联的存储器。(多个)处理核心可以执行用于虚拟交换机维修的一种或多种创新的计算机可执行指令。
计算机系统(100)包括共享存储器(120),该共享存储器可以是由(多个)处理核心可访问的易失性存储器(例如,RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)或这两者的某种组合。存储器(120)存储以计算机可执行指令的形式实现在虚拟交换机的维修期间维持表观连接性的虚拟联网层的软件(180)。在图1中,共享存储器(120)是片外存储器,利用处理核心对该存储器的访问操作、传输操作等较慢。
计算机系统(100)包括一个或多个网络适配器(140)。如本文中使用的,术语网络适配器表示任何网络接口卡(“NIC”)、网络接口、网络接口控制器或网络接口设备。通常,网络适配器支持数据链路层和物理层处的通信。根据其角色,网络适配器可以是软件(例如,VM网络适配器或主机虚拟网络适配器)或硬件(例如,主机物理网络适配器)。(多个)网络适配器(140)使得能够通过网络与另一计算实体(例如,服务器、其他计算机系统)通信。网络可以是广域网、局域网、存储区域网或其他网络。(多个)网络适配器(140)可以支持用于广域网、局域网、存储区域网或其他网络的有线连接和/或无线连接。例如,(多个)网络适配器(140)可以包括一个或多个Wi-Fi收发器、以太网端口、蜂窝收发器和/或另一种类型的网络适配器、以及相关联的驱动、软件等。(多个)网络适配器(140)通过(多个)网络连接以调制数据信号传送数据。调制数据信号是一种信号,它的一个或多个特性以使得能够将信息编码在信号中的方式进行设置或改变。作为示例而非限制,网络连接可以使用电、光、RF或其他载波。
计算机系统(100)还包括一个或多个输入设备(150)。(多个)输入设备可以是诸如键盘、鼠标、笔或轨迹球等触摸输入设备、扫描设备、或向计算机系统(100)提供输入的另一设备。计算机系统(100)还可以包括相机输入、音频输入、运动传感器/跟踪器输入、游戏控制器输入、媒体播放器和/或视频输入。
计算机系统(100)包括一个或多个输出设备(160)。(多个)输出设备(160)可以是打印机、CD刻录机、或提供来自计算机系统(100)的输出的另一设备。视频输出可以将视频输出提供给显示设备。音频输出可以将音频输出提供给一个或多个扬声器。
存储装置(170)可以是可移除的或不可移除的,并且包括磁介质(诸如磁盘、磁带或盒式磁带)、光盘介质、和/或可以用于存储信息并且可以在计算机系统(100)内被访问的任何其他介质。存储装置(170)存储用于实现在虚拟交换机的维修期间维持表观连接性的虚拟联网层的软件(180)的指令。
诸如总线、控制器或网络等互连机制(未示出)使计算机系统(100)的组件互连。通常,操作系统软件(未示出)为在计算机系统(100)中执行的其他软件提供操作环境,并且协调计算机系统(100)的组件的活动。
图1的计算机系统(100)是物理计算机系统(例如,用于主机计算机系统)。虚拟机可以包括如图1所示组织的组件。
本发明可以在计算机可读介质的一般上下文中描述。计算机可读介质是可以在计算环境内被访问的任何可用的有形介质。作为示例而非限制,对于计算机系统(100),计算机可读介质包括存储器(118、120)、存储装置(170)及其组合。术语计算机可读介质不包括瞬态传播信号或载波。
创新可以在被执行在目标真实或虚拟处理器上的计算机系统中的计算机可执行指令的一般上下文中描述。计算机可执行指令可以包括在通用处理器的处理核心上可执行以提供本文中描述的功能的指令、可执行以控制GPU或专用硬件提供本文中描述的功能的指令、在GPU的处理核心上可执行以提供本文中描述的功能的指令、和/或在专用处理器的处理核心上可执行以提供本文中描述的功能的指令。在一些实现中,计算机可执行指令可以在程序模块中被组织。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。在各种实施例中,程序模块的功能可以根据期望在程序模块之间被组合或分割。用于程序模块的计算机可执行指令可以在本地或分布式计算机系统内执行。
通常,计算机系统或设备可以是本地的或分布式的,并且可以包括专用硬件和/或硬件与实现本文中描述的功能的软件的任何组合。为了呈现,详细描述使用诸如“确定”、“接收”和“提供”等术语来描述计算机系统中的计算机操作。这些术语表示由计算机执行的操作,并且不应当与由人类执行的行为相混淆。与这些术语相对应的实际计算机操作取决于实现。
II.针对硬件虚拟化的示例架构。
本部分描述针对硬件虚拟化的示例架构。图2示出了使用硬件虚拟化的计算机系统(200)。计算机系统(200)包括用户模式软件层(210)、内核模式软件层(220)、虚拟化层(230)和物理硬件(240)。
物理硬件(240)包括各种类型的硬件设备。例如,物理硬件(240)包括处理核心、存储器、存储装置、一个或多个网络适配器、输入设备和/或输出设备,如参考图1的计算机系统(100)所述。特别地,物理硬件(240)包括至少一个主机物理网络适配器,该主机物理网络适配器可配置为连接到外部网络,该外部网络可以是广域网、局域网、存储区域网或其他网络。
虚拟化层(230)是在物理硬件(240)与在分区中运行的OS之间运行的软件层。虚拟化层(230)抽象出计算机系统(200)的物理硬件(240)的低层细节。虚拟化层(230)将计算机系统(200)的输入设备、输出设备、网络适配器和其他硬件设备呈现为可以从分区被使用的资源。虚拟化层(230)类似地隐藏处理核心、存储器和存储装置的细节,而不是呈现可以分配给分区的系统资源。
通过虚拟化层(230),计算机系统(200)支持多个分区,这些分区是隔离的执行环境。分区包括主机(父或根)分区(示出为分区0)和多个来宾(子)分区(示出为分区1……n)。虚拟化层(230)为每个分区提供一组虚拟化资源,诸如存储器、处理周期、输入设备、输出设备、网络适配器等。虚拟化层(230)可以管理用于访问来自不同分区的资源的策略。
主机分区包括用于主机的软件,该软件管理计算机系统(200)的资源并且控制如何在其他分区中使用虚拟化层(230)。主机分区负责启动虚拟化层(230)以及创建来宾分区。通常,主机至少对于某些类型的资源具有对计算机系统(200)的物理硬件(240)的特权访问。主机有时称为管理OS、控制程序、虚拟机监测器或主机软件。
每个来宾分区包括虚拟机(“VM”),VM是来宾软件在其中执行的模拟计算机环境。例如,VM是虚拟来宾计算机,该虚拟来宾计算机以软件实现并且被托管在来宾分区中。每个VM在不同的来宾分区中执行。通常,VM在来宾分区的隔离环境中模拟完整的计算机系统。VM可以托管来宾OS,其中应用在VM中的来宾OS上运行。通常,VM具有对计算机系统(200)的物理硬件(240)资源的非特权访问,而不是直接访问。VM中的来宾软件可以使用通过虚拟化层显露(expose)的虚拟化资源(230)。当VM中的来宾软件使用虚拟化资源时,请求可以被定向到主机,该请求调解对物理硬件的资源的访问(240)。
在分区0中,内核模式软件层(220)包括用于管理OS的驱动和资源。一些驱动/资源用于访问计算机系统(200)的物理硬件(240)。分区0中的其他驱动/资源与虚拟化层(230)交互以调解对计算机系统(200)的资源的访问,或者与分区1……n中的驱动/资源交互。特别地,对于分区0,内核模式软件层(220)的驱动/资源包括网络协议驱动(例如,用于TCP/IP)和虚拟联网层组件(诸如虚拟网络适配器、虚拟交换机、虚拟交换机代理、主机网络适配器代理和/或主机物理网络适配器驱动)。
在分区1……n中的每个分区中,内核模式软件层(220)包括用于VM的来宾OS的驱动和资源。在分区1……n中,驱动/资源与虚拟化层(230)交互以请求和使用计算机系统(200)的资源(如通过虚拟化层(230)显露的),或者与分区0中的驱动/资源交互。特别地,对于分区1……n,内核模式软件层(220)的驱动/资源包括网络协议驱动(例如,用于TCP/IP)和虚拟联网层组件(诸如VM网络适配器和/或网络虚拟服务客户端)。
从概念上讲,内核模式软件层(220)与虚拟化层(230)之间存在一些相似之处。这两个层都抽象出资源的低层细节,并且向高层组件呈现对这些资源的访问。然而,通常,内核模式软件层(220)的驱动/资源被分配给特定分区并且在该分区内执行(尽管虚拟联网层中的驱动/资源支持某种分区间通信)。虚拟化层(230)支持主机与不同分区中的VM之间的通信。
用户模式软件层(210)包括在分区中运行并且使用内核模式软件层(220)的驱动/资源的软件。在分区1……n中,用户模式软件层(210)包括在VM中执行的任意应用。这些应用的执行就像直接在物理硬件上运行一样,尽管在访问系统资源方面有一些限制。在分区0中,用户模式软件层(210)包括代表主机执行的任意应用、以及服务、代理等。
III.针对虚拟联网层的示例架构。
本部分描述可以在其中有效地维修虚拟交换机的虚拟联网层的示例架构。取决于配置,虚拟联网层可以将一个或多个虚拟机(“VM”)连接到主机和/或外部网络。在示例架构中的一些示例架构中,虚拟联网层包括虚拟交换机和虚拟交换机代理。在其他示例架构中,虚拟联网层包括虚拟交换机、虚拟交换机代理和主机网络适配器代理。
A.示例虚拟交换机。
物理网络交换机具有多个端口,并且将流量从网络交换机的任何一个端口路由到网络交换机的任何其他端口。类似地,虚拟联网层中的虚拟交换机能够将流量从虚拟交换机的一个端口路由到虚拟交换机的另一端口。通常,虚拟交换机可以将流量从虚拟交换机的任何端口路由到虚拟交换机的任何其他端口,但是替代地,某些部分可以与其他端口隔离或分离。在一些配置中,虚拟交换机的端口之一连接到物理网络适配器,该物理网络适配器连接到外部网络,而虚拟交换机的其他端口连接到VM。VM通过虚拟网络适配器(VM网络适配器)连接到虚拟交换机。在一些示例实现中,VM网络适配器具有媒体访问控制(“MAC”)地址。以这种方式,虚拟交换机允许一个物理网络适配器为任何数目的VM提供网络连接。通过将分组转发到目标的虚拟交换机,VM可以将分组发送到主机(通过针对主机的虚拟网络适配器),将分组发送到另一VM(通过针对该VM的VM网络适配器),或者通过外部网络(通过物理网络适配器)发送分组。
虚拟交换机可以连接到主机,从而使得主机能够通过虚拟交换机与VM通信和/或连接到外部网络。主机通过虚拟网络适配器(主机虚拟网络适配器)连接到虚拟交换机。在一些示例实现中,主机虚拟网络适配器具有MAC地址。通过将分组转发到目标的虚拟交换机,主机可以将分组发送到VM(通过针对VM的VM网络适配器),或者通过外部网络(通过物理网络适配器)发送分组。
虚拟交换机例如使用MAC地址以处理分组并且将其转发到目的地,来执行作为交换机(或集线器或网桥)的基本路由功能。这提供了根据OSI网络堆栈模型的“第2层”功能。在一些示例实现中,虚拟交换机还可以用作路由器,提供根据OSI网络堆栈模型的“第3层”功能。
在一些示例实现中,虚拟交换机是可扩展的。交换机扩展是附接到虚拟交换机的过滤器驱动。虚拟交换机可以包括执行其他功能的扩展,诸如捕获网络流量、过滤网络流量、监测网络流量或转发网络流量(向连接到虚拟交换机端口的虚拟或物理网络适配器转发)。
在一些示例实现中,虚拟交换机可以被配置为用作私有虚拟交换机、内部虚拟交换机或外部虚拟交换机。如果虚拟交换机被配置为用作私有虚拟交换机,则(a)虚拟交换机的端口中的至少两个端口中的每个端口连接到不同VM,(b)虚拟交换机的所有端口均未连接到外部网络,并且(c)虚拟交换机的所有端口均未连接到主机。通过私有虚拟交换机,可以在任何两个VM(而不是主机或外部网络)之间交换网络流量。如果虚拟交换机被配置为用作内部虚拟交换机,则(a)虚拟交换机的端口中的至少一个端口中的每个端口连接到不同VM,(b)虚拟交换机的所有端口均未连接到外部网络,并且(c)虚拟交换机通过主机虚拟网络适配器连接到主机。通过内部虚拟交换机,可以在任何两个VM之间或在任何VM与主机(而不是外部网络)之间交换网络流量。如果虚拟交换机被配置为用作外部虚拟交换机,则(a)虚拟交换机的端口中的至少一个端口中的每个端口连接到不同VM,(b)虚拟交换机的端口之一通过主机物理网络适配器连接到外部网络,并且(c)虚拟交换机可以通过主机虚拟网络适配器连接到主机。通过外部虚拟交换机,可以在任何两个VM之间、在任何VM与主机之间、在任何VM与外部网络之间、或在主机与外部网络之间交换网络流量。
B.具有虚拟交换机代理的示例虚拟联网层。
本部分描述包括具有虚拟交换机代理的虚拟联网层的示例架构。在图3a的示例架构(301)中,虚拟交换机(350)支持针对在不同分区中运行的主机和多个VM的网络操作。主机在分区0中运行,并且VM分别在分区1……n中运行。
一个或多个应用(310)在主机分区中运行。(多个)应用(310)可以包括监测代理方、诊断应用、和/或检查主机分区和来宾分区中的应用的活动的应用,该应用向中央服务器报告“活跃度(liveliness)”更新。(多个)应用(310)还可以包括另一任意应用。
(多个)应用(310)绑定到网络堆栈(320)。网络堆栈(320)向(多个)应用(310)提供联网服务,实现一个或多个联网协议(例如,TCP/IP、UDP/IP、或传输协议和网络协议的其他组合)。网络堆栈(320)绑定到主机虚拟网络适配器(330)。例如,主机虚拟网络适配器(330)是主机虚拟NIC。
主机虚拟网络适配器(330)在主机分区中运行。当虚拟交换机(350)连接到外部网络时,主机虚拟网络适配器(330)可以绑定到主机物理网络适配器(360)。在这种配置中,主机虚拟网络适配器(330)模仿主机物理网络适配器(360),并且通过虚拟交换机(350)向主机物理网络适配器(360)和从主机物理网络适配器(360)或VM网络适配器(331……33n)之一转发分组。替代地,主机虚拟网络适配器(330)可以绑定到中间驱动(例如,NDIS多路复用器),该中间驱动绑定到由主机物理网络适配器(360)表示的一组一个或多个物理网络适配器。在这种配置中,对虚拟交换机(350)的扩展被显露给该组中的每个网络适配器,并且可以潜在地管理该组中的网络适配器。当虚拟交换机(350)未连接到外部网络时,主机虚拟网络适配器(330)未绑定到主机物理网络适配器(360),但是仍然可以用于通过虚拟交换机(350)向VM网络适配器(331……33n)之一和从VM网络适配器(331……33n)之一转发分组。
在主机分区中,一个或多个其他主机服务、进程和/或代理方(agent)(339)运行。例如,在主机分区中运行的一个或多个服务管理器可以被配置为执行用于配置虚拟联网层的操作——加载虚拟交换机代理(340)(例如,作为引导驱动)、加载虚拟交换机(350)(例如,作为自动启动驱动)、向虚拟交换机代理(340)注册虚拟交换机(350),并且创建虚拟交换机(350)与VM之间的连接。(多个)服务管理器可以是主机OS组件。有关用于配置虚拟联网层的示例操作的其他细节可以参见部分V。
作为另一示例,在主机分区中运行的编排代理方可以被配置为执行用于维修虚拟交换机的操作(350)。编排代理方可以运行脚本,该脚本指定用于维修虚拟交换机的操作(350)。取决于实现,各种代理方、引擎等都可以运行脚本。有关用于维修虚拟交换机(350)的示例操作的其他细节可以参见部分VI。
作为另一示例,虚拟机管理服务、超管理器(hypervisor)联网服务代理方或其他控制代理方可以在主机分区中运行。通常,这样的服务/代理方控制VM的行为以及虚拟化的其他方面。
一个或多个应用(311……31n)在来宾分区中的每个来宾分区中运行。(多个)应用(311……31n)可以包括任意应用。在来宾分区中的每个来宾分区中,(多个)应用(311……31n)绑定到网络堆栈(321……32n),该网络堆栈向(多个)应用(311……31n)提供联网服务,实现一个或多个联网协议(例如,TCP/IP、UDP/IP、或传输协议和网络协议的其他组合)。在来宾分区中的每个来宾分区中,网络堆栈(321……32n)绑定到VM网络适配器(331……33n)。例如,VM网络适配器(331……33n)是VM NIC。在来宾分区中的每个来宾分区中,VM网络适配器(331……33n)在来宾分区中运行的来宾OS中被显露。VM网络适配器(331……33n)可以模拟物理网络适配器以例如通过VM总线通道向虚拟交换机(350)的端口和从虚拟交换机(350)的端口转发分组。VM网络适配器可以被配置为访问虚拟交换机(350),无论虚拟交换机(350)被配置为作为外部虚拟交换机、内部虚拟交换机还是私有虚拟交换机进行操作。
虚拟交换机代理(340)是在主机分区中执行的瘦软件层。虚拟交换机代理(340)代表虚拟交换机(350)管理连接到虚拟交换机(350)的端口的网络适配器(例如,VM网络适配器、主机虚拟网络适配器)。对于(多个)VM中的每个VM,虚拟交换机代理(340)被配置为调解通过VM与虚拟交换机(350)之间通过VM网络适配器(331……33n)之一进行的连接而进行的数据传送。(由于虚拟交换机代理(340)调解数据传送,因此数据实际上不需要通过虚拟交换机代理(340)传递。)例如,VM与虚拟交换机(350)之间的连接使用虚拟交换机(350)与VM之间的通道。
在一些示例实现中,虚拟交换机代理(340)被加载为驱动并且将其自身在系统中注册为虚拟交换机。虚拟交换机代理(340)作为内核模式的一部分而运行。其他组件(例如,以用户模式运行)可以向虚拟交换机代理(340)发送输入/输出控制(“IOCTL”)调用,该虚拟交换机代理(340)在系统中被注册为虚拟交换机,并且如果虚拟交换机(350)被注册则虚拟交换机代理(340)将IOCTL调用传达到虚拟交换机(350)。(在虚拟交换机(350)被注册之前或者在虚拟交换机维修期间,虚拟交换机代理(340)可以忽略IOCTL调用。)替代地,在虚拟交换机(350)被注册之后,虚拟交换机代理(340)可以将IOCTL调用的处理委派给另一实体。
然而,如果虚拟交换机代理(340)已经被加载,则在虚拟交换机维修期间,虚拟交换机代理(340)保持加载在存储器中,以维持网络接口的存在并且为在主机分区和来宾分区中运行的应用维护(preserve)网络连接。在虚拟交换机维修期间,来宾分区中的网络堆栈(321……32n)可以保持绑定到来宾分区中的VM网络适配器(331……33n)。虚拟交换机代理(340)被配置为对于(多个)VM中的每个VM,当改变虚拟交换机的版本时存留状态信息,状态信息限定通过针对的VM网络适配器(331……33n)进行的连接的特征。这支持维持通过VM网络适配器(331……33n)的连接之上的、针对VM的表观连接性。例如,虚拟交换机代理(340)可以被配置为保存和取回针对连接的VM网络适配器的状态信息。这样的状态信息可以用于恢复VM网络适配器的状态。作为另一示例,虚拟交换机代理(340)可以被配置为保存和取回虚拟交换机与VM之间的通道的状态信息。这样的状态信息可以用于恢复通道的状态。以这种方式,VM可以在虚拟交换机维修期间继续运行。
虚拟交换机(350)也在主机分区中执行。虚拟交换机(350)被配置为在虚拟交换机的多个端口之间传送数据。例如,虚拟交换机(350)可以如部分III.A中所述操作。虚拟交换机(350)可以通过一个或多个专用接口连接到虚拟交换机代理(340)。
主机物理网络适配器(360)连接到外部网络,并且可以表示单个网络适配器、网络交换机或一组网络适配器。主机物理网络适配器(360)也可以连接到虚拟交换机(350)的端口。主机物理网络适配器(360)可以绑定到主机虚拟网络适配器(330)。或者,如果主机物理网络适配器(360)表示一组网络适配器,则主机虚拟网络适配器(330)可以绑定到中间驱动,该中间驱动绑定到主机物理网络适配器(360)(表示该组)。
在图3a的示例架构(301)中,虚拟交换机代理(340)还被配置为针对连接到虚拟联网层的主机,调解主机与虚拟交换机(350)之间通过主机虚拟网络适配器(330)的连接之上的数据传送。(由于虚拟交换机代理(340)调解数据传送,因此数据实际上不需要通过虚拟交换机代理(340)传递。)当改变虚拟交换机(350)的版本时,虚拟交换机代理(340)存留状态信息,状态信息限定通过主机虚拟网络适配器(330)进行的连接的特征。这支持通过主机虚拟网络适配器(330)的连接之上的、针对主机的表观连接性的维持。例如,虚拟交换机代理(340)可以被配置为保存和取回针对连接的主机虚拟网络适配器的状态信息。这样的状态信息可以用于恢复主机虚拟网络适配器的状态。作为另一示例,虚拟交换机代理(340)可以被配置为保存和取回针对主机物理网络适配器(360)的状态信息。这样的状态信息可以用于恢复主机物理网络适配器(360)的状态。相反,在图3b的示例架构(302)中,不同的组件调解通过主机与虚拟交换机之间的连接而进行的数据传送,并且当改变虚拟交换机的版本时,存留限定该连接的特征的状态信息。
在图3a的示例架构(301)中,主机分区和来宾分区都连接到针对同一主机物理网络适配器(360)的同一虚拟交换机(350)。替代地,不同分区可以连接到不同虚拟交换机,并且每个虚拟交换机可以用于不同的主机物理网络适配器,也可以没有主机物理网络适配器。给定分区可以连接到多个不同虚拟交换机。
C.具有虚拟交换机代理和主机网络适配器代理的示例虚拟联网层。
本部分描述包括具有虚拟交换机代理和主机网络适配器代理的虚拟联网层的示例架构。在图3b的示例架构(302)中,虚拟交换机(350)支持针对在不同分区中运行的主机和多个VM的联网操作。主机在分区0中运行,并且VM分别在分区1……n中运行。
一个或多个应用(310)在主机分区中运行,并且绑定到网络堆栈(320),如参考图3a的示例架构(301)所述。网络堆栈(320)绑定到主机网络适配器代理(349)。
主机网络适配器代理(349)是针对主机虚拟网络适配器(351)的代理,该主机虚拟网络适配器被实现为虚拟交换机(352)的一部分。在一些示例实现中,主机虚拟网络适配器(351)和虚拟交换机(352)是同一二进制文件的一部分。当虚拟交换机(352)连接到外部网络时,主机虚拟网络适配器(351)可以绑定到主机物理网络适配器(360)。在这种配置中,主机虚拟网络适配器(351)模仿主机物理网络适配器(360),并且通过虚拟交换机(352)向主机物理网络适配器(360)或VM网络适配器(331……33n)之一转发分组和从其转发分组。替代地,主机虚拟网络适配器(351)可以绑定到中间驱动(例如,NDIS多路复用器),该中间驱动绑定到由主机物理网络适配器(360)表示的一组一个或多个物理网络适配器。在这种配置中,对虚拟交换机(352)的扩展被显露给该组中的每个网络适配器,并且可以潜在地管理该组中的网络适配器。当虚拟交换机(352)未连接到外部网络时,主机虚拟网络适配器(351)未绑定到主机物理网络适配器(360),但是仍然可以用于通过虚拟交换机(352)向VM网络适配器(331……33n)之一转发分组和从其转发分组。
在主机分区中,一个或多个其他主机服务、进程和/或代理方(339)运行。例如,在主机分区中运行的一个或多个服务管理器可以被配置为执行用于配置虚拟联网层的操作——加载虚拟交换机代理(341)和主机网络适配器代理(349)(例如,作为引导驱动)、加载虚拟交换机(352)(例如,作为自动启动驱动)、向虚拟交换机代理(340)注册虚拟交换机(352)、向主机网络适配器代理(349)注册虚拟交换机(352)、以及创建虚拟交换机(352)与VM之间的连接。(多个)服务管理器可以是主机OS组件。有关用于配置虚拟联网层的示例操作的其他细节可以参见部分V。或者,作为另一示例,其他主机服务、进程和/或代理方(339)包括编排代理方,该编排代理可以执行用于维修虚拟交换机(352)的操作,如部分VI所述。
来宾分区1……n中的每个包括一个或多个应用(311……31n)、网络堆栈(321……32n)和VM网络适配器(331……33n),如参考图3a的示例架构(301)所述。
虚拟交换机代理(341)是在主机分区中执行的瘦软件层。虚拟交换机代理(341)代表虚拟交换机(352)管理连接到虚拟交换机(352)的端口的网络适配器(例如,VM网络适配器)。对于(多个)VM中的每个VM,虚拟交换机代理(341)被配置为调解在VM与虚拟交换机(352)之间通过VM网络适配器(331……33n)之一的连接之上的数据传送。(由于虚拟交换机代理(341)调解数据传送,因此数据实际上不需要通过虚拟交换机代理(341)传递。)例如,VM与虚拟交换机(352)之间的连接使用虚拟交换机(352)与VM之间的通道。
在一些示例实现中,虚拟交换机代理(341)被加载为驱动并且将其自身在系统中注册为虚拟交换机。虚拟交换机代理(341)作为内核模式的一部分而运行。其他组件(例如,以用户模式运行)可以向虚拟交换机代理(341)发送IOCTL调用,该虚拟交换机代理(341)在系统中被注册为虚拟交换机,并且虚拟交换机(352)被注册则虚拟交换机代理(341)将IOCTL调用传达到虚拟交换机(352)。(在虚拟交换机(352)被注册之前或者在虚拟交换机维修期间,虚拟交换机代理(341)可以忽略IOCTL调用。)替代地,在虚拟交换机(352)被注册之后,虚拟交换机代理(341)可以将IOCTL调用的处理委派给另一实体。
然而,如果虚拟交换机代理(341)已经被加载,则在虚拟交换机维修期间,虚拟交换机代理(341)保持被加载在存储器中,以维持网络接口的存在并且为在来宾分区中运行的应用维护网络连接。在虚拟交换机维修期间,来宾分区中的网络堆栈(321……32n)可以保持绑定到来宾分区中的VM网络适配器(331……33n)。虚拟交换机代理(341)被配置为对于(多个)VM中的每个VM,当改变虚拟交换机的版本时,存留限定通过针对VM的VM网络适配器(331……33n)进行的连接的特征的状态信息,如参考图3a的虚拟交换机代理(340)所述。这支持维持通过VM网络适配器(331……33n)的连接之上的、针对VM的表观连接性。以这种方式,VM可以在虚拟交换机维修期间继续运行。
虚拟交换机(352)也在主机分区中执行。虚拟交换机(352)被配置为在虚拟交换机的多个端口之间传送数据。例如,虚拟交换机(352)可以如部分III.A中所述操作。虚拟交换机(352)还可以通过一个或多个专用接口连接到虚拟交换机代理(341)。虚拟交换机(352)可以通过一个或多个专用接口连接到主机网络适配器代理(349)。
主机网络适配器代理(349)是在主机分区中执行的另一瘦软件层。主机网络适配器代理(349)代表虚拟交换机(352)管理网络适配器(例如,主机虚拟网络适配器)。对于主机,主机网络适配器代理(349)被配置为调解在主机与虚拟交换机(352)之间通过主机虚拟网络适配器(351)的连接之上进行的数据传送。(由于主机网络适配器代理(349)调解数据传送,因此数据实际上不需要通过主机网络适配器代理(349)传递。)
在一些示例实现中,主机网络适配器代理(349)被加载为驱动,并且将其自身在系统中注册为代表虚拟交换机(352)的微型端口驱动。主机网络适配器代理(349)作为内核模式的一部分而运行。主机网络适配器代理(349)在虚拟交换机维修期间帮助保存针对主机虚拟网络适配器(351)和对应主机物理网络适配器(360)的状态信息。
然而,如果主机网络适配器代理(349)已经被加载,则在虚拟交换机维修期间,主机网络适配器代理(349)保持被加载在存储器中,以维持网络接口的存在并且为在主机分区中运行的应用维护网络连接。在虚拟交换机维修期间,主机分区中的网络堆栈(320)可以保持绑定到主机网络适配器代理(349)。主机网络适配器代理(349)被配置为针对主机,当改变虚拟交换机的版本时,存留状态信息,状态信息限定通过针对主机的主机虚拟网络适配器(351)的连接的特征。这支持通过主机虚拟网络适配器(351)的连接之上的、针对主机的表观连接性的维持。例如,主机网络适配器代理(349)可以被配置为保存和取回针对连接的主机虚拟网络适配器(351)的状态信息。这样的状态信息可以用于恢复主机虚拟网络适配器(351)的状态。作为另一示例,主机网络适配器代理(349)可以被配置为保存和取回针对主机物理网络适配器(360)的状态信息。这样的状态信息可以用于恢复主机物理网络适配器(360)的状态。以这种方式,主机可以在虚拟交换机维修期间继续运行。
主机物理网络适配器(360)连接到外部网络,并且可以表示单个网络适配器、网络交换机或一组网络适配器,如参考图3a的示例架构(301)所述。
在图3b的示例架构(302)中,主机分区和来宾分区都连接到针对同一主机物理网络适配器(360)的同一虚拟交换机(352)。替代地,不同分区可以连接到不同虚拟交换机,并且每个虚拟交换机可以用于不同的主机物理网络适配器,也可以没有主机物理网络适配器。给定分区可以连接到多个不同虚拟交换机。
D.具有虚拟交换机代理和主机网络适配器代理的虚拟联网层的示例架构和接口。
本部分描述具有虚拟交换机代理和主机网络适配器代理的虚拟联网层的另一示例架构和接口。在图4的示例架构(400)中,虚拟交换机(441)支持针对在不同分区中运行的主机和多个VM的联网操作。主机在分区0中运行,并且多个VM分别在分区1……n中运行。为了简单起见,图4中示出了一个分区(分区n),但是示例架构(400)可以扩展到任何数目的分区,例如分区n。
一个或多个应用(410)在主机分区中运行。(多个)应用(410)可以包括监测代理方、诊断应用、和/或检查主机分区和来宾分区中的应用的活动的应用,该应用向中央服务器报告“活跃度”更新。(多个)应用(410)还可以包括另一任意应用。
(多个)应用(410)绑定到网络堆栈(420)。网络堆栈(420)向(多个)应用(410)提供联网服务,实现一个或多个联网协议(例如,TCP/IP、UDP/IP、或传输协议和网络协议的其他组合)。网络堆栈(420)绑定到主机网络适配器代理(432)。
在主机分区中,一个或多个其他主机服务、进程和/或代理方运行。例如,虚拟机管理服务(“VMMS”)(429)、超管理器联网服务代理方或其他控制代理方可以在主机分区中运行。通常,这样的服务/代理方控制VM的行为以及虚拟化的其他方面。主机分区包括针对每个VM的VM工作进程(“VMWP”)(428),该VMWP管理VM的各个方面。VMWP(428)启动针对VM的虚拟主板和虚拟BIOS。对于虚拟交换机(441)与VM之间的连接,VMWP(428)在针对VM的来宾分区中启动网络VSC(44n)。
作为另一示例,在主机分区中运行的一个或多个服务管理器可以被配置为执行用于配置虚拟联网层的操作——加载虚拟交换机代理(430)和主机网络适配器代理(432)(例如,作为引导驱动)、加载虚拟交换机(例如,作为自动启动驱动)、向虚拟交换机代理(430)注册虚拟交换机(441)、向主机网络适配器代理(432)注册虚拟交换机(441)、以及创建虚拟交换机(441)与VM之间的连接。(多个)服务管理器可以是主机OS组件。有关用于配置虚拟联网层的示例操作的其他细节可以参见部分V。
作为另一示例,在主机分区中运行的编排代理方(427)可以被配置为执行用于维修虚拟交换机的操作(441)。编排代理方可以运行脚本,该脚本指定用于维修虚拟交换机的操作(441)。取决于实现,各种代理方、引擎等都可以运行脚本。有关用于维修虚拟交换机(441)的示例操作的其他细节可以参见部分VI。
一个或多个应用(41n)在来宾分区n中运行。(多个)应用(41n)可以包括任意应用。在来宾分区n中,(多个)应用(41n)绑定到网络堆栈(42n),该网络堆栈为(多个)应用(41n)提供联网服务,实现一个或多个联网协议(例如,TCP/IP、UDP/IP、或传输协议和网络协议的其他组合)。在来宾分区n中,网络堆栈(42n)绑定到VM网络适配器(43n)。例如,VM网络适配器(43n)是VM NIC。VM网络适配器(43n)在来宾分区中运行的来宾OS中被显露。VM网络适配器(43n)可以模拟物理网络适配器以例如通过VM总线通道(46n)向虚拟交换机(441)的端口转发分组和从其转发分组。VM网络适配器可以被配置为访问虚拟交换机(441),无论虚拟交换机(441)被配置为作为外部虚拟交换机、内部虚拟交换机还是私有虚拟交换机进行操作。
网络VSC(44n)在来宾分区n的来宾OS中运行。网络VSC(44n)将VM网络适配器(43n)显露给VM n中的来宾软件。默认地,网络VSC(44n)连接到虚拟交换机(441)的端口,以便将分组发送到虚拟交换机(441)或从虚拟交换机(441)接收分组。具体地,网络VSC(44n)通过到网络虚拟服务提供商(“VSP”)的VM总线通道(46n)连接到虚拟交换机(441)。网络VSP在主机分区中运行,并且包括虚拟交换机(441),从而提供维修以支持由来宾分区中的VM进行的联网访问。以这种方式,网络VSC(44n)可以将分组递送到主机、另一VM或外部网络。(在替代模式下,网络VSC(44n)可以连接到主机物理网络适配器(470)的虚拟功能,并且直接通过物理网络适配器(470)发送/接收分组。在这种替代模式下,物理网络适配器(470)上的NIC交换机可以桥接虚拟功能与适配器的物理网络接口之间的网络流量。)
通道客户端库(465)向网络VSP和网络VSC(44n)提供服务以创建VM总线通道。VM总线通道是一种虚拟通信总线,其可以在主机分区与来宾分区之间传递控制和数据消息。具体地,VM总线通道在主机分区的网络VSP与来宾分区的网络VSC之间传递控制和数据消息。图4示出了在针对主机分区中的网络VSP的虚拟交换机代理(441)与来宾分区n中的网络VSC(44n)之间的VM总线通道(46n)。不同的VM总线通道可以类似地在主机分区与每个其他来宾分区之间传递控制和数据消息。
通道客户端库(465)显露回调接口,该回调接口可以被调用以调解通过VM总线通道而进行的数据传送。例如,由通道客户端库(465)显露的回调接口是公共接口。回调接口的函数可以由在虚拟交换机代理(430)中实现的封装函数(wrapper function)来调用,如图6c和6d中限定的。当虚拟交换机(441)向虚拟交换机代理注册时,指向该函数的函数指针可以被提供给虚拟交换机代理(430)(参见图6e和6h)。为了调解通过虚拟交换机(441)与VMn之间的连接而进行的数据传送,虚拟交换机代理(430)可以被配置为调用由通道客户端库(465)实现的回调接口的目标函数。当改变虚拟交换机(441)的版本时,由通道客户端库(465)实现的指向回调接口的目标函数的函数指针可以被存留。由通道客户端库(465)实现的回调接口的目标函数也可以从网络VSC(44n)调用。
虚拟交换机代理(430)是在主机分区中执行的瘦软件层。虚拟交换机代理(430)代表虚拟交换机(441)管理连接到虚拟交换机(441)的端口的网络适配器(例如,VM网络适配器)。对于VM n,虚拟交换机代理(430)被配置为调解VM与虚拟交换机(441)之间通过VM网络适配器(43n)的连接之上的数据传送。(由于虚拟交换机代理(430)调解数据传送,因此数据实际上不需要通过虚拟交换机代理(430)传递。)在图4中,VM n与虚拟交换机(441)之间的连接使用VM总线通道(46n)。
在一些示例实现中,虚拟交换机代理(430)被加载为驱动并且将其自身在系统中注册为虚拟交换机。虚拟交换机代理(430)作为内核模式的一部分而运行。其他组件(例如,以用户模式运行)可以向虚拟交换机代理(430)发送IOCTL调用,该虚拟交换机代理(430)在系统中被注册为虚拟交换机,并且如果虚拟交换机(441)被注册则虚拟交换机代理(430)将IOCTL调用传达到虚拟交换机(441)。(在虚拟交换机(441)被注册之前或者在虚拟交换机维修期间,虚拟交换机代理(430)可以忽略IOCTL调用。)替代地,在虚拟交换机(441)被注册之后,虚拟交换机代理(430)可以将IOCTL调用的处理委派给另一实体。
然而,如果虚拟交换机代理(430)已经被加载,则在虚拟交换机维修期间,虚拟交换机代理(430)保持被加载在存储器中,以维持网络接口的存在并且为在来宾分区中运行的应用维护网络连接。在虚拟交换机维修期间,来宾分区n中的网络堆栈(42n)可以保持绑定到来宾分区中的VM网络适配器(43n)。虚拟交换机代理(430)被配置为对于(多个)VM中的每个VM,当改变虚拟交换机(441)的版本时,存留限定通过针对VM的VM网络适配器(43n)进行的连接的特征的状态信息。这支持通过VM网络适配器(43n)的连接之上的、针对VM的表观连接性的维持。例如,虚拟交换机代理(430)可以被配置为保存和取回针对连接的VM网络适配器(43n)的状态信息。这样的状态信息可以用于恢复VM网络适配器(43n)的状态。作为另一示例,虚拟交换机代理(430)可以被配置为保存和取回虚拟交换机(441)与针对VM的网络VSC(44n)之间的VM总线通道(46n)的状态信息。这样的状态信息可以用于恢复VM总线通道(46n)的状态。以这种方式,VM n可以在虚拟交换机维修期间继续运行。
虚拟交换机(441)也在主机分区中执行。虚拟交换机(441)被配置为在虚拟交换机的多个端口之间传送数据。例如,虚拟交换机(441)可以如部分III.A中所述操作。虚拟交换机(441)包含一个或多个扩展(449),这些扩展可以如部分III.A中所述操作。虚拟交换机(441)可以通过一个或多个专用接口连接到虚拟交换机代理(430)。
例如,虚拟交换机代理(430)可以实现虚拟交换机(441)可以调用的回调接口的函数,如图6f所示。当虚拟交换机(441)向虚拟交换机代理(430)注册时,虚拟交换机代理(430)可以向虚拟交换机(441)提供针对这样的函数的函数指针,如图6g和6i所示。例如,这些函数可以包括:(a)用于从虚拟交换机代理(430)取消注册虚拟交换机(441)的函数、(b)用于设置针对虚拟交换机(441)的维修状态的函数、(c)用于获取针对虚拟交换机(441)的维修状态的函数、(d)用于请求通道分配的函数、(e)用于请求通道清理的函数、和/或(f)用于提供通道回调的函数。虚拟交换机代理(430)还可以实现封装函数(参见图6c-6d),该封装函数调用由通道客户端库(465)实现的回调接口的目标函数。替代地,虚拟交换机代理(430)可以实现虚拟交换机(441)可以调用的回调接口的其他函数和/或附加函数。
作为另一示例,虚拟交换机(441)可以实现虚拟交换机代理(430)可以调用的回调接口的函数,如图6b所示。当虚拟交换机(441)向虚拟交换机代理(430)注册时,虚拟交换机(441)可以向虚拟交换机代理(430)提供针对这样的函数的函数指针,如图6e和6h所示。例如,针对与主机物理网络适配器(470)相关联的设备,这些函数可以包括:(a)用于请求处置器创建的函数、(b)用于请求处置器关闭的函数、(c)用于请求读取操作的函数、(d)用于请求写入操作的函数、和/或(e)用于请求内部设备控制操作的函数。替代地,虚拟交换机(441)可以实现虚拟交换机代理(430)可以调用的回调接口的其他函数和/或附加函数。
主机网络适配器代理(432)是在主机分区中执行的另一瘦软件层。主机网络适配器代理(432)代表虚拟交换机(441)管理主机虚拟网络适配器(442)。主机网络适配器代理(432)是针对主机虚拟网络适配器(442)的代理,其被实现为虚拟交换机(441)的一部分。在一些示例实现中,主机虚拟网络适配器(442)和虚拟交换机(441)是同一二进制文件的一部分。当虚拟交换机(441)连接到外部网络时,主机虚拟网络适配器(442)可以绑定到主机物理网络适配器(470)。在这种配置中,主机虚拟网络适配器(442)模仿主机物理网络适配器(470),并且通过虚拟交换机(441)向主机物理网络适配器(470)或VM网络适配器(43n)转发分组和从其转发分组。替代地,主机虚拟网络适配器(442)可以绑定到中间驱动(例如,NDIS多路复用器),该中间驱动绑定到由主机物理网络适配器(470)表示的一组一个或多个物理网络适配器。在这种配置中,对虚拟交换机(441)的扩展(449)被显露给该组中的每个网络适配器,并且可以潜在地管理该组中的网络适配器。当虚拟交换机(441)未连接到外部网络时,主机虚拟网络适配器(442)未绑定到主机物理网络适配器(470),但是仍然可以用于通过虚拟交换机(441)向VM网络适配器(43n)转发分组和从其转发分组。对于主机,主机网络适配器代理(432)被配置为调解主机和虚拟交换机(441)之间通过主机虚拟网络适配器(442)的连接之上的数据传送。(由于主机网络适配器代理(432)调解数据传送,因此数据实际上不需要通过主机网络适配器代理(432)传递。)
在一些示例实现中,主机网络适配器代理(432)被加载为驱动,并且将其自身在系统中注册为代表虚拟交换机(441)的微型端口驱动。主机网络适配器代理(432)作为内核模式的一部分而运行。主机网络适配器代理(432)在虚拟交换机维修期间帮助维护针对主机虚拟网络适配器(441)和对应主机物理网络适配器(470)的状态信息。
然而,如果主机网络适配器代理(432)已经被加载,则在虚拟交换机维修期间,主机网络适配器代理(432)保持被加载在存储器中,以维持网络接口的存在并且为在主机分区中运行的应用维护网络连接。在虚拟交换机维修期间,主机分区中的网络堆栈(420)可以保持绑定到主机网络适配器代理(432)。主机网络适配器代理(432)被配置为针对主机,当改变虚拟交换机(441)的版本时,存留对通过针对主机的主机虚拟网络适配器(442)的连接的特征进行限定的状态信息。这支持通过主机虚拟网络适配器(442)的连接之上的、针对主机的表观连接性的维持。例如,主机网络适配器代理(432)可以被配置为保存和取回针对连接的主机虚拟网络适配器(442)的状态信息。这样的状态信息可以用于恢复主机虚拟网络适配器(442)的状态。作为另一示例,主机网络适配器代理(432)可以被配置为保存和取回针对主机物理网络适配器(470)的状态信息。这样的状态信息可以用于恢复主机物理网络适配器(470)的状态。以这种方式,主机可以在虚拟交换机维修期间继续运行。
虚拟交换机(441)可以通过一个或多个专用接口连接到主机网络适配器代理(432)。例如,主机网络适配器代理(432)可以实现虚拟交换机(441)可以调用的回调接口的函数,如图5b-5c所示。当虚拟交换机(441)向主机网络适配器代理(432)注册时,主机网络适配器代理(432)可以向虚拟交换机(441)提供针对这样的函数的函数指针,如图5e所示。例如,这些函数可以包括:(a)用于从主机网络适配器代理(432)取消注册虚拟交换机(441)的函数、(b)用于卸载主机物理网络适配器驱动(460)的函数、(c)用于检查主机物理网络适配器驱动(460)是否已经重新被加载的函数、(d)用于保存针对主机物理网络适配器驱动(460)的配置信息的函数、和/或(e)用于取回针对主机物理网络适配器驱动(460)的配置信息的函数。主机网络适配器代理(432)还可以实现封装函数(参见图5b-5c),该封装函数调用由主机物理网络适配器驱动(460)实现的回调接口的目标函数,例如,用于设置属性、初始化网络接口、或启动网络接口的目标函数。替代地,主机网络适配器代理(432)可以实现虚拟交换机(441)可以调用的回调接口的其他函数和/或附加函数。
主机物理网络适配器驱动(460)实现用于管理主机物理网络适配器(470)的函数。例如,主机物理网络适配器驱动(460)是一种控制主机物理网络适配器(470)的微型端口驱动。主机物理网络适配器驱动(460)可以实现NDIS函数,当主机网络适配器代理(432)的封装函数被调用时,这些函数将由主机网络适配器代理(432)的封装函数调用。
主机物理网络适配器(470)连接到外部网络,并且可以表示单个网络适配器、网络交换机或一组网络适配器。主机物理网络适配器(470)也可以连接到虚拟交换机(441)的端口。主机物理网络适配器(470)可以绑定到主机虚拟网络适配器(442)。或者,如果主机物理网络适配器(470)表示一组网络适配器,则主机虚拟网络适配器(442)可以绑定到中间驱动,该中间驱动绑定到主机物理网络适配器(470)(表示该组)。
IV.示例函数和接口。
本部分描述在一些示例实现中被调用以向虚拟交换机代理和主机网络适配器代理注册虚拟交换机的示例函数。它还描述了在这些示例实现中由虚拟交换机、虚拟交换机代理和主机网络适配器代理实现的示例函数、以及由虚拟交换机、虚拟交换机代理和主机网络适配器代理调用的示例函数。
函数可以是任何例程、方法或其他操作的集合,其从调用者接受零个或多个输入参数并且向调用者返回零个或多个输出参数。函数指针可以是对存储器地址的引用,也可以是对函数的入口点(entry point)的任何其他类型的引用。封装函数包含指向另一函数(目标函数)的函数指针。当封装函数被调用时,封装函数进而调用目标函数,传递与封装函数接收到的相同的参数。在一些示例实现中,虚拟交换机代理和主机网络适配器代理是相对“薄”的软件层,其实现用于虚拟交换机维修的某些功能但还提供中介(shimming)功能。虚拟交换机代理包括封装函数,这些封装函数继而调用通道客户端库的目标函数。主机网络适配器代理包括封装函数,这些封装函数继而调用主机物理网络适配器驱动的目标函数。在指向目标函数的函数指针被提供之前,对封装函数的所有调用都将被忽略。在指向目标函数的函数指针被提供之后(例如,当虚拟交换机被注册时),通过目标函数正确处置对封装函数的调用。
A.虚拟交换机与主机网络适配器代理之间的接口。
图5a-5e示出了函数原型、用于注册的参数、以及用于虚拟交换机和主机网络适配器代理的其他结构的列表(501-505),该主机网络适配器代理用作针对主机物理网络适配器的代理。不同的列表(501-505)可以是头文件的一部分,该头文件包含在虚拟交换机与主机网络适配器代理之间共享的类型和定义。
图5a中的列表(501)示出了用于向主机网络适配器代理注册虚拟交换机(vmswitch)的输入/输出控制(“IOCTL”)调用。图5d中的列表(504)示出了当虚拟交换机向主机网络适配器代理注册时由虚拟交换机提供的输入参数。输入参数包括主机物理网络适配器驱动(特别地是NDIS微型端口驱动)的特性,针对其主机网络适配器代理将用作中介层(shim layer)。
图5e中的列表(505)示出了当虚拟交换机向主机网络适配器代理注册时返回到虚拟交换机的输出参数。输出参数包括句柄标识符和函数指针。句柄标识符标识与主机网络适配器代理相关联的主机物理网络适配器驱动(NDIS微型端口驱动)。函数指针引用主机网络适配器代理实现的回调接口的函数,如图5b和5c中限定的。
图5b和5c中的列表(502-503)示出了由主机网络适配器代理实现为回调接口的一部分的函数的函数原型。通过使用在向主机网络适配器代理注册时接收到的函数指针,虚拟交换机可以调用回调接口的函数。列表(502-503)中示出的某些函数原型用于“控制”函数,虚拟交换机可以出于各种原因而调用这些函数。例如,虚拟交换机可以调用与VMS_NIC_PROXY_MINIPORT_RELOADED相关联的函数,以检查主机物理网络适配器驱动(特别地是NDIS微型端口驱动)是否被重新加载。虚拟交换机可以调用与VMS_NIC_PROXY_CONFIG_SAVE相关联的函数,以保存针对主机物理网络适配器驱动(以及因此保存针对主机物理网络适配器)的配置信息。特别地,该函数可以在虚拟交换机维修期间被调用以存储针对主机物理网络适配器驱动(和主机物理网络适配器)的配置信息,使得信息被保持。虚拟交换机可以调用与VMS_NIC_PROXY_CONFIG_RESTORE相关联的函数,以使用先前保存的配置信息来恢复针对主机物理网络适配器驱动(和主机物理网络适配器)的配置。特别地,可以调用该函数以在虚拟交换机维修期间取回配置信息并且恢复针对主机物理网络适配器驱动(和主机物理网络适配器)的配置。虚拟交换机可以调用与VMS_NIC_PROXY_MINIPORT_UNLOAD相关联的函数,以卸载主机物理网络适配器驱动。最后,虚拟交换机可以调用与VMS_NIC_PROXY_UNREGISTER相关联的函数,以从主机网络适配器代理取消注册虚拟交换机。
列表(502-503)中所示的其他函数原型针对由主机网络适配器代理实现的“封装”函数,当从虚拟交换机被调用时,这些函数进而调用另一组件的对应目标函数(例如,主机物理网络适配器驱动的NDIS函数)。例如,虚拟交换机(例如,通过实现为虚拟交换机的一部分的主机虚拟网络适配器)可以响应于来自网络堆栈中的协议驱动的调用而调用由主机网络适配器代理实现的封装函数。封装函数进而使用针对封装函数的输入参数作为针对对应目标函数的输入参数来调用对应目标函数。例如,可以调用封装函数和对应目标函数以设置主机物理网络适配器驱动(和因此的主机物理网络适配器)的属性。或者,可以调用封装函数和对应目标函数以指示状态、初始化设备实例、设置可选处置器、或者处理针对主机物理网络适配器驱动(和因此的主机物理网络适配器)的通知事件。或者,可以调用封装函数和对应目标函数以初始化、启动或取消初始化主机物理网络适配器驱动(和因此的主机物理网络适配器)。
在其代理对目标函数的调用时,主机网络适配器代理可以保存有关与主机物理网络适配器相关联的主机虚拟网络适配器的信息,使得能够在虚拟交换机维修期间保持该信息。替代地,有关主机虚拟网络适配器的这样的信息可以在虚拟交换机维修时与对主机网络适配器代理的调用一起保存。
B.虚拟交换机与虚拟交换机代理之间的接口。
图6a-6i示出了函数原型、在注册中使用的参数以及用于虚拟交换机和用作虚拟交换机的代理的虚拟交换机代理的其他结构的列表(601-609)。不同的列表(601-609)可以是头文件的一部分,该头文件包含在虚拟交换机与虚拟交换机代理之间共享的类型和定义。
图6a的列表(601)示出了可以被合并的头文件。图6g中的列表(607)示出了用于向虚拟交换机代理注册虚拟交换机(vmswitch)的IOCTL调用。图6h中的列表(608)示出了当虚拟交换机向虚拟交换机代理注册时由虚拟交换机提供的输入参数。输入参数包括指向上下文信息和虚拟交换机的驱动对象的指针、以及指向由虚拟交换机实现的回调接口的函数的函数指针和指向由通道客户端库(具体地是VMBus内核模式客户端库)实现的回调接口的函数的指针。图6e中的列表(605)示出了当虚拟交换机向虚拟交换机代理注册时由虚拟交换机提供的函数指针。
图6i中的列表(609)示出了当虚拟交换机向虚拟交换机代理注册时返回到虚拟交换机的输出参数。输出参数包括指向针对虚拟交换机代理的上下文信息的指针、以及指向由虚拟交换机代理实现的回调接口的函数的函数指针。图6f中的列表(606)的最后的函数表示出了当虚拟交换机向虚拟交换机代理注册时由虚拟交换机代理提供的函数指针。
图6b中的列表(602)示出了由虚拟交换机实现为回调接口的一部分的函数的函数原型。使用在注册虚拟交换机时其接收的函数指针(参见图6e、6g和6h),虚拟交换机代理可以调用回调接口的函数。列表(602)中示出的函数原型针对“控制”函数,虚拟交换机代理可以调用这些函数以创建针对设备的处置器、关闭针对设备的处置器、请求设备从指定缓冲器读取、请求设备写入指定缓冲器、或者传达某种内部设备控制请求。对于与图6b所示的函数原型相关联的五个函数,输入参数DeviceObject是指向针对设备对象的结构的调用者提供的指针。输入参数Irp是指向指示所请求的操作的结构的调用者提供的指针。Irp结构包括指向缓冲器(例如,用于读取操作的空缓冲器、或存储用于写入操作的数据的缓冲器)、标志和其他参数的指针。具体地,在虚拟交换机中,与VMSWITCH_CREATE_HANDLER相关联的函数是针对IRP_MJ_CREATE的调度,而与VMSWITCH_CLOSE_HANDLER相关联的函数是针对IRP_MJ_CLOSE的调度。与VMSWITCH_READ_HANDLER相关联的函数是针对IRP_MJ_READ的调度,其是对从设备对象读取数据的请求中的代码。对于这个函数,虚拟交换机可以将数据从设备对象传送到存储器(例如,用于VM总线通道)。与VMSWITCH_WRITE_HANDLER相关联的函数是针对IRP_MJ_WRITE的调度,其是对将数据写入设备对象的请求中的代码。对于这个函数,虚拟交换机可以将数据从存储器传输到设备对象(例如,针对VM总线通道)。最后,与VMSWITCH_IOCTRL_HANDLER相关联的函数处置内部设备控制请求。
替代地,虚拟交换机代理可以向另一实体传递指向图6b中限定的函数的函数指针,其可以调用由虚拟交换机实现的回调接口的函数。或者,虚拟交换机代理可以将函数指针封装在另一实体调用的虚拟交换机代理中实现的封装函数中。
图6c和6d中的列表(603-604)涉及用于数据传送的中介。列表(603-604)示出了针对在虚拟交换机代理中实现的封装函数的函数原型,该封装函数进而调用由通道客户端库(例如,针对VM总线通道的内核模式客户端库)实现的回调接口的对应目标函数。当虚拟交换机向虚拟交换机代理注册时,由虚拟交换机将指向通道客户端库的回调接口的目标函数的函数指针提供给虚拟交换机代理(参见图6e、6g、6h)。封装函数在虚拟交换机代理中限定,并且可以被调用以使用或改变虚拟交换机与VM之间的通道(特别地是针对虚拟交换机的网络VSP与针对VM的网络VSC之间的VM总线通道)的状态。封装函数使用封装函数的输入参数作为对应目标函数的输入参数来调用对应目标函数。也可以将指向通道客户端库的回调接口的目标函数的函数指针提供给VM客户端(例如,针对VM的网络VSC),该VM客户端可以调用这些函数以使用或改变通道(具体地是VM总线通道)的状态。
在虚拟交换机代理中,与VMSWITCH_VMNICPVT_KMCL_CHANNELOPENED相关联的封装函数对应于与通道客户端库中的EVT_VMB_CHANNEL_OPENED相关联的目标函数。当来宾VM中的客户端端点打开已经提供给它的通道时,这个目标函数被调用。对于封装函数,输入参数(VmbChannel)指示来宾VM打开的通道。
在虚拟交换机代理中,与VMSWITCH_VMNICPVT_KMCL_CHANNELCLOSED相关联的封装函数对应于与通道客户端库中的EVT_VMB_CHANNEL_CLOSED相关联的目标函数。当来宾VM中的客户端端点关闭通道时,或者当相对的端点关闭或撤消通道时(通过对封装函数的调用),将调用这个目标函数。对于封装函数,输入参数(VmbChannel)指示要关闭的通道。
在虚拟交换机代理中,与VMSWITCH_VMNICPVT_KMCL_CHANNELSUSPEND相关联的封装函数对应于与通道客户端库中的EVT_VMB_CHANNEL_SUSPEND相关联的目标函数。当客户端端点正在关闭或删除通道时,这个目标函数将在服务器端点处被调用(这会将服务器移动到停止状态)。对于封装函数,输入参数(通道)指示被暂停的通道。
在虚拟交换机代理中,与VMSWITCH_VMNICPVT_KMCL_CHANNELSTARTED相关联的封装函数对应于与通道客户端库中的EVT_VMB_CHANNEL_STARTED相关联的目标函数。在通道被完全配置之后但是在任何分组被传递之前,在任一端点处调用这个目标函数(这发生在相对的端点打开通道或在关闭通道之后重新打开它时)。对于封装函数,输入参数(通道)指示被启动的通道。
在虚拟交换机代理中,与VMSWITCH_VMNICPVT_KMCL_PROCESSPACKET相关联的封装函数对应于与通道客户端库中的EVT_VMB_CHANNEL_PROCESS_PACKET相关联的目标函数。当分组到达传入环形缓冲器时,这个目标函数被调用(由来宾VM的客户端端点,或者由虚拟交换机通过虚拟交换机代理的封装函数)。对于封装函数,输入参数Channel指示分组在其上到达的通道。输入参数PacketCompletionContext指示完成上下文,该完成上下文可以在事务可以退出时向通道客户端库标识这个分组。输入参数PacketBuf指示由相对端点发送的分组(缓冲器)。输入参数BufSize指示分组(缓冲器)的长度,以字节为单位。输入参数Flags指示分组的各种属性。
在虚拟交换机代理中,与VMSWITCH_VMNICPVT_KMCL_PACKETSENT相关联的封装函数对应于与通道客户端库中的EVT_VMB_PACKET_COMPLETION_ROUTINE相关联的目标函数。当与所发送的分组相关联的事务完成时,这个目标函数被调用(由来宾VM的客户端端点,或者由虚拟交换机通过虚拟交换机代理的封装函数)。对于封装函数,输入参数PacketObject指示其事务已经完成的分组。输入参数Status是状态码。输入参数Buffer指示包含来自相对端点的完成响应(如果有)的缓冲器。输入参数Length指示缓冲器的长度,以字节为单位。
在虚拟交换机代理中,与VMSWITCH_VMNICPVT_KMCL_CHANNELSAVEPACKET相关联的封装函数对应于与通道客户端库中的EVT_VMB_CHANNEL_SAVE_PACKET相关联的目标函数。当VSP端点必须保存与分组相关联的状态时,这个目标函数被调用(由虚拟交换机作为网络VSP端点通过虚拟交换机代理的封装函数)。对于封装函数,输入参数VmbChannel指示分组在其上到达的通道。输入参数Packet指示VSP保存其状态的分组。输出参数SaveBuf指示将状态保存到其中的缓冲器。输入参数SaveBufSize指示缓冲器的长度,以字节为单位。输出参数BytesNeeded指示保存事务的状态所需要的大小,以字节为单位。
在虚拟交换机代理中,与VMSWITCH_VMNICPVT_KMCL_CHANNELRESTOREPACKET相关联的封装函数对应于与通道客户端库中的EVT_VMB_CHANNEL_RESTORE_PACKET相关联的目标函数。当VSP端点必须恢复与分组相关联的状态时,这个目标函数被调用(由虚拟交换机作为网络VSP端点通过虚拟交换机代理的封装函数)。对于封装函数,输入参数VmbChannel指示分组在其上到达的通道。输入参数LibBuf是指向内核模式客户端库内部的分组对象状态的指针。输入参数LibBufSize指示缓冲器LibBuf的长度,以字节为单位。输入参数SaveBuf是指向特定于VSP的事务状态的指针,其对应于状态被保存到其中的缓冲器。输入参数SaveBufSize指示缓冲器SaveBuf的长度,以字节为单位。
在虚拟交换机代理中,与VMSWITCH_VMNICPVT_KMCL_PROCESSINGCOMPLETE相关联的封装函数对应于与通道客户端库中的EVT_VMB_CHANNEL_PROCESSING_COMPLETE相关联的目标函数。当一组分组已经由针对EVT_VMB_CHANNEL_PROCESS_PACKET的目标函数递送时,如果在递送后续分组之前存在暂停,则这个目标函数被调用(由来宾VM的客户端端点,或者由虚拟交换机通过虚拟交换机代理的封装函数)。对于封装函数,输入参数Channel指示在其上递送分组的通道。输入参数PacketCount指示批次中递送的分组的数目。
最后,与虚拟交换机代理中的VMSWITCH_VMPDPVT_KMCL_CHANNELOPENED和VMSWITCH_VMPDPVT_KMCL_CHANNELCLOSED相关联的封装函数对应于通道客户端库中用于打开或关闭通道以进行分组直接(packet direct)(“PD”)模式处理的目标函数。类似地,与虚拟交换机代理中的VMSWITCH_VMNICPVT_VERSION6HANDLE_RXPDBATCH和VMSWITCH_VMNICPVT_VERSION6HANDLE_TXPDBATCH相关联的封装函数对应于通道客户端库中用于在PD模式处理中接收或发送一批分组的目标函数。
图6e中的列表(605)示出了当虚拟交换机向虚拟交换机代理注册时由虚拟交换机提供给虚拟交换机代理的函数表。虚拟交换机将指向由虚拟交换机实现的回调接口的函数的函数指针(参见图6b)和指向由通道客户端库实现的回调接口的函数的函数指针(参见图6c和6d)放置到函数表。在其封装函数中,虚拟交换机代理使用指向由通道客户端库实现的回调接口的函数的函数指针。这样,即使从存储器中卸载了虚拟交换机,函数指针也可以被存留(被存储在虚拟交换机代理中)。
如果在虚拟交换机维修期间卸载/重新加载虚拟交换机,则可以向虚拟交换机代理提供新的函数指针表(如图6e所示)。尽管假定指向通道客户端库的函数的函数指针仍然有效,但是指向由虚拟交换机实现的回调接口的函数的函数指针可能已经改变。
图6f的列表(606)示出了由虚拟交换机代理实现的回调接口的函数的函数原型。当虚拟交换机向虚拟交换机代理注册时,虚拟交换机代理将函数指针作为列表(606)末尾所示的函数表的一部分提供给虚拟交换机(参见图6g和6i)。然后,虚拟交换机可以调用回调接口的函数之一。在虚拟交换机代理中实现的函数中的某些函数与注册或维修有关(例如,用于取消注册虚拟交换机的函数、用于启动维修的函数、和/或用于检查维修是否已经启动的函数)。在虚拟交换机代理中实现的其他函数与通道配置有关(例如,用于分配通道的函数、用于清理通道的函数、和/或用于设置通道回调的函数)。这样的函数可以是封装函数,封装函数进而调用由另一组件实现的用于通道配置的目标函数。
在由虚拟交换机代理实现的回调接口中,由虚拟交换机调用与VMSPROXY_UNREGISTER相关的函数,以使虚拟交换机从虚拟交换机代理取消注册。输入参数是指向代理上下文的指针,其在虚拟交换机向虚拟交换机代理注册时被返回作为IOCTL请求中的输出的一部分。
在由虚拟交换机代理实现的回调接口中,由虚拟交换机调用与VMSPROXY_IS_SERVICING_STARTED相关联的函数,以获取被存储在虚拟交换机代理中的维修状态。该函数返回布尔值——维修状态。
在由虚拟交换机代理实现的回调接口中,由虚拟交换机调用与VMSPROXY_SET_IS_SERVICING_STARTED相关联的函数,以设置被存储在虚拟状态代理中的维修状态。输入参数是布尔值,维修状态被设置为该布尔值。
在由虚拟交换机代理实现的回调接口中,由虚拟交换机调用与VMSPROXY_VMBCHANNEL_ALLOCATE相关联的函数,以分配通道(特别地是VM总线通道)。输入参数ParentDeviceObject指示与通道相关联的设备对象。输入参数NicName指示与通道相关联的网络适配器,并且输入参数ChannelIndex指示针对通道的通道索引。输出参数*Channel返回针对通道的数据结构。
在由虚拟交换机代理实现的回调接口中,由虚拟交换机调用与VMSPROXY_VMBCHANNEL_CLEANUP_WHEN_NOT_SERVICING相关联的函数,以清理通道。输入参数NicName、ChannelIndex和VmbChannel指示要清理的通道。
最后,在由虚拟交换机代理实现的回调接口中,由虚拟交换机调用与VMSPROXY_SET_VMBCHANNEL_CALLBACKS相关联的函数,以注册针对通道的回调。该函数可以用于网络缓冲器列表(“NBL”)和PD路径。输入参数IsPD指示模式是NBL还是PD。(PacketDirectProvider Interface利用针对物理和虚拟环境的加速I/O模型扩展NDIS,这可以增加每秒处理的分组数并且减少抖动。当应用偏好它并且有足够的硬件资源来容纳它时,可以使用PD路径。)输入参数Channel指示通道,并且输入参数IsPrimaryChannel和IsReceiveChannel指示通道的属性。
V.用于配置虚拟联网层的示例操作。
本部分描述为配置虚拟联网层而执行的操作的示例,该虚拟联网层包括向虚拟交换机代理注册的虚拟交换机(例如,如图3a的配置所示)。本部分还描述为配置虚拟联网层而执行的操作的示例,该虚拟联网层包括向虚拟交换机代理和主机网络适配器代理注册的虚拟交换机(例如,如图3b或4的配置所示)。
A.配置虚拟交换机和虚拟交换机代理。
图7a示出了用于配置包括虚拟交换机和虚拟交换机代理的网络虚拟化层的示例技术(701)。如参考图3a描述的一个或多个服务管理器或以其他方式可以执行技术(701)。示例技术(701)的一些操作在计算机系统的引导过程中被执行。当VM被添加到由计算机系统支持的来宾分区中时,示例技术(701)的其他操作可以稍后执行。
服务管理器之一将虚拟交换机代理加载(710)到存储器中。例如,虚拟交换机代理可以被加载为引导驱动。虚拟交换机代理向计算机系统注册为虚拟交换机。也就是说,虚拟交换机代理看起来是对主机和VM的虚拟交换机。
服务管理器之一还将虚拟交换机加载(730)到存储器中。例如,虚拟交换机与虚拟交换机代理被加载在相同的进程空间中。然后,服务管理器之一向虚拟交换机代理注册(740)虚拟交换机。例如,服务管理器发起如图6g所示的IOCTL调用。在这种情况下,虚拟交换机向虚拟交换机代理提供指向由虚拟交换机实现的回调接口的一组函数的函数指针(例如,参见图6b、6e和6h)。虚拟交换机还向虚拟交换机代理提供指向由通道客户端库实现的回调接口的一组函数的函数指针(例如,参见图6c-6e和6h)。虚拟交换机代理向虚拟交换机提供指向由虚拟交换机代理实现的回调接口的一组函数的函数指针(例如,参见图6f和6i)。替代地,可以以某种其他方式(例如,利用不同的回调接口)向虚拟交换机代理注册虚拟交换机。
当虚拟交换机被加载和注册时,可以自动创建主机与虚拟交换机之间通过虚拟交换机代理的连接。或者,服务管理器之一可以单独创建主机与虚拟交换机之间通过虚拟交换机代理的连接。无论哪种方式,例如,针对连接的主机虚拟网络适配器被创建,并且被绑定到针对主机的网络堆栈(例如,TCP/IP的协议驱动)。此时,即使虚拟交换机被加载并且被注册,虚拟交换机代理仍然看起来是对主机和VM的虚拟交换机。
随后,对于(多个)VM中的每个VM,服务管理器之一创建(760)VM与虚拟交换机之间通过虚拟交换机代理的连接。例如,当VM的新实例启动时,将在针对VM的主机分区中启动虚拟机工作进程(“VMWP”)。VMWP启动VM的虚拟主板和虚拟BIOS。对于虚拟交换机与VM之间的连接,VMWP在来宾分区中启动网络虚拟服务客户端(“VSC”)。例如,网络VSC是作为驱动的一部分而被加载的虚拟NDIS微型端口。指向由通道客户端库实现的回调接口的一组函数的函数指针可以被提供给针对VM的网络VSC。通过创建新的VM网络适配器、创建新的VM总线通道(针对VM)并且将VM总线通道连接到虚拟交换机,VMWP通过虚拟交换机代理将网络VSC连接到虚拟交换机。可以利用IOCTL命令向虚拟交换机代理请求通道操作,其将IOCTL命令转发到虚拟交换机。替代地,可以以其他方式创建在虚拟交换机与VM之间的连接。此时,虚拟交换机代理仍然看起来是对于虚拟联网层的组件(诸如针对主机的主机虚拟网络适配器和针对VM的VM网络适配器)的虚拟交换机以及针对主机和VM的虚拟联网层的客户端的虚拟交换机。
B.配置虚拟交换机、虚拟交换机代理和主机网络适配器代理。
图7b示出了用于配置包括虚拟交换机、虚拟交换机代理和主机网络适配器代理的网络虚拟化层的示例技术(702)。如参考图3b或4或以其他方式描述的一个或多个服务管理器可以执行技术(702)。示例技术(702)的一些操作在计算机系统的引导过程期间执行。当VM被添加到由计算机系统支持的来宾分区中时,示例技术(702)的其他操作可以稍后执行。
服务管理器之一将虚拟交换机代理加载(710)到存储器中,如参考图7a的示例技术(701)所述。
服务管理器之一还将主机网络适配器代理加载(715)到存储器中。例如,主机网络适配器代理可以被加载为引导驱动。主机网络适配器代理向计算机系统注册为主机物理网络适配器驱动(例如,微型端口驱动)。也就是说,主机网络适配器代理看起来是对于主机的主机物理网络适配器驱动。
服务管理器之一将主机网络适配器代理绑定(725)到针对主机的网络堆栈。例如,主机网络适配器代理被绑定到主机分区中的协议驱动(例如,针对TCP/IP)。主机网络适配器代理是针对主机物理网络适配器驱动的代理,其实现一组目标函数以配置和控制主机物理网络适配器。
服务管理器之一将虚拟交换机加载(730)到存储器中,并且向虚拟交换机代理注册(740)虚拟交换机,如参考图7a的示例技术(701)所述。
服务管理器之一向主机网络适配器代理注册(735)虚拟交换机。例如,服务管理器发起如图5a所示的IOCTL调用。在这种情况下,主机网络适配器代理向虚拟交换机提供指向由主机网络适配器代理实现的回调接口的一组控制函数的函数指针(例如,参见图5b、5c和5e)。主机网络适配器代理还向虚拟交换机提供指向由主机网络适配器代理实现的回调接口的一组封装函数的函数指针(例如,参见图5b、5c和5e)。封装函数封装由主机物理网络适配器驱动实现的目标函数。替代地,可以以某种其他方式(例如,利用不同的回调接口)向主机网络适配器代理注册虚拟交换机。
如图3b和4所示,在某些配置中,主机虚拟网络适配器(针对主机物理网络适配器)被实现为虚拟交换机的一部分。在虚拟交换机被加载并且向主机网络适配器代理被注册时,将自动创建主机与虚拟交换机之间通过主机网络适配器代理的连接。替代地,主机虚拟网络适配器(针对主机物理网络适配器)可以与虚拟交换机分开实现。此时,即使虚拟交换机被加载并且被注册,主机网络适配器代理仍然看起来是对于主机的主机物理网络适配器,而虚拟交换机代理仍然看起来是对于VM的虚拟交换机。
随后,对于(多个VM)中的每个VM,服务管理器之一创建(760)VM与虚拟交换机之间通过虚拟交换机代理的连接,如参考图7a的示例技术(701)所述。
VI.用于维修虚拟交换机的示例操作。
本部分描述为维修向虚拟交换机代理注册的虚拟交换机而执行的操作的示例。本部分还描述为维修向虚拟交换机代理和主机网络适配器代理注册的虚拟交换机而执行的操作的示例。在一些示例实现中,维修虚拟交换机的过程(包括交换虚拟交换机的版本)花费的时间少于网络连接的“超时”时段(例如,9秒或10秒)。这样,对于主机或VM,虚拟交换机的维修看起来是网络交付中的临时干扰。
通常,虚拟交换机维修过程保存从虚拟交换机到主机和VM组件的连接的某些状态信息,将虚拟交换机从底层(underlying)主机物理网络适配器断开连接,卸载虚拟交换机的先前版本,加载虚拟交换机的当前版本,将虚拟交换机重新连接到底层主机物理网络适配器,并且使用所保存的状态信息来恢复与主机和VM组件的连接。在整个虚拟交换机维修过程中,虚拟交换机代理和通道客户端库保持加载在存储器中。指向由虚拟服务代理实现的函数的函数指针和指向由通道客户端库实现的函数的函数指针保持有效。如果使用主机网络适配器代理,则在整个虚拟交换机维修过程中,主机网络适配器代理也保持加载在存储器中。指向由主机网络适配器代理实现的函数的函数指针仍然有效。以这种方式,即使在实际网络连接性短暂中断的情况下,对于主机和VM,到虚拟交换机(以及通过虚拟交换机可访问的任何网络)的表观连接性也可以在虚拟交换机维修期间被维持。
A.维修向虚拟交换机代理注册的虚拟交换机。
图8a示出了用于维修包括虚拟交换机和虚拟交换机代理的网络虚拟化层中的虚拟交换机的示例技术(801)。如参考图3a描述的编排代理方或以其他方式可以执行技术(801)。
首先,编排代理方暂停(820)通过虚拟交换机的网络流量。例如,编排代理方暂时停止针对主机的数据路径和针对VM的数据路径上的网络流量,同时维护联网接口的操作状态。在一些示例实现中,针对VM的VM总线通道被挂起。该操作将冻结数据流,但是使现有网络连接和套接口(sockets)保持打开。如果编排代理方为每个VM总线通道调用函数以挂起通道并且从而暂停该通道上的网络流量,则可以在通道中对网络流量进行排队、缓冲等,直到网络流量继续。
对于(多个)VM中的每个VM,编排代理方保存(830)针对VM与虚拟交换机之间的连接的VM网络适配器的状态信息。例如,对于(多个)VM中的每个VM,当VM仍然在运行时,针对VM与虚拟交换机之间连接的VM网络适配器的状态信息被保存到虚拟交换机代理可访问的存储器。在图3a所示的配置中,编排代理方还可以保存针对主机与虚拟交换机之间的连接的主机虚拟网络适配器的状态信息。例如,针对主机虚拟网络适配器的状态信息被保存到虚拟交换机代理可访问的存储器。替代地,编排代理方保存针对从虚拟交换机到主机和/或VM的连接的其他和/或附加状态信息。
当虚拟交换机已经被绑定到底层主机物理网络适配器(例如,虚拟交换机不是专用交换机或内部交换机)时,编排代理方将虚拟交换机从主机物理网络适配器解除绑定。这将虚拟交换机从主机物理网络适配器和针对主机物理网络适配器的任何驱动(例如,虚拟交换机与主机物理网络适配器之间的任何主机网络适配器驱动)断开连接。在解除绑定之前,编排代理方可以保存针对主机物理网络适配器的状态信息(例如,主机物理网络适配器驱动)。
在一些示例实现中,虚拟交换机使用扩展(例如,用于过滤、监测、捕获)。编排代理方可以保存针对用于实现这些扩展的组件(例如,虚拟网络适配器)的状态信息。
此时,对虚拟交换机的引用已经消失,并且可以从存储器卸载虚拟交换机。编排代理方从存储器卸载(840)虚拟交换机的第一版本(即,先前版本),无需中断针对主机和(多个)VM的表观连接性(在它们到虚拟交换机的相应连接之上)。主机和VM仍然连接到虚拟交换机代理,该虚拟交换机代理在计算机系统中注册为虚拟交换机。指向由虚拟交换机代理实现的回调接口的函数的函数指针被维持。这样,主机和VM可能不知道虚拟交换机已经被卸载。对于主机和VM,在它们到虚拟交换机(以及通过虚拟交换机可访问的任何网络)的相应连接之上的表观连接性被维持。
编排代理方将虚拟交换机的第二版本加载(850)到存储器中。例如,在卸载虚拟交换机的先前版本之后,编排代理方立即将虚拟交换机的当前版本作为二进制文件加载到存储器中。
对于(多个)VM中的每个VM,编排代理方取回(860)针对VM与虚拟交换机之间的连接的VM网络适配器的状态信息,并且恢复VM网络适配器的状态。例如,当VM正在运行时,编排代理方从虚拟交换机代理可访问的存储器还原(recover)VM网络适配器信息,并且恢复VM网络适配器的状态。此时,从虚拟交换机到VM的连接被恢复。在图3a所示的配置中,编排代理方还可以取回针对主机与虚拟交换机之间的连接的主机虚拟网络适配器的状态信息,并且恢复主机虚拟网络适配器的状态。例如,当主机正在运行时,编排代理方从虚拟交换机代理可访问的存储器还原主机虚拟网络适配器信息,并且恢复主机虚拟网络适配器的状态。替代地,编排代理方取回其他和/或附加状态信息,并且使用所取回的状态信息来恢复从虚拟交换机到主机和/或VM的连接。
编排代理方继续(870)通过虚拟交换机的网络流量。例如,编排代理方取消冻结针对主机的数据路径和针对VM的数据路径上的网络流量。在一些示例实现中,针对VM的VM总线通道被启动。如果编排代理方为每个VM总线通道调用函数以启动通道并且从而继续该通道上的网络流量,则可以递送已经在通道中排队、缓冲等的网络流量。
当虚拟交换机将被绑定到底层主机物理网络适配器(例如,虚拟交换机不是专用交换机或内部交换机)时,编排代理方将虚拟交换机绑定到主机物理网络适配器。在绑定之前,编排代理方可以取回针对主机物理网络适配器(例如,主机物理网络适配器驱动)的状态信息,并且使用所取回的状态信息来恢复主机物理网络适配器(例如,主机物理网络适配器驱动)的状态。这将虚拟交换机重新连接到主机物理网络适配器和针对主机物理网络适配器的任何驱动(例如,虚拟交换机与主机物理网络适配器之间的任何主机网络适配器驱动)。
如果虚拟交换机使用扩展(例如,用于过滤、监测、捕获),则编排代理方可以重新启用扩展,取回针对用于实现这些扩展的组件(例如,虚拟网络适配器)的所保存的状态信息,并且使用所取回的状态信息恢复组件(例如,虚拟网络适配器)的状态。
此时,网络连接正在运行。主机网络适配器连接性和VM网络适配器连接性已经完全恢复,其中已更新的虚拟交换机正在运行。
B.维修向虚拟交换机代理和主机网络适配器代理注册的虚拟交换机。
图8b示出了用于维修包括虚拟交换机、虚拟交换机代理和主机网络适配器代理的网络虚拟化层中的虚拟交换机的示例技术(802)。如参考图3b或4描述的编排代理方或以其他方式可以执行技术(802)。
首先,编排代理方保存(810)针对主机物理网络适配器的状态信息。例如,编排代理方将针对主机物理网络适配器(例如,针对主机物理网络适配器驱动)的配置信息保存在主机网络适配器代理可访问的存储器中。
为了使虚拟交换机从主机物理网络适配器解除绑定,编排代理方释放(815)从主机物理网络适配器分配的用于流量加速的任何硬件资源。例如,编排代理方禁用硬件辅助的加速的特征(诸如vPort和虚拟机队列),这释放了从主机物理网络适配器分配的用于流量加速的资源。禁用硬件辅助的加速会导致网络“耗尽”——网络流量仍然在流动,但是效率低于启用硬件辅助的加速时的效率。主机物理网络适配器此时仍然保持连接到虚拟交换机并且处于操作中。(尽管在交换虚拟交换机之前禁用硬件辅助的加速,但是禁用硬件辅助的加速会花费时间,这与虚拟交换机交换本身无关。在某些示例实现中,禁用硬件辅助的加速大约需要7秒。网络流量仍然在移动,但是,这个阶段的延迟不算作网络故障。)
编排代理方暂停(820)通过虚拟交换机的网络流量,并且对于(多个)VM中的每个VM,保存(830)针对VM与虚拟交换机之间的连接的VM网络适配器的状态信息,如参考图8a的示例技术(801)所述。编排代理方还可以保存针对主机与虚拟交换机之间的连接的主机虚拟网络适配器的状态信息。例如,针对主机虚拟网络适配器的状态信息被保存到主机网络适配器代理可访问的存储器中。替代地,编排代理方保存针对从虚拟交换机到主机和/或VM的连接的其他和/或附加状态信息。
在一些示例实现中,虚拟交换机使用扩展(例如,用于过滤、监测、捕获)。编排代理方可以保存针对用于实现这些扩展的组件(例如,虚拟网络适配器)的状态信息。
编排代理方将虚拟交换机从主机物理网络适配器解除绑定(835)。这将虚拟交换机从主机物理网络适配器和针对主机物理网络适配器的任何驱动(例如,虚拟交换机与主机物理网络适配器之间的任何主机网络适配器驱动)断开连接。
此时,对虚拟交换机的引用已经消失,并且可以从存储器卸载虚拟交换机。编排代理方从存储器卸载(840)虚拟交换机的第一版本(即,先前版本),无需中断主机和(多个)VM的表观连接性(在它们到虚拟交换机的相应连接之上)。主机仍然连接到主机网络适配器代理,该主机网络适配器代理在计算机系统中注册为主机物理网络适配器驱动。VM仍然连接到虚拟交换机代理,该虚拟交换机代理在计算机系统中注册为虚拟交换机。指向由主机网络适配器代理和虚拟交换机代理实现的回调接口的函数的函数指针被维持。这样,主机和VM可能不知道虚拟交换机已经被卸载。对于主机和VM,在它们到虚拟交换机(以及通过虚拟交换机可访问的任何网络)的相应连接之上的表观连接性被维持。
编排代理方将虚拟交换机的第二版本加载(850)到存储器中,如参考图8a的示例技术(801)所述。
编排代理方取回(855)针对主机物理网络适配器的状态信息,并且恢复主机物理网络适配器的状态。例如,编排代理方从主机网络适配器代理可访问的存储器取回针对主机物理网络适配器(例如,主机物理网络适配器驱动)的配置信息,并且恢复主机物理网络适配器(例如,主机物理网络适配器驱动)的状态。以这种方式,编排代理方可以连接到主机网络适配器代理,发现主机物理网络适配器驱动(例如,针对NIC微型端口实例)的现有实例,从主机网络适配器代理中读取先前存储的与网络适配器相关的状态信息,并且因此恢复主机物理网络适配器驱动(例如,针对NIC微型端口实例)的状态。替代地,编排代理方从主机网络适配器代理中取回其他和/或附加状态信息,并且使用所取回的状态信息来恢复从虚拟交换机到主机和/或主机物理网络适配器的连接。
对于(多个)VM中的每个VM,编排代理方取回(860)针对VM与虚拟交换机之间的连接的VM网络适配器的状态信息,并且恢复VM网络适配器的状态,如参考图8a的示例技术(801)所述。此时,从虚拟交换机到VM的连接被恢复。编排代理方还可以取回针对主机与虚拟交换机之间的连接的主机虚拟网络适配器的状态信息,并且恢复主机虚拟网络适配器的状态。例如,当主机正在运行时,编排代理方从主机网络适配器代理可访问的存储器还原主机虚拟网络适配器信息,并且恢复主机虚拟网络适配器的状态。替代地,编排代理方从虚拟交换机代理或主机网络适配器代理取回其他和/或附加状态信息,并且使用所取回的状态信息来恢复从虚拟交换机到主机和/或VM的连接。
编排代理方继续(870)通过虚拟交换机的网络流量,如参考图8a的示例技术(801)所述。
如果虚拟交换机使用扩展(例如,用于过滤、监测、捕获),则编排代理方可以重新启用扩展,取回针对用于实现这些扩展的组件(例如,虚拟网络适配器)的所保存的状态信息,并且使用所取回的状态信息来恢复组件(例如,虚拟网络适配器)的状态。
编排代理方将虚拟交换机绑定(880)到主机物理网络适配器。这将虚拟交换机重新连接到主机物理网络适配器和针对主机物理网络适配器的任何驱动(例如,虚拟交换机与主机物理网络适配器之间的任何主机网络适配器驱动)。将虚拟交换机绑定到主机物理网络适配器启用从主机物理网络适配器分配硬件资源以用于流量加速。例如,绑定过程启用硬件辅助的加速的特征(诸如vPort和虚拟机队列),这可以帮助优化通过主机物理网络适配器和VM网络适配器的流量流。可以在虚拟交换机与主机物理网络适配器之间协商硬件辅助的加速。
此时,网络连接处在操作中。主机网络适配器连接性和VM网络适配器连接性已经完全恢复,其中已更新的虚拟交换机正在运行。
C.其他替代和变化。
在先前的示例技术(801、802)中,关于VM网络适配器的状态信息被保存并且用于恢复VM网络适配器的状态。替代地,在虚拟交换机维修期间,可以保存其他和/或附加信息,并且将其用于恢复针对虚拟交换机与VM之间的连接的状态。例如,可以由虚拟交换机代理保存针对连接的通道的至少一些状态信息(例如,针对VM总线通道的配置信息)。在一些示例实现中,由于通过虚拟交换机代理来处置配置、控制通道等的调用,因此虚拟交换机代理实现这种通道状态信息的自动保存。因此,在虚拟交换机的维修启动之前,虚拟交换机代理可以在初始配置阶段保存通道状态信息。当虚拟交换机调用虚拟交换机代理函数以分配通道时,虚拟交换机代理可以保存有关通道的状态信息。替代地,这种通道状态信息可以被保存为虚拟交换机维修的一部分。无论有关通道的状态信息何时被保存,编排代理方都可以取回所保存的信息,并且在虚拟交换机被重新加载之后恢复通道的状态。
在第二先前示例技术(802)中,关于主机物理网络适配器的状态信息被保存并且用于恢复主机物理网络适配器的状态。替代地,在虚拟交换机维修期间,可以保存其他和/或附加信息,并且将其用于恢复针对虚拟交换机与主机之间的连接的状态。例如,可以由主机网络适配器代理或虚拟交换机代理保存针对连接的主机虚拟网络适配器的至少一些状态信息。在一些示例实现中,由于通过主机网络适配器代理来处置对主机物理网络适配器驱动的NDIS调用,因此主机网络适配器代理实现这样的主机虚拟网络适配器状态信息的自动保存。因此,在虚拟交换机的维修启动之前,主机网络适配器代理可以在初始配置阶段期间保存主机虚拟网络适配器状态信息。当虚拟交换机向主机网络适配器代理注册或设置主机物理网络适配器的属性时,主机网络适配器代理可以保存有关主机虚拟网络适配器的状态信息。替代地,这样的主机虚拟网络适配器状态信息可以被保存为虚拟交换机维修的一部分。无论有关主机虚拟网络适配器的状态信息何时被保存,编排代理方都可以取回所保存的信息,并且在虚拟交换机被重新加载之后恢复主机虚拟网络适配器的状态。
在前述示例中,状态信息被保存在虚拟交换机代理可访问的存储器中,和/或被保存在主机网络适配器代理(如果存在)可访问的存储器中。替代地,状态信息可以被保存在持久性存储装置中。
在一些示例实现中,在将状态信息保存到虚拟交换机代理和/或主机网络适配器代理之前,以及在暂停通过虚拟交换机的网络流量之前,编排代理方设置状态指示符以指示维修操作的启动(并且指示虚拟交换机未在正常状态下操作)。例如,编排代理方向虚拟交换机发送IOCTL命令,该命令(通过对由虚拟交换机代理实现的回调接口的函数的调用)在虚拟交换机代理中设置标志以指示维修操作已经启动。随后,在恢复到主机和VM的连接的状态之后,以及在继续通过虚拟交换机的网络流量之后,编排代理方设置状态指示符以指示维修操作的完成(并且指示虚拟交换机在正常状态下操作)。例如,编排代理方向虚拟交换机发送IOCTL命令,该命令(通过对由虚拟交换机代理实现的回调接口的函数的调用)在虚拟交换机代理中设置标志以指示维修操作已经完成。虚拟交换机到底层主机物理网络适配器的绑定(以及因此的硬件辅助的加速)可以取决于状态指示符,该状态指示符指示维修操作已经完成(并且指示虚拟交换机在正常状态下操作)。因此,可以在绑定发生之前检查状态指示符作为条件。例如,虚拟交换机可以调用由虚拟交换机代理实现的回调接口的函数以检查状态指示符。
鉴于可以将所公开的发明的原理应用于其的很多可能的实施例,应当认识到,所示出的实施例仅是本发明的优选示例,而不应当被视为限制本发明的范围。相反,本发明的范围由所附权利要求书限定。因此,我们要求保护落入这些权利要求的范围和精神内的所有内容作为我们的发明。
Claims (15)
1.一种计算机系统,包括一个或多个处理单元,和存储器,所述计算机系统提供虚拟联网层,所述虚拟联网层包括:
虚拟交换机,被配置为在所述虚拟交换机的多个端口之间传送数据;以及
虚拟交换机代理,被配置为针对一个或多个虚拟机(“VM”)中的每个VM:
调解所述VM与所述虚拟交换机之间通过VM网络适配器的连接之上的数据的传送;以及
当改变所述虚拟交换机的版本时,存留对通过所述VM网络适配器的所述连接的特征进行限定的状态信息,从而支持通过所述VM网络适配器的所述连接之上的、针对所述VM的表观连接性的维持。
2.根据权利要求1所述的计算机系统,其中为了存留对通过所述VM网络适配器的所述连接的特征进行限定的所述状态信息,所述虚拟交换机代理被配置为:
保存和取回针对所述连接的所述VM网络适配器的状态信息;和/或
保存和取回针对所述虚拟交换机与所述VM之间的通道的状态信息。
3.根据权利要求1所述的计算机系统,其中所述虚拟联网层还包括主机网络适配器代理,所述主机网络适配器代理被配置为针对被连接到所述虚拟联网层的主机:
调解所述主机与所述虚拟交换机之间通过主机虚拟网络适配器的连接之上的数据的传送;以及
当改变所述虚拟交换机的所述版本时,存留对通过所述主机虚拟网络适配器的所述连接的特征进行限定的状态信息,从而支持通过所述主机虚拟网络适配器的所述连接之上的、针对所述主机的表观连接性的维持。
4.根据权利要求3所述的计算机系统,其中为了存留对通过所述主机虚拟网络适配器的所述连接的特征进行限定的所述状态信息,所述主机网络适配器代理被配置为:
保存和取回针对所述连接的所述主机虚拟网络适配器的状态信息;和/或
保存和取回针对主机物理网络适配器的状态信息。
5.根据权利要求1所述的计算机系统,其中所述虚拟交换机代理还被配置为针对被连接到所述虚拟联网层的主机:
调解所述主机与所述虚拟交换机之间通过主机虚拟网络适配器的连接之上的数据的传送;以及
当改变所述虚拟交换机的所述版本时,存留对通过所述主机虚拟网络适配器的所述连接的特征进行限定的状态信息,从而支持通过所述主机虚拟网络适配器的所述连接之上的、针对所述主机的表观连接性的维持。
6.根据权利要求1所述的计算机系统,其中所述计算机系统还提供一个或多个服务管理器,所述一个或多个服务管理器被配置为执行用于配置所述虚拟联网层的操作,用于配置所述虚拟联网层的所述操作包括:
将所述虚拟交换机代理加载到存储器中;
将主机网络适配器代理加载到存储器中;
将所述虚拟交换机加载到存储器中,
向所述虚拟交换机代理注册所述虚拟交换机;
向所述主机网络适配器代理注册所述虚拟交换机;以及
针对所述一个或多个VM中的每个VM,创建所述VM与所述虚拟交换机之间的所述连接。
7.根据权利要求1所述的计算机系统,其中所述计算机系统还提供编排代理方,所述编排代理方被配置为执行用于维修所述虚拟交换机的操作,用于维修所述虚拟交换机的所述操作包括:
保存针对主机物理网络适配器的状态信息;
释放从所述主机物理网络适配器分配的用于流量加速的硬件资源;
暂停通过所述虚拟交换机的网络流量;
针对所述一个或多个VM中的每个VM,保存针对所述VM与所述虚拟交换机之间的所述连接的所述VM网络适配器的状态信息;
从存储器卸载所述虚拟交换机的所述版本中的第一版本;
将所述虚拟交换机的所述版本中的第二版本加载到存储器中;
取回针对所述主机物理网络适配器的所述状态信息并且恢复所述主机物理网络适配器的状态;
针对所述一个或多个VM中的每个VM,取回针对所述VM与所述虚拟交换机之间的所述连接的所述VM网络适配器的所述状态信息,并且恢复所述VM网络适配器的状态;
继续通过所述虚拟交换机的网络流量;以及
绑定到所述主机物理网络适配器,从而启用从所述主机物理网络适配器分配硬件资源以用于流量加速。
8.根据权利要求1所述的计算机系统,其中为了调解所述连接之上的数据的传送,所述虚拟交换机代理被配置为调用由通道客户端库实现的目标函数,其中针对所述目标函数的封装函数在所述虚拟交换机代理中被限定,当改变所述虚拟交换机的所述版本时,指向由所述通道客户端库实现的所述目标函数的函数指针被存留。
9.根据权利要求1所述的计算机系统,其中所述虚拟交换机和所述虚拟交换机代理在主机分区中执行,并且其中针对所述一个或多个VM中的每个VM:
所述VM在不同的来宾分区中执行;并且
所述VM与所述虚拟交换机之间的所述连接使用所述虚拟交换机与所述VM之间的通道。
10.一种在提供虚拟联网层的计算机系统中维修虚拟交换机的方法,所述方法包括:
暂停通过所述虚拟交换机的网络流量;
针对一个或多个虚拟机(“VM”)中的每个VM,保存针对所述VM与所述虚拟交换机之间的连接的VM网络适配器的状态信息;
在不中断针对所述一个或多个VM的表观连接性的情况下,从存储器中卸载所述虚拟交换机的第一版本;
将所述虚拟交换机的第二版本加载到存储器中;
针对所述一个或多个VM中的每个VM,取回针对所述VM与所述虚拟交换机之间的所述连接的所述VM网络适配器的所述状态信息,并且恢复所述VM网络适配器的状态;以及
继续通过所述虚拟交换机的网络流量。
11.根据权利要求10所述的方法,还包括:
在暂停通过所述虚拟交换机的网络流量之前,保存针对主机物理网络适配器的状态信息,并且释放从所述主机物理网络适配器分配的用于流量加速的任何硬件资源;
在将所述虚拟交换机的所述第二版本加载到存储器中之后,取回针对所述主机物理网络适配器的所述状态信息,并且恢复所述主机物理网络适配器的状态;以及
在继续通过所述虚拟交换机的网络流量之后,绑定到所述主机物理网络适配器,从而启用从所述主机物理网络适配器分配硬件资源以用于流量加速。
12.根据权利要求11所述的方法,其中:
针对所述一个或多个VM中的每个VM,针对所述连接的所述VM网络适配器的所述状态信息被保存到虚拟交换机代理可访问的存储器,并且从虚拟交换机代理可访问的存储器中被取回;并且
针对所述主机物理网络适配器的所述状态信息被保存到主机网络适配器代理可访问的存储器或所述虚拟交换机代理可访问的存储器,并且从主机网络适配器代理可访问的存储器或所述虚拟交换机代理可访问的存储器中被取回。
13.根据权利要求10所述的方法,其中在所述虚拟交换机的维修开始之前:
针对主机虚拟网络适配器的至少一些状态信息被保存;并且
针对所述连接的通道的至少一些状态信息被保存。
14.一种或多种计算机可读介质,其中存储有计算机可执行指令,所述计算机可执行指令用于在被编程时使计算机系统执行用于配置虚拟联网层的操作,所述操作包括:
将虚拟交换机代理加载到存储器中;
将虚拟交换机加载到存储器中;
向所述虚拟交换机代理注册所述虚拟交换机;以及
针对一个或多个虚拟机(“VM”)中的每个VM,创建所述VM与所述虚拟交换机之间的连接。
15.根据权利要求14所述的一种或多种计算机可读介质,其中所述操作还包括:
将主机网络适配器代理加载到存储器中;以及
向所述主机网络适配器代理注册所述虚拟交换机。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/977,983 US10666560B2 (en) | 2018-05-11 | 2018-05-11 | Maintaining apparent connectivity during virtual switch servicing |
US15/977,983 | 2018-05-11 | ||
PCT/US2019/030506 WO2019217216A1 (en) | 2018-05-11 | 2019-05-03 | Maintaining apparent connectivity during virtual switch servicing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112136113A true CN112136113A (zh) | 2020-12-25 |
Family
ID=66530557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980031565.7A Pending CN112136113A (zh) | 2018-05-11 | 2019-05-03 | 在虚拟交换机维修期间维持表观连接性 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10666560B2 (zh) |
EP (1) | EP3791275A1 (zh) |
CN (1) | CN112136113A (zh) |
WO (1) | WO2019217216A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114422280A (zh) * | 2021-12-31 | 2022-04-29 | 深信服科技股份有限公司 | 网络部署方法、装置、节点及存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11042392B2 (en) * | 2019-06-14 | 2021-06-22 | Microsoft Technology Licensing, Llc | Network policy and flow state save/restore for highly available servicing |
US11550608B2 (en) * | 2019-10-31 | 2023-01-10 | International Business Machines Corporation | Guest-to-host virtual networking |
JP2021182689A (ja) * | 2020-05-19 | 2021-11-25 | 富士通株式会社 | スイッチ特定方法、及びスイッチ特定プログラム |
US20220014520A1 (en) * | 2021-09-23 | 2022-01-13 | Intel Corporation | Controlled Network Sharing for Virtual Machines |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140075047A1 (en) * | 2012-09-12 | 2014-03-13 | Cisco Technology, Inc. | Network-Assisted Virtual Machine Mobility |
CN104067231A (zh) * | 2011-12-07 | 2014-09-24 | 西里克斯系统公司 | 使用虚拟交换代理控制网络接口 |
WO2018077052A1 (zh) * | 2016-10-28 | 2018-05-03 | 阿里巴巴集团控股有限公司 | 一种虚拟交换机的升级方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8909742B2 (en) * | 2006-12-18 | 2014-12-09 | Hewlett-Packard Development Company, L.P. | Distributed configuration of network interface cards |
US8799419B1 (en) * | 2010-08-16 | 2014-08-05 | Juniper Networks, Inc. | Configuration update on virtual control plane |
US9185030B2 (en) * | 2011-11-03 | 2015-11-10 | Cisco Technology, Inc. | Virtual machines in a packet switching device |
US8782632B1 (en) * | 2012-06-18 | 2014-07-15 | Tellabs Operations, Inc. | Methods and apparatus for performing in-service software upgrade for a network device using system virtualization |
US8943490B1 (en) * | 2012-09-28 | 2015-01-27 | Juniper Networks, Inc. | Intelligent non-stop software upgrade |
US10735259B2 (en) * | 2017-07-10 | 2020-08-04 | Nicira, Inc. | Virtual switch updates via temporary virtual switch |
-
2018
- 2018-05-11 US US15/977,983 patent/US10666560B2/en active Active
-
2019
- 2019-05-03 WO PCT/US2019/030506 patent/WO2019217216A1/en active Application Filing
- 2019-05-03 EP EP19724049.2A patent/EP3791275A1/en active Pending
- 2019-05-03 CN CN201980031565.7A patent/CN112136113A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104067231A (zh) * | 2011-12-07 | 2014-09-24 | 西里克斯系统公司 | 使用虚拟交换代理控制网络接口 |
US20140075047A1 (en) * | 2012-09-12 | 2014-03-13 | Cisco Technology, Inc. | Network-Assisted Virtual Machine Mobility |
WO2018077052A1 (zh) * | 2016-10-28 | 2018-05-03 | 阿里巴巴集团控股有限公司 | 一种虚拟交换机的升级方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114422280A (zh) * | 2021-12-31 | 2022-04-29 | 深信服科技股份有限公司 | 网络部署方法、装置、节点及存储介质 |
CN114422280B (zh) * | 2021-12-31 | 2023-11-07 | 深信服科技股份有限公司 | 网络部署方法、装置、节点及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2019217216A1 (en) | 2019-11-14 |
US20190349294A1 (en) | 2019-11-14 |
EP3791275A1 (en) | 2021-03-17 |
US10666560B2 (en) | 2020-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112136113A (zh) | 在虚拟交换机维修期间维持表观连接性 | |
US11500670B2 (en) | Computing service with configurable virtualization control levels and accelerated launches | |
CN107438060B (zh) | 一种网络设备中的远程过程调用方法及网络设备 | |
JP5183802B2 (ja) | 仮想化された計算機システム用の分散仮想スイッチ | |
EP2831730B1 (en) | System and method for providing a scalable signaling mechanism for virtual machine migration in a middleware machine environment | |
US7437738B2 (en) | Method, system, and program for interfacing with a network adaptor supporting a plurality of devices | |
EP1154601A1 (en) | Modular routing system with Routing Application Programm Interface (API) | |
US6754219B1 (en) | Modular routing system | |
US6901594B1 (en) | Apparatus and method for establishing communication between applications | |
US6757289B1 (en) | Apparatus and method for managing communication between a failed application and other executing applications | |
US11301350B1 (en) | Automated testing of systems and applications | |
US20220100599A1 (en) | Automated testing of systems and applications | |
US9256440B1 (en) | Facilitating device driver interactions | |
US11983100B2 (en) | Automated testing of systems and applications | |
US7950017B1 (en) | Apparatus and method for forwarding messages between two applications | |
US20070253436A1 (en) | Communicating in a virtual environment | |
US20210081352A1 (en) | Internet small computer interface systems extension for remote direct memory access (rdma) for distributed hyper-converged storage systems | |
US11671319B2 (en) | Disruption minimization for guests when applying changes to a data plane of a packet handler in a host | |
US20110093870A1 (en) | High Performance and Resource Efficient Communications Between Partitions in a Logically Partitioned System | |
US11929926B2 (en) | Traffic service threads for large pools of network addresses | |
US9135451B2 (en) | Data isolation in shared resource environments | |
US11474857B1 (en) | Accelerated migration of compute instances using offload cards | |
US6842901B1 (en) | Thread memory reclamation | |
WO2019018526A1 (en) | VIRTUAL SWITCH DEVICE AND METHOD | |
US10659391B1 (en) | Methods and apparatus to preserve packet order in a multi-fabric virtual network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |