1 引 言 宽带网络的发展要求一个通信网络要能同时支持多种不同的业务特性的流量,也即能提供不同的服务质量保证,具体表现在满足带宽、时延、时延抖动等方面的不同需求。因此网络本身必须具有提供不同服务质量的能力,其中,分组公平队列调度算法是提供服务质量保证的重要机制之一。近年来,基于GPS(Generalized Processor Share)[1]的分组公平排队调度算法得到了广泛的研究,其中最重要的是WFQ[2]。WFQ考虑的不定长度分组的排队和调度,因此,对WFQ的仿真通常使用事件驱动的方式,模型需要维护的信息量大,开销较大。另外,对硬件的实现也是一种挑战。
但在当今许多高速路由器/交换机中,为了提高传输效率,通常采用定长交换技术,处理数据单元为固定长度的“信元”。对于不同长度的IP分组,可以在交换前划分成信元,在输出端重组后再发送到链路上去。 那么,基于固定长度的信元排队和调度的WFQ的实现也随之而来,这也是WFQ的一种特例。在这种情况下,固然可以采用事件驱动的方式来仿真WFQ,但本文提出了一种更有效的仿真模型,他利用了信元输出时间固定的特性,采用固定时间驱动的方式,从而简化了仿真流程和减小了系统开销。此外,对硬件的设计和实现也有指导意义。
本文提出WFQ的仿真模型简单、高效,在研究单个交换节点的性能时,为研究者提供了一种仿真工具。本文主要对基于信元排队的WFQ进行了建模和仿真,并从带宽分配的公平性方面与FIFO(许多路由器/交换机采用仍采用的排队方式)进行了性能比较,仿真结果表明基于信元排队的WFQ适用于高速路由器/交换机中。
2 基于信元排队的WFQ 在提出仿真模型之前,首先介绍WFQ和基于信元排队的WFQ,这是模型建立的理论基础和模型实现中的关键部分。因此,单独提出并做简单介绍。
文献[2]定义的WFQ基于:
(1)系统维持一个全局函数V(t),称为系统虚时间函数,用以记录WFQ已经提供的服务量。V(t)也就是GPS系统中系统虚时间。WFQ利用系统虚时间函数为每个分组计算其相应的开始时间标签和完成时间 标签如式(1)所示:
φi表示赋予会话i的任一正实数,这里可以理解为会话i预约的归一化带宽ri。其中系统虚时间的维护是WFQ实现的关键,按文献[2]中的实现方法,V(t)更新的时刻不固定,随时都有可能必须使用事件驱动的方式实现。
(2)执行分组选择策略,WFQ遵循最小完成时间标签优选(SFF,Smallest Finishing time First)。
基于信元排队的WFQ与分组WFQ的不同可归结于:
①信元长度固定,调度事件发生间隔固定。
②系统虚时间可以在每次调度时更新。
其中②依据①和文献[4]中的结论,这充分利用了信元输出时间固定的特点。文献[4]介绍了一种只在分组离开时更新V(t)的方法,而信元输出的时刻是固定的并且间隔相等,那么对于基于信元的WFQ,我们只需要在间隔相等的固定时刻采用文献[3]的技术就可以实现。
3 模型建立 根据以上的分析,仿真模型采用简单的固定时间驱动的方法实现。模型建立的几点假设[3]:
(1)一个信元传输的时间称为一个时隙。
(2)各输入端信元的到达过程相互独立。
(3)信元只在每个时隙开始时到达,输出队列容量足够大。
(4)模型建立和仿真研究都基于单播数据流。一个具有N个输入/输出端口的WFQ模型的框图如图1所示。
该模型是由信元产生器、交换结构、输出队列组成,其中输出队列包含用于存储各个会话的信元的缓存和WFQ调度器。根据假设(1),在仿真模型中,信元的产生、交换和调度输出都将在一个时隙内同时进行。本文使用模块化的设计思路实现该模型,基于两点考虑:一是模型各主要组成部分交互关系简单、直接;二是方便模型的改进和扩展。图2表示了模型的工作流程。
我们使用标准C语言在Linux下实现了该模型。 进行仿真时,各模块的参数全部放在一个配置文件内,在初始化步骤中对WFQ模型设置参数,仿真结果可以输出到屏幕上,也可以输出到文件中,不支持图形输出。
3.1 信元产生器
信元产生器负责生成信元,是模型的数据源,在每个时隙到来时最先运行。根据假设(2),每个端口的信元产生器相互独立的工作,依据各个会话负载参数p(0≤p≤1),主要产生服从独立同分布的贝努利到达过程信元:每个时隙内产生信元的数目服从p的0~1二项式分布。产生的信元如果均匀地分配给各个会话,称为均匀独立同分布的贝努利过程;否则称为非均匀独立同分布的贝努利过程。
在模型中,信元的产生只是生成一个复杂的数据结构,并没有类似现实的信元的具体内