一种数据流量控制方法和装置.pdf

上传人:1****2 文档编号:4752722 上传时间:2018-11-06 格式:PDF 页数:17 大小:2.77MB
返回 下载 相关 举报
摘要
申请专利号:

CN201210309304.7

申请日:

2012.08.28

公开号:

CN102811176A

公开日:

2012.12.05

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 12/56申请日:20120828|||公开

IPC分类号:

H04L12/56

主分类号:

H04L12/56

申请人:

迈普通信技术股份有限公司

发明人:

申曙光; 胥攀

地址:

610041 四川省成都市高新区九兴大道16号迈普大厦

优先权:

专利代理机构:

北京德琦知识产权代理有限公司 11018

代理人:

张晓峰;宋志强

PDF下载: PDF下载
内容摘要

本申请公开了一种数据流量控制方法,建立至少一个用于缓存数据流的队列,并为每个队列设置带宽保障限制,设置队列初始为就绪状态;还包括: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: 一种数据流量控制装置, 其特征在于, 该控制装置包括 : 队列建立模块, 用于建立至少一个用于缓存数据流的队列, 并用于为每个队列设置带 宽保障限制, 设置每个队列的初始状态为就绪状态 ; 流分类模块, 用于通过流分类将报文缓存到对应的队列 ; 2 调度模块, 在触发后用于针对当前所有处于就绪状态的队列执行调度计算, 从所述处 于就绪状态的队列中确定出需要取出报文的队列 ; 发送模块, 用于从所述调度模块所确定出的队列中取出批量的报文, 并发送所取出的 报文 ; 带宽检测模块, 用于对所述发送模块发送报文的带宽进行检测, 如果当前发送报文的 带宽符合当前队列的带宽保障限制, 则重新触发所述调度模块进行新的调度计算 ; 否则触 发后续的状态修改模块 ; 状态修改模块, 在触发后用于将所述带宽检测模块所检测出的不符合对应带宽保障限 制的队列的状态暂时设置为等待状态, 重新触发所述调度模块进行新的调度计算, 并确定 状态延续时间, 在该状态延续时间达到后将该队列的状态恢复为就绪状态。9: 根据权利要求 8 所述的控制装置, 其特征在于, 所述队列建立模块进一步用于设置每个队列的优先级 ; 且所述调度模块具体用于 : 从当前所有处于就绪状态的队列中选出优先级最高的队 列, 若优先级最高的队列只有一个则将该队列作为需要取出报文的队列 ; 若优先级最高的 队列有两个以上, 则按照遍历方式或指定的确定方式从优先级最高的队列中确定出一个队 列作为需要取出报文的队列。10: 根据权利要求 8 所述的控制装置, 其特征在于, 在所述调度模块和发送模块之间进 一步包括队列判断模块, 用于判断所述调度模块所确定出的队列是否为空, 若为空则触发 所述状态修改模块, 否则触发所述发送模块。

说明书


一种数据流量控制方法和装置

    【技术领域】
     本申请涉及数据通信技术领域, 尤其涉及一种数据流量控制方法和装置。背景技术 现有的数据通信设备中, 在分组交换以及多用户业务并存的复杂通信环境下, 数 据传输的拥塞是不可避免的。 现有技术中, 对拥塞管理一般采用队列机制进行流量控制, 通 过相应的队列调度方法将对应队列的流量分发出去。
     在多用户多业务的情况下, 针对不同的用户或业务, 可能需要不同的带宽, 这时数 据流量控制方案的目的之一就是为不同的用户或业务提供相应的带宽保障。 例如对于一些 低延迟、 抖动和丢包率较低的业务, 这类业务一般需要为其保障一个相对稳定的速率 (即带 宽) 。再例如还有一些上网业务在没有超过最大允许带宽时能够确保转发, 这些业务的带宽 需求量就稍低。 还例如, 有些视频会议类的业务需要传输大量视音频数据, 这些业务就需要 占用较大的带宽。
     现有技术中在多用户多业务的情况下的数据流量控制方法, 需要对用户或业务带 宽进行区分保障, 其中主要包括队列调度过程和带宽检测过程, 所述带宽检测主要采用令 牌桶的方式检测队列的带宽, 根据带宽检测的结果进行相应队列的数据流量的控制调度。 现有技术的数据流量控制方法主要采用执行一次调度发送一个报文的方式, 其具体过程包 括以下步骤 :
     步骤 11、 通过流分类将报文缓存到不同的队列。
     步骤 12、 执行一次调度计算, 确定出需要取出报文的队列, 即需要从哪个队列取出 报文。
     步骤 13、 从所确定出的队列中取出一个报文。
     步骤 14、 进行带宽检测, 例如在令牌桶方式中是将所取出的报文通过令牌桶, 检测 是否满足发送条件, 如果满足条件即检测通过则进行步骤 15, 否则返回步骤 12 重复操作。
     步骤 15、 发送所述取出的报文。
     步骤 16、 返回步骤 12, 以重复执行所述步骤 12 至步骤 15。
     但是, 上述现有技术的存在的技术问题是 :
     执行一次调度 (即从所述步骤 12 至步骤 15) 只发送一个报文, 因此需要执行调度 的次数太多, 而其中的调度计算和带宽检测步骤都需要耗费时间开销和计算资源开销 (如 处理器开销、 内存开销等等) , 其中时间开销大更会导致其控制效率低下。这种大量的开销 不但使得整个设备的数据吞吐量较低, 而且由于其效率低下, 无法满足高速数据口的带宽 保障要求。
     发明内容
     有鉴于此, 本发明的主要目的在于提供一种数据流量控制方法和装置, 以降低流 量控制中的开销, 提高控制效率。本发明的技术方案是这样实现的 :
     一种数据流量控制方法, 该方法建立至少一个用于缓存数据流的队列, 并为每个 队列设置带宽保障限制, 设置每个队列的初始状态为就绪状态 ; 还包括 :
     A、 通过流分类将报文缓存到对应的队列 ;
     B、 针对当前所有处于就绪状态的队列执行调度计算, 从所述处于就绪状态的队列 中确定出需要取出报文的队列 ;
     C、 从所确定出的队列中取出批量的报文, 并发送所取出的报文 ;
     D、 进行带宽检测, 如果当前发送报文的带宽符合当前队列的带宽保障限制, 则返 回步骤 B ; 否则进入步骤 E ;
     E、 将当前队列的状态暂时设置为等待状态, 返回步骤 B, 并确定状态延续时间, 在 该状态延续时间达到后将该队列的状态恢复为就绪状态。
     在一种优选方式中, 该方法进一步设置每个队列的优先级 ; 所述步骤 B 具体包括 : 从当前所有处于就绪状态的队列中选出优先级最高的队列, 若优先级最高的队列只有一个 则将该队列作为需要取出报文的队列 ; 若优先级最高的队列有两个以上, 则按照遍历方式 或指定的确定方式从优先级最高的队列中确定出一个队列作为需要取出报文的队列。 在一种优选方式中, 该方法在步骤 B 之后、 步骤 C 之前, 进一步包括 :
     B1、 判断所确定出的队列是否为空, 若为空则进入步骤 E, 否则进入步骤 C。
     在一种优选方式中, 所述步骤 C 中, 所述取出批量的报文, 具体为 : 取出指定批量 个数的报文 ; 或者取出指定批量字节数范围的报文。
     在一种优选方式中, 所述步骤 C 中, 如果所述确定出的队列中的所有报文数量小 于所述指定批量个数, 或所述确定出的队列中的所有报文字节数小于所述指定批量字节数 范围, 则取出该队列中的所有报文, 并发送所取出的报文。
     在一种优选方式中, 所述步骤 D 中进行带宽检测的具体方式为令牌桶方式, 具体 包括 : 按照当前队列的带宽保障限制的带宽速率, 向为当前队列预先对应设置的令牌桶中 注入对应的令牌数量 ; 以所述令牌桶中的当前实际令牌数量减去步骤 C 所发送报文需要消 耗的令牌数量得到差值 Y, 判断 Y 是否为负, 如果为负则判定当前带宽不符合当前队列的带 宽保障的限制, 否则判定当前带宽符合当前队列的带宽保障的限制。
     在一种优选方式中, 所述令牌的单位为发送单位字节所需要的时间 ; 步骤 E 中, 所 述确定状态延续时间的具体方式为 : 取所述差值 Y 的绝对值, 将该 Y 的绝对值乘以一个令牌 的单位, 得到的时长为所述状态延续时间。
     一种数据流量控制装置, 该控制装置包括 :
     队列建立模块, 用于建立至少一个用于缓存数据流的队列, 并用于为每个队列设 置带宽保障限制, 设置每个队列的初始状态为就绪状态 ;
     流分类模块, 用于通过流分类将报文缓存到对应的队列 ;
     调度模块, 在触发后用于针对当前所有处于就绪状态的队列执行调度计算, 从所 述处于就绪状态的队列中确定出需要取出报文的队列 ;
     发送模块, 用于从所述调度模块所确定出的队列中取出批量的报文, 并发送所取 出的报文 ;
     带宽检测模块, 用于对所述发送模块发送报文的带宽进行检测, 如果当前发送报
     文的带宽符合当前队列的带宽保障限制, 则重新触发所述调度模块进行新的调度计算 ; 否 则触发后续的状态修改模块 ;
     状态修改模块, 在触发后用于将所述带宽检测模块所检测出的不符合对应带宽保 障限制的队列的状态暂时设置为等待状态, 重新触发所述调度模块进行新的调度计算, 并 确定状态延续时间, 在该状态延续时间达到后将该队列的状态恢复为就绪状态。
     在一种优选方式中, 所述队列建立模块进一步用于设置每个队列的优先级 ; 且所 述调度模块具体用于 : 从当前所有处于就绪状态的队列中选出优先级最高的队列, 若优先 级最高的队列只有一个则将该队列作为需要取出报文的队列 ; 若优先级最高的队列有两个 以上, 则按照遍历方式或指定的确定方式从优先级最高的队列中确定出一个队列作为需要 取出报文的队列。
     在一种优选方式中, 在所述调度模块和发送模块之间进一步包括队列判断模块, 用于判断所述调度模块所确定出的队列是否为空, 若为空则触发所述状态修改模块, 否则 触发所述发送模块。
     与现有技术相比, 本发明所述的流量控制方法和装置, 一次批量发送报文只需要 一次调度计算和一次带宽检测, 进而大大降低调度过程中大量时间开销和计算资源开销, 以满足越来越高的带宽保障需求。为了满足一次调用批量发送报文的要求, 本发明还为每 个队列设置状态, 在带宽检测符合当前队列的带宽保障限制时, 可以不改变当前队列的就 绪状态, 而在当前带宽不符合当前队列的带宽保障限制时, 则需要暂时改变当前队列的就 绪状态, 从而既实现了批量发送报文, 又实现了按照带宽检测结果调度不同队列, 整体上实 现了不同用户或业务的不同带宽保障要求。同时由于一次批量发送报文, 整个流量控制过 程中的调度计算和带宽检测的次数明显较少, 降低了时间开销和计算资源 (如 CPU 资源和 内存资源等) 开销, 提高了流量控制的效率, 尤其是可以满足高速数据口的带宽保障要求, 满足了通信系统中越来越高速的带宽需求。 附图说明
     图 1 为本发明所述流量控制方法在发送报文时的一种主要流程图 ; 图 2 为本发明所述应用场景一的一种队列示意图 ; 图 3 为在所述应用场景一中本发明实施例的一种具体流程示意图 ; 图 4 为本发明所述应用场景二的一种队列示意图 ; 图 5 为在所述应用场景二中本发明实施例的一种具体流程示意图 ; 图 6 为本发明所述流量控制装置的一种组成示意图 ; 图 7 为本发明所述流量控制装置的又一种组成示意图 ; 。具体实施方式
     下面结合附图及具体实施例对本发明再作进一步详细的说明。
     本发明所述的流量控制方法, 建立至少一个用于缓存数据流的队列, 并为每个队 列设置带宽保障限制 ; 所述的带宽保障限制一般是指在队列调度时对某些队列限制最大带 宽, 即该队列最大只能流出的流量带宽, 而对某些队列则限制最小带宽, 即该队列最低能流 出的流量带宽。本领域技术人员知道, 所述的带宽是一种速率, 即每秒可传输的数据量, 用于表示通信线路所能传送数据的能力。在初始化设置所述队列的带宽保障限制后, 还可以 根据需要对所述带宽保障限制进行修改。
     本发明的方法还要设置所划分的每个队列的初始状态, 所述队列的状态在本发明 中分为就绪状态和等待状态。其中就绪状态是指该队列需要被作为调度的候选对象, 而等 待状态是指该队列不需被作为调度的候选对象。
     图 1 为本发明所述流量控制方法在发送报文时的一种主要流程图。 参见图 1, 该流 程主要包括 :
     步骤 101、 通过流分类将报文缓存到对应的队列。
     例如本发明可以根据不同的用户或者不用的业务对数据流进行分类, 例如普通上 网业务的数据流缓存到一个对应队列中, 视频点播类业务的数据流缓存到一个对应队列 中, 网络会议业务的数据流缓存到一个对应的队列中, 等等。
     步骤 102、 针对当前所有处于就绪状态的队列执行调度计算, 从所述处于就绪状态 的队列中确定出需要取出报文的队列。
     在本步骤中, 所述的调度计算方式可以有多种, 例如 :
     如果队列之间不分优先级, 则最简单的方式就是利用遍历每个队列的方式, 依次 遍历选择一个队列作为需要取出报文的队列, 或者可以利用其它指定的确定方式 (例如按 照某种策略进行筛选等等, 具体方式本发明不做限定) 从所有处于就绪状态的队列选择出 一个队列作为需要取出报文的队列。 如果本发明进一步设置了每个队列的优先级, 即所述队列之间区分优先级, 则本 步骤中的调度计算方式具体包括 : 从当前所有处于就绪状态的队列中选出优先级最高的队 列, 若优先级最高的队列只有一个则将该队列作为需要取出报文的队列 ; 若优先级最高的 队列有两个以上, 则按照所述遍历方式或指定的确定方式从优先级最高的队列中确定出一 个队列作为需要取出报文的队列。
     步骤 103、 从步骤 102 所确定出的队列中取出批量的报文, 并发送所取出的报文。
     本步骤 103 中, 所述取出批量的报文, 具体为 : 取出指定批量个数 (例如 20 个) 的 报文 ; 或者取出指定批量字节数范围的报文, 例如可以指定批量字节数为 2500 字节数, 上 下浮动 100 字节范围, 则可以发送总字节数为 2400~2600 的若干个报文。
     如果步骤 102 所确定出的队列中的所有报文数量小于所述指定批量个数时, 或所 述确定出的队列中的所有报文字节数小于所述指定批量字节数范围时, 则取出该队列中的 所有报文, 并发送所取出的报文。
     当然, 在一种实施方式中, 在上述步骤 102 之后、 步骤 103 之前, 还可以进一步判断 所述步骤 102 所确定出的队列是否为空, 即其中是否缓存有报文, 若没有缓存报文则为空, 此时进入后续步骤 105, 否则进入步骤 103。
     步骤 104、 对当前发送报文的过程进行带宽检测, 如果当前发送报文的带宽符合当 前队列的带宽保障限制, 则返回步骤 102 ; 否则进入步骤 105。
     本步骤 104 中, 所述进行带宽检测的具体方式可以采用令牌桶方式, 具体包括 : 按 照当前队列的带宽保障限制的带宽速率, 向为当前队列预先对应设置的令牌桶中注入对应 的令牌数量, 例如如果当前队列的带宽保障限制为最少 200M, 则按照至少 200M 的带宽速率 向该队列对应的令牌桶注入对应的令牌数量 ; 所述令牌的单位为发送单位字节所需要的时
     间 (例如发送一个字节所需要的时间) ; 在进行带宽检测时, 以所述令牌桶中的当前实际令 牌数量减去步骤 103 所发送报文需要消耗的令牌数量得到差值 Y, 判断 Y 是否为负, 如果为 负则判定当前带宽不符合当前队列的带宽保障的限制, 否则判定当前带宽符合当前队列的 带宽保障的限制。
     步骤 105、 将当前队列的状态暂时设置为等待状态, 返回步骤 102, 并确定状态延 续时间, 在该状态延续时间达到后将该队列的状态恢复为就绪状态。
     当前队列的状态设置为等待状态后, 则在重新执行步骤 102 中, 该队列不需要被 作为调度的候选对象 ; 在该队列的状态恢复为就绪状态后, 则在重新执行步骤 102 中, 该队 列需要被作为调度的候选对象。
     所述状态延续时间就是所述等待状态的延续时间, 所述确定状态延续时间的具体 方式为 : 取上述步骤 104 得到的差值 Y 的绝对值, 将该 Y 的绝对值乘以一个令牌的单位 (即 发送单位字节所需要的时间) , 得到的时长为所述状态延续时间。在具体应用时, 可以在将 当前队列的状态暂时设置为等待状态后立即启动一个对应的定时器, 该定时器的定时时 长为所述状态延续时间, 在该定时器超时后则将该定时器对应的队列的状态恢复为就绪状 态, 之后再重新执行步骤 102 时, 则该队列又可以被作为调度的候选对象。 下面通过两个具体应用场景中的实施例来进一步说明本发明的方案。
     场景一。
     假定某接口带宽 1000M, 需要提供三条不同的业务流量, 分别是 F1、 F2 和 F3。为每 个队列设置带宽保障限制, 例如在该场景中要求 F1 至少保障 200M 带宽, F2 至少保障 300M 带宽, F3 至少保障 300M 带宽。F1、 F2、 F3 的业务报文需要分别缓存到不同的队列, 如分别 是队列 1(Queue1) 、 队列 2(Queue2) 、 队列 3(Queue3) , 并且三个队列的优先级相同, 设置 批量发送的报文个数为 20 个。
     根据上述假定场景, 把所述三个队列放在同一个优先级行 (slot) (或者称为优先 级链) 上, 如图 2 为本发明所述应用场景一的一种队列示意图, 在初始化时队列 1、 队列 2 和 队列 3 均是在一个优先级行上, 且三个队列的状态都默认为就绪状态。假设在调度时, 队列 中已经缓存了报文, 假设三个队列都已经缓存了 100 个报文, 此时对所有的处于就绪状态 的队列执行调度计算, 选出需要取出报文的队列。假设本实施例中利用最基本的遍历方式 来选择需要取出报文的队列, 其选择次序如图 2 中的箭头所示, 依次是队列 1、 队列 2、 队列 3。
     图 3 为在所述应用场景一中本发明实施例的一种具体流程示意图。 参见图 3, 该流 程具体包括 :
     步骤 301、 从当前处于就绪状态的所有队列中选出需要取出报文的队列。例如本 实施例中利用最基本的遍历方式首先选出了队列 1 需要出队, 即需要从队列 1 中取出报文。 之后将该队列 1 作为当前队列, 需要执行以下步骤 302~ 步骤 308。
     步骤 302、 判断当前的队列 (即队列 1) 是否为空, 即是否缓存有报文, 如果没有缓 存报文则为空, 直接进入步骤 307 ; 如果缓存有报文则非空, 进入步骤 303。
     步骤 303、 从当前队列中批量取出并发送指定数量个报文, 例如此实施例中设置为 批量发送 20 个报文。如果当前队列中的全部报文数没有达到 20 个, 则发出这些全部的报 文。
     步骤 304、 利用令牌桶的方式对当前队列发送报文的数据流进行带宽检测。
     步骤 305、 判断带宽检测结果是否符合当前队列对应的带宽保障限制, 如果符合则 进入步骤 306, 否则进入步骤 307。
     步骤 306、 继续进行下一次调度处理, 即还是以所述处于就绪状态的所有队列为候 选对象, 此时为队列 1、 队列 2、 和队列 3, 利用调度算法, 例如此处为遍历方式, 进行调度处 理。例如后续利用遍历方式从队列 1、 队列 2、 和队列 3 中确定出队列 2 为需要取出报文的 队列, 将该队列 2 作为当前队列进行所述步骤 302 至步骤 308 的处理。
     步骤 307、 将当前队列 (此时即队列 1) 的状态设置为等待状态, 并启动定时器, 之 后进入步骤 308, 在定时器超时后再将该队列的状态恢复为就绪状态。
     所述定时器的时长为 : 利用上述步骤 104 得到的差值 Y 的绝对值乘以一个令牌的 单位 (即发送单位字节所需要的时间) 得到的时长, 从而使得该定时器在保证当前队列的带 宽能符合其带宽保障限制时就超时。
     步骤 308、 继续进行下一次调度处理, 这时是以所述处于就绪状态的所有队列为候 选对象, 此时为队列 2 和队列 3, 利用调度算法, 例如此处为遍历方式, 进行调度处理。例如 后续利用遍历方式利用遍历方式从队列 2 和队列 3 中确定出队列 2 为需要取出报文的队 列, 将该队列 2 作为当前队列进行所述步骤 302 至步骤 308 的处理。 从上面的应用场景中很容易看出, 如果队列中存在 100 个报文, 只需要经过 5 次调 度就能全部发送出去。从而大大减少了调度的时间开销和计算资源的开销, 提高了流量控 制的效率。
     场景二 :
     假定某接口带宽 1000M, 需要提供三条不同的业务流量, 分别是 F1、 F2 和 F3。为每 个队列设置带宽保障限制, 例如在该场景中要求 F1 至少保障 200M 带宽, F2 至少保障 300M 带宽, F3 至少保障 300M 带宽。F1、 F2、 F3 的业务报文需要分别缓存到不同的队列, 如分别 是队列 1(Queue1) 、 队列 2(Queue2) 、 队列 3(Queue3) , 三个队列的优先级为队列 1> 队列 2> 队列 3, 设置批量发送报文字节为 2500 字节。
     根据上述假定场景, 把所述三个队列放在三个优先级行 (slot) 上, 如图 4 为本发 明所述应用场景二的一种队列示意图, 在初始化时队列 1、 队列 2 和队列 3 分别放在不同的 优先级行上, 且三个队列的状态都默认为就绪状态。假设在调度时, 队列中已经缓存了报 文, 假设三个队列都已经缓存了 100 个报文, 此时对所有的处于就绪状态的队列执行调度 计算, 选出需要取出报文的队列。假设本实施例中先利用优先级高低选择需要取出报文的 队列, 其选择次序如图 4 所示, 依次是队列 1、 队列 2、 队列 3。
     图 5 为在所述应用场景二中本发明实施例的一种具体流程示意图。 参见图 5, 该流 程具体包括 :
     步骤 501、 从当前处于就绪状态的所有队列中选出需要取出报文的队列。 例如本实 施例中利用优先级优选方式首先选出了队列 1 需要出队, 即需要从队列 1 中取出报文。之 后将该队列 1 作为当前队列, 需要执行以下步骤 502~ 步骤 508。
     步骤 502、 判断当前的队列 (即队列 1) 是否为空, 即是否缓存有报文, 如果没有缓 存报文则为空, 直接进入步骤 507 ; 如果缓存有报文则非空, 进入步骤 503。
     步骤 503、 从当前队列中批量取出并发送指定字节数的报文, 例如此实施例中设置
     为批量发送 2500 个字节的报文, 相当于 25 个报文。如果当前队列中的全部报文的总字节 数没有达到 2500 个字节, 则发出这些全部的报文。所述 2500 字节数也可以上下浮动, 例如 上下浮动 100 字节范围, 则可以发送总字节数为 2400~2600 的若干个报文。
     步骤 504、 利用令牌桶的方式对当前队列发送报文的数据流进行带宽检测。
     步骤 505、 判断带宽检测结果是否符合当前队列对应的带宽保障限制, 如果符合则 进入步骤 506, 否则进入步骤 507。
     步骤 506、 继续进行下一次调度处理, 即还是以所述处于就绪状态的所有队列为候 选对象, 此时为队列 1、 队列 2、 和队列 3, 利用调度算法, 例如此处为按照优先级选择的方 式, 进行调度处理。例如后续按照优先级次序从队列 1、 队列 2、 和队列 3 中确定出队列 2 为 需要取出报文的队列, 将该队列 2 作为当前队列进行所述步骤 502 至步骤 508 的处理。
     步骤 507、 将当前队列 (此时即队列 1) 的状态设置为等待状态, 并启动定时器, 之 后进入步骤 508, 在定时器超时后再将该队列的状态恢复为就绪状态。
     所述定时器的时长为 : 利用上述步骤 104 得到的差值 Y 的绝对值乘以一个令牌的 单位 (即发送单位字节所需要的时间) 得到的时长, 从而使得该定时器在保证当前队列的带 宽能符合其带宽保障限制时就超时。
     步骤 508、 继续进行下一次调度处理, 这时是以所述处于就绪状态的所有队列为候 选对象, 此时为队列 2 和队列 3, 利用调度算法, 例如此处为按照优先级选取方式, 进行调度 处理。 例如后续按照优先级次序从队列 2 和队列 3 中确定出队列 2 为需要取出报文的队列, 将该队列 2 作为当前队列进行所述步骤 502 至步骤 508 的处理。
     从上面的应用场景二中很容易看出, 如果队列中存在 100 个报文, 每个报文长度 为 100 字节, 则只需要经过 4 次调度就能全部发送出去。从而大大减少了调度的时间开销 和计算资源的开销, 提高了流量控制的效率。
     与上述方法对应, 本发明还公开了一种数据流量控制装置, 用于执行上述的方法。 图 6 为本发明所述流量控制装置的一种组成示意图 ; 参见图 6, 该控制装置包括 :
     队列建立模块 601, 用于建立至少一个用于缓存数据流的队列, 并用于为每个队列 设置带宽保障限制, 设置每个队列的初始状态为就绪状态。
     流分类模块 602, 用于通过流分类将报文缓存到对应的队列。
     调度模块 603, 在触发后用于针对当前所有处于就绪状态的队列执行调度计算, 从 所述处于就绪状态的队列中确定出需要取出报文的队列 ;
     发送模块 604, 用于从所述调度模块 603 所确定出的队列中取出批量的报文, 并发 送所取出的报文 ;
     带宽检测模块 605, 用于对所述发送模块 604 发送报文的带宽进行检测, 如果当前 发送报文的带宽符合当前队列的带宽保障限制, 则重新触发所述调度模块 603 进行新的调 度计算 ; 否则触发后续的状态修改模块 606 ;
     状态修改模块 606, 在触发后用于将所述带宽检测模块 605 所检测出的不符合对 应带宽保障限制的队列的状态暂时设置为等待状态, 重新触发所述调度模块 603 进行新的 调度计算, 并确定状态延续时间, 在该状态延续时间达到后将该队列的状态恢复为就绪状 态。
     与上述方法对应的, 在该控制装置的一种实施例中, 所述队列建立模块进一步用于设置每个队列的优先级 ; 且所述调度模块具体用于 : 从当前所有处于就绪状态的队列中 选出优先级最高的队列, 若优先级最高的队列只有一个则将该队列作为需要取出报文的队 列; 若优先级最高的队列有两个以上, 则按照遍历方式或指定的确定方式从优先级最高的 队列中确定出一个队列作为需要取出报文的队列。
     另外与上述方法对应的, 该控制装置的一种实施例中, 如图 7 所示, 在所述调度模 块 603 和发送模块 604 之间进一步包括队列判断模块 607, 用于判断所述调度模块 603 所确 定出的队列是否为空, 若为空则触发所述状态修改模块 606 进行对应操作, 否则触发所述 发送模块 604 从所述调度模块 603 所确定出的队列中取出批量的报文, 并发送所取出的报 文。
     所述控制装置各个模块的具体执行方法, 与上述方法中公开的具体方法相同, 本 文不再赘述。
     以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精 神和原则之内, 所做的任何修改、 等同替换、 改进等, 均应包含在本发明保护的范围之内。

一种数据流量控制方法和装置.pdf_第1页
第1页 / 共17页
一种数据流量控制方法和装置.pdf_第2页
第2页 / 共17页
一种数据流量控制方法和装置.pdf_第3页
第3页 / 共17页
点击查看更多>>
资源描述

《一种数据流量控制方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种数据流量控制方法和装置.pdf(17页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102811176 A (43)申请公布日 2012.12.05 CN 102811176 A *CN102811176A* (21)申请号 201210309304.7 (22)申请日 2012.08.28 H04L 12/56(2006.01) (71)申请人 迈普通信技术股份有限公司 地址 610041 四川省成都市高新区九兴大道 16 号迈普大厦 (72)发明人 申曙光 胥攀 (74)专利代理机构 北京德琦知识产权代理有限 公司 11018 代理人 张晓峰 宋志强 (54) 发明名称 一种数据流量控制方法和装置 (57) 摘要 本申请公开了一种数据流量控制方法。

2、, 建立 至少一个用于缓存数据流的队列, 并为每个队列 设置带宽保障限制, 设置队列初始为就绪状态 ; 还包括 : A、 将报文缓存到对应的队列 ; B、 针对当 前所有处于就绪状态的队列执行调度计算, 从中 确定出需要取出报文的队列 ; C、 从所确定出的队 列中取出批量的报文并发送 ; D、 进行带宽检测, 如果当前发送报文的带宽符合当前队列的带宽保 障限制, 则返回步骤B ; 否则进入步骤E ; E、 将当前 队列的状态暂时设置为等待状态, 返回步骤 B, 并 确定状态延续时间, 在该状态延续时间达到后将 该队列的状态恢复为就绪状态。 利用本发明, 可以 降低流量控制中的开销, 提高控制。

3、效率。 (51)Int.Cl. 权利要求书 2 页 说明书 8 页 附图 6 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 8 页 附图 6 页 1/2 页 2 1. 一种数据流量控制方法, 其特征在于, 该方法建立至少一个用于缓存数据流的队列, 并为每个队列设置带宽保障限制, 设置每个队列的初始状态为就绪状态 ; 还包括 : A、 通过流分类将报文缓存到对应的队列 ; B、 针对当前所有处于就绪状态的队列执行调度计算, 从所述处于就绪状态的队列中确 定出需要取出报文的队列 ; C、 从所确定出的队列中取出批量的报文, 并发送所取出的报文 ; D、。

4、 进行带宽检测, 如果当前发送报文的带宽符合当前队列的带宽保障限制, 则返回步 骤 B ; 否则进入步骤 E ; E、 将当前队列的状态暂时设置为等待状态, 返回步骤 B, 并确定状态延续时间, 在该状 态延续时间达到后将该队列的状态恢复为就绪状态。 2. 根据权利要求 1 所述的方法, 其特征在于, 该方法进一步设置每个队列的优先级 ; 所 述步骤 B 具体包括 : 从当前所有处于就绪状态的队列中选出优先级最高的队列, 若优先级 最高的队列只有一个则将该队列作为需要取出报文的队列 ; 若优先级最高的队列有两个以 上, 则按照遍历方式或指定的确定方式从优先级最高的队列中确定出一个队列作为需要取。

5、 出报文的队列。 3. 根据权利要求 1 所述的方法, 其特征在于, 在步骤 B 之后、 步骤 C 之前, 进一步包括 : B1、 判断所确定出的队列是否为空, 若为空则进入步骤 E, 否则进入步骤 C。 4.根据权利要求1所述的方法, 其特征在于, 所述步骤C中, 所述取出批量的报文, 具体 为 : 取出指定批量个数的报文 ; 或者取出指定批量字节数范围的报文。 5. 根据权利要求 4 所述的方法, 其特征在于, 所述步骤 C 中, 如果所述确定出的队列中 的所有报文数量小于所述指定批量个数, 或所述确定出的队列中的所有报文字节数小于所 述指定批量字节数范围, 则取出该队列中的所有报文, 并。

6、发送所取出的报文。 6.根据权利要求1所述的方法, 其特征在于, 所述步骤D中进行带宽检测的具体方式为 令牌桶方式, 具体包括 : 按照当前队列的带宽保障限制的带宽速率, 向为当前队列预先对应设置的令牌桶中注 入对应的令牌数量 ; 以所述令牌桶中的当前实际令牌数量减去步骤 C 所发送报文需要消耗的令牌数量得 到差值 Y, 判断 Y 是否为负, 如果为负则判定当前带宽不符合当前队列的带宽保障的限制, 否则判定当前带宽符合当前队列的带宽保障的限制。 7. 根据权利要求 6 所述的方法, 其特征在于, 所述令牌的单位为发送单位字节所需要 的时间 ; 步骤 E 中, 所述确定状态延续时间的具体方式为 。

7、: 取所述差值 Y 的绝对值, 将该 Y 的绝 对值乘以一个令牌的单位, 得到的时长为所述状态延续时间。 8. 一种数据流量控制装置, 其特征在于, 该控制装置包括 : 队列建立模块, 用于建立至少一个用于缓存数据流的队列, 并用于为每个队列设置带 宽保障限制, 设置每个队列的初始状态为就绪状态 ; 流分类模块, 用于通过流分类将报文缓存到对应的队列 ; 权 利 要 求 书 CN 102811176 A 2 2/2 页 3 调度模块, 在触发后用于针对当前所有处于就绪状态的队列执行调度计算, 从所述处 于就绪状态的队列中确定出需要取出报文的队列 ; 发送模块, 用于从所述调度模块所确定出的队列。

8、中取出批量的报文, 并发送所取出的 报文 ; 带宽检测模块, 用于对所述发送模块发送报文的带宽进行检测, 如果当前发送报文的 带宽符合当前队列的带宽保障限制, 则重新触发所述调度模块进行新的调度计算 ; 否则触 发后续的状态修改模块 ; 状态修改模块, 在触发后用于将所述带宽检测模块所检测出的不符合对应带宽保障限 制的队列的状态暂时设置为等待状态, 重新触发所述调度模块进行新的调度计算, 并确定 状态延续时间, 在该状态延续时间达到后将该队列的状态恢复为就绪状态。 9. 根据权利要求 8 所述的控制装置, 其特征在于, 所述队列建立模块进一步用于设置每个队列的优先级 ; 且所述调度模块具体用于。

9、 : 从当前所有处于就绪状态的队列中选出优先级最高的队 列, 若优先级最高的队列只有一个则将该队列作为需要取出报文的队列 ; 若优先级最高的 队列有两个以上, 则按照遍历方式或指定的确定方式从优先级最高的队列中确定出一个队 列作为需要取出报文的队列。 10. 根据权利要求 8 所述的控制装置, 其特征在于, 在所述调度模块和发送模块之间进 一步包括队列判断模块, 用于判断所述调度模块所确定出的队列是否为空, 若为空则触发 所述状态修改模块, 否则触发所述发送模块。 权 利 要 求 书 CN 102811176 A 3 1/8 页 4 一种数据流量控制方法和装置 技术领域 0001 本申请涉及数。

10、据通信技术领域, 尤其涉及一种数据流量控制方法和装置。 背景技术 0002 现有的数据通信设备中, 在分组交换以及多用户业务并存的复杂通信环境下, 数 据传输的拥塞是不可避免的。 现有技术中, 对拥塞管理一般采用队列机制进行流量控制, 通 过相应的队列调度方法将对应队列的流量分发出去。 0003 在多用户多业务的情况下, 针对不同的用户或业务, 可能需要不同的带宽, 这时数 据流量控制方案的目的之一就是为不同的用户或业务提供相应的带宽保障。 例如对于一些 低延迟、 抖动和丢包率较低的业务, 这类业务一般需要为其保障一个相对稳定的速率 (即带 宽) 。再例如还有一些上网业务在没有超过最大允许带宽。

11、时能够确保转发, 这些业务的带宽 需求量就稍低。 还例如, 有些视频会议类的业务需要传输大量视音频数据, 这些业务就需要 占用较大的带宽。 0004 现有技术中在多用户多业务的情况下的数据流量控制方法, 需要对用户或业务带 宽进行区分保障, 其中主要包括队列调度过程和带宽检测过程, 所述带宽检测主要采用令 牌桶的方式检测队列的带宽, 根据带宽检测的结果进行相应队列的数据流量的控制调度。 现有技术的数据流量控制方法主要采用执行一次调度发送一个报文的方式, 其具体过程包 括以下步骤 : 0005 步骤 11、 通过流分类将报文缓存到不同的队列。 0006 步骤 12、 执行一次调度计算, 确定出需。

12、要取出报文的队列, 即需要从哪个队列取出 报文。 0007 步骤 13、 从所确定出的队列中取出一个报文。 0008 步骤 14、 进行带宽检测, 例如在令牌桶方式中是将所取出的报文通过令牌桶, 检测 是否满足发送条件, 如果满足条件即检测通过则进行步骤 15, 否则返回步骤 12 重复操作。 0009 步骤 15、 发送所述取出的报文。 0010 步骤 16、 返回步骤 12, 以重复执行所述步骤 12 至步骤 15。 0011 但是, 上述现有技术的存在的技术问题是 : 0012 执行一次调度 (即从所述步骤 12 至步骤 15) 只发送一个报文, 因此需要执行调度 的次数太多, 而其中的。

13、调度计算和带宽检测步骤都需要耗费时间开销和计算资源开销 (如 处理器开销、 内存开销等等) , 其中时间开销大更会导致其控制效率低下。这种大量的开销 不但使得整个设备的数据吞吐量较低, 而且由于其效率低下, 无法满足高速数据口的带宽 保障要求。 发明内容 0013 有鉴于此, 本发明的主要目的在于提供一种数据流量控制方法和装置, 以降低流 量控制中的开销, 提高控制效率。 说 明 书 CN 102811176 A 4 2/8 页 5 0014 本发明的技术方案是这样实现的 : 0015 一种数据流量控制方法, 该方法建立至少一个用于缓存数据流的队列, 并为每个 队列设置带宽保障限制, 设置每个。

14、队列的初始状态为就绪状态 ; 还包括 : 0016 A、 通过流分类将报文缓存到对应的队列 ; 0017 B、 针对当前所有处于就绪状态的队列执行调度计算, 从所述处于就绪状态的队列 中确定出需要取出报文的队列 ; 0018 C、 从所确定出的队列中取出批量的报文, 并发送所取出的报文 ; 0019 D、 进行带宽检测, 如果当前发送报文的带宽符合当前队列的带宽保障限制, 则返 回步骤 B ; 否则进入步骤 E ; 0020 E、 将当前队列的状态暂时设置为等待状态, 返回步骤 B, 并确定状态延续时间, 在 该状态延续时间达到后将该队列的状态恢复为就绪状态。 0021 在一种优选方式中, 该。

15、方法进一步设置每个队列的优先级 ; 所述步骤 B 具体包括 : 从当前所有处于就绪状态的队列中选出优先级最高的队列, 若优先级最高的队列只有一个 则将该队列作为需要取出报文的队列 ; 若优先级最高的队列有两个以上, 则按照遍历方式 或指定的确定方式从优先级最高的队列中确定出一个队列作为需要取出报文的队列。 0022 在一种优选方式中, 该方法在步骤 B 之后、 步骤 C 之前, 进一步包括 : 0023 B1、 判断所确定出的队列是否为空, 若为空则进入步骤 E, 否则进入步骤 C。 0024 在一种优选方式中, 所述步骤 C 中, 所述取出批量的报文, 具体为 : 取出指定批量 个数的报文 。

16、; 或者取出指定批量字节数范围的报文。 0025 在一种优选方式中, 所述步骤 C 中, 如果所述确定出的队列中的所有报文数量小 于所述指定批量个数, 或所述确定出的队列中的所有报文字节数小于所述指定批量字节数 范围, 则取出该队列中的所有报文, 并发送所取出的报文。 0026 在一种优选方式中, 所述步骤 D 中进行带宽检测的具体方式为令牌桶方式, 具体 包括 : 按照当前队列的带宽保障限制的带宽速率, 向为当前队列预先对应设置的令牌桶中 注入对应的令牌数量 ; 以所述令牌桶中的当前实际令牌数量减去步骤 C 所发送报文需要消 耗的令牌数量得到差值 Y, 判断 Y 是否为负, 如果为负则判定当。

17、前带宽不符合当前队列的带 宽保障的限制, 否则判定当前带宽符合当前队列的带宽保障的限制。 0027 在一种优选方式中, 所述令牌的单位为发送单位字节所需要的时间 ; 步骤 E 中, 所 述确定状态延续时间的具体方式为 : 取所述差值Y的绝对值, 将该Y的绝对值乘以一个令牌 的单位, 得到的时长为所述状态延续时间。 0028 一种数据流量控制装置, 该控制装置包括 : 0029 队列建立模块, 用于建立至少一个用于缓存数据流的队列, 并用于为每个队列设 置带宽保障限制, 设置每个队列的初始状态为就绪状态 ; 0030 流分类模块, 用于通过流分类将报文缓存到对应的队列 ; 0031 调度模块, 。

18、在触发后用于针对当前所有处于就绪状态的队列执行调度计算, 从所 述处于就绪状态的队列中确定出需要取出报文的队列 ; 0032 发送模块, 用于从所述调度模块所确定出的队列中取出批量的报文, 并发送所取 出的报文 ; 0033 带宽检测模块, 用于对所述发送模块发送报文的带宽进行检测, 如果当前发送报 说 明 书 CN 102811176 A 5 3/8 页 6 文的带宽符合当前队列的带宽保障限制, 则重新触发所述调度模块进行新的调度计算 ; 否 则触发后续的状态修改模块 ; 0034 状态修改模块, 在触发后用于将所述带宽检测模块所检测出的不符合对应带宽保 障限制的队列的状态暂时设置为等待状态。

19、, 重新触发所述调度模块进行新的调度计算, 并 确定状态延续时间, 在该状态延续时间达到后将该队列的状态恢复为就绪状态。 0035 在一种优选方式中, 所述队列建立模块进一步用于设置每个队列的优先级 ; 且所 述调度模块具体用于 : 从当前所有处于就绪状态的队列中选出优先级最高的队列, 若优先 级最高的队列只有一个则将该队列作为需要取出报文的队列 ; 若优先级最高的队列有两个 以上, 则按照遍历方式或指定的确定方式从优先级最高的队列中确定出一个队列作为需要 取出报文的队列。 0036 在一种优选方式中, 在所述调度模块和发送模块之间进一步包括队列判断模块, 用于判断所述调度模块所确定出的队列是。

20、否为空, 若为空则触发所述状态修改模块, 否则 触发所述发送模块。 0037 与现有技术相比, 本发明所述的流量控制方法和装置, 一次批量发送报文只需要 一次调度计算和一次带宽检测, 进而大大降低调度过程中大量时间开销和计算资源开销, 以满足越来越高的带宽保障需求。为了满足一次调用批量发送报文的要求, 本发明还为每 个队列设置状态, 在带宽检测符合当前队列的带宽保障限制时, 可以不改变当前队列的就 绪状态, 而在当前带宽不符合当前队列的带宽保障限制时, 则需要暂时改变当前队列的就 绪状态, 从而既实现了批量发送报文, 又实现了按照带宽检测结果调度不同队列, 整体上实 现了不同用户或业务的不同带。

21、宽保障要求。同时由于一次批量发送报文, 整个流量控制过 程中的调度计算和带宽检测的次数明显较少, 降低了时间开销和计算资源 (如 CPU 资源和 内存资源等) 开销, 提高了流量控制的效率, 尤其是可以满足高速数据口的带宽保障要求, 满足了通信系统中越来越高速的带宽需求。 附图说明 0038 图 1 为本发明所述流量控制方法在发送报文时的一种主要流程图 ; 0039 图 2 为本发明所述应用场景一的一种队列示意图 ; 0040 图 3 为在所述应用场景一中本发明实施例的一种具体流程示意图 ; 0041 图 4 为本发明所述应用场景二的一种队列示意图 ; 0042 图 5 为在所述应用场景二中本。

22、发明实施例的一种具体流程示意图 ; 0043 图 6 为本发明所述流量控制装置的一种组成示意图 ; 0044 图 7 为本发明所述流量控制装置的又一种组成示意图 ; 。 具体实施方式 0045 下面结合附图及具体实施例对本发明再作进一步详细的说明。 0046 本发明所述的流量控制方法, 建立至少一个用于缓存数据流的队列, 并为每个队 列设置带宽保障限制 ; 所述的带宽保障限制一般是指在队列调度时对某些队列限制最大带 宽, 即该队列最大只能流出的流量带宽, 而对某些队列则限制最小带宽, 即该队列最低能流 出的流量带宽。本领域技术人员知道, 所述的带宽是一种速率, 即每秒可传输的数据量, 用 说 。

23、明 书 CN 102811176 A 6 4/8 页 7 于表示通信线路所能传送数据的能力。在初始化设置所述队列的带宽保障限制后, 还可以 根据需要对所述带宽保障限制进行修改。 0047 本发明的方法还要设置所划分的每个队列的初始状态, 所述队列的状态在本发明 中分为就绪状态和等待状态。其中就绪状态是指该队列需要被作为调度的候选对象, 而等 待状态是指该队列不需被作为调度的候选对象。 0048 图1为本发明所述流量控制方法在发送报文时的一种主要流程图。 参见图1, 该流 程主要包括 : 0049 步骤 101、 通过流分类将报文缓存到对应的队列。 0050 例如本发明可以根据不同的用户或者不用。

24、的业务对数据流进行分类, 例如普通上 网业务的数据流缓存到一个对应队列中, 视频点播类业务的数据流缓存到一个对应队列 中, 网络会议业务的数据流缓存到一个对应的队列中, 等等。 0051 步骤 102、 针对当前所有处于就绪状态的队列执行调度计算, 从所述处于就绪状态 的队列中确定出需要取出报文的队列。 0052 在本步骤中, 所述的调度计算方式可以有多种, 例如 : 0053 如果队列之间不分优先级, 则最简单的方式就是利用遍历每个队列的方式, 依次 遍历选择一个队列作为需要取出报文的队列, 或者可以利用其它指定的确定方式 (例如按 照某种策略进行筛选等等, 具体方式本发明不做限定) 从所有。

25、处于就绪状态的队列选择出 一个队列作为需要取出报文的队列。 0054 如果本发明进一步设置了每个队列的优先级, 即所述队列之间区分优先级, 则本 步骤中的调度计算方式具体包括 : 从当前所有处于就绪状态的队列中选出优先级最高的队 列, 若优先级最高的队列只有一个则将该队列作为需要取出报文的队列 ; 若优先级最高的 队列有两个以上, 则按照所述遍历方式或指定的确定方式从优先级最高的队列中确定出一 个队列作为需要取出报文的队列。 0055 步骤 103、 从步骤 102 所确定出的队列中取出批量的报文, 并发送所取出的报文。 0056 本步骤 103 中, 所述取出批量的报文, 具体为 : 取出指。

26、定批量个数 (例如 20 个) 的 报文 ; 或者取出指定批量字节数范围的报文, 例如可以指定批量字节数为 2500 字节数, 上 下浮动 100 字节范围, 则可以发送总字节数为 24002600 的若干个报文。 0057 如果步骤 102 所确定出的队列中的所有报文数量小于所述指定批量个数时, 或所 述确定出的队列中的所有报文字节数小于所述指定批量字节数范围时, 则取出该队列中的 所有报文, 并发送所取出的报文。 0058 当然, 在一种实施方式中, 在上述步骤102之后、 步骤103之前, 还可以进一步判断 所述步骤 102 所确定出的队列是否为空, 即其中是否缓存有报文, 若没有缓存报。

27、文则为空, 此时进入后续步骤 105, 否则进入步骤 103。 0059 步骤 104、 对当前发送报文的过程进行带宽检测, 如果当前发送报文的带宽符合当 前队列的带宽保障限制, 则返回步骤 102 ; 否则进入步骤 105。 0060 本步骤 104 中, 所述进行带宽检测的具体方式可以采用令牌桶方式, 具体包括 : 按 照当前队列的带宽保障限制的带宽速率, 向为当前队列预先对应设置的令牌桶中注入对应 的令牌数量, 例如如果当前队列的带宽保障限制为最少 200M, 则按照至少 200M 的带宽速率 向该队列对应的令牌桶注入对应的令牌数量 ; 所述令牌的单位为发送单位字节所需要的时 说 明 书。

28、 CN 102811176 A 7 5/8 页 8 间 (例如发送一个字节所需要的时间) ; 在进行带宽检测时, 以所述令牌桶中的当前实际令 牌数量减去步骤 103 所发送报文需要消耗的令牌数量得到差值 Y, 判断 Y 是否为负, 如果为 负则判定当前带宽不符合当前队列的带宽保障的限制, 否则判定当前带宽符合当前队列的 带宽保障的限制。 0061 步骤 105、 将当前队列的状态暂时设置为等待状态, 返回步骤 102, 并确定状态延 续时间, 在该状态延续时间达到后将该队列的状态恢复为就绪状态。 0062 当前队列的状态设置为等待状态后, 则在重新执行步骤 102 中, 该队列不需要被 作为调。

29、度的候选对象 ; 在该队列的状态恢复为就绪状态后, 则在重新执行步骤 102 中, 该队 列需要被作为调度的候选对象。 0063 所述状态延续时间就是所述等待状态的延续时间, 所述确定状态延续时间的具体 方式为 : 取上述步骤 104 得到的差值 Y 的绝对值, 将该 Y 的绝对值乘以一个令牌的单位 (即 发送单位字节所需要的时间) , 得到的时长为所述状态延续时间。在具体应用时, 可以在将 当前队列的状态暂时设置为等待状态后立即启动一个对应的定时器, 该定时器的定时时 长为所述状态延续时间, 在该定时器超时后则将该定时器对应的队列的状态恢复为就绪状 态, 之后再重新执行步骤 102 时, 则。

30、该队列又可以被作为调度的候选对象。 0064 下面通过两个具体应用场景中的实施例来进一步说明本发明的方案。 0065 场景一。 0066 假定某接口带宽 1000M, 需要提供三条不同的业务流量, 分别是 F1、 F2 和 F3。为每 个队列设置带宽保障限制, 例如在该场景中要求 F1 至少保障 200M 带宽, F2 至少保障 300M 带宽, F3 至少保障 300M 带宽。F1、 F2、 F3 的业务报文需要分别缓存到不同的队列, 如分别 是队列 1(Queue1) 、 队列 2(Queue2) 、 队列 3(Queue3) , 并且三个队列的优先级相同, 设置 批量发送的报文个数为 2。

31、0 个。 0067 根据上述假定场景, 把所述三个队列放在同一个优先级行 (slot) (或者称为优先 级链) 上, 如图 2 为本发明所述应用场景一的一种队列示意图, 在初始化时队列 1、 队列 2 和 队列 3 均是在一个优先级行上, 且三个队列的状态都默认为就绪状态。假设在调度时, 队列 中已经缓存了报文, 假设三个队列都已经缓存了 100 个报文, 此时对所有的处于就绪状态 的队列执行调度计算, 选出需要取出报文的队列。假设本实施例中利用最基本的遍历方式 来选择需要取出报文的队列, 其选择次序如图 2 中的箭头所示, 依次是队列 1、 队列 2、 队列 3。 0068 图3为在所述应用。

32、场景一中本发明实施例的一种具体流程示意图。 参见图3, 该流 程具体包括 : 0069 步骤 301、 从当前处于就绪状态的所有队列中选出需要取出报文的队列。例如本 实施例中利用最基本的遍历方式首先选出了队列1需要出队, 即需要从队列1中取出报文。 之后将该队列 1 作为当前队列, 需要执行以下步骤 302 步骤 308。 0070 步骤 302、 判断当前的队列 (即队列 1) 是否为空, 即是否缓存有报文, 如果没有缓 存报文则为空, 直接进入步骤 307 ; 如果缓存有报文则非空, 进入步骤 303。 0071 步骤 303、 从当前队列中批量取出并发送指定数量个报文, 例如此实施例中设。

33、置为 批量发送 20 个报文。如果当前队列中的全部报文数没有达到 20 个, 则发出这些全部的报 文。 说 明 书 CN 102811176 A 8 6/8 页 9 0072 步骤 304、 利用令牌桶的方式对当前队列发送报文的数据流进行带宽检测。 0073 步骤 305、 判断带宽检测结果是否符合当前队列对应的带宽保障限制, 如果符合则 进入步骤 306, 否则进入步骤 307。 0074 步骤 306、 继续进行下一次调度处理, 即还是以所述处于就绪状态的所有队列为候 选对象, 此时为队列 1、 队列 2、 和队列 3, 利用调度算法, 例如此处为遍历方式, 进行调度处 理。例如后续利用遍。

34、历方式从队列 1、 队列 2、 和队列 3 中确定出队列 2 为需要取出报文的 队列, 将该队列 2 作为当前队列进行所述步骤 302 至步骤 308 的处理。 0075 步骤 307、 将当前队列 (此时即队列 1) 的状态设置为等待状态, 并启动定时器, 之 后进入步骤 308, 在定时器超时后再将该队列的状态恢复为就绪状态。 0076 所述定时器的时长为 : 利用上述步骤 104 得到的差值 Y 的绝对值乘以一个令牌的 单位 (即发送单位字节所需要的时间) 得到的时长, 从而使得该定时器在保证当前队列的带 宽能符合其带宽保障限制时就超时。 0077 步骤 308、 继续进行下一次调度处理。

35、, 这时是以所述处于就绪状态的所有队列为候 选对象, 此时为队列 2 和队列 3, 利用调度算法, 例如此处为遍历方式, 进行调度处理。例如 后续利用遍历方式利用遍历方式从队列 2 和队列 3 中确定出队列 2 为需要取出报文的队 列, 将该队列 2 作为当前队列进行所述步骤 302 至步骤 308 的处理。 0078 从上面的应用场景中很容易看出, 如果队列中存在100个报文, 只需要经过5次调 度就能全部发送出去。从而大大减少了调度的时间开销和计算资源的开销, 提高了流量控 制的效率。 0079 场景二 : 0080 假定某接口带宽 1000M, 需要提供三条不同的业务流量, 分别是 F1。

36、、 F2 和 F3。为每 个队列设置带宽保障限制, 例如在该场景中要求 F1 至少保障 200M 带宽, F2 至少保障 300M 带宽, F3 至少保障 300M 带宽。F1、 F2、 F3 的业务报文需要分别缓存到不同的队列, 如分别 是队列 1(Queue1) 、 队列 2(Queue2) 、 队列 3(Queue3) , 三个队列的优先级为队列 1 队列 2 队列 3, 设置批量发送报文字节为 2500 字节。 0081 根据上述假定场景, 把所述三个队列放在三个优先级行 (slot) 上, 如图 4 为本发 明所述应用场景二的一种队列示意图, 在初始化时队列 1、 队列 2 和队列 。

37、3 分别放在不同的 优先级行上, 且三个队列的状态都默认为就绪状态。假设在调度时, 队列中已经缓存了报 文, 假设三个队列都已经缓存了 100 个报文, 此时对所有的处于就绪状态的队列执行调度 计算, 选出需要取出报文的队列。假设本实施例中先利用优先级高低选择需要取出报文的 队列, 其选择次序如图 4 所示, 依次是队列 1、 队列 2、 队列 3。 0082 图5为在所述应用场景二中本发明实施例的一种具体流程示意图。 参见图5, 该流 程具体包括 : 0083 步骤501、 从当前处于就绪状态的所有队列中选出需要取出报文的队列。 例如本实 施例中利用优先级优选方式首先选出了队列 1 需要出队。

38、, 即需要从队列 1 中取出报文。之 后将该队列 1 作为当前队列, 需要执行以下步骤 502 步骤 508。 0084 步骤 502、 判断当前的队列 (即队列 1) 是否为空, 即是否缓存有报文, 如果没有缓 存报文则为空, 直接进入步骤 507 ; 如果缓存有报文则非空, 进入步骤 503。 0085 步骤 503、 从当前队列中批量取出并发送指定字节数的报文, 例如此实施例中设置 说 明 书 CN 102811176 A 9 7/8 页 10 为批量发送 2500 个字节的报文, 相当于 25 个报文。如果当前队列中的全部报文的总字节 数没有达到 2500 个字节, 则发出这些全部的报。

39、文。所述 2500 字节数也可以上下浮动, 例如 上下浮动 100 字节范围, 则可以发送总字节数为 24002600 的若干个报文。 0086 步骤 504、 利用令牌桶的方式对当前队列发送报文的数据流进行带宽检测。 0087 步骤 505、 判断带宽检测结果是否符合当前队列对应的带宽保障限制, 如果符合则 进入步骤 506, 否则进入步骤 507。 0088 步骤 506、 继续进行下一次调度处理, 即还是以所述处于就绪状态的所有队列为候 选对象, 此时为队列 1、 队列 2、 和队列 3, 利用调度算法, 例如此处为按照优先级选择的方 式, 进行调度处理。例如后续按照优先级次序从队列 1。

40、、 队列 2、 和队列 3 中确定出队列 2 为 需要取出报文的队列, 将该队列 2 作为当前队列进行所述步骤 502 至步骤 508 的处理。 0089 步骤 507、 将当前队列 (此时即队列 1) 的状态设置为等待状态, 并启动定时器, 之 后进入步骤 508, 在定时器超时后再将该队列的状态恢复为就绪状态。 0090 所述定时器的时长为 : 利用上述步骤 104 得到的差值 Y 的绝对值乘以一个令牌的 单位 (即发送单位字节所需要的时间) 得到的时长, 从而使得该定时器在保证当前队列的带 宽能符合其带宽保障限制时就超时。 0091 步骤 508、 继续进行下一次调度处理, 这时是以所述。

41、处于就绪状态的所有队列为候 选对象, 此时为队列 2 和队列 3, 利用调度算法, 例如此处为按照优先级选取方式, 进行调度 处理。 例如后续按照优先级次序从队列2和队列3中确定出队列2为需要取出报文的队列, 将该队列 2 作为当前队列进行所述步骤 502 至步骤 508 的处理。 0092 从上面的应用场景二中很容易看出, 如果队列中存在 100 个报文, 每个报文长度 为 100 字节, 则只需要经过 4 次调度就能全部发送出去。从而大大减少了调度的时间开销 和计算资源的开销, 提高了流量控制的效率。 0093 与上述方法对应, 本发明还公开了一种数据流量控制装置, 用于执行上述的方法。 。

42、图 6 为本发明所述流量控制装置的一种组成示意图 ; 参见图 6, 该控制装置包括 : 0094 队列建立模块 601, 用于建立至少一个用于缓存数据流的队列, 并用于为每个队列 设置带宽保障限制, 设置每个队列的初始状态为就绪状态。 0095 流分类模块 602, 用于通过流分类将报文缓存到对应的队列。 0096 调度模块 603, 在触发后用于针对当前所有处于就绪状态的队列执行调度计算, 从 所述处于就绪状态的队列中确定出需要取出报文的队列 ; 0097 发送模块 604, 用于从所述调度模块 603 所确定出的队列中取出批量的报文, 并发 送所取出的报文 ; 0098 带宽检测模块 60。

43、5, 用于对所述发送模块 604 发送报文的带宽进行检测, 如果当前 发送报文的带宽符合当前队列的带宽保障限制, 则重新触发所述调度模块 603 进行新的调 度计算 ; 否则触发后续的状态修改模块 606 ; 0099 状态修改模块 606, 在触发后用于将所述带宽检测模块 605 所检测出的不符合对 应带宽保障限制的队列的状态暂时设置为等待状态, 重新触发所述调度模块 603 进行新的 调度计算, 并确定状态延续时间, 在该状态延续时间达到后将该队列的状态恢复为就绪状 态。 0100 与上述方法对应的, 在该控制装置的一种实施例中, 所述队列建立模块进一步用 说 明 书 CN 1028111。

44、76 A 10 8/8 页 11 于设置每个队列的优先级 ; 且所述调度模块具体用于 : 从当前所有处于就绪状态的队列中 选出优先级最高的队列, 若优先级最高的队列只有一个则将该队列作为需要取出报文的队 列 ; 若优先级最高的队列有两个以上, 则按照遍历方式或指定的确定方式从优先级最高的 队列中确定出一个队列作为需要取出报文的队列。 0101 另外与上述方法对应的, 该控制装置的一种实施例中, 如图 7 所示, 在所述调度模 块603和发送模块604之间进一步包括队列判断模块607, 用于判断所述调度模块603所确 定出的队列是否为空, 若为空则触发所述状态修改模块 606 进行对应操作, 否。

45、则触发所述 发送模块 604 从所述调度模块 603 所确定出的队列中取出批量的报文, 并发送所取出的报 文。 0102 所述控制装置各个模块的具体执行方法, 与上述方法中公开的具体方法相同, 本 文不再赘述。 0103 以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精 神和原则之内, 所做的任何修改、 等同替换、 改进等, 均应包含在本发明保护的范围之内。 说 明 书 CN 102811176 A 11 1/6 页 12 图 1 图 2 说 明 书 附 图 CN 102811176 A 12 2/6 页 13 图 3 说 明 书 附 图 CN 102811176 A 13 3/6 页 14 图 4 说 明 书 附 图 CN 102811176 A 14 4/6 页 15 图 5 说 明 书 附 图 CN 102811176 A 15 5/6 页 16 图 6 说 明 书 附 图 CN 102811176 A 16 6/6 页 17 图 7 说 明 书 附 图 CN 102811176 A 17 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1