著录项信息
专利名称 | 一种数据流量控制方法和装置 |
申请号 | CN201210309304.7 | 申请日期 | 2012-08-28 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2012-12-05 | 公开/公告号 | CN102811176A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L12/861 | IPC分类号 | H;0;4;L;1;2;/;8;6;1;;;H;0;4;L;1;2;/;8;0;1查看分类表>
|
申请人 | 迈普通信技术股份有限公司 | 申请人地址 | 四川省成都市高新区九兴大道16号迈普大厦
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 迈普通信技术股份有限公司 | 当前权利人 | 迈普通信技术股份有限公司 |
发明人 | 申曙光;胥攀 |
代理机构 | 北京德琦知识产权代理有限公司 | 代理人 | 张晓峰;宋志强 |
摘要
本申请公开了一种数据流量控制方法,建立至少一个用于缓存数据流的队列,并为每个队列设置带宽保障限制,设置队列初始为就绪状态;还包括:A、将报文缓存到对应的队列;B、针对当前所有处于就绪状态的队列执行调度计算,从中确定出需要取出报文的队列;C、从所确定出的队列中取出批量的报文并发送;D、进行带宽检测,如果当前发送报文的带宽符合当前队列的带宽保障限制,则返回步骤B;否则进入步骤E;E、将当前队列的状态暂时设置为等待状态,返回步骤B,并确定状态延续时间,在该状态延续时间达到后将该队列的状态恢复为就绪状态。利用本发明,可以降低流量控制中的开销,提高控制效率。
1.一种数据流量控制方法,其特征在于,该方法建立至少一个用于缓存数据流的队列,并为每个队列设置带宽保障限制,所述带宽保障限制是指在队列调度时对队列限制最大带宽,或对队列限制最小带宽,设置每个队列的初始状态为就绪状态;还包括:
A、通过流分类将报文缓存到对应的队列;
B、针对当前所有处于就绪状态的队列执行调度计算,从所述处于就绪状态的队列中确定出需要取出报文的队列;
C、从所确定出的队列中取出批量的报文,并发送所取出的报文;
D、进行带宽检测,如果当前发送报文的带宽符合当前队列的带宽保障限制,则返回步骤B;否则进入步骤E;
E、将当前队列的状态暂时设置为等待状态,返回步骤B,并确定状态延续时间,在该状态延续时间达到后将该队列的状态恢复为就绪状态。
2.根据权利要求1所述的方法,其特征在于,该方法进一步设置每个队列的优先级;所述步骤B具体包括:从当前所有处于就绪状态的队列中选出优先级最高的队列,若优先级最高的队列只有一个则将该队列作为需要取出报文的队列;若优先级最高的队列有两个以上,则按照遍历方式或指定的确定方式从优先级最高的队列中确定出一个队列作为需要取出报文的队列。
3.根据权利要求1所述的方法,其特征在于,在步骤B之后、步骤C之前,进一步包括:
B1、判断所确定出的队列是否为空,若为空则进入步骤E,否则进入步骤C。
4.根据权利要求1所述的方法,其特征在于,所述步骤C中,所述取出批量的报文,具体为:
取出指定批量个数的报文;
或者取出指定批量字节数范围的报文。
5.根据权利要求4所述的方法,其特征在于,所述步骤C中,如果所述确定出的队列中的所有报文数量小于所述指定批量个数,或所述确定出的队列中的所有报文字节数小于所述指定批量字节数范围,则取出该队列中的所有报文,并发送所取出的报文。
6.根据权利要求1所述的方法,其特征在于,所述步骤D中进行带宽检测的具体方式为令牌桶方式,具体包括:
按照当前队列的带宽保障限制的带宽速率,向为当前队列预先对应设置的令牌桶中注入对应的令牌数量;
以所述令牌桶中的当前实际令牌数量减去步骤C所发送报文需要消耗的令牌数量得到差值Y,判断Y是否为负,如果为负则判定当前带宽不符合当前队列的带宽保障的限制,否则判定当前带宽符合当前队列的带宽保障的限制。
7.根据权利要求6所述的方法,其特征在于,所述令牌的单位为发送单位字节所需要的时间;
步骤E中,所述确定状态延续时间的具体方式为:取所述差值Y的绝对值,将该Y的绝对值乘以一个令牌的单位,得到的时长为所述状态延续时间。
8.一种数据流量控制装置,其特征在于,该控制装置包括:
队列建立模块,用于建立至少一个用于缓存数据流的队列,并用于为每个队列设置带宽保障限制,所述带宽保障限制是指在队列调度时对队列限制最大带宽,或对队列限制最小带宽,设置每个队列的初始状态为就绪状态;
流分类模块,用于通过流分类将报文缓存到对应的队列;
调度模块,在触发后用于针对当前所有处于就绪状态的队列执行调度计算,从所述处于就绪状态的队列中确定出需要取出报文的队列;
发送模块,用于从所述调度模块所确定出的队列中取出批量的报文,并发送所取出的报文;
带宽检测模块,用于对所述发送模块发送报文的带宽进行检测,如果当前发送报文的带宽符合当前队列的带宽保障限制,则重新触发所述调度模块进行新的调度计算;否则触发后续的状态修改模块;
状态修改模块,在触发后用于将所述带宽检测模块所检测出的不符合对应带宽保障限制的队列的状态暂时设置为等待状态,重新触发所述调度模块进行新的调度计算,并确定状态延续时间,在该状态延续时间达到后将该队列的状态恢复为就绪状态。
9.根据权利要求8所述的控制装置,其特征在于,
所述队列建立模块进一步用于设置每个队列的优先级;
且所述调度模块具体用于:从当前所有处于就绪状态的队列中选出优先级最高的队列,若优先级最高的队列只有一个则将该队列作为需要取出报文的队列;若优先级最高的队列有两个以上,则按照遍历方式或指定的确定方式从优先级最高的队列中确定出一个队列作为需要取出报文的队列。
10.根据权利要求8所述的控制装置,其特征在于,在所述调度模块和发送模块之间进一步包括队列判断模块,用于判断所述调度模块所确定出的队列是否为空,若为空则触发所述状态修改模块,否则触发所述发送模块。
一种数据流量控制方法和装置\n技术领域\n[0001] 本申请涉及数据通信技术领域,尤其涉及一种数据流量控制方法和装置。\n背景技术\n[0002] 现有的数据通信设备中,在分组交换以及多用户业务并存的复杂通信环境下,数据传输的拥塞是不可避免的。现有技术中,对拥塞管理一般采用队列机制进行流量控制,通过相应的队列调度方法将对应队列的流量分发出去。\n[0003] 在多用户多业务的情况下,针对不同的用户或业务,可能需要不同的带宽,这时数据流量控制方案的目的之一就是为不同的用户或业务提供相应的带宽保障。例如对于一些低延迟、抖动和丢包率较低的业务,这类业务一般需要为其保障一个相对稳定的速率(即带宽)。再例如还有一些上网业务在没有超过最大允许带宽时能够确保转发,这些业务的带宽需求量就稍低。还例如,有些视频会议类的业务需要传输大量视音频数据,这些业务就需要占用较大的带宽。\n[0004] 现有技术中在多用户多业务的情况下的数据流量控制方法,需要对用户或业务带宽进行区分保障,其中主要包括队列调度过程和带宽检测过程,所述带宽检测主要采用令牌桶的方式检测队列的带宽,根据带宽检测的结果进行相应队列的数据流量的控制调度。\n现有技术的数据流量控制方法主要采用执行一次调度发送一个报文的方式,其具体过程包括以下步骤:\n[0005] 步骤11、通过流分类将报文缓存到不同的队列。\n[0006] 步骤12、执行一次调度计算,确定出需要取出报文的队列,即需要从哪个队列取出报文。\n[0007] 步骤13、从所确定出的队列中取出一个报文。\n[0008] 步骤14、进行带宽检测,例如在令牌桶方式中是将所取出的报文通过令牌桶,检测是否满足发送条件,如果满足条件即检测通过则进行步骤15,否则返回步骤12重复操作。\n[0009] 步骤15、发送所述取出的报文。\n[0010] 步骤16、返回步骤12,以重复执行所述步骤12至步骤15。\n[0011] 但是,上述现有技术的存在的技术问题是:\n[0012] 执行一次调度(即从所述步骤12至步骤15)只发送一个报文,因此需要执行调度的次数太多,而其中的调度计算和带宽检测步骤都需要耗费时间开销和计算资源开销(如处理器开销、内存开销等等),其中时间开销大更会导致其控制效率低下。这种大量的开销不但使得整个设备的数据吞吐量较低,而且由于其效率低下,无法满足高速数据口的带宽保障要求。\n发明内容\n[0013] 有鉴于此,本发明的主要目的在于提供一种数据流量控制方法和装置,以降低流量控制中的开销,提高控制效率。\n[0014] 本发明的技术方案是这样实现的:\n[0015] 一种数据流量控制方法,该方法建立至少一个用于缓存数据流的队列,并为每个队列设置带宽保障限制,设置每个队列的初始状态为就绪状态;还包括:\n[0016] A、通过流分类将报文缓存到对应的队列;\n[0017] B、针对当前所有处于就绪状态的队列执行调度计算,从所述处于就绪状态的队列中确定出需要取出报文的队列;\n[0018] C、从所确定出的队列中取出批量的报文,并发送所取出的报文;\n[0019] D、进行带宽检测,如果当前发送报文的带宽符合当前队列的带宽保障限制,则返回步骤B;否则进入步骤E;\n[0020] E、将当前队列的状态暂时设置为等待状态,返回步骤B,并确定状态延续时间,在该状态延续时间达到后将该队列的状态恢复为就绪状态。\n[0021] 在一种优选方式中,该方法进一步设置每个队列的优先级;所述步骤B具体包括:\n从当前所有处于就绪状态的队列中选出优先级最高的队列,若优先级最高的队列只有一个则将该队列作为需要取出报文的队列;若优先级最高的队列有两个以上,则按照遍历方式或指定的确定方式从优先级最高的队列中确定出一个队列作为需要取出报文的队列。\n[0022] 在一种优选方式中,该方法在步骤B之后、步骤C之前,进一步包括:\n[0023] B1、判断所确定出的队列是否为空,若为空则进入步骤E,否则进入步骤C。\n[0024] 在一种优选方式中,所述步骤C中,所述取出批量的报文,具体为:取出指定批量个数的报文;或者取出指定批量字节数范围的报文。\n[0025] 在一种优选方式中,所述步骤C中,如果所述确定出的队列中的所有报文数量小于所述指定批量个数,或所述确定出的队列中的所有报文字节数小于所述指定批量字节数范围,则取出该队列中的所有报文,并发送所取出的报文。\n[0026] 在一种优选方式中,所述步骤D中进行带宽检测的具体方式为令牌桶方式,具体包括:按照当前队列的带宽保障限制的带宽速率,向为当前队列预先对应设置的令牌桶中注入对应的令牌数量;以所述令牌桶中的当前实际令牌数量减去步骤C所发送报文需要消耗的令牌数量得到差值Y,判断Y是否为负,如果为负则判定当前带宽不符合当前队列的带宽保障的限制,否则判定当前带宽符合当前队列的带宽保障的限制。\n[0027] 在一种优选方式中,所述令牌的单位为发送单位字节所需要的时间;步骤E中,所述确定状态延续时间的具体方式为:取所述差值Y的绝对值,将该Y的绝对值乘以一个令牌的单位,得到的时长为所述状态延续时间。\n[0028] 一种数据流量控制装置,该控制装置包括:\n[0029] 队列建立模块,用于建立至少一个用于缓存数据流的队列,并用于为每个队列设置带宽保障限制,设置每个队列的初始状态为就绪状态;\n[0030] 流分类模块,用于通过流分类将报文缓存到对应的队列;\n[0031] 调度模块,在触发后用于针对当前所有处于就绪状态的队列执行调度计算,从所述处于就绪状态的队列中确定出需要取出报文的队列;\n[0032] 发送模块,用于从所述调度模块所确定出的队列中取出批量的报文,并发送所取出的报文;\n[0033] 带宽检测模块,用于对所述发送模块发送报文的带宽进行检测,如果当前发送报文的带宽符合当前队列的带宽保障限制,则重新触发所述调度模块进行新的调度计算;否则触发后续的状态修改模块;\n[0034] 状态修改模块,在触发后用于将所述带宽检测模块所检测出的不符合对应带宽保障限制的队列的状态暂时设置为等待状态,重新触发所述调度模块进行新的调度计算,并确定状态延续时间,在该状态延续时间达到后将该队列的状态恢复为就绪状态。\n[0035] 在一种优选方式中,所述队列建立模块进一步用于设置每个队列的优先级;且所述调度模块具体用于:从当前所有处于就绪状态的队列中选出优先级最高的队列,若优先级最高的队列只有一个则将该队列作为需要取出报文的队列;若优先级最高的队列有两个以上,则按照遍历方式或指定的确定方式从优先级最高的队列中确定出一个队列作为需要取出报文的队列。\n[0036] 在一种优选方式中,在所述调度模块和发送模块之间进一步包括队列判断模块,用于判断所述调度模块所确定出的队列是否为空,若为空则触发所述状态修改模块,否则触发所述发送模块。\n[0037] 与现有技术相比,本发明所述的流量控制方法和装置,一次批量发送报文只需要一次调度计算和一次带宽检测,进而大大降低调度过程中大量时间开销和计算资源开销,以满足越来越高的带宽保障需求。为了满足一次调用批量发送报文的要求,本发明还为每个队列设置状态,在带宽检测符合当前队列的带宽保障限制时,可以不改变当前队列的就绪状态,而在当前带宽不符合当前队列的带宽保障限制时,则需要暂时改变当前队列的就绪状态,从而既实现了批量发送报文,又实现了按照带宽检测结果调度不同队列,整体上实现了不同用户或业务的不同带宽保障要求。同时由于一次批量发送报文,整个流量控制过程中的调度计算和带宽检测的次数明显较少,降低了时间开销和计算资源(如CPU资源和内存资源等)开销,提高了流量控制的效率,尤其是可以满足高速数据口的带宽保障要求,满足了通信系统中越来越高速的带宽需求。\n附图说明\n[0038] 图1为本发明所述流量控制方法在发送报文时的一种主要流程图;\n[0039] 图2为本发明所述应用场景一的一种队列示意图;\n[0040] 图3为在所述应用场景一中本发明实施例的一种具体流程示意图;\n[0041] 图4为本发明所述应用场景二的一种队列示意图;\n[0042] 图5为在所述应用场景二中本发明实施例的一种具体流程示意图;\n[0043] 图6为本发明所述流量控制装置的一种组成示意图;\n[0044] 图7为本发明所述流量控制装置的又一种组成示意图;。\n具体实施方式\n[0045] 下面结合附图及具体实施例对本发明再作进一步详细的说明。\n[0046] 本发明所述的流量控制方法,建立至少一个用于缓存数据流的队列,并为每个队列设置带宽保障限制;所述的带宽保障限制一般是指在队列调度时对某些队列限制最大带宽,即该队列最大只能流出的流量带宽,而对某些队列则限制最小带宽,即该队列最低能流出的流量带宽。本领域技术人员知道,所述的带宽是一种速率,即每秒可传输的数据量,用于表示通信线路所能传送数据的能力。在初始化设置所述队列的带宽保障限制后,还可以根据需要对所述带宽保障限制进行修改。\n[0047] 本发明的方法还要设置所划分的每个队列的初始状态,所述队列的状态在本发明中分为就绪状态和等待状态。其中就绪状态是指该队列需要被作为调度的候选对象,而等待状态是指该队列不需被作为调度的候选对象。\n[0048] 图1为本发明所述流量控制方法在发送报文时的一种主要流程图。参见图1,该流程主要包括:\n[0049] 步骤101、通过流分类将报文缓存到对应的队列。\n[0050] 例如本发明可以根据不同的用户或者不用的业务对数据流进行分类,例如普通上网业务的数据流缓存到一个对应队列中,视频点播类业务的数据流缓存到一个对应队列中,网络会议业务的数据流缓存到一个对应的队列中,等等。\n[0051] 步骤102、针对当前所有处于就绪状态的队列执行调度计算,从所述处于就绪状态的队列中确定出需要取出报文的队列。\n[0052] 在本步骤中,所述的调度计算方式可以有多种,例如:\n[0053] 如果队列之间不分优先级,则最简单的方式就是利用遍历每个队列的方式,依次遍历选择一个队列作为需要取出报文的队列,或者可以利用其它指定的确定方式(例如按照某种策略进行筛选等等,具体方式本发明不做限定)从所有处于就绪状态的队列选择出一个队列作为需要取出报文的队列。\n[0054] 如果本发明进一步设置了每个队列的优先级,即所述队列之间区分优先级,则本步骤中的调度计算方式具体包括:从当前所有处于就绪状态的队列中选出优先级最高的队列,若优先级最高的队列只有一个则将该队列作为需要取出报文的队列;若优先级最高的队列有两个以上,则按照所述遍历方式或指定的确定方式从优先级最高的队列中确定出一个队列作为需要取出报文的队列。\n[0055] 步骤103、从步骤102所确定出的队列中取出批量的报文,并发送所取出的报文。\n[0056] 本步骤103中,所述取出批量的报文,具体为:取出指定批量个数(例如20个)的报文;或者取出指定批量字节数范围的报文,例如可以指定批量字节数为2500字节数,上下浮动100字节范围,则可以发送总字节数为2400~2600的若干个报文。\n[0057] 如果步骤102所确定出的队列中的所有报文数量小于所述指定批量个数时,或所述确定出的队列中的所有报文字节数小于所述指定批量字节数范围时,则取出该队列中的所有报文,并发送所取出的报文。\n[0058] 当然,在一种实施方式中,在上述步骤102之后、步骤103之前,还可以进一步判断所述步骤102所确定出的队列是否为空,即其中是否缓存有报文,若没有缓存报文则为空,此时进入后续步骤105,否则进入步骤103。\n[0059] 步骤104、对当前发送报文的过程进行带宽检测,如果当前发送报文的带宽符合当前队列的带宽保障限制,则返回步骤102;否则进入步骤105。\n[0060] 本步骤104中,所述进行带宽检测的具体方式可以采用令牌桶方式,具体包括:按照当前队列的带宽保障限制的带宽速率,向为当前队列预先对应设置的令牌桶中注入对应的令牌数量,例如如果当前队列的带宽保障限制为最少200M,则按照至少200M的带宽速率向该队列对应的令牌桶注入对应的令牌数量;所述令牌的单位为发送单位字节所需要的时间(例如发送一个字节所需要的时间);在进行带宽检测时,以所述令牌桶中的当前实际令牌数量减去步骤103所发送报文需要消耗的令牌数量得到差值Y,判断Y是否为负,如果为负则判定当前带宽不符合当前队列的带宽保障的限制,否则判定当前带宽符合当前队列的带宽保障的限制。\n[0061] 步骤105、将当前队列的状态暂时设置为等待状态,返回步骤102,并确定状态延续时间,在该状态延续时间达到后将该队列的状态恢复为就绪状态。\n[0062] 当前队列的状态设置为等待状态后,则在重新执行步骤102中,该队列不需要被作为调度的候选对象;在该队列的状态恢复为就绪状态后,则在重新执行步骤102中,该队列需要被作为调度的候选对象。\n[0063] 所述状态延续时间就是所述等待状态的延续时间,所述确定状态延续时间的具体方式为:取上述步骤104得到的差值Y的绝对值,将该Y的绝对值乘以一个令牌的单位(即发送单位字节所需要的时间),得到的时长为所述状态延续时间。在具体应用时,可以在将当前队列的状态暂时设置为等待状态后立即启动一个对应的定时器,该定时器的定时时长为所述状态延续时间,在该定时器超时后则将该定时器对应的队列的状态恢复为就绪状态,之后再重新执行步骤102时,则该队列又可以被作为调度的候选对象。\n[0064] 下面通过两个具体应用场景中的实施例来进一步说明本发明的方案。\n[0065] 场景一。\n[0066] 假定某接口带宽1000M,需要提供三条不同的业务流量,分别是F1、F2和F3。为每个队列设置带宽保障限制,例如在该场景中要求F1至少保障200M带宽,F2至少保障300M带宽,F3至少保障300M带宽。F1、F2、F3的业务报文需要分别缓存到不同的队列,如分别是队列1(Queue1)、队列2(Queue2)、队列3(Queue3),并且三个队列的优先级相同,设置批量发送的报文个数为20个。\n[0067] 根据上述假定场景,把所述三个队列放在同一个优先级行(slot)(或者称为优先级链)上,如图2为本发明所述应用场景一的一种队列示意图,在初始化时队列1、队列2和队列3均是在一个优先级行上,且三个队列的状态都默认为就绪状态。假设在调度时,队列中已经缓存了报文,假设三个队列都已经缓存了100个报文,此时对所有的处于就绪状态的队列执行调度计算,选出需要取出报文的队列。假设本实施例中利用最基本的遍历方式来选择需要取出报文的队列,其选择次序如图2中的箭头所示,依次是队列1、队列2、队列\n3。\n[0068] 图3为在所述应用场景一中本发明实施例的一种具体流程示意图。参见图3,该流程具体包括:\n[0069] 步骤301、从当前处于就绪状态的所有队列中选出需要取出报文的队列。例如本实施例中利用最基本的遍历方式首先选出了队列1需要出队,即需要从队列1中取出报文。\n之后将该队列1作为当前队列,需要执行以下步骤302~步骤308。\n[0070] 步骤302、判断当前的队列(即队列1)是否为空,即是否缓存有报文,如果没有缓存报文则为空,直接进入步骤307;如果缓存有报文则非空,进入步骤303。\n[0071] 步骤303、从当前队列中批量取出并发送指定数量个报文,例如此实施例中设置为批量发送20个报文。如果当前队列中的全部报文数没有达到20个,则发出这些全部的报文。\n[0072] 步骤304、利用令牌桶的方式对当前队列发送报文的数据流进行带宽检测。\n[0073] 步骤305、判断带宽检测结果是否符合当前队列对应的带宽保障限制,如果符合则进入步骤306,否则进入步骤307。\n[0074] 步骤306、继续进行下一次调度处理,即还是以所述处于就绪状态的所有队列为候选对象,此时为队列1、队列2、和队列3,利用调度算法,例如此处为遍历方式,进行调度处理。例如后续利用遍历方式从队列1、队列2、和队列3中确定出队列2为需要取出报文的队列,将该队列2作为当前队列进行所述步骤302至步骤308的处理。\n[0075] 步骤307、将当前队列(此时即队列1)的状态设置为等待状态,并启动定时器,之后进入步骤308,在定时器超时后再将该队列的状态恢复为就绪状态。\n[0076] 所述定时器的时长为:利用上述步骤104得到的差值Y的绝对值乘以一个令牌的单位(即发送单位字节所需要的时间)得到的时长,从而使得该定时器在保证当前队列的带宽能符合其带宽保障限制时就超时。\n[0077] 步骤308、继续进行下一次调度处理,这时是以所述处于就绪状态的所有队列为候选对象,此时为队列2和队列3,利用调度算法,例如此处为遍历方式,进行调度处理。例如后续利用遍历方式利用遍历方式从队列2和队列3中确定出队列2为需要取出报文的队列,将该队列2作为当前队列进行所述步骤302至步骤308的处理。\n[0078] 从上面的应用场景中很容易看出,如果队列中存在100个报文,只需要经过5次调度就能全部发送出去。从而大大减少了调度的时间开销和计算资源的开销,提高了流量控制的效率。\n[0079] 场景二:\n[0080] 假定某接口带宽1000M,需要提供三条不同的业务流量,分别是F1、F2和F3。为每个队列设置带宽保障限制,例如在该场景中要求F1至少保障200M带宽,F2至少保障300M带宽,F3至少保障300M带宽。F1、F2、F3的业务报文需要分别缓存到不同的队列,如分别是队列1(Queue1)、队列2(Queue2)、队列3(Queue3),三个队列的优先级为队列1>队列\n2>队列3,设置批量发送报文字节为2500字节。\n[0081] 根据上述假定场景,把所述三个队列放在三个优先级行(slot)上,如图4为本发明所述应用场景二的一种队列示意图,在初始化时队列1、队列2和队列3分别放在不同的优先级行上,且三个队列的状态都默认为就绪状态。假设在调度时,队列中已经缓存了报文,假设三个队列都已经缓存了100个报文,此时对所有的处于就绪状态的队列执行调度计算,选出需要取出报文的队列。假设本实施例中先利用优先级高低选择需要取出报文的队列,其选择次序如图4所示,依次是队列1、队列2、队列3。\n[0082] 图5为在所述应用场景二中本发明实施例的一种具体流程示意图。参见图5,该流程具体包括:\n[0083] 步骤501、从当前处于就绪状态的所有队列中选出需要取出报文的队列。例如本实施例中利用优先级优选方式首先选出了队列1需要出队,即需要从队列1中取出报文。之后将该队列1作为当前队列,需要执行以下步骤502~步骤508。\n[0084] 步骤502、判断当前的队列(即队列1)是否为空,即是否缓存有报文,如果没有缓存报文则为空,直接进入步骤507;如果缓存有报文则非空,进入步骤503。\n[0085] 步骤503、从当前队列中批量取出并发送指定字节数的报文,例如此实施例中设置为批量发送2500个字节的报文,相当于25个报文。如果当前队列中的全部报文的总字节数没有达到2500个字节,则发出这些全部的报文。所述2500字节数也可以上下浮动,例如上下浮动100字节范围,则可以发送总字节数为2400~2600的若干个报文。\n[0086] 步骤504、利用令牌桶的方式对当前队列发送报文的数据流进行带宽检测。\n[0087] 步骤505、判断带宽检测结果是否符合当前队列对应的带宽保障限制,如果符合则进入步骤506,否则进入步骤507。\n[0088] 步骤506、继续进行下一次调度处理,即还是以所述处于就绪状态的所有队列为候选对象,此时为队列1、队列2、和队列3,利用调度算法,例如此处为按照优先级选择的方式,进行调度处理。例如后续按照优先级次序从队列1、队列2、和队列3中确定出队列2为需要取出报文的队列,将该队列2作为当前队列进行所述步骤502至步骤508的处理。\n[0089] 步骤507、将当前队列(此时即队列1)的状态设置为等待状态,并启动定时器,之后进入步骤508,在定时器超时后再将该队列的状态恢复为就绪状态。\n[0090] 所述定时器的时长为:利用上述步骤104得到的差值Y的绝对值乘以一个令牌的单位(即发送单位字节所需要的时间)得到的时长,从而使得该定时器在保证当前队列的带宽能符合其带宽保障限制时就超时。\n[0091] 步骤508、继续进行下一次调度处理,这时是以所述处于就绪状态的所有队列为候选对象,此时为队列2和队列3,利用调度算法,例如此处为按照优先级选取方式,进行调度处理。例如后续按照优先级次序从队列2和队列3中确定出队列2为需要取出报文的队列,将该队列2作为当前队列进行所述步骤502至步骤508的处理。\n[0092] 从上面的应用场景二中很容易看出,如果队列中存在100个报文,每个报文长度为100字节,则只需要经过4次调度就能全部发送出去。从而大大减少了调度的时间开销和计算资源的开销,提高了流量控制的效率。\n[0093] 与上述方法对应,本发明还公开了一种数据流量控制装置,用于执行上述的方法。\n图6为本发明所述流量控制装置的一种组成示意图;参见图6,该控制装置包括:\n[0094] 队列建立模块601,用于建立至少一个用于缓存数据流的队列,并用于为每个队列设置带宽保障限制,设置每个队列的初始状态为就绪状态。\n[0095] 流分类模块602,用于通过流分类将报文缓存到对应的队列。\n[0096] 调度模块603,在触发后用于针对当前所有处于就绪状态的队列执行调度计算,从所述处于就绪状态的队列中确定出需要取出报文的队列;\n[0097] 发送模块604,用于从所述调度模块603所确定出的队列中取出批量的报文,并发送所取出的报文;\n[0098] 带宽检测模块605,用于对所述发送模块604发送报文的带宽进行检测,如果当前发送报文的带宽符合当前队列的带宽保障限制,则重新触发所述调度模块603进行新的调度计算;否则触发后续的状态修改模块606;\n[0099] 状态修改模块606,在触发后用于将所述带宽检测模块605所检测出的不符合对应带宽保障限制的队列的状态暂时设置为等待状态,重新触发所述调度模块603进行新的调度计算,并确定状态延续时间,在该状态延续时间达到后将该队列的状态恢复为就绪状态。\n[0100] 与上述方法对应的,在该控制装置的一种实施例中,所述队列建立模块进一步用于设置每个队列的优先级;且所述调度模块具体用于:从当前所有处于就绪状态的队列中选出优先级最高的队列,若优先级最高的队列只有一个则将该队列作为需要取出报文的队列;若优先级最高的队列有两个以上,则按照遍历方式或指定的确定方式从优先级最高的队列中确定出一个队列作为需要取出报文的队列。\n[0101] 另外与上述方法对应的,该控制装置的一种实施例中,如图7所示,在所述调度模块603和发送模块604之间进一步包括队列判断模块607,用于判断所述调度模块603所确定出的队列是否为空,若为空则触发所述状态修改模块606进行对应操作,否则触发所述发送模块604从所述调度模块603所确定出的队列中取出批量的报文,并发送所取出的报文。\n[0102] 所述控制装置各个模块的具体执行方法,与上述方法中公开的具体方法相同,本文不再赘述。\n[0103] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
法律信息
- 2015-09-23
- 2013-01-30
实质审查的生效
IPC(主分类): H04L 12/56
专利申请号: 201210309304.7
申请日: 2012.08.28
- 2012-12-05
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2006-06-07
|
2004-12-01
| | |
2
| |
2012-03-21
|
2011-10-19
| | |
3
| | 暂无 |
2004-06-30
| | |
4
| |
2006-04-26
|
2004-10-20
| | |
5
| |
2003-04-30
|
2002-02-27
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |