虚拟网络设备中的接口束的制作方法

文档序号:7633705阅读:118来源:国知局
专利名称:虚拟网络设备中的接口束的制作方法
技术领域
本发明涉及联网,更具体而言涉及在虚拟网络设备中实现接口束。
背景技术
为了提供更高的网络可靠性,常常在网络中包括冗余的交换机和链路。如果一个交换机或链路发生故障,已经在网络内就位的冗余交换机或链路可以迅速被启用以替换发生故障的交换机或链路。由于与替换或维修发生故障的组件相比,启用冗余交换机或链路作为替代物的一般更为迅速,因此拥有冗余的链路和/或交换装置能够提供更为可靠的网络。
当在网络内包括冗余的组件时,一般希望能够在相应组件发生故障之前在正常网络工作期间使用冗余的组件。例如,如果在一对交换机之间实现了两条链路,则希望使用两条链路(而不是使一条链路空闲)来提供更大的带宽。但是,如果多条冗余链路同时活动,则对这些链路的管理的复杂程度可能是令人不快的(例如由于需要避免桥接环)。
避免拥有若干条独立冗余链路的复杂性的一种方式是将这些链路当作单个逻辑传输路径来操作,例如利用诸如EtherChannel(TM)或链路聚集(在IEEE 802.3中定义)之类的链路集束(bundling)技术所提供的那种。例如,可以从交换机上的若干个端口形成EtherChannel(TM)端口束,这些端口中的每一个被耦合到将该交换机耦合到其他交换机的链路群组中的一条相应的链路。一旦形成了EtherChannel(TM)端口束,就可以通过诸如生成树这样的路由选择协议将端口束当作单个网桥端口来管理,从而简化对冗余链路的管理。
目前,存在不能使用链路集束技术的情形。例如,目前EtherChannel(TM)端口束中的所有端口都必须被包括在相同的网络设备中。希望扩展能够使用端口束的情形。

发明内容
公开了用于在虚拟网络设备中实现接口束的方法和系统的各种实施例。虚拟网络设备包括若干个不同的虚拟网络设备子单元,它们共同作为单个逻辑网络设备工作。接口束包括位于虚拟网络设备中包括的不同虚拟网络设备子单元中的多于一个虚拟网络设备子单元中的接口。
在一个实施例中,一种系统包括虚拟链路束,该虚拟链路束包括若干条通信链路。每条通信链路的第一端被配置为耦合到第一网络设备。通信链路中的第一通信链路的第二端被配置为耦合到虚拟网络设备内的第一虚拟网络设备子单元,通信链路中的第二通信链路的第二端被配置为耦合到虚拟网络设备内的第二虚拟网络设备子单元。通信链路被配置为当作单条链路来管理。当第一网络设备经由虚拟链路束向虚拟网络设备发送分组时,第一网络设备选择通信链路之一以在其上发送分组。在虚拟网络设备和第一网络设备之间发送的每个分组都只经由通信链路之一发送。
在某些实施例中,一种系统包括第一虚拟网络设备子单元。第一虚拟网络设备子单元包括第一接口和被耦合到第一接口的控制器。控制器被配置为转发经由第一接口接收到的分组。第一接口由第一逻辑标识符标识,该第一逻辑标识符还标识第二虚拟网络设备子单元中包括的第二接口。第一接口和第二接口是相同接口束的一部分。对于要经由接口束转发的分组,第一虚拟网络设备子单元可以使经由第一接口(它在第一虚拟网络设备子单元本地)发送分组优先于经由第二接口(它是第二虚拟网络设备子单元的一部分)发送分组。
在这种实施例中,第一虚拟网络设备子单元可以被配置为维护与第二虚拟网络设备子单元一致的转发信息。例如,在一个实施例中,控制器(在第一虚拟网络设备子单元中)被配置为根据运行在接口束上的路由选择协议为第一接口执行控制协议处理。控制器被配置为将在执行控制协议处理时生成的信息提供到第二虚拟网络设备子单元中包括的次级控制器。次级控制器被配置为利用该信息来管理第二接口。
一种方法的一个实施例包括向接口束内包括的每个接口分配第一逻辑标识符,其中接口束包括第一虚拟网络设备子单元的第一接口和第二虚拟网络设备子单元的第二接口;将第一链路的第一端耦合到第一接口,该第一链路被包括在虚拟链路束内;以及将第二链路的第一端耦合到第二接口,该第二链路也包括在虚拟链路束内。第一链路和第二链路中每一个的第二端被耦合到第三网络设备。
一种方法的另一个实施例包括如果与第一分组相关联的目的地标识符标识虚拟链路束,则经由虚拟链路束的第一链路发送第一分组;以及如果与第二分组相关联的目的地标识符标识虚拟链路束,则经由虚拟链路束的第二链路发送第二分组。第一链路被耦合到第一虚拟网络设备子单元,第二链路被耦合到第二虚拟网络设备子单元。
本发明的另一个实施例包括接收分组,其中分组的目的地标识符标识包括第一接口的接口束;以及如果分组是经由虚拟网络设备链路接收到的,则从经由第一接口发送的分组流中过滤掉分组。虚拟网络设备链路耦合虚拟网络设备内的两个虚拟网络设备子单元。如果分组不是经由虚拟网络设备链路接收到的,则经由第一接口发送分组。
以上只是一个概要,从而必然包括简化、概括和细节省略;因此,本领域的技术人员将会意识到,概要只是说明性的,而绝不是限制性的。这里公开的操作可以用多种方式来实现,并且可以在不脱离本发明及其更宽的方面的情况下作出这种变化和修改。仅由权利要求书限定的本发明的其他方面将从以下阐述的非限制性详细描述中清楚显现出来。


通过参考下面的描述和附图,可以获得对本发明的更彻底的理解,附图中类似的标号指示类似的特征。
图1是根据本发明一个实施例的网络的框图。
图2A和2B示出根据本发明一个实施例,相同网络层中的两个网络设备如何能够共同作为单个虚拟网络设备工作。
图3示出根据本发明一个实施例,虚拟网络设备中包括的每个虚拟网络设备子单元内的更多细节。
图4A-4B示出根据本发明一个实施例,处理经由跨多个虚拟网络设备子单元的接口束接收到的数据分组的方法的流程图。
图5A-5F示出根据本发明一个实施例,在虚拟网络设备未曾知道目的地设备的逻辑标识符的情况下如何处理分组。
图6A-6D示出根据本发明一个实施例,在虚拟网络设备已知目的地设备的逻辑标识符时如何处理分组。
图7A-7F示出根据本发明一个实施例,在虚拟网络设备未曾知道目的地设备的逻辑标识符的情况下如何处理从非卫星网络设备接收到的分组。
虽然本发明能够接受各种修改和替换形式,但在附图和详细描述中提供了本发明的特定实施例作为示例。应当理解,附图和详细描述并不是用来将本发明限制到所公开的特定形式的。相反,本发明将会覆盖处于由所附权利要求书所限定的本发明的精神和范围之内的所有修改、等同物和替换。
具体实施例方式
图1是一个网络的框图,在该网络中,接口束可以实现在虚拟网络设备中。在图1中,若干个客户端102(1)-102(n)经由网络彼此通信,并且与服务器104(1)-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)最接近的层是接入层110。接入层110包括若干个网络设备120(1)-120(n)。在该示例中,接入层110是分组从客户端102(1)-102(n)进入网络的初级层。
分发层112聚集经由接入层110接收到的流,并将这些聚集的流提供到核心层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所示的那些,还可以包括替换层)。此外,客户端和服务器可以按不同于图1所示的方式被耦合到网络(例如某些客户端和/或服务器可以耦合到核心和/或分发层中的个体网络设备)。此外,设备相对于彼此的物理位置可以不同于图1所示的逻辑位置。例如,相同网络层中的两个设备物理上可以位于不同的楼层上、不同的建筑物中或不同的校园中。相反,不同网络层中的两个设备可以位于同一房间中。
在某些实施例中,位于网络的外边缘的网络设备120(1)-120(n)和网络设备128(1)-128(n)的工作方式可能不同于位于网络的较内层的网络设备122(1)-122(n)、124(1)-124(n)和126(1)-126(n)。例如,在一个实施例中,网络设备120(1)-120(n)是受网络的较内层(例如分发和核心层)中的网络设备控制或以其他方式从属于网络的较内层中的网络设备的卫星网络设备。在这种实施例中,非卫星网络设备提供L2(第2层)和L3(第3层)转发和路由选择,而卫星网络设备只具有相对有限的转发和/或路由选择能力。在其他实施例中,卫星网络设备不执行任何L2转发或L3路由选择。相反,卫星网络设备只是仅仅将所有分组转发到非卫星网络设备,以进行L2转发和L3路由选择。在某些实施例中,被耦合到卫星网络设备的非卫星网络设备可以控制卫星网络设备的工作。例如,网络设备126(1)-126(n)可以根据各种路由选择协议来配置网络设备128(1)-128(n)。在某些实施例中,卫星网络设备被视为卫星所从属的网络设备的远程线路卡。还注意到,在替换实施例中,非卫星网络设备可以取代卫星网络设备被用于接入层和数据中心中。
网络设备120(1)-120(n)、122(1)-122(n)、124(1)-124(n)、126(1)-126(n)和128(1)-128(n)可以包括各种路由器、交换机、网络和其他网络设备。在许多实施例中,为使网络工作,在每一层可能只需要一个网络设备。但是,如图1所示,在每一层可以包括多个网络设备,以提供冗余性。
将会注意到,在这里描述的附图中的若干个实例中,使用了变量标识符“n”来更简单地指明一系列相关或类似元件的最后一个元件。这种变量标识符的反复使用并不一定是要暗示这种元件系列的大小之间的相关性,虽然这种相关性也可能是存在的。这种变量标识符的使用不要求每个元件系列与由相同的变量标识符定界的另一系列具有相同数目的元件(例如每个网络层中的网络设备的数目可能不同)。更确切地说,在每个使用实例中,由“n”(或任何其他这种标识符)标识的变量与同一变量标识符的其他实例相比可能拥有相同或不同的值。
在不同网络层中的设备之间可以实现多条链路以提供额外的冗余性。例如,如图1所示,接入层110中的每个网络设备120(1)-120(n)可以通过两条(或更多条)不同的链路被耦合到分发层112。类似地,分发层112中的每个网络设备122(1)-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)或聚集链路(在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)可以基于这种意识选择特定虚拟链路束内的一条链路以在其上发送分组。
在其他实施例中,网络设备122(1)和122(2)进行操作以掩盖这种单个逻辑链路实际上包括在不同网络设备处终止的链路这一事实。例如,如图2A所示,网络设备122(1)和122(2)可以作为单个虚拟网络设备202工作。图2B示出从接入层110中的网络设备120(1)的角度来看网络设备120(1)是如何通过冗余链路对被耦合到分发层112中的单个网络设备,即虚拟网络设备202的。网络设备120(2)对于虚拟网络设备202具有类似的观点。
在网络设备120(1)和网络设备120(1)-120(n)将其自身看成是被连接到单个网络设备的实施例中,例如图2B所示的实施例中,虚拟链路束的使用获得了简化。例如,如果网络设备120(1)意识到虚拟链路束250(1)在两个不同的网络设备处终止,则网络设备120(1)可以基于生成树协议选择一条链路以在其上发送特定分组。与网络设备120(1)仅仅将虚拟网络设备202看作单个实体相比,使用生成树协议可能涉及更多开销,以及/或者对于哪些链路能被用来发送给定分组有更多的限制(例如,生成树协议可能阻塞除一条链路之外的所有链路,从而防止使用除一条未被阻塞的链路之外的所有链路)。例如,当将虚拟网络设备202看作单个实体时,网络设备120(1)可以仅仅基于负载共享约束来选择一条链路以在其上发送分组。类似地,如果虚拟链路束250(1)内的一条链路发生故障,则网络设备120(1)无需改变生成树协议的应用方式。相反,网络设备120(1)可以仅仅继续使用虚拟链路束250(1)内的未发生故障的链路。
虚拟网络设备202中包括的个体网络设备,例如网络设备122(1)和网络设备122(2),在这里各自被称为“虚拟网络设备子单元”。在某些实施例中,虚拟网络设备子单元122(1)和122(2)各自是在单独的机箱中实现的(即,每个机箱容纳单个虚拟网络设备子单元)。例如,在图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)被耦合到虚拟网络设备202。结果,即使这些上行链路之一和/或虚拟网络设备子单元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)可以像该网络设备被耦合到单个分发层设备(虚拟网络设备202)那样工作,而不是像该网络设备被耦合到了两个独立的分发层网络设备那样工作。
分发层虚拟网络设备子单元122(1)也通过单条链路被耦合到服务器104(3)。与接入层网络设备120(1)-120(3)不同,服务器104(3)并不将分发层网络设备单元122(1)和122(2)看作单个逻辑网络设备。在该示例中,如果网络设备122(1)或将服务器104(3)耦合到网络设备122(1)的链路发生故障,则服务器104(3)将无法经由分发层通信。注意,在替换实施例中,诸如服务器104(3)这样的但具有多个端口的服务器可以通过虚拟链路束被耦合到每个虚拟网络设备,并且这种服务器能够像虚拟网络设备子单元122(1)和122(2)是单个虚拟网络设备202那样与这些子单元交互。
虚拟网络设备子单元122(1)包括若干个卡,其中包括控制卡302(1)以及线路卡304(1)和304(3)。类似地,虚拟网络设备子单元122(2)包括控制卡302(2)以及线路卡304(2)和304(4)。控制卡302(1)包括控制单元310(1)、转发引擎312(1)以及接口320(1)和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)可以被当作上行链路接口来操作。
注意,虽然图2中的接口被描述成既是进入接口又是外出接口,但是也可以使用充当仅限进入的接口或充当仅限外出的接口的接口。例如,图2所示的每个接口的功能可以利用一个仅限进入的接口和一个仅限外出的接口来实现。类似地,虚拟链路束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)可以协调它们的行为,从而使得对于网络设备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看起来是单个网络设备,因此,尽管只有虚拟网络设备子单元122(1)具有到服务器104(3)的直接连接,但网络设备120(2)选择去往虚拟网络设备子单元122(2)的上行链路的可能性与选择去往虚拟网络设备子单元122(1)的上行链路的可能性是相同的。如果分组被发送到虚拟网络设备子单元122(2),则网络设备122(2)随后可以利用虚拟网络设备子单元122(1)和122(2)之间的虚拟网络设备链路360中包括的上行链路之一来将分组发送到虚拟网络设备子单元122(1),而虚拟网络设备子单元122(1)进而又可以将分组提供到其目的地,即服务器104(3)。
在其他实施例中,网络设备120(1)-120(3)可能意识到它们的虚拟链路束250(1)和250(2)实际上在两个不同的网络设备上终止。网络设备120(1)-120(3)可以基于该信息控制分组传输。例如,在这种情形下,网络设备120(2)可以基于网络设备120(2)认识到逻辑链路内去往两个不同网络设备的不同连接这一事实,通过选择被耦合到虚拟网络设备子单元122(1)的上行链路而不是被耦合到虚拟网络设备子单元122(2)的上行链路来处理寻址到服务器104(3)的分组。
各自通过虚拟链路束250(1)被耦合到网络设备120(1)的接口320(13)、320(9)和320(16)形成接口束(例如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)以及路由和转发来自这些网络设备的分组。例如,当经由上行链路接口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的接口之外的接口接收到的分组)。下文中描述的图6A-6D示出关于如何通过更倾向于用第一虚拟网络设备子单元内的本地接口处理特定分组从而来避免虚拟网络设备链路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)可以实现某些行为以充当虚拟网络设备202,从网络设备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通知的副本。该MAC通知随后可在虚拟网络设备子单元122(1)中包括的转发引擎之间分发。在基于MAC通知被更新之后,虚拟网络设备子单元122(1)中的转发引擎现在就知道由目的地地址标识的设备的位置了。因此,随后接收到的寻址到该设备的分组将不会被扩散。
当连接到单个虚拟网络设备子单元的虚拟链路束中的所有物理链路都发生故障时,虚拟链路束转变成被耦合到单个虚拟网络设备子单元的正常链路束。此时,每个虚拟网络设备子单元相对该网络设备束的行为被修改。例如,假设被耦合到虚拟网络设备子单元122(2)的虚拟链路束250(1)中的所有上行链路都发生故障。此时,虚拟网络设备子单元122(2)不再拥有任何可以经由虚拟链路束250(1)发送分组的本地上行链路接口。因此,虚拟网络设备子单元122(2)将会在虚拟网络设备链路360上对所有需要经由虚拟链路束250(1)发送的流量进行重定向。此外,由于网络设备122(2)不再能够经由虚拟链路束250(1)发送分组,因此虚拟网络设备子单元122(1)将会停止阻止经由虚拟网络设备链路360接收到的流量被经由虚拟链路束250(1)发送。如果被耦合到虚拟网络设备子单元122(2)的虚拟链路束250(1)中的上行链路中的至少一条被恢复,则虚拟链路束250(1)将会转变回其正常工作模式,在该模式中,虚拟网络设备子单元122(2)将会经由虚拟链路束250(1)发送在本地接收到的分组,并且虚拟网络设备子单元122(1)将会阻止经由虚拟网络设备链路360接收到的分组经由虚拟链路束250(1)发送。
图4A-4B示出了由包括在虚拟网络设备内的虚拟网络设备子单元实现的方法的流程图。在图4A的401处,接收到分组。基于分组的源地址以及在哪个端口或上行链路接口接收到分组,虚拟网络设备子单元获知发送设备的源标识符,如403处所示。如果分组是经由卫星网络设备或虚拟网络设备内的另一个虚拟网络设备子单元接收到的,则该源标识符可以标识卫星网络设备或另一虚拟网络设备子单元中的端口或上行链路接口。例如,如果分组是经由虚拟网络设备链路从另一虚拟网络设备子单元接收到的,则附加到分组的头部可以指示另一虚拟网络设备子单元的哪个端口或上行链路接口接收到了该分组。在某些实施例中,头部可以指示卫星网络设备的哪个端口最初从发送设备接收到该分组。接收该分组的虚拟网络设备子单元随后可以获知所标识的端口或上行链路接口的逻辑标识符与分组的源标识符相关联。该源标识符随后可被用于将分组转发到发送设备。
如果在405处确定分组是从本地上行链路接口或端口接收到的(即,如果分组不是从虚拟网络设备内的另一虚拟网络设备子单元接收到的),则虚拟网络设备子单元尝试将分组转发到其目的地地址。例如,虚拟网络设备子单元可以将目的地地址提供到转发表,以确定哪个逻辑标识符(如果存在的话)与该目的地地址相关联。如果在407处确定在转发表中没有命中,则虚拟网络设备子单元尚未获知(一个或多个)目的地设备之前的(一个或多个)接口的逻辑标识符。在这种情形下,虚拟网络设备子单元将分组扩散到传入VLAN(虚拟局域网)(传入VLAN是包括由分组的源地址标识的设备的VLAN)中除分组到达的接口之外的所有外出端口和/或上行链路接口,如409处所示。对于包括在接口束中的接口(例如端口或上行链路),虚拟网络设备子单元对于每个接口束选择一个外出接口以经由其发送分组。如果分组是由虚拟网络设备子单元经由接口束接收到的,则在发送分组时将排除该接口束中的所有接口。
如果在407处确定分组的目的地地址在转发表中命中,则虚拟网络设备子单元利用转发表返回的逻辑标识符来选择应当将分组发送到哪个(哪些)接口。如果在411处确定转发表未标识接口束,则分组经由所标识的(一个或多个)端口和/或(一个或多个)上行链路接口被发送,如413处所示。如果转发表标识了接口束,则虚拟网络设备子单元经由所标识的接口束内包括的一个本地接口发送分组,如415处所示(如果转发表标识其他非接口束接口,则分组也经由这些接口被发送)。
图4B示出了在分组是经由虚拟网络设备链路从另一虚拟网络设备子单元接收到的(如在图4A的405处确定)的情况下虚拟网络设备子单元处理分组的方式。在这种情形下,如果分组应当经由任何接口束被转发,则处理分组的第一虚拟网络设备子单元已经在该接口束内的链路上发送了该分组(假设正常工作,无故障)。
虚拟网络设备子单元确定子单元是否已经获知与分组的目的地设备相关联的逻辑标识符。在该示例中,这是通过将目的地地址提供到转发表来执行的,如417处所示。如果在转发表中没有命中(即,如果尚未获知关于该目的地地址的关联),则虚拟网络设备子单元在传入VLAN上扩散该分组。这是在419处通过经由所有未包括在接口束中的端口和上行链路接口发送分组来执行的。排除接口束是因为处理分组的第一虚拟网络设备子单元已经经由每个接口束中的外出接口发送了该分组的副本。
如果在转发表中存在命中,并且如果在421处转发表未标识接口束,则分组经由所标识的端口和/或上行链路接口被发送,如423处所示。如果相反地,转发表标识了接口束,则分组不经由该接口束被发送。例如,如425处所示,可以从经由所标识的接口束发送的分组流中过滤掉该分组。分组不经由接口束被发送是因为分组是经由虚拟网络设备链路接收到的,这表明另一虚拟网络设备子单元已经经由所标识的接口束发送了分组。在某些实施例中,功能425是由从该接口束中选出的外出接口执行的。附加到分组的头部包括指示该分组是经由虚拟网络设备链路接收到的的信息。例如,接口束中包括的每个外出接口被配置为从经由该外出接口发送的分组流中过滤掉具有该头部的分组。
图5A-5F示出了当虚拟网络设备未曾知道目的地设备的端口标识符时如何经由虚拟网络设备输送分组。在该示例中,工作为虚拟网络设备202的线路卡的卫星网络设备被耦合在客户端102(1)和102(2)以及虚拟网络设备202之间。这些卫星网络设备上的端口是利用由虚拟网络设备202分配的逻辑标识符来标识的。例如,在该示例中,虚拟网络设备202向卫星网络设备520(1)内的端口分配了逻辑标识符“P1”,向卫星网络设备520(2)内的端口分配了逻辑标识符“P2”。由于虚拟网络设备202将卫星网络设备520(1)和520(2)当作虚拟网络设备202的线路卡来控制,因此虚拟网络设备202将端口P1和P2看作本地端口。
如图5A所示,虚拟网络设备202包括两个虚拟网络设备子单元122(1)和122(2)。虚拟网络设备子单元122(1)包括上行链路接口U1和U2,而虚拟网络设备子单元122(2)包括上行链路接口U3和U4。两个卫星网络设备520(1)和520(2)被耦合以与虚拟网络设备202通信。卫星网络设备520(1)经由虚拟链路束250(1)与虚拟网络设备202通信。卫星网络设备520(2)经由虚拟链路束250(2)与虚拟网络设备202通信。虚拟链路束250(1)和虚拟链路束250(2)各自包括被耦合到虚拟网络设备子单元122(1)的一条上行链路以及被耦合到虚拟网络设备子单元122(2)的另一条上行链路。
在图5A中,客户端102(1)向卫星网络设备520(1)发送寻址到客户端102(2)的分组。卫星网络设备520(1)经由端口P1接收该分组。在该示例中,卫星网络设备520(1)选择虚拟链路束250(1)中的上行链路之一以在其上向虚拟网络设备202发送分组。卫星网络设备520(1)可以基于分组中包括的目的地地址将分组发送到虚拟网络设备202(例如在卫星网络设备520(1)执行本地转发的实施例中),或者,当然(例如在卫星网络设备520(1)不执行任何本地转发的实施例中),卫星网络设备520(1)可以将所有分组转发到虚拟网络设备202以便进行路由选择和转发。如果卫星网络设备520(1)执行本地转发,则卫星网络设备520(1)还可以获知客户端102(1)位于端口P1之后(例如通过将使分组的源地址与端口P1相关联的信息存储在查找表中)。
如图5B所示,卫星520(1)选择经由连接到虚拟网络设备子单元122(1)的上行链路将分组发送到虚拟网络设备202。该选择可以基于负载共享因素进行。在许多实施例中,对上行链路的选择是在没有任何关于哪个上行链路连接到虚拟网络设备202内的哪个虚拟网络设备子单元的知识的情况下作出的。例如,在这种实施例中,卫星设备520(1)不维护任何可用于基于每个上行链路被耦合到的虚拟网络设备子单元来区分上行链路的状态信息或其他信息。从而,对上行链路接口的选择可以基于其他因素进行。
在该示例中,卫星网络设备520(1)在在所选上行链路上转发分组之前将头部附加到分组。该头部标识卫星网络设备520(1)的端口P1,分组是经由该端口从客户端102(1)接收到的。
在图5C中,虚拟网络设备子单元122(1)经由上行链路接口U1接收分组。基于附加的头部,虚拟网络设备子单元122(1)获知客户端102(1)位于卫星网络设备520(1)的端口P1之后(如上所述,在该实施例中,虚拟网络设备子单元122(1)将卫星网络设备520(1)当成虚拟线路卡来操作,从而将端口P1看作本地端口)。
虚拟网络设备子单元122(1)在转发表中查找分组的目的地地址,以确定如何将分组转发到客户端102(2)。在该示例中,网络设备122(1)不知道哪个端口与客户端102(2)相关联,因而查找返回扩散标识符,从而导致虚拟网络设备子单元122(1)在传入VLAN中扩散分组(传入VLAN是包括客户端102(1)的VLAN)。
虚拟网络设备链路360以及虚拟链路束250(1)和250(2)是通过扩散索引被选择的。由于分组是经由虚拟链路束250(1)中的上行链路接口接收到的,因此虚拟网络设备子单元122(1)从经由上行链路接口U1发送的分组流中过滤掉该分组(注意,在替换实施例中,分组经由上行链路U1被发送回卫星网络设备520(1),然后卫星网络设备520(1)从经由端口P1发送到客户端102(1)的分组流中过滤掉该分组)。
从而,如图5D所示,分组经由虚拟网络设备链路360中包括的链路之一以及经由上行链路接口U2被输出。在该示例中,头部被附加到经由上行链路接口U2输出的分组的副本。头部标识卫星网络设备520(2)内应当经由其输出分组的(一个或多个)端口。由于分组被扩散,因此该头部可以包括选择一个或多个端口的适当群组(例如最初在其中接收到分组的VLAN中的所有端口)的扩散标识符。类似地,标识扩散标识符的头部可以被附加到经由虚拟网络设备链路360发送的分组的副本。附加到该分组的副本的头部也可以包括最初经由其接收到分组的上行链路接口束的标识符。
图5E示出虚拟网络设备子单元122(2)是如何响应于经由虚拟网络设备链路360接收到分组的副本来获知发送设备客户端102(1)位于端口P1之后的(虚拟网络设备子单元122(2)已经知道端口P1位于虚拟链路束250(1)之后)。在该示例中,虚拟网络设备子单元122(2)内包括的所有接口都是上行链路接口(即,虚拟网络设备子单元122(2)没有本地附接的客户端)。由于虚拟网络设备子单元122(2)经由虚拟网络设备链路360接收到分组,因此虚拟网络设备子单元122(2)知道分组已经经由扩散标识符中指示的每个上行链路接口束被转发。因此,虚拟网络设备子单元122(2)从经由上行链路接口U3和U4输出的流中过滤掉该分组。在一个实施例中,这是由每个上行链路接口中的硬件来执行的。例如,上行链路接口U3可以基于附加到分组的头部来过滤分组。如果头部指示分组是经由虚拟网络设备链路360接收到的,则U3从经由U3发送的分组流中去除该分组。
在图5F中,卫星网络设备520(2)已经经由扩散标识符中指示的其所有端口(在这里只示出了端口P2)输出了分组的副本。因此,分组经由卫星网络设备520(2)的端口P2被转发到其目的地设备,即客户端102(2)。
图6A-6D示出了当虚拟网络设备202已经知道目的地设备的端口标识符时如何经由图5A-5F的虚拟网络设备输送分组。在该示例中,客户端102(2)发送寻址到客户端102(1)的分组,如图6A所示。虚拟网络设备202中的虚拟网络设备子单元122(1)和122(2)在该分组被发送之前各自已经意识到客户端102(1)位于卫星网络设备102(1)的端口P1之后。分组经由端口P2被卫星网络设备520(2)接收。
图6B示出了卫星网络设备520(2)如何经由虚拟链路束250(2)将分组发送到虚拟网络设备202。在该示例中,虚拟链路束250(2)包括两条上行链路。卫星网络设备520(2)选择虚拟链路束250(2)内的上行链路之一(例如基于负载共享因素)。在这里,卫星网络设备520(2)已选择了被耦合到上行链路接口U4的上行链路。在经由所选上行链路发送分组的副本之前,卫星网络设备520(2)还将标识端口P2的头部附加到分组的该副本。
在图6C中,虚拟网络设备子单元122(2)经由上行链路接口U4接收来自卫星网络设备520(2)的分组。响应于接收到附加到分组的头部,虚拟网络设备子单元122(2)获知客户端102(2)位于端口P2之后。由于虚拟网络设备子单元122(2)已经知道该分组的目的地,即客户端102(1)位于端口P1之后(例如因为已经分配了使客户端102(1)的地址与端口P1相关联的查找表条目),因此虚拟网络设备子单元122(2)经由虚拟链路束250(1)将分组转发到卫星网络设备520(1),如图6D所示。在该示例中,虚拟网络设备子单元122(2)包括被耦合到虚拟链路束250(1)的本地上行链路接口U3,从而允许虚拟网络设备子单元122(2)直接经由上行链路接口U3将分组的副本发送到卫星网络设备520(1),而无需通过虚拟网络设备子单元122(1)发送副本。
图7A-7F示出了如何经由虚拟网络设备输送分组的另一个示例。在该示例中,介于客户端102(1)和102(2)以及虚拟网络设备202之间的接入层网络设备120(1)和120(2)是非卫星网络设备。从而,网络设备120(1)和120(2)执行它们自己的路由选择和转发,并且不由虚拟网络设备202配置。类似地,虚拟网络设备202不将网络设备120(1)和120(2)的端口看作本地端口,虚拟网络设备202也不向网络设备120(1)和120(2)中的端口分配端口标识符。此外,虚拟链路束250(1)和250(2)中包括的链路不是上行链路,并且,与卫星网络设备不同,在将分组转发到虚拟网络设备202之前,网络设备120(1)和120(2)不向分组附加信息以指定哪个本地端口接收到每个分组。
如图7A所示,网络设备120(1)通过虚拟链路束250(1)被耦合到虚拟网络设备202,而网络设备120(2)通过虚拟链路束250(2)被耦合到虚拟网络设备202。两个虚拟链路束都包括在虚拟网络设备子单元122(1)上终止的链路和在虚拟网络设备子单元122(2)上终止的链路。
在该示例中,与图5A-5F的示例很相似,网络设备120(1)经由端口P1接收来自客户端102(1)的寻址到客户端102(2)的分组。一旦接收到该分组,网络设备120(1)就获知客户端102(1)位于端口P1之后。网络设备120(1)确定分组应当被转发到虚拟网络设备202,并且选择虚拟链路束250(1)中的链路之一以在其上向虚拟网络设备202发送分组。链路选择例如可以通过执行基于散列的负载共享算法来进行。在该示例中,网络设备120(1)选择被耦合到虚拟网络设备子单元122(1)的链路。
图7B示出了网络设备120(1)如何经由虚拟链路束250(1)将分组发送到虚拟网络设备202。具体而言,网络设备120(1)经由被耦合到虚拟网络设备子单元122(1)的接口I1的链路来发送分组。接口I1是接口束IB1的一部分,该接口束还包括虚拟网络设备子单元122(2)的接口I3。
在图7C中,虚拟网络设备子单元122(1)响应于经由接口I1接收到分组而获知客户端102(1)位于接口束IB1之后。在该示例中,虚拟网络设备子单元122(1)不知道哪些接口与分组的目的地地址相关联。结果,虚拟网络设备子单元122(1)经由所有外出链路扩散分组。
图7D示出了虚拟网络设备子单元122(1)通过经由虚拟网络设备链路360发送分组的一个副本并经由接口I2发送分组的另一个副本来扩散分组。经由接口I2发送分组起的作用是经由虚拟链路束250(2)将分组的副本发送到网络设备120(2)。由于分组是经由接口束IB1接收到的,因此分组不经由该接口束中的任何链路被发送。
在经由虚拟网络设备链路360发送分组的副本之前,虚拟网络设备子单元122(1)向分组附加头部。头部指示分组是经由接口束IB1接收到的(例如头部可以包括用于标识接口束IB1中的接口的逻辑标识符)。
如图7E所示,经由虚拟链路束250(2)发送的分组的副本被网络设备120(2)接收到。一旦接收到该分组,网络设备120(2)就获知客户端102(1)位于被耦合到虚拟链路束250(2)的接口束之后。该接口束包括两个接口,从而如果网络设备120(2)随后处理寻址到客户端102(1)的分组,则网络设备120(2)就可以选择虚拟链路束250(2)中的任何一个以在其上发送分组。
另外,虚拟网络设备子单元122(2)响应于经由虚拟网络设备链路360接收到分组的副本和附加的头部而获知客户端102(1)位于接口束IB1之后。由于虚拟网络设备子单元122(2)也不知道如何将分组转发到目的地地址,因此虚拟网络设备子单元122(2)也扩散分组。但是,由于虚拟网络设备子单元122(2)中仅有的接口不是到虚拟网络设备链路360的接口就是到虚拟链路束的接口,因此分组被从经由这些接口发送的传出分组流中过滤掉。这是因为分组已经被虚拟网络设备子单元122(1)处理,从而不需要经由虚拟网络设备链路360将分组的副本转发回虚拟网络设备子单元122(1),也不需要经由虚拟网络设备链路发送额外的分组副本。在图7F中,网络设备120(2)经由端口P2发送分组,该端口P2被耦合到分组的目的地,即客户端102(2)。
注意,诸如图7A-7F所示的系统还可以在虚拟网络设备202已经知道经由其转发分组的适当接口束时处理分组。在这种情形下,可以按与图6A-6D所示的方式几乎相同的方式来将分组转发过系统。但是,虚拟网络设备子单元不是基于知道目的地设备位于特定卫星网络设备端口之后来转发分组,而是基于它们知道目的地设备位于特定接口束之后来转发分组。
注意,在某些实施例中,使用虚拟链路束所需的功能是在被耦合到虚拟链路束的虚拟网络设备子单元、网络设备和/或卫星网络设备上执行的软件中实现的。例如,每个虚拟网络设备子单元、网络设备和/或卫星网络设备可以包括计算机可读介质,可用于控制和/或使用虚拟链路束的程序指令和/或数据被存储在计算机可读介质上。计算机可读介质的示例性类型包括CD(高密盘)、DVD(数字多功能盘)、硬盘、光盘、磁带设备、软盘和存储器(例如各种类型的RAM(随机访问存储器)、ROM(只读存储器)、闪存、MEMS(微电子机械系统)存储器等等)。这种网络设备可以包括被配置为执行存储在计算机可读介质中的程序指令的一个或多个处理器(例如微处理器、PLD(可编程逻辑器件)或ASIC(专用集成电路))。程序指令可以包括用于执行虚拟链路束的控制协议处理的程序指令,以及用于经由虚拟链路束中包括的链路选择性地转发分组(例如基于分组是否是经由虚拟网络设备链路接收到的)的控制指令。程序指令和/或数据也可以经由诸如因特网这样的网络或在承载介质上被传送到虚拟网络设备子单元、网络设备和/或卫星网络设备。在某些实施例中,计算机可读介质是诸如网络和/或无线链路之类的承载介质,诸如电、电磁或数字信号之类的编码了数据和指令的信号在承载介质上被输送。
虽然已经针对本发明的特定实施例描述了本发明,但是可以向本领域的技术人员建议各种变化和修改。希望这种变化和修改落在所附权利要求书的范围之内。
工业应用性本发明的实施例可用于联网领域。
权利要求
1.一种系统,包括第一虚拟网络设备子单元(122(1)),其包括第一接口(320(9));以及被耦合到所述第一接口并且被配置为转发经由所述第一接口接收到的分组的控制器(310(1)),其中所述第一接口(320(9))由第一逻辑标识符标识,第二接口(320(16))由所述第一逻辑标识符标识,接口束包括所述第一接口(320(9))和所述第二接口(320(16)),并且所述第二接口(320(16))被包括在第二虚拟网络设备子单元(122(2))中。
2.如权利要求1所述的系统,还包括所述第二虚拟网络设备子单元(122(2))。
3.如权利要求2所述的系统,其中所述第一虚拟网络设备子单元(122(1))被配置为维护与所述第二虚拟网络设备子单元(122(2))一致的转发信息。
4.如权利要求3所述的系统,其中所述控制器(310(1))被配置为根据运行在所述接口束上的路由选择协议为所述第一接口(320(9))执行控制协议处理,所述控制器(310(1))被配置为将在执行所述控制协议处理时生成的信息提供到所述第二虚拟网络设备子单元(122(2))中包括的次级控制器(310(2)),并且所述次级控制器(310(2))被配置为利用所述信息来管理所述第二接口(310(16))。
5.如权利要求1、2、3或4所述的系统,其中所述控制器(310(1))被配置为在查找表中查找分组的目的地地址,并且如果所述查找表返回所述第一逻辑标识符,则所述第一虚拟网络设备子单元(122(1))被配置为使经由所述第一接口(320(9))发送所述分组优先于经由所述第二接口(320(16))发送所述分组。
6.如权利要求5所述的系统,其中如果所述查找表返回所述第一逻辑标识符,则所述第一虚拟网络设备子单元(122(1))被配置为经由所述第一接口(320(9))发送所述分组而不是经由所述第二接口(320(16))发送所述分组,除非所述第一接口(320(9))和被耦合到所述第一接口的链路中的一个或多个发生故障。
7.如权利要求6所述的系统,其中所述第一虚拟网络设备子单元(122(1))包括多个接口(320),所述接口中的多于一个接口各自被包括在所述接口束中,并且所述接口中的所述多于一个接口包括所述第一接口。
8.如权利要求7所述的系统,其中如果被耦合到所述接口中的所述多于一个接口的每条相应的通信链路发生故障,则所述第一虚拟网络设备子单元(122(1))被配置为经由所述第二虚拟网络设备子单元(122(2))中包括的所述第二接口(320(16))转发所述分组。
9.如权利要求1、2、3、4、5、6、7或8所述的系统,其中所述第一虚拟网络设备子单元(122(1))通过虚拟网络设备链路(360)被耦合到所述第二虚拟网络设备子单元(122(2))。
10.如权利要求9所述的系统,其中所述第一虚拟网络设备子单元(122(1))被配置为响应于经由所述虚拟网络设备链路(360)接收到第二分组而获知所述第二分组的源地址位于所述第一接口(320(9))之后。
11.如权利要求9所述的系统,其中如果所述第二分组是经由所述虚拟网络设备链路(360)接收到的,则所述第一接口(320(9))被配置为从经由所述第一接口(320(9))发送的分组流中过滤掉所述第二分组。
12.如权利要求9所述的系统,还包括被耦合到所述接口束的虚拟链路束(250(1))。
13.如权利要求12所述的系统,还包括通过所述虚拟链路束被耦合到所述第一虚拟网络设备子单元(122(1))和所述第二虚拟网络设备子单元(122(2))的网络设备(120(1))。
14.如权利要求12所述的系统,其中所述网络设备被配置为利用基于散列的负载共享算法来选择所述虚拟链路束(250(1))中包括的多条通信链路之一,并且所述网络接口被配置为经由所述通信链路中被选中的链路发送分组。
15.一种方法,包括接收分组,其中所述分组的目的地标识符标识接口束,并且所述接口束包括第一接口;以及如果所述分组是经由虚拟网络设备链路接收到的,则从经由所述第一接口发送的分组流中过滤掉所述分组。
16.如权利要求15所述的方法,还包括如果所述分组不是经由所述虚拟网络设备链路接收到的,则经由所述第一接口发送所述分组。
17.如权利要求16所述的方法,还包括在第一虚拟网络设备子单元中包括的查找表和第二虚拟网络设备子单元中包括的第二查找表之间维持一致性。
18.如权利要求16或17所述的方法,还包括在第一虚拟网络设备子单元中包括的主控制器处为所述接口束执行控制协议处理,其中所述第一接口被包括在所述第一虚拟网络设备子单元中。
19.如权利要求18所述的方法,还包括响应于通过执行所述控制协议处理生成的信息管理所述第二虚拟网络设备子单元的第二接口,其中所述第二接口被包括在所述接口束中。
20.如权利要求19所述的方法,还包括在查找表中查找第二分组的目的地地址,并且如果所述查找表返回所述目的地标识符,则经由所述第一虚拟网络设备子单元的第一接口发送所述分组而不是经由所述第二虚拟网络设备子单元的第二接口发送所述分组。
21.如权利要求15、16、17、18、19或20所述的方法,还包括响应于经由所述虚拟网络设备链路接收到所述分组,而获知所述分组的源地址位于本地接口之后。
22.一种系统,包括用于接收分组的装置,其中所述分组的目的地标识符标识接口束,并且所述接口束包括第一接口;以及用于在所述分组是经由虚拟网络设备链路接收到的的情况下从经由所述第一接口发送的分组流中过滤掉所述分组的装置。
23.如权利要求22所述的系统,还包括用于在所述分组不是经由所述虚拟网络设备链路接收到的的情况下经由所述第一接口发送所述分组的装置。
24.如权利要求23所述的系统,还包括用于在第一虚拟网络设备子单元中包括的查找表和第二虚拟网络设备子单元中包括的第二查找表之间维持一致性的装置。
25.如权利要求23或24所述的系统,还包括用于在第一虚拟网络设备子单元中包括的主控制器处为所述接口束执行控制协议处理的装置,其中所述第一接口被包括在所述第一虚拟网络设备子单元中。
26.如权利要求25所述的系统,还包括用于响应于通过执行所述控制协议处理生成的信息管理所述第二虚拟网络设备子单元的第二接口的装置,其中所述第二接口被包括在所述接口束中。
27.如权利要求26所述的系统,还包括用于在查找表中查找第二分组的目的地地址的装置,以及用于在所述查找表返回所述目的地标识符的情况下经由所述第一虚拟网络设备子单元的第一接口发送所述分组而不是经由所述第二虚拟网络设备子单元的第二接口发送所述分组的装置。
28.如权利要求22、23、24、25、26或27所述的系统,还包括用于响应于经由所述虚拟网络设备链路接收到所述分组而获知所述分组的源地址位于本地接口之后的装置。
29.一种计算机可读介质,包括可执行以实现以下步骤的程序指令检测分组的接收,其中所述分组的目的地标识符标识接口束,并且所述接口束包括第一接口;以及如果所述分组是经由虚拟网络设备链路接收到的,则从经由所述第一接口发送的分组流中过滤掉所述分组。
30.如权利要求29所述的计算机可读介质,其中所述程序指令还可执行以实现以下步骤如果所述分组不是经由所述虚拟网络设备链路接收到的,则经由所述第一接口发送所述分组。
31.如权利要求30所述的计算机可读介质,其中所述程序指令还可执行以实现以下步骤在第一虚拟网络设备子单元中包括的查找表和第二虚拟网络设备子单元中包括的第二查找表之间维持一致性。
32.如权利要求30或31所述的计算机可读介质,其中所述程序指令还可执行以实现以下步骤在第一虚拟网络设备子单元中包括的主控制器处为所述接口束执行控制协议处理,其中所述第一接口被包括在所述第一虚拟网络设备子单元中。
33.如权利要求32所述的计算机可读介质,其中所述程序指令还可执行以实现以下步骤响应于通过执行所述控制协议处理生成的信息管理所述第二虚拟网络设备子单元的第二接口,其中所述第二接口被包括在所述接口束中。
34.如权利要求33所述的计算机可读介质,其中所述程序指令还可执行以实现以下步骤在查找表中查找第二分组的目的地地址,并且如果所述查找表返回所述目的地标识符,则经由所述第一虚拟网络设备子单元的第一接口发送所述分组而不是经由所述第二虚拟网络设备子单元的第二接口发送所述分组。
35.如权利要求29、30、31、32、33或34所述的计算机可读介质,其中所述程序指令还可执行以实现以下步骤响应于经由所述虚拟网络设备链路检测到所述分组的接收,而获知所述分组的源地址位于本地接口之后。
全文摘要
虚拟网络设备(202)包括若干个不同的虚拟网络设备子单元,例如(122(1)和122(2)),它们共同作为单个逻辑网络设备工作。接口束包括位于虚拟网络设备中包括的不同虚拟网络设备子单元中的多于一个虚拟网络设备子单元中的接口。接口束被耦合到虚拟链路束(250),该虚拟链路束将虚拟网络设备连接到另一设备。接口束被当作单个逻辑接口来管理。
文档编号H04L12/56GK1914867SQ200580003792
公开日2007年2月14日 申请日期2005年1月27日 优先权日2004年2月19日
发明者迈克尔·R·史密斯, 杰弗里·伊·王, 艾力·戈尔杉 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1