一种数据包的调度方法

文档序号:7903558阅读:199来源:国知局
专利名称:一种数据包的调度方法
技术领域
本发明属于网络通信系统与应用技术领域,具体涉及一种数据包的调度方法,它尤其适用于路由器中数据包的调度。
目前一类基于GPS模型的调度算法如WFQ、WF2Q、WF2Q+等得到了广泛的研究。GPS(Generalized Processor Sharing)模型是一种理想化的流体模型,它基于如下两个假设其一,数据包长度无限可分;其二,所有的流可以同时接受服务。而在实际系统中,一个调度器服务的最小单元为一个数据包,而且一次只能为一个流服务,因此GPS模型是不可实现的。于是Jon C.R.Bennett和Hui Zhang(见文献J.Bennett and H.Zhang,Hierarchical packet fair queuing algorithms,In Proceedings of theACM-SIGCOMM’96,pages 143-156,Palo Alto,CA,August 1996)提出了WF2Q+调度算法用于在实际系统中模拟GPS模型。其基本思想是,对流中的每个数据包维护一个开始服务时间和结束服务时间,当调度器准备发送一个数据包时,首先需要对等待调度的数据包进行资格测试,只有开始服务时间小于系统的虚拟时间的数据包才可以通过测试,然后在通过测试的数据包中选择具有最小结束服务时间的数据包进行发送,这种策略称为SEFF(Smallest Eligible virtual Finish time First)选择策略。
由于WF2Q+具有很好的公平性和时延性,而且算法复杂度比较低,因此得到了业界的广泛关注。但是,WF2Q+算法在应用上存在如下问题1)算法的复杂度随着受调度流的数量增加而增大,特别是在高速核心路由器上,当数据流的数量很大时,算法的应用将会给系统带来巨大的负担,2)在硬件上实现很困难。
为实现上述发明目的,一种数据包的调度方法,将待调度的数据包分成新到流队列和积压流队列两部分,由调度器进行调度,其调度步骤为(1)初始化调度节点,设定系统虚拟时间的初始值;(2)当某个数据包到达调度节点时,检查这个数据包是否为其所属数据流的第一个数据包,如果是,根据其速率和/或长度挂到新到流队列部分相应的Q1队列的尾部,并通过公式(3),计算这个数据包的虚起始服务时间,该虚起始服务时间即该数据流的虚起始服务时间;如果这个数据包不是这个数据流的第一个数据包,直接将这个数据包挂在所属数据流的尾部;(3)进行调度时,调度器会扫描所有队列中第一个数据流的头数据包的虚起始服务时间,从中找出虚起始服务时间小于系统虚拟时间的合法数据包,再通过公式(4),计算这些合法数据包的虚结束服务时间,找出具有最小虚结束服务时间的数据包进行发送;(4)对选定的头数据包进行发送的过程为首先将该数据包从所属的数据流F中取下来发送,数据流F再根据其新的头数据包的速率和长度,挂在积压流队列部分相应的Q2(Rx,Ly)队列的尾部,通过公式(2)更新数据流F的虚起始服务时间,即数据流F新的头数据包的虚起始服务时间,并通过公式(1)更新系统虚拟时间;V(t+τ)=max(V(t)+τ,mini∈B(t)(Sihi(t)))....(1)]]> Fik=Sik+LikRi(t).......(4)]]>(5)重复步骤(2)至(4),直至工作完成。
为了验证本调度方法的性能,在Network Simulator仿真环境中,实现了本调度方法,并检查了如下性能指标 带宽每个数据流得到的实际带宽(Mbps) 带宽抖动每个数据流在相邻时间段内得到的平均实际带宽之差(Mbps) 时延每个数据流的数据包离开与到达的时间差(ms) 时延抖动每个数据流前后两个数据包的平均时延差(ms)其结果见具体实施方式
部分。总之,本调度方法简单高效,易于硬件实现,并基本保证了WF2Q+算法原有的优良性能。
图7为使用调度方法时数据流1的时延特性;图8为使用调度方法时数据流1的时延抖动特性;图9为使用简化调度方法时数据流1的带宽特性;

