一种流量调度的装置及方法与流程

文档序号:15081261发布日期:2018-08-04 10:31阅读:140来源:国知局

本发明涉及通信领域,具体涉及一种流量调度的装置及方法。



背景技术:

随着通信技术的不断发展,运营商需要满足用户全方位的业务需求。从电信网络、广电网络和移动网络的融合可以看出,通过各种业务的融合以使运营商具备全业务运营能力为大势所趋。这就要求一个通信网络必须支持多种业务,但是,每种业务有不同的服务质量(QOS)要求。QOS是指网络在传输数据流时要求满足的一系列服务请求及实现这些服务请求的机制,这些服务请求可用一系列指标来衡量,例如:带宽要求、传输延迟、抖动、丢包率、吞吐量等。

通信网络一般采用流量管理芯片实现网络的QOS要求。目前流量管理采用的调度机制包括两种,即数据推动型调度机制和拉动型调度结构,其中,数据推动型调度机制只有流量报文到达调度节点后,才进行相应的调度。这种调度结构一般分两次调度,输入侧和输出侧的调度。其存在的缺点是:各级均存在物理队列,所需的队列存储器较多,对控制存储带宽或电路的处理能力要求较高。随着网络容量与业务不断增长,使用这种调度结构会使得流量管理芯片的存储器成倍增长,限制了芯片管理的流量数目,不利于后续的扩展。

而拉动型调度结构的特点是:调度器的动作由授权驱动,可以不用实时处理,对存储控制器带宽或电路处理能力要求较低。在专利申请号为201010236242.2的中国专利《包交换网络中流量调度的装置和方法》中,对拉动型调度进行了详细描述,在该专利中具体公开了,实时维护全部队列的总体授权盈余,当总体授权盈余大于预设阈值时,将代表固定字节数的授权发送至等待授权的队列,队列管理模块发送所述等待队列的队列内的数据包。

拉动型调度结构关键点在于授权管理,而上述专利公开的这种拉动型调度方法对授权盈余并没有很好的管理,队列流量调度后抖动性能很差。因为,维护全部队列的总体授权盈余而且授权是按照固定颗粒度大小产生的,而每个队列的数据包是长短不一的,举个例子,在一段时间内一些队列是长包,这样包发送出去以后会导致总的授权盈余变负,这样导致的结果就是其中一些队列发包,而另外一些队列只有等到总体授权盈余变正以后才能发包,导致其中一些队列流量存在抖动。

所以,急需提出一种改进的拉动型调度方法,能够更好地控制授权的发送,有效减少队列流量调度后报文的抖动。



技术实现要素:

本发明需要解决的技术问题是提供一种流量调度的装置和方法,能够更好地控制授权的发送,有效减少队列流量调度后报文的抖动。

为了解决上述技术问题,本发明提供了一种流量调度的装置,包括:

授权发送模块,用于产生总授权,并按照各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权分配给各个流队列,将分配好的所述授权发送到流队列管理模块,权重越大,分配到的授权越大;

流队列管理模块,用于接收数据包并保存在各个流队列中,为每个流队列维护一个授权盈余桶,并将接收到的所述授权保存在所述流队列的授权盈余桶中,如果所述授权盈余桶中的授权盈余和队列深度大于预设阈值,则通知调度模块将所述流队列中的数据包输出;

调度模块,用于在收到所述流队列管理模块的通知后,按预设的调度策略将所述流队列中的数据包输出。

进一步地,所述授权发送模块,用于为各个端口以及各个端口挂接的流队列预先配置权重,并将总授权根据所述权重为各个流队列分配授权,包括:

所述授权发送模块包括授权产生器和调度单元,其中:

所述授权产生器,用于产生所述总授权;

所述调度单元,用于按照所述各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权从端口向流队列一级一级分配到所述各个流队列。

进一步地,所述授权发送模块中的流队列序号与所述流队列管理模块中的流队列序号一一对应;

所述流队列管理模块,用于将接收到的授权保存在所述流队列的授权盈余桶中,包括:

所述流队列管理模块按照流队列序号将所述授权保存在对应的流队列的授权盈余桶中。

进一步地,所述流队列管理模块为每个流队列维护一个授权盈余桶,包括:

当所述流队列获得授权时,所述流队列管理模块将所述授权盈余桶中的授权盈余加上所述授权的授权颗粒度;当所述流队列调度输出数据包时,所述流队列管理模块将所述授权盈余减去所述数据包的包长;

当有一个数据包入队时,所述流队列管理模块将所述授权盈余桶中的队列深度加上所述数据包的包长;当所述队列调度输出一个数据包时,所述流队列管理模块将所述队列深度减去所述数据包的包长。

进一步地,所述授权盈余桶中的所述授权盈余的预设阈值为0,所述队列深度的预设阈值为0,如果所述授权盈余桶中的所述授权盈余大于0且所述队列深度大于0,则通知调度模块将所述流队列中的数据包输出。

进一步地,所述流队列管理模块,还用于向所述授权发送模块发送授权请求,包括:

对每一个流队列,如果该流队列的授权盈余桶中的授权差值小于预设阈值,则向所述授权发送模块发送针对该流队列的授权请求,否则停止向所述授权发送模块发送针对该流队列的授权请求,所示授权差值为所述授权盈余与队列深度的差值;

对每一个流队列,如果该流队列的队列深度为0且授权盈余为负时,会继续向所述授权发送模块发送针对该流队列的授权请求直到所述授权盈余达到初始值为止;

所述授权发送模块,还用于在收到所述流队列管理模块针对每个流队列的授权请求后,按照各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权分配给各个流队列,并且仅将为满足向所述授权发送模块发送授权请求的流队列分配好的授权按照流队列序号发送到流队列管理模块。

进一步地,所述流队列管理模块,还用于向所述授权发送模块发送授权请求,还包括:

对每一个流队列,如果所述流队列的授权盈余桶中的授权盈余已经达到预设的授权盈余最大值,则停止向所述授权发送模块发送针对该流队列的授权请求。

进一步地,所述预设的调度策略包括:端口间轮询且端口内流队列按优先级调度。

进一步地,所述装置还包括:

缓存管理模块,用于接收并缓存所述调度模块输出的数据包,并将所述数据包输出;为每个端口维护端口带宽差值,所述缓存管理模块中的端口序号与所述授权发送模块和流队列管理模块中的端口序号一一对应;若所述缓存管理模块中所述端口的端口带宽差值大于或等于预设门限值,则通知所述授权发送模块停止向所述流队列管理模块中对应端口挂接的流队列发送授权,否则通知所述授权发送模块恢复或继续向所述流队列管理模块中对应端口挂接的流队列发送授权;其中,所述端口带宽差值是指:所述缓存管理模块中所述端口从所述调度模块收到数据包的流量与该端口输出数据包的流量的差值;

所述授权发送模块还用于,在收到所述缓存管理模块的通知后,按照端口序号停止向所述流队列管理模块中对应端口挂接的流队列发送授权,或者,按照端口序号恢复或继续向所述流队列管理模块中对应端口挂接的流队列发送授权。

为了解决上述技术问题,本发明还提供了一种流量调度的方法,包括:

授权发送模块产生总授权,并按照各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权分配给各个流队列,将分配好的所述授权发送到流队列管理模块,权重越大,分配到的授权越大;

流队列管理模块接收数据包并保存在各个流队列中,为每个流队列维护一个授权盈余桶,并将接收到的所述授权保存在所述流队列的授权盈余桶中,如果所述授权盈余桶中的授权盈余和队列深度大于预设阈值,则通知调度模块将所述流队列中的数据包输出;

调度模块在收到所述流队列管理模块的通知后,按预设的调度策略将所述流队列中的数据包输出。

进一步地,所述授权发送模块产生总授权,并按照各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权分配给各个流队列,包括:

所述授权产生器产生所述总授权;

所述调度单元按照所述各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权从端口向流队列一级一级分配到所述各个流队列。

进一步地,所述授权发送模块中的流队列序号与所述流队列管理模块中的流队列序号一一对应;

