加权公平队列调度算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2008年2月
February 2008
—28—
计 算 机 工 程Computer Engineering 第34卷 第4期
Vol.34 No.4 ·博士论文·
文章编号:1000—3428(2008)04—0028—03
文献标识码:A
中图分类号:TP391
一种新的加权公平队列调度算法
尹德斌,谢剑英
(上海交通大学自动化系,上海 200240)
摘 要:传统公平队列调度算法(WFQ 、WRR 等)普遍存在基于数据包的权重参数计算问题,由此产生的高复杂度使其难以获得广泛应用。
该文提出一种新的加权公平队列调度算法,使用服务概率和随机数实现加权公平调度,显著降低了算法的复杂度。
同时使用自适应服务概率计算解决了数据包变长度带来的不公平性。
通过队列管理技术有效地提高了交换机的缓冲区利用率,并减小了排队延迟抖动。
仿真结果证明了算法的有效性和实用性。
关键词: 队列调度;加权公平排队;自适应队列管理;分组交换网络
New Weighted Fair Queue Scheduling Algorithm
YIN De-bin, XIE Jian-ying
(Department of Automation, Shanghai Jiaotong University, Shanghai 200240)
【Abstract 】Traditional weighted fair queue algorithms have the main drawback: the calculation of the weight parameters according to each packet.The paper proposes a new weighted fair queueing algorithm(SPFQ), which uses service probability to schedule packets and a random number to decide which packet to be served next. In addition, a novel adaptive service probability parameter calculation method is used to solve the unfair problem induced by the variable packet length and an adaptive queue management technology to improve the utilization of the server's queue buffer and reduce the delay burstiness. Simulation results demonstrate the validity and practicability of SPFQ.
【Key words 】queue scheduling; weighted fair queueing; adaptive queue management; packet switching network
1 概述
队列调度是当前互联网技术领域的一个研究热点。
其中,加权公平队列调度算法由于能够根据各业务流的权重进行区分服务而受到广大研究者的广泛关注[1-9]。
其中最著名的是加权公平WFQ [1]和加权轮询WRR [6]两类算法。
WFQ 及其改进算法[3,5,7]都基于通用处理机共享模型[2],使用虚时间(virtual time)进行数据包转发。
WFQ 算法在业务流受漏斗约束的情况下可以提供精确的带宽保证和最大时延上限,并且数据包的转发不受其他业务流特性影响。
但是它的计算复杂度太高。
WRR [2,6]是另一类复杂度相对较低的常用加权队列调度算法;各业务流在一次轮询中所允许发送的数据包个数由队列权重决定。
DRR [4]引入了差额计数器(dificit conter),记录由数据包长度不同引起的服务量差。
轮询类算法复杂度较低,但无法提供确定的带宽保证和时延上限。
国内的研究者近年来也提出了许多队列调度算法。
文 献[8]针对SS 和BF 两种业务流,提出了一种对数自适应调度算法,但该算法对类内各业务流之间如何调度并没有说明,且不能提供公平服务和隔离特性。
文献[9]提出了一种用于区分服务网络的虚时钟核心无状态队列调度算法,各数据包自身携带虚时钟状态信息,中心服务器根据虚时钟进行转发,但需要根据虚时钟将入队列数据包插入到转发队列中,这无疑是一项沉重的计算负担。
另外,该算法并未考虑虚时钟清零问题。
本文提出了一种新的加权队列调度算法SPFQ 。
由于采用了指数移动平均算法和阀值触发的平均数据包长度更新,使得服务概率计算频度大大降低,从而显著降低了算法的复杂度。
2 SPFQ 队列调度算法
2.1 SPFQ 的基本原理
SPFQ 算法依据各业务流的平均数据包长度将它们的权重转换成归一化服务概率,通过该参数实现加权服务。
为了降低算法的复杂度,系统采用事件触发方式计算队列的平均长度。
在算法实现中,使用单独模块计算服务概率,以减轻调度器的负荷。
2.2 SPFQ 的结构
数据包分类器图1 SPFQ 算法结构
基金项目:国家自然科学基金资助项目(60572157);国家“863”计划基金资助项目(2003AA123310)
作者简介:尹德斌(1978-),男,博士,主研方向:包交换网络的队列调度和管理;谢剑英,教授、博士生导师
收稿日期:2007-03-10 E-mail :yin_db@
SPFQ 算法结构主要包括:(1)数据包分类器;(2)队列管理器;(3)SPFQ 调度器;(4)数据包长度观察器;(5)自适应服务概率计算器;(6)随机数发生器。
随机数发生器生成一个在区间[]0,1内均匀分布的随机数。
为了消除数据包长度变化时的服务量差异问题(参见4.2节),
在调度器输出端设计了数据包长度反馈环节,下面分别介绍其余4个模块。
(1)RN 2.3 队列管理器
SPFQ 的队列管理器为各业务流维护一个独立的缓冲区;根据各业务流的时延和速率要求,动态调整其缓冲区长度,最优化缓冲区利用。
对于具有带宽、时延要求的数据流,定义队列缓冲区长度满足下式:
max i i bl bl ≤ (1) max min max ()max{, }i j i i k
k AQ N w BL
bl bw w τ∈×=×∑ (2)
其中,是要求的最小带宽;是最大时延;min bw max i τBL 是缓冲区总长度;()AQ N 为当前活动队列集。
对于没有明确QoS 要求的数据流,基于“尽力而为”服务要求,并考虑对其他业务流的保护和网络拥塞控制的要求,定义队列缓冲区长度满足下式:
max j j bl bl ≤ (3) max ()j
j
k
k AQ N w bl BL w ∈=∑
× (4)
其中,j w 是队列权重。
服务器使用统一缓冲区管理策略,即各业务流共享同一空闲缓冲区。
当有数据包到达时,如果缓冲区有足够的空闲空间,验证式(1)或式(3),满足则分配缓冲区,数据包入队列;否则丢包。
2.4 数据包长度观测器
长度观测器监测新业务流,根据长度反馈和设定阀值更新各队列的平均数据包长度;自适应服务概率计算器根据数据包平均长度和权重参数动态调整各业务流的服务概率,以消除数据包变长度引起的不公平性。
观测器从数据包长度反馈环节接收当前被转发数据包的长度,用于更新相应的平均数据包长度。
为了降低计算复杂度,SPFQ 使用指数移动平均(Exponential Moving Average, EWMA)来估计数据包平均长度
curr 1
j
ˆˆ(1)j l l µµ+=×+−×j
l (5)
其中,ˆj l 是当前数据包平均长度估计值;1ˆj l +是更新后的估计值;是当前被转发数据包的长度;curr j l µ是权重因子,本文取7/8。
单位时间内有大量数据包离开服务器,如果对平均长度进行实时更新则计算量太大。
因此,SPFQ 使用下列平均长度更新算式
1
ˆˆ, ˆ, j j j j j j j l l l l l l l l l νν+⎧−×⎪=⎨
−<×⎪⎩
≥j j
(6) 其中,v 是阈值因子,本文取0.1,它决定了更新精度。
2.5 自适应服务概率计算器
考虑如图1所示的单服务器系统,假设有N 个队列通过该节点转发数据包,其中第个队列的服务权重为,则如果各队列数据包长度相同,则每个队列的服务概率定义为
i (1)i w i N ≤≤()()
() 0 i j
j AQ N i i AQ N i AQ N w w p ∈∉∈⎧
⎪=⎨⎪
⎩∑ (7) 对于变长度数据包网络,式(7)修正为
()()
() 0 i i
j i j AQ N j i AQ N i AQ N w l w p l ∈∉∈⎧⎪⎪⎪=⎨
⎪⎪⎪⎩∑ (8) 其中,i l 是数据包长度观测器给出的平均长度。
当i l 发生变化时,长度观测器通知服务概率计算器重新计算各业务流的服务概率。
服务概率计算器按下式维护一个
服务概率表供调度器使用
(1) 1 2 1 i i i i p i P p i P i N −=⎧⎪
N +<=⎨⎪=⎩
≤ (9)
这样为闭区间内的递增序列。
(1)i P i N ≤≤1[,1]p 2.6 SPFQ 队列调度器
SPFQ 算法是非抢占的,它依据各队列的服务概率进行数据包转发。
同一队列中的数据包按先来先服务(FCFS)原则转发。
调度器基本原理是:在一次转发中,调度器从随机数发生器中获取随机数,查询服务概率表,找到满足下式的
(1)RN i P (1)(1)i P RN −i P <≤ (10) 则队列i 的头数据包被转发。
当所有服务队列都为空时服务器进入空闲状态(服务保持)。
3 SPFQ 算法复杂度分析
分析图1中SPFQ 算法的结构,长度观测器和自适应服务概率计算器以及随机数发生器都可用单独模块实现;它们只和调度器交换数据,不增加调度器的计算负荷。
与其他调度算法相比,SPFQ 增加了一个队列管理器。
对于一个实际运行的路由器,这是必不可少的。
这样算法的主要改进集中在SPFQ 队列调度器。
队列调度器的任务是将随机数与按照式(9)计算得到的服务概率表中的数据相比较,找到符合式(10)式的队列,然后转发它的头数据包。
这样,调度器的实现便是一个线性表查询问题。
由于服务概率表单调递增,因此可以使用二分查找法。
唯一不同的是查找目标不是和随机数相等,而是符合式(10)。
二分查找法的最坏复杂度是,所以SPFQ 队列调度器的最坏复杂度为。
(1)RN i (log )O n (log )O n 与基于GPS 的调度算法相比,SPFQ 只需要为每个活动业务流维护一个服务概率参数,而不需要维护基于每个数据包的参数集。
这样,只有当系统中出现新业务流或当前活动业务流变为空闲以及数据包长度发生较大变化时,才需要重新计算服务概率参数。
很明显,这类事件的发生频度要远远小于数据包的到来和离开,因此SPFQ 的计算复杂度要远远低于基于虚时间的调度算法。
即使与基于轮询的加权轮询和紧急轮询等算法相比,由于不需要进行基于数据包的权重跟踪,因此SPFQ 的复杂度也低于这类算法。
4 仿真结果
本节使用网络模拟软件NS-2对SPFQ 算法进行仿真。
分别验证算法的加权公平性和其在数据包长度发生变化时的 性能。
—29—
4.1 算法公平性验证
仿真所用网络拓扑如图2所示,节点0~节点3分别通过10 Mb/s 链路与节点4相连,均使用DropTail 算法。
节点4与节点5通过7.5 Mb/s 链路相连,使用本文提出的SPFQ 算法。
各节点的参数和权重如表1所示。
4个业务流全部使用CBR 数据流,仿真时间为100 s 。
图3给出了仿真结果,其中左侧带宽是每0.5 s 采样一次的结果,右侧服务量是实时 数据。
图2 网络拓扑结构(公平性验证) 表1 各数据流的参数分配
节点数据流类型速率/(Mb ·s -1)数据包长度/B 权重0 CBR 1 250
1 1 CBR
2 500 2 2 CBR 4 750 4
3 CBR
8
1 000 8
图3 各业务流获得的带宽和服务量
从图3可以看出,100 s 内4个业务流所获得的带宽在权重所定的理论值上下小范围波动;仿真结束时,4个业务流获得的服务量分别为50 Mb, 100 Mb, 200 Mb 和400 Mb ,这和由链路4-5的带宽(7.5 Mb/s)和各个节点的权重分配(1:2:4:8)所得理论值严格相符。
该仿真验证了SPFQ 算法的公平性。
4.2 数据包长度变化时的算法性能
本节所用网络拓扑如图4所示,n0和n1是两个数据源,权重相等,发送速率都为2 Mb/s ;节点4和节点5间的带宽为2 Mb/s ,各链路时延为1 ms ,仿真时间20 s 。
仿真开始时,节点0的数据包长度为250 B ,节点1的数据包长度为500 B ;在第10 s 时,节点0的数据包长度变为1 000 B ,直至仿真结束;节点1的数据包长度在整个仿真中保持不变。
为了对比
图4 网络拓扑结构(数据包长度变化)
图5给出的仿真结果中禁用了调度器输出端的长度反馈环节,而改由长度观测器直接根据入队列数据包的长度信息来更新数据包平均长度参数。
从图5可以看出,由于长度观测器(图1)是在数据包入队列之前采样长度信息,这样在第10 s 处,随着队列0的数据包长度增大,它的服务概率立即减小(式(7));但此时队列缓冲区内还有长度较小的数据包在排队等候转发,所以该业务流0获得的带宽降低,业务流1
获得带宽便相应增加。
当缓冲区中排队的长度较小数据包被转发完毕后,业务流0和业务流1所获带宽恢复正常(大约在12 s 处)。
Flow0
仿真时间/s
2
4
6
8
10
12
14
16
18
20
实时服务量/(M b ·s -1)
7142107
1421
所获带宽/(M b ·s -1)
0.3
0.60.91.21.81.50.30.6
0.91.21.81.5Flow1
图5 数据包长度变化对带宽和服务量的影响1
图6给出的仿真曲线是按照图1中的结构,使用出队列数据包的长度反馈信息来更新数据包平均长度。
在这两组曲线中,左侧是两个业务流获得的带宽(20 s 内采样100次),右侧是相应的实时服务量曲线。
在图6中,由于是在出队列时采样数据包长度信息,这样数据包长度的变化和队列中要转发的数据包一致,因此数据包长度变化对业务流所获带宽和服务量便没有任何影响。
这说明SPFQ 可以很好地保证变长度数据包环境下的公平性。
图6 数据包长度变化对带宽和服务量的影响2
5 结束语
本文提出了一种新的加权公平队列调度算法SPFQ 。
该算法使用服务概率实现加权服务。
与传统的加权队列调度算法相比,SPFQ 最大的优势是计算复杂度低,无需维护基于数据包的状态跟踪,所需的路由器计算负荷小。
仿真结果说明算法具有极好的长期和短期公平性,并能很好地解决数据包变长度引起的不公平性问题。
本文的主要工作有:(1)通过服务概率函数体现不同业务流的权重,从而避免了大多数加权队列调度算法中需要跟踪计算各个业务流权重变化的问题,极大地简化了算法的复杂度。
(2)考虑了缓冲区长度问题,对各个业务流的最大队列长度进行了限制。
(3)使用数据包平均长度估计值进行服务概率计算,虽然损失了一定的精确性,却极大地简化了服务概率函数的计算,使算法可以运行在高速网络中。
本文还使用了一种较简单的队列管理机制,用于限制各业务流的缓冲区队列长度。
根据队列调度和主动队列管理这两种算法在路由器中的运行位置和各自的功能。
下一步工作要考虑联合设计这两种算法,以期实现组合性能优化。
参考文献
[1] Demers A, Keshav S, Shenker S. Analysis and Simulation of a Fair
Queueing Algorithm[J]. Internetworking: Research and Experience, 1990, 1(1): 3-26.
[2] Parekb A K, Gallager R G. A Generalized Processor Sharing
(下转第33页)
1.8
21
Flow1 仿真时间/s
1.5实时服务量/(M b ·s
所获带宽/(M b ·s -1
)
-1)140
2468101214161820
0.3
0.60.91.21.81.50
7
1421070.3
0.60.91.2Flow0
—30—。