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

文档序号:17120590发布日期:2019-03-15 23:45阅读:235来源:国知局
网络设备中的拥塞避免的制作方法

本公开要求2016年5月18日提交的名称为“congestionavoidanceinnetworknodes”的美国临时专利申请no.62/338,345的权益,其据此以它的整体通过引用被并入。

本公开一般地涉及网络设备,诸如网络交换机、网桥、路由器等,并且更特别地涉及在网络设备中处理分组。



背景技术:

网络设备(诸如网桥和路由器)基于分组中的地址通过网络转发分组。网络设备通常包括耦合到不同网络链路的多个端口。网络设备可以经由一个端口来接收分组,并且处理在分组的报头中的地址信息,以决定网络交换机应当经由哪个或哪些其他端口来传输分组。网络设备然后将分组或与分组相关联的分组描述符入队在与一个或多个端口相对应的一个或多个传输队列中,以用于分组经由一个或多个所确定的端口的随后传输。当分组被调度以用于经由端口的传输时,网络设备将分组或与分组相关联的分组描述符从对应的传输队列中出队,并且将分组转发到该端口以用于分组经由该端口的传输。

网络设备经常实施各种流量管理和拥塞避免技术,以在发生拥塞时控制到网络设备的业务流,发生拥塞例如是由于网络设备中缺少足够的资源,诸如可用于对等待从网络设备传输的分组进行排队的缓冲空间。这样的流量管理机制常规地在网络设备中的资源的使用超过静态定义的、预定的阈值时在网络设备中被触发。



技术实现要素:

在一种实施例中,一种用于管理到网络设备的业务流的方法包括:在网络设备的分组处理器处接收从网络接收的分组;利用分组处理器,在网络设备的多个端口之中,确定至少一个端口,分组将经由该至少一个端口从网络设备被传输;利用分组处理器来确定网络设备的缓冲存储器中的空闲缓冲空间的量;利用分组处理器至少部分地基于空闲缓冲空间的量,动态地确定相应阈值,相应阈值用于基于分组来触发多个流量管理操作中的流量管理操作被执行,包括:确定用于触发多个流量管理操作中的第一流量管理操作的第一阈值、以及用于触发多个流量管理操作中的第二流量管理操作的第二阈值;利用分组处理器,使用相应阈值来确定关于分组是否触发多个流量管理操作中的流量管理操作,包括:使用第一阈值来确定是否触发多个流量管理操作中的第一流量管理操作,以及使用第二阈值来确定是否使用第二阈值触发流量管理操作中的第二流量管理操作;以及利用分组处理器,来执行关于分组基于相应阈值中的对应的一个阈值被确定为将被触发的的流量管理操作中的一个或多个流量管理操作。

在另一种实施例中,一种网络设备包括:多个端口、缓冲存储器、以及耦合到缓冲存储器的分组处理器,分组处理器被配置为:从网络接收分组;在网络设备的多个端口之中,确定至少一个端口,分组将经由该至少一个端口从网络设备被传输;确定缓冲存储器中的空闲缓冲空间的量;至少部分地基于空闲缓冲空间的量来确定相应阈值,相应阈值将被用于基于分组来触发多个流量管理操作中的流量管理操作被执行,分组处理器被配置为确定用于触发多个流量管理操作中的第一流量管理操作的第一阈值、以及用于触发多个流量管理操作中的第二流量管理操作的第二阈值;使用相应阈值来确定关于分组是否触发多个流量管理操作中的一个流量管理操作,分组处理器被配置为使用第一阈值来确定是否触发多个流量管理操作中的第一流量管理操作,以及使用第二阈值来确定是否使用第二阈值触发流量管理操作中的第二流量管理操作;以及执行关于分组基于相应阈值中的对应的一个阈值被确定为将被触发的流量管理操作中的一个或多个流量管理操作。

附图说明

图1是根据一种实施例的示例网络设备的框图。

图2是根据一种实施例的与图1的网络设备一起使用的拥塞避免系统的框图。

图3是图示了根据一种实施例的用于在网络设备中执行流量管理操作的示例方法的流程图。

具体实施方式

在本文描述的各种实施例中,网络设备基于接收的分组来执行各种流量管理操作,以管理到网络设备的端口的业务流。在一种实施例中,当网络设备的资源的使用超过动态确定的阈值时,各种流量管理操作被触发。作为示例,在一种实施例中,分组缓冲器的填充水平与动态确定的阈值进行比较,并且如果缓冲器的填充水平超过动态确定的阈值,则对应的流量管理操作被触发。在一种实施例中,当网络设备接收到分组时,网络设备基于由网络设备使用的资源的当前状态来确定相应的阈值,相应的阈值用于触发关于该分组将被执行的多个不同的流量管理操作中的流量管理操作。在一些实施例中,网络设备进一步基于其他因素来确定相应的阈值,诸如分组所属于的流、分组所属于的流的优先级、分组被定向到的端口等。网络设备然后基于动态确定的相应阈值来确定是否触发流量管理操作中的对应的流量管理操作,并且关于分组来执行所触发的流量管理操作。例如,在各种实施例中,网络设备执行以下中的一项或多项:丢弃分组以用信号通知网络设备中的拥塞,基于分组来生成流控制消息,对分组进行镜像以用于进一步的分析等。在一种实施例中,多个动态阈值被用于触发多个流量管理操作。换言之,第一动态确定的阈值被用于触发第一流量操作,而第二动态确定的阈值(其可以与第一动态确定的阈值相同或可以不相同)被用于确定第二流量操作,即使缓冲器的实际填充水平可能保持不变。在至少一些实施例中,与使用静态阈值用于触发这样的流量管理操作的系统相比较,动态确定的阈值的使用通常改进了网络设备中的资源例如在不同分组流或不同端口之间的共享,并且改进了网络设备是其一部分的网络的总体流量管理和操作。

