在网络上转发分组的方法和装置与流程

文档序号:16702609发布日期:2019-01-22 21:48阅读:424来源:国知局
在网络上转发分组的方法和装置与流程
本申请要求申请日为2013年11月5日、被Edsall等人命名为“NETWORKFABRICOVERLAY(网络结构覆盖)”的美国临时专利申请No.61/900,228的优先权,通过引用将其整体合并于此并且用于所有目的。
背景技术
:基于例如VXLAN(虚拟可扩展LAN)的覆盖可以被用于将网络的物理基础架构虚拟化。覆盖要求网络边缘处的数据路径从分组的租户终点地址(也称为它的“标识符”)映射至终点的位置(也称为它的“定位器”)。这种映射发生在被称为“隧道终点”或TEP的功能中。利用这种映射的挑战是针对非常大的高性能数据中心如何对其进行缩放。伴随缩放的第一个问题是这种映射状态必须存在于大量的位置或TEP中。这种映射必须在其中存在想要穿过网络将分组发送至另一终点的终点的每个TEP中完成。这可能是在网络中的每个入口点处。伴随规模化的第二个问题是当终点移动(即,它的定位器改变)时,映射状态必须通过网络在具有该映射的所有TEP中进行更新。一种典型的解决方案是始终将映射,包括变化,传输至所有TEP。关于此的变体是当被TEP中的异常触发而需要映射时,将映射状态从集中式数据库中拉出。该后一种方法通常在处理终点移动方面具有一些困难,即,映射是过期的。这两种解决方案都受由持有所有映射的授权数据库的中心实体施加的规模限制。它们或者具有过多的延迟、没有足够的容量、或者太贵。这种实现方式伴随的另一争议是很难将状态可靠地推送至大量位置。在大型系统中,几乎能保证在推送状态时将发生一些故障,并且系统随后必须处理不一致的状态。另一种方法是利用第2层语义(semantic)并且进行“泛洪和学习”,其中,被定址去往其标识符至定位器的映射在入口TEP处是未知的终点的分组被泛洪至终点可以存在于其中的所有出口TEP。然后被隧道化的分组的源的定位器至标识的映射在出口TEP处被学习,以使得不需要对相反方向上的后续流量进行泛洪。这种解决方案的问题是泛洪行为通常被认为是非常不好的,因为分组被发送到了不想看到它们的设备,并且它不能很好地支持结构中的路由语义,因为你不会希望通过路由器进行泛洪。此外,这种解决方案不能解决终点移动以及预先学习即将过期的状态的问题。技术实现要素:本文公开了在网络(例如,具有叶设备和脊设备的叶-脊网络)上转发分组的方法。在一些实施例中,方法包括在入口叶设备处接收分组,并且至少部分地基于分组的头部确定该分组是否要被传输至脊设备。在一些实施例中,方法还可以包括至少部分地基于分组的头部查明是否在该分组上执行封装,并且根据查明的结果封装该分组。在一些实施例中,在根据查明的结果封装分组之后,方法还可以包括根据确定的结果将分组传输至脊设备。在一些实施例中,方法可以包括确定从中接收分组的设备是否是可信设备,并且在某些这样的实施例中,上述查明是至少部分地基于该设备是否是可信设备。在一些实施例中,上述封装至少部分地由叶设备执行。在一些实施例中,方法还可以包括选择两个或更多个脊设备中的一个,并且上述传输包括将分组发送至选择的脊设备。在一些实施例中,方法还可以包括从分组的头部获取分组被定址去往的目的地设备的标识符,并且由叶设备确定它不具有目的地设备的位置。在某些这样的实施例中,封装由此被执行以使得分组的头部标识一个或多个代理,并且其中,传输分组包括将分组传输至该一个或多个代理中的至少一个。在一些实施例中,方法可以包括在从脊设备发送分组之后,在出口叶设备处接收分组,以及当分组的源标识符和源定位器尚未存在于与出口叶设备相关联的转发表中时,将该源标识符和源定位器添加到转发表中。在一些实施例中,方法还可以包括当分组的源标识符尚未存在于与入口叶设备相关联的转发表中时,将该源标识符添加到转发表中。在一些实施例中,方法可以包括将来自入口叶设备的分组发送至脊设备,以及在脊处接收之后并且当分组的目的地定位器被设置成代理地址时,在与该脊相关联的转发表中查找该分组的目的地标识符以确定与目的地标识符相对应的目的地定位器。在某些这样的实施例中,此类方法还可以包括在确定了目的地定位器之后,用所述目的地定位器替换分组的头部中的代理地址。在一些实施例中,分组的目的地标识符表示与生成该分组的终端设备相关联的VNID。在一些实施例中,与脊相关联的一个或多个转发表包含将终端设备标识符和终端设备定位器匹配的条目,该定位器表示给定的被标识的终端设备被连接至的叶设备,其中,与脊相关联的所述一个或多个转发表不包含列出所述叶设备的哪个或哪些端口连接至所述被标识的终端设备的信息。在一些实施例中,方法可以包括:当入口叶设备在它的转发表中不具有与接收到的分组的目的地标识符相对应的条目时,将该分组的封装的目的地定位器字段设置成代理地址。在一些实施例中,被用于设置分组的封装的目的地定位器字段的代理地址是基于接收的分组的特征从若干可能的代理地址中选择的。在某些这样的实施例中,当接收到的分组时第3层分组时,被用于设置分组的封装的目的地定位器字段的代理地址被选择成针对第3层分组的代理地址,并且当接收到的分组是第2层分组时,被用于设置分组的封装的目的地定位器字段的代理地址被选择成针对第2层分组的不同的代理地址。在一些实施例中,在入口叶设备处应用的封装可以包括类指示符字段,并且其中,类指示符字段可以由所述入口叶设备基于分组的特性来设置。在某些这样的实施例中,可以由一个或多个叶和/或脊设备至少部分地基于分组的类指示符字段的值来做出转发决定。本文还公开了包括处理器和存储器的网络装置,处理器和存储器中的至少一个被配置为执行上述方法中的一些或全部。在一些实施例中,处理器和存储器中的至少一个可以被配置为在叶设备处接收分组,至少部分地基于分组的头部确定该分组是否要被传输至脊设备,至少部分地基于分组的头部查明是否在该分组上执行封装,根据查明的结果封装分组,并且在根据查明的结果封装分组之后根据确定的结果将分组传输至脊设备。附图说明图1示意性示出TCP/IP分组的格式。图2示意性示出VXLAN封装的以太网分组的格式。图3示意性示出连接两个终端设备A和B的叶-脊网络简单示例。图4示出可以被用于处理入站到VXLAN覆盖网络的分组的示样逻辑。图5A是根据各种实施例示出可以由叶设备维护的示例性转发表的图示。图5B是根据各种实施例示出可以由叶设备维护的示例性邻接表的图示。图5C是根据各种实施例示出可以由叶设备维护的示例性封装表的图示。图5D是根据各种实施例示出可以由脊设备、代理或映射器维护的示例性映射表的图示。图5E是根据各种实施例示出可以由代理设备维护的示例性第2层代理映射表的图示。图5F是根据各种实施例示出可以由代理设备维护的示例性第3层代理映射表的图示。图6是根据各种实施例示出可以被叶设备用来转发分组的示例性机制的图示。图7是示出叶设备可以在转发分组之前作出的各种示例性决定的流程图。图8示意性示出由通过访问层、聚合层和顶级核心层连接的12个终端设备组成的网络。图9示意性示出示例性叶-脊网络。图10A-1、10A-2和10B示意性示出由4端口交换机构建的示例性3层叶-脊网络。具体实施方式Ⅰ.覆盖和封装上下文和综述A.简介与在非常大的高性能数据中心中实现大规模覆盖网络相关联的主要挑战之一包括对提供标识符/定位器映射功能的数据库的缩放。本文公开的一些实施例在隧道终点处利用以线速实施在分组数据路径中的映射的集中式数据库与同样在数据路径中的缓存机制相结合的组合。在一些实施例中,这种覆盖网络可以支持极大的拓扑结构、超过百万个终点、最小的实时软件干预、以及对移动和变化的近乎即时响应。如下文的详细描述,在一些实施例中,这种覆盖网络的组分可以包括覆盖封装帧格式、一种或多种类型的网络设备、映射数据库、代理功能、映射缓存、以及用于维护映射数据库的协议(例如,COOP协议)。充当组成覆盖网络的物理基础架构((一个或多个)装置)的组分的网络设备可以包括一个或多个处理器/处理单元/模块、一个或多个存储器/存储器单元/模块、以及用于连接至其它网络设备或者将数据自或从网络设备发送的多个端口、以及连接至覆盖网络的终端设备。在这些网络设备中采用的一个或多个处理器可以是例如运行实现各种网络功能的通用CPU、其中各种网络功能被实现在硬件中的专用集成电路(ASIC)、上述事项的某种组合等,如本领域技术人员所理解的。同样地,连接至覆盖网络的终端设备可以是通常可以被连接至计算机网络的任意类型的计算机设备,同样如本领域的普通技术人员所理解的。在一些实施例中,形成覆盖网络的物理基础架构的上述网络设备可以是叶网络设备和脊网络设备。叶和脊设备在表示一种类型的物理基础架构和网络拓扑结构的、覆盖网络可以在其上运行的结构中被链接。后面的部分显示了叶-脊拓扑结构的各个方面。因此,在本部分和后面的部分中描述的许多特征属于叶-脊网络拓扑结构。然而,应该理解的是覆盖网络还可以被实现在其它网络拓扑结构中和/或采用其它类型的网络设备,因此,本公开的许多方面还更普遍地属于恰好用于实现覆盖网络的任意物理基础架构和拓扑结构。某些公开的实施例利用脊网络设备中的集中式映射数据库和叶网络设备中的映射缓存来获得好的性能和缩放比例。这种解决方案的相关组件可以包括:当在已经接收到分组的叶设备本地的映射缓存中存在未命中时在分组转发过程中被使用的、位于(或可本地访问的)脊设备中的全局/集中式映射数据库。在一些实施例中,全局/集中式映射数据库经由在相关叶设备处被应用于分组的代理地址被访问。某些实施例采用处理终点移动的弹回(bounce)功能。被发送至曾经作为终点所附接的位置的叶的分组被“弹回”到正确的位置。这允许映射数据库的缓存拷贝不同步并且不会引起任何转发问题。这种方法提供了优越的缩放比例和性能。它利用对系统中的节点的最少量的更新来处理终点移动。它通过只缓存叶设备积极使用的映射数据库的部分来控制叶设备的成本。覆盖网络的好处是有效实现工作负载移动性(workloadmobility)和工作负载随处性(workloadanywhere)。工作负载移动性是在网络上在没有中断的情况下将服务器或其它终端设备从一个地方移动到另一地方的能力。例如,服务器A最初可以被附接至第一叶设备。随后服务器A被移动到第二叶设备。服务器A的标识在移动期间被保留,但是它的位置已经改变。工作地点移动性允许网络适应于该移动并且在网络上的服务器A的新位置处提供到它的连接,有时不需要中断连接。工作地点随处性是一个相关概念。它是网络在不需要考虑网络的拓扑结构的情况下向终端设备提供网络服务,无论终端设备附接至网络何处以及向要被部署在网络上的任何地方的给定工作负载或应用提供网络服务的能力。工作地点移动性的概念在交换机维护的上下文中被频繁解释。在维护期间,附接的物理服务器保持在原地而相关联的虚拟服务器被移动至不同的交换机。虽然虚拟服务器被移动了,但是它所有的TCP连接保持不变。TCP连接通过IP和第4层地址由操作系统标识。在工作地点移动期间流也被维持。流可以是具有某些共同之处的、并且可以由分组中的字段标识的分组的任意集合。流可以按照需求作为特定或通用流,但通常标识设备对之间的连接。与设备对之间的连接相对应的TCP或UDP分组是最常用类型的流。因此这样的流可以由以下5个元组标识和定义:1.IPSA(源地址)2.IPDA(目的地地址)3.L4S端口(第4层源端口)4.L4D端口(针对在连接上运行的协议的已知端口号)5.TCP或UDPL4S端口通常由发起连接的服务器从一个范围内的值中选择,其中该范围取决于发起服务器中的网络堆栈的实现方式。在一些情况中,可能有多个L4S端口号被分配给利用相同的协议通信的相同的两个设备。该多个L4S端口号标识允许多个并行通信信道/流的不同的流以提升性能(例如,节点A正在访问网络服务器B,并且A打开与B的4个连接以提升性能,每个连接具有不同的L4S端口号)。在传统的联网中,IP地址既提供标识和位置二者。过去,这种二元性是无关紧要的。服务器很少移动。在现代网络中,服务器会移动,并且当发生服务器移动时,网络可能试图继续向旧位置而不是新位置发送分组。已经设计了用于将位置与标识分离的多种协议。示例包括LISP(定位器/标识符分离协议-Cisco支持)结构路径、VXLAN(由Cisco、VMware等等提出、并且被产业中的多数支持)、NVGRE(由Microsoft支持)、以及STT(无状态传输隧道-所有权归VMware)。这些协议中的每个协议都是将位置与标识分离开。当使用此类协议时,终端设备可以基于标识(指定的IP地址)与另一设备通信并且网络可以基于位置传送分组。这些协议中的每个协议都具有各自独特的覆盖和帧封装类型。为了便于下文的讨论,将对VXLAN进行描述。除非另有说明,否则所描述的概念可以应用于其他形式的封装。B.VXLAN/iVXLAN分组封装协议由主机或其它网络附接设备创建的TCP分组包括以下组分,如表Ⅰ和图1所示:表Ⅰ:TCP/UDP以太网分组格式VXLAN通过在以太网分组周围放置包装器(wrapper)来对其进行封装,具体地,原始分组被包装在采用UDP和VXLAN作为封装协议的外部封装分组中。外部分组/包装器主要包括新的头部,并且然后原始以太网分组作为具有新的VXLAN头部的新的封装分组的有效负载被携带。图2提供了其中原始或底层分组是TCP或UDP分组的示例(然而,通常任何以太网分组都可以按此进行封装)。如图2所示,新的封装头部包括含有IP目的地地址和IP源地址的IP头部(L3)、含有L4源端口和L4目的地端口的UDP头部(L4)、以及最后携带VXLAN专用信息的VXLAN头部。它还具有第2层头部。外部/封装分组的有效负载是原始底层以太网分组,例如TCP或UDP分组(或者从技术上讲,含有TCP或UDP分组的原始L2分组)。完整的细节可见于2013年10月17日更新的IETF草案(VXLAN:AFrameworkforOverlayingVirtualizedLayer2NetworksoverLayer3Networksdraft-mahalingam-dutt-dcops-vxlan-05.txt),其所有内容通过引用被合并于此。在VXLAN封装中出现的字段的分解如下面的表Ⅱ,另外如图2所示:表Ⅱ:VXLAN封装需要注意的是在一些实施例中,VXLAN封装暗示嵌入的网络分组是以太网分组,并且在此类实施例中,这可以避免必须为标识L2分组格式而保留的位。然而,在其它实施例中,VXLAN可以具有为指示在有效负载中携带的是哪种分组而保留的位。在封装头部中的L3源IP地址(见表Ⅰ和图2)有时可以被称为“外部源地址”或“源定位器”。同样地,封装头部中的L3目的地IP地址(亦见表Ⅰ和图2)有时可以被称为“外部目的地地址”或“目的地定位器”。“外部”修饰语仅表示它们属于外部分组头部—即,它们是封装的字段。源定位器对应于其中分组被从—通常充当分组的入口点的位置发送至覆盖网络的(物理的或虚拟)网络设备。同样地,目的地定位器是其中分组被从覆盖网络发送至—通常充当分组的出口点的位置的(物理或虚拟)网络设备的地址。类似地,在VXLAN封装中作为有效负载被携带的底层以太网分组的源地址可以被称为“内部源地址”或“源标识符”,并且同样地,底层分组的目的地地址可以被称为“内部目的地地址”或“目的地标识符”。在内部/封装分组是IP分组(例如,TCP或UDP分组、或符合ICMP、IGMP、SCTCP、RCP协议的分组)的情况中,这些源标识符和目的地标识符可以是第3层IP地址,或者当分组不是IP分组(例如,是第2层分组)、或者当分组是IP分组但是通过覆盖网络桥接(而不是被路由)时,它们可以是第2层MAC地址。VXLAN封装方案/协议包括被称为(可能略微模糊不清)“VXLAN头部”的保留字段。参见图2。在一些实现方式中,VXLAN头部的24位“虚拟网络ID”(VNID)字段被用于标识虚拟网络。因此,利用VXLAN封装的单个物理网络(例如基于叶/脊结构)可以支持超过1600万的虚拟网络。这与NVGRE封装协议中的VSID(虚拟区段标识符)字段相类似。一般来说,在VXLAN头部中携带的VNID字段表示三种可能事物中的一种:针对该分组的虚拟L3上下文或VRF(“虚拟路由和转发”)、针对该分组的桥域或BD、或该分组的终点组群或EPG。EPG含义只在下述情形下被使用:执行策略代理功能或某些类型的服务插入时、以及在当与在需要利用VXLAN头部来信号发送EPG的结构外部的设备通信时的一些情况下。当分组被路由时,VNID指定第3层转发上下文或VRF,并且当分组被桥接时,VNID指定第2层转发上下文或BD。在一些实施例中,“VXLAN头部”除了具有VNID子字段之外,还可以包含表Ⅲ中所示的其它子字段,每个子字段包含如表中所述的关于分组的信息。例如,在一些实施例中,当VXLAN被用于终端系统(例如嵌入管理程序虚拟交换机内的TEP)时,交换机可以支持表Ⅲ所示的VNID、源群组、源策略应用、以及目的地策略应用位。需要注意的是VXLAN分组格式是LISP分组格式[LISP]的超集并且还与OTVv2分组格式[OTVv2]匹配,并且在VXLAN提交之前,分组封装已经作为L2LISP被提交至IETF。VXLAN草案和L2LISP草案之间的差别包括对已经声明的LISP头部字段的选择性使用。随机数(Nonce)和定位器状态位字段是将应用的最值得注意的LISP头部字段。因为这些位在LISP中被用于通过信号传输端对端信息,所以覆盖网络中所使用的VXLAN头部可以利用L2LISP草案但是以专属方式使用随机数和LSB字段。参见表Ⅲ。再次参考表Ⅲ:源组群字段是被在VxLAN头部的保留部分中的16位字段(如表中所示),其用于从入口TEP向出口TEP运送源分类信息。当向分组应用策略时使用它。假设目的地分类是在叶设备本地导出的:可选择在入口上以及始终在出口上,即目的地分类未被携带在分组中。表Ⅲ中还示出了“源策略应用”(SP)、“目的地策略应用”(SP)、以及“转发异常可见”(E)字段。SP和DP位被用于指示策略已经被应用于分组并且不应被再次应用。如果入口TEP能够在将分组发送至网络中之前应用网络策略,那么它将设置这些位以使得出口TEP不会重复应用它们。当存在缓存未命中时,可能不能在入口TEP处被完全地应用那些网络策略,因为目的地类别未知。在这种情况下,出口TEP必须应用那些策略。出口TEP通过查看头部中的SP和DP位得知它必须应用策略。E位指示发生了转发异常。网络中发生转发异常是正常的。该位只被用于阻止在同一分组上发生多个转发异常以阻止潜在回路。当分组被发送至代理时,执行代理功能的脊应该在该位尚未被置位的情况下对其进行置位。如果该位已经被置位,则脊应该丢弃该分组。表Ⅲ:VXLAN头部字段的子字段此外,在一些实施例中,为了帮助缓解与在硬件中实现当前演变的行业标准努力相关联的一些风险,作为预防,实现VXLAN的ASIC可以有利地利用可编程寄存器来为VXLAN设置目的地UDP端口。可信和不可信系统将在下文中被更详细地讨论,然而,关于VXLAN头部的细节,需要注意的是只有可信系统可以具有设置以下各位的能力,因为它们直接影响所应用的安全策略:源组群、源策略应用、以及目的地策略应用位。在进一步讨论中,为了方便起见,将对VXLAN封装的描述进行缩写,并且除非另有指示,否则以下讨论适用于VXLAN和iVXLAN(iVXLAN是VXLAN的变形/子类型)。通常,最相关的部分是源和目的地IP地址。需要注意的是位置/标识分离覆盖的其他形式可以被用于代替VXLAN。C.散列以分布流在传统网络协议中,技术被用于保证给定流的所有分组均采用相同的网络路径。通过沿着相同的路径,分组不能越过另一个分组并且被保证按序到达,即以它们被发送的顺序到达。此外,传统的协议试图将流分散到网络各处以平衡负载。如果两条路径可用,那么网络可以努力将一半流引导至一条路径并且将另一半流引导至另一路径。网络通过基于唯一定义流的分组信息来散列流以统计地估计流的均匀分布。例如,当网络遇到分组时,它可以在定义流的头部的部分应用散列函数。换言之,它可以在5元组(L3DA、L3SA、L4DP、L4SP、协议类型)(参见上文的表Ⅰ)上应用散列函数。散列函数返回标识哪个可用的网络路径被用于该流的值。如很容易理解地,散列函数是采用相对大量的位作为输入并且输出较少量的位的值的数学运算。还已知散列函数是确定性的:针对给定输入,它总是返回相同的输出。举例来说,TCP分组的头部可以被散列以生成3位输出。该输出表明例如8条网络路径中的哪条路径用于引导流。在一些网络上下文中,被用于标识流的VXLAN分组封装字段可能针对多个流将具有相同的值。将存在具有相同的目的地和相同的源的多个流,并且因此具有相同的散列值。在VXLAN中,L4目的地端口始终相同;它标识VXLAN。如果在叶/脊网络中的给定L4源端口是恒定的,那么散列值将是相同的。这可能会在叶/脊结构中引起问题,因为流量将不会通过可用的路径被很好的平衡。确定流应该采用哪条路径的设备可能不能认识出它正在处理VXLAN分组。正因为如此,它只是散列来自它感知的、作为传统UDP或TCP分组的一部分的VXLAN封装的字段的信息。因此,在叶层上的两个隧道终点之间的所有流将采用通过结构的相同路径。为了平衡负载,期望将相同的源和目的地隧道终点(或终端设备)之间的流通过结构中的多条路径分布在该结构上。存在解决这个问题的多种方式。在一种方法中,网络可以为每个被封装的流选择VXLANL4源端口(UDP源端口)唯一值。这允许叶/脊网络将流分布到叶/脊结构上的不同网络路径。实现这种方法的一种方式是通过基于在分组的非VXLAN部分中定义的底层流的功能来设置针对UDPL4源端口的值。例如,创建VXLAN头部的叶网络设备可以将值散列在定义流的底层TCP或UDP分组中。这些值可以是例如在底层TCP/UDP分组中唯一定义流的整个5元组。生成的散列值被插入封装头部的UDPL4源端口中。当叶/脊结构中的设备遇到这样的分组时,它根据用于确定流路径的协议来散列VXLAN封装字段,并且获取确定通过叶/脊结构的流路径的必要随机值。这种方法在结构中产生了流的高熵分布。做出转发决定的网络设备不需要知道VXLAN。它们只考虑在它们看来是传统的第4层分组头部的封装头部。D.覆盖VXLAN或其它封装可以被用于实现覆盖。例如,在图3所示的简化数据中心叶/脊网络上分组从A被递送至B。图3的网络具有叶设备L1-L4和脊设备S1和S2以及终端设备A和B。每个脊设备S1和S2连接至所有的叶L1-L4。终端设备A被连接至叶设备L1并且终端设备B被连接至叶设备L2。1.传统方法网络知道终端设备B位于何处。它检查来自终端设备A的分组并且了解到目的地是终端设备B。为了到达B,每个网络设备根据它对B的位置的了解来路由分组。然而,如果B移动,那么至少需要通知脊节点。这暗示需要将B的标识和位置分离。此外,在传统网络中,由于网络中的IP子网的布置,将B迁移到网络的另一部分是不太可能的—即,B只能被移动至网络中的、它的子网存在的位置,并且通常该子网只存在于很有限的位置。2.封装方法假设图3所示的网络包含映射,从而使得脊设备知道终端设备B被附接到了哪个叶设备。在叶设备中按转发逻辑维护表。在一些实现方式中,这些表与在传统网络中维护的转发表类似。例如,叶网络设备可能具有包括以下在表Ⅳ中所示的信息的转发表:表Ⅳ标识符位置终端设备B叶L2终端设备A叶L1当从终端设备A到达了将被发送至终端设备B的分组时,叶设备L1查询终端设备B的位置(也就是叶设备L2)并且封装分组。其添加了VXLAN头部(从L2到L1)。封装允许网络管理员四处移动终端设备B,从一个叶设备移动到另一叶设备。在各种实施例中,只有叶设备表了解B的标识的细节。脊设备S1和S2不需要知道标识的细节。它们只需要知道L2在覆盖网络上位于何处。在B移动之后,下一个到达L1并且定址去往B的分组被不同地处理。L1的经更新的表向它指示B的当前位置是不同的叶节点。通过此认知,L1应用标识B的新位置的封装头部。该过程有效地将每个终端设备的位置和标识分离开。单独的脊设备和终端设备不需要知道B的位置和标识的细节。为了该示例的目的,VXLAN只被用于通过数据中心结构递送分组。封装(或者不封装)不需要是数据中心外的任意网络协议的一部分。3.传统路由选择和主机路由分组到达知道它在接口1上具有子网1(例如,192.168.*.*)并且在接口2上具有子网2(例如,192.169.*.*)的路由器。为了有效地进行路由,在端口2的端口上连接的所有节点必须在192.169.*.*子网中。如果这些节点中的一个节点移动,那么需要创建另一路由:例如,节点移动至的路由器的接口现在不只必须标识它的(一个或多个)初始子网还必须标识移动的节点的IP地址。这种至在路由器接口的初始配置的子网之外的经移动的主机的路由被称为主机路由。网络效率随着越多的主机路由被创建而下降。许多路由需要被跟踪并且被频繁更新。在覆盖路由选择中,非常少的主机路由需要被创建,因此当主机在叶设备上的端口之间移动时网络性能不会下降。脊设备只需要保持跟踪几乎从来不移动的叶设备。而且,相比于主机的数量而言叶设备的数量很小,所以,通常在覆盖中必须被处理的路由更少。覆盖封装标识接收方叶设备。还应该理解的是第2层网络还允许在没有创建主机路由的不利的情况下移动终端设备。然而,第2层网络是脆弱的。它们易受广播风暴和回路的影响。它们不支持无限制的冗余路径。如果使用第3层网络,那么覆盖网络有效地允许工作负载随处性和移动性,而没有第2层网络的限制。需要注意的是两个虚拟网络可以在覆盖网络中共享相同的子网。例如,在相同的数据中心中可能存在虚拟网络#1(针对租户#1而言)以及虚拟网络#2(针对租户#2而言)。这两种网络可以分别具有相同的子网络(例如,192.168.5.*)。然而,被定址去往共享IP地址的分组被正确地路由,因为覆盖网络(通过分组封装)知道与这两个网络对应的终端设备驻留在逻辑上分离的硬件或逻辑上分离的网络上。事实上,与这两个网络对应的每组终端设备不需要知道另一组终端设备(或者甚至不需要知道另一网络存在)。在一些实现方式中,利用VXLAN封装的单个叶/脊结构可以具有超过1600万个网络。网络在VXLAN头部的VNID24位字段中被标识。4.覆盖网络中的虚拟化和实时迁移经由管理程序的服务器虚拟化服务器虚拟化被用来使单个物理服务器在网络上表现为并且起到多个虚拟服务器的作用。在许多实现方式中,这些服务器虚拟机(VM)在本领域被称为“管理程序”的软件顶部(atop)运行,其中管理程序作为抽象层坐落在虚拟服务器和底层物理架构之间。可能最为众所周知的、为服务器虚拟化提供管理程序的软件包是由VMWare生成的,尽管其他服务器虚拟化包是由其他供应商提供的,并且一些是开源的。通常,通过虚拟化单个物理服务器可以支持同时运行的约为10或100的数量级个虚拟服务器。由于虚拟化技术提供的优势,它被广泛采用。例如,服务器操作系统(OS)可以多方面地提供不同的技术优势(以及劣势),并且此外,根据特定的软件是为哪种特定的OS设计的,不同的服务器OS使得能够使用不同的软件包或应用。另一优势是每个软件应用可以在它自己的虚拟服务器上运行,这减小或者消除了单个的软件应用可能与在同一服务器上同时运行的另一软件应用的冲突的可能性。相关地,允许各个应用(或仅仅是少数应用)在专用虚拟服务器上运行可能使得更好地管理和共享底层物理资源(例如,RAM、CPU、I/O带宽、网络带宽等),然后分配这些资源变成了管理程序和虚拟软件的职责。当前的服务器硬件架构通常包括一个或多个多核CPU,其中,在一些情况下,各个核可以在硬件级处同时运行多线程(例如,Intel的“超线程”技术)。服务器虚拟层可以帮助将所有这些多核和多线程的有效使用率最大化。最后,终端用户的本地硬件(即,他们的台式计算机)被通常被称为虚拟桌面基础架构(VDI)的东西替代会变得更为常见。在典型的VDI设置中,各个终端用户操作他们的本地键盘、视频显示屏、以及鼠标(KVM)以控制—通过网络—在数据中心的服务器上远程运行的桌面环境。这种类型的架构的已知现有示例是通常结合UNIX和类似UNIX(例如,Linux)的OS使用的X-Windows系统。特别是当单独的终端用户通常只利用在典型台式计算机上可用的一部分计算资源时,VDI可以导致与高效共享硬件利用相关的显著成本节约。(例如,如常见的,只在现代CPU上运行文字处理器、网页浏览器、以及电子邮件客户端。)其它VDI相关的效率涉及系统管理成本的差异—例如,管理在单个服务器上运行的100个虚拟桌面、共享应用等对比管理100个单独的物理桌面、需要频繁更新的软件包的本地拷贝等。因此,由于在现代数据中心中采用服务器虚拟化技术以及日益普遍地利用VDI代替台式计算机,现在在现代计算环境中经常存在虚拟层。实时迁移虚拟环境中的覆盖网络的好处是“实时迁移”,其中在一个物理服务器顶部运行的虚拟服务器可以被移动至另一物理服务器,同时该虚拟服务器保持活跃并且它所有的网络连接保持不变。(在VMWare的产品上下文中被称为VMotion。)由覆盖网络(通过封装)提供的标识和位置的分离通过允许各个虚拟服务器保持它的标识—从覆盖网络外部来看是它被分配的IP地址—使能实时迁移,尽管它在覆盖结构内的物理位置已经从一个物理服务器变成了另一物理服务器。因此,虚拟服务器从一个物理服务器到另一物理服务器的实际转移—同时保持它所有的实时连接不变(即,在“实时迁移”或VMotion等上下文中)—可以按以下方式执行:两个物理服务器之间的网络连接被用于拷贝和转移与正被转移至新的物理服务器的虚拟服务器相关的初始物理服务器的存储器内容(数据和指令)。在这种初始拷贝/转移被完成之后,后续拷贝可以在两个物理服务器之间执行以对自执行前次拷贝之后或在执行前次拷贝期间已经改变的初始物理服务器的存储器内容进行拷贝。这在新的机器上更新了虚拟服务器的拷贝—得以实现是因为正被转移的虚拟服务器在拷贝过程中继续在初始服务器上操作。因此,后续拷贝可能必须被执行多次,直到剩余差异非常小,并且拷贝操作足够快,以使最终在对新的物理服务器进行最后一个拷贝操作之后虚拟服务器可以被离线,然后在新的物理服务器上的虚拟服务器的完整拷贝可以被“唤醒”以替换它的前驱并使所有网络连接、程序应用等保持不变。当虚拟服务器醒来并在新的物理服务器上运行时,它通常发送免费ARP。现在网络知道虚拟服务器位于新的位置而旧的虚拟服务器被破坏。因为实时迁移功能在数据中心中提供的灵活性,它是非常有用的。例如,该技术允许物理服务器被取下以进行维护或者被替换,而它所支持的虚拟服务器可以被无缝转移至另一物理服务器,由此提供不间断的服务。在更复杂的情形中,虚拟服务器可以被周期性地重新分布于物理服务器基础架构各处,为了负载平衡该基础架构的虚拟服务器使用。E.映射数据库的简单概述映射数据库是由结构维护的数据库,该数据库包含从与每个附接至网络的终点相关联的“标识符”至每个终点的“定位器”(终端设备位于其后的隧道终点的地址)的映射。终点地址既可以是终点的MAC地址也可以是IP地址外加它所在的逻辑网络(BD或VRF)。特定的终点IP地址可以与多个TEP相关联。这是“任播”标识符地址的例子。当终点在网络中被发现时填充映射数据库。这种发现或者通过静态配置、第一分组到达、或者通过来自外部控制器(例如,网络编配工具)的通知发生。在任何情况下,叶设备负责通过COOP或LISP控制协议将这种发现传输至脊设备。脊设备保持映射数据库的软拷贝并且还基于该数据库编制代理功能。当入口叶设备转发分组时,它检查它映射数据库的本地缓存。如果它没有找到它寻找的终点地址,那么它会将该分组封装至驻留在脊中的代理功能。当该脊接收到被定址去往它的代理功能的分组时,其将在它的包含整个映射数据库的转发表中查找目的地标识符地址。基于结果,它将分组重新封装至正确的目的地定位器,同时在VXLAN封装中保持原始入口源定位器地址。当出口叶设备从结构接收分组时,该出口叶设备将检查它的映射数据库的本地缓存并且根据包含在分组中的内容更新缓存。然后它将移除封装并且将分组转发至它的最终目的地。总之,映射数据库包含从终端设备标识符到终端设备定位器的映射。通过当所述终端设备附接至网络时的终端设备发现、静态配置、和/或外部控制器来填充映射数据库。最后,在一些实施例中,映射数据库被保存在脊设备(或与脊相关联的另一设备)中,并且通常映射数据库被缓存在叶设备中。F.在VXLAN叶-脊结构覆盖网络中的叶设备和脊设备之间的分组转发责任的划分在图3中已经示出了具有叶-脊拓扑结构的网络的简单示例。该简单网络包括2个脊设备S1和S2以及4个叶设备L1、L2、L3和L4。简单来看,叶脊结构可以由通过叶设备的线进行逻辑划分以将终端设备和它们相应的叶设备端口与脊设备和它们相应的叶设备端口分开。穿过该逻辑线流入结构的分组被封装。穿过该线流出结构的分组被解封装。更详细地来看,覆盖网络边界是由隧道终点定义的,一些边界可以存在于叶设备的外面。下文呈现出覆盖网络边界的详细视图。此外,下文进一步提供了对叶-脊拓扑结构的更详细的解释,然而,下文的两个子章节提供了对叶设备和脊设备可以在覆盖网络的上下文中充当的角色的详细综述。1.在逻辑划分的网络中的叶设备和它们的责任的综述叶网络设备(简称“叶设备”)坐落在结构覆盖的边缘处,其充当覆盖网络的入口点和出口点,并且相应地实现隧道终点(TEP)功能(下文将详细描述)。在一些实施例中,它们还负责路由或桥接租户分组以及应用网络策略。在一些实施例中,叶和脊功能可以被实现在同一物理设备中以优化某些网络情形。如下文的详细描述,进入或离开结构覆盖的网络流量流经叶设备(脊设备只连接至叶设备或者在网络的不同层中的其它脊设备)。至外部网络、以及至服务器和其它终点的连接通过叶设备。除许多其他功能之外,叶设备可以执行以下功能以支持覆盖:实现映射缓存、当在本地映射缓存中存在未命中时将分组转发至代理功能、将分组封装在VXLAN头部中、在入口和出口处执行网络策略、以及实现COOP协议的“公民(citizen)”功能。由各个叶网络设备维护的本地转发表/缓存可以包含所有附接至它的终端设备的MAC和IP地址。转发表还可以包含被学习的附接至其它叶设备的终端设备的MAC和IP地址。这种被学习的地址通常被缓存,并且在一些实施例中,最终从转发表中被淘汰。总体地,叶设备注意到终端设备何时移动或者何时发生拓扑结构改变。在一些实施例中,叶设备可以利用诸如ISIS(替代物包括BGP或OSPF)的路由协议保持跟踪在结构内何时发生了拓扑结构改变(例如,脊设备和叶设备之间的一个或多个链接连接或断开)。在一些实施例中,叶设备可以利用结合本文所述的代理功能的COOP来跟踪新的终端设备至网络的连接、终端设备从网络的移除、以及终端设备在网络内的移动(例如,将连接从一个叶设备移动至另一叶设备)。这个方法的替代方案包括利用BGP或LISP来同步关于至叶设备的终点连接的信息,或者采用典型的泛洪和学习过程(但是以泛洪和学习的固有低效为代价)。然而,在一些实施例中,叶设备不直接将终点连接信息传播至另一叶设备,而是它们向脊网络设备通告终点发现。然后如本文的详细描述,缓存机制按需更新其它叶设备。叶网络设备还执行分组封装。接收被封装的分组的脊设备基于封装头部中的地址快速地将它们转发至其他网络位置。示例性转发表将在下文进行描述。2.在逻辑划分的网络中的脊设备和它们的责任的综述脊网络设备(或者简称“脊设备”或只是“脊”)连接叶设备。然而,通常,脊网络设备不直接互相连接,它们也不充当网络的入口或出口点。然而,在具有多层脊设备的网络中(如下文所述),在一层中的脊网络设备可以被连接至在不同层中的脊设备。下文将详细描述具有2层脊网络设备的3层网络的示例。在一些实施例中,脊设备被实现为第3层、IPve交换机。在具体示例中,脊设备是40GB/s以太网交换机。脊设备通过其自身托管的代理功能或者通过与托管代理功能的独立设备相关联来采用(本文所述的)代理功能。因此,与脊设备相关联的是(下文所述的)主映射数据库,该主映射数据库被用于有效地将被封装的分组路由至形成结构的叶设备。需要注意的是除非另有说明,否则当描述脊设备的操作时,假设了它们托管代理功能、不然就是当需要时可以访问代理功能的执行。因此,当在脊设备处接收分组时,它可以检查该分组的目的地定位器是否是代理地址(在一些实施例中,存在如下文所述的多个代理地址),并且,如果是,则执行代理功能,将代理地址替换为与分组的目的地相关联的TEP的定位器地址,并且相应地转发分组。如果分组的目的地定位器地址不是代理地址,则脊设备(在它的转发表中对目的地定位器地址进行查询之后)只根据标准的和已知的转发机制转发分组。此外,在下文描述的许多实施例中,脊设备还托管COOP协议的“Oracle”组件。在叶设备和脊设备之间逻辑划分分组转发责任的额外的优势和影响是线的脊侧具有相对少的设备。超大型网络的示例将具有大约500个网络设备,包括脊设备和叶设备。根据路由协议的角度来看,这是小网络。通过对比,线的终端设备侧可能具有20000个服务器—也就是说,如果有大约500个叶设备,那么每个叶设备连接40个服务器。此外,如果40个物理服务器中的每个服务器都支持10个虚拟机,那么这给出了具有大约200000个网络地址的网络。通过以这种方式划分数据中心网路,脊和任意内部网络设备可以有效地运行,而不受关于终端设备的位置和连接性的详细信息的阻碍。通过划分在相对少量的、操作很快的内部网络设备和必须保持跟踪超大量的服务器或其它终端设备的叶设备之间的网络产生了显著的效率。在一些实施例中,终端设备与非叶内部网络设备(例如,脊设备)的比例至少约为400:1。通常,脊设备和任意其它内部网络设备具有非常快的接口,例如,大约40千兆位/秒或更快。经简化的路由允许脊中的可用硬件和软件资源集中在性能上。覆盖网络和相关联的封装允许网络如所述的那样进行划分。负责封装的叶设备还负责维护关于终端设备的位置和标识的细节。该信息中的某些信息从结构中的脊设备和任意其它内部网络设备被掩蔽。将其掩蔽是因为叶设备在它们将分组转发至结构内的脊或内部设备之前对分组进行封装。然而,叶设备可能必须关注底层分组中的地址信息以及封装,而脊设备通常只关注封装部分中的地址信息。在一些实施例中,被划分的结构的脊侧运行针对少量的地址优化的路由协议,并且结构的终端设备侧运行针对大量的地址优化的路由协议。一些路由协议对于处理少量的地址是有益的。它们快速地会聚。一个示例是ISIS。其他的路由协议更擅于处理大量的地址,但是它们可能不能如此块地会聚。一个示例是BGP。在一个示例中,脊侧运行ISIS而外部侧运行BGP。不论实际选择的路由协议如何,总有一个协议被用于维护关于终端设备连接性的信息并且另一协议被用于控制结构内的路由。在一些实施例中,脊和内部网络设备仅运行单个协议。与传统网络中的路由器不同,它们不需要考虑多个路由协议。当然,叶设备可能必须处理多个路由协议。在该数据中心上被逻辑划分的覆盖网络具有各种优势。第一,它提供了针对大量虚拟网络的容量。通过利用在所述VXLAN头部中的24位字段,物理基础架构可以支持超过1600万个虚拟网络。第二,脊主干可以具有极高的性能。它不需要将显著的计算机资源用于路由表维持或多个路由协议。第三,网络设计允许位置和标识的简单分离。如本文所述,叶设备保持跟踪例如映射数据库中的位置和标识。第四,网络可以是多协议的而不需要改变脊;例如,网络可以支持IPv4和IPv6或其它协议而不需要脊支持所有这些协议。3.桥接-路由混合网络生成树是用于在第2层网络中移除潜在回路的协议。它是通过在逻辑上断开网络中的链接以在任意拓扑结构中创建非循环图来实现的。因此,它移除了所有冗余路径并且余下路径中的一部分是次最优的。生成树将移除许多叶/脊拓扑结构的值。拓扑结构中固有的大量路径冗余将被移除以消除潜在的第2层回路。利用第3层路由可以克服这种限制。然而,不幸的是一些网络设备不使用IP(或者因为各种原因,不在支持IP的模式下运行),并且因此不能生成可以被路由的分组。例如,服务器可以运行不能够生成IP分组的网络软件。路由可以利用如上所述的封装在非IP分组上被执行。路由允许网络节点之间的冗余路径。所以生成树不是必需的并且网络性能被提升了。在本文所述的实现方式中,数据中心支持第2层分组,但是它利用路由来在数据中心结构上递送那些分组。路由启用多路径。也就是说,两个终端设备之间的不同的流可以采用不同的路径。从一些角度来看,数据中心可以是第2层网络。例如,底层分组(充当VXLAN分组的有效负载的第2层分组)未被修改。它们在适当的时候在叶网络设备之间被桥接。在网络上发起通信的终端设备可以认为它们在第2层处通过桥接通信。它们创建在头部中具有MAC地址的第2层分组。它们可能不知道叶设备正应用封装来促进叶/脊网络内的路由。这种布置在不干扰第2层网络连接的情况下提供了第3层网络连接的所有优势。网络不关注终端设备是否认为它们正在桥接或路由。4.叶节点标识附接至它的终端设备每个叶网络设备确定和维护关于附接至它的终端设备的信息。它可以利用各种技术来完成。这些技术中的一些技术包括从终端设备拦截原始分组。第一选择:DHCP请求—终端设备附接至的叶设备等待来自终端设备的DHCP请求。当此类请求发出时,叶设备拦截DHCP分组以学习终端设备的MAC地址。然后它将该请求中继至分发IP地址的DHCP服务器,并且将其返回至叶设备,随后该叶设备在将响应传递至终端设备之前学习该IP地址。所以终端设备附接至的叶设备知道新附接的设备的IP地址和MAC地址二者。第二选择:免费ARP—终端设备从其它处理(例如,VMWare处理)知道它的IP地址。服务器通过发出免费ARP来在网络上宣告它的存在。接收免费ARP的叶设备从该免费ARP分组中学习终端设备的IP地址和MAC地址。第三选择:其它分组—终端设备发出包含源IP和源MAC地址的其它分组。第四选择:其它非IP分组—终端设备发出包含MAC地址但不包含IP地址的其它分组。在这种情况下,叶设备将只学习MAC地址。如果IP地址随后将被终端设备使用,那么相应的IP地址将在那时被学习。5.传播网络变化以及维护映射数据库通过无论什么方式,叶设备学习到针对附接至它的终端设备的MAC和IP地址。然后叶设备利用该信息更新它的本地转发表。其它叶设备可能通过诸如BGP之类的协议来更新它们的映射表。在本文所述的实现方式中,叶设备不利用传统的路由协议传播信息。而是它们各自维护它们自己的表,该表包括针对附接至相关联的叶设备的每个终端设备的信息。该信息包括附接的设备的标识以及它附接至的端口。在一些实现方式中,叶设备利用神使审议会协议(CouncilofOraclesProtocol(COOP))或相关协议来传播表信息。COOP具有从“神使(oracle)”获取信息和/或向神使发送信息的“公民”。神使利用针对覆盖网络的终点的当前位置-标识信息填充映射数据库。公民向维护主数据库的神使提供被更新的信息。可选择地,公民从神使处查询来自主数据库的信息。在本文所述的某些实现方式中,公民将它们从主数据库学习的信息缓存,但是它们不向神使技术查询该信息。在某些实现方式中,神使与一个或多个脊设备处的代理功能共同存在。叶设备公民发现终点和终点中的变化并且将它们报告给神使。协议可以采用将某些神使指定为针对关于某些终端节点的某些发现信息的接收方的机制。在这种方法中,脊设备彼此共享被报告的终点信息以保持完整的主数据库。脊设备可以利用TCP连接进行内部通信。在某些实施例中,协议在没有封装的情况下被实现。例如,叶设备可以经由标准非封装的网络连接来将映射数据库信息传输至神使,并且神使可以经由标准非封装的网络连接来相互同步信息。理论上,神使可以坐落在与脊设备不同的位置。例如,它们可以在叶设备或在单独的服务器上实施。因为存在相对少的脊设备并且无论如何分组必须通过脊设备被转发,所以COOP神使方便地位于脊设备中。神使设备(脊设备或其它)可以通过咨询映射器来服务代理功能,如本文别处所述。通常,与COOP不同的转移机制可以被采用以维护和使用主数据库。LISP控制协议是另一示例。在某些实现方式中,叶设备只向脊传播最新学习的信息。它们不向其他叶设备传播信息。它们向脊通知附接设备的标识以及它附接至的叶设备。它们可以决定告知哪个脊设备利用散列函数(例如,通过散列附接的设备的地址)。因此,特定的脊设备变成针对特定终端设备的控制器。因此,在一些实施例中,网络不能具有针对特定终端设备的不一致位置信息。然而,在某些实施例中,接收方脊设备与其它脊设备同步新学习的信息。通过这种方式,在脊上的每个设备保留被附接至叶层的所有终端设备的完整控制器列表。在其它实施例中,叶设备会随机选择脊设备。然后该脊设备会基于已经发现的终点的地址的散列值将终点信息发送至另一脊设备,从而有效地完成如上文所述的相同事情,而不需要叶设备确定向哪个脊设备发送。如上文提到的,本地转发表在叶设备中被提供。通常,这些表在各种叶设备中不是完全相同的。转发表存储附接的设备的标识(例如,MAC和IP地址和其它信息)以及它们被附接至的叶设备(定位器)。与使用这些表相关联的转发逻辑可以在硬件中被实现。各表相比于附接至网络的终端设备的总数而言是相对小的。主映射数据库被存储在脊设备中。它表示在每个叶层映射表中的所有信息的组合。然而,它不包含终端设备的细节,例如,MAC至IP地址绑定。用于访问映射数据库的脊设备逻辑可以在脊设备的硬件中实现。该表足够大到具有针对每个(虚拟的和物理的)附接设备的条目。在一些实现方式中,它可能足够大到支持百万个条目。COOP或其它类似的协议可以允许有效地按照叶设备增长的数量来调整规模。在一些实施例中,努力维护必要的表信息充分增大了叶设备数量的独立性。而在某些这样的实施例中,表的维护工作随着脊设备的数量调整,脊设备的数量通常是可管理的小数量。6.更新转发表和主映射数据库的过程—以及代理所述覆盖网络的相关特征如下:1.代理—当从附接的终端设备接收新分组的叶设备不知道哪个其它叶设备负责连接被指定目的地的终端设备时,在封装中使用代理目的地;以及2.学习—接收方叶设备通过对去往接收方叶上的设备的分组进行解封装来学习其它叶设备上的终端设备。然后接收方叶更新它的转发表从而使得它在转发去往在它表中的设备的分组时不需要使用代理目的地。入口叶设备接收具有目的地地址的分组。它在它的转发表中检查该地址。如果该地址不在它的转发表中,那么它将该分组发送至代理。因此,在某些实施例中,叶设备只确定目的地是否在它本地。当不在它本地时,叶设备通过利用代理的目的地定位器地址对其进行封装来将分组发送至代理。在一些实施例中,当叶设备在它本地的转发表中检测到未命中时,它用是代理的目的地地址封装分组。在一些实现方式中,代理地址是由所有脊设备共享的虚拟地址。在一个示例中,逻辑上覆盖使用两个代理,一个代理用于桥接(当分组去往目的地时目的地的MAC地址保持不变),另一代理用于路由(MAC地址在入口叶设备或者出口叶设备改变)。接收被编址去往代理的分组的脊设备会在它的主映射数据库的拷贝中查找目的地的叶网络地址。然后脊设备会在封装头部中用目的地设备的定位器地址(它的标识符)替换代理地址。接收封装的分组的叶设备会对它进行解封装并且将它发送至附接至接收方叶设备的、编址的目的地设备。此外,接收方叶设备可以利用从封装的分组中学习的源信息(标识符和定位器)来更新它本地的转发表。如果转发表已经包含针对该分组的源的条目,那么它会确认条目没有改变。如果有必要,它会用新的位置更新该条目。如前所述,叶设备的转发表存储设备的标识和它们附接至的叶设备定位器。在下文中,本文件提出了叶设备可以用来针对结构上的入口和出口的分组进行路由和桥接。因此,叶设备的转发表包括针对附接设备的一些条目(这些条目可以通过拦截来自附接设备的分组获取)以及从接收到的、去往附接设备的封装分组中的源地址中学习的其它条目。在一些实现方式中,学习到的针对附接至其它叶设备的条目被缓存并且在一段时间后被淘汰、或者被非常慢淘汰。入口叶设备的本地转发表有时包括针对在远程叶设备上的分组的目的地的条目。在此类情况下,入口叶设备在不使用代理地址的情况下基于转发表的内容创建封装并且在覆盖网络上转发分组。当然,如果入口叶设备被附接至源终端节点和目的地终端节点两者,那么它既不需要在覆盖网络上发送分组也不需要封装该分组。Ⅱ.隧道封装点隧道封装点(TEP)通常代表到覆盖网络的入口和/或从覆盖网络的出口,其中覆盖网络例如是实现VXLAN的一者。为了进入VXLAN覆盖网络,分组穿过VXLAN封装在其中被应用至分组的TEP。为了退出VXLAN覆盖网络,分组穿过VXLAN封装在其中被移除的TEP。因此,到达网络的分组会被TEP封装并且通过网络发送至在其中它们会被解封装的另一TEP。虽然本部分的讨论假设覆盖网络封装是VXLAN,但是可以按照本领域技术人员的理解替换其它类型的封装。TEP可以被看作是叶-脊网络的结构内的封装/解封装功能。每个叶和脊网络设备通常包含TEP,每个TEP通常与IP地址相关联,在一些实施例中,IP地址被与在TEP驻留侧上的叶或脊网络设备共享。因此,TEP可以被看作是坐落在网络上的设备。TEP可以被概念化为按上文所述执行封装/解封装,然而,在实践中,可以采用捷径来对已经到达的具有封装的分组进行解封装。例如,到达叶-脊网络的脊网络设备的分组已经具有(由叶设备应用的)VXLAN封装,并且会被应用在脊网络设备处的解封装通常只涉及用分组的预定接收设备的正确目的地地址(假设完成初始封装的叶设备不具有这种可用信息)替代IP目的地地址字段中的代理地址。因此,当脊TEP执行这种代理映射功能时,通常只修改已经存在的VXLAN封装的目的地地址字段,而不是去除之前的VXLAN封装并且重新应用具有正确目的地地址的新封装。然而,这种代理服务通常被概念化为发生在覆盖网络之外,例如,通过以下顺序:VXLAN封装的分组到达具有代理映射功能的TEP、该分组退出覆盖网络、TEP将代理映射功能应用至给它正确的目的地IP地址的分组、然后被重新封装的分组通过TEP被送回覆盖网络。然而,虽然这是哟用的概念性角度,但是应该理解的是在一些实施例中,实际发生的是通过代理映射功能对已经存在的VXLAN进行修改。通过这种方式,脊中的TEP可以提供在本公开中的其它地方被详细描述的代理功能。通常,叶和脊网络设备分别包含单个TEP。然而,在一些情况下,叶或脊设备具有多个TEP可能是有利的。例如,在一些实现方式中,在每个脊中存在两个TEP,一个用于第二层代理并且另一个用于第三层代理。在一些实施例中,每个叶和/或脊网络设备具有多个TEP可以使得覆盖网络能够提供多个拓扑结构以管理去往相同终点的不同类型的流。在一个此类情形中,通过在主要专用于低延迟流量的第一TEP处封装分组,被归类为低延迟(受益于低响应时间)的网络流量以低延迟路径被路由,并且通过在主要专用于高宽带流量的第二TEP处封装分组,与大量文件转移(其中总体带宽比响应时间更重要并且间歇性延迟是可接受的)相关联的网络流量在高带宽路径上被路由。例如,在低延迟TEP处的封装可以沿着穿过低延迟脊交换机的路径路由分组。通常,根据被路由的分组的类型、网络的当前负载、以及更具体的每条路径的利用率,成本与每个路径/拓扑结构相关联。然而,沿多个路径/拓扑结构负载平衡可以通过分配的成本来管理。如果因为一些原因低延迟路径/拓扑结构不可用(例如,出现链路故障),那么它相关联的成本将比高带宽路径/拓扑结构高,即使是针对低延时分组,因此通过这种形式所有的分组仍然可以到达预期的终点。A.VXLAN覆盖网络到服务器虚拟层的扩展在一些情况下,TEP可以在诸如服务器之类的终端设备上、或不是专用网络设备的一些其它设备(即,TEP可以与除交换机、路由器、叶设备等之外的设备相关联)上实现。在叶-脊结构覆盖网络的上下文中,这意味着例如终端设备知道并且使用叶-脊结构覆盖网络的封装协议。例如,如本文所讨论的,现代数据中心内的“服务器”现在实际上通常是在由一个或多个底层物理服务器或相关联的软件实现的虚拟层(通常被称为“管理程序”)内运行的虚拟机。通过在所述虚拟曾内执行一个或多个TEP,覆盖网络可以被延伸到服务器虚拟层。在一些实施例中,通过在在一个或多个网络服务器上运行的管理程序内运行支持VXLAN的虚拟交换机和TEP(以下称“V-交换机”),基于VXLAN的覆盖网络可以被延伸至这样的服务器虚拟层。V-交换机可以是由叶-脊网络基础架构(例如,INsieme、Inc.、思科系统等)的供应商提供的软件,或者它可以由服务器虚拟软件(VMWare、Microsoft、开源等)的供应商提供、或者它可以由另一方提供,因为VXLAN是由各种供应商支持的开放标准。然而,如果V-交换机被特别发展为与叶-脊网络的结构一起工作,那么它可以被设计成关于叶-脊网络的除提供基本的VXLAN封装/解封装功能之外的功能,例如,通过在V-交换机处向网络流量应用策略。因此,在一些实施例中,专用于与叶-脊网络(如上所述)一起工作的特定V-交换机可以被安装在由另一供应商提供的服务器虚拟软件包的管理程序中。当完成这个之后,由V-交换机提供的功能模仿由叶网络设备提供的功能,尽管以软件形式。例如,通常在叶网络设备处应用的网络流量策略现在可以在V-交换机处被应用。实际上,这样的V-交换机将覆盖网络的虚拟边界延伸到管理程序中。如在别处所解释的,在服务器虚拟层运行VXLAN覆盖网络的好处是它支持超过1600万个虚拟网络(因为在VXLAN的头部中,VNID字段是24位宽),然而传统的2层VLAN只支持4096个不同的虚拟网络(因为它的12位网络ID字段)。然而,尽管在服务器虚拟层内运行VXLAN覆盖网络伴有优势,但是应该理解的是这样的配置对连接至不采用VXLAN覆盖的网络的虚拟网络而言是不需要的,例如本文所述的叶-脊覆盖架构。在一些实施例中,在叶设备上的或在管理程序内的V-交换机的上下文中运行的TEP不只可以应用封装来对分组解封装,还可以以适配于覆盖网络结构的、不同格式的封装来替换一种格式的封装。这在外部覆盖网络在针对考虑中的网络的TEP处被终止的情况下是必要的。在一些情况下,当封装实现不应受结构扰乱的功能时,例如,封装实现在考虑的覆盖网络的顶层运行的覆盖网络,TEP可以将封装的分组当做是非封装的。这样的封装应该保持完整,从而它可以在分组退出考虑的覆盖网络时可以被处理。VLAN虚拟化第2层网络,这允许重复使用MAC地址但不允许重复使用IP地址。在大的数据中心中,可能存在非常大量的终端设备和相关联的IP地址。因此,终端设备上的虚拟化技术必须能够支持这种许多节点。它必须利用如本文其它地方所述的大映射数据库来完成。无论虚拟机何时移动,针对该虚拟机的所有映射数据库的条目必须被更新。在具有数百个物理机器的大型网络中,每个物理机器具有许多个虚拟机,这可能要求数百万个更新。相比于传统的管理程序,虚拟交换机被很好的调整来处理对它的映射数据库部分和/或其它网络管理的管理。它还与具有它们自己的TEP的结构叶和脊网络设备进行很好的同步。B.对进入覆盖网络的可信与不可信分组的封装(在通常驻留在叶设备上但也驻留在V-交换机上的TEP处)进入VXLAN结构覆盖网络的分组根据它们是否是VXLAN封装被区别对待。如果入站分组不是VXLAN封装,那么它或者是非封装的、或者是用不同于VXLAN的东西(例如,NvGRE)封装的。如果入站分组不具有预先存在的VXLAN分组,那么问题是该分组是可信VXLAN封装的分组还是不可信BXLAN封装的分组。图4显示的示样逻辑基于上述区别示出对入站分组的不同处理。如图所示,401处的入站分组经由分组分类逻辑块405被分成4类:无(或未知)封装(410)、可信VXLAN封装(420)、不可信VXLAN封装(430)、以及NvGRE(或其它已知的非VXLAN协议)封装(440)。在最简单的情况中,入站分组已经拥有可信VXLAN封装(420),并且在这种情况下,分组只保留它预先存在的封装并且照原样经由逻辑块480被转发到网络上。网络设备不需要对分组进行修改。针对其它情况(410、430和440),VXLAN封装会在隧道封装点(TEP)470处被应用至入站分组(或对入站分组进行修改)。针对没有封装(或具有未知封装)的分组,即情况410中,分组的12位VLANID在逻辑块450处被提取并且在逻辑块452处被转换成随后会被传递至映射功能逻辑块460的24位VNID(详情如下),映射功能逻辑块460决定会被应用至入站分组的适当的分组(VXLAN)头部。这种信息(指定适当的分组头部)是从映射功能逻辑块460传递至TEP470,实际上是TEP470将被指定的封装头部应用至在458处进入TEP的入站分组。一旦被适当地封装,分组在转发逻辑块480处被转发到网络上。类似地,针对具有预先存在的不可信VXLAN封装(即,情况430)或具有另一封装(例如,VvGRE封装)(即,情况440)的入站分组,该分组会在455处将它的封装去除并且提取24位VNID。需要注意的是在入站NvGRE封装的分组的情况440中,在在455处分析(去除)分组的封装之前,分组的NvGRE封装在445处被转换成VXLAN。不论是哪种情况,包括24位VNID的、关于先前封装的信息从逻辑块455被传递到映射功能逻辑块460,与未封装的分组的情况相同,映射功能逻辑块460决定在470处会被应用的适当封装。在TEP470应用了封装后,分组在逻辑块480处被转发。从被设计来与叶-脊网络一起工作的V交换机转发的分组通常被看作是可信封装,因此照原样被转发(例如,图4的情况420)。这是因为V交换机功能与叶-脊网络内的叶网络设备类似并且应用完全一样的封装,如映射表所确定的,映射表以与在物理叶网络设备中存储的方式相同的方式被更新和同步。那些V交换机和他们相关联的虚拟服务器时可信的、哪些不是可信的可以经由驻留在叶网络设备中的表中的IP地址查找在相关叶网络设备的TEP处决定—表中的条目由配置设置。经由各种叶网络设备的特定指定端口进入网络的分组还可以被设计成是可信的(例如,通过在物理端口上设置交换机)。另一方面,如果入站的VXLAN封装分组是不可信的(例如,图4,情况430),那么它的VXLAN头部在分组可以被识别时被去除,并且新的VXLAN封装经由映射功能被确定并且在适当的TEP处被应用(例如,在图4中,由映射功能逻辑块460确定并且在TEP470处被应用)。因此,在一些实施例中,VXLAN结构覆盖网络可以通过确定通过其接收分组的TEP是否被归类为接收可信或不可信分组来区分可信和不可信分组,并且这可以通过检查将TEP标记为可信或不可信的TEP的表来完成,例如,将在叶网络设备上的那些TEP以及作为在(例如,在管理程序内)虚拟环境中运行的可信V交换机被提供的那些TEP归类成可信TEP。如上文关于图4所述,如果新的VXLAN封装在TEP处被应用至入站分组(因为分组没有封装、或者因为它具有与VXLAN不同的封装、或者因为它具有的VXLAN封装是不可信的),那么入站分组所属的虚拟网络(如果有的话)需要在分组的新的VXLAN封装中被标识和捕获。具体地,标识入站分组的虚拟网络的VNID被确定和存储在所应用的VXLAN封装的VXLAN头部的VNID字段中。因此,例如,如果入站分组没有封装,则它的12位VLAN标识符被转换成24位VNID(例如,在图4的逻辑块452处)并且被存储在新的封装的VXLAN头部中。以这种方式(在覆盖网络的上下文中给它们分配24位VNID)处理未被封装的分组的一个优势是它有效地使VLAN对超出该特定TEP的覆盖网络之外的部分本地化。类似地,如果入站分组被NvGRE封装,则NvGRE内的24位VSID(虚拟段标识符)被提取成相应的24位VNID(例如,在图4的逻辑块455处)。类似地,网络标识符还可以从其他封装格式中被提取,并且只要该其它封装格式可以被网络设备的入站分组处理逻辑(例如,图4)、映射功能逻辑、TEP等等理解,就可能被转换成24位VNID。最后,另一可能性是可以基于与在接收到的/未被封装的分组的虚拟网络标识字段中携带的信息不同的信息来设置封装头部的VNID字段。例如,叶设备通过其接收未封装的分组的物理端口可以被用于设置封装头部中的VNID(这可以作为每个端口的配置被编程到叶设备中)。其它可能包括利用接收到的分组的源和/或目的地IP和/或MAC地址、或者在可以被有利地用于标识分组以应用策略的、被接收的分组中所携带的任意其它信息等。如上文所述,任何在先的封装是在应用新的VXLAN封装之前被去除的,然而在一些配置中,在先封装通过将其处理成分组的有效负载的一部分而被保留和忽略。在一些实施例中,这可以经由端口配置来设置(例如,通过在端口上设置物理交换机)。具体地,如果在特定的端口不期待VXLAN封装的分组,那么该端口可以被设置为忽略所有的封装并且只将包括任意封装的完整分组看作是后续VXLAN封装的有效负载。例如,这在另一覆盖网络打算在本文所述的结构覆盖网络的顶部操作时是有用的,因为保存入站分组的在先封装(其它覆盖网络的封装)允许其它覆盖网络无缝操作,而不需要依靠(甚至知道)另一封装正被用于(在它自身上)传输它的分组。还应该注意的是分组的预先存在的封装不会被去除—从而被看作有效负载—如果封装是未知的,从而不能被TEP识别。最后,应该注意的是“信任”可以被实现为多个等级。例如,可能存在至覆盖结构的特定入口点应用策略是被信任的但应用为结构优化的封装是不受信任的的情况。在这种情况下,叶设备处的TEP例如可以保存策略但利用最适合于考虑的覆盖网络的信息重建封装头部。C.覆盖网络的终止和重启以提升缩放性服务器虚拟化和覆盖网络扩展到服务器虚拟化层可以提供本文所述的益处中的一些或全部,但在一些情况下,它还带来了巨大的挑战。因为数据中心虚拟化有效地利用一定数量的虚拟服务器替换各个物理服务器,虚拟化可以极大地增大生成和接收网络流量的网络上的终端设备的有效数量。例如,如果连接至网络的各个物理服务器被用于支持200个虚拟服务器,那么在没有虚拟网络时网络的规模会有效地增大到它规模的200倍。该问题特别出现在使用和维护映射数据库时,包括存储在脊网络设备处的完整数据库、以及与在叶网络设备处本地存储的各种终端设备相关联的子集合。基本问题是由于虚拟架构,映射数据库必须保留各个和每个虚拟服务器/虚拟机(VM)的标识和位置,以便于适当地封装针对覆盖网络的分组。因此,由于对这些缩放性的关注,实际不将覆盖网络扩展到由连接至网络的各个物理服务器提供的服务器虚拟层可能会具有一些优势。如果不扩展到服务器虚拟层,那么覆盖网络的边界与叶网络设备的TEP相一致。当然,应该理解的是覆盖网络是否扩展到服务器虚拟层可以为每个物理层单独配置,并且在一些情况下,为驻留在相同物理服务器上的不同虚拟服务器单独配置。如果覆盖网络的边界与叶网络设备的TEP相一致,那么还可能具有在服务器虚拟层运行的VXLAN覆盖网络,但如果是这样,那么它基本上可以被看作是单独地覆盖网络。在这种情形中,两个覆盖网络可以被共同看作在服务虚拟层内的V交换机的TEP处发起、在叶网络设备的TEP处结束、并且在叶网络设备的TEP处重新启动。VXLAN覆盖网络的这种结束和重启的一个结果是当接收VXLAN封装的分组时充当覆盖网络的入口点的叶网络设备通常利用与它的TEP相关联的源定位器地址来替换封装头部的源定位器,即使分组的在先封装是可信的。同样的,叶网络设备处从覆盖网络出去的、但在结束/重启环境中保留它们的VXLAN的分组通常具有利用出口叶设备的TEP的地址替换的、它们的VXLAN封装的源定位器字段。相反地,如果覆盖网络经由在连接至叶设备的服务器上运行的V交换机扩展到服务器虚拟层,那么覆盖网络的边界逻辑上与这些V交换机的TEP而不是与物理叶设备的TEP相一致,并且因此穿过这些叶设备的分组的VXLAN封装的源定位器字段不被叶设备修改。终止和重启特别有用的一种情形是在连接至网络的物理服务器的管理程序中存在不可信的V交换机。在不可信情形中,每个叶网络设备已经在它从V交换机接收分组时重新进行了分组的VXLAN封装。因此,在物理服务器和叶网络设备之间,可能被认为有一个覆盖网络(管理程序网络)的结束和另一(叶-脊网络)的开始。因此,以这种情形为例,由在管理程序内运行的虚拟服务器发送的分组在它们离开管理程序和物理服务器时会被首先封装,然后当被接收时由叶网络设备重新封装。由于这种在叶网络设备处的重新封装,使得在管理程序的虚拟化网络内应用的初始封装不需要基于叶-脊网络上的所有设备的位置的知识。而由管理程序内的TEP使用的映射数据库只需要知道在管理程序内运行的虚拟服务器的标识(IP地址)、以及与叶网络设备的连接相对应的TEP的IP地址。因此,管理程序的TEP所用的映射数据库可以是小得多的数据库,这显著提升了此类叶-脊网络的缩放特性。叶网络设备通常具有与它们具有的线性链路端口相同数量的下行链路TEP,但管理程序的虚拟交换机中的TEP的数量通常只有2个。一个TEP将某封装应用至去往管理程序的VM的流量,即它自己的TEP地址,而另一TEP封装去往叶网络设备的流量。虽然这种结束/重启范式是在具有不可信V交换机的连接的环境中进行了描述,但是应该注意的是它还可以在可信设备的环境中实施。在一些实现方式中,可信分组被重新封装以提升覆盖网络的规模。Ⅲ.利用映射数据库转发A.简介和上下文如之前解释的,映射数据库将标识(或标识符)映射至位置(或定位器)。在查看标识和位置之间的区别的一种方式中,位置是“外部”地址,而标识是“内部”地址。外部地址是在封装头部(例如,VXLAN或NVGRE头部)中,而内部地址是在封装的分组中。当终端设备在网络上的位置间移动时,它的位置改变但它的标识可以保持不变,因为覆盖网络提供的标识和位置是分开的。位置:封装中的目的地地址标识在网络上具有位置的TEP。于是映射数据库中的每个条目可以被网络TEP的不同目的地地址唯一标识。在一些实现方式中,位置是由IPv4地址标识的,而在其它实现方式中,位置时由IPv6地址标识的。其它类型的隧道封装可以使用其它位置标识符。标识:在一些实现方式中,映射数据库中的标识符包括MAC地址、IPv4地址、和IPv6地址中的一个或多个。该选择取决于用于转发分组的堆栈,该堆栈通常反映了源和目的地终端设备的能力。此外,一些实现方式要求地址和环境两者以唯一标识每个网络标识符。环境可以是虚拟网络标识符,例如,VNID。因此,在一些实现方式中,针对主数据库的条目的唯一标识符是由虚拟网络标识符和目的地地址构成的。而且目的地地址可以是MAC地址或IP地址。在一些实现方式中,终端设备的整个VNID和目的地地址是以固定的尺寸值(例如,56位字段)被组合的。该值可以充当进入网络转发表的密钥。覆盖网络通过捕获它的第一分组并且检查包括它属于的虚拟网络(如果有的话)的源信息来学习新设备的标识。叶设备可以通过诸如COOP或LISP之类的协议来传输该信息。覆盖网络已经知道新设备的位置。新设备被附接至的可以是叶设备。该位置由(面向考虑的覆盖网络的)TEP地址指定。在完整版本的映射数据库中,存在针对所有终端设备的条目,这些条目中的许多条目可以是虚拟终端设备。该虚拟终端设备可以与附接至覆盖网络TEP的虚拟接口(例如,VNIC)相对应。覆盖网络维护两种特点的映射网络数据库:一个在脊层而另一个在叶层。在脊层中的那个具有较多的条目但关于每个条目具有较少的信息。脊层版本维护针对附接至覆盖网络的每个终端设备的独立条目,但在一些实施例中,关于每个记录保持了较少信息。在一些情况下,在脊层面仅需要两条信息:标识和位置。对脊设备的功能而言其他信息可能是多余的。如之前解释的,标识可以是终端设备的地址(MAC或IP)和上下文(例如,虚拟网络),而位置可以是覆盖网络上的TEPIP地址。用于访问脊设备数据库的逻辑可以在硬件、软件、或其组合中实现。在一些实施例中,上文所述的脊设备数据库可以位于不同于该脊的其它地方。映射数据库和相关联的代理功能可以位于脊层的一个或多个网络设备上,或者映射数据库可以位于与脊层的网络设备相关联并且可访问脊层的网络设备的另一网络设备上,并且代理功能可以由该另一网络设备执行。在叶层面上,针对在结构之外进行转发的叶设备保存了更多的信息,诸如物理端口信息。在某些实施例中,要求覆盖功能的叶层面映射数据库与一个或多个其它组分(例如,要求常规路由的转发数据库)融合。策略信息可以被存储在被融合的数据库中。可以由叶设备、脊设备、代理和/或其它设备维护的示例表将在下文中进行进一步的描述。这些表中的任何表可以在软件和/或硬件中实现。B.利用转发表在叶设备处的分组转发当叶设备接收去往目的地终端设备的分组时,叶设备查找与分组的转发相关的信息。根据该信息,叶设备可以决定分组应该被转发至的适合的设备或隧道终点、以及可能的网络环境。例如,叶设备可以获取分组会被转发至的隧道终点(TEP)的地址(例如,IP地址)。此外,叶设备可以决定封装是否适当,如果适当,那么获取进一步的信息以用于封装分组。叶设备可以酌情封装分组,并且将分组转发至适合的TEP或设备(例如,终端在叶设备本地的位置)。叶设备还应该能够将分组桥接或路由至附接至它的终端分组。叶设备从一个或多个表中获取转发信息。叶设备利用关于目的地设备的标识符信息来查找位置信息。如果叶设备已经存储或缓存了终端设备的当前位置并且此位置是在不同的叶设备上,那么转发叶设备可以酌情封装分组并且将分组转发至脊设备。然而,如果叶设备不具有终端设备的位置,那么它可以酌情封装分组并且将分组转发至拥有代理功能的设备,该代理功能能够将终端设备的位置插入分组的封装头部中。代理功能可以在脊或叶设备中、或者在诸如服务器的单独设备中实现。1.由叶设备维护的示样表的详细描述当叶设备接收分组时,它在它的本地转发/数据库表(一个或多个)中查找终端设备的标识符。当叶设备可以维护包含关于分组转发的信息的单个本地转发表时,在下文提出的示例中,叶设备维护三个独立的本地表,这些表被酌情组合用于桥接、路由、和/或封装分组。这些表包括转发表、邻接表和封装表,下文将参考图5A、5B和5C对其进行进一步的详细描述。图5A是根据各种实施例示出可以由叶设备维护的示例性转发表的图示。图5B是根据各种实施例示出可以由叶设备维护的示例性邻接表的图示。图5C是根据各种实施例示出可以由叶设备维护的示例性封装表的图示。转发表图5A是根据各种实施例示出可以由叶设备维护的示例性转发表的图示。如该示例中所示,转发表中的每个条目可以包括标识符A02。标识符A02可以包括诸如MAC地址和/或IP地址之类的地址。此外,标识符A02还可以包括虚拟网络标识符(VNID)。因此,转发表中的每个条目可以包括地址和VNID。为了唯一标识设备,它可以由它的VNID和IP地址、或可替换地由它的VNID和MAC地址标识。此外,转发表中的每个条目还可以包括将地址归类成MAC地址或IP地址的至少一个指示符。在条目的地址是IP地址处,至少一个指示符可以指示IP地址是IPv4还是IPv6地址。转发表中的每个条目还可以包括可能的多个路径A04。更具体地,在IP地址与两个或更多个设备相关联处,将会有至这些不同设备的不止一个可能的路径。虽然转发表可以被实施为单个表,但是所述示例中的转发表被再分成多个表,例如转发/缓存表、邻接表、和封装表,下文将分别参考图5B和图5C对其进行进一步的详细描述。在该实施例中,转发表中的每个条目还可以包括到邻接表中的邻接指针A06(或地址),如下文的进一步详细描述。转发表还包括被应用于设备的策略信息。在图5A所示的示例性转发表中,每个条目包括指示与该条目相对应的终端设备被归类的组群的类别A10。然后与类别相对应的策略可以被应用于分组。可以通过查找源地址的类别和目的地地址的类别来应用组群之间的策略。例如,一个公司内的一个组群可以被阻止与公司内的另一组群通信。在一些实施例中,叶设备可以淘汰它的转发表中的条目。这可以当条目在表中的时间长于预定时期时,通过周期性地从表中删除这些条目来完成。可能期望只淘汰那些利用从经由结构上的转发接收到的数据分组中学习的信息被创建的条目。换言之,利用从外部接收的分组中获取的信息生成的那些条目可以不被淘汰、或者可替换地,可以在不同的阈值时期(例如,更长)后被淘汰。因此,与本地终端设备不对应的条目可以被周期性淘汰以保证存储器没有被不必要地消耗。邻接表图5B是根据各种实施例示出可以由叶设备维护的示例性邻接表的图示。一旦邻接指针从它的转发表中被识别,那么叶设备可以访问邻接表中的相对应的条目。邻接表中的每个条目可以包括含有VNID的VNID字段B04、以及含有MAC地址的MAC字段B06。条目可以包括封装信息,例如,分组被转发至的TEPIP地址。然而,封装信息可能占据大量的位。例如,每个TEPIP地址可以消耗32个位。TEPIP地址可以被存储在单独的封装表中,而不是将相对少的TEPIP地址重复存储在邻接表中并且不必要地消耗存储器。更具体地,邻接表中的条目可以包括指向封装表中的条目的封装指针(ENCAPPTR)B08(或地址),其中封装表中的条目包括TEPIP地址。下文会参考图5C进一步描述示例性封装表。邻接表中的每个条目还可以包括CTRL位(一个或多个)B10,该CTRL位可以指示分组是经由上行链路被发送至结构(例如,至脊设备)还是经由下行链路(至本地终端设备),从而可以指示分组是否被封装,并且如果被封装,那么指示封装类型(例如,VXLAN、NVGRE)。因此,CTRL位可以被用于确定是否封装分组,如果是,那么查明如何封装分组。当由邻接指针A06标识的设备连接至叶设备的物理端口时,条目可以包括叶设备的物理端口B12的标识符。可替换地,转发/缓冲表可以包括叶设备物理端口A08。封装表由邻接表B08输出的封装信息是封装表的指针。图5C是根据各种实施例示出可以由叶设备维护的示例性封装表的图示。封装表可以包括含有TEPIP地址C04的单个字段。在一些实施例中,针对每个条目,C04可以存储32位IPv4地址或128位IPv6地址。在一些实施例中,每个条目可以具有额外的字段C06,字段C06指示叶设备的哪个端口可以被用于发送分组。在一些实施例中,封装表还可以额外地包括可用于接收被转发至目的地地址的封装分组的脊设备的列表。TEP的总数量是覆盖网络中所需的封装的总数量。它们可能存在数百或数千个,还存在数千个针对网络的目的地地址,即标识符。因此,封装表的使用可能节省大量的存储器空间,因为比起为每个标识符地址重复封装,邻接表可以只提供到封装表中的指针。2.在叶设备处执行的示例性过程虽然可能有许多实现方式,此处提供了转发过程的一个示例。它可以在硬件中实现。该过程包括从入站分组中获取目的地标识符信息、以及从叶版本的映射表中确定网络位置信息。该处理被用于转发分组并且是与叶设备执行的学习功能分离的。在一些情况下,当接收分组时,叶设备可以查明代理或脊设备的隧道终点(TEP)、并且将分组发送至代理。在一些情况下,叶设备可以利用可用于叶设备的信息识别终端设备的TEP。在一些情况下,叶设备可以桥接或路由没有封装的分组。在一些情况下,叶设备可以桥接或路由分组并且然后执行封装。叶设备的映射功能可以通过在诸如转发表的表中执行查找来完成。在一些实施例中,转发表可以被再分成进一步的表,如本文所述,它们包括邻接表和封装表。在分组的头部中指定的目的地MAC地址可以被用于确定分组是否被桥接或路由(如源终端节点的网络逻辑所确定的)。更具体地,如果目的地MAC地址是默认路由器的MAC地址,那么分组将被路由,否则,分组将被桥接。叶设备的转发逻辑可以具有它检查以确定是桥接还是路由的默认路由器MAC地址的列表。在许多实现方式中,叶设备本身充当路由器。然而,当附接的终端设备发送要被路由的分组时,叶设备通过分组的目的地MAC地址(在一些实施例中,它可能是接收分组的叶设备的地址)认出该分组。然后叶设备可以构建被用作至转发表的密钥的目的地标识符。如果分组会被桥接,那么叶设备可以将NVID和目的地MAC地址用作至转发表的密钥。然而,如果分组要被路由,那么可以将VNID和IP地址用作至转发表的密钥。在一些实施例中,VNID可以是第2层VNID或第3层VNID。更具体地,如果分组会被桥接,那么VNID是第2层VNID;如果分组被路由,那么VNID可以是第3层VNID。更具体地,如上文所述,VNID可以是以某种类型的封装(例如,VXLAN)的24位字段。使用哪种形式取决于分组是被桥接还是被路由。当可能遇到不止一种类型的地址(例如,MAC、IPv4或IPv6)时,指示地址的类型的“类型”字段还可以根据接收到的分组中的头部信息被构建。需要注意的是,脊设备转发逻辑(驻留在脊设备自身上或在独立的代理设备上)的代理功能还可以获取以及解释目的地标识符—而且该目的地标识符可以包含连同IP或MAC地址的VNID,并且在一些实施例中包含地址类型字段。只要利用如上文所述被构建的目的地标识符识别了转发表中的适当条目,那么可以从转发表的条目中获取多个路径和邻接指针。如果路径的数量是1,那么邻接指针可以被用于在邻接表中查找相对应的条目。如果路径的数量大于1,那么基于分组的散列的随机化偏移可以被添加至邻接指针以创建新的邻接指针。邻接表中的CTRL位(一个或多个)可以被用于确定分组是否被发送至结构。此外,相对应的TEPIP可以被获取。更具体地,TEPIP地址可以被存储在单独的疯转表中,而不是在邻接表中多次存储TEPIP并且消耗不必要的存储器。因此,ENCAP指针可以从邻接表中获取,其中ENCAP指针被用于从封装表的相应条目中获取TEPIP地址。如果分组没有被发送至结构,那么叶设备可以确定是否封装以及使用哪个物理端口,例如,按照在邻接表中指定的,并且分组可以经由所述物理端口被发送。假设分组被发送至结构,那么叶设备可以确定分组应该被路由或桥接的脊设备。在一些实施例中,负载平衡可以在脊设备选择期间被执行。图6是根据各种实施例示出可以由叶设备用来转发分组的示例性机制的图示。在一些实现方式中,该机制可以在硬件中实现。然而,该机制还可以至少部分在软件中实现。如图6所示,叶设备可以查找在它的转发表604中的(可以按上文所述被构建的)目的地标识符602以获取邻接指针606和路径数量608。此外,散列函数610可以被应用于流信息,例如,针对流的5元组,如612处所示。模方程612可以被应用于路径608的数量和5元组的散列,并且产生的数值可以被用于在具有至目的地的路径的TEP中进行负载平衡。例如,其中路径数量是1,结果可能总是0;但是当路径数量是2时,例如,结果可以是0或1;更普遍地,当路径数量是正整数n时,结果可以是在范围0至n-1的范围内的正整数,该结果确定了分组应该穿过n条路径中的哪个路径。因此,在一些实施例中,该数值可以在614处被加入邻接指脊606,并且结果可以被用于在邻接表中执行查询以便于识别TEP。由于有多个路径,可能存在可以被选择的两个不同的可能隧道终点,TEP1和TEP2。因此,在适当的情况下,叶转发逻辑访问封装表,并且针对去往网络结构的分组,封装表可以提供覆盖目的地的TEPIP地址、以及在一些实施例中可以提供可用脊设备的列表,使用于平衡负载的多个脊设备。在这个示例中,邻接表616中的条目可以作为查找的结果被识别。例如,邻接表616中的条目可以包括VNID618、目的地MAC620、ENCAPPTR622(至TEPIP地址)、以及CTRL位(一个或多个)624。这些字段中的哪个字段被用于转发是取决于分组是被桥接还是被路由。如之前所解释的,叶设备通过检查进来的分组的目的地MAC地址来做出是桥接还是路由的决定。如果MAC地址是路由器的地址,那么源打算将分组路由。否则,分组会被桥接。如果分组会被桥接,那么VNID不变并且MAC地址不变。然而,叶设备仍然需要应用提供TEP的地址的封装,TEP的地址还存在与位于脊层的代理映射数据库中。控制位可以提供用于各种目的的指令,例如,对可用字段的限制。在一些实现方式中,该位可以指定IP分组的TTL字段是否应该被减少、或者当被路由时是否替换MAC地址。再次参考图6,叶设备可以封装分组并且将分组发送至通过ENCAP指脊622给出的TEPIP地址。更具体地,分组可以在叶设备的TEP处被封装。在邻接表条目和封装表条目中的信息可以被用于封装分组。如果分组没有被发送至结构,那么分组可以被封装或者以其它方式被修改以到达目的地。这种修改可以包括用来自表的VNID618或MAC地址620酌情替换VNID、以及经由物理端口发送分组。在一些实施例中,叶转发逻辑可以经由叶设备的邻接表中的条目提供针对指向覆盖网络外的分组的物理端口标识符。需要注意的是如果在叶转发表/数据库缓存中查询的目的地标识符结果是“未命中”,那么会返回固定(默认)的邻接条目。这将为脊上的代理TEP提供封装,该封装根据底层分组是第2层分组还是第3层分组可能不同。在一些实现方式中,担当代理TEP的脊设备由诸如散列之类的功能选择。在其它实现方式中,脊设备代理TEP针对给定的叶设备被预先设置。在一些情况下,表提供基于从分组的输入目的地标识中选择的、代理TEP地址的多个选项。如上文所解释的,关于路由,接收入站分组的叶设备的转发逻辑可以做出它必须路由分组的决定。为了保存在覆盖网络外部的设备期待的外部路由语义,接收叶设备的转发逻辑会将接收到的分组的MAC地址改变成适当的MAC地址、并且还应用适当的VNID以及减小TTL。这种修改是对底层分组的适当的2层字段完成的,而不是对封装头部。这与桥接的语义形成对比,在桥接语义中,底层分组的目的地MAC地址在转发过程中保持不变。因此,在路由环境下,接收叶设备的转发逻辑替换底层分组中(不是封装中)的目的地(可能是下一跳路由器)的MAC地址,并且在上文提出的示例中,它通过采用邻接表中输出的MAC地址来进行。然后叶设备在将底层分组转发至结构(或结构外部的网络)之前将新的目的地MAC地址应用于底层分组。为了路由到结构中,它还必须将适当的封装应用于覆盖网络。叶设备还需要应用针对目的地的正确VNID。它还从邻接表中得到该信息。在经典路由器中的转发表提供目的地MAC地址和VLAN的组合。此外,作为比较,当分组被桥接时,VNID和目的地MAC地址在分组中被维护,但是封装(如果需要的话)是从邻接表和封装表中获取的。需要注意的是当路由到结构(入口)中时,下一路由器的MAC地址可以是附接至目的地终端设备的叶设备的MAC地址。所有叶设备(担当路由器)的MAC地址在一些实施例中是相同的。因此,当路由到结构中时识别结构中的路由器的MAC地址是简单的事情。只需要知道最终的终端设备是它的IP地址并且可能是虚拟地址标识符。当路由出结构(出口)时,在叶设备从本地版本的映射数据库中知道目的地的MAC地址的情况下,目的地终端设备可以在叶设备本地,如所述实施例的邻接表中实现的。还需要注意的是,叶设备版本的映射数据库可以包括用于实现策略的“类别”字段。策略可以由叶设备在叶设备的入口处或在叶设备的处应用。3.将分组导向代理功能的叶设备在叶设备在它的转发表中不具有针对给定目的地终端设备的条目的情况下,叶设备可以用目的地定位器IP地址字段中的代理IP地址封装分组、并且将分组转发至代理的代理地址。然而如本文其它地方所述,当接收被封装的分组时,代理功能通过解析封装以及提取与底层租户分组相关联的目的地标识符来操作。然后代理功能在映射数据库中查询这个目的地标识符以确定针对该分组的适当目的地定位器、并且使用该地址来替换封装头部的目的地定位器字段中的代理的IP地址。通常,用于替换代理的地址的目的地定位器是与目标终端设备(例如,连接目的地终端设备的目的地叶设备的iP地址)相关联的TEP的地址。一旦表明适当的目的地定位器地址,那么分组被转发至它的目的地。代理的功能可以在一个或多个脊设备处或者在一个或多个其它设备(例如,专门和/或专用的代理设备)处实现。在一些实施例中,位于脊或其它位置的代理功能可以通过“任播”地址被访问。在任意情况下,因为代理功能通常通过它的IP地址被访问,所以他可以驻留在具有L3连接的任意位置。需要注意的是只有封装头部中被改变的字段是目的地定位器字段。没有分装头部中的其它字段并且没有底层租户分组的字段被代理功能的操作改变。通过保存底层分组和iVXLAN头部中的初始源字段,接收分组的出口叶设备能够正确地缓存结果。因此,当接收去往接收叶设备的转发表中没有的终端设备的入站分组时,叶设备可以获取与被配置为执行代理功能的一个或多个设备相关联的代理地址。在一些实施例中,叶设备可以在它的转发表中执行针对目的地标识符的查找以获取至邻接表中的条目的邻接指脊。如果标识符在转发表中不存在,那么至邻接表的默认条目可以被返回。邻接表中的条目可以包括与被配置为执行代理功能的一个或多个设备相关联的代理地址。如上文解释的,代理可以在一个或多个设备(例如,可以包括2层代理和3层代理的脊设备)处被维护。在分组被桥接处,分组可以被发送至2层代理。可替换地,在分组被路由处,分组可以被发送至3层代理。为了完成至第2层和第3层代理两者的转发,转发表可以包括针对给定设备的两个不同条目。更具体地,包括VNID和MAC地址的标识符可以与第2层条目相对应,而包括虚拟网络标识符(VNID)和IP地址的标识符可以与3层条目相对应。因此,至转发表的第2层密钥可以包括VNID和MAC地址,而至转发表的第3层密钥可以包括VNID和IP地址。第2层条目可以包括至具有至封装表中的第一条目的封装指脊的邻接表中的第一条目的邻接指脊,使得第2层代理的TEP地址可以被获取。类似地,转发表中的第3层条目可以包括至具有至封装表的第二条目的封装指脊的邻接表中的第二条目的邻接指脊,使得第3层代理的TEP地址能够被获取。C.利用转发表在脊设备处的分组转发可以由脊设备和代理维护的示例表会在下文进行进一步描述。这些表中的任意表可以在软件和/或硬件和/或软件和硬件的组合中实现。如上文所述,在叶设备不具有针对它的本地映射表(一个或多个)/缓存中的特定终端设备标识符的定位器的情况下,叶设备可以将分组发送至代理,从而使得代理可以在与代理功能相关联的一个或多个转发表中查询针对终端设备的定位器。在各种实施例中,代理功能是在脊设备处实现。然而,代理设备不需要在脊中执行。例如,代理由于脊和叶设备分开的设备(例如,服务器)实现。当被实现在脊处时,代理功能通常与各个脊设备相关联(或者可访问各个脊设备),并且代理功能可以访问完整的映射数据库。然而,还应该理解的是在某些实现方式中,代理被提供在脊设备的子集,并且在某些实现方式中,映射数据库可以通过多个代理被分裂。还需要额外注意的是在叶设备处的映射数据库的缓存还帮助缓和该脊上的、可能由其中映射数据库通过多个代理或脊设备被分裂的代理配置造成的任意热点;或者可能由只在脊设备的子集处提供的代理功能造成的热点。1.由脊/代理设备维护的示样表的详细描述代理映射表(一个或多个)可以由各个代理设备维护以使得代理设备能够转发分组。其中代理在脊中实现,代理映射表(一个或多个)可以被实现为诸如下文参考图5D描述的映射表。在一些实施例中,代理可担当第2层代理或第3层代理。例如,第2层代理可以维护第2层代理映射表,而第3层代理可以维护第3层代理映射表。在一些实现方式中,第一代理可以维护第2层代理映射表,而第二代理可以维护第3层代理映射表。在其它实现方式中,单个代理可以维护第2层代理映射表和第3层代理映射表两者、或者等同的组合表。因此,虽然下文示出和描述为两个分开的表,但是第2层代理映射表和第3层代理映射表可以被组合到单个表中。此外,如下文所讨论的,其中,代理在脊中实现,单个表可以由脊设备维护。图5D、5E和5F提出可以被用于脊网络设备和/或相关的代理功能设备的转发/数据库表。图5D是根据各种实施例示出可以由脊设备、代理或映射器维护的示例性映射表的图示。图5E是根据各种实施例示出可以由代理设备维护的示例性第2层映射表的图示。图5F是根据各种实施例示出可以由代理设备维护的示例性第3层映射表的图示。映射表当脊设备接收分组时,它可以将分组转发到它预期的目的地。脊设备可能能够利用从分组头部获取的信息来转发信息。如上文所解释的,脊设备还可以担任代理的角色以识别叶设备不知道其位置的终端设备的位置。在这样的实例中,脊设备可以查明目的地终端设备的位置并且将定位器插入分组头部中。在一些实施例中,脊设备可以利用它的映射表执行查找。类似的过程可以由担任代理或映射器的角色的非脊设备执行。图5D是根据各种实施例示出可以由脊设备、代理或映射器维护的示例性映射表的图示。通常,映射表将标识映射至位置。当终端设备在网络内移动时,它的标识不改变。然而,它的位置改变。广义上讲,映射表/数据库通过维护分组目的地标识和目的地定位器之间的对应管理来记录这些改变的位置。在该示例中,图5D中的每个条目包括标识符D02和定位器D04。标识符D02可以包括诸如MAC地址或IP地址之类的地址D06。此外,标识符D02可以包括虚拟网络标识符(VNID)D08。标识符D02还可以包括指示地址是MAC地址还是IP地址、以及IP地址是IPv4地址还是IPv6地址的地址类型字段D010。在一些实现方式中,单个标识符可以根据VNID和地址生成,使得能够利用单个值在映射表中执行查询。定位器D04可以包括标识设备(可以是TEP)的位置的IP地址。例如,定位器D04可以标识叶设备的IP地址。脊设备知道所有叶设备的位置(TEP)。因此,一旦脊设备获取标识叶设备的IP地址的定位器,那么脊设备可以将分组转发至叶设备。图5E是根据各种实施例示出可以由代理维护的示例性第2层代理映射表的图示。如该示例所示,第2层代理映射表可以包括标识符E02和定位器E04。标识符E02可以包括VNIDE06和MAC地址E08。图5F根据各种实施例示出由代理维护的示例性第3层代理映射表的图示。第3层代理映射表可以包括标识符F02和定位器F04。标识符F02可以包括VNIDF06、IP地址F08、还可以包括地址类型F10。地址类型F10可以指示IP地址是IPv4地址还是IPv6地址。因此,当接收分组时,代理(例如,拥有代理功能的脊设备)在它的映射表(一个或多个)中执行查询以获取由IP地址指定的定位器。其中,代理是第2层代理,第2层代理可以在它的映射表(如图5E)中利用VNID和MAC地址执行查询以获取IP地址。可替换地,其中代理是第3层代理,第3层代理可以在它的映射表中利用VNID和IP地址执行查询以获取IP地址。然后代理可以用目的地IP地址替换封装的分组中的代理IP地址、并且转发封装的分组。图7是示出叶设备在转发分组前作出各种决定的示例的流程图。叶设备可以在702处接收去往目的地终端设备的分组。如果分组是完全可信的封装的分组,那么它可以按原样转发而不需要调整头部中的任意部分或者不需要应用封装。某种程度上有叶设备作出的以下决定不需要以所列的顺序执行。在704处,叶设备确定分组是被传输到结构中还是结构外。例如,叶设备可以在它的映射数据库中执行对终端设备的标识符的查找并且根据ENCAPPTR字段B08和封装表中的相应的条目查明分组是否被发送至结构中。然后邻接表中的CTRL字段B10可以指示是否使用封装。此外,除了将分组引导至“结构中”之外,封装表中的上述条目可以替换为提供通过所列的输出端口中的一个将分组发送至“结构外”的指示。在706处,叶设备可以至少部分基于分组的头部查明是否在分组上执行封装。分组会标识分组从中被接收的设备。在一些实施例中,叶设备可以确定分组从中被接收的设备是否是可信设备。叶设备可以至少部分基于设备是否至少部分是可信设备来查明是否在分组上执行封装,如本文所述。此外,叶设备可以(例如,根据分组的头部(一个或多个))确定分组先前是否已经被封装(例如,分组当前是否是被封装的)。在叶设备确定分组先前已经被封装处,叶设备可以确定分组的封装类型。叶设备可以查明是否至少部分基于分组的封装类型在分组上执行封装,如上文所述。叶设备可以选择留下现有封装或者移除现有封装以及利用覆盖网络要求的封装进行重新封装。这在将分组从(采用第一封装格式的)一个覆盖网络转移到当前关注的叶脊结构的覆盖网络时可能是适合的。在分组经由叶设备的端口被向下传输处,叶设备可以获取指示封装是否合适的信息,如果合适,那么执行该封装类型。在708处,叶设备可以根据查明的结果封装分组。更具体地,在叶设备确定分装应该被封装处,叶设备可以(例如,利用VXLAN头部)封装分组。在根据查明的结果封装了头部之后,叶设备可以在710处根据确定的结果将分组传输至脊设备。可以利用诸如转发表、邻接表、和封装表之类的表封装和传输分组,如本文参考图6所描述的。为了确定在封装网络上分组被传输至的适合的TEP,叶设备可以从分组的头部中查明分组被编址去往的终端设备(目的地设备)的标识符。然后叶设备可以确定它是否存储了该终端设备的位置(隧道终点地址)。在叶设备确定它具有该终端设备的位置处,叶设备可以将分组转发至适当的脊设备。例如,可以至少部分基于从分组的头部和/或与分组相关联的流中查明的终端设备(目的地设备)的标识符来选择脊设备。分组可以被封装以及被传输至所选择的脊设备。如果叶设备确定它不具有终端设备的位置,那么分组可以被封装从而使得封装的头部标识代理。一旦被封装,分组就可以被传输至代理。在一些实例中,代理可以是选择两个或更多个代理。例如,可以至少部分基于从分组的头部和/或与分组相关联的流中查明的终端设备(目的地设备)的标识符来选择代理。在一些实施例中,代理可以是从第2层代理和第3层代理中选择的。如上文所述,代理可以在脊设备中实施但不需要在脊中实施。例如,代理可以在诸如与脊和叶设备分开的服务器之类的设备中实现。在代理接收分组处,它用目的地TEPIP地址替换目的地IP地址字段中的代理地址、并且传输分组。例如,分组被代理传输至脊。然后脊可以将分组传输至它期望的目的地。2.终端设备和默认路由器终端设备可以经由诸如ARP的一些机制学习它的默认路由器的IP地址。当终端设备想要发送分组时,它将它的子网与目的地设备的子网进行比较。如果子网匹配,那么它会发送标识目的地设备的MAC地址的ARP请求。作为响应,它会接收目的地设备的MAC地址。然后终端设备会将分组发送至该MAC地址并且不需要路由器。如果子网不相同,那么终端设备会发送标识它被配置的默认路由器的IP地址的ARP请求。作为响应,它会接收具有该IP地址的默认路由器的MAC地址。通常,默认路由器是终端设备附接至的叶设备。在一些实施例中,所有的叶节点可以(例如,经由控制器)配置有相同的MAC地址。通过这种方式,终端设备不需要记录针对各种网络设备可以附接至的网络上的各种叶设备的单独MAC地址。3.叶设备学习新的/移动的终端设备的位置/标识信息;填充本地映射表/缓存叶设备可以学习关于终端设备的位置和标识信息并且将该信息存储在它本地的映射表(一个或多个)中。更具体地,叶设备可以学习来自经由它的上行链路从网络接收的、或者从连接至它的终端设备中接收的分组的信息。这样的分组可以包括数据分组、免费ARP和DHCP请求。当叶设备从连接至它的终端设备接收分组时,它学习该终端设备的表示并且将它与它的位置相关联,该位置是叶设备的地址。更具体地,位置可以包括接收分组的叶设备的TEP的IP地址。学习还在分组通过叶设备退出覆盖网络时(由叶设备)完成。在分组出口处,叶设备访问它本地的映射缓存、查询分组的源标识符,并且如果存在未命中,那么叶设备用包含分组的源标识符(由VNID限制)、源定位器以及来自iVxLAN头部的SClass字段(SClass随后被用作针对在相反方向通过的分组的DClass(目标类))的新缓存条目填充它的缓存。通过类似的方式,如果当查找源标识符时存在命中但表中的Class字段和/或定位器与分组中的不同,那么用分组的信息更新条目。如之前描述的,因为学习的标识/位置信息不与本地附接的终端设备相对应,所以这些缓存的条目被淘汰—即,当它们在一些特定时间间隔不被使用时从本地映射表中将它们移除。4.叶设备本地映射表/缓存的预填充在一些实施例中,每个叶设备本地映射表/缓存可以用叶设备本地的所有标识符填充。这些条目没有被淘汰(如刚刚所述的)并且只是当已知特定标识符移动了、或者经由叶设备上的探脊或其它适合的机制确定相关联的终端设备不在活跃时被从本地映射表/缓存中移除。在一些实施例中,每个叶设备本地映射表/缓存还可以用表示至附接至结构的一个或多个WAN接口的路由的一个或多个最长前缀匹配(LPM)条目来预填充。在一些实施例中,这些条目存在是因为代理功能在被限制为只进行完全满足的精确匹配查询(LPM查询可能不被支持)时更有效—列举终点可能进行通信的、在结构外部的所有可能的目的地标识符地址是不实际的。这就是为什么WAN路由可能需要在映射缓存中被预填充。类似地,在一些实施例中,代理功能不支持多播查找。在此类情况下,多播地址(根据实施例)可能还需要与其它静态条目一起被静态地替换到映射缓存中。5.从叶设备到脊和代理设备、以及到其它叶设备的所学位置/标识的通信叶设备可以将所学的信息传输至代理,使得代理能够更新它们的映射表。因为路由至网络的分组通过将代理放置在脊设备中被传输至脊设备中的一个脊设备,在分组的传输中不需要额外的跳跃。然而,还可能在服务器或叶设备处放置代理。在一些实施例中,单独的映射器可以维护映射表。这样的映射器可以是可信设备。分组可以被叶设备直接路由至映射器,使得映射器能够转发分组。可替换地,代理可以视情况查询映射器。当映射器从代理接收请求时,映射器可以将请求的信息返回至代理从而使得代理可以转发分组。叶设备可以将关于连接的终端设备的信息传输至单个脊或代理地址。脊或代理地址可以例如基于终端设备的标识被选择。在一些实例中,代理地址可以是与不只一个脊设备或代理相关联的虚拟地址。根据各种实施例,诸如边界网关协议(BGP)或COOP之类的协议可以被叶设备用来将关于连接的终端设备的信息传输至脊和/或代理设备。脊设备还可以经由诸如COOP协议之类的协议共享所学的关于终端设备的标识/位置信息。通过使用COOP协议,叶设备可以作为公民操作以将信息传输至代理处的神使,并且当从公民接收信息时,神使(一个或多个)可以填充或更新映射表。神使(一个或多个)还可以确保映射数据库的每个拷贝在脊和代理设备中是一致的。此外,当在映射数据库中已经存在的条目改变时,COOP协议可以被用于向其公民模块创建条目的叶设备通知条目在被改变。这给了初始叶设备采取适当动作(例如,在它本地的映射表/缓存中创建“弹回条目”)的机会。“弹回条目”会在下文中被进一步描述。此外,虽然和设备的公民模块向单个神使发送信息是可能的,但是公民还可以将信息发送至与多个神使相关联的虚拟IP地址。6.在叶设备处弹回当终端设备被移动并且到达它的新位置时,它会为自己进行ARP(免费ARP或反向ARP)。学习新的位置可能在一个或多个分组被转发至旧位置之后发生。到达与终端设备的先前位置对应的旧TEP(通常是叶设备)的分组不能在本地被转发至终端设备,因为终端设备不再附接在那儿。为了处理这种情况,在某些实施例中,叶设备在被通知它本地的终端设备移动至另一叶设备(即,不再在本地)时可以在它的转发表中创建所谓的“弹回条目”。该弹回条目是从终端设备的未改变的标识符至它在网络上的新位置(TEP)的映射。当弹回条目被从网络接收到的分组击中时,它被“弹回”—即,它被发送回具有由弹回条目标识的封装的结构中,具体地,新的目的地定位器地址。然而,分组的源定位器地址未被修改。这个动作与代理功能类似,但是是在终端设备的在先位置的叶设备处执行。然后这种被弹回的分组将被转发至新的叶设备,该叶设备将用适合的源信息更新它的缓存。弹回条目可以保持有效直到所有被缓存的终端设备标识符的条目已经用新的定位器信息更新或被淘汰。这是基于结构上的所有其它叶设备上的缓存的老化时间弹回的。7.叶设备处的策略执行在一些实施例中,策略执行的基本机制如下:策略可以是基于源类别、目的地类别、和分组字段。源类别和目的地类别通常是源或目的地终端设备标识符的函数。当分组被入口叶设备接收时,在将策略应用于特定分组所必要的所有字段是已知的情况下,策略在入口叶设备处被应用。然而,可能存在取决于分组的目的地类别的一些策略,并且因此,当入口叶设备的本地映射缓存中存在未命中时,在入口处不能应用或确定策略。当在入口处不能确定目的地类别时并且存在取决于该类别的策略,策略应用(SP,DP)位未被置位并且分组被正常转发,即经由代理功能转发至出口叶设备。在出口叶设备处,因为它通常具有针对所有本地附接的终端设备标识符的静态条目,映射缓存查询将返回分组的目的地类别。在该点处—即,在出口叶设备处—策略将可以总是被应用(因为源类别被携带在iVXLAN头部中,因为目的地类别已经经由查询被确定,并且因为(策略可能潜在基于的)其余字段被携带在分组本身中)。Ⅳ.叶-脊网络架构A.简介为了满足世界范围的用户库的需求,现代数据中心可以包括数百、数千、甚至数万个数据服务器。然而,数据中内的大量服务器带来对数据中心的联网基础架构的相对应的高要求。加重该基础架构的负担的网络流量可以代理数据中心本身中的服务之间的通信,或者它可以代表与源自数据中心外部的信息或服务的请求,例如,来自位于遍及全世界的互联网(下文简称“互联网”)中的客户计算机。针对后者,数据中心中的服务器的总数量通常是只互联网的连接的总数量的许多倍,因此,许多服务器之间的有限的数量互联网连接的共享通常是重要的考虑因素。B.“访问汇聚核心”网络架构数据中心网络设计可以遵循各种拓扑范式—只涉及联网线路/链路的系统的给定拓扑结构,这些联网线路/链路携带网络流量(即,数据)以及控制通过网络中的线路/链路的流的联网交换机。最常见的拓扑范式之一是被恰当命名的“访问汇聚核心”架构。如名称中的“核心”部分表明的,这种架构遵循层级范式,其中在假设的点A和B之间穿过的信息首先从上层远离点A行进并且然后从下层回到点B。针对来自点A和外部(例如,连接至互联网的)设备的通信,流量从上层远离A朝核行进,并且然后从核直接去往互联网。图8示意性示出包括遵循“访问汇聚核心”(AAA)模型、通过访问层120、汇聚层130和顶级核心层140连接的12个“终端设备”110(例如,服务器)的简单网络100。在每层内的是“网络设备”125(例如,因特网交换机或路由器),每个网络设备125控制它和其它网络设备125之间的各种“链路”115(例如,因特网电缆)上的、以及最终去往或来自终端设备110的网络流量的流。如图1所示,访问层120提供具有至网络的即时访问的每个终端设备110。流量可以从访问层120传递到汇聚层130并且然后传递到核心层140,这取决于它最终的目的地。需要注意的是针对目的地是在图1所示的网络100内的流量,流量必须被送到上层多远来到达目的地取决于网络中的目的地的位置。最终目的地时在图1所示的网络外部的流量—例如,去往世界互联网上的某服务器—通常会一路行进至上层,因为至外部互联网的连接通常驻留在核心层。还应该注意的是虽然为了说明的目的图1相同地描绘了各个网络设备125,但是根据设备是位于访问层120、汇聚层130还是核心层140,这种设备的实际硬件实现方式可能具有显著差异。一方面,在图1的核心层140中的单个网络设备通常会比其他层中的网络设备路由更多的流量(因为刚刚描述的原因),并且因此它的硬件会被相应地选择。此外,一个层与另一层的不同的硬件实现方式可以通过各个层中的设备是进行桥接还是路由还是两者来指示。例如,访问层通常只进行桥接,汇聚层是桥接和路由的组合—接口之间的桥接和路由去往访问层,并且路由去往所有其它层—以及核心层只有路由。需要注意的是“终端设备”110指代、被认为是在网络上并且利用网络与连接至网络的其它设备进行通信的、连接至网络的设备。因此,终端设备110可以是个人计算机、工作站、服务器、或者可能不是计算机本身的设备(例如,网络打印机、扫描仪、网络存储设备等)。还应该注意的是虽然计算机、服务器、工作站等可以是具有被连接至随机访问存储器(RAM)以及可能的非暂态存储介质(例如,磁盘、闪盘驱动、关盘、磁带等)的阵列的一个或多个处理器(每个处理器可能具有一个或多个核心),但是终端设备110还可以是虚拟设备,例如,在虚拟环境中运行的虚拟化服务器—例如,VMWare—在物理服务器顶部。最后,还应该注意的是在一些实施例中,被命名为“终端设备”的设备实际上可以指代多个计算机,就网络拓扑结构而言区别是它们共享相同的至网络的连接,并且因此实质上作为单个网络单元进行操作。图8示出访问汇聚核心(ACC)网络模型的层级连接并且示出从核心到网络设备的该ACC网络模型,该架构遵循树结构或图形—这表示网络中的每个网络设备只被连接至在层级系统中在它上面的单个设备,但可能连接至在它下面的多个网络设备。如图所示,该树结构还暗示存在单个唯一路径—即,链路的序列—连接网络上的任意两个设备。然而,虽然每对终端设备是由唯一路径连接的,但是不同终端设备对之间的路径可能但不必然沿它们的路由的相同部分使用相同的链路。例如,针对图8所示的具体网络,标记为A和F的终端设备110(下文简称“终端设备A”等等)在通过网络设备1、Ⅱ、然后3的路径上通信。同样地,终端设备I和J在通过网络设备4、Ⅲ、然后5的路径上通信,并且因此这两条路径不重叠(即,路径没有共同的链路)。然而,如果终端设备A替换为与终端设备K进行通信(而I与J通信),那么两条路径都穿过网络设备Ⅲ和5(以及邻接设备Ⅲ和5的路径)。链路和网络设备的共享使用(如刚才所描述的)导致类似于图8所示的访问汇聚核心(AAC)网络的树结构架构显示的网络瓶颈。为了简单起见,假设在个顶AAC网络中,在每个链路上的以及通过每个网络设备的数据传输被限制为相同的最大数据传输速率,并且该网路上的每个终端设备可以以该最大速率发送和接收数据。换言之,向整个网络应用相同的带宽限制。如果是这样的话,那么重新参考图8,终端设备A和B能够以全带宽进行通信,而终端设备I和J也可以以全带宽进行通信。然而,使用之前的示例,如果终端设备A试图与终端设备K通信,而终端设备I与终端设备J通信,那么会发生“阻塞”—例如,或者两对终端设备以一半的最大带宽通信,或者它们循序地以全带宽通信,一对等待另一对完成。显然,如果拓扑地相互分开的许多终端设备(即,它们的通信路径包括许多链路)试图以全带宽彼此同步通信时,在AAC网络中这种情形会变得更糟。尽管阻塞问题是树结构范式不可避免的结果,但是已经在该范式内开发了各种解决方案以减少该问题的影响。一种技术是通过在网络中的高流量节点之间加入额外的链路来向网络中建立冗余。参考图8,这可能意味着在核心层网络设备I和聚合层网络设备Ⅱ和Ⅲ之间加入额外的链路。以太信道和分裂的以太信道等是实现这种方法的示例。或者,可以用更高的带宽链路取代标准带宽电路来替换添加更多的链路,但是效果是基本相同的,虽然链路故障的后果会比具有冗余链路更严峻。针对链路故障,在参考图8时应该注意的是尽管冗余链路是在核心和聚合层之间被采用,但是在该简单示例中每4个链路中有1个链路故障会通过因子2减少网络的对分带宽(“对分带宽”会在下文详细讨论)。因此,显然具有内建的冗余,树结构网络仍具有固有限制,当然,存在与实施基于硬件的冗余相关联的成本。C.“叶-脊”网络架构解决在现代数据中心的联网基础架构中显现的普遍存在的“阻塞”未提的另一方法是在拓扑范式周围设计新的网络,在该网络中存在的阻塞不会与固有问题的同样多。一种此类拓扑结构通常被称为“多根树”拓扑结构(与“树”相对照),该多根树拓扑结构可以说成是在各个脊网络设备被连接至各个叶网络设备时体现完整的二分裂图,并且反之亦然。基于该拓扑结构的网络通常被称为“Clos网络”、“平面网络”、“多根网络”、“胖树”、或只被称为“多根树”。在下文的公开中会对围绕“多根树”拓扑结构设计的“叶-脊”网络结构进行描述。虽然现实世界网络不可能完全消除“阻塞”问题,但是所述的“叶-脊”网络架构以及其他基于“多根树”拓扑结构的网络架构被设计来使得阻塞不会以与传统网络架构相同的程度程度发生。粗略的讲,叶-脊网络通过被较少分层级以及通过包括可考虑的活跃路径冗余来减轻传统网络经理的阻塞问题。与微处理器设计相类似,在微处理器的设计中,性能提升可以通过多核或多个处理器并行化而不是简单地通过增大处理器的时钟速度来实现,叶-脊网络至少在一定程度上通过在层级形式“外”建立网络而不是在层级形式的“上层”建立网络来实现更高的性能。因此,基本形式的叶-脊网络包括2层,脊层和叶层。叶层内的网络设备—即“叶网络设备”—提供至所有终端网络的连接,并且脊层的网络设备—即“脊网络设备”—提供叶网络设备之间的连接。需要注意的是在拓扑叶-脊网络中,叶网络设备不直接相互通信,并且脊网络设备也一样。此外,与AAC网络不同,基本形式的叶-脊网络不具有将第二层内的网络设备连接至数量小的多的核心网络设备(一个或多个)的第三核心层,该核心网络设备通常以冗余形式被配置,然后连接至外部网络。可替换地,第三层核心不存在,并且至互联网的连接是通过叶网络设备中的一个提供的,这同样有效地使网络具有较少的层级。显然,通过叶网络设备的互联网连接避免在脊上形成流量热点,脊将倾向于阻碍流量使其不行进至外部互联网或者不从外部互联网行进来。应该注意的是非常大型的叶-脊网络实际上可以由3层网络设备形成。如下文进行的详细描述,在这些配置中,第三层可以起连接由第一和第二层网络设备形成的“叶”的“脊”的作用,但是3层叶-脊网络的工作方式与传统的AAC网络非常不同,这是因为它维护了多根树拓扑结构以及其它特征。举一个简单的示例,3层叶-脊网络中的顶层仍然不直接提供互联网连接(一个或多个),互联网连接仍然像在基本的2层叶-脊网络中那样是通过叶网路设备提供的。图9示意性示出基本叶-脊网络200的具体示例。一定程度上,网络200是与图8所示的AAC网络100类似的(或者是图8所示的AAC网络100的拷贝)。它们都提供用于12个终端设备的连接,这些终端设备直接连接至第一层中的5个网络设备,在网络200的情况下,直接连接至叶层220的5个叶网络设备225,叶网络设备225与AAC网络100的访问层120的体格网络设备125类似。然而,转向第二层,与具有2个网络设备的聚合层130和1个网络设备的核心层140的AAC网络100不同,叶-脊网络200只采用单个额外的层—脊层230,脊层230包括3个脊网络设备235。虽然图8和图9中的较高层中的网络设备的总数量保持相同,但这些设备的连接时非常不同的。图9示出在拓扑叶-脊网络中,每个叶网络设备225被连接至多个脊网络设备235以创建所谓的“多根树”拓扑结构—与其中每个网络设备只被连接至在它的层级之上的一个网络设备的AAC网络的普通树拓扑结构不同,因此并且与AAC网络不同,在叶-脊网络中,在任意成对的叶网络设备225之间存在多个通信路径,并且因此还在任意成对的、被连接至不同的叶网络设备的终端设备210之间存在多个通信路径。将这些网络中的终端设备结合的多路径拓扑结构是帮助减小“阻塞”造成的问题的程度的特征。此外,叶-脊网络使得当利用充足的带宽将充足数量的脊设备连接至叶网络设备时,叶网络设备可以提供所谓的“全二等分带宽”,如下文的详细描述。此外,通过添加额外的层(例如,如上文提到的、并且会在下文进行详细描述的第三层),可以建立仍提供“全二等分带宽”的任意尺寸的网络。举例说明,类似地考虑上文所述的示例,终端设备A和终端设备K之间的通信与终端设备I和J之间的通信同时发生,这在AAC网络100中导致阻塞。如图9所示,在叶-脊网络200中,存在连接终端设备A和终端设备K的三条路径以及连接终端设备I和终端设备J的三条不同路径,示出为没有阻塞问题出现。此外,假设网络中的所有链路提供相等的带宽,两对终端设备分别具有是针对最大速率通信所需带宽的三倍的可用带宽,并且因此在这种情形中网络是不阻塞的。作为第二个示例,考虑终端设备A和F之间和终端设备B和G之间的同步通信的情形,这显然在AAC网络100中会导致阻塞。在叶-脊网络200中,虽然两个叶网络设备225在4个终端设备210之间共享,特别是网络设备1和3,在这些两个设备之间仍然存在三个通信路径(一个通过三个脊网络设备I、Ⅱ、Ⅲ中的每一个),并且因此存在可共同用于两队终端分组的3条路径。因此,在这种情形看到仍然无拥塞(与图8不同),因为每对终端设备仍然可以利用是针对最大速率的通信所需的带宽的1.5倍的带宽。作为第三个示例,考虑在3对终端设备—A和F之间、B和G之间以及C和H之间的同步通信。在AAC网络100中,这导致每对终端设备具有是针对全速率通信所需的带宽的1/3的带宽,但是在叶-脊网络200中,再一次因为3条路径可用,每对恰好具有它针对全速率通信所需的带宽。因此,在具有连接设备的相同带宽的单链路的叶-脊网络中,只要脊网络设备235的数量等于或大于可以被连接至任意单叶网络设备225的终端设备210的数量,那么网络具有足够用于连接至网络的终端设备之间的同时全速率通信的带宽。一般来说,给定网络不阻塞的程度可以以网络的“二等分带宽”为特征,二等分带宽是通过将具有附接至它的N个终端设备的网络分成尺寸为N/2的2个尺寸相同的组群并确定可用于在两个组群之间的通信的总带宽来确定的。如果完成了针对尺寸为N/2的群组的所有可能的划分,那么在所有此类划分中的最小带宽是网络的“二等分带宽”。基于这个定义,那么当每个叶网络设备至脊层230的总上行链路带宽(将叶网络设备225连接至任意脊网络设备235的所有链路的带宽的总和)至少等于至与网络上的任意叶网络设备相关联的终端设备的最大下行链路带宽时,网络可以被说成具有“全二等分带宽”并且具有“完全不阻塞”的特性。确切地讲,当网络被说成是“完全不阻塞”时,这意味着网络上的终端设备之间的同时通信的“容许的”集合不会阻塞—容许限制仅表示未阻塞特性只应用于由于终端设备自身的带宽限制在特定的终端设备处不引导比终端设备可接受的流量更多的流量的通信的集合,因此由于各个终端设备自身的带宽限制(此处假设等于各个终端设备的至网络的链路的带宽限制)而不是由于网络本身的拓扑特性,通信集合是否是“容许的”可以被特征化。因此,受制于容许限制,在无阻塞叶-脊网络中,网络上的所有终端设备可以在没有阻塞的情况下相互通信,只要每个终端设备自身的带宽限制不受牵连。因此叶-脊网络200展示全二等分带宽,这是因为每个叶设备至少具有和到它被连接至的终端设备的带宽一样大的到脊层的带宽(即,将到脊网络设备的所有链路上的带宽加和)。为了说明网络200关于容许的通信集合的无阻塞特性,考虑当图9中的12个终端设备被随意地分成6对时,6对之间的同时通信是容许的,并且因此可以在网络200中没有阻塞的情况下发生。此外,应该注意的是叶-脊网络200的非阻塞特性将在连接了15个终端设备并且5个叶网络设备中的每一个连接3个终端设备时被保存。为了实现叶-脊网络200,叶层220通常会由6个或更多端口的5个以太网交换机形成,并且脊层由5个或更多端口的3个以太网交换机形成。然后可以被连接的终端设备的数量是叶层交换机j乘以在每个叶层交换机上的端口n的数量的1/2的数量、或者1/2·j·n,针对图9的网络的数量是1/2·5·6=15。此外,在每个脊层交换机上的端口m的数量等于叶层交换机j的数量(只要使用最大数量的叶层交换机),并且因此终端设备的综述叶由1/2·m·n给定,其中m是脊层交换机上的端口的数量,并且n是叶层交换机上的端口的数量。然而,不是每个网络都要求无阻塞,这取决于特定网络被建立的目的以及网络的参与负载,完全无阻塞网络可能不仅仅是节约成本的。然而,叶-脊网络仍然提供传统网络上的优势,并且在适当的时候通过减少脊层中所用的设备的数量或者通过减少单独的脊和叶层设备之间的链路带宽或通过两者,它们可以被制成更加节约成本。在一些情况下,与使用更少的叶-脊设备相关联的成本节约可以通过利用大于叶层和终端设备之间的链路速度的叶至脊的链路速度,在叶和脊层之间的带宽没有相应减少的情况下获得。如果选择的叶至脊的链路速度足够高,那么叶-脊网络仍然可以是完全无阻塞—即使通过利用更少的脊网络设备设备来节省成本。具有更少的脊层设备的网络是无阻塞的程度是由从叶网络设备到脊网络层的带宽与从叶网络设备至终端设备的带宽的比率给定的。通过调整该比值,成本和性能之间的适当平衡可以被拨入。在图9中,例如,假设链路具有相等的带宽,当2/3的无阻塞比率可接受时,一个脊网络设备235可以被删除。这表示如果连接至单个叶网络设备的3个终端设备试图与附接至其它叶网络设备的3个或多个终端设备同时通信时,只有2/3的所需带宽可用。这还被称为“过载”,在这种情况下,“过载比率”会使1.5,因为1.5=(2/3)-1。建立具有少于最优脊网络设备的脊网络设备的节约成本的网络和过载的这种概念还示出由叶-脊网络提供的故障域相对于它们的传统的对应部分被提升了。在传统AAC网络中,如果汇聚层中的设备古镇,那么在网络层级中的它下面的每个设备会变成不可访问,直到该设备可以可以被恢复操作。此外,即使冗余被内置到该特定设备、或者如果它与冗余设备配对、或者如果它是至具有故障的设备的连接并且在适当的位置存在冗余链接,这样的故障仍然会导致带宽较少50%或者过载加倍。因此,如有目的地利用比最优更少的脊网络设备装配叶-脊网络的有用性所示,脊中的单个设备(或至脊的链路)故障或缺失通常只减少1/k的带宽,其中k是脊网络设备的总数。还应该注意的是在具有比最优脊网络设备的数量更少的脊网络设备(例如,少于连接至叶网络设备的终端设备的数量)的一些网络中,,仍然可以通过在叶和脊网络设备之间使用比用于将终端设备连接至叶网络设备的那些带宽链路更高的带宽链路来减小过载比率。D.示例性“叶-脊”网络架构下文描述叶-脊网络架构的示样实现方式。然而,应该理解的是本文提出的具体细节指示用于说明的目的,并且不应以任意形式被看做是对本文提出的概念的限制。带着这种理解,叶-脊网络可以被如下实施:叶网络设备可以被实现为具有以下各项的以太网交换机:(i)以10GB/s(千兆位每秒)的数据传输速度用于连接多达48个终端设备(例如,服务器)的48个端口—即“下行链路端口”;以及(ii)以40GB/s的数据传输速度用于连接多达12个脊网络设备的12个端口—即“上行链路端口”。要你次,每个叶网络设备具有可用于服务器连接的480GB/s的总带宽以及可用于至脊层的连接的等同的480GB/s的总带宽。一般而言,选择的叶网络设备可以具有在10至50个端口、或20-100个端口、或50至1000个端口、或100-2000个端口的范围内的端口数,其中,总端口数中的一部分被用于连接终端设备(‘下行链路端口’)并且一部分被用于连接至脊网络设备(‘上行链路端口’)。在一些实施例中,叶网络设备中的上行链路与下行链路端口的比值可以是1:1或1:2或1:4、或者上述比值可以在1:1至1:20、或1:1至1:10、或1:1或1:5、或1:2至1:5的范围内。类似地,用于至脊层的连接的上行链路端口可以具有与用于终端设备连接的下行链路端口一样的带宽,或者它们具有具有不同的带宽,在一些实施例中,具有上行链路端口具有比下行链路端口更高的带宽。例如,在一些实施例中,上行链路端口可以具有在是下行链路的带宽的1至100倍、或1至50倍、或1至10倍、或1至5倍、或2至5倍的范围内的带宽。此外,取决于实施例,叶网络设备可以是具有固定数量的端口的交换机,或者它们可以被模块化,其中叶网络设备中的端口的数量可以通过添加额外模块来增大。只被描述为具有48个10GB/s的下行链路端口(用于终端设备连接)以及12个40GB/s的上行链路端口(用于脊层连接)的叶网络设备可以是固定规模的交换机,并且有时被称为“顶架式”交换机。具有更大量的端口的固定规模的交换机也是有可能的,然而,通常规模是在50至150个端口、或者更具体地在48到128个端口之间变动,并且固定规模的交换机可以或者不可以具有可能高于下行链路的带宽的额外的上行链路端口(用于与脊层通信)。在模块化的叶网络设备中,端口的数量显然取决于采用了多少模块。在一些实施例中,以与下文关于模块化的脊网络设备描述的方式相同的方式,经由多端口线卡加入端口。脊网络设备可以被实现为具有用于以40GB/s的数据传输速度、连接多达576个叶网络设备的576个端口的以太网交换机。一般而言,选择的脊网络设备可以具有针对在10至50个端口、或20-100个端口、或50至1000个端口、或100-2000个端口的范围内的叶网络设备连接的端口数。在一些实施例中,可以以模块化的方式将端口添加到脊网络设备中。例如,用于将端口加入脊网络的模块可以包含在10至50个端口、或20至100个端口的范围内的多个端口。通过这种方式,提升的网络中的脊网络设备中的端口数可以通过添加线卡来按需求增大,每个线卡提供一定数量的端口。因此,例如,36个端口的脊网络设备可以由单个36端口的线卡装配、72个端口的脊网络设备由2个36端口的线卡装配、108个端口的脊网络设备由3个36端口的线卡装配、576个端口的脊网络设备由16个36端口的线卡装配等等。脊和叶层之间的链路可以实现为允许40GB/s的以太网电缆(例如,适当的光纤电缆)等,至叶层的服务器链路可以被实现为允许10GB/s的以太网电缆等。一般而言,用于将脊网络设备连接至叶网络设备的链路(例如,电缆)可以具有在1GB/s至1000GB/s、或10GB/s至100GB/s、或20GB/s至50GB/s的范围内的带宽。类似地,用于将叶网络设备连接至终端设备的链路(例如,电缆)可以具有在10GB/s至100GB/s、或1GB/s至50GB/s、或5GB/s至20GB/s的范围内的带宽。在一些实施例中,如上文所指示的,叶网络设备和脊网络设备之间的链路(例如,电缆)可以具有比叶网络设备和终端设备之间的链路(例如,电缆)的带宽更高的带宽。例如,在一些实施例中,用于将叶网络设备连接至脊网络设备的链路(例如,电缆)可以具有是在被用于将叶网络设备连接至终端设备的链路(例如,电缆)的带宽的1至100倍、或1至50倍、或1至10倍、或1至5倍、或2至5倍的范围内的带宽。在各个脊网络设备被实现为576端口@40GB/s交换机并且各个叶网络设备被实现为48端口@10GB/s下行链路&12端口@40GB/s上行链路交换机的具体示例中,网络可以具有多达576个叶网络设备,每个叶网络设备可以连接多达48个服务器,因此叶-脊网络架构可以支持多达576·48=27648个服务器。并且,在该具体示例中,由于最大的叶至脊传输速率(40GB/s)是最大的叶至服务器的传输速率(10GB/s)的4倍,所以具有12个脊网络设备的这样网络是完全无阻塞的并且具有完全横截面带宽。如上文所述,该网络架构可以通过调整脊网络设备的数量来平衡成本和过载。在该示例中,将576端口的交换机用作脊网络设备的设置通常可以采用4个脊网络设备,其中在576个叶网络设备的网络中,对应与3:1的过载比率。添加一组4个额外的576脊网络设备将过载速率改变成3:2,等等。数据中心通常包含安装在机架中的服务器。因此,在典型设置中,一个叶网络设备(例如,上文所述的“顶架式”设备)可以被置于提供针对多达48个机架安装的服务器的连接的每个机架中。然后总网络可以包括的多达576个这些机架,这些机架经由它们的叶网络设备被连接至包含在4和12之间的576端口脊层设备的脊层机架。1.由多于两层网络设备形成的叶-脊网络架构上文所述的具有作为脊网络设备的576端口@40GB/s交换机以及作为叶网络设备的48端口@10GB/s下行链路&12端口@40GB/s上行链路交换机的2层叶-脊网络架构可以支持多达27648个服务器的网络,虽然这适合于大多数数据中心,但并不适合所有数据中心。尽管可以通过采用具有多于576个端口的、伴有叶层设备数量增大的脊层设备来创建更大的网络。然而,用于装配更大的网络的另一机制是采用由多于2层的网络设备构建的多根树拓扑结构—例如,由3层网络设备或由4层网络设备等形成网络。3层叶-脊网络的一个简单示例可以只由4端口交换机构建,并且诶这在图10A-1、10A-2和10B中被示意性示出以便于传达普遍原则。当然,应该理解的是构建大型3层网络,要采用更大的交换机。图10A-1示出被连接来形成将4个终端设备310(标记为“A”、“B”、“C”、“D”)与充当叶网络设备的交换机1-1和1-2、以及充当脊网络设备的交换机1-3和1-4进行连接的2层叶-脊网络301的4个4端口交换机322(标记为“1-1”、“1-2”、“1-3”、“1-4”)。需要注意的是由4端口交换机装配的叶-脊网络通常支持通过2个脊网络设备和4个叶网络设备连接的8个终端设备310的网络,但此处,在充当脊网络设备的交换机(交换机1-3或和104)上的一半端口具有在图10A-1中向上指的链路以示意性指示这些链路是为至第三层的上行链路连接保留的。利用以这种方式丽娜姐的4个4端口交换机322,它们可以被共同看成起8端口交换机325的作用,如图10A-2中示意性所示(标记为“1”),4个下行链路305至潜在的终端设备310并且4个上行链路315至潜在的第三层。从而有效的8端口交换机然后可以充当针对3层叶-脊网络的构建块。然后10B示出3层叶-脊网络302可以如何利用这些8端口构建块进行装配。如图所示,4个8端口构建块325可以在网络302的叶层320中有效地充当4个叶网络设备(标记为“1”、“2”、“3”、“4”)。网络302的脊层330是由4个额外的4端口交换机335(标记为“Ⅰ”、“Ⅱ”、“Ⅲ”、“Ⅳ”)形成的,与用于形成各个8端口叶网络设备325的那些类似。阴帝,当从4端口交换机角度来看时,网络302包括3个层,底层有8个4端口交换机、中间层有8个4端口交换机并且顶层由4个4端口交换机,尽管这种网络仍然可以被看作具有叶测过320和脊层330,如刚刚所描述的。在图中可以看到网络302可以连接多达16个终端设备310。概括来说,应该注意的是3层叶-脊网络可以连接总数等于1/4·l·m·n的端口,其中l、m和n分别是形成顶层、中间层和底层的设备中的端口的数量(例如,在图10B中,1/4·4·4·4=16)。因此,如果n端口设备被用于构建网络,那么3层叶-脊网络的规模的大小为大约n3,而2层叶0脊网络规模的大小只是n2。因此,采用3层网络设备的叶-脊网络架构展示了有效装配甚至更大的网络的可能性。V.分组漫游的示例A.常规转发下文构成根据本文所述的结构覆盖网络的一些实施例的网络操作和分组转发“漫游”的详细示例。然而,因为下文的描述只构成具体示例,所以列举的具体细节应该被看作是举例说明而不是限制,并且不应以任何方式被看作限制本文提出的实施例和概念的更具体的描述。当叶-脊覆盖网络最初通电时,映射数据库是空的并且与叶设备相关联的本地映射表/缓存是空的。在叶和代理设备处的TEP的定位器地址是由集成结构控制器(IFC)利用面向对象的数据模型应用程序接口(API)进行配置的。这些地址的可达性是通过注入ISIS的协议被了解的。广域网(WAN)路由在网络结构的边缘被输入并且经由在结构中的叶和脊设备之间运行的例如iBGP进行分配。叶设备用这些WAN路由填充它们的本地映射表/缓存。当叶设备发现新的终点时,或者基于分组到达(例如免费ARP)或经由管理API,它会高速它的COOP公民处理该终点以及它的定位器,即它自己的TEP地址。然后COOP公民会通着COOP神使哪个随后将该信息同步到脊中的映射表中。然后映射表会用该映射填充脊中的代理功能。但终点将它的第一个分组发送至另一终点时,结束/入口叶设备会在它的映射缓存中查询目的地标识符地址,MAC或IP。假设初始存在未命中,那么叶设备在iVXLAN头部中封装分组并且将其发送至适当的代理地址。当接收分组时,代理将提取内部目的地标识符地址(MAC或IP将取决于代理)并且将在它的映射表中查找该地址。结果将是目的地定位器和用以将分组发送出的接口。然后代理会用心的目的地定位器地址替换分组的封装头部的目的地定位器地址并且将分组发送至TEP。当分组被接收时出口TEP会在它本地的映射缓存中查找目的地标识符地址。在一些实施例中,映射缓存永远不会产生未命中,因为总是用在本地附接至它的终端设备的地址填充该映射缓存。在该实施例中,如果网络还不知道该终点,那么分组在脊中已经被丢弃。在本地映射缓存/表中的这种查询的结果被用于将分组转发至被附接的终端设备、以及获得用于策略执行的本地终点的目的地类别。然后出口叶设备会应用作为查询结果的适当的策略,并且如果分组应该被转发(即,查询策略不禁止转发),那么进行转发。出口叶设备还在它本地的映射表中查询源标识符。如果存在未命中,那么从分组的内容中创建新的条目。如果存在击中但条目的内容与表中的内容不匹配,那么更新表的条目。无论是哪种方式,在该实施例中,映射缓存现在将用于针对反向行进的分组的必要信息。现在该断点已经接收到该第一分组,当然可以对其进行响应。当它进行响应时,入口叶设备(在先的出口叶设备)会查询新的进入的分组的目的地标识符并且在映射缓存中具有关于从反向行进的在线分组中缓存的条目的击中。该条目将包含目的地的策略类别DClass。同样在本地被导出的、与来自分组的字段结合的源策略类别SClass与DClass相结合然后经由逻辑块被检查,该逻辑块被配置为应用访问策略(例如,确定分组是否应该被丢弃、重路由、利用替换封装进行重新封装)。例如,在一些实施例中,这种重叠策略决定是基于由管理员经由集成结构控制器(IFC)定义的策略,并且可以被用于将流量重新导向网络中的替换位置以应用例如一些服务(例如,入侵检测或状态防火墙)。在一些实施例中,用于应用访问策略的逻辑块可以在内容地址存储器(CAM)中实现。然后合适的策略被应用,假设分组不应该被丢弃,利用从映射缓存中返回的目的地定位器地址封装分组并且策略应用位被置位(在封装头部中)。最后分组被转发至由它的目的地定位器指定的目的地TEP,目的地TEP的可达性例如通过ISIS可了解。在这种情况下,接收分组的脊设备可以只基于目的地定位器地址(即,外部IP地址)来转发分组,因为该目的地定位器地址在入口叶设备处是已知的并且被应用于分组(如果地址未知,那么目的地定位器字段会被叶设置成一个代理地址,并且会在从脊中进行转发之前应用代理功能)。出口叶设备会对源和目的地标识符地址两者继续拧映射缓存查询以适当地更新缓存并且确定向哪里发送分组。自策略应用位被置位以后,在出口叶设备处不再应用策略。此时,在两个叶设备上的映射缓存已经被更新为包含与在本地被附接至另一叶设备的终端设备相关联的条目。所有后续流量会击中那些被缓存的条目。B.终点移动之后的转发下文继续之前的示例以便于示出结构覆盖网络可以如何处理终点移动的示例。该示例再次被理解为具体说明示例而不以任意方式被解释成对本文提供的更普遍的公开的概念的限制。在刚刚描述的常规启动和转发操作之后,用适当的条目填充叶设备的本地映射表/缓存。为了描述的目的,假设终点“Foo”最初被附接至叶设备“A”并且然后移动至叶设备“B”。当Foo从叶设备A移动到叶设备B时,它会发送免费ARP(GARP)来向它新位置的网络发出信号。最初接收GARP分组的叶设备会对其进行处理并且通过网络对其进行转发。该GARP(源自叶设备B)会被转发至叶设备A,因为网络事物Foo在GARP分组进入覆盖网络(在叶设备B处)时位于叶设备A处。在出口路径上,叶设备A会查看Foo之前在本地被附接的终端设备并且现在被附接至不同的叶设备B。相应地,叶设备A会将它针对Foo的缓存条目更新成是指向叶设备B的“弹回”条目。当在叶设备B上接收到GARP分组的拷贝时,叶设备B会通过用针对Foo的静态条目更新它本地的映射缓存来对其进行处理,并且然后会通知通过COOP协议针对Foo更新的中央映射数据库。脊设备会利用针对Foo的新的映射信息重新改编它本地的代理。此外,脊设备中的一个脊设备会向叶设备A通知Foo移动了。如果叶设备A之前接收了通常它会接收的GARP,那么叶设备A不采取动作。如果GARP因为一些原因没有被叶设备A接收到,那么叶设备A会在它的映射表中安装弹回条目犹如已经接收到了GARP。这提供了对抗丢失GARP分组(一个或多个)的保护。此时,叶设备A具有针对Foo的、指向叶设备B的弹回条目,叶设备B具有针对Foo的本地条目,并且脊和/或代理设备中的映射数据库具有针对Foo的、指向叶设备B的映射条目。当现在第二终端设备向Foo发送分组时,存在两种可能的情形。第一,它在它本地的映射缓存中具有击中并且条目很可能指向叶设备A,即它会失效。在这种情况下,分组会被转发至叶设备A并且会击中叶设备A中的针对Foo的弹回条目。该弹回条目会向叶设备A指示将分组转发到叶设备B上,但是保持眼定位器信息不变并且诶设置转发异常位,从而使得分组在到达叶设备B时或被看作是犹如直接从第二设备被附接的叶设备被发送。然后叶设备B可以对该分组进行它的常规缓存算法。当Foo对第二终端设备进行响应时,随后叶第二终端设备被附接至的叶处的缓冲会被更新为Foo的新位置,并且从第二设备至Foo的所有后续分组或被适当地发送至叶设备B。第二种情形是第二终端设备被附接至的远程入口叶设备在它本地的映射缓冲/表中查找Foo时具有未命中。在这种情况下,它会将分组转发至代理并且dialing会具有最新的映射信息,即Foo映射至叶设备B。然后分组被常规转发。总之,当终端设备移动时,转发表/缓存在网络中的3个位置处(可能更多)被更新,从而使得分组被适当并且有效地传送至新的位置:(i)构建设备被附接至的新位置的叶设备,从而该叶设备可以正确地转发出它本地的端口;(ii)构建设备被附接至的旧设备叶设备,以使得它能够安装指向新的位置;以及(iii)脊,从而使得后续的缓存未命中被直接发送至正确的位置。其它叶设备也可以具有它们本地的映射缓存/表,当它们附接的终端设备将分组发送至移动的终端设备和/或从移动的终端设备发送分组时,利用针对移动的终端设备的条目对它们的映射缓存/表进行更新。另一方面,不将分组发送至移动的终端设备和/或从移动的终端设备发送分组的叶设备具有与淘汰的该设备相对应的它们的失效缓存条目。Ⅵ.其它实施例虽然为了促进清晰理解的目的详细描述了上述过程、方法、技术、操作、系统、装置、设备、硬件、软件等,但对本文领域的普通技术人员而言某些改变、修改、和替换实现方式可以在所附权利要求的范围内被实践。因此,公开的实施例被认为是示例说明性的而不是限制性的,各个所附权利要求的范围不被不恰当地受本文描述的实施例的具体细节的限制。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1