一种队列调度方法和装置制造方法
【专利摘要】本发明提供一种队列调度方法和装置,用于下行链路,其中,所述方法包括:将接收到的数据包按队列进行缓存;根据缓存的第一队列的累积参数,确定所述第一队列是否达到累积状态;对所述第一队列进行预设的第一级数的整形计算;确定所述第一队列的激活状态;根据所述第一队列整形计算的结果和所述激活状态,计算所述第一队列的有效状态;当所述第一队列达到累积状态时,根据所述第一队列的有效状态,对所述第一队列进行预设的第二级数的层次化调度并输出。本发明能够在层次化调度基础上实现高速带宽。
【专利说明】一种队列调度方法和装置
【技术领域】
[0001]本发明涉及通信领域,尤其涉及一种队列调度方法和装置。
【背景技术】
[0002]在当前高带宽接入时代,高带宽、优秀的QOS保证、多业务承载等优势越来越成为接入网的主流技术。2.5Gbps的下行链路速率是现在接入网主要方式,但随着下一代接入网技术的不断发展,提供10GbpS、20GbpS甚至更高的下行链路速率将逐渐成为主流。
[0003]目前,丰富的层次化QOS是接入网技术的主要优势,复杂的层次化设计使得队列调度周期都较长,调度周期越长带宽就越小,尤其是限制了小字节数据包带宽。
【发明内容】
[0004]本发明的目的是提供一种队列调度方法和装置,在层次化调度基础上实现高速带宽。
[0005]为了实现上述目的,本发明实施例提供了一种队列调度方法,用于下行链路,所述方法包括:
[0006]将接收到的数据包按队列进行缓存;
[0007]根据缓存的第一队列的累积参数,确定所述第一队列是否达到累积状态;
[0008]对所述第一队列进行预设的第一级数的整形计算;
[0009]确定所述第一队列的激活状态;
[0010]根据所述第一队列整形计算的结果和所述激活状态,计算所述第一队列的有效状态;
[0011]当所述第一队列达到累积状态时,根据所述第一队列的有效状态,对所述第一队列进行预设的第二级数的层次化调度并输出。
[0012]上述的队列调度方法,其中,所述累积参数包括第一队列的队列深度值、预设的第一队列的队列深度阈值和预设的队列轮询周期;
[0013]所述第一级数不超过所述第二级数;
[0014]所述有效状态为队列不可用状态、队列保证带宽状态、队列超出带宽状态或队列既有保证带宽又有超出带宽状态。
[0015]上述的队列调度方法,其中,所述根据缓存的第一队列的累积参数,确定所述第一队列是否达到累积状态具体为:
[0016]当第一队列的队列深度值超过所述队列深度阈值时,确定所述第一队列达到累积状态;或
[0017]当第一队列达到预设的队列轮询周期时,确定所述第一队列达到累积状态。
[0018]上述的队列调度方法,其中,所述确定所述第一队列的激活状态具体为所述第一队列非空时,确定所述第一队列处于激活状态。
[0019]上述的队列调度方法,其中,所述方法还包括:
[0020]对所述第一队列进行预设的第二级数的层次化调度并输出后,更新第一队列的累积状态和有效状态。
[0021]为了实现上述目的,本发明实施例还提供了一种队列调度装置,用于下行链路,所述装置包括:
[0022]缓存模块,用于将接收到的数据包按队列进行缓存;
[0023]累积状态确定模块,用于根据缓存的第一队列的累积参数,确定所述第一队列是否达到累积状态;
[0024]整形计算模块,用于对所述第一队列进行预设的第一级数的整形计算;
[0025]激活状态确定模块,用于确定所述第一队列的激活状态;
[0026]有效状态计算模块,用于根据所述第一队列整形计算的结果和所述激活状态,计算所述第一队列的有效状态;
[0027]处理模块,用于当所述第一队列达到累积状态时,根据所述第一队列的有效状态,对所述第一队列进行预设的第二级数的层次化调度并输出。
[0028]上述的队列调度装置,其中,所述累积参数包括第一队列的队列深度值、预设的第一队列的队列深度阈值和预设的队列轮询周期;
[0029]所述第一级数不超过所述第二级数;
[0030]所述有效状态为队列不可用状态、队列保证带宽状态、队列超出带宽状态或队列既有保证带宽又有超出带宽状态。
[0031]上述的队列调度装置,其中,所述累积状态确定模块具体为:
[0032]当第一队列的队列深度值超过所述队列深度阈值时,确定所述第一队列达到累积状态;或
[0033]当第一队列达到预设的队列轮询周期时,确定所述第一队列达到累积状态。
[0034]上述的队列调度装置,其中,所述激活状态确定模块具体为所述第一队列非空时,确定所述第一队列处于激活状态。
[0035]上述的队列调度装置,其中,所述装置还包括:
[0036]更新模块,用于对所述第一队列进行预设的第二级数的层次化调度并输出后,更新第一队列的累积状态和有效状态。
[0037]本发明实施例具有以下有益效果:
[0038]本发明实施例,在层次化调度基础上实现了高速带宽,能够满足未来高速甚至超高速带宽的要求;
[0039]本发明实施例,通过配置队列深度阈值,可以控制队列最大带宽;
[0040]本发明实施例,能够为不同队列配置不同队列深度阈值,实现了对队列调度的灵活控制;
[0041]本发明实施例,具有良好的扩展性,可以扩展到多队列多用户多端口中。
【专利附图】
【附图说明】
[0042]图1为本发明实施例提供的队列调度方法的流程示意图;
[0043]图2为本发明实施例提供的队列阈值配置存储结构示意图;
[0044]图3a_3c为本发明实施例提供的队列深度状态、队列等待状态意见队列激活状态的存储结构不意图;
[0045]图4为本发明实施例提供的队列调度装置的结构示意图;
[0046]图5为本发明实施例提供的队列调度装置的功能实体的结构示意图。
【具体实施方式】
[0047]为使本发明实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
[0048]本发明实施例提供了一种队列调度方法,用于下行链路,所述方法如图1所示,包括:
[0049]步骤11,将接收到的数据包按队列进行缓存;
[0050]步骤12,根据缓存的第一队列的累积参数,确定所述第一队列是否达到累积状态;
[0051]步骤13,对所述第一队列进行预设的第一级数的整形计算;
[0052]步骤14,确定所述第一队列的激活状态;
[0053]步骤15,根据所述第一队列整形计算的结果和所述激活状态,计算所述第一队列的有效状态;
[0054]步骤16,当所述第一队列达到累积状态时,根据所述第一队列的有效状态,对所述第一队列进行预设的第二级数的层次化调度并输出。
[0055]在本发明实施例提供的方法中,将接收到的数据包按照队列分配进行缓存,当第一队列达到累积状态时,根据第一队列的有效状态,对第一队列进行层次化调度,并且第一队列能够快速连续出包,从而大大提高了队列的带宽,即本发明实施例能够在层次化调度基础上实现高速带宽。
[0056]从上述过程可以看出,队列能够进行层次化调度并输出取决于该队列的累积状态和有效状态,下面分别介绍一下累积状态的确定和有效状态的计算。
[0057]<队列累积状态>
[0058]本发明实施例中,队列的累积状态取决于队列的累积参数,所述累积参数包括第一队列的队列深度值、预设的第一队列的队列深度阈值和预设的队列轮询周期。
[0059]其中,某一队列的队列深度具体为:入队m个包,队列深度就加m ;调度η个包,队列深度就减η。
[0060]队列深度阈值是根据需要达到的带宽预先设置好的,为自然数。如果不按照队列深度阈值进行调度,队列带宽最大仅能达到系统调度数据包时的带宽,如果按照队列深度阈值进行调度,就能大量提高队列的带宽,满足未来高速甚至超高速带宽的要求,队列深度阈值决定了队列的最大带宽。举例说明如下。
[0061]〈例子1>
[0062]系统调度一个包的带宽时2.5Gbps,如果不按照本发明实施例中所述的过程,先按队列缓存数据包,再根据队列的缓存状态和累积状态对缓存的队列进行层次化调度,并且快速连续出包,那么该队列的带宽最大只能为2.5Gbps ;
[0063]当设置了该队列的队列深度阈值后,假定需要达到的带宽为20Gbps,那么只需要将队列深度阈值设置为8,对该队列进行层次化调度,并且快速连续出包时,该队列的最大带宽可达到8个数据包同时输出,即20Gbps。
[0064]在实际应用中,还可以为不同的队列配置不同的队列深度阈值存储在系统中,如图2所示,来实现了对队列调度的灵活控制。举例说明如下。
[0065]< 例子 2>
[0066]如果系统中有两个队列,第一队列和第二队列,需要其输出带宽分别为IGbps和5Gbps,由于现有的带宽为2.5Gbps,已经能够满足第一队列的需求带宽,因此配置第一队列的队列深度阈值为I即可;对于第二队列,可以配置其队列深度阈值为2。通过上述配置可以满足系统里不同队列带宽需求,实现对队列调度的灵活控制。
[0067]同时,当队列较多时,所述累积参数还可以为每个队列设置队列深度阈值。
[0068]根据第一队列对应的累积参数,确定所述第一队列是否达到累积状态具体过程为:
[0069]当第一队列的队列深度值超过所述队列深度阈值时,确定所述第一队列达到累积状态;或
[0070]当第一队列达到预设的队列轮询周期时,确定所述第一队列达到累积状态。
[0071]当第一队列的队列深度值超过了预设的队列深度阈值时,就确定第一队列达到了累积状态,或者第一队列的轮询周期到期时,也可以确定第一队列达到了累积状态。举例说明如下。
[0072]< 例子 3>
[0073]配置第一队列的深度阈值为8,当第一队列的深度值达到9时,就确定该队列达到了累积状态;
[0074]当然,还可以通过配置队列轮询周期来确定队列的累积状态,配置队列轮询周期为2048个系统时钟,当第一队列入队后,每等待2048个时钟周期后,到达该队列的轮询周期,此时确定第一队列达到累积状态;
[0075]当第一队列进入了累积状态时,还要确定该队列的有效状态,如下。
[0076]〈队列有效状态〉
[0077]队列的有效状态取决于该队列的激活状态和整形计算结果。
[0078]在确定所述第一队列的激活状态时,如果所述第一队列非空,就确定所述第一队列处于激活状态。
[0079]对第一队列进行多级整形计算,这里是进行预设的第一级数的整形计算,优选地算法为令牌桶算法。
[0080]当第一队列非空,以及完成了第一队列的第一级数的整形计算后,就能够计算第一队列的有效状态,所述有效状态为队列不可用状态、队列保证带宽状态、队列超出带宽状态或队列既有保证带宽又有超出带宽状态。
[0081]本发明实施例中,当所述第一队列达到累积状态时,根据所述第一队列的有效状态,对所述第一队列进行预设的第二级数的层次化调度并输出,一般情况下,整形计算的级数不会超过层次化调度的级数,即所述第一级数不超过所述第二级数。
[0082]第一队列的有效状态决定了该队列进入哪级调度器进行调度,具体为:
[0083]有效状态为队列不可用状态时,该队列不能进行调度,需要进行等待;
[0084]有效状态为队列保证带宽状态时,该队列进入能够保证带宽的调度器进行调度;
[0085]有效状态为队列超出带宽状态时,先调度系统中有效状态为保证带宽的队列,系统有多余带宽时才调度该队列;
[0086]有效状态为既有保证带宽又有超出带宽状态时,先进入能够保证带宽的调度器进行调度,如果系统有多余带宽时再调度该队列的超出带宽部分。
[0087]完成层次化调度后,对第一队列进行快速连续输出,此时还要考虑该队列的队列深度阈值和队列深度值。如果队列深度值大于队列深度阈值,就按队列深度阈值从缓存管理空间一次获取多个数据包输出。如果队列深度小于阈值,则按队列深度值输出数据包。举例说明如下。
[0088]< 例子 4>
[0089]第一队列的队列深度阈值为8,当第一队列的深度值为9时,就按照队列深度阈值从缓存管理空间一次获取8个数据包输出;
[0090]当第一队列累积的深度值为7时,就按照队列深度值从缓存管理空间一次获取7个数据包输出。
[0091]在实际应用中,我们可以简化累积状态的判断,用队列的深度状态或等待状态来判断。深度状态代表队列深度值是否超过所述队列深度阈值,用O或I表示,当该队列的深度值大于该队列的队列深度阈值时,深度状态置1,否则置O ;等待状态代表队列是否达到预设的队列轮询周期,用O或I表示,当该队列达到预设的队列轮询周期时,等待状态置1,否则置O。那么累积状态的判断就可以简化为判断队列的深度状态或等待状态,当某一队列的深度状态或等待状态任一状态为I时,就说明该队列达到累积状态,可以将累积状态置1,队列未达到累积状态时,累积状态置O。
[0092]队列的激活状态也可以用O或I表示。某一队列激活时(队列非空),该队列的激活状态为1,否则为O。
[0093]队列的深度状态、等待状态以及激活状态可以用列表的形式存储在系统中,如图3a-3c所示。
[0094]另外,队列的第一级数的整形计算状态同样可以用O或I表示,整形计算采用令牌桶方法,整形令牌桶有令牌时,该队列的整形状态为1,否则为O。
[0095]还可以增加队列可调度状态,当队列处于累积状态,且队列的有效状态不为不可用时,置队列可调度状态为1,否则为0,只对可调度状态为I的队列进行层次化调度并输出。
[0096]在第一队列完成层次化调度并输出后,该队列的深度状态、激活状态、等待状态以及整形状态等可能都会改变,因此,在完成对所述第一队列进行预设的第二级数的层次化调度并输出后的步骤后,所述方法还包括:
[0097]更新第一队列的累积状态和有效状态。
[0098]下面举例说明上述队列调度的过程。
[0099]< 例子 5>
[0100]首先,配置队列深度阈值m,每个队列都可配置,这里设定配置阈值为8,并且设定整形计算的第一级数与层次化调度的第二级数,保证第一级数不超过第二级数;
[0101]初始化队列激活状态,队列深度状态、队列等待状态以及整形状态为O ;
[0102]系统上电后,第一级数的整形计算开始,当整形令牌桶有令牌,更新整形状态为I;
[0103]当第一队列入队后,更新队列激活状态表,将该队列的激活状态置为1,同时进行队列深度计算,每次入队进行队列深度累加,每次出队队列深度减去出队个数,当出队使得队列深度为空,需要将队列激活状态置O ;
[0104]根据队列激活状态、整形状态,确定第一队列的有效状态,队列的有效状态决定该队列进入哪级调度器进行调度;
[0105]当第一队列入队后,获取第一队列的队列深度值和第一队列深度阈值配置,进行比较,如果队列深度值大于等于配置的深度阈值,就认为该队列深度累积足够,将队列深度状态置1,根据本例的配置,当第一队列入队8次后就可以将队列深度状态置I ;
[0106]第一队列入队后,进入队列等待轮询计算,即队列经过一定的周期等待后将其队列等待状态置1,等待周期可以配置。例如配置等待周期T为2048个系统时钟,当第一队列入队后,每等待2048个时钟周期后,将其等待状态置I ;
[0107]获取第一队列的深度状态和等待状态,如果其中一个为1,则将该队列的累积状态置1,如果深度状态和等待状态都是0,则该队列仍需等待累积或者等待轮询周期到;
[0108]确定该队列的累计状态为1,根据计算出的队列有效状态,确定第一队列进入可调度状态,进行第二级数的层次化调度并输出,当层次化调度选择该队列后,用该队列号读取该队列的阈值配置m,如果该队列深度值大于阈值,就按阈值从缓存管理空间一次获取m个数据包输出;如果队列深度值小于阈值,则按队列深度输出;
[0109]调度成功后,将该队列号反馈给整形计算单元减去相应的令牌,当队列调度消耗令牌后,如果令牌桶为空,需要更新整形状态;
[0110]同时将该队列号反馈给队列深度计算,如果队列深度小于阈值,需要更新队列深度状态表,从状态I更新为状态O ;如果队列深度为空,需要更新队列激活状态为O ;同时将队列等待状态清零,等待下次入队;当这些表中一个为0,则队列退出可调度状态。
[0111]本发明实施例能够在层次化调度基础上实现了高速带宽,满足未来高速甚至超高速带宽的要求;并且通过配置队列深度阈值,控制队列最大带宽;可以为不同队列配置不同队列深度阈值,实现对队列调度的灵活控制。
[0112]另外,本发明实施例还具有良好的扩展性,可以扩展到多队列多用户多端口中。
[0113]本发明实施例还提供了一种队列调度装置,用于下行链路,所述装置如图4所示,包括:
[0114]缓存模块,用于将接收到的数据包按队列进行缓存;
[0115]累积状态确定模块,用于根据缓存的第一队列的累积参数,确定所述第一队列是否达到累积状态;
[0116]整形计算模块,用于对所述第一队列进行预设的第一级数的整形计算;
[0117]激活状态确定模块,用于确定所述第一队列的激活状态;
[0118]有效状态计算模块,用于根据所述第一队列整形计算的结果和所述激活状态,计算所述第一队列的有效状态;
[0119]处理模块,用于当所述第一队列达到累积状态时,根据所述第一队列的有效状态,对所述第一队列进行预设的第二级数的层次化调度并输出。
[0120]上述的队列调度装置,其中,所述累积参数包括第一队列的队列深度值、预设的第一队列的队列深度阈值和预设的队列轮询周期;
[0121 ] 所述第一级数不超过所述第二级数;
[0122]所述有效状态为队列不可用状态、队列保证带宽状态、队列超出带宽状态或队列既有保证带宽又有超出带宽状态。
[0123]上述的队列调度装置,其中,所述累积状态确定模块具体为:
[0124]当第一队列的队列深度值超过所述队列深度阈值时,确定所述第一队列达到累积状态;或
[0125]当第一队列达到预设的队列轮询周期时,确定所述第一队列达到累积状态。
[0126]上述的队列调度装置,其中,所述激活状态确定模块具体为所述第一队列非空时,确定所述第一队列处于激活状态。
[0127]上述的队列调度装置,其中,所述装置还包括:
[0128]更新模块,用于对所述第一队列进行预设的第二级数的层次化调度并输出后,更新第一队列的累积状态和有效状态。
[0129]本发明实施例基于上述过程,提供了一种队列调度的功能实体,如图5所示,包括:
[0130]数据包缓存模块,用于将接收到的数据包按队列缓存;
[0131]队列深度阈值配置模块,用于配置队列单次可以调度的阈值大小;
[0132]队列深度计算模块,用于计算队列深度;
[0133]队列深度状态更新模块,用于通过比较队列深度和队列阈值,确定队列深度状态;
[0134]控制模块,用于将所有队列按设置周期轮询,轮询到的队列更新其等待状态;
[0135]判断模块,用于根据队列深度状态和队等待状态判断某队列的累积状态;
[0136]整形计算模块,用于使用整形算法计算各级整形状态;
[0137]队列激活状态确定模块,用于确定存储队列的激活状态;
[0138]队列有效状态计算模块,用于通过整形计算的结果和激活状态,计算得到队列有效状态;
[0139]队列可调度状态确定模块,根据队列有效状态以及累积状态,确定当前队列是否进入可调度状态;
[0140]层次化调度模块,用于进行层次化调度并输出。
[0141]在完成了层次化调度并输出后,所述功能实体还可以将输出队列号反馈给队列深度计算模块,队列深度状态更新模块以及队列激活状态确定模块进行调度后的计算,根据计算结果更新各个状态表。
[0142]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种队列调度方法,用于下行链路,其特征在于,所述方法包括: 将接收到的数据包按队列进行缓存; 根据缓存的第一队列的累积参数,确定所述第一队列是否达到累积状态; 对所述第一队列进行预设的第一级数的整形计算; 确定所述第一队列的激活状态; 根据所述第一队列整形计算的结果和所述激活状态,计算所述第一队列的有效状态;当所述第一队列达到累积状态时,根据所述第一队列的有效状态,对所述第一队列进行预设的第二级数的层次化调度并输出。
2.如权利要求1所述的队列调度方法,其特征在于,所述累积参数包括第一队列的队列深度值、预设的第一队列的队列深度阈值和预设的队列轮询周期; 所述第一级数不超过所述第二级数; 所述有效状态为队列不可用状态、队列保证带宽状态、队列超出带宽状态或队列既有保证带宽又有超出带宽状态。
3.如权利要求2所述的队列调度方法,其特征在于,所述根据缓存的第一队列的累积参数,确定所述第一队列是否达到累积状态具体为: 当第一队列的队列深度值超过所述队列深度阈值时,确定所述第一队列达到累积状态;或 当第一队列达到预设的队列轮询周期时,确定所述第一队列达到累积状态。
4.如权利要求1所述的队列调度方法,其特征在于,所述确定所述第一队列的激活状态具体为所述第一队列非空时,确定所述第一队列处于激活状态。
5.如权利要求1所述的队列调度方法,其特征在于,所述方法还包括: 对所述第一队列进行预设的第二级数的层次化调度并输出后,更新第一队列的累积状态和有效状态。
6.一种队列调度装置,用于下行链路,其特征在于,所述装置包括: 缓存模块,用于将接收到的数据包按队列进行缓存; 累积状态确定模块,用于根据缓存的第一队列的累积参数,确定所述第一队列是否达到累积状态; 整形计算模块,用于对所述第一队列进行预设的第一级数的整形计算; 激活状态确定模块,用于确定所述第一队列的激活状态; 有效状态计算模块,用于根据所述第一队列整形计算的结果和所述激活状态,计算所述第一队列的有效状态; 处理模块,用于当所述第一队列达到累积状态时,根据所述第一队列的有效状态,对所述第一队列进行预设的第二级数的层次化调度并输出。
7.如权利要求6所述的队列调度装置,其特征在于,所述累积参数包括第一队列的队列深度值、预设的第一队列的队列深度阈值和预设的队列轮询周期; 所述第一级数不超过所述第二级数; 所述有效状态为队列不可用状态、队列保证带宽状态、队列超出带宽状态或队列既有保证带宽又有超出带宽状态。
8.如权利要求7所述的队列调度装置,其特征在于,所述累积状态确定模块具体为:当第一队列的队列深度值超过所述队列深度阈值时,确定所述第一队列达到累积状态;或 当第一队列达到预设的队列轮询周期时,确定所述第一队列达到累积状态。
9.如权利要求6所述的队列调度装置,其特征在于,所述激活状态确定模块具体为所述第一队列非空时,确定所述第一队列处于激活状态。
10.如权利要求6所述的队列调度装置,其特征在于,所述装置还包括: 更新模块,用于对所述第一队列进行预设的第二级数的层次化调度并输出后,更新第一队列的累积状态和有效状态。
【文档编号】H04L12/863GK104079500SQ201310108305
【公开日】2014年10月1日 申请日期:2013年3月29日 优先权日:2013年3月29日
【发明者】王莉 申请人:中兴通讯股份有限公司