CN1472936A - 流体轨迹轮询调度方法 - Google Patents

流体轨迹轮询调度方法 Download PDF

Info

Publication number
CN1472936A
CN1472936A CNA031169848A CN03116984A CN1472936A CN 1472936 A CN1472936 A CN 1472936A CN A031169848 A CNA031169848 A CN A031169848A CN 03116984 A CN03116984 A CN 03116984A CN 1472936 A CN1472936 A CN 1472936A
Authority
CN
China
Prior art keywords
formation
track
array
scheduling
module
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.)
Granted
Application number
CNA031169848A
Other languages
English (en)
Other versions
CN1203688C (zh
Inventor
张芥凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN 03116984 priority Critical patent/CN1203688C/zh
Publication of CN1472936A publication Critical patent/CN1472936A/zh
Application granted granted Critical
Publication of CN1203688C publication Critical patent/CN1203688C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种流体轨迹轮询调度方法属于数据通讯领域,本发明首先采用生成流体轨迹数组的方法、根据各业务预约带宽计算出轨迹数组;然后在每一个调度周期里,根据当前的业务状态,以及计算出的轨迹数组按照一个两级的调度拓扑结构选出一个需调度的队列;最后通过一个赤字计数器模块发送该队列的数据包,或者直接发送该队列的数据包。本发明可以100%的使用网络节点带宽,并保障各个队列实际使用带宽达到该业务预约的带宽,还可以按照各业务预约带宽按比例分配闲置带宽;同时时延特性能达到可实现的调度方法的理论最优水平;且实现简单,便于扩展。

Description

流体轨迹轮询调度方法
技术领域
本发明涉及一种调度方法,特别是一种适合实现路由器服务质量的流体轨迹轮询调度方法,属于数据通讯领域。
背景技术
数据通讯网络已经从传统的“尽力而为”传送数据的阶段发展到需要为业务提供一定的服务质量(QoS,Quality of Service)的阶段。这样的变化要求路由器为数据业务保障QoS参数,这些参数包括时延(delay)、时延抖动(delayjitter)、丢失率(loss rate)、吞吐率(throughput)等。加权公平队列调度方法是当前在路由器等数据通讯的网络节点中保证带宽分配和各业务流QoS指标的主要手段之一。通用共享处理系统(GPS,General Processor Sharing)是一种无法实现的理想调度方法。它假设(a)数据包是无限可分的;(b)系统能够同时对多个队列进行服务。业务就像流体一样流过网络节点,各个业务每一时刻流过网络节点的速率的比值都等于他们预约带宽的比值。
经文献检索发现,中国专利申请号为:01117978.3,名称为:一种适合实现路由器服务质量的综合业务中的调度方法,该专利技术将数据流分别进入不同队列,队列依据服务标准分为三种,包括尽力而为服务队列,负载可控服务队列和保证服务队列,系统设置了一个虚拟时钟,并为每个入队列的数据包计算一个虚拟时标,根据虚拟时标大小决定发送次序,如果当前系统的虚拟时钟小于保证服务队列中的最小虚拟时标,则发送尽力而为服务队列和负载可控服务队列中具有最小虚拟时标的的数据包;否则,发送保证服务队列中具有最小虚拟时标的数据包。该技术防止了保证业务占用过多带宽,但是有时会出现即便保证队列有数据包,但仍然浪费带宽的情况,无法有效的利用带宽。而且计算量较大,无法在大容量网络节点中应用。
发明内容
本发明的目的在于针对现有技术的不足,提供一种新颖的加权公平队列调度方法,称为流体轨迹轮询调度方法,这种方法通过模拟GPS方法计算出调度轨迹,再根据该轨迹实现调度,解决了背景技术中浪费带宽,计算量较大、无法在大容量网络节点中应用的问题。
本发明是通过以下技术方案来实现的,本发明首先采用生成流体轨迹数组的方法、根据各业务预约带宽计算出轨迹数组,该轨迹可以将各业务被调度的时间点均匀分布在时间轴上,使调度结果达到理论最优的公平性和时延特性;然后在每一个调度周期里,根据当前的业务状态,以及计算出的轨迹数组按照一个两级的调度拓扑结构选出一个需调度的队列;最后通过一个赤字计数器模块发送该队列的数据包,或者直接发送该队列的数据包;
所述的流体轨迹数组,轨迹轮询调度模块按照该轨迹数组来调度。该数组的长度为网络节点的总预约带宽比上最小带宽粒度,该数组上每一项代表一次调度应选择的队列,各队列号在流体轨迹数组上的分布模拟GPS流体调度的结果;
所述的两级的调度拓扑结构,由一个按照轨迹数组调度的轨迹轮询调度模块和一个采用普通轮询调度方法的加权轮询调度模块组成该拓扑结构的第一级,严格优先级调度模块组成该拓扑结构的第二级;
所述的赤字计数器模块,该计数器只有在通过网络节点的数据包为变长时才需要实现,通过该计数器控制各队列每次发送数据包的总字节长度。
以下对本发明作进一步的描述,内容如下:
本发明在实现时包括计算流体轨迹数组的方法,两级调度拓扑结构的工作步骤,赤字计数器的工作方法。本发明方法步骤如下:
(1)根据业务预约情况计算出流体轨迹数组;
(2)如果所有队列不全为空,轨迹轮询调度模块选出一个需调度的队列,同时加权轮询调度模块选出一个需调度的队列;如果所有队列全为空,下一调度周期转回步骤(2);
(3)严格优先级调度模块从步骤(2)选出的两个队列中选出一个队列;
(4)传送严格优先级调度模块选出的队列中的数据包;
(5)如果业务预约情况发生变化,转步骤(1);如果业务预约情况没有发生变化,转步骤(2)。
步骤(1)和步骤(5)包含了计算流体轨迹数组的方法,步骤(2)和步骤(3)体现了本发明中两级的调度拓扑结构工作的原理,步骤(4)在变数据包长的网络节点中由赤字计数器模块完成。
1、所述的步骤(1)具体实现如下:
为了描述的方便,定义如下参数:
N:该网络节点上总的业务数。每一个业务在网络节点中都表现为一个队列,并各有一个队列号:1,2,3,……,N。
R:网络节点输出端口的物理链路带宽。
Lmax:通过该网络节点的数据包的最大包长。
r:预约带宽的最小粒度。业务的预约带宽是网络节点必须为该业务保障的最小带宽,带宽最小粒度是指预约带宽在计量时的最小单位,即预约带宽都必须是带宽最小粒度的自然数倍。
ri:业务i的预约带宽。
R’:总预约带宽,总预约带宽是所有业务预约带宽的总和。
n:总预约带宽与带宽最小粒度的比值。
S:流体轨迹数组,它是一个有n项的一维数组,从第0项到第n-1项,用来储存调度轨迹。
sj:为轨迹数组S的第i项,且0<sj≤N。
计算流体轨迹数组的步骤为:
A.定义两个数组,Tstart(起始时标数组),Tend(结束时标数组)。每个数组都为N项,两个数组的第1项都对应队列1,第二项都对应队列2,以此类推。将Tstart的所有项全部初始化为0,Tend的每一项初始化为总预约带宽比上对应队列的预约带宽。比如Tend的第i项初始化为R’/ri。定义变量j表示当前计算轨迹数组的第j项,并将该变量初始化为0,也就是从第0项开始计算。
B.如果已经计算完轨迹数组的n项,结束轨迹数组的计算;如果还没有计算完n项,将所有满足对应Tstart值小于或等于当前j值的队列定义为一个队列集合,选取该集合中队列对应的Tend值最小的一个。将这个有最小Tend队列的队列号赋给轨迹数组的第j项。
C.将步骤B中选出的队列的Tend赋给该队列对应的Tstart,将该队列对应的Tend增加R’/ri,j增加1,转步骤B。
步骤A是用来定义和初始化一些参数,步骤B和步骤C用来生成流体轨迹数组的所有数据。可以证明步骤B中的集合肯定不会为空集合,当集合中有几个队列的Tend同时为最小时,任意选取一个,为了方便,不妨选取队列号最小的一个。该数组的特点是模拟GPS的调度结果生成,将生成的流体轨迹数组首尾相连后,同一个队列号在循环的流体轨迹数组中均匀分布,出现的间隔大致相等,这一特性保障了该调度方法最终可以达到理论最优的公平性和时延特性。
2、步骤(2)具体实现如下:
●轨迹轮询调度模块选出一个需调度的队列,具体步骤如下:
A.如果为流体轨迹数组生成后的首次调度,初始化一个指向流体轨迹数组的指针P,比如将其指向第0项;如果不是流体轨迹数组生成后的首次调度,直接转步骤B。
B.以P指向的数组项的值作为队列号,检查该队列是否为空,如果为空,转步骤C;如果不为空,转步骤D。
C.如果已经连续检查到K个队列都为空,将P指向下一个数组项,返回队列号“失败”,结束本次调度;如果还没有连续检查到K个空队列,将P指向下一个数组项,转步骤B。
D.选定当前P指向的数组项的值作为需调度的队列号,将P指向下一个数组项,结束本次调度。
步骤C中的参数K是为了尽量能够选择到非空的队列,又不会导致调度周期过长,根据实现该方法的硬件环境选择的一个参数。步骤C、D中提到的P指向下一个数组项,这是指在生成轨迹数组后,将其首尾相连成环状,P指向下一个数组项也就是P增加1,如果P已经等于n-1了,就将P赋为0。该模块的特点是按照流体轨迹数组进行调度,遇到空队列时,一个周期里最多连续跳过K个空队列。
●加权轮询调度模块选出一个需调度的队列,具体步骤如下:
A.如果为流体轨迹数组生成后的首次调度,初试化一个指向队列的指针Q,比如将其指向队列1,定义一个计数器Cwrr,将该计数器初始化为指针Q指向队列的预约带宽比上带宽最小粒度,转步骤C;如果不是流体轨迹数组生成后首次调度,直接转步骤B。
B.如果上个调度周期严格优先级调度模块选择的是加权轮询调度模块的调度结果,转步骤C;如果上个调度周期严格优先级调度模块选择的是轨迹轮询调度模块的调度结果,转步骤F;
C.如果指针Q指向的队列为空,将Q指针指向下一个队列,转步骤D;如果指针Q指向的队列不为空,转步骤E;
D.如果指针Q指向的队列为空,将Q指针指向下一个队列,重新执行步骤D;如果指针Q指向的队列不为空,将计数器Cwrr的值赋为Q指针指向的队列的预约带宽比上带宽最小粒度,转步骤E;
E.选定当前指针Q指向的队列号作为需调度的队列号,将Cwrr减1。减1后,如果Cwrr=0,将指针Q指向下一个队列,将计数器Cwrr的值赋为Q指针指向的队列的预约带宽比上带宽最小粒度,结束。
F.如果上一调度周期选定的队列为空,转步骤D;如果上一调度周期选定的队列不为空,仍然保持选定上一周期选定的队列号作为需调度的队列号,结束。
步骤B需要根据严格优先级调度模块上个调度周期的结果进行判断,步骤C、D、E中提到的指针Q指向下一个队列,是按照队列号的由小到大依次选中,当指向队列N时,下一个队列是队列1。加权轮询调度模块使用的是成熟的方法,该算法的特点是在一个调度周期里,如果所有队列不全为空,一定可以选出非空的队列。本发明使用该方法作为轨迹轮询调度模块的补充,这样在轨迹轮询调度失败时不至于浪费网络节点的带宽。
3、步骤(3)中,如果轨迹轮询调度模块选出了有效的队列号,也就是不是队列号“失败”,那么严格优先级调度模块选择轨迹轮询调度模块的调度结果;反之,如果轨迹轮询调度模块选出的队列号是“失败”,严格优先级调度模块选择加权轮询调度模块的调度结果。
4、步骤(4)的实现,根据应用环境的不同分为两种情况:
如果实现本发明的网络节点的数据包为等长数据包,则直接发送步骤(3)选中队列的第一个数据包就完成了步骤(4)。
如果实现本发明的网络节点上数据包为变长,则步骤(4)的实现方法如下:
A.如果为流体轨迹数组生成后首次调度,为每个队列定义一个赤字计数器,将这些计数器初试化为0;如果不是首次调度,直接开始步骤B。
B.给当前选中的队列的赤字计数器增加Lmax,然后从该队列首开始发送数据包,每发送出一个数据包从该队列的赤字计数器减去该数据包的包长;当发送到队列首的数据包的包长大于该队列的赤字计数器的值时,发送完毕,或者发送到队列为空时发送完毕。如果是由于队列为空结束该队列数据包发送的,将该队列的赤字计数器清零,结束。
5、步骤(5)具体实现如下:
如果业务预约情况发生变化,则需要重新计算流体轨迹数组,并重新初始化变量,然后再按照新的流体轨迹进行调度。
在实现步骤(5)与步骤(1)时,可以在调度器中设置主备两组参数空间。当业务预约情况发生变化的时候,将计算出的新的流体轨迹数组储存在备用的参数空间里,然后,调度器从使用主参数空间直接切换到使用备参数空间,这样在业务预约情况发生变化时,不会中断业务的调度。下一次业务预约情况发生变化时,再切换回主参数空间。
本发明具有实质性特点和显著进步,对于带宽使用度,由于在所有业务不全为空时,本发明两级的调度拓扑结构中加权轮询调度模块总是可以选出需要服务的队列,所以本发明可以100%的使用网络节点带宽;对于公平性,可以证明,本发明可以保障各个队列实际使用带宽达到该业务预约的带宽,而且可以按照各业务预约带宽按比例分配闲置带宽;时延特性,在数据包等长的网络节点中,时延特性达到了可实现的调度方法的理论最优水平,对于数据包变长的网络节点,也有良好的时延特性;对于实现的简单性,本发明由于是按照轨迹数组轮询调度,所以其每次调度的时间复杂度为O(1),在计算流体轨迹数组时的时间复杂度为O(N*R/r),由于轨迹数组只在预约服务改变时才计算一次,所以这并不会影响调度的性能。空间复杂度为O(N+R/r),比如对于10Gbps的数据节点,有128个队列,带宽的粒度为1kbps,大约只需要10Mbyte的空间就可以实现,所以本发明是容易实现的。由于队列的增加和网络节点带宽容量的增大对于本发明的实现影响很小,所以本发明也是便于扩展的。
具体实施方式
结合本发明的内容提供以下的实施例,对本发明方法作进一步的理解:
网络节点A有4个业务,总带宽为1Mbps,最小带宽粒度为40Kbps,最大包长为100字节,选定控制连续跳过空队列数目的参数K为2。除了传送数据包时间,网络节点完成一次调度所需的计算时间为200us。各业务的预约带宽为,业务1:80kbps;业务2:160kbps;业务3:120kbps;业务4:40kbps,通过网络节点A的数据包变长,最大包长为100Bytes。业务预约情况在2000us时发生了变化,计算新的轨迹数组需耗时1000us。数据包到达网络节点的顺序为:
数据包编号   1   2   3   4   5   6   7   8   9
到达队列   1   2   3   2   2   1   2   4   2
包长/Byte   70   40   50   50   60   60   50   80   50
到达时刻/us   0  100  100  500  600  700  700  1000  1100
步骤1,生成流体轨迹数组。总预约带宽为80+160+120+40=400kbps,所以流体轨迹数组的长度为400kbps/40kbps=10项。
1)初始化数组Tstart=[0,0,0,0],Tend=[5,2.5,3.33,10],开始计算轨迹数组第0项,即j=0;
2)四个队列的Tstart值都不大于0,对应Tend最小的是队列2,所以轨迹数组的第0项为2;
3)修改队列2对应的Tstart、Tend值,所以Tstart=[0,2.5,0,0],Tend=[5,5,3.33,10],开始计算轨迹数组的第1项;
4)队列1,3,4对应的Tstart值不大于1,这些队列对应Tend的值最小的是队列3,所以轨迹数组的第1项为3;
5)修改队列3对应的Tstart、Tend值,所以Tstart=[0,2.5,3.33,0],Tend=[5,5,6.67,10],开始计算轨迹数组的第2项;
6)队列1,4对应的Tstart值不大于2,这些队列对应Tend的值最小的是队列1,所以轨迹数组的第2项为1;
7)修改队列1对应的Tstart、Tend值,所以Tstart=[5,2.5,3.33,0],Tend=[10,5,6.67,10],开始计算轨迹数组的第3项;
8)队列2,4对应的Tstart值不大于3,其中队列2对应的Tend最小,所以轨迹数组的第3项为2;
9)修改队列2对应的Tstart、Tend值,所以Tstart=[5,5,3.33,0],Tend=[10,7.5,6.66,10],开始计算轨迹数组的第4项;
10)队列3,4对应的Tstart值不大于4,其中队列3对应的Tend最小,所以轨迹数组的第4项为3;
11)修改队列3对应的Tstart、Tend值,所以Tstart=[5,5,6.66,0],Tend=[10,7.5,10,10],开始计算轨迹数组的第5项;
12)队列1,2,4对应的Tstart值不大于5,其中队列2对应的Tend最小,所以轨迹数组的第5项为2;
13)修改队列2对应的Tstart、Tend值,所以Tstart=[5,7.5,6.66,0],Tend=[10,10,10,10],开始计算轨迹数组的第6项;
14)队列1,4对应的Tstart值不大于6,队列1和队列4的Tend都为10,可以随意选择一个队列,不妨选取队列号较小的队列1,所以轨迹数组的第6项为1;
15)修改队列1对应的Tstart、Tend值,所以Tstart=[10,7.5,6.66,0],Tend=[15,10,10,10],开始计算轨迹数组的第7项;
16)队列3,4对应的Tstart值不大于7,队列3对应的Tend值较小,所以轨迹数组的第7项为3;
17)修改队列3对应的Tstart、Tend值,所以Tstart=[10,7.5,10,0],Tend=[15,10,13.33,10],开始计算轨迹数组的第8项;
18)队列2,4对应的Tstart值不大于8,选择队列号较小的队列3,所以轨迹数组的第8项为2;
19)修改队列2对应的Tstart、Tend值,所以Tstart=[10,10,10,0],Tend=[15,12.5,13.33,10],开始计算轨迹数组的第9项;
20)只有队列4对应的Tstart值不大于8,选择队列号较小的队列4,所以轨迹数组的第9项为4;
21)修改队列4对应的Tstart、Tend值,所以Tstart=[10,10,10,10],Tend=[15,12.5,13.33,20];
22)计算完了流体轨迹数组全部的10项,结束轨迹数组的生成。
所以流体轨迹数组为[2,3,1,2,3,2,1,3,2,4],将其首尾相连。
然后按照该轨迹数组调度数据包,由于为变包长网络节点,需实现赤字计数器。
初始化指向流体轨迹数组的指针P=0,,初始化指向队列的指针Q=1,计数器Cwrr=80kbps/40kbps=2,初始化所有赤字计数器为0。
0时刻,只有队列1有数据包。流体轨迹调度模块连续从轨迹数组中读2项,对应的队列都为空,流体轨迹调度模块返回“失败”,此时指针P指向轨迹数组的第3项;加权轮询调度模块选中队列1,计数器减1后,Cwrr=1;由于流体轨迹调度模块返回了无效的队列号,严格优先级调度模块选中队列1;队列1的赤字计数器加到100,发送数据包长度为70字节,队列1此时为空,队列1的赤字计数器清零,数据包1从200us开始发送,到760us时调度周期结束。
开始发送第一个数据包的同时,就可以开始下一个周期的调度了,也就是200us时刻开始第二次调度,此时队列2和队列3都不为空,流体轨迹调度模块的指针P指向轨迹数组的第2项,在检查到队列1为空后,指向轨迹数组第3项,选中队列2,然后指针P指向轨迹数组第4项;由于上一周期使用的是加权轮询调度结果,加权轮询调度模块再次调度,加权轮询调度模块选中队列1,但队列1为空,所以指针Q改为指向队列2,Cwrr赋为4;严格优先级调度模块选中由轨迹调度模块选出的队列2,队列2的赤字计数器增加到100,由于上一周期发送到760us结束,此时队列中已经有了数据包连续发送数据包2,数据包4,发送了这两个数据包后,赤字计数器还剩10,此时虽然数据包7已经在队列中,但由于计数器中值不够,无法发送,发送从760us到1480us,队列2的赤字计数器保留为10。
760us开始第三次调度,此时队列1,2,3都不为空,流体轨迹调度模块选中队列3,然后将指针P指向轨迹数组第5项,由于上一周期选用的是流体轨迹调度的结果,由于加权轮询调度模块上一周期选中的队列2仍然不为空,加权轮询调度模块本调度周期仍然选中队列2,Cwrr与指针Q都不改变。严格优先级调度模块选中队列3,传送数据包3,在传送完后由于队列空,队列3的赤字计数器清零,传送从1480us到1880us。
1480us开始第四次调度,流体轨迹调度模块选中队列2;加权轮询调度模块仍然不变;严格优先级调度模块选中队列2,赤字计数器增加100,变为110,可以连续的发送数据包5和数据包7,赤字计数器减为0,队列也为空,发送持续到2760us。
1880us开始第五次调度,传送数据包6。传送从2760us到3240us。
2000us时带宽预约情况发生变化,业务2的预约带宽改为40kbps,轨迹数组重新计算为[3,1,2,3,13,4],将其储存在备用参数空间里。轨迹数组的计算耗时1000us。
2760us开始第六次调度,传送数据包8,传送从3240us到3880us。
3240us开始第七次调度,切换到新的轨迹数组,然后发送数据包9。
实施效果:从本实施例可以看出,本发明方法在调度过程中,计算量小,易于扩展,数据包可以及时得到调度,调度时延小。

Claims (10)

1、一种流体轨迹轮询调度方法,其特征在于,首先采用生成流体轨迹数组的方法、根据各业务预约带宽计算出轨迹数组;然后在每一个调度周期里,根据当前的业务状态,以及计算出的轨迹数组按照一个两级的调度拓扑结构选出一个需调度的队列;最后通过一个赤字计数器模块发送该队列的数据包,或者直接发送该队列的数据包;
所述的流体轨迹数组,用来储存调度轨迹,轨迹轮询调度模块按照该轨迹来调度;该数组的长度为网络节点的总预约带宽比上最小带宽粒度,该数组上每一项代表一次调度应选择的队列,各队列号在流体轨迹数组上的分布模拟GPS流体调度的结果;该轨迹将各业务被调度的时间点均匀分布在时间轴上,使调度结果达到理论最优的公平性和时延特性;
所述的两级的调度拓扑结构,由一个按照轨迹数组调度的轨迹轮询调度模块和一个采用普通轮询调度方法的加权轮询调度模块组成该拓扑结构的第一级,严格优先级调度模块组成该拓扑结构的第二级;
所述的赤字计数器模块,该计数器只有在通过网络节点的数据包为变长时才需要实现,通过该计数器控制各队列每次发送数据包的总字节长度。
2、根据权利要求1所述的流体轨迹轮询调度方法,其特征是,方法步骤如下:
(1)根据业务预约情况计算出流体轨迹数组;
(2)如果所有队列不全为空,轨迹轮询调度模块选出一个需调度的队列,同时加权轮询调度模块选出一个需调度的队列;如果所有队列全为空,下一调度周期转回步骤(2);
(3)严格优先级调度模块从步骤(2)选出的两个队列中选出一个队列;
(4)传送严格优先级调度模块选出的队列中的数据包;
(5)如果业务预约情况发生变化,转步骤(1)如果业务预约情况没有发生变化,转步骤(2)。
3、根据权利要求2所述的流体轨迹轮询调度方法,其特征是,步骤(1)具体实现如下:
A.定义两个数组,Tstart,起始时标数组,Tend,结束时标数组,每个数组都为N项,两个数组的第1项都对应队列1,第二项都对应队列2,以此类推;将Tstart的所有项全部初始化为0,Tend的每一项初始化为总预约带宽比上对应队列的预约带宽;比如Tend的第i项初始化为R’/ri;定义变量j表示当前计算轨迹数组的第j项,并将该变量初始化为0,也就是从第0项开始计算;
B.如果已经计算完轨迹数组的n项,结束轨迹数组的计算;如果还没有计算完n项,将所有满足对应Tstart值小于或者等于当前j值的队列定义为一个队列集合,选取该集合中队列对应的Tend值最小的一个,将这个有最小Tend队列的队列号赋给轨迹数组的第j项;
C.将步骤B中选出的队列的Tend赋给该队列对应的Tstart,将该队列对应的Tend增加R’/ri,j增加1,转步骤B;
N为该网络节点上总的业务数,每一个业务在网络节点中都表现为一个队列,并各有一个队列号:1,2,3,……,N;R为网络节点输出端口的物理链路带宽;Lmax为通过该网络节点的数据包的最大包长;r为预约带宽的最小粒度,业务的预约带宽是网络节点必须为该业务保障的最小带宽,带宽最小粒度是指预约带宽在计量时的最小单位,即预约带宽都必须是带宽最小粒度的自然数倍;ri为业务i的预约带宽;R’为总预约带宽,总预约带宽是所有业务预约带宽的总和;n为总预约带宽与带宽最小粒度的比值;S为流体轨迹数组,它是一个有n项的一维数组,从第0项到第n-1项,用来储存调度轨迹;sj为轨迹数组S的第i项,且0<si≤N。
4、根据权利要求3所述的流体轨迹轮询调度方法,其特征是,流体轨迹数组的模拟GPS的调度结果生成,将生成的流体轨迹数组首尾相连后,同一个队列号在循环的流体轨迹数组中均匀分布,出现的间隔大致相等。
5、根据权利要求2所述的流体轨迹轮询调度方法,其特征是,步骤(2)具体实现如下:
●轨迹轮询调度模块选出一个需调度的队列,具体步骤如下:
A.如果为调度轨迹数组生成后首次调度,初始化一个指向调度轨迹数组的指针P,比如将其指向第0项;反之,直接转步骤B;
B.以P指向的数组项的值作为队列号,检查该队列是否为空,如果为空,转步骤C;否则转步骤D;
C.如果已经连续检查到K个队列都为空,将P指向下一个数组项,返回队列号“失败”,结束本次调度;如果还没有连续检查到K个空队列,将P指向下一个数组项,转步骤B;
D.选定当前P指向的数组项的值作为需调度的队列号,将P指向下一个数组项,结束本次调度;
步骤C中通过参数K尽量选择到非空的队列,根据硬件环境选择;步骤C、D中的P指向下一个数组项,这是指在生成轨迹数值后,将其首尾相连成环状,P指向下一个数组项也就是P增加1,如果P已经等于n-1了,就将P赋为0;
●加权轮询调度模块选出一个需调度的队列,具体步骤如下:
A.如果为流体轨迹数组生成后的首次调度,初试化一个指向队列的指针Q,比如将其指向队列1,定义一个计数器Cwrr,将该计数器初始化为指针Q指向队列的预约带宽比上带宽最小粒度,转步骤C;如果不是流体轨迹数组生成后首次调度,直接转步骤B;
B.如果上个调度周期严格优先级调度模块选择的是加权轮询调度模块的调度结果,转步骤C;如果上个调度周期严格优先级调度模块选择的是轨迹轮询调度模块的调度结果,转步骤F;
C.如果指针Q指向的队列为空,将Q指针指向下一个队列,转步骤D;如果指针Q指向的队列不为空,转步骤E;
D.如果指针Q指向的队列为空,将Q指针指向下一个队列,重新执行步骤D;如果指针Q指向的队列不为空,将计数器Cwrr的值赋为Q指针指向的队列的预约带宽比上带宽最小粒度,转步骤E;
E.选定当前指针Q指向的队列号作为需调度的队列号,将Cwrr减1;减1后,如果Cwrr=0,将指针Q指向下一个队列,将计数器Cwrr的值赋为Q指针指向的队列的预约带宽比上带宽最小粒度,结束;
F.如果上一调度周期选定的队列为空,转步骤C;如果上一调度周期选定的队列不为空,仍然保持选定上一周期选定的队列号作为需调度的队列号,结束;
步骤B根据严格优先级调度模块的上个调度周期的结果进行判断,步骤C、D、E中的指针Q指向下一个队列,是按照队列号的由小到大依次选中,当指向队列N时,下一个队列是队列1。
6、根据权利要求5所述的流体轨迹轮询调度方法,其特征是,轨迹轮询调度模块按照计算出的调度轨迹依次调度,遇到空队列时,一个周期里最多连续跳过K个空队列;加权轮询调度模块在一个调度周期里,如果所有队列不全为空,一定能选出非空的队列。
7、根据权利要求2所述的流体轨迹轮询调度方法,其特征是,步骤(3)中,如果轨迹轮询调度模块选出了有效的队列号,严格优先级调度模块选择轨迹轮询调度模块的调度结果;反之,如果轨迹轮询调度模块选出的队列号是“失败”,严格优先级调度模块选择加权轮询调度模块的调度结果。
8、根据权利要求2所述的流体轨迹轮询调度方法,其特征是,步骤(4)中,根据应用环境的分为两种情况:
如果应用的网络节点的数据包为等长数据包,则直接发送步骤(3)选中队列的第一个数据包就完成了步骤(4);
如果应用的网络节点上数据包为变长,则步骤(4)的实现方法如下:
A.如果为流体轨迹数组生成后首次调度,为每个队列定义一个赤字计数器,将这些计数器初试化为0;如果不是首次调度,直接开始步骤B;
B.给当前选中的队列的赤字计数器增加Lmax,然后从该队列首开始发送数据包,每发送出一个数据包从该队列的赤字计数器减去该数据包的包长;当发送到队列首的数据包的包长大于该队列的赤字计数器的值时,发送完毕,或者发送到队列为空时发送完毕;如果是由于发送为空结束该队列数据包发送的,将该队列的赤字计数器清零,结束。
9、根据权利要求2所述的流体轨迹轮询调度方法,其特征是,步骤(5)具体实现如下:
如果业务预约情况发生变化,则需要重新计算流体轨迹数组,并重新初始化变量,然后再按照新的流体轨迹进行调度。
10、根据权利要求1或2所述的流体轨迹轮询调度方法,其特征是,实现步骤(5)与步骤(1)时,在调度器中设置一组参数空间或者主备两组参数空间;如果为主备两组参数空间,当业务预约情况发生变化的时候,将计算出的新的调度轨迹数组储存在备用的参数空间里,然后,调度器从使用主参数空间直接切换到使用备参数空间;下一次业务预约情况发生变化时,再切换回主参数空间。
CN 03116984 2003-05-16 2003-05-16 流体轨迹轮询调度方法 Expired - Fee Related CN1203688C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 03116984 CN1203688C (zh) 2003-05-16 2003-05-16 流体轨迹轮询调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 03116984 CN1203688C (zh) 2003-05-16 2003-05-16 流体轨迹轮询调度方法

