网络交换机设备中的拥塞避免的制作方法

文档序号:16977852发布日期:2019-02-26 19:11阅读:257来源:国知局
网络交换机设备中的拥塞避免的制作方法

本公开要求2017年8月11日提交的名称为“switchcongestionavoidance”的美国临时专利申请no.62/544,401的权益,其以它的整体据此通过引用并入本文。

本公开一般地涉及网络设备,诸如网络交换机设备、网桥、路由器等,并且更特别地,涉及网络设备中的拥塞避免。



背景技术:

网络交换机设备通常包括耦合到不同网络链路的多个端口。网络交换机设备通常经由端口中的一些端口接收分组,并且处理所接收的分组的头部中的地址信息,以确定网络交换机设备应当经由哪些其他端口或多个端口来传输该分组。当网络交换机设备执行分组的处理并且直到出口接口准备好传输分组时,分组被暂时存储在网络交换机设备的内部存储器中。内部存储器通常由网络交换机设备的多个入口端口共享,并且暂时存储经由网络交换机设备的多个入口端口接收的分组。当所确定的端口可用于分组传输时,分组从内部存储器被取回并且经由所确定的端口被传输。

在一些情形下,相比于分组可以由网络交换机设备传输而言,网络交换机设备更快地接收分组,例如由于耦合到网络交换机设备的下游网络链路上的拥塞,或者由于网络交换机设备不能足够快地处理新接收的分组。在这样的情形下,网络设备的内部存储器可能变得拥塞。为了在网络交换机设备的内部存储器中拥塞的情况下防止分组丢失,一些网络交换机设备生成流控制消息,流控制消息随后经由网络交换机设备的相应接口被传输,以引起上游网络设备向网络交换机设备的分组传输的暂时中止,由此将存储器拥塞卸载到上游网络设备(例如,其他网络交换机设备、端点网络设备等)的存储器。在典型的网络交换机设备中,当网络交换机设备检测到由多个入口端口共享的内部存储器中的拥塞时,网络交换机设备经由多个入口端口中的每个入口端口传输流控制消息。因此,分组的传输被经由多个入口端口耦合到网络交换机设备的多个上游网络设备同时中止。由多个上游网络设备向网络交换机设备的分组传输的同时中止可能不必要地降低了耦合到网络交换机设备的网络链路的利用率。



技术实现要素:

在一种实施例中,一种用于控制网络交换机设备处的拥塞的方法包括:在网络交换机设备处从多个上游网络设备中的相应上游网络设备接收分组,相应上游网络设备经由网络交换机设备的多个端口中的相应端口耦合到网络交换机设备;将所接收的分组中的至少一些分组暂时存储在网络交换机设备的内部存储器中;利用网络交换机设备的流控制引擎来检测网络交换机设备的内部存储器中的第一拥塞状态;响应于检测到内部存储器中的第一拥塞状态,利用流控制引擎来触发经由耦合到多个上游网络设备中的第一上游网络设备子集的多个端口中的第一端口子集的第一流控制消息的传输,而不触发经由未包括在第一端口子集中的任何端口的流控制消息的传输,以使得第一上游网络设备子集中的上游网络设备暂时中止向网络交换机设备的分组传输,而不使得多个上行链路网络设备中的未包括在第一上游网络设备子集中的任何上游网络设备暂时中止向网络交换机设备的分组传输;以及利用流控制引擎在使得多个上游网络设备的不同子集暂时中止向网络交换机设备的分组传输之间进行交替,同时流控制引擎继续监测网络交换机设备的内部存储器中的拥塞。

在另一实施例中,一种网络交换机设备包括:多个端口,用于经由相应网络链路耦合到多个上游网络设备中的相应上游网络设备;内部存储器,被配置为暂时存储经由多个端口中的相应端口接收的至少一些分组;以及流控制引擎。流控制引擎被配置为:检测网络交换机设备的内部存储器中的第一拥塞状态;响应于检测到内部存储器中的第一拥塞状态,触发经由耦合到多个上游网络设备中的第一上游网络设备子集的多个端口中的第一端口子集的第一流控制消息的传输,而不触发经由未包括在第一端口子集中的任何端口的流控制消息的传输,以使得第一上游网络设备子集中的上游网络设备暂时中止向网络交换机设备的分组传输,而不使得多个上游网络设备中的未包括在第一上游网络设备子集中的任何上游网络设备暂时中止向网络交换机设备的分组传输;以及在使得多个上游网络设备的不同子集暂时中止向网络交换机设备的分组传输之间进行交替,同时流控制引擎继续监测网络交换机设备的内部存储器中的拥塞。

附图说明

图1是根据实施例的实施本文描述的流控制技术的示例网络交换机设备的框图;

图2a是时序图,其图示了根据实施例的随时间流逝由相应的上游网络设备向网络设备传输的分组的带宽;

图2b是时序图,其图示了根据实施例的随时间流逝由多个上游网络设备向网络设备传输的分组的组合带宽;以及

图3是流程图,其图示了根据实施例的用于控制网络交换机设备中的拥塞的示例方法。

具体实施方式

在下面描述的实施例中,网络设备(例如,网络交换机设备)从经由相应网络链路耦合到网络交换机设备的多个上游网络设备接收分组,并且朝向分组的预期接收者转发分组,诸如直接或间接耦合到网络交换机设备的下游端点设备。网络交换机设备包括内部存储器,内部存储器用于在分组正由网络交换机设备处理时暂时存储分组。在一种实施例中,内部存储器包括在网络交换机设备的多个端口之间被共享的共享缓冲空间。在内部存储器中拥塞的情况下,诸如当网络交换机设备检测到内部存储器中的共享缓冲空间正接近耗尽时,网络交换机设备生成并且传输流控制消息,以使得多个上游网络设备中的一个或多个减少向网络交换机设备的分组流,例如通过暂时中止向网络交换机设备的分组传输,或者暂时降低向网络交换机设备的分组传输的速率,由此将拥塞从网络交换机设备的内部存储器卸载到一个或多个上游网络设备的存储器。在典型的网络交换机设备中,一经检测到网络交换机设备的内部存储器的共享缓冲空间中的拥塞,网络交换机设备通常经由共享缓冲空间的若干端口来传输流控制消息,以使得耦合到共享缓冲空间的若干端口的上游网络设备暂时减少向网络交换机设备的分组流,以缓解共享缓冲空间中的拥塞。然而,在一种实施例中,一经检测到网络交换机设备的内部存储器的共享缓冲空间中的拥塞,网络交换机设备使流控制消息的传输在共享缓冲空间的不同端口子集之间交替,以使向网络交换机设备的分组流的减少随时间分布在耦合到共享缓冲空间的端口的上游网络设备的不同子集之中。例如,分组流的减少随时间在上游网络设备的不同子集之中的分布允许一些上游网络设备向网络交换机设备传输分组,而其他上游网络设备中止向网络交换机设备的分组传输。在至少一些实施例中,相比于不使分组流的减少随时间分布在上游网络设备的子集之中的系统,分组流的减少在上游网络设备的不同子集之中的这样的分布改进了网络交换机设备与上游网络设备之间的网络链路的利用率。

