逻辑路由器的路由配置方法、设备及系统与流程

文档序号:24129881发布日期:2021-03-02 17:11阅读:336来源:国知局
逻辑路由器的路由配置方法、设备及系统与流程
逻辑路由器的路由配置方法、设备及系统
[0001]
本申请是申请日为2016年4月1日、申请号为201680047244.2、名称为“逻辑路由器的路由配置方法、设备及系统”的发明专利申请的分案申请。


背景技术:

[0002]
典型的物理网络包含若干物理路由器以执行l3转发(即,路由)。当第一机器想要将分组发送到位于不同ip子网上的第二机器时,分组被发送到路由器,该路由器使用分组的目的地ip地址以确定分组应当通过路由器的物理接口中的哪一个发送。较大的网络将包含多个路由器,使得如果路由器中的一个发生故障,那么分组可以沿着第一机器与第二机器之间的不同路径路由。
[0003]
在逻辑网络中,不同子网上的用户定义的数据计算节点(例如,虚拟机)可能也需要彼此通信。在该情况下,租户可以定义包括逻辑交换机和逻辑路由器两者的用于虚拟化的网络。需要用于在数据中心中实现充分地服务这样的虚拟化的逻辑网络的逻辑路由器的方法。


技术实现要素:

[0004]
一些实施例提供用于在网络中(例如,在数据中心中)实现逻辑路由器的方法。在一些实施例中,该方法由集中管理网络的管理平面执行(例如,在网络控制器中实现)。在一些实施例中,该方法接收逻辑路由器的定义(例如,通过应用编程接口(api)),并且针对逻辑路由器定义多个路由组件。这些路由组件中的每一个被单独地分配路由的集合和逻辑接口的集合。该方法还可以接收用于逻辑路由器的路由的规范以及逻辑路由器到其它逻辑路由器的连接。一些实施例自动地识别接收到的路由应当被推送到哪些路由组件的路由表,以及如何基于与其它逻辑路由器的连接传播路由。
[0005]
在一些实施例中,针对逻辑路由器定义的若干路由组件包括一个分布式路由组件和若干集中式路由组件。另外,一些实施例的管理平面定义用于处理逻辑路由器内部的组件之间的通信的逻辑交换机(称为中转(transit)逻辑交换机)。分布式路由组件和中转逻辑交换机通过数据中心内的大量机器以分布式方式实现,而集中式路由组件各自在单个机器上实现。一些实施例在各种机器上的受管理转发元件的数据路径中实现分布式组件,而集中式路由组件在它们的单个机器上的vm(或者其它数据计算节点)中实现。其它实施例还在集中式组件的所分配的机器的数据路径中实现它们。
[0006]
在一些实施例中,集中式组件可以以活动-活动(active)或者活动-备用(standby)模式配置。在活动-活动模式中,所有集中式组件同时充分起作用,并且业务可以使用等价多路径(ecmp)转发原则(跨各种集中式组件平衡业务)通过集中式组件从逻辑网络进入或者外出,只要集中式组件到外部网络的连接性跨组件是相同的。在该模式中,单独的集中式组件中的每一个具有它自己的网络层(例如,ip)地址和数据链路层(例如,mac)地址用于与外部网络通信。另外,单独的集中式组件中的每一个具有它自己的网络层和数据链路层地址用于连接到中转逻辑交换机,以便将分组发送到分布式路由组件以及从分布式
路由组件接收分组。
[0007]
在一些实施例中,逻辑路由器是两层级逻辑网络结构的一部分。一些实施例的两层级结构包括用于将逻辑网络连接到数据中心外部的网络的单个逻辑路由器(称为提供商逻辑路由器(plr)并且由例如数据中心的所有者管理),以及连接到单个逻辑路由器并且不单独地与外部网络通信的多个逻辑路由器(称为租户逻辑路由器(tlr)并且由例如数据中心的不同租户管理)。一些实施例只要可能就以活动-活动模式实现plr,并且仅当针对逻辑路由器配置有状态的服务(例如,nat、防火墙、负载平衡器等)时才使用活动-备用模式。
[0008]
对于plr,一些实施例使得能够与外部网络进行路由交换。plr的集中式组件中的每一个运行动态路由协议过程以通告逻辑网络的前缀并且接收朝向外部网络的路由。通过集中位于数据中心中和实现逻辑网络的机器上两者的网络控制器的网络控制系统,这些路由被传播到其它集中式组件和分布式路由组件。一些实施例对于直接从外部网络学习的路由以及从自外部网络学习路由的不同的对等集中式组件学习的路由,在集中式组件的路由信息库(rib)中使用不同的管理度量。因此,相比涉及通过逻辑路由器的对等集中式组件重定向的路由,集中式组件将更喜欢它直接学习的路由。
[0009]
当逻辑路由器是tlr时,一些实施例不使用集中式组件或者当针对逻辑路由器配置有状态的服务时以活动-备用模式使用两个集中式组件。这两个集中式组件中的每一个具有相同的网络层地址,并且仅活动的组件响应arp请求。为了连接到plr,一些实施例还对两个组件中的每一个分配相同的网络层地址(虽然与用于连接到它自己的分布式组件的地址不同)。另外,管理平面定义plr的分布式组件与tlr的集中式组件之间的中转逻辑交换机。
[0010]
一些实施例的管理平面另外针对逻辑路由器构造中的每一个(例如,针对分布式组件以及针对每个集中式组件)配置路由表。这些路由表中的路由可以包括基于连接的逻辑交换机的路由、用户输入的静态路由、以及基于其它逻辑路由器的连接的动态路由。例如,通过管理员直接连接到逻辑路由器的任何逻辑交换机将导致分布式组件的路由表中的连接路由,以及用于各种集中式组件的、下一跳为分布式组件的接口的路由。
[0011]
当用户添加静态路由时,一些实施例提供用于将静态路由添加到各种逻辑路由器组件的各种规则。例如,一些实施例将面向下(downward-facing)的静态路由(下一跳在逻辑网络中)直接添加到分布式组件(其与其它逻辑转发元件(诸如指定的下一跳)接口),同时将再次指向通过集中式组件可到达的分布式组件的接口的路由添加到集中式组件中的每一个。当所配置的静态路由面向上(upward-facing)(下一跳在外部网络中和/或指定与集中式组件中的一个相关的特定输出接口)时,一些实施例(i)根据指定的接口和/或下一跳地址,将路由添加到集中式组件中的一个或多个,以及(ii)通过指定集中式组件中的每一个的接口为下一跳将路由添加到分布式组件。然而,当所配置的静态路由是默认路由时,一些实施例不添加路由到分布式组件,因为管理平面在创建逻辑路由器时已经自动地创建指向集中式组件中的每一个的用于分布式组件路由表的等价默认路由。
[0012]
而且,当tlr连接到plr时,一些实施例识别连接到tlr的任何逻辑交换机子网以及哪些应当通告(经由动态路由协议)到外部网络。在该情况下,不是在两个逻辑路由器之间运行动态路由协议,管理平面(其知道两个逻辑路由器配置)而是自动地执行路由交换,同时处理plr实际上对于它的单独路由组件中的每一个具有单独路由表的事实。因此,管理平
面将对于这些逻辑网络的路由添加到(i)分布式路由组件,其中下一跳为连接到plr的tlr的接口,以及(ii)集中式路由组件中的每一个,其中下一跳为从集中式组件可到达的分布式组件的接口。
[0013]
前面的发明内容预期用作本发明的一些实施例的简要介绍。它不意味着是在本文档中公开的所有发明主题的介绍或者综述。后面的具体实施方式以及在具体实施方式中参考的附图将进一步描述在发明内容中描述的实施例以及其它实施例。因此,为了理解由本文档描述的所有实施例,需要发明内容、具体实施方式和附图的全面审阅。而且,所请求保护的主题不受发明内容、具体实施方式和附图中的例示性细节所限制,而是由附加的权利要求书定义,因为所请求保护的主题可以在不脱离主题的精神的情况下以其它特定的形式体现。
附图说明
[0014]
本发明的新颖特征在附加的权利要求书中阐述。然而,出于解释的目的,本发明的若干实施例在下面的附图中阐述。
[0015]
图1例示逻辑路由器的配置视图,其代表由用户设计的逻辑网络。
[0016]
图2例示当以分布式方式实现逻辑路由器时图1的逻辑网络的管理平面视图。
[0017]
图3例示图1的逻辑路由器的物理分布式实现。
[0018]
图4概念性地例示具有两个层级的逻辑路由器的逻辑网络。
[0019]
图5例示当逻辑网络中的tlr被完全分布时图4的逻辑拓扑的管理平面视图。
[0020]
图6例示当逻辑网络中的tlr具有集中式组件时图4的逻辑拓扑的管理平面视图。
[0021]
图7概念性地例示逻辑网络拓扑的更详细配置,其包括由管理员分配的网络地址和接口。
[0022]
图8例示由管理平面进行的图7的逻辑拓扑的配置。
[0023]
图9概念性地例示用于基于用户规范配置plr的一些实施例的过程。
[0024]
图10概念性地例示用于基于用户规范配置tlr的一些实施例的过程。
[0025]
图11概念性地例示用于例示一些实施例的rib产生规则的逻辑网络配置。
[0026]
图12概念性地例示由管理平面基于图11中所示的配置产生的逻辑网络。
[0027]
图13概念性地例示用于处理作为plr的配置信息输入的向南(south-facing)静态路由的一些实施例的过程。
[0028]
图14概念性地例示针对plr配置的静态路由的集合和用于tlr的集合的配置,以及由管理平面基于该配置数据对于plr的dr和三个sr产生的输出。
[0029]
图15概念性地例示用于处理作为plr的配置信息输入的向北(north-facing)路由的一些实施例的过程。
[0030]
图16概念性地例示当tlr附接到plr时对于plr路由构造产生rib的一些实施例的过程。
[0031]
图17概念性地例示当新的接口添加到plr时对于plr路由构造的rib产生路由的一些实施例的过程。
[0032]
图18概念性地例示实现本发明的一些实施例的电子系统。
具体实施方式
[0033]
一些实施例提供用于在网络中(例如,在数据中心中)实现逻辑路由器的方法。在一些实施例中,该方法由集中管理网络的管理平面执行(例如,在网络控制器中实现)。在一些实施例中,该方法接收逻辑路由器的定义(例如,通过应用编程接口(api)),并且针对逻辑路由器定义多个路由组件。这些路由组件中的每一个被单独地分配路由的集合和逻辑接口的集合。该方法还可以接收用于逻辑路由器的路由的规范以及逻辑路由器到其它逻辑路由器的连接。一些实施例自动地识别接收到的路由应当被推送到哪些路由组件的路由表,以及如何基于与其它逻辑路由器的连接传播路由。
[0034]
在一些实施例中,针对逻辑路由器定义的若干路由组件包括一个分布式路由组件(本文中称为分布式路由器,或者dr)和若干集中式路由组件(本文中称为服务路由器,或者sr)。另外,一些实施例的管理平面定义用于处理逻辑路由器内部的组件之间的通信的逻辑交换机(称为中转逻辑交换机)。dr和中转逻辑交换机通过数据中心内的大量机器以分布式方式实现,而sr各自在单个机器上实现。一些实施例在各种机器上的受管理转发元件(mfe)的数据路径中实现dr和中转逻辑交换机,而sr在它们的单个机器上的vm(或者其它数据计算节点)中实现。其它实施例还在集中式组件的所分配的机器的数据路径中实现它们。
[0035]
在一些实施例中,sr可以以活动-活动或者活动-备用模式配置。在活动-活动模式中,所有sr同时充分起作用,并且业务可以使用等价多路径(ecmp)转发原则(跨各种sr平衡业务)通过sr从逻辑网络进入或者外出,只要集中式组件到外部网络的连接性跨组件是相同的。在该模式中,单独的sr中的每一个具有它自己的网络层(例如,ip)地址和数据链路层(例如,mac)地址用于与外部网络通信。另外,单独的sr中的每一个具有它自己的网络层和数据链路层地址用于连接到中转逻辑交换机,以便将分组发送到分布式路由组件以及从分布式路由组件接收分组。
[0036]
在一些实施例中,逻辑路由器是两层级逻辑网络结构的一部分。一些实施例的两层级结构包括用于将逻辑网络连接到数据中心外部的网络的单个逻辑路由器(称为提供商逻辑路由器(plr)并且由例如数据中心的所有者管理),以及连接到单个逻辑路由器并且不单独地与外部网络通信的多个逻辑路由器(称为租户逻辑路由器(tlr)并且由例如数据中心的不同租户管理)。一些实施例只要可能就以活动-活动模式实现plr的sr,并且仅当针对逻辑路由器配置有状态的服务(例如,nat、防火墙、负载平衡器等)时才使用活动-备用模式。本文中的讨论主要描述用于plr的活动-活动模式。
[0037]
对于plr,一些实施例使得能够与外部网络进行路由交换。plr的sr中的每一个运行动态路由协议过程以通告逻辑网络的前缀并且接收朝向外部网络的路由。通过集中位于数据中心中和实现逻辑网络的机器上两者的网络控制器的网络控制系统,这些路由被传播到其它sr和dr。一些实施例对于直接从外部网络学习的路由以及从自外部网络学习路由的不同的对等sr学习的路由,在集中式组件的路由信息库(rib)中使用不同的管理度量。因此,相比涉及通过逻辑路由器的对等sr重定向的路由,sr将更喜欢它直接学习的路由。
[0038]
当逻辑路由器是tlr时,一些实施例不使用sr或者当针对逻辑路由器配置有状态的服务时以活动-备用模式使用两个sr。这两个sr中的每一个具有相同的网络层地址,并且仅活动的组件响应arp请求。为了连接到plr,一些实施例还对两个组件中的每一个分配相同的网络层地址(虽然与用于连接到它自己的dr的地址不同)。另外,管理平面定义plr的dr
与tlr的sr之间的中转逻辑交换机。
[0039]
一些实施例的管理平面另外针对逻辑路由器构造中的每一个(例如,针对dr以及针对每个sr)配置路由表。这些路由表中的路由可以包括基于连接的逻辑交换机的路由、用户输入的静态路由、以及基于其它逻辑路由器的连接的动态路由。例如,通过管理员直接连接到逻辑路由器的任何逻辑交换机将导致dr的路由表中的连接路由,以及用于各种sr的、下一跳为dr的接口的路由。
[0040]
当用户添加静态路由时,一些实施例提供用于将静态路由添加到各种逻辑路由器组件的各种规则。例如,一些实施例将面向下的静态路由(下一跳在逻辑网络中)直接添加到dr(其与其它逻辑转发元件(诸如指定的下一跳)接口),同时将再次指向通过sr可到达的dr的接口的路由添加到sr中的每一个。当所配置的静态路由面向上(下一跳在外部网络中和/或指定与sr中的一个相关的特定输出接口)时,一些实施例(i)根据指定的接口和/或下一跳地址,将路由添加到sr中的一个或多个,以及(ii)通过指定集中式组件中的每一个的接口为下一跳将路由添加到dr。然而,当所配置的静态路由是默认路由时,一些实施例不添加路由到dr,因为管理平面在创建逻辑路由器时已经自动地创建指向sr中的每一个的用于dr路由表的等价默认路由。
[0041]
而且,当tlr连接到plr时,一些实施例识别连接到tlr的任何逻辑交换机子网以及哪些应当通告(经由动态路由协议)到外部网络。在该情况下,不是在两个逻辑路由器之间运行动态路由协议,管理平面(其知道两个逻辑路由器配置)而是自动地执行路由交换,同时处理plr实际上对于它的单独路由组件中的每一个具有单独路由表的事实。因此,管理平面将对于这些逻辑网络的路由添加到(i)dr,其中下一跳为连接到plr的tlr的接口,以及(ii)sr中的每一个,其中下一跳为从sr可到达的dr的接口。
[0042]
上面介绍了两层级逻辑路由器配置的概念以及一些实施例的逻辑路由器配置和实现的某些方面。在下文中,章节i关注一些实施例的逻辑路由器的总体高层次设计,而章节ii描述各种逻辑路由器组件的配置。章节iii然后描述用于这些逻辑路由器组件的路由表配置。最后,章节iv描述实现本发明的一些实施例的电子系统。
[0043]
i.逻辑路由器和物理实现
[0044]
下面的讨论描述一些实施例的逻辑路由器的设计以及一些实施例的网络控制器对这样的逻辑路由器的实现。在一些实施例中,逻辑路由器以三种不同的形式存在。这些形式中的第一种是api视图或者配置视图,这是逻辑路由器如何由用户(例如,数据中心提供商或者租户)定义。第二视图是控制平面或者管理平面视图,这是网络控制器如何内部地定义逻辑路由器。最后,第三视图是逻辑路由器的物理实现或者实施,这是逻辑路由器如何在数据中心中实际地实现。即,逻辑路由器是描述用户为逻辑路由器配置的功能(例如,路由、nat等)的集合的抽象。逻辑路由器然后基于由网络控制器的集合分布到那些机器的指令由数据中心中的各种机器实现,其中指令由网络控制器根据用户提供的配置产生。
[0045]
在控制平面视图中,一些实施例的逻辑路由器可以包括单个dr以及一个或多个sr中的一者或者两者。在一些实施例中,dr跨越直接耦合到vm或者其它数据计算节点的受管理转发元件(mfe),vm或者其它数据计算节点逻辑地直接或者间接连接到逻辑路由器。一些实施例的dr还跨越逻辑路由器绑定到的网关。在一些实施例中,dr负责逻辑地连接到逻辑路由器的其它逻辑路由器和/或逻辑交换机之间的第一跳分布式路由。一些实施例的sr负
责递送没有以分布式方式实现的服务(例如,一些有状态的服务)。
[0046]
在一些实施例中,逻辑路由器的物理实现总是具有dr(即,用于第一跳路由)。如果(i)逻辑路由器是plr,并且因此连接到外部物理网络,或者(ii)逻辑路由器配置有不具有分布式实现的服务(例如,在一些实施例中的nat、负载平衡、dhcp),那么逻辑路由器将具有sr。即使plr上没有配置有状态的服务,一些实施例在实现中也使用sr以集中化到外部网络的连接。
[0047]
a.单层级逻辑路由器
[0048]
图1-3例示分布式逻辑路由器实现的三个不同视图。图1具体地例示配置视图,该配置视图代表由用户设计的逻辑网络100。如所示的,逻辑路由器115是逻辑网络100的一部分,逻辑网络100包括逻辑路由器115以及两个逻辑交换机105和110。两个逻辑交换机105和110各自具有连接到逻辑端口的vm。虽然在这些图中示为vm,但是应当理解,在一些实施例中,其它类型的数据计算节点(例如,命名空间等)可以连接到逻辑交换机。逻辑路由器115还包括连接到外部物理网络120的两个端口。
[0049]
图2例示逻辑网络100的管理平面视图200。逻辑交换机105和110在该视图中与配置视图相同,但是网络控制器已经创建逻辑路由器115的两个服务路由器205和210,以及分布式路由器215和中转逻辑交换机220。dr 215包括针对逻辑交换机105和110中的每一个的南向(southbound)接口,以及到中转逻辑交换机220的单个北向(northbound)接口(并且通过这个到sr)。sr 205和210各自包括到中转逻辑交换机220的单个南向接口(其用于与dr 215通信,以及在某些情况下彼此通信)。每个sr 205和210还对应于逻辑路由器的上行链路端口(其连接到外部网络),因此sr中的每一个具有单个这样的接口。
[0050]
各种路由器构造205-215的北向和南向接口的详细配置以及它们与中转逻辑交换机220的连接将在下面更详细地描述。在一些实施例中,管理平面对路由器构造205-215中的每一个产生单独的路由信息库(rib)。即,除了具有在管理/控制平面中创建的单独对象,路由器构造205中的每一个还被看作具有单独路由的单独路由器。
[0051]
最后,图3例示逻辑路由器100的物理实现。如所示的,耦合到逻辑网络100中的逻辑交换机105和110中的一个的vm中的每一个驻留在主机机器305上。在一些实施例中,在这些主机机器上操作的mfe 310是在主机机器上的超级管理器或者其它虚拟化软件内操作的虚拟交换机(例如,open vswitch(ovs)、esx)。对于由逻辑网络100的vm发送的分组,这些mfe执行第一跳交换和路由以实现逻辑交换机105和110以及逻辑路由器115。mfe 310(或者它们的子集)也可以实现其它逻辑网络的逻辑交换机(和分布式逻辑路由器),如果其它逻辑网络也具有驻留在主机机器305上的vm的话。
[0052]
两个sr 205和210各自在不同的网关机器315和320上操作。在一些实施例中,网关机器315和320是与机器305相类似的主机机器,但是是托管sr而不是用户vm。在一些实施例中,网关机器315和320各自包括mfe以及sr,以便使mfe为dr 215处理逻辑交换以及路由。例如,从外部网络120发送的分组可以通过网关机器中的一个上的sr路由表路由,并且接着随后通过相同网关上的mfe交换和路由(根据dr路由表)。
[0053]
在不同实施例中,sr可以在命名空间、虚拟机中实现,或者实现为vrf。在一些实施例中,根据逻辑路由器上是否配置任何有状态的服务(例如,防火墙),sr可以以活动-活动或者活动-备用模式操作。当配置了有状态的服务时,一些实施例仅需要单个活动的sr。在
一些实施例中,活动和备用服务路由器具有相同的配置,但是mfe被配置为经由隧道发送分组到活动的sr(或者到具有活动的sr的网关机器上的mfe)。只有当隧道停用时,mfe将向备用网关发送分组。
[0054]
b.多层级拓扑
[0055]
前面的示例仅例示单个层级的逻辑路由器。对于具有多个层级的逻辑路由器的逻辑网络,一些实施例可以在每一层次包括dr和sr两者,或者在上层(plr层级)包括dr和sr而在下层(tlr层级)仅包括dr。图4概念性地例示一些实施例的多层级逻辑网络400,图5和6例示逻辑网络的两个不同管理平面视图。
[0056]
图4概念性地例示具有两个层级的逻辑路由器的逻辑网络400。如所示的,逻辑网络400在层3层次包括提供商逻辑路由器405和若干租户逻辑路由器410-420。第一租户逻辑路由器410附接有两个逻辑交换机425和430,其中一个或多个数据计算节点耦合到逻辑交换机中的每一个。为了简化,仅示出附接到第一tlr 410的逻辑交换机,但是其它tlr 415-420通常将附接有逻辑交换机(数据计算节点耦合到这些逻辑交换机)。
[0057]
在一些实施例中,任何数量的tlr可以附接到plr,诸如plr 405。一些数据中心可能仅具有单个plr,在数据中心中实现的所有tlr附接到该单个plr,而其它数据中心可能具有大量的plr。例如,大的数据中心可能想要对于不同的租户使用不用的plr策略,或者可能具有太多不同的租户以至于不能将所有tlr附接到单个plr(因为,例如,plr的路由表可能变得太大)。plr的路由表的一部分包括它的tlr的所有逻辑交换机域的路由,所以将大量的tlr附接到一个plr对于每个tlr仅基于附接到tlr的子网创建若干路由。如图中所示的,plr 405提供到外部物理网络435的连接;一些实施例仅允许plr提供这样的连接,使得数据中心提供商可以管理该连接。单独的tlr 410-420中的每一个虽然是逻辑网络400的一部分但是被独立地配置(尽管单个租户可以具有多个tlr,如果他们如此选择的话)。
[0058]
图5和6根据tlr 405是否包括集中式组件例示逻辑网络400的不同可能的管理平面视图。在这些示例中,tlr 405的路由方面总是通过使用dr被分布。然而,如果tlr 405的配置包括有状态的服务的提供,那么tlr的管理平面视图(并且因此物理实现)将包括用于这些有状态的服务的活动和备用sr。
[0059]
因此,图5例示当tlr 405被完全分布时,逻辑拓扑400的管理平面视图500。为了简化,仅示出第一tlr 410的细节;其它tlr将各自具有它们自己的dr,以及在某些情况下具有sr。如图2中那样,plr 405包括由中转逻辑交换机525连接在一起的dr 505和三个sr 510-520。除了plr 405实现内的中转逻辑交换机525之外,管理平面还定义tlr中的每一个与plr的dr 505之间的单独的中转逻辑交换机530-540。在tlr 410被完全分布的情况下(图5),中转逻辑交换机530连接到实现tlr 410的配置的dr 545。因此,如在2015年1月30日提交的美国临时申请62/110,061中更加详细地解释的,由附接到逻辑交换机425的数据计算节点发送到外部网络中的目的地的分组将通过逻辑交换机425、tlr 410的dr 545、中转逻辑交换机530、plr 405的dr 505、中转逻辑交换机525以及sr 510-520中的一个的管道处理。在一些实施例中,所有在一些实施例中,中转逻辑交换机525以及530-540的存在和定义对于通过api配置网络的用户(例如,管理员)隐藏,可能的例外是故障排除目的。
[0060]
图6例示当tlr 405具有集中式组件时(例如,因为对于tlr定义了不能被分布的有状态的服务)逻辑拓扑400的管理平面视图600。在一些实施例中,诸如防火墙、nat、负载平
衡等的有状态的服务仅以集中式方式提供。然而,其它实施例允许这样的服务的一些或者全部被分布。如前面的图一样,为了简化仅示出第一tlr 410的细节;其它tlr可以具有相同定义的组件(dr、中转ls和两个sr)或者仅具有dr(如图5的示例中那样)。plr 405以与前面的图中相同的方式实现,其中dr 505和三个sr 510由中转逻辑交换机525彼此连接。另外,如前面的示例中那样,管理平面在plr与tlr中的每一个之间放置中转逻辑交换机530-540。
[0061]
tlr 410的部分集中式实现包括dr 605以及两个sr 610和615,逻辑交换机425和430附接到dr 605。如在plr实现中那样,dr和两个sr各自具有到中转逻辑交换机620的接口。在一些实施例中,该中转逻辑交换机用作与交换机525相同的目的。对于tlr,一些实施例以活动-备用方式实现sr,其中sr中的一个被指派为活动并且另一个被指派为备用。因此,只要活动的sr可操作,由附接到逻辑交换机425和430中的一个的数据计算节点发送的分组就将被发送到活动的sr,而不是备用的sr。在一些实施例中,中转逻辑交换机530仅包括单个端口以连接到tlr 410,并且该端口连接到第一sr 610,除非该sr发生故障,并且连接移动到第二sr 615。这样,该连接在图中被示为虚线。
[0062]
上面的图例示一些实施例的逻辑路由器的管理平面视图。在一些实施例中,管理员或者其它用户通过api提供逻辑拓扑(以及其它配置信息)。该数据提供到管理平面,管理平面(例如,通过定义dr、sr、中转逻辑交换机等)定义逻辑网络拓扑的实现。另外,在一些实施例中,用户将每个逻辑路由器(例如,每个plr或者tlr)与物理机器的集合(例如,数据中心中的预定义的一组机器)相关联以进行部署。对于纯粹分布式路由器,诸如图5中实现的tlr 405,该物理机器的集合不重要,因为dr跨连同连接到逻辑网络的数据计算节点驻留在主机上的受管理转发元件被实现。然而,如果逻辑路由器实现包括sr,那么这些sr将各自部署在特定的物理机器上。在一些实施例中,该组物理机器是出于托管sr(与附接到逻辑交换机的用户vm或者其它数据计算节点相对)的目的而指派的机器的集合。在其它实施例中,sr与用户数据计算节点并排地(alongside)部署在机器上。
[0063]
在一些实施例中,逻辑路由器的用户定义包括特定数量的上行链路。如本文中所描述的,上行链路是逻辑拓扑中逻辑路由器的北向接口。对于tlr,它的上行链路连接到plr(所有上行链路通常连接到相同的plr)。对于plr,它的上行链路连接到外部路由器。一些实施例要求plr的所有上行链路具有相同的外部路由器连接性,而其它实施例允许上行链路连接到外部路由器的不同集合。一旦用户选择一组机器用于逻辑路由器,如果对于逻辑路由器需要sr,那么管理平面将逻辑路由器的上行链路中的每一个分配给所选择的一组机器中的物理机器。管理平面然后在上行链路被分配到的机器中的每一个上创建sr。一些实施例允许多个上行链路分配给相同的机器,在该情况下,机器上的sr具有多个北向接口。
[0064]
如上所述,在一些实施例中,sr可以实现为虚拟机或者其它容器,或者实现为vrf上下文(例如,在基于dpdk的sr实现的情况下)。在一些实施例中,对于sr的实现的选择可以基于对于逻辑路由器所选择的服务以及哪种类型的sr最佳地提供那些服务。
[0065]
另外,一些实施例的管理平面创建中转逻辑交换机。对于每个中转逻辑交换机,管理平面将唯一的vni分配给逻辑交换机,在连接到中转逻辑交换机的sr和dr中的每一个上创建端口,并且对于连接到逻辑交换机的任何sr和dr分派ip地址。一些实施例要求分配给每个中转逻辑交换机的子网在具有大量的tlr的逻辑l3网络拓扑(例如,网络拓扑400)内是唯一的,tlr中的每一个可以具有它自己的中转逻辑交换机。即,在图6中,plr实现内的中转
逻辑交换机525、plr与tlr之间的中转逻辑交换机530-540、以及中转逻辑交换机620(以及其它tlr中的任何一个的实现内的中转逻辑交换机)各自需要唯一的子网。而且,在一些实施例中,sr可能需要发起到逻辑空间中的vm(例如,ha代理)的连接。为了确保返回业务工作,一些实施例避免使用链路本地ip地址。
[0066]
一些实施例对多个层级配置中逻辑路由器的连接施加各种限制。例如,虽然一些实施例允许任何数量的层级的逻辑路由器(例如,连接到外部网络的plr层级,连同大量层级的tlr),但是其它实施例仅允许两层级拓扑(连接到plr的一个层级的tlr)。另外,一些实施例允许每个tlr连接到仅一个plr,并且由用户创建的每个逻辑交换机(即,非中转逻辑交换机)仅允许连接到一个plr或者一个tlr。一些实施例还添加逻辑路由器的南向端口必须各自处于不同子网中的限制。因此,两个逻辑交换机如果连接到相同逻辑路由器则可能不具有相同的子网。最后,一些实施例要求plr的不同上行链路必须存在于不同的网关机器上。应当理解,一些实施例不包括所有的这些要求,或者可能包括要求的各种不同组合。
[0067]
ii.sr和dr配置
[0068]
当用户配置逻辑路由器(例如,通过配置它的接口和提供路由)时,该配置被管理平面使用以配置逻辑路由器的sr和dr。例如,图1的逻辑路由器115具有四个接口(两个到逻辑交换机,以及两个上行链路)。然而,图2中它的分布式管理平面实现包括具有三个接口的dr和每个具有两个接口的sr(总共七个接口)。作为逻辑路由器配置的一部分分配给四个接口的ip和mac地址以及其它配置细节用于产生用于逻辑路由器的各种组件的配置。
[0069]
另外,作为配置的一部分,一些实施例对逻辑路由器组件中的每一个产生路由信息库(rib)。即,尽管管理员仅定义单个逻辑路由器,但是一些实施例的管理平面和/或控制平面对dr以及对sr中的每一个产生单独的rib。对于plr的sr,在一些实施例中,管理平面初始产生rib,但是sr的物理实现还运行动态路由协议过程(例如,bgp、ospf等)以本地补充rib。
[0070]
一些实施例在逻辑路由器的rib中以及因此在它的组件路由器的rib中包括若干种类型的路由。在一些实施例中,所有路由包括用于确定优先级的管理距离值,其中较大的值指示较低优先级类型的路由(即,如果对于相同的前缀存在两个路由,那么使用具有较低距离值的那个)。如果对于相同前缀的多个路由以相同距离值处于rib中,那么到这些前缀的业务遍布不同的路由(例如,使用ecmp原则来均匀地平衡业务)。
[0071]
连接(0):配置在逻辑路由器的端口上的前缀
[0072]
静态(1):由管理员/用户配置
[0073]
管理平面内部(10):默认路由-当tlr连接到plr时,指向plr的默认路由添加到tlr的rib;当逻辑交换机连接到tlr时,用户允许子网被重新分布,并且子网没有被nat,指向子网的tlr的默认路由添加到plr的rib
[0074]
ebgp(20):接下来的四种类型是通过动态路由协议学习的路由
[0075]
ospf内部(30)
[0076]
ospf外部(110)
[0077]
ibgp(200)。
[0078]
应当理解,在一些实施例中,不是所有逻辑路由器都将包括bgp和ospf路由,并且一些逻辑路由器可以两者都不包括。例如,不包括到外部网络的连接的逻辑路由器可以不
使用任何路由协议,并且一些逻辑路由器可以仅运行一种类型的路由共享协议,而不是允许bgp和ospf两者。
[0079]
另外,在一些实施例中,plr的sr(其使用动态路由协议)将从集中式控制器接收的rib(包含静态、连接和管理平面内部路由)与(经由动态路由协议)从物理路由器学习的路由融合。sr基于这些动态路由的合并本地计算它的fib以便加快路由收敛,而不是将学习的路由发送回到集中式控制器以用于重新计算。对于dr,一些实施例的集中式控制器向下推送整个rib,其中本地控制平面计算fib。
[0080]
a.dr配置
[0081]
在一些实施例中,dr总是位于逻辑路由器实现的南向侧(即,面向逻辑网络的数据计算节点,而不是面向外部物理网络)。除非逻辑路由器不具有集中式组件,否则逻辑路由器的上行链路将不对dr进行配置,dr的北向接口代替地耦合到作为逻辑路由器的一部分的中转逻辑交换机。
[0082]
图7概念性地例示逻辑网络拓扑700的更详细的配置,其包括由管理员分配的网络地址和接口。如所示的,逻辑交换机705和710各自被分配它们自己的子网1.1.1.0/24和1.1.2.0/24,并且附接到逻辑交换机705的所有数据计算节点将具有相应子网中的ip地址。逻辑路由器715具有到第一逻辑交换机705的接口l1,其具有ip地址1.1.1.253,该ip地址是子网1.1.1.0/24中数据计算节点的默认网关。逻辑路由器715还具有到第二逻辑交换机710的第二接口l2,其具有ip地址1.1.2.253,该ip地址是子网1.1.2.0/24中数据计算节点的默认网关。
[0083]
逻辑路由器715的北向侧具有两个上行链路u1和u2。第一上行链路u1具有ip地址192.168.1.252并且连接到具有ip地址192.168.1.252的第一物理路由器720。第二上行链路u2具有ip地址192.168.2.253并且连接到具有ip地址192.168.2.252的第二物理路由器725。物理路由器720和725实际上不是逻辑网络的一部分,而是将逻辑网络连接到外部网络。虽然在所例示的情况下,上行链路中的每一个连接到单个不同的物理路由器,但是在某些情况下,上行链路中的每一个将连接到若干物理路由器的相同集合。即,u1和u2两者可能都连接到物理路由器720和725两者。一些实施例要求上行链路连接到的外部路由器中的每一个提供相同的连接性,尽管在所例示的示例中不是这样。代替地,第一物理路由器720连接到子网10.0.0.0/8,而第二路由器725连接到子网10.0.0.0/8和11.0.0.0/8两者。
[0084]
对于具有分布式组件的逻辑路由器,一些实施例如下配置dr。南向接口以与逻辑路由器的南向接口相同的方式配置。这些接口是连接到逻辑拓扑中的逻辑交换机,或者连接到下层逻辑路由器的那些接口(例如,plr的南向接口可以连接到tlr)。一些实施例的dr被分派单个北向接口,该单个北向接口被分配ip地址和mac地址。假设逻辑路由器具有一个或多个sr,则dr的北向接口连接到中转逻辑交换机。
[0085]
基于对dr的各种南向和北向接口配置的子网,dr的rib被分配连接路由。这些是被配置用于(i)配置在逻辑路由器的dr与sr组件之间的中转逻辑交换机以及(ii)它的南向接口上的任何逻辑交换机的子网。南向接口上的这些逻辑交换机可以是数据计算节点连接到的用户定义的逻辑域,或者位于plr的dr与连接到plr的任何tlr之间的中转逻辑交换机。
[0086]
另外,从逻辑路由器的上行链路外出的任何静态路由包括在dr的rib中;然而,这些路由被修改使得下一跳ip地址设置为上行链路的sr的地址。例如,静态路由“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不运行动态路由协议,所以代替地使用下一跳ip地址指向活动的sr的接口的默认路由。
[0087]
图8例示由管理平面进行的逻辑拓扑700的配置800。如所示的,逻辑交换机705和710如由用户配置所指示的那样被配置。如前面的示例中那样,逻辑路由器715包括dr 805、两个sr 810和815以及中转逻辑交换机820。dr被分配逻辑路由器705的两个南向接口,该两个南向接口连接到逻辑交换机705和710。中转逻辑交换机被分配子网192.168.100.0/24,这需要满足它在逻辑地连接(直接地或者间接地)到逻辑路由器705的逻辑交换机之间是唯一的要求。三个管理平面路由器构造805-815中的每一个也包括连接到中转逻辑交换机的接口,并且具有中转逻辑交换机的子网中的ip地址。北向接口u1和u2被分配给两个sr 810和815,下面描述它们的配置。
[0088]
使用上面描述的用于产生rib的一些实施例的规则,dr 805的rib包括下面的路由:
[0089]
1.1.1.0/24输出到l1
[0090]
1.1.2.0/24输出到l2
[0091]
192.168.100.0/24输出到drp1
[0092]
192.168.1.0/24经由ip1
[0093]
192.168.2.0/24经由ip2
[0094]
10.0.0.0/8经由ip1
[0095]
10.0.0.0/8经由ip2
[0096]
11.0.0.0/8经由ip2
[0097]
0.0.0.0/0经由ip1
[0098]
0.0.0.0/0经由ip2
[0099]
上面的路由包括三个连接路由,对于连接到dr的逻辑交换机域(1.1.1.0/24、1.1.2.0/24和192.168.100.0/24)。另外,第一上行链路所位于的子网(192.168.1.0/24)经由第一sr 810的南向接口(ip1)到达,而第二上行链路所位于的子网(192.168.2.0/24)经由第二sr 815的南向接口(ip2)到达。另外,用户已经对于逻辑路由器715添加了三个静态路由,管理平面自动地对于dr 805修改它们。具体地,路由包括网络10.0.0.0/8经由任一sr的南向接口,以及网络11.0.0.0/8经由sr2的南向接口。最后,指向这些相同的南向接口的默认路由被包括。由管理平面对于与中转逻辑交换机接口的逻辑路由器构造的端口创建的ip地址ip1、ip2和ip3都在子网192.168.100.0/24中。
[0100]
b.sr配置
[0101]
如逻辑路由器的dr一样,管理平面也利用单独的rib和接口配置逻辑路由器的每一个sr。如上所述,在一些实施例中,plr和tlr两者的sr可以递送服务(即,超越简单地路由
的功能,诸如nat、防火墙、负载平衡等),并且plr的sr还提供逻辑网络与外部物理网络之间的连接。在一些实施例中,sr的实现被设计为满足若干目标。第一,实现确保服务可以向外扩展-即,分配给逻辑路由器的服务可以由逻辑路由器的若干sr的任何一个递送。第二,一些实施例以服务策略可以取决于路由决策的这样的方式(例如,基于接口的nat)配置sr。第三,逻辑路由器的sr具有处理它们之间故障(例如,sr在其上操作的物理机器的故障,到那个物理机器的隧道的故障等)的能力而不需要涉及集中式控制平面或者管理平面(虽然一些实施例允许sr以减少的容量或者以次优方式操作)。最后,sr理想地避免它们当中不必要的重定向。即,sr应当将分组转发到外部物理网络,如果它具有本地这样做的能力的话,在必要时仅将分组转发到不同的sr。当然,sr之间的转发应当避免分组环路。
[0102]
如图8中所示,每个sr具有连接到驻留在sr与dr之间的中转逻辑交换机820的一个南向接口。另外,在一些实施例中,每个sr具有与逻辑路由器相同数量的北向接口。即,即使仅一个上行链路可以分配到sr在其上操作的物理机器,所有逻辑路由器接口也定义在sr上。然而,这些接口中的一些是本地接口,而它们的一些被称为虚接口。
[0103]
在一些实施例中,本地北向接口是分组可以通过它直接从sr外出(例如,直接到物理网络)的那些接口。基于分配给sr的上行链路(或者上行链路中的一个)配置的接口是本地接口。另一方面,基于分配给不同sr的逻辑路由器的其它上行链路中的一个而配置的接口称为虚接口。对sr提供虚接口的配置允许第一跳mfe将针对上行链路中的任何一个的分组发送到sr中的任何一个,其中那个sr能够处理分组,即使分组不是去往它的本地接口。一些实施例在sr中的一个处对于虚接口处理分组之后,将分组转发到那个接口为本地的适当sr,以便使另一个sr将分组向外转发到外部物理网络。虚接口的使用还允许管理网络的集中式控制器(或者控制器的集合)将取决于路由决策的服务策略推送到所有sr,由此允许服务由sr中的任何一个递送。
[0104]
如下面在章节iv中讨论的,在一些实施例中,sr(例如,使用诸如bgp或者ospf的路由通告协议)与物理网络交换路由信息。该路由交换的一个目标是不管哪个sr朝向物理网络路由分组,路由决策应当总是指向sr的本地接口或者对应于不同sr上的逻辑路由器的上行链路的虚接口。因此,即使当上行链路没有分配给sr,与逻辑路由器上行链路相关联的策略也可以被那个sr应用,从而使得能够向外扩展有状态的服务。在一些实施例中,从对等sr接收的路由将具有比直接从物理下一跳路由器学习的路由大的距离值,由此确保只有当sr不能将分组直接发送到物理网络路由器时,它才将向它的对等sr发送分组。
[0105]
对于具有一个或多个集中式组件的逻辑路由器,一些实施例如下配置sr。对于北向接口,sr具有与逻辑路由器相同数量的这样的接口,并且这些接口各自继承相应逻辑路由器接口的ip和mac地址。这些接口的子集被标记为本地接口(上行链路分配给sr的那些接口),而其余的接口被标记为虚接口。在一些实施例中,对于逻辑路由器定义的服务策略同等地推送到所有sr,因为从网络和接口的角度,这些以相同的方式配置。对于特定逻辑路由器端口/上行链路的动态路由配置传送到那个特定上行链路被分配到的sr的本地接口。
[0106]
如所提到的,每个sr被分配连接到中转逻辑交换机的单个南向接口(也是本地接口),其中每个sr的南向接口连接到相同的中转逻辑交换机。这些南向接口中的每一个的ip地址处于与分配给dr的北向接口(中转逻辑交换机的那个)相同的子网中。一些实施例根据sr处于活动-活动还是活动-备用模式来在sr之间区分ip地址的分配。对于活动-活动模式
(即,当所有sr被看作同等用于路由目的),不同的ip和mac地址分配给所有sr的南向接口。另一方面,在活动-备用模式中,相同的ip用于两个sr的南向接口两者,而接口中的每一个被分配不同的mac地址。
[0107]
如上面关于dr的子章节中指示的,用户可以对于逻辑路由器配置静态路由。从上行链路外出的逻辑路由器的静态路由(或者连接路由)被复制到sr的rib。如果路由通过其外出的上行链路分配给sr,那么这样的路由的距离度量未修改;然而,如果上行链路是sr上的虚接口,那么一些实施例对该度量添加一个值,使得当网络可以到达时,sr将优选从它的本地接口外出的路由,而不通过虚接口将分组重定向到不同的sr。另外,(顶层逻辑路由器的)sr可以学习动态路由并且将这些放置在它们的rib中(虽然一些实施例本地执行这个,而不涉及集中式控制器)。在一些实施例中,从对等sr学习的动态路由被安装而没有距离度量的这个调整,因为在默认情况下,从ibgp(sr到sr对等)或者ospf学习的路由的度量大于从ebgp学习的路由的度量。
[0108]
对于逻辑路由器的每个南向接口,一些实施例将相应网络的路由添加到每个sr的rib。该路由指向北向dr接口作为它的下一跳ip地址。而且,对于逻辑路由器配置的从南向接口外出的任何其它路由被复制到sr,其中相同的北向dr接口作为下一跳ip地址。
[0109]
返回到图8的示例,因为逻辑路由器715具有两个上行链路,所以管理平面定义两个服务路由器810和815。第一服务路由器810具有针对u1的本地接口和针对u2的虚接口,其称为u2’。类似地,第二服务路由器815具有针对u2的本地接口和针对第一上行链路u1的虚接口u1’。这些虚接口的功能在上面被描述为这些接口用于将分组重定向到其它sr。这些sr中的每一个被分配具有不同ip和mac地址的南向接口(当sr处于活动-活动配置时)。ip地址ip1(用于第一sr 810)和ip2(用于第二sr 815)处于子网192.1.100.0/24中,如ip3(dr 805的北向接口)那样。
[0110]
使用一些实施例的规则,并且假设对于sr启用路由协议(例如,bgp),则第一sr 810的rib将包括下面的路由:
[0111]
10.0.0.0/8输出到u1经由192.168.1.252,度量20(经由ebgp)
[0112]
10.0.0.0/8输出到u2’经由192.168.2.252,度量200(经由ibgp)
[0113]
11.0.0.0/8输出到u2’经由192.168.2.252,度量200(经由ibgp)
[0114]
192.168.1.0/24输出到u1,度量0(连接)
[0115]
192.168.100.0/24输出到srp1,度量0(连接)
[0116]
1.1.1.0/24经由ip3,度量10(管理平面内部)
[0117]
1.1.2.0/24经由ip3,度量10(管理平面内部)
[0118]
类似地,第二sr 815的rib将包括下面的路由:
[0119]
10.0.0.0/8输出到u2经由192.168.2.252,度量20(经由ebgp)
[0120]
10.0.0.0/8输出到u1’经由192.168.1.252,度量200(经由ibgp)
[0121]
11.0.0.0/8输出到u2经由192.168.2.252,度量20(经由ebgp)
[0122]
192.168.2.0/24输出到u2,度量0(连接)
[0123]
192.168.100.0/24输出到srp2,度量0(连接)
[0124]
1.1.1.0/24经由ip3,度量10(管理平面内部)
[0125]
1.1.2.0/24经由ip3,度量10(管理平面内部)
[0126]
c.管理平面过程
[0127]
图9概念性地例示用于基于用户规范配置plr的一些实施例的过程900。在一些实施例中,过程900由管理平面(例如,管理数据中心的网络的集中式控制器处的模块的集合)执行。管理平面执行该配置过程,然后使用控制器的(或者不同网络控制器的)集中式控制平面将数据分布到实现所配置的逻辑路由器的各种主机机器上的各种本地控制平面。
[0128]
如所示的,过程900通过接收(在905处)plr的规范开始。plr的规范基于定义plr的管理员输入(例如,由数据中心的所有者雇佣的管理员)。在一些实施例中,该规范包括plr应当提供的任何服务的定义、plr将以活动-活动模式还是活动-备用模式配置(虽然一些实施例自动地使用活动-活动模式,除非配置了有状态的服务)、对于plr配置多少上行链路、上行链路的ip和mac地址、上行链路的l2和l3连接性、plr的任何南向接口(如果plr预期用于两层级拓扑则一个接口,如果用户逻辑交换机将在单层级拓扑中直接连接则任何数量的接口)的子网、用于plr的rib的任何静态路由、以及其它数据。应当理解,不同的实施例可以在plr的配置数据中包括所列出的数据或者其它数据的不同组合。
[0129]
过程900然后使用该配置数据定义(在910处)dr。这假设plr将不是完全集中式的,在完全集中式的情况下,管理平面不产生dr。对于dr的南向接口,管理平面使用plr的南向接口配置。即,dr的ip地址和mac地址是针对逻辑路由器指定的那些。
[0130]
另外,该过程将对于plr指定的每个上行链路分配(在915处)给网关机器。如上所述,一些实施例允许(或者要求)用户针对逻辑路由器的sr的位置指定物理网关机器的特定集合。在一些实施例中,该网关机器的集合可能一起处于服务器的特定机架或者一组机架内,或者以其它方式相关,利用隧道连接集合中的所有机器。管理平面然后将上行链路中的每一个分配给所选择的集合中的网关机器中的一个。一些实施例允许多个上行链路被分配给相同的网关机器(只要逻辑路由器不是仅具有以活动-备用模式配置的两个上行链路),虽然其它实施例对于plr仅允许每个网关机器单个上行链路,而不管是活动-活动还是活动-备用。
[0131]
在将上行链路分配给网关机器之后,过程900定义(在920处)所选择的网关机器中的每一个上的sr。对于每个sr,该过程使用用于分配给那个网关机器的上行链路的配置作为用于sr的北向接口的配置。该配置信息包括上行链路的ip和mac地址,以及任何上行链路特定的策略。应当理解,对于在不同的上行链路之间允许并且使用不同的策略和/或l3连接性的情况,一些实施例还在sr上配置虚接口以便如果需要的话重定向分组。
[0132]
该过程另外定义(在925处)中转逻辑交换机以连接所定义的sr和dr。在一些实施例中,管理平面将唯一的vni(逻辑交换机标识符)分配给中转逻辑交换机。另外,一些实施例要求分配给中转逻辑交换机的子网在逻辑网络拓扑之间是唯一的。这样,中转逻辑交换机必须使用与直接与plr接口的任何用户定义的逻辑交换机、以及plr与连接到plr的任何tlr之间的所有中转逻辑交换机、这些tlr内的所有中转逻辑交换机、以及连接到这些tlr的任何用户定义的逻辑交换机不同的子网。
[0133]
接下来,过程900将北向接口分配(在930处)给dr。在一些实施例中,北向接口被分配mac地址和ip地址(用于在plr的组件之间内部发送的分组)两者。在一些实施例中,ip地址处于分配给在925处定义的中转逻辑交换机的子网中。中转逻辑交换机的配置包括该mac地址与它的逻辑端口中的一个的关联。
[0134]
该过程然后确定(在935处)plr是否以活动-活动模式(或者活动-备用模式)配置。如上面所提到的,在一些实施例中,该确定由管理员作为plr的配置设置的一部分而进行。在其它实施例中,管理平面对于plr自动地以活动-活动配置定义sr,除非设立了有状态的服务(在该情况下,以活动-备用模式定义sr)。
[0135]
当以活动-备用模式配置plr时,该过程分配(在940处)两个sr(或者多于两个sr,如果存在多个备用的话)中的每一个的南向接口。在活动-备用情况下,这些南向接口全部具有相同的ip地址,该ip地址处于在操作925处定义的中转逻辑交换机的子网中。尽管两个接口接收相同的ip地址,但是所分配的mac地址不同,以便区分两者作为由dr路由的北向分组的目的地。
[0136]
该过程然后分配(在945处)sr中的一个为活动并且sr中的一个为备用。一些实施例随机地进行该确定,而其它实施例试图跨网关机器平衡活动和备用sr的分配,如在美国专利公开2015/0063364中更详细描述的。分配为活动的sr将响应对于南向接口的arp请求,并且将前缀从它的北向接口通告到外部物理网络。另一方面,备用sr将不响应arp请求(以便避免接收北向业务),并且将不通告前缀(但是将维持bgp会话以便在活动的sr发生故障的情况下接收来自外部网络的路由)。
[0137]
最后,过程900对于dr和对于sr中的每一个产生(在950处)单独的rib。单独的rib以前面子章节中以及下面在章节v中描述的方式基于配置数据而产生。该过程然后结束。在一些实施例中,管理平面还集中计算fib,而在其它实施例中,(在主机和网关机器上操作的)本地控制平面执行rib遍历以产生fib从而在分组由逻辑路由器组件的实际转发中使用。在任一情况下,rib基于从外部网络学习的动态路由在sr上更新,并且那个数据经由中央控制器传播到dr。一些实施例的网络控制器进行的fib的计算在2014年3月14日提交的美国专利申请14/214,545中更详细地描述。
[0138]
另一方面,当以活动-活动(ecmp)模式配置plr时,该过程分配(在955处)sr中的每一个的南向接口。在活动-活动情况下,这些南向接口各自被分配在操作925处定义的中转逻辑交换机的子网中的不同ip地址,以及不同的mac地址。利用不同的ip地址,sr中的每一个可以基于由主机机器中dr管道对于给定分组而选择的ip地址处理北向分组。
[0139]
接下来,该过程将等级(rank)分配(在960处)给sr。如下面详细描述的,sr在故障切换的情况下使用等级来确定哪个sr将接管发生故障的责任。在一些实施例中,次高等级的sr通过接管发生故障的sr的南向接口以便吸引否则将发送到该发生故障的ip地址的北向业务来对于发生故障的sr进行接管。
[0140]
最后,该过程对于dr和对于sr中的每一个产生(在965处)单独的rib。单独的rib以前面子章节中以及下面在章节iv中描述的方式基于配置数据而产生。该过程然后结束。在一些实施例中,管理平面还集中计算fib,而在其它实施例中,(在主机和网关机器上操作的)本地控制平面执行rib遍历以产生fib从而在分组由逻辑路由器组件的实际转发中使用。在任一情况下,rib基于从外部网络学习的动态路由在sr上更新,并且那个数据经由中央控制器传播到dr。
[0141]
上面图9的描述指示管理平面对于plr(上层级逻辑路由器)产生各种组件的操作。图10概念性地例示用于基于用户规范配置tlr的一些实施例的过程1000。在一些实施例中,过程1000由管理平面(例如,管理数据中心的网络的集中式控制器处的模块的集合)执行。
管理平面执行该配置过程,然后使用控制器(或者不同网络控制器)的集中式控制平面将数据分布到实现所配置的逻辑路由器的各种主机机器上的各种本地控制平面。
[0142]
如所示的,该过程通过接收(在1005处)tlr的规范开始。tlr的规范基于定义tlr的管理员输入(例如,由数据中心的租户雇佣的管理员)。在一些实施例中,该规范包括tlr应当提供的任何服务的定义、tlr应当通过它的上行链路连接到哪个plr、连接到tlr的任何逻辑交换机、用于tlr的接口的ip和mac地址、用于tlr的rib的任何静态路由、以及其它数据。应当理解,不同的实施例可以在tlr的配置数据中包括所列出的数据或者其它数据的不同组合。
[0143]
过程1000然后确定(在1010处)tlr是否具有集中式组件。在一些实施例中,如果tlr不提供有状态的服务,那么对于tlr不定义sr,并且它仅以分布式方式实现。另一方面,如该图中所示的,当提供有状态的服务时,一些实施例要求活动-备用模式的sr。
[0144]
当tlr不提供有状态的服务或者以其它方式需要集中式组件时,该过程对于南向和北向接口两者使用逻辑路由器的规范定义(在1015处)dr。dr可以具有大量的南向接口,这取决于定义多少逻辑交换机连接到tlr。另一方面,一些实施例将tlr限制为发送分组到plr以及从plr接收分组的单个北向接口。该过程还对于dr产生(在1020处)rib。dr的rib将包括如上面描述的那样产生的用于逻辑路由器的所有路由。
[0145]
另一方面,当tlr提供有状态的服务或者由于其它原因而需要集中式组件时,该过程使用接收到的配置数据定义(在1025处)dr。对于dr的南向接口,管理平面使用tlr的南向接口配置。即,用于每个南向接口的ip地址和mac地址是对于各种逻辑交换机耦合到的逻辑路由器的端口指定的那些。
[0146]
另外,该过程将对于tlr指定的上行链路分配(在1030处)给两个网关机器。虽然一些实施例允许tlr以活动-活动模式利用多个上行链路操作,但是过程1000是针对将tlr限制为活动-备用模式下的单个上行链路(也称为路由器链路,因为链路将tlr互连到另一个逻辑路由器)的实施例。如上所述,一些实施例允许(或者要求)用户针对逻辑路由器的sr的位置指定物理网关机器的特定集合。在一些实施例中,该网关机器的集合可能一起处于服务器的特定机架或者一组机架内,或者以其它方式相关,利用隧道连接集合中的所有机器。管理平面然后将上行链路分配给所选择的集合中的网关机器中的两个。
[0147]
在将上行链路分配给网关机器之后,过程1000定义(在1035处)两个网关机器中的每一个上的sr。对于每个sr,管理平面使用用于单个上行链路的配置作为用于sr的北向接口的配置。因为仅存在一个北向接口,所以该过程将相同的配置应用于两个sr。即,不仅相同的ip地址用于两个北向接口,而且接口上的服务也以相同的方式配置。然而,不同的mac地址被用于北向接口,以便区分活动和备用sr。
[0148]
该过程另外定义(在1040处)中转逻辑交换机以连接所定义的sr和dr。在一些实施例中,管理平面将唯一的vni(逻辑交换机标识符)分配给中转逻辑交换机。另外,一些实施例要求分配给中转逻辑交换机的子网在逻辑网络拓扑之间是唯一的。这样,管理平面必须对中转逻辑交换机分配与和tlr接口的用户定义的逻辑交换机中的任何一个、以及tlr(或者其它tlr)与plr之间的任何中转逻辑交换机、以及连接到相同plr的其它tlr内的所有中转逻辑交换机、plr内的中转逻辑交换机、以及连接到其它tlr的用户定义的逻辑交换机不同的子网。
[0149]
接下来,该过程将北向接口分配(在1045处)给dr。在一些实施例中,该接口被分配mac地址和ip地址(用于在tlr的组件之间内部发送的分组)两者。在一些实施例中,ip地址处于分配给940处的中转逻辑交换机的相同子网中。该过程还分配(在1050处)两个sr中的每一个的南向接口。因为这是活动-备用配置,所以这些南向接口具有相同的ip地址,该ip地址处于在操作940处定义的中转逻辑交换机的子网中。尽管两个接口接收相同的ip地址,但是所分配的mac地址不同,以便区分两者作为由dr路由的北向分组的目的地。
[0150]
过程1000然后分配(在1055处)sr中的一个为活动并且sr中的一个为备用。一些实施例随机地进行该确定,而其它实施例试图跨网关机器平衡活动和备用sr的分配。分配为活动的sr将响应对于南向(来自该tlr的dr)和北向(来自plr的dr)接口的arp请求。另一方面,备用sr将不响应arp请求(以便避免接收北向或者南向业务)。
[0151]
接下来,该过程对于dr和对于sr中的每一个产生(在1060处)单独的rib。单独的rib以前面子章节中以及下面在章节iv中描述的方式基于配置数据而产生。在一些实施例中,管理平面还集中计算fib,而在其它实施例中,(在主机和网关机器上操作的)本地控制平面执行rib遍历以产生fib从而在分组由逻辑路由器组件的实际转发中使用。在任一情况下,rib基于从外部网络学习的动态路由在sr上更新,并且那个数据经由中央控制器传播到dr。
[0152]
不管tlr是否被产生具有或者不具有sr,过程1000定义(在1065处)tlr与它连接到的plr之间的另一个中转逻辑。该中转逻辑交换机具有唯一的vni,以及tlr的上行链路ip地址所属的子网。另外,在相同子网中创建plr的dr上的接口以连接到中转逻辑交换机。该过程然后结束。
[0153]
应当理解,虽然过程900和1000例示用于执行这些各种操作的具体次序,但是这些过程仅仅是概念性的。在各种不同的实施例中,管理平面可以以各种不同的次序执行实际的操作,或者甚至并行地执行操作的一些。例如,管理平面可以完全在定义sr或者dr之前首先定义中转逻辑交换机,可以在将逻辑路由器组件分配给单独的物理机器之前完整地定义所有逻辑路由器组件,等等。
[0154]
iii.路由表配置
[0155]
如上面所指示的,在一些实施例中,管理平面接收逻辑路由器配置并且产生(i)每个逻辑路由器的一个或多个逻辑路由器构造以及(ii)每个逻辑路由器构造的路由信息库(rib)。在各种不同的实施例中,从rib计算转发信息库(fib)可以在管理平面或者由集中式或本地控制平面执行。例如,在一些实施例中,rib被分布到实现sr或者dr的每个机器,并且在那个机器上操作的本地网络控制器执行路由遍历以计算fib。在本章节中,将更详细地描述一些实施例中用于对于各种逻辑路由器构造产生rib的规则。路由可以来自逻辑交换机到逻辑路由器的连接、逻辑路由器彼此的连接、或者静态路由的输入(作为逻辑路由器配置的一部分而接收)。
[0156]
图11概念性地例示将用于例示一些实施例的rib产生规则的更复杂的逻辑网络配置1100。具体地,逻辑网络配置1100包括plr 1105,plr 1105附接有逻辑交换机1120,两个tlr 1110和1115也附接到plr 1105。第一tlr 1110附接有两个逻辑交换机1125和1130,并且第二tlr 1115附接有两个逻辑交换机1135和1140。plr1105配置有三个上行链路u1-u3,其中u1具有ip地址1.1.3.2并且连接到外部物理路由器端口1.1.3.1。u2具有ip地址
1.1.4.2并且连接到相同子网上具有ip地址1.1.4.1和1.1.4.11的两个外部物理路由器。u3处于具有与u2相同的l3连接性的相同子网上,并且具有ip地址1.1.4.21。plr还具有三个向南接口,一个用于逻辑交换机1120(具有ip地址1.1.0.1,在逻辑交换机1120的子网1.1.0.0/24中),并且d1和d2中的各一个用于tlr 1110和1115。在一些实施例中,将tlr附接到plr的用户(即,tlr的所有者)不配置该接口。代替地,如在随后图12的管理平面视图中所示。
[0157]
在一些实施例中,数据中心管理员配置plr(即,上行链路和它们的连接性),以及第一逻辑交换机1120。第一租户配置第一tlr 1110以及它的两个逻辑交换机1125和1130,而第二租户独立地配置第二tlr 1115,以及它的两个逻辑交换机1135和1140。在其它实施例中,单个管理员可以配置整个逻辑网络1100(例如,在企业网络的情况下)。当不同的用户配置不同的逻辑路由器时,一些实施例限制可用于各种逻辑交换机1120-1140的子网以确保如果使ip地址公开(例如,经由上行链路u1-u3通告到外部网络),那么不同的子网用于逻辑交换机中的每一个。一些实施例允许逻辑交换机重复使用子网,只要ip地址没有向外部通告(包括通告到连接到相同plr的其它tlr)。
[0158]
图12概念性地例示由管理平面基于图11中所示的配置(由用户通过api输入)产生的逻辑网络1100。在该情况下,tlr 1110和1115都不包括有状态的服务,因此对于tlr不需要sr。如在前面章节中描述的,tlr 1110和1115分别包括dr 1205和1210。逻辑交换机连接到的tlr的向南端口被分配与给予逻辑网络配置1100中的tlr的那些相同的ip地址(在它们的附接的逻辑交换机的子网中)(例如,1.1.5.1,1.1.6.1等)。另外,对于tlr与plr 1105之间的每个连接,管理平面分配中转逻辑交换机,并且在这些逻辑交换机上分配dr 1205和1210上的向北接口ip地址。在一些实施例中,因为这些中转逻辑交换机中的每一个将仅需要两个地址,管理平面总是从这样的子网的池中分配/31子网,以便避免浪费ip地址空间。在该情况下,第一中转逻辑交换机1215具有子网192.168.10.0/31,而第二中转逻辑交换机1220具有下一个子网192.168.10.2/31。
[0159]
管理平面还对于plr 1105定义dr 1225和三个sr 1230-1240(每个上行链路一个)。除了由管理平面定义的第四接口p1之外,dr 1225还具有plr 1105的三个向南接口(如前面章节中描述的)。该接口p1连接到具有子网169.0.0.0/28的中转逻辑交换机1245,三个sr 1230-1240的向南接口也连接到中转逻辑交换机1245。这四个接口p1-p4依次具有ip地址169.0.0.1、169.0.0.2、169.0.0.3和169.0.0.4。
[0160]
图13、15、16和17概念性地例示由管理平面(例如,位于集中式网络控制器处)执行以将逻辑路由器配置数据转换成一些实施例的用于plr的dr和sr的rib的一些实施例的各种过程。具体地,图13和15描述plr的不同类型的静态路由的处理,而图16描述处理tlr到plr的连接以及对plr构造产生路由的动态路由过程,并且图17描述plr上的新的逻辑接口(到外部网络的上行链路或者到tlr或逻辑交换机的下行链路)的创建。在一些实施例中,这些过程由管理平面(例如,管理数据中心的网络的集中式控制器处的模块的集合)执行。管理平面执行配置过程,然后使用控制器(或者不同网络控制器)的集中式控制平面将数据分布到实现逻辑路由器构造的各种主机机器上的各种本地控制平面。这些过程将部分地参考图11和12中所示的逻辑网络1100以及图14中所示的路由配置输入和rib输出而描述。
[0161]
图13概念性地例示用于处理作为针对plr(例如,针对plr1105)的配置信息而输入
的向南静态路由的一些实施例的过程1300。如所示的,过程1300通过接收(在1305处)下一跳在逻辑网络中的静态路由而开始。在一些实施例中,利用将要路由的前缀、路由的下一跳(或者网关)、以及在某些情况下路由输出到的接口而输入静态路由。在使用中,具有匹配前缀(并且不匹配具有较长前缀的路由)的目的地ip地址的任何分组将通过给定的接口输出到给定的下一跳地址。当下一跳处于被附接到plr的逻辑交换机的子网、或者被附接到附接到该plr的tlr的逻辑交换机的子网中的一个中时,那么路由是下一跳在逻辑网络中的向南路由。
[0162]
图14概念性地例示针对plr 1205配置的静态路由的集合1405,并且对于tlr的配置将在下面参考图16描述。该图还示出由管理平面基于该配置数据对dr和三个sr产生的输出1400。该输出包括用于dr 1225的rib 1410,以及用于三个sr 1230-1240的rib 1415-1425。如所示的,针对plr配置的静态路由的集合1405包括向南路由,其指定目的地地址在子网2.2.2.0/24中的所有分组被发送到1.1.0.2(2.2.2.0/24经由1.1.0.2)。该地址属于附接到逻辑交换机1120的vm。
[0163]
当接收到这样的路由时,过程1300不修改地将路由添加(在1310处)到plr的dr的rib。即,添加到dr的rib的路由的下一跳与在配置数据中指定的下一跳相同。在图14的示例中,所配置的路由2.2.2.0/24经由1.1.0.2不修改地添加到dr的rib 1410(在rib中列出的第四个路由)。
[0164]
过程1300还以dr的向北接口作为下一跳(并且移除任何输出接口)将路由添加到每个sr的rib。即,对于指定前缀的路由被添加到sr中的每一个(以处理从外部物理网络发送到指定ip地址的分组),其中下一跳是与sr的向南接口连接到相同中转逻辑交换机的dr接口的那个。在逻辑网络1100中,这是接口p1,具有ip地址169.0.0.1。这样,rib 1415-1425各自具有路由2.2.2.0/24经由169.0.0.1。在将路由添加到plr的逻辑路由器构造中的每一个的rib之后,过程1300结束。在一些实施例中,只要sr具有推导递归路由的能力,管理平面就将向南静态路由不修改地添加到sr的rib,而不是对路由进行修改。在这样的实施例中,在该示例中的管理平面将添加路由2.2.2.0/24经由1.1.0.2,认识到一旦路由被遍历,路由1.1.0.0/24经由169.0.0.1将导致sr的fib中的正确结果。
[0165]
鉴于该过程1300用于处理向南静态路由,图15概念性地例示用于处理作为针对plr(例如,针对plr 1105)的配置信息而输入的向北路由的一些实施例的过程1500。在一些实施例中,过程1300和1500实际上是单个软件过程的一部分,其中根据由过程做出的关于路由是向南还是向北的决策而执行不同的操作。
[0166]
如所示的,过程1500通过接收(在1505处)下一跳面向外部物理网络的静态路由而开始。在该情况下,当下一跳是提供逻辑网络的到外部物理网络的连接性的物理路由器的那个时,那么路由是下一跳面向外部物理网络的向北路由。针对plr配置的静态路由的集合1405包括许多向北路由,包括用于前缀0.0.0.0/0的三个不同路由(即,默认路由)、用于172.16.0.0/16的路由、以及用于10.0.0.0/8的路由。这些路由中的每一个指定属于外部路由器的下一跳(即,1.1.3.1、1.1.4.1和1.1.4.11中的一个)。
[0167]
该过程然后确定(在1510处)是否对路由指定输出接口。如上面所提到的,在一些实施例中,所配置的静态路由包括下一跳地址,以及在某些情况下逻辑路由器的接口,通过该接口输出正在被路由的目的地地址在子网中的分组。至于在plr配置数据1405中所示的
路由,三个默认路由(用于0.0.0.0/0)指定输出接口。具体地,这些路由指示三个向北接口u1、u2和u3中的每一个的下一跳物理路由器。
[0168]
当路由指定输出接口时,该过程识别(在1515处)与指定接口相关联的sr。在一些实施例中,如在前面章节中描述的,对于plr的上行链路中的每一个分配不同的sr。例如,在示例逻辑网络1100中,plr 1105的上行链路u1、u2和u3分别分配给三个sr 1230、1235和1240。
[0169]
过程1500然后将路由添加(在1520处)到所识别的sr的rib。路由没有添加到其它sr中的任何一个,因为将由路由处理的北向分组不应当被发送到其它sr。因此,在图14示例中,路由0.0.0.0/0经由1.1.3.1输出到u1仅添加到拥有输出接口u1的第一sr 1230的rib 1415。类似地,路由0.0.0.0/0经由1.1.4.1输出到u2仅添加到第二sr 1235的rib 1420,并且路由0.0.0.0/0经由1.1.4.11输出到u3仅添加到第三sr 1240的rib 1420。
[0170]
另一方面,如果路由没有指定输出接口,那么该过程识别(在1525处)具有到指定的下一跳的连接性的所有sr。在所有sr具有同等的l3连接性(例如,所有上行链路连接到物理路由器的相同集合)的情况下,那么这将是所有sr。然而,在某些情况下,管理员可以配置具有不同l3连接性的plr上行链路,在该情况下,sr中的一些可能不具有到特定路由的下一跳的连接性。
[0171]
该过程然后将路由添加(在1530处)到所识别的sr中的每一个的rib。plr配置1405包括没有指定输出接口的两个静态路由。第一个这样的路由是用于前缀172.16.0.0/16,其中下一跳地址是1.1.3.1。在该情况下,仅第一sr 1230具有到下一跳的连接性,所以管理平面将该路由仅添加到该第一sr的rib 1415。路由不添加到rib 1420或者1425。另一个路由是用于前缀10.0.0.0/8,其中下一跳是1.1.4.1。上行链路中的两个(u2和u3)具有到该下一跳的连接性,所以路由添加到它们各自的sr 1235和1240的rib 1420和1425,而不添加到rib 1415。
[0172]
除了将路由添加到sr中的一个或多个,在某些情况下,过程1500还将路由添加到dr。具体地,该过程确定(在1535处)路由是否是默认路由。在一些实施例中,默认路由是用于前缀0.0.0.0/0(即,整个ipv4地址空间)的路由。在最长前缀匹配系统中,只有当分组没有匹配路由表中的任何其它路由时才使用这样的路由。如果逻辑网络的终端机器(例如,vm)充当通过因特网访问机器的远程客户端的服务器,那么默认路由将经常用于返回通信。
[0173]
当路由是默认路由时,过程1500根本不将路由添加到dr,并且结束。这样,在示例中,三个默认路由没有添加到dr。然而,在一些实施例中,作为对plr产生多个逻辑路由器构造的配置的一部分,管理平面总是将默认路由添加到dr,其发送没有另行匹配的分组到sr中的任何一个(例如,使用ecmp原则)。这样,dr 1225的rib 1410包括默认路由0.0.0.0/0经由169.0.0.2,169.0.0.3,169.0.0.4(三个sr的向南接口p2-p4的地址)。该路由将分组发送到三个sr中的任何一个。
[0174]
对于非默认静态路由,该过程对于路由被添加到的每个sr将该路由添加(在1540处)到dr,其中sr的向南接口作为下一跳。过程1500然后结束。例如,路由172.16.0.0/16经由1.1.3.1仅添加到第一sr 1230的rib 1415。这样,该路由作为172.16.0.0/16经由169.0.0.2(第一sr 1230的向南接口p2的地址)添加到dr 1225的rib 1410。另一方面,路由10.0.0.0/8经由1.1.4.1添加到rib 1420和1425。这样,管理平面将具有两个下一跳的路由
作为10.0.0.0/8经由169.0.0.3,169.0.0.4添加到dr的rib 1410。例如,然后,目的地ip地址为10.0.1.1的分组将被发送到sr 1235和1240中的两者之一,这取决于ecmp原则如何被dr实现应用。
[0175]
如图14中可以看到的,除了静态路由之外,逻辑路由器的各种逻辑路由器构造的rib还将包括其它路由。这些路由包括连接到路由器构造的各种逻辑交换机的连接路由。例如,dr 1225连接到四个逻辑交换机:三个中转逻辑交换机1215、1220和1245,以及用户创建的逻辑交换机1120。对于这些中的每一个,具有输出接口(而不是下一跳)的路由添加到dr。因此,rib 1410包括路由1.1.0.0输出到d3(针对用户创建的逻辑交换机),192.168.10.0/31输出到d1和192.168.10.2/31输出到d2(针对plr与tlr之间的中转逻辑交换机),以及169.0.0.0/28输出到p1(针对plr内部的中转逻辑交换机)。在一些实施例中,sr具有针对plr内部的中转逻辑交换机的连接路由(例如,对于相同的rib 1415,169.0.0.0/28输出到p2)。然而,如该示例中那样,在一些实施例中,sr可能对于它们的外部l2连接性不具有连接路由。然而,当该l2连接性由管理员配置时,其它实施例确实包括这样的连接路由(例如,对于第一sr 1230的rib 1415,1.1.3.0/24输出到u1,以及对于其它两个sr 1235和1240的rib 1420和1425,1.1.4.0/24输出到u2/u3)。而且,对于每个上行链路接口ip(例如,1.1.3.2、1.1.4.2和1.1.4.21),一些实施例以下一跳是相应sr的南向接口将针对这些特定的“/32”ip地址的路由自动地插入到dr中(即,1.1.3.2/32经由169.0.0.2,1.1.4.2/32经由169.0.0.3,以及1.1.4.21/32经由169.0.0.4)。如所示的,一些实施例还将对于上行链路连接到的子网的路由插入到dr的rib中,其中下一跳再次为相应sr的南向接口(即,1.1.3.0/24经由169.0.0.2以及1.1.4.0/24经由169.0.0.3,169.0.0.4)。
[0176]
另外,plr的逻辑路由构造可以包括由管理平面基于其它逻辑路由器(例如,tlr)的连接动态地产生的路由。图16概念性地例示当tlr附接到plr时对于plr路由构造产生rib的一些实施例的过程1600。因为逻辑路由器配置信息对管理平面(例如,网络控制器的集合)是已知的,所以一些实施例能够避免运行bgp或者类似的动态路由协议以在逻辑网络内交换路由(如上所述,bgp/ospf仍然可以用于将路由通告到外部物理网络)。
[0177]
如所示的,过程1600通过接收(在1605处)tlr的北向接口到plr的南向接口的连接而开始。在一些实施例中,tlr的所有者(例如,数据中心租户)通过管理平面api输入这个作为配置数据。租户可能不需要plr的接口信息来指定这样的连接。代替地,租户请求连接tlr,并且管理平面自动地创建它们之间的中转逻辑交换机(例如,从可用子网的池中),以及tlr北向接口和plr南向接口(确保这些接口具有分配给中转逻辑交换机的子网中的ip地址)。在图11的逻辑网络1100中,用户已经将tlr 1110和1115附接到plr 1105(可能作为单独的动作)。
[0178]
该过程然后从附接的tlr识别(在1610处)任何路由。tlr将具有对于它的逻辑交换机中的每一个的连接路由。另外,在一些实施例中,tlr还可以包括由用户配置的静态路由。然而,在其它实施例中,tlr用户可能不配置静态路由,或者静态路由不经由动态路由传播到plr(因为,例如,不同的租户可能对于相同的地址配置不同的路由)。另外,在一些实施例中,租户可以指定是否应当通告它们的逻辑交换机子网(即,这些子网是否将传达到tlr外部(利用其它tlr以南的机器或者利用逻辑网络外部的机器))。在图14的示例中,第一tlr 1110通告它的子网1.1.5.0/24和1.1.6.0/24两者,而第二tlr 1115仅通告它的两个子网中
的一个,1.1.7.0/24(而不通告1.1.8.0/24)。
[0179]
过程1600然后将这些路由传播到dr和sr中。如所示的,该过程以下一跳为tlr的北向接口将所识别的路由添加(在1615处)到(plr的)dr。在示例中,tlr 1110和1115被完全分布,所以这些北向接口属于tlr的dr 1205和1210。因此,plr的dr 1225的rib 1410包括下一跳地址为192.168.10.1(dr 1215的北向接口)的、用于1.1.5.0和1.1.6.0的路由,以及下一跳地址为192.168.10.3(dr 1210的北向接口)的、用于1.1.7.0的路由。如果tlr包括有状态的服务,那么sr的北向接口将具有相同的ip地址(以活动-备用模式),并且这将是用于plr的dr中的路由的下一跳ip地址。
[0180]
该过程还通过使用(plr的)dr的北向接口作为下一跳ip地址将所识别的路由添加(在1620处)到(plr的)每个sr。该过程然后结束。在示例中,rib 1415-1425中的每一个包括用于1.1.5.0、1.1.6.0和1.1.7.0的路由,全部具有下一跳ip地址169.0.0.1(即,p1的地址)。因此,对于这些子网中的每一个,从外部网络接收的、目的地地址在子网中的分组将从接收sr发送到dr并且随后从dr发送到适当的tlr。
[0181]
如所提到的,图17概念性地例示当新的接口添加到plr时对于plr路由构造的rib产生路由的一些实施例的过程1700。具体地,该过程涉及连接路由和plr内部的其它路由(与由过程1600对于tlr连接添加的动态路由相对)。该新的接口可以是新的上行链路或者下行链路(即,逻辑交换机或者到tlr的连接)。
[0182]
如所示的,该过程通过接收(在1705处)plr的新的接口而开始。在一些实施例中,plr的所有者通过管理平面api输入这个作为配置数据。另外,当新的tlr请求连接到plr时,一些实施例自动地创建下行链路。该过程然后确定(在1710处)接口是否面向外部网络(即,接口是上行链路(面向外部网络)还是下行链路(面向用于tlr连接的逻辑交换机或者中转逻辑交换机)。
[0183]
当接口是下行链路时,该过程对于接口连接到的子网、以下一跳为dr的向北接口将路由添加(在1715处)到plr的每一个sr(当然,除了接口本身到dr的连接路由之外)。因此,在图14的示例中,sr rib 1415-1425中的每一个包括下一跳为169.0.0.1(dr 1225的向北接口)的、对于1.1.0.0/24(逻辑交换机ls1的子网)的路由。
[0184]
另外,下行链路的创建可以允许管理平面启用先前禁用的静态路由。在一些实施例中,指向不存在的接口的静态路由将为逻辑路由器而存储,但是被禁用(并且因此不作为路由添加到各种逻辑路由器构造的rib)。当随后创建接口时,过程1700对于每个这样的当前禁用的路由添加(在1720处)(i)路由到dr的rib以及(ii)相应路由到sr中的每一个的rib(以下一跳为dr的向北接口)。
[0185]
另一方面,当新的接口是上行链路(即,它面向外部网络)时,如上所述,过程1700对于上行链路创建(在1725处)新的sr(如果需要的话)。该过程还对于新的接口连接到的子网、以下一跳为sr的向南接口将路由添加(在1730处)到dr。该过程还对于新的上行链路接口的ip地址、以下一跳也为sr的向南接口将路由添加(在1735处)到dr。例如,在图14中,dr具有对于每个接口的路由,1.1.3.2经由169.0.0.2、1.1.4.2经由169.0.0.3以及1.1.4.21经由169.0.0.4。另外,在一些实施例中,dr将具有对于这些接口中的每一个连接到的子网的类似的路由。
[0186]
最后,对于下一跳在新的接口上的每个路由(例如,指向外部路由器的静态路由),
该过程将对于新的接口的路由添加(在1740处)到sr,并且更新dr上的路由。例如,将创建dr上的默认路由以同样指向新的sr的向南接口(具有与指向其它sr的默认路由相等的优先级),并且指向经由新的接口可到达的外部物理路由器接口的外部网络的任何静态路由将具有添加到sr和dr的相应路由(例如,根据过程1500)。
[0187]
在某些情况下,配置数据可能改变,从而导致管理平面修改各种逻辑路由器构造的rib。例如,如果tlr上行链路ip地址改变(因为,例如,用于中转逻辑交换机的可用子网的池被修改),那么管理平面将必须修改下一跳在该子网中的dr路由。在一些实施例中,存在基于从tlr通告的子网的任何路由(例如,上面的示例中的路由1.1.5.0经由192.168.10.1)以及对于现在修改的接口的连接路由(例如,上面的示例中的路由192.168.10.0/31输出到d1)。类似地,如果逻辑路由器的内部中转逻辑交换机改变,那么用于那个网络的各种逻辑路由器构造上的连接路由将被修改,并且dr与sr之间的内部路由将被修改(如果向北dr接口和向南sr接口作为该改变的结果而被修改的话)。
[0188]
另外,管理员可能修改plr端口的ip地址。当该修改的端口是下行链路(例如,连接到逻辑交换机,诸如示例中的逻辑交换机1120)时,对于那个逻辑交换机的连接路由将自动地被修改。然而,如果存在下一跳在网络中的任何静态路由,那么一些实施例不允许配置修改。代替地,其它实施例在允许配置改变的同时使静态路由无效。
[0189]
如果被修改的plr端口是上行链路,那么rib中自动产生的路由都不需要修改(除非连接路由用于外部l2连接性,并且该连接性改变)。然而,与外部网络对等的bgp可能需要被修改,因为通告到外部路由器的路由的下一跳ip地址将需要被改变。另外,在plr上配置的静态路由可以发送到sr的新集合。例如,如果第一sr 1230被修改以具有地址1.1.4.4,并且连接到第二和第三外部路由器(地址1.1.4.1和1.1.4.11),那么这将对于静态路由172.16.0.0/16经由1.1.3.1产生问题(将不允许该配置改变或者将使静态路由无效),同时静态路由10.0.0.0/8经由1.1.4.1也将添加到第一sr 1230的rib 1415。
[0190]
在操作期间,管理员可以添加或者删除上行链路(以及相应的sr)。当添加上行链路时,管理平面如以上面的方式中所描述的那样将路由添加到dr和新的sr(例如,将默认等价路由添加到dr,并且基于连接到plr的逻辑交换机或者来自被选择用于路由通告的连接tlr的逻辑交换机添加任何路由)。而且,在一些实施例中,根据上行链路l3连接性,针对plr配置的静态路由可能需要被添加到新的sr的rib(以与上面所描述的相同的方式)。当删除上行链路(和sr)时,在一些实施例中,管理平面首先证实没有针对plr配置将受sr和上行链路的移除影响的基于接口的路由(例如,指定上行链路作为输出接口的路由)。而且,将分组发送到sr的等价默认路由被从dr中移除,内部中转逻辑交换机上的端口被删除,并且导致dr路由指向sr的任何静态路由也被从dr中移除。
[0191]
iv.电子系统
[0192]
上述特征和应用的许多作为软件过程而实现,该软件过程指定为记录在计算机可读存储介质(也称为计算机可读介质)上的指令集。当这些指令由一个或多个处理单元(例如,一个或多个处理器,处理器核或者其它处理单元)执行时,它们使处理单元执行在指令中指示的动作。计算机可读介质的示例包括,但不限于,cd-rom,闪存驱动器、ram芯片、硬盘驱动器、eprom等。计算机可读介质不包括无线地或者经由有线连接传递的载波和电子信号。
[0193]
在本说明书中,术语“软件”意味着包括驻留在只读存储器中的固件或者存储在磁存储装置中的应用,其可以读入到存储器中以用于由处理器处理。而且,在一些实施例中,多个软件发明可以作为较大程序的子部分而实现,同时保留不同的软件发明。在一些实施例中,多个软件发明也可以作为单独的程序实现。最后,一起实现这里描述的软件发明的单独程序的任何组合在本发明的范围内。在一些实施例中,软件程序当被安装以在一个或多个电子系统上操作时定义执行并且进行软件程序的操作的一个或多个特定的机器实现。
[0194]
图18概念性地例示实现本发明的一些实施例的电子系统1800。电子系统1800可以用于执行上面描述的控制、虚拟化或者操作系统应用中的任何一个。电子系统1800可以是计算机(例如,桌面计算机、个人计算机、平板计算机、服务器计算机、大型机、刀片计算机等)、电话、pda或者任何其它种类的电子设备。这样的电子系统包括各种类型的计算机可读介质以及用于各种类型的计算机可读介质的接口。电子系统1800包括总线1805、处理单元1810、系统存储器1825、只读存储器1830、永久存储设备1835、输入设备1840和输出设备1845。
[0195]
总线1805总体地代表通信地连接电子系统1800的大量内部设备的所有系统、外围设备和芯片组总线。例如,总线1805通信地连接处理单元1810与只读存储器1830、系统存储器1825和永久存储设备1835。
[0196]
从这些各种存储单元,处理单元1810取回要执行的指令和要处理的数据以便执行本发明的过程。在不同实施例中,处理单元可以是单个处理器或者多核处理器。
[0197]
只读存储器(rom)1830存储由电子系统的处理单元1810和其它模块需要的静态数据和指令。另一方面,永久存储设备1835是读写存储设备。该设备是即使当电子系统1800关闭时仍存储指令和数据的非易失性存储单元。本发明的一些实施例使用大容量存储设备(诸如磁盘或者光盘以及它相应的盘驱动器)作为永久存储设备1835。
[0198]
其它实施例使用可移除存储设备(诸如软盘、闪存驱动器等)作为永久存储设备。像永久存储设备1835一样,系统存储器1825是读写存储设备。然而,不像存储设备1835,系统存储器是易失性读写存储器,诸如随机存取存储器。系统存储器存储处理器在运行时间需要的指令和数据中的一些。在一些实施例中,本发明的过程存储在系统存储器1825、永久存储设备1835和/或只读存储器1830中。从这些各种存储单元,处理单元1810取回要执行的指令和要处理的数据以便执行一些实施例的过程。
[0199]
总线1805还连接到输入设备1840和输出设备1845。输入设备使得用户能够传达信息和选择命令到电子系统。输入设备1840包括字母数字键盘和定点设备(也称为“光标控制设备”)。输出设备1845显示由电子系统产生的图像。输出设备包括打印机和显示设备,诸如阴极射线管(crt)或者液晶显示器(lcd)。一些实施例包括充当输入和输出设备两者的设备,诸如触摸屏。
[0200]
最后,如图18中所示,总线1805还将电子系统1800通过网络适配器(未示出)耦合到网络1865。以该方式,计算机可以是计算机网络(诸如局域网(“lan”)、广域网(“wan”)或者内联网,或者网络的网络,诸如因特网的一部分。电子系统1800的任何或者全部组件可以与本发明结合使用。
[0201]
一些实施例包括电子组件,诸如微处理器、将计算机程序指令存储在机器可读或计算机可读介质(替代地称为计算机可读存储介质、机器可读介质或者机器可读存储介质)
中的储存器和存储器。这样的计算机可读介质的一些示例包括ram、rom、只读紧凑盘(cd-rom)、可记录紧凑盘(cd-r)、可重写紧凑盘(cd-rw)、只读数字多功能盘(例如,dvd-rom、双层dvd-rom)、各种可记录/可重写dvd(例如,dvd-ram、dvd-rw、dvd+rw等)、闪存(例如,sd卡、迷你sd卡、微型sd卡等)、磁和/或固态硬盘驱动器、只读和可记录blu-ray@盘、超密度光盘、任何其它光学或者磁性介质以及软盘。计算机可读介质可以存储由至少一个处理单元可执行的计算机程序并且包括用于执行各种操作的指令集。计算机程序或者计算机代码的示例包括诸如由编译器产生的机器代码,以及由计算机、电子组件或者微处理器使用解释器执行的包括更高层次代码的文件。
[0202]
虽然上面的讨论主要涉及执行软件的微处理器或者多核处理器,但是一些实施例由一个或多个集成电路(诸如专用集成电路(asic)或者现场可编程门阵列(fpga))执行。在一些实施例中,这样的集成电路执行存储在电路自身上的指令。
[0203]
如在本说明书中使用的,术语“计算机”、“服务器”、“处理器”、“存储器”全部是指电子或者其它技术设备。这些术语排除人或者多组人。出于说明书的目的,术语显示或者正在显示意指在电子设备上显示。如在本说明书中使用的,术语“计算机可读介质”、“计算机可读媒介”和“机器可读介质”完全地限制于以计算机可读的形式存储信息的有形物理对象。这些术语排除任何无线信号、有线下载信号以及任何其它短暂信号。
[0204]
本说明书整个涉及包括虚拟机(vm)的计算和网络环境。然而,虚拟机仅仅是数据计算节点(dcn)或者数据计算终端节点(也称为可寻址节点)的一个示例。dcn可以包括非虚拟化的物理主机、虚拟机、在主机操作系统之上运行而不需要超级管理器或者单独操作系统的容器、以及超级管理器内核网络接口模块。
[0205]
在一些实施例中,vm使用由虚拟化软件(例如,超级管理器、虚拟机监视器等)虚拟化的主机的资源在主机上利用它们自己的客户操作系统进行操作。租户(即,vm的所有者)可以选择哪些应用在客户操作系统之上操作。另一方面,一些容器是在主机操作系统之上运行而不需要超级管理器或者单独客户操作系统的构造。在一些实施例中,主机操作系统使用命名空间将容器彼此隔离并且因此提供在不同容器内操作的不同的多组应用的操作系统层次的分离。该分离类似于在虚拟化系统硬件的超级管理器虚拟化的环境中提供的vm分离,并且因此可以看作隔离在不同容器中操作的不同的多组应用的虚拟化的形式。这样的容器比vm更轻量。
[0206]
在一些实施例中,超级管理器内核网络接口模块是非vm dcn,其包括具有超级管理器内核网络接口的网络堆栈和接收/传输线程。超级管理器内核网络接口模块的一个示例是作为vmware,inc.的esxi
tm
超级管理器的一部分的vmknic模块。
[0207]
应当理解,虽然本说明书涉及vm,但是给出的示例可以是任何类型的dcn,包括物理主机、vm、非vm容器和超级管理器内核网络接口模块。事实上,在一些实施例中,示例网络可以包括不同类型的dcn的组合。
[0208]
虽然已经参考大量特定的细节描述了本发明,但是本领域普通技术人员将认识到,可以在不脱离本发明的精神的情况下以其它特定的形式体现本发明。另外,许多图(包括图9、10、13、15、16和17)概念性地例示过程。这些过程的特定操作可以不按所示出和所描述的确切次序执行。特定的操作可以不在一个连续的操作序列中执行,并且不同的特定操作可以在不同的实施例中执行。而且,过程可以使用若干子过程、或者作为较大的宏过程的
一部分而实现。因此,本领域普通技术人员将理解,本发明不是要由前面的例示性细节限制,而是要由附加的权利要求书定义。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1