具有多个路由部件的逻辑路由器的制作方法

文档序号:11290990阅读:324来源:国知局
具有多个路由部件的逻辑路由器的制造方法与工艺

ronghuazhang,ganesanchandrashekhar,sreeramravinoothala,kai-weifan



背景技术:

典型的物理网络包含若干物理路由器来执行l3转发(即,路由)。当第一机器想要将分组发送到位于不同ip子网上的第二机器时,分组被发送到路由器,该路由器使用该分组的目的地ip地址来确定应当通过它的物理接口中的哪个物理接口发送分组。较大的网络将包含多个路由器,以使得如果这些路由器中的一个路由器发生故障,那么可以沿着第一机器和第二机器之间的不同路径来路由分组。

在逻辑网络中,不同子网上的用户定义的数据计算节点(例如,虚拟机)可能也需要彼此通信。在这种情况下,租户可以定义包括逻辑交换机和逻辑路由器的虚拟化网络。需要用于在数据中心中实现逻辑路由器以充分地为这种虚拟化逻辑网络提供服务的方法。



技术实现要素:

一些实施例提供用于在网络中(例如,在数据中心中)实现逻辑路由器的方法。在一些实施例中,该方法由(例如,在网络控制器中实现的)集中式地管理网络的管理平面执行。在一些实施例中,该方法(例如,通过应用编程接口(api))接收逻辑路由器的定义并且为逻辑路由器定义若干路由部件,这些路由部件中的每个路由部件被分别指派路由的集合和逻辑接口的集合。

在一些实施例中,为逻辑路由器定义的若干路由部件包括一个分布式路由部件和若干集中式路由部件。此外,一些实施例的管理平面定义用于处理逻辑路由器内部的部件之间的通信的逻辑交换机(称为中转逻辑交换机)。分布式路由部件和中转逻辑交换机由数据中心内的大量机器以分布式方式实现,而集中式路由部件各自在单个机器上实现。一些实施例在各种机器上的受管理的转发元件的数据路径中实现分布式部件,而集中式路由部件在它们的单个机器上的vm(或其它数据计算节点)中实现。其它实施例还在它们指派的机器的数据路径中实现集中式部件。

在一些实施例中,集中式部件可以被配置为活动-活动或活动-备用模式。在活动-活动模式下,所有集中式部件同时完全起作用,流量可以使用等价多路径(ecmp)转发原则(跨各种集中式部件平衡流量)通过集中式部件进入逻辑网络或从逻辑网络出去(egress)。在这种模式下,分开的集中式部件中的每个集中式部件具有用于与外部网络通信的其自己的网络层(例如,ip)地址和数据链路层(例如,mac)地址。此外,分开的集中式部件中的每个集中式部件都有用于连接到中转逻辑交换机的它自己的网络层和数据链路层地址,以便向分布式路由部件发送分组以及从分布式路由部件接收分组。

在一些实施例中,逻辑路由器是两层逻辑网络结构的一部分。一些实施例的两层结构包括用于将逻辑网络连接到在数据中心外部的网络的单个逻辑路由器(被称为提供者逻辑路由器(plr)并且由例如数据中心的所有者管理))、以及连接到单个逻辑路由器并且不单独与外部网络通信的多个逻辑路由器(被称为租户逻辑路由器(tlr)并且由例如数据中心的不同租户管理)。一些实施例只要可能就实现活动-活动模式的plr,并且仅当为逻辑路由器配置了有状态服务(例如,nat、防火墙、负载均衡器等)时才使用活动-备用模式。

对于plr,一些实施例实现与外部网络的路由交换。plr的集中式部件中的每个集中式部件运行动态路由协议过程来通告逻辑网络的前缀并且接收朝外部网络的路由。通过既位于数据中心的中心又位于实现逻辑网络的机器上的网络控制器的网络控制系统,这些路由被传播到其它集中式部件和分布式路由部件。一些实施例对于直接从外部网络学习的路由和从自外部网络学习所述路由的不同对等集中式部件学习的部件使用集中式部件的路由信息库(rib)中的不同的管理(administrative)度量。因此,相对于涉及通过逻辑路由器的对等集中式部件的重定向的路由,集中式部件将优先选择它直接学习的路由。然而,当不同的集中式部件具有被配置有朝着外部网络的不同的l3连接性的接口时,一些实施例在集中式部件上创建伪接口,这些伪接口被用来将由第一集中式部件处理的分组通过第二集中式部件重定向到外部网络。

另一方面,在活动-备用模式下,一次集中式部件中仅有一个集中式部件完全可操作(活动部件),并且仅该部件发出消息以吸引流量。在一些实施例中,两个部件使用同一网络层地址(但是使用不同的数据链路层地址)以用于与分布式部件进行通信,并且仅活动部件回复来自这个分布式部件的地址解析协议(arp)请求。此外,仅活动的集中式部件将路由通告给外部网络以吸引流量。

当逻辑路由器是tlr时,当为逻辑路由器配置了有状态服务时,一些实施例不使用集中式部件或者使用在活动-备用模式下的两个集中式部件。tlr在内部以与活动-备用模式下的plr相同的方式操作,其中两个集中式部件中的每个集中式部件具有同一网络层地址,并且仅活动部件响应arp请求。为了连接到plr,一些实施例还向两个部件中的每个部件指派同一网络层地址(但是与被用来连接到它自己的分布式部件的地址不同)。此外,管理平面定义plr的分布式部件与tlr的集中式部件之间的中转逻辑交换机。

在一些情况下,无论是在活动-活动模式还是活动-备用模式下,集中式路由器部件中的一个(或多个)集中式路由器部件将出故障。这种故障可以由于部件在其上运行的机器完全崩溃、实现机器的数据计算节点或数据路径软件损坏、部件连接到外部网络或通过隧道连接到逻辑网络的其它部件的能力出故障等而发生。当故障的部件是活动-备用模式下的备用部件时,在一些实施例中不需要采取任何动作。否则,当集中式部件中的一个集中式部件出故障时,它的对等部件之一负责接管该集中式部件的通信。

在活动-备用模式下,备用的集中式路由器部件负责接替故障的活动的集中式路由器部件。为此,如果逻辑路由器是plr,那么新的活动部件开始向外部网络通告路由,以便吸引来自外部网络的流量(如果故障部件到外部网络的连接性仍然存在,那么该故障部件负责停止它自己的路由通告,以便避免吸引该流量)。此外,新的活动部件向plr的分布式路由部件发送该新的活动部件现在负责两个部件之间共享的网络层地址的消息(例如,无故arp(garp)回复)。如果逻辑路由器是tlr,那么garp回复的与此相同的集合被发送。此外,为了吸引来自新的活动部件连接到的plr的流量,该新的活动部件将garp回复发送到将该新的活动部件连接到plr的中转逻辑交换机。

对于一些实施例的活动-活动模式,管理平面在用于逻辑路由器的所有集中式部件被创建时为它们指定排序。然后,这个排序被用来确定对等部件中的哪个对等部件将接替故障部件。具体而言,在一些实施例中,具有相对于故障部件的排名而言下一个最高的排名的集中式部件接替该故障部件。为了接管,接替部件识别故障部件的与用于逻辑路由器的分布式部件通信的网络层地址,并且发送将它自己的数据链路层地址与故障部件的网络层地址相关联的garp回复。

前面的发明内容旨在充当对本发明的一些实施例的简要介绍。它并不意味着是本文档中所公开的所有发明性主题的介绍或概述。随后的具体实施方式和在具体实施方式中参考的附图将进一步描述在发明内容中描述的实施例以及其它实施例。因而,为了理解本文档描述的所有实施例,需要对发明内容、具体实施方式和附图进行全面审阅。此外,要求保护的主题不受发明内容、具体实施方式和附图中的说明性细节的限制,而是由所附权利要求定义,因为要求保护的主题可以以其它特定形式体现而不背离主题的精神。

附图说明

本发明的新特征在所附权利要求中阐述。然而,为了解释的目的,本发明的若干实施例在以下附图中阐述。

图1示出了逻辑路由器的配置视图,该配置视图表示由用户设计的逻辑网络。

图2示出了当以集中式方式实现逻辑路由器时图1的逻辑网络的管理平面视图。

图3示出了图1的逻辑路由器的物理集中式实现。

图4示出了当以分布式方式实现逻辑路由器时图1的逻辑网络的管理平面视图。

图5示出了图1的逻辑路由器的物理分布式实现。

图6概念性地示出了具有两层逻辑路由器的逻辑网络。

图7示出了当逻辑网络中的tlr为完全分布式的时图6的逻辑拓扑的管理平面视图。

图8示出了当逻辑网络中的tlr具有集中式部件时图6的逻辑拓扑的管理平面视图。

图9概念性地示出了逻辑网络拓扑的更详细的配置,包括由管理员指派的网络地址和接口。

图10示出了管理平面对图9的逻辑拓扑的配置。

图11概念性地示出了一些实施例的用于基于用户规范来配置plr的过程。

图12概念性地示出了一些实施例的用于基于用户规范来配置tlr的过程。

图13概念性地示出了用于图8中所示的双层逻辑网络的管理平面构造的物理实现,其中tlr和plr都包括sr以及dr。

图14a-图14b分别示出了对于具有单层逻辑路由器的逻辑拓扑,从逻辑网络出去的流量(北向流量)以及进入逻辑网络的流量(南向流量)的示例。

图15a-图15b示出了对于在下(tlr)层中没有提供集中式服务的两层逻辑拓扑的北向流量和南向流量的示例。

图16a-图16b示出了具有由sr在下(tlr)层中提供的集中式服务的两层逻辑拓扑的北向流量和南向流量的示例。

图17概念性地示出了一些实施例的sr处理的各个阶段。

图18和图19示出了单层逻辑网络拓扑和该拓扑的满足使用ecmp的要求的管理平面视图。

图20示出了当逻辑路由器被配置为活动-备用模式而不是活动-活动(ecmp)模式时图18的逻辑网络拓扑的管理平面视图。

图21示出了托管用于特定plr的三个resr的三个网关机器的示例物理实现。

图22概念性地示出了实现图21中的sr中的一个sr的vm中的一个vm崩溃的结果。

图23概念性地示出了托管图21的sr中的一个sr的网关机器上的mfe处的完全隧道故障的结果。

图24概念性地示出了在对等sr故障转移的情况下由sr执行的过程。

图25概念性地示出了利用其实现本发明的一些实施例的电子系统。

具体实施方式

一些实施例提供了用于在例如数据中心中实现的两层逻辑路由器拓扑。在一些实施例中,这些层包括提供者逻辑路由器(plr)的上层和租户逻辑路由器(tlr)的下层。两层结构使得提供者(例如,数据中心所有者)和租户(例如,数据中心客户(常常是许多这样的客户之一))都能够控制他们自己的服务和策略。在一些实施例中,plr层是与外部物理网络对接的逻辑层,因此可以在plr上配置动态路由协议(例如,bgp),以实现与数据中心之外的物理路由器的路由信息交换。一些实施例还允许配置双向转发检测(bfd)或类似协议,以用于监视物理网络路由器是否工作(up)。一些数据中心可能没有多个租户,在这种情况下,对分开的plr和tlr的需要被去除。在这种情况下,一些实施例使用单层逻辑路由器拓扑,其中该单层具有plr的功能。在于2014年3月21日提交的美国专利申请14/222,557中更详细地描述了一些实施例的两层逻辑拓扑,该申请通过引用并入本文。

在一些实施例中,plr和tlr两者都具有支持无状态服务(例如,访问控制列表(acl))以及有状态服务(例如,防火墙)的能力。此外,(诸如vm之类的数据计算节点可以耦接到的)逻辑交换机可以连接到plr或者tlr。此外,plr和tlr两者都可以以分布式方式(例如,逻辑路由器处理在直接物理耦接到数据计算节点的第一跳mfe中执行)或者集中式方式(逻辑路由器处理在用于南北流量和东西流量两者的网关中执行)实现。对于集中式实现,以及对于即使当以分布式方式实现时plr也通过其与物理网络交互的集中式网关,可以通过使用多个物理盒将两层逻辑路由器进行扩展,以便(例如,使用等价多路径(ecmp)技术)提供附加的吞吐量以及用于故障保护。

在一些实施例中,如果至少部分地以集中式(例如,群集)方式实现逻辑路由器,那么逻辑路由器可以仅使用有状态服务(以避免逻辑路由器实现之间状态共享的需要)。在不同的实施例中,这些网关(提供逻辑路由器的集中式方面的网关以及为分布式plr形成到外部网络的连接的网关)可以被实现为虚拟机(有时被称为边缘vm)、在其它类型的数据计算节点(例如,命名空间)中实现、或者通过使用基于linux的数据路径开发工具包(dpdk)分组处理软件实现(例如,被实现为基于dpdk的数据路径中的vrf)。

以下介绍在本说明书中使用的术语和缩略语中的一些术语和缩略语:

●vni(虚拟/逻辑网络标识符)-逻辑域(例如,逻辑交换机)的唯一标识符(例如,24比特标识符)。

●plr(提供者逻辑路由器)-上面介绍过,服务提供者(例如,数据中心运营商)对其具有完全控制的逻辑路由器;直接与外部物理网络对接。

●tlr(租户逻辑路由器)-租户(例如,数据中心客户、企业内部的组等)对其具有完全控制权的逻辑路由器;连接到plr以访问外部物理网络。

●分布式逻辑路由器-支持第一跳路由的逻辑路由器;即,逻辑路由器在数据计算节点直接耦接到的受管理的转发元素中实现。

●集中式逻辑路由器-不支持第一跳路由的逻辑路由器。

●服务路由器(sr)-被用来提供集中式服务的逻辑路由器的实现的一部分;在一些实施例中,除了出于故障排除目的之外,sr不暴露于网络管理器api。

●分布式路由器(dr)-被用来提供第一跳路由的逻辑路由器的实现的一部分;在一些实施例中,除了出于故障排除目的之外,dr也不暴露于网络管理器api。

●上行链路-指的是(i)逻辑路由器的北向接口(指向外部物理网络)和(ii)网关的一组pnlc两者。

●逻辑交换机-逻辑l2广播域。

●中转逻辑交换机-由网络管理器自动创建以将tlr的sr/dr与dr的dr连接的逻辑交换机;在一些实施例中,中转逻辑交换机没有连接到它的数据计算节点(例如,客户工作负载vm);此外,在一些实施例中,除了出于故障排除目的之外,中转逻辑交换机不暴露于网络管理器api。

●上下文-逻辑路由器的数据路径表示;在一些实施例中,上下文可以是vrf、命名空间或vm。

●传输节点或网关-终止由网络管理器定义的隧道的节点;在各种实施例中,传输节点或网关可以是管理程序(hypervisor)实现的虚拟交换机或基于dpdk的边缘节点;在一些实施例中,传输节点可以与数据路径可互换地使用。

●部署容器(dc)或边缘群集–其上行链路共享相同的l2连接性的同质(homogeneous)节点的集合;在一些实施例中,dc中的所有节点具有相同的类型并且属于相同的故障域。

●边缘节点-dc中的节点;边缘节点可以是基于dpdk的边缘或管理程序实现的虚拟交换机。

上文介绍了两层逻辑路由器配置的概念以及一些实施例的逻辑路由器配置和实现的某些方面。在下文中,部分i关注一些实施例的逻辑路由器的整体高级设计,而部分ii描述各种逻辑路由器部件的配置。然后,部分iii描述通过一些实施例的各种流水线的分组处理。接下来,部分iv介绍在活动-活动配置下的ecmp处理,而部分v描述活动-备用配置。然后,部分vi描述sr的故障转移场景。最后,部分vii描述利用其实现本发明的一些实施例的电子系统。

i.逻辑路由器和物理实现

以下讨论描述一些实施例的逻辑路由器的设计以及由一些实施例的网络控制器对这样的逻辑路由器的实现。如上面所提到的,一些实施例的逻辑路由器被设计为使得它们可以以分布式或集中式方式实现,它们可以进行扩展并且具有或没有有状态服务(或无状态服务),因此这样的服务可以由数据路径中的vrf上下文或者由虚拟机上下文提供。

在一些实施例中,逻辑路由器以三种不同的形式存在。这些形式中的第一种形式是api视图或配置视图,该视图是逻辑路由器如何由用户(诸如数据中心提供者或租户)定义(即,接收到的逻辑路由器的定义)。第二种视图是控制平面(或管理平面)视图,该视图是网络控制器如何在内部定义逻辑路由器。最后,第三种视图是逻辑路由器的物理实施或实现,该视图是逻辑路由器在数据中心中实际如何实现。

在控制平面视图中,一些实施例的逻辑路由器可以包括单个dr和一个或多个sr中的一个或两者。在一些实施例中,dr跨越直接耦接到vm的受管理的转发元件(mfe)或者直接或间接地逻辑连接到逻辑路由器的其它数据计算节点。一些实施例的dr还跨越逻辑路由器所绑定的网关。如上面所提到的,dr负责逻辑交换机和/或逻辑连接到逻辑路由器的其它逻辑路由器之间的第一跳分布式路由。一些实施例的sr负责交付未以分布式方式实现的服务(例如,一些有状态服务)。

a.集中式逻辑路由器