图1是根据实施例的被配置为实施本文描述的流控制技术的示例交换系统100的框图。在一种实施例中,交换系统100是数据中心网络、服务器群网络、或者需要在大量网络接口(例如,端口)之间进行交换或路由的另一合适系统中的一部分。在另一实施例中,交换系统100是除了数据中心网络之外的网络的一部分。例如,在一些实施例中,交换系统100是企业网络的一部分。交换系统100包括第一网络设备102和多个第二网络设备103。关于分组在从第二网络设备103到第一网络设备102的方向上流过交换系统100,第二网络设备103位于第一网络设备102的上游,并且相应的第二网络设备103在本文中有时被称为“上游网络设备”。然而,注意,在一些实施例中,关于分组在从第二网络设备103到第一网络设备102的方向上流过交换设备100,在一些配置中,第二网络设备103也充当下游网络设备。在一种实施例中,第一网络设备102是网络交换机设备,并且第二网络设备103是在交换系统100中位于网络设备102上游的网络设备,诸如其他网络交换机设备,端点设备(例如,数据中心服务器设备、其他计算设备、存储设备等),等等。

网络设备102包括通信地耦合到相应网络链路105的多个接口(例如,端口)104、106。在一种实施例中,端口104耦合到相应的上游网络设备103,并且端口106耦合到交换系统100中的相应的下游网络设备,诸如交换系统100中的下一跳交换设备或下一级交换设备。关于分组在从上游网络设备103到网络设备102的方向上流过交换系统100,端口104充当入口端口,并且端口104在本文中有时被称为“入口端口”。关于分组在从上游网络设备103到网络设备102的方向上流过交换设备100,端口106充当出口端口,并且端口106在本文中有时被称为“出口端口”。然而,注意,在一些实施例中,端口104、106中的每个端口既充当用于分组经由端口104、106进入网络设备102的入口端口,又充当用于分组经由端口104、106离开网络设备102的出口端口。尽管网络设备102被图示为包括四个入口端口104和四个出口端口106,但是在各种实施例中,网络设备102包括合适的其他数目的入口端口104和/或出口端口106。

网络设备102在图1中以简化形式被图示为包括分组处理器108,分组处理器108包括转发引擎110、内部存储器112和流控制引擎114。在一些实施例中,分组处理器108被配置作为处理单元的管线,诸如被配置为对分组执行相应处理操作的专用集成电路(asic)引擎的管线。在一个这样的实施例中,转发引擎110和流控制引擎114对应于管线中的处理单元中的相应处理单元。在其他实施例中,分组处理器108另外地或替换地使用并行处理架构,其中多个处理器执行机器可读指令(存储在耦合到多个处理器的一个或多个存储器设备中)以并行处理多个分组。在一种实施例中,内部存储器112在分组处理器108内部(例如,实施在与分组处理器108相同的管芯上)。在另一实施例中,内部存储器112的至少一部分在分组处理器108的外部(例如,实施在与分组处理器108分离的管芯上),但是仍然在网络设备102的内部(例如,与网络设备102的其他组件一起封装)。

在一种实施例中,分组处理器108耦合到入口端口104和出口端口106,并且被配置为处理经由入口端口104接收的分组,以至少确定一个或多个出口端口106,经由该一个或多个出口端口106,分组将被转发给耦合到该一个或多个出口端口106的一个或多个下游网络设备。例如,分组处理器108的转发引擎110被配置为,基于来自分组头部的信息来确定分组将被转发到的出口端口106中的一个或多个。在一种实施例中,转发引擎110包括或耦合到转发数据库(未示出),转发数据库存储与地址(例如,介质接入控制(mac)地址,互联网协议(ip)地址等)和/或其他合适信息相关联的转发信息(例如,端口信息)。在一种实施例中,转发引擎110被配置为利用头部信息在转发数据库中查找如下的信息,该信息指示分组将被转发到的一个或多个端口106。在一种实施例中,分组处理器108还执行分组的分类,例如以确定与分组相关联的优先级、分组所属的分组流等。

内部存储器112被配置为:当分组的分组头部、或表示分组并且包括与分组相对应的相关头部信息和/或元数据的其他数据单元正在由分组处理器108处理时,存储接收的分组,或至少存储接收的分组的有效载荷部分。在一种实施例中,内部存储器112包括共享缓冲空间,共享缓冲空间由多个入口端口104共享并且被配置为存储经由多个入口端口104接收的分组。例如,在一种实施例中,内部存储器112包括共享缓冲空间,该共享缓冲空间由入口端口104a-104d共享并且被配置为存储经由入口端口104a-104d接收的分组。

在一些场景和实施例中,例如当相比于分组可以由网络设备102处理和/或传输而言分组更快地由网络设备102接收时,网络设备102的内部存储器112变得拥塞。在一种实施例中,流控制引擎114(或其他合适的存储器利用率监测器)被配置为监测内部存储器112中的共享缓冲空间,并且基于监测共享缓冲空间来检测内部存储器112的拥塞状态。在一种实施例中,内部存储器112的拥塞状态表示内部存储器112中的共享缓冲空间正接近但尚未达到它的完全容量。在一种实施例中,一经检测到内部存储器112的拥塞状态,流控制引擎114执行一个或多个操作以防止内部存储器112的溢出,并且防止不能存储在内部存储器112中的分组的因此丢失。例如,一经检测到分组存储器112中的拥塞状态,流控制引擎114生成并且触发经由入口端口104的流控制消息的传输,以引起由耦合到入口端口104的上游网络设备103到网络设备102的分组流的暂时减少。为了便于解释,分组流的减少在本文中被描述为分组传输的暂时中止。然而,注意,在其他实施例中,分组流的减少以其他合适的方式被实施。例如,在一些实施例中,分组流的减少包括分组传输的速率的暂时降低。