图1是根据一种实施例的实施本文描述的流量管理技术的示例网络设备100的框图。网络设备100包括通信地耦合到多个网络链路(未示出)的多个端口104a-104f。虽然图1中图示了六个端口104,但是在各种实施例中,网络设备100包括任何合适数目的端口104。在一种实施例中,网络设备经由端口104接收的分组被提供给分组处理器108,以处理该分组。分组处理器108包括分组处理单元110。分组处理单元110通常处理分组以至少确定一个或多个端口104,分组将经由该一个或多个端口104从网络设备100被传输。例如,分组处理单元110包括转发引擎(未示出),转发引擎被配置为基于来自分组报头的信息来确定分组将被转发到的端口104中的一个或多个端口。在一种实施例中,转发引擎包括或耦合到转发数据库(未示出),转发数据库存储与地址(例如,介质接入控制(mac)地址、互联网协议(ip)地址等)相关联的转发信息(例如,端口信息)、和/或其他合适的信息。在一种实施例中,转发引擎被配置为利用报头信息在转发数据库中查找信息,该信息指示分组将被转发到的一个或多个端口104。在一种实施例中,分组处理单元110还执行分组的分类,例如以确定与分组相关联的优先级、分组所属于的分组流等。

在一种实施例中,网络设备100包括分组存储器111,分组存储器111被配置为当分组正在由处理单元110处理时存储分组。在一种实施例中,当网络设备100接收到分组时,网络设备100将分组的至少一部分存储在分组存储器111中。此外,在一种实施例中,网络设备100生成与分组相关联的分组描述符,并且分组使用分组描述符而不是分组本身被处理。例如,分组处理单元110被配置为将分组存储在分组存储器110中,生成与分组相关联的分组描述符,以及使用分组描述符来处理分组。在另一种实施例中,网络设备100内的另一合适的设备或模块被配置为将分组存储在分组存储器111中,生成与分组相关联的分组描述符,以及将分组描述符提供给处理单元110以用于分组的处理。分组描述符包含分组处理单元110利用以处理分组的信息。在一种实施例中,当分组将从网络设备100被传输时,分组从存储器111中被取回,并且被传送给端口104以用于分组的传输。为了便于解释,在后文中术语“分组”被用于指代分组本身或指代与分组相关联的分组描述符。

在一种实施例中,由处理单元110处理的分组被入队在共享的缓冲存储器114中的多个外出队列112之一,以用于分组从网络设备100的随后传输。在一种实施例中,外出队列112对应于相应的端口104和相应的业务流优先级。例如,在一种实施例中,外出队列112的第一子集对应于第一端口104端口(例如,端口104a)并且被用于存储将经由第一端口104传输的分组,其中队列112的第一子集中的相应队列112被用于存储如下的分组,这些分组对应于与相应优先级相关联的业务流。类似地,在一种实施例中,外出队列112的第二子集对应于第二端口104(例如,端口104b)并且被用于存储将经由第二端口104传输的分组,其中队列112的第二子集中的相应队列112被用于存储如下的分组,这些分组对应于与相应优先级相关联的业务流,以此类推。一般而言,在一种实施例中,由分组处理单元110处理的分组被入队在适当的一个或多个外出队列112中,以用于分组经由针对分组所确定的一个或多个端口104的随后传输。随后,当分组被调度用于从网络设备100的传输时,分组从分组被排队的外出队列112中被出队,并且被转发到对应的端口104以用于分组经由端口104的传输。

在一种实施例中,分组处理器108包括拥塞避免系统116,拥塞避免系统116被配置为触发与管理到网络设备100的业务流相关的各种流量管理操作,例如以减少网络设备100中的拥塞,以减轻在耦合到网络设备100的一个或多个端口104的一个或多个下游网络设备或上游网络设备处的拥塞,以防止行进经过网络设备100的分组的丢失,等等。虽然拥塞避免系统116在图1中被图示为与分组处理单元110分离,但是在一种实施例中,拥塞避免系统116被包括在分组处理单元110中。例如,在一种实施例中,分组处理单元110包括被布置在流水线中的多个处理引擎,并且拥塞避免系统116被包括在作为流水线中的引擎之一的分组处理单元110中。在其他实施例中,分组处理单元110包括一个或多个“运行到完成”处理引擎,该一个或多个运行到完成处理引擎分别被配置为:例如根据可编程指令,对分组执行多个处理操作,包括本文描述的流量管理操作。

在一种实施例中,如果拥塞避免系统116确定一个或多个流量管理操作针对特定分组被触发,则拥塞避免系统116向分组处理单元110指示该一个或多个流量管理操作将关于该分组被执行。例如,拥塞避免系统116通过以下来向分组处理单元110指示一个或多个流量管理操作将关于分组被执行:将这样的指示包括在与分组相关联的分组描述符中,以及将分组描述符传递给分组处理单元110。在一种实施例中,分组处理单元110被配置为使用与分组相关联的分组描述符来进一步处理分组。在一种实施例中,分组处理单元110被配置为根据与分组相关联的分组描述符中的指示,来关于分组执行一个或多个流量管理操作。

在一种实施例中,拥塞避免系统116包括拥塞避免触发引擎118和动态阈值确定引擎120。虽然动态阈值确定引擎120在图1中被图示为耦合到拥塞避免触发引擎118,但是在其他实施例中,动态阈值确定引擎120替代地被包括在拥塞避免触发引擎118中。在一种实施例中,动态阈值确定引擎120被配置为针对由拥塞避免系统116接收的每个分组在逐分组的基础上动态地确定多个阈值121,并且将动态确定的阈值121提供给拥塞避免触发引擎118。在一种实施例中,拥塞避免触发引擎118被配置为使用由动态阈值确定引擎120提供的动态确定的阈值121来确定是否针对分组触发各种流量管理操作。在一种实施例中,拥塞避免触发引擎118被配置为基于如下的比较来针对分组进行上述确定,这些比较是分组将被入队的外出队列112的当前填充水平,或与分组经由其被接收的进入端口104相对应的进入队列的当前填充水平(并且对于优先级流控制,是与分组的优先级相对应的特定进入队列),与由动态阈值确定引擎120针对分组所确定的相应阈值121的比较。在一种实施例中,拥塞避免触发引擎118被配置为独立于针对分组进行各种确定中的其他确定来针对分组进行各种确定。例如,拥塞避免触发引擎118被配置为独立地将队列的填充水平与由动态阈值确定引擎120针对分组所确定的相应阈值121中的每个阈值进行比较,并且基于队列水平与相应阈值121中的每个阈值的独立比较来进行确定。在一种实施例中,拥塞避免触发引擎118被配置为针对将被入队在特定外出队列112中的分组进行的各种确定包括以下中的一些或全部:在各种实施例中,(i)基于特定外出队列112的填充水平与由动态阈值确定引擎120针对分组所确定的第一阈值121的比较,来确定分组是否将被丢弃,(ii)基于特定外出队列112的填充水平与由动态确定引擎120针对分组所确定的第二动态阈值121的比较,来确定明确的拥塞通知(ecn)标记是否将被设置在分组的报头中,(iii)基于特定外出队列112的填充水平与由动态阈值确定引擎120针对分组所确定的第三阈值121的比较,来确定量化的拥塞通知(qcn)消息(例如,由ieee802.1qau协议定义的拥塞通知消息(cnm))是否将被生成并且发送给分组的发送者(例如,始发者),(iv)基于与端口104(并且对于优先级流控制,是分组的优先级)相对应的进入队列的填充水平与由动态阈值确定引擎120针对分组所确定的第四阈值121的比较,来确定链路水平流控制消息(例如,由ieee802.3x协议定义)和/或暂停帧或优先级流控制(pfc)消息(例如,由ieee802.1qbb协议定义)是否应当被生成,并且被发送到直接耦合到分组在其上被接收的链路的下游设备,(v)基于特定外出队列112的填充水平与由动态阈值确定引擎120针对分组所确定的第五阈值121的比较,来确定分组是否应当被镜像到分析器以用于流量管理或拥塞分析或统计,等等。在其他实施例中,拥塞避免触发引擎118被配置为,针对将被入队在特定外出队列112中的分组,附加于列表(i)-(v)中包括的流量管理操作,和/或代替列表(i)-(v)中包括的流量管理操作中的一些或全部,而关于未包括在列表(i)-(v)中的其他合适的流量管理操作进行确定。

