加权公平队列调度算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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—

相关文档
最新文档