在一种实施例中,当上游网络设备103中止向网络设备102的分组传输时,分组被暂时存储在上游网络设备103中包括的或者耦合到上游网络设备103的相应存储器120中。因此,在一种实施例中,由上游网络设备103向网络设备102的分组传输的中止,将网络设备102的内部存储器112中的拥塞卸载到上游网络设备103的存储器120。

在各种实施例中,可用于将分组存储在上游网络设备103中包括的或耦合到上游网络设备103的存储器120中的存储器空间相对地大于网络设备102的内部存储器112的缓冲空间。例如,在一种实施例中,上游网络设备103中包括的或耦合到上游网络设备103的相应存储器120独立地大于网络设备102的内部存储器112。作为更具体的示例,在网络设备102是网络交换机设备并且上游网络设备103是端点设备(诸如数据中心服务器设备)的实施例中,相应数据中心服务器设备103中包括的或耦合到相应数据中心服务器设备103的存储器120相对地大于网络交换机设备102的内部存储器112。在这样的实施例中,由上游网络设备103向网络设备102的分组传输的中止,将网络设备102的内部存储器112中的拥塞卸载到上游网络设备103中包括的或耦合到上游网络设备103的存储器120中可用的相对更大的存储器空间。在其他实施例中,上游网络设备103中包括的或耦合到上游网络设备103的相应存储器120在大小上等于或小于网络设备102的内部存储器112。然而,在至少一些实施例中,相应存储器120中的多个存储器的聚合存储器空间大于内部存储器112的缓冲空间。在这样的实施例中,由多个上游网络设备103向网络设备102的分组传输的中止,将网络设备102的内部存储器112中的拥塞卸载到多个上游网络设备103中包括的或耦合到多个上游网络设备103的存储器120中可用的相对更大的聚合存储器空间。

在各种实施例中,流控制引擎114实施一种交替方案,以使流控制在上游网络设备103的不同子集之间交替,以使流控制随时间分布在上游网络设备103的不同子集之中。例如,在一种实施例中,一经在第一时间检测到内部存储器112中的第一拥塞状态,流控制引擎114触发经由一个或多个端口104的第一子集朝向一个或多个上游网络设备103的第一子集的第一流控制消息的传输,而不触发经由未包括在端口104的第一子集中的任何端口104的第一流控制消息的传输。在一种实施例中,经由端口104的第一子集的第一流控制消息的传输使得上游网络设备103的第一子集中的上游网络设备103暂时中止向网络设备102的分组传输,而不使得未包括在上游网络设备103的第一子集中的任何上游网络设备103暂时中止向网络交换机设备102的分组传输。

在一种实施例中,第一流控制消息是暂停流控制消息,暂停流控制消息被配置为使得上游网络设备暂时暂停经由对应网络链路向网络设备102的全部分组的传输。在这一实施例中,响应于第一流控制消息,上游网络设备(例如,上游网络设备103)暂时中止经由对应网络链路向网络设备102的全部分组的传输。在另一实施例中,第一流控制消息是优先级流控制(pfc)消息,优先级流控制消息被配置为使得上游网络设备暂时暂停经由对应网络链路向网络设备102的特定的一个或多个优先级的分组的传输。在这一实施例中,响应于第一流控制消息,上游网络设备(例如,上游网络设备103)暂时中止经由对应网络链路向网络设备102的特定的一个或多个优先级的分组的传输,同时继续经由对应网络链路向网络设备102的其他优先级的分组的传输。在另一实施例中,第一流控制消息是另一合适的流控制消息。一般地,如本文使用的“流控制消息”是任何合适类型的流控制消息,其被配置为使得上游网络设备暂时中止经由对应网络链路向网络设备102的至少一些分组(诸如,全部分组,仅特定的一个或多个优先级的分组等)的传输。类似地,如本文使用的“暂时中止分组传输”表示至少一些分组(诸如,全部分组,仅特定的一个或多个优先级的分组等)的传输的暂时中止。

继续参考图1,在一种实施例中,流控制引擎114或其他合适的存储器拥塞监测器,继续监测内部存储器112中的拥塞。一经在第一时间之后的第二时间检测到内部存储器112中的第二拥塞状态,流控制引擎114触发经由一个或多个入口端口104的第二子集朝向一个或多个上游网络设备103的第二子集的第二流控制消息的传输,而不触发经由未包括在入口端口104的第二子集中的任何入口端口104的第二流控制消息的传输。在一种实施例中,入口端口104的第二子集不同于入口端口104的第一子集。例如,在一种实施例中,入口端口104的第二子集包括入口端口104的第一子集中不包括的一个或多个入口端口104。在一种实施例中,入口端口104的第一子集与端口104的第二子集是入口端口104的非重叠子集。在一种实施例中,经由入口端口104的第二子集的第二流控制消息的传输使得上游网络设备103的第二子集中的上游网络设备103暂时中止向网络设备102的分组传输。

在第一时间之后的第三时间,上游网络设备103的第一子集恢复定向到网络设备102的分组传输。例如,在一种实施例中,一经第一流控制消息中指定的暂停时间期满,上游网络设备103的第一子集恢复定向到网络设备102的分组传输。在另一实施例中,一经接收到恢复定向到网络设备102的分组传输的明确指令,上游网络设备103的第一子集恢复定向到网络设备102的分组传输。

类似地,在第二时间之后的第四时间,上游网络设备103的第二子集恢复定向到网络设备102的分组传输。例如,在一种实施例中,一经第二流控制消息中指定的暂停时间期满,上游网络设备103的第二子集恢复定向到网络设备102的分组传输。在另一实施例中,一经接收到恢复定向到网络设备102的分组传输的明确指令,上游网络设备103的第二子集恢复定向到网络设备102的分组传输。

