在链路聚合组中选择成员端口的方法和系统与流程

文档序号:31079737发布日期:2022-08-09 22:12阅读:263来源:国知局
在链路聚合组中选择成员端口的方法和系统与流程
在链路聚合组中选择成员端口的方法和系统
1.本技术是申请日为2019年6月27日、申请号为201910568245.7的同名专利申请的分案申请。
技术领域
2.本公开涉及网络设备,并且更具体地,涉及提供链路聚合的网络设备。


背景技术:

3.在计算机网络中,诸如路由器之类的网络设备可以经由两个或更多个物理链路连接到一个或多个网络设备。术语“链路”通常被用来指代在网络上的两个设备之间的连接。链路可以是物理介质,诸如铜线、同轴电缆、任何不同的光纤线路、或无线连接。此外,网络设备可以定义“虚拟”或“逻辑”链路,并将虚拟链路映射到物理链路。在一些情况下,两个或更多个这些链路可以在逻辑上分组或聚合在一起以形成“聚合束”。例如,一个或多个路由器可以经由多个物理链路的聚合束而连接到客户边缘设备。在某些情况下,为了更高的带宽和冗余,可以将以太网链路组合成一个逻辑接口。以这种方式组合的以太网链路的端口被称为链路聚合组(lag)或束。
4.通常,与单个链路的带宽相比,链路聚合可以改善带宽,同时还提供连接冗余。也就是说,将链路聚合成逻辑束可以导致组合的所有聚合链路的可用带宽。此外,如果聚合束的一个链路发生故障,则网络设备可以开始通过聚合束的非故障链路向另一个网络设备发送业务,从而以冗余链路的形式提供冗余以在两个设备之间递送业务。


技术实现要素:

5.本公开描述了包括通过评估路由器内沿着路径对聚合束的那些成员端口的利用率或可用带宽来选择聚合束的成员端口的技术。例如,根据本文描述的一种或多种技术,当接收到旨在通过聚合束输出的网络数据时,选择用于输出的成员端口之一可以包括应用散列算法以从一组候选成员端口中进行选择。在一些示例中,包括在该候选成员端口组内的成员端口可以通过标识聚合束中的那些可在具有相对低利用率的通过交换结构的路径上到达的成员端口来确定。在标识出多于一个候选成员端口的情况下,可以应用散列算法来从候选组中选择一个成员端口。在一些示例中,聚合束中的本地的成员端口(例如,不需要通过交换结构访问的那些)可以被包括在可以接收发往该聚合束的网络数据的候选组内。
6.在一些示例中,标识到成员端口的哪些路径被认为是相对低利用率的路径可以包括将每个路径的利用率与阈值进行比较。在一个示例中,具有小于阈值的利用率值的那些路径可以被认为是低利用率路径。在另一示例中,可以使用多于一个阈值,使得具有小于低阈值的利用率的路径可以被认为是低利用率路径。在一些示例中,可以使用两个阈值,使得在没有利用率小于低阈值的路径的情况下,可以将路径的利用率与高阈值进行比较,并且那些小于高阈值的路径可以被认为是候选成员端口,用于接收发往聚合束的网络数据。
7.本文描述的技术可以提供某些技术优势。例如,通过考虑在选择聚合束的成员端
口时通过交换结构的路径的利用率,可以更有效和更高效地使用交换结构,避免将业务放置在已拥塞的路径上,并提高低利用率路径的利用率。这种实践可以降低进一步拥塞和/或丢弃网络数据单元的可能性。此外,通过将利用率与低阈值和高阈值二者都进行比较,可以更有效地标识具有非常低利用率(即,小于低阈值)的交换结构的路径,并且可以将其与可能不是高度拥塞的但是不在具有很低利用率的可用路径组之中的其他路径区分开。并且对于两个阈值,其中不存在具有非常低利用率的通过交换结构的路径,但是仍然存在不是高度拥塞的到成员端口的路径(即,利用率低于高阈值的那些),这样的路径可以被标识并且其比单个阈值系统更有效地区别于其他路径。因此,将利用率与低阈值和高阈值二者都进行比较可以通过有效且高效地减少可以应用散列算法的候选成员端口的数量来实现有效的成员端口选择,同时也不会使成员端口选择逻辑过度复杂化。
8.在一些示例中,本公开描述了由网络路由器或其他网络设备执行的操作。在一个特定示例中,本公开描述了一种方法,包括:接收要通过具有多个成员端口的聚合束输出的网络数据,每个成员端口与通过交换结构互连的多个线卡之一相关联,其中所述网络数据由所述多个线卡中的接收线卡接收;从所述多个成员端口中标识任何本地成员端口,本地成员端口中的每个本地成员端口是所述接收线卡的端口;从所述多个成员端口中标识一个或多个非本地成员端口,非本地成员端口中的每个非本地成员端口在通过所述交换结构的路径上从所述接收线卡可到达所述多个线卡中的不同的一个;通过针对非本地成员端口中的每个非本地成员端口确定通过所述交换结构的路径是否具有低利用率来标识可用非本地成员端口;通过将散列算法应用于包括所标识的可用非本地成员端口中的每个可用非本地成员端口的组来选择成员端口;并通过接口输出所述网络数据以到达所选择的成员端口。
9.在其他示例中,本公开描述了执行如本文所述的各种操作的一个或多个系统、组件或设备。在其他示例中,本公开描述了一种包括指令的计算机可读储存介质,所述指令在被执行时配置计算系统的处理电路以执行如本文所述的各种操作。
附图说明
10.图1是图示出具有企业站点的示例企业网络的框图,该企业站点具有被配置为根据本公开的技术进行操作的路由器。
11.图2是图示出根据本公开的一个或多个方面的示例路由器的框图。
12.图3是图示出根据本公开的一个或多个方面的示例路由器和所包括的线卡的框图。
13.图4a、图4b、图4c和图4d是图示出根据本公开的一个或多个方面的其中可以应用算法来选择成员端口的各种示例场景的概念图。
14.图5是图示出根据本公开的一个或多个方面的由线卡内的示例分组转发引擎所执行的操作的流程图。
具体实施方式
15.图1是图示出根据本公开的技术的示例网络10的框图,其中企业站点14通过路由器17和路由器或交换机s1和s2连接到服务提供商网络12。路由器17可以是边缘或客户边缘
设备,并且可以表示任何网络设备,其能够与服务提供商网络12进行接口以将业务转发到服务提供商网络12并从服务提供商网络12接收业务,从而提供网络10内的主机或端点之间的连接性,所述主机或端点包括企业站点14内的本地主机20a-20n(统称为“主机20”)以及企业站点15和16中包括的主机。
16.企业站点14、15和16可以是属于单个企业的地理上分离的企业站点,诸如大学、公司、企业或其他大型实体。每个企业站点14、15和16可以包括诸如局域网(lan)或广域网(wan)之类的专用网络,其包括多个主机,例如企业站点14内的主机20。作为示例,主机20可以包括数据服务器、交换机或客户设备,诸如台式计算机、膝上型计算机、工作站、个人数字助理(pda)、物联网(iot)设备、无线设备、网络准备设备、文件服务器、打印服务器或其他设备。
17.可以通过服务提供商网络12将企业站点15和16内的一个或多个主机(未示出)逻辑地连接到企业站点14内的一个或多个主机20。每个企业站点14、15内的主机各自可以被包括在一个或多个虚拟lan(vlan)中,所述虚拟lan是一个或多个lan上的设备组,其被配置为如同它们附接到同一线路上一样进行通信。
18.如图1的示例中所进一步示出的,企业站点14可以包括路由器17,其在一些示例中可以是表示能够与服务提供商网络12进行接口以将业务转发到服务提供商网络12并从服务提供商网络12接收业务的任何网络设备的客户边缘(ce)设备。在一些示例中,路由器17可以是通常被称为“交换机”的l2网络设备,其将业务从企业站点14到服务提供商网络12以及从服务提供商网络12到企业站点14进行交换(而不是路由)。
19.常常,对于操作相对较大的客户网络的大客户,服务提供商采用所称的“聚合束”来经由两个或更多个链路来互连路由器和ce设备。示例聚合束包括聚合以太网束,其可以使用链路聚合控制协议(lacp)来进行配置和维持,如ieee 802.3ad中标题为“aggregation of multiple link segments”(多个链路分段的聚合)所定义的,其内容通过引用并入本文。逻辑上,这些聚合束显现为与路由器和/或ce设备的单个连接。聚合束包提供了许多好处。首先,聚合束可以提供路由器和ce设备之间的连接冗余。为了说明,如果聚合束的链路之一失败,则由聚合束互连的路由器和ce设备可以将先前通过聚合束的失败链路发送的业务重定向到聚合束的活动链路之一,从而提供路由器和ce设备之间的连接冗余。
20.第二,考虑到可以采用聚合束的多个链路而不是单个链路来递送业务,聚合束的使用可以提供增加的网络容量(其通常根据带宽来测量)。第三,聚合束可以促进带宽可扩展性,因为服务提供商可以建立具有两个链路的聚合束,作为一个示例,然后响应于增加的订户带宽需求递增地增加聚合束中的链路的数量。以这种方式,通过仅提供足够的带宽来满足当前订户带宽需求而不是预期的未来订户带宽需求,服务提供商可以减慢资本支出。
21.在图1的示例中,路由器17、交换机s1和交换机s2彼此协同工作以提供的聚合链路束21(其也可以被称为“聚合束21”)。在一些示例中,路由器17、交换机s1和交换机s2(统称为“路由设备17”)可以是或可以被描述为分开的设备,但是在其他示例中,聚合束21可以由具有多个机箱的单个设备提供,在这种情况下,路由器17和相关联的设备可以表示多机箱路由器的不同机箱。因此,本公开中描述的技术在这方面不应限于图1的特定示例。
22.路由器17可以被配置为经由路由器17向主机20提供对服务提供商网络12的访问,并且向主机20提供企业站点14内的主机到主机业务的连接性。服务提供商网络12继而向企
业站点15和16内的主机提供对企业站点14的访问。
23.服务提供商网络12可以耦合到由其他提供商所管理的一个或多个网络(未示出),并且因此可以形成大规模公共网络基础设施(例如,因特网)的一部分。因此,服务提供商网络12可以向企业站点14、15和16内的主机或端点提供对因特网的访问。路由器17可以使用服务提供商网络12来执行层3路由以在企业站点14和企业站点15、16之间路由网络业务。服务提供商网络12可以包括除路由器17之外的各种网络设备,诸如其他提供商边缘(pe)路由器、核心路由器、客户边缘(ce)路由器和交换机。
24.尽管为了便于解释未示出附加网络设备,但是网络10可以包括附加网络、企业站点和/或数据中心,包括例如一个或多个附加交换机、路由器、集线器、网关、诸如防火墙、入侵检测和/或入侵防御设备之类的安全设备、服务器、计算机终端、膝上型计算机、打印机、数据库、诸如手机或个人数字助理之类的无线移动设备、无线接入点、网桥、电缆调制解调器、应用加速器或其他网络设备。此外,尽管网络10的元件被图示为直接耦合,但是可以沿着服务提供商网络12和企业站点14、15或16之间的任何链路以及企业站点14和主机20之间的任何链路包括一个或多个附加网络元件,使得网络10的网络元件不直接耦合。
25.如本文进一步描述的,路由器17可以通过多个链路连接到服务提供商网络12并且被配置为链路聚合组(lag)客户端,其中物理连接被视为一个逻辑连接,表示为lag 21。此外,服务提供商网络12中包括的两个或更多个设备(示出为交换机s1和交换机s2)可以是被配置为在mc-lag内作为多机箱链路聚合组(mc-lag)对等设备进行操作的路由器/交换机,允许路由器17在两个mc-lag对等设备之间形成逻辑lag接口。mc-lag可以包括经由机箱间链路(icl)连接以用于机箱间冗余的活动mc-lag对等设备和备用mc-lag对等设备,mc-lag可以在网络10内提供服务提供商网络12的高可用性。在这样的示例中,路由器17可以是基于机箱的路由器,其可以通过链路聚合组的成员端口转发网络数据。为此,路由器17可以通过散列算法选择链路聚合组的一个或多个成员端口。基于散列算法来决定lag的成员端口,散列算法可以对分组报头(l2、l3和l4)进行操作。但是,在某些情况下,散列算法将会选择要求通过已被高度利用的交换结构传递网络数据的成员端口——即使(例如,通过交换结构)可以通过路径到达可能没被那么高度利用的其他成员端口。
26.根据本公开的一个或多个方面,路由器17可以基于通过路由器17内的内部交换结构(图1中未示出)到成员端口的路径的带宽使用或利用率来选择链路聚合组的成员端口。例如,路由器17可以标识通过路由器17内的内部交换结构的相对低利用的路径可到达的成员端口集合。一旦标识出这样的被标识成员端口集合,路由器17就可以应用散列算法,以从通过相对低利用的路径可到达的成员端口集合中选择成员端口。然后,路由器17可以在相对低利用的路径上将数据路由到所选择的成员端口。通过在相对低利用的路径上路由到所选择的成员端口,路由器17可以倾向于避免进一步的拥塞和/或分组丢失。尽管本文在大多数示例中描述了链路聚合束,但是根据本公开的一个或多个方面的技术可以应用于其他束,诸如ecmp束。
27.图2是图示出根据本公开的一个或多个方面的示例路由器的框图。在图2的示例中,路由器17可以对应于图1的路由器17。即,图1的路由器17可以包括与关于图2的路由器17描述的组件相类似的组件。在其他示例中,图2的路由器17可以包括附加或不同的特征和能力。
28.在图2的示例中,路由器17包括控制单元30,其为路由平面32a内的路由器17提供控制或路由平面功能性。路由器17还包括互连一组线卡(“lc”)36a-36n的交换结构34,每个线卡包括通过一组接口卡(ifc 40)40(“ifc 40”)发送和接收业务的一个或多个分组转发引擎(“pfe”)38,所述一组接口卡(ifc 40)40通常具有一个或多个物理网络接口(lag成员端口)。lc 36、其组件和交换结构34共同提供用于转发网络业务的数据平面(或转发平面),诸如下游和上游订户业务。在图2的示例中将该转发平面示为转发平面32b。尽管未在图2中示出,pfe 38可以各自包括中央处理单元(cpu)、存储器和一个或多个可编程分组转发专用集成电路(asic)。交换结构34提供高速互连,以用于在pfe 38之间转发传入数据分组,以便通过诸如图1的示例中所示出的服务提供商网络14之类的网络传输。
29.控制单元30可以为执行针对路由器17的路由平面功能的各种协议提供操作环境。例如,控制单元30可以为实现路由协议以控制l3路由功能的路由引擎(re)43(“re 43”)的执行提供操作环境。通常,路由引擎43接收和发送路由协议消息以维持路由信息库(rib)44(“rib 44”),所述路由信息库(rib)44存储表示服务提供商网络14的拓扑的l3路由信息。基于rib 44,re 43例如通过编程pfe 38生成转发信息库(fib)45(“fib 45”),所述转发信息库(fib)45存储用于在pfe 38内的安装的转发数据结构。
30.在图2的示例中,控制单元30可以包括用户接口(“ui”)模块46(“ui 46”),管理员直接或通过供应系统或软件代理与该模块交互,以配置与拥有和操作客户网络16的每个活动订户相对应的一个或多个逻辑接口。ui 46可以根据命令语法来接收命令并将这些命令存储为配置数据48(“配置数据48”)。ui 46还可以接收命令以针对每个逻辑接口配置主调度模块和一个或多个备份调度模块,也将这些命令存储为配置数据48。
31.控制单元30包括链路聚合控制协议(lacp)模块47,其操作以将一个或多个接口51捆绑到mc-lag 22中,并且在l2转发方面将束22视为单个逻辑接口。虽然示出为实现lacp,但是控制单元30可以实现或以其他方式为能够建立聚合的逻辑和/或物理接口束的任何其他类型的聚合束协议提供执行环境。lacp模块47通常提供用以维持mc-lag 22的抽象。
32.控制单元30还包括存储源id值的源id数据库(db)49,以及表示最初接收用于mc-lag的分组和用于mc-lag的标识符的设备的标识符的对应值。源id db 49可以被配置为关系数据库,其中源id值充当键值。以这种方式,源id值、用于mc-lag的分组的源的标识符,以及用于mc-lag的标识符可以作为三元组存储在源id db 49中,并且源id db 49中的每个条目可以符合这种三元结构。在一些示例中,源id值是16位值。
33.在图2的示例中,控制单元30通过专用内部通信链路50连接到lc 36中的每一个。例如,专用链路50可以包括用于路由器17的多个组件之间的内部通信的千兆以太网连接。在一个示例中,控制单元42将代表fib 45的软件副本45'的数据传送到pfe 38以对pfe 38进行编程,并且从而控制由转发平面32b内的对应组件转发业务。这允许在不降级路由器17的分组转发性能的情况下更新存储在每个pfe 38中的存储器(例如,片上ram)中的软件fib。在一些情况下,控制单元30可以针对pfe 38的每个相应的一个而导出单独的和不同的软件fib。另外,pfe 38中的一个或多个可以包括pfe 38基于复制到每个相应的pfe 38的软件fib(即,软件fib的硬件版本)利用fib的硬件副本所编程的分组转发asic(未示出)。在其他更复杂的示例中,路由器17可以具有更多lc 36(例如,48或64个fpc),每个lc 36可以具有多达四个pfe 38,每个pfe 38耦合到多达十六个接口卡40。
34.在一些示例中,当pfe 38中的一个接收到分组时,pfe可以从fib 45的软件副本45'确定是否要根据mc-lag转发分组。例如,如上所讨论的,lacp模块47可以更新配置数据48以指示将使用mc-lag来转发具有特定网络五元组(源ip地址、目的地ip地址、源端口、目的地端口和协议)的分组。然后,控制单元30可以用指示使用mc-lag来转发这样的分组的数据来更新fib45,并且此外,更新在lc 36的pfe 38上的fib45的软件副本45'。因此,当pfe 38接收分组时,pfe 38可以确定是否要使用mc-lag来转发分组。
35.当使用mc-lag来转发分组时,接收到分组的pfe 38可以选择与ifc 40相关联的成员端口之一以用于转发该分组。例如,lc 36a可以通过与包括在lc 36a内的ifc 40相关联的成员端口来输出分组。在其他示例中,lc 36a可以通过的包括在与不同于lc 36a的线卡(例如,lc 36n)内的ifc 40相关联的成员端口来输出分组。在后一种情况下,lc 36a通过交换结构34转发分组以到达另一个lc(例如,lc 36n)。一旦分组到达将输出该分组的lc(例如,lc 36n)时,该lc就通过所选择的成员端口来输出该分组。在一些情况下,通过交换结构34从lc 36a到其他lc的路径可能具有不同程度的利用率和/或拥塞。一些lc可以是由lc 36a在通过交换结构34的高度利用和过度拥挤的路径上可到达的,而其他lc可以是由lc 36a在通过交换结构34的较少利用的路径上可到达的。
36.根据本公开的一个或多个方面,lc 36a可以基于交换结构34内到另一个lc的路径的利用程度、或者基于针对交换结构34的结构接口带宽使用来选择成员端口。例如,如果lc 36a确定通过交换结构34到lc 36n的路径被高度利用,则lc 36a可以选择与不同lc相关联的成员端口,其中该不同lc是通过交换结构34内的比到lc 36n的路径利用更低的路径可到达的。
37.控制单元30的操作环境可以仅以硬件来实现,或者可以被实现为硬件和软件或固件的组合。例如,控制单元30可以包括执行软件指令的一个或多个处理器。在这种情况下,控制单元30可以包括在操作系统上执行的各种软件模块或守护进程,并且可以包括用于存储可执行指令的非暂时性计算机可读储存设备,诸如计算机存储器或硬盘。
38.图2中所图示的路由器17的架构作为示例被示出,并且本公开不限于该架构。在其他示例中,可以以各种方式配置路由器17。在一个示例中,例如,可以将控制单元30的功能性中的一些分布在pfe38内。控制单元30的元件可以仅以在硬件上执行的软件或硬件来实现,或者可以被实现为硬件和软件或固件的组合。例如,控制单元30可以包括一个或多个处理器、一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、网络处理器或执行软件指令的任何其他等效的集成或离散逻辑电路或其任何组合。在那种情况下,控制单元30的各种软件模块可以包括在包含指令的诸如计算机可读储存介质之类的非暂时性计算机可读介质中存储、体现或编码的可执行指令。
39.嵌入或编码在计算机可读介质中的指令例如在指令被执行时可以使可编程处理器或其他处理器执行该方法。计算机可读储存介质可以包括随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、非易失性随机存取存储器(nvram)、闪存、硬盘、cd-rom、软盘、盒式磁带、固态驱动器、磁介质、光介质或其他非暂时性计算机可读介质。计算机可读介质可以用对应于路由器17的各个方面的指令来编码,例如协议。在一些示例中,控制单元30针对这些方面从存储器检索并执行指令。
40.图3是图示出根据本公开的一个或多个方面的示例路由器和所包括的线卡的框图。在图3的示例中,路由器17包括控制单元30、线卡36a至36c(统称为“lc 36”)和交换结构34。图3中的每个lc 36可以对应于基于机箱的路由器中存在的线卡,并且可以对应于图3中所图示的lc 36。如图3的示例中所图示的,路由器17包括许多与图2中所描述的相同的元件,并且图3中图示出的元件可以对应于先前图示出的由相同标号的附图标记所标识的元件。通常,这样的相同编号的元件可以以与结合图2所提供的对应元件的描述一致的方式来实现,尽管在一些示例中,这样的元素可以涉及具有更多、更少和/或不同能力和属性的替代实现。
41.在图3中,lc 36a至36c中的每一个包括链路聚合组或聚合束37的多个成员端口(即,p2至p7)。在所示的示例中,lc 36a包括入口端口p1和出口端口p2和p3。lc 36b包括端口p4和p5,并且lc 36c包括端口p6和p7。lc 36中的每一个还包括到交换结构34的一个或多个结构接口端口。具体地,在所示的示例中,lc 36a包括结构端口f1和f2,lc 36b包括结构端口f3和f4,并且lc 36c包括结构端口f5和f6。这些结构接口端口通过交换结构34提供跨越线卡的连接性。
42.在一些示例中,并且如图4a至图4d中进一步所图示的,lc 36中的每一个可以是由任何其他lc 36可到达的,但是在一些示例中,交换结构34可以被配置为使得并非所有lc 36都可以通过任何给定的结构端口是到达的。例如,lc 36a的f1可能没有到达每个其他lc 36的路径,并且例如可能仅能够直接到达lc 36c而不能到达lc36b。虽然大型机箱路由器常常可能具有全网状导电性的全交叉开关平面,但是其他路由器(例如,较小的机箱路由器)可能不具有这种全网状连接性。根据本公开的一个或多个方面的技术可以特别适用于全网状连接性不可用的场景并且有效地解决之。
43.在图3的示例中图示出了三个lc 36和有限数量的成员入口端口、出口端口和结构端口。但是,本公开涵盖任何数量的端口和线卡,并且在其他示例中,根据本公开的技术可以用任何数量的线卡和端口来实现。
44.在图3的示例中,lc 36中的一个或多个可以选择链路聚合端口束的成员端口。例如,在一个示例中,lc 36a在p1上接收分组。包括在线卡36a内的pfe确定将分组转发到聚合束,并应用散列算法来标识出口端口。可以由硬件或通过基于软件的实现来执行散列算法。基于散列,pfe确定分组将被发射出p4(与lc 36b相关联),其经由f2通过交换结构34去往f3而是可到达的。但是在图2的示例中,通过交换结构34在f2和f3之间的路径可能已经拥塞。因此,将分组转发到f3然后转发到p4可能导致分组丢失和/或进一步拥塞。在一些示例中,应当使用交换结构34内的相同路径的其他合法业务(除了聚合束37为目的地的业务之外)也可能受到不利影响。
45.然而,通过考虑结构接口f1到f6的带宽利用率以及结构34内的对应路径的利用率,在至少一些情况下可以避免分组丢失和拥塞。因此,如本文进一步描述的,一个或多个lc 36可以通过考虑结构接口带宽使用和/或利用率来选择链路聚合端口束的成员端口。例如,在一些示例中,可以应用用于标识通过结构34的相对低利用的结构接口或路径的算法,并且lc 36中的一个或多个可以从所标识的低利用率结构接口之中选择成员端口。
46.一种这样的算法可以涉及两个利用率阈值的使用:“较低阈值”和“较高阈值”。在这样的示例中,较低阈值可以指示针对给定结构接口的低或最小业务使用阈值,而较高阈
值可以指示针对给定结构接口的较高或甚至最大业务使用阈值。可以基于成员端口的速度来计算这些阈值限制。为了应用该算法,基于结构接口带宽利用率来创建成员端口集合,并从成员端口集合中选择成员端口。
47.为了确定带宽利用率水平,lc 36(例如,lc 36a)可以评估由lc 36内的转发芯片或pfe所维持的虚拟输出队列,并利用与那些队列相关联的状态信息来确定与每个路径和/或结构接口相关联的带宽。在其他示例中,lc 36可以为了当前业务速率而查询硬件寄存器,并将这些速率与每个结构实现的速率进行比较,以确定结构端口相对于最大速率正在运行的程度以及确定可用承诺和带宽利用率。
48.在应用双阈值系统的算法的一个示例中,创建两个成员端口集合(“全局成员端口集合”和“子成员端口集合”)。根据算法的规则来将端口添加到这些成员端口集合中,并且最终从全局成员端口集合中选择所选择的成员端口。具体地,可以在这样的示例中应用以下规则。
49.步骤1:通过基于入口业务线卡(例如,图3中的lc 36a)添加给定束的所有本地成员端口来构建全局成员端口集合。
50.步骤2:对于每个结构接口(其中成员端口之一是可到达的):如果利用率带宽百分比小于较低阈值,那么将可经由该结构接口到达的成员端口集合添加到子接口成员端口集合(例如参见图4a的示例)。
51.步骤3:如果子成员端口集合为空(即,null),则所有结构接口越过最小或较低阈值。在这种情况下,然后对于每个结构接口(其中成员端口之一是可到达的):如果利用率带宽百分比小于较高阈值,则将可经由此结构接口到达的成员端口集合添加到子成员端口集合(例如参见图4b的示例)。
52.步骤4:如果子成员端口集合不为空(即,不为null),则将子成员端口集合与全局成员端口集合合并。但是,如果子成员端口集合为空/null(所有结构接口都越过最大阈值),那么执行以下步骤之一(步骤5a或步骤5b),具体取决于全局成员端口集合是否为null:
53.步骤5a:如果全局成员端口集合不为null,那么这里将考虑本地成员端口(即,针对入口业务lc 36a的p2和p3)(例如参见图4c)。
54.步骤5b:如果全局成员端口集合为null,那么使用给定束的所有成员端口来构造全局成员端口集合(例如参见图4d的示例)。
55.步骤6:将散列算法(基于分组内容)应用于全局成员端口集合中的成员端口以选择成员端口。
56.在一些示例中,将前述步骤应用于由入口线卡接收的每个网络分组。在其他示例中,可能不需要针对每个分组更新端口集合,因此可以周期性地或者响应于事件(例如,分组流的发起或终止)来应用前述步骤。在这样的示例中,全局成员端口集合在一段时间内可以包括相同的成员端口集合直到再次执行算法,从而可能调整全局成员端口集合中(和/或在其他成员端口集合中)包括的成员端口。在另一示例中,可以监视利用率,并且可以在每次相关路径越过利用率阈值时再次执行算法,从而更新并可能改变一个或多个成员端口集合。在实现该示例的另一种方式中,一个或多个lc 36可以在持续的基础上维持成员端口的列表(例如,全局成员端口集合、子成员端口集合和/或其他列表)并且当利用率水平改变时
根据需要更新列表,从而需要以与上述算法或其他适用算法相一致的方式改变端口集合列表。
57.图4a、图4b、图4c和图4d是图示出根据本公开的一个或多个方面的其中可以应用上述算法来选择成员端口的各种示例场景的概念图。在图4a中,lc 36a可以通过应用上述算法来确定目的地为聚合束37的传入分组的成员端口。例如,参考图4a,lc 36a创建包括p2和p3的全局成员端口集合(步骤1),因为p2和p3是用于lc 36a的本地成员端口。在步骤2中,lc 36a创建包括p6和p7(与lc 36c相关联)的子成员端口集合,因为从lc 36a到lc 36c的链路401具有小于较低阈值的相对低的利用率。(相对低的利用率在图4a中由表示链路401的细绘线来指示)。在该示例中,链路402具有比低阈值更高的利用率(注意表示图4a中的链路402的粗线),因此p4和p5(与lc 36b相关联)不被添加到子成员端口集合。在图4a的示例中,步骤3不适用,因为子成员端口集合不为空。在步骤4中,子成员端口集合不为空,因此lc 36a将子成员端口集合合并到全局成员端口集合中,从而导致包括p2、p3、p6和p7的全局成员端口集合。步骤5不适用,因为子成员端口集合不为空。前面步骤的结果是全局成员端口集合包括p2、p3、p6和p7。因此,lc 36a应用散列算法以从p2、p3、p6和p7中进行选择(步骤6)。
58.图4b是图示出所述算法的应用的另一示例,其中lc 36a再次确定p1上的目的地为聚合束37的传入分组的成员端口。在图4b的示例中,lc 36a创建包括p2和p3的全局成员端口集合(步骤1),并且在步骤2中,创建为空的子成员端口集合,因为链路401和链路402都被利用大于低阈值(注意表示图4b中的链路401和402的线的相对厚度)。在步骤3中,lc 36a将p6和p7添加到子成员端口集合,因为虽然链路401具有比低阈值更高的利用率,但链路401具有比高阈值更低的利用率(注意表示链路401的中等厚度绘线)。因此不将成员端口p4和p5添加到子成员端口集合。在步骤4中,lc 36a将子成员端口集合合并到全局成员端口集合中,使得全局成员端口集合包括p2、p3、p6和p7。步骤5不适用,因为子成员端口集合不为空。结果是全局成员端口集合包括p2、p3、p6和p7。因此,lc 36a应用散列算法以从p2、p3、p6和p7中进行选择(步骤6)。
59.图4c是图示出所述算法的应用的另一示例,其中lc 36a确定到达p1的目的地为聚合束37的分组的成员端口。在图4c中,lc 36a创建包括p2和p3的全局成员端口集合(步骤1),并且在步骤2中,创建空的子成员端口集合,因为链路401和链路402都被利用大于低阈值(注意表示图4b中的链路401和402的线的厚度)。在步骤3中,lc 36a仍然不向子成员端口集合添加任何端口,因为链路401和链路402都具有比高阈值更高的利用率(注意表示链路401和402的粗绘线)。步骤4不适用,因为子成员端口集合为空。在步骤5中,由于全局成员端口集合不为空(它包括p2和p3),因此不再对全局成员端口集合进行进一步添加。因此,lc 36a应用散列算法以从全局成员端口集合的成员之中进行选择,其在图4c的示例中包括p2和p3(步骤6)。
60.图4d是图示出所述算法的应用的另一示例,其中lc 36a确定到达不具有本地成员端口(或者不是聚合组的一部分)的线卡处的分组的成员端口。在图4d的示例中,当目的地为聚合束37的分组到达p1处时,lc 36a创建空的全局成员端口集合,因为图4d的示例中的lc 36a没有本地成员端口,或者至少不是聚合组的一部分(步骤1)。在步骤2中,lc 36a创建空的子成员端口集合,因为链路401和链路402都被利用大于低阈值(注意表示图4b中的链
路401和402的线的厚度)。在步骤3中,lc 36a仍然不向子成员端口集合添加任何端口,因为链路401和链路402都具有比高阈值更高的利用率(再次注意表示链路401和402的粗绘线)。步骤4不适用,因为子成员端口集合为空。在步骤5中,由于全局成员端口集合为空,所以即使利用率大于阈值(例如,不管利用率如何),也添加所有成员端口(p4、p5、p6和p7)。实际上,由于所有路径都被高度利用,因此所有路径都被视为输出的候选路径。在步骤6中,lc 36a应用散列算法从全局成员端口集合(p4、p5、p6和p7)中的所有成员端口中进行选择。
61.在一些示例中,可以使用不同数量的阈值,包括比只有低阈值和高阈值更多的阈值。在这样的示例中,可以修改这里描述的算法以适应阈值的数量。例如,在存在多于两个阈值的情况下,可以逐个考虑每个阈值,从而标识不超过较低阈值之一的成员端口的一个或多个子集,并且可以将散列算法应用于比最低应用阈值更低的那些成员端口,这导致一组成员端口。阈值可以由管理员或用户配置,或者可以由路由器17基于业务模式或其他考虑因素而自动进行配置或适配。
62.图5是图示出根据本公开的一个或多个方面的由线卡内的示例分组转发引擎所执行的操作的流程图。图5图示出了与结合图3和图4a至图4d所描述的算法相类似的算法,并且图5中描述的操作可以由图3的一个或多个lc 36来执行。在其他示例中,图5中描述的操作可以由一个或多个其他组件、模块、系统或设备来执行。此外,在其他示例中,结合图5描述的操作可以合并、以不同的顺序执行、省略、或者可以涵盖未具体图示出或描述的附加操作。
63.在图5的示例中,并且根据本公开的一个或多个方面,lc 36a可以接收要通过具有多个成员端口的聚合束输出的网络数据,每个成员端口与通过交换结构互连的多个线卡中的一个相关联,其中网络数据由多个线卡中的接收线卡接收。例如,在图3的示例中,lc36a通过入口端口p1接收数据。lc 36a确定要通过聚合束37输出数据。
64.lc 36a可以从多个成员端口(501)标识任何本地成员端口。例如,参考图3,lc 36a确定:作为入口线卡,是否它具有作为具有多个成员端口的聚合束的一部分的任何成员端口,每个成员端口与多个线卡中的一个(例如,图3中的lc 36a至36c)相关联。lc36a将p2和p3标识为本地端口,因为它们是包括在lc 36a(接收线卡)内的成员端口。
65.lc 36a可以将本地端口添加到它在储存器内维持的端口列表(502)。例如,lc 36a维持端口列表,并且lc 36a将p2和p3添加到lc 36a内的储存设备中的那个列表或者路由器17内的其他列表。
66.lc 36a可以从多个成员端口中标识一个或多个非本地成员端口,每个非本地成员端口可以在通过交换结构的路径上从接收线卡到达多个线卡中的不同的一个。例如,lc 36a可以确定非本地成员端口包括p4和p5(可通过交换结构34和lc 36b访问),以及p6和p7(可通过交换结构34和lc 36c访问)。
67.从该组非本地成员端口中,lc 36a可以通过针对每个非本地成员端口确定通过交换结构的路径是否具有小于低阈值的利用率来标识可用的非本地成员端口(503)。对于在利用率小于低阈值的路径上可到达的每个这样的非本地成员端口,lc 36a将该非本地成员端口添加到端口列表(504)。
68.如果没有非本地成员端口具有利用率小于低阈值的通过交换结构的路径,则lc 36a可以通过针对每个非本地成员端口确定通过交换结构的路径是否具有小于高阈值的利
用率来标识可用的非本地成员端口(505)。对于在利用率小于高阈值的路径上可到达的每个这样的非本地成员端口,lc 36a将该非本地成员端口添加到端口列表(506)。
69.lc 36a可以确定它已经维持的端口列表是否为空(507)。如果端口列表为空,则lc 36a将所有成员端口添加到列表中(508)。为此,lc 36a将任何本地成员端口添加到列表中(在图3的示例中,p2和p3是本地成员端口)。lc 36a还添加每个先前标识的非本地成员端口,其均可通过交换结构的路径上从接收线卡(即,lc 36a)到达多个线卡中的不同线卡。在图3的示例中,这包括端口p4、p5、p6和p7。
70.lc 36a可以通过将散列算法应用于组来选择成员端口(509),所述组包括列表中的每个成员端口。例如,lc 36a可以将散列算法应用于由本地成员端口(p2和p3)和一个或多个非本地成员端口(例如,p4、p5、p6和/或p7)组成的端口列表。在lc 36a没有本地成员端口的情况下,lc 36a可以应用散列算法来选择非本地成员端口之一,并且可以通过结构接口输出网络数据以到达所选(非本地)成员端口。在lc 36a具有本地成员端口但是利用到非本地成员端口的路径超过高阈值的情况下,lc 36a可以应用散列算法来选择本地成员端口之一,并且可以通过包括在lc 36a内的电路来输出网络数据以到达所选(本地)成员端口。
71.对于本文所描述的过程、装置和其他示例或图示,包括在任何流程图或流程图表中,包括在本文所描述的任何技术中的某些操作、动作、步骤或事件可以以不同的顺序执行、可以添加、合并或遗漏(例如,并非所有描述的行为或事件都是实施这些技术所必需的)。此外,在某些示例中,例如通过多线程处理、中断处理或多个处理器,可以同时执行而不是顺序执行操作、动作、步骤或事件。此外,即使没有具体地标识为自动执行,但是也可以自动地执行某些操作、动作、步骤或事件。此外,被描述为自动执行的某些操作、动作、步骤或事件可以可替代地不是自动执行的,而是在一些示例中,可以响应于输入或另一事件而执行这些操作、动作、步骤或事件。
72.为了便于图示,在附图内和/或在本文所引用的其他图示中示出了有限数量的设备(例如,线卡36和链路401、402、404以及其他设备)。然而,根据本公开的一个或多个方面的技术可以与更多这样的系统、组件、设备、模块和/或其他项目一起执行,并且对这样的系统、组件、设备、模块和/或其他项目的集体引用可以表示任何数量的这种系统、组件、设备、模块和/或其他项目。
73.本文中所包括的附图各自图示出了本公开的一个方面的至少一个示例实现。然而,本公开的范围不限于这些实现。因此,除了图中所图示的那些之外,本文所描述的系统、方法或技术的其他示例或替代实现在其他实例中可能是适当的。这样的实现可以包括附图中包括的设备和/或组件的子集和/或可以包括附图中未示出的附加设备和/或组件。
74.以上阐述的详细描述旨在作为各种配置的描述,并且不旨在表示可以实践本文所描述的概念的有限数量的配置。详细描述包括具体细节,以便提供对各种概念的充分理解。然而,可以在没有这些具体细节的情况下实践这些概念。在一些实例中,在参考图中以框图形式示出了公知的结构和组件,以避免模糊这些概念。
75.因此,尽管可以参考具体附图描述各种系统、设备和/或组件的一个或多个实现,但是可以以多种不同的方式实现这样的系统、设备和/或组件。例如,在本文附图(例如,图1和/或图2)中作为分开的设备图示出的一个或多个设备可以替代地被实现为单个设备;作为分开的组件图示出的一个或多个组件可以替代地被实现为单个组件。而且,在一些示例
中,在本文附图中作为单个设备图示出的一个或多个设备可以替代地被实现为多个设备;被图示为单个组件的一个或多个组件可以替代地被实现为多个组件。这些多个设备和/或组件中的每一个可以经由有线或无线通信直接耦合和/或经由一个或多个网络远程耦合。而且,可以在本文的各个附图中图示出的一个或多个设备或组件可以替代地被实现为这些图中未示出的另一设备或组件的一部分。以这种方式和其他方式,本文所描述的一些功能可以经由两个或更多个设备或组件的分布式处理来执行。
76.此外,可以将某些操作、技术、特征和/或功能在本文中描述为由特定组件、标识和/或模块来执行。在其他示例中,这样的操作、技术、特征和/或功能可以由不同的组件、设备或模块来执行。因此,在其他示例中,在本文中可以被描述为归因于一个或多个组件、设备或模块的一些操作、技术、特征和/或功能可以归因于其他组件、设备和/或模块,即使本文没有以这种方式具体描述。
77.尽管已经结合一些示例的描述标识出特定的优点,但是各种其他示例可以包括所列举的优点中的一些、没有或全部。根据本公开,技术或其他方面的其他优点对于本领域普通技术人员而言可以是显而易见的。此外,尽管本文已经公开了特定示例,但是可以使用无论当前是否已知的任何数量的技术来实现本公开的各方面,因此,本公开不限于本公开中具体描述和/或示出的示例。
78.在一个或多个示例中,可以以硬件、软件、固件或其任何组合来实现所描述的功能。如果以软件实现,则可以将功能作为一个或多个指令或代码存储在计算机可读介质上和/或通过计算机可读介质传输并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读储存介质,其对应于诸如数据储存介质之类的有形介质,或者包括便于(例如,根据通信协议)将计算机程序从一个地方传送到另一个地方的任何介质在内的通信介质。以这种方式,计算机可读介质通常可以对应于:(1)有形计算机可读储存介质,其是非暂时性的;或(2)诸如信号或载波之类的通信介质。数据储存介质可以是可以由一个或多个计算机或一个或多个处理器访问的任何可用介质,以检索用于实现本公开中所描述的技术的指令、代码和/或数据结构。计算机程序产品可以包括计算机可读介质。
79.作为示例而非限制,这种计算机可读储存介质可以包括ram、rom、eeprom、cd-rom或其他光盘储存器、磁盘储存器或其他磁储存设备、闪存或任何其他可以被用来以指令或数据结构的形式存储所期望的程序代码并且可由计算机访问的其他介质。而且,任何连接都适当地被称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或诸如红外线、无线电和微波之类的无线技术从网站、服务器或其他远程源传输指令,那么同轴电缆、光纤电缆、双绞线、dsl或诸如红外线、无线电和微波之类的无线技术都包括在介质的定义中。然而,应该理解,计算机可读储存介质和数据储存介质不包括连接、载波、信号或其他瞬态介质,而是针对非瞬态有形储存介质。所使用的磁盘和光盘包括压缩盘(cd)、激光盘、光盘、数字通用盘(dvd)、软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘通过激光光学地再现数据。上述的组合也应被包括在计算机可读介质的范围内。
80.指令可以由一个或多个处理器执行,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其他等效集成或离散逻辑电路。因此,本文所使用的术语“处理器”或“处理电路”可以各自指代任何前述结构或适合于实现所描述的技术的任何其他结构。另外,在一些示例中,可以在专用硬件和/或软件模
块内提供所描述的功能性。而且,这些技术可以完全在一个或多个电路或逻辑元件中实现。
81.可以在各种设备或装置中实现本公开的技术,所述设备或装置包括无线手机、移动或非移动计算设备、可穿戴或非可穿戴计算设备、集成电路(ic)或ic组(例如,芯片组)。在本公开中描述了各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但不一定需要由不同的硬件单元实现。而是,如上所述,各种单元可以组合在硬件单元中,或者由包括如上所述的一个或多个处理器在内的硬件单元和合适的软件和/或固件的互操作集合来提供。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1