用于虚拟机网络的方法和系统 技术领字段 本发明涉及网络, 更具体地说, 涉及一种用于虚拟机网络的方法和系统。背景技术 随着对计算机网络的依赖的逐渐增多, 对更快和更高效的网络设备的需求也随之 增长。但是这两个目的往往互相矛盾。例如, 为了实现与资源利用相关的效率增长, 虚拟 化技术变得非常流行, 但是这种技术往往会在吞吐量和 / 或延迟上有负面影响。为了在虚 拟机的速度和 / 或延迟上有所改善, 一些网络设备体系结构可以在没有以软件方式运行在 该设备上的虚拟机的帮助以及没有外部网络交换机的帮助下, 一些网络设备体系结构也可 以使能在该网络设备上运行的一个或多个虚拟机直接和该设备的适配器直接通讯。以这 种方式, 可以避免与基于软件的虚拟交换机或外部网络交换机相关的延迟和 / 或瓶颈。在 这方面, 功能如虚拟以太网网桥 (VEB) 在没有外部网络交换机帮助下实现 VM(VM, virtual machine, 虚拟机 ) 间通讯, 并且标准 / 协议如 VEPA 通过特定的外部网络交换机实现 VM 内 通讯。尽管解决方案如 VEB 和 VEPA 解决与虚拟化相关的一些问题, 但是他们没有解决其它 与虚化相关的一些问题, 并且, 实际上还产生了一些额外的问题。
比较本发明后续将要结合附图介绍的系统, 现有技术的其它局限性和弊端对于本 领字段的普通技术人员来说是显而易见的。
发明内容 本发明提供了一种用于虚拟机网络的系统和 / 或方法, 结合至少一幅附图进行了 详细描述, 并在权利要求中得到了更完整的阐述。
本发明的各种优点、 各个方面和创新特征, 以及其中所示例的实施例的细节, 将在 以下的说明书和附图中进行详细介绍。
附图说明
下面将结合附图及实施例对本发明作进一步说明, 附图中 :
图 1 是根据本发明实施例说明示范性网络设备的示意图 ;
图 2 是根据本发明实施例说明示范性网络设备的另一示意图 ;
图 3A 和 3B 是根据本发明实施例说明由网络设备所处理的单播跨虚拟机流量可变 的示意图, 所述网络设备包括用于可变虚拟机通信的实体 ;
图 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)。
网络设备 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 可执行网络接口层功能、 互联网层功能以及, 在一 些实施例中, 执行传输层功能和应用层功能。网络适配器 110 可以如遵照 IEEE 802.3 定义 的一个或多个以太网标准通信, 并可以通过 I/O 子系统 108 与网络设备 102 的其它部分通 信。可以使能网络适配器 110 利用虚拟化, 使它可以作为多个网络适配器把自己呈现给 I/ O 子系统 108 和 / 或外部设备。例如, 在 I/O 子系统 108 是 PCIe 系统的情况下, 网络适配器 可以支持 SR-IOV 规范。因此, 网络适配器 110 可以通过物理功能 (PF)118 和 / 或一个或多个虚拟功能 (VF)120 连接到 I/O 子系统 108。以这种方式, 网络适配器 110 可能利用虚拟 以太网桥 (VEB) 功能 ( 也称作 eSwitch) 去支持与 VMs 的直接通信, 并且可以通过 vSwitch 支持与其它 VMs 的间接通信。在这方面, VEB 功能可包括 IEEE 802.1 兼容交换机的一些功 能, 但是可能会缺少一些在独立网络交换机中通常可见的特征。 例如, 可以设定地址表而不 是从运行中摸索。vSwitch 可以由在网络设备 102 上运行的和 / 或控制网络设备 102 的管 理程序使用。与 VMs 的直接通信可以经由一个或多个 VFs120 和 / 或 PFs118, 且与 vSwitch 的通信可以经由一个或多个 PFs118。
关于 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 展 示 了 和 驱 动 器 2031-203N 相 关 的 虚 拟 机 (VM)2021-202N、 和 驱 动 器 2061-206M 相 关 的 虚 拟 机 (VM)2041-204M、 管理程序 208、 以及在网络设备 102 上运行的虚拟交换机 (vSwitch)210。图 2 还展示了用于可变虚拟机通信的实体 (EFVS)216 以及在网络适配器 110 内的物理功能 (PF)118 和虚拟功能 (VFs)1201-120M。
虚拟交换机 210 可以通过驱动器 2031-203N 使流量往返于 VMs 2021-202N 运送, 且虚拟交换机可包括在多个 VMs 2021-202N 中共享的资源。当驱动器 2031-203N 运行在支 持 vSwitch 的运行模式时, 可以不直接与网络适配器 110 硬件连接, 从而使得虚拟交换机 210 和 VMs 2021-202N 之间的通信需要数个处理器周期, 且在执行通信以前会发生进度延 迟。因此, 遍历虚拟交换机 210 可能产生一些相关的开销, 并且 VMs 2021-202N 进行通信的 数据传输速率与 VMs 2041-204M 进行通信的数据传输速率相比较, 可能是相对受限的。反
过来, 为了数据传输的目的, 适用于与网络适配器 110 直接相互作用的专用资源, 如驱动器 2061-206M, 可以被分配到 VMs 2041-204M, 从而使 VMs 2041-204M 与网络适配器 110 之间的通 信可以绕过虚拟交换机 210。以这种方式, 可以消除与虚拟交换机相关的开销, 且看上去就 好像在 VMs 2041-204M 和网络适配器 110 之间有直接的连接, 除了潜在可能地不得不遍历虚 拟交换机和网络适配器 PF 的配置和 / 或一些其它的控制操作。这些直接的数据连接可以 由如专用双向队列的使用来实现。
因此, 相较于 VMs 2021-202N, VMs 2041-204M 可以支持更高的数据传输速率, 更小 的延迟和拥有更低的用于通信的主 CPU 开销。然而, 关于网络设备 102 为什么会继续支持 利用虚拟交换机的 VMs( 如 2021-202N), 存在各种理由。例如。VMs 2041-204M 需要更多的硬 件, 且因此就成本或是网络设备 102 的复杂度而言, 支持更多的 VMs 2041-204M 这一点会变 得不切实际 ; 而增加的 VMs2021-202N 可以由软件来支持。 而且, 传统设备和 / 或组件可能缺 少对 VMs 2041-204M 的支持。因此网络设备 102 可能支持两种类型的 VMs, 并且要执行的特 定的任务或功能可能会决定所给 VM 可用什么类型的通信。为了方便起见, VMs 2021-202N 在本发明中称作 “虚拟交换机化的 VMs” 且 VMs 2041-204M 称作 “直接 VMs。 ”
用于可变虚拟机通信的实体 (EFVC)216 可包括合适的逻辑、 电路、 接口、 和 / 或代 码, 可以实现网络适配器 110 和各种其它实体之间的管理信息的传输。例如, 如箭头 224 所 表明的, 管理信息可以在 EFVC 216 和内部实体之间传输, 内部实体包括网络设备 102 内部 的实体如管理程序 208 和 / 或任何其它内部管理实体。另外地或是二者择其一地, 如箭头 226 所表明的, 管理信息可以在 EFVC 216 和外部实体之间传输, 外部实体包括网络设备 102 外部的实体, 如网络设备 112 和 / 或任何其它外部管理实体。相对其它传输到网络适配器 110 和 / 或来自网络适配器 110 的流量而言, 管理信息的传输可以是带内的。 另外地或是二 者择其一地, 相对其它流量而言, 管理信息的传输可以是带外的, 例如通过专用物理和 / 或 逻辑信道来传输。例如, 通过应用程序编程接口 (API), 可以向网络适配器 110 传送或从网 络适配器 110 接收管理信息。也就是说, EFVC216 可以向一个或多个内部和 / 或外部实体 展示 API, 且这些实体可以利用 API 去配置或控制网络适配器 110。
EFVC 216 也可以包括合适的逻辑、 电路、 接口、 和 / 或代码, 它们可用于处理前往 和 / 或来自 VMs 2021-202N 和 / 或 VMs 2041-204M 的流量。 例如 EFVC 216 可用于执行数据包 交换和其它数据数理功能如制定访问控制列表 (ACLs)、 流量镜像、 统计信息的收集、 决定在 哪儿执行所给数据包的数据包交换、 加密、 解密、 认证等等。 可以基于传输的管理信息、 基于 EFVC 216 资源的资源、 和 / 或基于如何分配 EFVC 216 的资源来配置和 / 或控制 EFVC 216 处理流量的方式。 这些信息可包括, 例如包含用于转发单播和 / 或组播流量的信息 ( 如 MAC 和 / 或 VLAN 地址 ) 的地址表、 访问控制列表、 全球字段名、 iSCSI 限定名、 以太网光纤通道 (FCoE) 全球字段名、 以太网类型 ( 如用于 FCoE 初始化协议 (FIP) 的以太网类型 )、 统计数 据、 错误信息、 和 / 或其它与一个或多个 VMs 2021-202N 和 / 或 VMs 2041-204M 相关的信息。 地址表可包括用于决定关联或订购什么样的端口和 / 或 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 的特性以及将被处理的流量的特性。因此, 处理特定流量的设备可以 根据流量而变化。例如, 特定流量的交换发生在网络适配器 110 中还是网络设备 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 2021 和虚拟交换机化的 VM 202N 之间的示范性跨虚拟机流量 ; 路径 304 说 明虚拟交换机化的 VM 202N 和直接 VM 2041 之间的示范性跨虚拟机流量 ; 路径 306 说明直接 VM2041 和直接 VM 204M 之间的示范性跨虚拟机流量。其它路径, 如图 4-6 所描述的, 可以用 于允许这些 VM 连接到网络设备 112。 EFVC 216 可以存储管理信息如地址表 ( 包括如 MAC 地址和 / 或包含优先级信息的 VLAN 标签 )、 访问控制列表、 其它相似的信息、 和 / 或其它相关的信息, 这样 EFVC 216 可以 用于恰当的转发单播流量。在这方面, 在一些情况下, EFVC216 可以用于以传统网络交换机 相似的方式来在运行中学习管理信息如地址表。然而在一些情况下, 通过管理程序 208 和 / 或网络设备 112, EFVC 216 内的信息可以由管理实体 122 来填充。
在图 3A 描述的示范性场景中, EFVC 216 的地址表足够支持所有的 VMs2021-202N 和 VMs2041-204M。也就是说, EFVC 216 可以知道端口, 通过该端口以任何 VMs 2021-202N 和 VMs 2041-204M 为目的地转发流量。因此, EFVC 216 可以用于如路径 304 和 306 所示地转发 这种单播流量, 而不需要向不必要的端口广播流量。就 VMs 2021-202N 之间的流量而言, 如 路径 302 所示, 这些流量可以由 vSwitch 210 处理。
在图 3A, 路径 302 不包括外部设备如网络设备 112。因此, 为了让网络管理实体 122 知晓路径 302 上的流量, 管理程序 208 可以把与此流量相关的管理信息传输到网络管理 实体 122 或另一管理实体。 在这方面, 管理程序 208 可以把此信息直接提供给网络设备 112 和 / 或可以通过 EFVC 216 提供此信息。在后一种情况, 管理程序 208 可以把管理信息传输 到 EFVC 216, 且反过来, 信息可以从 EFVC 216 经网络设备 112 传输到网络管理实体 122。
在 图 3B 所 描 述 的 场 景 中, EFVC 216 的 地 址 表 可 以 足 够 地 支 持 所 有 的 VMs2041-204M, 但可能不会足够地支持 VMs 2021-202N。 也就是说 EFVC 216 可能不知道端口, 通过该端口以一个或多个 VMs 2021-202N 为目的地转发流量。然而相较于将此流量广播到 所有的端口, 如路径 350 所示, EFVC 216 可能会把此流量转发到网络设备 112。当网络设 备 112 运行在 VEPA 模式时, 它可以知道此流量是发往到网络设备 102 上的实体 ( 如 VM), 从而发送回 EFVC 216。向 EFVC 216 返回流量后, 因为 EFVC 216 知道所有的 VMs 2041-204M 的地址, 它可以确定该流量不会发往任何的 VMs 2041-204M, 并且可能只会把流量转发给 vSwitch 210, 因而避免了把流量广播给不必要的端口的需要。在这方面, 传统交换机在不
知道可到达的目的地端口时向所有的端口广播, 与之相比, EFVC216 通过与网络设备 112 相 互作用, 可以减少或消除这种广播的必要性。
图 4 是根据本发明实施例说明了通过外部设备处理跨虚拟机流量的示意图。参照 图 4, 路径 402 表明了虚拟交换机化 VM 2021 和虚拟交换机化 VM 202N 之间的示范性跨 VM 流 量; 路径 404 说明虚拟交换机化的 VM 202N 和直接 VM 2041 之间的示范性跨虚拟机流量 ; 路 径 406 说明直接 VM2041 和直接 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 的地址表可足够的支持所有的 VMs2041-204M。也 就是说, EFVC 216 可以知道分别经过哪个端口可以到达 VMs2041-204M 中的每一个。因此如 路径 502 所示, 对从 VMs 2021-202N 的其中一个发出的组播流量而言, vSwitch 210 可以把 流量转发给流量应该被转发到的 VMs2021-202N 中的任何一个或多个, 并且 EFVC 216 可以把 组播流量转发给流量应该被转发到的 VMs 2041-204M 中的任何一个或多个。 以网络设备 102 外部的设备为目的地的组播流量可以被发送到网络设备 112。
然而, 在图 5B 所示的场景中, EFVC 216 的地址表可能不会足够的支持所有的 VMs 2021-202N。例如, EFVC 216 可能不知道如何到达 VM 204M。因此, 网络设备 112 可以用于根 据需要扩展 EFVC 216 的性能。因此, 如路径 552 所示, 对从 VMs 2021-202N 的其中一个发出 的组播流量而言, vSwitch 210 可以控制把组播流量转发给应接收该流量的 VMs 2021-202N 的任何一个或多个 ; 并且 EFVC 216 可以把以 VM 204M 为目的地的组播流量发送到网络设 备 112。当网络设备 112 运行在 VEPA 模式时, 网络设备 112 可以知道该流量是以网络设备 102 为目的地, 然后可以把流量返回到网络设备 102。 接着 EFVC 216 可以把该流量送到 VMs
2041-204M 中的它所决定的可以订购该组播流量的任何一个或多个, 或 EFVC 216 可以把流 量广播给所有的 VMs 2041-204M。因此, 图 5B 所示的场景表明了 VMs 2041-204M 中的一些可 以接收过多副本的情况。然而, 在始发站是 VMs 2041-204M 的其中之一的情况下, 通过检查 资源地址且不把它发送到始发站, EFVC 216 可以确保组播流量的始发站不被复制。以这种 方式, 将不会发生重复和资源的反馈。此外, 图 5B 所描述的情形可能是唯一的接收过多副 本的情形。因此, 相比传统的网络适配器, EFVC 216 可以通过减少发送到不准备接收流量 的端口的组播流量的量, 来改善组播流量处理。此外, 在本发明的一些实施例中, EFVC 216 可以在将组播流量发送给网络设备 112 之前标记该组播流量, 从而减少或消除如图 5B 所 示的情形。在这方面, 从网络设备 112 接收回组播流量后, 标记可以使 EFVC 216 知道 VMs 2041-204M 中哪些已经接收到了流量。
图 6 是根据本发明的实施例, 表明为网络管理而复制或镜像跨虚拟机流量的示意 图。参照图 6, 路径 602 表明直接 VMs 2041 和 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 和 / 或网络设备 112) 可以使用带内 和 / 或带外机制来确定流量是复制的。带内机制可包括, 如标志、 标记、 和 / 或修改复制的 流量从而去表明它是副本。示范性带外机制包括信号、 讯息、 和 / 或在复制的流量之前和 / 或通过不同于复制的流量的信道发送给实体的其它通知。例如, 带外通知可配置网络设备 112 进入 VEPA 模式, 且可以配置网络设备 112 的其它服务 ( 如 ACL 处理、 镜像、 地址表扩展 等 )。这些配置, 可以允许网络设备 112 去处理从 EFVC 216 接收的流量并且为数据包的处 理提供必要的和 / 或需要的服务, 然后采取恰当的行动。这些恰当的行动可包括例如把数 据包发送给 EFVC 216, 从而使 EFVC 216 可以只需要把处理过的数据包转发到目的地、 把数 据包送到用于调试和 / 或额外的处理的另一设备中、 和 / 或丢弃数据包。例如, 带外通知可
配置实体进入操作模式, 在该操作模式中所有的流量是作为复制的流量来处理的直到接收 到后续的通知。 另如, 带外通知可以配置实体进入操作模式, 在该操作模式中特定的流量如 下一个 ‘K’ 数据包 (K 是整数 ) 是作为复制的流量来处理的。相同的, 带外通知可以配置实 体进入操作模式, 在该操作模式中, 在特定时间间隔内接收的流量或通过某端口接收的流 量是作为复制的流量来处理的。此外, 复制的流量可以以各种不同的方式来处理。例如, 管 理程序 208 和 / 或网络设备 112 可以决定不需要把复制的流量转发到另一网络设备、 只能 转发到网络管理实体 122、 和 / 或把复制的流量的总结转发到网络管理实体 122。
尽管图 6 说明了在直接 VMs 2041 和 204M 间的单播流量, 相似于路径 604 和 606 的 路径也可以用于发往和 / 或来自 eSwitched VMs 202 和 / 或直接 VMS 204 的其它单播和 / 或组播流量。例如, 就虚拟交换机化的 VMs 2021 和 202N 之间的流量而言, 管理程序 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 2021-202N 和 VMs 2041-204M 中一个或多个 为目的地。当流量是以 VMs 2021-202N 和 VMs 2041-204M 中一个或多个为目的地时, 那么示 范性步骤可以前进到步骤 810。同时, 在流量是以 VMs2021-202N 和 VMs 2041-204M 中一个或 多个为目的地的情况下, EFVC 216 可以把流量的副本或报告送至网络设备 112 和 / 或管理 程序 208。在这种情况下, 可发送带内和 / 或带外通知, 从而网络设备 112 和 / 或管理程序 208 知道并被配置用于处理复制的流量。
在步骤 810 中, 可以通过合适的 VF 和 / 或 PF 转发流量到 VM。
回到步骤 806, 在流量不是以 VMs 2021-202N 和 VMs 2041-204M 中一个或多个为目 的地的情况下, 示范性步骤前进至步骤 812。
在步骤 812 中, 可以把流量发送至网络设备 112。在本发明的一些实施例中, 在步 骤 812 中和 / 或在步骤 812 之前, 可以把带外通知发送至网络设备 112 从而将网络设备 112 配置为用于处理此流量的方式。例如, 此通知可以配置网络设备 112 进入 VEPA 模式。在步 骤 812 之后, 示范性步骤进入步骤 814。
在步骤 814 中, 网络设备 112 可以利用它自己的可能比网络适配器 110 更大的资 源去决定向哪儿转发流量。在这方面, 它可能是这样的 : EFVC 216 有 VMs 2041-204M 的地址 信息但是没有 VMs 2021-202N 的地址信息, 从而以 VMs2021-202N 的一个或多个为目的地的 流量到达步骤 814。在这类情况下, 网络设备 112 可以把流量反馈到它曾经到达过的端口 上。因此, 在通过用于决定流量必须以一个或多个 VMs 为目的地的相同的端口, 接收到相同 的流量后, EFVC 216 可以把数据包转发到 vSwitch。另外, 网络设备 112 可以把带外通知提 供给 EFVC 216 去更新网络适配器 110 的地址表, 从而使 EFVC 216 可知道可以转发至哪里。 在目的地在网络设备 102 外部的情况下, 网络设备 112 可以通过不同于接收流量的端口的 一个或多个合适的端口来转发该流量。
回到步骤 804, 在网络适配器 110 中的地址表中没有找到目的地址的情况下, 示范 性步骤可以前进至步骤 812。
以这种方式, 相较于只是简单的把流量广播给所有的 VM 以及网络设备 112 的传统 网络设备, 网络适配器 110 可以更有效率地处理流量。
相同于以上与地址表相关的描述, 可以基于访问控制列表 (ACL) 或其它安全机制 以相似的方式处理流量。在这方面, 在 EFVC 216 有足够的资源去实施 ACL 和 / 或其它安全机制的情况下, 管理实体 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 2021-202N 和 / 或 VMs 2041-204M 的其中至少两个之间传输流量。该决定可以至少部分的依据于流量 的特性。该决定可以至少部分的依据于网络适配器 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 的优先权, 此处上述专利申请均全文引用, 以作参考。