虚拟网络设备集群的制作方法

文档序号:7742491阅读:125来源:国知局
专利名称:虚拟网络设备集群的制作方法
技术领域
本发明涉及网络,尤其涉及虚拟网络设备。
背景技术
为了提供更高的网络可靠性,网络中通常包括冗余交换机和链路。如果交换机或 链路发生故障,则可以快速地使能已经位于网络中的冗余交换机或链路以替换故障交换机 或链路。由于使能冗余交换机或链路作为替换通常可以比替换或修复故障组件更快,因此 具有冗余的链路和/或交换机提供了更可靠的网络。 当在网络中包括冗余组件时,常常希望能够在相应组件发生故障之前,在正常网 络操作期间使用冗余组件。例如,如果在一对交换机之间实现两条链路,则希望使用这两条 链路(而非让一条链路空闲)来提供更高的带宽。然而,如果多条冗余链路同时活动,则对 这些链路的管理可能复杂(例如由于避免桥接循环的需求),这是不希望的。这一复杂性延 伸到了在正常操作期间使用多个冗余组件的其他情况。例如,如果在一个网络中同时使用 多个冗余路由器,则对该网络的管理可能由于对每个网络设备具有不同的管理点的需求而 变得更加复杂。这些示例表明,希望能够降低在网络内使用多个冗余组件时产生的复杂性。

发明内容
公开了各种用于实现虚拟网络设备集群的方法和系统的实施例。虚拟网络设备集 群包括若干个不同的虚拟网络设备子单元,这些虚拟网络设备子单元集体作为一个逻辑网 络设备进行操作。虚拟网络设备集群标识出给定的分组进入该虚拟网络设备集群所经由的 虚拟网络设备子单元。基于为分组标识了哪个虚拟网络设备子单元,来通过虚拟网络设备 集群转发分组。 在一些实施例中,一种方法涉及将若干个虚拟网络设备子单元作为一个虚拟网络 设备来操作,并且如果这些虚拟网络设备子单元之一已经接收过分组,则防止该分组被发 送到该虚拟网络设备子单元。将虚拟网络设备子单元作为一个虚拟网络设备操作涉及经由 一条或多条虚拟网络设备链路,将控制信息从一个虚拟网络设备子单元传送到一个或多个 其他虚拟网络设备子单元。 根据本发明的一个方面,提供了一种方法,该方法包括访问与分组和第一网络 设备相关联的信息,其中该信息指示分组是由第一网络设备接收进入网络的;通过网络发 送分组,其中如果第一网络设备是网络的第一进入点,则发送与第一生成树一致,其中如果 第一网络设备是网络的第二进入点,则发送与第二生成树一致,其中发送包括访问外出过 滤器,该外出过滤器包括基于第一生成树的第一设定和基于第二生成树的第二设定,并且 其中发送由第二网络设备执行,该第二网络设备通过至少一条链路而被耦合到第一网络设备。 根据本发明的另一个方面,提供了一种方法,该方法包括将分组转发到第一接 口 ;访问与分组和第一网络设备相关联的信息,其中该信息指示分组是由第一网络设备接 收进入网络的;如果第一网络设备是网络的第一进入点,则从第一接口输出分组;以及如 果第一网络设备是网络的第二进入点,则将分组从要经由第一接口输出的分组流中滤去, 其中滤去包括访问外出过滤器,其中外出过滤器包括基于第一生成树的第一设定和基于第 二生成树的第二设定,其中第一生成树与第一进入点相关联,其中第二生成树与第二进入 点相关联,并且其中输出和滤去由第二网络设备执行,该第二网络设备通过至少一条链路 而被耦合到第一网络设备。 根据本发明的另一个方面,提供了一种系统,该系统包括多个网络设备,所述多
个网络设备包括第一网络设备;以及第二网络设备,其中第一网络设备是进入网络的第
一进入点并且与第一生成树相关联,其中第二网络设备是进入网络的第二进入点并且与第
二生成树相关联,其中网络设备被配置为访问与分组和进入网络设备相关联的信息,其中
该信息指示分组是由进入网络设备接收进入网络的,其中网络设备被配置为如果进入网络
设备是第一网络设备,则根据第一生成树发送分组,其中网络设备被配置为如果进入网络
设备是第二网络设备,则根据第二生成树发送分组,其中网络设备通过至少一条链路而被
彼此耦合,并且其中每个网络设备被配置为访问多个外出过滤器中相应的一个,其中多个
外出过滤器中的每一个包括基于第一生成树的第一设定和基于第二生成树的第二设定。 根据本发明的另一个方面,提供了一种网络设备,该网络设备包括接口,该接口
包括过滤单元,其中过滤单元被配置为访问与分组和第一网络设备相关联的信息,其中该
信息指示分组是由第一网络设备接收进入网络的,并且其中接口通过至少一条链路而被耦
合到第一网络设备;以及外出过滤器值存储装置,该外出过滤器值存储装置被耦合到过滤
单元,其中外出过滤器值存储装置包括多个外出过滤器值,其中第一外出过滤器值基于第
一生成树并且第二外出过滤器值基于第二生成树,其中第一生成树与第一进入点相关联,
其中第二生成树与第二进入点相关联,其中如果第一网络设备是第一进入点,则外出过滤
器值标识出接口不被阻塞,并且其中如果第一网络设备是第二进入点,则外出过滤器值标
识出接口被阻塞。 根据本发明的另一个方面,提供了一种系统,该系统包括用于将分组转发到第一 接口的装置;用于访问与分组和第一网络设备相关联的标识符的装置,其中信息指示分组 是由第一网络设备接收进入网络的;用于如果第一网络设备是网络的第一进入点,则从第 一接口输出分组的装置;以及用于如果第一网络设备是网络的第二进入点,则将分组从要 经由第一接口输出的分组流中滤去的装置,其中滤去包括访问外出过滤器,其中外出过滤 器包括基于第一生成树的第一设定和基于第二生成树的第二设定,其中第一生成树与第一 进入点相关联,其中第二生成树与第二进入点相关联,并且其中第一接口通过至少一条链 路而被耦合到第一网络设备。 根据本发明的另一个方面,提供了一种计算机可读存储介质,该计算机可读存储 介质存储程序指令,其中程序指令是计算机可执行的以用于将分组转发到第一接口 ;访 问与分组和第一网络设备相关联的信息,其中该信息指示分组是由第一网络设备接收进入 网络的;如果第一网络设备是网络的第一进入点,则使第二网络设备从第一接口输出分组;以及如果第一网络设备是网络的第二进入点,则使第二网络设备将分组从要经由第一接口输出的分组流中滤去,其中滤去包括访问外出过滤器,其中外出过滤器包括基于第一生成树的第一设定和基于第二生成树的第二设定,其中第一生成树与第一进入点相关联,其中第二生成树与第二进入点相关联,并且其中第二网络设备通过至少一条链路而被耦合到第一网络设备。 以上是发明内容,因此其根据需要而包含了简化、归纳和对细节的省略;因此,本领域技术人员将会意识到,该发明内容仅是说明性的,而非要以任何方式进行限制。这里公开的操作可以以多种方式实现,并且这种变化和修改可以在不脱离本发明及其更广的技术方案的情况下进行。在下面进行的非限制性详细描述中,本发明的其他技术方案将变得清楚,这些技术方案仅由权利要求书来限定。


通过参照以下描述和附图,可以获得对本发明更透彻的理解,在附图中相似的标号指示相似的特征。
图1是本发明一个实施例的网络的框图。 图2A和图2B示出了根据本发明的一个实施例,同一网络层中的两个网络设备如何集体作为一个虚拟网络设备进行操作。 图3示出了根据本发明一个实施例,虚拟网络设备中所包括的每个虚拟网络设备子单元内的更多细节。 图4示出了根据本发明一个实施例,包括4个虚拟网络设备子单元的虚拟网络设备集群的示例。 图5A-5C示出了本发明的可替换实施例的其他虚拟网络设备集群配置。
图6A示出了本发明一个实施例的虚拟网络设备集群的示例。 图6B示出了用于图6A的虚拟网络设备集群的每个接口的进入ID设定和外出过滤器值的示例。 图6C示出了本发明一个实施例的虚拟网络设备子单元的接口。 图7是根据本发明一个实施例,示出在虚拟网络设备集群内转发分组的方式的流程图。 图8A-8D示出了根据本发明一个实施例,如何为同一虚拟网络设备集群内的每个虚拟网络设备子单元计算不同的生成树。 图9A-9C示出了如何通过图8A-8D的虚拟网络设备集群来转发分组。 图10A-10D示出了根据本发明一个实施例,为每个进入点计算不同的生成树的网络。 图IIA示出了根据本发明一个实施例,为每个进入点计算生成树的方法。 图11B示出了根据本发明一个实施例,根据与特定进入点相关联的生成树来转发
分组的方式。 虽然本发明容许各种修改和可替换形式,但在附图和详细描述中提供了具体的实施例作为示例。应当理解的是,附图和详细描述并非要将本发明限制为所公开的特定形式。相反,希望覆盖落入所附权利要求书所限定的本发明精神和范围之内的所有修改、等同物和替换物。
具体实施例方式
从两个或更多个虚拟网络设备子单元形成虚拟网络设备集群,所述的虚拟网络设备子单元集体作为一个逻辑设备而进行操作。图l-图3提供了可以包括一个或多个虚拟网络设备的环境的示例。图4-图7提供了虚拟网络设备集群和虚拟网络设备集群的操作的示例。图8A-图9C示出了可以如何用若干个进入专用生成树(ingress-specific spanningtree)来控制如何通过虚拟网络设备集群转发分组。图IOA到图IIB示出了在其他类型的网络中还可以如何用多个进入专用生成树来控制如何转发分组。 图1是包括若干虚拟网络设备的网络的框图。在图l中,若干个客户端102(1)-102(n)经由网络彼此通信及与若干个服务器104(l)-104(n)通信。客户端102(1)-102(n)包括各种可以访问联网服务的不同设备。例如,客户端102(1)可以是蜂窝电话,客户端102(2)可以是个人计算机,客户端102 (n)可以是个人数字助手(PDA)。服务器104 (1) -104 (n)提供各种服务,例如各种基于软件的服务和/或对分担存储设备的访问。
利用若干网络层来描述网络耦合客户端102(1)-102(n)和服务器104(1)-104(n)。最接近客户端102(1)-102(n)的层是接入层(access layer)110。接入层IIO包括若干网络设备120(1)-120 (n)。在此示例中,接入层IIO是分组从客户端102(1)-102 (n)进入网络的基本层。 分布层(distribution layer) 112将经由接入层110接收到的流汇聚起来,并将这些汇聚流提供给核心层(core layer)114。在此示例中,分布层112包括网络设备122(1)-122 (n)。核心层114是网络的逻辑集中化部分,各个汇聚流经过该层。核心层114包括网络设备124(1)-124(n)。 在此示例中,数据中心116包括两组网络设备网络设备126(1)-126 (n)和网络设备128(1)-128 (n)。网络设备128(1)-128 (n)向各个服务器104 (1)-104 (n)提供对网络的接入。网络设备126(1)-126 (n)将来自网络设备128(1)-128 (n)的流汇聚起来,并将汇聚流提供到核心层114。 注意在一些实施例中,网络将不包括图1中所示的网络层(例如,一些曾可以被合并和/或去除,也可以在图1所示的层之外另外包括和/或代替地包括其他层)。另外,客户端和服务器可以与图l所示的方式不同地耦合到网络(例如,一些客户端和/或服务器可被耦合到核心和/或分布层中的各个网络设备)。另外,设备相对于彼此的物理位置可以与图l所示的逻辑位置不同。例如,同一网络层中的两个设备可以物理上位于不同的楼层,不同的建筑物,或者不同的场所中。相反,不同网络层中的两个设备可以位于同一房间中。
在一些实施例中,位于网络外缘的网络设备120(1)-120 (n)和128 (1)-128 (n)与位于网络内层的网络设备122 (1) -122 (n) 、 124 (1) -124 (n)和126 (1) -126 (n)不同地进行操作。例如,在一个实施例中,网络设备120(l)-120(n)是受控于或以其他方式从属于网络内层(例如分布层和核心层)中的网络设备的附属网络设备。在这种实施例中,非附属网络设备提供L2 (第2层)和L3 (第3层)转发和路由,而附属网络设备仅具有较有限的转发和/或路由能力。在其他实施例中,附属网络设备不执行任何L2转发或L3路由。相反,附属网络设备仅仅将所有分组转发到非附属网络设备以进行L2转发和L3路由。在一些实施例中,耦合到附属网络设备的非附属网络设备控制附属网络设备的操作。在一些实施例中,将附属网络设备作为附属网络设备所从属于的网络设备的远程线路卡来看待。还要注意在可替换的实施例中,在接入层和数据中心中使用非附属网络设备而不是附属网络设备。
网络设备120 (1)-120 (n) 、122(1)-122 (n) 、124(1)-124 (n) 、126(1)-126 (n)和128 (1) -128 (n)可以包括各种路由器、交换机、网关和其他网络设备。在许多实施例中,可能每层仅需要一个网络设备就可以让网络工作。然而,如图l所示,每层可以包括多个网络设备,以提供冗余。 将会注意到,这里描述的附图中的若干示例中使用了可变标识符"n",以更简单地指定一系列相关或类似的元件当中最后的元件。这种可变标识符的重复使用并不一定想要暗示这种元件系列之间的相关性,虽然这种相关性可能存在。这种可变标识符的使用并不需要每一系列的元件与由相同的可变标识符界定的另一系列具有相同数量的元件(例如,每个网络层中的网络设备的数量可能不同)。确切地说,在每个使用的示例中,由"n"(或其他任何这种标识符)标识的变量可能与同一变量标识符的其他示例具有相同的值或不同的值。 在不同网络层中的设备之间实现多条链路,以提供另外的冗余度。例如,如图1所示,接入层110中的每个网络设备120(1)-120(n)被通过两条(或更多条)不同的链路耦合到分布层112。类似地,分布层112中的每个网络设备122(l)-122(n)被通过两条(或更多条)不同的链路耦合到核心层114。在一个实施例中,每条链路是以太网链路。
在每个网络层内,多个冗余网络设备被配置为集体作为一个虚拟网络设备进行操作。例如,如图1所示,分布层112中的两个或更多个网络设备作为虚拟网络设备202进行操作。类似地,两个或更多个网络设备124(1)-124(n)作为一个虚拟网络设备204进行操作,并且两个或更多个网络设备126(1)-126 (n)作为一个虚拟网络设备206进行操作。关于两个分布层网络设备如何集体作为分布层虚拟网络设备202进行操作的更多细节在图2A、图2B和图3中示出。如下所述,虚拟网络设备可以被耦合到其他虚拟网络设备,耦合到网络设备,和/或通过虚拟链路束耦合到客户端和/或服务器。 一般而言,任何多端口设备(无论是诸如网络设备、客户端或服务器之类的物理设备,还是虚拟网络设备)都可以通过包括若干条链路在内的虚拟链路束而被耦合到虚拟网络设备,所述若干条链路中的一些链路终止于虚拟网络设备内的不同子单元。 图2A示出了在接入层110中有两个网络设备120(1)和120(2)的网络示例。在分布层112中也有两个网络设备122(1)和122(2)。在此示例中,这两个网络设备122(1)和122(2)作为一个虚拟网络设备202进行操作。每个网络设备120(1)-120(2)通过两条链路耦合到分布层112。在此示例中,这两条链路中的每一条耦合到网络设备122(1)和122(2)中不同的一个。这提供了冗余度,使得即使网络设备122(1)或122(2)中的一个发生故障或者给定的接入层网络设备与给定的分布层网络设备之间的链路中的一条发生故障,网络设备120(1)和120(2)也可以继续与分布层112通信。 将网络设备120(1)和120(2)中的每一个耦合到虚拟网络设备202的冗余链路
可以作为一条逻辑链路而被操作,这里将所述的单一逻辑链路称为虚拟链路束。网络设备120(1)将把网络设备120(1)耦合到虚拟网络设备202的两条链路作为虚拟链路束250(1)而操作。在这种实施例中,网络设备120(1)中耦合到其中一条链路的每个接口都被包括在一个接口束中,所述接口束对应于虚拟链路束250(1)。网络设备120(2)类似地将把网络设备120(2)耦合到虚拟网络设备202的两条链路作为虚拟链路束250(2)而操作。在一些实施例中,虚拟链路束250(1)和250(2)中每个都被作为EtherChannel(TM)或作为汇聚(aggregated)链路(如IEEE 802. 3所述)而操作。 如图2A所示,虚拟链路束250(1)和250(2)中每个都包括终止于分布层112中的不同网络设备的链路。例如,虚拟链路束250(1)将网络设备120(1)耦合到网络设备122(1)和网络设备122(2)两者。这不同于逻辑链路仅在一对网络设备之间被允许的传统实现方式。 在一些实施例中,网络设备120(1)和120(2)知道(例如,通过在每个网络设备内维护的各种状态信息)虚拟链路束250(1)和250(2)中每个都包括终止于分布层112中的不同网络设备的链路。在这种实施例中,网络设备120(1)和120(2)可以基于此知识,在特定的虚拟链路束内选择一条发送分组的链路。然而,在可替换实施例中,网络设备120(1)和120(2)不知道特定的虚拟链路束是否包括终止于分布层中不同网络设备的链路。
如图2A所示,网络设备122(1)和122(2)作为一个虚拟网络设备202进行操作。图2B示出了从接入层110的角度来看,网络设备120(1)如何通过一对冗余链路耦合到分布层112中的单个网络设备,虚拟网络设备202。网络设备120(2)具有对虚拟网络202的类似视角。 在诸如图2B所示的实施例中,网络设备120(1)和120(2)将它们自身看成是连接到单个网络设备,其中对虚拟链路束的使用被简化了。例如,如果网络设备120(1)知道虚拟链路束250(1)终止于两个不同的网络设备,则网络设备120(1)基于生成树协议(Spanning Tree Protocol)选择发送特定分组的链路。与网络设备120(1)仅仅将虚拟网络设备202看作单个实体的情况相比,对生成树协议的使用可能涉及更多的开销和/或在哪些链路可被用来发送给定的分组方面更受约束(例如,生成树协议可能阻塞除了其中一条链路之外的全部链路,防止利用除了一条非阻塞链路之外的全部链路)。例如,当将虚拟网络设备202看作单个实体时,网络设备120(1)仅仅基于负载分担约束条件来选择发送分组的链路。类似地,如果虚拟链路束250(1)内的链路发生故障,则不需要网络设备120(1)改变生成树协议的应用方式。相反,网络设备120(1)仅仅是继续使用虚拟链路束250(1)内的非故障链路。 包括在虚拟网络设备202中的诸如网络设备122(1)和122(2)之类的各个网络设备中的每一个在这里被称为"虚拟网络设备子单元"。在一些实施例中,虚拟网络设备子单元122(1)和122(2)中的每一个被实现在单独的机壳(chassis)中(即每个机壳容纳一个虚拟网络子单元)。例如,在图2A中,网络设备122(1)和122(2)中的每一个可以实现在单独的机壳中。即使虚拟网络设备子单元122(1)和122(2)共用机壳,也可以使每个虚拟网络设备子单元作为独立的网络设备进行操作,使得如果虚拟网络设备中的一个虚拟网络设备子单元发生故障,则其他虚拟网络设备于单元继续进行操作。例如,虚拟网络设备子单元122(1)和虚拟网络设备子单元122(2)可以位于同一机壳中,但每个虚拟网络设备子单元可以具有独立的硬件、端口 、上行链路接口和电源,并且每个都可独立地被从机壳中去除。如果虚拟网络设备子单元122(1)发生故障(例如由于电源故障或软件错误),则虚拟网络设备子单元122(2)可以继续运行。在这种实施例中,虚拟网络设备子单元122(1)可被去除以进行修复或替换,而不会打断虚拟网络设备子单元122(2)的操作。 在一些实施例中,将网络设备耦合到附属网络设备的虚拟链路束中的链路是被用
来将附属网络设备耦合到虚拟网络设备的专门化的链路,这些链路在这里被称为上行链
路。每个上行链路可以传送在网络设备之一中生成的分组和额外信息这两者。例如,在一
个实施例中,如果要在从接入层附属网络设备到分布层网络设备的上行链路上传送分组,
则在该上行链路上与所述分组一起传送的额外信息包括标识出附属网络设备的端口当中
的哪个端口接收所述分组的信息。额外信息还包括指示出是否已由发送设备对所述分组进
行了任何转发或路由的信息。在一些实施例中,上行链路的使用使得虚拟网络设备可以控
制被耦合到该虚拟网络设备的附属网络设备。上行链路的使用还有助于使虚拟网络设备能
够为从属的附属网络设备执行路由和/或转发。这里将网络设备或附属网络设备中耦合到
上行链路的接口称为上行链路接口 。 图3示出了包括在虚拟网络设备中的每个网络设备中的更多细节。这里,虚拟网络设备202包括两个虚拟网络设备子单元122(1)和122(2)。注意在其他实施例中,虚拟网络设备202包括多于两个组件网络设备。在此示例中,虚拟网络设备202位于网络的分布层。然而,类似的虚拟网络设备可以被实现在其他网络层中(例如,在数据中心和/或核心层中)。 虚拟网络设备202被耦合到若干个接入层网络设备120(1)-120 (3)。网络设备120(2)和120(3)中的每一个都通过两条上行链路耦合到虚拟网络设备202,其中每条上行链路通往一个虚拟网络设备子单元122(1)和122(2)。网络设备120(2)通过虚拟链路束250(2)耦合到虚拟网络设备,网络设备120(3)通过虚拟链路束250(3)耦合到虚拟网络设备。因此,即使这些上行链路中的一条和/或虚拟网络设备子单元122(1)和122(2)中的一个发生故障,网络设备120(2)和120(3)也继续与分布层通信。网络设备120(1)通过三条上行链路耦合到虚拟网络设备202 :两条到虚拟网络设备子单元122(1)的上行链路和一条到虚拟网络设备子单元122(2)的上行链路。这三条上行链路集体形成了虚拟链路束250(1)。即使这三条上行链路中的两条和/或虚拟网络设备子单元122(1)和122(2)中的一个发生故障,网络设备120(1)也继续与分布层通信。网络设备120(1)-120(3)中的每一个都将通往虚拟网络设备202的多条上行链路作为一条逻辑上行链路来操作。另外,在一些实施例中,网络设备120(1)-120(3)中的每一个都以与该网络设备如果被耦合到单个分布层设备时相同的方式进行操作(而非以该网络设备如果被耦合到两个独立的分布层设备时的方式进行操作)。 分布层虚拟网络设备子单元122(1)还通过一条链路耦合到服务器104(3)。在此示例中,如果网络设备122(1)或将服务器104(3)耦合到网络设备122(1)的链路发生故障,则服务器104(3)将无法与分布层通信。注意在其他实施例中,诸如服务器104(3)之类的但具有多个端口的服务器可能通过虚拟链路束耦合到多个虚拟网络设备子单元,并且这种服务器可能与虚拟网络设备子单元122(1)和122(2)进行交互,就好像这些子单元是单个虚拟网络设备202 —样。 虚拟网络设备子单元122(1)包括若干个卡(card),包括控制卡302(1)和线路卡304(1)和304(3)。类似地,虚拟网络设备子单元122(2)包括控制卡302(2)和线路卡304 (2)和304 (4)。控制卡302 (1)包括控制单元310 (1)、转发引擎312 (1),以及接口 320 (1)
13和320 (3)。控制卡302 (2)类似地包括控制单元310 (2)、转发引擎312 (2),以及接口 320 (2)和320 (4)。 在虚拟网络设备子单元122(1)中,线路卡304(1)包括转发引擎314(1)以及接口320 (5) 、320 (7)和320 (9)。接口 320(7)耦合到网络设备120 (3)。接口 320(9)耦合到网络设备120(1)。接口 320(5)在此示例中未被使用。线路卡304(3)包括转发引擎314(3)以及接口 320 (11) 、320 (13)和320 (15)。接口 320(11)和320 (13)分别耦合到网络设备120(2)和120(1)。接口 320(15)耦合到服务器104(3)。在网络设备120 (1)-120 (3)是由虚拟网络设备202控制的附属网络设备的实施例中,接口 320 (7) 、320 (9) 、320 (11)和320(13)被作为上行链路接口而操作,而未被耦合到附属网络设备的接口 320(15)被作为常规接口而操作。 在虚拟网络设备子单元122(2)中,线路卡304(2)包括转发引擎314(2)以及接口320 (6) 、320 (8)和320(10)。接口 320(8)耦合到附属网络设备120(2),并且接口 320(6)和320(10)未被连接。线路卡304(4)包括转发引擎314(4)以及接口 320 (12) 、320 (14)和320 (16)。接口 320(12)和320(16)分别耦合到附属网络设备120 (3)和120(1)。接口320(14)未被使用。在网络设备120(1)-120(3)是由虚拟网络设备202控制的附属网络设备的实施例中,接口 320 (8) 、320 (12)和320(16)被作为上行链路接口而操作。
注意,虽然将图3中的接口描述为进入和外出接口,但也可以使用充当只进入接口或只外出接口的接口。例如,图3所示的每个接口的功能可以使用一个只进入接口和一个只外出接口来实现。类似地,虚拟链路束250(1)-250(3)中的每一个都可以包括仅将分组从各个网络设备120(1)-120 (3)传送到虚拟网络设备202的若干条链路和仅将分组从虚拟网络设备202传送到网络设备120(1)-120(3)的若干条链路。 在所示出的实施例中,虚拟网络设备子单元122(1)中的控制卡302(1)经由虚拟网络设备链路360耦合到虚拟网络设备子单元122(2)中的控制卡302(2)。在此示例中,虚拟网络设备链路360包括两条链路(两条链路被用来提供更高的故障容许度和/或带宽;然而,在其他实施例中可以使用一条链路)。在此示例中这些链路是一种上行链路,除了分组之外还承载信息(例如与在线路卡之间发送的头部相类似的头部)。虚拟网络设备链路360中的上行链路被用来在虚拟网络设备子单元122 (1)和122 (2)之间交换信息和分组,所述信息控制虚拟网络设备202的操作。通过经由这些上行链路进行通信,虚拟网络设备子单元122(1)和122(2)协调其行为,以使得虚拟网络设备子单元122(1)和122(2)对于网络设备120(1)-120 (3)看起来是单个虚拟网络设备。 从而,在虚拟网络设备子单元122(1)和122(2)之间提供互连,这使得虚拟网络设备子单元122(1)和122(2)可以作为单个虚拟网络设备202进行操作。网络设备120(1)-120(3)以与网络设备120(1)-120(3)和单个物理设备进行通信时一样的方式与虚拟网络设备202进行通信。例如,如果网络设备120(2)正在处理去往服务器104(3)的分组,则网络设备120(2)在网络设备束250(2)的两条链路中选择一条来发送分组。在一些实施例中,此选择是基于负载分担准则的。在这种情况下,由于虚拟网络设备202看起来是单个网络设备,因此网络设备120(2)选择通往虚拟网络设备子单元122(2)的上行链路的可能性与选择通往虚拟网络设备子单元122(1)的上行链路的可能性相同,而不考虑仅虚拟网络设备子单元122(1)具有到服务器104(3)的直接连接这一事实。如果该分组被发送到虚拟网络设备子单元122(2),则网络设备120(2)使用包括在虚拟网络设备子单元122(1)和122(2)之间的虚拟网络设备链路360中的上行链路之一来将该分组发送到虚拟网络设备子单元122 (1),虚拟网络设备子单元122 (1)可以再将该分组提供到该分组的目的地服务器104(3)。 在其他实施例中,网络设备120(1)-120 (3)知道虚拟链路束250(1)和250(3)实际上终止于两个不同的网络设备。网络设备120(1)-120(3)基于此信息控制分组传输。例如,在此情况下,网络设备120(2)通过基于网络设备120(2)认识到逻辑链路内通往两个不同网络设备的单独连接这一事实,选择耦合到虚拟网络设备子单元122(1)的上行链路而非耦合到虚拟网络设备子单元122(2)的上行链路,从而处理去往服务器104(3)的分组。
接口 320 (13) 、320 (9)和320 (16)中的每一个都通过虚拟链路束250 (1)耦合到网络设备120(1),这些接口形成了一个接口束(例如EtherChannel(TM)端口束)。类似地,接口 320(11)和320(8)形成了通过虚拟链路束250(2)耦合到网络设备120(2)的另一接口束。接口 320(7)和320(12)形成了通过虚拟链路束250 (3)耦合到网络设备120 (3)的第三接口束。在虚拟网络设备202内,同一接口束中的每个接口被指定了相同的逻辑标识符。例如,接口 320(13)、320(9)和320(16)中的每一个都被指定了相同的逻辑标识符。在一些实施例中,用该逻辑标识符给经由这些接口中的一个接口接收到的分组加上标签,或者以其他方式使所述分组与所述逻辑标识符相关联,以指示这些分组是经由将虚拟网络设备202耦合到网络设备120(1)的虚拟链路束接收到的。注意,在网络设备120(1)-120(3)中的每一个内实现类似的接口束,并且包括在这种束中的接口也被每个网络设备(或者,在虚拟网络设备202控制网络设备120(1)-120 (3)的配置的实施例中,由虚拟网络设备202)指定了相同的逻辑标识符。例如,网络设备120(1)可以将相同的标识符指定给被耦合到虚拟链路束250(1)的每个接口。 分组与特定的逻辑标识符之间的关联被虚拟网络设备202内的转发引擎用来将分组路由和转发到网络设备120 (1) -120 (3),以及从网络设备120 (1) -120 (3)路由和转发分组。例如,当经由上行链路接口 320(13)接收到来自发送设备(例如,耦合到网络设备120(1)的客户端)的分组时,虚拟网络设备子单元122(1)通过将发送设备的MAC(媒体访问控制)地址与上行链路接口 320(13)的逻辑标识符相关联,得知该MAC地址位于上行链路接口 320(13)的"背后"。虚拟网络设备子单元122(1)将此关联通知给虚拟网络设备子单元122(1)中的每个转发引擎以及虚拟网络设备子单元122(2)中的每个转发引擎。基于该关联,去往该MAC地址的分组将被从具有相关联标识符的上行链路端口发送。由于在此情况下,上行链路接口 320(9)(在虚拟网络设备子单元122(1)中)和320(16)(在虚拟网络设备子单元122(2)中)也具有与上行链路接口 320(13)相同的逻辑标识符,因此去往该MAC地址的分组可能经由上行链路接口 320 (9) 、320 (13)和320(16)中的任意接口被转发。
相同的逻辑标识符被虚拟网络设备子单元122(1)和122(2)中的每一个用来标识上行链路接口束,并且这些虚拟网络设备子单元协调工作以将相同的逻辑标识符指定给同一上行链路接口束中的每个上行链路接口 。当经由一个特定逻辑标识符所标识的上行链路接口转发分组时,虚拟网络设备子单元122(1)和122(2)中的每一个都生成哈希值,以在该上行链路接口束的上行链路接口中选择一条发送分组的链路。每个虚拟网络设备子单元使用这些哈希值来标识该虚拟网络中的本地上行链路接口。从而,每个虚拟网络设备子单元将仅选择该虚拟网络设备子单元本地的上行链路接口。例如,如果虚拟网络设备子单元122(1)将经由包括接口 320(9) 、320(13)和320 (16)在内的上行链路接口束转发分组,则虚拟网络设备子单元所生成的哈希值将标识接口 320(9)和320(13)中的一个。
在以上示例中,通过将每个哈希值与上行链路接口束中的本地上行链路接口相关联,减少了虚拟交换链路360的使用。基本上,虚拟网络设备子单元122(1)倾向于特定上行链路接口束中的本地上行链路接口 ,而非同一上行链路接口束中位于虚拟网络设备子单元122(2)上的远程上行链路接口。类似地,虚拟网络设备子单元122(2)倾向于特定上行链路接口束中的本地上行链路接口,而非包括在虚拟网络设备子单元122(1)中的上行链路接口。例如,如果虚拟网络设备子单元122(2)需要经由上行链路接口转发分组,则虚拟网络设备子单元122(2)将经由上行链路接口 320(12)来发送该分组,而非将该分组通过虚拟网络设备链路360转发以经由上行链路接口 320(7)来发送。通过倾向于本地接口,降低了通过虚拟网络设备链路360发送的流量,这是因为虚拟网络设备子单元122 (1)和122 (2)中的每一个都将从本地接口转发在本地接收到的分组(即经由除了耦合到虚拟网络设备链路360的接口以外的接口接收到的分组)。 在一些实施例中,对于一个给定的虚拟链路束,在一个中心位置管理(例如对于诸如L2协议之类的控制协议)该虚拟链路束。例如,所有对虚拟链路束250(1)的控制协议处理可以在虚拟网络设备子单元122(1)的控制单元310(1)中进行。然后将此控制协议处理的结果传送到虚拟网络设备子单元122(2)的控制单元310(2)和/或传送到网络设备120(1)中的控制器。然后,控制单元310(2)在对如何处理从上行链路接口 320(16)(其位于耦合到虚拟链路束250(1)的上行链路接口束中)发送的分组以及经由上行链路接口320(16)接收到的分组进行控制时,使用(但不修改)此信息。例如,控制单元310(2)使用此信息在线路卡304(2)和/或304(4)上建立或修改查找表。这样,实际的控制协议处理被集中到控制单元310(1)中,而非被分布在虚拟网络设备202中的若干控制单元当中。
控制协议处理的中心点在虚拟链路束之间可能不同。例如,虽然对虚拟链路束250(1)的控制协议处理由控制单元310(1)管理,但对虚拟链路束250(2)的控制协议处理可以由控制单元310(2)管理。换言之,控制单元310(2)可以执行对虚拟链路束250(2)的所有控制处理,并且由控制单元310(2)生成的信息可以随后被传送到控制单元310(1)以在虚拟网络设备子单元122(1)中使用(但不修改)。 在虚拟网络设备202内为每个虚拟链路束的控制协议处理实现了管理中心点的实施例中,可以跨越虚拟链路束运行L2协议和/或可以用接口束作为路由L3接口。如果虚拟网络设备202中的虚拟网络设备子单元彼此独立地执行对本地接口的控制协议处理,则无法获得这些能力。另外,在实现了控制协议处理中心点的实施例中,用户可以通过访问单个虚拟网络设备子单元来修改虚拟链路束的控制协议行为。在以上示例中,当更新虚拟链路束250(1)的控制协议行为时,用户可以仅仅访问虚拟网络设备子单元122(1)(而非访问虚拟网络设备子单元122(1)和122(2)两者)。然后,虚拟网络设备子单元122(1)将用户对控制协议进行的任何修改自动传播到网络设备122(2)。此外,由于虚拟链路束的使用使得可以将若干上行链路作为一条逻辑上行链路来管理,因此比不使用虚拟链路束时的需求相比,需要配置的上行链路接口更少。例如,如果每个虚拟链路束包括两条上行链路,则虚拟网络设备202中需要由用户配置的上行链路接口的数量减半。
虚拟网络设备子单元122(1)和122(2)实现某些行为,以充当从网络设备 120(1)-120 (3)的角度看起来是单个逻辑网络设备的虚拟网络设备202。例如,只要虚拟网 络设备子单元122(2)接收到来自本地网络设备、客户端或服务器的分组,并且该分组的目 的地逻辑标识符标识出一个上行链路接口束,虚拟网络设备子单元122(2)就从所标识的 上行接口束中的本地上行链路接口发送该分组。虚拟网络设备子单元122(2)也可以将该 分组提供给虚拟网络设备子单元122(1),但虚拟网络设备子单元122(1)不应在虚拟链路 束上输出该分组。这样,目的地设备仅从虚拟网络设备202接收到一份该分组(而非从虚 拟网络设备子单元122 (1)和122 (2)各接收到一份),保持了虚拟网络设备202作为单个实 体的外观。 为了以这种方式进行操作,耦合到虚拟链路束中的链路的每个进入上行链路接口 被配置为将经由虚拟网络设备链路360接收到的流量过滤掉。例如,经由虚拟网络设备链 路360在虚拟网络设备子单元122(1)处接收到一个分组。接收到该分组的接口 320(1)或 320(3)更新与该分组相关联的信息(例如在头部中),以指示该分组是经由虚拟网络设备 链路360接收到的(在可替换实施例中,虚拟网络设备子单元122(2)中的发送接口可以更 新此信息)。当虚拟网络设备子单元122(1)在查找表中查找该分组的目的地地址时,查找 表返回标识出逻辑上行链路接口 320(9)和320 (13)的逻辑标识符。然后将该分组转发到上 行链路接口 320(13)(例如是基于负载分担考虑而选择的)。当上行链路接口 320(13)接收 到该分组时,上行链路320(13)将仅在该分组不是经由虚拟网络设备链路360接收到的情 况下才输出该分组,这是因为如果该分组是经由虚拟交换链路接收到的,那么另一虚拟网 络设备子单元122(2)将已经经由虚拟链路束发送了该分组。从而,上行链路接口 320(13) 可以基于被附加在该分组上的指示该分组是经由虚拟网络设备链路360接收到的信息,将 该分组从将要经由上行链路接口 320(13)发送的分组流中滤去。 在一些实施例中,MAC通知帧被用来使虚拟网络设备子单元122(1)中的L2表的 内容与虚拟网络设备子单元122(2)中L2表的内容保持同步,反之亦然。只要在虚拟网络 设备子单元中生成了涉及虚拟链路束背后的端口或包括在上行链路接口束中的上行链路 接口的MAC通知(例如,这种通知可以由一个线路卡生成以更新另一线路卡上的L2表),就 将一份该MAC通知经由虚拟网络设备链路360发送。类似地,如果一个虚拟网络设备子单 元确定一个分组应被洪泛扩散(flood),则该虚拟网络设备子单元将经由虚拟网络设备链 路360发送一份该分组,确保虚拟网络设备子单元将接收到一份由对等方虚拟网络设备子 单元中的转发引擎生成的任何MAC通知响应。 作为示例,假设因为包括在虚拟网络设备子单元122(1)中的转发引擎不知道哪 个端口或上行链路接口与一个分组的目的地地址相关联,所以虚拟网络设备子单元122 (1) 对该分组进行洪泛扩散。作为洪泛扩散该分组的一部分,虚拟网络设备子单元122(1)经由 虚拟交换链路360将一份该分组发送到虚拟网络设备子单元122(2)。如果虚拟网络设备 子单元122(2)中的转发引擎已经知道该目的地地址位于一个特定的上行链路接口或端口 背后(例如,如果转发表已经包括将该目的地地址与网络设备120之一的一个端口相关联 的条目),则该转发引擎生成标识出该关联的MAC通知,该通知被分发到虚拟网络设备子单 元122(2)内的其他任何转发引擎。由于所述分组最初是经由虚拟网络设备链路360接收 到的,因此虚拟网络设备子单元122(2)还经由虚拟网络设备链路360将一份MAC通知发送
17回去。然后,在虚拟网络设备子单元122(1)中所包括的转发引擎当中分发此MAC通知。在 基于MAC通知而被更新之后,虚拟网络设备子单元122(1)中的转发引擎现在知道目的地址 所标识出的设备的位置了。因此,随后接收到的去往该设备的分组不被洪泛扩散。
当一个虚拟链路束中连接到一个虚拟网络设备子单元的所有物理链路都发生故 障时,该虚拟链路束转变为被耦合到单个虚拟网络设备子单元的正常链路束。此时,修改每 个虚拟网络设备子单元相对于该网络设备束的行为。例如,假设虚拟链路束250(1)中被耦 合到虚拟网络设备子单元122(2)的所有上行链路发生故障。此时,虚拟网络设备子单元 122(2)不再具有任何能经由虚拟链路束250(1)发送分组的逻辑上行链路接口。因此,虚拟 网络设备子单元122(2)重新引导需要经由虚拟链路束250(1)发送的所有流量,使之通过 虚拟网络设备链路360。另外,由于网络设备122(2)无法再经由虚拟链路束250(1)发送分 组,因此虚拟网络设备子单元122(1)将停止滤去经由虚拟网络设备链路360接收到的要经 由虚拟链路束250(1)发送的流量。如果虚拟链路束250(1)中被耦合到虚拟网络设备子单 元122(2)的上行链路中的至少一条被恢复,则虚拟链路束250(1)将转变回正常操作模式, 在所述正常操作模式中,虚拟网络设备子单元122(2)将经由虚拟链路束250(1)发送在本 地接收到的分组,并且虚拟网络设备子单元122(1)将滤去经由虚拟网络设备链路360接收 到的要经由虚拟链路束250(1)发送的分组。
斷睡各H難 图4示出了包括四个虚拟网络设备子单元的虚拟网络设备集群。虚拟网络设 备集群是包括两个或更多个虚拟网络设备子单元的虚拟网络设备。在此示例中,虚拟网 络设备集群402是虚拟网络设备子单元122(1)-122(4)的集群。虚拟网络设备子单元 122(1)-122(4)中的每一个都可以类似于图3的虚拟网络设备子单元。
虚拟网络设备集群中的每个虚拟网络设备子单元都通过虚拟网络设备链路耦合 到同一虚拟网络设备集群中的至少一个其他虚拟网络设备子单元。在图4的示例中,虚 拟网络设备子单元122(1)通过虚拟网络设备链路360(A)耦合到虚拟网络设备子单元 122 (2),并通过虚拟网络设备链路360(D)耦合到虚拟网络设备子单元122(3)。虚拟网络 设备子单元122(1)并不直接耦合到虚拟网络设备子单元122(4)。虚拟网络设备子单元 122(2)经由虚拟网络设备链路360(A)耦合到虚拟网络设备子单元122(1),并经由虚拟网 络设备链路360(B)耦合到虚拟网络设备子单元122(4)。虚拟网络设备子单元122(2)并 不直接耦合到虚拟网络设备子单元122(3)。虚拟网络设备子单元122(3)经由虚拟网络设 备链路360(D)耦合到虚拟网络设备子单元122 (l),并经由虚拟网络设备链路360(C)耦合 到虚拟网络设备子单元122(4)。虚拟网络设备子单元122(3)并不直接耦合到虚拟网络设 备子单元122(2)。虚拟网络设备子单元122(4)经由虚拟网络设备链路360(B)耦合到虚 拟网络设备子单元122 (2),并经由虚拟网络设备链路360(C)耦合到虚拟网络设备子单元 122(3)。虚拟网络设备子单元122(4)并不直接耦合到虚拟网络设备子单元122(1)。
—对虚拟网络设备子单元之间的每条虚拟网络设备链路包括一条或多条链路。在 此示例中,虚拟网络设备链路360(A)-360(D)中的每一个都包括两条链路。包括多条链路 的虚拟网络设备链路360 (A) -360 (D)中的每一个都作为诸如EtherChannel (TM)之类的逻 辑链路束而被操作。还要注意,虚拟网络设备链路也可被实现为将一个虚拟网络设备子单 元耦合到若干个其他的虚拟网络设备子单元的虚拟链路束(例如,如图5B所示)。
在虚拟网络设备集群中提供多于两个虚拟网络设备子单元,这在某些情况下提供 了额外的冗余度。例如,如果一个虚拟链路束包括通往图4中所示的四个虚拟网络设备子 单元122(1)-122 (4)中每一个的至少一条链路,则即使被耦合到其中三个虚拟网络设备子 单元的链路发生故障,虚拟链路束也可继续进行操作。类似地,这种虚拟链路束即使四个虚 拟网络设备子单元中的三个发生故障也可继续进行操作。 虚拟网络设备集群还使得可以增加虚拟网络设备中的接口数量。在某些情况下, 希望增加使用虚拟网络设备实现的特定网络层处接口的数量。由于每个虚拟网络设备子单 元的物理特性,可以包括在给定的虚拟网络设备子单元中的接口数量可能是有限的。在这 种情况下,如果该网络层是从被限制为包括最多两个子单元的虚拟网络设备实现的,则将 需要另一虚拟网络设备,以在网络层中提供所需数量的接口。这给用户带来了显著的成本 增加,尤其是在仅需要少量额外接口 (相对于每个虚拟网络设备中的总数)的情况下。另 外,额外虚拟网络设备的使用会向网络层引入额外的管理点。此额外虚拟网络设备的使用 还可能使试图防止整个网络中循环的路由算法(例如生成树算法)复杂化,这是因为这种 路由算法将把每个虚拟网络设备作为单独的网络设备来处理。 通过使一个虚拟网络设备可以包括多于两个的虚拟网络设备子单元,减少或避免
了以上问题。可以向虚拟网络设备集群添加虚拟网络设备子单元,以在特定网络层处提供
额外的接口。然而,同时,额外的虚拟网络设备子单元将仍作为与原来的虚拟网络设备子单
元相同的逻辑网络设备的一部分而工作。因此,不会影响网络中的管理点的数量。另外,在
整个网络上运行的路由算法的行为将好像虚拟交换集群是单个逻辑网络设备一样。 在某些情况下,将虚拟网络设备扩展为多于两个虚拟网络设备子单元提供了比等
同的一组多个协同定位的(co-located)虚拟网络设备所能提供的更有效的转发吞吐量,
所述协同定位的虚拟网络设备中的每一个都仅包括两个虚拟网络设备子单元。另外,如果
虚拟网络设备集群在每个接口束中使用每个虚拟网络设备子单元中的至少一个接口,则虚
拟网络设备集群的最大转发容量与该虚拟网络设备集群中可以包括的虚拟网络设备子单
元的最大数量成比例。 在一些实现了虚拟链路束的实施例中,附接于虚拟网络设备集群的每个虚拟链路
束都被允许延伸到该虚拟网络设备集群中的多于两个不同的虚拟网络设备子单元。然而,
一些虚拟链路束附接于虚拟网络设备中少于全部的虚拟网络设备子单元。 图5A-图5C示出了本发明可替换实施例的若干种其他虚拟交换集群配置。这些
配置是作为示例而提供的。注意,在其他实施例中可以实现虚拟网络设备集群的多种其他配置。 如图5A所示,虚拟网络设备集群402包括N个虚拟网络设备子单元 122(1)-122 (N)。位于虚拟网络设备集群402的两"端"的虚拟网络设备子单元122(1)和 122 (N)中的每一个都耦合到一个其他的虚拟网络设备子单元。虚拟网络设备集群402中其 余的虚拟网络设备子单元122(2)-122(N-1)(未示出)中的每一个都耦合到两个其他的虚 拟网络设备子单元。虚拟网络设备子单元122(1)-122 (N)被设置为彼此"串联",以使得从 虚拟网络设备的一"端"的设备发送到另一"端"的分组将经由该虚拟网络设备中的每个居 间子单元而被传送。群402。在此示例中,两个虚拟网络设备子单元122(3)和122(4)通过虚拟网络设备链路 360(C)彼此耦合。虚拟网络设备子单元122(1) 、122(2) 、122(5)和122(6)中的每一个都 通过虚拟网络设备链路360 (A) 、360 (B) 、360 (D)和360 (E)中相应的一条耦合到虚拟网络设 备子单元122(3)和122(4)两者。如此示例所示,同一虚拟网络设备链路中的链路可以终 止于不同的虚拟网络设备子单元。在一个实施例中,虚拟网络设备子单元122(1) 、122(2)、 122(5)和122(6)与虚拟网络设备子单元122(3)和122(4)进行交互,就好像虚拟网络设备 子单元122(3)和122(4)是单个逻辑子单元一样。从而,虚拟网络设备集群可以被配置为 具有若干个虚拟化级别。 在图5C中,示出了虚拟网络设备集群的另一示例。这里,虚拟网络设备集群402 包括三个虚拟网络设备子单元122 (1) -122 (3)。在此示例中,虚拟网络设备集群402中的每 个虚拟网络设备子单元都彼此耦合。虚拟网络设备子单元122(1)通过虚拟网络设备链路 360(A)耦合到虚拟网络设备子单元122(2)。虚拟网络设备子单元122(2)通过虚拟网络设 备链路360(B)耦合到虚拟网络设备子单元122(3)。虚拟网络设备子单元122(3)通过虚拟 网络设备链路360(C)耦合到虚拟网络设备子单元122(1)。 每个虚拟网络设备集群402都作为单个逻辑网络设备而进行操作,而不管该虚拟 网络设备集群内的虚拟网络设备子单元的内部配置如何。从而,像图3的虚拟网络设备一 样,每个虚拟网络设备集群进行操作以确保多个虚拟网络设备子单元不会每个都向同一目 的地设备发送一份相同的分组。另外,虚拟网络设备集群进行操作以防止分组在虚拟网络 设备集群中"循环"。当虚拟网络设备子单元接收到一份已被该虚拟网络设备子单元转发过 了的分组时,分组就"循环"了 。 图6A示出了用虚拟网络子单元标识符来防止循环并确保虚拟网络设备集群不向 同一目的地发送多份相同分组的虚拟网络设备集群的示例。具有诸如图4和图5A-图5C 的不同配置的虚拟网络设备集群也可用虚拟网络子单元标识符来防止循环并确保虚拟网 络设备集群不向同一 目的地发送多份相同分组。 图6A的虚拟网络设备集群402包括多个虚拟网络设备子单元122(1)-122(3)。在 此示例中,虚拟网络设备集群402是耦合到若干个接入层网络设备120(1)-120(4)的分布 层设备。虚拟网络设备链路360(A)将虚拟网络设备子单元122(1)耦合到虚拟网络设备子 单元122 (2)。虚拟网络设备链路360(B)将虚拟网络设备子单元122(2)耦合到虚拟网络设 备子单元122(3)。 虚拟网络设备子单元122(1)具有若干个接口,包括被耦合到网络设备120(1)的 端口P1和作为接口束IB1—部分的接口。虚拟网络设备子单元122(1)还包括被耦合到虚 拟网络设备链路360(A)的接口V1。 虚拟网络设备子单元122 (2)包括被耦合到虚拟网络设备链路360 (A)的接口 V2, 以及被耦合到虚拟网络设备链路360(B)的接口 V3。虚拟网络设备子单元122(2)还包括作 为接口束IB1 —部分的本地接口,以及被耦合到网络设备120(3)的接口 P2。
虚拟网络设备子单元122 (3)包括被耦合到虚拟网络设备链路360 (B)的接口 V4。 虚拟网络设备子单元122(3)还包括被耦合到网络设备120(4)的接口P3。如图所示,虚拟 网络设备子单元122(3)不包括接口束IB1中的本地接口 (即,接口束IB1延伸到虚拟网络 设备集群402中少于全部的虚拟网络设备子单元)。
注意,每个虚拟网络设备子单元122(1)_122(3)中的每个接口都可以包括若干个 物理接口,并且耦合到虚拟网络设备子单元的每条链路都可以包括若干条物理链路。例如, 虚拟网络设备链路360(A)可以是汇聚链路,从而接口 VI可以包括若干个物理接口。
在图6A中,虚拟网络设备集群中的每个虚拟网络设备子单元被指定了唯一的虚 拟网络设备子单元标识符。这里,向虚拟网络设备子单元122(1)指定了标识符"01",向虚 拟网络设备子单元122(2)指定了标识符"02",向虚拟网络设备子单元122(3)指定了标识 符"03"。这些标识符被用来跟踪虚拟网络设备集群中的哪些虚拟网络设备子单元已经处理 了给定的分组。注意在可替换实施例中,向每个虚拟网络设备子单元指定若干个唯一标识 符。例如,在一个实施例中,向每个虚拟网络设备子单元指定了每个本地接口一个标识符。 在这种实施例中,这些唯一标识符可以既标识虚拟网络设备子单元又标识该虚拟网络设备 子单元内的接口。 虚拟网络设备集群402所处理的每个分组都与所述标识符中的一个相关联。在一 个实施例中,此关联是通过向虚拟网络设备集群402接收到的每个分组附加包含所示标识 符中的一个的头部。包括在给定分组的头部中的特定标识符标识出虚拟网络设备集群402 中第一个接收到该分组的虚拟网络设备子单元。例如,如果网络设备120(1)将一个分组发 送到虚拟网络设备集群402的接口 Pl,则包括标识符"01"的头部将被附加到该分组上。
可以在分组进入和/或分组外出时,使标识符与虚拟网络设备子单元所接收到的 分组相关联。例如,在一个实施例中,虚拟网络设备子单元122(1)中的每个接口 (V1、P1 和IB1中的本地接口 )被配置为向经由该接口接收到的分组附加一个头部,以使得在进入 虚拟网络设备子单元122(1)时将头部附加到分组上。在其他实施例中,虚拟网络设备子单 元122(1)中的每个接口在分组被从该接口发送时向这些分组附加头部。所述头部除了虚 拟网络设备子单元标识符之外,还可以包括其他信息。例如,头部还可以包括标识出最初接 收到分组的接口的信息和/或标识出对该分组执行的查找结果的信息。注意在一个实施例 中,如果还未在分组和标识符之间创建关联,则诸如接口 VI之类的通往虚拟网络设备链路 的接口将接收到的分组与标识符相关联(通过向该分组附加头部或者通过更新已有的头 部)。 在一个实施例中,某些接口不向分组附加头部。在这种实施例中,另一接口向经由 接口中无法向分组附加头部的一个接口接收到的分组附加适当的头部,即使该分组经由不 同的虚拟网络设备子单元进入虚拟网络设备集群402时也是如此。例如,如果接口P1无法 向从网络设备120(1)接收到的分组附加头部,并且如果该分组被转发到虚拟网络设备子 单元122(2),则接口 V2响应于对该分组的接收而向该分组附加头部。该头部包括标识符 "01",以指示该分组是经由虚拟网络设备子单元122(1)进入虚拟网络设备集群402的。可 替换地,如果虚拟网络设备子单元122(1)的接口 VI可以向离开接口 VI的分组附加头部, 则接口 VI在该分组要被向虚拟网络设备子单元122(2)发送时向该分组附加头部。
在通过虚拟网络设备集群402转发分组时,保持标识符和分组之间的关联。从而, 如果一个分组被经由端口 Pl接收然后转发到虚拟网络设备子单元122(2)和122(3),则包 括标识符"01"的头部也会在整个虚拟网络设备集群402中与该分组一起被转发。当分组 离开虚拟网络设备集群402时,头部被去除。 每个虚拟网络设备子单元使用标识符来确定是否可经由特定接口来发送分组。例如,诸如接口 Vl-V4之类的被耦合到虚拟网络设备链路的接口使用标识符来确定是否允许 将特定分组经由该接口发送。如果与标识符"01"相关联的分组要经由接口 V2而被发送, 则接口 V2使用该头部来检测到该分组已被虚拟网络设备子单元122(1)转发过。因此,接 口 V2可以通过将该分组从要经由接口 V2发送的分组流中滤去,来防止将该分组循环回虚 拟网络设备子单元122(1)。 图6B示出了图6A的虚拟网络设备集群402中的每个接口可以使用的进入标识符 (ID)设定和外出过滤器。在此示例中,假设在分组进入时向分组附加了头部,所述头部中 的每一个都包含适当的虚拟网络设备子单元标识符。另外,如果接口无法在分组中包括标 识符,则被附加到该分组上的头部将具有指示出仍需将具体标识符值与该分组相关联的值 (在此示例中是"00")。 在图6B的实施例中,接口将从要经由该接口发送的输出流中滤去分组,除非与该 分组相关联的标识符处于"允许"标识符的列表上。注意在可替换的实施例中,接口可以使 用"不允许"标识符的列表来将分组从要经由该接口发送的输出流中滤去。
表中的"进入ID设定"列示出了将与经由特定接口接收到的分组相关联的虚拟网 络设备子单元标识符的值。如上所述,可以通过向分组添加包括标识符的头部,将该标识符 与该分组相关联。如图所示,标识符"01"将与经由接口P1接收到的分组相关联。标识符 "02"将与经由接口 P2接收到的分组相关联。标识符"03"将与经由接口 P3接收到的分组 相关联。如果接收接口不能生成适当的头部,则由特定接口P1-P3在该接口接收到分组时, 或者由诸如接口 Vl-V4之一的另一组件(例如,如下所述),来创建关联。
经由虚拟网络设备子单元122(1)的作为接口束IB1 —部分的接口接收到的分组 将与标识符"01"相关联。类似地,经由虚拟网络设备子单元122(2)的作为接口束IB1 — 部分的接口接收到的分组将与标识符"02 "相关联。 如果具体标识符值还未与经由虚拟网络设备链路接收到的分组相关联,则将这些 分组与标识符相关联。在此示例中,如果标识符值"00"与一个分组相关联,所述值"00"指 示出需要将具体的标识符值(即实际上标识出虚拟网络设备子单元的值)与该分组相关 联。值"00"是非具体的(在此示例中),这是因为值"OO"未标识出虚拟网络设备子单元 122(1)-122 (3)中特定的一个。 例如,如果标识符与分组的关联由进入接口执行,并且如果某些进入接口无法 (例如由于这些进入接口缺少某些功能)将具体标识符值与分组相关联,则非具体值可能 与分组相关联。例如,如果接口 Pl-P3无法生成具体标识符值,则非具体标识符值"00"将 与经由接口 Pl-P3接收到的分组相关联。如果经由接口 Pl-P3接收到的分组被转发到另一 虚拟网络设备子单元,则当该分组经由虚拟网络设备链路被接收到时,将具体标识符值与 该分组相关联。注意,与具体标识符值"01"、"02"和"03"不同,非具体标识符值"00"在每 个不同的虚拟网络设备子单元中具有不同的含义。另外,非具体标识符值"OO"仅被用来标 识给定的虚拟网络设备子单元内的本地接口。当在机壳间转移时,非具体标识符值"OO"的 含义(即由非具体标识符值"OO"标识的接口 )被重新指定。 从而,如果一个分组与"00"相关联,则该标识符的含义根据哪个虚拟网络设备子 单元当前正在处理该分组而变化。例如,虚拟网络设备子单元122(1)内仅有的与非具体标 识符值"00"相关联的分组(除了任何经由接口 Vl进入的这种分组以外,因为这些分组将
22被接口 VI与具体标识符相关联)是经由虚拟网络设备子单元122(1)进入虚拟网络设备集 群402的分组。类似地,虚拟网络设备子单元122(2)内仅有的与非具体标识符值"OO"相 关联的分组(同样,除了任何经由接口 V2或V3之一进入的这种分组以外,因为这些分组将 被接口 V2和V3与具体标识符相关联)是经由虚拟网络设备子单元122(2)进入虚拟网络 设备集群402的分组。最后,虚拟网络设备子单元122(3)内仅有的与非具体标识符值"OO" 相关联的分组(除了任何经由接口 V4进入的这种分组以外,因为这些分组将被接口 V4与 具体标识符相关联)是经由虚拟网络设备子单元122(3)进入虚拟网络设备集群402的分 组。 如图6B所示,如果接口 VI接收到与标识符值"OO"相关联的分组,则接口 VI将 该分组与标识符"02"相关联,以指示出该分组是经由虚拟网络设备子单元122(2)进入虚 拟网络设备集群402的。类似地,如果接口 V2接收到与标识符值"00"相关联的分组,则 接口 V2将该分组与标识符"01"相关联,以指示出该分组最初是经由虚拟网络设备子单元 122(2)进入虚拟网络设备集群402的。如果接口 V3接收到与标识符值"00"相关联的分 组,则接口 V3将该分组与标识符"02"相关联。如果接口 V4接收到与标识符值"00"相关 联的分组,则接口 V4将该分组与标识符"03"相关联。当接口 Vl-V3接收到以与具体标识 符值相关联的分组时,接口 Vl-V3将不更新这些具体标识符值。 表中的"外出过滤器"列示出了允许哪些分组经由特定接口被发送。不允许经由特 定接口发送的分组将被从要经由该接口发送的输出流中滤去。在一些实施例中,虚拟网络 设备子单元122(1)-122(3)中的每一个内的每个接口都使用寄存器来存储此外出过滤器 信息。寄存器存储位图(bitmap),在该位图中,每个位与虚拟网络设备子单元标识符的一个 可能的值相关联。当要从一个接口输出分组时,该接口将使用与该分组相关联的标识符来 选择寄存器中的位。例如,如果该分组与标识符值"02"相关联,则接口将选择与标识符值 "02"相关联的位。接口将基于所选位的值,从要经由该接口发送的输出流中过滤分组。例 如,接口将把分组从输出流中滤去,除非与标识符值"02"相关联的位被设置为特定值(例 如在图6B的表中是1)。 在此示例中,与标识符"00 "、" 01 "、" 02 "和"03 "相关联的分组被允许经由接口 Pl-P3输出。这表明,允许分组从这些接口输出,无论这些分组是从何处进入虚拟网络设备 集群402的。这是合适的,因为接口 Pl-P3中的每一个是仅有的将虚拟网络设备集群402耦 合到特定网络设备的接口。因此,不存在另一虚拟网络设备子单元中的另一接口已经将分 组发送到被耦合到接口 Pl-P3的网络设备之一的风险。例如,由于接口 P3是仅有的将虚拟 网络设备集群402耦合到网络设备120 (4)的接口 ,因此不存在虚拟网络设备子单元122 (1) 和122(2)将分组发送到网络设备120(4)的通路。因此,接口 P3不需要将经由虚拟网络设 备子单元122(1)和122(2)接收到的分组从要经由接口 P3发送的输出流中滤去。
接口束IB1中包括有两个接口。这些接口中的每一个都具有包括该接口的虚拟网 络设备子单元所专用的不同的外出过滤器设定。例如,包括在虚拟网络设备子单元122(1) 中的本地接口将允许发送与标识符值"00"和"01"相关联的分组,但将滤去与标识符值 "02"和"03"相关联的分组。这表明,虚拟网络设备子单元122(1)中的本地接口将仅发送 经由虚拟网络设备子单元122(1)进入虚拟网络设备集群402的分组。类似地,虚拟网络设 备子单元122(2)中的本地接口将仅发送经由虚拟网络设备子单元122(2)和122(3)进入虚拟网络设备集群402的分组。通过向允许从接口束IB1的每个接口发送的分组施加这些 约束,不存在从两个接口发送一份相同分组的机会。 接口 VI允许经由虚拟网络设备链路360(A)发送与标识符"00"和"01"相关联 的分组。这表明,如果分组是经由虚拟网络设备子单元122(1)进入虚拟网络设备集群402 的,则接口 VI将把这些分组发送到虚拟网络设备子单元122(2)。然而,如果任何分组已被 虚拟网络设备子单元122(2)转发过,则接口 VI将不会允许这些分组被发送回虚拟网络设 备子单元122(2)。如图6A所示,经由虚拟网络设备子单元122(2)或122(3)进入虚拟网络 设备集群402的分组到达虚拟网络设备子单元122(1)的唯一通路是经由虚拟网络设备链 路360(A)。因此,接口 VI将与标识符"02"和"03"相关联的分组从输出流中滤去,以防止 这些分组"循环"回虚拟网络设备子单元122(2)。由于类似的原因,接口 V4滤去与标识符 "02"和"01"相关联的分组而不经由接口 V4发送。 接口 V2滤去与标识符"01"相关联的分组,并允许其他分组(与标识符"00"、"02" 和"03"相关联的分组)经由接口V2被发送到虚拟网络设备子单元122(2)。从而,接口 V2将防止经由虚拟网络设备子单元122(1)进入虚拟网络设备集群402的分组循环回虚拟 网络设备子单元122(1),但将允许经由虚拟网络设备子单元122(2)和122(3)进入虚拟网 络设备集群的分组被发送到虚拟网络设备子单元122(1)。类似地,接口 V3允许与标识符 "00"、"01"和"02"相关联的分组经由虚拟网络设备链路360(B)被发送到虚拟网络设备子 单元122(3),但防止与标识符"03"相关联的分组循环回虚拟网络设备子单元122(3)。
虽然以上示例集中于虚拟网络设备集群402如何处理数据分组,但也可使用相同 的技术来处理在虚拟网络设备子单元122(1)-122(3)之间发送的控制分组。例如,虚拟网 络设备子单元122(1)-122(3)中的每一个都可以执行以太网转发。虚拟网络设备子单元 122(1)-122(3)向彼此发送MAC通知消息以保持在每个虚拟网络设备子单元中维护的转发 表之间的一致性。当虚拟网络设备子单元最初生成MAC通知消息时,该MAC通知消息被与 非具体标识符值(例如在以上示例中是"OO")相关联。如果该MAC通知消息被发送到另一 虚拟网络设备子单元,则虚拟网络设备子单元随后以与使具体标识符与数据分组相关联相 同的方式,使具体标识符值与MAC通知相关联。如果虚拟网络设备子单元122(2)经由虚拟 网络设备链路360(A)接收到由虚拟网络设备子单元122(1)生成的与非具体标识符值相关 联的MAC通知,则虚拟网络设备子单元122(2)将该MAC通知与标识符"01"相关联。如果 虚拟网络设备子单元122(2)随后将该MAC通知发送到虚拟网络设备子单元122(3),则保持 与标识符"01"的关联。从而,与MAC通知相关联的标识符值被设置为标识出生成该MAC通 知的虚拟网络设备子单元的具体值。此标识符值被用来过滤来自某些接口的MAC通知,以 防止虚拟网络设备集群内的循环。 在一个实施例中,虚拟网络设备集群402中每个接口的进入ID设定和外出过滤器 值是由集中式控制器生成的。例如,虚拟网络设备子单元122(1)可以被指定为虚拟网络设 备集群402中的"基本"虚拟网络设备子单元。基本虚拟网络设备子单元所执行的任务之 一是为虚拟网络设备集群402中的每个接口生成进入ID设定和外出过滤器值。如果基本 虚拟网络设备子单元发生故障,则其他虚拟网络设备子单元之一将担任基本虚拟网络设备 子单元的角色。 图6C示出了虚拟网络设备子单元的接口 600(其表示端口、上行链路接口或通往虚拟网络设备链路的接口 )的示例。接口 600使用外出过滤器值来过滤要经由接口 600从 虚拟网络设备子单元发送的分组。如图所示,接口 600包括过滤单元610和外出过滤器值 存储装置620。外出过滤器值存储装置620存储外出过滤器值,例如在图6B的"外出过滤 器"列中所示的值(例如是由基本虚拟网络设备子单元生成并提供给接口 600的)。外出 过滤器值存储装置620可以是寄存器、存储单元,或其他用于存储适当的外出过滤器值的 存储区域。过滤单元610将与每个分组相关联的信息和存储在外出过滤器值存储装置620 中的外出过滤器值结合起来使用,以确定每个分组是否应被允许经由接口输出。过滤单元 610接收外出分组流650。外出分组流650由与接口 600位于同一虚拟网络设备子单元内 的转发引擎发送到接口 600。如果给定的分组被允许从接口 600输出,则过滤单元610允许 该分组被从接口 600输出到链路上,作为经过滤的外出分组流660的一部分。如果基于与 给定的分组相关联的信息和存储在外出过滤器值存储装置620中的信息,确定该分组不被 允许从接口 600输出,则过滤单元610禁止该分组经由接口 600被作为经过滤的外出分组 流660的一部分输出(例如,通过丢弃该份分组)。 接口 600还包括进入标识符(ID)值存储装置630 (例如寄存器或其他存储区域), 以及标识符单元640。如果具体的标识符值还未与输入的分组相关联,则在该分组进入虚 拟网络设备子单元时,进入标识符值存储装置630存储应与该输入的分组相关联的标识符 值。标识符单元640使进入标识符值存储装置630中的值与进入分组流670中还未与具体 进入标识符相关联的每个分组相关联。因此,进入分组流680中的每个分组都已与具体的 标识符相关联。 图7是示出了在虚拟交换集群中转发分组的方式的流程图。在710,虚拟网络设备 集群接收分组。如上所述,虚拟网络设备集群包括集体充当单个逻辑设备的若干个虚拟网 络设备子单元。只要包括在该虚拟网络设备集群中的虚拟网络设备子单元接收到来自不是 该虚拟网络设备集群一部分的设备的分组,该虚拟网络设备集群就接收到分组。
在720,使分组与第一个接收到该分组的虚拟网络设备子单元的标识符相关联。换 言之,使该分组与标识出虚拟网络设备子单元之一的值相关联。所标识的虚拟网络设备子 单元是该分组进入虚拟网络设备集群的子单元。标识符可由第一个接收到分组的接口生 成。可替换地,标识符可以由将分组输出到同一虚拟网络设备集群内另一虚拟网络设备子 单元的接口来生成。作为另一种替换,标识符可以由另一虚拟网络设备子单元内的接口生 成,所述的另一虚拟网络设备子单元从所标识的虚拟网络设备子单元接收到所述分组。
将分组与第一个接收到该分组的虚拟网络设备子单元相关联可能涉及向分组附 加头部。该头部包括适当的虚拟网络设备子单元的标识符。 在730,基于相关联的标识符,从要经由虚拟网络设备集群的接口发送的分组流中
过滤分组。根据相关联的标识符标识出哪个虚拟网络设备子单元来从分组流中过滤分组。
例如,发送分组所经由的接口可以是接口束的一部分,所述接口束包括多于一个虚拟网络
设备中的接口。接口将经由除了包括该接口的虚拟网络设备子单元之外的任何虚拟网络设
备子单元进入虚拟网络设备集群的分组滤去,以防止经由接口束发送多份该分组。 在一个实施例中,从分组流中过滤分组涉及访问与接口相关联的一组外出过滤器
设定。例如,接口的外出过滤器设定可以被存储在寄存器中,所述寄存器对可与分组相关联
的每个可能的标识符值包括一个位。该位的值指示出与特定标识符值相关联的分组是否可从接口中输出。例如,如果分组的标识符具有值"01 ",并且如果与标识符值"01"相关联的 位被设置为值"l",则允许该分组从接口中输出。而如果该位被清除(即如果该位的值为 零),则无法将该分组从接口中输出。因此,从要从接口输出的分组流中滤去该分组。
如上所述,计算各种外出过滤器设定(用于确定是否可经由特定接口发送分组), 以防止分组在虚拟网络设备集群内循环。可以如此生成这些外出过滤器设定,以使得每个 分组遵循虚拟网络设备集群内的生成树。在一个实施例中,每个虚拟网络设备集群计算一 个生成树。在其他实施例中,如下所述,每个虚拟网络设备集群计算若干个生成树。
齡斷睡各i殳錢齢付成j对 在虚拟网络设备集群中,每个虚拟网络设备子单元都提供进入虚拟网络设备集群 的可能的进入点。每个生成树都与一个不同于其他生成树的进入点(或一组不同的进入 点)相关联。当分组经由特定的进入点进入虚拟网络设备集群时,标识出该进入点的信息 与该分组相关联。例如,如上所述,虚拟网络设备子单元标识符可以与该分组相关联。然后, 以和与分组进入虚拟网络设备集群的进入点相关联的生成树一致的方式,通过虚拟网络设 备集群转发分组。根据生成树来转发分组,这防止了分组在虚拟网络设备集群内"循环",这 是因为生成树阻塞一对给定的虚拟网络设备子单元之间除了一条路径之外的所有路径。
图SA-图8D每个都示出了被用来通过图4的虚拟网络设备集群传送分组的 不同的生成树。在图8A-图8D中,虚拟网络设备集群402包括虚拟网络设备子单元 122(1)-122 (4)。虚拟网络设备链路360(A)耦合虚拟网络设备子单元122(1)和122(2)。 虚拟网络设备链路360(B)耦合虚拟网络设备子单元122(2)和122(4)。虚拟网络设备链路 360(C)耦合虚拟网络设备子单元122(3)和122(4)。虚拟网络设备链路360 (D)耦合虚拟 网络设备子单元122(3)和122(1)。 图8A示出了生成树800A。虚拟网络设备子单元122 (1)是生成树800A的根 (root)。在此示例中,生成树800A被用来传送经由虚拟网络设备子单元122(1)进入虚拟 网络设备集群402的分组。用来传送经由特定进入点进入的分组的生成树被描述为与该进 入点相关联。从而,生成树800A与虚拟网络设备子单元122(1)相关联。
使用生成树800A涉及基于特定接口是否被生成树阻塞,来确定是否可以经由该 接口传送分组。用来表示生成树800A的箭头示出了可以经由非阻塞接口传送分组(其是 经由虚拟网络设备子单元122(1)进入虚拟网络设备集群402的)的路径。当虚拟网络设 备子单元对给定的分组进行转发和/或路由时,该分组将被基于转发或路由的出口而发送 到该虚拟网络设备子单元内的一个或多个接口 。然后,生成树800A被用来确定该分组是否 将从该分组所被发送到的每个接口中输出。在一个实施例中,耦合到虚拟网络设备链路的 每个接口被编程,以从该接口的输出流中过滤分组(其是经由虚拟网络设备子单元122(1) 进入虚拟网络设备集群402的),以使得分组将仅被沿生成树800A而传送。例如,经由虚 拟网络设备链路360(B)发送分组是与生成树800A不一致的。因此,虚拟网络设备子单元 122(2)中耦合到虚拟网络设备链路360(B)的接口会将经由虚拟网络设备子单元122(1)进 入的所有分组从该接口的输出流中滤去。 如图所示,经由虚拟网络设备子单元122(1)进入的分组经由虚拟网络设备链路 360(A)被转发到虚拟网络设备子单元122(2),经由虚拟网络设备链路360(D)被转发到虚 拟网络设备子单元122 (3),并经由虚拟网络设备链路360(D)和360(C)被转发到虚拟网络
26设备子单元122(4)。然而,经由虚拟网络设备子单元122(1)进入虚拟网络设备集群402的 分组不被经由虚拟网络设备链路360(B)传送。另外,经由虚拟网络设备子单元122(1)进 入的分组仅可被沿图8A中的箭头所示的方向传送。从而,经由虚拟网络设备子单元122(1) 进入虚拟网络设备集群402的分组不能被另一虚拟网络设备子单元122(2)-122(3)发送回 虚拟网络设备子单元122(1)。通过阻塞虚拟网络设备链路360(B)的使用并防止分组经由 其他虚拟网络设备链路360(A) 、360(C)和360(D)被发送回虚拟网络设备子单元122(1), 防止了循环(至少对于经由虚拟网络设备子单元122(1)进入虚拟网络设备集群402的分 组)。注意,不用生成树800A来确定是否可经由除了耦合到虚拟网络设备链路的那些接口 之外的接口传送分组。 图8B示出了生成树800B,该生成树被用来传送经由虚拟网络设备子单元122(2) 进入虚拟网络设备集群402的分组。虚拟网络设备子单元122(2)是生成树800B的根。如 图所示,经由虚拟网络设备子单元122(2)进入的分组可经由虚拟网络设备链路360(A)被 转发到虚拟网络设备子单元122(1),经由虚拟网络设备链路360(B)被转发到虚拟网络设 备子单元122 (4),并经由虚拟网络设备链路360(B)和360(C)被转发到虚拟网络设备子单 元122(3)。然而,经由虚拟网络设备子单元122(2)进入虚拟网络设备集群402的分组不 被经由虚拟网络设备链路360(D)传送。以与生成树800A防止经由虚拟网络设备子单元 122(1)进入的分组在虚拟网络设备集群402内循环相同的方式,生成树800B防止经由虚拟 网络设备子单元122(2)进入的分组循环。 图8C示出了生成树800C。生成树800C被用来传送经由虚拟网络设备子单元 122(3)进入虚拟网络设备集群402的分组。虚拟网络设备子单元122(3)是生成树800B 的根。如图所示,经由虚拟网络设备子单元122(3)进入的分组可经由虚拟网络设备链路 360(D)被转发到虚拟网络设备子单元122(1),经由虚拟网络设备链路360(C)被转发到虚 拟网络设备子单元122 (4),并经由虚拟网络设备链路360(D)和360(A)被转发到虚拟网络 设备子单元122(2)。然而,经由虚拟网络设备子单元122(3)进入虚拟网络设备集群402 的分组不被经由虚拟网络设备链路360(B)传送。生成树800C防止经由虚拟网络设备子单 元122(3)进入的分组循环。注意,虽然生成树800A和800C在某些方面类似(二者都防止 经由各自的进入点进入的分组经由虚拟网络设备链路360(B)被发送,并且都允许在其他 虚拟网络设备链路上传送分组),但是生成树800A和800C具有由于每个生成树中使用不 同的根而引起的若干区别。例如,根据生成树800C传送的分组可以从虚拟网络设备子单元 122(3)经由虚拟网络设备链路360(D)而被传送到虚拟网络设备子单元122(1),但根据生 成树800D传送的分组无法沿该路径被传送。 图8D示出了生成树800D,该生成树被用来传送经由虚拟网络设备子单元122(4) 进入虚拟网络设备集群402的分组。虚拟网络设备子单元122(4)是生成树800B的根。如 图所示,经由虚拟网络设备子单元122(4)进入的分组可经由虚拟网络设备链路360(C)被 转发到虚拟网络设备子单元122(3),经由虚拟网络设备链路360(B)被转发到虚拟网络设 备子单元122 (2),并经由虚拟网络设备链路360(B)和360(A)被转发到虚拟网络设备子单 元122(D。然而,经由虚拟网络设备子单元122(4)进入虚拟网络设备集群402的分组不被 经由虚拟网络设备链路360(D)传送。生成树800D防止经由虚拟网络设备子单元122(4) 进入的分组循环。
生成树800A-800D中的每一个都是该生成树与之相关联的进入点的最小生成 树。最小生成树是使用最短可能路径将分组从进入点发送到每个可能的外出点的生成 树。在此示例中,可能的外出点包括虚拟网络设备集群402内的虚拟网络设备子单元 122(1)-122(4)中的任何一个。通过为每个进入点使用不同的生成树,经由任意进入点进 入的分组将被经由最小生成树转发。这与用一个生成树来转发进入虚拟网络设备子单元 122(1)的所有分组时可能的情况相比,提供了更高的效率。例如,如果用生成树800A来转 发进入虚拟网络设备集群402的所有分组,则经由虚拟网络设备子单元122(4)进入并要被 转发到虚拟网络设备子单元122(2)的分组将不得不被转发到生成树800A的根,即虚拟网 络设备子单元122(1),然后经由生成树800A(即,经由虚拟网络设备链路360(A))转发到 虚拟网络设备子单元122(2)。这将导致在进入点和外出点之间的最短距离为一个跳(hop) 时,分组被经由三个跳(虚拟网络设备链路360(C) 、360 (D)和360(A))发送。相反,如果用 生成树800D来传送经由虚拟网络设备子单元122(4)接收到的分组,则上述分组将沿最短 路径被发送。 如上所述,在一些实施例中,被称为基本虚拟网络设备子单元的一个虚拟网络设 备子单元计算要在虚拟网络设备集群402中使用的所有生成树。使用诸如Prim、 Kruskal 或Dijkstra的算法之类的生成树算法来计算生成树(注意,可以执行生成树计算而无需实 现生成树协议)。在一些实施例中,向虚拟网络设备集群中的每个虚拟网络设备链路指定了 权重。被指定给虚拟网络设备链路的权重是基于该虚拟网络设备链路的带宽的。基本虚拟 网络设备子单元在生成树计算中使用所指定的权重。在一个实施例中,基本虚拟网络设备 子单元在计算每个生成树之前调整权重,以确保虚拟网络设备链路之间适当的负载分布。
在其他实施例中,不是让一个虚拟网络设备子单元计算所有生成树,而是每个虚 拟网络设备子单元计算用于该虚拟网络设备子单元的生成树。例如,虚拟网络设备子单元 122(1)计算生成树800A,虚拟网络设备子单元122(2)计算生成树800B,等等。每个虚拟网 络设备子单元可以通过以该虚拟网络设备子单元作为根运行生成树协议,来计算用于该虚 拟网络设备子单元的单独的生成树。例如,虚拟网络设备子单元122(1)通过以虚拟网络设 备子单元122(1)作为根来运行生成树协议,从而计算生成树800A。 一旦计算出了生成树, 每个虚拟网络设备子单元随后就计算用于该生成树的适当的外出过滤器设定,并将这些外 出过滤器设定分发到虚拟网络设备内的其他虚拟网络设备子单元。 在一些实施例中,通过使用诸如图6B所示的外出过滤器设定的用于被耦合到虚 拟网络设备链路的每个接口的外出过滤器设定,根据不同的生成树来传送分组。在为每 个进入点计算了生成树之后,计算用于虚拟网络设备集群402内每个接口的外出过滤器设 定,以使得经由给定的进入点进入的分组以与该进入点所关联的生成树一致的方式被传 送。用于给定的接口的外出过滤器设定包括指示出经由特定进入点进入虚拟网络设备集群 的分组是否可从该接口输出的信息。例如,如果与该特定进入点相关联的生成树阻塞了该 接口,则用于该接口的外出过滤器设定将指示出,经由该特定进入点进入的分组不能从该 接口输出。 使用上述技术中的一种,使每个分组与标识符值相关联,该标识符值标识出分组 的进入点。然后,使用这些标识符值和外出过滤器设定来确定是否可从给定的接口转发特 定分组。如果一个分组被发送到一个接口,则如果该接口的外出过滤器设定指示出具有该分组的进入点(其由与分组相关联的标识符值标识出来)的分组被允许从该接口输出,则 该分组将输出该分组。注意,至少在每个生成树与单个进入点相关联的实施例中,用于标 识分组进入点的唯一标识符还标识出特定的生成树(即与所标识的进入点相关联的生成 树)。 作为可以如何用外出过滤器设定来根据特定生成树转发分组的示例,虚拟网络设 备子单元122(3)内的转发引擎将分组发送到被耦合到虚拟网络设备链路360(C)的接口。 该接口访问与该分组相关联的标识符值,以确定该分组进入虚拟网络设备集群402的进入 点。如果该分组的进入点是虚拟网络设备子单元122(2),则根据生成树800B发送该分组。 因此,该接口的外出设定将指示出不应经由该接口发送该分组,并且该接口将作为响应而 将该分组从要经由该接口发送的分组流中滤去。而如果所述分组的进入点是虚拟网络设备 子单元122 (1)(从而要以与生成树800A —致的方式发送该分组),则该分组将不会被从要 经由该接口发送的分组流中滤去。相反,允许该分组被从该接口中输出,这是因为经由虚拟 网络设备链路360 (C)发送该分组是与生成树800A —致的。 在一个实施例中,当特定的虚拟网络设备子单元转发分组时,该分组被发送到遍 历该特定虚拟网络设备子单元的各个生成树的所有可能的路径中的接口。然后,给定分组 进入虚拟网络设备集群所经由的进入点,使用外出过滤器设定来防止经由除了用于该分组 的适当的生成树中的接口以外的接口发送该分组。 在一些实施例中,当任意虚拟网络设备链路发生故障时,被耦合到发生故障的虚 拟网络设备链路的每个非基本虚拟网络设备子单元(即每个不负责生成树计算的虚拟网 络设备子单元)将故障链路报告给基本虚拟网络设备子单元(或者报告给其他所有可以到 达的虚拟网络设备子单元)。虽然在故障后,一些被耦合到故障链路的虚拟网络设备子单 元可能无法与基本虚拟网络设备子单元通信,但虚拟交换集群被理想地配置以使得在故障 后,被耦合到故障链路的虚拟网络设备子单元中的至少一个将仍能与基本虚拟网络设备子 单元通信。 在接收到故障通知时,基本虚拟网络设备子单元重新计算所有受到影响的生成 树。然后,基本虚拟网络设备子单元更新虚拟网络设备集群中的外出过滤器设定(如果需 要的话),以使得外出过滤器设定与重新计算的生成树一致。为了避免在更新外出过滤器设 定期间导致任何虚拟网络设备子单元无法与基本虚拟网络设备子单元通信,基本虚拟网络 设备子单元在更新较远的虚拟网络设备子单元的外出过滤器设定之前更新最近的(例如 就虚拟网络设备链路的数量而言)虚拟网络设备子单元的外出过滤器设定。例如,假设在 链路故障后计算图8A的生成树,并且虚拟网络设备子单元122(1)是基本虚拟网络设备子 单元。虚拟网络设备子单元122(1)首先更新虚拟网络设备子单元122(1)中的外出过滤器 设定。然后,虚拟网络设备子单元122(1)更新虚拟网络设备子单元122(2)和122(3)中的 外出过滤器设定,根据生成树800A,虚拟网络设备子单元122(2)和122(3)中的每一个都可 以由基本虚拟网络设备子单元经由一条虚拟网络设备链路而到达。最后,虚拟网络设备子 单元122(1)更新虚拟网络设备子单元122(4)中的外出过滤器设定,虚拟网络设备子单元 122(4)可以由基本虚拟网络设备子单元122(1)经由两条虚拟网络设备链路而到达。基本 虚拟网络设备子单元并行地更新处于生成树800A的相同"深度"的设备(例如,虚拟网络 设备子单元122(2)和122(3)可以被并行地更新,虚拟网络设备子单元122(2)和122(3)中的每一个在生成树800A中距虚拟网络设备子单元122(1)都是一个虚拟网络设备链路的 距离)。应当注意,在一个实施例中,基本虚拟网络设备子单元仅对需要修改以与重新计算 的生成树一致的外出过滤器设定进行修改。还要注意,类似的功能可以由多于一个虚拟网 络设备子单元响应于故障而执行(例如,如果生成树计算是分布在虚拟网络设备子单元当 中而非由一个基本虚拟网络设备子单元执行)。 在一些实施例中,虚拟网络设备子单元122(1)_122(4)执行以太网转发。作为执 行以太网转发的一部分,虚拟网络设备子单元通过将媒体访问控制(MAC)地址与标识出一 个或多个接口的信息相关联,从而"得知'MC地址。例如,以太网网络设备通过在转发表中 向该MAC地址分配条目来得知MAC地址。所述条目包括标识出与MAC地址相关联的一个或 多个接口。如果虚拟网络设备子单元得知了特定的MAC地址,则该虚拟网络设备子单元将 把去往该MAC地址的分组转发到相关联的一个或多个接口 。否则,如果还未得知MAC地址, 则虚拟网络设备子单元将把分组洪泛扩散到该分组要被传送的VLAN中的所有接口 (除了 接收该分组所经由的接口以外)。 虚拟网络设备子单元响应于接收到具有作为源地址的该MAC地址的分组,将MAC 地址与接口相关联。通常,以太网设备会将一个分组的源地址与接收该分组所经由的接口 相关联。然而,在实现了若干不同的生成树的虚拟网络设备集群中,每个虚拟网络设备子单 元以不同的方式得知经由虚拟网络设备链路接收到的分组的源地址。虚拟网络设备子单元 不是将分组的源地址与通往虚拟网络设备链路的接口相关联,而是会将分组与该分组最初 进入虚拟网络设备集群所经由的接口相关联。标识此接口的信息可以被承载在附加到该分 组上的头部中。 图9A-图9C示出了如何通过图8A-图8D的虚拟网络设备集群402发送分组。如 图9A所示,分组经由虚拟网络设备子单元122(1)的接口 11进入虚拟网络设备集群402。 接口 11(或虚拟网络设备集群402的另一组件)向分组附加头部。该头部包括将接口Il 标识为接收到该分组的接口的信息。所述头部还包括将虚拟网络设备子单元122(1)标识 为该分组进入虚拟网络设备子单元122(1)所经由的进入点的信息。在此示例中,标识虚拟 网络设备子单元122(1)的信息被接口 Il包括在头部中。在其他实施例中,可以由虚拟网 络设备集群402中的另一组件(例如虚拟网络设备子单元122(2)和122(3)中所包括的通 往虚拟网络设备链路360A和360D的接口 )将所述信息包括在头部中。
在此示例中,所述分组将被洪泛扩散,并且洪泛扩散分组被发送到虚拟网络设备 集群402内的每个虚拟网络设备子单元。由于所述分组是经由虚拟网络设备子单元122(1) 进入虚拟网络设备集群402的,因此该分组根据生成树800A(如图8A所示)被转发。如图 9B所示,虚拟网络设备子单元内的转发引擎将分组和所附加的头部发送到被耦合到虚拟网 络设备链路360(A)和360(D)的接口。给定分组的进入点是虚拟网络设备子单元122 (1), 每个接口的外出过滤器设定都指示出该分组可以被从该接口中输出。因此,该分组与生成 树800A —致地分别经由虚拟网络设备链路360(A)和360(D)被输出到虚拟网络设备子单 元122(2)和122(3)。 在图9C中,虚拟网络设备子单元122(2)已经从被附加到分组上的头部中抽取了 标识接口 II的信息,并已将分组的源地址(SA)与接口 Il相关联(而非将源地址与被耦合 到虚拟网络设备链路360(A)的接口相关联)。类似地,虚拟网络设备子单元122(3)已将分
30组的源地址(SA)与接口 Il相关联(而非将源地址与被耦合到虚拟网络设备链路360(D) 的接口相关联)。如果11是一个接口束的一部分,所述接口束还包括虚拟网络设备子单元 122(2)和122(3)各自的至少一个接口,则虚拟网络设备子单元122(2)和122(3)将基于 SA和Il之间的关联,将去往SA的后续分组经由该接口束内的本地接口转发(而非将这种 分组转发到虚拟网络设备子单元122(1))。 如图9C所示,虚拟网络设备子单元122(3)内的转发引擎将分组发送到被耦合到 虚拟网络设备链路360(C)的接口。此接口的外出过滤器设定指示出,允许经由虚拟网络设 备子单元122(1)进入虚拟网络设备集群402的分组从该接口中输出。因此,与生成树800A 一致地经由虚拟网络设备链路360(C)将分组和所附加的头部发送到虚拟网络设备子单元 122(4)。 虚拟网络设备子单元122(2)内的转发引擎将分组发送到被耦合到虚拟网络设备 链路360 (B)的接口 。然而,该接口响应于指示出该分组是经由虚拟网络设备子单元122 (1) 进入虚拟网络设备集群402的信息(位于被附加到分组的头部中),将所述分组从要经由虚 拟网络设备链路360(B)发送的分组流中滤去。因此,与生成树800A—致,阻塞该分组而不 从虚拟网络设备链路360(B)发送。 在以上示例中,对每个进入虚拟网络设备集群402的进入点仅计算一个生成树。 然而,在其他实施例中,对每个进入点计算多个生成树(例如,可以在虚拟网络设备集群 402中计算并使用若干个都以虚拟网络设备子单元122(1)作为根的生成树)。如果对每个 进入点计算N个生成树,则在每个接口维护N组外出过滤器设定。算法(例如基于哈希散 列的算法)为每个分组选择N值。在一个实施例中,算法的使用对不同生成树所定义的路 径之间的流量进行负载平衡。 还要注意在一些实施例中,不为每个进入点计算不同的生成树。例如,在一个实施 例中,虚拟网络设备集群包括8个进入点进入点l-8(每个进入点是不同的虚拟网络设备 子单元)。为该虚拟网络设备集群计算4个不同的生成树A-D。这4个生成树中的每一个 都与进入点中的2个相关联。例如,生成树A与进入点1和2相关联,生成树B与进入点3 和4相关联,生成树C与进入点5和6相关联,生成树D与进入点7和8相关联。然后,以 与相关联的生成树一致的方式,将经由特定的进入点接收到的分组通过虚拟网络设备集群 进行转发。例如,经由进入点7接收到的分组将根据生成树D而被转发。类似地,经由进入 点8接收到的分组也将以与生成树D —致的方式被转发。经由进入点5和6接收到的分组 根据生成树C而被转发。经由进入点3或进入点4接收到的分组将类似地以与生成树B — 致的方式被转发。经由进入点1和2接收到的分组以与生成树A—致的方式被转发。
每个虚拟网络设备子单元可以包括一个或多个类似于图6C的接口 600的接口 。例 如,在一个实施例中,每个接口包括过滤单元和被耦合到过滤单元的外出过滤器值存储装 置。外出过滤器值存储装置存储若干个外出过滤器值,其中每个值都标识出各自的一个生 成树是否阻塞该接口。例如,外出过滤器值存储装置中的外出过滤器值可以标识出该接口 是否被第一生成树阻塞,以及该接口是否被第二生成树阻塞,所述第一生成树与第一进入 点相关联,所述第二生成树与第二进入点相关联。
每个网络多个生成树 除了虚拟网络设备集群以外的环境可以以与虚拟网络设备集群使用多个生成树相同的方式使用多个生成树。图10A-图IOD示出了为进入网络的每个进入点计算一个不 同的生成树的网络。在图10A-图10D中,网络1000包括4个网络设备1022(1)-1022 (4) (注意,其他实施例可以包括与这里示出的不同数量的网络设备)。链路1060(A)将网络设 备1022(1)耦合到网络设备1022(2)。链路1060(B)将网络设备1022(2)耦合到网络设备 1022(4)。链路1060(C)将网络设备1022(4)耦合到网络设备1022(3)。链路1060(D)将网 络设备1022(3)耦合到网络设备1022(1)。注意,虚拟网络设备集群可被认为是为进入网络 的每个进入点计算一个不同的生成树的网络的一个示例。上述关于虚拟网络设备集群的技 术适用于实现多个生成树的其他网络。 图10A示出了生成树1010A。网络设备1022(1)是生成树1010A的根。在此示例 中,生成树1010A被用来传送经由网络设备1022(1)进入网络1000的分组。在整个此讨论 中,将用于传送经由特定进入点进入网络1000的分组的生成树描述为与该进入点相关联。 从而,生成树1010A与网络设备1022(1)相关联。 使用生成树1010A涉及基于网络100内的网络设备之一的特定接口是否被生成 树所阻塞,来确定是否允许经由该接口传送分组。用来表示生成树1010A的箭头示出了可 以经由非阻塞接口传送分组的路径。当网络设备对给定的分组进行转发和/或路由时,该 分组将被基于该转发或路由的出口而发送到该网络设备内的一个或多个接口。然后,使用 生成树1010A来确定是否将从该分组被发送到的每个接口输出该分组。在一个实施例中, 每个接口被编程为从该接口的输出流中过滤分组,以使得经由网络设备1022(1)进入网络 1000的分组将仅被沿生成树1010A传送。 如图所示,经由网络设备1022(1)进入的分组可经由链路1060(A)被转发到网络 设备1022(2),经由链路1060(D)被转发到网络设备1022(3),并经由1060(D)和1060(C) 被转发到网络设备1022(4)。然而,经由网络设备1022(1)进入网络1000的分组不被经 由链路1060(B)传送。另外,经由网络设备1022(1)进入的分组仅可被沿图10A的箭头所 示的方向传送。从而,经由网络设备1022(1)进入网络1000的分组不能被另一网络设备 1022 (2)-1022 (3)发送回网络设备1022 (1)。通过阻塞链路1060 (B)的使用并防止分组经 由其他链路1060 (A)、 1060(C)和1060(D)被发送回网络设备1022 (1),防止了循环(至少 对于经由网络设备1022(1)进入网络1000的分组)。注意,不用生成树1010A来确定是否 可经由除了耦合到将网络设备1022(1)-1022 (4)彼此相连的链路的那些接口之外的接口 传送分组。另外,不用生成树1010A来确定是否可以从特定接口中输出具有除了网络设备 1022(1)以外的进入点的分组。 图10B示出了生成树1010B,该生成树被用来传送经由网络设备1022(2)进入网络 1000的分组。网络设备1022(2)是生成树1010B的根。如图所示,经由网络设备1022 (2) 进入的分组被允许经由链路1060(A)被转发到网络设备1022 (l),经由链路1060(B)被转发 到网络设备1022(4),并经由1060(B)和1060(C)被转发到网络设备1022(3)。然而,经由 网络设备1022(2)进入网络1000的分组不被经由链路1060(D)传送。以与生成树1010A 防止经由网络设备1022(1)进入的分组在网络IOOO内循环相同的方式,生成树1010B防止 经由网络设备1022(2)进入的分组在网络1000内循环。 图IOC示出了生成树IOIOC。生成树IOIOC被用来传送经由网络设备1022(3)进 入网络1000的分组。网络设备1022(3)是生成树1010C的根。经由网络设备1022(3)进入的分组被允许经由链路1060(D)被转发到网络设备1022 (l),经由链路1060(C)被转发到 网络设备1022(4),并经由1060(C)和1060(B)被转发到网络设备1022(2)。然而,经由网 络设备1022(3)进入网络1000的分组不被经由链路1060(A)传送。生成树1010C防止经 由网络设备1022(3)进入的分组循环。 图IOD示出了生成树IOIOD,该生成树被用来传送经由网络设备1022(4)进入网 络1000的分组。网络设备1022(4)是生成树1010D的根。经由网络设备1022(4)进入的 分组被允许经由链路1060(C)被转发到网络设备1022 (3),经由链路1060(B)被转发到网络 设备1022(2),并经由1060(C)和1060(D)被转发到网络设备1022(1)。然而,经由网络设 备1022(4)进入网络1000的分组不被经由链路1060(A)传送。生成树1010D防止经由网 络设备1022(4)进入的分组在网络1000内循环。 在实现多个生成树的网络中,计算生成树的实体(或多个实体)知道网络的拓扑 结构。例如,可以为了计算生成树而将网络设备1022(1)-1022(4)之一指定为"基本"网络 设备。基本网络设备维护标识网络1000内的链路和网络设备的信息,以及标识所述链路和 网络设备是如何互连的信息。此信息向基本网络设备提供了关于网络1000的拓扑结构的 知识。在一个实施例中,将此信息提供给基本网络设备,作为基本网络设备对协议的参与的 一部分,所述协议规定了对网络中所包括的每个网络设备的验证。 基本网络设备基于该基本网络设备对网络IOOO拓扑结构的知识,计算用于进入 网络1000的不同进入点的生成树。然后,基本网络设备将与计算出的生成树一致的信息 (例如外出过滤器设定)提供给其他每个网络设备。其他网络设备使用该信息,以与生成树 一致的方式转发分组。 注意在其他实施例中,生成树计算分布在若干网络设备当中,而非由一个基本网 络设备执行。例如,每个提供进入网络的进入点的网络设备都可以计算用于网络的生成树 之一 (例如,通过以该网络设备作为根来运行生成树协议)。在这种实施例中,也可以将对 外出过滤器设定的计算分布在网络设备当中。 另夕卜,网络1000内每个提供进入网络1000的进入点的网络设备都被指定了唯一 标识符(或若干个唯一标识符)。将经由特定进入点接收到的分组与该特定进入点的唯一 标识符(或多个唯一标识符之一)相关联。例如,如上所述,可以向每个进入网络1000的 分组附加头部。可替换地,可以通过将唯一标识符插入到被附加到分组上的L2头部中的特 定Ethertype(以太网类型)字段中,将唯一标识符插入到被附加到分组上的多协议标签交 换(MPLS)标签中,或者使用另一类似的机制,来将唯一标识符与分组相关联。
头部包含标识分组进入点的信息。另外,只要经由链路1060 (A)-1060(D)之一接 收到分组,网络设备1022(1)-1022 (4)就将该分组的源地址与进入点(或与进入点内的接 口 )相关联,而非将源地址与被耦合到接收该分组所经由的链路的接口相关联。例如,网络 设备1022(2)经由链路1060(A)接收到分组。被附加到分组的头部指示出,该分组是经由 网络设备1022(1)的接口 1进入网络1000的。因此,网络设备1022(2)将分组的源地址 与网络设备1022(1)(或与接口 1)相关联,而非将分组与网络设备1022(2)内耦合到链路 1060(A)的接口相关联。如果网络设备1022(2)随后接收到去往该地址的分组,则网络设备 1022(2)将基于该关联来转发该随后接收到的分组。 图IIA示出了计算用于网络内的每个进入点的生成树,以及使用计算出的生成树来处理如何通过网络转发分组的方法。所述网络可以是互连的网络设备的任意关联。在一 个实施例中,所述网络是第2层以太网网络。在另一实施例中,所述网络是虚拟网络设备集 群。 在图11A的示例中,对网络内的每个进入点计算一个生成树。进入点是分组进入 网络所经由的网络设备(即对于给定的分组,该分组的进入点是网络内第一个接收到该分 组的网络设备)。在1110,选择还未对其计算生成树的进入点。然后,如1120所示,为所选 择的进入点计算生成树。该生成树的根是所选择的进入点。如果在1130确定还未对网络 中的每个进入点计算生成树,则选择另一进入点,并为新的进入点重复功能1110和1120。
在1140,基于在1120计算出的生成树,控制通过网络转发分组的方式。基于生成 树控制如何通过网络转发分组可以涉及为网络内的每个接口生成一组外出过滤器值。每组 外出过滤器值被提供给适当的接口 ,并且每个接口使用所提供的这组外出过滤器值,从要 经由该接口发送的分组流中过滤分组。 一组外出过滤器值指示出允许经由特定接口发送哪 些分组。具体而言,外出过滤器值指示出经由特定进入点进入网络的分组是否被允许经由 特定接口发送。如果一特定接口的外出过滤器值指示出具有某个进入点的分组不应被从该 接口输出,则该接口将从要经由该接口输出的分组流中滤去经由该进入点接收到的分组。
图11B示出了根据与特定进入点相关联的生成树来转发分组的方式。在1150,接 收到分组。将该分组与标识特定进入点的信息相关联。例如,在一些实施例中,向分组添加 头部,该头部包括标识出该分组进入网络所经由的进入点的信息。如1160所示,所关联的 信息被用来标识该分组进入网络所经由的进入点。 在1170,根据与在1160标识的进入点相关联的生成树,通过网络发送分组。根据 特定的生成树发送分组可以涉及禁止将该分组从某些接口输出,而允许将该分组从其他接 口输出,以使得仅在与生成树一致的路径上发送该分组。在一些实施例中,如上所述,使用 外出过滤器值,通过将分组从要经由特定接口发送的输出流中滤去,来禁止将这些分组从 该特定接口输出。 实现了多个生成树的网络中的每个网络设备都可以包括一个和多个类似于图6C 的接口 600的接口。例如,在一个实施例中,每个接口包括过滤单元和耦合到过滤单元的外 出过滤器值存储装置。外出过滤器值存储装置存储若干个外出过滤器值,其中每个值都标 识出各自的一个生成树是否阻塞该接口。例如,外出过滤器值存储装置中的外出过滤器值 可以标识出该接口是否被第一生成树阻塞,以及该接口是否被第二生成树阻塞,所述第一 生成树与第一进入点相关联,所述第二生成树与第二进入点相关联。 注意在一些实施例中,将虚拟网络设备子单元作为虚拟网络设备集群的一部分进 行操作所需的功能被实现在该虚拟网络设备子单元上所执行的软件中。例如,每个虚拟网 络设备子单元、网络设备,和/或附属网络设备可以包括计算机可读介质,在该介质上存储 了可用于控制和/或使用虚拟链路束的程序指令和/或数据。类似地,将网络设备(或虚 拟网络设备子单元)作为实现了多个生成树的网络(或虚拟网络设备集群)的一部分进行 操作所需的功能可以被实现在每个网络设备上所执行的软件中。例如,网络中的基本网络 设备可以包括计算机可读介质,在该介质上存储了可用于计算多个生成树和与多个生成树 相对应的外出过滤器值的程序指令。典型的计算机可读介质包括CD(紧致盘)、DVD(数字 多功能盘)、硬盘、光盘、磁带设备、软盘,以及存储器(例如各种RAM(随机存取存储器)、R0M(只读存储器)、闪速存储器、MEMS(微机电系统)存储器等等)。这种网络设备可包括 被配置为执行存储在计算机可读介质中的程序指令的一个或多个处理器(例如微处理器、 PLD(可编程逻辑器件)或ASIC(专用集成电路))。程序指令可包括用来执行对虚拟链路 束的控制协议处理的程序指令,以及用来经由虚拟链路束中所包括的链路选择性地转发分 组(例如,基于分组是否是经由虚拟网络设备链路接收到的)的程序指令。可以经由诸如 因特网之类的网络或在承载介质上将程序指令和/或数据转移到虚拟网络设备子单元、网 络设备,和/或附属网络设备上。在一些实施例中,计算机可读介质是诸如网络和/或无线 链路之类的在其上传送诸如电、电磁或数字信号之类的信号的承载介质,在所述信号上编 码了数据和指令。 公开了用于为网络计算若干不同的生成树的技术。所述网络具有分组可以经由来 进入网络的若干不同的进入点。每个生成树与(至少) 一个进入点相关联,以使得不同的 生成树与不同的进入点相关联。根据与特定进入点相关联的生成树,将经由该特定进入点 进入网络的分组通过网络转发。 在一个实施例中,一种方法涉及通过网络发送第一分组。如果第一分组是经由第 一进入点进入网络的,则以与第一生成树一致的方式通过网络发送第一分组。而如果第一 分组是经由第二进入点进入网络的,则以与第二生成树一致的方式通过网络发送该分组。 若干个生成树中的每一个都与若干个进入点中各自的一个相关联,因此根据不同的生成树 来通过网络发送经由不同进入点接收到的分组。 网络中的基本网络设备可以计算在该网络中使用的不同的生成树。基本网络设备 维护标识网络拓扑结构的信息,并在计算生成树时访问此信息。基本网络设备将与生成树 一致的信息(例如外出过滤器值)提供给网络中所包括的若干个辅助网络设备。
当分组进入网络时,将该分组与标识符相关联(例如,通过向分组附加包括标识 符的头部)。该标识符标识出分组进入网络所经由的进入点。在通过网络发送分组时,所述 标识符被用来标识该分组的进入点。 在另一实施例中,一种方法涉及将分组转发到第一接口 ;如果该分组是经由第一 进入点进入网络的,则将该分组从第一接口输出;如果该分组是经由第二进入点进入网络 的,则将该分组从要经由第一接口输出的分组流中滤去。第一接口未被第一生成树阻塞,但 被第二生成树阻塞。第一生成树与第一进入点相关联,第二生成树与第二进入点相关联。
在一些实施例中,一种系统包括若干个网络设备,包括第一网络设备和第二网络 设备。第一网络设备是进入网络的第一进入点,第二网络设备是进入网络的第二进入点。第 一网络设备与第一生成树相关联,第二网络设备与第二生成树相关联。网络设备被配置为 根据第一生成树发送经由第一进入点进入网络的分组,并根据第二生成树发送经由第二进 入点进入网络的分组。 在一个实施例中,一种网络设备的接口包括过滤单元和外出过滤器值存储装置。 外出过滤器值存储装置包括若干个外出过滤器值。每个外出过滤器值标识出若干个生成树 中各自的一个是否阻塞接口 。过滤单元被配置为访问与分组相关联的标识符以确定该分组 是否是经由特定进入点进入网络的。外出过滤器值标识出接口是否被与该特定进入点相关 联的生成树阻塞。 所述接口还包括标识符单元和标识符值存储装置。标识符值存储装置存储标识第
35一网络设备的值,所述第一网络设备提供进入网络的进入点。标识符单元被配置为响应于接口对分组的接收,将该值包括在被附加到分组上的头部中。 虽然针对本发明的具体实施例描述了本发明,但本领域技术人员可以想到各种变化和修改。这种变化和修改应落入所附权利要求书的范围之内。
糊'性 本发明的实施例可以用在网络领域。
权利要求
一种方法,包括访问与分组和第一网络设备相关联的信息,其中所述信息指示所述分组是由所述第一网络设备接收进入网络的;通过所述网络发送所述分组,其中如果所述第一网络设备是所述网络的第一进入点,则所述发送与第一生成树一致,其中如果所述第一网络设备是所述网络的第二进入点,则所述发送与第二生成树一致,其中所述发送包括访问外出过滤器,所述外出过滤器包括基于所述第一生成树的第一设定和基于所述第二生成树的第二设定,并且其中所述发送由第二网络设备执行,所述第二网络设备通过至少一条链路而被耦合到所述第一网络设备。
2. 如权利要求1所述的方法,其中多个生成树中的每一个与多个进入点中相应的一个相关联,并且其中经由不同的进入点接收到的分组根据不同的生成树通过所述网络而被发送。
3. 如权利要求2所述的方法,其中每个进入点是虚拟网络设备子单元,并且其中所述网络是虚拟网络设备集群。
4. 如权利要求2所述的方法,还包括计算所述多个生成树。
5. 如权利要求4所述的方法,其中每个进入点计算所述多个生成树中相应的一个。
6. 如权利要求4所述的方法,其中所述计算由基本网络设备来执行。
7. 如权利要求6所述的方法,还包括维护标识所述网络的拓扑结构的信息,其中所述计算所述多个生成树包括访问标识所述网络的拓扑结构的信息。
8. 如权利要求6所述的方法,还包括将与所述多个生成树一致的信息提供给多个辅助网络设备。
9. 如权利要求8所述的方法,其中所述信息包括用于每个辅助网络设备的每个接口的外出过滤器设定。
10. 如权利要求2所述的方法,还包括将所述分组与所述信息相关联,其中所述信息包括所述第一网络设备的标识符。
11. 如权利要求10所述的方法,还包括从所述第二网络设备向第三网络设备发送所述分组和所述标识符,其中所述网络包括所述第二网络设备和所述第三网络设备。
12. 如权利要求10所述的方法,其中将所述分组与所述标识符相关联包括在被附加到所述分组上的头部中包括所述标识符。
13. 如权利要求10所述的方法,还包括将所述分组的源地址与由所述标识符标识的进入点相关联。
14. 一种方法,包括将分组转发到第一接口;访问与所述分组和第一网络设备相关联的信息, 射所述信息指示所述分组是由所述第一网络设备接收进入网络的;如果所述第一网络设备是所述网络的第一进入点,则从所述第一接口输出所述分组;以及如果所述第一网络设备是所述网络的第二进入点,则将所述分组从要经由所述第一接 口输出的分组流中滤去,其中所述滤去包括访问外出过滤器,其中所述外出过滤器包括基于第一生成树的第一设定和基于第二生成树的第二设定, 其中所述第一生成树与所述第一进入点相关联, 其中所述第二生成树与所述第二进入点相关联,并且其中所述输出和所述滤去由第二网络设备执行,所述第二网络设备通过至少一条链路 而被耦合到所述第一网络设备。
15. 如权利要求14所述的方法, 其中所述第一接口未被所述第一生成树阻塞,并且 其中所述第一接口被所述第二生成树阻塞。
16. 如权利要求15所述的方法,其中 所述信息包括所述第一网络设备的标识符。
17. 如权利要求16所述的方法, 其中头部被附加到所述分组上,并且 其中所述头部包括所述标识符。
18. 如权利要求17所述的方法,还包括 将所述分组的源地址与由所述标识符标识的进入点相关联。
19. 如权利要求16所述的方法,其中所述外出过滤器指示与所述标识符相关联的分组是否能够经由接口来输出。
20. —种系统,包括多个网络设备,所述多个网络设备包括第一网络设备;以及第二网络设备,其中所述第一网络设备是进入网络的第一进入点并且与第一生成树相关联, 其中所述第二网络设备是进入所述网络的第二进入点并且与第二生成树相关联, 其中网络设备被配置为访问与分组和进入网络设备相关联的信息, 其中所述信息指示所述分组是由所述进入网络设备接收进入所述网络的, 其中网络设备被配置为如果所述进入网络设备是所述第一网络设备,则根据所述第一 生成树发送分组,其中网络设备被配置为如果所述进入网络设备是所述第二网络设备,则根据所述第二 生成树发送分组,其中网络设备通过至少一条链路而被彼此耦合,并且其中每个网络设备被配置为访问多个外出过滤器中相应的一个,其中所述多个外出过 滤器中的每一个包括基于所述第一生成树的第一设定和基于所述第二生成树的第二设定。
21. 如权利要求20所述的系统,其中所述多个网络设备中的一个网络设备被配置为响应于第一分组由所述第一网络 设备接收进入所述网络,将所述第一分组与所述第一网络设备相关联。
22. 如权利要求21所述的系统, 其中所述的一个网络设备是所述第一网络设备。
23. 如权利要求21所述的系统,其中所述的一个网络设备被配置为通过将标识所述第一网络设备的值包括在被附加 到所述第一分组上的头部中,来将所述第一分组与所述第一网络设备相关联。
24. 如权利要求23所述的系统,其中所述多个网络设备中的第二网络设备被配置为响应于接收到分组和被附加到分 组上的头部,将所述第一分组的源地址与所述第一网络设备相关联。
25. 如权利要求21所述的系统, 其中所述第一网络设备是所述第一生成树的根,并且 其中所述第二网络设备是所述第二生成树的根。
26. 如权利要求21所述的系统,其中所述第一网络设备被配置为计算多个生成树,所述多个生成树包括所述第一生成 树和所述第二生成树,并且其中所述第一网络设备被配置为将对应于所述多个生成树的信息发送到所述多个网 络设备中的其他每个网络设备。
27. 如权利要求26所述的系统,其中对应于所述多个生成树的信息包括外出过滤器值。
28. —种网络设备,包括 接口,所述接口包括 过滤单元,其中所述过滤单元被配置为访问与分组和第一网络设备相关联的信息,其中所述信息指示所述分组是由所述第一网络设备接收进入网络的,并且其中所述接口通过至少一条链路而被耦合到所述第一网络设备;以及外出过滤器值存储装置,所述外出过滤器值存储装置被耦合到所述过滤单元,其中所述外出过滤器值存储装置包括多个外出过滤器值,其中第一外出过滤器值基于第一生成树并且第二外出过滤器值基于第二生成树,其中所述第一生成树与第一进入点相关联,其中所述第二生成树与第二进入点相关联,其中如果所述第一网络设备是所述第一进入点,则外出过滤器值标识出所述接口不被 阻塞,并且其中如果所述第一网络设备是所述第二进入点,则外出过滤器值标识出所述接口被阻塞。
29. 如权利要求28所述的网络设备,其中所述接口未被所述第一生成树阻塞, 所述接口被所述第二生成树阻塞。
30. 如权利要求29所述的网络设备, 其中所述信息包括所述第一网络设备的标识符。
31. 如权利要求30所述的网络设备, 其中所述标识符被包括在被附加到所述分组上的头部中。
32. 如权利要求28所述的网络设备,还包括标识符单元;以及标识符值存储装置,所述标识符值存储装置被耦合到所述标识符单元。
33. 如权利要求32所述的网络设备,其中所述标识符值存储装置存储标识所述第一网络设备的值,并且 其中所述标识符单元被配置为响应于所述接口对所述分组的接收,将所述值包括在被 附加到所述分组上的头部中。
34. —种系统,包括 用于将分组转发到第一接口的装置;用于访问与所述分组和第一网络设备相关联的标识符的装置, 其中所述信息指示所述分组是由所述第一网络设备接收进入网络的; 用于如果所述第一网络设备是所述网络的第一进入点,则从所述第一接口输出所述分 组的装置;以及用于如果所述第一网络设备是所述网络的第二进入点,则将所述分组从要经由所述第 一接口输出的分组流中滤去的装置, 其中滤去包括访问外出过滤器,其中所述外出过滤器包括基于第一生成树的第一设定和基于第二生成树的第二设定, 其中所述第一生成树与所述第一进入点相关联, 其中所述第二生成树与所述第二进入点相关联,并且 其中所述第一接口通过至少一条链路而被耦合到所述第一网络设备。
35. 如权利要求34所述的系统, 其中所述第一接口未被所述第一生成树阻塞,并且 其中所述第一接口被所述第二生成树阻塞。
36. 如权利要求35所述的系统, 其中所述信息包括所述第一网络设备的标识符。
37. 如权利要求36所述的系统, 其中头部被附加到所述分组上,并且 其中所述头部包括所述标识符。
38. 如权利要求37所述的系统,还包括用于将所述分组的源地址与由所述标识符标识的进入点相关联的装置。
39. 如权利要求36所述的系统,其中所述外出过滤器指示与所述标识符相关联的分组是否能够经由接口来输出。
40. —种计算机可读存储介质,所述计算机可读存储介质存储程序指令,其中所述程序指令是计算机可执行的以用于 将分组转发到第一接口;访问与所述分组和第一网络设备相关联的信息,其中所述信息指示所述分组是由所述第一网络设备接收进入网络的; 如果所述第一网络设备是所述网络的第一进入点,则使第二网络设备从所述第一接口 输出所述分组;以及如果所述第一网络设备是所述网络的第二进入点,则使所述第二网络设备将所述分组 从要经由所述第一接口输出的分组流中滤去, 其中所述滤去包括访问外出过滤器,其中所述外出过滤器包括基于第一生成树的第一设定和基于第二生成树的第二设定, 其中所述第一生成树与所述第一进入点相关联, 其中所述第二生成树与所述第二进入点相关联,并且其中所述第二网络设备通过至少一条链路而被耦合到所述第一网络设备。
41. 如权利要求40所述的计算机可读存储介质,其中 所述第一接口未被所述第一生成树阻塞, 所述第一接口被所述第二生成树阻塞。
42. 如权利要求41所述的计算机可读存储介质, 其中所述信息包括所述第一网络设备的标识符。
43. 如权利要求42所述的计算机可读存储介质,其中 头部被附加到所述分组上,并且 所述头部包括所述标识符。
44. 如权利要求43所述的计算机可读存储介质,所述程序指令还可执行用于 将所述分组的源地址与由所述标识符标识的进入点相关联。
45. 如权利要求42所述的计算机可读存储介质,其中所述外出过滤器指示与所述标识符相关联的分组是否能够经由接口来输出。
全文摘要
本发明公开了虚拟网络设备集群。根据本发明的一个方面,提供了一种方法,该方法包括访问与分组和第一网络设备相关联的信息,其中该信息指示分组是由第一网络设备接收进入网络的;通过网络发送分组,其中如果第一网络设备是网络的第一进入点,则发送与第一生成树一致,其中如果第一网络设备是网络的第二进入点,则发送与第二生成树一致,其中发送包括访问外出过滤器,该外出过滤器包括基于第一生成树的第一设定和基于第二生成树的第二设定,并且其中发送由第二网络设备执行,该第二网络设备通过至少一条链路而被耦合到第一网络设备。
文档编号H04L12/66GK101789907SQ20101011390
公开日2010年7月28日 申请日期2005年4月29日 优先权日2004年5月19日
发明者斯塔拉姆·东图, 穆萨·珐塞, 迈克尔·R·史密斯 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1