图1-图3示出了集中式逻辑路由器实现的三种不同视图。图1具体示出了配置视图,该配置视图表示由用户设计的逻辑网络100。如图所示,逻辑路由器115是包括逻辑路由器115以及两个逻辑交换机105和110的逻辑网络100的一部分。两个逻辑交换机105和110各自具有连接到逻辑端口的vm。虽然在这些图中被示为vm,但是应当理解的是在一些实施例中,其它类型的数据计算节点(例如,命名空间等)可以连接到逻辑交换机。逻辑路由器115还包括连接到外部物理网络120的两个端口。

图2示出了逻辑网络100的管理平面视图200。逻辑交换机105和110在这个视图中与在配置视图中相同,但是网络控制器已经为逻辑路由器115创建了两个服务路由器205和210。在一些实施例中,这些sr在活动-备用模式下操作,其中这些sr中的一个sr是活动的,而其它的sr作为备用运行(以防活动sr出故障)。逻辑交换机105和110中的每个逻辑交换机具有到sr205和210中每个sr的连接。如果逻辑网络100包括三个逻辑交换机,那么这三个逻辑交换机将各自连接到sr205和210两者。

最后,图3示出了逻辑路由器100的物理集中式实现。如图所示,耦接到逻辑网络100中的逻辑交换机105和110中的一个的vm中的每个vm在主机机器305上操作。在这些主机机器上操作的mfe310是在主机机器上的管理程序或其它虚拟化软件内操作的虚拟交换机(例如,ovs、esx)。这些mfe对于由逻辑网络100的vm发送的分组为逻辑交换机105和110执行第一跳交换。如果其它逻辑网络也具有驻留在主机机器305上的vm,那么mfe310(或mfe310的子集)还可以实现用于其它逻辑网络的逻辑交换机(和分布式逻辑路由器)。

两个服务路由器205和210各自在不同的网关机器315和320上操作。在一些实施例中,网关机器315和320是类似于机器305的主机机器,但是托管服务路由器而不是用户vm。在一些实施例中,网关机器315和320各自包括mfe以及服务路由器,以便让mfe处理任何必要的逻辑交换。例如,从外部网络120发送的分组可以由网关上的服务路由器实现路由,然后由同一网关上的mfe交换。

在不同的实施例中,sr可以在命名空间中实现、在虚拟机中实现或被实现为vrf。在一些实施例中,取决于在逻辑路由器上是否配置了任何有状态服务(例如,防火墙),sr可以以活动-活动或活动-备用模式操作。当配置了有状态服务时,一些实施例仅需要单个活动的sr。在一些实施例中,活动和备用服务路由器被提供有相同的配置,但是mfe310被配置为经由隧道将分组发送到活动sr(或者发送到具有活动sr的网关机器上的mfe)。只有当隧道故障时,mfe才向备用网关发送分组。

b.分布式逻辑路由器

虽然上面的部分介绍了逻辑路由器的集中式实现,但是一些实施例使用实现第一跳路由的分布式逻辑路由器实现,而不是将所有路由功能都集中在网关处。在一些实施例中,分布式逻辑路由器的物理实现始终具有dr(即,第一跳路由)。如果或者(i)逻辑路由器是plr并且因此连接到外部物理网络,或者(ii)逻辑路由器被配置有不具有分布式实现的服务(例如,在一些实施例中,nat、负载均衡、dhcp),那么分布式逻辑路由器将具有sr。即使在plr上没有配置有状态服务,一些实施例也在实现中使用sr以在ecmp的情况下帮助故障处理。

图4和图5分别示出了分布式逻辑路由器的管理平面视图和物理实现。由用户输入的配置视图与图1中对于集中式路由器所示的视图相同,区别在于用户(例如,管理员)表示逻辑路由器将是分布式的。分布式实现的控制平面视图400示出,除了两个服务路由器405和410之外,控制平面还创建分布式路由器415和中转逻辑交换机420。各种路由器构造405-415的北向接口和南向接口的配置以及它们与中转逻辑交换机420的连接将在下面将更详细地描述。在一些实施例中,管理平面为路由器构造405-415中的每一个生成单独的路由信息库(rib)。即,除了具有在管理/控制平面中创建的单独的对象之外,路由器构造405中的每个路由器构造还被视为具有单独的路由的单独路由器。中转逻辑交换机420然后具有用于这些路由器中的每个路由器的逻辑端口,并且路由器构造中的每个路由器构造具有到中转逻辑交换机的接口。

图5示出了逻辑路由器100的物理分布式实现。如在集中式实现中那样,耦接到逻辑网络100中的逻辑交换机105和110中的一个逻辑交换机的vm中的每个vm在主机机器505上操作。mfe510为逻辑交换机105和110以及为逻辑路由器115执行第一跳交换和路由(除了为其它逻辑网络执行交换和/或路由之外)。如图5中所示,分布式路由器415跨mfe510以及网关515和520实现。即,(例如,在mfe510中、在网关515和520中的类似的mfe中或者在网关上的以不同形式因子的)数据路径都包括dr415(和中转逻辑交换机420)所需的处理流水线。下面将更详细地描述一些实施例的分组处理。

c.多层拓扑

前面的示例仅示出了单层的逻辑路由器。对于具有多层逻辑路由器的逻辑网络,一些实施例可以在每个级别都包括dr和sr两者,或者在较高级别(plr层)包括dr和sr两者而在较低级别(tlr层)仅包括dr。图6概念性地示出了一些实施例的多层逻辑网络600,图7和图8示出了逻辑网络的两种不同的管理平面视图。

图6概念性地示出了具有两层逻辑路由器的逻辑网络600。如图所示,逻辑网络600在层3级别包括提供者逻辑路由器605、若干租户逻辑路由器610-620。第一租户逻辑路由器610具有两个附连的逻辑交换机625和630,其中一个或多个数据计算节点耦接到这些逻辑交换机中的每个逻辑交换机。为了简单起见,仅示出附连到第一tlr610的逻辑交换机,尽管其它tlr615-620通常将具有附连的(数据计算节点所耦接的)逻辑交换机。

在一些实施例中,任何数量的tlr可以被附连到plr,诸如plr605。一些数据中心可以仅具有数据中心中实现的所有tlr都附连到的单个plr,而其它数据中心可以具有多个plr。例如,大数据中心可能想要对于不同租户使用不同的plr策略,或者可能有太多不同的租户而不能将所有tlr附连到单个plr。用于plr的路由表的一部分包括用于它的tlr的所有逻辑交换机域的路由,因此将多个tlr附连到plr仅仅基于附连到tlr的子网来为每个tlr创建若干路由。如图所示,plr605提供到外部物理网络635的连接;一些实施例仅允许plr提供这样的连接,以使得数据中心提供者可以管理这种连接。分开的tlr610-620中的每一个tlr虽然是逻辑网络600的一部分,但是被独立地配置(不过单个租户可以具有多个tlr,如果它们被这样选择的话)。

图7和图8示出了取决于tlr605是否包括集中式部件的逻辑网络600的不同的可能管理平面视图。在这些示例中,通过使用dr,tlr605的路由方面总是分布式的。然而,如果tlr605的配置包括有状态服务的供应,那么tlr的管理平面视图(以及因此物理实现)将包括用于这些有状态服务的活动sr和备用sr。

因此,图7示出了当tlr605是完全分布式的时,逻辑拓扑600的管理平面视图700。为了简单起见,仅示出了第一tlr610的细节;其它tlr将各自具有它们自己的dr,以及在一些情况下具有sr。如图4中所示,plr605包括通过中转逻辑交换机725连接在一起的dr705和三个sr710-720。除了plr605实现内的中转逻辑交换机725之外,管理平面还在tlr以及plr的dr705中的每一个之间定义单独的中转逻辑交换机730-740。在tlr610是完全分布式的情况下(图7),中转逻辑交换机730连接到实现tlr610的配置的dr745。因此,如下面将更详细描述的,由附连到逻辑交换机625的数据计算节点发送到外部网络中的目的地的分组将通过逻辑交换机625、tlr610的dr745、中转逻辑交换机730、plr605的dr705、中转逻辑交换机725以及sr710-720中的一个sr的流水线。在一些实施例中,除了可能的故障排除目的之外,中转逻辑交换机725和730-740的存在和定义对于通过api配置网络的用户(例如,管理员)是隐藏的。

图8示出了当(例如,因为为tlr定义了不能是分布式的有状态服务)tlr605具有集中式部件时,逻辑拓扑600的管理平面视图800。在一些实施例中,诸如防火墙、nat、负载均衡等之类的有状态服务仅以集中式方式被提供。然而,其它实施例允许这样的服务中的一些或全部是分布式的。如关于之前的图那样,为了简单起见,仅示出了第一tlr610的细节;其它tlr可以具有相同的被定义的部件(dr、中转ls和两个sr)或者如图7的示例中那样仅具有dr。plr605以与之前的图相同的方式实现,其中dr705和三个sr710通过中转逻辑交换机725彼此连接。此外,如在之前的示例中,管理平面在plr和tlr中的每个tlr之间放置中转逻辑交换机730-740。

tlr610的部分集中式实现包括逻辑交换机625和630附连到的dr805以及两个sr810和815。如在plr实现中,dr和两个sr各自具有到中转逻辑交换机820的接口。在一些实施例中,这种中转逻辑交换机与交换机725起相同的作用。对于tlr,一些实施例以活动-备用方式实现sr,其中sr中的一个sr被指定为活动的,而其它sr被指定为备用的。因此,只要活动sr是可操作的,由附连到逻辑交换机625和630中的一个逻辑交换机的数据计算节点发送的分组就将被发送到活动sr而不是备用sr。

上面的附图示出了一些实施例的逻辑路由器的管理平面视图。在一些实施例中,管理员或其他用户通过api提供逻辑拓扑(以及其它配置信息)。这种数据被提供给管理平面,管理平面(例如,通过定义dr、sr、中转逻辑交换机等)定义逻辑网络拓扑的实现。此外,在一些实施例中,用户将每个逻辑路由器(例如,每个plr或tlr)与物理机器集合(例如,数据中心中预定义的机器组)相关联以用于部署。对于纯分布式路由器,诸如图7中实现的tlr605,物理机器的集合并不重要,因为dr跨驻留在主机上的受管理的转发元件连同连接到逻辑网络的数据计算节点来实现。然而,如果逻辑路由器实现包括sr,那么这些sr将各自被部署在具体的物理机器上。在一些实施例中,物理机器组是出于托管sr(而不是附连到逻辑交换机的用户vm或其它数据计算节点)的目的而被指定的机器集合。在其它实施例中,sr与用户数据计算节点一起被部署在机器上。

在一些实施例中,逻辑路由器的用户定义包括特定数量的上行链路。如本文所描述的,上行链路是逻辑拓扑中逻辑路由器的北向接口。对于tlr,它的上行链路连接到plr(一般而言,所有上行链路都连接到同一plr)。对于plr,它的上行链路连接到外部路由器。一些实施例要求plr的所有上行链路具有相同的外部路由器连接性,而其它实施例允许上行链路连接到不同的外部路由器集合。一旦用户为逻辑路由器选择了机器组,则如果对于逻辑路由器需要sr,那么管理平面将逻辑路由器的上行链路中的每条上行链路指派给所选择的机器组中的物理机器。然后,管理平面在向其指派上行链路的机器中的每个机器上创建sr。一些实施例允许将多条上行链路指派给同一机器,在这种情况下,该机器上的sr具有多个北向接口。

如上面所提到的,在一些实施例中,sr可以被实现为虚拟机或其它容器,或者被实现为vrf上下文(例如,在基于dpdk的sr实现的情况下)。在一些实施例中,用于实现sr的选择可以基于为逻辑路由器选择的服务以及哪种类型的sr最佳地提供这些服务。

此外,一些实施例的管理平面创建中转逻辑交换机。对于每个中转逻辑交换机,管理平面向逻辑交换机指派唯一vnt、在连接到中转逻辑交换机的每个sr和dr上创建端口、以及为连接到逻辑交换机的任何sr和dr分配ip地址。一些实施例要求被指派给每个中转逻辑交换机的子网在具有许多tlr的逻辑l3网络拓扑(例如,网络拓扑600)内是唯一的,其中这些tlr中的每个tlr可以具有它自己的中转逻辑交换机。即,在图8中,在plr实现内的中转逻辑交换机725、在plr和tlr之间的中转逻辑交换机730-740和中转逻辑交换机820(以及在其它tlr中的任何tlr的实现内的中转逻辑交换机)各自要求唯一的子网。此外,在一些实施例中,sr可能需要发起在逻辑空间中到vm的连接(例如,ha代理)。为了确保返回流量有效(work),一些实施例避免使用链路本地ip地址。

一些实施例对多层配置中的逻辑路由器的连接施加各种限制。例如,虽然一些实施例允许任何数量的逻辑路由器层(例如,连接到外部网络的plr层以及许多tlr层),但是其它实施例仅允许两层拓扑(连接到plr的一个tlr层)。此外,一些实施例允许每个tlr连接到仅一个plr,并且由用户创建的每个逻辑交换机(即,不是中转逻辑交换机)仅被允许连接到一个plr或一个tlr。一些实施例还添加了逻辑路由器的南向端口必须各自在不同的子网中的限制。因此,如果两个逻辑交换机连接到同一逻辑路由器,那么它们可能不具有相同的子网。最后,一些实施例要求plr的不同上行链路必须存在于不同的网关机器上。应当理解的是,一些实施例不包括这些要求中的任何要求,或者可以包括这些要求的各种不同组合。

ii.sr和dr配置

当用户配置逻辑路由器时,这种配置由管理平面用来配置逻辑路由器的sr和dr。例如,图1的逻辑路由器115具有四个接口(两个到逻辑交换机,两个到上行链路)。然而,图4中的逻辑路由器的分布式管理平面实现包括具有三个接口的dr和各自具有两个接口的sr(总共七个接口)。作为逻辑路由器配置的一部分被指派给四个接口的ip地址和mac地址以及其它配置细节被用来生成用于逻辑路由器的各个部件的配置。

此外,作为配置的一部分,一些实施例为逻辑路由器部件中的每个逻辑路由器部件生成路由信息库(rib)。即,虽然管理员仅定义单个逻辑路由器,但是一些实施例的管理平面和/或控制平面为dr以及为sr中的每个sr生成单独的rib。对于plr的sr,在一些实施例中,管理平面最初生成rib,但是sr的物理实现还运行动态路由协议过程(例如,bgp、ospf等),以在本地补充rib。

一些实施例在逻辑路由器的rib中并且因此在它的部件路由器的rib中包括若干类型的路由。在一些实施例中,所有路由都包括被用来确定优先级的管理距离值,其中较大的值指示较低优先级类型的路由(即,如果对于同一前缀存在两个路由,那么使用具有较低距离值的路由)。如果用于同一前缀的多个路由在具有相同距离值的rib中,那么到这些前缀的流量跨不同的路由散布(例如,使用ecmp原则来均匀地平衡流量)。

已连接的(0):在逻辑路由器的端口上配置的前缀

静态的(1):由管理员/用户配置

管理平面内部(10):缺省路由-当tlr连接到plr时,指向plr的缺省路由被添加到tlr的rib;当逻辑交换机连接到tlr时,用户允许子网被重新分配,并且子网没有被nat,指向该子网的tlr的缺省路由被添加到plr的rib

ebgp(20):接下来的四种类型是通过动态路由协议学习的路由

ospf内部(30)

ospf外部(110)

ibgp(200)

应当理解的是,在一些实施例中,并不是所有逻辑路由器将包括bgp路由和ospf路由两者,并且一些逻辑路由器可以这两者都不包括。例如,不包括到外部网络的连接的逻辑路由器可以不使用任何路由协议,并且一些逻辑路由器可以仅运行一种类型的路由共享协议,而不是bgp和ospf两者。

此外,在一些实施例中,(使用动态路由协议的)plr的sr将从集中式控制器(包含静态路由、已连接的路由和管理平面内部路由)接收的rib与从物理路由器(经由动态路由协议)学习的路由合并。sr基于这些动态路由的结合来在本地计算它的fib,以便加速路由收敛,而不是将学习到的路由发送回集中式控制器以进行重新计算。对于dr,一些实施例的集中式控制器用计算fib的本地控制平面来下推(pushdown)整个rib。

a.dr配置

在一些实施例中,dr始终位于逻辑路由器实现的南向侧(即,面向逻辑网络的数据计算节点,而不是面向外部物理网络)。除非逻辑路由器没有集中式部件,否则将不为dr配置逻辑路由器的上行链路,dr的北向接口替代地耦接到作为逻辑路由器的一部分的中转逻辑交换机。

图9概念性地示出了逻辑网络拓扑900的更详细的配置,包括由管理员指派的网络地址和接口。如图所示,逻辑交换机905和910各自被指派了它们自己的子网,1.1.1.0/24和1.1.2.0/24,并且附连到逻辑交换机905的所有数据计算节点都将具有对应子网中的ip地址。逻辑路由器915具有到第一逻辑交换机905的接口l1,该接口l1具有ip地址1.1.1.253,这是子网1.1.1.0/24中的数据计算节点的缺省网关。逻辑路由器915还具有到第二逻辑交换机910的第二接口l2,该第二接口l2具有ip地址1.1.2.253,这是子网1.1.2.0/24中的数据计算节点的缺省网关。

逻辑路由器915的北向侧具有两条上行链路u1和u2。第一条上行链路u1具有ip地址192.168.1.252并且连接到具有ip地址192.168.1.252的第一物理路由器920。第二条上行链路u2具有ip地址192.168.2.253并且连接到具有ip地址192.168.2.252的第二物理路由器925。物理路由器920和925实际上不是逻辑网络的一部分,而是将逻辑网络连接到外部网络。尽管在示出的情况下上行链路中的每条上行链路连接到单个不同的物理路由器,但是在一些情况下,上行链路中的每条上行链路将连接到若干物理路由器的相同集合。即,u1和u2两者可以都连接到物理路由器920和925两者。一些实施例要求上行链路所连接的外部路由器中的每个外部路由器提供相同的连接性,尽管在示出的示例中不是这种情况。相反,第一物理路由器920连接到子网10.0.0.0/8,而第二路由器925连接到子网10.0.0.0/8和11.0.0.0/8两者。

对于具有分布式部件的逻辑路由器,一些实施例如下配置dr。以与逻辑路由器的南向接口相同的方式来配置南向接口。这些接口是连接到逻辑拓扑中的逻辑交换机或者连接到较低级别逻辑路由器(例如,plr的南向接口可以连接到tlr)的接口。一些实施例的dr被分配单个北向接口,该北向接口被指派了ip地址和mac地址。假设逻辑路由器具有一个或多个sr,那么dr的北向接口连接到中转逻辑交换机。

基于在dr的各个南向接口和北向接口上配置的子网来向dr的rib指派已连接的路由。这些子网是为(i)在逻辑路由器的dr和sr部件之间配置的中转逻辑交换机以及(ii)在dr的南向接口上的任何逻辑交换机配置的子网。南向接口上的这些逻辑交换机可以是数据计算节点所连接的用户定义的逻辑域,或者位于plr的dr和连接到plr的任何tlr之间的逻辑交换机。

此外,从逻辑路由器的上行链路出去的任何静态路由被包括在dr的rib中;然而,这些路由被修改以使得下一跳ip地址被设置为上行链路的sr的ip地址。例如,“a.b.c.0/24经由192.168.1.252(192.168.1.252是外部物理网络路由器的地址)”的静态路由被修改为“a.b.c.0/24经由[sr南向接口的ip]”。另一方面,从逻辑路由器的南向接口出去的静态路由被包括在dr的未经修改的rib中。在一些实施例中,对于逻辑路由器的每个sr,类型管理平面内部的缺省路由被添加到dr的rib。相反,在其它实施例中,由特定sr学习到的动态路由被添加到rib,其中下一跳ip地址被修改为特定sr的南向接口的ip。这是缺省路由的替代物,因为否则管理平面内部类型将具有比由sr学习的动态路由高的优先级。然而,对于tlr,在一些实施例中,sr不运行动态路由协议,因此替代地使用具有指向活动sr的接口的下一跳ip地址的缺省路由。

图10示出了管理平面对逻辑拓扑900的配置1000。如图所示,逻辑交换机905和910如由用户配置指示的那样被配置。如前面的示例中那样,逻辑路由器915包括dr1005、两个sr1010和1015以及中转逻辑交换机1020。dr被指派了逻辑路由器905的两个南向接口,这两个南向接口连接到逻辑交换机905和910。中转逻辑交换机被指派了子网192.168.100.0/24,该子网需要满足如下要求:它在(直接或间接地)逻辑连接到逻辑路由器905的逻辑交换机之间是唯一的。三个管理平面路由器构造1005-1015中的每一个还包括连接到中转逻辑交换机的接口,并且具有在中转逻辑交换机的子网中的ip地址。北向接口u1和u2被指派给两个sr1010和1015,其配置如下所述。

通过使用上文描述的用于生成rib的一些实施例的规则,dr1005的rib包括以下路由:

1.1.1.0/24输出到l1

1.1.2.0/24输出到l2

192.168.100.0/24输出到drp1

192.168.1.0/24经由ip1

192.168.2.0/24经由ip2

10.0.0.0/8经由ip1

10.0.0.0/8经由ip2

11.0.0.0/8经由ip2

0.0.0.0/0经由ip1

0.0.0.0/0经由ip2

上面的路由包括用于连接到dr的逻辑交换机域(1.1.1.0/24、1.1.2.0/24和192.168.100.0/24)的三条已连接的路由。此外,第一上行链路所位于的子网(192.168.1.0/24)经由第一sr1010的南向接口(ip1)到达,而第二上行链路所位于的子网(192.168.2.0/24)经由第二sr1015的南向接口(ip2)到达。此外,用户已经为逻辑路由器915添加了三条静态路由,管理平面对于dr1005自动修改这三条静态路由。具体而言,路由包括经由sr中的任一sr的南向接口的网络10.0.0.0/8,以及经由sr2的南向接口的网络11.0.0.0/8。最后,包括指向这些相同的南向接口的缺省路由。由管理平面为与中转逻辑交换机对接的逻辑路由器构造的端口创建的ip地址ip1、ip2和ip3都在子网192.168.100.0/24中。

在一些实施例中,除了配置dr的rib,管理平面还将mac地址指派给dr接口。在一些实施例中,物理网络中实现dr功能的物理路由元件(例如,软件模块)中的一些或全部仅支持单个mac地址。在这种情况下,因为dr端口的mac可以来自用户可见的逻辑路由器端口的mac,所以这对管理平面如何分配逻辑路由器端口的mac地址施加了要求。因此,在一些实施例中,连接到具有连接的用户数据计算节点或sr的任何逻辑交换机的所有dr/sr端口必须共享公共mac地址。此外,在一些实施例中,如果dr/sr端口被连接到另一个dr/sr或被连接到物理网络,那么这个端口被指派唯一的mac地址(这种指派规则在确定dr/sr端口是否被连接到另一个dr/sr端口时忽略中转逻辑交换机)。

b.sr配置

就像对于逻辑路由器的dr一样,管理平面还用单独的rib和接口来配置逻辑路由器的每个sr。如上文所描述的,在一些实施例中,plr和tlr两者的sr都可以交付服务(即,除了仅仅路由之外的功能,诸如nat、防火墙、负载均衡等),并且plr的sr还提供逻辑网络和外部物理网络之间的连接。在一些实施例中,sr的实现被设计为满足若干目标。首先,该实现确保服务可以扩展,即,指派给逻辑路由器的服务可以由逻辑路由器的若干sr中的任何sr来交付。第二,一些实施例以使得服务策略可以依赖于路由决策(例如,基于接口的nat)的方式来配置sr。第三,逻辑路由器的sr具有在它们自己之间处理故障(例如,sr在其上操作的物理机器的故障、到该物理机器的隧道的故障等)的能力,而不需要涉及集中式控制平面或管理平面(但是一些实施例允许sr以降低的容量或以次优的方式操作)。最后,sr在理想情况下避免它们自己之间不必要的重定向。即,如果sr具有在本地将分组转发到外部物理网络的能力,那么该sr应当将分组转发到外部物理网络,只有在必要时才将分组转发到不同的sr。当然,sr之间的转发应当避免分组环路。

如图10中所示,每个sr具有连接到驻留在sr和dr之间的中转逻辑交换机1020的一个南向接口。此外,在一些实施例中,每个sr具有与逻辑路由器相同数量的北向接口。即,即使只有一条上行链路可以被指派给sr在其上操作的物理机器,所有逻辑路由器接口也都在sr上定义。然而,这些接口中的一些接口是本地接口,而它们中的一些接口被称为伪(dummy)接口。

在一些实施例中,本地北向接口是分组可以通过其直接从sr出去(例如,直接到物理网络)的接口。基于被指派给sr的上行链路(或上行链路之一)而配置的接口是本地接口。另一方面,基于被指派给不同的sr的逻辑路由器的其它上行链路中的一个上行链路而配置的接口被称为伪接口。向sr提供伪接口的配置允许第一跳mfe将针对上行链路中的任何上行链路的分组发送到sr中的任何sr,其中即使分组的目的地不是该sr的本地接口,该sr也能够处理分组。一些实施例在处理伪接口的sr中的一个sr处的分组之后,将该分组转发到该接口在其中是本地的适当sr,以便该另一个sr将分组转发到外部物理网络。伪接口的使用还允许管理网络的集中式控制器(或控制器的集合)将依赖于路由决策的服务策略推送到所有sr,由此允许服务由sr中的任何sr交付。

如以下在部分iv中所讨论的,在一些实施例中,sr(例如,使用诸如bgp或ospf之类的路由通告协议)与物理网络交换路由信息。这种路由交换的一个目的是,无论哪个sr朝着物理网络来路由分组,路由决策都应当总是指向sr的本地接口或者与不同的sr上的逻辑路由器的上行链路对应的伪接口。因此,即使当上行链路没有被指派给该sr时,该sr也可以应用与逻辑路由器上行链路相关联的策略,从而实现有状态服务的扩展。在一些实施例中,从对等sr接收的路由将具有比直接从物理的下一跳路由器学到的路由更大的距离值,从而确保仅当sr不能直接向物理网络路由器发送分组时才向它的对等sr发送分组。

对于具有一个或多个集中式部件的逻辑路由器,一些实施例如下配置sr。对于北向接口,sr具有与逻辑路由器相同数量的这样的接口,并且这些接口各自继承对应逻辑路由器接口的ip和mac地址。这些接口的子集被标记为本地接口(对于其向sr指派上行链路的接口),而其余的接口被标记为伪接口。在一些实施例中,为逻辑路由器定义的服务策略被等价地推送到所有sr,因为从网络和接口的角度看这些sr以相同的方式被配置。用于特定逻辑路由器端口/上行链路的动态路由配置被传送到该特定上行链路被指派到的sr的本地接口。

正如所提到的,每个sr被指派了连接到中转逻辑交换机的单个南向接口(也是本地接口),其中每个sr的南向接口连接到同一中转逻辑交换机。这些南向接口中的每个南向接口的ip地址与被指派给(中转逻辑交换机的)dr的北向接口在同一子网中。一些实施例依赖于sr是处于活动-活动模式还是活动-备用模式来区分sr之间的ip地址的指派。对于活动-活动模式(即,当对于路由目的所有sr都被视为等同物时),不同的ip地址和mac地址被指派给所有sr的南向接口。另一方面,在活动-备用模式下,同一ip被用于两个sr的南向接口两者,而这两个接口中的每个接口被指派不同的mac地址。

如上面关于dr的小节所述,用户可以为逻辑路由器配置静态路由。逻辑路由器的从上行链路出去的静态路由(或已连接的路由)被复制到sr的rib。如果路由通过其出去的上行链路被指派给sr,

那么用于这种路由的距离度量是未修改的;然而,如果上行链路是sr上的伪接口,那么一些实施例向这个度量添加值,以使得当可以在不通过伪接口将分组重定向到不同的sr的情况下到达网络时,sr将优选从它的本地接口出去的路由。此外,(最高级别的逻辑路由器)的sr可以学习动态路由并且将这些路由放在它们的rib中(但是一些实施例在本地执行这个任务,而不涉及集中式控制器)。在一些实施例中,从对等sr学习的动态路由被安装,而没有对距离度量的这种调整,因为缺省地,用于从ibgp(sr到sr对等互联(peering))或ospf学习的路由的度量大于用于从ebgp学习的路由的度量。

对于逻辑路由器的每个南向接口,一些实施例将用于对应网络的路由添加到每个sr的rib。这个路由指向北向dr接口作为它的下一跳ip地址。此外,为逻辑路由器配置的从南向接口出去的任何其它路由都被复制到与下一跳ip地址具有相同的北向dr接口的sr。

返回到图10的示例,由于逻辑路由器915具有两条上行链路,

因此管理平面定义两个服务路由器1010和1015。第一服务路由器1010具有用于u1的本地接口和用于u2的伪接口(被称为u2')。类似地,第二服务路由器1015具有用于u2的本地接口和用于第一上行链路u1的伪接口u1'。这些sr中的每个sr被指派了具有不同的ip地址和mac地址(因为sr处于活动-活动配置)的南向接口。(用于第一sr1010的)ip地址ip1和(用于第二sr1015的)ip2在子网192.1.100.0/24中,ip3(dr1005的北向接口)也是如此。

使用一些实施例的规则,并且假设为sr启用路由协议(例如,bgp),则第一sr1010的rib将包括以下路由:

10.0.0.0/8经由192.168.1.252输出到u1,度量20(经由ebgp)

10.0.0.0/8经由192.168.2.252输出到u2',度量200(经由ibgp)

11.0.0.0/8经由192.168.2.252输出到u2',度量200(经由ibgp)

192.168.1.0/24输出到u1,度量0(已连接)

192.168.100.0/24输出到srp1,度量0(已连接)

1.1.1.0/24经由ip3,度量10(管理平面内部)

1.1.2.0/24经由ip3,度量10(管理平面内部)

类似地,第二sr1015的rib将包括以下路由:

10.0.0.0/8经由192.168.2.252输出到u2,度量20(经由ebgp)

10.0.0.0/8经由192.168.1.252输出到u1',度量200(经由ibgp)

11.0.0.0/8经由192.168.2.252输出到u2,度量20(经由ebgp)

192.168.2.0/24输出到u2,度量0(已连接)

192.168.100.0/24输出到srp2,度量0(已连接)

1.1.1.0/24经由ip3,度量10(管理平面内部)

1.1.2.0/24经由ip3,度量10(管理平面内部)

c.管理平面过程

图11概念性地示出了一些实施例的用于基于用户规范来配置plr的过程1100。在一些实施例中,过程1100由管理平面(例如,管理数据中心的网络的集中式控制器处一组模块)执行。管理平面执行配置过程,然后使用控制器(或不同网络控制器)的集中式控制平面将数据分发到实现所配置的逻辑路由器的各个主机机器上的各个本地控制平面。

如图所示,过程1100通过(在1105处)接收plr的规范开始。plr的规范(或plr的定义)基于定义plr的管理员(例如,由数据中心的所有者雇佣的管理员)的输入。在一些实施例中,这种规范包括plr应当提供的任何服务的定义、是否将以活动-活动或活动-备用模式来配置plr(但是一些实施例自动使用活动-活动模式,除非被配置了有状态服务)、为plr配置多少上行链路、上行链路的ip地址和mac地址、上行链路的l2和l3连接性、plr的任何南向接口(如果plr旨在用于两层拓扑,则为一个接口,以及如果用户逻辑交换机将直接连接在单层拓扑中,则为任何数量的接口)的子网、用于plr的rib的任何静态路由、以及其它数据。应当理解的是,不同的实施例可以在plr的配置数据中包括所列出的数据或其它数据的不同组合。

然后,过程1100(在1110处)使用这种配置数据来定义dr。这假设plr将不是完全集中式的,在plr是完全集中式的情况下管理平面不生成dr。对于dr的南向接口,管理平面使用plr的南向接口配置。即,dr的ip地址和mac地址是为逻辑路由器指定的ip地址和mac地址。

此外,该过程(在1115处)将为plr指定的每条上行链路指派给网关机器。如上文所描述的,一些实施例允许(或要求)用户对于逻辑路由器的sr的位置指定特定的物理网关机器集合。在一些实施例中,网关机器的集合可以一起在服务器的特定机架或机架组内,或者以其它方式相关联,其中隧道连接集合中的所有机器。然后,管理平面将上行链路中的每条上行链路指派给所选择的集合中的网关机器中的一个网关机器。一些实施例允许将多条上行链路指派给同一网关机器(只要逻辑路由器在活动-备用模式下不是被配置为仅具有两条上行链路),而其它实施例仅允许用于plr的每个网关机器被指派单条上行链路,而不管是活动-活动还是活动-备用模式。

在将上行链路指派给网关机器之后,过程1100(在1120处)在所选择的网关机器中的每个网关机器上定义sr。对于每个sr,该过程使用被指派给该网关机器的上行链路的配置作为sr的北向接口的配置。这种配置信息包括上行链路的ip和mac地址、以及任何特定于上行链路的策略。应当理解的是,对于在不同上行链路之间不同的策略和/或l3连接性被允许并且被使用的情况,一些实施例还在sr上配置伪接口,以便在需要时重定向分组。

该过程还(在1125处)定义中转逻辑交换机,以连接所定义的sr和dr。在一些实施例中,管理平面向中转逻辑交换机指派唯一的vni(逻辑交换机标识符)。此外,一些实施例要求被指派给中转逻辑交换机的子网在逻辑网络拓扑中是唯一的。照此,中转逻辑交换机必须使用与直接与plr对接的任何用户定义的逻辑交换机、以及plr和连接到plr的任何tlr之间的所有中转逻辑交换机、这些tlr内的所有中转逻辑交换机以及连接到这些tlr的任何用户定义的逻辑交换机不同的子网。

接下来,过程1100(在1130处)向dr指派北向接口。在一些实施例中,北向接口被指派mac地址和ip地址两者(用于在plr的部件之间内部发送的分组)。在一些实施例中,ip地址在被指派给在1125处定义的中转逻辑交换机的子网中。中转逻辑交换机的配置包括这种mac地址与它的逻辑端口中的一个逻辑端口的关联。

然后,该过程(在1135处)确定是否以活动-活动模式(还是活动-备用模式)配置plr。如上面所指出的,在一些实施例中,这种确定作为plr的配置设置的一部分由管理员进行。在其它实施例中,除非建立了有状态服务(在这种情况下,以活动-备用模式定义sr),否则管理平面自动以用于plr的活动-活动配置来定义sr。

当以活动-备用模式配置plr时,该过程(在1140处)指派两个sr(或者,如果有多个备用,那么指派两个以上的sr)中的每个sr的南向接口。在活动-备用情况下,这些南向接口都具有相同的ip地址,该ip地址在操作1125处定义的中转逻辑交换机的子网中。虽然两个接口接收到相同的ip地址,但是一些实施例指派不同的mac地址,以便作为用于由dr路由的北向分组的目的地将这两者区分开。在其它实施例中,也使用相同的mac地址,并且如下文所描述在故障转移的情况下使用不同的机制。

然后,该过程(在1145处)将sr中的一个sr指派为活动的,并且将sr中的一个sr指派为备用的。一些实施例随机地进行这种确定,而其它实施例尝试跨网关机器平衡活动sr和备用sr的指派,如在2014年1月28日提交的美国专利公开2015/0063364中更详细地描述的,该美国专利公开通过引用并入本文。被指派为活动的sr将响应针对南向接口的arp请求,并且将从它的北向接口向外部物理网络通告前缀。另一方面,备用的sr将不响应arp请求(以避免接收北向流量),并且将不通告前缀(但是在活动sr发生故障的情况下将维持bgp会话,以便接收来自外部网络的路由)。

最后,过程1100(在1150处)生成用于dr和用于sr中的每个sr的单独的rib。单独的rib是基于配置数据以之前的小节中以及下文在部分v中描述的方式生成的。然后,过程结束。在一些实施例中,管理平面还集中式地计算fib,而在其它实施例中,(在主机和网关机器上操作的)本地控制平面执行rib遍历,以生成将在逻辑路由器部件对分组的实际转发中使用的fib。在任一种情况下,基于从外部网络学习的动态路由来在sr上更新rib,并且该数据经由中央控制器被传播到dr。由一些实施例的网络控制器对fib的计算在2014年3月14日提交的美国专利申请14/214,545中被更详细地描述,该美国专利申请通过引用并入本文。

另一方面,当以活动-活动(ecmp)模式配置plr时,该过程(在1155处)指派sr中的每个sr的南向接口。在活动-活动情况下,这些南向接口各自被指派在操作1125处定义的中转逻辑交换机的子网中的不同的ip地址、以及不同的mac地址。利用不同的ip地址,sr中的每个sr可以基于由主机机器中的dr流水线为给定分组选择的ip地址来处理北向分组。

接下来,该过程(在1160处)向sr指派排名。如下文详细描述的,sr在故障转移的情况下使用排名来确定哪个sr将接管发生故障的sr的责任。在一些实施例中,排名下一个最高的sr通过接管发生故障的sr的南向接口来接管发生故障的sr,以便吸引否则将被发送到发生故障的sr的ip地址的北向流量。

最后,该过程(在1165处)生成用于dr和用于sr中的每个sr的单独的rib。这些单独的rib基于配置数据以之前的小节中以及下文在部分iv中描述的方式生成。然后,该过程结束。在一些实施例中,管理平面还集中式地计算fib,而在其它实施例中,(在主机和网关机器上操作的)本地控制平面执行rib遍历,以生成将在逻辑路由器部件对分组的实际转发中使用的fib。在任一种情况下,基于从外部网络学习的动态路由来在sr上更新rib,并且该数据经由中央控制器被传播到dr。

图11的上面的描述指示管理平面生成plr(上层逻辑路由器)的各种部件的操作。图12概念性地示出了一些实施例的用于基于用户规范来配置tlr的过程1200。在一些实施例中,过程1200由管理平面(例如,管理数据中心的网络的集中式控制器处的一组模块)执行。管理平面执行配置过程,然后使用控制器(或不同的网络控制器)的集中控制平面将数据分发到实现所配置的逻辑路由器的各个主机机器上的各个本地控制平面。

如图所示,该过程通过(在1205处)接收tlr的规范开始。tlr的规范(或tlr的定义)基于定义tlr的管理员(例如,由数据中心的租户雇佣的管理员)的输入。在一些实施例中,这种规范包括tlr应当提供的任何服务的定义、tlr应当通过它的上行链路连接到哪个plr、连接到tlr的任何逻辑交换机、tlr的接口的ip地址和mac地址、用于tlr的rib的任何静态路由、以及其它数据。应当理解的是,不同的实施例可以在tlr的配置数据中包括所列出的数据或其它数据的不同组合。

然后,过程1200(在1210处)确定tlr是否具有集中式部件。在一些实施例中,如果tlr不提供有状态服务,那么不为tlr定义sr,并且仅以分布式方式实现tlr。另一方面,一些实施例要求在提供有状态服务时sr处于活动-备用模式,如该图所示。

当tlr不提供有状态服务或者以其它方式要求集中式部件时,该过程(在1215处)使用逻辑路由器的对于南向接口和北向接口两者的规范来定义dr。dr可以具有许多南向接口,这依赖于多少个逻辑交换机被定义为连接到tlr。另一方面,一些实施例将tlr限制到向plr发送分组以及从plr接收分组的单个北向接口。该过程还(在1220处)生成用于dr的rib。用于dr的rib将包括如上文描述地生成的用于逻辑路由器的所有路由。

另一方面,当tlr提供有状态服务或出于其它原因而需要集中式部件时,该过程(在1225处)使用接收到的配置数据来定义dr。对于dr的南向接口,管理平面使用tlr的南向接口配置。即,每个南向接口的ip地址和mac地址是为各个逻辑交换机耦接到的逻辑路由器的端口指定的ip地址和mac地址。

此外,该过程(在1230处)将为tlr指定的上行链路指派给两个网关机器。虽然一些实施例允许tlr利用多个上行链路以活动-活动模式操作,但是过程1200用于将tlr限制到在活动-备用模式下的单条上行链路的实施例。如上文所描述的,一些实施例允许(或要求)用户对于逻辑路由器的sr的位置指定特定的物理网关机器集合。在一些实施例中,网关机器的集合可以一起在服务器的特定机架或机架组内,或者以其它方式相关联,其中隧道连接集合中的所有机器。然后,管理平面将上行链路指派给所选择的集合中的网关机器中的两个网关机器。

在将上行链路指派给网关机器之后,过程1200(在1235处)在两个网关机器中的每个网关机器上定义sr。对于每个sr,管理平面使用用于单条上行链路的配置作为用于sr的北向接口的配置。由于只有一个北向接口,因此该过程对这两个sr应用相同的配置。即,不仅相同的ip地址被用于这两个北向接口,而且接口上的服务也以相同的方式进行配置。然而,不同的mac地址被用于北向接口,以便于区分活动sr和备用sr。

该过程附加地(在1240处)定义中转逻辑交换机,以连接所定义的sr和dr。在一些实施例中,管理平面向中转逻辑交换机指派唯一的vni(逻辑交换机标识符)。此外,一些实施例要求指派给中转逻辑交换机的子网在逻辑网络拓扑中是唯一的。照此,管理平面必须为中转逻辑交换机指派与和该tlr对接的用户定义的逻辑交换机中的任何用户定义的逻辑交换机、以及该tlr(或其它tlr)与plr之间的任何中转逻辑交换机、以及连接到同一plr的其它tlr内的所有中转逻辑交换机、plr内的中转逻辑交换机以及连接到其它tlr的用户定义的逻辑交换机不同的子网。

接下来,该过程(在1245处)向dr指派北向接口。在一些实施例中,这个接口被指派mac地址和ip地址两者(用于在tlr的部件之间内部发送的分组)。在一些实施例中,ip地址在1140处被指派给中转逻辑交换机的同一子网中。该过程还(在1250处)向两个sr中的每个sr指派南向接口。由于这是活动-备用配置,因此这些南向接口具有同一ip地址,该ip地址在操作1140处定义的中转逻辑交换机的子网中。虽然两个接口接收到相同的ip地址,但是一些实施例指派不同的mac地址,以便作为用于由dr路由的北向分组的目的地将这两者区分开。在其它实施例中,也使用相同的mac地址,并且如下文所描述的在故障转移的情况下使用不同的机制。

然后,过程1200(在1255处)将sr中的一个sr指派为活动的,并且将sr中的一个sr指派为备用的。一些实施例随机地进行这个确定,而其它实施例尝试跨网关机器平衡活动sr和备用sr的指派。被指派为活动的sr将响应(来自这个tlr的dr的)对于南向接口和(来自plr的dr的)对于北向接口的arp请求。另一方面,备用的sr将不响应arp请求(以避免接收到北向或南向的流量)。

接下来,该过程(在1260处)生成用于dr和用于sr中的每个sr的单独的rib。该单独的rib是基于配置数据以之前的小节中以及下文在部分iv中描述的方式生成的。在一些实施例中,管理平面还集中式地计算fib,而在其它实施例中,(在主机和网关机器上操作的)本地控制平面执行rib遍历,以生成逻辑路由器部件在分组的实际转发中将使用的fib。在任一种情况下,基于从外部网络学习的动态路由来在sr上更新rib,并且该数据经由中央控制器传播到dr。

不管tlr被生成为有sr还是没有sr,过程1200都(在1265处)定义tlr与该tlr所连接到的plr之间的另一中转逻辑。该中转逻辑交换机具有唯一的vni和tlr的上行链路ip地址所属的子网。此外,plr的dr上的接口在同一子网中被创建,以连接到中转逻辑交换机。然后,该过程结束。

应当理解的是,虽然过程1100和1200示出了用于执行这些各种操作的特定顺序,但是这些过程仅仅是概念性的。在各种不同的实施例中,管理平面可以以各种不同的顺序来执行实际操作,或者甚至并行地执行这些操作中的一些操作。例如,管理平面可以在定义sr或dr之前首先定义中转逻辑交换机,可以在将逻辑路由器部件指派给分开的物理机器之前完全定义所有的逻辑路由器部件,等等。

iii.分组处理

上面的部分描述了管理平面对各种逻辑路由器部件的配置。这些逻辑路由器部件(以及逻辑交换机,由用户定义的逻辑交换机和由管理平面定义的用于连接逻辑路由器部件的逻辑交换机两者)由各种受管理的转发元件(mfe)在数据中心中实现。如图5中所示,例如,附连到用户定义的逻辑交换机的数据计算节点驻留在物理主机机器上,mfe在物理主机机器上(例如,在主机机器的虚拟化软件内)作为第一跳分组处理元件运行。在一些实施例中,这些mfe实现逻辑网络的逻辑交换机以及dr。

图13概念性地示出了用于图8中所示的双层逻辑网络的管理平面构造的物理实现,其中tlr610和plr605两者都包括sr以及dr。应当理解的是,该图仅示出了tlr610的实现,而没有示出可以在许多其它主机机器上实现的许多其它tlr,以及可以在其它网关机器上实现的sr。

该图假设存在附连到两个逻辑交换机625和630中的每个逻辑交换机的两个vm,这两个逻辑交换机625和630驻留在四个物理主机机器1305-1320上。这些主机机器中的每个主机机器包括mfe1325。在各种不同的实施例中,这些mfe可以是基于流的转发元件(例如,openvswitch)或基于代码的转发元件(例如,esx)或两者的组合。这些不同类型的转发元件不同地实现各种逻辑转发元件,但是在每种情况下,它们为每个逻辑转发元件执行处理分组可能需要的流水线。

因此,如图13中所示,物理主机机器上的mfe1325包括用于实现逻辑交换机625和630(lsa和lsb)两者、用于tlr610的dr805和中转逻辑交换机815以及用于plr605的dr705和中转逻辑交换机725的配置。然而,当驻留在主机机器上的、用于数据计算节点的tlr没有集中式部件(即,sr)时,一些实施例仅在主机机器mfe1325(耦接到数据计算节点的主机机器mfe)上实现plr的分布式部件。如下面所讨论的,从vm发送到外部网络的北向分组将由它们的本地(第一跳)mfe处理,直到中转逻辑交换机流水线指定向sr发送分组。如果该第一sr是tlr的一部分,那么第一跳mfe将不执行任何plr处理,因此plr流水线配置不需要由(一个或多个)集中式控制器推送到这些mfe。然而,由于tlr615-620之一可能不具有集中式部件的可能性,一些实施例总是将plr的分布式方面(dr和中转ls)推送到所有mfe。其它实施例仅将用于plr流水线的配置推送到还接收用于完全分布式tlr(没有任何sr的tlr)的配置的mfe。

此外,图13中所示的物理实现包括plr605和tlr610的sr被指派到的四个物理网关机器1330-1345(在一些实施例中也被称为边缘节点)。在这种情况下,配置plr605和tlr610的管理员为sr选择同一组物理网关机器,并且管理平面将用于这两个逻辑路由器的sr中的一个sr指派给第三网关机器1340。如图所示,plr605的三个sr710-720各自被指派给不同的网关机器1330-1340,而tlr610的两个sr810和815也各自被指派给不同的网关机器1340和1345。

该图示出了与在网关机器上操作的mfe1350分离的sr。如上文所指示的,不同的实施例可以不同地实现sr。一些实施例将sr实现为vm(例如,当mfe是集成到网关机器的虚拟化软件中的虚拟交换机时,在这种情况下,sr处理在mfe之外执行)。另一方面,一些实施例将sr实现为mfe数据路径内的vrf(当mfe使用dpdk进行数据路径处理时)。在任一种情况下,mfe将sr视为数据路径的一部分,但是在sr为vm(或其它数据计算节点)的情况下,将分组发送到单独的sr,以用于由sr流水线(其可以包括各种服务的性能)处理。与主机机器上的mfe1325一样,一些实施例的mfe1350被配置为执行逻辑网络的所有分布式处理部件。

a.单层拓扑

现在将描述用于各种示例的分组处理流水线。图14a和图14b分别示出了对于具有单层逻辑路由器的逻辑拓扑从逻辑网络出去的流量(北向流量)以及进入逻辑网络的流量(南向流量)的示例。这些图示出了具有逻辑路由器1405(逻辑路由器1405具有与外部网络的连接)和两个逻辑交换机1410和1415的单层拓扑1400。如上文所描述的,逻辑路由器1405包括dr1420、两个sr1425和1430以及中转逻辑交换机1435。

在一些实施例中,东西流量(即,从ls1上的数据计算节点到ls2上的数据计算节点的流量)主要在第一跳mfe处(例如,用于源数据计算节点的主机机器上的虚拟化软件的mfe)被处理,然后被隧道传输到目的地mfe,照此,分组不经过sr,并且因此不接收由这些sr提供的任何服务。然而,其它实施例允许将某些东西流量发送到sr以供处理的路由策略。

如图14a中所示,当机器上的vm或其它数据计算节点发送北向分组时,mfe上的数据路径首先运行(例如,基于通过其接收分组的入口端口、源mac地址等的)源逻辑交换机流水线。这种流水线指定将分组转发到dr1420,用于dr1420的流水线也在源mfe上发生。该流水线将sr1425和1430中的一个识别为它的下一跳。在活动-备用情况下,流水线识别活动sr;在活动-活动情况下,一些实施例使用ecmp来选择sr中的一个sr,如下文所描述的。接下来,源mfe执行用于中转逻辑交换机1435的流水线,该流水线指定将分组隧道传输到托管所选择的sr的适当的网关机器(边缘节点)。网关机器(例如,网关机器上的mfe)接收分组、对分组进行解封装(以移除隧道数据)并且基于分组上的逻辑上下文信息(例如,中转逻辑交换机1435的vni)以及与sr的南向接口对应的目的地mac地址来识别sr。然后执行sr流水线(在一些实施例中由mfe执行,在其它实施例中由实现sr的vm执行)。sr流水线将分组发送到物理网络。如果sr流水线指定了本地接口,那么该分组被直接递送到物理网络;另一方面,如果sr流水线指定了伪接口,那么分组可以通过隧道被重定向到指定的接口是其本地的不同的网关机器。

图14b示出了用于进入的(南向)分组的分组处理。分组在sr在其上操作的网关机器中的一个网关机器处被接收。网关机器处的mfe基于传入分组的vlan和目的地mac地址来识别目的地sr,并且运行sr流水线(例如,将分组发送到sr在其上操作的vm,或直接在数据路径中运行流水线,这依赖于sr如何被实现)。sr流水线将dr1420识别为它的下一跳。然后mfe执行将分组转发到dr的中转逻辑交换机1435流水线、以及将分组路由到其目的地的dr流水线。还执行目的地逻辑交换机流水线(即,逻辑交换机1410和1415中的一个),该流水线指定将分组隧道传输到目的地vm驻留在其上的主机机器的mfe。在解封装分组之后,目的地mfe将分组递送到vm。

b.在tlr中没有集中式服务的两层拓扑

图15a和图15b示出了对于两层逻辑拓扑的北向流量和南向流量的示例,其中在下(tlr)层中没有提供集中式服务。这些图示出了具有plr1505(plr1505具有到外部网络的两条上行链路)、tlr1510和两个逻辑交换机1515和1520的两层拓扑1500。plr1505包括dr1525、两个sr1530和1535以及连接这三个部件的中转逻辑交换机1540。tlr1510没有被配置集中式服务,因此仅包括单个dr部件1545。管理平面在tlr的dr1545和plr的dr1525之间插入第二中转逻辑交换机1550。

用于在tlr级别没有有状态服务的两层拓扑的处理流水线类似于单层拓扑流水线,但是在第一跳mfe处执行附加的流水线。如图15a中所示,当机器上的vm或其它数据计算节点发送北向分组时,源机器的mfe上的数据路径首先运行(例如,基于通过其接收分组的入口端口、源mac地址等的)源逻辑交换机流水线。这个流水线指定将分组转发到tlr1510的dr1545,用于dr1545的流水线也在源(第一跳)mfe上执行。这个流水线将dr1525的南向接口识别为它的下一跳,然后源mfe执行介于两个dr之间的中转逻辑交换机1550的流水线。这个逻辑交换机流水线将分组逻辑地转发到dr端口(上层dr),然后源mfe也执行用于dr1525的流水线。这个流水线将sr1530和1535中的一个识别为分组的下一跳。在活动-备用的情况下,流水线识别活动的sr;在活动-活动的情况下,一些实施例使用ecmp来选择sr中的一个sr,如下文所描述的。

接下来,源mfe执行用于plr1505内部的中转逻辑交换机1540的流水线,该流水线指定将分组隧道传输到托管所选择的sr的(在一些实施例中,由中转逻辑交换机流水线基于mac地址识别的)适当网关机器(边缘节点)。网关机器(例如,网关机器上的mfe)接收分组、对分组进行解封装(以移除隧道封装)、并且基于分组上的逻辑上下文信息(例如,中转逻辑交换机1540的vni)以及与sr的南向接口对应的目的地mac地址来识别sr。然后执行sr流水线(在一些实施例中由mfe执行,在其它实施例中由实现sr的vm执行)。sr流水线将分组发送到物理网络。如果sr流水线指定了本地接口,那么分组被直接递送到物理网络;另一方面,如果sr流水线指定了伪接口,那么分组可以通过隧道被重定向到指定的接口是其本地的不同的网关机器。

南向流量也与单层情况类似地被处理。如图15b中所示,在plr1505的sr在其上操作的网关机器之一处接收到南向分组。网关机器上的mfe基于传入分组的vlan和目的地mac地址识别目的地sr(一些实施例允许网关机器托管用于各种不同的逻辑路由器的多个sr),并且运行sr流水线(例如,将分组发送到sr在其上操作的vm,或者直接在数据路径中运行流水线,这依赖于sr如何被实现)。sr流水线将dr1525识别为它的下一跳,因此然后mfe执行中转逻辑交换机1540流水线,该中转逻辑交换机1540流水线将分组转发到dr1525。dr1525流水线将tlrdr1545识别为它的下一跳,因此,边缘节点上的mfe还执行中转逻辑交换机1550的流水线,并且随后执行dr1545的流水线。较低级别的dr流水线将分组路由到其目的地,因此目的地逻辑交换机流水线(即,逻辑交换机1515和1520中的一个)也被执行,该目的地逻辑交换机流水线指定将分组隧道传输到目的地vm驻留在其上的主机机器的mfe。在解封装分组之后,目的地mfe将分组递送到vm。

对于东西流量,在一些实施例中,正如在单层情况中那样,源mfe处理所有处理。在tlr内(例如,从第一逻辑交换机1513上的vm到逻辑交换机1520上的vm),只需要执行单个dr流水线(和两个逻辑交换机流水线)。对于跨tlr发送的分组,在一些实施例中,(只要目的地tlr-dr和逻辑交换机流水线在源mfe上实现)源mfe执行所有三个dr流水线。正如在单层情况下那样,一些实施例允许将东西流量发送到网关机器上的sr,而其它实施例不实现用于东西流量的集中式服务。

c.在tlr中具有集中式服务的两层拓扑

最后,图16a和图16b示出了具有由sr在下(tlr)层中提供的集中式服务的两层逻辑拓扑的北向流量和南向流量的示例。这些图示出了具有plr1605(plr1605具有到外部网络的两条上行链路)、(具有集中式服务的)tlr1610和两个逻辑交换机1615和1620的双层拓扑1600。plr1605包括dr1625、两个sr1630和1635、以及连接这三个部件的中转逻辑交换机1640。tlr还包括dr1645、两个sr1650和1655以及连接tlr的三个部件的中转逻辑交换机1660。管理平面还在tlr1610的sr1650和1655与plr1605的dr1625之间插入了第三中转逻辑交换机1665。

与在第一跳处执行几乎整个分组处理流水线的先前的示例不同,对于北向流量和南向流量,逻辑拓扑1600的分组处理跨三个机器散布。如图16a中所示,当机器上的vm或其它数据计算节点发送北向分组时,如前面的示例中那样,源机器的mfe上的数据路径最初运行源逻辑交换机流水线。这个流水线指定将分组转发到tlr1610的dr1645,用于dr1645的流水线也在源(第一跳)mfe上执行。这个dr流水线将sr1650和1655之一的南向接口识别为它的下一跳ip地址。在一些实施例中,tlrsr始终被配置为活动-备用模式,因此下一跳对于这两个sr都是相同的,但是分组被路由到活动sr的mac地址。

源mfe然后执行用于tlr1610内部的中转逻辑交换机1660的流水线,该流水线指定将分组隧道传输到托管tlr1610的所选择的sr的(在由dr1645流水线路由之后由中转逻辑交换机基于目的地mac地址识别的)适当网关机器(边缘节点)。网关机器(例如,网关机器上的mfe)接收分组、对分组进行解封装、并且基于分组上的逻辑上下文信息(例如,中转逻辑交换机1660的vni)以及与sr的南向接口对应的目的地mac地址来识别sr。然后(例如,由mfe或实现sr的vm)执行sr流水线(包括有状态服务中的任何有状态服务),该sr流水线指定dr1625的南向接口为它的下一跳地址。中转逻辑交换机1665流水线在当前边缘节点(在附图中为边缘节点2)上执行,plr1605的dr流水线也在当前边缘节点上执行。这个dr流水线以与前面的示例中所描述的相同的方式将sr1630和1635中的一个sr识别为分组的下一跳。

边缘节点mfe执行用于plr1605内部的中转逻辑交换机1640的流水线,该流水线指定将分组隧道传输到托管所选择的sr1630或1635的适当网关机器(在一些实施例中,该网关机器由中转逻辑交换机流水线基于mac地址识别)。网关机器(例如,网关机器上的mfe)接收分组、对分组进行解封装(以移除隧道封装)、并且基于分组上的逻辑上下文信息(例如,中转逻辑交换机1640的vni)以及与sr的南向接口对应的目的地mac地址来识别sr。然后执行sr流水线(在一些实施例中由mfe执行,在其它实施例中由实现sr的vm执行)。sr流水线将分组发送到物理网络。如果sr流水线指定了本地接口,那么分组被直接递送到物理网络;另一方面,如果sr流水线指定了伪接口,那么分组可以通过隧道被重定向到指定的接口是其本地的不同网关机器。

南向流量处理也跨三个机器分布(除非用于plr1605的sr和用于tlr1610的sr位于同一个网关机器上)。如图16b中所示,在plr1605的sr在其上操作的网关机器中的一个网关机器上接收南向分组。网关机器处的mfe基于传入分组的vlan和目的地mac地址来识别目的地sr,并且运行sr流水线(例如,将分组发送到sr在其上操作的vm,或直接在数据路径中运行流水线,这依赖于sr如何被实现)。sr流水线将dr1625识别为它的下一跳,因此mfe然后执行中转逻辑交换机1640流水线,该中转逻辑交换机1640流水线将分组转发到dr1625。dr1625流水线将tlr1610的sr1650和1655之一的北向接口识别为它的下一跳。在活动-备用情况下,选择活动sr。

然后第一网关机器上的mfe执行中转逻辑交换机1665流水线,该流水线指定将分组隧道传输到第二网关机器(边缘节点2),执行用于tlr1610的有状态服务的该第二sr位于第二网关机器上。第二网关机器(例如,第二网关机器上的mfe)基于分组上的vni和mac地址对分组进行解封装并且识别目的地sr。mfe(或者在它的数据路径中或者通过将分组发送到网关机器上的vm)运行sr流水线,该sr流水线将dr1645识别为下一跳。因此,mfe执行中转逻辑交换机1660流水线,该流水线将分组转发到dr1645,然后mfe也执行这个dr流水线。dr流水线将分组路由到分组的目的地,因此目的逻辑交换机流水线(逻辑交换机1615和1620之一)被执行,并且分组被隧道传输到目的地vm驻留在其上的主机机器的mfe。在解封装分组之后,目的地mfe将分组递送到vm。

对于tlr内的东西流量,源逻辑交换机流水线、dr流水线和目的地逻辑交换机流水线都在第一跳mfe处执行,然后分组被隧道传输到目的地mfe。如果分组需要由集中式服务进行处理,那么仅源逻辑交换机流水线、dr流水线和中转逻辑交换机流水线在第一跳mfe处执行,其中在将分组隧道传输到目的地之前由网关机器执行sr流水线、中转逻辑交换机流水线(再次)、dr流水线(再次)和目的地逻辑交换机流水线。对于跨tlr流量,分组以相同的方式出发,其中第一跳mfe执行源逻辑交换机流水线、dr流水线和中转逻辑交换机流水线以选择sr。所选择的sr在其上操作的网关机器然后执行sr流水线以识别plr的dr、执行tlr和plr之间的中转逻辑交换机流水线、plr的dr流水线(该流水线将下一跳识别为不同tlr的部件)、以及至少执行plr和目的地tlr之间的中转逻辑交换机。如果目的地tlr仅具有一个dr,那么在将分组隧道传输到它的目的地mfe之前,该流水线与目的地逻辑交换机一起还在第一网关机器处执行。如果目的地tlr具有sr,那么中转逻辑交换机指定将分组隧道传输到目的地tlr的所选择的sr的网关机器。在将分组隧道传输到目的地mfe之前,该第二网关机器执行sr流水线、目的地tlr内部的中转逻辑交换机流水线、用于该tlr的dr流水线以及目的地逻辑交换机流水线。

相同的原理在所有上述情况下都适用,即,尽可能早地执行处理流水线。因此,用于给定分组的所有流水线在第一跳mfe(例如,从管理程序上的vm接收分组的基于管理程序的虚拟交换机)处执行,直到分组需要被发送到仅存在于特定网关机器上的sr流水线为止。然后,该网关机器执行它可以执行的所有处理,直到分组被发送到物理网络之外或者被发送到不同的网关机器(或者对于东西流量发送到它的目的地)为止。

d.附加逻辑路由器行为

与物理路由器非常类似,逻辑路由器被实现为执行典型的路由功能,诸如递减它路由的分组的生存时间(ttl)以及执行arp。在一些实施例中,具有dr和sr两者的逻辑路由器仅通过作用于分组的第一部件递减分组一次。因此,对于北向和东西流量,dr递减ttl,而sr递减南向流量的ttl。在一些实施例中,dr实现具有仅递减在它的南向接口上接收的分组的ttl的指令,并且sr具有仅递减在它们的北向接口上接收的分组的ttl的相似的指令。如果ttl降至零,那么处理递减分组的ttl的部件也处理生成icmp错误消息。

一些实施例的逻辑路由器不转发广播分组,并且因此不支持定向广播(在物理路由器上通常也被禁用的特征)。然而,如果ip广播分组在它被发往的逻辑网络上被接收,那么一些实施例的逻辑路由器将其自身视为分组的目的地。

对于arp,在一些实施例中,逻辑路由器重写内部分组(即,在隧道封装被附加到分组之前的分组)的mac地址,以指示哪个传输节点正在发送arp分组,以使得arp响应被转发到正确的传输节点。对于隧道封装,一些实施例使用无状态传输隧道(stt)以及vxlan语义。

′e.sr进行的分组处理

上面的描述描述了由sr仅仅作为用于分组的数据路径中的一个附加逻辑转发元件进行的分组处理,sr可以不在第一跳处实现(至少对于北向分组或东西分组如此)。然而,在其它逻辑转发元件(逻辑交换机、dr、中转逻辑交换机)基本上涉及入口处理、逻辑转发和出口处理(入口处理和出口处理可以涉及acl)的情况下,除了与转发相关的处理之外,sr处理还可以包括其它功能,诸如有状态服务。

图17概念性地示出了一些实施例的sr处理1700的各个阶段。这些阶段中的一些阶段仅当sr包括非转发服务(例如,nat、有状态防火墙、负载均衡等)时被包括在处理中。因此,该图以虚线而不是实线示出某些阶段,以指示sr仅在被配置为用于这些服务时才执行这些阶段。此外,使用虚线示出了服务前重定向阶段1705,以指示仅当sr包含服务并且它的逻辑路由器被配置为活动-活动模式时,sr才执行这个阶段。

如图所示,当sr接收分组时(无论sr被实现为vm还是在基于dpdk的数据路径中的vrf),第一阶段1705是预服务重定向操作。如上面所提到的,sr仅在配置了有状态服务并且sr正在活动-活动模式下操作时才执行这个阶段。预服务重定向阶段1705涉及对于分组所属的连接(例如,传输连接)将分组重定向到所有者sr。然而,如果在逻辑路由器上没有配置服务,或者sr正在活动-备用模式下操作(在这种情况下,所有分组都被发送到活动sr),那么这个阶段是不需要的。在一些实施例中,预服务重定向阶段不递减ttl(因为分组将在稍后的阶段中被路由时被适当地递减)。

路由前服务阶段1710-1715可以涉及在sr上配置以用于在路由之前执行的任何数量的有状态服务。在确定不需要重定向或者经由来自不同sr的重定向接收分组后,sr执行这些阶段。当然,如果在sr上没有配置有状态服务,那么这些操作将也不被执行。依赖于sr的配置,以及某些服务是否需要确定逻辑路由器的出口逻辑端口,一些服务可以在路由之前或之后被执行。

在所有路由前服务已经由sr执行之后,sr然后执行路由阶段1720。如上面所讨论的,用于所有sr实例的路由表将是相似的。例如,如果多个sr可以到达同一个网络,那么所有sr将具有对于该网络的多条路由,其中指向本地接口的路由具有比指向伪接口的路由更小的距离度量,因此可能的话本地接口将被选择。路由阶段1720产生路由决策,该路由决策包括逻辑路由器的下一跳ip地址和出口逻辑端口(在一些实施例中,基于由dr对北向分组执行的路由,出口逻辑端口可以已经是已知的)。

在被路由之后,分组前进到路由后服务阶段1725-1730。这些阶段像路由前服务阶段1710-1715一样仅在逻辑路由器上配置了有状态服务时由sr执行。在一些实施例中,路由后服务阶段中的一些或全部可以依赖于路由决策。例如,为逻辑路由器配置的基于接口的nat可以依赖于逻辑出口端口。此外,一些实施例要求路由后服务不更改路由决策(但是在一些情况下路由后服务可能导致sr丢弃分组)。

接下来,sr通过出口acl阶段1735来处理分组。在这个阶段处,sr实行为逻辑路由器的逻辑出口端口配置的任何安全策略。然后sr(在阶段1740处)对下一跳执行arp,以确定分组的新的目的地mac地址。当sr的出口接口是伪接口时,在一些实施例中,arp以与dr在逻辑空间中执行arp相同的方式经由代理被注入到目的地l2中。在arp结束之后,sr修改分组的源mac地址和目的地mac地址。

最后,分组前进到出口输出阶段1745。如果出口接口是本地的,那么分组被发送到适当的vlan。另一方面,如果出口接口是远程的,那么sr将分组转发到伪接口的sr,然后伪接口的sr经由适当的vlan来发送出分组。在一些实施例中,分组被发送到适当的对等sr,然后该对等sr执行arp并且输出分组。然而,这种技术要求分组存储下一跳信息或者对等sr重新执行路由阶段。在一些实施例中,出口输出阶段不递减ttl。替代地,ttl通过在这个sr处的路由阶段递减,或者,如果通过在不同的sr的输出阶段的重定向被接收,那么ttl通过在该不同的sr处的路由阶段递减。

iv.多层逻辑网络中的ecmp路由

如上面所提到的,关于plr的sr,一些实施例对于北向分组和南向分组使用等价多路径路由技术。在一些实施例中,仅当在与物理网络对接的逻辑路由器(例如,两层拓扑中的plr)上没有被配置有状态服务时才允许使用ecmp。为了使用ecmp技术转发分组,plr需要多条上行链路,并且需要启用bgp(或另一个动态路由协议)。在一些实施例中,多条上行链路可以位于同一l2域中。

如之前所描述的,用户(管理员)将逻辑路由器与特定的物理网关机器集合相关联。管理平面然后将plr的各个上行链路指派给这个物理网关机器集合中的不同网关机器。一些实施例实行可指定的集合内的各个网关机器具有到外部网络的一致的(uniform)物理连接性(例如,所有机器都可以访问相同的vlan集合)的规则,这简化了管理平面处的逻辑。在管理平面已向其指派上行链路的每个网关机器处,创建sr。

一些实施例对一致的物理连接性施加附加要求。具体而言,在一些实施例中,plr跨越的所有网关机器具有相同的l3连接性(即,所有这些机器都连接到相同的物理路由器集合)。此外,在启用bgp(ecmp的要求)的情况下,所有这些物理下一跳(物理路由器)都需要具有相同的物理连接性。这意味着特定plr的所有sr将从它们的物理下一跳接收相同的路由集合,并且sr之间的瞬时路由差异的可能性相当快地消失。在有这个要求集合的情况下,不需要伪上行链路,因为分组将不需要在上行链路之间被重定向(因为所有上行链路都具有相同的策略和相同的连接性)。

图18和图19示出了单层逻辑网络拓扑1800,以及该拓扑的满足上述对于使用ecmp的要求的管理平面视图。网络拓扑1800类似于图9的网络拓扑,但是两条上行链路中的每条上行链路具有相同的l3连接性。逻辑网络拓扑1800包括连接到逻辑路由器1815的两个逻辑交换机1805和1810。除了上行链路连接到的物理路由器的配置不同之外,这些部件的配置与网络拓扑900的相同。即,逻辑路由器1815与逻辑交换机1805和1810之间的接口全部相同,并且逻辑路由器1815的两条上行链路u1和u2连接到具有相同下一跳ip地址的物理路由器1820和1825。然而,尽管在前面的示例中物理路由器提供到不同网络的连接性,在这里物理路由器都具有到互联网的相同的l3连接性。

因此,在图19中,逻辑网络的管理平面视图1900也几乎相同。管理平面同样为逻辑路由器1815定义dr部件1905、用于两条上行链路的两个sr1910和1915以及中转逻辑交换机1920。对该配置的唯一修改是在sr上没有配置伪接口,因为两条上行链路具有相同的配置和rib,所以sr中的一个sr不应当接收需要从第二个sr转发出来的分组。照此,先前的部分中描述的rib中用于重定向的路由将不被包括在这些sr的rib中。

在一些实施例中,ecmp与bgp(或其它动态路由协议)结合使用。逻辑路由器的每个sr与它所连接的一个或多个物理路由器建立bgp会话。例如,在图18和图19的示例中,sr1910发起与物理路由器1820的会话,而sr1915发起与物理路由器1825的会话。在一些实施例中,上行链路中的每条上行链路将被连接到这两个物理路由器两者,因此每个上行链路将具有两个路由会话。在一些实施例中,与sr实现分离的网关机器上的模块发起与路由器的bgp会话。例如,当sr被实现为vm时,bgp模块可以是vm的一部分或者是作为管理程序的一部分、在分开的vm或其它数据计算节点中操作的分开的模块等。在这些会话期间,sr向物理路由器通告在逻辑空间(例如,逻辑交换机子网1.1.1.0/24和1.1.2.0/24)中的前缀,并且对这些前缀中的每个前缀使用相同的度量。一些实施例的bgp集成技术在2014年3月14日提交的美国专利申请14/214,561中描述,该美国专利申请通过引用并入本文。

在所有sr向物理路由器通告相同的路由的情况下,物理路由器然后可以将sr视为等价路由选项,并且通过各个sr散布流量。在图18和图19所示的示例中,物理路由器中的每个物理路由器只能向sr中的一个sr发送分组。然而,每个物理路由器具有相同的连接性,因此从它们后面的网络朝着逻辑网络发送的分组将在两个路由器1820和1825之间均匀分布,并且因此在两个sr之间均匀散布。当每个sr连接到所有的物理路由器时,则这些物理路由器中的每个物理路由器都可以独立地在sr之间均匀地散布流量。

对于北向分组,一些实施例的dr使用ecmp技术来在各个sr之间分发分组,这为北向分组提供相等的连接性。通过运行bgp(或不同的动态路由协议),sr除了通告用于逻辑网络前缀的路由之外,还学习来自物理路由器的路由。如所提到的,sr在本地将这些路由并入它们的rib中,并且可以基于新学习的路由来重新计算它们的fib。然而,为了让dr使用ecmp,还必须将路由给予dr的rib,这在许多机器处实现。

在一些实施例中,sr将学习到的路由报告给配置和管理sr的集中式网络控制器(以及实现分布式逻辑转发元件的mfe)。然后,集中式控制器相应地更新dr的rib,并且将更新分发到实现dr的mfe。依赖于保持最新的rib和中央控制器上的处理负载之间的期望的平衡,不同的实施例可以以不同的速率更新dr。一些实施例不是分发rib,而是在集中式控制器处计算fib,然后将更新的fib分发到实现dr的mfe。

在其它实施例中,集中式控制器不是持续更新路由,而是将指向所有sr的缺省路由添加到drrib。这些路由被分类为管理平面内部,因此它们仅当没有被管理员输入的静态路由否决时才由dr使用。因为不同sr的路由具有相同的管理距离度量,所以dr将它们视为等价选项,从而利用ecmp技术在sr之间划分流量。

v.用于有状态服务的活动-备用

虽然上面的部分描述了用于利用ecmp的活动-活动配置的sr设置(当两个或更多个sr中的所有sr被视为相等选项时),但是一些实施例使用具有两个sr的活动-备用配置。一些实施例在sr上配置了有状态服务时使用活动-备用配置。在这种情况下,避免必须在sr之间持续共享状态的好处可能会超过在多个sr之间发送所有北向流量和南向流量(同时使用备用进行备份以免发生故障)的负面效应。在活动-备用情况下,状态在两个sr之间周期性地同步,但是这不需要以每分组的速度完成。

在一些实施例中,对于活动-备用配置,管理员在定义逻辑路由器时需要配置两条上行链路,并且上行链路不需要在相同的l2域中。然而,因为活动sr和备用sr应当对于dr是等价选项(其中活动sr是两个选项中的优选项),所以一些实施例要求这两个sr具有统一的l3连接性。当然,当活动-备用sr被配置为用于具有有状态服务的tlr时,这不是问题,因为两个sr都将具有一个下一跳,即tlr连接到的plr的dr。对于活动-备用配置下的plr,在一些实施例中,两条上行链路应当被配置为具有相同的连接性。此外,对于plr,一些实施例允许(或要求)在sr上配置动态路由协议(例如,bgp)。

图20示出了当逻辑路由器被配置为活动-备用模式而不是活动-活动(ecmp)模式时逻辑网络拓扑1800的管理平面视图2000。在这里,与图19所示的活动-活动模式在配置上唯一的差异是,sr2010和2015的南向接口被指派了相同的ip地址,但是被指派了不同的mac地址。

在向dr2005的南向接口和北向接口指派mac地址和ip地址方面,管理平面以与图9和图10的一般情况中的相同的方式来配置dr2005。当构建rib时,使用相同的已连接的路由,并且与上文在部分ii中所描述的相同的静态路由规则适用(例如,北向路由被复制到dr,但是被修改以将srip地址设置为它的下一跳)。在这种情况下,因为对于sr仅存在一个ip地址,因此所有北向路由都使用该单个ip作为下一跳地址。类似地,具有该单独ip地址作为下一跳的单条缺省路由被添加到dr的rib,而不是创建到各个不同的srip地址的多条缺省路由。因此,用于图20中dr2005的rib包括以下路由:

1.1.1.0/24输出到l1

1.1.2.0/24输出到l2

192.168.100.0/24输出到drp1

192.168.1.0/24经由ip1

192.168.2.0/24经由ip1

0.0.0.0/0经由ip1

sr2005中的每个sr将以大致相同的方式被配置。当逻辑路由器是plr(或者在一层拓扑中,如在该示例中)时,北向接口的ip地址和mac地址与被指派给为plr配置的两条上行链路的ip地址和mac地址相同。另一方面,当逻辑路由器是tlr时,它可以仅具有被配置为连接到plr的一条上行链路。在这种情况下,两个北向接口的ip地址相同,但是每个sr被指派不同的mac地址。类似地,在这两种情况中的任一种情况(plr或tlr)下,向两个南向接口指派单个ip地址(如图20中那样,其中这两个接口都具有ip1的ip地址),并且对于两个sr指派两个不同的mac地址。

在一些实施例中,控制器将任何上行链路独立的服务策略完全相同地推送到这两个sr。如果依赖于上行链路的任何服务策略被允许并且被配置,那么这些服务策略被推送到它们所关联的上行链路存在于其上的sr。此外,逻辑路由器端口的任何动态路由配置都被传送到sr的北向接口。

用于sr的rib类似于上文在部分ii中针对一般情况所描述的rib。从逻辑路由器的上行链路出去的静态路由和已连接的路由被添加到sr的rib,而不进行修改。对于逻辑路由器的每个南向接口(例如,用于逻辑交换机子网的路由),用于网络的路由被添加,其中下一跳ip地址被设置为dr的北向接口。逻辑路由器的rib中的从这个南向接口出去的任何路由也被添加到具有该相同的下一跳ip地址的sr的rib。在图20的示例中,在经由动态路由协议学习任何其它路由之前,sr12010的rib将包括以下路由:

0.0.0.0/0经由192.168.1.252输出到u1

192.168.1.0/24输出到u1

192.168.100.0/24输出到srp1

1.1.1.0/24经由ip3

1.1.2.0/24经由ip3

此外,在一些实施例中,当sr被设置为备用sr(而不是活动sr)时,sr不回答它的南向接口上的arp。对于sr的南向ip的arp分组将在连接sr和dr的中转逻辑交换机上广播,并且活动sr和备用sr两者都将响应该ip地址。然而,仅活动sr将响应arp请求,以使得dr将把分组路由到活动sr而不是备用sr的mac地址。然而,在一些实施例中,备用sr将接受由北向接口接收的分组,以便运行它的动态路由协议并且保持最新的路由集合,以免它成为主动sr。然而,备用sr不向外部网络通告前缀,除非它变为活动的。

vi.sr故障转移

如上文所描述的,sr可以在不同的实施例中被实现为vm或其它数据计算节点或被实现为基于dpdk的数据路径内的vrf。在这两种情况下,不同类型的故障(部分隧道故障、完整隧道故障、物理机器崩溃等)的可能性可能导致sr停机。然而,不同的sr实现可以以不同的方式响应不同类型的故障。

a.基于dpdk的sr的故障处理

在一些实施例中,如所描述的,逻辑路由器的sr作为基于dpdk的数据路径内的vrf在网关机器或边缘节点上操作。这些网关机器(例如,基于数据中心内的物理位置)被分组成集合,并且总体地托管特定逻辑路由器的所有sr的集合中的网关机器通过一组隧道(例如,在一些实施例中,完整的隧道网格)连接。因此,在sr在其上操作的所有网关机器之间存在隧道。

一些实施例使用双向转发检测(bfd)会话来维护这些隧道,以便监视对等网关机器的存活性(aliveness)。然而,由于仅使用隧道端点之间的单个bfd会话将需要依赖于单个信息信道来检测对等体的存活性,因此一些实施例还使用每对网关机器之间的第二信道。具体而言,在一些实施例中,在网关之间存在用于发送控制数据(例如,用于与网络控制器通信)的单独的管理网络。因此,每个网关在管理网络上具有单独的ip地址,并且这些连接可以被用来通过管理网络发送心跳消息。这防止两个对等体之间的隧道故障的可能性导致当对等体实际没有停机时,两个网关机器确定另一个已经崩溃并且发起引发混乱的动作。相反,在隧道故障期间,每个节点可以检测到它们的对等机器仍然工作,并且因此推断出:隧道已经发生故障,而不是对等机器(并且因此它的sr)本身发生故障。

在一些实施例中,故障条件对于plr的sr和tlr的sr是不同的。当提供到用户vm在其上运行的mfe(例如,图13的用户vm直接连接到的mfe1325)的连接性的网关机器的隧道发生故障时,网关机器上的所有sr不再可操作(甚至对于plr的sr也是如此,因为由外部物理路由器发送到plr的流量将被黑洞化(blackholed))。另一方面,当网关机器丢失它到物理路由器的连接性时,网关上的tlr的sr仍然被视为可操作的,因为到tlr的北向流量将把plr的dr作为下一跳,plr的dr应当始终是可用的(因为它也在网关上的数据路径内实现)。然而,plr的sr不再被认为是可操作的,因为源自逻辑网络的vm的任何北向流量都将被黑洞化。当托管plr的sr的网关机器丢失它的物理连接性(或它的bgp会话)时,在一些实施例中,网关机器向托管同一plr的sr的其它网关机器发送消息(例如,特定的诊断代码,诸如“连结路径故障”)。

基于在隧道上与对等体的bfd会话、在与对等体的第二(例如,管理)信道上的心跳消息的状态以及是否已经从对等体接收到指示对等体的物理连接性故障的消息,第一网关机器可以作出关于它的对等的第二网关机器的结论并且基于这些结论采取某些动作。例如,如果隧道处于活动状态并且没有接收到连接性故障的消息,那么第一网关机器推断出对等的第二网关机器是健康的,并且第一网关机器继续正常地处理分组。然而,如果到对等体的隧道在工作但是已经接收到连接性故障的消息,那么第一网关机器推断出对等体仍处于活动状态但是已经失去了它的物理连接性。因此,如果第二网关机器上的sr属于plr,那么第一网关机器上的sr接替第二网关机器上的sr(如下文所描述的),但是对于tlr的sr不采取任何行动。

如果第一网关机器和对等的第二网关机器之间的隧道故障(基于bfd会话不再活动)但是仍然接收到辅助信道心跳消息,那么第一网关机器推断出对等的第二网关机器仍然是健康的并且正在处理北向和南向分组(但是如果需要的话,重定向可能是问题)。然而,如果隧道和辅助信道两者都故障,那么第一网关机器推断出对等体已经故障(例如,崩溃)。在这种情况下,不管sr是属于plr还是tlr,第一网关机器上的sr都接管第二网关机器上的sr(如下文所描述的)。

在一些实施例中,每个网关机器具有在该机器上操作的本地网络控制器(有时被称为机箱(chassis)控制器)。一些实施例的机箱控制器接收来自中央网络控制器的数据元组,并且使用数据元组来配置机器上的mfe。在一些实施例中,该机箱控制器还负责确定它的网关机器的健康状况何时改变以及对等网关机器的健康状况何时改变。当网关机器之间的三个通信指标(隧道bfd会话、辅助信道和物理连接性故障消息)中的一个通信指标(基于连接性丢失、网关机器崩溃等)受到影响时,一些实施例的机箱控制器确定这如何影响在它的网关机器上托管的每个sr。

然后,机箱控制器相对于它的sr中的特定的sr采取的动作依赖于(i)sr属于plr还是tlr、(ii)sr是在活动-活动模式还是活动-备用模式下工作、(iii)它本身的本地健康状况、以及(iv)托管同一逻辑路由器的其它sr的(一个或多个)对等网关机器的健康状况。例如,机箱控制器可以确定它的本地sr应当不再被视为起作用的,在这种情况下,机箱控制器可以将对于这种效果的信号发送到以下各项的组合:(i)其它网关机器、(ii)用户vm驻留在其上的主机机器、(iii)物理外部路由器。机箱控制器还可以做出本地sr应当变为活动状态的确定,在这种情况下,它可以启动故障转移过程来激活sr。此外,机箱控制器可以做出远程sr不再起作用的确定,并且启动故障转移过程以在本地接管这个远程sr。

当检测到故障条件时,各种实施例可以采取各种不同的动作来部分地或完全地补救这种情况。不同类型的故障情况可以包括完全或部分隧道故障、网关机器或mfe崩溃、链路聚合组(lag)状态故障、bgp会话故障、sr之间的不统一路由。虽然sr的复活实际上不是故障场景,但是它也导致(一个或多个)网关机器机箱控制器采取管理sr的动作。

1.完整的隧道故障

完整的隧道故障可能由于网关机器崩溃或由于pnic或物理网络问题而发生。当完整的隧道故障在特定的网关机器上发生时,(i)在具有用户vm或其它数据计算节点的主机机器处的所有mfe都丢失到特定网关机器的隧道,(ii)其它网关机器丢失到该特定网关机器的隧道,以及(iii)该特定网关机器丢失到其它网关机器的隧道。

从主机机器处的mfe的视角来看,当它到特定网关机器的隧道故障时,plr的dr可以到达一些sr(假设plr跨越的所有网关机器不会一次都发生故障),但是无法到达该特定网关机器上的sr。照此,在一些实施例中,主机机器上的机箱控制器或数据路径自动从dr的fib中移除(使用该特定网关机器上的sr作为下一跳ip地址的)受影响的路由。一些实施例将每个下一跳与相应网关机器的虚拟隧道端点(vtep)相关联。当朝着特定vtep的隧道故障时,与特定vtep相关联的所有下一跳将被标记为故障的,并且因此在本地机箱控制器计算dr的fib时被移除。

其它网关机器通过bfd会话的状态来检测特定网关机器隧道的故障,并且检测到辅助信道仍然在工作。然后这些其它网关机器(例如,其它网关机器上的本地机箱控制器)可以发起故障转移过程,以接管在故障的网关机器上托管的sr。

对于在故障网关机器上被配置为活动-活动模式的sr,一些实施例使用排名机制来确定故障sr如何由其它机器之一接管。在一些实施例中,管理平面向在活动-活动配置下的n个sr中的每个sr指派从1到n的排名。这些排名可以是随机指派的,或者使用不同的技术指派,并且被分发给托管特定逻辑路由器的在活动-活动配置下的sr的所有网关机器的本地机箱控制器。基于故障sr的排名,具有下一个最高排名的sr自动接管故障sr的南向接口。对于北向接口,其它sr不需要采取任何动作,因为物理路由器将在bgp会话终止时识别出sr发生故障。为了接管该接口,接管sr向它的南向接口上的中转逻辑交换机发送用于它正在接管的所有ip地址的若干无故arp(garp)消息。这些消息宣布这些ip地址现在与接管sr的南向接口的mac地址相关联。如果发生故障的sr已经接管了其它ip地址(由于用于逻辑路由器的其它sr的先前故障),那么新的接管sr将接管多个ip地址。

对于故障网关机器上的以活动-备用模式配置的sr,一些实施例不同地处理活动sr的故障和备用sr的故障。具体而言,如果发生故障的sr是备用的,那么基于备用机器将被及时恢复的假设,一些实施例不采取任何动作(即,它们不实例化新的备用机器)。如果发生故障的sr是tlr的主动sr,那么南向接口ip地址和北向接口ip地址两者都被迁移到备用sr。因为tlr仅具有单条上行链路,所以这两个sr共享北向和南向ip地址,但是具有不同的mac地址。在这两种情况下,一些实施例向相关中转逻辑交换机发送garp消息,以实现ip地址的迁移。对于plr的sr,仅迁移南向接口,因为即使在活动-备用模式下,两条上行链路也应当具有单独的ip地址。此外,新的活动sr开始向物理路由器通告前缀,以将南向分组吸引到它自己而不是发生故障的sr。在相同的ip地址和mac地址被用于活动-备用sr的南向接口的情况下,一些实施例使用反向arp(rarp)来刷新mac:vtep映射(即,因此分组将经正确的隧道被发送到新的活动sr)。

在已经丢失了它的所有隧道的网关机器上,机箱控制器确定最可能的原因是某种本地故障,并且因此确定它的本地sr应当不再是活动的。因此,经由bgp会话向外部物理路由器通告前缀的任何sr撤回它通告的前缀,以避免吸引将被黑洞化的南向流量。

2.部分隧道故障

当数据中心中的网关机器和其它机器之间的隧道中的一些隧道发生故障时,部分隧道故障发生。这可以是由于在具有到特定网关机器的通道的机器中的一个机器的完整故障(这将导致一个隧道的丢失)、由于特定网关机器处的条件导致它的隧道中的一些隧道发生故障等。这里描述的情况是特定网关机器处的条件导致它的隧道的子集发生故障。因此,(i)具有用户vm或其它数据计算节点的主机机器处的mfe中的一些mfe丢失到该特定网关机器的隧道,(ii)其它网关机器中的一些网关机器丢失到该特定网关机器的隧道,以及(iii)该特定网关机器丢失到一些其它网关机器的隧道。

主机机器处丢失到特定网关机器的隧道的mfe将以与完整隧道故障相同的方式对待这种情况,因为从主机机器的角度看,这仅是不可达的网关。照此,如上文在第1小节中所描述的,主机机器上的机箱控制器或数据路径将自动从dr的fib移除使用特定网关机器上的sr作为下一跳ip地址的受影响的路由。

如所指出的,部分隧道故障可以导致各种不同的场景。例如,在一些情况下,网关机器可以是主机机器mfe中的一些主机机器mfe可达的,但是不能由它的对等体到达。参考图13(图13将sr示为vm,但是仍然适用)作为示例,网关机器1330可以是主机机器1305-1320可达的,但是不是网关1335和1340可达的。在这种情况下,网关机器1330上的本地机箱控制器将接管plr的在这两个网关机器1335和1340上运行的sr。此外,网关机器1335(或机器1340,这依赖于排名)将接管在网关机器1330上运行的sr。这导致当在(可以到达所有网关机器的)mfe中的一些mfe上运行的dr发送对于在第一网关机器1330上托管的sr的南向接口ip地址的arp请求时,该mfe接收到来自多个网关机器的回复。只要sr处于活动-活动配置(没有有状态服务),这就将不会造成正确性问题。然而,在活动-备用配置的情况下,这将意味着两个sr现在都是活动的,这可能导致流量中断问题。

当在特定网关机器处到主机机器中的一些主机机器的隧道发生故障,但是对等网关机器仍然可达时,部分隧道故障还可能导致在活动-备用模式下的问题。在这种情况下,因为sr之间的隧道正在起作用,所以不会发生故障转移。在活动-活动模式下,主机机器(或本地机箱控制器)处的数据路径可以决定通过仍然工作而没有问题的隧道转发流量。然而,在活动-备用模式下,如果到活动sr的隧道发生故障,那么mfe将向备用sr发送分组,该备用sr不处理分组。类似地,在活动-活动配置和活动-备用配置两者中,网关机器都可能不能传递来自物理路由器的南向流量,因此在一些实施例中该南向流量被黑洞化。

3.机器崩溃

在一些情况下,整个网关机器可能崩溃,或者dpdk快速路径可能崩溃。由于在一些实施例中快速路径负责发送bfd分组,因此这些情况中的任一情况都与完整隧道故障相同。由于msr进程(msr进程处理网关机器上的sr的bgp会话)可以在仅快速路径崩溃(而整个网关机器没有崩溃)时继续运行,因此物理路由器将仍然具有向网关机器发送分组的能力。在一些实施例中,这种流量被黑洞化,直到快速路径被重新启动为止。

4.lag状态故障

在一些实施例中,网关机器使用链路聚合组(lag)来到达外部物理路由器。当托管plr的sr的网关机器丢失整个lag时,在一些实施例中,机器经隧道向也托管该plr的sr的对等网关机器发送(如上文所描述的)物理连接性故障消息。在这种情况下,上文针对完整隧道故障所描述的接管过程发生(具有下一个最高排名的sr接管sr的ip地址)。

一些实施例替代地将所有隧道都标记为故障的,以作为引起故障转移的技术。然而,这导致该机器上的tlr的sr也被故障转移到其它网关机器,而当仅物理连接性发生故障时,这是不必要的。这可以导致向主机处的mfe发送许多garp消息,因此一些实施例使用仅故障转移plr的sr的第一技术。

在一些情况下,lag中的物理上行链路中的仅一些物理上行链路故障。只要lag中的物理上行链路中的至少一条物理上行链路保持起作用,网关机器就不采取任何动作并且继续正常操作。此外,在一些实施例中,(数据中心内的)隧道流量使用单独的lag。如果该整个lag发生故障,则这导致如上文在第1小节中所描述的完整隧道故障。

5.bgp会话故障

在一些情况下,sr的bgp会话可能发生故障(例如,因为网关机器上的msr进程崩溃)。当对bgp进程启用优雅(graceful)重启时,只要在为优雅重启设置的超时内会话被重建,就不需要采取故障转移动作。为了能够检测msr进程(或其它bgp模块)何时发生故障,一些实施例要求即使状态没有改变,该进程也周期性地刷新所有bgp会话的状态。

另一方面,如果没有启用优雅重启或者重启的超时到期,那么一些实施例的网关机器向也托管同一plr的sr的它的对等网关机器发送物理连接性故障消息,以便指示该网关机器的sr不再起作用。从对等网关机器的角度来看,这就像lag状态发生故障一样,因为网关上的具有不起作用的bgp会话的sr接口将被具有下一个最高排名的sr接管。此外,只要一个bgp会话正在起作用,并且所有物理下一跳都具有相同的l3连接性,就不需要采取故障转移动作。

6.sr之间的非统一路由

plr的sr所连接的外部物理网络中的故障也可能影响sr。例如,一些外部物理路由器可能会撤销对于子网的路由,而其它物理路由器不撤销对于子网的路由。一些实施例在网关机器上本地解决这个问题,而不涉及中央网络控制器。

如所提到的,在一些实施例中,sr具有彼此对等的ibgp,并且(从外部物理路由器学习的)ebgp路由经ibgp会话被发送,而不改变下一跳。参考图10,由具有下一跳192.168.2.252(该下一跳与上行链路u2在同一子网中)的sr1015所学习的任何ebgp路由被sr1010经由ibgp学习。然后这些路由被安装在sr1010中,并且下一跳为192.168.2.252,因为sr具有用于在另一个sr1015上的实际上行链路的伪接口(u2')。路由撤销场景也发生同样的技术。

7.sr复活

虽然由于前面的小节中指出的各种原因,sr可能发生故障,但是sr一般将在一段时间后恢复工作。在其它机器处这可以由朝着具有已经发生故障的sr的特定网关机器的bfd会话恢复工作或者由接收清除物理连接性故障标志的消息来指示。在一些实施例中,所有其它网关机器上的本地机箱控制器然后评估本地sr是否应当使用与上文描述的相同的方法来继续接管远程sr。

例如,如果当前由本地sr从远程sr接管的ip地址应当被归还给远程sr(即,本地sr应当不再接管该ip地址),那么本地sr停止回答对于该ip地址的arp。对于一些实施例,本地机箱控制器从本地sr的南向接口移除该ip地址。如果ip地址应当由本地sr接管(例如,因为它已经恢复工作(comebackup)),那么它遵循上文在第1小节中所描述的故障转移过程。此外,如果本地sr被指定为备用的,并且活动sr恢复起作用,那么本地sr停止向外部物理路由器通告前缀。类似地,如果被指定为活动的本地sr恢复起作用,那么它也恢复通告前缀。

b.基于vm的sr的故障处理

如上面所指出的,一些实施例使用网关机器上的vm(或其它数据计算节点)来在数据中心中托管sr,而不是(或附加于)在网关机器的基于dpdk的数据路径中托管sr。图21示出了托管特定plr的三个sr2120-2130的三个网关机器2105-2115的示例物理实现2100。网关机器中的每个网关机器包括mfe、bgp进程(例如,上面小节a中描述的msr进程)以及本地控制平面或机箱控制器。

网关机器2105-2115上的mfe2135-2145可以是可以处理分布式l2和l3转发的虚拟交换机,诸如ovs、esx、基于不同管理程序的虚拟交换机或其它软件转发元件。如图所示,三个mfe2135-2145具有在它们之间的完整隧道网格,并且这三个mfe还具有到位于托管用户vm的主机机器集合2150-2155的mfe的隧道。主机机器2150-2155还具有本地控制平面。

具有作为vm操作的三个活动sr的网络拓扑的物理实现2100将在本小节中用来描述各种不同的故障场景。一般而言,当托管sr的vm中的一个vm发生故障或者它们之间的隧道发生故障时,其它对等sr将尝试接管发生故障的sr的责任。在一些实施例中,属于同一逻辑路由器的sr经由中转逻辑交换机周期性地彼此发送心跳消息(例如,通过将心跳消息广播到中转逻辑交换机上,心跳消息将在中转逻辑交换机上被递送到所有其它sr)。

1.托管sr的vm的崩溃

在一些情况下,托管sr中的一个sr的实际vm可能由于任何数量的原因而崩溃。如上面所提到的,当sr在活动-活动模式下操作时(如在图21中),管理平面向vm中的每个vm指派用于在故障转移场景中使用的排名。在图21的情况下,网关机器2105上的sr1排名最高,网关机器2110上的sr2排名第二高,网关机器2115上的sr3在sr中排名第三。

图22概念性地示出了vm中的一个vm崩溃的结果。具体而言,这个图示出了网关机器2110上的sr2125在其中操作的vm崩溃。因此,这个vm不能向其它sr2120和2130发出心跳消息,但是(例如,对于在网关机器上的其它vm中操作的其它sr)网关机器之间的隧道仍然可操作。从这个意义上讲,虽然各种故障机制影响机器上所有基于dpdk的sr(因为它们都被实现为数据路径内的vrf),但是用于基于vm的sr的vm的崩溃仅影响在该vm中操作的单个sr,而不影响在网关机器上的其它sr。

由于缺少心跳,所以其它sr2120和2130检测到sr2125的故障,并且因此接管发生故障的sr的责任。通常,所有sr都存储用于它们自己的南向接口以及其它sr的南向接口的ip地址的信息。即,sr2120存储关于到连接sr的中转逻辑交换机的它自身的接口以及sr2125和2130的对应接口的信息。然而,sr2120通常仅回答对于它自身的接口的arp请求。

当sr的vm崩溃时,如图22中所示,仍然存活的具有下一个最高排名的sr负责接管发生故障的sr的南向接口ip地址以及故障的sr先前已经接管的任何ip地址。例如,如果sr32130先前已经崩溃,那么它的南向接口将由sr22125接管。因此,图22示出了sr2120现在充当sr1和sr2两者。假设逻辑网络使用ecmp原则来转发北向分组,那么主机机器2150-2155应当向网关2105上的vm(例如,向该vm的mac地址)路由针对sr2120-2130所属的逻辑路由器的所有北向流量的三分之二,因为向sr1和sr2的ip地址转发的分组将都被路由到该mac。

为了使网关2105上的vm接管sr22125的ip地址,vm向连接dr和sr2120-2130的中转逻辑交换机发送对于这个ip地址(并且在其它情况下还发送对于它接管的所有ip地址)的garp消息。在一些实施例中,vm发送多个garp消息,以便更好地确保消息被接收。mfe2135接收这些garp消息,并且将它们发送到mfe2145(以便递送到sr32130)并且发送到各个主机2150-2155处的mfe(以使得dr将知道从它的arp高速缓存中移除旧的sr2ip到mac地址映射)。

在两个sr处于活动-备用模式的情况下(例如,如果sr属于tlr或被配置了有状态服务的plr),则在一些实施例中南向接口共享相同的ip地址,但是具有不同的mac地址,如上文所描述的。如果备用的vm崩溃,那么在一些实施例中,基于该虚拟机将恢复工作并且活动sr的vm不发生故障的假设,管理平面不发起新的备用。然而,当活动sr的vm发生故障时,备用vm识别出这个故障(由于没有接收到心跳消息),并且生成garp消息,以便移除在arp表中对于主机mfe中的dr的南向ip地址到已崩溃的sr的mac地址的映射(以使得这些mfe将把分组路由到新的活动sr而不是旧的活动sr)。在一些实施例中,主机机器上的隧道传输协议层(例如,vxlan层)还学习对于新的mac地址的mac:vtep映射,相同的ip地址和mac地址被用于活动-备用sr的南向接口,一些实施例使用反向arp(rarp)来刷新主机机器mfe处的mac:vtep映射(以使得分组将通过正确的隧道被发送到新的活动sr)。

最后,如果备用(现在活动的)vm作为plr的sr操作,那么它开始向物理外部路由器通告路由。当具有发生故障的sr的网关机器上的bgp进程在具有该sr的vm外部操作时,在一些实施例中,该网关机器处的本地控制平面也阻止bgp进程继续通告路由,以使得网关机器将不吸引对于发生故障的sr的入口流量。

2.完整隧道故障

完整隧道故障可能由于网关机器崩溃、网关机器上的mfe有问题或由于pnic或物理网络问题而发生。当在特定网关机器处发生完整隧道故障时,(i)在具有用户vm的主机机器或网关机器处的所有mfe都丢失到该特定网关机器的隧道,(ii)其它网关机器上的sr确定该特定网关机器上的sr网关机器已经发生故障,以及(iii)该特定网关机器上的sr确定其它网关机器上的sr发生故障。在一些实施例中,如果特定网关机器不再在隧道中的任何隧道上接收心跳消息,那么该特定网关机器上的逻辑确定它已经失去了它的隧道连接性,而不是其它vm已经失去隧道连接性。

图23概念性地示出了托管sr32130的网关机器2115上的mfe2145处的完整隧道故障的结果。如图所示,mfe2145已经发生故障,以使得从该mfe到其它网关机器和主机机器的隧道发送故障(由虚线指示)。因此,属于同一plr的(被配置为活动-活动模式的)其它sr将启动故障转移过程,以接管发生故障的sr2130的南向接口ip地址。

在一些实施例中,仍然存活的具有下一个最高排名的sr负责接管发生故障的sr的南向接口ip地址以及发生故障的sr先前已经接管的任何ip地址。因此,图23示出了sr2125的vm现在充当sr2和sr3两者。假设逻辑网络使用ecmp原则来转发北向分组,则主机机器2150-2155应当向网关2110上的vm(例如,向该vm的mac地址)路由对于sr2120-2130所属的逻辑路由器的所有北向流量的三分之二,因为向sr2和sr3的ip地址转发的分组将都被路由到该mac。

为了使网关2110上的vm接管sr32130的ip地址,vm向连接dr和sr2120-2130的中转逻辑交换机发送对于该ip地址(并且,在其它情况下,还发送对于该vm接管的所有ip地址)的garp消息。在一些实施例中,vm发送多个garp消息,以便更好地确保该消息被接收。mfe2140接收这些garp消息,并且将它们发送到mfe2135(以便被递送到sr12120)以及发送到各个主机2150-2155处的mfe(以使得dr将知道从它的arp高速缓存中移除旧的sr2ip到mac地址的映射)。

在两个sr处于活动-备用模式的情况下(例如,如果sr属于tlr或配置了有状态服务的plr),在一些实施例中,南向接口共享相同的ip地址,但是具有不同的mac地址。在一些实施例中,如果来自具有备用sr的网关机器的隧道发生故障,那么管理平面不发起新的备用sr。然而,当来自具有活动sr的网关机器的隧道发生故障时,备用vm识别这个故障(由于没有从活动sr接收到心跳消息),并且生成garp消息,以便移除在arp表中对于主机机器mfe中的dr的南向ip地址到发生故障的sr的mac地址的映射(以使得这些mfe将把分组路由到新的活动sr而不是旧的活动sr)。在一些实施例中,主机机器上的隧道传输协议层(例如,vxlan层)还学习对于新mac地址的mac:vtep映射。最后,如果备用(现在活动的)vm作为plr的sr操作,那么它开始向物理外部路由器通告路由。此外,在一些实施例中,具有发生故障的隧道的网关机器阻止它自身的bgp进程继续通告路由。

3.部分隧道故障

当数据中心中的网关机器和其它机器之间的隧道中的仅一些隧道发生故障时,部分隧道故障发生。这可以是由于在具有到特定网关机器的隧道的机器中的一个机器处的完整故障(这将导致一个隧道的丢失)、由于特定网关机器处的条件导致它的隧道中的一些隧道发生故障等。这里描述的是当特定网关机器处的条件导致它的隧道的子集发生故障的情况。因此,(i)在具有用户vm的主机机器处的mfe中的一些mfe丢失到该特定网关机器的隧道,(ii)其它网关机器中的一些网关机器丢失到该特定网关机器的隧道,以及(iii)该特定网关机器丢失到一些其它网关机器的隧道。

在主机处丢失到特定网关机器的隧道的mfe以与完整隧道故障相同的方式来对待这种情况,因为从主机的角度来看,这仅仅是不可达的网关。照此,主机机器上的数据路径或机箱控制器从dr的fib自动移除使用特定网关机器上的sr作为下一跳ip地址的受影响的路由。

如所指出的,部分隧道故障可以导致各种不同的场景。例如,在一些情况下,网关机器可以是主机机器mfe中的一些主机机器mfe可达的,但不是它自己的对等体可达的。参考图13作为示例,网关机器1330可以是主机机器1305-1320可达的,但是网关1335和1340不可达。在这种情况下,网关机器1330上的本地机箱控制器将接管plr的正在网关机器1335和1340两者上运行的sr。此外,网关机器1335(或机器1340,这依赖于排名)将接管在网关机器1330上运行的sr。这导致当在(可以到达所有网关机器的)mfe中的一些mfe上运行的dr发送对于在第一网关机器1330上托管的sr的南向接口ip地址的arp请求时,该mfe接收到来自多个网关机器的回复。只要sr处于活动-活动配置(没有有状态服务),这就将不会造成正确性问题。然而,在活动-备用配置的情况下,这将意味着两个sr现在都是活动的,这可以造成流量中断问题。

当在特定网关机器处到主机机器中的一些主机机器的隧道发生故障但是对等网关机器保持可达时,部分隧道故障还可能导致在活动-备用模式下的问题。在这种情况下,因为sr之间的隧道正在起作用,所以不发生故障转移。在活动-活动模式下,主机机器(或本地机箱控制器)处的数据路径可以决定通过仍然工作而没有问题的隧道转发流量。然而,在活动-备用模式下,如果到活动sr的隧道发生故障,那么mfe将向备用sr发送分组,备用sr不处理分组。类似地,在活动-活动配置和活动-备用配置两者中,网关机器都可能不能传递来自物理路由器的南向流量,因此在一些实施例中该南向流量被黑洞化。

4.到物理路由器的vnlc故障

在一些实施例中,sr在其上运行的每个vm使用第一vnic来连接到mfe以用于向(一个或多个)物理路由器发送以及从(一个或多个)物理路由器接收的分组(如果sr属于plr)、使用第二vnic以用于向它的对等体发送心跳消息、使用第三vnic以用于向逻辑网络发送以及从逻辑网络接收的分组。在一些实施例中,这些vnic中的一些或全部可以是相同的。例如,sr可以使用同一vnic来发送心跳消息以及与物理路由器通信,或发送心跳消息以及与逻辑网络通信。

如果出于任何原因vm丢失(与物理路由器通信的)第一vnic,那么在一些实施例中,sr停止发送心跳消息。照此,一旦托管plr的其它sr的它的对等vm检测到来自该sr的心跳消息已经停止,这些对等vm就采取如上文在第1小节中所描述的故障转移动作,就像vm已经崩溃一样。如果vm丢失(用于心跳消息的)第二vnic,那么对等vm将检测到没有心跳消息传入,并且采取相同的故障转移动作来控制发生故障的sr的ip地址。最后,如果vm丢失(用于逻辑网络流量的)第三vnic,那么它在心跳消息中指示该情况,并且对等体可以遵循相同的故障转移过程。

5.bgp会话故障

在一些情况下,sr的bgp会话可能发生故障(例如,因为网关机器上的msr进程崩溃)。当对bgp进程启用优雅重启时,只要在为优雅重启设置的超时内会话被重建,就不需要采取故障转移动作。为了能够检测msr进程(或其它bgp模块)何时发生故障,一些实施例要求即使状态没有改变,该进程也周期性地刷新所有bgp会话的状态。

另一方面,如果没有启用优雅重启或者重启的超时到期,那么网关机器使用心跳消息来指示sr不再起作用(例如,通过终止心跳消息)。从对等sr的角度来看,具有不起作用的bgp的sr将被视为故障的,并且上面的故障转移过程适用。

c.故障转移过程

图24概念性地示出了由sr在对等sr故障转移的情况下执行的过程2400。在各种实施例中,这个过程可以由在sr的网关机器上操作的本地控制平面(对于vm或者基于dpdk的数据路径中的vrf)、sr本身(如果sr被实现为边缘vm)或数据路径(如果被实现为基于dpdk的数据路径中的vrf)实现。即,虽然对于不同类型而言过程的实现可以是不同的,但是过程2400的操作适用于所描述的这两种类型的sr。

如图所示,过程2400通过(在2405处)确定对等sr已经发生故障而开始。如前面的小节中所描述的,sr可能由于各种原因并且在不同的能力的方面发生故障。例如,数据中心内实现逻辑网络通信的隧道连接性可能发生故障,sr与外部物理网络通信的能力可能变得不可用,实现sr的vm可能会崩溃(如果sr是这样实现的),数据路径可能崩溃,托管sr的整个网关机器可能崩溃,等等。应当理解的是,在一些情况下(例如,来自网关机器的所有隧道连接性发生故障、数据路径崩溃等),网关机器上的所有sr将被认为故障的,并且它们的各个对等体将执行过程2400或类似的过程。

在确定它的对等sr已经发生故障后,然后过程2400(在2410处)确定是否接替发生故障的对等体。例如,如果发生故障的对等体是在活动-备用配置下的备用sr,那么活动的sr不需要采取任何动作。此外,对于活动-活动配置,对等sr中只有一个对等sr需要接替发生故障的sr。如上文所描述的,sr中的哪个sr接替特定的发生故障的sr是基于在创建sr时由管理平面指派的排名而预先确定的。

当sr不负责接替发生故障的sr时,该过程结束。否则,该过程(在2415处)识别由发生故障的对等体拥有的现在由它负责的南向ip地址。与活动-备用模式相比,这些可以是活动-活动模式下的不同情况。具体而言,在活动-备用模式下,两个sr共享南向接口上的ip地址,所以sr将仅接管对它自己的ip地址的行动。在活动-活动模式下,sr都具有不同的南向ip地址。在这种情况下,接管的sr现在负责发生故障的sr的原始指派的ip地址、以及发生故障的sr先前(由于其它对等sr的故障)负责的任何其它南向接口ip地址。

对于每个识别出的南向ip地址,过程2400(在2420处)向连接它们的逻辑路由器的dr和sr的中转逻辑交换机发送一个或多个garp回复消息。garp消息将sr本身的南向mac地址识别为现在与在操作2415处识别出的一个或多个南向ip地址相关联。这使得中转逻辑交换机上的其它部件能够清除它们的arp高速缓存,以避免将向识别出的ip地址路由的分组发送到发生故障的目的地。对于在整个数据中心的许多网关机器和主机机器上实现的dr,garp回复被广播到这些许多机器,以便各个mfe上的arp高速缓存可以被清除。

然后,该过程(在2425处)确定执行该过程的sr(或其本地控制器机箱正在执行该过程的机器上的sr)是否先前是tlr的备用sr。应当理解的是,过程2400仅仅是概念性的,并且在一些实施例中操作2425缺省地在所有tlr备用sr上实现,并且不需要进行具体的确定。当发生故障的sr是在活动-备用配置下的活动sr时,备用sr负责吸引先前已经被发送到发生故障的sr的南向流量。

因此,如果sr以前是tlr的备用sr,那么过程2400(在2430处)识别发生故障的对等体的北向ip地址,发生故障的对等体共享该北向ip地址(因为在一些实施例中,tlr仅被允许一条上行链路)。该过程接下来(在2430处)将一个或多个garp回复消息发送到将sr连接到plr的dr的中转逻辑交换机。garp消息将sr本身的北向mac地址识别为现在与为tlr配置的上行链路的ip地址相关联。这使得plr的dr能够清除它的arp高速缓存(更具体而言,让跨数据中心实现这个dr的各个mfe清除它们的arp高速缓存)。然后该过程结束。

如果执行该过程的sr不是tlr的备用sr,那么该过程(在2440处)确定这个sr是否先前是plr的备用sr。同样,应当理解的是,在一些实施例中,执行过程2400的sr或本地控制器机箱实际上不进行具体的确定。当该sr是plr的备用sr时,sr(在2445处)开始向它的外部物理路由器通告前缀。在活动-活动的情况下,sr将已经在通告这些前缀,以便吸引ecmp流量。然而,在活动-备用配置下,备用不通告前缀,而是仅从外部路由器接收路由。然而,为了吸引南向流量,新的活动(以前备用的)sr开始通告前缀。然后该过程结束。

vii.电子系统

上文描述的特征和应用中的许多特征和应用被实现为被指定为在计算机可读存储介质(也被称为计算机可读介质)上记录的指令集合的软件过程。当这些指令由一个或多个处理单元(例如,一个或多个处理器、处理器的核心或其它处理单元)执行时,它们使得(一个或多个)处理单元执行指令中指示的动作。计算机可读介质的示例包括但不限于cd-rom、闪存驱动器、ram芯片、硬盘驱动器、eprom等。计算机可读介质不包括无线地或经有线连接传递的载波和电子信号。

在这个说明书中,术语“软件”意在包括可以被读入到存储器中以供处理器处理的驻留在只读存储器中的固件或存储在磁性存储装置中的应用。而且,在一些实施例中,多个软件发明可以被实现为较大程序的子部分,同时保留独特的软件发明。在一些实施例中,多个软件发明还可以被实现为分开的程序。最后,一起实现这里描述的软件发明的分开的程序的任何组合都在本发明的范围内。在一些实施例中,软件程序当被安装以在一个或多个电子系统上操作时,定义执行和进行软件程序的操作的一个或多个具体机器实现。

图25概念性地示出了利用其实现本发明的一些实施例的电子系统2500。电子系统2500可以被用来执行上文描述的控制应用、虚拟化应用或操作系统应用中的任何应用。电子系统2500可以是计算机(例如,台式计算机、个人计算机、平板计算机、服务器计算机、大型机、刀片计算机等)、电话、pda或任何其它种类的电子设备。这样的电子系统包括各种类型的计算机可读介质和用于各种其它类型的计算机可读介质的接口。电子系统2500包括总线2505、(一个或多个)处理单元2510、系统存储器2525、只读存储器2530、永久存储设备2535、输入设备2540和输出设备2545。

总线2505总体地表示可通信地连接电子系统2500的许多内部设备的所有系统总线、外围总线和芯片组总线。例如,总线2505将(一个或多个)处理单元2510与只读存储器2530、系统存储器2525和永久存储设备2535可通信地连接。

(一个或多个)处理单元2510从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行本发明的过程。在不同的实施例中,(一个或多个)处理单元可以是单个处理器或多核处理器。

只读存储器(rom)2530存储(一个或多个)处理单元2510和电子系统的其它模块所需要的静态数据和指令。另一方面,永久存储设备2535是读写存储器设备。这个设备是即使当电子系统2500关闭时也存储指令和数据的非易失性存储器单元。本发明的一些实施例使用大容量存储设备(诸如磁盘或光盘及其对应的盘驱动器)作为永久存储设备2535。

其它实施例使用可移动存储设备(诸如软盘、闪存驱动器等)作为永久存储设备。像永久存储设备2535一样,系统存储器2525是读写存储器设备。然而,与存储设备2535不同,系统存储器是易失性读写存储器,诸如随机存取存储器。系统存储器存储处理器在运行时需要的指令和数据中的一些指令和数据。在一些实施例中,本发明的过程被存储在系统存储器2525、永久存储设备2535和/或只读存储器2530中。(一个或多个)处理单元2510从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行一些实施例的过程。

总线2505还连接到输入设备2540和输出设备2545。输入设备使得用户能够向电子系统传送信息以及选择命令。输入设备2540包括字母数字键盘和指向设备(也被称为“光标控制设备”)。输出设备2545显示由电子系统生成的图像。输出设备包括打印机和显示设备,诸如阴极射线管(crt)或液晶显示器(lcd)。一些实施例包括诸如充当输入设备和输出设备两者的触摸屏之类的设备。

最后,如图25中所示,总线2505还通过网络适配器(未示出)将电子系统2500耦接到网络2565。以这种方式,计算机可以是计算机网络(诸如局域网(“lan”)、广域网(“wan”)或内联网、或者网络的网络(诸如互联网))的一部分。电子系统2500的任何部件或所有部件可以与本发明结合使用。

一些实施例包括电子部件,诸如微处理器、在机器可读或计算机可读介质(可替代地称为计算机可读存储媒介、机器可读媒介或机器可读存储媒介)中存储计算机程序指令的存储装置和存储器。这种计算机可读介质的一些示例包括ram、rom、只读光盘(cd-rom)、可记录光盘(cd-r)、可重写光盘(cd-rw)、只读数字通用盘(例如,dvd-rom、双层dvd-rom)、各种可记录/可重写dvd(例如,dvd-ram、dvd-rw、dvd+rw等)、闪存存储器(例如,sd卡、迷你sd卡、微sd卡等)、磁性和/或固态硬盘驱动器、只读和可记录盘、超密度光盘、任何其它光学或磁性介质、以及软盘。计算机可读介质可以存储可由至少一个处理单元执行并且包括用于执行各种操作的指令集的计算机程序。计算机程序或计算机代码的示例包括(诸如由编译器产生的)机器代码以及包括由计算机、电子部件或微处理器使用解释器执行的较高级别的代码的文件。

虽然上面的讨论主要关于执行软件的微处理器或多核处理器,但是一些实施例由一个或多个集成电路(诸如专用集成电路(asic)或现场可编程门阵列(fpga))执行。在一些实施例中,这样的集成电路执行存储在电路本身上的指令。

如本说明书中所使用的,术语“计算机”、“服务器”、“处理器”和“存储器”都指代电子设备或其它技术设备。这些术语不包括人或人的群体,为了说明书的目的,术语“显示”是指在电子设备上显示。如在本说明书中使用的,术语“计算机可读介质”、“计算机可读媒介”和“机器可读介质”完全限于以计算机可读的形式存储信息的有形物理对象。这些术语不包括任何无线信号、有线下载信号以及任何其它短暂信号。

本说明书全文涉及包括虚拟机(vm)的计算环境和网络环境。然而,虚拟机仅是数据计算节点(dcn)或数据计算端节点的一个示例,也被称为可寻址节点。dcn可以包括非虚拟化的物理主机、虚拟机器、在主操作系统之上运行而不需要管理程序或单独的操作系统的容器以及管理程序内核网络接口模块。

在一些实施例中,vm使用由虚拟化软件(例如,管理程序、虚拟机监视器等)虚拟化的主机的资源而在主机上利用它们自己的访客操作系统来操作。租户(即,vm的所有者)可以选择哪些应用在访客操作系统之上进行操作。另一方面,一些容器是在主操作系统之上运行而不需要管理程序或单独的访客操作系统的构造。在一些实施例中,主操作系统使用命名空间将容器彼此隔离,并且因此提供在不同容器内操作的不同应用组的操作系统级隔离。这种隔离类似于在使系统硬件虚拟化的管理程序虚拟化的环境中提供的vm隔离,并且因此可以被视为隔离在不同容器中操作的不同应用组的虚拟化形式。这种容器比vm更轻量级。

在一些实施例中,管理程序内核网络接口模块是包括具有管理程序内核网络接口和接收/发送线程的网络堆栈的非vmdcn。管理程序内核网络接口模块的一个示例是作为vmware公司的esxitm管理程序的一部分的vmknic模块。

应当理解的是,虽然说明书关于vm,但是给出的示例可以是任何类型的dcn,包括物理主机、vm、非vm容器和管理程序内核网络接口模块。实际上,在一些实施例中,示例网络可以包括不同类型的dcn的组合。

虽然已经参考许多具体细节描述了本发明,但是本领域普通技术人员将认识到,在不背离本发明的精神的情况下,本发明可以以其它具体形式体现。此外,附图中的若干个图(包括图11、图12和图24)概念性地示出了过程。这些过程的具体操作可以不按照所示出和描述的确切次序执行。具体操作可以不在一系列连续操作中执行,并且在不同的实施例中可以执行不同的具体操作。此外,该过程可以使用若干子过程来实现,或者可以被实现为更大的宏观过程的一部分。因此,本领域普通技术人员将理解的是,本发明不受前述说明性细节的限制,而是由所附权利要求限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1