具有本地交换的端口扩展器
相关申请的交叉引用
本申请要求于2017年1月9日提交的题为“Port Extender with LocalSwitching”的美国临时专利申请No.62/443,950的权益,其公开内容通过引用整体明确地并入本文。
技术领域
本公开总体上涉及网络交换系统,并且更具体地涉及使用端口扩展器的网络交换系统。
背景技术
一些联网应用需要在大量端口之间交换。例如,典型的数据中心包括大量服务器、以及交换机,交换机被配置为将服务器通信地耦合到外部网络连接(诸如骨干网络链路)。作为另一示例,高容量网站服务器系统(服务器群)可以包括大量网络服务器、以及交换机,交换机用于将网络服务器通信地耦合到骨干网络链路。更一般地,企业网络涉及经由大量网络链路通信地耦合在一起的大量计算机,这通常需要在大量端口之间交换的交换系统。
在这些应用中,利用了能够在大量端口之间交换的交换系统。这种交换系统可以包括大量交换机,并且每个交换机能够在几个端口之间交换。
一些网络交换系统利用耦合到控制桥的端口扩展器(PE)。每个PE包括多个端口,并且是需要来自控制桥的指示的低复杂度设备。因此,当耦合到控制桥的端口时,PE以相对低的成本有效地增加了由控制桥处理的端口的数目。
当分组入口采用PE的网络交换系统,即分组进入源PE的端口(“源扩展端口”)时,PE将标签添加到分组,在标签中记录在其上接收到分组的源扩展端口,并且然后将分组转发给控制桥。控制桥处理分组(包括标签),确定要从网络交换系统经由其传输分组的目标扩展端口,并且将目标扩展端口记录在分组的标签中。然后,控制桥将分组转发给目标PE(其包括目标扩展端口)。目标PE处理分组的标记以确定要经由其传输分组的扩展端口,并且将分组发送给目标扩展端口。目标PE在传输分组之前从分组中剥离标签。
如上所述,电气和电子工程师协会(IEEE)802.1BR标准定义了PE与控制桥之间的交互以及由PE和控制桥使用的标签的内容。
发明内容
在一个实施例中,一种用于在交换系统中使用的端口扩展器,该交换系统包括控制交换机和一个或多个其他端口扩展器。端口扩展器包括:至少一个本地上游端口,直接或经由另一端口扩展器耦合到控制交换机;多个本地下游端口;以及转发引擎,耦合到至少一个本地上游端口和多个本地下游端口,转发引擎包括或耦合到转发数据库,转发数据库被填充有条目,条目指示i)与设备相对应的相应网络地址以及ii)端口扩展器的相应本地下游端口之间的关联,设备a)直接或b)经由端口扩展器下游的一个或多个其他端口扩展器耦合到端口扩展器的本地下游端口,其中转发数据库不包括与对应于如下设备的网络地址相对应的条目,这些设备直接或经由端口扩展器上游的另一端口扩展器耦合到端口扩展器的至少一个本地上游端口。转发引擎被配置为:针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有在转发数据库中的目的地网络地址的第一分组,将第一分组转发给由转发数据库指示的不同的本地下游端口,以及针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有不在转发数据库中的目的地网络地址的第二分组,将第二分组转发给至少一个本地上游端口。
在另一实施例中,一种方法在交换系统中的端口扩展器中实现,该交换系统包括控制交换机和一个或多个其他端口扩展器。该方法包括:经由端口扩展器的至少一个本地上游端口接收分组,至少一个上游端口直接或经由中间端口扩展器耦合到控制交换机;经由端口扩展器的多个本地下游端口接收分组;针对经由多个下游端口被接收的分组,搜索转发数据库,转发数据库被填充有条目,条目指示i)与设备相对应的相应网络地址以及ii)端口扩展器的相应本地下游端口之间的关联,设备a)直接或b)经由端口扩展器下游的一个或多个其他端口扩展器耦合到端口扩展器的本地下游端口,其中转发数据库不包括与对应于如下设备的网络地址相对应的条目,这些设备直接或经由端口扩展器上游的另一端口扩展器耦合到端口扩展器的至少一个本地上游端口;针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有在转发数据库中的目的地网络地址的第一分组,将第一分组转发给由转发数据库指示的不同的本地下游端口;以及针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有不在转发数据库中的目的地网络地址的第二分组,将第二分组转发给至少一个本地上游端口。
在又一实施例中,一种交换系统,包括:控制交换机,包括:多个控制交换机端口,以及第一分组处理器,该第一分组处理器耦合到控制交换机端口,第一分组处理器包括第一转发引擎,第一转发引擎包括或耦合到第一转发数据库,其中第一转发引擎被配置为将在任何控制交换机端口处被接收的分组转发给任何其他控制交换机端口。该系统还包括:多个端口扩展器,端口扩展器中的至少一些端口扩展器中的每个端口扩展器包括:至少一个本地上游端口,直接或经由另一端口扩展器耦合到控制交换机、多个本地下游端口、以及第二分组处理器,耦合到至少一个本地上游端口和多个本地下游端口,第二分组处理器包括第二转发引擎,第二转发引擎包括或耦合到第二转发数据库。第二转发引擎被配置为将如下分组仅转发给至少一个上游端口,分组i)在下游端口处被接收,并且ii)第二转发数据库针对该分组不包括转发信息。与第一分组处理器相比,第二分组处理器具有减少的功能。
在又一实施例中,一种方法在交换系统中实现,该交换系统包括控制交换机和耦合到控制交换机的多个端口扩展器。该方法包括:经由多个端口扩展器的多个本地下游端口接收分组;在被设置在端口扩展器的至少一些端口扩展器中的至少一些第一分组处理器中的每个第一分组处理器处,执行第一分组处理功能集合,包括:根据控制交换机的转发决策,将从控制交换机的端口被接收的分组引导到端口扩展器的端口,以及针对经由多个下游端口被接收的第一分组,渲染转发决策用以:在所选择的第一分组的目的地地址被包括在端口扩展器的第一分组处理器的转发数据库中的情况下,将所选择的第一分组转发给端口扩展器的其他下游端口,并且在所选择的第二分组的目的地地址比被端口扩展器所知的情况下,将所选择的第二分组转发给控制交换机的端口。该方法还包括:在被设置在控制交换机中的第二分组处理器处,执行第二分组处理功能集合,包括:将在任何控制交换机端口处被接收的分组转发给任何其他控制交换机端口。
附图说明
图1A是根据一个实施例的包括控制交换机和多个端口扩展器(PE)的示例交换系统的框图。
图1B是根据一个实施例的图1A的控制交换机的示例分组处理器管线的框图。
图1C是根据一个实施例的图1A的PE的示例分组处理器管线的框图。
图2A是根据一个实施例的图1A的网络交换系统的一部分的图,示出了通过网络交换系统的分组的示例路径。
图2B是根据一个实施例的图1A的网络交换系统的一部分的图,示出了通过网络交换系统的另一分组的另一示例路径。
图2C是根据一个实施例的图1A的网络交换系统的一部分的图,示出了通过网络交换系统的又一分组的又一示例路径。
图3是根据一个实施例的用于在具有下游端口和上游端口的网络设备(诸如PE)中转发分组的示例方法的流程图。
图4是根据一个实施例的用于在具有下游端口和上游端口的网络设备(诸如PE)中更新转发数据库的示例方法的流程图。
具体实施方式
在使用端口扩展器(PE)的标准网络交换系统中,PE不能在没有来自控制交换机的指令的情况下做出本地交换决策。因此,由PE从外部网络连接接收的所有分组都被转发给控制交换机。然而,在下面描述的实施例中,PE被提供有限的本地交换能力。在这样的实施例中,当PE能够在本地做出交换决策时,PE不将分组转发给控制桥,而是根据交换决策将分组发送给PE的本地下游端口。因此,在这样的实施例中,减少了发送给控制交换机的分组的数目,这通过减少交换系统内的总延迟并且减少PE与控制桥之间的业务量来提高性能。
图1A是根据一个实施例的被配置用于处理和转发数据单元(即,分组)的示例网络交换系统100的框图。交换系统100包括控制交换机104,控制交换机104具有耦合到相应网络链路112的多个端口108。控制交换机104包括分组处理器116,分组处理器116处理经由端口108进入控制交换机104的分组,包括做出转发决策(即,用于经由端口108的出口)。由分组处理器116执行的其他功能包括以下中的一项或多项:确定分组是否应该被捕获或镜像到另一处理器(未示出)以进行进一步分析,确定分组是否应该被丢弃、测量、监控等等。下面将更详细地描述分组处理器116。
网络交换系统100还包括通信地耦合到控制交换机104的端口108的多个PE 120。PE 120中的每个具有与PE 120-1相同或相似的结构,并且因此,出于说明性目的,未详细描述所有PE 120。
PE 120-1包括多个端口,包括上游端口124和多个下游端口128。上游端口124直接或经由一个或多个其他PE 120耦合到控制交换机104的端口108。换言之,上游端口124用于直接通信地耦合到i)控制交换机104的端口108,或ii)设置在PE 120与控制交换机104之间的另一PE(例如,PE 120-4)的下游端口。尽管在图1A中仅示出了一个上游端口124,但是在其他实施例中,PE 120-1包括多个上游端口124。例如,根据一个实施例,不同的上游端口124分别耦合到网络交换系统100中的不同网络设备(例如,第一上行链路端口124耦合到控制交换机104,并且第二上行链路端口124耦合到另一PE120的下行链路端口;或者第一上行链路端口124耦合到第一其他PE120的下行链路端口,并且第二上行链路端口124耦合到第二其他PE120的下行链路端口;等等)。作为另一示例,根据一个实施例,多个上游端口124分别耦合到控制交换机104的不同端口108。根据一些实施例,多个上游端口124可以被组织为链路聚合组(LAG)(例如,上游LAG)或主干(例如,上游主干)。例如,当PE 120-1决定将分组转发给上游LAG或主干时,可以基于负载平衡来选择上游LAG或主干中的上游端口124中的一个特定上游端口。
下游端口128用于通信地耦合到i)与网络交换系统100外部的设备接口的网络链路,或ii)另一PE的上游端口124。例如,在图1A的示例中,PE 120-1的所有下游端口128耦合到与网络交换系统100外部的设备接口的网络链路。另一方面,PE 120-4的两个下游端口耦合到PE 120-1的上游端口124和PE 120-2的上游端口。
耦合到与网络交换系统100外部的设备接口的网络链路的下游端口128在本文中有时称为“面向外部的端口”,而耦合到其他PE的上游端口的下游端口128在本文中有时称为“级联端口”。
其上行链路端口直接耦合到第二PE的下行链路端口或者其上行链路端口经由一个或多个第三PE间接耦合到第二PE的下行链路端口的第一PE在本文中称为在第二PE的“下游”。类似地,其下行链路端口直接耦合到第二PE的上行链路端口或者其下行链路端口经由一个或多个第三PE间接耦合到第二PE的上行链路端口的第一PE在本文中称为在第二PE的“上游”。
再次参考控制交换机104,控制交换机104包括具有完全功能的分组处理器116,分组处理器116处理经由端口108进入控制交换机104的分组,包括做出转发决策(即,用于经由端口108的出口)。由分组处理器116执行的其他功能包括以下中的一项或多项:确定分组是否应该被捕获或镜像到另一处理器(未示出)以进行进一步分析,确定分组是否应该被丢弃、测量、监控等等。下面将更详细地描述分组处理器116。
如图1A所示,控制交换机104和PE 120以层级布置,其中控制交换机104位于层级的顶部,并且PE 120-1、PE 120-2和PE 120-3在层级的底部。PE 120-4和PE 120-5通常位于层级的中间,位于顶部的控制交换机104与底部的PE 120-1、PE 120-2和PE 120-3之间。
沿着层级向上行进的分组(例如,从底部朝向顶部或者在控制交换机104的方向上)有时称为“上游分组”。例如,在PE 120的下游端口128处接收的分组、从PE 120的上游端口124传输的分组、或在控制交换机104的端口108处接收的分组有时称为“上游分组”。通常,上游分组是网络交换系统100尚未对其做出转发决策的分组。
沿着层级向下行进的分组(例如,从顶部朝向底部或者在远离控制交换机104的方向上)有时称为“下游分组”。例如,从控制交换机104的端口108传输的分组、在PE 120的上游端口124处接收的分组、或从PE 120的下游端口128传输的分组有时称为“下游分组”。通常,下游分组是网络交换系统100对其已经做出转发决策的分组。
在一个实施例中,控制交换机104的分组处理器116和/或PE 120的分组处理器132使用管线架构。例如,根据一个实施例,分组处理器116包括完全功能分组处理管线140,而分组处理器132包括减少功能分组处理管线144。然而,在其他实施例中,控制交换机104的分组处理器116和/或PE 120的分组处理器132另外地或备选地使用并行处理架构,其中多个处理器执行机器可读指令(存储在耦合到多个处理器的一个或多个存储器设备中)以并行处理多个分组。
分组处理器116的管线140包括串联耦合在一起的多个管线单元。类似地,分组处理器132的管线144包括串联耦合在一起的多个管线单元。然而,根据一个实施例,管线144中的管线单元的数目小于管线140中的管线单元的数目,使得管线144与管线140相比不那么复杂并且因此制造成本较低。根据一个实施例,管线144与管线140相比能够执行较少数目的分组处理功能。下面参考图1B和1C更详细地描述管线140和144。
图1B是根据一个实施例的控制交换机104的示例管线140的图。如上所述,管线140包括串联耦合在一起的多个管线单元。通常,管线140的每个单元可选地处理与分组相对应的分组描述符,并且然后将分组描述符传递给管线140中的下一单元。在一个实施例中,分组描述符包括来自分组的一些信息,诸如分组的一些或所有报头信息。在一些实施例中,分组描述符还包括其他信息,诸如分组存储在耦合到分组处理器116的存储器中的位置的指示符。管线140中的每个单元可以处理或不处理特定分组描述符。例如,在某些情况下,单元简单地将分组描述符传递到管线140中的下一单元。
在一些实施例中,管线140包括图1B中未示出的单元,并且出于简洁的目的,不讨论这样的单元。
隧道终止引擎150执行与使用隧道协议传输的分组相关联的隧道终止功能。在一个实施例中,隧道终止引擎150包括或耦合到查找表,并且隧道终止引擎150使用正在被处理的分组的报头的字段在查找表中执行查找,以确定应该对分组执行什么处理动作。例如,对于使用隧道协议传输的分组,隧道终止引擎150从分组中移除隧道协议报头字段(或者修改分组描述符以指令下游管线单元从分组中移除隧道协议报头字段)。
入口策略分类引擎154耦合到隧道终止引擎150。入口策略分类引擎154通常执行流分类。流对应于相关的分组序列,并且可以以各种不同的合适方式来定义。流的一个示例由MAC报头中的媒体访问控制协议(MAC)源地址或特定MAC目的地地址定义。换言之,在一个示例中,具有特定MAC源地址的所有分组对应于特定流。流的另一示例由MAC源地址/目的地地址对定义。换言之,在一个示例中,具有特定MAC源地址和MAC目的地地址两者的所有分组对应于特定流。另外,在一些实施例中,可以组合来自不同协议层的字段以定义流。
例如,在一个实施例中,入口策略分类引擎154将流标识符(ID)附接到分组描述符或以其他方式与分组描述符相关联以指示分组所属的流。
在一个实施例中,入口策略分类引擎154包括或耦合到三元内容可寻址存储器(TCAM)或其他合适的存储器。入口策略分类引擎154通常使用正在处理的分组的报头的字段和其他信息(诸如源端口)作为TCAM的密钥。TCAM中的条目指示特定规则或要执行的一个或多个动作的集合(例如,关于流量测量、VLAN分配、目标端口分配等)。在一些场景中,要执行的至少一些动作将由入口策略分类引擎154下游的处理单元执行。因此,在一些场景中,入口策略分类引擎154向分组描述符分配属性以向下游处理单元指示将要如何处理分组。
在其他实施例中,入口策略分类引擎154不使用TCAM。例如,在其他实施例中利用散列技术或用于分类多场参数的任何其他合适技术。因此,在一些实施例中,省略入口策略分类引擎154的TCAM。
根据一个实施例,层2(L2)桥引擎158耦合到入口策略分类引擎154。L2桥引擎158包括或耦合到转发数据库162,转发数据库162包括MAC目的地地址和具有MAC目的地地址的分组应当被转发到的对应目标端口(例如,控制交换机的端口108和/或PE的面向外部的端口128)的指示。在一个实施例中,转发数据库包括MAC目的地地址和对应目标端口(例如,端口108/面向外部的端口128)的指示的表。在一个实施例中,转发数据库更一般地包括MAC源地址和MAC目的地地址两者,并且提供MAC地址到端口的绑定和可选的其他参数。在一些实施例中并且在至少一些场景中,L2桥引擎158执行MAC源地址查找和MAC目的地地址查找。
在一个实施例中,L2桥引擎158通常使用L2信息(例如,MAC地址)来确定分组应该被转发到哪个或哪些端口(例如,端口108/面向外部的端口128)。在某些情况下,通过检查分组的MAC目的地地址(DA)并且使用转发数据库162确定MAC DA对应于哪个端口来确定是否应该转发分组以及分组应该被转发的位置。而且,在其他实施例和/或实例中也使用其他信息。例如,在一些实施例和/或实例中利用VLAN信息。例如,在一些实施例中,L2桥引擎158能够使用VLAN信息来确定用于层2多播或广播分组的目标端口。
在一些实施例中,L2桥引擎158还保持转发数据库162。例如,在一个实施例中,L2桥引擎158通过记录与进入分组相对应的端口并且将端口与分组的MAC源地址(SA)相关联来获知与进入分组的MAC SA相对应的端口(例如,面向外部的端口128)。因此,当L2桥引擎158稍后处理具有等于转发数据库162中的特定MAC地址的MAC DA的分组时,转发数据库162中的条目指示分组应该被转发到的端口(例如,面向外部的端口128)。根据一个实施例,L2桥引擎158获知连接到交换系统100中的所有PE 120的面向外部的端口128的外部网络设备(例如,在交换系统100外部)的MAC地址,并且因此转发数据库162足够大以整体上适应交换系统100的MAC地址/端口关联。
通常,转发数据库162将用于做出转发决策的若干变量相关联。转发数据库162包括例如基于VLAN、端口和MAC地址的条目;例如,基于MAC地址和VLAN的查找操作在桥接操作中很有用。在一些实施例中,转发数据库162包括基于虚拟端口的条目,其中虚拟端口的数目大于控制交换机中的物理端口的数目。在一些实施例中,每个虚拟端口对应于相应的物理端口,并且管线140被配置为将虚拟端口映射到物理端口。
在一些实施例和/或场景中,因特网协议(IP)路由器引擎166耦合到L2桥引擎158,并且IP路由器引擎166基于某些分组的IP地址执行路由。IP路由器引擎166包括或耦合到IP路由信息数据库(未示出),该IP路由信息数据库包括与IP分组应该被转发的位置相对应的信息。IP路由器引擎166通常确定所接收的IP分组应该被路由到的位置,其包括确定分组应该被转发到的目标端口。确定所接收的IP分组应该被路由到的位置包括检查分组的IP目的地地址和存储在IP路由信息数据库中的路由信息。根据一个实施例,IP路由器引擎166还保持IP路由信息数据库。
在一些实施例和/或场景中,多协议标签交换(MPLS)路由器引擎170耦合到IP路由器引擎166,并且MPLS路由器引擎170基于某些分组的MPLS报头信息来执行路由。MPLS路由器引擎170包括或耦合到MPLS路由信息数据库(未示出),该MPLS路由信息数据库包括与MPLS分组应该被转发的位置相对应的信息。MPLS路由器引擎170通常确定所接收的MPLS分组应该被路由到的位置,其包括确定MPLS分组应该被转发到的目标端口。确定所接收的MPLS分组应该被路由到的位置包括检查分组中的MPLS报头信息和存储在MPLS路由信息数据库中的路由信息。根据一个实施例,MPLS路由器引擎170还保持MPLS路由信息数据库。
入口策略器引擎174耦合到MPLS路由器引擎170。根据一个实施例,入口策略器引擎174通常执行速率限制,进行流量业务测量,并且存储不同流的流量测量信息。在一些实施例中,入口策略器引擎174针对不同的流采取不同的动作。在一个实施例中,入口策略器引擎174利用来自入口策略分类引擎154的流分类信息来确定应该采取什么动作。根据一个实施例,入口策略器引擎174包括用于进行流量业务测量的多个计数器。
报头改变单元176耦合到入口策略器引擎174。在一些场景中,有必要在传输分组之前修改分组的报头字段(例如,以下中的一项或多项:移除隧道报头、添加隧道报头、更改下一跳IP地址、更改VLAN标识符、添加标签、修改校验和字段、修改生存时间(TTL)字段、修改跳限制字段,等等)。
出口策略分类引擎178耦合到报头改变单元176。出口策略分类引擎178通常执行流分类。当分组属于所识别的流时,出口策略分类引擎178将分组与流相关联。例如,在一个实施例中,出口策略分类引擎178将流ID附接到分组描述符以(例如,向管线140的其他单元或向一个或多个PE)指示分组所属的流。
出口策略器引擎180耦合到出口策略分类引擎178。在一个实施例中,出口策略器引擎180通常执行速率限制并且进行流量业务测量。
传输队列管理器182耦合到出口策略器引擎180。例如,传输队列管理器182通常对与不同类别的流和/或不同物理端口相对应的多个队列中的分组描述符进行排队。
图1C是根据一个实施例的PE 120-1的示例减少功能管线144的图。减少功能管线144的结构类似于图1B的管线140,但是比管线140更短并且提供更少的功能。因此,根据一些实施例,与管线140相比,管线144明显更便宜,和/或可能需要更少的功率。
802.1BR转发引擎188根据IEEE 802.1BR标准执行与分组转发相对应的功能。例如,802.1BR转发引擎188分析由另一PE或控制交换机104添加到进入分组的标签(有时称为E标签)。对于尚未包括E标签的进入分组,802.1BR转发引擎188向分组添加E标签或者在与分组相对应的分组描述符中指示应该由随后管线单元(例如,报头改变引擎)向分组添加E标签。
通常,E标签包括可以由控制交换机104和/或PE 120使用以通过网络交换系统100转发分组的信息。在一个实施例中,E标签由源PE 120包括在分组的报头中或者附加到分组的报头,并且在分组出口到网络交换系统100之前或当分组出口到网络交换系统100时,由目标PE 120从分组中移除。在一个实施例中,E标签包括以下中的一项或多项的指示:i)首先接收分组的源PE 120,ii)分组将被转发到的目标PE 120,iii)首先接收分组的源面向外部的端口128,iv)将从网络交换系统100出口分组的目标PE 120的目标面向外部的端口128,等等。在其他实施例中,E标签另外地或备选地包括帮助通过网络交换系统100转发分组的其他合适的信息。
802.1BR转发引擎188包括或耦合到包括将目标端口标识信息(例如,在分组的E标签中)与PE 120-1的端口相关联的信息的表(未示出)。例如,根据一个实施例,如果另一PE120或控制桥104已经对进入分组做出转发决策并且已经在分组的E标签中包括目标端口的指示符(例如,ID),则802.1BR转发引擎188使用指示符在表中查找分组要被转发到的PE120-1的本地端口的指示符。
L2桥引擎190耦合到802.1BR转发引擎188。在一个实施例中,L2桥引擎190的结构类似于控制交换机104的L2桥引擎158,但是提供减少的功能,并且因此与L2桥引擎158相比,制造更便宜,和/或消耗更少的功率。
在一些实施例中,L2桥引擎190还保持转发数据库192。转发数据库192耦合到L2桥引擎,并且包括MAC目的地地址和对应目标端口的指示,具有MAC目的地地址的分组应该被转发到对应目标端口。在一个实施例中,L2桥引擎190仅获知经由PE 120的下游端口128接收的进入分组的源MAC地址/端口关联,即,L2桥引擎190不获知经由上游端口124接收的进入分组的源MAC地址/端口关联。因此,根据一个实施例,转发数据库192仅包含直接或间接地经由下游端口128通信地耦合到PE 120-1的外部网络设备(例如,在交换系统100外部)的MAC地址/端口关联,并且不包含仅经由上游端口124间接地通信地耦合到PE 120-1的外部设备的MAC地址/端口关联。参考图1A,作为说明性示例,PE 120-1的转发数据库192包含直接或间接地经由PE 120-1的下游端口128通信地耦合到PE 120-1的外部设备的MAC地址/端口关联,但不包含通信地耦合到PE 120-2、PE120-3、PE 120-4和PE 120-5的下游端口的其他外部设备的MAC地址/端口关联。根据一个实施例,PE 120-1的转发数据库192不包含通信地耦合到PE 120-2、PE 120-3、PE 120-4和PE 120-5的下游端口的其他外部设备的MAC地址/端口关联,因为PE 120-1仅经由上游端口124通信地耦合到PE 120-2、PE 120-3、PE120-4和PE 120-5。
通常,转发数据库192将用于做出转发决策的若干变量相关联。根据各种实施例,转发数据库192包括基于VLAN、端口和MAC地址中的一个或多个的条目。在一些实施例中,转发数据库192包括基于虚拟端口的条目,其中虚拟端口的数目大于PE中的物理端口的数目。在一些实施例中,每个虚拟端口对应于相应的物理端口,并且管线144被配置为将虚拟端口映射到物理端口。
因为转发数据库192仅包含直接或间接地经由下游端口128通信地耦合到PE 120-1的外部网络设备的MAC地址/端口关联,并且不包含仅经由上游端口124通信地耦合到PE120-1的其他外部设备的MAC地址/端口关联,所以转发数据库192明显小于控制交换机104的转发数据库162。例如,作为说明性实施例,转发数据库162包括大小为128千字节(或128千字)的存储器设备,而转发数据库192包括大小为4千字节(或4千字)的存储器设备。在其他实施例中,转发数据库162、192的存储器设备具有不同于128千字节(或128千字)和4千字节(或4千字)的合适大小。更一般地,根据一个实施例,转发数据库162包括大小比转发数据库192的存储器设备的大小大一个或多个数量级的存储器设备。根据一个实施例,因为PE120的转发数据库192明显小于控制交换机104的转发数据库162,所以PE 120的转发数据库192的成本显著小于控制交换机104的转发数据库162的成本。
报头改变单元194耦合到L2桥引擎190。在一个实施例中,报头改变单元194的结构类似于控制交换机104的报头改变单元176,但是提供减少的功能,并且因此比报头改变单元176制造更便宜。例如,根据一个实施例,报头改变单元194不能修改控制交换机104的报头改变单元176能够修改的一些报头字段。然而,在另一实施例中,报头改变单元194具有与控制交换机104的报头改变单元176相同或相似的结构,并且提供与报头改变单元176相同的功能。
传输队列管理器196耦合到报头改变单元194。例如,传输队列管理器196通常对与不同类别的流和/或不同物理端口相对应的多个队列中的分组描述符进行排队。在一个实施例中,传输队列管理器196具有与传输队列管理器182相同或相似的结构。
图1B和1C的管线140和144仅是说明性示例。在其他实施例中,合适的分组处理管线包括附加的和/或备选的管线引擎/单元。例如,在图1B和1C所示的引擎/单元之间包括附加的管线引擎/单元,图1B和1C所示的一个或多个引擎/单元被省略,和/或图1B和1C所示的两个或更多个引擎/单元的顺序被更改。例如,在一些实施例中,报头改变引擎176(图1B)被包括在Tx队列管理器182与出口策略器引擎180之间。
图2A是根据一个实施例的图1A的网络交换系统100的一部分的图,示出了通过网络交换系统100的第一分组的示例路径204。第一分组包括MAC报头,MAC报头具有与外部网络设备A相对应的MAC SA(MAC-A)和与外部网络设备B相对应的MAC DA(MAC-B)。
在PE 120-1的下游端口128-1处从外部网络设备A接收第一分组,并且分组处理器132向第一分组添加E标签。在一个实施例中,分组处理器132在E标签中记录端口128-1的标识符以指示经由下游端口128-1接收到第一分组。
PE 120-1的转发数据库192不包括与MAC-B(即,MAC DA)相对应的条目,因此分组处理器132(例如,L2桥引擎190)将第一分组转发给上游端口124。另外,分组处理器132(例如,L2桥引擎190)在转发数据库192中记录端口128-1与MAC-A的关联(假设端口128-1与MAC-A之间的关联尚未存储在转发数据库192中)。换言之,分组处理器132(例如,L2桥引擎190)获知端口128-1与MAC-A的关联。
然后,在PE 120-4的下游端口208-1处接收第一分组。PE 120-4的转发数据库也不包括与MAC-B相对应的条目,因此PE 120-4的分组处理器(例如,L2桥引擎)将第一分组转发给PE 120-4的上游端口212。另外,PE 120-4的分组处理器(例如,L2桥引擎190)在转发数据库中记录端口208-1与MAC-A的关联(假设端口208-1与MAC-A之间的关联尚未存储在转发数据库中)。换言之,PE 120-4的分组处理器(例如,L2桥引擎)获知端口208-1与MAC-A的关联。另外,PE 120-4在转发数据库中连同端口208-1与MAC-A的关联一起记录与PE 120-1的下游端口128-1的关联,因为第一分组的E标签指示第一分组由网络交换系统100在PE 120-1的下游端口128-1处接收。
然后,在控制交换机104的端口108-1处接收第一分组。控制交换机104的转发数据库162包括与MAC-B相对应的条目,并且控制交换机104的分组处理器116(例如,L2桥引擎158)基于转发数据库162中与MAC-B相对应的条目来确定第一分组应该经由PE 120-2的下游端口216-1被传输。另外,控制交换机104的分组处理器116(例如,L2桥引擎158)修改第一分组的E标签以指示第一分组应该经由PE 120-2的下游端口216-1被传输。此外,分组处理器116(例如,L2桥引擎158)确定第一分组应该被转发给控制交换机104的端口108-1,从而将第一分组转发给端口108-1。
然后,在PE 120-4的上游端口212处接收第一分组。PE 120-4的分组处理器检查第一分组的E标签,并且确定该分组将要经由PE120-2的下游端口216-1被传输。此外,PE 120-4的分组处理器确定第一分组应该被转发给PE 120-4的端口208-2,从而将第一分组转发给端口208-2。
然后,在PE 120-2的上游端口220处接收第一分组。PE 120-2的分组处理器检查第一分组的E标签,并且确定该分组将要经由PE120-2的下游端口216-1被传输。PE 120-2的分组处理器从第一分组中移除E标签,并且将第一分组转发给下游端口216-1,然后下行端口216-1将第一分组传输给外部设备B。
然而,因为经由上游端口220接收到第一分组,所以PE 120-2的分组处理器(例如,L2桥引擎)不获知上游端口220与MAC-A之间的关联。换言之,PE 120-2的分组处理器不在转发数据库中记录上游端口220与MAC-A的关联。
图2B是根据一个实施例的图2A的网络交换系统100的一部分的图,示出了通过网络交换系统100的第二分组的示例路径230。在第一分组之后,由网络交换系统100接收第二分组。第二分组包括MAC报头,MAC报头具有与外部网络设备C相对应的MAC SA(MAC-C)和与外部网络设备A相对应的MAC DA(MAC-A)。
在PE 120-1的下游端口128-3处从外部网络设备C接收第二分组,并且分组处理器132向第一分组添加E标签。在一个实施例中,分组处理器132在E标签中记录端口128-3的标识符以指示经由下游端口128-3接收到第一分组。
因为MAC-A(即,MAC DA)与下游端口128-1之间的关联与第一分组的处理有关(如结合图2A所讨论的),所以PE 120-1的转发数据库192包括与MAC-A相对应的条目,该条目指示第二分组应该被转发给下游端口128-1。因此,分组处理器132(例如,L2桥引擎190)基于与MAC-A相对应的转发数据库192中的条目来确定第二分组应该被转发给下游端口128-1。另外,分组处理器132(例如,L2桥引擎190)在转发数据库192中记录端口128-3与MAC-C的关联(假设端口128-3与MAC-C之间的关联尚未存储在转发数据库192中)。换言之,分组处理器132(例如,L2桥引擎190)获知端口128-3与MAC-C的关联。
分组处理器132(未在图2B中看到但是布置在PE 120-1中)从第二分组中移除E标签,并且然后下游端口128-1将第二分组传输给外部设备A。另一方面,在另一实施例中,因为分组处理器132(例如,L2桥引擎190)能够基于转发数据库192中与MAC-A相对应的条目来确定第二分组应该被转发给PE 120-1本地的下游端口并且不需要被转发给上游端口220,所以分组处理器132从不将E标签添加到第二分组,并且因此在经由下游端口128-1传输第二分组之前不需要移除E标签。
从图2B中可以看出,因为PE 120-1能够在本地确定第二分组将要经由PE 120-1的另一下游端口被传输,所以第二分组不需要如在图2A的路径204中那样向上转发给控制交换机104并且向下返回到PE120-1,这在传统的网络交换系统中是必需的。因此,与将分组向上转发给控制交换机104并且向下返回到PE 120的情况相比,减少了网络交换系统100内的第二分组的延迟并且减少了网络交换系统100内的业务。
图2C是根据一个实施例的图2A的网络交换系统100的一部分的图,示出了通过网络交换系统100的第三分组的示例路径240。在第一分组之后,由网络交换系统100接收第三分组。第三分组包括MAC报头,MAC报头具有与外部网络设备D相对应的MAC SA(MAC-D)和与外部网络设备A相对应的MAC DA(MAC-A)。
在PE 120-2的下游端口216-2处接收第三分组,并且PE 120-2的分组处理器向第三分组添加E标签。在一个实施例中,分组处理器132在E标签中记录端口216-2和PE 120-2的标识符以指示经由PE120-2的下游端口216-2接收到第三分组。
PE 120-2的转发数据库不包括与MAC-A(即,MAC DA)相对应的条目,因此分组处理器(例如,L2桥引擎)将第三分组转发给PE 120-2的上游端口220。另外,分组处理器(例如,L2桥引擎)在转发数据库192中记录端口216-2与MAC-D的关联(假设端口216-2与MAC-D之间的关联尚未存储在转发数据库192中)。换言之,因为来自MAC-D的分组到达下游端口216-2,所以如果需要,分组处理器(例如,L2桥引擎)获知端口216-2与MAC-D的关联。
然后,在PE 120-4的下游端口208-2处接收第三分组。因为MAC-A(即,MAC DA)与下游端口208-1之间的关联是与第一分组的处理相关联地获知的(如结合图2A所讨论的),所以PE 120-1的转发数据库包括与MAC-A相对应的条目,该条目指示第二分组应该被转发给下游端口128-1。因此,分组处理器132(例如,L2桥引擎190)基于转发数据库192中与MAC-A相对应的条目来确定第二分组应该被转发给下游端口128-1。
另外,PE 120-4的转发数据库中与MAC-A相对应的条目还指示第三分组的最终目标端口是PE 120-1的下游端口128-1。因此,因为目的地是下游端口,所以PE 120-4的分组处理器修改第三分组的E标签以指示第三分组的最终目标端口是PE 120-1的下游端口128-1。
此外,PE 120-4的分组处理器(例如,L2桥引擎)在转发数据库中记录端口208-2与MAC-D的关联(假设端口208-2与MAC-D之间的关联尚未存储在转发数据库中)。换言之,PE120-4的分组处理器(例如,L2桥引擎)获知端口208-2与MAC-D的关联。另外,PE 120-4的分组处理器在转发数据库中连同端口208-2与MAC-D的关联一起记录与PE 120-2的下游端口216-2的关联,因为第三分组的E标签指示第三分组由网络交换系统100在PE 120-2的下游端口216-3处接收。
然后,PE 120-4的分组处理器将第三分组转发给下游端口208-1。
然后,在PE 120-1的上游端口124处接收第三分组。PE 120-1的分组处理器132检查第三分组的E标签,并且确定第三分组将要经由下游端口128-1被传输。分组处理器132从第三分组中移除E标签,并且将第三分组转发给下游端口128-1,然后下行端口128-1将第三分组传输给外部设备A。
如图2C所示,因为PE 120-4能够在本地确定第三分组将要经由PE 120-4的另一下游端口被传输,所以第三分组不需要如在图2A的路径204中那样向上转发给控制交换机104并且向下返回到PE120-4。因此,与将分组向上转发给控制交换机104并且向下返回到PE120的情况相比,减少了网络交换系统100内的第三分组的延迟并且减少了网络交换系统100内的业务。
图3是根据一个实施例的用于在具有下游端口和上游端口的网络设备(诸如端口扩展器(PE))中转发分组的示例方法300的流程图。根据各种实施例,方法300至少部分地由分组处理器132(图1)、管线144和/或L2桥引擎190实现,并且参考图1A和1C讨论方法300以用于说明目的。然而,在其他实施例中,方法300由另一合适的分组处理器设备实现,诸如具有不是管线的管线单元的L2桥引擎的分组处理器设备。
在框304处,分组处理器132确定是否经由PE的下游端口接收到分组。例如,与分组相对应的描述符包括指示在其上接收到分组的PE的端口的信息,并且框304包括分析分组描述符中的信息以确定是否经由PE的下游端口接收到分组。
如果分组处理器132在框304处确定经由PE的下游端口接收到分组,则流程进行到框308。在框308处,分组处理器132确定分组在由PE接收到时是否包括E标签。如果分组处理器132确定分组在由PE接收到时不包括E标签,则流程进行到框312。在框312处,分组处理器为分组生成E标签。在一个实施例中,框312包括在E标签中记录对以下的指示:i)接收到分组的PE的端口,以及ii)接收到分组的PE。在一个实施例中,对i)接收到分组的PE的端口以及ii)接收到分组的PE的指示包括单个指示符,诸如在网络交换系统100中的所有端口中唯一地标识PE的端口的全局端口标识符(ID)、或者某种其他合适的单个指示符。在另一实施例中,对i)接收到分组的PE的端口以及ii)接收到分组的PE的指示包括两个单独的指示符,诸如:从网络交换系统100中的多个PE中标识PE的设备ID,以及ii)本地端口ID,其标识PE的端口并且不能从网络交换系统100中的所有端口中唯一地标识来自PE的端口。
在框316处,分组处理器132将E标签附接到分组。然后,流程进行到框320。
另一方面,如果分组处理器132确定分组在被PE接收时确实包括E标签,则流程也前进到框320。
在框320处,分组处理器132确定与分组的MAC目的地地址(DA)相对应的转发信息是否被包括在转发数据库192中。例如,L2桥引擎190利用分组的MAC DA在转发数据库192中执行查找。如果分组处理器132(例如,L2桥引擎190)确定转发数据库192包括与分组的MACDA相对应的转发信息,则流程前进到框324。在其他实施例中,框320另外或备选地包括确定与分组中的其他报头信息相对应的转发信息(诸如VLAN地址)是否被包括在转发数据库192中。
在框324处,分组处理器132(例如,L2桥引擎190或管线144的另一组件)修改分组的E标签以包括根据在转发数据库192中与分组的MAC DA相对应的条目而确定的分组的目标端口的指示符,其中目标端口可以是PE的本地下游端口,或者是直接或间接地经由PE的下游端口通信地耦合到PE的另一PE的下游端口。例如,转发数据库192包括与分组的MAC DA相对应的条目,该条目包括目标端口的指示(例如,全局端口ID、设备ID/本地端口ID元组等),并且分组处理器132(例如,L2桥引擎190或管线144的另一组件)修改分组的E标签以包括从转发数据库192中的条目中获取的目标端口的指示。
在框328处,分组处理器132(例如,L2桥引擎190和/或管线144的另一组件)将分组转发给由转发数据库192中与分组的MAC DA相对应的条目指示的PE的本地下游端口。例如,转发数据库192中与分组的MAC DA相对应的条目包括本地下游端口的指示(本地端口ID),并且分组处理器132(例如,L2桥引擎190和/或管线144的另一组件)使用从转发数据库192中的条目中获取的本地下游端口的指示来确定分组将要被转发到的本地下游端口。
另一方面,如果分组处理器132(例如,L2桥引擎190)在框320处确定转发数据库192不包括与分组的MAC DA相对应的转发信息,则流程进行到框332。在框332处,分组处理器132(例如,L2桥引擎190或管线144的另一组件)确定分组将被转发给PE的上游端口。因此,在框336处,分组处理器132(例如,L2桥引擎190和/或管线144的另一组件)将分组转发给PE的上游端口。
如果分组处理器132在框304处确定未经由PE的下游端口接收到分组(例如,分组处理器132确定经由PE的上游端口接收到分组),则流程继续进行到框340。在框340处,分组处理器132分析分组的E标签以确定分组将要被转发到的本地下游端口。例如,分组处理器132保持表,该表指示以下各项之间的关联:i)直接或间接耦合到PE的下游端口的其他PE的下游端口,以及ii)PE的本地下游端口,并且分组处理器132使用E标签中的目标端口的指示和表中的条目来确定分组将要被转发到的本地下游。在一个实施例中,如果由E标签指示的目标端口是PE的本地下游端口,则分组处理器132不需要检查该表以确定本地下游端口。
在框344处,分组处理器132确定分组的目标端口(例如,在E标签中指示的)是否是PE的本地下游端口。如果分组处理器132确定分组的目标端口(例如,在E标签中指示的)是PE的本地下游端口,则流程前进到框348,在框348处,分组处理器132从分组中移除E标签。在框352处,分组处理器132将分组转发给在框340处确定的本地下游端口。换言之,如果分组处理器132在框344处确定分组的目标端口(例如,在E标签中指示的)是PE的本地下游端口,则从分组中移除E标签(框348),并且由PE在没有E标签的情况下传输分组。
另一方面,如果分组处理器132在框344处确定分组的目标端口(例如,在E标签中指示的)不是PE的本地下游端口,则流程跳过框348并且前进到框352。换言之,如果分组处理器132在框344处确定分组的目标端口(例如,在E标签中指示的)不是PE的本地下游端口,则E标签没有从分组中移除,并且分组由PE带有E标签传输。
流程300仅是说明性实施例。在其他实施例中,更改框的顺序,包括一个或多个附加框,和/或省略一个或多个框。
尽管在确定与MAC地址相对应的转发信息是否在转发数据库中的上下文中描述了图3,但是在其他实施例中,类似的方法包括确定与其他类型的网络地址信息相对应的转发信息是否在转发数据库中,诸如VLAN标识符、IP地址等。
图4是根据一个实施例的用于更新具有下游端口和上游端口的网络设备(诸如端口扩展器(PE))中的转发数据库的示例方法400的流程图。根据各种实施例,方法400至少部分地由分组处理器132(图1)、管线144和/或L2桥引擎190实现,并且参考图1A和1C讨论方法400以用于说明目的。然而,在其他实施例中,方法400由另一合适的分组处理器设备实现,诸如具有不是管线的管线单元的L2桥引擎的分组处理器设备。
在框404处,分组处理器132确定是否经由PE的下游端口接收到分组。例如,与分组相对应的描述符包括指示在其上接收到分组的PE的端口的信息,并且框404包括分析分组描述符中的信息以确定是否经由PE的下游端口接收到分组。
如果分组处理器132在框404处确定没有经由PE的下游端口接收到分组(例如,分组处理器132确定经由PE的下游端口接收到分组),则流程结束,并且响应于接收到分组而不更新转发数据库。换言之,如果分组处理器132确定没有经由PE的下游端口接收到分组(例如,分组处理器132确定经由PE的下游端口接收到分组),则分组处理器不获知分组的MAC SA。
另一方面,如果分组处理器132在框404处确定经由PE的下游端口接收到分组,则流程进行到框408。在框408处,分组处理器132确定与分组的MAC SA相对应的转发信息是否被包括在转发数据库192中。例如,L2网桥引擎190利用分组的MAC SA在转发数据库192中执行查找。如果分组处理器132(例如,L2桥引擎190)确定转发数据库192包括与分组的MAC SA相对应的转发信息,则流程结束。
另一方面,如果分组处理器132(例如,L2桥引擎190)确定转发数据库192包括与分组的MAC SA相对应的转发信息,则流程前进到框412。在框412处,分组处理器132(例如,L2桥引擎190或管线144的另一组件)向转发数据库192添加条目,其中该条目将MAC SA与接收到分组的本地下游端口相关联。例如,与分组相对应的描述符包括指示接收到分组的PE的本地下游端口(例如,端口ID)的信息,并且框412包括使用分组描述符中指示接收到分组的PE的本地下游端口(例如,端口ID)的信息来生成转发数据库192的条目。
在一个实施例中,如果分组是从另一PE接收的,则框412包括生成条目以包括将MAC SA与网络交换系统100首先接收到分组的源端口相关联的信息(例如,接收到分组的另一PE和另一PE的端口的指示)。例如,根据一个实施例,如果在PE处接收到分组时分组包括E标签,则分组的E标签包括网络交换系统100首先接收到分组的另一PE的源端口的指示(例如,全局端口ID、设备ID/本地端口ID元组等)。因此,框412包括使用E标签中指示网络交换系统100首先接收到分组的另一PE和另一PE的下游端口的信息来生成转发数据库192的条目。
在其他实施例中,框408另外地或备选地包括确定与分组中的其他报头信息相对应的信息(诸如VLAN标识符)是否被包括在转发数据库192中。类似地,根据其他实施例,框412另外地或备选地包括在转发数据库192中存储端口与其他类型的网络地址信息(诸如VLAN标识符)之间的关联信息。
流程400仅是说明性实施例。在其他实施例中,更改框的顺序,包括一个或多个附加框,和/或省略一个或多个框。
尽管在转发数据库中存储MAC地址与端口之间的关联的上下文中描述了图4,但是在其他实施例中,类似的方法包括存储其他类型的网络地址信息与端口之间的关联,诸如VLAN、IP地址等。
在一个实施例中,分组处理器设备被配置为执行图3的方法和图4的方法两者。例如,根据说明性方法,图3的框304和图4的框404被组合并且实现为包括方法300和方法400的其他框的单个方法的单个框。
在一个实施例中,一种端口扩展器用于在交换系统中使用,该交换系统包括控制交换机和一个或多个其他端口扩展器。端口扩展器包括:至少一个本地上游端口,直接或经由另一端口扩展器耦合到控制交换机;多个本地下游端口;以及转发引擎,耦合到至少一个本地上游端口和多个本地下游端口,转发引擎包括或耦合到转发数据库,转发数据库被填充有条目,条目指示i)与设备相对应的相应网络地址以及ii)端口扩展器的相应本地下游端口之间的关联,设备a)直接或b)经由端口扩展器下游的一个或多个其他端口扩展器耦合到端口扩展器的本地下游端口,其中转发数据库不包括与对应于如下设备的网络地址相对应的条目,这些设备直接或经由端口扩展器上游的另一端口扩展器耦合到端口扩展器的至少一个本地上游端口。转发引擎被配置为:针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有在转发数据库中的目的地网络地址的第一分组,将第一分组转发给由转发数据库指示的不同的本地下游端口,以及针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有不在转发数据库中的目的地网络地址的第二分组,将第二分组转发给至少一个本地上游端口。
在其他实施例中,端口扩展器包括以下特征中的一个或两个或更多个特征的任何合适组合。
转发数据库由还指示以下之间的关联的条目填充:i)经由端口扩展器下游的一个或多个其他端口扩展器与端口扩展器的下游端口耦合的设备的相应网络地址,以及ii)端口扩展器下游的与设备耦合的一个或多个其他端口扩展器的相应端口;转发引擎是被设置在端口扩展器中的分组处理器的组件;并且分组处理器被配置为,当转发数据库中的条目指示第一分组的目的地网络地址与另一端口扩展器的下游端口相关联时,在与第一分组相对应的标签中包括对以下的指示:i)另一端口扩展器,以及ii)另一端口扩展器的下游端口。
分组处理器被配置为,当转发数据库中的条目指示第一分组的目的地网络地址与另一端口扩展器的下游端口相关联时:在与第一分组相对应的标签中包括标识以下的全局端口标识符:i)另一端口扩展器,以及ii)另一端口扩展器的下游端口。
分组处理器被配置为,当转发数据库中的条目指示第一分组的目的地网络地址与另一端口扩展器的下游端口相关联时:在与第一分组相对应的标签中包括:i)标识另一端口扩展器的设备标识符,以及ii)标识另一端口扩展器的下游端口的本地端口标识符。
分组处理器被配置为,当第一分组在第一分组被端口扩展器接收时不包括标签时以及当转发数据库中的条目指示第一分组的目的地网络地址与另一端口扩展器的下游端口相关联时:在经由转发数据库指示的本地下游端口传输第一分组之前,将标签附接到第一分组。
转发引擎被配置为:基于经由多个本地下游端口被接收的分组的源网络地址来利用网络地址/端口关联信息填充转发数据库;以及不基于经由至少一个本地上游端口被接收的任何分组的源网络地址来利用网络地址/端口关联信息填充转发数据库。
第一分组经由本地下游端口被接收;第一分组包括具有以下各项的指示的标签:i)另一端口扩展器,第一分组初始在另一端口扩展器处被交换系统接收,以及ii)另一端口扩展器的端口,第一分组初始在另一端口扩展器的端口处被交换系统接收;并且转发引擎被配置为:从标签中获取指示,以及在数据库的与第一分组的网络源地址(SA)相关联的条目中存储以下之间的关联的指示:i)网络SA,ii)第一分组经由其被分组扩展器接收的本地下游端口的指示符,以及iii)对a)第一分组初始被交换系统接收的另一端口扩展器以及b)第一分组初始被交换系统接收的另一端口扩展器的端口的指示。
转发数据库被填充有指示i)设备的相应媒体访问控制(MAC)地址与ii)端口扩展器的相应本地下游端口之间的关联的条目,设备a)直接或b)经由端口扩展器下游的一个或多个其他端口扩展器耦合到端口扩展器的本地下游端口,其中转发数据库不包括与如下设备的MAC地址相对应的条目,这些设备直接或经由另一端口扩展器耦合到端口扩展器的至少一个本地上游端口;并且转发引擎被配置为:针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有在转发数据库中的目的地MAC地址的第一分组,将第一分组转发给由转发数据库指示的不同的本地下游端口,以及针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有不在转发数据库中的目的地MAC地址的第二分组,将第二分组转发给至少一个本地上游端口。
转发引擎是被设置在端口扩展器中的第一分组处理器的组件;第一分组处理器包括具有第一数目的管线元件的第一管线;控制交换机包括第二分组处理器,第二分组处理器包括具有第二数目的管线元件的第二管线;并且第一数目的管线元件少于第二数目的管线元件。
在另一实施例中,一种方法在交换系统中的端口扩展器中实现,该交换系统包括控制交换机和一个或多个其他端口扩展器。该方法包括:经由端口扩展器的至少一个本地上游端口接收分组,至少一个上游端口直接或经由中间端口扩展器耦合到控制交换机;经由端口扩展器的多个本地下游端口接收分组;针对经由多个下游端口被接收的分组,搜索转发数据库,转发数据库被填充有条目,条目指示i)与设备相对应的相应网络地址以及ii)端口扩展器的相应本地下游端口之间的关联,设备a)直接或b)经由端口扩展器下游的一个或多个其他端口扩展器耦合到端口扩展器的本地下游端口,其中转发数据库不包括与对应于如下设备的网络地址相对应的条目,这些设备直接或经由端口扩展器上游的另一端口扩展器耦合到端口扩展器的至少一个本地上游端口;针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有在转发数据库中的目的地网络地址的第一分组,将第一分组转发给由转发数据库指示的不同的本地下游端口;以及针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有不在转发数据库中的目的地网络地址的第二分组,将第二分组转发给至少一个本地上游端口。
在其他实施例中,该方法包括以下特征中的一个或两个或更多个特征的任何合适组合。
转发数据库由还指示以下之间的关联的条目填充:i)经由端口扩展器下游的一个或多个其他端口扩展器与端口扩展器的下游端口耦合的设备相对应的相应网络地址,以及ii)端口扩展器下游的与设备耦合的一个或多个其他端口扩展器的相应端口;并且该方法还包括:当转发数据库中的条目指示第一分组的目的地网络地址与另一端口扩展器的下游端口相关联时,在与第一分组相对应的标签中包括对以下的指示:i)另一端口扩展器,以及ii)另一端口扩展器的下游端口。
该方法还包括:当转发数据库中的条目指示第一分组的目的地网络地址与另一端口扩展器的下游端口相关联时:在与第一分组相对应的标签中包括标识以下的全局端口标识符:i)另一端口扩展器,以及ii)另一端口扩展器的下游端口。
该方法还包括:当转发数据库中的条目指示第一分组的目的地网络地址与另一端口扩展器的下游端口相关联时:在与第一分组相对应的标签中包括:i)标识另一端口扩展器的设备标识符,以及ii)标识另一端口扩展器的下游端口的本地端口标识符。
该方法还包括:当第一分组在第一分组被端口扩展器接收时不包括标签时,以及当转发数据库中的条目指示第一分组的目的地网络地址与另一端口扩展器的下游端口相关联时:在经由转发数据库指示的本地下游端口传输第一分组之前,将标签附接到第一分组。
该方法还包括:基于经由多个本地下游端口被接收的分组的源MAC地址来利用网络地址/端口关联信息填充转发数据库;以及不基于经由至少一个本地上游端口被接收的任何分组的源网络地址来利用网络地址/端口关联信息填充转发数据库。
经由多个本地下游端口接收分组包括经由第一本地下游端口接收第一分组;第一分组包括具有对以下的指示的标签:i)另一端口扩展器,第一分组初始在另一端口扩展器处被交换系统接收,以及ii)另一端口扩展器的端口,第一分组初始在另一端口扩展器的端口处被交换系统接收;以及该方法还包括:从标签中获取指示,以及在数据库的与第一分组的网络源地址(SA)相关联的条目中存储以下之间的关联的指示:i)网络SA,ii)第一分组经由其被分组扩展器接收的第一本地下游端口的指示符以及iii)对a)第一分组初始被交换系统接收的另一端口扩展器,以及b)第一分组初始被交换系统接收的另一端口扩展器的端口的指示。
转发数据库被填充有指示i)设备的相应媒体访问控制(MAC)地址以及ii)端口扩展器的相应本地下游端口之间的关联的条目,设备a)直接或b)经由端口扩展器下游的一个或多个其他端口扩展器耦合到端口扩展器的本地下游端口,其中转发数据库不包括与如下设备的MAC地址相对应的条目,这些设备直接或经由另一端口扩展器耦合到端口扩展器的至少一个本地上游端口;并且该方法还包括:针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有在转发数据库中的目的地MAC地址的第一分组,将第一分组转发给由转发数据库指示的不同的本地下游端口,以及针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有不在转发数据库中的目的地MAC地址的第二分组,将第二分组转发给至少一个本地上游端口。
该方法还包括:在被设置在端口扩展器中的第一分组处理器中处理分组,包括执行分组处理功能,分组处理功能从第一分组处理器被配置为执行的第一分组处理功能集合中被选择,其中第一分组处理功能集合包括第一数目的分组处理功能;其中控制交换机包括第二分组处理器,第二分组处理器被配置为执行第二分组处理功能集合,第二分组处理功能集合包括第二数目的分组处理功能;并且第一数目小于第二数目。
在又一实施例中,一种交换系统,包括:控制交换机,包括:多个控制交换机端口,以及第一分组处理器,耦合到控制交换机端口,第一分组处理器包括第一转发引擎,第一转发引擎包括或耦合到第一转发数据库,其中第一转发引擎被配置为将在任何控制交换机端口处被接收的分组转发给任何其他控制交换机端口。该系统还包括:多个端口扩展器,端口扩展器中的至少一些端口扩展器中的每个端口扩展器包括:至少一个本地上游端口,直接或经由另一端口扩展器耦合到控制交换机,多个本地下游端口,以及第二分组处理器,耦合到至少一个本地上游端口和多个本地下游端口,第二分组处理器包括第二转发引擎,第二转发引擎包括或耦合到第二转发数据库。第二转发引擎被配置为将如下分组仅转发给至少一个上游端口,分组i)在下游端口处被接收,并且ii)第二转发数据库针对该分组不包括转发信息。与第一分组处理器相比,第二分组处理器具有减少的功能。
在其他实施例中,交换系统包括以下特征中的一个或两个或更多个特征的任何合适组合。
第一转发数据库被填充有指示以下之间的关联的条目:i)直接或经由一个或多个其他端口扩展器与多个端口扩展器的本地下游端口耦合的设备的相应网络地址,以及ii)相应控制交换机端口;并且端口扩展器中的至少一些端口扩展器中的每个第二转发数据库被填充有指示以下之间的关联的条目:i)直接或经由端口扩展器下游的一个或多个其他端口扩展器与端口扩展器的本地下游端口耦合的设备的相应网络地址,以及ii)端口扩展器的相应本地下游端口,其中第二转发数据库不包括与如下设备的网络地址相对应的条目,这些设备直接或经由端口扩展器上游的另一端口扩展器耦合到端口扩展器的至少一个本地上游端口。
第二转发引擎被配置为:针对i)经由端口扩展器的多个本地下游端口被接收的并且ii)具有在第二转发数据库中的目的地网络地址的分组,将分组转发给由第二转发数据库指示的本地下游端口;以及针对i)经由多个本地下游端口被接收的并且ii)具有不在第二转发数据库中的目的地网络地址的分组,将分组转发给至少一个本地上游端口。
第二转发引擎被配置为:基于经由多个本地下游端口被接收的分组的源网络地址来利用网络地址/端口关联信息填充第二转发数据库;并且不基于经由至少一个本地上游端口被接收的任何分组的源网络地址来利用网络地址/端口关联信息填充转发数据库。
第二转发数据库被填充有指示i)设备的相应媒体访问控制(MAC)地址以及ii)端口扩展器的相应本地下游端口之间的关联的条目,设备a)直接或b)经由端口扩展器下游的一个或多个其他端口扩展器耦合到端口扩展器的本地下游端口,其中第二转发数据库不包括与如下设备的MAC地址相对应的条目,这些设备直接或经由另一端口扩展器耦合到端口扩展器的至少一个本地上游端口;并且第二转发引擎被配置为:针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有在转发数据库中的目的地MAC地址的第一分组,将第一分组转发给由转发数据库指示的不同的本地下游端口,以及针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有不在转发数据库中的目的地MAC地址的第二分组,将第二分组转发给至少一个本地上游端口。
控制交换机的第一分组处理器包括互联网协议(IP)路由器,该IP路由器被配置为基于分组中的IP地址来转发分组;并且分组扩展器中的至少一些分组扩展器中的至少一些第二分组处理器被配置为基于分组中除了IP地址之外的地址来转发分组。
控制交换机的第一分组处理器包括隧道终止引擎,隧道终止引擎被配置为针对在控制交换机端口处被接收的并且已经使用隧道协议被传输的分组,从分组中移除隧道协议报头字段,或者指令第一分组处理器的另一组件从分组中移除隧道协议报头字段;并且分组扩展器中的至少一些分组扩展器中的至少一些第二分组处理器不被配置为从分组中移除隧道协议报头字段。
控制交换机的第一分组处理器被配置为对在控制交换机端口处被接收的分组执行速率限制;并且分组扩展器中的至少一些分组扩展器中的至少一些第二分组处理器不被配置为执行速率限制。
控制交换机的第一分组处理器被配置为将在控制交换机端口处被接收的分组分类为流;以及分组扩展器中的至少一些分组扩展器中的至少一些第二分组处理器不被配置为将在控制交换机端口处被接收的分组分类为流。
在又一实施例中,一种方法在交换系统中实现,该交换系统包括控制交换机和耦合到控制交换机的多个端口扩展器。该方法包括:经由多个端口扩展器的多个本地下游端口接收分组;在被设置在端口扩展器中的至少一些端口扩展器中的至少一些第一分组处理器中的每个第一分组处理器处,执行第一分组处理功能集合,包括:根据控制交换机的转发决策,将从控制交换机的端口被接收的分组引导到端口扩展器的端口,以及针对经由多个下游端口被接收的第一分组,渲染转发决策用以:在所选择的第一分组的目的地地址被包括在端口扩展器的第一分组处理器的转发数据库中的情况下,将所选择的第一分组转发给端口扩展器的其他下游端口,并且在所选择的第二分组的目的地地址不被端口扩展器所知的情况下,将所选择的第二分组转发给控制交换机的端口。该方法还包括:在被设置在控制交换机中的第二分组处理器处,执行第二分组处理功能集合,包括:将在任何控制交换机端口处被接收的分组转发给任何其他控制交换机端口。
在其他实施例中,该方法包括以下特征中的一个或两个或更多个特征的任何合适组合。
该方法还包括:在至少一些第一分组处理器中的每个第一分组处理器处,搜索端口扩展器中的至少一些端口扩展器的第一转发数据库,第一转发数据库被填充有指示以下之间的关联的条目:i)直接或经由端口扩展器下游的一个或多个其他端口扩展器与端口扩展器的本地下游端口耦合的设备的相应网络地址,以及ii)端口扩展器的相应本地下游端口,其中第一转发数据库不包括与如下设备的网络地址相对应的条目,这些设备直接或经由端口扩展器上游的另一端口扩展器耦合到与控制交换机的至少一个端口耦合的端口扩展器的至少一个本地上游端口;以及在第二分组处理器处,搜索第二转发数据库,第二转发数据库被填充有指示以下之间的关联的条目:i)直接或经由一个或多个其他端口扩展器与多个端口扩展器的本地下游端口耦合的设备的相应网络地址,以及ii)相应控制交换机端口。
该方法还包括:在至少一些第一分组处理器中的每个第一分组处理器处,并且针对i)经由端口扩展器的多个本地下游端口被接收的并且ii)具有在第一转发数据库中的目的地网络地址的分组,将分组转发给由第一转发数据库指示的本地下游端口;以及在至少一些第一分组处理器中的每个第一分组处理器处,并且针对i)经由多个本地下游端口被接收的并且ii)具有不在第一转发数据库中的目的地网络地址的分组,将分组转发给至少一个本地上游端口。
该方法还包括:在至少一些第一分组处理器中的每个第一分组处理器处,基于经由多个本地下游端口被接收的分组的源网络地址来利用网络地址/端口关联信息填充第一转发数据库;以及在至少一些第一分组处理器中的每个第一分组处理器处,不基于经由至少一个本地上游端口被接收的任何分组的源网络地址来利用网络地址/端口关联信息填充转发数据库。
第二转发数据库被填充有指示i)设备的相应媒体访问控制(MAC)地址以及ii)端口扩展器的相应本地下游端口之间的关联的条目,设备a)直接或b)经由端口扩展器下游的一个或多个其他端口扩展器耦合到端口扩展器的本地下游端口,其中第二转发数据库不包括与如下设备的MAC地址相对应的条目,这些设备直接或经由另一端口扩展器耦合到端口扩展器的至少一个本地上游端口;以及该方法还包括:在至少一些第一分组处理器中的每个第一分组处理器处,并且针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有在转发数据库中的目的地MAC地址的第一分组,将第一分组转发给由转发数据库指示的不同的本地下游端口,以及在至少一些第一分组处理器中的每个第一分组处理器处,并且针对i)经由本地下游端口中的一个本地下游端口被接收的并且ii)具有不在转发数据库中的目的地MAC地址的第二分组,将第二分组转发给至少一个本地上游端口。
第一分组处理器中的至少一些第一分组处理器被配置为执行的第一分组处理操作集合与第二分组处理器被配置为执行的第二分组处理操作集合相比是减少的。
在控制交换机的第二分组处理器处执行第二分组处理功能集合包括:基于分组中的互联网协议(IP)地址来转发分组;并且基于分组中除了IP地址之外的网络地址,在分组扩展器中的至少一些分组扩展器处执行第一分组处理功能集合。
在控制交换机的第二分组处理器处执行第二分组处理功能集合包括:从在控制交换机端口处被接收的并且已经使用隧道协议被传输的分组中移除隧道协议报头字段;并且该方法还包括:在分组扩展器中的至少一些分组扩展器的至少一些第一分组处理器处,将经由下游端口被接收的并且隧道协议报头字段针对其将要被移除的分组转发给至少一个本地上游端口。
在控制交换机的第二分组处理器处执行第二分组处理功能集合包括:对在控制交换机端口处被接收的分组执行速率限制;并且在分组扩展器中的至少一些分组扩展器的至少一些第一分组处理器处执行第二分组处理功能集合包括:执行第二分组处理功能集合而不执行速率限制。
在控制交换机的第二分组处理器处执行第二分组处理功能集合包括:将在控制交换机端口处被接收的分组分类为流;并且在分组扩展器中的至少一些分组扩展器的至少一些第一分组处理器处执行第一分组处理功能集合包括:执行第一分组处理功能集合而不将分组分类为流。
上述各种框、操作和技术中的至少一些可以利用硬件、执行固件指令的处理器、执行软件指令的处理器或其任何组合来实现。当利用执行软件或固件指令的处理器实现时,软件或固件指令可以存储在任何计算机可读存储器中,诸如在磁盘、光盘或其他存储介质上,在RAM或ROM或闪存、处理器、硬盘驱动器、光盘驱动器、磁带驱动器等中。软件或固件指令可以包括机器可读指令,当机器可读指令由一个或多个处理器执行时使得一个或多个处理器执行各种动作。一个或多个处理器可以在以下中的一项或多项上实现:i)一个或多个集成电路(IC)设备,ii)一个或多个专用集成电路(ASIC),iii)一个或多个可编程逻辑设备(PLD)等。
当以硬件实现时,硬件可以包括多个晶体管(以及其他电路组件(诸如电容器)),多个晶体管被布置并且耦合在一起作为被配置为执行各种动作的电路装置。该电路装置可以在以下中的一项或多项上实现:i)一个或多个分立组件,ii)一个或多个IC设备,iii)一个或多个ASIC,iv)一个或多个PLD等。
尽管已经参考具体示例描述了本发明,这些示例仅用于说明而不是对本发明的限制,在不脱离本发明的范围的情况下,可以对所公开的实施例进行更改、添加和/或删除。