图10为使用简化调度方法时数据流1的带宽抖动特性;图11为使用简化调度方法时数据流1的时延特性;图12为使用简化调度方法时数据流1的时延抖动特性。
每个数据流按照其预留的速率R(如R=Rm)和头数据包长度L(如Ln-1<L≤Ln),挂在相应的队列Q(Rm,Ln)上。头数据包是指数据流中当前排在最前面待调度的数据包,其长度量化为比它大的最近等级长度;大于最高等级长度的,量化为最高等级长度。队列上的数据流依次记为F1,F2,...,最后一个数据流记为FTail。数据流Fi中的数据包依次记为Pi1,Pi2,...,最后一个数据包记为Pi,Tail。
数据流第一个数据包是指该数据流初次发生或停止一段时间后重新发生时最先被处理的数据包。确认一个新到的数据包为其所属数据流第一个数据包的依据是该数据包所属数据流当前没有数据包正在等待调度,如果该数据包所属数据流已有数据包正在等待调度,则称该数据包为其所属数据流的后续数据包。由于数据流第一个数据包和其后续数据包的虚起始服务时间的计算不一致,需要对该数据流的第一个数据包单独处理。于是我们将队列分成两个部分,新到流队列部分①和积压流队列部分②,如图1所示。新到流队列部分①负责处理数据流的第一个数据包,积压流队列部分②负责处理数据流的后续数据包,两部分共需2×M×N个队列。调度器③的作用是采用SEFF策略对这两部分队列进行统一调度。
结合图2,本调度方法的具体调度步骤如下(1)初始化调度节点,设定系统虚拟时间的初始值,比如0;(2)当某个数据包到达调度节点时,检查这个数据包是否为其所属数据流的第一个数据包,如果是,根据其速率和长度挂到新到流队列部分①相应的Q1(Rm,Ln)队列的尾部,并通过公式(3),计算这个数据包的虚起始服务时间,该虚起始服务时间也是该数据流的虚起始服务时间。如果这个数据包不是这个数据流的第一个数据包,直接将这个数据包挂在所属数据流的尾部;(3)进行调度时,调度器③会扫描所有队列(包括M×N个新到流队列Q1(R,L)和M×N个积压流队列Q2(R,L))中第一个数据流的头数据包的虚起始服务时间,从中找出虚起始服务时间小于系统虚拟时间的合法数据包,再通过公式(4),计算这些合法数据包的虚结束服务时间,找出具有最小虚结束服务时间的数据包进行发送;(4)无论是选定新到流队列Q1(Rm,Ln)的第一个数据流的头数据包进行发送,还是选定积压流队列Q2(Rm,Ln)的第一个数据流的头数据包进行发送,均做出这样的处理首先将该数据包从所属的数据流F中取下来发送,数据流F再根据其新的头数据包的速率和长度,挂在积压流队列部分②相应的Q2(Rx,Ly)队列的尾部,通过公式(2)更新数据流F的虚起始服务时间,即数据流F新的头数据包的虚起始服务时间,并通过公式(1)更新系统虚拟时间;(5)重复步骤(2)至(4),直至工作完成。
本发明所指的调度节点,即应用了本调度方法的设备,如路由器。
为了减少队列数目,节省硬件资源,我们同时提出了简化调度方法。如图3所示,对于新到流队列部分①只采用长度(或速率)进行量化,记为Q1(Ln)(或Q1(Rm)),这样共需要M×N+N(或M×N+M)个队列。以下将以长度量化为例。
结合图3,简化调度方法的具体调度步骤如下(1)初始化调度节点,设定系统虚拟时间的初始值,比如0;(2)当某个数据包到达调度节点时,检查这个数据包是否为其所属数据流的第一个数据包,如果是,根据其长度挂到新到流队列部分①相应的Q1(Ln)队列的尾部,并通过公式(3),计算这个数据包的虚起始服务时间,该虚起始服务时间也是该数据流的虚起始服务时间。如果这个数据包不是这个数据流的第一个数据包,直接将这个数据包挂在所属数据流的尾部。
(3)进行调度时,调度器③会扫描所有队列(包括N个新到流队列Q1(L)和M×N个积压流队列Q2(R,L))中第一个数据流的头数据包的虚起始服务时间,从中找出虚起始服务时间小于系统虚拟时间的合法数据包,再通过公式(4),计算这些合法数据包的虚结束服务时间,找出具有最小虚结束服务时间的数据包进行发送。
(4)无论是选定新到流队列Q1(Ln)的第一个数据流的头数据包进行发送,还是选定积压流队列Q2(Rm,Ln)的第一个数据流的头数据包进行发送,均做出这样的处理首先将该数据包从所属的数据流F中取下来发送,数据流F再根据其新的头数据包的速率和长度,挂在积压流队列部分②相应的Q2(Rx,Ly)队列的尾部,通过公式(2)更新数据流F的虚起始服务时间,即数据流F新的头数据包的虚起始服务时间,并通过公式(1)更新系统虚拟时间;(5)重复步骤(2)至(4),直至工作完成。
具体的仿真拓扑结构如图4所示。
在这个仿真拓扑结构中,各输入链路和输出链路带宽均为10M,所有的数据流均受到调度节点的调度并从输出链路输出。在图4的调度节点,调度方法和简化调度方法的速率和长度均被量化成5个等级。
对数据流定义5个速率等级 0.1Mbps.
0.3Mbps.
1 Mbps.
2 Mbps.
5 Mbps.
对数据包定义5个长度等级 200 bytes.
400 bytes.
800 bytes.
1000 bytes.
1600 bytes.
对数据流定义两种传输方式 CBR(Const Bit Rate)表明数据流以恒定的速率传输; On/Off表明数据流以某个速率间隙性地传输。
对数据包长度定义三种分布方式 相同长度数据流中的所有数据包长度相同; 平均分布数据流中的数据包长度在某个长度范围内均匀分布; 正态分布数据流中的数据包长度以某个长度为中心正态分布。
对两种调度方法进行了大量测试,选取一个较典型的测试配置以说明测试结果。调度方法的典型仿真参数如下表所示

