CN101651614A - 多端口队列调度方法及设备 - Google Patents
多端口队列调度方法及设备 Download PDFInfo
- Publication number
- CN101651614A CN101651614A CN200910092057A CN200910092057A CN101651614A CN 101651614 A CN101651614 A CN 101651614A CN 200910092057 A CN200910092057 A CN 200910092057A CN 200910092057 A CN200910092057 A CN 200910092057A CN 101651614 A CN101651614 A CN 101651614A
- Authority
- CN
- China
- Prior art keywords
- port
- time
- virtual
- scheduling
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种多端口队列调度方法及设备,方法包括:当任一端口中有新连接进入一空队列时,若该端口的计时器的第一时间值大于或等于预设的时延值,将空队列的虚拟开始时标设置为当前***虚拟时间;或者,当完成当前端口的本次调度时,若当前端口的计时器的第二时间值大于或等于预设的时延值,将当前端口中所有空队列的虚拟结束时标设置为当前***虚拟时间,并将当前端口的计时器清零。本发明实施例通过为每个端口设置一个计时器,通过根据端口的计时器的大小,对其中相应队列进行时标的更新,在多端口应用中,将新队列入队的首次时延控制在设定的时延值范围之内。
Description
技术领域
本发明实施例涉及网络通信技术领域,尤其涉及一种多端口队列调度方法、多端口队列调度器以及数据通信设备。
背景技术
为了在分组网络,如异步传输模式(Asynchronous Transfer Mode,简称ATM)分组交换网络中提供服务质量(Quality of Service,简称QoS)的保证,必须在分组网络设备,如ATM交换机、ATM路由器中采取适当的调度器,利用适当的队列调度方法进行队列的调度,以保证分组网络的QoS性能。通常,QoS业务参数包括分组时延、时延抖动、丢失率以及吞吐量等,不同的业务要求不同的QoS参数,而对于ATM分组交换网络中的固定比特率(Constants Bit Tate,简称CBR)业务来说,由于CBR业务一般用来支持对时延抖动比较敏感的实时业务,如语音、视频业务等,因此其对QoS参数中的时延及时延抖动将会比对其他业务有更高的要求。
分组公平排队(Packet Fair Queuing,简称PFQ)调度算法是目前应用较多且较为成熟的一种分组调度算法,其能够保证连接的预约带宽、最大端到端时延以及时延抖动,是实现QoS的关键技术。PFQ调度算法的基本原理为:为整个***设置一个***虚拟时间函数,用以记录调度器在当前活动期间已提供给所有业务流的服务量;根据连接的预约带宽及***虚拟时间函数,为连接的各个分组计算一个虚开始或结束时标,每个队列的时标为此队列的队头分组的时标;***按照一定的分组选择策略,根据各队列的时标大小对所有队列进行排序,并对其队头分组逐一进行服务。
现有技术中,整形虚拟时钟(Shaped Virtual Clock,简称ShVC)调度算法是一种常见的PFQ调度算法,相比其他的PFQ调度算法,ShVC调度算法中定义的虚时间函数及分组选择策略分别为:采用实际时钟作为***虚拟时间函数;采用最小合法虚拟结束时标优先(Smallest Eligiblevirtual Finished,简称SEFF)原则作为分组选择策略,即在优先地选择具有最小虚拟结束时标的分组进行服务的同时,该分组还需满足“合法”的条件,此处的“合法”指的是,这个分组的虚拟开始时标应小于或等于***虚拟时钟。由于ShVC调度算法的这些特点,其可以很好的控制业务的时延、抖动,而且在实现上也比较简单,因此常被使用于ATM网络中的CBR业务中,尤其是使用于ATM交换机的单端口应用中。
由于ShVC调度算法所支持的分组选择策略为SEFF策略,因此当前被选择进行服务的分组必然要满足虚拟开始时标小于或等于当前***虚拟时钟的条件,且由于在ShVC调度算法中,对虚拟时标的大小比较方法采用的是环形比较的方法,即在一个虚拟时间函数的计数范围内,通过两个虚拟时标的差值对其进行大小比较,这两个虚拟时标的大小关系跟随两者差值的改变而改变,因此对于任意两个虚拟时标而言,若其中一个虚拟时标为变量值,则两者之间的大小关系可能会发生变化。
当ShVC调度算法应用在多端口的ATM交换机时,对于当前没有被调度的端口,当其中的某个空队列有新连接入队时,***无法对其进行虚拟结束时标的更新,而只能为该队列的上一个分组的虚拟结束时标设置一初始值,且该初始值的大小不定,因此当该端口重新得到调度机会时,***根据该大小不定的初始值、按照环形比较的方法,计算得到的该队列的虚拟开始时标可能并不小于或等于当前的***虚拟时间,即并不满足SEFF原则。而且由于端口之间的端口转换时间的不确定,可能导致该新连接需要等待较长时间才能被调度,从而造成ShVC调度算法中,队列的首次连接得到调度的时延较大,即首次延时较大的问题。
发明内容
本发明实施例提供一种多端口队列调度方法及设备,用以解决现有技术中ShVC调度算法在多端口的应用场景中,由于端口之间的转换时间为不确定值,以及当前未被调度的端口中各队列的头分组的结束时标无法得到***的及时更新,从而导致的端口转换时,空队列的新入队的连接可能出现的时延较大、需等待时间较长的缺陷,以保证多端口应用中ATM网络的CBR业务对时延和时延变化的要求。
本发明实施例提供一种多端口队列调度方法,包括:
当多个端口中的任一端口中有新连接进入一空队列时,若所述任一端口的计时器记录的第一时间值大于或等于预设的时延值,将所述空队列的虚拟开始时标设置为当前***虚拟时间;
或者,当完成当前端口的本次调度时,若所述当前端口的计时器记录的第二时间值大于或等于所述预设的时延值,将所述当前端口中所有空队列的虚拟结束时标设置为当前***虚拟时间,并将所述当前端口的计时器清零;
所述当前端口为所述多个端口中的一个端口,所述第一时间值为所述任一端口从完成上一次调度到所述新连接进入所述空队列的间隔时间,所述第二时间值为所述当前端口从完成上一次调度到所述当前端口完成所述本次调度的间隔时间。
本发明实施例提供一种多端口队列调度器,包括:
第一虚拟时标更新单元,用于当多个端口中的任一端口中有新连接进入一空队列时,若所述任一端口的计时器记录的第一时间值大于或等于预设的时延值,将所述空队列的虚拟开始时标设置为当前***虚拟时间;
第二虚拟时标更新单元,用于当完成当前端口的本次调度时,若所述当前端口的计时器记录的第二时间值大于或等于所述预设的时延值,将所述当前端口中所有空队列的虚拟结束时标设置为当前***虚拟时间,并将所述当前端口的计时器清零;
所述当前端口为所述多个端口中的一个端口,所述第一时间值为所述任一端口从完成上一次调度到所述新连接进入所述空队列的间隔时间,所述第二时间值为所述当前端口从完成上一次调度到所述当前端口完成所述本次调度的间隔时间。
本发明实施例提供一种数据通信设备,包括多个通信端口,还包括上述的多端口队列调度器,用于对所述多个通信端口进行队列调度。
本发明实施例的多端口队列调度方法及设备,通过为每个端口设置一个计时器,当某个端口得到调度机会以及新连接进入一空队列时,根据判断该端口的计时器的大小的结果,对其中的空队列以及新连接进入后的该队列的虚拟时标进行更新,使其跟随当前***虚拟时间,从而将新连接入队的首次时延控制在一设定的时间范围之内,使得ShVC调度算法在应用于多端口的ATM交换机或ATM路由器时,也能很好地控制多端口转换时各队列被调度时的时延和抖动问题,更加保证了多端口应用时ATM网络CBR业务对时延和时延变化的要求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为ShVC调度算法中端口转换时产生的首次入队延时的环形比较示意图;
图2为本发明实施例一提供的多端口队列调度方法的流程图;
图3为本发明实施例二提供的多端口队列调度方法的流程图;
图4为本发明实施例三提供的多端口队列调度方法的流程图;
图5为本发明实施例三的端口A的新连接入队时第一种情况下的环形比较示意图;
图6为本发明实施例三的端口A的新连接入队时第二种情况下的环形比较示意图;
图7为本发明实施例三的端口A的新连接入队时第三种情况下的环形比较示意图;
图8为本发明实施例四提供的多端口队列调度器的结构示意图;
图9为本发明实施例五提供的多端口队列调度器的结构示意图;
图10为本发明实施例六提供的数据通信设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
ShVC调度算法是一种典型的PFQ调度算法,由于其具有能很好的控制时延和抖动的优点,而且在实现上也相对简单,因此经常被使用于对时延性能要求较高的ATM网络的CBR业务中。作为一种队列调度算法,ShVC调度算法包括几个典型的特征:
1)采用实际时钟作为***虚拟时间函数V(t),V(t)=t,t>0;
2)每个分组Pi k到达时为其计算一个虚拟开始时标Si k和虚拟结束时标Fi k,且计算规则如下:
其中,ai k和Li k分别表示列队i的第k个分组Pi k的到达时间和分组长度,ri表示列队i的预约带宽,Fi k-1表示列队i中第k-1个分组的虚拟结束时标。虚拟开始时标Si k为列队i的第k个分组实际到达的时间和上一个分组的虚拟结束时标中的最大值;虚拟结束时标Fi k为列队i的第k个业务分组发送的结束时间,具体为虚拟开始时标加上该业务分组的分组长度除以预约带宽;
3)分组选择策略为最小合法虚拟结束时标优先(Smallest Eligiblevirtual Finished,简称SEFF),即在合法的分组中,优先地选择具有最小虚拟结束时标的分组进行发送。此处所指的合法的分组,一般情况下指的是分组的虚拟开始时标小于或等于当前***虚拟时钟,即:
4)在对两个或多个虚拟时间进行大小比较时,例如在使用上述公式(1)计算分组Pi k的虚拟开始时标Si k,对分组Pi k的实际到达时间V(ai k)和Pi k的上一个分组的虚拟结束时标Fi k-1进行大小比较时,使用环形比较器的差值比较方法。该比较方法的基本原理为:在一个虚拟时间函数的计数范围,即一个调度周期(potential)内,根据两个时间值之间的差值判断它们的大小,例如:若时间值A与时间值B的差值小于或等于potential/2(A-B<=potential/2),则得到A大于B的结论;若时间值A与时间值B的差值大于potential/2(A-B>potential/2),则得到A小于B的结论。因此,在A与B之间,若其中一个时间值为固定值,而另一个时间值为可变值时,若需要改变A与B的大小关系,则固定的时间值最多需要等待potential/2的时间。此处的调度周期potential与队列调度***的最小流量有关,具体指在ShVC调度算法中带宽最小的端口的一个分组调度周期,即***中调度一个分组所需的最长时间,且在这个调度周期中,至少一个分组将被调度出队,而且每个端口都将得到至少一次的调度服务机会。
基于上述ShVC调度算法的几个基本特征,该算法的基本实现过程一般包括如下几个步骤:每一个分组到达某一个队列时,利用公式(1)、(2)计算该分组的虚拟开始时标和虚拟结束时标,并将其存储,其中每个队列的头分组的虚拟时标为该队列的虚拟时标;在每次调度之前,根据SEFF原则从所有队列中选择虚拟结束时标最小且满足 条件的队列+度出队;在完成一次调度之后,对所有的队列的虚拟结束时标进行更新,再重新进行下一轮的调度。
基于上述基本实现方式,由于ShVC调度算法对所有队列进行选择调度时,不仅根据各队列的虚拟结束时标的大小进行了排序,而且还根据每个队列的虚拟时标与调度时的当前***虚拟时间的大小比较进行了选择,进一步地,在每次调度结束后,还将所有队列的虚拟结束时标进行了更新,使其跟随当前***时间,这样的实现方式使得ShVC调度算法在单端口的ATM交换机或ATM路由器应用时,可以很好地控制其业务发送的延时与抖动,具有很好的QoS性能。
但是在现有技术中,当ShVC调度算法应用于多端口的ATM交换机或ATM路由器时,由于在任何给定的时刻,只有一个端口能得到调度服务,因此对于其他的当前并没有被服务的端口,其中包括的队列并不能得到虚拟结束时标的及时更新,而如果此时在这些队列中有新连接入队,即该新连接进入的队列为一空队列时,此时,该新连接应为该队列的首连接,该新连接的头分组则一个为该队列的头分组。由于该空队列不存在上一被调度的分组,而且在新连接进入之前,它的虚拟结束时标也没有得到及时的更新。因此,***在使用公式 为其计算该新分组的虚拟开始时标时,由于其中的Fi 0的值并不存在,***需要为该队列假定一个上一分组的虚拟结束时标,即为之设置一个Fi 0的初始值。
图1为ShVC调度算法中端口转换时产生的首次入队延时的环形比较示意图。如图1所示,一个环形的时间代表一个***调度周期(potential),假设一新连接到达一空队列的实际时间V(ai k)为V(t1),而***为该空队列设置的Fi 0的初始值为V(t0),此时,在利用公式 计算该新分组的虚拟开始时标时,需要比较的便为V(t1)与V(t0)的值大小。而根据ShVC调度算法中的环形比较器的差值比较方法,很有可能设定的初始值V(t0)与V(t1)相比时,在环形比较区间potential/2内是一个较大值,V(t0)-V(t1)<=potential/2,则得到 这样,当调度器重新对该队列所在的端口进行调度时,根据上述ShVC调度算法的特征3),该队列的虚拟开始时标Si 1必须满足V(t0)≤V(t)的条件才能得到调度出队的机会,其中V(t)为调度时的当前***虚拟时间,假设该时间为V(t2)。由于在***设定中,每个端口均能得到一次服务机会的最小时间T一般对于整个potential来说,是一个较小值,因此根据ShVC调度算法中的环形比较器的差值比较方法,经过T时间后,极有可能V(t0)与V(t2)相比时,在potential/2还是一个较大值。此时,该新连接若要调度出队,需要等待的时间至少为|V(t0)-V(t2)|,而且根据环形比较法的原理,该段时间最多甚至可能达到1/2的周期(potential/2),若在***中设置的该调度周期时间很长,此时该新连接需等待的延时时间也将很长。而且由于该延时时间是由于***为新连接进入前的空队列设置的虚拟结束时标不合理的“过大”而引起的,因此为一不合理的延时时间,会影响业务的QoS性能。
因此,针对上述的ShVC调度算法在多端口应用上的缺陷,本发明实施例提出了一种队列调度方法及调度器,为每个端口设置一个计时器,记录每个端口每两次相临调度的间隔时间,且在进行每次调度前以及每当有新连接进入空队列时,通过查询该间隔时间的大小,在其满足一定大小值的条件下,相应地对当前调度端口中的所有空队列以及新连接进入时该队列的虚拟时标进行更新,从而将新连接的首次入队时延控制在某一个设定的大小范围之内,很好地解决了多端口应用中,新连接的首次时延问题。
图2为本发明实施例一提供的多端口队列调度方法的流程图,如图2所示,本方法包括:
步骤100,当多个端口中的任一端口中有新连接进入一空队列时,若该任一端口的计时器记录的第一时间值大于或等于预设的时延值,将该空队列的虚拟开始时标设置为当前***虚拟时间;
本发明实施例的多端口队列调度方法应用于多端口的ATM交换机或ATM路由器中,该ATM交换机或ATM路由器中的调度器共同对其中的多个端口进行调度服务。在每个当前时刻,调度器只对其中的一个端口进行调度,而对于当前没有被服务的端口,该端口中包括的所有队列的虚拟时标在没被有服务时便不能得到调度器的更新。因此,该种情况下,很有可能会发生当***为一进入空队列的新连接计算虚拟开始时标及虚拟结束时标时,在运用公式 时,其中的该新连接的上一分组的虚拟结束时标Fi k-1是***为该空队列预先设置的一不合理的初始值,这样计算得到的新连接的虚拟结束时标也为一不合理的值,从而使得当调度器重新调度该端口时,该新连接需要等待较长的不合理的延时时间才能被调度出队。
因此,本实施例中,***为每个端口都设置了一个计时器,该计时器可以看作是对每个端口的一个延时计算单元,在每个端口完成一次调度时,其对应的计时器开始计时,直到该端口重新完成另一次调度为止。而在本实施例中,当多个端口中的任意一个端口中有新连接进入一个空队列时,不管该端口当前是处于正在被调度服务的状态,还是处于没有被调度服务的状态,调度器都首先将查询该端口的计时器记录的当前时间值,在本实施例中,称该当前时间值为第一时间值,该第一时间值记录了该端口从上一次调度完成到此刻有新连接进入该队列两个时间点之间的间隔时间。调度器将该第一时间值与中预设的时延值进行大小的比较,并根据该比较结果决定是对该新连接的虚拟开始时标进行更新,以此得到该新连接的虚拟结束时标,还是根据ShVC调度算法中的虚拟开始时标和虚拟结束时标计算公式,按照现有的计算方法计算该新连接的虚拟时标。此处所指的预设的时延值为本***中设置的各个端口对于首次入队的新连接可以接受的首次时延的上限值。
具体地,若调度器通过比较结果得知,此时计时器记录的第一时间值大于或等于预设的时延值时,这表示该端口从上一次结束调度时对其中队列的虚拟时标进行更新后,已经有一段较长的时间没有对其中的空队列进行更新,因此此时进入该端口的一空队列的新连接若按照***设置的通常的计算公式,计算得到的虚拟结束时标很有可能是一不合理的值,且按照上述对新连接被调度出队的时延的分析,该不合理的虚拟结束时标很有可能使得,该新连接被调度出队时会产生较大的时延,需要等待较长的延时时间,而且此为一不合理的延时时间。因此,在本实施例中,调度器一查询到此时计时器记录的第一时间值大于或等于预设的时延值时,便直接将该新连接的虚拟开始时标进行更新,即将该空队列的虚拟开始时标设置为当前***虚拟时间,避免其出现调度出队时的较长延时时间的现象。
而若调度器通过比较结果得知,此时计时器记录的第一时间值小于预设的时延值,这表示该端口从上一次结束调度时对其中队列的虚拟时标进行更新后,到此刻有新连接进入该端口的一空队列,并没有相隔一较长时间,还没有长到能够使得该新连接被调度时会产生较长延时的情况出现,而且此时进入该端口的一空队列的新连接若按照***设置的通常的计算公式,计算得到的虚拟结束时标为一合理值,不会引起该新连接出现调度出队时的较长延时时间的情况,因此此时,调度器不会对该新连接的虚拟开始时标进行更新。
如此一来,每当一个空队列有新连接入队时,无论该空队列当前是处于正在被服务的端口中,还是处于没有被服务的端口中,只要该新连接进入该空队列的时间与该端口上一次被调度的时间的间隔达到或超过了***设置的新连接的首次时延可以接受的时间,调度器都会将该新连接的虚拟开始时标进行更新,从而使得在本实施例中,即使新连接进入一当前没有被服务的端口的空队列中时,在满足条件的情况下,该新连接所在的队列也能得到虚拟时标的更新。
步骤101,当完成当前端口的本次调度时,若当前端口的计时器记录的第二时间值大于或等于预设的时延值,将当前端口中所有空队列的虚拟结束时标设置为当前***虚拟时间,并将当前端口的计时器清零。
需要说明的是,步骤101中的当前端口在一个实施例中也可以为步骤100中有新连接进入一空队列的任一端口。
在多端口的队列调度方法中,调度器共同所有的端口进行调度服务,其根据各个端口各自的预约带宽的比例依次、循环且公平地在各个端口之间进行转换,其中,预约带宽较高的端口得到调度的服务量以及调度次数也将相对较高。例如,假设存在预约带宽为2M的端口A和预约带宽为1M的端口B两个端口,在调度器对这两个端口进行调度服务时,根据其各自的预约带宽,端口A得到调度的机会应为端口B的2倍,即可能端口A被调度了2次后,端口B才被调度1次,因此,在端口B中的队列可能需要比端口A等待更多的延时时间,而该延时时间也应该为端口B自身所应该接受的延时时间。
因此,对于某一个固定的端口而言,调度器对其进行的相邻两次调度之间的间隔时间是不固定的,可能调度器在进行完对端口A的一次调度后,继续对其进行下一次的调度操作,也有可能调度器在调度完一次端口A后,又相继对几个其他的端口进行了调度才重新回到端口A,这时,端口A的相邻两次调度的间隔时间远远大于端口A的相继两次调度之间的间隔时间。因此每个端口的相邻调度的间隔时间的大小并非一个固定值,其根据所有相关端口的各自预约带宽决定。
因此在本实施例中,调度器根据每个端口设置的计时器记录的时间值,能够得到每个端口相邻两次调度的间隔时间。该计时器可以看作是对每个端口的一个延时计算单元,在每个端口完成一次调度时,其对应的计时器开始计时,直到该端口完成该端口的第二次调度为止。这样一来,对于每个端口,其对应的计时器都会记录下该端口的相邻两次调度的间隔时间,尤其是在调度器从一个端口转换到另一端口的情况时,被转换的那个端口的计时器从调度器进行完该端口被转换前的最后一次调度后开始计时,直到调度器重新对该端口进行调度为止。因此,无论在这两次相邻的调度期间,调度器又对多少个端口进行了调度,这段时间的时间值都将会被该端口的计时器记录下来,从而当该端口重新得到调度机会时,调度器通过查询该端口的计时器的当前记录的时间值,便可以很清楚的了解这一端口的前后两次调度之间的时间,从而能够通过判断该转换间隔时间的大小,对该端口中的一些因为端口调度的间隔时间过长,可能导致非必要的延时的队列进行时标的更新处理,使之避免产生过长的延时时间。
具体地,在本实施例中,每当调度器对当前端口进行完一次调度之后,都将对该端口执行一次搜索更新过程,该搜索更新过程具体为:首先,读取当前端口的计时器记录的当前时间值,在本实施例中,称该当前时间值为第二时间值,该第二时间值为调度器对当前端口进行的上一次调度与对当前端口进行的本次调度之间的间隔时间。调度器将该第二时间值与预设的时延值进行比较,若该时间值大于或等于预设的时延值时,调度器遍历搜索当前端口中的所有队列,对其中的所有空队列进行虚拟结束时标的更新。此处所指的预设的时延值与步骤100中调度器对新连接进入空队列时,将第一时间值与一预设的时延值进行比较的一样,为在本***中各个端口对于首次入队的新连接可以接受的首次时延的上限值,根据业务的实际需求,可以对该时延值进行具体的设置。
具体地,若调度器根据比较结果得知,此时计时器记录的第二时间值大于或等于预设的时延值时,这表示该端口从上一次结束调度时对其中队列的虚拟时标进行更新后,已经有一段较长的时间没有对其中的空队列进行更新。因此此时若不对当前端口的空队列进行虚拟时标的更新,当之后该空队列有新连接进入,调度器按照公式 计算该新连接的虚拟开始时标时,其中的Fi k-1为一很久未得到更新的值,可能会影响其与该新连接的实际到达时间V(ai k)的大小比较结果,从而使得这样计算得到的新连接的虚拟结束时标也为一不合理的值,而当调度器重新调度该端口时,该新连接需要等待较长的不合理的延时时间才能被调度出队。因此,在本实施例中,调度器一查询到此时计时器记录的第二时间值大于或等于预设的时延值时,便直接将当前端口所有空队列的虚拟结束时标进行更新,即将当前端口中所有空队列的虚拟结束时标设置为当前***虚拟时间,避免其出现调度出队时的较长延时时间的现象。
这样一来,通过调度器在每次调度的结束,即另一次调度的开始,都在当前端口的计时器记录的第一时间值等于或超出预设的时延值的情况下,对其中的空队列的虚拟结束时标进行更新,将其设置为当前的***虚拟时间,使得之后当有新连接首次进入该空队列时,在计算该新连接的虚拟开始时标时,由于该新连接进入该空队列之前,调度器为该空队列设置的虚拟结束时标可以看作是该新分组的上一分组的虚拟结束时标,而这个上一分组的虚拟结束时标是在该空队列所处的端口在被调度的过程中,被不断进行更新得到的。因此当之后有新连接进入该空队列,调度器通过公式 计算该新连接的虚拟开始时标时,是以新连接到达前对该端口的最后一次更新操作中,为该空队列设置的虚拟结束时标作为该新连接的上一分组的虚拟结束时标计算到的,此时计算得到的虚拟结束时标为一合理值,不会引起该新连接出现调度出队时的较长延时时间的情况。
另外,在本实施例中,当调度器对当前端口的空队列的虚拟结束时标进行了更新之后,还将该当前端口的计时器进行清零,使之重新开始计时,这样计时器又开始进行新一轮的计时操作,将记录当前端口的本次调度与下一调度之间的时间间隔,以便于调度器在下一次调度前根据该记录值,判断是否对其中的空队列的进行虚拟结束时标的再一次的更新操作。
而如果在进行新一轮的调度之后,调度器在进行搜索时又再次搜索到该空队列,即此刻仍然没有新连接进入该队列,而且同时该端口的计时器在经过重新计时后的此刻记录的第二时间值,又再一次达到或超过了预设的时延值,此时,调度器将再一次地将该空队列的虚拟结束时标进行更新,使之重新跟随当前的***虚拟时间。而同时也有可能当前端口的某一队列在本次调度后并非一空队列,而通过又一次的调度后,该队列中的最后一个分组被调度出队,因此在新一轮的调度后,该非空队列变成空队列,此时,调度器在对该端口进行搜索更新的过程中,只要此时计时器记录的第二时间值大于或等于预设的时延值,调度器同样会对此新的空队列进行虚拟时标的更新操作。
本发明实施例提供的多端口队列调度方法,通过为每个端口设置一个计时器,当某个端口得到调度机会以及新连接进入一空队列时,根据判断该端口的计时器的大小的结果,对其中的空队列以及新连接进入后的该队列的虚拟时标进行更新,使其跟随当前***虚拟时间,从而将新连接入队的首次时延控制在一设定的时间范围之内,使得ShVC调度算法在应用于多端口的ATM交换机或ATM路由器时,也能很好地控制多端口转换时各队列被调度时的时延和抖动问题,更加保证了多端口应用时ATM网络CBR业务对时延和时延变化的要求。
图3为本发明实施例二提供的多端口队列调度方法的流程图,如图3所示,本方法包括:
步骤200,多个端口中的任一端口中有一新连接进入一空队列;
具体地,在本实施例中,多个端口中的任一端口所指的可以为当前正在被调度服务的端口,也可以为当前并没有被服务的端口。每个端口中存在多个队列,其中有些为非空队列,即该队列中依次存在有一个或多个连接,每个连接中依次存在有一个或多个分组,正在等待被调度,而每个端口中也会有部分队列为空队列,即该队列中并不包括任何连接和分组,可能该队列中的分组在该端口的上一次调度中,或者前几次调度中已被全部调度出队,也有可能该队列中从来没有存在过连接和分组,任何新连接进入到该队列中,都是该队列的首个连接。因此,对于一空队列而言,一旦有新连接进入,即有新分组进入,该新分组便一定为该队列的头分组,因此该分组的虚拟时标便应该为该队列的虚拟时标。
步骤201,若任一端口的计时器记录的第一时间值大于或等于预设的时延值,执行步骤202,否则执行步骤203;
与实施例一中所描述的一样,在本实施例中,在调度器共同对多个端口进行调度服务的过程中,为每一个端口都设置了一个计时器,该计时器从该端口完成一次调度时开始计时,直到其再次完成另一次调度为止,记录了每个端口的相邻两次调度之间的间隔时间。因此,本实施例中,当任意一个端口中有新连接进入一个空队列时,不管该端口当前是处于正在被调度服务的状态,还是处于没有被调度服务的状态,调度器都首先将查询该端口的计时器记录的当前时间值,在本实施例中,称该当前时间值为第一时间值,该第一时间值记录了该端口从上一次调度结束到此刻有新连接进入该空队列两个时间点之间的间隔时间;调度器将该第一时间值与中预设的时延值进行大小的比较,并根据该比较结果判断针对该空队列而言,从该新连接进入之前的最后一次虚拟时标的更新开始,到此刻有新连接进入,是否已经间隔了较长时间,从而据此决定是否要对该新连接,即对该队列进行虚拟时标的更新操作。
具体地,此处所指的预设的时延值为***为每个端口统一设置的,新连接首次延时的最大值,且在本实施例中,该预设的时延值TMP应满足Tport≤TMP≤potential/2的条件,其中,Tport代表调度器轮询所有端口一次的最少时间,在一个Tport内,所有的端口都能得到至少一次的服务机会;而potential为一个***调度周期,代表所有端口中带宽最小的端口的一个分组调度周期,在本发明实施例的队列调度算法中,当采用的环形比较器的差值比较方法对两个虚拟时标进行大小比较时,环形比较器的一个环形周期即为一个potential的时间。因此,在该预设的时延值TMP内,本实施例中,每个端口都至少能得到一次调度机会。
步骤202,更新该新连接的虚拟开始时标,执行步骤204;
具体地,若调度器通过比较结果得知,此时计时器记录的第一时间值大于或等于预设的时延值时,这表示该端口从上一次结束调度时对其中队列的虚拟时标进行更新后,已经有一段较长的时间没有对其中的空队列进行更新,因此此时进入该端口的一空队列的新连接若按照***设置的通常的计算公式,计算得到的虚拟结束时标很有可能是一不合理的值,且按照对新连接被调度出队的时延的分析,该不合理的虚拟结束时标很有可能使得该新连接被调度出队时会产生较大的时延,需要等待较长的不合理的延时时间。因此,此时调度器将对该新连接的虚拟开始时标进行更新,直接将该新连接的虚拟开始时标设置为当前的***虚拟时间,使得 即不再通过公式 计算Si 1,而是通过直接设置的方式将其直接设置为V(ai 1)。这样的设置将会避免在运用公式计算时,计算得到的该新连接的虚拟开始时标与***虚拟时间出现不匹配的情况。
如此一来,每当一个空队列有新连接入队时,无论该空队列当前是处于正在被服务的端口中,还是处于没有被服务的端口中,只要该新连接进入该空队列的时间与该端口上一次被调度的结束时间的间隔达到或超过了预设的时延值TMP,调度器都会将该新连接的虚拟开始时标直接设置为该新连接进入该空队列时的***虚拟时间,使得该新连接进入后的新队列的虚拟结束时标跟随当前的***虚拟时间,从而使得在本实施例中,即使新连接进入一当前没有被服务的端口的空队列中时,该新连接也能得到虚拟时标的更新。而当该端口重新得到服务机会时,由于该端口最多在时间Tport内能到一次新的调度机会,而该Tport小于为一小于potential/2的值。因此对于该新连接来说,根据***为其设置的跟随其进入空队列的当前***虚拟时间的虚拟开始时标,该虚拟开始时标与经过时间Tport后该端口再次得到调度机会的当前调度时间相比,按照环形比较器的差值比较方法,其必定为一较小值,因而该新连接在该端口再次得到调度机会时,应满足SEFF分组选择原则中的“合法”条件,即该新连接的虚拟开始时标小于调度时的当前***虚拟时间,调度器能够在这次调度中将其调度出队,不会存在延时。
另外需要说明的是,由于在本实施例中,所指的新连接进入一空队列包括两种情况:该空队列具体可以为在上一个调度周期或者上几个调度周期中,调度器已经将该队列中的最后一个连接调度出队,使得此刻该队列中不包含有任何连接,为一空队列,即此种情况具体可以被称为一断点续传的情况;另外也有可能此刻进入该空队列的新连接为该队列的第一个连接,即在此之前,该队列中不存在任何被调度出队的连接,此种情况具体可被称为一首次连接的情况。而无论是在首次连接还是在断点续传的情况,调度器都会根据其所处端口的计时器的记录时间值,对其进行虚拟开始时标的更新,在具体操作上不会有任何的区别。
步骤203,按照公式计算新连接的虚拟开始时标和虚拟结束时标,执行步骤204;
具体地,若调度器通过比较结果得知,此时计时器记录的第一时间值小于预设的时延值TMP,这表示该端口从上一次结束调度时对其中队列的虚拟时标进行更新后,到此刻有新连接进入该端口的一空队列,并没有相隔一较长时间,还没有长到能够使得该新连接被调度时会产生较长延时的情况出现,而且此时进入该端口的一空队列的新连接若按照***设置的通常的计算公式,计算得到的虚拟结束时标为一合理值,不会引起该新连接出现调度出队时的较长延时时间的情况。因此此时,调度器不会对该新连接的虚拟开始时标进行更新操作,而是会按照虚拟开始时标和虚拟结束时标的计算公式对该新连接进行虚拟时标的计算。该虚拟开始时标和虚拟结束时标的计算公式为ShVC调度算法中定义的计算公式,具体为: 其中,V(ai k)为新连接i进入该空队列时的***虚拟时间,Fi k-1为该空队列中新连接i的上一个分组的虚拟结束时标,Li k表示新连接i的第k个分组的分组长度,ri表示新连接i的预约带宽。
步骤204,当前端口完成一次调度;
需要说明的是,步骤204中的当前端口在一个实施例中也可以为步骤200中有新连接进入一空队列的任一端口。
步骤205,若当前端口的计时器记录的第二时间值大于或等于预设的时延值,执行步骤206,若第二时间值小于预设的时延值,执行步骤207;
对于正在被调度的端口,在进行完一次调度时,调度器都将对该当前端口执行一次搜索过程,在该搜索过程中,调度器将首先查询当前端口的计时器记录的当前时间值,称之为第二时间值,并将该第二时间值与预设的时延值进行比较,该预设的时延值是本***预先设置的各个端口可以接受的首次时延的上限值,根据业务的实际需求,可以对该时延值进行相应的修改。由于该第一时间值为当前端口的上一次调度到本次调度之间的间隔时间值。调度器从该比较结果中,可以得知当前端口的所有队列,尤其是空队列的虚拟时标未被更新的时间间隔状态,因此可以根据不同的比较结果进行不同的操作。
此处所指的预设的时延值与步骤201中与第一时间值进行大小比较的时延值一样,同样为***为每个端口统一设置的,新连接首次延时的最大值,而且同样地,该预设的时延值TMP应满足Tport≤TMP≤potential/2的条件,其中Tport代表调度器轮询所有端口一次的最小时间,在一个Tport内,所有的端口都能得到至少一次的服务机会;potential为一个***调度周期,代表所有端口中带宽最小的端口的一个分组调度周期。
步骤206,更新当前端口中所有空队列的虚拟结束时标,并将当前端口对应的计时器清零,执行步骤208;
如果调度器通过比较得到此时计时器记录的第二时间值大于或等于预设的时延值,代表当前端口中的空队列已有大于或等于预设时延值的时间段未被进行虚拟时标的更新,因此此时若不对当前端口的空队列进行虚拟时标的更新,当之后该空队列有新连接进入,调度器按照公式 计算该新连接的虚拟开始时标时,其中的Fi k-1为一很久未得到更新的值,可能会影响其与该新连接的实际到达时间V(ai k)的大小比较结果,从而使得这样计算得到的新连接的虚拟结束时标也为一不合理的值,而当调度器重新调度该端口时,该新连接需要等待较长的不合理的延时时间才能被调度出队。于是根据该判断结果,调度器将当前端口中的所有空队列的虚拟结束时标进行更新,将其设置为当前的***虚拟时间,并将当前端口的对应计时器清零,使其重新开始计时。而对于当前端口中的非空队列,调度器不会对其进行任何虚拟时标更新的操作。
如此一来,通过调度器在每次调度的开始,都在当前端口的计时器记录的第一时间值等于或超出预设的时延值的情况下,对其中的空队列的虚拟结束时标进行更新,将其设置为当前的***虚拟时间,使得之后当有新连接首次进入该空队列时,在计算该新连接的新分组的虚拟开始时标时,由于该新分组进入该空队列之前,该空队列的虚拟结束时标可以看作是该新分组的上一分组的虚拟结束时标,而这个上一分组的虚拟结束时标是在该空队列所处的端口在被调度的过程中,被不断进行更新得到的,其不断跟随每次更新时的***虚拟时间,与当前的***虚拟时间相匹配。因此当之后有新连接进入该空队列,调度器通过公式 计算该新连接的虚拟开始时标时,是以新连接到达前对该端口的最后一次更新操作中,为该空队列设置的虚拟结束时标作为该新连接的上一分组的虚拟结束时标计算到的,此时计算得到的虚拟结束时标为一合理值,不会引起该新连接出现调度出队时的较长延时时间的情况。
另外需要说明的是,此处所指的空队列包括两种情况:该空队列具体可以为在上一个调度周期中,调度器已经将该队列中的最后一个连接调度出队,使得在此刻该队列中不包含有任何连接,为一空队列;另外该空队列也可以为该队列从来没有连接进入,一直为一个不存在任何连接和分组的空队列。而无论是针对哪种情况,调度器都会根据当前端口的计时器的记录时间值,对其进行虚拟时标的更新,在具体操作上不会有任何的区别。
步骤207,将当前端口对应的计时器清零,执行步骤208;
如果调度器通过比较得到此时计时器记录的第二时间值小于预设的时延值,则代表调度器对当前端口中空队列的上一次虚拟时标的更新距离此时并没有达到预定的时延间隔时间,按照上一次对该端口的空队列更新的虚拟结束时标,计算该空队列有新连接进入时,新连接的虚拟开始时标时,不会造成空队列的虚拟结束时标相比新连接实际到达的***虚拟时间为一很大值的情况出现,因此此时调度器无需对当前端口中的空队列进行虚拟时标的更新,只需将当前端口的计时器进行清零操作,使之重新开始计时,以便于调度器在下一次调度前根据该记录值,判断是否对其中的空队列的进行虚拟结束时标的再一次的更新操作。
步骤208,按照最小合法虚拟结束时标优先原则,选择虚拟结束时标最小的队列进行调度。
当调度器进行完对当前端口的一次调度之前的搜索更新操作后,将按照ShVC调度算法中定义的SEFF分组选择策略,根据各个队列的虚拟结束时标中,选择小于或等于当前***虚拟时间的、且虚拟结束时标最小的队列作为本次调度中需进行调度服务的队列,将该队列的头分组调度出队,便完成了一次调度操作。
而在本次调度完成之后,调度器将会开始对当前端口进行下一次调度的操作,重新开始下一次调度前的搜索过程,并重新读取当前端口的计时器的大小,与预设的延时值进行比较,根据比较结果进行当前端口中空队列的虚拟时标的更新,即重新开始执行本实施例的流程。而此时调度器进行调度的当前端口和上一调度的端口有可能为一个端口,也有可能为不同端口,若调度器进行了端口的转换,对于上一次调度的端口,其将继续进行计时器的计时累加,直到调度器重新对其进行调度为止。而在调度的过程中,若其他的没有被服务的端口此刻有新连接进入一空队列时,调度器同样会根据判断该空队列所在端口的计时器此刻的时间大小,对该新连接进行虚拟开始时标的更新,以避免该新连接出队时的延时过长的情况出现。
另外需要说明的是,在本实施例中,步骤200~步骤203的对任一端口中的任一空队列有新连接入队时,当该端口的计时器记录的当前时间值大于或等于预设的时延值,则更新该空队列的虚拟开始时标的操作,即可以在调度器在通过对当前端口的计时器的记录的第二时间值,对当前端口的所有空队列进行虚拟结束时标的更新操作之前进行,即可以在步骤204之前进行,也可以在调度器将当前端口的计时器的记录的第二时间值的大小与预设的时延值进行比较之后进行,即也可以在步骤204之后进行,其甚至可以在本实施例中的任意一个时刻进行。即在本发明实施例中,只要某一端口中有一新连接进入一空队列时,调度器便可以执行该操作,该操作的执行并不受时间的限制。而在本实施例中,只是列举出了一种实施方案,而对于包含其他的操作顺序的技术方案,只要属于本发明实施例的发明构思,都在本发明实施例所保护的范围之内。
本发明实施例提供的多端口队列调度方法,通过为每个端口设置一个计时器,当某个端口得到调度机会以及新连接进入一空队列时,根据判断该端口的计时器的大小的结果,对其中的空队列以及新连接进入后的该队列的虚拟时标进行更新,使其跟随当前***虚拟时间,从而将新连接入队的首次时延控制在一设定的时间范围之内,使得ShVC调度算法在应用于多端口的ATM交换机或ATM路由器时,也能很好地控制多端口转换时各队列被调度时的时延和抖动问题,更加保证了多端口应用时ATM网络CBR业务对时延和时延变化的要求。
由于本发明实施例具体针对的是在多端口应用中,对于当前没有得到调度服务的端口,当有新连接进入一空队列时,该新连接的首次调度延时过长问题,而为了更充分地说明本发明实施例的多端口队列调度方法能够避免上述情况的发生,在下述实施例中,将特以某一具体的端口A为例,详细地描述当上述情况出现时,本发明实施例的多端口队列调度方法的处理流程。
图4为本发明实施例三提供的多端口队列调度方法的流程图,如图4所示,本方法包括:
步骤300,当调度器对端口A完成一次调度时,若端口A的计时器记录的第二时间值大于或等于预设的时延值,调度器更新端口A中所有空队列的虚拟结束时标,并将端口A的计时器清零;
在本实施例中,假设端口A为调度器进行调度服务的当前调度端口,当调度器对端口A进行完一次调度后,将读取端口A的计时器记录的当前时间值,本实施例中,将此时计时器记录的当前时间值称为第二时间值。调度器读取到该第二时间值后,将该第二时间值与***预设的时延值TMP进行比较,判断端口A从上次调度结束后到这次调度结束之间的间隔时间是否达到或超过了***预设的时延值。该时延值为***设置的可以接受的最大的首次延时时间,通常为一小于1/2的***调度周期(potential/2),且大于调度器轮询所有端口一次的最小时间Tport的时间值,因此在该段时延值所代表的时间范围内,***的每个端口至少都能得到一次调度机会。若此时的第二时间值大于或等于该预设的时延值,调度器将遍历搜索当前端口A中所有的空队列,并对所有空队列进行虚拟时标的更新,将所有空队列的虚拟结束时标设置为当前的***虚拟时间V(t),且同时将端口A的计时器进行清零,使其开始重新计时。在本实施例中,假设此时的***虚拟时间为V(t1),即通过此次更新,调度器将端口A中此时包括的所有空队列的虚拟结束时标都更新到V(t1)。
具体地,在此次更新搜索过程中,调度器搜索到的端口A中的空队列可能存在两种情况:该空队列具体可以为在本次调度周期或者上一次乃至上几次调度周期中,调度器已经将该队列中的最后一个连接调度出队,使得在此刻该队列中不包含有任何连接,为一空队列;另外该空队列也可以为该队列从来没有连接进入,一直为一个不存在任何连接和分组的空队列。而无论是针对哪种情况,调度器都会根据当前端口A的计时器的记录时间值,对其进行虚拟时标的更新,在具体操作上不会有任何的区别。
步骤301,调度器从端口A转换到其他端口进行调度服务;
在本实施例中,假设调度器对端口A进行完上次调度,并将其中所有的空队列的虚拟结束时标进行更新完毕之后,并不是继续对端口A进行再一次调度服务,而是转换到了其他端口进行调度服务,即端口A此时为没有被服务的端口之一。而在本实施例中,虽然此时端口A并没有被服务,当***为其设置的计时器从端口A的上次调度结束开始,便一直处于累加计时的状态,以便于当该端口有新连接入队,或者重新得到调度机会时,调度器从该计时器记录的当前时间值能得知该端口从上次调度结束到有新连接入队的间隔时间,或者该端口的两次调度之间的间隔时间。
步骤302,一新连接进入端口A的一空队列,若此时端口A的计时器记录的第一时间值大于或等于预设的时延值,调度器将该空队列的虚拟开始时标设置为当前***虚拟时间;
在本实施例中,假设在端口A在没有被调度服务的期间,有一新连接进入其中的一空队列,且假设此时的***虚拟时间为V(t2),即从端口A的上一次调度结束到此刻有一新连接进入端口A中的一空队列,已经间隔了V(t2)-V(t1)的时间,而该间隔时间正是此刻端口A的计时器所记录的时间值。因此,调度器此时将首先读取端口A的计时器此刻记录的当前时间值,在本实施例中,称此刻的当前时间值为第一时间值,该第一时间值记录了端口A从上一次调度结束到该新连接进入端口A中的一空队列之间的间隔时间。读取到此时计时器记录的第一时间值之后,调度器将该第一时间值与***预设的时延值进行大小比较,若第一时间值大于或等于***预设的时延值,调度器将该新连接所在队列的虚拟开始时标进行更新,更新到当前的***虚拟时间,即更新到V(t2),但此时并不对端口A的计时器进行清零,计时器仍然进行累加计时操作。
具体地,在本实施例中,假设***设置的其可接受的最大时延值为T,且由于该时延值TMP应为一小于1/2的***调度周期(potential/2)的时间值,而在本实施例中,为了更加方便于说明解释,假设该时延值TMP为potential/4。因此,对于该新连接进入端口A中的一空队列的虚拟时间V(t2)而言,在本实施例中,其具体存在三种情况:
第一种情况,图5为本发明实施例三中端口A的新连接入队时第一种情况下的环形比较示意图。如图5所示,此时计时器记录的第一时间值V(t2)-V(t1)小于TMP,因此,调度器并不对该新连接的虚拟时标进行更新操作,因为此时当运用虚拟开始时标计算公式 计算该新连接的虚拟开始时标时,该新连接到达空队列的实际时间V(t2)与该新连接的上一分组的虚拟结束时标,即该空队列的上一虚拟结束时标V(t1)相比,其差值一定是一小于potential/2的值,因此通过公式 计算得到的此新连接的虚拟开始时标也一定为V(t2),跟随当前的***虚拟时间,此时调度器无需对该新连接的虚拟结束时标进行更新操作。
而由于在预设的时延值TMP的时间范围内,每个端口至少能得到一次的调度机会,对于端口A也不例外,因此端口A至少再过TMP的时间,便能得到一次调度机会,假设端口A再次得到调度机会时的当前***虚拟时间为V(t3),V(t3)-V(t2)≤TMP,由于该时延值TMP同时又为一小于potential/2的值,因此此时对于该新连接而言,其虚拟开始时标V(t2)与调度时的当前***虚拟时间V(t3)相比,一定为一较小值,即一定满足SEFF分组选择策略中的“合法”条件。因此,在端口A再次得到调度机会时,该新连接只要在端口A中的虚拟结束时标最小,便能被直接调度出队,而不会存在等待延时,对于该新连接来说,其从入队到被调度出队的等待时间最多为时间TMP;
第二种情况,图6为本发明实施例三中端口A的新连接入队时第二种情况下的环形比较示意图。如图6所示,此时计时器记录的第一时间值V(t2)′-V(t1)大于或等于TMP,而且V(t2)′-V(t1)<potential/2,即此时V(t2)′与V(t1)的差值虽然大于或等于预设的时延值TMP,但是运用环形比较器的差值比较方法,V(t2)′在一定的环形比较区间内,与V(t1)相比还是一个较大值,因此此时若运用虚拟开始时标计算公式计算,得到的该新连接的虚拟开始时标也应为V(t2)′,跟随当前***虚拟时间,而在本实施例中,将其直接设置为跟随当前***虚拟时间,即直接设置为V(t1)′,更加确保了该新连接的虚拟开始时标的正确性,而且与虚拟开始时标计算公式并不互相冲突。
与上一种情况一样,由于在预设的时延值TMP的时间范围内,每个端口至少能得到一次的调度机会,因此端口A至少再过TMP的时间,便能得到一次调度机会,假设端口A再次得到调度机会时的当前***虚拟时间为V(t3)′,V(t3)′-V(t2)′≤TMP,由于该时延值TMP同时又为一小于potential/2的值,因此此时对于该新连接而言,其虚拟开始时标V(t2)′与调度时的当前***虚拟时间V(t3)′相比,同样一定为一较小值,即一定满足SEFF分组选择策略中的“合法”条件。因此,在端口A再次得到调度机会时,该新连接只要在端口A中的虚拟结束时标最小,便能被直接调度出队,而不会存在等待延时,对于该新连接来说,其从入队到被调度出队的等待时间最多为时间TMP;
第三种情况,图7为本发明实施例三中端口A的新连接入队时第三种情况下的环形比较示意图。如图7所示,此时计时器记录的第一时间值V(t2)″-V(t1)不仅大于TMP,而且V(t2)″-V(t1)>potential/2,即此时V(t2)″与V(t1)的差值不仅大于预设的时延值TMP,而且运用环形比较器的差值比较方法,V(t2)″在一定的环形比较区间内,与V(t1)相比为一较小值,因此此时若运用虚拟开始时标计算公式计算,得到的该新连接的虚拟开始时标应为V(t1)。此时若不对该新连接的虚拟开始时标进行更新,则由于在预设的时延值TMP的时间范围内,每个端口至少能得到一次的调度机会,因此再经过TMP的时间,端口A至少能得到一次调度机会,假设此时的***虚拟时间为V(t3)″,如图7所示,很显然运用环形比较器的差值比较方法,很有可能会造成该新连接的虚拟开始时标V(t1)与端口A得到调度机会的时刻V(t3)″相比为一个较大值,即不满足SEFF分组选择策略中的“合法”的条件,因此即使此时端口A得到了调度机会,由于该新连接不满足分组选择策略,也不能得到及时的调度,因而该新连接在得到调度机会时,其调度出队的延时仍然会至少大于时间T,需要等待至少时间TMP的延时时间。
而在本实施例中,由于只要有新连接进入一空队列时,调度器便及时地将该新连接的虚拟开始时标进行更新,因此,在此情况下,调度器将该新连接的虚拟开始时标直接设置为V(t2)″,跟随当前***虚拟时间,因此在端口A再次得到调度机会时,即当前***虚拟时间为V(t3)″时,由于V(t3)″-V(t2)″≤TMP,由于该时延值T同时又为一小于potential/2的值,因此此时对于该新连接而言,其虚拟开始时标V(t2)″与调度时的当前***虚拟时间V(t3)″相比,同样一定为一较小值,即一定满足SEFF分组选择策略中的“合法”条件。因此,在端口A再次得到调度机会时,该新连接只要在端口A中的虚拟结束时标最小,便能被直接调度出队,而不会存在等待延时,对于该新连接来说,其从入队到被调度出队的等待时间最多为时间TMP。
由于上述三种情况包括了端口A在没有被调度时,有新连接进入其中的一空队列时计时器记录的第一时间值可能出现的所有情况,因此,在本实施例中,通过对上述三种情况的具体分析,可以得出,无论新连接在哪种情况下进入端口A的一空队列中,在本实施例中,通过在新连接进入时及时将其虚拟开始时标更新为当前***虚拟时间,都可以将该新连接被调度出队的首次延时控制在预设的时延值TMP的范围之内。
步骤303,调度器重新转换到端口A进行服务;
在当调度器重新转换到端口A为其服务,即端口A重新得到调度机会时,由于在本实施例的步骤302中,当端口A在得到再一次的调度服务机会之前,调度器为该时期进入一空队列的新连接进行了虚拟时标的更新,因此当调度器重新转换到端口A为其服务时,该新连接中新分组的虚拟时标满足SEFF分组选择策略,为一可被调度出队的分组。
步骤304,调度器按照最小合法虚拟结束时间优先原则,选择端口A中虚拟结束时标最小的队列进行调度。
调度器重新转换到端口A进行服务之后,将根据最小合法虚拟结束时间优先原则,即SEFF分组选择原则,选择端口A中虚拟结束时标最小的队列进行调度。在本实施例中,除非在端口A没有得到调度的时间内,即在步骤302中,同时有几个新连接分别进入端口A的空队列中,使得调度器此刻需要依次对其进行调度出队服务,而在这种情况下,由于相继每次调度之间的间隔时间较短,因此,每个新连接也并不需要等待较长时间;或者在端口A中还存在上次调度中没有被调度出队的非新分组,而这种情况出现的几率非常小,不然在本步骤中,按照SEFF分组选择原则,步骤302中进入该端口A的新连接满足调度的条件,将被调度器在本次调度中选择调度出队。而在本次调度结束之后,由于该队列又从非空队列转变为空队列,调度器将重新根据计时器记录的当前时间值对端口A中的所有空队列进行虚拟时标的更新操作,为下次调度做准备。而在下次调度中,调度器可能继续为端口A服务,也有可能又转换到其他的端口,而无论是哪种情况,只要按照本发明实施例的队列调度方法对各端口中满足条件的队列进行时标的更新,都将使本***中所有的新连接的调度出队满足延时的要求。
另外需要说明的是,虽然本实施例仅针对端口A的调度进行了描述与解释,但是本实施例的多端口队列调度方法适用于多端口中的所有端口中,即在调度器对端口A进行调度的同时,本实施例中的其他端口中当有新连接进入空队列时,该新连接也将被进行虚拟开始时标的更新操作,同样,在调度器对端口A的新连接入队时的虚拟开始时标进行更新的同时,对于调度器当前正被调度的端口,在每次调度结束后,也将得到空队列的虚拟结束时标的更新。进一步地,在调度器的当前调度端口中,当有新连接进入空队列时,调度器同样会将该新连接的虚拟开始时标进行更新。
本发明实施例提供的多端口队列调度方法,通过为每个端口设置一个计时器,当某个端口得到调度机会以及新连接进入一空队列时,根据判断该端口的计时器的大小的结果,对其中的空队列以及新连接进入后的该队列的虚拟时标进行更新,使其跟随当前***虚拟时间,从而将新连接入队的首次时延控制在一设定的时间范围之内,使得ShVC调度算法在应用于多端口的ATM交换机或ATM路由器时,也能很好地控制多端口转换时各队列被调度时的时延和抖动问题,更加保证了多端口应用时ATM网络CBR业务对时延和时延变化的要求。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图8为本发明实施例四提供的多端口队列调度器的结构示意图。如图8所示,本实施例的多端口队列调度器包括:
第一虚拟时标更新单元11,用于当多个端口中的任一端口中有新连接进入一空队列时,若该任一端口的计时器记录的第一时间值大于或等于预设的时延值,将该空队列的虚拟开始时标设置为当前的***虚拟时间;
第二虚拟时标更新单元12,用于当完成当前端口的本次调度时,若当前端口的计时器记录的第二时间值大于或等于预设的时延值,将当前端口中所有空队列的虚拟结束时标设置为当前的***虚拟时间,并将当前端口的计时器清零;
其中,上述第二虚拟时标更新单元12中的当前端口为第一虚拟时标更新单元11中多个端口中的其中一个,第一时间值为任一端口从完成上一次调度到新连接进入一空队列的间隔时间;第二时间值为当前端口从完成上一次调度到当前端口完成本次调度的间隔时间。
其中,本实施例所涉及的第一虚拟时标更新单元、第二虚拟时标更新单元、以及所涉及的具体工作过程,可以参考上述多端口队列调度方法所涉及的实施例揭露的相关内容,在此不再赘述。
本发明实施例提供的多端口队列调度器,通过为每个端口设置一个计时器,当某个端口得到调度机会以及新连接进入一空队列时,根据判断该端口的计时器的大小的结果,对其中的空队列以及新连接进入后的该队列的虚拟时标进行更新,使其跟随当前***虚拟时间,从而将新连接入队的首次时延控制在一设定的时间范围之内,使得ShVC调度算法在应用于多端口的ATM交换机或ATM路由器时,也能很好地控制多端口转换时各队列被调度时的时延和抖动问题,更加保证了多端口应用时ATM网络CBR业务对时延和时延变化的要求。
图9为本发明实施例五提供的多端口队列调度器的结构示意图。如图9所示,本实施例的多端口队列调度器包括:
第一虚拟时标更新单元11,用于当多个端口中的任一端口中有新连接进入一空队列时,若该任一端口的计时器记录的第一时间值大于或等于预设的时延值,将该空队列的虚拟开始时标设置为当前的***虚拟时间;
第二虚拟时标更新单元12,用于当完成当前端口的本次调度时,若当前端口的计时器记录的第二时间值大于或等于预设的时延值,将当前端口中所有空队列的虚拟结束时标设置为当前的***虚拟时间,并将当前端口的计时器清零;
其中,上述第二虚拟时标更新单元12中的当前端口为第一虚拟时标更新单元11中多个端口中的其中一个,第一时间值为任一端口从完成上一次调度到新连接进入一空队列的间隔时间;第二时间值为当前端口从完成上一次调度到当前端口完成本次调度的间隔时间。
具体地,第一虚拟时标更新单元11和第二虚拟时标更新单元12中所指的预设的时延值都是指***为每个端口统一设置的,新连接首次延时的最大值,而且该预设的时延值TMP应满足Tport≤TMP≤potential/2的条件,其中,Tport代表调度器轮询所有端口一次所需的最少时间,potential代表一个***调度周期,为所述所有端口中带宽最小的端口的一个分组调度周期。
进一步地,在上述实施例四的基础上,本实施例的多端口队列调度器还包括:
虚拟时标计算单元13,与第一虚拟时标更新单元11连接,用于若任一端口的计时器记录的第一时间值小于预设的时延值,根据公式 计算该新连接的虚拟开始时标,并根据公式 计算该新连接的虚拟结束时标;
其中,V(ai k)为新连接i进入一空队列时的***虚拟时间,Fi k-1为新连接i的上一个分组的虚拟结束时标,Li k为新连接i的第k个分组的分组长度,ri表示新连接i的预约带宽。
计时器清零单元14,与第二虚拟时标更新单元12连接,用于若当前端口的计时器记录的第二时间值小于预设的时延值,将当前端口的计时器清零。
队列调度单元15,与第二虚拟时标更新单元12、虚拟时标计算单元13和计时器清零单元14连接,用于在将当前端口中所有空队列的虚拟结束时标设置为当前***虚拟时间,并将当前端口的计时器清零之后,按照最小合法虚拟结束时间优先原则,即SEFF分组选择原则,选择当前端口中虚拟结束时标最小的队列进行调度。
其中,本实施例所涉及的所有单元、以及其所涉及的具体工作过程,可以参考上述多端口队列调度方法所涉及的实施例揭露的相关内容,在此不再赘述。
本发明实施例提供的多端口队列调度器,通过为每个端口设置一个计时器,当某个端口得到调度机会以及新连接进入一空队列时,根据判断该端口的计时器的大小的结果,对其中的空队列以及新连接进入后的该队列的虚拟时标进行更新,使其跟随当前***虚拟时间,从而将新连接入队的首次时延控制在一设定的时间范围之内,使得ShVC调度算法在应用于多端口的ATM交换机或ATM路由器时,也能很好地控制多端口转换时各队列被调度时的时延和抖动问题,变化的要求。
图10为本发明实施例六提供的数据通信设备的结构示意图。如图10所示,本实施例的数据通信设备包括:用于进行数据通信的多个通信端口1,以及与通信端口1相连接的多端口队列调度器2,用于共同对多个通信端口1进行队列调度。
具体地,本实施例中的数据通信设备具体可以为一ATM交换机或者一ATM路由器,而其中的多端口队列调度器的组成结构以及其所涉及的具体工作过程,可以参考上述多端口队列调度方法以及多端口队列调度器所涉及的实施例揭露的相关内容,在此不再赘述。
本发明实施例提供的数据通信设备,通过为每个端口设置一个计时器,当某个端口得到调度机会以及新连接进入一空队列时,根据判断该端口的计时器的大小的结果,对其中的空队列以及新连接进入后的该队列的虚拟时标进行更新,使其跟随当前***虚拟时间,从而将新连接入队的首次时延控制在一设定的时间范围之内,使得ShVC调度算法在应用于多端口的ATM交换机或ATM路由器时,也能很好地控制多端口转换时各队列被调度时的时延和抖动问题,更加保证了多端口应用时ATM网络CBR业务对时延和时延变化的要求。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (11)
1、一种多端口队列调度方法,其特征在于,包括:
当多个端口中的任一端口中有新连接进入一空队列时,若所述任一端口的计时器记录的第一时间值大于或等于预设的时延值,将所述空队列的虚拟开始时标设置为当前***虚拟时间;
或者,当完成当前端口的本次调度时,若所述当前端口的计时器记录的第二时间值大于或等于所述预设的时延值,将所述当前端口中所有空队列的虚拟结束时标设置为当前***虚拟时间,并将所述当前端口的计时器清零;
所述当前端口为所述多个端口中的一个端口,所述第一时间值为所述任一端口从完成上一次调度到所述新连接进入所述空队列的间隔时间,所述第二时间值为所述当前端口从完成上一次调度到所述当前端口完成所述本次调度的间隔时间。
2、根据权利要求1所述的多端口队列调度方法,其特征在于,所述预设的时延值TMP满足Tport≤TMP≤potential/2的条件,其中,Tport代表轮询所有端口一次所需的最少时间,potential代表一个***调度周期,所述***调度周期为所述所有端口中带宽最小的端口的一个分组调度周期。
3、根据权利要求1或2所述的多端口队列调度方法,其特征在于,还包括:
若所述任一端口的计时器记录的第一时间值小于预设的时延值,根据公式 计算所述新连接的虚拟开始时标,并根据公式 计算所述新连接的虚拟结束时标;
其中,V(ai k)为所述新连接i进入所述空队列时的***虚拟时间,Fi k-1为所述新连接i上一个分组的虚拟结束时标,Li k为所述新连接i的第k个分组的分组长度,ri表示所述新连接i的预约带宽。
4、根据权利要求1所述的多端口队列调度方法,其特征在于,还包括:
若所述当前端口的计时器记录的第二时间值小于所述预设的时延值,将所述当前端口的计时器清零。
5、根据权利要求1所述的多端口队列调度方法,其特征在于,所述将所述当前端口中所有空队列的虚拟结束时标设置为当前***虚拟时间,并将所述当前端口的计时器清零之后,还包括:
按照最小合法虚拟结束时间优先原则,选择所述当前端口中虚拟结束时标最小的队列进行调度。
6、一种多端口队列调度器,其特征在于,包括:
第一虚拟时标更新单元,用于当多个端口中的任一端口中有新连接进入一空队列时,若所述任一端口的计时器记录的第一时间值大于或等于预设的时延值,将所述空队列的虚拟开始时标设置为当前***虚拟时间;
第二虚拟时标更新单元,用于当完成当前端口的本次调度时,若所述当前端口的计时器记录的第二时间值大于或等于所述预设的时延值,将所述当前端口中所有空队列的虚拟结束时标设置为当前***虚拟时间,并将所述当前端口的计时器清零;
所述当前端口为所述多个端口中的一个端口,所述第一时间值为所述任一端口从完成上一次调度到所述新连接进入所述空队列的间隔时间,所述第二时间值为所述当前端口从完成上一次调度到所述当前端口完成所述本次调度的间隔时间。
7、根据权利要求6所述的多端口队列调度器,其特征在于,所述预设的时延值TMP满足Tport≤TMP≤potential/2的条件,其中,Tport代表轮询所有端口一次所需的最少时间,potential代表一个***调度周期,所述***调度周期为所述所有端口中带宽最小的端口的一个分组调度周期。
8、根据权利要求6或7所述的多端口队列调度器,其特征在于,还包括:
虚拟时标计算单元,用于若所述任一端口的计时器记录的第一时间值小于预设的时延值,根据公式 计算所述新连接的虚拟开始时标,并根据公式 计算所述新连接的虚拟结束时标;
其中,V(ai k)为所述新连接i进入所述空队列时的***虚拟时间,Fi k-1为所述新连接i上一个分组的虚拟结束时标,Li k为所述新连接i的第k个分组的分组长度,ri表示所述新连接i的预约带宽。
9、根据权利要求6所述的多端口队列调度器,其特征在于,还包括:
计时器清零单元,用于若所述当前端口的计时器记录的第二时间值小于所述预设的时延值,将所述当前端口的计时器清零。
10、根据权利要求6所述的多端口队列调度器,其特征在于,还包括:
队列调度单元,用于在将所述当前端口中所有空队列的虚拟结束时标设置为当前***虚拟时间,并将所述当前端口的计时器清零之后,按照最小合法虚拟结束时间优先原则,选择所述当前端口中虚拟结束时标最小的队列进行调度。
11、一种数据通信设备,包括多个通信端口,其特征在于,还包括如权利要求6~10任一所述的多端口队列调度器,用于对所述多个通信端口进行队列调度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100920578A CN101651614B (zh) | 2009-09-14 | 2009-09-14 | 多端口队列调度方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100920578A CN101651614B (zh) | 2009-09-14 | 2009-09-14 | 多端口队列调度方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101651614A true CN101651614A (zh) | 2010-02-17 |
CN101651614B CN101651614B (zh) | 2011-08-10 |
Family
ID=41673734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100920578A Expired - Fee Related CN101651614B (zh) | 2009-09-14 | 2009-09-14 | 多端口队列调度方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101651614B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012071959A1 (zh) * | 2010-12-02 | 2012-06-07 | 中兴通讯股份有限公司 | 队列资源调配方法及装置 |
CN108628671A (zh) * | 2018-04-28 | 2018-10-09 | 北京顶象技术有限公司 | 任务调度方法及装置 |
CN112585914A (zh) * | 2020-11-27 | 2021-03-30 | 新华三技术有限公司 | 报文转发方法、装置以及电子设备 |
CN113300973A (zh) * | 2020-02-21 | 2021-08-24 | 大唐移动通信设备有限公司 | 一种多队列发送的调度方法、装置、电子设备和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7295564B2 (en) * | 2003-01-06 | 2007-11-13 | Intel Corporation | Virtual output queue (VoQ) management method and apparatus |
-
2009
- 2009-09-14 CN CN2009100920578A patent/CN101651614B/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012071959A1 (zh) * | 2010-12-02 | 2012-06-07 | 中兴通讯股份有限公司 | 队列资源调配方法及装置 |
CN108628671A (zh) * | 2018-04-28 | 2018-10-09 | 北京顶象技术有限公司 | 任务调度方法及装置 |
CN113300973A (zh) * | 2020-02-21 | 2021-08-24 | 大唐移动通信设备有限公司 | 一种多队列发送的调度方法、装置、电子设备和存储介质 |
CN113300973B (zh) * | 2020-02-21 | 2022-04-12 | 大唐移动通信设备有限公司 | 一种多队列发送的调度方法、装置、电子设备和存储介质 |
CN112585914A (zh) * | 2020-11-27 | 2021-03-30 | 新华三技术有限公司 | 报文转发方法、装置以及电子设备 |
CN112585914B (zh) * | 2020-11-27 | 2024-05-28 | 新华三技术有限公司 | 报文转发方法、装置以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101651614B (zh) | 2011-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100304088B1 (ko) | 복수의데이터스트림의셀전송을스케쥴링하는방법과장치및,최대노력스케쥴러 | |
KR100287942B1 (ko) | 최근 기한 우선 스케쥴러 및 최근 기한을 갖는셀을 우선적으로전송하는 방법 | |
JP3715098B2 (ja) | 通信ネットワークにおけるパケットの配送装置とその方法 | |
CN102014052B (zh) | 一种虚拟动态优先级分组调度方法 | |
JP2001103120A (ja) | 通信ネットワークにおいてトラフィックをスケジュールする方法及び装置 | |
JPH11234309A (ja) | 非同期転送モード・セル送信スケジューリング | |
CN101674486A (zh) | 一种流媒体音视频同步方法及*** | |
CN113138860A (zh) | 消息队列的管理方法及装置 | |
CN101651614A (zh) | 多端口队列调度方法及设备 | |
CN113645147A (zh) | 一种流量整形器的令牌更新***及方法 | |
CN102546423B (zh) | 队列调度方法、装置及网络设备 | |
CN114257554A (zh) | 一种提高tsn网络be流带宽利用率的调度方法 | |
EP1488600A1 (en) | Scheduling using quantum and deficit values | |
JP2839024B2 (ja) | バッファ制御装置 | |
CN113014465A (zh) | 一种基于服务质量特性的总线传输接口***及设计方法 | |
CN101238452B (zh) | 用于发送数据的***和方法 | |
CN106921586A (zh) | 一种数据流整形方法、数据调度方法以及装置 | |
JPH0818576A (ja) | 通信システム | |
US7599381B2 (en) | Scheduling eligible entries using an approximated finish delay identified for an entry based on an associated speed group | |
CN101753407A (zh) | 一种obs组帧方法和装置 | |
CN100442760C (zh) | 一种分组公平调度方法及设备 | |
CN114338434A (zh) | 激励报文发送方法、装置、电子设备及存储介质 | |
CN110768902A (zh) | 一种提升软件定义物联网中数据服务质量的方法 | |
CN100376100C (zh) | 控制业务接入时间间隔降低业务到达突发度的方法 | |
KR100333475B1 (ko) | 고속 패킷 노드를 위한 속도 비례 자가 클럭 공정 패킷스케쥴링 장치 및 그 스케쥴링 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110810 Termination date: 20180914 |
|
CF01 | Termination of patent right due to non-payment of annual fee |