层3覆盖网关的制作方法

文档序号:7792813阅读:115来源:国知局
层3覆盖网关的制作方法
【专利摘要】本发明提供了一种计算系统,该计算系统包括处理器和用于存储指令的计算机可读存储介质。基于这些指令,该处理器操作该计算系统作为覆盖网关150,覆盖网关150与可能不具有隧穿配置的物理服务器144通信。该计算系统发起和终止与虚拟机(例如逻辑子网182上的122)相关联的覆盖隧道。子网通常对应于租户。在操作期间,覆盖网关150维护虚拟机122的IP地址与虚拟交换机134的相对应的虚拟隧道端点地址之间的隧道映射。该隧道映射也能够包括虚拟机122的MAC地址与IP地址之间的映射。该计算系统然后基于虚拟机122的IP地址来为数据分组确定输出端口。该数据分组包括内部分组,并且这个内部分组的目的地地址对应于该虚拟IP地址。在垫补数据平面层的覆盖隧穿机制可以是虚拟可扩展LAN(VXLAN)、通用路由封装(GRE)协议、使用GRE的网络虚拟化(NVGRE)协议、以及openvSwitch GRE协议之一。
【专利说明】
层3覆盖网关

【技术领域】
[0001]本公开内容涉及网络管理。更具体地说,本公开内容涉及网络中的层3覆盖。

【背景技术】
[0002]互联网的指数增长已经使它成为用于运行在物理和虚拟设备上的各种各样的应用的一种普及的递送媒介。这些应用随之带来了对带宽的与日俱增的需求。作为结果,装备供应商争相构建具有多功能能力(诸如虚拟机迁移的意识)的更大且更快的交换机,以高效地移动更多流量。然而,交换机的尺寸不能无限地增长。提出几个因素地说,它受限于物理空间、功耗、以及设计复杂性。此外,具有更高能力的交换机通常更加复杂和昂贵。更重要的是,因为过于庞大和复杂的系统通常不提供规模经济,所以归因于增加的每端口成本,简单地增加交换机的尺寸和能力可能证明经济上是不可行的。
[0003]随着互联网流量变得更加多样化,网络中的虚拟计算作为用于网络架构的有价值的命题而逐渐变得更加重要。虚拟计算的演进已经对网络设置了附加的要求。然而,常规的层2网络架构通常不能容易地适应虚拟机的动态性质。例如,在常规的数据中心架构中,主机能够通过形成层2广播域的层2 (例如,以太网)互连而被互连。因为层2广播域的物理范围限制,所以数据中心通常被分段成不同的层2广播域。结果,去往层2广播域之外的任何通信通过层3网络来承载。因为虚拟机的位置变得更加移动和动态,并且来自虚拟机的数据通信变得更加多样化,所以通常合意的是,网络基础设施能够提供层3网络覆盖隧道以辅助数据通信跨越层2广播域。
[0004]尽管覆盖给网络带来许多合意的特征,但是在提供跨越层2广播域的逻辑子网中的一些问题仍然未解决。


【发明内容】

[0005]本发明的一个实施例提供了一种计算系统。该计算系统包括处理器和用于存储指令的计算机可读存储介质。基于这些指令,该处理器操作该计算系统作为覆盖网关。该计算系统发起和终止与虚拟机相关联的覆盖隧道。在操作期间,该计算系统将该虚拟机的虚拟互联网协议(IP)地址映射至第二 IP地址,该第二 IP地址被用来基于从配置系统所接收的信息而终止该覆盖隧道。该计算系统然后基于该第二 IP地址来为数据分组确定输出端口。该数据分组包括内部分组,并且这个内部分组的目的地址对应于该虚拟IP地址。
[0006]在对这个实施例的一种变型中,该映射还基于与该虚拟IP地址相对应的虚拟媒体访问控制(MAC)地址。
[0007]在对这个实施例的一种变型中,该计算系统通过将该虚拟机的该虚拟IP地址映射至第三IP地址来更新该映射,该第三IP地址被用来为该数据分组确定输出端口。
[0008]在对这个实施例的一种变型中,该配置系统是以下各项中的一项或多项:虚拟化控制器、网络管理器、以及垫补设备(shim device) 0该虚拟化控制器将该虚拟机分配给主机中的管理程序并且将这些虚拟IP地址指配给该虚拟机。该网络管理器向该管理程序通知有关联网信息。该垫补设备从该网络管理器获得联网信息。
[0009]在一种进一步的变型中,该计算系统还包括垫补控制平面层,该垫补控制平面层识别多个虚拟化控制器。相应的虚拟化控制器能够对应于不同的虚拟化机制。
[0010]在对这个实施例的一种变型中,该计算系统进一步包括垫补数据平面层,该垫补数据平面层识别多个覆盖隧穿机制。
[0011]在一种进一步的变型中,隧穿机制与以下各项中的一项或多项相关联:虚拟可扩展局域网(VXLAN)、通用路由封装(GRE)协议、使用GRE的网络虚拟化(NVGRE)协议、以及openvSwitch GRE 协议。
[0012]在对这个实施例的一种变型中,该计算系统在数据分组中识别与该计算系统和远程计算系统相关联的逻辑IP地址,其中该数据分组与该覆盖隧道相关联。
[0013]在一种进一步的变型中,该计算系统连同该远程计算系统来确定该计算系统的活动状态。如果该计算系统不是活动的,则该处理器阻止该计算系统处理与该逻辑IP地址相关联的分组。
[0014]在一种进一步的变型中,该计算系统检测到该远程计算系统的失效。一经检测到该失效,该计算系统就开始处理与该逻辑IP地址相关联的分组。
[0015]在一种进一步的变型中,该计算系统识别与该计算系统和远程计算系统相关联的隧道终止IP地址,其中该数据分组与该覆盖隧道相关联。这个隧道终止IP地址属于与该逻辑IP地址所属的子网不同的子网。

