CN101719869B - 一种采用关联令牌桶算法动态分配带宽的方法 - Google Patents
一种采用关联令牌桶算法动态分配带宽的方法 Download PDFInfo
- Publication number
- CN101719869B CN101719869B CN200910224175XA CN200910224175A CN101719869B CN 101719869 B CN101719869 B CN 101719869B CN 200910224175X A CN200910224175X A CN 200910224175XA CN 200910224175 A CN200910224175 A CN 200910224175A CN 101719869 B CN101719869 B CN 101719869B
- Authority
- CN
- China
- Prior art keywords
- token
- formation
- dynamic
- counting
- bandwidth
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明揭示了一种采用关联令牌桶算法在多个队列之间实现带宽动态分配的方法,该方法不需要复杂的算法和调度电路,只需要使用多个令牌桶的关联令牌桶算法和一个严格优先级调度器SP,就可以实现总带宽在不同队列之间的动态分配。这种实现方法提高了总带宽在不同队列之间分配的灵活性,同时大大降低了硬件实现的难度。
Description
技术领域
本发明涉及网络及数据通信领域,尤其涉及数据网络领域中动态分配带宽的技术。
背景技术
随着通信技术的发展,用户对带宽的要求也越来越高。现有的动态带宽分配技术普遍的存在两种缺陷,一是缺乏灵活性,二是为了实现一定的灵活性,实现的算法和方式过于复杂,不利于硬件实现。
公开号为CN101409664A的专利介绍了一种动态分配带宽的方法,局端设备根据请求业务的优先级将业务分为高优先级、中优先级和低优先级业务,优先将带宽分配给高和中优先级业务,最后将剩余带宽分配给低优先级业务,这个专利的带宽分配方式相对比较固定,其“动态”分配的方式仅仅体现在局端设备根据请求业务的不同而赋予不同的优先级和相应的带宽,无法实现带宽在不同优先级之间的灵活调度和充分应用,例如如果高优先级请求的带宽没有被用掉,那么这部分带宽也不能被低优先级占用。
公开号为CN1645817A的专利虽然可以在4个队列中灵活分配带宽,而且允许高优先级业务抢占低优先级业务的带宽,并且在高优先级业务不占用带宽的时候,低优先级业务可以占用全部带宽,但是该专利实现带宽灵活分配的方法比较复杂,需要预留带宽和多级判断条件。
文献“一种基于网络处理器的动态带宽分配算法”介绍的算法可以实现令牌在多个优先级队列之间的动态共享(某个队列向其它队列借用令牌或者收回借出的令牌),但是算法实现过于复杂,需要进行矩阵运算。
发明内容
本发明的目的在于提供一种利用简单的关联令牌桶算法,既可以用非常简单的硬件电路实现,减少成本,又可以最大限度地实现总带宽在多个队列之间的动态分配,极大地提高带宽分配的灵活性。
为实现上述发明目的,本发明提出一种采用关联令牌桶算法动态分配带宽的方法,其在严格优先级调度器从同一个组的队列(Queue)中调度数据报文的操作中,从令牌桶中减去令牌的操作包括如下步骤:
1)根据队列号(Queue ID)查找到队列分组标志数据结构(DsGroupIdMap)中的一个条目,该条目包含一个分组号(group ID),该分组号对应指向令牌桶数据结构(DsBucket)的索引值;
2)根据所述分组号查找到令牌桶数据结构(DsBucket)的一个条目,每个该条目包括复数对应同一个组内多个队列的令牌操作策略(policy0,policy1...policyN)及队列的动态令牌计数(bucket0.token,bucket1.token...bucketN.token);且每个令牌操作策略有复数个比特位,每一比特位分别代表对应的动态令牌计数的操作方式;
3)当某一队列的令牌操作策略的某一比特位置“1”时,与该比特位对应的动态令牌计数则减去当前被调度的报文长度(packetLength),否则不做任何操作。
其中,所述步骤3)中动态令牌计数减去当前被调度的报文长度(packetLength)的具体操作为:
a)当某一队列的动态令牌计数大于或等于当前被调度的报文长度即token>=packetLength时,该队列的动态令牌计数就减去当前被调度的报文长度的数值并刷新令牌桶数据结构(DsBucket)中该队列的动态令牌计数的数值;
b)当该队列的动态令牌计数小于当前被调度的报文长度即token<packetLength时,就用当前被调度的报文长度减去该队列的动态令牌计数(token)的数值刷新令牌桶数据结构(DsBucket)中该队列的动态令牌计数的数值,并且把最高比特位置1,表示这时token的数值是一个负数。
当动态令牌计数变成负值时,则相应的队列不再参与调度,直到动态令牌计数在增加令牌的时候重新变成正数。
所述步骤3)当某个队列的动态令牌计数在做减去当前被调度的报文长度(packetLength)的操作时,根据队列的令牌操作策略,使得属于同一组内的其他队列的动态令牌计数(token)也做同样的操作。
当某一队列的令牌操作策略的某一比特位置“1”时,表示相对应队列的带宽可被其他队列占用。
相较于现有技术,本发明所揭示的采用关联令牌桶算法动态分配带宽的方法,通过随意设置每个队列的令牌操作策略,可以使当前的队列独占或者占用其他一个或多个队列的带宽,以满足不同的动态分配带宽的需求,提高了带宽分配的灵活度;同时,本发明所使用的硬件电路简单,大大降低了硬件实现的难度。
附图说明
图1为实现本发明关联令牌桶算法及调度机制的原理示意图;
图2为本发明队列数据结构及对应关系的示意图;
图3为本发明令牌桶数据结构及对应关系的示意图;
图4为本发明实施例中的关联令牌桶算法及调度机制的原理示意图。
具体实施方式
本发明实现的关联令牌桶算法和调度机制如图1所示,其包括属于同一个组的多个队列Queue0,Queue1,...QueueN,对应于多个队列Queue0,Queue1,...QueueN的多个令牌桶bucket0,bucket1...bucketN,以及从多个队列中进行数据报文调度的严格优先级调度器(StrictPriority,SP)。
本发明采用的关联令牌桶算法,包括两个部分,一个部分是往令牌桶增加令牌,没有令牌桶关联操作,与传统的添加令牌操作一致,包含以下步骤:
1)根据队列号Queue ID查找到配置文件标志数据结构DsProfileIdMap的一个条目,该条目包含一个配置文件号profile ID(指向配置文件数据结构DsProfile的索引值);
2)根据配置文件号profile ID查找到配置文件数据结构DsProfile中的一个条目,条目的内容如图2所示,其中tokenRate[4:0]代表每次增加的令牌数,每个令牌以字节为单位,bucketMaxDepth[31:0]=tokenThreshold[7:0]<<tokenThrdShift[4:0],表示令牌桶的桶深上限为tokenThreshold[7:0]左移tokenThrdShiff[4:0],桶深最大值的位宽是32bits,多余部分截掉;
3)同时根据队列ID查找到数据结构DsGroupIdMap的一个条目,该条目包含一个group ID(指向数据结构DsBucket的索引值);
4)根据group ID查找到数据结构DsBucket的一个条目,每个条目的内容如图3所示,该条目的内容是以4个队列属于一个组作为样例,其中policy0,policy1,policy2,policy3分别代表同一个组内4个队列的令牌操作策略,在增加令牌的时候不用;bucket0.token,bucket 1.token,bucket 2.token,bucket3.token分别代表属于同一个组内4个队列的动态令牌计数,token的最高比特代表符号位;
5)以队列0为例,当bucket0.token+tokenRate<=bucketMaxDepth时,bucket0.token就加上tokenRate的数值并刷新数据结构DsBucket中bucket0.token的数值;如果bucket0.token+tokenRate>bucketMaxDepth,就用bucketMaxDepth刷新数据结构DsBucket中bucket0.token的数值,每次只会更新一个token。
本发明采用关联令牌桶算法的另一个部分是从令牌桶减去等于当前被调度报文长度的令牌数,包含了令牌桶关联操作,假设当前被调度报文的长度等于packetLength,包含以下步骤:
1)根据队列ID查找到队列分组标志数据结构DsGroupIdMap的一个条目,该条目包含一个分组号group ID(指向令牌桶数据结构DsBucket的索引值);
2)根据分组号group ID查找到令牌桶数据结构DsBucket的一个条目,每个条目的内容如图3所示,该条目的内容是以4个队列属于一个组作为样例,其中bucket0.token,bucket 1.token,bucket 2.token,bucket3.token分别代表属于同一个组内4个队列的动态令牌计数;policy0,policy 1,policy2,policy3分别代表同一个组内4个队列的令牌操作策略,每个令牌操作策略policy有4个比特,分别对应同一个组内4个动态令牌计数token(即bucket0.token,bucketl.token,bucket2.token,bucket3.token)的操作策略,例如policy0的bit{3..0},当policy0[0](代表policy0的比特位0)置“1”时,表示对应的bucket0.token需要减去packetLength,否则不做任何操作;当policy0[1](代表policy0的比特位1)置“1”时,表示对应的bucket1.token需要减去packetLength,否则不做任何操作;依此类推直到policy0[3],对于policy1,policy2,policy3同样适用。
3)以队列0为例,当bucket0.token>=packetLength时,bucket0.token就减去packetLength的数值并刷新数据结构DsBucket中token1的数值;如果bucket0.token<packetLength,就用packetLength减去bucket0.token的数值刷新数据结构DsBucket中bucket0.token的数值,并且把最高比特位置1,表示这时token的数值是一个负数。对bucket0.token的减去packetLength的操作同样适用于bucketl.token,bucket2.token,bucket3.token。每次最多会更新4个动态令牌计数token,即bucket{0,1,2,3}.token,最少则一个动态令牌计数token都不更新,即policy0的4个比特全部置“0”的情形。
4)当某个动态令牌计数token变成负值时,则相应的队列不再参与调度,例如当bucket0.token变为负数时,即bucket0.token[32]=1时,队列0将不再参与调度,直到bucket0.token在增加令牌的时候重新变成正数。
步骤2)是实现该关联令牌桶算法的关键,仍然以队列0为例,当policy0[3:0]=4’b1111,即全部4个比特位全部置“1”,表示当调度器从队列0每次调度出一个报文时,队列0会占用其余队列的带宽。当policy0[3:0]=4’b1011,表示当调度器从队列0每次调度出一个报文时,队列0会占用队列{1,3}的带宽,队列2的带宽不被占用。
关联令牌桶算法的关键是某个队列的token在做“减法”操作的时候,属于同一个组内的其它队列的token也有可能做同样的“减法”操作,取决这个当前队列的policy的设置。通过随意设置每个队列的policy,可以使当前队列独占、或者占用其它一个或者多个队列的带宽。
以下分别以是实施例一至三来进一步说明本发明采用关联令牌桶算法如何实现带宽的灵活分配。
具体实施例一
以一个组包含4个队列为例,如图4所示,要求如下:
1)Queue0为最高优先级,Queue1次高优先级,Queue2优先级比Queue1低,Queue3优先级最低;
2)该组的总带宽为16Mbps;
3)带宽分配如下:Queue0的带宽=4Mbps,Queue1的带宽=8Mbps,Queue2的带宽=12Mbps,Queue3的带宽=16Mbps。
4)动态分配要求:
a)低优先级可以占用高优先级不用的带宽,例如Queue0的4Mbps带宽中有2Mbps不用时,这部分带宽将首先被Queue1占用,没有用完的带宽才能被更低优先级的队列古用;
b)所有优先级都拥塞的情况下,Queue{0,1,2,3}的带宽分配分别是4,4,4,4Mbps;
c)只有在所有比本队列的优先级高的那些队列没有报文等待调度的情形下,该队列的带宽才能得到保证。
满足上述要求的配置如下:
1)4个不同优先级的队列映射到不同的配置文件数据结构DsProfile,根据每个队列的带宽要求配置不同的参数DsProfile.{tokenThrdShift[4:0],tokenThreshold[7:0],tokenRate[15:0]},Queue{0,1,2,3}的分别限流为{4,8,12,16Mbps};
2)令牌桶的数据结构DsBucket.{policy0,policy1,policy2,policy3}则分别设置为{4’b1111,4’b1110,4’b1100,4’b1000}。
具体实施样例二
同样以一个组包含4个队列为例,如图4所示,要求如下:
1)Queue0为最高优先级,Queue1次高优先级,Queue2优先级比Queue1低,Queue3优先级最低;
2)该组的总带宽为16Mbps;
3)带宽分配如下:Queue0的带宽=16Mbps,Queue1的带宽=16Mbps,Queue2的带宽=16Mbps,Queue3的带宽=16Mbps。
4)动态分配要求:
a)低优先级可以占用高优先级不用的带宽;
b)所有优先级都拥塞的情况下,Queue{0,1,2,3}的带宽分配分别是{16,0,0,0Mbps};
c)只有在所有比本队列的优先级高的那些队列没有报文等待调度的情形下,该队列的带宽才能得到保证。
满足上述要求的配置如下:
1)4个不同优先级的队列映射到不同的配置文件数据结构DsProfile,根据每个队列的带宽要求配置不同的参数DsProfile.{tokenThrdShift[4:0],tokenThreshold[7:0],tokenRate[15:0]},Queue{0,1,2,3}的分别限流为{16,16,16,16Mbps};
2)令牌桶的数据结构DsBucket.{policy0,policy1,policy2,policy3}则分别设置为{4’b1111,4’b1110,4’b1100,4’b1000}。
具体实施样例三
同样以一个组包含4个队列为例,如图4所示,要求如下:
1)Queue0为最高优先级,Queue1次高优先级,Queue2优先级比Queue1低,Queue3优先级最低;
2)该组的总带宽为16Mbps;
3)带宽分配如下:Queue0的带宽=4Mbps,Queue1的带宽=4Mbps,Queue2的带宽=4Mbps,Queue3的带宽=4Mbps。
4)动态分配要求:
a)每个优先级不能占用其它优先级的带宽;
b)所有优先级都拥塞的情况下,Queue{0,1,2,3}的带宽分配分别是{4,4,4,4Mbps};
c)即使在所有比本队列的优先级高的那些队列有报文等待调度的情形下,该队列的带宽也能得到保证。
满足上述要求的配置如下:
1)4个不同优先级的队列映射到不同的DsProfile,根据每个队列的带宽要求配置不同的参数DsProfile.{tokenThrdShift[4:0],tokenThreshold[7:0],tokenRate[15:0]},Queue{0,1,2,3,4}的分别限流为{4,4,4,4Mbps};
2)令牌桶的数据结构DsBucket.{policy0,policy1,policy2,policy3}分别设置为{4’b0001,4’b0010,4’b0100,4’b1000}。
本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。
Claims (4)
1.一种采用关联令牌桶算法动态分配带宽的方法,其特征在于:在严格优先级调度器从同一个组的队列(Queue)中调度数据报文的操作中,从令牌桶中减去令牌的操作包括如下步骤:
1)根据队列号(Queue ID)查找到队列分组标志数据结构(DsGroupIdMap)中的一个条目,该条目包含一个分组号(group ID),该分组号对应指向令牌桶数据结构(DsBucket)的索引值;
2)根据所述分组号查找到令牌桶数据结构(DsBucket)的一个条目,每个该条目包括复数对应同一个组内多个队列的令牌操作策略(policy0,policy1...policyN)及队列的动态令牌计数(bucket0.token,bucket1.token...bucketN.token);且每个令牌操作策略有复数个比特位,每一比特位分别代表对应的动态令牌计数的操作方式;
3)当某一队列的令牌操作策略的某一比特位置“1”时,与该比特位对应的动态令牌计数则减去当前被调度的报文长度(packetLength),否则不做任何操作,该步骤具体包括:
a)当某一队列的动态令牌计数大于或等于当前被调度的报文长度即token>=packetLength时,该队列的动态令牌计数就减去当前被调度的报文长度的数值并刷新令牌桶数据结构(DsBucket)中该队列的动态令牌计数的数值;
b)当该队列的动态令牌计数小于当前被调度的报文长度即token<packetLength时,就用当前被调度的报文长度减去该队列的动态令牌计数(token)的数值刷新令牌桶数据结构(DsBucket)中该队列的动态令牌计数的数值,并且把最高比特位置1,表示这时token的数值是一个负数。
2.如权利要求1所述的采用关联令牌桶算法动态分配带宽的方法,其特征在于:当动态令牌计数变成负值时,则相应的队列不再参与调度,直到动态令牌计数在增加令牌的时候重新变成正数。
3.如权利要求1所述的采用关联令牌桶算法动态分配带宽的方法,其特征在于:所述步骤3)当某个队列的动态令牌计数在做减去当前被调度的报文长度(packetLength)的操作时,根据队列的令牌操作策略,使得属于同一组内的其他队列的动态令牌计数(token)也做同样的操作。
4.如权利要求1至3任意一项所述的采用关联令牌桶算法动态分配带宽的方法,其特征在于:所述步骤3)中当某一队列的令牌操作策略的某一比特位置“1”时,表示相对应队列的带宽可被其他队列占用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910224175XA CN101719869B (zh) | 2009-11-26 | 2009-11-26 | 一种采用关联令牌桶算法动态分配带宽的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910224175XA CN101719869B (zh) | 2009-11-26 | 2009-11-26 | 一种采用关联令牌桶算法动态分配带宽的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101719869A CN101719869A (zh) | 2010-06-02 |
CN101719869B true CN101719869B (zh) | 2012-07-04 |
Family
ID=42434388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910224175XA Active CN101719869B (zh) | 2009-11-26 | 2009-11-26 | 一种采用关联令牌桶算法动态分配带宽的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101719869B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104545B (zh) * | 2011-02-12 | 2012-08-08 | 华为技术有限公司 | 解决小包线速的credit调度方法、调度装置及旁路器 |
CN102368730A (zh) * | 2011-09-30 | 2012-03-07 | 烽火通信科技股份有限公司 | 一种在分组传送网中实现通道带宽动态修改的方法 |
CN104219169B (zh) * | 2014-09-30 | 2017-11-10 | 新华三技术有限公司 | 基于类的队列cbq调度方法和设备 |
CN105978824B (zh) * | 2016-07-18 | 2017-09-29 | 湖南恒茂高科股份有限公司 | 帧队列调度流量整形方法与系统 |
CN106789720B (zh) * | 2016-12-16 | 2020-06-16 | 无锡路通视信网络股份有限公司 | 一种基于系统硬件使用率的动态令牌桶生成方法 |
CN112311695B (zh) * | 2020-10-21 | 2022-09-30 | 中国科学院计算技术研究所 | 一种片上带宽动态分配方法及系统 |
-
2009
- 2009-11-26 CN CN200910224175XA patent/CN101719869B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101719869A (zh) | 2010-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101719869B (zh) | 一种采用关联令牌桶算法动态分配带宽的方法 | |
CN104184514B (zh) | 一种用于卫星网络的带宽分配方法 | |
US20060029080A1 (en) | Using burst tolerance values in time-based schedules | |
CN106330765B (zh) | 缓存分配方法及装置 | |
CN106028463B (zh) | 一种基于服务速率控制的星载动态频谱资源调度方法 | |
US7843940B2 (en) | Filling token buckets of schedule entries | |
WO2001069852A2 (en) | Data rate limiting | |
US9940471B2 (en) | Virtual output queue authorization management method and device, and computer storage medium | |
CN111355673A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN111400206B (zh) | 基于动态虚拟门限的缓存管理方法 | |
US20210153112A1 (en) | Method for controlling the admission of slices into a virtualized telecommunication network and the congestion likely to be generated between services instantiated on said slices | |
CN103532873A (zh) | 应用于分布式文件系统的流量控制策略 | |
CN102158906A (zh) | 一种服务质量敏感系统及其任务调度方法 | |
CN101114988A (zh) | 基于非连续发射预测自适应多速率业务的流控算法 | |
CN104753809A (zh) | 一种流量整形中添加令牌的方法及装置 | |
US7565496B2 (en) | Sharing memory among multiple information channels | |
CN107896200A (zh) | 一种兼容虚链路与分组交换机制的报文调度方法 | |
EP2633730A2 (en) | Method and system for adaptive resource allocation | |
CN113079107A (zh) | 一种可编程交换网络的动态优先级拥塞控制方法 | |
CN107769977B (zh) | 一种基于软交换的电力通信网络资源分配方法 | |
US20230117851A1 (en) | Method and Apparatus for Queue Scheduling | |
Lin et al. | Two-stage fair queuing using budget round-robin | |
CN102769566A (zh) | 一种多级调度系统配置、变更方法和装置 | |
CN115695201A (zh) | 一种基于FlexE Channel优先级的带宽资源分配方法和系统 | |
US7701902B1 (en) | Scheduling for sharing channel access in wireless networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 215000 unit 13 / 16, 4th floor, building B, No.5 Xinghan street, Suzhou Industrial Park, Jiangsu Province Patentee after: Suzhou Shengke Communication Co.,Ltd. Address before: Xinghan Street Industrial Park of Suzhou city in Jiangsu province 215021 B No. 5 Building 4 floor 13/16 unit Patentee before: CENTEC NETWORKS (SU ZHOU) Co.,Ltd. |