所述流队列管理模块将接收到的所述授权保存在所述流队列的授权盈余桶中,包括:

所述流队列管理模块按照流队列序号将所述授权保存在对应的流队列的授权盈余桶中。

进一步地,所述流队列管理模块为每个流队列维护一个授权盈余桶,包括:

当所述流队列获得授权时,所述流队列管理模块将所述授权盈余桶中的授权盈余加上所述授权的授权颗粒度;当所述流队列调度输出数据包时,所述流队列管理模块将所述授权盈余减去所述数据包的包长;

当有一个数据包入队时,所述流队列管理模块将所述授权盈余桶中的队列深度加上所述数据包的包长;当所述队列调度输出一个数据包时,所述流队列管理模块将所述队列深度减去所述数据包的包长。

进一步地,所述授权盈余桶中的所述授权盈余的预设阈值为0,所述队列深度的预设阈值为0,如果所述授权盈余桶中的所述授权盈余大于0且所述队列深度大于0,则通知调度模块将所述流队列中的数据包输出。

进一步地,所述方法还包括:

所述流队列管理模块向所述授权发送模块发送授权请求,包括:

对每一个流队列,如果该流队列的授权盈余桶中的授权差值小于预设阈值,则向所述授权发送模块发送针对该流队列的授权请求,否则停止向所述授权发送模块发送针对该流队列的授权请求,所示授权差值为所述授权盈余与队列深度的差值;

对每一个流队列,如果该流队列的队列深度为0且授权盈余为负时,会继续向所述授权发送模块发送针对该流队列的授权请求直到所述授权盈余达到初始值为止;

所述授权发送模块在收到所述流队列管理模块针对每个流队列的授权请求后,按照各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权分配给各个流队列,并且仅将为满足向所述授权发送模块发送授权请求的流队列分配好的授权按照流队列序号发送到流队列管理模块。

进一步地,所述流队列管理模块向所述授权发送模块发送授权请求,还包括:

对每一个流队列,如果所述流队列的授权盈余桶中的授权盈余已经达到预设的授权盈余最大值,则停止向所述授权发送模块发送针对该流队列的授权请求。

进一步地,所述预设的调度策略包括:端口间轮询且端口内流队列按优先级调度。

进一步地,所述方法还包括:

缓存管理模块接收并缓存所述调度模块输出的数据包,并将所述数据包输出;为每个端口维护端口带宽差值,所述缓存管理模块中的端口序号与所述授权发送模块和流队列管理模块中的端口序号一一对应;若所述缓存管理模块中所述端口的端口带宽差值大于或等于预设门限值,则通知所述授权发送模块停止向所述流队列管理模块中对应端口挂接的流队列发送授权,否则通知所述授权发送模块恢复或继续向所述流队列管理模块中对应端口挂接的流队列发送授权;其中,所述端口带宽差值是指:所述缓存管理模块中所述端口从所述调度模块收到数据包的流量与该端口输出的数据包的流量的差值;

所述授权发送模块在收到所述缓存管理模块的通知后,按照端口序号停止向所述流队列管理模块中对应端口挂接的流队列发送授权,或者,按照端口序号恢复或继续向所述流队列管理模块中对应端口挂接的流队列发送授权。

与现有技术相比,本发明提供的流量调度的装置和方法,按照权重分配授权,很好地控制了授权的发送,可以避免队列流量调度后抖动性差的问题;通过对单个队列授权盈余桶的维护,能够更准确地满足各个队列的调度需求,准确控制每个流队列的授权,从而实现报文数据包按权重平滑的调度输出。

附图说明

图1是实施例中流量调度的装置结构图;

图2是实施例中授权发送模块给端口及其挂接的流队列分配授权的方式以及所述授权发送模块结构的示意图;

图3是实施例中调度模块按SP+RR的方式将流队列中的数据包输出示意图;

图4是实施例中流量调度的方法流程图;

图5是实施例中每个流队列的授权盈余桶的维护过程流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

实施例:

如图1所示,本实施例提供了一种流量调度的装置,包括:流队列管理模块、授权发送模块、调度模块,此外还包括缓存管理模块,其中:

授权发送模块,用于产生总授权,并按照各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权分配给各个流队列,将分配好的所述授权发送到流队列管理模块,权重越大,授权的授权颗粒度越大;

其中,如图2所示,所述授权发送模块包括授权产生器和调度单元,其中:

所述授权产生器,用于产生总授权;

所述调度单元,用于按照所述各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权从端口向流队列一级一级分配到各个流队列。其中,端口的权重和流队列的权重可以一样也可以不同,并且可以动态调整或由用户配置。

所述授权发送模块在图2中总共有M个端口,每个端口挂接多个流队列,挂接个数不等,该M个端口总共挂接了N个流队列,流队列序号为1至N,总授权通过调度单元先配置至各个端口,再由端口的调度单元配置至其挂接的流队列,这样一级一级将总授权按照端口和流队列的权重分配到各个流队列。

这里需要说明的是,虽然流队列管理模块中端口与流队列的结构与图2相同,也是由若干个端口挂接若干个流队列,但不同的是,流队列管理模块中的是物理流队列和物理端口,而授权发送模块中的端口和流队列是虚拟的,但是,授权发送模块中的端口序号、流队列序号与所述流队列管理模块中的端口序号、流队列序号是一一对应的;这样,在授权发送模块将分配好的授权发送到流队列管理模块时,流队列管理模块可以按照一一对应的流队列序号,将授权直接对应到相应的流队列中,保存到相应流队列的授权盈余桶中。

其中,端口号、端口挂接的流队列个数、流队列号和流队列优先级都可由用户配置。其中,调度单元还可以将流队列的优先级分配给所挂接的流队列,调度单元的个数由芯片的硬件资源决定。

流队列管理模块,用于接收数据包并保存在各个流队列中,为每个流队列维护一个授权盈余桶,并将接收到的所述授权保存在所述流队列的授权盈余桶中,如果所述授权盈余桶中的授权盈余和队列深度大于预设阈值,通知调度模块将所述流队列中的数据包输出;

其中,如图1所示,流队列管理模块管理有N个物理流队列,这N个流队列的序号与授权发送模块的流队列的序号一一对应,也是从1至N,所述流队列管理模块按照流队列序号将所述授权保存在对应的流队列的授权盈余桶中。每个流队列分别具有一个授权盈余桶,维护每个流队列的授权盈余及队列深度,具体为:

当流队列获得授权时,所述流队列管理模块将所述授权盈余加上所述授权的授权颗粒度;当所述流队列调度输出数据包时,所述授权盈余减去所述数据包的包长;

当有一个数据包入队时,所述流队列管理模块将所述队列深度加上所述数据包的包长;当所述队列调度输出一个数据包时,所述队列深度减去所述数据包的包长。

其中,所述授权盈余桶中的所述授权盈余的预设阈值为0,所述队列深度的预设阈值为0,如果所述授权盈余桶中的所述授权盈余大于0且所述队列深度大于0,则通知调度模块将所述流队列中的数据包输出。

此外,作为一种优选的实施方式,所述流队列管理模块,还用于向所述授权发送模块发送授权请求,通过授权盈余桶中的授权差值来实现,即,授权差值=授权盈余-队列深度,具体包括:

对每一个流队列,如果该流队列的授权盈余桶中的授权差值小于预设阈值,则向所述授权发送模块发送针对该流队列的授权请求,否则停止向所述授权发送模块发送针对该流队列的授权请求;

进一步地,如果该流队列的授权盈余桶中的授权盈余已经达到预设的授权盈余最大值(绝对授权阈值),则停止向所述授权发送模块发送针对该流队列的授权请求;

此外,对每一个流队列,如果该流队列的队列深度为0且授权盈余为负时,会继续向所述授权发送模块发送针对该流队列的授权请求直到所述授权盈余达到初始值为止;该初始值可以是寄存器配置的,这个数值可以由用户配置;

所述授权发送模块,还用于收到流队列管理模块针对每个流队列的的授权请求后,按照各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权分配给各个流队列,并且仅将为满足向所述授权发送模块发送授权请求的流队列分配好的授权按照流队列序号发送到流队列管理模块。也就是说,授权发送模块为各个流队列分配到的授权还是不变的,只是流队列管理模块中停止发送授权请求的流队列不会收到授权了。

其中,调度模块,用于在收到所述流队列管理模块的通知后,按预设的调度策略将所述流队列中的数据包输出。

如上所述,此时流队列中授权盈余桶中的授权盈余需大于0而且流队列的深度大于0,也就是说,流队列已经满足出包条件,满足这样的出包条件的流队列可能是多个,因此要采用一定的调度策略选择其中一个流队列将数据包调度输出。在本实施例中,作为一种优选的实施方式,所述预设的调度策略包括:端口间轮询(Round-Robin,简称RR)且端口内流队列按优先级调度(Strict Priority,简称,SP),即调度模块按SP+RR的方式将所述流队列中的数据包输出,如图3所示,M个端口之间采用轮询RR调度策略,这样能保证M个端口都机会均等的输出数据包;每个端口挂接了若干个流队列,这些流队列的总数为N,这些流队列按优先级由高到低输出数据包,只有优先级高的流队列不满足调度输出条件情况下,低优先级才能调度输出;这样考虑了流队列调度输出的特殊性。该调度策略既考虑了公平性又考虑了特殊性,避免了低优先级数据包的泄露。

此外,该装置还包括缓存管理模块,用于接收并缓存所述调度模块输出的数据包,并将所述数据包输出;为每个端口维护端口带宽差值,所述端口挂接一个或多个流队列,所述缓存管理模块中的端口序号与所述授权发送模块和流队列管理模块中的端口序号也是一一对应;若所述缓存管理模块中所述端口的端口带宽差值大于或等于预设门限值,则通知所述授权发送模块停止向所述流队列管理模块中对应端口挂接的流队列发送授权,否则通知所述授权发送模块恢复或继续向所述流队列管理模块中对应端口挂接的流队列发送授权;其中,所述端口带宽差值是指:所述缓存管理模块中所述端口从所述调度模块收到数据包的流量与该端口输出数据包的流量的差值;

所述授权发送模块还用于,在收到所述缓存管理模块的通知后,按照端口序号停止向所述流队列管理模块中对应端口挂接的流队列发送授权,或者,按照端口序号恢复或继续向所述流队列管理模块中对应端口挂接的流队列发送授权。

这里,缓存管理模块中的端口接收调度模块发来的数据包(流队列管理模块中的端口序号与缓存管理模块中的端口序号一一对应),此时有一个端口输入流量,同时缓存管理模块将该端口的数据包发送出去,有一个端口输出流量,而该端口的输出流量有可能小于该端口的输入流量,对于缓存管理模块而言,接收调度模块发来的数据包,即输入流量受两个因素影响,包括:流队列管理模块中对应端口的总授权盈余,和该端口的流队列是否有报文,即如果流队列授权盈余大于阈值且队列深度大于0,就可以出包;由于授权发送模块一直给流队列管理模块中该对应端口发送授权,该端口就会一直调度出包,发送至缓存管理模块,导致缓存管理模块对应端口收到数据包的流量与输出流量的差值大于一定阈值,那么流队列管理模块中该对应端口的授权就会累积,在缓存管理模块体现就是对应端口的端口带宽差值逐渐增大;在流队列管理模块体现就是对应端口的总授权盈余逐渐增大;当端口带宽差值大于预设门限值时,需要对流队列管理模块中该对应端口进行流控管理,以平衡该端口多余的授权,即,通知授权发送模块停止向所述流队列管理模块中对应端口发送授权,此时虽然流队列管理模块的对应端口还有多余的授权盈余,但随着它继续发送报文给缓存管理模块,缓存管理模块将数据包输出,缓存管理模块对应端口的带宽差值就会慢慢的减小,流队列管理模块对应端口总的授权盈余也会慢慢减少;当端口带宽差值小于预设门限值时,就可以恢复该端口的授权发送,从而达到端口授权发送和物理端口带宽动态平衡的目的。

如图4所示,本实施例提供了一种流量调度的方法,包括以下步骤:

S101:授权发送模块产生总授权,并按照各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权分配给各个流队列,将分配好的所述授权发送到流队列管理模块,权重越大,授权的授权颗粒度越大;

其中,如图2所示,所述授权发送模块包括授权产生器和调度单元,步骤S101中授权发送模块产生总授权,并按照各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权分配给各个流队列,具体包括:

所述授权产生器产生总授权;

所述调度单元按照所述各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权从端口向流队列一级一级分配到各个流队列。

其中,端口的权重和流队列的权重可以一样可以不同,并且可以动态调整,或由用户配置。总授权通过调度单元先配置至各个端口,再由端口的调度单元配置至其挂接的流队列,这样一级一级将总授权按照端口和流队列的权重分配到各个流队列。

S102:流队列管理模块接收数据包并保存在各个流队列中,为每个流队列维护一个授权盈余桶,并将接收到的所述授权保存在所述流队列的授权盈余桶中,如果所述授权盈余桶中的授权盈余和队列深度大于预设阈值,通知调度模块将所述流队列中的数据包输出;

其中,所述流队列管理模块为每个流队列维护一个授权盈余桶,包括:

当所述流队列获得授权时,所述流队列管理模块将所述授权盈余桶中的授权盈余加上所述授权的授权颗粒度;当所述流队列调度输出数据包时,所述流队列管理模块将所述授权盈余减去所述数据包的包长;

当有一个数据包入队时,所述流队列管理模块将所述授权盈余桶中的队列深度加上所述数据包的包长;当所述队列调度输出一个数据包时,所述流队列管理模块将所述队列深度减去所述数据包的包长。

其中,所述授权发送模块中的流队列序号与所述流队列管理模块中的流队列序号一一对应;

所述流队列管理模块将接收到的所述授权保存在所述流队列的授权盈余桶中,包括:

所述流队列管理模块按照流队列序号将所述授权保存在对应的流队列的授权盈余桶中。

所述授权盈余桶中的所述授权盈余的预设阈值为0,所述队列深度的预设阈值为0,如果所述授权盈余桶中的所述授权盈余大于0且所述队列深度大于0,则通知调度模块将所述流队列中的数据包输出。

在上述步骤中,作为一种优选的实施方式,所述流队列管理模块还向所述授权发送模块发送授权请求,包括:

对每一个流队列,如果该流队列的授权盈余桶中的授权差值小于预设阈值,则向所述授权发送模块发送针对该流队列的授权请求,否则停止向所述授权发送模块发送针对该流队列的授权请求,所示授权差值为所述授权盈余与队列深度的差值;

进一步地,对每一个流队列,如果所述流队列的授权盈余桶中的授权盈余已经达到预设的授权盈余最大值,则停止向所述授权发送模块发送针对该流队列的授权请求;

对每一个流队列,如果该流队列的队列深度为0且授权盈余为负时,会继续向所述授权发送模块发送针对该流队列的授权请求直到所述授权盈余达到初始值为止;该初始值可以是寄存器配置的,这个数值可以由用户配置。

所述授权发送模块在收到所述流队列管理模块针对每个流队列的授权请求后,按照各个端口以及各个端口挂接的流队列预先配置的权重将所述总授权分配给各个流队列,并且仅将为满足向所述授权发送模块发送授权请求的流队列分配好的授权按照流队列序号发送到流队列管理模块。

S103:调度模块在收到所述流队列管理模块的通知后,按预设的调度策略将所述流队列中的数据包输出。

其中,作为一种优选的实施方式,所述预设的调度策略包括:端口间轮询且端口内流队列按优先级调度,即调度模块按SP+RR的方式将所述流队列中的数据包输出,如图3所示,M个端口之间采用轮询RR调度策略,这样能保证M个端口都机会均等的输出数据包;每个端口挂接的流队列按优先级由高到低输出数据包,只有优先级高的流队列不满足调度输出条件情况下,低优先级才能调度输出;这样考虑了流队列调度输出的特殊性。

