软件学报
JOURN AL OF SOFTWARE
1999年　第10卷　第10期　Vol.10　No.10　1999




一个基于差值有界的通信量调度算法
孙利民 窦文华 龚正虎 周兴铭

摘要　调度算法决定不同应用的包在输出链路上的发送顺序,是网络提供QoS服务的关键技术.该文给出了系统虚时钟和连接虚时钟差值有界的调度算法框架VDBF(virtual clock difference-bounded framework).在此基础上,采用周期修正系统虚时钟的方法和层次式排序结构,提出了简单公平的调度算法DFQR(difference-based fair queueing by re-calibration).此调度算法在网络延迟、调度公平性和实现复杂度之间达到了很好的折衷,理论证明和模拟显示出其性能的优越性.
关键词调度算法,虚时钟差值有界,周期修正,层次结构.
中图法分类号TP393
A Difference-based Traffic Scheduling Algorithm
SUN Li-min DOU Wen-hua GONG Zheng-hu ZHOU Xing-ming
(Department of Computer Science National University of Defense Techonolgy Changsha 410073)
Abstract Packet scheduling algorithm controls the order of packet service, which is crucial in the design of a QoS network. In this paper, the authors first give a virtualclock difference-bounded framework (VDBF), then present a new scheduling algorithm――DFQR (difference-based fair queueing by re-calibration), in which they use a hierarchical structure, recalibrate the system virtual clock periodically, compromise network delay with fairness and implementation complexity. Finally, they demonstrate the performance benefit of DFQR by analysis and simulation.
Key words Scheduling algorithm, virtualclock difference-bounded, recalibrate periodically, hierarchical structure.
　　调度算法决定不同应用的包在输出链路上的发送顺序,是网络提供QoS服务保证的关键技术之一[1].实用的调度算法必须具有低网络延迟、良好的调度公平性和低实现复杂度等优点,而目前提出的大量调度算法未能同时具有这些优点或在以上几方面之间达到很好的折衷[2].我们在本文提出的系统虚时钟和连接虚时钟差值有界调度算法框架VDBF(virtual clock difference-bounded framework)的基础上,采用周期修正系统虚时钟的方法和层次式排序结构,提出了简单公平的调度算法DFQR(difference-based fair queueing by re-calibration).它在网络延迟、调度公平性和实现复杂度之间达到了很好的折衷,具有较强的实用性.
1　差值有界的调度算法框架VDBF
　　定义1. 系统忙周期是指结点机一直处于工作状态的最大时间间隔.在系统忙周期内,结点机连续发送各连接的包.
　　定义2. 连接累积周期是指连接在结点机中连续有包等待服务的最大时间间隔.处于累积周期的连接称为累积连接.
　　定义3. 连接i 在(t1,t2]期间内获得的服务量Wi(t1,t2)与预约带宽ρi之比,称为连接i在(t1,t2]期间获得的规格化服务,用Wi(t1,t2]表示.
　　我们在VDBF框架[3]中设置一个系统虚时钟P(t)来描述系统状态,每个连接i设置一个连接虚时钟Pi(t)来描述连接状态.其流模型描述如下.
　　(1) 设输出链路的带宽为C,共享输出链路的连接个数为N,连接i的预约带宽为ρi,为保证网络的稳定性,存在关系.
　　(2) 每个连接的虚时钟描述在t时刻连接的状态,它具有以下特性:
　　(a) 当系统不处于忙周期时,连接i的虚时钟设置为零;连接i不处于累积周期时,连接i的虚时钟保持不变;
　　(b) 当连接i在t1时刻进入累积周期时,它的虚时钟为Pi(t1)=max{P(t1-),P(t1-)};
　　(c) 在累积周期(t1,t2]期间,连接i在t∈(t1,t2)时的虚时钟为Pi(t1)=Pi(t1)+Wi(t1,t).
　　(3) 系统的虚时钟描述在t时刻系统的状态,它具有以下特性:
　　(a) 当系统不处于忙周期时,系统虚时钟设置为零;在系统忙周期的任意区间(t1,t2],
P(t2)-P(t1)t2-t1；
　　(b) 在任何时刻系统虚时钟都不大于任何处于累积周期的连接虚时钟,如果B(t)表示t时刻处于累积周期的连接集合,那么
P(t)minPi(t),i∈B(t);
　　(c) 在任何时刻,系统虚时钟与任何处于累积周期的连接虚时钟之差有界,即
Pi(t)－P(t)△P, 　　　△P为常量.
　　(4) 系统选择累积连接服务策略为:系统在t时刻只服务虚时钟最小的累积连接集合,该集合各连接获得的服务速率正比于它们的预约带宽.
　　流模型中多个连接以不同速率可同时获得服务,而包模型中任意时刻只能有一个包获得服务.在VDBF相应的包模型系统中,每个包带有虚拟完成时间,包的虚拟完成时间是包的最后一位离开流模型系统时连接的虚时钟值,系统选择虚拟完成时间最小的到达包服务.可以验证WFQ[4]和VC[5]调度算法符合VDBF框架.
　　由VDBF框架构造的包调度算法称为PDFQ(packet_by_packet difference_based fair queueing)调度算法.PDFQ调度算法具有如下特性.
　　性质1. 在PDFQ服务器中,Lmax表示所有连接中最大包的长度,如果连接i的到达通信量符合漏桶模型(σiρi),那么,连接i的包延迟满足.
　　定义4(调度算法公平性). 在系统忙周期内,对于任意时间间隔(t1,t2)内连续处于累积周期的任意两个连接i和j,如果连接i和j在(t1,t2)期间获得的规格化服务之差有界,即(F为常量),那么调度算法具有公平性,F值越小公平性就越好,理想情况F等于零.
　　如果Li表示连接i最大包长度,表示连接i在(t1,t2]期间内获得的包括非完整包服务量.PDFQ算法的调度公平性如下.
　　性质2. 在PDFQ服务器中,如果连接i和j在τ时刻后一直处于累积周期,那么对于τ时刻后的任意时间间隔(t1,t2],满足关系:
.
其中,△P是系统虚时钟与连接虚时钟之差的最大值.
2　DFQR调度算法
　　VDBF框架规定了系统虚时钟和连接虚时钟的特性以及连接虚时钟的计算方法.符合VDBF框架的调度算法具有相同的低网络延迟,但调度公平性存在差异.根据VDBF框架具体构造调度算法的核心问题是系统虚时钟的计算,使用不同的系统虚时钟计算方法,算法的实现复杂度和调度公平性不同.调度算法复杂度主要包括包的虚拟完成时间计算以及包的排序和选择发送.系统虚时钟的计算决定虚拟完成时间计算复杂度.基于实现简单和调度公平考虑,我们采用如下周期修正系统虚时钟的方法.
2.1系统虚时钟的周期性修正方法
　　设置,△D是包模型下连接虚时钟差值的最小上界.
　　如果系统虚时钟按真实时间增加,那么它的计算很简单,但存在系统虚时钟与连接虚时钟之差可大于任意值而造成调度公平性差的问题.为了计算系统虚时钟简单和调度公平性好,系统虚时钟通常按照真实时间增加,当系统虚时钟与连接虚时钟之差超过一定值时,及时修正系统虚时钟.在包模型下,采用独立式方法* 计算系统虚时钟实现简单,系统虚时钟的修正只能在包到达或离开时发生.
　　假设系统虚时钟在系统忙周期开始时设置为零,而且按照真实时间增加,连接虚时钟的计算和选择连接的服务按照VDBF框架规定.在其相应的包模型下,每个包的虚拟完成时间等于在流模型下包的最后一位完成服务时连接的虚时钟值,结点机选择虚拟完成时间最小的包发送.在包模型下发送完成包时刻(记为Tf时刻),用p_h表示所有累积连接中未获得服务的虚拟完成时间最小的包,Fp_h表示p_h的虚拟完成时间,存在下面的关系.
　　定理1. 在包模型下,在发送完成包Tf时刻存在如下关系式:
Pi(Tf)Fp_h-△D, i∈B(Tf).
　　证明:反证法.假设累积连接j的虚时钟值不满足上述关系式,即
Pj(Tf)<Fp_h-△D, j∈B(Tf).
　　在Tf时刻,设连接j在结点机中未获得服务的最先到达的包为连接j的第k个包,那么,
,
因此Fk,j<Fp_h.　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　□
　　这与已知p_h是未获得服务的虚拟完成时间最小包矛盾,即证. 
　　在包模型下,在发送完成包时刻(Tf),如果Fp_h＞P(Tf-)+△D, j∈B(Tf).(此Tf时刻记为TR时刻),由定理1可知,所有累积连接的虚时钟值都大于(Fp_h－△D),而系统虚时钟P(Tf－)小于(Fp_h－△D),可将系统虚时钟修正为P(Tf)=Fp_h－△D.周期修正系统虚时钟的方法具体描述为: 
　　(1) 在系统忙周期开始,设置系统虚时钟为零;
　　(2) 在每个包发送完成时刻Tf ,判断结点机中未服务包的最小虚拟完成时间是否比系统虚时钟值大△D,即Fp_h＞P(Tf-)＋△D,若关系式成立,修正系统虚时钟为P(Tf)＞Fp_h－△D,否则不修正;
　　(3) 其他时刻P(t)=P(t1)+t-t1,(t1,t]属于系统忙周期.
　　定理2. 在包模型下,采用周期修正的计算系统虚时钟方法,在发送完成包时刻Tf,存在关系:
Pi(Tf)＜P(Tf）＋△D, i∈B(Tf).
　　证明:反证法.假设Pj(Tf)P(Tf)+△D,j∈B(Tf),在时刻Tf,连接j必存在一个已经发送完成的包(设为第k个包),它的虚拟完成时间为Pj(Tf）.考虑连接j第k个包在时刻t(t<Tf)成为p_h,此时,
Fp_h=Pj(Tf）P(Tf)+△D.
由于P(t)＜P(Tf)(t＜Tf),因此Fp_h＞P(t)+△D.,在t时刻需要修正系统虚时钟为
P(t)=Fp_h-△D=Pj(Tf）Pj(Tf)-△D, (t时刻)
即 Pj(Tf)=P(t)+△D,
所以,Pj(Tf)＜P(Tf)+△D,P(t)＜P(Tf).
　　这与已知假设相矛盾,即证.　　　　　　　　　　　　　　　　　　　　　　　　　　 □
　　由定理1和定理2可知:在包模型下,如果采用周期修正的计算系统虚时钟方法,那么在发送完成包时刻Tf,所有累积连接的虚时钟值都小于(P(Tf)+△D)且都大于(Fp_h-△D),系统虚时钟与连接虚时钟之差小于△D.
　　在相应流模型下的调度算法中,连接虚时钟最小的所有累积连接同时获得服务,所有累积连接的虚时钟值趋近相同.在包模型下,后到达的虚拟完成时间小的包不能剥夺正在发送的包;在流模型下,后到达(包)的虚时钟值小的累积连接可剥夺正在发送的连接.因此,对于任意给定时刻,流模型下最小的累积连接虚时钟不小于包模型下该连接的虚时钟值;流模型下最大的累积连接虚时钟不大于包模型下该连接的虚时钟值;流模型下累积连接虚时钟之间的差值比在包模型下小.因为包模型下TR时刻,所有累积连接的虚时钟值都小于(P(TR)+△D)值且都大于(Fp_h-△D)值,所以,在流模型下TR时刻,所有累积连接的虚时钟值也都小于(P(TR)+△D)值且都大于(Fp_h-△D)值,此时可将系统虚时钟修改为(Fp_h-△D).这样修改系统虚时钟,一方面符合VDBF框架的条件,另一方面保持两种模型下系统虚时钟相同.
　　定理3. 对于流模式下的调度算法,如果按照VDBF框架计算连接虚时钟及选择连接服务,采用周期修正的系统虚时钟计算方法,那么:
　　1° 在系统忙周期的任何区间(t1,t2],P(t2)-P(t1)t2-t1;
　　2° 在系统忙周期的任意时刻t,P(t)Pi(t),i∈B(t);
　　3° 在系统忙周期的任意时刻t,Pi(t)-P(t)△D,i∈B(t);
　　证明:1° 分两种情况:
　　(1) 在(t1,t2]期间,没有修正系统虚时钟,那么P(t2)=P(t1)+t2-t1,满足关系式.
　　(2) 在(t1,t2]期间,如果在时刻τ1τ2…τm修正了系统虚时钟,也就是在τk=(k=1,2,...,m)时,P(τk)=Fp_h-△D＞P(τk-),那么P(t2)=P(τm)+t2-τm＞P(τm-)+t2-τm＞P(τm-1-)+t2-τm-1,递推可得P(t2)＞P(τ1-)+t2-t1＞P(t1)+t2-t1,满足关系式.
　　2° 反证法.假设在系统忙周期ｔ时刻有i∈B(t),P(t)＞Pi(t),考虑离t最近的时刻t-△tPi(t-△t),连接i在(t-△t,t]期间处于累积周期.分两种情况:
　　(1) 在(t-△t,t]期间没有修正系统虚时钟值.连接i在(t-△t,t]期间是虚时钟值最小的连接,它获得服务的速率不小于ρi,因此,,,这与假设相矛盾,所以P(t)＜Pi(t).
　　(2) 在t时刻修正系统虚时钟,则存在关系式:P(t-)＜Fp_h-△DPi(t-),系统虚时钟修正为P(t)=Fp_h-△D,而Pi(t)=Pi(t-),所以P(t)Pi(t).
　　3° 由周期修正系统虚时钟方法可知:连接与系统的虚时钟之差最大值是在修正系统虚时钟的时刻之前.如果在时刻t修正系统虚时钟值,则存在关系式:
P(t-)＜Fp_h-△DPi(t-)＜P(t-)+△D, 　i∈B(t-),
因而 Pi(t)-P(t-)△D,　　i∈B(t－),
所以,对于系统忙周期的任意时刻t,Pi(t)=P(t)△D,i∈B(t).
　　推论. 在流模型下,如果采用周期修正系统虚时钟的方法,并按照VDBF框架计算连接虚时钟及选择连接服务,那么该调度算法符合VDBF框架,且△P=△D.
2.2 层次式优化排序策略
对每个连接而言,按照包到达的先后顺序服务,只需连接在结点机中未服务的最先到达的包参加排序.我们采用如下层次式排序策略:每个连接设置一个等待队列,按照到达先后顺序存放属于该连接的包;系统设置一个公共等待队列,所有连接在结点机中未服务的最先到达的包存放到公共等待队列中,它们按照虚拟完成时间从小到大排序,这样,包的排序复杂度为O(log2N).结点机选择公共等待队列中虚拟完成时间最小的包发送,如果发送包对应的连接队列中仍有包,计算它第1个包的虚拟完成时间后插入公共等待队列中.
2.3 DFQR调度算法
　　在具体给出算法之前,首先说明以下几点:pub_queue表示按照虚拟完成时间从小到大排序包的公共等待队列;
　　i_queue表示连接i按照到达先后排序包的等待队列;Fp_h(t)表示t时刻pub_queue中未服务包的最小虚拟完成时间;Fi表示当前时刻连接i最近发送包的虚拟完成时间,系统忙周期开始设置为零.
　　系统虚时钟计算:
　　(1) 在系统忙周期开始时刻,设置系统虚时钟P(t)为零;
　　(2) 在系统忙周期内除修正系统虚时钟P(t)时刻外,系统虚时钟P(t)按真实时间增加.
　　包离开算法: 假设连接i的第k个包t时刻发送完成.
　　(1) 修改系统虚时钟值:
　　　　　if ( pub_queue为空)
　　　　　　then { P(t)=0;
　　　　　　Fi=0;i∈C(t),C(t)是共享输出链路的连接集合
　　　　　　exit() }
　　　else { if (Fp_h＞P(t)+△D)
　　　　　　　　then P(t)=Fp_h-△D
　　　　　　endif }
　　　endif
　　(2) 设pub_queue中连接j第m个包的虚拟完成时间最小,选择该包发送;
　　(3) Fj＝Fm,j
　　(4) if ( j_queue非空)
　　　then {计算连接j第(m+1)包的虚拟完成时间;
　　　　　　根据虚拟完成时间将连接j第(m+1)个包插入pub_queue中}
　　　endif
　　包到达算法: 假设连接i第(k+1)个包在t时刻到达.
　　　　if ((i_queue为空) and (pub_queue没有连接i的包))
　　　　　then {;
　　　　　　　　根据虚拟完成时间将该包插入pub_queue中}
　　　　　else 根据到达顺序将包存放在i_queue中
　　　　endif
3　与其他调度算法的比较与性能模拟
3.1 与其他调度算法的比较
　　从表1可以看到DFQR算法的延迟边界与WFQ相同,实现复杂度与VC相同,调度公平性也比PFFQ[3]调度算法好. 
表1 调度算法的延迟、公平性和实现复杂度比较

调度算法延迟公平性复杂度
WFQσi/ρi+Lmax/CFi,j(0)O(N)
VCσi/ρi+(Lmax/C)∞O(logN)
SCFQσi/ρi+Lmax/C(N- 1)Li/ρi+Lj/ρjO(logN)
DFQRσi/ρi+Lmax/CFi,j(ΔD)O(logN)
PFFQσi/ρi+Lmax/CFi,j(2.ΔD) O(logN)

　 
表中,　　 
　　　　　.
3.2 性能模拟公平性
　　延迟模拟模型为8个连接共享输出链路,连接的通信量符合ON_OFF模型并经过漏桶整形.表2给出调度算法在包长度为1(模拟ATM)时连接最大延迟统计结果.从表2看到:各连接的最大延迟小于理论上的延迟边界;占带宽50%以上的连接1在DFQR调度算法中的最大延迟介于SCFQ(PFFQ)与WFQ(VC)之间;预约带宽是控制连接延迟的关键因素,通过稍微调整连接的预约带宽就可改变连接的延迟.
表2 调度算法最大延迟统计结果(σi=2,Lmax=1)

连接预约带宽到达速率VC等理论值SCFQ理论值VCWFQDFQRPFFQSCFQ
10.500 0000.4985111.801.601.804.007.20
20.062 5000.061333920.0018.0023.0022.0023.00
30.062 5000.062333922.0019.0024.0025.0024.00
40.062 5000.062333923.0021.0025.0027.0031.00
50.078 1250.076273312.4012.6016.4018.4017.60
60.078 1250.076273314.8013.2017.8019.4018.60
70.078 1250.076273315.8013.6018.8020.4019.60
80.078 1250.076273319.8015.6019.8021.2021.60

　 
　　通过比较在同一段时间内连接获得的规格化服务之差评价调度算法的公平性,规格化服务之差最大值通常发生在有连接刚进入累积周期后的时间段.为了测试算法的公平性,我们将连接分为奇数和偶数两组,两组中对应连接的预约带宽相同,各连接的通信量较大以保证在任何时刻连接都处于累积周期.奇数组连接包在t=0开始到达,偶数组连接包在t=1000开始到达,统计每100个时间单位时各连接发送包的个数,连接1和连接2在时间间隔(700,1800]内的统计结果如图1所示.图中显示出VC调度的公平性差,其他调度算法的结果基本相近.近一步的实验说明DFQR算法的公平性介于PFFQ与WFQ 之间.

图1　连接1和连接2在不同调度算法下发送包的个数(时间间隔:100s)
4　小 结
　　本文在差值有界的调度算法VDBF框架基础上,通过周期修正系统虚时钟,采用层次式优化排序结构,并提出了DFQR调度算法.理论分析和性能模拟显示,DFQR调度算法具有低网络延迟、较好的调度公平性和实现简单的优点,在网络延迟、公平性和实现复杂度之间达到好的折衷.PFFQ调度算法已在ATM交换机中用硬件实现.DFQR调度算法比PFFQ算法公平性好,实现更为简单,这说明DFQR调度算法完全可以用硬件实现,用在高速的结点机中,是一个较为实用的高性能调度算法.
注释：本文研究得到国家863高科技项目基金资助。
作者简介：孙利民：1966年生,博士后,主要研究领域为高速计算机网络,实时通信
　　　　　窦文华:1946年生,教授,博士生导师, 主要研究领域为高性能网络技术
　　　　　龚正虎:1945年生,教授,博士生导师,主要研究领域为网络互连,QoS技术
　　　　　周兴铭:1938年生,教授,博士生导师,中国科学院院士,主要研究领域为高性能机体系　　　　　　统结构,高速计算机网络,分布式数据库
作者单位：国防科学技术大学计算机系 长沙 410073)
参考文献
1　Zhang Hui. Service disciplines for guaranteed performance service in 
　　packet-switching networks. Proceedings of IEEE, 1995,83(10):1373～1396
2　Stiliadis D, Varma A. Frame-based fair queueing: a new traffic scheduling 
　　algorithm for packet-switched networks. Technical Report, UCSC-CRL-95-39, 1995. 
　　http: //www.cse.ucsc.edu/research/hanlab/publications/
3　孙利民.有界延迟实时服务网络的研究[博士学位论文].国防科学技术大学计算机系,1998
　　(Sun Li-min. Real-time networks with bound-delay service guarantees [Ph.D. 
　　Thesis]. National University of Defense Technology, 1998)
4　Parekh A, Gallager R. A generalized processor sharing approach to flow control in
　　integrated services networks: the single-node case. IEEE/ACM Transactions on 
　　Networking, 1993,1(3):344～357
5　Figueira N R, Pasquale J. An upper bound on delay for the virtualclock service 
　　discipline. IEEE/ACM Transactions on Networking, 1995,3(4):399～408
6　Golestani S J. Network delay analysis of a class of fair queueing algorithms.  
　　IEEE Journal on Selected Areas in Communication, 1995,13(8):1057～1570
收稿日期：1998-07-13修稿日期：1998-10-16
