逻辑路由器的制造方法
【专利说明】逻辑路由器
【背景技术】
[0001] 在网络虚拟化环境中,部署在管理程序上的较常见的应用之一是3层(3-tier)应 用,其中网络层、数据库层和应用层在不同的L3子网上。这需要穿过一个子网中的一个虚拟 机(VM)到另一个子网中的另一个虚拟机的IP分组首先到达L3路由器,然后被转发到目的地 VM。即使目的地VM被托管在与发端VM相同的主机机器上,也是这种情况。
[0002] 这产生了不必要的网络流量并且导致较高的延迟和较低的吞吐量,这显著地降低 了在管理程序上运行的应用的性能。一般而言,只要任何两个VM是彼此通信的两个不同IP 子网,这种性能降低就会发生。
[0003] 图1示出了通过网络虚拟化基础设施实现的逻辑网络100,其中在不同段或子网上 的虚拟机(VM)通过共享路由器110进行通信。如所示出的,VM 121-129在主机机器131-133 上运行,这些主机机器是通过物理网络105通信地链接的物理机器。
[0004] VM在网络的不同段中。具体而言,VM 121-125在网络的段A中,VM 126-129在网络 的段B中。在网络的相同段中的VM能够利用链路层(L2)协议彼此通信,而在网络的不同段中 的VM不能利用链路层协议彼此通信,并且必须通过网络层(L3)路由器或网关彼此通信。在 不同主机机器中操作的VM通过物理网络105中的网络流量彼此通信,无论它们是否处于相 同的网络段中。
[0005] 主机机器131-133正在运行实现软件交换机的管理程序,其允许在同一主机机器 内的相同段中的VM彼此本地通信而无需经过物理网络105。但是,属于不同段的VM必须经过 只有在物理网络的后面才能到达的L3路由器,诸如共享路由器110。即使在相同主机机器中 操作的VM之间也是这种情况。例如,VM 125和VM 126之间的流量必须经过物理网络105和共 享路由器110,即使它们两者都在主机机器132上操作。
[0006] 所需要的是用于在VM可以运行的每个主机处转发L3分组的分布式路由器。该分布 式路由器应该使得能够在本地(即,在起始管理程序处)转发数据分组,使得在源VM和目的 地VM之间恰好只有一跳。
【发明内容】
[0007] 为了便于在虚拟化网络环境中的主机机器上运行的逻辑网络的虚拟机(VM)之间 的L3分组转发,一些实施例定义了用于逻辑网络的逻辑路由器或者逻辑路由元件(LRE)。在 一些实施例中,LRE跨其逻辑网络的主机机器分布式地操作为虚拟分布式路由器(VDR),其 中每个主机机器将其自己的LRE的本地实例操作为受管理的物理路由元件(MPRE ),用于为 在那个主机上运行的VM执行L3分组转发。在一些实施例中,MPRE允许在同一主机机器上运 行的VM之间的分组的L3转发在主机机器处本地执行,而不必经过物理网络。一些实施例定 义了用于不同租户的不同LRE,并且主机机器可以将不同的LRE操作为多个MPRE。在一些实 施例中,在同一主机机器上运行的用于不同租户的不同MPRE在受管理的物理交换元件 (MPSE)上共享同一端口和同一L2MAC地址。
[0008] 在一些实施例中,LRE包括一个或多个逻辑接口(LIF),每个逻辑接口用作到网络 的特定段的接口。在一些实施例中,每个LIF可以通过其自己的IP地址寻址并且用作其网络 的特定段的网络节点(例如,VM)的缺省网关或ARP代理。每个网络段具有其自己的到LRE的 逻辑接口,并且每个LRE具有其自己的一组逻辑接口。每个逻辑接口具有在网络虚拟化基础 设施内唯一的、其自己的标识符(例如,IP地址或覆盖网络标识符)。
[0009] 在一些实施例中,采用此类逻辑路由器的逻辑网络通过使在不同主机机器中操作 的MPRE对所有虚拟机看起来是相同的来进一步增强网络虚拟化。在这些实施例中的一些实 施例中,可通过对于系统中所有LRE相同的虚拟MAC地址(VMAC)在L2数据链路层处对每个 LRE寻址。每个主机机器与唯一的物理MAC地址(PMAC)相关联。可由其它主机机器通过物理 网络利用其主机机器的唯一PMAC来对实现特定LRE的每个MPRE唯一寻址。在一些实施例中, 离开MPRE的每个分组具有VMAC作为源地址,并且在分组进入PNIC和离开主机到物理网络之 前,主机机器将把源地址改变为唯一PMAC。在一些实施例中,进入MPRE的每个分组具有VMAC 作为目的地地址,并且如果目的地地址是与主机相关联的唯一PMAC地址,则主机将把目的 地MAC地址改变为通用VMAC。在一些实施例中,网络段的LIF用作用于在该网络段中的VM的 缺省网关。接收对其LIF中的一个的ARP查询的MPRE在本地响应查询,而无需将查询转发到 其它主机机器。
[0010]为了为不运行虚拟化软件或操作MPRE的物理主机机器执行L3层路由,一些实施例 指定运行在主机机器上的MPRE来充当用于这些非-VDR主机机器中的每一个的专用路由代 理(指定的实例或指定的MPRE)。在一些实施例中,从虚拟机到物理主机的数据流量通过各 个MPRE进行,而从物理主机到虚拟机的数据流量必须经过指定的MPRE。
[0011] 在一些实施例中,在主机机器中的至少一个MPRE被配置为桥接MPRE,并且这种桥 包括被配置为用于桥接而不是用于路由的逻辑接口。配置为用于路由的逻辑接口(路由 LIF)通过将L3层网络地址解析为L2MAC地址而在逻辑网络的不同段之间执行L3层路由。配 置为用于桥接的逻辑接口(桥接LIF)通过将MAC地址与网络段标识符(例如,VNI)或逻辑接 口绑定来执行桥接。
[0012] 在一些实施例中,在如上所述的主机机器中操作的LRE通过由控制器集群生成的 配置数据集进行配置。在一些实施例中,控制器又基于被不同租户或用户创建和指定的逻 辑网络生成这些配置数据集。在一些实施例中,用于网络虚拟化基础设施的网络管理器允 许用户生成可以通过网络虚拟化基础设施实现的不同的逻辑网络,并且然后将这些逻辑网 络的参数推送到控制器,以便控制器能够生成特定于主机机器的配置数据集,包括用于LRE 的配置数据。在一些实施例中,网络管理器向主机机器提供用于提取用于LRE的配置数据的 指令。
[0013] 一些实施例动态地收集和交付用于LRE的路由信息。在一些实施例中,边缘VM从其 它路由器获知网络路由并且将获知的路由发送到控制器集群,控制器集群又将获知的路由 传播到在主机机器中操作的LRE。
[0014]前面的
【发明内容】
旨在用作对本发明的一些实施例的简要介绍。它并不意味着是本 文档中所公开的所有发明性主题的介绍或概述。以下的【具体实施方式】和在【具体实施方式】中 参考的【附图说明】将进一步描述在
【发明内容】
以及其它实施例中所描述的实施例。因此,为了 理解本文档所描述的所有实施例,需要对
【发明内容】
、【具体实施方式】和【附图说明】进行全面地 阅读。此外,所要求保护的主题不受在
【发明内容】
、【具体实施方式】和【附图说明】中的说明性细节 的限制,而是要由所附权利要求来限定,这是因为所要求保护的主题可以在不背离本主题 的精神的情况下以其它特定的形式来体现。
【附图说明】
[0015] 本发明的新颖特征在所附权利要求中阐述。但是,出于解释的目的,本发明的若干 种实施例在以下图中阐述。
[0016] 图1示出了通过网络虚拟化基础设施实现的逻辑网络,其中在不同段或子网上的 虚拟机(VM)通过共享路由器进行通信。
[0017] 图2示出了由在主机机器中本地操作为MPRE的LRE执行的分组转发操作。
[0018]图3示出了运行操作用于LRE的MPRE的虚拟化软件的主机机器。
[0019 ]图4示出了通过MPSE进行的L2转发操作。
[0020] 图5a-b示出了通过MPRE结合MPSE的L3路由操作。
[0021]图6a_b示出了通过MPRE为来自主机之外的分组执行的L3路由操作。
[0022]图7概念性地示出了具有由跨不同主机机器的MPRE实现的LRE的逻辑网络。
[0023]图8示出了在网络虚拟化基础设施的主机机器中的MPRE的物理实现。
[0024] 图9示出了来自不同段的虚拟机的数据分组如何被定向到主机内的不同逻辑接 □ 〇
[0025] 图10示出了在主机机器中操作的示例MPRE的框图。
[0026] 图11概念性地示出了当处理来自MPSE的数据分组时由MPRE执行的过程。
[0027] 图12示出了用于一些实施例的、具有可通过共用VMAC和唯一 PMAC寻址的MPRE的逻 辑网络。
[0028]图13示出了使用共用VMAC和唯一PMAC的示例路由的L3网络流量。
[0029]图14概念性地示出了用于通过上行链路模块执行的预处理操作的过程。
[0030]图15概念性地示出了用于通过上行链路模块执行的后处理操作的过程。
[0031 ]图16示出了用于在逻辑网络中的LRE的逻辑接口的ARP查询操作。
[0032] 图17示出了用于一些实施例的、MPRE发起的ARP查询。
[0033] 图18示出了MPRE充当用于响应该MPRE能够解析的ARP询问的代理。
[0034]图19示出了在用于与发送者MPRE处于相同主机机器内的虚拟机的ARP询问中使用 唯一 PMAC 〇
[0035]图20和21示出了在MPRE已更新其解析表之后在不同段的VM之间的消息传递操作。 [0036]图22概念性地示出了用于通过利用MPRE为到来数据分组处理地址解析的过程。 [0037]图23示出了指定用于处理去向和来自物理主机的分组的L3路由的MPRE的逻辑网 络。
[0038]图24示出了由逻辑网络中的非-VDR物理主机发起的ARP操作。
[0039]图25示出了使用指定的MPRE用于将来自不同主机上的虚拟机的分组路由到物理 主机。
[0040] 图26a-b示出了使用指定的MPRE用于将来自物理主机的分组路由到不同主机上的 虚拟机。
[0041] 图27概念性地示出了用于处理来自非-VDR物理主机的L3层流量的过程。
[0042] 图28概念性地示出了用于处理到非-VDR物理主机的L3层流量的过程2800。
[0043]图29示出了包括用于用作不同覆盖网络之间的桥的桥LIF的LRE。
[0044] 图30示出了包括多个主机机器的逻辑网络,其中至少一个主机机器是包括具有配 置为桥LIF的逻辑接口的MPRE的主机机器。
[0045] 图31示出了通过MPRE获知MAC地址。
[0046]图32示出了利用由MPRE先前获知的MAC-VNI配对在两个不同的覆盖网络上的两个 VM之间的桥接。
[0047]图33示出了在两个VM之间的桥接,这两个VM不在与桥接MPRE相同的主机中操作。 [0048]图34a示出了其中目的地MAC地址在桥接表中没有匹配的条目并且MPRE必须泛洪 网络以寻找配对的桥接操作。
[0049] 图34b示出了从对泛红的响应中获知MAC地址配对。
[0050] 图35概念性地示出了用于在MPRE处执行桥接的过程。
[0051]图36示出了网络虚拟化基础设施,其中逻辑网络规范被转换为用于主机机器中的 LRE的配置。
[0052]图37概念性地示出了从网络管理器向在各个主机机器中操作的LRE交付配置数 据。
[0053]图38示出了被交付给各个主机机器的配置数据集的结构。
[0054]图39示出了收集和交付动态路由信息到LRE的MPRE。
[0055] 图40概念性地示出了本发明的一些实施例利用其来实现的电子系统。
【具体实施方式】
[0056] 在以下描述中,出于解释的目的阐述了许多细节。但是,本领域普通技术人员将认 识到,本发明可以在不使用这些具体细节的情况下进行实践。在其它的情况下,众所周知的 结构和设备以框图的形式示出,以便防止用不必要的细节模糊本发明的描述。
[0057] 为了便于在虚拟化网络环境中的主机机器上运行的逻辑网络的虚拟机(VM)之间 进行L3分组转发,一些实施例定义了用于逻辑网络的逻辑路由器或者逻辑路由元件(LRE)。 在一些实施例中,LRE跨其逻辑网络的主机机器分布式地操作为虚拟分布式路由器(VDR), 其中每个主机机器将其自己的LRE的本地实例操作为受管理的物理路由元件(MPRE),用于 为在那个主机上运行的VM执行L3分组转发。在一些实施例中,MPRE允许在同一主机机器上 运行的VM之间的分组的L3转发在主机机器处本地执行,而不必经过物理网络。一些实施例 定义了用于不同租户的不同的LRE,并且主机机器可以将不同的LRE操作为多个MPRE。在一 些实施例中,在同一主机机器上运行的用于不同租户的不同MPRE在受管理的物理交换元件 (MPSE)上共享同一端口和同一L2MAC地址。
[0058]对于一些实施例,图2示出了由在主机机器中本地操作为MPRE的LRE执行的分组转 发操作。每个主机机器执行虚拟化功能,以便托管一个或多个VM并且执行交换功能,使得VM 可以在网络虚拟化基础设施中互相通信。每个MPRE在其主机机器内本地执行L3路由操作, 使得即使当同一主机机器上的两个VM属于不同的网络段时,这两个VM之间的流量也将始终 在本地进行。
[0059]图2示出了用于在VM 221-229之间的网络通信的逻辑网络200的实现。逻辑网络 200是在通过物理网络205互连的一组计算和存储资源上被虚拟化的网络。互连的这组计算 和存储资源以及物理网络形成网络虚拟化基础设施。VM 221-229被主机机器231-233托管, 这些主机机器通过物理网络205通信地链接。在一些实施例中,每个主机机器231-233是由 能够创建和托管VM的操作系统(例如,Linux)管理的计算设备。VM 221-229是每个都被分配 一组网络地址(例如,用于L2的MAC地址、用于L3的IP地址等)并且可以向诸如其它VM的其它 网络元件发送和从其接收网络数据的虚拟机。
[0060] VM由在主机机器231-233上运行的虚拟化软件(未示出)来管理。虚拟化软件可以 包括一个或多个软件组件和/或层,可能地包括在虚拟机技术领域中被称为"虚拟机监视 器"、"管理程序"或虚拟化内核的软件组件中的一个或多个软件组件。由于虚拟化术语随着 时间的推移在演化并且还没有完全被标准化,因此这些术语并不总能在其所指代的软件层 和组件之间提供明确的区分。如本文所使用的,术语"虚拟化软件"旨在一般地指逻辑上介 于虚拟机和主机平台之间的软件层或组件。
[0061 ] 在图2的例子中,每个VM在逻辑网络200的两个段中的其中一个段中操作。VM 221-225在段A中操作,而VM 226-229在段B中操作。在一些实施例中,网络段是其中网络元件通 过链路层L2协议彼此通信的网络的一部分,诸如IP子网。在一些实施例中,网络段是封装覆 盖网络,诸如VXLAN或VLAN。
[0062] 在一些实施例中,在网络的相同段中的VM能够利用链路层(L2)协议(例如,根据每 个VM的L2MAC地址)彼此通信,而网络的不同段中的VM不能利用链路层协议彼此通信并且必 须通过网络层(L3)路由器或网关彼此通信。在一些实施例中,VM之间的L2层流量由在每个 主机机器内本地操作的MPSE(未示出)处理。因此,例如,从VM 223到VM 224的网络流量将经 过在主机231中操作的第一 MPSE,第一 MPSE从其端口中的一个端口接收数据并且通过物理 网络205将数据发送到在主机机器232中操作的第二MPSE,第二MPSE然后将通过其端口中的 一个端口将数据发送到VM 224。同样,从VM 228到VM 229的同一段的网络流量将经过在主 机233中操作的单个MPSE,该MPSE在主机233内本地地将流量从一个虚拟端口转发到另一个 虚拟端口。
[0063] 与其实现依赖于用于处理不同网络段之间的流量的外部L3路由器(其可以被实现 为标准的物理路由器、专门用于执行路由功能的VM,等等)的图1的逻辑网络100不同,图2的 逻辑网络200的实现分别使用MPRE 241-243在主机机器231-233内本地执行L3路由功能。在 不同主机机器中的MPRE为逻辑网络200中的VM联合执行逻辑L3路由器的功能。在一些实施 例中,LRE被实现为跨不同的主机机器被复制或实例化以成为其MPRE的数据结构。在图2的 例子中,LRE在主机机器231-233中被实例化为MPRE 241-243。
[0064] 在图2的例子中,源自VM 222并且去往VM 227的网络流量的L3路由通过MPRE 241 来处理,其中MPRE 241是在托管VM 222的主机机器231上本地运行的LRE具体实例 (instantiation)。在将路由的数据分组通过物理网络205发送到VM 227之前,MPRE 241在 主机机器231内本地执行L3层路由操作(例如,链路层地址解析)。这是在没有外部的共享L3 路由器的情况下完成的。同样,源自VM225并且去往VM 226的网络流量的L3路由通过MPRE 242来处理,MPRE 242是在托管VM 225的主机机器232上本地运行的LRE具体实例。MPRE 242 在主机232内本地执行L3层路由操作并且将路由的数据分组直接发送到也被主机机器232 托管的VM 226。因此,在这两个VM 225和226之间的流量不需要通过物理网络205或外部路 由器来发送。
[0065] 下面描述若干个本发明更详细的实施例。部分I描述了 VDR和实现基于LRE的MPRE 的主机的体系架构。部分II描述了用于分组处理的VDR的各种用途。部分III描述了 VDR的控 制和配置。最后,部分IV描述了本发明的一些实施例利用其来实现的电子系统。
[0066] I.VDR的体系架构
[0067] 在一些实施例中,LRE在运行在托管一个或多个VM(例如,在多租户数据中心内)的 主机机器上的虚拟化软件(例如,管理程序、虚拟机监视器,等等)内操作。虚拟化软件管理 VM的操作以及它们对主机机器的物理资源和网络资源的访问,并且LRE的本地具体实例在 主机机器中操作为其本地的MPRE。对于一些实施例,图3示出了运行包括LRE的MPRE的虚拟 化软件305的主机机器300。主机机器通过物理网络390连接到,例如,其它类似的主机机器。 在一些实施例中,物理网络390可以包括各种物理交换机和路由器。
[0068] 如所示出的,主机机器300可以通过物理NIC(PNIC)395对物理网络390访问。主机 机器300还运行虚拟化软件305并且托管VM 311-314。虚拟化软件305用作托管的VM和物理 NIC 395(以及其它物理资源,诸如处理器和存储器)之间的接口。每个VM包括用于通过虚拟 化软件305访问网络的虚拟NIC(VNIC)。在VM中的每个VNIC负责在VM和虚拟化软件305之间 交换分组。在一些实施例中,VNIC是由虚拟NIC仿真器实现的物理NIC的软件抽象。
[0069] 虚拟化软件305管理VM 311-314的操作,并且包括用于管理VM对物理网络的访问 (在一些实施例中,通过实现VM连接到的逻辑网络)的若干个组件。如所示出的,虚拟化软件 包括若干个组件,包括MPSE 320、MPRE 330、控制器代理340、VTEP 350和一组上行链路管道 370〇
[0070]控制器代理340从控制器或控制器集群接收控制平面消息。在一些实施例中,这些 控制平面消息包括用于配置虚拟化软件的各种组件(诸如MPSE 320和MPRE 330)和/或虚拟 机的配置数据。在图3所示的例子中,控制器代理340从物理网络390接收来自控制器集群 360的控制平面消息并且又通过控制信道而无需经过MPSE 320将接收到的配置数据提供给 MPRE 330。但是,在一些实施例中,控制器代理340从独立于物理网络390的直接数据通道 (未示出)接收控制平面消息。在一些其它实施例中,控制器代理从MPSE 320接收控制平面 消息并且通过MPSE 320将配置数据转发到路由器330。控制器代理和虚拟化软件的配置将 在下面的部分III中进一步描述。
[0071] VTEP (VXLAN隧道端点)350允许主机300用作用于逻辑网络流量(例如,VXLAN流量) 的隧道端点。VXLAN是覆盖网络封装协议。由VXLAN封装创建的覆盖网络有时被称为VXLAN网 络,或者简单地称为V X L A N。当主机3 0 0上的VM将数据分组(例如以太网帧)发送到在同一 VXLAN网络中但是在不同主机上的另一个VM时,VTEP在把分组发送到物理网络之前,将利用 VXLAN网络的VNI和该VTEP的网络地址封装数据分组。分组隧道穿过物理网络(即,封装使得 底层分组对中间网络元件透明)到目的地主机。在目的地主机处的VTEP解封装分组并且只 将原始内部数据分组转发到目的地VM。在一些实施例中,VTEP模块只用作用于VXLAN封装的 控制器接口,而VXLAN分组的封装和解封装在上行链路模块370处完成。
[0072] MPSE 320将网络数据交付给物理NIC 395和接收来自物理NIC395的网络数据,物 理NIC 395与物理网络390接口。MPSE还包括将物理NIC与VM 311-314、MPRE 330和控制器代 理340通信地互连的多个虚拟端口(vPort)。在一些实施例中,每个虚拟端口与唯一的L2MAC 地址相关联。MPSE在连接到其虚拟端口的任何两个网络元件之间执行L2链路层分组转发。 MPSE还在连接到其虚拟端口中的任何一个端口的任何网络元件与物理网络390上的可到达 的L2网络元件(例如,运行在另一个主机上的另一个VM)之间执行L2链路层分组转发。在一 些实施例中,MPSE实现跨不同主机机器操作并且可以在同一主机机器上或不同主机机器上 的VM之间执行L2分组交换的逻辑交换元件(LSE)的本地具体实例,或者实现用于若干个逻 辑网络的若干个这种LSE。
[0073] MPRE 330对从MPSE 320的虚拟端口接收到的数据分组执行L3路由(例如,通过执 行L3IP地址到L2MAC地址的解析)。每个路由的数据分组然后被发送回到MPSE 320,以根据 解析的L2MAC地址被转发到其目的地。这个目的地可以是连接到MPSE 320上的虚拟端口的 另一个VM,或者物理网络390上的可到达的L2网络元件(例如,在另一个主机上运行的另一 个VM、物理的非虚拟化的机器,等等)。
[0074] 如所提到的,在一些实施例中,MPRE是跨不同主机机器操作并且可以在同一主机 机器上或在不同主机机器上的VM之间执行L3分组转发的逻辑路由元件(LRE)的本地具体实 例