上述配置中每个数据流均采用On/Off模型,数据流中的数据包长度采用正态分布(均值为1000字节,方差400字节)。对调度方法和简化调度方法进行仿真实验,得到数据流1在两种方法中的性能指标带宽、带宽抖动、时延和时延抖动。如图5~图12所示。
根据图5~图12所示的仿真结果,可以看出这两种调度方法均能较好地保证数据流1的带宽、带宽抖动、时延和时延抖动等性能,从而能较好地保证用户的服务质量。
在NS仿真实验的基础上,采用Xilinx公司的FPGA实现了支持简化调度方法的调度芯片。该芯片最大支持128k个数据流,5个速率等级和5个长度等级,并可动态配置各速率和长度等级的值。经实际运行测试,该芯片能很好地保证各数据流的预约带宽、时延性及公平性。
权利要求
1.一种数据包的调度方法,该方法将待调度的数据包分成新到流队列和积压流队列两部分,由调度器进行调度,其调度步骤为(1)初始化调度节点,设定系统虚拟时间的初始值;(2)当某个数据包到达调度节点时,检查这个数据包是否为其所属数据流的第一个数据包,如果是,根据其速率和/或长度挂到新到流队列部分相应的Q1队列的尾部,并通过公式(3),计算这个数据包的虚起始服务时间,该虚起始服务时间即该数据流的虚起始服务时间;如果这个数据包不是这个数据流的第一个数据包,直接将这个数据包挂在所属数据流的尾部;(3)进行调度时,调度器会扫描所有队列中第一个数据流的头数据包的虚起始服务时间,从中找出虚起始服务时间小于系统虚拟时间的合法数据包,再通过公式(4),计算这些合法数据包的虚结束服务时间,找出具有最小虚结束服务时间的数据包进行发送;(4)对选定的头数据包进行发送的过程为首先将该数据包从所属的数据流F中取下来发送,数据流F再根据其新的头数据包的速率和长度,挂在积压流队列部分相应的Q2(Rx,Ly)队列的尾部,通过公式(2)更新数据流F的虚起始服务时间,即数据流F新的头数据包的虚起始服务时间,并通过公式(1)更新系统虚拟时间;V(t+τ)=max(V(t)+τ,mini∈B(t)(Sihi(t)))....(1)]]> Fik=Sik+LikRi(t)..........(4)]]>(5)重复步骤(2)至(4),直至工作完成。
全文摘要
本发明公开了一种数据包的调度方法,该方法量化数据流速率和数据包长度;并将待调度的数据流队列分成两部分,即新到流队列部分①和积压流队列部分②;调度器③采用SEFF策略对这两部分队列进行统一调度。当硬件资源不够时,可以对新到流队列部分进行简化。当一个数据包到达调度节点时,根据其是否为所属数据流的第一个数据包而排在新到流队列部分或积压流队列部分,调度器会从新到流队列部分和积压流队列部分中选取一个数据包进行发送。该调度方法简单、高效,可采用硬件实现,并基本保证了WF
文档编号H04L25/02GK1450754SQ03118918
公开日2003年10月22日 申请日期2003年4月11日 优先权日2003年4月11日
发明者杨宗凯, 刘彦, 王玉明, 范兵 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1