例如,在一种实施例中,动态阈值确定引擎120被配置为:基于分组由网络设备110接收时或相应的动态阈值针对分组被确定时的资源的当前状态,来确定相应的阈值121。例如,在各种实施例中,动态阈值确定引擎120被配置为:基于例如分组被接收时或动态阈值确定被执行时的、当前可用于将附加分组存储在网络设备中的存储器的量、或当前可用于对与正由网络设备100处理的分组相关联的附加分组描述符进行排队的存储器的量,来确定相应的阈值121。在一种实施例中,动态阈值确定引擎120被配置为:至少部分地基于共享的缓冲存储器114中的当前空闲的缓冲空间的量,和/或分组存储器111中的当前空闲的缓冲空间的量,来确定相应的阈值121。在各种实施例中,动态阈值确定引擎120基于当前正被使用的缓冲空间的量,来确定共享的缓冲存储器114中的空闲缓冲空间的量,其中当前正被使用的缓冲空间的量是当前正由所有的外出队列112使用的缓冲空间的总量,或当前正由如下的外出队列使用的缓冲空间的量,这些外出队列对应于特定的端口或多个端口104,和/或对应于特定的优先级。类似地,在各种实施例中,动态阈值确定引擎120基于分组存储器111中当前正被使用的缓冲空间的量,来确定分组存储器111中的空闲缓冲空间的量,其中当前正被使用的缓冲空间的量是当前正由分组存储器11中存储的所有分组使用的缓冲空间的总量,或当前正由经由特定的端口或多个端口104所接收的和/或对应于特定的优先级的分组使用的缓冲空间的量。在一些实施例中,动态阈值确定引擎120进一步基于一个或多个特定的参数集合来确定相应的阈值121,该一个或多个特定的参数集合对应于与分组相关联的优先级、分组所属于的流、分组经由其被接收的特定端口104、分组将经由其被传输的特定端口104、分组的类型,诸如分组是将经由一个端口104被传输的单播分组还是将经由多个端口104被传输的多播分组等。例如,在一种实施例中,如将在下文中更详细解释的,动态阈值确定引擎120基于分组所属于的流来获得基于分组所属于的流的一个或多个特定于流的参数、和/或基于分组将经由其被传输的端口的一个或多个特定于端口的参数,并且在针对分组确定相应阈值121中的一个或多个阈值时利用所获得的参数。

在一种实施例中,因为拥塞避免触发引擎116将动态确定的阈值用于确定针对相应的分组是否触发各种流量管理操作,所以即使是基于针对不同分组的相同的队列填充水平,拥塞避免触发引擎116针对不同的分组作出不同的决定。因此,例如,在一种实施例中,基于相同的队列填充水平,(i)在时间t1处,第一流量管理操作被触发用于被定向到队列的第一分组,且第二流量管理操作未被触发用于被定向到队列的第一分组,并且(ii)在时间t2处,第一流量管理操作未被触发用于被定向到队列的第二分组,且第二流量管理操作被触发用于被定向到队列的第二分组。

作为更具体的示例,在一种示例场景中,拥塞避免触发引擎116基于由动态阈值确定引擎120在时间t1处针对第一分组所确定的相应的动态阈值,来针对在时间t1处并且被定向到第一外出队列112的第一分组进行确定。为了这个目的,在一种实施例中,拥塞避免触发引擎116将时间t1处的第一外出队列的填充水平与相应阈值中的每个阈值进行比较,并且基于时间t1处的第一外出队列的填充水平与相应阈值中的每个阈值的比较来进行确定。在一种示例场景中,拥塞避免触发引擎116(i)基于外出队列112的填充水平与在时间t1处针对第一分组所确定的阈值中的第一阈值(例如,尾部丢弃阈值)的比较,来确定第一分组应当被丢弃;以及(ii)基于外出队列112的填充水平与在时间t1处针对第一分组所确定的阈值中的第二阈值(例如,qnc阈值)的比较,来确定qnc消息不应当基于第一分组被生成。

继续相同的示例场景,在时间t2处(例如,在时间t2之后的下一周期期间),拥塞避免触发引擎116基于由动态阈值确定引擎120在时间t2处针对第二分组所确定的相应的动态阈值,来针对被定向到第一外出队列112的第二分组进行确定。在该示例场景中,第一外出队列112的填充水平从时间t1到时间t2没有改变。然而,因为在时间t1处针对第一分组所确定的动态确定的阈值不同于在时间t2处针对第一分组所确定的动态确定的阈值(例如,归因于从时间t1到时间t2的空闲缓冲空间的量的改变),所以在一种实施例中,拥塞避免触发引擎116(i)基于外出队列112的填充水平与在时间t2处针对第二分组所确定阈值中的第一阈值(例如,尾部丢弃阈值)的比较,来确定第二分组不应当被丢弃;以及(ii)基于外出队列112的填充水平与在时间t2处针对第二分组所确定的阈值中的第二阈值(例如,qnc阈值)的比较,来确定qnc消息应当基于第二分组被生成。

针对不同分组和不同流量管理操作来动态地确定相应的阈值121,允许由各种端口104和由各种业务流对共享的缓冲存储器114中的缓冲空间的更好共享。例如,在一种实施例中,当共享的缓冲存储器114中存在较多空闲缓冲空间可用时,可以确定较高的阈值,并且当共享的缓冲存储器114中存在较少缓冲空间可用时,可以确定相对较低的阈值。作为另一示例,在至少一些实施例中,针对属于较高优先级分组流的分组可以确定较高的阈值,并且针对属于较低优先级分组流的分组可以确定较低的阈值。此外,在至少一些实施例中,因为动态确定的阈值通常被用于控制到网络设备100的分组流,所以针对不同分组的动态确定的相应阈值121通常改进了分组存储器111中的缓冲空间的共享。

图2是根据一种实施例的与图1的网络设备100一起使用的拥塞避免系统200的框图。在一种实施例中,拥塞避免系统200对应于图1的拥塞避免系统116。在另一种实施例中,拥塞避免系统200与和图1的网络设备100不同的网络设备一起使用。类似地,在一些实施例中,图1的网络设备100利用与拥塞避免系统200不同的拥塞避免系统。为了便于解释,参考图1的网络设备100来描述拥塞避免系统200。

拥塞避免系统200包括拥塞避免触发引擎202(例如,在一种实施例中,对应于图1的拥塞避免触发引擎118)和动态阈值确定引擎204(例如,在一种实施例中,对应于图1的动态阈值确定单元引擎120)。在一种实施例中,拥塞避免触发引擎202包括多个决定引擎206,多个决定引擎206被配置为确实是否触发各种流量管理操作,以关于由拥塞避免系统200正处理的分组被执行。例如,在图示的实施例中,拥塞避免触发引擎202包括尾部丢弃决定引擎206a、ecn标记决定引擎206b、pfc流控制决定引擎206c、qcn流控制决定引擎206d和分组镜像决定引擎206e。在其他实施例中,拥塞避免触发引擎202省略决定引擎206a-206e中的一个或多个,和/或包括除了决定引擎206a-206e以外的一个或多个附加的决定引擎。

在一种实施例中,动态阈值确定引擎204被配置为针对正由拥塞避免系统200处理的每个分组来确定多个阈值210。例如,针对由拥塞避免系统200处理的每个分组,动态阈值确定引擎204确定以下中的一些或全部:(i)将由引擎206a用于触发尾部丢弃操作的尾部丢弃阈值t尾部丢弃,(ii)将由ecn决定引擎206b用于触发ecn操作的ecn阈值tenc,(iii)将由pfc决定引擎206c用于触发pfc操作的(多个)pfc阈值(例如,tpfc_xon和tpfc_xoff),(iv)将由qcn流控制决定引擎206d用于触发qcn操作的qcn阈值tqnc,以及(v)将由分组镜像决定引擎206e用于触发分组镜像操作的分组镜像阈值t镜像。在一种实施例中,动态阈值确定引擎204独立于确定相应阈值ti210中的其他阈值来确定相应阈值ti210中的每个阈值。在另一种实施例中,动态阈值确定引擎204将阈值ti的相同确定用于相应阈值ti210中的多个阈值。仅作为示例,在一种实施例中,动态阈值确定引擎204针对阈值t尾部丢弃和阈值tenc来确定第一阈值ti,并且针对qcn阈值tqnc来确定与第一阈值ti不同的第二阈值ti。

在一种实施例中,为了针对分组确定相应的阈值,动态阈值确定引擎204基于分组的流和/或分组被定向到的端口,来确定一个或多个特定于流和/或特定于端口的参数。在一种实施例中,动态阈值确定引擎204从耦合到动态阈值确定引擎204的存储器208取回该一个或多个参数。在其他实施例中,动态阈值确定引擎204以其他合适的方式来确定该一个或多个参数。在一种实施例中,由动态阈值确定引擎204针对分组所确定的特定于流的参数包括:(i)针对与分组的优先级i相对应的队列的缓冲空间量(例如,缓冲器的数目)的保证阈值,以及(ii)针对与分组的优先级和丢弃优先性i相对应的队列的分配因子αi。在一种实施例中,动态阈值确定引擎204确定将由决定引擎206中的一个或多个决定引擎使用的一个或多个阈值ti。在一种实施例中,动态阈值确定引擎204根据下式初始地确定将由决定引擎206中的特定决定引擎使用的动态阈值dti:

dti=αi×(b-c)等式1

其中αi是从存储器208取回的分配因子,b是共享的缓冲存储器114中的总缓冲空间的测量(例如,共享的缓冲存储器114中的缓冲器的总数目),以及c是当前被占用的缓冲器的数目。在一种实施例中,动态阈值确定引擎204在不同的实施例和/或场景中利用c的不同测量。例如,在一种实施例和/或场景中,动态阈值确定引擎204利用由共享的缓冲存储器114中的所有队列全局地占用的缓冲器的数目。在另一种实施例和/或场景中,动态阈值确定引擎204利用由与分组被定向到的端口104相对应的队列的子集所占用的缓冲器的数目。

在一种实施例中,动态阈值确定引擎204还基于根据等式1所确定的相应的动态阈值、以及针对相应的阈值ti所获得的相应的保证阈值gti,来确定相应的最终阈值ti。在一种实施例中,动态阈值确定引擎204根据下式来确定相应的最终阈值ti:

ti=gti+dti等式2

其中dti是根据等式1针对特定分组以及针对特定决定引擎206所确定的动态阈值,并且gti是例如从存储器208针对特定分组和特定决定引擎206分组所取回的保证阈值。

