用于虚拟机网络的方法和系统的制作方法

文档序号:6348493阅读:438来源:国知局
专利名称:用于虚拟机网络的方法和系统的制作方法
用于虚拟机网络的方法和系统技术领字段本发明涉及网络,更具体地说,涉及一种用于虚拟机网络的方法和系统。
背景技术
随着对计算机网络的依赖的逐渐增多,对更快和更高效的网络设备的需求也随之增长。但是这两个目的往往互相矛盾。例如,为了实现与资源利用相关的效率增长,虚拟化技术变得非常流行,但是这种技术往往会在吞吐量和/或延迟上有负面影响。为了在虚拟机的速度和/或延迟上有所改善,一些网络设备体系结构可以在没有以软件方式运行在该设备上的虚拟机的帮助以及没有外部网络交换机的帮助下,一些网络设备体系结构也可以使能在该网络设备上运行的一个或多个虚拟机直接和该设备的适配器直接通讯。以这种方式,可以避免与基于软件的虚拟交换机或外部网络交换机相关的延迟和/或瓶颈。在这方面,功能如虚拟以太网网桥(VEB)在没有外部网络交换机帮助下实现VM(VM,virtual machine,虚拟机)间通讯,并且标准/协议如VEPA通过特定的外部网络交换机实现VM内通讯。尽管解决方案如VEB和VEPA解决与虚拟化相关的一些问题,但是他们没有解决其它与虚化相关的一些问题,并且,实际上还产生了一些额外的问题。比较本发明后续将要结合附图介绍的系统,现有技术的其它局限性和弊端对于本领字段的普通技术人员来说是显而易见的。

发明内容
本发明提供了一种用于虚拟机网络的系统和/或方法,结合至少一幅附图进行了详细描述,并在权利要求中得到了更完整的阐述。本发明的各种优点、各个方面和创新特征,以及其中所示例的实施例的细节,将在以下的说明书和附图中进行详细介绍。


下面将结合附图及实施例对本发明作进一步说明,附图中图1是根据本发明实施例说明示范性网络设备的示意图;图2是根据本发明实施例说明示范性网络设备的另一示意图;图3A和IBB是根据本发明实施例说明由网络设备所处理的单播跨虚拟机流量可变的示意图,所述网络设备包括用于可变虚拟机通信的实体;图4是根据本发明的实施例说明通过外部设备处理跨虚拟机流量的示意图;图5A和5B根据本发明的实施例说明了组播流量的传输,并展示了网络设备102 和 112 ;图6是根据本发明的实施例说明用于网络管理的跨虚拟机流量的复制或镜像的示意图;图7是根据本发明的实施例说明处理VM流量的示范性步骤的流程图8是根据本发明的实施例说明在网络适配器中基于地址表的内容内部或外部处理流量的流程图。
具体实施例方式本发明的实施例提供了一种用于虚拟机网络的方法和系统。在本发明的各项实施例中,在第一网络设备的网络适配器中,一个或多个电路和/或处理器可以决定是通过只位于第一网络设备内的路径,还是通过包括在第一网络设备之外的第二网络设备的路径来在第一网络设备上运行的虚拟机之间传输流量。该决定可以至少部分地基于流量的特性。。 该决定可以至少部分地依据于网络适配器的性能和/或可利用资源。该决定可以至少部分的依据于一个或多个电路和/或处理器与以下至少一项之间交换的管理信息在第一网络设备上运行的软件、第二网络设备和第三网络设备。第二网络设备可以代表第一网络设备参与网络管理协议。可以通过由一个或多个电路和/或处理器提供的应用程序编程接口 (API)交换网络管理信息。在与流量有关的地址信息不在网络适配器的地址表中的情况下,通过包括第二网络设备的路径来传输流量。当网络适配器不能执行处理流量所需要的一个或多个安全功能时,通过包括第二网络设备的路径来传输流量。当网络适配器不能执行处理流量所需要的一个或多个管理功能时,通过包括第二网络设备的路径传输流量。在通过包括第二网络设备的路径来传输流量的情况下,第二网络设备可以处理所述流量,然后把处理过的流量返回至第一网络设备。由第二网络设备执行的处理可包括,例如在第二网络设备中的地址表中查找与流量相关的地址信息、执行处理流量所需的一个或多个管理功能、和/或执行处理流量所需的一个或多个安全功能。一个或多个电路和/或处理器也可以用于把流量的副本或关于流量的报告传送到第二网络设备,并且第二网络设备可以为管理操作去利用流量的副本。流量副本的一个或多个标签、字段、和/或头文件可使能第二网络设备确定该流量副本是副本。来自一个或多个电路和/或处理器的指示可使第二网络设备确定该流量副本是副本。可以在该流量副本的带外传送该指示。图1是根据本发明的实施例说明了示范性网络设备示意图。如图1所示,网络设备102包括主处理器104、主存储器106、存储器116、输入/输出子系统108和网络适配器 110。图1还展示了第二网络设备112:由云(cloud) 114代表的剩下的部分网络以及位于云114中的网络管理实体122。为了说明,可以假设网络设备102是服务器,且可以假设网络设备112为网络交换机,但这些设备不受限于此。网络设备102和112中的每一个可以是任何合适的网络设备,包括个人电脑、大型机、移动设备、路由器、网桥、交换机、机顶盒、调制解调器和头端 (head-end) 0网络设备112可以与网络设备102的很多方面相似。在这方面,网络设备112可包括合适的逻辑、电路、接口、和/或代码,用于从事网络通讯和基于一个或多个网络标准处理数据。不像许多传统交换机,网络设备112可用于通过接收流量的相同的端口如端口 220 转发流量。在这方面,网络设备112可支持VEPA或相似的协议。网络设备112可用于作为网络设备102的管理代理来运行。在这方面,网络设备112可用于代表网络设备102从事管理协议如端口镜像、生成树协议、多链接半透明互联(TRILL)和简单网络管理协议(SNMP)。 也就是说,网络设备102可与代表网络设备102的网络管理实体122相互作用。因此,网络设备112可用于与网络设备102交换管理信息,且这些交换以及其它的在网络设备102和 112之间传输的流量可是带内或是带外的。网络设备112也可以作为任何其它管理实体的代理来运行,该管理实体意欲管理网络设备102和/或其组件(如虚拟交换机(vSwitch))。此管理可包括,例如控制网络设备102或其组件的配置、为网络设备102或其组件实施安全、收集与网络设备102或其组件的有关的统计数据、或是提供允许调试网络设备102或其组件的工具。在本发明的一些实施例中,另一管理实体可相似于网络设备102,就好像它是本地的或网络设备112的一部分。在本发明的其它实施例中,另一管理实体可相似于网络设备102,就好像它与网络设备 112独立且意欲通过作为代理的网络设备112提供管理功能。网络适配器110可以通过链路124与网络设备112连接。在这方面,链路124可使流量脱离设备(off-device),也就是说,在设备外部。链路可包括如铜导线、光纤电缆、一个或多个无线信道、和/或它们的组合。主处理器104和主存储器106可包括合适的逻辑、电路、接口和/或代码,它们可以实现对数据的处理和/或对网络设备102运行的控制。主处理器104可包括如基于X86 的CPU、ARM、或专用集成电路(ASIC)。主存储器106可包括如用于存储数据和/或指令的 SRAM和/或DRAM。通过利用主存储器106,主处理器104可用于运行一个或多个操作系统和/或虚拟机(VM),并且可用于运行和/或被管理程序控制来管理操作系统和/或VM。以这种方式,通过利用主存储器106,主处理器104可用于控制网络设备102的各种组件的运行。这些组件可包括软件交换机,也被称作虚拟交换机,该软件交换机被管理程序使用,以便提供虚拟机间的网络连接和/或VM和网络114之间的连接。存储器116可包括如硬件驱动器或固态存储器。存储器116可以存储如可以通过网络适配器110本地地或远程地读、写和/或执行的数据。I/O子系统108可包括合适的逻辑、电路、接口、和/或代码,它们可用于如传递网络设备102的各种组件之间的信息。I/O子系统可包括一个或多个标准化总线和一个或多个总线控制器。因此,I/O子系统108可用于识别总线上的设备、枚举总线上的设备、为总线上的各种设备分配和解除分配资源、和/或管理总线上的通讯。例如,I/O子系统108可以是PCIe系统,并包括PCIe根联合体(complex)和一个或多个PCIe交换机和/或网桥。 在一些实施例中,I/O子系统108可由管理程序控制。网络适配器110可包括合适的逻辑、电路、接口、和/或代码,它们可以用于遵照一个或多个网络标准来发射和接收数据。参照OSI模型,网络适配器110可执行物理层功能、 数据链路层功能以及,在一些实施例中,执行与OSI第3层和更高的OSI层相关的功能。相似地,参照TCP/IP模型,网络适配器110可执行网络接口层功能、互联网层功能以及,在一些实施例中,执行传输层功能和应用层功能。网络适配器Iio可以如遵照IEEE 802.3定义的一个或多个以太网标准通信,并可以通过I/O子系统108与网络设备102的其它部分通信。可以使能网络适配器110利用虚拟化,使它可以作为多个网络适配器把自己呈现给I/ 0子系统108和/或外部设备。例如,在I/O子系统108是PCIe系统的情况下,网络适配器可以支持SR-IOV规范。因此,网络适配器110可以通过物理功能(PF) 118和/或一个或多
6个虚拟功能(VF) 120连接到I/O子系统108。以这种方式,网络适配器110可能利用虚拟以太网桥(VEB)功能(也称作eSwitch)去支持与VMs的直接通信,并且可以通过vSwitch 支持与其它VMs的间接通信。在这方面,VEB功能可包括IEEE 802. 1兼容交换机的一些功能,但是可能会缺少一些在独立网络交换机中通常可见的特征。例如,可以设定地址表而不是从运行中摸索。vSwitch可以由在网络设备102上运行的和/或控制网络设备102的管理程序使用。与VMs的直接通信可以经由一个或多个VFsl20和/或PFsll8,且与vSwitch 的通信可以经由一个或多个PFsll8。关于VMs之间的通信,传统网络适配器可以要么通过如VEB处理所有的这些内部流量,要么通过外部交换机-利用诸如虚拟以太网端口汇聚器(VEPA)、VNTag和端口扩展器等协议来处理所有的这些流量。在这方面,是利用诸如VEB的功能在网络适配器上内部地处理跨VM(inter-VM)流量,还是利用诸如VEPA的协议外部地处理跨VM流量,这一决定可能受多种权衡的影响。例如,相比于传统网络适配器,外部设备可以有更多的资源去支持更多的特性,如支持访问控制列表(ACLs)、调试功能和由多个标准网络管理工具所支持的功能。在这方面,在网络适配器上包括这些特征将会增加网络适配器的令人望而却步的成本和复杂性。在另一方面,在外部设备内,而非在网络适配器内交换和处理流量,会消耗更多的网络带宽和增加延迟。vSwitch可能为它的运行消耗数个CPU周期,并且与通过利用网络适配器的VEB功能直接通信相比,可能引入更多的延迟。因此,通过使网络适配器用于实施在传统网络适配器上没有实施的特性以及用于和其它实体如管理程序或外部设备(网络设备112)相互作用以实现增加的特征,网络适配器110可以利用用于可变可变虚拟机通信的实体实现参数(如延迟、外部带宽,CPU利用率以及硬件成本/复杂度)之间的最佳平衡。网络适配器110可以用于以多种方式处理跨 VM流量,并且流量处理的方式依据多种因素。在这方面,可以在网络适配器110上内部处理 (交换、加密、解密、认证等)流量,在网络设备112上外部处理流量,基于网络适配器110的资源和/或性能处理流量,和/或基于网络适配器110与外部网络设备112的相互作用处理流量。处理跨VM流量的方式可由每个封包或是每个数据流基准来决定。网络适配器110也可以在一些情况下,或是对一些流量而言用于内部运送跨VM流量和把跨VM流量的副本或是报告送到外部设备如网络设备112。关于跨VM流量的副本和 /或报告在以下图6中进行说明。图2是根据本发明的实施例说明了网络设备的管理的示意图。图2展示了和驱动器203「203n相关的虚拟机(VM) 2021-202n,和驱动器206r206M相关的虚拟机 (VM) 201-20、、管理程序208、以及在网络设备102上运行的虚拟交换机(vSwitch) 210。图 2还展示了用于可变虚拟机通信的实体(EFVQ216以及在网络适配器110内的物理功能 (PF) 118 和虚拟功能(VFs) 120「120μ。虚拟交换机210可以通过驱动器203:-20 使流量往返于VMs 202^20 运送, 且虚拟交换机可包括在多个VMs 202r202N中共享的资源。当驱动器203^20 运行在支持vSwitch的运行模式时,可以不直接与网络适配器110硬件连接,从而使得虚拟交换机 210和VMs 202r202N之间的通信需要数个处理器周期,且在执行通信以前会发生进度延迟。因此,遍历虚拟交换机210可能产生一些相关的开销,并且VMs 202^20 进行通信的数据传输速率与VMs 201-20、进行通信的数据传输速率相比较,可能是相对受限的。反过来,为了数据传输的目的,适用于与网络适配器110直接相互作用的专用资源,如驱动器 206^20 ,可以被分配到VMs 201-20、,从而使VMs 204^20、与网络适配器110之间的通信可以绕过虚拟交换机210。以这种方式,可以消除与虚拟交换机相关的开销,且看上去就好像在VMs 201-20、和网络适配器110之间有直接的连接,除了潜在可能地不得不遍历虚拟交换机和网络适配器PF的配置和/或一些其它的控制操作。这些直接的数据连接可以由如专用双向队列的使用来实现。因此,相较于VMs 202「202N,VMs 204^20、可以支持更高的数据传输速率,更小的延迟和拥有更低的用于通信的主CPU开销。然而,关于网络设备102为什么会继续支持利用虚拟交换机的VMs (如202^202。,存在各种理由。例如。VMs 204r204M需要更多的硬件,且因此就成本或是网络设备102的复杂度而言,支持更多的VMs 201-20、这一点会变得不切实际;而增加的^^8202^20 可以由软件来支持。而且,传统设备和/或组件可能缺少对VMs 204r204M的支持。因此网络设备102可能支持两种类型的VMs,并且要执行的特定的任务或功能可能会决定所给VM可用什么类型的通信。为了方便起见,VMs 202r202N 在本发明中称作“虚拟交换机化的VMs”且VMs 204r204M称作“直接VMs。”用于可变虚拟机通信的实体(EFVC) 216可包括合适的逻辑、电路、接口、和/或代码,可以实现网络适配器110和各种其它实体之间的管理信息的传输。例如,如箭头2M所表明的,管理信息可以在EFVC 216和内部实体之间传输,内部实体包括网络设备102内部的实体如管理程序208和/或任何其它内部管理实体。另外地或是二者择其一地,如箭头 2 所表明的,管理信息可以在EFVC 216和外部实体之间传输,外部实体包括网络设备102 外部的实体,如网络设备112和/或任何其它外部管理实体。相对其它传输到网络适配器 110和/或来自网络适配器110的流量而言,管理信息的传输可以是带内的。另外地或是二者择其一地,相对其它流量而言,管理信息的传输可以是带外的,例如通过专用物理和/或逻辑信道来传输。例如,通过应用程序编程接口(API),可以向网络适配器110传送或从网络适配器110接收管理信息。也就是说,EFVC216可以向一个或多个内部和/或外部实体展示API,且这些实体可以利用API去配置或控制网络适配器110。EFVC 216也可以包括合适的逻辑、电路、接口、和/或代码,它们可用于处理前往和/或来自VMs 202:-20 和/或VMs 204:-20^的流量。例如EFVC 216可用于执行数据包交换和其它数据数理功能如制定访问控制列表(ACLs)、流量镜像、统计信息的收集、决定在哪儿执行所给数据包的数据包交换、加密、解密、认证等等。可以基于传输的管理信息、基于 EFVC 216资源的资源、和/或基于如何分配EFVC 216的资源来配置和/或控制EFVC 216 处理流量的方式。这些信息可包括,例如包含用于转发单播和/或组播流量的信息(如MAC 和/或VLAN地址)的地址表、访问控制列表、全球字段名、iSCSI限定名、以太网光纤通道 (FCoE)全球字段名、以太网类型(如用于FCoE初始化协议(FIP)的以太网类型)、统计数据、错误信息、和/或其它与一个或多个VMs 202r202N和/或VMs 204r204M相关的信息。 地址表可包括用于决定关联或订购什么样的端口和/或VMs的信息、各种VLAN、MAC、IP、组播、和/或其它网络地址,并且可以访问地址表决定向哪儿转发流量。在操作中,EFVC 216可以参与管理信息的传输,且可以基于管理信息处理流量。以这种方式,另一实体如网络设备112或管理程序208可以作为网络适配器110的管理代理来工作。
通过网络设备112的管理内的步骤的示范性顺序如下所示。首先,可以在EFVC 216和网络设备112之间传输管理信息。这些传输可以经由如API和/或专用管理通道。 这些传输可包括如EFVC 216和网络设备112的运行的配置和/或控制模式的信息。在这方面,这些传输可包括EFVC 216的性能的交换以及网络设备112的用于支持EFVC 216的性能的传输。以这种方式,可以确保网络设备112和EFVC 216是兼容配置的。该交换可以在带内和/或带外进行并且可以使用一个或多个标准协议如LLDP和/或DCBX的扩展。其次, 网络设备112可根据管理协议如链路层发现协议(LLDP)和/或数据中心桥接交换(DCBX) 为网络管理实体122提供和/或检索(retrieve)管理信息。然后,网络管理实体122或虚拟化相关的管理实体(如Vcenter或SCVMM)可以基于管理信息作出管理决定。然后网络管理实体122可以基于该决定生成对应的管理信息,并且把生成的管理信息传输到网络设备112,从而将网络设备112和EVFC 216配置成处理跨VM流量操作的兼容模式。从网络管理实体122到网络实体112的传输可以依据管理协议如DCBX和/或LLDP和/或DCBX的扩展。然后网络设备112把决定和/或对应的配置信息传输给EFVC 216。通过网络设备112的管理内的步骤的另一示范性顺序如下所示。首先,管理信息可以在EFVC 216和网络设备112之间传输。这些传输可以经由如API和/或专用管理通道。此信息可包括如有关跨VM流量的历史的、预期的、统计的信息,跨VM流量已经由和/ 或可以由网络适配器110处理。其次,网络设备112可以根据管理协议如DCBX、SNMP为网络管理实体112提供和/或检索管理信息。然后,网络管理实体122或是虚拟化相关的管理实体可以基于管理信息做出管理决定。网络管理实体122接着可以基于该决定生成管理信息,并且把生成的管理信息传输到网络设备112。从网络管理实体122到网络实体112的传输可以依据管理协议如DCBX和/或LLDP和/或DCBX和/或SNMP的扩展。然后网络设备112把决定传输给EFVC 216。EFVC 226可以利用管理信息来决定如何处理流量。在这方面,如图3所描述的一些和/或某些流量以及如图5所描述的一些组播流量可以在网络设备102内处理,如图4 所描述的一些和/或某些流量以及如图5所描述的一些组播流量可以通过网络设备102处理,如图6所描述的,一些和/或某些流量可以在内部处理而同时该流量的副本和/或涉及该流量的信息可以被转发到网络设备112。在这方面,由网络管理员和/或网络管理实体建立的滤波器和/或规定可以决定流如何处理流量。网络管理员和/或网络管理实体可以自由地选择流量所需的服务/处理标准,反过来可以至少部分的决定在哪儿和如何处理流量。在这方面,处理特定流量的方式也可以依据网络适配器110的特性以及将被处理的流量的特性。因此,处理特定流量的设备可以根据流量而变化。例如,特定流量的交换发生在网络适配器Iio中还是网络设备112中,或是在一些情况下发生在vSwitch 210中,都可以根据流量而变化。关于网络适配器110的特性,处理流量的方式可以依据例如网络适配器110中出现的硬件和/或软件资源以及资源是如何分配的。针对流量的特性,它的处理方式可以依据如与流量相关的数据流、流量的一个或多个字段(如资源地址字段、目的地址字段、或任何其它的字段)中的值、ACL或其它安全机制、与流量相关的调试信息、该流量是否已镜像或是否将被镜像、与流量相关的延迟需求、和/或流量被分配的和/或所需要的带宽、和/或某些服务如交换式端口分析(SPAN) 或是远程SPAN(RSPAN)信息的管理指令。在一些情况下,用户或是管理员可以使用工具去识别特定流量的交换地址。由于网络适配器110在处理流量上的可变性,可以在延迟、网络带宽和/或网络拥塞这一方面与网络适配器110的复杂性这另一个方面之间达到最佳的平衡。也就是说,网络适配器110可以内部处理跨VM流量的相当一部分,因而减少网络拥塞,还可以通过利用外部设备处理一些流量,实现更多的复杂的服务、实现扩展大量的VMs、和/或实现扩展大量的服务。除了关于如何处理流量的决定,控制决定还可以包括如决定是否在网络设备102 上实例化一个或多个VMs、决定是否把一个或多个VMs迁移到和/迁出网络设备102从而去平衡网络上的负载,决定是否在地址表或相似的数据结构中修改信息、作出关于网络安全的决定、以及其它与管理程序或管理管理程序的实体合作共事的决定。图3A和图:3B根据本发明的实施例说明了由网络设备(包括用于可变虚拟机通信 (EFVC)的实体)处理的单播跨虚拟机流量。如图3A所示,路径302说明虚拟交换机化的 (vSwitched)VM 202!和虚拟交换机化的VM 20 之间的示范性跨虚拟机流量;路径304说明虚拟交换机化的VM 20 和直接VM 201之间的示范性跨虚拟机流量;路径306说明直接 VM204!和直接VM 204m之间的示范性跨虚拟机流量。其它路径,如图4_6所描述的,可以用于允许这些VM连接到网络设备112。EFVC 216可以存储管理信息如地址表(包括如MAC地址和/或包含优先级信息的 VLAN标签)、访问控制列表、其它相似的信息、和/或其它相关的信息,这样EFVC 216可以用于恰当的转发单播流量。在这方面,在一些情况下,EFVC216可以用于以传统网络交换机相似的方式来在运行中学习管理信息如地址表。然而在一些情况下,通过管理程序208和 /或网络设备112,EFVC 216内的信息可以由管理实体122来填充。在图3A描述的示范性场景中,EFVC 216的地址表足够支持所有的71^202^20 和71^204:-204^也就是说,EFVC 216可以知道端口,通过该端口以任何VMs 202:-20 和 VMs 201-20、为目的地转发流量。因此,EFVC 216可以用于如路径304和306所示地转发这种单播流量,而不需要向不必要的端口广播流量。就VMs 202^20 之间的流量而言,如路径302所示,这些流量可以由vSwitch 210处理。在图3A,路径302不包括外部设备如网络设备112。因此,为了让网络管理实体 122知晓路径302上的流量,管理程序208可以把与此流量相关的管理信息传输到网络管理实体122或另一管理实体。在这方面,管理程序208可以把此信息直接提供给网络设备112 和/或可以通过EFVC 216提供此信息。在后一种情况,管理程序208可以把管理信息传输到EFVC 216,且反过来,信息可以从EFVC 216经网络设备112传输到网络管理实体122。在图:3B所描述的场景中,EFVC 216的地址表可以足够地支持所有的 VMsZOljO、,但可能不会足够地支持VMs 202r202NO也就是说EFVC 216可能不知道端口, 通过该端口以一个或多个VMs 202^20 为目的地转发流量。然而相较于将此流量广播到所有的端口,如路径350所示,EFVC 216可能会把此流量转发到网络设备112。当网络设备112运行在VEPA模式时,它可以知道此流量是发往到网络设备102上的实体(如VM), 从而发送回EFVC 216。向EFVC 216返回流量后,因为EFVC 216知道所有的VMs 204r204M 的地址,它可以确定该流量不会发往任何的VMs 201-20、,并且可能只会把流量转发给 vSwitch 210,因而避免了把流量广播给不必要的端口的需要。在这方面,传统交换机在不知道可到达的目的地端口时向所有的端口广播,与之相比,EFVC216通过与网络设备112相互作用,可以减少或消除这种广播的必要性。图4是根据本发明实施例说明了通过外部设备处理跨虚拟机流量的示意图。参照图4,路径402表明了虚拟交换机化VM 202!和虚拟交换机化VM 20 之间的示范性跨VM流量;路径404说明虚拟交换机化的VM 202n和直接VM 201之间的示范性跨虚拟机流量;路径406说明直接VM201和直接VM 204M之间的示范性跨虚拟机流量。EFVC 216可以存储管理信息如地址表、访问控制列表、其它相似的信息、和/或其它相关的信息,从而使EFVC 216知晓路径404和406,并且能够恰当的沿路径404和406转发流量。在这方面,在一些情况下,如传统交换机会做的,EVFC 216可以用来在运行中学习管理信息如地址表。然而在一些情况下,通过管理程序208和/或网络设备112,EFVC 216 内的信息可以由管理实体122来填充。路径402不包括外部设备,如网络设备112。因此,为了让网络管理实体112知晓路径402上的流量,管理程序208可以把与此流量相关的管理信息传输到网络管理实体112 或另一管理实体。在这方面,管理程序208可以直接把管理信息提供给网络设备112和/或可以通过EFVC 216提供此信息。在后一种情况,管理程序208可以把管理信息传输到EFVC 216,且反过来,信息可以从EFVC 216经网络设备112传输到网络管理实体122。因此,该信息可以直接沿路径402传输,同时将网络设备112和EFVC 216配置成利用协议(如VEPA、 VNtag和端口扩展)的模式。然而,路径402也可以用在EFVC 216耗尽资源去内部处理跨 VM流量的情况下。图5A和5B根据本发明的实施例说明了组播流量的传输。图5A和5B展示了网络设备102和112。对于处理组播流量,EFVC 216可以存储信息如地址表、其它相似的信息、和/或其它相关的信息,从而使EFVC 216可用于恰当的转发组播流量。在这方面,EFVC 216内的信息可以由管理程序208来填充,和/或由网络管理实体122通过网络设备112来填充。在本发明的各种实施中,这些地址表可能容量有限,就此,EFVC 216可以利用由网络设备112 提供的服务和/或功能的优势,为处理组播流量去扩展EFVC 216的性能。如图5A所描述的场景,EFVC 216的地址表可足够的支持所有的VMdOljO、。也就是说,EFVC 216可以知道分别经过哪个端口可以到达VMdOljO、中的每一个。因此如路径502所示,对从VMs 202r202N的其中一个发出的组播流量而言,vSwitch 210可以把流量转发给流量应该被转发到的VMdi^jOA中的任何一个或多个,并且EFVC 216可以把组播流量转发给流量应该被转发到的VMs 201-20、中的任何一个或多个。以网络设备102 外部的设备为目的地的组播流量可以被发送到网络设备112。然而,在图5B所示的场景中,EFVC 216的地址表可能不会足够的支持所有的VMs 202r202NO例如,EFVC 216可能不知道如何到达VM 204M。因此,网络设备112可以用于根据需要扩展EFVC 216的性能。因此,如路径552所示,对从VMs 202^20 的其中一个发出的组播流量而言,vSwitch 210可以控制把组播流量转发给应接收该流量的VMs 202r202N 的任何一个或多个;并且EFVC 216可以把以VM 204M为目的地的组播流量发送到网络设备112。当网络设备112运行在VEPA模式时,网络设备112可以知道该流量是以网络设备 102为目的地,然后可以把流量返回到网络设备102。接着EFVC 216可以把该流量送到VMs201-20、中的它所决定的可以订购该组播流量的任何一个或多个,或EFVC 216可以把流量广播给所有的VMs 204-20、。因此,图5B所示的场景表明了 VMs 204^20、中的一些可以接收过多副本的情况。然而,在始发站是VMs 201-20、的其中之一的情况下,通过检查资源地址且不把它发送到始发站,EFVC 216可以确保组播流量的始发站不被复制。以这种方式,将不会发生重复和资源的反馈。此外,图5B所描述的情形可能是唯一的接收过多副本的情形。因此,相比传统的网络适配器,EFVC 216可以通过减少发送到不准备接收流量的端口的组播流量的量,来改善组播流量处理。此外,在本发明的一些实施例中,EFVC 216 可以在将组播流量发送给网络设备112之前标记该组播流量,从而减少或消除如图5B所示的情形。在这方面,从网络设备112接收回组播流量后,标记可以使EFVC 216知道VMs 204r204M中哪些已经接收到了流量。图6是根据本发明的实施例,表明为网络管理而复制或镜像跨虚拟机流量的示意图。参照图6,路径602表明直接VMs 204!和204M之间的单播跨VM流量;路径604表明了从网络适配器110传输到管理程序208的相应的流量;以及路径606表明了从网络适配器 110传输到网络设备112的相应的流量。沿路径604和/或路径606传输的相应的流量可以由其它设备使用去决定如流量模式和/或网络设备102内的负载和/或用于调试目的。在一些情况下,沿路径604和路径606传输的相应的流量可包括如跨VM流量的每一数据包的副本、跨VM流量的所选择的数据包的副本、跨VM流量的每一数据包的部分的副本如头文件或有效载荷、和/或跨VM流量的所选择的数据包的部分(如头文件(header) 或有效字段(payload))的副本。以这种方式,在路径602上的流量,或是它的部分可以被复制到管理程序208和/或网络设备112。反过来,管理程序208和/或网络设备112可以把在网络设备102中关于跨VM流量的信息变为对外部网络管理实体122可用。在一些情况下,可以修改或标记相应的流量从而使其区别于始发流量。另外的和/或二者择其一的, 沿路径604和路径606传输的流量可以不是在路径602上的流量的副本,但是可以汇报通过路径602传输的流量。例如,沿路径604和路径606传输的流量可以是需要极少的带宽和/或处理资源的总结和/或简单的通知信息。跨VM流量的副本或汇报可以以网络管理为目的。在这方面,当网络设备102内部路由跨VM流量时,网络管理实体122可能不知道该流量,并且因此网络管理实体122将不可能把这些流量作为因素计入网络管理操作中,其中这些操作包括如配置网络适配器110 如何处理跨VM流量、决定是否实例化和/或迁移VMs去平衡网络上的负载、收集网络统计数据、以及网络问题的调试或提供安全服务如ACL或是类此于此的。接收复制的流量的实体(例如管理程序208和/或网络设备11 可以使用带内和/或带外机制来确定流量是复制的。带内机制可包括,如标志、标记、和/或修改复制的流量从而去表明它是副本。示范性带外机制包括信号、讯息、和/或在复制的流量之前和/ 或通过不同于复制的流量的信道发送给实体的其它通知。例如,带外通知可配置网络设备 112进入VEPA模式,且可以配置网络设备112的其它服务(如ACL处理、镜像、地址表扩展等)。这些配置,可以允许网络设备112去处理从EFVC 216接收的流量并且为数据包的处理提供必要的和/或需要的服务,然后采取恰当的行动。这些恰当的行动可包括例如把数据包发送给EFVC 216,从而使EFVC 216可以只需要把处理过的数据包转发到目的地、把数据包送到用于调试和/或额外的处理的另一设备中、和/或丢弃数据包。例如,带外通知可
12配置实体进入操作模式,在该操作模式中所有的流量是作为复制的流量来处理的直到接收到后续的通知。另如,带外通知可以配置实体进入操作模式,在该操作模式中特定的流量如下一个‘K’数据包(K是整数)是作为复制的流量来处理的。相同的,带外通知可以配置实体进入操作模式,在该操作模式中,在特定时间间隔内接收的流量或通过某端口接收的流量是作为复制的流量来处理的。此外,复制的流量可以以各种不同的方式来处理。例如,管理程序208和/或网络设备112可以决定不需要把复制的流量转发到另一网络设备、只能转发到网络管理实体122、和/或把复制的流量的总结转发到网络管理实体122。尽管图6说明了在直接VMs 204!和204M间的单播流量,相似于路径604和606的路径也可以用于发往和/或来自eSwitched VMs 202和/或直接VMS 204的其它单播和/ 或组播流量。例如,就虚拟交换机化的VMs 202!和20 之间的流量而言,管理程序208可以将副本转发到EFVC 216和/或网络设备112。此外,尽管图6说明了提供镜像服务和/或功能的网络设备112,本发明是不受限制的。在这方面,任何其它的EFVC服务可由网络设备112的使用或vSwith 210和/或其相关的软件或APIs的使用来扩展。相同地,EFVC 216也可以用于扩展由vSwith 210提供的服务。图7是根据本发明实施例说明处理VM流量的示范性步骤的流程图。开始于步骤 702,可以上电和/或复位网络设备102。在步骤704中,管理信息可以在EFVC 216和网络管理实体122之间传输。这些管理信息可通过管理程序208和/或网络设备112来传输。 在这方面,网络设备112可以作为网络设备102的管理代理来运行。在步骤706中,EFVC 216可以基于传输的管理信息配置它自己和/或配置网络适配器110、管理程序208、和/或网络设备102的其它部分。以这种方式,可以配置用于决定以何种方式处理跨VM流量的规定、滤波器、性能、策略、权限、和/或其它的标准。管理信息可包括例如地址表、访问控制列表、或存储在网络适配器110中的用于处理流量的相似的信息。访问控制列表可包括用于决定与各种VMs和/或其它网络实体相关的权限的信息。在步骤708中,运行在网络设备 102上的第一 VM可以开始把流量送至运行在网络设备102上的第二 VM。在步骤710中,可以基于由网络管理员决定的和/或在步骤706配置的各种规定、滤波器、因素、权限、性能或任何其它的标准去决定跨VM流量处理的方式。例如,对于流量可能需要ACL处理,但是网络设备110可能不支持ACL或它的ACL容量可能透支。在外部处理流量的情况下,示范性步骤前进到步骤718。在步骤718中,可以经网络设备112的端口 220转发跨VM流量到网络设备112。 在步骤719中,网络设备112可以根据由用户和/或管理员建立的规定去处理跨VM流量, 以及去提供EFVC 216不能提供的服务和/或功能。在步骤720中,网络设备112可以决定流量是以网络设备102上的VM为目的地,并且通过端口 220可以把流量相应地返回给网络设备102。同样在步骤720中,网络设备112可以生成和/或更新用于网络管理的信息。例如,网络设备112可以更新用于存储与网络中的流量模式有关的统计信息的表。另外,在步骤720中,在转发前,网络设备112可以提供网络适配器110上不能实施或实现的服务。例如,网络设备112可以执行与实施一个或多个安全协议有关的复杂的处理。在步骤722中, 流量可以由网络适配器110接收,并且可以转发到目的地VM。回到步骤710,在流量被内部处理的情况下,示范性步骤可以前进到步骤712。在步骤712中,可以决定网络适配器110是配置用于转发跨VM流量的副本还是配置用于汇报跨VM流量。如果网络适配器110还没有配置用于发送副本和/或报告,然后在步骤714 中,可以把流量传输到目的地VM。如果网络适配器110已经配置用于发送副本和/或报告, 然后在步骤716中,可以把流量传输到目的地VM,并可以把流量的副本或与流量相关的报告传输到如管理程序208和/或网络设备112。随后传输副本和/或通知给网络管理实体 122。图8是根据本发明的实施例说明基于网络适配器中的地址表内容来内部或外部处理流量的流程图。参照图8,示范性步骤可以在步骤802开始,此时在网络适配器110中从本地资源如VM 202或204接收流量。在步骤804,EFVC216可以为流量的目的地地址搜索网络适配器110的地址表。当在地址表中找到目的地地址时,示范性步骤可以前进至步骤 806。在步骤806中,会决定流量是否以VMs 202r202N和VMs 204r204M中一个或多个为目的地。当流量是以VMs 202^20 和VMs 201-20、中一个或多个为目的地时,那么示范性步骤可以前进到步骤810。同时,在流量是以71^202^20 和VMs 204^20、中一个或多个为目的地的情况下,EFVC 216可以把流量的副本或报告送至网络设备112和/或管理程序208。在这种情况下,可发送带内和/或带外通知,从而网络设备112和/或管理程序 208知道并被配置用于处理复制的流量。在步骤810中,可以通过合适的VF和/或PF转发流量到VM。回到步骤806,在流量不是以VMs 202^20 和VMs 204^20^中一个或多个为目的地的情况下,示范性步骤前进至步骤812。在步骤812中,可以把流量发送至网络设备112。在本发明的一些实施例中,在步骤812中和/或在步骤812之前,可以把带外通知发送至网络设备112从而将网络设备112 配置为用于处理此流量的方式。例如,此通知可以配置网络设备112进入VEPA模式。在步骤812之后,示范性步骤进入步骤814。在步骤814中,网络设备112可以利用它自己的可能比网络适配器110更大的资源去决定向哪儿转发流量。在这方面,它可能是这样的EFVC 216有VMs 204^20、的地址信息但是没有VMs 202r202N的地址信息,从而以VMdi^jOA的一个或多个为目的地的流量到达步骤814。在这类情况下,网络设备112可以把流量反馈到它曾经到达过的端口上。因此,在通过用于决定流量必须以一个或多个VMs为目的地的相同的端口,接收到相同的流量后,EFVC 216可以把数据包转发到vSwitch。另外,网络设备112可以把带外通知提供给EFVC 216去更新网络适配器110的地址表,从而使EFVC 216可知道可以转发至哪里。 在目的地在网络设备102外部的情况下,网络设备112可以通过不同于接收流量的端口的一个或多个合适的端口来转发该流量。回到步骤804,在网络适配器110中的地址表中没有找到目的地址的情况下,示范性步骤可以前进至步骤812。以这种方式,相较于只是简单的把流量广播给所有的VM以及网络设备112的传统网络设备,网络适配器110可以更有效率地处理流量。相同于以上与地址表相关的描述,可以基于访问控制列表(ACL)或其它安全机制以相似的方式处理流量。在这方面,在EFVC 216有足够的资源去实施ACL和/或其它安全
14机制的情况下,管理实体122可以通过网络设备112和/或管理程序208把ACL信息传送到EFVC 216,且EFVC 216可以根据ACL和/或其它安全机制处理流量例如决定是转发还是丢弃流量。另外,当EFVC 216没有足够的资源去用于存储和/或实施ACL或其它安全机制时,EFVC 216可以把相关的流量发送到网络设备112,例如FVC 216在ACL的适应性方面不确定的流量。VEPA模式中的网络设备112可以根据ACL处理流量然后把流量返回至EFVC 216。本发明提供了用于虚拟机网络的方法和系统的各个方面。在本发明的示范性例子中,位于第一网络设备102的网络适配器110中的EFVC 216可包括一个或多个电路和/或处理器,该电路和/或处理器可用于决定是通过只位于第一网络设备102内的路径(如路径304和306),还是通过包括第二网络设备112的路径(如路径350),来在VMs 202r202N 和/或VMs 204r204M的其中至少两个之间传输流量。该决定可以至少部分的依据于流量的特性。该决定可以至少部分的依据于网络适配器110的性能和/或可用资源。该决定可以至少部分的依据于在EFVC 216与以下至少一项之间交换的管理信息运行在第一网络设备上的软件如管理程序208、第二网络设备112、和/或第三网络设备。第二网络设备112 可以代表第一网络设备102参加网络管理协议。可以通过由一个或多个电器和/或处理器提供的应用程序设计接口交换管理信息。当与流量相关的地址信息不在网络适配器110的地址表中,可以经由包括第二网络设备112的路径传输流量。当网络适配器110不能执行处理流量所需的一个或多个安全功能时,可以经由包括第二网络设备112的路径传输流量。当网络适配器110不能执行处理流量所需的一个或多个管理功能时,可以经由包括第二网络设备112的路径传输流量。当流量经由包括第二网络设备112的路径来传输时,第二网络设备112可以处理流量并把处理过的流量返回至第一网络设备102。由第二网络设备112执行的处理包括如在第二网络设备112的地址表中检索与流量有关的地址信息,执行处理流量所需的一个或多个管理功能、和/或执行处理流量所需的一个或多个安全功能。同时,EFVC 216可用于把流量的副本,或关于流量的报告传输到第二网络设备 112,并且第二网络设备112可将流量的副本用于管理操作。流量副本的一个或多个标签、 字段、和/或头文件可以使第二网络设备112能够确定该流量的副本是副本。另外的或是二者择其一的,来自EFVC 216的指示可以使第二网络设备112能够确定该流量的副本是副本。可以在该流量的副本的带外传输该指示。本发明的另一个实施例可以提供一种机器和/或计算机可读存储器和/或媒介, 其存储器储的机器代码和/或计算机程序包括至少一个代码段,所述至少一个代码段由机器和/或计算机执行,从而使该机器和/或计算机执行上述用于虚拟机网络的步骤。因此,本发明可以通过硬件、软件,或者软、硬件结合来实现。本发明可以在至少一个计算机系统中以集中方式实现,或者由分布在几个互连的计算机系统中的不同部分以分散方式实现。任何可以实现方法的计算机系统或其它设备都是可适用的。常用软硬件的结合可以是安装有计算机程序的通用计算机系统,通过安装和执行程序控制计算机系统,使其按方法运行。本发明还可以通过计算机程序产品进行实施,程序包含能够实现本发明方法的全部特征,当其安装到计算机系统中时,可以实现本发明的方法。本文件中的计算机程序所指的是可以采用任何程序语言、代码或符号编写的一组指令的任何表达式,该指令组使系统具有信息处理能力,以直接实现特定功能,或在进行下述一个或两个步骤之后实现特定功能a)转换成其它语言、解码或符号;b)以不同的格式再现。虽然本发明是通过具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换及等同替代。另外,针对特定情形或材料,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。相关申请的交叉引用本专利申请参照并享有2009年2月27日申请的美国临时专利申请、申请号为 No. 61/156, 186的优先权,此处上述专利申请均全文引用,以作参考。
权利要求
1.一种用于网络的系统,其特征在于,包括用在第一网络设备的网络适配器中的一个或多个电路和/或处理器、所述的一个或多个电路和/或处理器用于决定是通过只位于所述第一网络设备内的路径,还是通过包括在所述第一网络设备之外的第二网络设备的路径来在所述第一网络设备上运行的虚拟机之间传输流量,所述决定基于所述流量的特性。
2.如权利要求1所述的系统,其特征在于,所述决定基于在所述一个或多个电路和/或处理器与以下至少一项之间交换的管理信息运行在所述第一网络设备上的主常驻(host-resident)软件;所述第二网络设备;以及第三网络设备。
3.如权利要求1所述的系统,其特征在于,所述决定基于所述网络适配器的性能和/或可用资源。
4.如权利要求1所述的系统,其特征在于,在通过包括第二网络设备的所述路径来传输所述流量的情况下,所述第二网络设备执行对所述流量的处理,然后把所述处理过的流量返回至所述第一网络设备。
5.如权利要求4所述的系统,其特征在于,在与所述流量有关的地址信息不在所述网络适配器的地址表中的情况下,通过包括所述第二网络设备的所述路径来传输所述流量。
6.如权利要求5所述的系统,其特征在于,所述处理包括在所述第二网络设备的地址表中查找与所述流量有关的地址信息。
7.如权利要求4所述的系统,其特征在于,当所述网络适配器不能执行处理所述流量所需要的一个或多个管理功能时,通过包括所述第二网络设备的所述路径来传输所述流量。
8.如权利要求7所述的系统,其特征在于,所述处理包括执行所述管理功能。
9.如权利要求4所述的系统,其特征在于,当所述网络适配器不能执行一处理所述流量所需要的一个或多个安全功能时,通过包括所述第二设备的所述路径传输所述流量。
10.如权利要求9所述的系统,其特征在于,所述处理包括执行所述一个或多个安全功能。
11.如权利要求1所述的系统,其特征在于,所述第二网络设备代表所述第一网络设备参加网络管理协议。
12.如权利要求1所述的系统,其特征在于,把所述流量的副本或关于所述流量的报告传输到第二网络设备,且所述第二网络设备为管理操作利用所述流量的所述副本。
13.如权利要求12所述的系统,其特征在于,所述流量的所述副本的一个或多个标签、 字段、和/或头文件使能所述第二网络设备确定所述流量的所述副本是副本。
14.如权利要求12所述的系统,其特征在于,所述的一个或多个电路和/或处理器用于生成使能所述第二网络设备确定所述流量的所述副本是副本的通知,其中所述通知相对于所述流量的所述副本是带外传输。
15.如权利要求1所述的系统,其特征在于,所述一个或多个电路和/或处理器为所述管理程序和/或所述第二网络设备提供应用程序编程接口,且所述应用程序编程接口用于配置所述网络适配器。
全文摘要
本发明提供了用于网络的方法和系统。在这方面,在第一网络设备的网络适配器中的一个或多个电路和/或处理器决定是通过仅位于第一网络设备内的路径,还是通过包括在第一网络设备之外的第二网络设备的路径,来在第一网络设备上运行的虚拟机之间传输流量。该决定可以至少部分的基于流量的统计。该决定可以至少部分的基于网络适配器的性能和/或可用资源。该决定可以至少部分的基于在一个或多个电路和/或处理器与以下至少一项之间交换的管理信息运行在第一网络设备上的软件、第二网络设备、以及第三网络设备。
文档编号G06F15/173GK102334112SQ201080009697
公开日2012年1月25日 申请日期2010年2月26日 优先权日2009年2月27日
发明者埃尔·朱·尤里 申请人:美国博通公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1