随后,在一种实施例中,响应于检测到内部存储器112的拥塞状态,流控制引擎114触发经由端口104的第三子集朝向上游网络设备103的第三子集的第三流控制消息的传输,以此类推,直至到达端口104的最后子集,并且交替方案重复进行。在另一实施例中,流控制引擎114随机地或统计地选择端口104的如下子集,在内部存储器112中拥塞的不同时间经由这些子集来传输流控制消息。在其他实施例中,利用其他合适的交替方案。

在一种实施例中,因为流控制引擎114在内部存储器112中拥塞的不同时间触发经由端口104的不同子集的流控制消息的传输,所以流控制随时间被分布在上游网络设备103的子集之中。例如,在一种实施例中,在内部存储器112中拥塞的第一时间段期间,上游网络设备103的第一子集中止向网络设备102的分组传输,同时上游网络设备103的第二子集继续向网络设备102的分组传输。在一种实施例中,在内部存储器112中拥塞的第二时间段期间,上游网络设备103的第二子集中止向网络设备102的分组传输。在至少一些实施例中,第一时间段和第二时间段关于彼此被交错。在一种实施例中,将第一时间段和第二时间段交错使流控制随时间分布在上游网络设备103的子集之中,由此使可用链路带宽随时间分布在上游网络设备103的子集之中。

作为示例,在图1中图示的实施例中,网络设备102的第一端口104a经由第一网络链路105a耦合到第一上游网络设备103a,并且网络设备102的第二端口104d经由第二网络链路105b耦合到第二上游网络设备103b。在一种实施例中,在第一时间,一经检测到内部存储器112的拥塞状态,流控制器114(或其他合适的存储器拥塞监测器)生成并且触发经由端口104a朝向上游网络设备103a的流控制消息112的传输,而不触发经由端口104d向上游网络设备103b的流控制消息112的传输。在一种实施例中,响应于流控制消息122,上游网络设备103a暂时中止向网络设备102的分组传输。因此,在一种实施例中,网络设备102的内部存储器112中的拥塞开始下降。流控制引擎114(或其他合适的存储器拥塞监测器)继续监测内部存储器112中的拥塞,并且如果内部存储器112在第一时间之后的第二时间处于拥塞状态,则流控制引擎114生成并且触发经由端口104d向上游网络设备103b的流控制消息124的传输,而不触发经由端口104a向上游网络设备103a的流控制消息124的传输。在一种实施例中,响应于来自网络设备102的流控制消息124,上游网络设备103b暂时中止向网络设备102的分组传输。

在一种实施例中,流控制引擎114(或其他合适的存储器拥塞监测器)继续监测内部存储器112中的拥塞,并且在不同时间继续在经由端口104a和端口104d的流控制消息传输之间进行交替,由此使流控制随时间分布在上游网络设备103a和上游网络设备103b之中。在至少一些实施例中,将流控制随时间分布在上游网络设备103a和上游网络设备103b之中通常改进了网络链路105a和105b的利用率。例如,在一些场景和实施例中,经由端口104a的流控制消息122的传输导致内部存储器112中的拥塞的充分缓解,并且延迟或消除经由端口104d的流控制消息124的传输。

参考图2a,时序图200图示了根据实施例的随时间流逝由图1的上游网络设备103a和103b中相应的上游网络设备向网络设备102传输的分组的带宽。在时间t0,上游网络设备103a和上游网络设备103b两者正在经由相应的网络链路105a和105b向网络设备102传输分组。网络设备102接收由上游网络设备103a和上游网络设备103b传输的分组,并且将接收的分组中的至少一些分组暂时存储在内部存储器112中的共享缓冲器中。一经在时间t1检测到内部存储器112的共享缓冲器中的拥塞时,网络设备102向上游网络设备103a传输流控制消息,而不向上游网络设备103b传输流控制消息。在一种实施例中,在时间t2,响应于在时间t1向上游网络设备103a传输的流控制消息,上游网络设备103a中止经由网络链路105a向网络设备102的分组传输,并且替代地把将传输到网络设备102的分组缓冲在上游网络设备103a中包括的或耦合到上游网络设备103a的存储器120a中。然而,因为在时间t1没有传输流控制消息被传输给上游网络设备103b,所以上游网络设备103b继续经由网络链路105b向网络设备102传输分组。在一种实施例中,网络设备102因此停止经由网络链路105a从上游网络设备103a接收分组,同时继续经由网络链路105b从上游网络设备103b接收分组,而导致网络设备102接收的分组的总带宽减小。在一种实施例中,网络设备102继续将从上游网络设备103b接收的分组中的至少一些分组暂时存储在内部存储器112中。

随后,如果拥塞在内部存储器112中持续,则如在图2a中所见的示例中,在时间t3,网络设备102向上游网络设备103b传输流控制消息,而不向上游网络设备103a传输流控制消息。响应于传输到上游网络设备103b的流控制消息,在时间t4,上游网络设备103b中止经由网络链路105b向网络设备102的分组传输。在一种实施例中,上游网络设备103b替代地把将传输到网络设备102的分组缓冲在上游网络设备103b中包括的或耦合到上游网络设备103b的存储器120b中。在所图示的实施例中,在时间t4与时间t5之间,向网络设备102的分组传输被经由网络链路105a的上游网络设备103a和经由网络链路105b的上游网络设备103b两者所中止。在一种实施例中,分组传输的部分或完全减少促进了网络设备102的分组处理器108能够处理内部分组存储器112中存储的分组,并且缓解了内部分组存储器112的拥塞状态。

继续参考图2a,在时间t5,上游网络设备103a恢复经由网络链路105a向网络设备102的分组传输,例如,响应于指令上游网络设备103a恢复向网络设备102的传输的流控制消息,或者一经在时间t1向上游网络设备103a传输的流控制消息中所指示的暂停时间期满。然而,上游网络设备103b继续中止经由网络链路105b向网络设备102的分组传输。在一种实施例中,网络设备102开始经由网络链路105a从上游网络设备103b接收分组,并且将接收的分组中的至少一些分组暂时存储在内部存储器112中。在时间t6,上游网络设备103b恢复向网络设备102的分组传输,例如,响应于指令上游网络设备103b恢复向网络设备102的传输的流控制消息,或者一经在时间t3向上游网络设备103b传输的流控制消息中所指示的暂停时间期满。在图2a的示例中,在时间t6,上游网络设备103a和上游网络设备103b两者再次经由相应的网络链路105a和105b向网络设备102传输分组。在一种实施例中,网络设备102经由网络链路105a从上游网络设备103a且经由网络链路105b从上游网络设备103b接收分组,并且将接收的分组中的至少一些分组暂时存储在内部存储器112中。

