一种服务质量调度方法和装置的制造方法_2

文档序号:9670710阅读:来源:国知局
该方法包括以下步骤:
[0053]步骤101:当一个活动队列被调度时,判断该活动队列的服务计数器值是否小于等于0,并在判断结果为是时,用所述活动队列的服务量子和服务计数器值相加得到的值更新所述服务计数器值;
[0054]具体的,所述活动队列是指可调度的队列,因此,在该步骤之前,还包括以下处理步骤:
[0055]判断队列是否可调度,可调度的队列才会被列入活动队列;具体的,可调度的队列需要满足以下条件:
[0056]I)该队列有数据包需要调度;2)该队列整形通过;
[0057]参加轮询调度的活动队列,需要逐个被服务(即,被调度),多个活动队列按顺序排列,相当于是一个链表,当某一活动队列调度完后,将此队列移到链表的尾部,下一个仍然调度链表首部的队列,调度完后,将其移到链表的尾部,如此循环调度,例如,图2示出了由编号为0-31的32个活动队列顺序排列形成的链表,该链表中的活动队列会被顺序服务,即,对首先调度I号活动队列,当对I号活动队列调度完成后,执行对2号活动队列的调度,如此循环,调度完31号活动队列后,从O号活动队列开始重新循环调度。调度中如果哪个队列不可调度了,即,不满足以上条件I)、2)至少其中之一时,则剔除出链表,进入非活动状态;而非活动状态的队列如果满足上述I)和2)条件变为活动队列,则插入到链表的尾部,参加轮询调度。
[0058]在调度活动队列之前,需要预先设置活动队列的服务计数器的初始值,该服务计数器的初始值单位为字节,表示允许出包的字节数;在实际应用中,所述活动队列的初始值可以根据实际需要进行设置,优选的,可以将该初始值设置在[-128,128]字节区间范围内,例如,可以将活动队列的服务计数器的初始值设置为-1,或者设置为64等等。
[0059]在这一步骤中,首先判断活动队列的服务器计数器值是否小于等于0,需要说明的是,如果是对该活动队列的首次调度,则该服务器计数器值即为预先设置的服务器计数器初始值,如果确认所述服务计数器值小于等于0,则将所述服务计数器值更新为所述队列的服务量子和服务计数器值相加得到的值;
[0060]其中,服务量子表示DWRR中允许调度输出的数据总字节数,单位是字节;在对该活动队列进行调度之前,需要预先设置服务量子的值,该服务量子的值可以根据实际服务需要进行设置,例如可将服务量子的值设置在[512,50000]字节区间范围内;
[0061]如果确认所述服务计数器值大于0,则直接根据所述服务计数器值执行数据包调度过程;
[0062]具体的,所述根据所述服务计数器值执行数据包调度过程,包括:
[0063]步骤1:发送当前数据包,并用所述服务计数器值减去所述发送的数据包的包长得到的值更新服务计数器值;具体的,所述当前数据包是指队列中按照顺序第一个被调度的数据包;如果队列中的所述当前数据包被发送,按照顺序,该当前数据包的下一个数据包自动成为新的当前数据包;
[0064]步骤2:进一步判断所述更新后的服务计数器值是否大于O ;
[0065]如果判断结果为否,则跳出本次调度,执行下一次调度;
[0066]如果确认所述更新后的服务计数器值大于0,则重复步骤I和步骤2,直到某一次出包(即,根据服务质量调度方法发送一个数据包)之后,服务器计数器值减去所述数据包的包长之后得到的服务计数器值小于等于0,或当一个活动队列被选择服务时,原本小于O的服务计数器被更新为该服务计数器值与服务量子之和之后,仍然小于等于O时,则跳出本次调度,执行下一次调度。
[0067]步骤102:判断更新后的服务计数器值是否大于0,并在判断结果为是时,根据所述更新后的服务计数器值执行所述活动队列中数据包的调度过程。
[0068]在步骤101中,用活动队列的服务量子和服务计数器值相加得到的值更新服务计数器值之后,判断所述更新后的服务计数器值是否大于O,如果确认所述更新后的服务计数器值大于0,则根据所述更新后的服务计数器值执行数据包调度过程。
[0069]具体的,所述根据更新后的服务计数器值执行所述活动队列中数据包的调度过程,包括:
[0070]步骤1:发送当前数据包,并用当前服务计数器值减去所述发送的数据包的包长得到的值更新服务计数器值;
[0071]步骤2:进一步判断所述更新后的服务计数器值是否大于O ;
[0072]如果判断结果为否,则跳出本次调度,执行下一次调度;
[0073]如果确认所述更新后的服务计数器值大于0,则重复步骤I和步骤2,直到某一次出包之后,服务器计数器值减去所述数据包的包长之后得到的服务计数器值小于等于O,或当一个活动队列被选择服务时,原本小于O的服务计数器被更新为该服务计数器值与服务量子之和之后,仍然小于等于O时,则跳出本次调度,执行下一次调度。
[0074]进一步的,在步骤102中,如果更新后的服务计数器值小于等于0,则直接跳出本次调度,执行下一次调度。
[0075]下面通过一个具体示例,对本发明实施例提供的服务质量调度方法做详细介绍;
[0076]假设在一个服务质量调度过程中,需要对一个由3个活动队列组成的链表进行调度,如图3所示,由上至下分别是I号队列至3号队列,其中,I号队列包括3个数据包,2号和3号队列分别包括两个数据包;每一个队列以从右至左的顺序对数据包进行调度;
[0077]首先对I号活动队列进行调度,I号活动队列的服务计数器值为-1,服务量子为730 ;根据实施例一提供的方法,首先确定所述服务计数器值小于0,则将所述服务计数器值和服务量值之和729存入服务计数器,即,将服务计数器值更新为服务计数器之前的取值和服务量子之和;此时,更新后的服务计数器值大于0,根据更新后的服务计数器值对当前数据包进行调度;具体的,发送第一个数据包,并将服务计数器值729减去所述数据包包长500之后得到的值229存入服务计数器;接下来,确认服务计数器值大于0,继续进行下一个数据包的调度,直接发送下一个数据包,并将当前服务计数器值229减去所述下一个数据包包长492之后得到的值-263存入服务计数器,接下来确认服务计数器值小于0,则直接跳出当前调度流程,进行下一个调度流程;
[0078]在下一个调度流程中对2号队列进行调度,2号活动队列的服务计数器值为-1,服务量子为2000 ;根据实施例一提供的方法,首先确定所述服务计数器值小于0,则将所述服务计数器值和服务量值之和1999存入服务计数器,即,将服务计数器值更新为服务计数器之前的取值和服务量子之和;此时,更新后的服务计数器值大于0,根据更新后的服务计数器值对当前数据包进行调度;具体的,发送第一个数据包,并将服务计数器值减去所述数据包包长之后得到的值1129存入服务计数器;接下来,确认服务计数器值大于0,继续进行下一个数据包的调度,发送第二个数据包,之后,所述2号活动队列由于没有数据包可调度,而变为非活动队列,并从链表中删除;
[0079]继续对3号链表进行调度,由于3号活动队列的服务计数器值为2000,服务量子为512 ;根据实施例一提供的方法,首先确定所述服务计数器值大于0,则不对服务计数器值进行更新,直接根据所述服务计数器值对当前数据包进行调度;具体的,发送第一个数据包,并将服务计数器值减去所述数据包包长之后得到的值1100存入服务计数器;接下来,确认服务计数器值大于0,继续进行下一个数据包的调度,发送第二个数据包,之后,所述3号活动队列由于没有数据包可调度,而变为非活动队列,并从链表中删除;
[0080]完成对3号列表的调度之后,返回I号列表继续进行调度,由于第一、二个数据包已被发送,因此,当前数据包为728字节,I号活动队列的当前服务计数器值为-263,服务量子为730,根据实施例一提供的方法,首先确定所述服务计数器值小于0,因此将当前服务计数器值和服务量子730相加后的值467存入服务计数器,由于更新后的服务计数器值大于0,对当前数据包进行调度,将I号队列中第三个数据包发送出去之后,即完成了整个QOS调度过程。
[0081]实施例二
[0082]本发明实施例二提供了一种通信提示装置,如图4所示,所述装置包括:判断模块41、服务计数器更新模块42及调度模块43 ;其中,
[0083]所述判断模块41,用于判断活动队列的服务计数器值是否小于等于0,并在判断结果为是时触发服务计数器更新模块42 ;还用于被服务计数器更新模块42触发时,判断更新后的服务计数器值是否大于0,并在大于O时触发调度模块43,并将所述更新后的服务计数器值发送给调度模块43 ;
[0084]所述服务计数器更新模块42,用于被判断模块41触发时,用所述活动队列的服务量子和所述服务计数器值相加得到的值更新所述服务计数器值,并在更新完成后触发判断模块43 ;
[0085]所述调度模块43,用于被判断模块41触发时,根据接收到的所述更新后的服务计数器值执行所述活动队列中数据包的调度过程。
[0086]进一步的,所述装置还包括:设置模块44,用于设置所述活动队列的服务计数器值和服务量子值。
[0087]进一步的,所述装置还包括队列处理模块45,用于当非活动队列满足以下条件时确定所述非活动
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1