在一种实施例中,动态阈值确定引擎204向拥塞避免触发引擎202并且因此向对应的决定引擎206提供相应的最终阈值ti。相应的决定引擎206依次利用它们对应的最终阈值ti,以基于它们对应的最终阈值ti来进行决定。在一种实施例中,拥塞避免触发引擎202获得分组被定向到的外出队列112的填充水平,并且向引擎206a、206b、206d和206e中的每个引擎提供外出队列的填充水平。在一种实施例中,拥塞避免触发引擎202还获得与分组经由其被接收的端口104相对应的进入队列的填充水平,并且向引擎206c提供该进入队列的填充水平。每个引擎206将提供给引擎206的填充水平与由动态阈值确定引擎204提供的相应阈值ti进行比较,并且基于填充水平与相应阈值ti的比较来作出它的决定。因此,例如,在一种实施例中,尾部丢弃决定引擎206a将外出队列112的填充水平与由动态阈值确定引擎204提供的阈值t尾部丢弃进行比较,并且在一种实施例中,如果队列填充水平超过阈值t尾部丢弃,则确定分组应当被丢弃。在另一种实施例中,尾部丢弃决定引擎206a进行加权的随机早期检测(wred)决定。在该实施例中,尾部丢弃决定引擎206a将队列填充水平与概率性地修改的阈值t尾部丢弃进行比较,并且如果队列水平超过概率性地修改的阈值t尾部丢弃,则确定分组应当被丢弃。作为另一示例,在一种实施例中,qcn流控制决定引擎206d基于队列填充水平与由动态阈值确定引擎204提供的阈值tqnc的比较,来确定表示队列中的拥塞水平的反馈水平fb,并且基于所确定的反馈水平fb来生成量化的反馈水平qfb。在一种实施例中,qcn流控制决定引擎206d然后基于与所确定的qfb成比例的概率来确定qcn消息应当被生成。

图3是图示了根据一种实施例的用于管理到网络设备的业务流的示例方法300的流程图。在一种实施例中,图1的网络设备100实施根据一种实施例的用于管理到网络设备100的业务流的方法300。例如,在一种实施例中,图1的网络设备100的分组处理单元被配置为实施方法300。在一种实施例中,图1的拥塞避免系统116或图2的拥塞避免系统200被配置为实施方法300的一部分。在其他实施例中,方法300由与网络设备100不同的适当网络设备来实施,和/或使用与拥塞避免系统116或拥塞避免系统200不同的拥塞避免系统来实施。

在框302处,分组由网络设备从网络接收。在框304处,在网络设备的多个端口之中,分组将经由其被传输的至少一个端口被确定。在一种实施例中,该至少一个端口基于来自分组报头的信息(例如,地址)而被确定。在一种实施例中,该至少一个端口使用与分组相关联的分组描述符而被确定,其中分组描述符包括来自分组报头的信息(例如,地址)。在一些实施例中,分组描述符另外地包括其他信息,诸如来自分组报头的附加信息、分组在其处被接收的端口的指示符、分组被存储的存储器位置的指示符(例如,地址、指针等),等等。

在框306处,缓冲存储器中的空闲缓冲空间的量被确定。例如,在一种实施例中,被配置为对如下的分组进行排队的缓冲存储器中的空闲缓冲空间的量被确定,这些分组将经由多个端口之中的端口中的多个端口被传输。附加地或替代地,在一种实施例中,被配置为存储正由网络设备处理的分组的分组存储器中的空闲缓冲空间的量被确定。在一种实施例中,通过从缓冲存储器中的总缓冲空间的预定量中减去缓冲存储器中当前正被使用的总缓冲空间的量,来确定空闲缓冲空间的量。在另一种实施例中,通过从缓冲存储器中的总缓冲空间的预定量中减去缓冲存储器中当前正由队列或端口的子集使用的缓冲空间的量,来确定空闲缓冲空间的量。例如,在一种实施例中,通过从缓冲存储器中的总缓冲空间的预定量中减去当前正由与框304处所确定的端口相对应的队列子集使用的缓冲空间的量,来确定空闲缓冲空间的量。在其他实施例中,空闲缓冲空间的量以其他合适的方式被确定。

在框308处,用于基于分组来触发多个流量管理操作中的流量管理操作被执行的相应阈值。在一种实施例中,相应阈值至少部分地基于在框306处确定的空闲缓冲空间的量而被确定。在一种实施例中,相应阈值还基于一个或多个参数被确定,该一个或多个参数基于以下中的一项或多项被确定:(i)分组所属于的流,(ii)分组所属于的流的优先级,以及(ii)分组被定向到的端口。在其他实施例中,该一个或多个参数另外地或替代地基于其他合适的因素而被确定。在一种实施例中,在框308处确定相应的阈值包括:确定用于触发多个流量管理操作中的第一流量管理操作的第一阈值、以及用于触发多个流量管理操作中的第二流量管理操作的第二阈值。在一种实施例中,根据等式1和2,并且使用如上文参考图2描述的特定于流的参数和特定于流量管理操作的参数,来确定用于触发多个流量管理操作中的流量管理操作的相应阈值。在其他实施例中,用于触发多个流量管理操作中的流量管理操作的相应阈值以其他合适的方式被确定。

在框310处,确定关于分组是否触发多个流量管理操作中的流量管理操作。在一种实施例中,确定关于分组是否触发多个流量管理操作中的流量管理操作包括:使用第一阈值来确定是否触发多个流量管理操作中的第一流量管理操作,以及使用第二阈值来确定是否使用第二阈值触发流量管理操作中的第二流量管理操作。例如,在一种实施例中,使用第一阈值来确定是否丢弃分组,并且使用第二阈值来确定是否基于分组生成qcn消息。在其他实施例中,第一阈值和/或第二阈值被用于确定是否触发其他合适的流量管理操作。在一种实施例中,在框310处对是否触发多个流量管理操作中的流量管理操作的确定,独立于是否触发多个流量管理操作中的其他流量管理操作的确定而被执行。例如,在一种实施例中,队列填充水平(i)与第一阈值进行比较以确定是否丢弃分组,以及(ii)独立地与第二阈值进行比较以确定是否基于分组来生成qcn消息。在一种实施例中,在框310处对是否触发多个流量管理操作中的流量管理操作的确定,与是否触发多个流量管理操作中的其他流量管理操作的确定并行地(例如,在相同的时钟周期期间)被执行。例如,在一种实施例中,是否丢弃分组的确定与是否基于分组生成qcn消息的确定并行地被执行。在框312处,关于分组在框310处被确定为将被触发的流量管理操作中的一个或多个流量管理操作被执行。例如,在一种实施例中,如果在框310处确定分组应当被丢弃,则在框312处分组被丢弃;如果在框310处确定qcn消息应当被生成,则在框313处qcn消息被生成,等等。

在一种实施例中,一种用于管理到网络设备的业务流的方法包括:在网络设备的分组处理器处接收从网络接收的分组;利用分组处理器,在网络设备的多个端口之中,确定至少一个端口,分组将经由该至少一个端口从网络设备被传输;利用分组处理器来确定网络设备的缓冲存储器中的空闲缓冲空间的量;利用分组处理器,至少部分地基于空闲缓冲空间的量,动态地确定相应阈值,相应阈值用于基于分组来触发多个流量管理操作中的流量管理操作被执行,包括:确定用于触发多个流量管理操作中的第一流量管理操作的第一阈值、以及用于触发多个流量管理操作中的第二流量管理操作的第二阈值;利用分组处理器,使用相应阈值来确定关于分组是否触发多个流量管理操作中的流量管理操作,包括:使用第一阈值来确定是否触发多个流量管理操作中的第一流量管理操作,以及使用第二阈值来确定是否使用第二阈值触发流量管理操作中的第二流量管理操作;以及利用分组处理器,来执行关于分组基于相应阈值中的对应的一个阈值被确定为将被触发的流量管理操作中的一个或多个流量管理操作。

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

确定是否触发多个流量管理操作中的流量管理操作包括确定以下中的两项或更多项:(i)是否触发尾部丢弃操作以丢弃分组,(ii)是否触发明确的拥塞通知(ecn)操作以将标记包括在分组的报头中;(iii)是否触发基于分组的流控制消息,以及(iv)是否触发分组到分析器的镜像。

该方法进一步包括:利用分组处理器,在多个外出队列之中确定外出队列,分组将在缓冲存储器中被排队在该外出队列中;利用分组处理器来确定外出队列的当前填充水平;利用分组处理器,将外出队列的当前填充水平与相应阈值进行比较;以及利用分组处理器,基于外出队列的填充水平与相应阈值中的对应阈值的比较,来执行多个操作中的相应操作。

该方法进一步包括:利用分组处理器来确定分组所属于的流。

动态地确定相应阈值包括:基于分组所属于的流,来确定将被用于确定相应阈值的一个或多个特定于流的参数,以及还使用一个或多个特定于流的参数来确定相应阈值。

确定一个或多个特定于流的参数包括确定将被用于确定阈值中的相应阈值的一个或多个特定于流的参数的相应集合,包括:确定将被用于确定第一阈值的特定于流的参数的第一集合,以及确定将被用于确定第二阈值的特定于流的参数的第二集合,其中第一集合中的一个或多个特定参数的值不同于第二集合中的对应的一个或多个特定于流的参数的值。

确定一个或多个特定于流的参数包括:从存储器取回一个或多个特定于流的参数。

确定一个或多个特定于流的参数包括确定以下中的一项或两项:(i)保证的动态阈值,以及(ii)用于将缓冲存储器中的空闲缓冲空间分配给分组所属于的流的分配因子。

动态地确定相应阈值包括基于以下各项来确定相应阈值中的特定的一个阈值:(i)为流分配的缓冲空间的保证量,以及(ii)被分配给流的缓冲空间的动态计算的量,缓冲空间的动态计算的量基于缓冲存储器中的当前可用缓冲空间的量的测量而被计算。

