一种报文调度方法和调度装置的制作方法

文档序号:7919626阅读:204来源:国知局

专利名称::一种报文调度方法和调度装置的制作方法
技术领域
:本发明涉及网络通信
技术领域
,具体地说,是一种报文调度方法和调度装置。
背景技术
:随着芯片技术和网络处理器的飞速发展,网络设备的转发能力与日俱增,千兆、万兆端口已经很常见。相对来讲,实现协议功能的CPU处理能力发展相对较慢,芯片和CPU处理能力表现出越来越明显的不对称性。随着因特网的高速发展,当前网络中需要处理的数据越来越多。当协议报文流量超过当前CPU的处理能力时就需要釆取手段对芯片上送流量进行管理和控制,比如对一些攻击性质的报文进行丢弃和封锁,对不很紧急或不很重要的报文进行緩存、延时处理等。比较常见的流量管理手段是队列管理,即对于拥塞流量先按照一定的规则分类緩存,然后按照某种算法进行调度处理。队列管理中常用技术是优先级队列(PQ,PriorityQueue)或加权公平队列(WRR,WeightedRoundRobin)。PQ的做法是先对流量分类,然后严格按照分类流量的优先级进行调度,先处理优先级高的再处理优先级低的,其缺陷是如果高优先级流量一直存在那么比它优先级低的流量就一直得不到调度。而WRR调度则是既在整体上保证流量的优先级,又能让每一个队列都有机会得到调度。现有的WRR报文调度方法主要有两种一种是严格的按照队列权重进行逐个调度;另一种是基于时间片的概念,轮循过程中有权重就调度一次,没有就跳过。第一种方法的缺点是,权重低的队列优先级被提高,而权重高的队列优先级被降低,对于每个队列流量是突发的,而且队列权重越大突发越严重,很容易造成系统的不稳定。第二种方法对流量突发进行了改善,但是当权重较小的队列权重用完后在调度周期的末端突发现象仍然很严重。因此,现有的WRR报文调度方法容易造成处理过程中流量不均匀,发生数据突发,数据抖动较大,系统开销较高。
发明内容本发明要解决的技术问题是提供一种报文调度方法和调度装置,可以均匀地处理流量,降低数据突发、减小数据抖动、减少系统开销。为了解决上述问题,本发明提供了一种报文调度装置,包括队列权重模块、调度计算模块和调度器模块,其中所述队列权重模块,用于记录当前所有队列的权重,并将记录的权重提供给所述调度计算模块;所述调度计算模块,用于在装置初始化时或队列权重被修改时根据所述队列权重模块提供的队列权重,对所述列的调度顺序进行计算,得到队列的先后调度顺序,并将计算结果提供给所述调度器^t块使用;所述调度器模块,用于根据所述调度计算模块计算得到的调度结果对队列进行调度,将数据发送到CPU进行处理。进一步地,还包括调度存储^t块,用于存储所述调度计算模块计算得到的队列的先后调度顺序;所述调度器模块根据所述调度存储模块中存储的队列的先后调度顺序,对队列进行调度处理。进一步地,所述队列权重模块包括一配置接口,用于对队列的权重进行配置。进一步地,所述调度计算模块对所述列的调度顺序进行计算的过程为在所有队列中找出权重最大的队列;计算每个队列的权重调度因子,初始化每个队列的调度次数为0;队列的权重调度因子由权重最大的队列的权重除于本队列的权重取整得到;调度权重最大的队列,确定下一个队列,然后判断该队列的权重是否为零,如果不是,将该队列的调度次数加1,然后判断该队列的调度次数是否大于等于该队列的权重调度因子,如果是,调度该队列,并将该队列的权重减1,同时将该队列的调度次数计数清零;如果该对队列的权重为0或者该队列的调度次数小于其权重调度因子,则确定该队列的下一个队列进行处理,直到所有队列的权重为O,调度顺序确定完毕。本发明还提供了一种报文调度方法,包括确定各队列的权重,在所有队列中找出权重最大的队列;计算每个队列的权重调度因子,初始化每个队列的调度次数为0;队列的权重调度因子由权重最大的队列的权重除于本队列的权重取整得到;调度权重最大的队列,确定下一个队列,然后判断该队列的权重是否为零,如果不是,将该队列的调度次数加1,然后判断该队列的调度次数是否大于等于该队列的权重调度因子,如果是,调度该队列,并将该队列的权重减1,同时将该队列的调度次数计数清零;如果该对队列的权重为0或者该队列的调度次数小于其权重调度因子,则确定该队列的下一个队列进行处理,直到所有队列的权重为0,调度完毕。进一步地,将调度的队列按调度的顺序存储在一调度存储模块中,在上送流量需要调度时,从所述调度存储模块中按顺序读取队列进行调度。进一步地,确定各队列的权重后,还包括确定所述调度存储;漠块大小的步骤,所述调度存储才莫块的大小等于所有队列的权重之和。进一步地,还包括在当前配置的队列权重不是当前网络的最优参数时,修改所述队列的权重;所述队列的权重修改完成后,重新执行所述确定各队列的权重至所迷队列调度完毕的步骤。本发明的报文调度方法和调度装置,所采用的算法是一种基于比例公平的WRR算法,既保留了各队列的优先级,又使队列调度按照一定比例均匀调度。可以实现均匀地处理流量,降低数据突发、减小数据抖动、减少系统开销。图1是WRR报文调度的应用场景示意图;图2是本发明的报文调度装置的示意图3是本发明的"fe文调度方法的流程;图4是本发明的报文调度装置的权重修改的工作流程。具体实施例方式下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。如图1所示,是WRR报文调度的应用场景示意图。将芯片上送流量按照一定的规则分类成n个队列,每个队均分配有权重,然后由WRR调度器根据队列的权重利用相应的WRR算法对队列进行调度,送往CPU进行处理。一个好的WRR算法应能使流量非常均匀的被处理掉,延时和抖动性都比较小,同时调度的速度也要非常快。如图2所示,本发明的WRR报文调度装置包括队列权重模块1,用来记录当前所有队列的权重,并将队列的权重提供给调度计算模块2。每个队列都有初始的队列权重,队列的权重值可以使用默认值也可以动态修改。可以在队列权重才莫块1上设置一对外的配置接口,如果默认配置不是当前网络的最优参数,可以通过该接口修改队列权重。为了处理方便,队列权重才莫块1可以备份一份权重信息。调度计算模块2,用于接收队列权重模块1记录的各队列的权重,根据WRR调度算法对队列进行调度,计算出队列的先后调度顺序并顺序写入调度存储模块3。调度计算模块2在调度装置初始化时或者队列权重模块1中的队权重值被修改时执行队列的调度运算。调度存储冲莫块3:用来保存队列在一个完整的调度周期中先后调度顺序。因为队列是按照WRR算法进行存放的,所以按照存放的先后顺序对队列调度也实现了WRR调度算法。调度器模块4:该模块作用是当上送流量需要调度时根据调度存储模块3里队列的先后调度顺序对排队的报文进行调度。其中,调度存储模块3是为了重复使用调度结果时方便而设置的。有了调度存储模块3,在数据层面调度器模块只要按照调度存储模块队列的先后存放顺序对排队报文进行调度就可实现WRR报文调度。实现了一次调度计算,调度结果重复使用。因此,不设调度存储模块3也可以实现本发明,此时,需要由调度计算模块2将计算得到的调度结果直接提供给调度器模块4使用。如图3所示,为本发明的报文调度方法的流程。包括步骤301:确定调度存储模块的大小,即调度存储模块需要存放的队列个数Qsum,Qsum为所有队列的权重之和;步骤302:在所有队列权重中找到权重最大的队列Qmax及其权重Wmax;第一次调度从权重最大的队列开始,当所有队列权重减为0时调度周期完成。步骤303:计算每个队列的权重调度因子,队列i的调度因子Dd[i]为Wrnax除以该队列的权重后取整;初始化每个队列的调度次数SchCntw,初始化值为0;步骤304:队列调度从权重最大的队列开始,将该队列写入调度存储模块,将该队列的权重减l,同时将该队列的调度次数计数清零;步骤305:确定下一个队列;队列计算是按队列顺序进行的,从权重最大的队列开始,下一个队列为本队列(即刚完成计算的一个队列)的后面的一个队列;如果本队列位于队列尾部,下一个队列为队首的队列。步骤306:计算队列是否需要调度先将该队列的调度次数SchCntw加1,如果该队列的调度次ltSchCnt[u大于等于该队列的权重调度因子Delw,则该队列需要调度,将队列权重减1,同时将该队列的调度次数SchCn化计数清零,进行步骤307;该队列的调度次数SchCn化小于该队列的权重调度因子Delw,则该队列不需要调度,转到步骤305;步骤307:将该需要调度的队列写入调度存储^^莫块;步骤308:查看所有队列权重是否均为0,如果不是,转到步骤305;如果是,调度计算过程结束。调度计算完成后,调度器模块就可以按照调度存储模块中存储的队列顺序进行调度,将相应队列数据发送到CPU进行处理。当报文数量接近或超过CPU处理能力时,CPU负担相对较大,这时即使调度算法很优秀,每个报文到达后CPU都要根据权重配置等计算下一个调度的队列,直到该报文调度。频繁而且重复的调度算法和存储设备访问一定程度上也加重了系统负担。实际上一旦各个队列权重确定,队列的调度就会按照一个固定调度周期循环调度,本发明即在控制层面把这个调度周期内各个队列调度的先后顺序计算出来并进行缓存,在转发层面就不需要重复进行计算,直接去緩存里读取即可,在一定程度上减轻了系统负担。当然,也可以不经过存储的步骤,而是由调度计算模块2将计算得到的调度结果直接提供给调度器模块4使用。如果权重在运行过程中修改了,需要重新用WRR算法来刷新緩存。如图4所示,为WRR报文调度装置的权重修改的工作流程,包括步骤401:修改各队列的权重,刷新队列权重模块中记录的各队列权重信息,包括备份权重信息;队列权重修改后调度顺序会发生变化,此时需要重新计算各队列的调度次序。步骤402:确定各队列的权重,权重从备份的权重信息中获取。步骤403:调度计算模块读取队列权重模块的队列权重,根据本发明的WRR算法计算出各队列的先后调度次序,同时把结果写入调度存储模块;在调度装置初始化和队列权重被修改时队列的调度存储模块信息都需要重新计算。步骤404:调度存储模块修改完毕,当需要对数据队列调度时,调度器才莫块从调度存储才莫块中获取队列进行调度。下面通过应用实施例来对比现有技术说明本发明的效果。布支设一组队列及其权重如下:<table>tableseeoriginaldocumentpage10</column></row><table>利用现有技术中第一种方法(即严格的按照队列权重进行逐个调度,下称方法1)得到的调度方式为QlQ2Q2Q3Q3Q3Q4Q4Q4Q4Q5Q5Q5Q5Q5。可见,这种方式Ql的优先级被提升,Q5的优先级被降低;对于每个队列流量是突发的,而且队列权重越大突发越严重,很容易造成系统的不稳定。利用现有技术中第二种方法(即基于时间片的概念,轮循过程中有权重就调度一次,没有就跳过,下称方法2)得到的调度方式为Q1Q2Q3Q4Q5Q2Q3Q4Q5Q3Q4Q5Q4Q5Q5。这种算法对流量突发进行了改善,但是可以看出,当权重较小的队列权重用完后在调度周期的末端突发现象仍然很严重。利用本发明的调度方法得到的调度方式为Q5Q4Q5Q3Q4Q5Q2Q4Q5Q3Q4Q5Q1Q2Q3。可见本发明的调度方法是一种基于比例公平的WRR算法,既保留了各队列的优先级又使队列调度按照一定比例均匀调度。'从调度周期对队列调度间隔(连续2次调度隔了几个队列)<table>tableseeoriginaldocumentpage10</column></row><table>可以看出,本发明的调度方法对于每个调度队列调度最大间隔除队列1没变,其他队列都比算法1和2要小。并且,本发明的调度方法的最小调度间隔没有出现O的情况,即没有出现连续调度,这对减少流量突发,提升系统稳定性有4艮大帮助。以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本
技术领域
的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。权利要求1.一种报文调度装置,其特征在于,包括队列权重模块、调度计算模块和调度器模块,其中:所述队列权重模块,用于记录当前所有队列的权重,并将记录的权重提供给所述调度计算模块;所述调度计算模块,用于在装置初始化时或队列权重被修改时根据所述队列权重模块提供的队列权重,对所述列的调度顺序进行计算,得到队列的先后调度顺序,并将计算结果提供给所述调度器模块使用;所述调度器模块,用于根据所述调度计算模块计算得到的调度结果对队列进行调度,将数据发送到CPU进行处理。2、如权利要求l所述的装置,其特征在于,还包括调度存储模块,用于存储所述调度计算模块计算得到的队列的先后调度顺序;所述调度器模块根据所述调度存储才莫块中存储的队列的先后调度顺序,对队列进行调度处理。3、如权利要求1所述的装置,其特征在于,所述队列权重模块包括一配置接口,用于对队列的权重进行配置。4、如权利要求l所述的装置,其特征在于,所述调度计算才莫块对所述列的调度顺序进行计算的过程为在所有队列中找出权重最大的队列;计算每个队列的权重调度因子,初始化每个队列的调度次数为0;队列的权重调度因子由权重最大的队列的权重除于本队列的权重取整得到;调度权重最大的队列,确定下一个队列,然后判断该队列的权重是否为零,如果不是,将该队列的调度次数加1,然后判断该队列的调度次数是否大于等于该队列的权重调度因子,如果是,调度该队列,并将该队列的权重减1,同时将该队列的调度次数计数清零;如果该对队列的权重为0或者该队列的调度次数小于其权重调度因子,则确定该队列的下一个队列进行处理,直到所有队列的权重为O,调度顺序确定完毕。5、一种^艮文调度方法,其特征在于,包括确定各队列的权重,在所有队列中找出权重最大的队列;计算每个队列的权重调度因子,初始化每个队列的调度次数为0;队列的权重调度因子由权重最大的队列的权重除于本队列的权重取整得到;调度权重最大的队列,确定下一个队列,然后判断该队列的权重是否为零,如果不是,将该队列的调度次数加1,然后判断该队列的调度次数是否大于等于该队列的权重调度因子,如果是,调度该队列,并将该队列的权重减1,同时将该队列的调度次数计数清零;如果该对队列的权重为0或者该队列的调度次数小于其权重调度因子,则确定该队列的下一个队列进行处理,直到所有队列的权重为0,调度完毕。6、如权利要求4所述的方法,其特征在于,将调度的队列按调度的顺序存储在一调度存储模块中,在上送流量需要调度时,从所述调度存储模块中按顺序读取队列进行调度。7、如权利要求5所述的方法,其特征在于,确定各队列的权重后,还包括确定所述调度存储4莫块大小的步骤,所述调度存储才莫块的大小等于所有队列的4又重之和。8、如权利要求4所述的方法,其特征在于,还包括在当前配置的队列权重不是当前网络的最优参数时,修改所述队列的权重;所述队列的权重修改完成后,重新执行所述确定各队列的权重至所述队列调度完毕的步骤。全文摘要本发明公开了一种报文调度方法和调度装置。本发明利用队列的权重计算出队列的调度因子,然后根据队列的权重及权重调度因子对队列进行计算调度。本发明的报文调度方法和调度装置,所采用的算法是一种基于比例公平的WRR算法,既保留了各队列的优先级,又使队列调度按照一定比例均匀调度。可以实现均匀地处理流量,降低数据突发、减小数据抖动、减少系统开销。文档编号H04L12/56GK101374109SQ20081016183公开日2009年2月25日申请日期2008年10月7日优先权日2008年10月7日发明者周忠良申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1