在一种实施例中,网络设备102继续监测内部存储器112中的共享缓冲空间中的拥塞,并且在以下之间进行选择性地交替:使得上游网络设备103a和上游网络设备103b中的一个中止向网络设备102的分组传输,而不使得上游网络设备103a和上游网络设备103b中的另一个中止向网络设备102的分组传输。哪个上游网络设备103被中止的决定基于各种考虑被作出,包括:例如,网络设备102与上游网络设备103之间的相应网络链路105的相对带宽、网络设备102的内部存储器112正变得拥塞的速率、从相应的上游网络设备103到网络设备102的不同流的总优先级、中止的随机化等。在至少一些实施例中,使流控制在上游网络设备103a与上游网络设备103b之间交替,通常减少了向网络设备102的分组传输需要被经由网络链路105a的上游网络设备103a以及经由网络链路105b的上游网络设备103b两者所中止的时间量(例如,t4与t5之间的时间),由此,相比于网络设备102的共享缓冲器中的拥塞导致向共享该缓冲器的多个端口的分组转移的同时中止的系统而言,提高了网络链路105a和网络链路105b的链路利用率。

简要地参考图2b,时序图250图示了根据实施例的由上游网络设备103a和上游网络设备103b两者传输到网络设备102的分组的组合带宽。时序图250图示了来自上游网络设备103a和上游网络设备103b的分组流根据图2a的时序图200被控制的实施例中随时间的组合带宽。参考时序图250,在时间t0,传输到网络设备102的分组的组合带宽等于上游网络设备103a传输到网络设备102的分组的完全带宽与上游网络设备103b传输到网络设备102的分组的完全带宽之和。在所图示的实施例中,在时间t2,归因于由上游网络设备103向网络设备102的分组传输的中止,传输到网络设备102的分组的组合带宽减小,但不是完全被中止。在时间t4,向网络设备102的分组的组合流被完全中止。随后,在时间t5,归因于由上游网络设备103a向网络设备102的分组传输的恢复,向网络设备102的分组的组合流被部分地恢复。在所图示的实施例中,在时间t6,向网络设备102的分组的组合流增大而再次匹配时间t0的带宽。在时序图250中,向网络设备102的分组流仅在时间t4与时间t5之间的相对短的时间段被完全中止。在一种实施例中,相比于网络设备102的共享缓冲空间中的拥塞导致从多个(例如,全部)上游网络设备向对共享缓冲空间共享的多个(例如,全部)入口端口的分组转移的中止的系统而言,向网络设备102的分组流完全被中止的在时间t4与时间t5之间的时间段相对地短。在一些实施例中,使流控制在上游网络设备103a与上游网络设备103b之间交替,完全消除了向网络设备102的分组传输由上游网络设备103a和上游网络设备103b两者同时中止的时间段。

返回参考图1,在一些实施例中,流控制引擎114(或其他合适的存储器拥塞监测器)被配置为:通过监测内部存储器112中的共享缓冲空间的当前填充水平,并且将共享缓冲空间112的当前填充水平与门限进行比较,来监测内部存储器112中的拥塞。流控制引擎被配置为:通过实施不同的门限用于触发经由耦合到相应上游网络设备103的相应端口104的流控制消息,来使流控制分布在上游网络设备103之中。在一种实施例中,流控制引擎114被配置为随机地生成不同门限用于触发经由不同端口104的流控制消息的传输。例如,流控制引擎114包括随机门限生成器(未示出),其被配置为在不同的测量时间输出与相应端口104或端口104的相应子集相对应的随机化的门限值的集合。在一种实施例中,随机门限生成器被配置为生成i*平均响应时间的随机化的门限值,其中i是在0与2之间的随机生成的数字,并且平均响应时间是流控制引擎114生成流控制消息的时间与网络设备102响应于流控制消息而实际停止接收分组的时间之间的平均时间量。在其他实施例中,使用其他合适的随机化的门限值。

在一种实施例中,流控制引擎114被配置为:将内部存储器112中的共享缓冲空间的填充水平与对应于相应端口104的相应门限值中的每个进行比较。在给定的测量时间,如果内部存储器112中的共享缓冲空间的当前填充水平超过与特定端口104或端口104的特定子集相对应的门限值,则流控制引擎114生成并且触发经由特定端口104或端口104的特定子集的流控制消息的传输,而不触发经由其他端口104的流控制消息的传输。因此,例如,在一种实施例中,在第一时间,基于内部存储器112中的共享缓冲空间的当前填充水平与对应于相应端口104的相应门限值中的每个的比较,流控制引擎114生成并且触发朝向一个或多个第一上游网络设备103的流控制消息的传输,而不触发朝向上游网络设备103中的其他一个或多个上游网络设备的流控制消息的传输。随后,在一种实施例中,在第二时间,基于内部存储器112中的共享缓冲空间的当前填充水平与对应于相应端口104的相应门限中的每个的比较,流控制引擎114生成并且触发朝向一个或多个第二上游网络设备103的流控制消息的传输,而不触发朝向其他上游网络设备103的流控制消息的传输,以此类推。

在一种实施例中,作为更具体的示例,在示例场景中,在第一时间针对端口104a生成的门限相对低于在第一时间针对端口104d生成的相对较高门限。在这种示例场景中,在第一时间的当前填充水平超过对应于端口104a的相对较低门限,但没有超过对应于端口104d的相对较高门限。因此,在这种场景中,流控制引擎114在第一时间生成并且触发经由端口104a的流控制消息122的传输,而不触发经由端口104d的流控制消息122的传输。另一方面,在一种实施例中,在第二时间,针对端口104a生成的门限相对高于针对端口104d生成的相对较低门限,并且在第二时间的当前填充水平未超过对应于端口104a的相对较高门限,但是超过对应于端口104d的相对较低门限,即使例如在第二时间的当前填充水平等同于或低于在第一时间的当前填充水平。因此,在这种场景中,在一种实施例中,流控制引擎114在第二时间生成并且触发经由端口104d的流控制消息124的传输,而不触发经由端口104a的流控制消息124的传输。

在另一实施例中,流控制引擎114被配置为利用定时调度用于使流控制分布在上游网络设备103之中。例如,流控制引擎114被配置为利用指定多个时隙的重复定时调度,如果在这些时隙中不同时隙中,内部存储器112的当前填充水平超过预定门限,则该多个时隙用于经由不同端口104或者经由端口104的不同子集的流控制消息的传输。作为示例,在一种实施例中,重复定时调度指定:第一时隙,用于经由端口104的第一子集的流控制消息的传输;第二时隙,用于经由端口104的第二子集的流控制消息的传输;第三时隙,用于经由端口104的第三子集的流控制消息的传输;以此类推。在一种实施例中,当到达端口104的最后调度的子集时,定时调度以指定经由端口104的第一子集的流控制消息的传输的第一时隙开始而被重复。流控制引擎114被配置为将内部存储器112中的共享缓冲空间的(对应于当前时隙的)当前填充水平与预定门限进行比较。如果i)内部存储器112中的共享缓冲空间的当前填充水平超过预定门限,并且ii)当前时隙是第一时隙,则流控制引擎114触发经由被指定用于第一时隙中的流控制的一个或多个端口104的第一子集的流控制消息的传输。在一种实施例中,流控制引擎114触发经由一个或多个端口104的第一子集的流控制消息的传输,而不触发经由未包括在第一子集中的端口104的流控制消息的传输。在一种实施例中,流控制引擎114(或其他合适的存储器拥塞监测器)继续监测内部存储器112的填充水平,并且将内部存储器112的当前填充水平与预定门限进行比较。因此,在一种实施例中,如果i)内部存储器112的当前填充水平超过预定门限,并且ii)当前时隙是第二时隙,则流控制引擎114触发经由被指定用于第二时隙中的流控制的一个或多个端口104的第二子集的流控制消息的传输,而不触发经由未包括在第二子集中的其他端口104的流控制消息的传输,以此类推。

在另一实施例中,流控制引擎114被配置为:通过统计地确定是否经由相应端口104传输流控制消息,来使流控制分布在上游网络设备103之中。例如,在一种实施例中,流控制引擎114被配置为利用概率来确定是否经由端口104传输流控制消息,该概率随着增大内部存储器112的共享缓冲空间的填充水平而增大。例如,在一些实施例中,流控制引擎114基于从统计曲线获得的概率来确定是否经由相应的端口104或者端口104的子集传输流控制消息,统计曲线诸如早期随机检测(red)曲线或者加权早期随机检测(wred)曲线。在这一实施例中,如果内部存储器112中的共享缓冲空间的当前填充水平低于最小门限值,则流控制引擎114不经由端口104中的任何端口传输流控制消息。如果内部存储器112中的共享缓冲空间的当前填充水平高于最大门限值,则流控制引擎114触发经由共享缓冲空间的全部端口104的流控制消息的传输。然而,如果内部存储器112中的共享缓冲空间的当前填充水平在最小门限值与最大门限值之间,则流控制引擎114基于概率确定是否经由端口104的每个相应子集来传输流控制消息,其中概率随着增大内部存储器112中的共享缓冲空间的填充水平而增大。在一种实施例中,是否经由端口104的相应子集传输流控制消息的概率性确定导致针对端口104的不同子集所作出的不同决定。因此,在一种实施例中,响应于检测到内部存储器112中的共享缓冲空间中的拥塞状态,流控制引擎114在不同时间触发经由端口104的不同子集的流控制消息的传输,由此使流控制分布在上游网络设备103的对应的不同子集之中。在一些实施例中,端口104的不同子集被指配不同的权重,其使得流控制消息相对更有可能地、或者相对更不可能地经由端口104的特定子集被传输。在一些实施例中,流控制引擎114生成与端口104的相应子集相对应的随机化的权重,并且将不同的随机化的权重应用到基于共享缓冲空间的当前填充水平所获得的概率,以确定是否经由端口104的不同子集传输流控制消息。

在一些实施例中,附加于或替代由网络设备102实施的流控制的分布,流控制的分布由上游网络设备103实施。例如,在一种实施例中,上游网络设备103的不同子集被配置为在不同时间(例如,在不同的时隙期间)对流控制消息进行响应。在这一实施例中,当上游网络设备103经由网络链路接收到流控制消息时,上游网络设备103不是必然通过按经由网络链路的流控制消息所指令的那样中止分组传输来进行响应。替代地,上游网络设备103检查当前时隙是否被指定用于上游网络设备103的流控制。在一种实施例中,如果当前时隙未被指定用于上游网络设备103的流控制,则上游网络设备103忽略流控制消息。在另一实施例中,如果当前时隙未被指定用于上游网络设备103的流控制,在一种实施例中,则上游网络设备103继续经由网络链路传输分组,直到它的所指定的流控制时隙,并且然后中止经由网络链路的分组传输。

图3是图示了根据实施例的用于控制网络设备处的拥塞的示例方法300的流程图。在一种实施例中,图1的网络设备102实施方法300以控制网络设备102的内部存储器112中的拥塞。例如,在一种实施例中,网络设备102的流控制引擎114被配置为实施方法300的至少一部分来控制内部存储器112中的拥塞。为了便于解释,下面参考图1的网络设备102来描述方法300。然而,在其他实施例中,方法300由与图1的网络设备102不同的合适网络设备来实施。

在块302处,分组从多个上游网络设备中的相应上游网络设备被接收,相应上游网络设备经由多个网络链路中的相应网络链路耦合到网络交换机设备,相应网络链路耦合到网络交换机设备的多个端口中的相应端口。例如,多个分组经由相应端口104被接收,相应端口104经由相应网络链路105耦合到相应上游网络设备103。

在块304处,在块302处接收的分组中的至少一些分组被暂时存储在网络交换机设备的内部存储器中。例如,分组中的至少一些分组被暂时存储在网络交换机设备102的内部存储器112中。作为更具体的示例,分组中的至少一些分组被暂时存储在内部存储器112中的共享缓冲空间中,缓冲空间被共享用于存储经由多个端口104接收的分组。

在块306处,内部存储器中的第一拥塞状态被检测到。例如,在一种实施例中,流控制引擎114检测到内部存储器112中的第一拥塞状态。在一种实施例中,第一拥塞状态表示内部存储器112中的共享缓冲空间正接近耗尽。在一种实施例中,第一拥塞状态基于共享缓冲空间的当前填充水平而被确定。例如,在一种实施例中,如果共享缓冲空间的当前填充水平超过第一随机化门限,则第一拥塞状态被检测到。在另一实施例中,如果共享缓冲空间的填充水平在第一时隙期间超过预定门限,则第一拥塞状态被检测到。在又另一实施例中,第一拥塞状态被概率性地确定,检测到第一拥塞状态的概率随着增大共享缓冲空间的填充水平而增大。在其他实施例中,第一拥塞状态以其他合适的方式被检测。

在块308处,响应于检测到内部存储器中的第一拥塞状态,流控制引擎114触发经由耦合到上游网络设备103的第一子集的端口104的第一子集的第一流控制消息的传输,而不触发经由未包括在端口104的第一子集中的任何端口104的第一流控制消息的传输,以使得上游网络设备103的第一子集中的上游网络设备暂时中止向网络交换机设备的分组传输,而不使得未包括在上游网络设备103的第一子集中的任何上游网络设备103暂时中止向网络交换机设备102的分组传输。

在块310处,交替方案被用来在使得多个上游网络设备的不同子集暂时中止向网络交换机设备的分组传输之间进行交替,同时流控制引擎继续监测网络交换机设备的内部存储器中的拥塞。因此,例如,在检测到第一拥塞状态之后的时间,流控制引擎114检测到内部存储器112中的第二拥塞状态。在一种实施例中,第二拥塞状态基于在后续时间的内部存储器112中的共享缓冲空间的当前填充水平而被确定。例如,在一种实施例中,如果在后续时间的内部存储器112中的共享缓冲空间的当前填充水平超过第二随机化门限,则第二拥塞状态被检测到。在另一实施例中,如果在第二时隙期间,在后续时间的内部存储器112中的共享缓冲空间的填充水平超过预定门限,则第二拥塞状态被检测到。在又另一实施例中,第二拥塞状态被概率性地确定,检测到第二拥塞状态的概率随着增大共享缓冲空间的填充水平而增大。在其他实施例中,第二拥塞状态以其他合适的方式被检测。

响应于检测到在后续时间的内部存储器112中的共享缓冲空间的第二拥塞状态,流控制引擎114触发经由耦合到上游网络设备的第二子集(不同于上游网络设备的第一子集)的端口的第二子集(不同于端口的第一子集)的第二流控制消息的传输。在一种实施例中,流控制引擎114触发经由端口104的第二子集的第二流控制消息的传输,而不触发经由未包括在端口104的第二子集中的任何端口104的第二流控制消息的传输,以使得上游网络设备103的第二子集中的上游网络设备103暂时中止向网络交换机设备102的分组传输,而不使得未包括在上游网络设备103的第二子集中的任何上游网络设备103暂时中止向网络交换机设备102的分组传输。

在一种实施例中,一种用于控制网络交换机设备处的拥塞的方法包括:在网络交换机设备处从多个上游网络设备中的相应上游网络设备接收分组,相应上游网络设备经由网络交换机设备的多个端口中的相应端口耦合到网络交换机设备;将接收的分组中的至少一些分组暂时存储在网络交换机设备的内部存储器中;利用网络交换机设备的流控制引擎来检测网络交换机设备的内部存储器中的第一拥塞状态;响应于检测到内部存储器中的第一拥塞状态,利用流控制引擎来触发经由耦合到多个上游网络设备中的第一上游网络设备子集的多个端口中的第一端口子集的第一流控制消息的传输,而不触发经由未包括在第一端口子集中的任何端口的流控制消息的传输,以使得第一上游网络设备子集中的上游网络设备暂时中止向网络交换机设备的分组传输,而不使得多个上行链路网络设备中的未包括在第一上游网络设备子集中的任何上游网络设备暂时中止向网络交换机设备的分组传输;以及利用流控制引擎在使得多个上游网络设备的不同子集暂时中止向网络交换机设备的分组传输之间进行交替,同时流控制引擎继续监测网络交换机设备的内部存储器中的拥塞。

在其他实施例中,该方法包括以下特征中的一个或多个特征的任何合适组合。

在使得多个上游网络设备的不同子集暂时中止向网络交换机设备的分组传输之间进行交替包括:在检测到网络交换机设备的内部存储器中的第一阻塞状态之后,利用流控制引擎来检测网络交换机设备的内部存储器中的第二拥塞状态,以及响应于检测到内部存储器中的第二拥塞状态,利用流控制引擎来触发经由耦合到多个上游网络设备中的第二上游网络设备子集的多个端口中的第二端口子集的第二流控制消息的传输,而不触发经由未包括在第二端口子集中的任何端口的第二流控制消息的传输,以使得第二上游网络设备子集中的上游网络设备暂时中止向网络交换机设备的分组传输,而不使得未包括在第二上游网络设备子集中的任何上游网络设备向网络交换机设备的分组传输。

将接收的分组中的至少一些分组暂时存储在网络交换机设备的内部存储器中包括:将至少经由第一端口子集和第二端口子集接收的分组暂时存储在内部存储器中设置的共享缓冲器中。

检测内部存储器中的第一拥塞状态和第二拥塞状态包括:基于监测内部存储器中设置的共享缓冲器的填充水平来检测拥塞状态。

检测第一拥塞状态包括:如果共享缓冲器的填充水平满足第一拥塞标准,则检测到第一拥塞状态。

检测第二拥塞状态包括:如果共享缓冲器的填充水平满足与第一拥塞标准不同的第二拥塞标准,则检测到第二拥塞状态。

如果共享缓冲器的填充水平满足第一拥塞标准,则检测到第一拥塞状态包括:如果共享缓冲器的填充水平超过第一门限值,则检测到第一拥塞状态。

如果共享缓冲器的填充水平满足第二拥塞标准,则检测到第二拥塞状态包括:如果共享缓冲器的填充水平超过与第一门限值不同的第二门限值,则检测到第二拥塞状态。

该方法进一步包括:在检测第一拥塞状态和检测第二拥塞状态之前,使用随机数生成器生成第一门限值和第二门限值。

生成第一门限值包括:将平均流控制响应时间乘以由随机数生成器生成的第一随机数,其中平均流控制响应时间基于耦合到网络交换机设备的多个上游网络设备中的相应上游网络设备的相应流控制响应时间而被确定。

生成第二门限值包括:将平均流控制响应时间乘以由随机数生成器生成的第二随机数。

检测第一拥塞状态包括:如果在第一时隙期间共享缓冲器的第一填充水平超过预定门限,则检测到第一拥塞状态。

检测第二拥塞状态包括:如果在与第一时隙不同的第二时隙期间共享缓冲器的第二填充水平超过预定门限,则检测到第二拥塞状态。

检测第一拥塞状态和第二拥塞状态包括:概率性地确定第一拥塞状态和第二拥塞状态,其中确定第一拥塞状态和第二拥塞状态的概率随着增大共享缓冲器的填充水平而增大。

触发第一流控制消息的传输包括:触发第一优先级流控制(pfc)消息的传输,以使得第一上游网络设备暂时中止向网络交换机设备的特定优先级的分组的传输达到第一指定时间段。

在另一实施例中,一种网络交换机设备包括:多个端口,用于经由相应网络链路耦合到多个上游网络设备中的相应上游网络设备;内部存储器,被配置为暂时存储经由多个端口中的相应端口接收的至少一些分组;以及流控制引擎。流控制引擎被配置为:检测网络交换机设备的内部存储器中的第一拥塞状态;响应于检测到内部存储器中的第一拥塞状态,触发经由耦合到多个上游网络设备中的第一上游网络设备子集的多个端口中的第一端口子集的第一流控制消息的传输,而不触发经由未包括在第一端口子集中的任何端口的流控制消息的传输,以使得第一上游网络设备子集中的上游网络设备暂时中止向网络交换机设备的分组传输,而不使得多个上游网络设备中的未包括在第一上游网络设备子集中的任何上游网络设备暂时中止向网络交换机设备的分组传输;以及在使得多个上游网络设备的不同子集暂时中止向网络交换机设备的分组传输之间进行交替,同时流控制引擎继续监测网络交换机设备的内部存储器中的拥塞。

在其他实施例中,网络交换机设备包括以下特征中的一个或多个特征的任何合适的组合。

流控制引擎被配置为:在检测到网络交换机设备的内部存储器中的第一拥塞状态之后,检测网络交换机设备的内部存储器中的第二拥塞状态,以及响应于检测到内部存储器中的第二拥塞状态,触发经由耦合到多个上游网络设备中的第二上游网络设备子集的多个端口中的第二端口子集的第二流控制消息的传输,而不触发经由未包括在第二端口子集中的任何端口的第二流控制消息的传输,以使得第二上游网络设备子集中的上游网络设备暂时中止向网络交换机设备的分组传输,而不使得未包括在第二上游网络设备子集中的任何上游网络设备暂时中止向网络交换机设备的分组传输。

内部存储器被配置为:将至少经由第一端口子集和第二端口子集接收的分组暂时存储在共享缓冲器中。

流控制引擎被配置为:基于监测内部存储器中设置的共享缓冲器的填充水平,来检测内部存储器中的第一拥塞状态和第二拥塞状态。

流控制引擎被配置为:如果共享缓冲器的填充水平满足第一拥塞标准,则检测到第一拥塞状态。

流控制引擎被配置为:如果共享缓冲器的填充水平满足与第一拥塞标准不同的第二拥塞标准,则检测到第二拥塞状态。

流控制引擎被配置为:如果共享缓冲器的填充水平超过第一门限值,则检测到第一拥塞状态。

流控制引擎被配置为:如果共享缓冲器的填充水平超过与第一门限值不同的第二门限值,则检测到第二拥塞状态。

流控制引擎进一步被配置为:在检测第一拥塞状态和检测第二拥塞状态之前,使用随机数生成器生成第一门限值和第二门限值。

流控制引擎被配置为:至少通过将平均流控制响应时间乘以由随机数生成器生成的第一随机数来生成第一门限值,其中平均流控制响应时间基于耦合到网络交换机设备的多个上游网络设备中的相应上游网络设备的相应流控制响应时间而被确定,以及至少通过将平均流控制响应时间乘以由随机数生成器生成的第二随机数来生成第二门限值。

流控制引擎被配置为:如果在第一时隙期间共享缓冲器的第一填充水平超过预定门限,则检测到第一拥塞状态。

流控制引擎被配置为:如果在与第一时隙不同的第二时隙期间共享缓冲器的第二填充水平超过预定门限,则检测到第二拥塞状态。

流控制引擎被配置为:至少通过概率性地确定第一拥塞状态和第二拥塞状态来检测第一拥塞状态和第二拥塞状态,其中确定第一拥塞状态和第二拥塞状态的概率随着增大共享缓冲器的填充水平而增大。

流控制引擎被配置为:至少通过触发第一优先级流控制(pfc)消息的传输,以使得第一上游网络设备暂时中止向网络交换机设备的特定优先级的分组的传输达到第一指定时间段,来触发第一流控制消息的传输。

上面描述的各种块、操作、以及技术中的至少一些可以利用硬件、执行固件指令的处理器、执行软件指令的处理器、或者它们的任何组合来实施。

当在硬件中实施时,硬件可以包括分立组件、集成电路、专用集成电路(asic)、可编程逻辑器件(pld)等中的一个或多个。

当利用执行软件或固件指令的处理器来实施时,软件或固件指令可以存储在任何计算机可读存储器中,诸如在磁盘、光盘、或其他存储介质上、在ram或rom或闪存、处理器、硬盘驱动器、光盘驱动器、磁带驱动器中,等等。软件或固件指令可以包括机器可读指令,当机器可读指令由一个或多个处理器执行时,使得一个或多个处理器执行各种动作。

尽管已经参考具体示例描述了本发明,但是这些示例意图为说明性的而非对本发明的限制,对所公开的实施例可以进行改变、添加和/或删除而不脱离本发明的范围。例如,上面描述的方法或技术的一个或多个部分可以按不同顺序(或并发地)被执行并且仍然实现合意的结果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1