缓冲存储器被配置为对将经由网络设备的多个端口之中的端口中的多个端口被传输的分组进行排队。

确定空闲缓冲空间的量包括:通过从缓冲存储器中的缓冲空间的总量的预先配置的值中,减去与当前由缓冲存储器中的队列使用的总缓冲空间的量相对应的计数器的值,来确定空闲缓冲空间的量。

确定空闲缓冲空间的量包括:通过从缓冲存储器中的缓冲空间的总量的预先配置的值中,减去与当前由如下的队列使用的缓冲空间的量相对应的计数器的值来确定空闲缓冲空间的量,这些队列对应于分组被定向到的端口。

动态地确定相应阈值包括:独立于确定用于触发多个流量管理操作中的第二流量管理操作的第二阈值,来确定用于触发多个流量管理操作中的第一流量管理操作的第一阈值。

在另一种实施例中,一种网络设备包括:多个端口;缓冲存储器,被配置为存储将经由多个端口中的端口被传输的分组;以及耦合到缓冲存储器的分组处理器,分组处理器被配置为:从网络接收分组;在网络设备的多个端口之中确定至少一个端口,分组将经由该至少一个端口从网络设备被传输;确定缓冲存储器中的空闲缓冲空间的量;至少部分地基于空闲缓冲空间的量,确定将被用于基于分组来触发多个流量管理操作中的流量管理操作被执行的相应阈值,分组处理器被配置为确定用于触发多个流量管理操作中的第一流量管理操作的第一阈值、以及用于触发多个流量管理操作中的第二流量管理操作的第二阈值;使用相应阈值来确定关于分组是否触发多个流量管理操作中的一个流量管理操作,分组处理器被配置为使用第一阈值来确定是否触发多个流量管理操作中的第一流量管理操作,以及使用第二阈值来确定是否使用第二阈值触发流量管理操作中的第二流量管理操作;以及执行关于分组基于相应阈值中的对应的一个阈值被确定为将被触发的流量管理操作中的一个或多个流量管理操作。

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

分组处理器被配置为至少通过确定以下中的两项或更多项来确定是否触发多个流量管理操作中的流量管理操作:(i)是否触发尾部丢弃操作以丢弃分组,(ii)是否触发明确的拥塞通知(ecn)操作以将标记包括在分组的报头中;(iii)是否触发基于分组的流控制消息,以及(iv)是否触发分组到分析器的镜像。

分组处理器进一步被配置为:在多个外出队列之中确定外出队列,分组将在缓冲存储器中被排队在该外出队列中;确定外出队列的当前填充水平;将外出队列的当前填充水平与相应阈值进行比较;以及基于外出队列的填充水平与相应阈值中的对应阈值的比较,来执行多个操作中的相应操作。

分组处理器进一步被配置为:确定分组所属于的流,基于分组所属于的流,来确定将被用于动态地确定相应阈值的一个或多个特定于流的参数;以及还使用一个或多个特定于流的参数来确定相应阈值。

分组处理器被配置为,至少通过确定将被用于确定阈值中的相应阈值的一个或多个特定于流的参数的相应集合,来确定一个或多个特定于流的参数,包括:确定将被用于确定第一阈值的特定于流的参数的第一集合,以及确定将被用于确定第二阈值的特定于流的参数的第二集合,其中第一集合中的一个或多个特定参数的值不同于第二集合中的对应的一个或多个特定于流的参数的值。

分组处理器被配置为从存储器取回一个或多个特定于流的参数。

分组处理器被配置为至少通过确定以下中的一项或两项来确定一个或多个特定于流的参数:(i)保证的动态阈值,以及(ii)用于将缓冲存储器中的空闲缓冲空间分配给分组所属于的流的分配因子。

分组处理器被配置为基于以下各项来动态地确定相应阈值中的特定的一个阈值:(i)为流分配的缓冲空间的保证量,以及(ii)被分配给流的缓冲空间的动态计算的量,缓冲空间的动态计算的量基于缓冲存储器中的当前可用缓冲空间的量的测量而被计算。

缓冲存储器被配置为对将经由网络设备的多个端口中的端口被传输的分组进行排队。

分组处理器被配置为:通过从缓冲存储器中的缓冲空间的总量的预先配置的值中,减去与当前由缓冲存储器中的队列使用的总缓冲空间的量相对应的计数器的值,来确定空闲缓冲空间的量。

分组处理器被配置为:通过从缓冲存储器中的缓冲空间的总量的预先配置的值中,减去与当前由如下的队列使用的缓冲空间的量相对应的计数器的值来确定空闲缓冲空间的量,这些队列对应于分组被定向到的端口。

分组处理器被配置为:独立于确定用于触发多个流量管理操作中的第二流量管理操作的第二阈值,来确定用于触发多个流量管理操作中的第一流量管理操作的第一阈值。

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

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

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

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

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