这时,考虑到端口有可能存在授权累积的问题,作为一种优选的实施方式,在上述步骤之后,本实施例还包括下面的步骤:

缓存管理模块接收并缓存所述调度模块输出的数据包,并将所述数据包输出;

为每个端口维护端口带宽差值,所述端口挂接一个或多个流队列,所述缓存管理模块中的端口序号与所述授权发送模块和流队列管理模块中的端口序号也是一一对应;

若所述缓存管理模块中所述端口的端口带宽差值大于或等于预设门限值,则通知所述授权发送模块停止向所述流队列管理模块中对应端口挂接的流队列发送授权,否则通知所述授权发送模块恢复或继续向所述流队列管理模块中对应端口挂接的流队列发送授权;

其中,所述端口带宽差值是指:所述缓存管理模块中所述端口从所述调度模块收到数据包的流量与该端口输出数据包的流量的差值;

所述授权发送模块在收到所述缓存管理模块的通知后,按照端口序号停止向所述流队列管理模块中对应端口挂接的流队列发送授权,或者,按照端口序号恢复或继续向所述流队列管理模块中对应端口挂接的流队列发送授权。

由于授权发送模块一直给流队列管理模块中该对应端口发送授权,该端口就会一直调度出包,发送至缓存管理模块,导致缓存管理模块对应端口收到数据包的流量与输出流量的差值大于一定阈值,那么流队列管理模块中该对应端口的授权就会累积,在缓存管理模块体现就是对应端口的端口带宽差值逐渐增大;在流队列管理模块体现就是对应端口的总授权盈余逐渐增大;当端口带宽差值大于预设门限值时,需要对流队列管理模块中该对应端口进行流控管理,以平衡该端口多余的授权,即,通知授权发送模块停止向所述流队列管理模块中对应端口发送授权,此时虽然流队列管理模块的对应端口还有多余的授权盈余,但随着它继续发送报文给缓存管理模块,缓存管理模块将数据包输出,缓存管理模块对应端口的带宽差值就会慢慢的减小,相应的,流队列管理模块对应端口总的授权盈余也会慢慢减少;当端口带宽差值小于预设门限值时,就可以恢复该端口的授权发送,从而达到端口授权发送和物理端口带宽动态平衡的目的。

在一个应用示例中,如图5所示,每个流队列的授权盈余桶维护过程,包括以下步骤:

S201:授权发送模块开始向各个流队列按权重发送授权;

S202:授权发送模块判断收到缓存管理模块发来的流控信息是否有效,如果有效,说明需要暂停发送授权给相应端口,执行步骤S203,否则转至步骤S204;

S203:暂停向所述流控信息中指示的端口发送授权,并转至步骤S207;

S204:授权发送模块向其他端口挂接的所述流队列按权重发送授权;

S205:流队列管理模块判断所述授权是否达到流队列,如果是,则执行步骤S206;否则,所述授权盈余桶的授权盈余保持不变;

S206:所述授权盈余桶将授权盈余加上所述授权对应的授权颗粒度;

S207:流队列管理模块判断是否有流队列输出数据包,如果有,则执行步骤S208,否则,所述授权盈余桶的授权盈余保持不变;

S208:所述授权盈余桶将授权盈余减去所述数据包的包长。

在上述步骤S204之后,步骤S205~S206与步骤S207~S208的顺序是可以倒换的,有可能授权先来,也有可能报文先出队。

从上述实施例可以看出,相对于现有技术,上述实施例中提供的流量调度的装置和方法,按照权重分配授权,很好地控制了授权的发送,可以避免队列流量调度后抖动性差的问题;通过对单个队列授权盈余桶的维护,能够更准确地满足各个队列的调度需求,准确控制每个流队列的授权;并且按照优先级和轮询的方式,考虑到了流队列调度输出的特殊性,保证将优先级高的数据包先调度输出,避免了低优先级队列包泄露的问题,提高了调度效率;缓存管理模块的流控机制使得端口授权发送和物理端口带宽达到动态平衡,有效地控制了授权积累。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

以上所述仅为本发明的优选实施例而已,并非用于限定本发明的保护范围。根据本发明的发明内容,还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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