Publications (2)

Publication Number Publication Date
CN1472936A true CN1472936A (zh) 2004-02-04
CN1203688C CN1203688C (zh) 2005-05-25

Family

ID=34152644

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 03116984 Expired - Fee Related CN1203688C (zh) 2003-05-16 2003-05-16 流体轨迹轮询调度方法

Country Status (1)

Country Link
CN (1) CN1203688C (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100359863C (zh) * 2004-12-31 2008-01-02 中兴通讯股份有限公司 一种利用伪随机序列实现加权轮询调度的方法及装置
CN100459751C (zh) * 2006-07-07 2009-02-04 华为技术有限公司 一种基站控制的上行调度方法
CN100505688C (zh) * 2005-11-23 2009-06-24 中国科学院计算技术研究所 一种用于网络处理器的差额权重排队调度装置及调度方法
CN1897566B (zh) * 2005-07-14 2010-06-09 中兴通讯股份有限公司 一种基于分类等级实现汇聚点服务质量保证的系统及方法
CN101505273B (zh) * 2009-03-04 2011-07-13 中兴通讯股份有限公司 一种交换机及其实现虚拟私有网报文的调度方法
CN106789716A (zh) * 2016-12-02 2017-05-31 西安电子科技大学 Tdma自组网的mac层队列调度方法
CN112737941A (zh) * 2020-12-21 2021-04-30 北京信而泰科技股份有限公司 网络流调度方法、装置及计算机可读介质

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100359863C (zh) * 2004-12-31 2008-01-02 中兴通讯股份有限公司 一种利用伪随机序列实现加权轮询调度的方法及装置
CN1897566B (zh) * 2005-07-14 2010-06-09 中兴通讯股份有限公司 一种基于分类等级实现汇聚点服务质量保证的系统及方法
CN100505688C (zh) * 2005-11-23 2009-06-24 中国科学院计算技术研究所 一种用于网络处理器的差额权重排队调度装置及调度方法
CN100459751C (zh) * 2006-07-07 2009-02-04 华为技术有限公司 一种基站控制的上行调度方法
CN101505273B (zh) * 2009-03-04 2011-07-13 中兴通讯股份有限公司 一种交换机及其实现虚拟私有网报文的调度方法
CN106789716A (zh) * 2016-12-02 2017-05-31 西安电子科技大学 Tdma自组网的mac层队列调度方法
CN106789716B (zh) * 2016-12-02 2019-08-13 西安电子科技大学 Tdma自组网的mac层队列调度方法
CN112737941A (zh) * 2020-12-21 2021-04-30 北京信而泰科技股份有限公司 网络流调度方法、装置及计算机可读介质

Also Published As

Publication number Publication date
CN1203688C (zh) 2005-05-25

Similar Documents

Publication Publication Date Title
Guérin et al. Scalable QoS provision through buffer management
CN106533982B (zh) 基于带宽借用的动态队列调度装置及方法
Duato et al. MMR: A high-performance multimedia router-Architecture and design trade-offs
CN1593044A (zh) 在包交换装置中用于避免拥堵的方法和系统
CN1636349A (zh) 数据报调度的设备及方法
CN101286949A (zh) 基于IEEE802.16d标准的无线Mesh网MAC层资源调度策略
CN101035078A (zh) 一种基于令牌的互联网流量控制方法
US20040057462A1 (en) Dynamic bandwidth allocation method employing tree algorithm and ethernet passive optical network using the same
CN1901504A (zh) 一种流媒体点播系统的数据调度方法
CN1203688C (zh) 流体轨迹轮询调度方法
WO2013025703A1 (en) A scalable packet scheduling policy for vast number of sessions
CN1165184C (zh) 一种适合实现路由器服务质量的综合业务中的调度方法
CN116107692A (zh) 动态融合遗传算法的边缘容器多目标蚁群优化调度方法
CN1518296A (zh) 一种支持多业务的综合队列调度的实现方法
CN100593312C (zh) 使用定额和差额值进行调度
CN102098217B (zh) 一种基于概率的多优先级队列调度方法
CN1960342A (zh) 一种带宽预留方法以及实现带宽预留的装置
CN1859279A (zh) 一种调度纵横式交换矩阵中变长数据包队列的方法
EP1526686A1 (en) Switching unit with scalable and QoS aware flow control
CN1777145A (zh) 路由器及使用其管理分组队列的方法
CN1889521A (zh) 一种数据调度方法及系统
CN1192563C (zh) 服务于多输出队列的调度方法、程序调度装置及数据交换节点
CN101557346B (zh) 轮询式分组排队输出调度方法及分组交换节点
CN1893389A (zh) 一种流调度方法
CN1933441A (zh) 一种支持均匀交换的路由器交换结构及服务质量保证方法

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
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee