报文传输方法及装置制造方法

文档序号:7783293阅读:108来源:国知局
报文传输方法及装置制造方法
【专利摘要】本发明实施例提供一种报文传输方法及装置,该方法包括:服务器在队列进入非空状态时,判断令牌桶中令牌的大小是否大于或等于该队列对应的阈值,该令牌桶中包括与至少两个队列分别对应的阈值,该至少两个队列中优先级较高的队列对应的阈值小于优先级较低的队列对应的阈值;若是,则该服务器将该队列的报文经过该令牌桶输出,并对该令牌桶中令牌的大小进行更新,将该令牌桶中令牌的大小减去该队列的报文的大小;若否,则该服务器不输出该队列中的报文。
【专利说明】报文传输方法及装置
【技术领域】
[0001 ] 本发明实施例涉及计算机及通信技术,尤其涉及一种报文传输方法及装置。
【背景技术】
[0002]随着计算机及通信技术的发展,网络设备需要具有队列调度和流量整形的功能。队列调度的作用是将总带宽分配给网络中的各端口的不同类型的以太报文,或各用户的不同类型的以太报文;流量整形的作用是对与端口对应的总带宽,或与用户对应的总带宽进行控制。
[0003]目前的网络设备通过两个独立的装置分别实现队列调度和流量整形的功能。报文经过队列调度装置处理后,被送入流量整形装置;流量整形装置对该报文进行处理之后,向队列调度装置发送反馈信号,以对队列调度装置进行控制。流量整形装置可以通过单令牌桶及单阈值的方式实现;队列调度装置可以使用加权轮询调度方式或者加权公平调度方式实现。
[0004]报文经过流量整形装置输出时,将根据报文的大小,消耗掉相应大小的令牌。当令牌的大小大于零时,队列调度装置中的各队列可以按照优先级的高低,将报文发送至流量整形装置;当令牌的大小小于或等于零时,队列调度装置中的各队列均不能将报文发送至流量整形装置。此后,令牌桶中的令牌大小将随着时间的增长得到填充。
[0005]在队列调度装置中存在属于绝对优先调度的队列的情况下,根据调度策略,属于绝对优先调度的队列非空且当前令牌的大小大于零时,允许该队列中的报文优先出队,其他不属于绝对优先调度的队列中的报文在此时不允许出队。
[0006]设队列m为队列调度装置中属于绝对优先调度的队列,队列η为队列调度装置中不属于绝对优先调度的队列。当队列m和队列η均为空时,若队列η先进入非空状态,且当前令牌的大小大于零时,队列η中的报文将会得到被调度的机会,队列η中的报文经过流量整形装置时会消耗令牌桶中的令牌。若队列η中的报文经过之后,令牌的大小出现了小于零的情况,则即使队列m当前进入了非空状态,仍需等待令牌桶中的令牌被填充至大于零时,才能够被送入流量整形装置。
[0007]但是,若队列m在等待令牌被填充的期间,入队的报文数量超过了队列m的缓存空间的大小,则队列m中无法存入缓存空间的报文将被丢弃,从而造成队列m中的报文经过流量整形装置输出后,由于报文不完整而导致报文传输出错。

【发明内容】

[0008]本发明实施例提供一种报文传输方法及装置,用于有效地减少报文传输错误,提高对报文进行传输的正确率。
[0009]本发明实施例的第一个方面是提供一种报文传输方法,包括:
[0010]服务器在队列进入非空状态时,判断令牌桶中令牌的大小是否大于或等于所述队列对应的阈值,所述令牌桶中包括与至少两个队列分别对应的阈值,所述至少两个队列中优先级较高的队列对应的阈值小于优先级较低的队列对应的阈值;
[0011]若是,则所述服务器将所述队列的报文经过所述令牌桶输出,并对所述令牌桶中令牌的大小进行更新,将所述令牌桶中令牌的大小减去所述队列的报文的大小;
[0012]若否,则所述服务器不输出所述队列中的报文。
[0013]在第一个方面的第一种可能实现方式中,所述服务器在队列进入非空状态时,判断令牌桶中令牌的大小是否大于或等于所述队列对应的阈值包括:
[0014]所述服务器在处于非空状态的非空队列为两个或多个时,根据各非空队列的优先级由高至低的顺序,分别判断所述令牌桶中令牌的大小是否大于或等于各非空队列对应的阈值。
[0015]结合第一个方面或者第一个方面的第一种可能实现方式,在第一个方面的第二种可能实现方式中,所述至少两个队列中任意两个优先级相邻的队列对应的阈值之差,大于或等于单次对所述令牌桶进行填充的令牌大小。
[0016]本发明实施例的第二个方面是提供一种服务器,包括:
[0017]队列调度单元,用于在队列进入非空状态时,判断令牌桶中令牌的大小是否大于或等于所述队列对应的阈值,所述令牌桶中包括与至少两个队列分别对应的阈值,所述至少两个队列中优先级较高的队列对应的阈值小于优先级较低的队列对应的阈值;
[0018]流量整形单元,用于在所述队列调度单元判断出所述令牌桶中令牌的大小大于或等于所述队列对应的阈值时,将所述队列的报文经过所述令牌桶输出,并对所述令牌桶中令牌的大小进行更新,将所述令牌桶中令牌的大小减去所述队列的报文的大小。
[0019]在第二个方面的第一种可能实现方式中,所述队列调度单元还用于:
[0020]在处于非空状态的非空队列为两个或多个时,根据各非空队列的优先级由高至低的顺序,分别判断所述令牌桶中令牌的大小是否大于或等于各非空队列对应的阈值。
[0021]结合第二个方面或者第二个方面的第一种可能实现方式,在第二个方面的第二种可能实现方式中,所述流量整形单元还用于:
[0022]将至少两个队列中任意两个优先级相邻的队列对应的阈值之差,设置为大于或等于单次对所述令牌桶进行填充的令牌大小。
[0023]本发明实施例报文传输方法及装置,通过服务器在队列进入非空状态,且令牌桶中当前令牌的大小大于或等于该队列对应的阈值时,将该队列的报文经过令牌桶输出,并对令牌桶中令牌的大小进行更新,将令牌桶中令牌的大小减去该队列的报文的大小;由于优先级较高的队列对应的阈值小于优先级较低的队列对应的阈值,可以使得优先级较低的队列较难满足其阈值条件,而优先级较高的队列较易满足其阈值条件,从而尽量保证优先级较高的队列中的报文能够优先被输出,减少等待的时间,以减少对优先级较高的队列中的报文进行丢弃的情况,能够有效地减少报文传输错误,提高对报文进行传输的正确率。
【专利附图】

【附图说明】
[0024]图1为本发明实施例提供的报文传输方法的流程图;
[0025]图2为本发明实施例提供的服务器的结构示意图。
【具体实施方式】[0026]为了解决属于绝对优先调度的队列在等待被调度时,由于将入队的报文中超过该队列的缓存空间的报文丢弃,而造成报文传输出错的问题,本发明各实施例中对传输报文的方法进行了改进,以提高对报文进行传输的正确率。
[0027]本发明各实施例中所述的方法可以在服务器上实现,包括多种能够进行队列调度和流量整形的设备。
[0028]图1为本发明实施例提供的报文传输方法的流程图,如图1所示,该方法包括:
[0029]101、服务器在队列进入非空状态时,判断令牌桶中令牌的大小是否大于或等于所述队列对应的阈值。若是,则执行步骤102 ;若否,则执行步骤103。
[0030]其中,所述令牌桶中包括与至少两个队列分别对应的阈值,所述至少两个队列中优先级较高的队列对应的阈值小于优先级较低的队列对应的阈值。
[0031]具体的,服务器中可以包括一个或多个队列,并且为每个队列分别设置有对应的优先级,每个队列根据其优先级的高低,被设定有对应的阈值。优先级越高的队列中的报文需要优先被传输;优先级较低的队列中的报文可以被暂缓传输。优先级越高的队列,其所对应的阈值越小;优先级越低的队列,其对应的阈值越高。从而使得优先级较低的队列较难满足阈值要求;优先级较高的队列较易满足阈值要求。
[0032]服务器中还包括令牌桶,令牌桶中包括一定大小的令牌。报文经过令牌桶输出之后,令牌桶中令牌的大小将根据报文的大小,相应地有所减少。由于令牌的大小可以体现为字节的多少,因此本发明各实施例中所述的令牌的大小与报文的大小采用相同的单位进行度量。
[0033]各阈值的大小可以根据令牌桶所能容纳的令牌的大小设定,也就是说,令牌桶所能容纳的令牌的总大小被划分为多个档位,各档位分别被作为各阈值。
[0034]服务器中的队列在有报文需要被传输时,该队列进入非空状态,即该队列为非空队列。服务器在获知该队列非空时,需要对令牌桶中当前令牌的大小与该非空队列对应的阈值进行比较。
[0035]进一步地,所述服务器在处于非空状态的非空队列为两个或多个时,根据各非空队列的优先级由高至低的顺序,分别判断所述令牌桶中令牌的大小是否大于或等于各非空队列对应的阈值。
[0036]具体的,由于服务器中的各队列分别具有不同的优先级,因此在同时存在两个或多个非空队列时,服务器根据各非空队列的优先级的高低,根据由高至低的顺序,依次对各非空队列采用上述方法进行判断。
[0037]在一个非空队列的报文经过令牌桶被输出之后,相应地,令牌桶中当前令牌的大小将被更新。从而服务器在判断下一个非空队列中的报文是否能够被输出时,需要根据更新后的令牌桶中令牌的大小和当前这个非空队列的阈值进行判断,依此类推。
[0038]进一步地,所述至少两个队列中任意两个优先级相邻的队列对应的阈值之差,大于或等于单次对所述令牌桶进行填充的令牌大小。
[0039]具体的,由于各队列分别具有不同的优先级,各优先级分别对应着不同阈值,因此各队列对应的阈值根据优先级的高低顺序可以形成一个或多个数值区间。另外,令牌桶中的令牌会在传输报文之后被消耗,也会周期性地被填充。本发明实施例中所述的“单次对所述令牌桶进行填充的令牌大小”即为,令牌桶在周期性地被填充时,每次被填充的令牌的大小。
[0040]为了使得令牌桶每次被填充后与被填充前相比,仅超过一个阈值对应的档位,因此服务器将各队列中任意两个优先级相邻的队列之间阈值之差,设定为大于或等于令牌桶单次被填充的令牌的大小。
[0041]102、服务器将所述队列的报文经过所述令牌桶输出,并对所述令牌桶中令牌的大小进行更新,将所述令牌桶中令牌的大小减去所述队列的报文的大小。
[0042]具体的,当服务器判断出令牌桶中当前令牌的大小大于或等于非空队列对应的阈值时,将该非空队列经过令牌桶输出。进而对令牌桶中的令牌大小进行更新,根据该非空队列中的报文的大小,在令牌桶的令牌的大小中减掉相应的量。
[0043]从而,服务器在判断是否能够将下一个非空队列输出时,可以采用更新的令牌桶中令牌的大小进行计算。
[0044]103、服务器不输出所述队列中的报文。
[0045]具体的,当服务器判断出令牌桶中当前令牌的大小小于非空队列对应的阈值时,不需要对该非空队列中的报文进行输出,待令牌桶中的令牌大小大于或等于该非空队列对应的阈值时,该非空队列中的报文将能够被输出。服务器可以继续判断其他非空队列是否满足报文被输出的条件。
[0046]当服务器根据各非空队列的优先级的高低,依次对各非空队列进行判断时,对于单独的非空队列而言,均可以采用步骤101-103中所述的实现方式。
[0047]本发明实施例提供的报文传输方法,服务器在队列进入非空状态,且令牌桶中当前令牌的大小大于或等于该队列对应的阈值时,将该队列的报文经过令牌桶输出,并对令牌桶中令牌的大小进行更新,将令牌桶中令牌的大小减去该队列的报文的大小;由于优先级较高的队列对应的阈值小于优先级较低的队列对应的阈值,可以使得优先级较低的队列较难满足其阈值条件,而优先级较高的队列较易满足其阈值条件,从而尽量保证优先级较高的队列中的报文能够优先被输出,减少等待的时间,以减少对优先级较高的队列中的报文进行丢弃的情况,能够有效地减少报文传输错误,提高对报文进行传输的正确率。
[0048]在实际应用中,该服务器中可以包括队列调度装置和流量整形装置。
[0049]队列调度装置中每个队列对应着一个调度开关,各队列的调度开关连接到队列调度装置的调度器上,调度器连接到流量整形装置上,流量整形装置的令牌桶与各调度开关分别连接。
[0050]流量整形装置的令牌桶的深度被扩展为了目前令牌桶的N倍,N为队列调度装置中队列的数量。由于令牌桶是由计数器实现的,因此增加令牌桶的深度即是将计数器所表示的数值范围扩大到了目前令牌桶的N倍,由此带来的对硬件资源的增加较少,基本可以忽略不计。
[0051]流量整形装置中新增设置了 N个寄存器,每个寄存器分别与队列调度装置中的一个队列是对应的,分别用于记录各队列分别对应的阈值。
[0052]一种可选的实现方式为,流量整形装置可以将令牌桶当前的令牌的大小与各阈值的大小相比较的开关信息,实时地发送给对应的队列的调度开关。令牌桶当前的令牌的大小所大于或等于的阈值对应的队列,接收到的是指示“开”的开关信息;令牌桶当前的令牌的大小所小于的阈值对应的队列,接收到的是指示“关”的开关信息。[0053]队列调度装置中的调度开关在接收到队列发送的非空指示信息之后,结合流量整形装置发送给该调度开关的开关信息,判断是否能够将该非空队列中的报文经过流量整形装置的令牌桶输出。
[0054]另一种可选的实现方式为,队列中有需要发送的报文时,向对应的调度开关发送非空指示信息,从而该调度开关向流量整形装置获取令牌桶中当前令牌的大小与该队列的阈值进行比较的开关信息,其中开关信息的内容可以参见前述内容。
[0055]流量整形装置将该队列的开关信息反馈给该调度开关,从而调度开关根据非空指示信息和开关信息,判断是否能够将队列中的报文经过流量整形装置的令牌桶输出。
[0056]图2为本发明实施例提供的服务器的结构示意图,如图2所示,该方法包括:队列调度单元11和流量整形单元12 ;其中,队列调度单元11用于在队列进入非空状态时,判断令牌桶中令牌的大小是否大于或等于该队列对应的阈值,该令牌桶中包括与至少两个队列分别对应的阈值,该至少两个队列中优先级较高的队列对应的阈值小于优先级较低的队列对应的阈值;流量整形单元12用于在该队列调度单元11判断出该令牌桶中令牌的大小大于或等于该队列对应的阈值时,将该队列的报文经过该令牌桶输出,并对该令牌桶中令牌的大小进行更新,将该令牌桶中令牌的大小减去该队列的报文的大小。
[0057]本实施例的服务器可以执行图1所示方法实施例的技术方案,其实现原理和技术效果相类似,此处不再赘述。
[0058]进一步的,队列调度单元11还用于在处于非空状态的非空队列为两个或多个时,根据各非空队列的优先级由高至低的顺序,分别判断该令牌桶中令牌的大小是否大于或等于各非空队列对应的阈值。
[0059]进一步的,流量整形单元12还用于将至少两个队列中任意两个优先级相邻的队列对应的阈值之差,设置为大于或等于单次对该令牌桶进行填充的令牌大小。
[0060]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0061]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种报文传输方法,其特征在于,包括:服务器在队列进入非空状态时,判断令牌桶中令牌的大小是否大于或等于所述队列对应的阈值,所述令牌桶中包括与至少两个队列分别对应的阈值,所述至少两个队列中优先级较高的队列对应的阈值小于优先级较低的队列对应的阈值;若是,则所述服务器将所述队列的报文经过所述令牌桶输出,并对所述令牌桶中令牌的大小进行更新,将所述令牌桶中令牌的大小减去所述队列的报文的大小;若否,则所述服务器不输出所述队列中的报文。
2.根据权利要求1所述的报文传输方法,其特征在于,所述服务器在队列进入非空状态时,判断令牌桶中令牌的大小是否大于或等于所述队列对应的阈值包括:所述服务器在处于非空状态的非空队列为两个或多个时,根据各非空队列的优先级由高至低的顺序,分别判断所述令牌桶中令牌的大小是否大于或等于各非空队列对应的阈值。
3.根据权利要求1或2所述的报文传输方法,其特征在于,所述至少两个队列中任意两个优先级相邻的队列对应的阈值之差,大于或等于单次对所述令牌桶进行填充的令牌大小。
4.一种服务器,其特征在于,包括:队列调度单元,用于在队列进入非空状态时,判断令牌桶中令牌的大小是否大于或等于所述队列对应的阈值,所述令牌桶中包括与至少两个队列分别对应的阈值,所述至少两个队列中优先级较高的队列对应的阈值小于优先级较低的队列对应的阈值;流量整形单元,用于在所述队列调度单元判断出所述令牌桶中令牌的大小大于或等于所述队列对应的阈值时,将所述队列的报文经过所述令牌桶输出,并对所述令牌桶中令牌的大小进行更新,将所述令牌桶中令牌的大小减去所述队列的报文的大小。
5.根据权利要求4所述的服务器,其特征在于,所述队列调度单元还用于:在处于非空状态的非空队列为两个或多个时,根据各非空队列的优先级由高至低的顺序,分别判断所述令牌桶中令牌的大小是否大于或等于各非空队列对应的阈值。
6.根据权利要求4或5所述的服务器,其特征在于,所述流量整形单元还用于:将至少两个队列中任意两个优先级相邻的队列对应的阈值之差,设置为大于或等于单次对所述令牌桶进行填充的令牌大小。
【文档编号】H04L12/865GK103701721SQ201310752419
【公开日】2014年4月2日 申请日期:2013年12月31日 优先权日:2013年12月31日
【发明者】唐国洋 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1