【专利附图】

【附图说明】
[0016]图1A图示了根据本发明的一个实施例的具有覆盖网关的示例性虚拟化的网络环境。
[0017]图1B图示了根据本发明的一个实施例的具有辅助覆盖网关的垫补设备的示例性虚拟化的网络环境。
[0018]图2图示了根据本发明的一个实施例的支持多个控制接口和隧穿机制的示例性覆盖网关。
[0019]图3图示了根据本发明的一个实施例的用于常规分组的示例性头部格式以及由覆盖网关提供的它的隧道封装。
[0020]图4A呈现了根据本发明的一个实施例的流程图,该流程图图示了覆盖网关从虚拟化控制器获得隧道映射的过程。
[0021]图4B呈现了根据本发明的一个实施例的流程图,该流程图图示了覆盖网关转发所接收的分组的过程。
[0022]图4C呈现了根据本发明的一个实施例的流程图,该流程图图示了覆盖网关在逻辑子网中转发广播分组、未知单播分组、或者多播分组的过程。
[0023]图5A图示了根据本发明的一个实施例的具有高可用性的示例性覆盖网关。
[0024]图5B图示了根据本发明的一个实施例的对具有高可用性的覆盖网关的多个地址的示例性使用。
[0025]图6图示了根据本发明的一个实施例的作为覆盖网关操作的示例性计算系统。
[0026]在这些图中,相似的参考标号指代相同的图元素。

【具体实施方式】
[0027]以下描述被提出以使得本领域的技术人员能够制造和使用本发明,并且在特定的应用及其要求的背景中被提供。对所公开的各实施例的各种修改对本领域的技术人员将容易是明显的,并且不背离本发明的精神和范围,本文中定义的一般原理可以被应用至其他实施例和应用。因此,本发明不局限于所示出的这些实施例,而是将符合与权利要求相一致的最宽范围。
[0028]鍵
[0029]在本发明的各实施例中,促进超出物理子网边界的逻辑子网络(子网)的问题通过并入如下的覆盖网关来解决,该覆盖网关提供物理子网之间的虚拟隧穿以形成该逻辑子网。这个逻辑子网逻辑地耦合了属于该逻辑子网但是位于属于不同物理子网的主机中的虚拟机。以这种方式,网络的物理基础设施通常被虚拟化来适应多租赁。网络虚拟化中的挑战之一是将物理网络拓扑与虚拟化的网络子网桥接。
[0030]例如,数据中心能够包括与客户(或租户)相关联的虚拟机,这些虚拟机运行在位于不同物理主机上的管理程序上。这些虚拟机能够是同一逻辑子网的部分。数据中心的虚拟化控制器通常将相应的虚拟机分配给主机中的管理程序,并且将媒体访问控制(MAC)地址和互联网协议(IP)地址指配给该虚拟机。通常,管理程序或虚拟交换机使用层3虚拟隧穿,以允许属于同一逻辑子网的虚拟机通信。这些管理程序或虚拟交换机能够被称为虚拟隧道端点(VTEP)。然而,如果虚拟机中的一个虚拟机的主机不具有等同的隧穿配置,则其他虚拟机可能不能经由虚拟隧道而通信。
[0031]为了解决这个问题,覆盖网关促进了通向相应主机的相应VTEP(例如,管理程序或虚拟交换机)的虚拟隧穿。该覆盖网关进而与不支持相同隧穿机制的目的地(诸如物理服务器)通信。然而,为了将该虚拟隧道与虚拟机相关联,覆盖网关需要识别用于该虚拟机的VTEP。为了促进这种识别,覆盖网关维护虚拟机的MAC地址与相对应的VTEP地址之间的隧道映射。注意,该隧道映射还能够包括MAC地址与该虚拟机的IP地址之间的映射。
[0032]在一些实施例中,覆盖网关与虚拟化控制器通信并且获得用于相应虚拟机的隧道映射。无论何时该映射被更新,覆盖网关从虚拟化控制器获得经更新的映射。在一些实施例中,覆盖网关能够包括两个“垫补层”。垫补层操作为两个设备之间的通信接口。一个垫补层操作为控制平面并且与虚拟化控制器对接,以用于获得该映射。另一个垫补层操作为数据平面并且促使去往和来自虚拟机的分组的隧道封装。作为结果,同一覆盖网关能够支持包括多种虚拟化和隧穿机制的多个覆盖网络。
[0033]在一些实施例中,数据中心中的互连包括以太网结构交换机。在一种以太网结构交换机中,耦合在任意拓扑中的任何数量的交换机可以逻辑地操作为单个交换机。任何新的交换机可以无需任何手动配置而以“即插即用”模式加入或离开该结构交换机。结构交换机对外部设备表现为单个逻辑交换机。在一些进一步的实施例中,该结构交换机是多链路透明互连(TRILL)网络并且该结构交换机的相应成员交换机是TRILL路由桥(RBridge)。
[0034]术语“外部设备”能够指代VTEP不能向其直接建立隧道的任何设备。外部设备能够是主机、服务器、常规的层2交换机、层3路由器、或者任何其他类型的物理或虚拟设备。另外,外部设备能够耦合至更远离网络的其他交换机或者主机。外部设备也能够是用于多个网络设备进入网络的聚集点。术语“设备”和“机器”可以互换地被使用。
[0035]术语“管理程序”在通用的意义上被使用,并且能够指代任何虚拟机管理器。创建并且运行虚拟机的任何软件、固件、或硬件能够是“管理程序”。术语“虚拟机”也在通用的意义上被使用,并且能够指代机器或设备的软件实施方式。类似于物理设备的能够执行软件程序的任何虚拟设备能够是“虚拟机”。管理程序在其上运行了一个或多个虚拟机的主机外部设备能够被称为“主机”。
[0036]术语“隧道”指代一种数据通信,其中使用另一种联网协议来封装一个或多个联网协议。尽管使用基于层2协议的层3封装的示例来提出本公开内容,但是“隧道”不应当被解释为将本发明的实施例限制于层2和层3协议。“隧道”能够被建立用于任何网络层、子层、或者网络层的组合。
[0037]术语“分组”指代能够跨网络一起被传输的一组比特。“分组”不应当被解释为将本发明的实施例限制于层3网络。“分组”能够由指代一组比特的其他术语取代,诸如“帧”、“信元”、或“数据报”。
[0038]术语“交换机”在通用的意义上被使用,并且它能够指代操作在任何网络层中的任何独立交换机或结构交换机。“交换机”不应当被解释为将本发明的实施例限制于层2网络。能够将流量转发给外部设备或另一个交换机的任何设备能够被称为“交换机”。“交换机”的示例包括但不限于:层2交换机、层3路由器、TRILL RBridge、或者包括多个类似的或异构的更小物理交换机的结构交换机。
[0039]术语“RBridge”指代路由桥,路由桥是实施TRILL协议的桥,TRILL协议如描述在http://tools.1etf.0rg/html/rfc6325处可得到的互联网工程任务组(IETF)请求注解(RFC) “Routing Bridges (RBridge):Base Protocol Specificat1n,,中,其通过参考并入本文。本发明的各实施例不限于RBridges之中的应用。其他类型的交换机、路由器、以及转发器也能够被使用。
[0040]术语“交换机标识符”指代能够被用来标识交换机的一组比特。如果交换机是RBridge,则交换机标识符能够是“RBridge标识符”。TRILL标准使用“RBridge ID”来表示被指配给RBridge的48比特的中间系统到中间系统(IS-1S) ID,并且使用“RBridge别名”来表示用作用于该“RBridge ID”的缩写的16比特值。在本公开内容中,“交换机标识符”被用作通用术语,不限于任何比特格式,并且能够指代能够标识交换机的任何格式。术语“RBridge标识符”在通用的意义上被使用,不限于任何比特格式,并且能够指代“RBridgeID”、“RBridge别名”、或者能够标识RBridge的任何其他格式。
[0041]网络架构
[0042]图1A图示了根据本发明的一个实施例的具有覆盖网关的示例性虚拟化的网络环境。如图1A中所图示的,虚拟化的网络环境100 (其能够在数据中心中)包括多个主机110和120,该多个主机110和120经由一跳或多跳而耦合至网络140中的层3路由器142。多个虚拟机102、104、106和108运行在主机110中的管理程序112上。相应的虚拟机具有虚拟端口(VP,或虚拟网络接口卡,VNIC)。运行在管理程序112上的相应虚拟机的虚拟端口被逻辑地耦合至虚拟交换机114,虚拟交换机114由管理程序112提供。虚拟交换机114负责分派虚拟机102、104、106和108的传出和传入的流量。类似地,多个虚拟机122、124、126和128运行在主机120中的管理程序132上。运行在管理程序132上的相应虚拟机的虚拟端口被逻辑地耦合至虚拟交换机134,虚拟交换机134由管理程序132提供。在逻辑上,虚拟交换机114和134用作聚集点并且经由一条或多条链路来耦合路由器142。
[0043]还被包括的是虚拟化控制器162和网络管理器164。虚拟化控制器162,通常基于来自网络管理员的指令,将相应的虚拟机分配给主机中的管理程序,并且将虚拟MAC地址和IP地址指配给该虚拟机。例如,虚拟化控制器162将虚拟机122分配给主机120中的管理程序132,并且将虚拟MAC地址和IP地址指配给虚拟机122的虚拟端口 123。由虚拟机122生成的以太网帧具有虚拟端口 123的虚拟MAC作为它的源地址。在这个示例中,虚拟机110和120是网络140中的两个不同物理子网的部分。然而,主机110中的虚拟机102和104以及主机120中的虚拟机122和124是逻辑子网182的部分。类似地,主机110中的虚拟机106和108以及主机120中的虚拟机126和128是同一逻辑子网184的部分。通常,逻辑子网对应于租户。
[0044]在一些实施例中,虚拟交换机114和134被逻辑地耦合至网络管理器164,网络管理器164向虚拟交换机114和134提供彼此通信所需要的联网信息。例如,因为虚拟机102和122是同一逻辑子网的部分,所以虚拟机102能够经由层2而与虚拟机122通信。然而,这些虚拟机位于不同物理子网中的主机上。因此,虚拟交换机114需要知道虚拟机122被逻辑地耦合至虚拟交换机134 (例如,虚拟交换机134是用于虚拟机122的VTEP)。通过提供这个联网信息,网络管理器164使得虚拟交换机114和134能够分别操作为用于虚拟机102和122的VTEP,并且使用层3虚拟隧穿来促进这些虚拟机间的通信。然而,因为外部设备(诸如物理服务器144)可能不具有等同的隧穿配置,所以虚拟机(诸如虚拟机122)可能不能经由虚拟隧道而与服务器144通信。
[0045]为了与服务器144通信,覆盖网关150允许相应的VTEP经由网络140而建立虚拟隧穿。覆盖网关150进而与物理服务器144通信。在操作期间,虚拟机122经由逻辑耦合的虚拟交换机134向虚拟服务器144发送分组。虚拟交换机134将该分组封装在隧道头部中并且将经封装的分组转发给网关150。一经接收到该经封装的分组,覆盖网关150就去除隧道封装,并且基于该分组的目的地地址而将该分组转发给服务器144。当服务器144将分组发回给虚拟机122时,覆盖网关150接收该分组。然而,为了高效地将这个分组转发给虚拟机122,覆盖网关150需要识别虚拟机122被逻辑地耦合至其的虚拟交换机(例如,VTEP)。为了促进该识别,覆盖网关150维护虚拟机122的MAC地址与虚拟交换机134的对应VTEP地址之间的隧道映射。注意,该隧道映射还能够包括虚拟机122的MAC地址与IP地址之间的映射。
[0046]例如,覆盖网关150能够通过发送用以获得对应VTEP地址的带有虚拟机122的IP地址的广播(例如,地址解析协议(ARP))查询,来获得用于虚拟机122的这种映射。然而,在具有大量虚拟机的大数据中心中,发送大量广播查询可能是低效的。在一些实施例中,覆盖网关150与虚拟化控制器162通信并且获得用于相应虚拟机的隧道映射。对于虚拟机122,这种映射能够包括对主机120的标识符(例如,主机120的物理网络接口的MAC地址)、虚拟端口 123的MAC地址、以及虚拟交换机134的对应VTEP地址。如果该映射在虚拟化控制器162中被更新(例如,由于虚拟机迁移),则覆盖网关150从虚拟化控制器162获得经更新的隧道映射。
[0047]基于所获得的隧道映射,覆盖网关150将虚拟交换机134识别为用于虚拟机122的VTEP,将来自服务器144的分组封装在隧道头部中,并且将经封装的分组转发给虚拟交换机134。一经接收到该经封装的分组,虚拟交换机134就去除封装并且将该分组提供给虚拟机122。假设虚拟化控制器162将虚拟机122迁移到主机110。结果,用于虚拟机122的隧道映射在虚拟化控制器162中被更新。用于虚拟机122的经更新的映射包括对主机110的标识符和虚拟交换机114的对应VTEP地址。覆盖网关150能够从虚拟化控制162接收包括经更新的隧道映射的更新消息。
[0048]在一些实施例中,覆盖网关150能够从网络管理器164获得隧道映射。根据本发明的一个实施例,连同图1A中的示例,图1B图示了具有辅助覆盖网关的垫补设备的示例性虚拟化的网络环境。网络管理器164向相应的虚拟交换机提供彼此通信所需要的联网信息。为了从网络管理器164获得信息,虚拟化的网络环境100包括垫补设备172,垫补设备172运行虚拟交换机174。这个虚拟交换机174被逻辑地耦合至网络管理器164,网络管理器164将虚拟交换机174考虑为管理程序中的另一个虚拟交换机。结果,网络管理器164向虚拟交换机174提供与逻辑地耦合至其他虚拟交换机的虚拟机通信所需要的联网信息。对于虚拟机122,这种映射能够包括对主机120的标识符(例如,主机120的物理网络接口的MAC地址)、虚拟端口 123的MAC地址、以及虚拟交换机134的对应VTEP地址。
[0049]垫补设备172能够包括与覆盖网关150通信的垫补层176。覆盖网关150经由垫补层176来获得联网信息并且构建隧道映射。注意,联网信息可能不包括虚拟机的虚拟MAC地址。在这样的场景下,覆盖网关150使用广播查询来获得对应的虚拟MAC地址,这些广播查询使用虚拟机的虚拟IP地址。在一些实施例中,垫补层176能够位于网络管理器164(以虚线表示)上并且将联网信息提供给覆盖150,由此旁路垫补设备172。然而,将垫补层176与网络管理器164集成,在物理硬件中产生了附加的存储器和处理需求,并且可能降低网络管理器164的性能。
[0050]图2图示了根据本发明的一个实施例的支持多个控制接口和隧穿机制的示例性覆盖网关。覆盖网关150能够包括两个垫补层。一个垫补层操作为控制平面220并且与虚拟化控制器162对接,用于获得映射。另一个垫补层操作为数据平面210并且促进对去往和来自虚拟机的分组的隧道封装。作为结果,覆盖网关150能够支持包括多种虚拟化和隧穿机制的多个覆盖网络。
[0051]控制平面220包括多个控制接口 222、224和226。相应的控制接口能够与不同的虚拟化管理器通信。控制接口的示例包括但不限于:用于VMWareNSX的接口、用于微软系统中心的接口、以及用于OpenStack的接口。例如,控制接口 222能够与OpenStack通信,而控制接口 224能够与微软系统中心通信。数据平面210支持多个隧穿机制212、214和216。相应的隧穿机制能够通过促进对应的隧道封装(即,操作为用于不同隧穿机制的VTEP)来建立不同的覆盖隧道。隧穿机制的示例包括但不限于:虚拟可扩展局域网(VXLAN)、通用路由封装(GRE)、以及它的变型,诸如使用GRE的网络虚拟化(NVGRE)和openvSwitch GRE0例如,隧穿机制212能够表示VXLAN,而隧穿机制214能够表示GRE。
[0052]具有对不同接口和隧穿机制的支持,如果数据中心包括来自不同销售商的多个虚拟化的网络环境,则同一覆盖网关150能够服务这些环境。在图1A中的示例中,如果虚拟交换机114支持VXLAN而虚拟交换机134支持GRE,则网关150能够分别使用隧穿机制212和214来分别向虚拟交换机114和134提供经隧道封装的覆盖。如果虚拟化控制器162运行OpenStack,则覆盖网关150能够使用接口 222来获得隧道映射。类似地,如果虚拟化控制器162是微软系统中心,则覆盖网关150能够使用接口 224来获得隧道映射。
[0053]分组格式
[0054]图3图示了根据本发明的一个实施例的用于常规分组的示例性头部格式以及由覆盖网关提供的隧道封装。在这个示例中,常规的以太网分组300通常包括有效载荷308和以太网头部310。通常,有效载荷308能够包括IP分组,该IP分组包括IP头部320。IP头部320包括IP目的地地址(DA) 312和IP源地址(SA) 314。以太网头部310包括MAC DA302, MAC SA 304、以及可选地虚拟局域网(VLAN)标签306。
[0055]假设分组300是图1A中的从服务器144到虚拟机122的分组。在一个实施例中,覆盖网关150基于隧道映射而将常规分组300封装成经封装的分组350。经封装的分组350通常包括封装头部360,封装头部360对应于一种封装机制,如连同图2所描述的。封装头部360包含封装DA 352 (其对应于虚拟交换机134的VTEP IP地址)以及封装SA 354 (其对应于覆盖网关150的IP地址)。在图1A中的示例中,经封装的分组350基于封装DA 352经由网络140而被转发。在一些实施例中,封装头部360还包括租户标识符356,租户标识符356唯一地标识虚拟化的网络环境100中的租户。例如,如果封装头部360对应于用于虚拟机122的隧道,则租户标识符356标识虚拟机122所属的租户。以这种方式,网关150能够通过对于不同租户使用用于分组的分离隧道封装来维持租户隔离。
[0056]通常,服务器144中的上层应用使用虚拟机122的虚拟IP地址作为IP DA地址312,并且使用服务器144的物理IP地址作为IP SA地址314,而生成去往虚拟机122的IP分组。这个IP分组成为有效载荷308。服务器144中的层2然后生成以太网头部310来封装有效载荷308。如果服务器144和虚拟机122位于同一逻辑子网内,则以太网头部310的MAC DA 302被指配虚拟机122的MAC地址。以太网头部310的MAC SA 304是服务器144的MAC地址。服务器144然后经由覆盖网关150将以太网分组300发送给虚拟机122。
[0057]当覆盖网关150从服务器144接收到以太网分组300时,覆盖网关150检验以太网头部310,并且可选地检验IP头部308和它的有效载荷(例如,层4头部)。基于这个信息,覆盖网关150确定以太网分组300去往同一逻辑子网内的虚拟机122。随后,覆盖网关150组装封装头部360 (对应于一种封装机制)。封装头部360的封装DA 352被指配虚拟交换机134的VTEP IP地址的IP地址。封装头部360的封装SA 354是覆盖网关150的IP地址。注意,覆盖网关150的IP地址也能够是逻辑IP地址。覆盖网关150然后附上租户标识符356并且将经封装的分组350转发给VTEP虚拟交换机134。一经接收到分组350,虚拟交换机134就去除封装头部360,查验经解除封装的分组300中的以太网头部310,并且将经解除封装的分组300提供给虚拟机122。
[0058]Μ?
[0059]在图1A中的示例中,覆盖网关150与虚拟化控制器162通信以获得隧道映射,并且基于所获得的隧道映射而经由隧道封装来转发所接收的分组。图4Α呈现了根据本发明的一个实施例的流程图,该流程图图示了覆盖网关从虚拟化控制器获得隧道映射的过程。如连同图2所描述的,在操作期间,覆盖网关识别虚拟化控制器(操作402),并且识别与所识别的虚拟化控制器相对应的本地控制接口(操作404)。覆盖网关然后经由所识别的控制接口从虚拟化控制器请求信息(操作406)。作为响应,虚拟控制器发送包括相关隧道映射的信息消息。
[0060]覆盖网关接收这个信息消息(操作408)并且从该信息消息中提取隧道映射(操作410)。这个隧道映射将相应虚拟机的MAC地址映射至对应的VTEP地址。注意,隧道映射也能够包括虚拟机的MAC地址与IP地址之间的映射。覆盖网关然后本地存储所提取的隧道映射(操作412)。覆盖网关也能够从虚拟化控制器获得用于相应虚拟机的租户信息(操作414),并且将租户与对应的虚拟机相关联(操作416)。在一些实施例中,覆盖网关能够获得租户信息作为隧道映射的一部分。
[0061]图4B呈现了根据本发明的一个实施例的流程图,该流程图图示了覆盖网关转发所接收的分组的过程。如连同图3所描述的,一经接收到分组(操作452),覆盖网关就检查该分组是否被封装用于本地VTEP(S卩,去往与网关相关联的VTEP)(操作454)。如果该分组被封装并且去往与网关相关联的VTEP,则覆盖网关使用VTEP IP地址来将该分组的隧道封装解除封装(操作456)。如果由覆盖网关接收的分组未被封装(操作454)或者封装已经利用覆盖网关VTEP IP地址而被解除封装(操作456),则网关检查该分组的目的地是否经由隧道是可到达的(例如,经由隧道去往虚拟机)(操作458)。当隧道封装已经从该分组被去除(操作456)并且目的地经由隧道不是可到达的(操作458),则覆盖网关基于IP头部的IP地址来执行查找(操作460)并且基于该查找来转发该分组(操作462)。注意,如果该分组已经被封装,则该IP头部指代内部IP头部。
[0062]如果由覆盖网关接收的分组不被封装用于本地VTEP (操作454)或者已经利用覆盖网关VTEP IP地址而被解除封装(操作456),并且目的地经由隧道是可到达的(操作458),则覆盖网关从隧道映射识别VTEP地址以及目的地的租户(操作470)。覆盖网关能够通过查验该分组的目的地IP和/或MAC地址来识别目的地。覆盖网关然后将该分组封装在隧道封装中确保租户分离(操作472)。在一些实施例中,覆盖网关针对分离的租户使用分离的隧道并且能够将对租户的标识符包括在封装头部中。覆盖网关将所识别的VTEP IP地址指配作为目的地IP地址,并且将覆盖网关的IP地址指配作为封装头部中的源IP地址(操作474)。注意,如果封装机制基于与层3不同的层,则覆盖网关能够使用对应层的VTEP和网关地址。覆盖网关然后朝向该VTEP转发经封装的分组(操作476)。
[0063]通常,广播、未知单播、或多播流量(其能够被称为“BUM”流量)被分发给多个接收者。为了部署的容易性,逻辑交换机通常制造属于这种流量的分组的多个拷贝,并且基于隧道封装来朝向与同一逻辑子网相关联的虚拟机交换机个别地单播这些分组。这通常导致对管理程序处理能力的低效使用,尤其在大规模的部署中。为了解决这个问题,覆盖网关能够促进这种流量的高效分发。虚拟交换机能够简单地将“BUM”分组封装在隧道封装中,并且将该分组转发给覆盖网关。覆盖网关进而在逻辑子网中转发该分组。
[0064]图4C呈现了根据本发明的一个实施例的流程图,该流程图图示了覆盖网关在逻辑子网中转发广播、未知单播、或多播分组的过程。在操作期间,覆盖网关接收属于广播、未知单播、或多播流量的经隧道封装的分组(操作482)。覆盖网关去除隧道封装(操作484),并且从隧道映射识别与该分组的逻辑子网相关联的(多个)接口(操作486)。因为覆盖网关从其接收了该分组的虚拟交换机负责将该分组分发给逻辑子网的成员虚拟机,所以覆盖网关不朝向该虚拟交换机转发该分组。
[0065]覆盖网关然后制造与所识别的(多个)接口的数量相对应的分组的多个拷贝(操作488),并且将该分组的相应拷贝封装在用于相应所识别的接口的隧道封装中(操作490)。因为如连同图2所描述的,覆盖网关支持多种隧穿机制,所以如果与逻辑子网相关联的不同虚拟交换机支持不同的隧穿机制,则覆盖网关仍然能够分发该分组。覆盖网关指配相应的所识别的VTEP IP地址作为目的地IP地址,并且覆盖网关的IP地址作为相应封装头部中的源IP地址(操作492)。注意,如果封装机制基于与层3不同的层,则覆盖网关能够使用对应层的VTEP和网关地址。覆盖网关然后经由对应的所识别的接口朝向对应的VTEP转发经封装的分组的相应拷贝(操作494)。
[0066]高可用性
[0067]在图1A中的不例中,如果覆盖网关150失效或者遇到链路失效,则覆盖网关150不再能够操作为网关。因此,向覆盖网关150提供高可用性是至关重要的。图5A图示了根据本发明的一个实施例的具有高可用性的示例性覆盖网关。如图5A中所图示的,虚拟化的网络环境500 (其能够在数据中心中)包括主机520,主机520经由一跳或多跳而耦合至网络514中的交换机512。多个虚拟机运行在主机520中的管理程序522上。相应的虚拟机具有虚拟端口。运行在管理程序522上的相应虚拟机的虚拟端口被逻辑地耦合至由管理程序522提供的虚拟交换机524。也被包括的是虚拟化控制器540,其将相应的虚拟机分配给主机中的管理程序,并且向该虚拟机指配虚拟MAC地址和IP地址。
[0068]虚拟化的网络环境500还包括经由逻辑链路505而互相耦合的覆盖网关502和504。逻辑链路505能够包括经由层2和/或层3而互连的一个或多个物理链路。在这个示例中,覆盖网关502仍然保持活动地可操作,而覆盖网关504操作为用于覆盖网关502的备用网关。在一些实施例中,覆盖网关502与虚拟化控制器540通信并且获得用于相应虚拟机的对应隧道映射。在一些实施例中,一经获得该隧道映射,覆盖网关就将包括该隧道映射的信息消息发送给覆盖网关504。以这种方式,覆盖网关502和504两者能够具有相同的隧道映射。如果该映射在虚拟化控制器540中被更新(例如,由于虚拟机迁移),如连同图1A所描述的,则覆盖网关502从虚拟化控制器540获得经更新的隧道映射,并且将包括经更新的隧道映射的信息消息发送给覆盖网关504。在一些实施例中,覆盖网关502和504个别地从虚拟化控制器540获得该隧道映射。
[0069]覆盖网关502和504能够共享逻辑IP地址510。尽管是可操作的,但是活动的覆盖网关502使用逻辑IP地址510作为VTEP地址,而备用的覆盖网关504抑制与逻辑IP地址510相关联的操作(例如,ARP响应)。作为结果,只有覆盖网关502响应对于逻辑IP地址510的任何ARP查询。结果,交换机512仅得知覆盖网关502的MAC地址并且将所有的后续分组转发给覆盖网关502。
[0070]在常规操作期间,覆盖网关502经由网络514而促进通向逻辑交换机524的虚拟隧穿,逻辑交换机524是主机520中用于虚拟机526的VTEP。一经从虚拟机526获得分组,虚拟交换机524就将该分组封装在隧道头部中并且朝向覆盖网关502转发经封装的分组。因为交换机512仅得知了覆盖网关502的MAC地址,所以交换机512将该分组转发给覆盖网关502。一经接收到经封装的分组,覆盖网关502就去除隧道封装并且朝向该分组的目的地地址转发该分组。
[0071]覆盖网关502和504能够经由链路505而交换“保持活着”消息来相互通知关于它们的活动状态。假设失效530导致了使覆盖网关502不可用的链路或设备失效。覆盖网关504通过在预定时间段内没有从覆盖网关502接收到该保持活着消息来检测失效530,并且采取与逻辑IP地址510相关联的操作。由于覆盖网关502的失效,交换机512通常清除所得知的网关502的MAC地址。在一些实施例中,覆盖网关504发送不必要的ARP响应消息,该不必要的ARP响应消息允许交换机512得知覆盖网关504的MAC地址并且相应地更新它的转发表。基于经更新的转发表,交换机512将来自虚拟机526的后续分组转发给覆盖网关504。一经接收到经封装的分组,覆盖网关504就去除隧道封装并且朝向该分组的目的地地址转发该分组。
[0072]图5B图示了根据本发明的一个实施例的具有高可用性的覆盖网关的多个地址的一种示例性使用。在这个示例中,覆盖网关502和504能够具有用于不同目的的不同IP地址。例如,除了逻辑IP地址510之外,覆盖网关502和504还能够具有VTEP IP地址550和网关IP地址552。虚拟机524使用网关IP地址552作为默认网关地址。因此,如果虚拟机526需要在它的逻辑子网之外发送分组,则虚拟机526向网关IP地址552发送ARP请求。在一些实施例中,覆盖网关502和504能够具有用于相应逻辑子网的相应网关IP地址,以操作为用于逻辑子网的默认网关。
[0073]虚拟交换机524使用逻辑IP地址510作为默认网关地址,并且使用VTEP IP地址550作为默认隧道目的地地址。VTEP IP地址550能够在与主机520中的虚拟机相关联的(多个)逻辑子网之外。为了将经隧道封装的分组发送给VTEP IP地址550,虚拟交换机524向逻辑IP地址510发送ARP请求。因为所有去往VTEP IP地址550的经封装的分组都指向逻辑IP地址510,所以覆盖网关502接收分组并且采取适当的动作。以这种方式,单个VTEP IP地址550 (其能够在与相应虚拟机相关联的逻辑子网之外)操作为用于所有逻辑子网的隧道目的地地址。
[0074]如连同图5A所描述的,一经检测到失效530,覆盖网关504就采取与逻辑IP地址510相关联的操作。因为所有去往VTEP IP地址550的经封装的分组都指向逻辑IP地址510,所以这些经封装的分组指向覆盖网关504。因此,仅向逻辑IP地址510提供高可用性,对于向去往VTEP IP地址550的经隧道封装的分组确保高可用性是足够的。然而,如果VTEP IP地址550在虚拟机526的逻辑子网中,则虚拟机526直接将分组发送给VTEP IP地址550。在这样的场景下,向VTEP IP地址550提供高可用性也是必要的。
[0075]示例性覆盖网关
[0076]图6图示了根据本发明的一个实施例的操作为覆盖网关的示例性计算系统。在这个示例中,计算系统600包括通用处理器604、存储器606、多个通信端口 602、分组处理器610、隧道管理模块630、转发模块632、控制模块640、高可用性模块620、以及存贮器650。处理器604执行存储在存储器606中的指令来操作计算系统600作为覆盖网关,该覆盖网关发起或终止与虚拟机相关联的覆盖隧道。
[0077]在操作期间,通信端口 602中的一个通信端口从配置系统接收分组。这个配置系统能够是以下各项中的一项或多项:虚拟化控制器、网络管理器、以及垫补设备。分组处理器610,连同控制模块640,从所接收的分组中提取隧道映射。这个隧道映射将虚拟机的虚拟IP地址和/或MAC地址映射至VTEP IP地址。控制模块640将隧道映射存储在存贮器650中并且在操作期间加载在存储器606中。如连同图1A所描述的,当该映射被更新时,控制模块640也更新该映射。隧道管理模块630辨识多种覆盖隧穿机制。当去往虚拟机的数据分组被接收时,转发模块632从用于虚拟机的映射中获得VTEP IP地址,基于所辨识的隧穿机制来封装该分组,并且基于该VTEP IP地址而为该数据分组在通信端口 602之中确定输出端口。
[0078]如连同图5A所描述的,高可用性模块620将计算系统600与逻辑IP地址相关联,该逻辑IP地址也与一个远程计算系统相关联。高可用性模块620确定计算系统600是活动的覆盖网关还是备用的覆盖网关。如果计算系统600是备用的覆盖网关,则处理器604阻止分组处理器610处理与该逻辑IP地址相关联的分组。当高可用性模块620检测到该远程计算系统的失效时,分组处理器610开始处理与该逻辑IP地址相关联的分组。如连同图5B所描述的,在一些实施例中,高可用性模块620也将计算系统600与VTEP地址相关联,该VTEP地址属于与该逻辑IP地址所属的子网不同的子网。
[0079]注意,上面所提到的模块能够在硬件中以及在软件中被实施。在一个实施例中,这些模块能够被具体化在存储器中所存储的计算机可执行指令中,该存储器耦合至计算系统600中的一个或多个处理器。当被执行时,这些指令促使该(些)处理器执行前面提到的功倉泛。
[0080]总之,本发明的各实施例提供了用于促进层3覆盖隧穿的一种计算系统和一种方法。在一个实施例中,该计算系统包括处理器和用于存储指令的计算机可读存储介质。基于这些指令,该处理器操作该计算系统作为覆盖网关。该计算系统发起和终止与虚拟机相关联的覆盖隧道。在操作期间,该计算系统基于从配置系统接收的信息,而将虚拟机的虚拟互联网协议(IP)地址映射至被用来终止该覆盖隧道的第二 IP地址。该计算系统然后基于该第二 IP地址来为数据分组确定输出端口。该数据分组包括内部分组,并且这个内部分组的目的地地址对应于该虚拟IP地址。
[0081]本文所描述的这些方法和过程能够被具体化为代码和/或数据,该代码和/或数据能够被存储在计算机可读的非瞬态存储介质中。当计算机系统读取和执行存储在该计算机可读的非瞬态存储介质中的该代码和/或数据时,该计算机系统执行被具体化为数据结构和代码并且被存储在该介质内的这些方法和过程。
[0082]本文所描述的这些方法和过程能够由硬件模块或装置执行和/或被包括在硬件模块或装置中。这些模块或装置可以包括但不限于:专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、在特定时间执行特定软件模块或一段代码的专属或共享的处理器、和/或现在已知的或者以后开发的其他可编程逻辑设备。当这些硬件模块或装置被激活时,它们执行被包括在它们内的这些方法和过程。
[0083]对本发明的各实施例的前述描述仅为了举例说明和描述的目的而已经被提出。它们不意图为是穷尽的或者限制本公开内容。因此,许多修改和变型对本领域的技术人员将是明显的。本发明的范围由所附权利要求来定义。
【权利要求】
1.一种计算系统,包括: 处理器; 存储指令的计算机可读存储介质,当所述指令由所述处理器执行时促使所述处理器执行一种方法,所述方法包括: 发起或终止与虚拟机相关联的覆盖隧道; 基于从配置系统所接收的信息,将所述虚拟机的虚拟互联网协议(IP)地址映射至被用来终止所述覆盖隧道的第二 IP地址;以及 基于所述第二 IP地址来为包括内部分组的数据分组确定输出端口,其中所述内部分组的目的地地址对应于所述虚拟IP地址。
2.根据权利要求1所述的计算系统,其中所述映射进一步基于与所述虚拟IP地址相对应的虚拟媒体访问控制(MAC)地址。
3.根据权利要求1所述的计算系统,其中所述方法进一步包括更新所述映射,所述映射将所述虚拟机的所述虚拟IP地址映射至第三IP地址,所述第三IP地址被用来为所述数据分组确定所述输出端口。
4.根据权利要求1所述的计算系统,其中所述配置系统是以下各项中的一项或多项: 虚拟化控制器,其将所述虚拟机分配给主机中的管理程序并且将所述虚拟IP地址指配给所述虚拟机; 网络管理器,其向所述管理程序通知有关联网信息;以及 垫补设备,其从所述网络管理器获得联网信息。
5.根据权利要求4所述的计算系统,进一步包括:垫补控制平面层,可操作为辨识多个虚拟化控制器,其中相应的虚拟化控制器对应于不同的虚拟化机制。
6.根据权利要求1所述的计算系统,进一步包括:垫补数据平面层,可操作为辨识多种覆盖隧穿机制。
7.根据权利要求6所述的计算系统,其中隧穿机制与以下各项中的一项或多项相关联: 虚拟可扩展局域网(VXLAN); 通用路由封装(GRE)协议; 使用GRE的网络虚拟化(NVGRE)协议;以及 openvSwitch GRE 协议。
8.根据权利要求1所述的计算系统,其中所述方法进一步包括:在数据分组中识别与所述计算系统和远程计算系统相关联的逻辑IP地址,其中所述数据分组与所述覆盖隧道相关联。
9.根据权利要求8所述的计算系统,其中所述方法进一步包括: 连同所述远程计算系统来确定所述计算系统的活动状态;以及 响应于检测到所述计算系统不是活动的,阻止所述计算系统处理与所述逻辑IP地址相关联的分组。
10.根据权利要求9所述的计算系统,其中所述方法进一步包括: 检测所述远程计算系统的失效;以及 响应于检测到所述失效,处理与所述逻辑IP地址相关联的分组。
11.根据权利要求8所述的计算系统,其中所述方法进一步包括: 识别与所述计算系统和远程计算系统相关联的隧道终止IP地址,其中所述数据分组与所述覆盖隧道相关联;以及 其中所述隧道终止IP地址属于与所述逻辑IP地址所属的子网不同的子网。
12.—种方法,包括: 由计算系统发起或终止与虚拟机相关联的覆盖隧道; 基于从配置系统所接收的信息,将所述虚拟机的虚拟互联网协议(IP)地址映射至被用来终止所述覆盖隧道的第二 IP地址;以及 基于所述第二 IP地址来为包括内部分组的数据分组确定输出端口,其中所述内部分组的目的地地址对应于所述虚拟IP地址。
13.根据权利要求12所述的方法,其中所述映射进一步基于与所述虚拟IP地址相对应的虚拟媒体访问控制(MAC)地址。
14.根据权利要求12所述的方法,进一步包括更新所述映射,所述映射将所述虚拟机的所述虚拟IP地址映射至第三IP地址,所述第三IP地址被用来为所述数据分组确定所述输出端口。
15.根据权利要求12所述的方法,其中所述配置系统是以下各项中的一项或多项: 虚拟化控制器,其将所述虚拟机分配给主机中的管理程序并且将所述虚拟IP地址指配给所述虚拟机; 网络管理器,其向所述管理程序通知有关联网信息;以及 垫补设备,其从所述网络管理器获得联网信息。
16.根据权利要求15所述的方法,进一步包括:辨识多个虚拟化控制器,其中相应的虚拟化控制器对应于不同的虚拟化机制。
17.根据权利要求12所述的方法,进一步包括:辨识多种覆盖隧穿机制。
18.根据权利要求17所述的方法,其中隧穿机制与以下各项中的一项或多项相关联: 虚拟可扩展局域网(VXLAN); 通用路由封装(GRE)协议; 使用GRE的网络虚拟化(NVGRE)协议;以及 openvSwitch GRE 协议。
19.根据权利要求12所述的方法,进一步包括:在数据分组中识别与所述计算系统和远程计算系统相关联的逻辑IP地址,其中所述数据分组与所述覆盖隧道相关联。
20.根据权利要求19所述的方法,进一步包括: 连同所述远程计算系统来确定所述计算系统的活动状态;以及响应于检测到所述计算系统不是活动的,阻止所述计算系统处理与所述逻辑IP地址相关联的分组。
21.根据权利要求20所述的方法,进一步包括: 检测所述远程计算系统的失效;以及 响应于检测到所述失效,处理与所述逻辑IP地址相关联的分组。
22.根据权利要求19所述的方法,进一步包括: 识别与所述计算系统和远程计算系统相关联的隧道终止IP地址,其中所述数据分组与所述覆盖隧道相关联;以及 其中所述隧道终止IP地址属于与所述逻辑IP地址所属的子网不同的子网。
23.一种计算装置,包括: 隧穿装置,用于发起或终止与虚拟机相关联的覆盖隧道; 映射装置,用于基于从配置系统所接收的信息而将所述虚拟机的虚拟互联网协议(IP)地址映射至被用来终止所述覆盖隧道的第二 IP地址;以及 转发装置,用于基于所述第二 IP地址来为包括内部分组的数据分组确定输出端口,其中所述内部分组的目的地地址对应于所述虚拟IP地址。
【文档编号】H04L12/46GK104272668SQ201380022883
【公开日】2015年1月7日 申请日期:2013年5月22日 优先权日:2012年5月23日
【发明者】M·P·坎彻尔拉 申请人:博科通讯系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1