一种低时延抖动小突发的亏空轮询方法

文档序号:7621800阅读:163来源:国知局
专利名称:一种低时延抖动小突发的亏空轮询方法
技术领域
本发明涉及用于数据交换网络的基于轮询的调度方法,尤其是涉及一种低时延抖动小突发的亏空轮询方法。
背景技术
亏空轮询(Deficit Round Robin,DRR)方法是在数据交换网上经常采用的一种基于轮询的调度方法,它对于变长数据包的支持比较好,复杂度低。该方法包括如下的具体实现步骤入队操作将有数据包等待发送的发送队列的序号放入一个链表中;出队操作在每次访问该链表头上的序号所对应的发送队列时,先将该发送队列的服务令牌数加上一个预约带宽的预约令牌数(每次轮询允许发送的字节数),每次发送数据包之前,判断该发送队列剩余的服务令牌数是否大于队列头上数据包长度,若是,发送该数据包,并将该发送队列的服务令牌数减去发送的数据包长度,然后取出该队列的下一个数据包,重复上述同样的操作直到该发送队列的服务令牌数小于将要发送的数据包长度,此时将这个发送队列序号加入至链表尾部,接着访问下一个发送队列,若某发送队列为空时,则把这个发送队列的序号移出链表。
如上所述的DRR方法,显然可知DRR方法的实现,需要在发送数据包之前知道数据包的长度从而决定是否发送,如此操作在实现上会增加系统资源的开销;同时采用DRR方法,持续对满足条件的链表头上序号所对应发送队列的进行服务,直至用尽它的服务令牌数,这样做会导致数据包的突发性大,同时还会带来很大的数据延时抖动。

发明内容
本发明需要解决的技术问题是提供一种低时延抖动小突发的亏空轮询方法,采用本发明能够减小数据突发和延时抖动,并且在实现上能够减少系统资源开销。
为了解决上述技术问题,本发明提供了一种低时延抖动小突发的亏空轮询方法,该方法通过数据交换系统执行对各发送队列中数据包的发送,包括如下步骤(a1)系统初始化,分别为每个发送队列赋予最小令牌数,对需要发送的数据包进行入队操作,设置可存储若干发送队列序号的当前服务链表和下一次服务链表;(a2)判断当前服务链表中位于链表头的序号所对应的发送队列的令牌数是否大于或等于最小令牌数,若是,发送该发送队列的头数据包,并且使该发送队列的令牌数减去头数据包的长度,否则执行步骤(a4);(a3)发送头数据包后,判断该发送队列是否为空,若是,将该发送队列所对应的序号从当前服务链表中去掉,执行步骤(a5);否则进一步判断相减后发送队列的令牌数是否大于或等于最小令牌数,若是,将该发送队列的序号加入至当前服务链表的尾部,执行步骤(a5),否则执行步骤(a4);(a4)将该发送队列的序号加入至下一次服务链表的尾部,并且使该发送队列的令牌数增加相应的预约令牌数;(a5)重复步骤(a2)至(a5),直至当前服务链表为空;(a6)将空的当前服务链表设置为下一次服务链表,同时将下一次服务链表设置为当前服务链表,重复步骤(a2)至(a6),直至当前服务链表和下一次服务链表均为空。
进一步地,本发明还具有如下特点,步骤(a1)中的入队操作包括如下步骤(b1)将需要发送的数据包放入各自数据包所描述的发送队列;(b2)分别将具有需要发送数据包的发送队列的序号加入至当前服务链表,并且对该发送队列分别赋予相应的预约令牌数,使该发送队列的令牌数为最小令牌数与预约令牌数之和。
进一步地,本发明还具有如下特点,还包括如下步骤系统初始化后,在对各发送队列进行操作期间,若有新的数据包需要发送,则将该数据包放入其数据包所描述的发送队列,并且判断该发送队列是否由空到非空,若是,将该发送队列的序号加入至下一次服务链表,同时使该发送队列的令牌数增加相应的预约令牌数。
进一步地,本发明还具有如下特点所述预约令牌数根据发送队列中数据包的业务类型来设定,若需要发送的数据包较大时,可设置较大的预约令牌数。
进一步地,本发明还具有如下特点所述最小令牌数可根据需要发送的数据包的长度特性来设定,其数值小于预约令牌数。
进一步地,本发明还具有如下特点所述发送队列中数据包的业务类型可分为4种,相应的预约令牌数分别取值为6400字节、4800字节、3200字节和1600字节,最小令牌数取值为100字节。
与现有技术相比,本发明具有以下优点A、由于本方法中系统对当前发送队列进行操作时,直接比较当前发送队列的令牌数与最小令牌数,如此操作使得调度之前不需要访问位于外部存储器的数据包的描述符中读出数据包的长度进行令牌数计算,从而减小网络处理器的消耗,大大提高调度的效率;B、由于本方法中设置有当前服务链表和下一次服务链表,分别存放当前服务的发送队列序号和下一次服务的发送队列序号,两链表可进行相互调换进行操作,当系统对当前发送队列进行操作时,每次操作只发送其头数据包,并且经过相应的比较判断,将该发送队列放入当前服务链表或下一次服务链表的尾部,然后对下一个发送队列进行相同处理,如此操作减短了每次服务发送队列的时间片,使得发送队列的服务更加平滑,保证了队列服务的公平性,而且大大减小了业务流的突发性和数据包的延时抖动,改善了数据流的流量特性。


图1是根据本发明的低时延抖动小突发的亏空轮询方法的流程示意图;图2是现有亏空轮询方法的服务公平性的示意图;图3是根据本发明的低时延抖动小突发的亏空轮询方法的服务公平性的示意图;
图4是现有亏空轮询方法与本发明之间,各自数据包时延抖动的对比图。
具体实施例方式
为了深入了解本发明,下面结合附图及具体实施例对本发明进行详细说明。
在本实施例中,根据本发明的亏空轮询方法应用于3G通信系统中基站控制器(BSC)的交换单元,该交换单元采用美国英特尔公司(Intel.Inc.)的网络处理器。
如图1所示,根据本发明的一种低时延抖动小突发的亏空轮询方法,包括如下步骤步骤101,系统初始化,分别为每个发送队列赋予一个最小令牌数token_min,设置且初始化两个服务链表,这两个服务链表分别为存储当前需要服务的发送队列序号的当前服务链表(LinkListNow)和存储下一次需要服务的发送队列序号的下一次服务链表(LinkListNext),并且对需要发送的数据包进行入队操作,入队操作包括将需要发送的数据包放入各自数据包所描述的发送队列,以及分别将具有需要发送数据包的发送队列的序号加入至LinkListNow,同时对该发送队列分别赋予相应的预约令牌数token_preengage[i],使该发送队列的令牌数为最小令牌数与预约令牌数之和,即token_current[i]=token_min+token_preengage[i],i表示该发送队列的序号;步骤102,系统判断LinkListNow中位于链表头的序号i所对应的发送队列Q[i]的令牌数token_current[i]是否大于或等于最小令牌数token_min,若token_current[i]≥token_min,发送该发送队列Q[i]的头数据包,并且使发送队列Q[i]的当前令牌数减去头数据包的长度,即token_current[i]=token_current[i]-Ltransmit(头数据包的长度),否则执行步骤104;步骤103,发送头数据包后,系统判断发送队列Q[i]是否为空,若为空,将该发送队列所对应的序号i从LinkListNow中去掉,执行步骤105;否则进一步判断发送队列Q[i]的令牌数token_current[i]是否大于或等于最小令牌数token_min,若token_current[i]≥token_min,将该发送队列Q[i]的序号i加入至LinkListNow的尾部,执行步骤105,否则执行步骤104;步骤104,将该发送队列的序号i加入至LinkListNext的尾部,并且使发送队列Q[i]的令牌数增加相应的预约令牌数,即token_current[i]=token_current[i]+token_preengage[i];步骤105,重复步骤102至步骤105,直至LinkListNow为空;步骤106,系统对当前服务链表和下一次服务链表进行调换,即把空的LinkListNow设置为LinkListNext,同时将LinkListNext设置为LinkListNow,重复步骤102至步骤106,直至LinkListNow和LinkListNext均为空,从而完成所有需要发送的数据包的发送。
系统初始化后,在对各发送队列进行操作期间,若有新的数据包需要发送,将该数据包放入其数据包所描述的发送队列,并且判断该发送队列是否由空到非空,若是,将该发送队列的序号i加入至下一次服务链表,同时使该发送队列的令牌数增加相应的预约令牌数,即token_current[i]=token_current[i]+token_preengage[i]。
本方法中最小令牌数token_min可根据需要发送的数据包的长度特性来设定,这样可以避免每次进行轮询时,窄带宽的发送队列都有一次发送的机会,从而保证服务发送队列的公平性;所述预约令牌数可根据发送队列中数据包的业务类型来设定,若需要发送的数据包较大时,可设置较大的预约令牌数。
下面将结合具体的实际情况,对本方法与现有亏空轮询方法进行比较,本实施例中交换单元对数据包的业务类型进行了分类,共分为4种业务类型,与每一种业务类型相对应的发送队列的预约令牌数分别为6400字节、4800字节、3200字节和1600字节,最小令牌数为100字节;每一类业务数据包的长度成指数分布,平均数据包长为512字节,数据包速率为0.2Mp/s,链路速率为1Gbps。
此时,采用现有亏空轮询方法的服务公平性如图2所示,图中每一条横实线表示对每一类业务服务的时间片长短,按照现有亏空轮询方法,当系统服务某个发送队列时,需要耗尽该发送队列的所有令牌数才服务下一个发送队列,如此操作会造成服务时间太集中,数据包的突发性很大。然而,根据本发明的亏空轮询方法的服务公平性如图3所示,图中每一条横实线表示对每一类业务服务的时间片长短,从图中显然可知,采用本方法后,系统对各个发送队列的服务更加平滑,并且大大减小业务流的突发性。
图4是现有亏空轮询方法与本发明之间,各自数据包时延抖动的对比图,实线是采用现有亏空轮询方法所产生的数据包延时统计特性,虚线是采用根据本发明的亏空轮询方法所产生的数据包延时统计特性,从图中显然可知,本方法对于数据包的延时抖动有了很大的改善。
因此,本发明改进了现有亏空轮询方法的轮询机制和比较发送队列数据包的先后顺序,不仅减少了系统资源的消耗,而且在业务处理的公平性以及减小数据包时延抖动等方面都得到了很大的提高。此外,改进后的方法实现简单,复杂度低。
权利要求
1.一种低时延抖动小突发的亏空轮询方法,该方法通过数据交换系统执行对各发送队列中数据包的发送,包括如下步骤(a1)系统初始化,分别为每个发送队列赋予最小令牌数,对需要发送的数据包进行入队操作,设置可存储若干发送队列序号的当前服务链表和下一次服务链表;(a2)判断当前服务链表中位于链表头的序号所对应的发送队列的令牌数是否大于或等于最小令牌数,若是,发送该发送队列的头数据包,并且使该发送队列的令牌数减去头数据包的长度,否则执行步骤(a4);(a3)发送头数据包后,判断该发送队列是否为空,若是,将该发送队列所对应的序号从当前服务链表中去掉,执行步骤(a5);否则进一步判断相减后发送队列的令牌数是否大于或等于最小令牌数,若是,将该发送队列的序号加入至当前服务链表的尾部,执行步骤(a5),否则执行步骤(a4);(a4)将该发送队列的序号加入至下一次服务链表的尾部,并且使该发送队列的令牌数增加相应的预约令牌数;(a5)重复步骤(a2)至(a5),直至当前服务链表为空;(a6)将空的当前服务链表设置为下一次服务链表,同时将下一次服务链表设置为当前服务链表,重复步骤(a2)至(a6),直至当前服务链表和下一次服务链表均为空。
2.根据权利要求1所述的一种低时延抖动小突发的亏空轮询方法,其特征在于,步骤(a1)中的入队操作包括如下步骤(b1)将需要发送的数据包放入各自数据包所描述的发送队列;(b2)分别将具有需要发送数据包的发送队列的序号加入至当前服务链表,并且对该发送队列分别赋予相应的预约令牌数,使该发送队列的令牌数为最小令牌数与预约令牌数之和。
3.根据权利要求2所述的一种低时延抖动小突发的亏空轮询方法,其特征在于,该方法还包括如下步骤系统初始化后,在对各发送队列进行操作期间,若有新的数据包需要发送,则将该数据包放入其数据包所描述的发送队列,并且判断该发送队列是否由空到非空,若是,将该发送队列的序号加入至下一次服务链表,同时使该发送队列的令牌数增加相应的预约令牌数。
4.根据权利要求3所述的一种低时延抖动小突发的亏空轮询方法,其特征在于所述预约令牌数根据发送队列中数据包的业务类型来设定,若需要发送的数据包较大时,可设置较大的预约令牌数。
5.根据权利要求4所述的一种低时延抖动小突发的亏空轮询方法,其特征在于所述最小令牌数可根据需要发送的数据包的长度特性来设定,其数值小于预约令牌数。
6.根据权利要求5所述的一种低时延抖动小突发的亏空轮询方法,其特征在于所述发送队列中数据包的业务类型可分为4种,相应的预约令牌数分别取值为6400字节、4800字节、3200字节和1600字节,最小令牌数取值为100字节。
全文摘要
本发明公开了一种低时延抖动小突发的亏空轮询方法,包括如下步骤系统初始化,为每个发送队列赋予最小令牌数,设置当前服务链表和下一次服务链表;对需要发送的数据包进行入队操作;判断当前服务链表头的序号所对应的发送队列的令牌数是否不小于最小令牌数,若是,发送该队列的头数据包,并且将其令牌数减去头数据包的长度;判断相减后令牌数是否不小于最小令牌数,若是,将其序号加入当前服务链表尾部,否则将其序号加入下一次服务链表尾部;重复上述步骤,直至当前服务链表为空;调换当前服务链表与下一次服务链表,重复上述步骤直至两个服务链表均为空。采用本发明能够减小数据突发和延时抖动,并且在实现上能够减少系统资源开销。
文档编号H04L12/407GK1913483SQ200510089900
公开日2007年2月14日 申请日期2005年8月10日 优先权日2005年8月10日
发明者吴代立, 刘欣 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1