数据输出控制方法和装置的制作方法

文档序号:7695171阅读:90来源:国知局
专利名称:数据输出控制方法和装置的制作方法
技术领域
本发明涉及数据传输技术,具体涉及数据输出控制方法和数据输出控制 装置。
背景技术
在数据流转发设备中,为了控制数据出口流量,目前已经出现了很多对
输出流量进行控制的方法,例如约定访问速率(CAR , Committed Access Rate )技术。该CAR技术按用户设定的速度向令牌桶(Token Bucket Policing ) 注入令牌,需要接受数据输出控制的报文进入令牌桶接受处理。如果令牌桶 中有足够的令牌可以用来发送报文,则允许报文通过,通过令牌桶的报文将 在数据出口的緩存队列中緩存,等待被发送出去。如果令牌桶中的令牌不能 满足报文的发送条件,则报文被丟弃。
但是,CAR技术的缺点是,令牌注入速度是固定的,只要令牌足够就 允许报文通过,并向緩存队列发送。但是,如果数据出口发送滞緩,緩存队 列中的数据不能被及时发送出去,那么,被允许通过的报文将由于緩存队列 满而被丢弃。因令牌不能满足报文的发送条件而丢弃报文,以及因緩存队列 满而丟弃报文都将导致断流现象的发生。而断流在视频数据传输等场合是不 适用的。
比较常见的流量控制还包括各种调度策略,例如公平调度(RR)和权 重调度(WRR)。调度策略适用于具有多个数据出口的数据流转发设备。 调度策略旨在按照某种策略对各数据出口进行调度,使得所有数据出口均有 机会分享设备数据流转发的总出口带宽。当调度到某个数据出口时,直接将 该数据出口的待发送数据緩存到该数据出口对应的緩存队列中,或者,在緩存之前,采用CAR技术确定该数据出口对应的待发送数据是否允许发送。
无论是直接緩存或是CAR技术处理后的緩存,都可能因数据出口发送滞緩
导致的前述断流现象的产生。
此外,现有调度策略中的公平调度方案采用公平轮询各数据出口的方 式,无法对各数据出口进行区分,导致各数据出口的流量分配不合理。而, 权重调度方案能够为不同数据出口设置不同权重,权重越大,被调度的次数 越多,获得的带宽越大。但是,权重设置是人为的,且权重固定,因此各数 据出口的出口带宽固定,无法根据实际情况动态变化。

发明内容
有鉴于此,本发明提供了一种数据输出控制方法,能够避免断流现象的 发生。
该方法包括获取数据出口对应的緩存队列的空闲位长度;
在获取的空闲位长度大于或等于所述数据出口的待发送数据的长度时, 将所述待发送数据调度到所述数据出口对应的緩存队列中。
较佳地,所述数据出口对应的緩存队列的空闲位长度用令牌桶中的令牌 数目表示,具体包括
为所述数据出口设置令牌桶;
对所述数据出口的实际发送数据量进行计数,在每次计数值达到预设阈 值时,向所述令牌桶注入与所述预设阈值相等的令牌数目;
所述将所述待发送数据调度到所述数据出口对应的緩存队列中之后,进 一步包括从所述令牌桶中减去与被调度的待发送数据长度相等的令牌数 目。
本发明提供了另 一种数据输出控制方法,能够避免断流现象的发生。 该方法包括获取各数据出口对应的緩存队列的空闲位长度; 根据各个等待发送数据的数据出口对应的空闲位长度,确定当前数据出 口;所述当前数据出口的空闲位长度大于或等于该当前数据出口的待发送数据长度;
将所述当前数据出口的待发送数据调度到该当前数据出口对应的緩存 队列中。
较佳地,所述各数据出口对应的緩存队列的空闲位长度用令牌桶中的令
牌数目表示,具体包括
为每个数据出口对应设置令牌桶;
对各数据出口的实际发送数据量进行计数,在每次计数值达到预设阈值 时,向发送数据量达到预设阈值的数据出口的令牌桶注入与预设阈值相等的 令牌数目;
所述将当前数据出口的待发送数据调度到该当前数据出口对应的緩存 队列中之后,进一步包括从所述当前数据出口对应的令牌桶中减去与被调 度的待发送数据长度相等的令牌数目。
其中,所述确定当前数据出口具体为
按照空闲位长度从长到短的顺序,对各等待发送数据的数据出口进行排 序,得到空闲位长度最长的数据出口;
如果当前所述空闲位最长的数据出口对应的空闲位长度大于或等于其 待发送数据的长度,则将该空闲位最长的数据出口确定为所述当前数据出 口 。
较佳地,该方法进一步包括在所述空闲位最长的数据出口对应的空闲 位长度小于其待发送数量的长度时,返回执行所述对各等待发送数据的数据 出口进行排序的操作。
其中,所述确定当前数据出口具体为
从各等待发送数据的数据出口中,获取空闲位长度大于或等于待发送数 据长度的数据出口;
按照空闲位长度从长到短的顺序,对获取的各数据出口进行排序,将空 闲位长度最长者确定为所述当前数据出口。
较佳地,所述将当前数据出口的待发送数据调度到该当前数据出口对应的缓存队列中之后,该方法进一步包括
返回执行所述从各等待发送数据的数据出口中,获取空闲位长度大于或
等于待发送数据长度的数据出口的步骤;
或者,按所排顺序,将除所述空闲位长度最长者以外的其他数据出口依 次作为所述当前数据出口 ,将当前数据出口的待发送数据调度到该当前数据 出口对应的缓存队列中,然后返回执行所述从各等待发送数据的数据出口 中,获取空闲位长度大于或等于待发送数据长度的数据出口的步骤。
其中,所述确定当前数据出口具体为
从各等待发送数据的数据出口中,获取空闲位长度大于或等于待发送数 据长度的数据出口;
计算获取的各数据出口的空闲位长度与待发送数据长度之间的差值;
按照差值从大到小的顺序,对所获取的各数据出口进行排序,将差值最 大者确定为所述当前数据出口 。
较佳地,所述将当前数据出口的待发送数据调度到该当前数据出口对应 的緩存队列中之后,该方法进一步包括
返回执行所述从各等待发送数据的数据出口中,获取空闲位长度大于或 等于待发送数据长度的数据出口的步骤;
或者,按所排顺序,将除所述差值最大者以外的各数据出口依次作为所 述当前数据出口 ,将当前数据出口的待发送数据调度到该当前数据出口对应 的緩存队列中,然后返回执行所述从各等待发送数据的数据出口中,获取空 闲位长度大于或等于待发送数据长度的数据出口的步骤。
本发明还提供了一种数据输出控制装置,能够避免断流现象的发生。
该装置包括输出控制单元和数据出口单元;
所述输出控制单元,用于获取所述数据出口单元中緩存队列的空闲位长 度,在所述空闲位长度大于或等于所述数据出口单元的待发送数据的长度 时,将所述待发送数据调度到所述数据出口单元的緩存队列中;
所述数据出口单元,用于向外部发送缓存在其緩存队列中的数据。本发明还提供了 一种数据输出控制装置,能够避免断流现象的发生。
该装置包括输出控制单元和多个数据出口单元; 所述输出控制单元,用于获取各数据出口单元中緩存队列的空闲位长 度,根据各个等待发送数据的数据出口单元对应的空闲位长度,确定当前数
据出口单元;将所述当前数据出口单元的待发送数据调度到该当前数据出口
的緩存队列中;其中,所述当前数据出口的空闲位长度大于或等于所述当前
数据出口的待发送数据长度;
所述数据出口单元,用于向外部发送緩存在其緩存队列中的数据。 其中,所述输出控制单元包括空闲位获取模块、调度模块和输出模块; 所述空闲位获取模块,用于根据各数据出口单元反馈的流量信息,获取
各数据出口单元中緩存队列的空闲位长度,并提供给所述调度模块;
所述调度模块,用于根据所述空闲位获取模块获取的空闲位长度,确定 当前数据出口单元;所述当前数据出口单元的空闲位长度大于或等于所述当 前数据出口的待发送数据长度;
所述输出模块,用于将所述当前数据出口单元的待发送数据调度到该当 前数据出口单元的緩存队列中;
所述数据出口单元进一 步用于向输出控制单元反馈流量信息。
其中,所述调度模块包括排序子模块和确定子模块;
所述排序子模块,用于按照空闲位长度从长到短的顺序,对各等待发送 数据的数据出口进行排序,得到空闲位长度最长的数据出口;
所述确定子模块,用于在所述排序子模块得到的所述空闲位最长的数据 出口对应的空闲位长度大于或等于其待发送数据长度时,将空闲位最长的数 据出口确定为所述当前数据出口。
其中,所述调度模块包括排序子模块和确定子模块;
所述排序子模块,用于从各等待发送数据的数据出口中,获取空闲位长 度大于或等于待发送数据长度的数据出口;按照空闲位长度从长到短的顺 序,对获取的各数据出口进行排序;所述确定子模块,用于根据所述排序子模块的排序结果,将空闲位长度 最长的数据出口确定为所述当前数据出口。
其中,所述调度模块包括排序子模块和确定子模块;
所述排序子模块,用于从各等待发送数据的数据出口中,获取空闲位长
度大于或等于待发送数据长度的数据出口;计算获取的各数据出口的空闲位 长度与其待发送数据长度之间的差值;按照差值从大到小的顺序,对获取的 各数据出口进行排序;
所述确定子模块,用于根据所述排序子模块的排序结果,将差值最大的 数据出口确定为所述当前数据出口 。
其中,所述数据出口单元包括数据出口、緩存队列、计数器和脉冲生成
器;
所述计数器,用于对所述数据出口发送的数据进行计数,当计数值达到 预设阈值时,通知脉冲生成器,并从零开始计数;
所述脉冲生成器,用于在接到通知后,生成脉冲,作为所述流量信息反 馈给输出控制单元;
所述数据出口,用于向所在装置外部发送数据;
所述緩存队列,用于緩存来自输出控制单元的等待向所在装置外部发送 的数据;
所述空闲位获取模块包括对应每个数据出口单元的令牌桶和令牌桶维 护子模块;
所述令牌桶维护子模块,用于在接收到脉沖后,向发送该脉冲的数据出 口单元的令牌桶中注入与所述阈值相等的令牌,将各数据出口单元的令牌数 目作为空闲位长度提供给所述调度模块;在所述输出模块将所述待发送数据 调度到当前数据出口单元的緩存队列中时,从当前数据出口单元的令牌桶中 减去与被调度的待发送数据长度相等的令牌数目。
根据以上技术方案可见,本发明实施例根据数据出口对应的緩存队列的 空闲情况判断是否调度待发送数据,只有在緩存队列能够容纳待发送数据时,才将待发送数据调度到緩存队列中。当数据出口发送滞緩,其空闲位很 小且不能容纳待转发数据,此时,不会执行将待发送数据緩存到数据出口的 操作,避免了因緩存队列满而丟弃报文的情况,保证了数据流的连续性。
当数据出口为1个以上时,获取每个数据出口对应的緩存队列的空闲位 长度;调度时,根据各个等待发送数据的数据出口对应的空闲位长度,确定 当前数据出口 ,且所确定的当前数据出口的緩存队列必须具备容纳待发送数 据的能力,从而避免了因緩存队列满而丢弃报文的情况,保证了数据流的连 续性。
此外,在具体确定当前数据出口时,当前数据出口不仅需要满足具有容 纳数据能力的条件,与其它数据出口相比,当前数据出口具有更多的空闲位, 表示该数据出口的緩存队列急切地需要新数据的填补。可见,具有较多空闲 位的数据出口能够优先被调度,被调度次数越多,其出口带宽越大,从而使 得本发明实施例能够根据数据出口的实际数据输出情况,动态调整各个出口 带宽,避免了现有技术中公平调度或根据固定权重进行调度带来的带宽无法 调节的缺陷。
此外,本发明实施例采用令牌数目表示数据出口緩存队列的空闲位大 小,从而精确的反映出各数据出口的緩存队列能够容纳的数据长度,实现对 数据输出的精确控制。


图1为本发明实施例中数据输出控制方法的流程图。
图2为本发明中数据发送控制装置的结构示意图。
图3为具有1个以上数据出口单元22的数据发送控制装置的结构示意图。
图4为图3中数据出口单元22的结构示意图。 图5为图2中输出控制单元20的结构示意图。 图6为图3中输出控制单元21的结构示意图。图7为图6中调度模块212的结构示意图。 图8为图6中输出模块213的结构示意图。
具体实施例方式
本发明实施例提供了一种数据输出控制方法,其基本思想为获取数据 出口对应的緩存队列的空闲位长度;在数据出口对应的空闲位长度大于或等 于该数据出口的待发送数据的长度时,将该待发送数据调度到其数据出口对 应的缓存队列中。
本发明实施例根据数据出口对应的援存队列的空闲情况判断是否发送 待发送数据,并只有在緩存队列能够容纳待发送数据时,对待发送数据进行 处理,才将待发送数据调度到緩存队列中。当数据出口发送滞緩,其空闲位 很小且不能容纳待转发数据,此时,不会执行将待发送数据緩存到数据出口 的操作,避免了因緩存队列满而丢弃报文的情况,保证了数据流的连续性。
本发明可以应用于包括一个或一个以上数据出口的数据流转发设备,当 数据流转发设备同时包括多个数据出口时,每个数据出口的带宽可能不同, 那么各数据出口的数据发送速率就不同。在这种情况下,需要首先对各数据 出口进行调度,从而确定当前数据出口。
在本发明实施例中,当数据出口为l个以上时,获取每个数据出口对应 的緩存队列的空闲位长度;实际上,空闲位长度能够显示出数据出口的緩存 队列对新数据的容纳能力。在调度时,根据各个等待发送数据的数据出口对 应的空闲位长度,确定当前数据出口,且所确定的当前数据出口的缓存队列 必须具备容纳待发送数据的能力,即当前数据出口中緩存队列的空闲位长度 大于或等于其待发送数据长度,从而避免了因緩存队列满而丟弃报文的情 况,保证了数据流的连续性。
本发明的技术方案可以适用于交换机、路由器、多媒体网关、视频网关 等数据流转发设备。对于交换机和路由器,本发明描述的数据出口为出端口 , 对于多媒体网关和视频网关本发明描述的数据出口为网关内部的视频端口(VP, Video Port)。本发明实施例的数据输出控制可以采用现场可编程门 阵列(FPGA, Field Programmable Gate Array)或专用集成电^各(ASIC, Application Specific Integrated Circuit)实现。
以下以将本发明数据输出控制方法应用于视频网关为例,结合附图并举 实施例,对本发明的数据发送控制方法进行详细描述。
视频网关为设置在局端的视频图像转发设备。在视频网关中,待发送的 视频图像数据经图像处理后,通过与待发送的视频图像数据对应的VP,按 照一定帧率发送到数字信号处理器(DSP, Digital Signal Processor)进行编 码,然后经封装发送出去。每个VP对应一个緩存队列,称为发送数据队列 (TXQ),该TXQ中缓存已经经过图像处理的视频图像数据。VP的数据发 送带宽与DSP处理资源有关,不同VP对应的DSP处理能力不同,因此, 不同VP向对应DSP发送数据的带宽也不同。在多个VP共用一个DSP的情 况下,当VP A的数据发送完毕,被VP A占用的DSP编码资源被释放,此 时,释放的DSP资源可以用于处理其它VP输出的数据,那么其它VP发送 队列中的数据可以以更快的速度发给DSP,即VP的可用带宽增加了。采用 本发明实施例可以根据VP的实际带宽进行调度,还可以在检测到带宽的变 化时,根据变化对VP进行调度,从而调节各个VP的实际数据发送带宽。
图1为本发明实施例中数据输出控制方法的流程图。本流程中仍将VP 称为数据出口,将VP对应的TXQ称为缓存队列。如图1所示,该方法包 括以下步骤
步骤101:为每个数据出口分别对应设置一个令牌桶,对各令牌桶的令 牌数目进行初始化。
其中,对各令牌桶的令牌数目进行初始化为将各令牌桶的令牌数目初
始化为对应数据出口的緩存队列长度;或者,初始化为对应数据出口的緩存 队列长度乘以预设百分比得到的长度;或者,初始化为固定的预设值,该值 小于或等于对应数据出口的緩存队列长度。
本发明实施例中的令牌桶是指能够接受赋值,进行简单加减计算且记录数值的记录设备,例如,可以采用一个寄存器和一个运算器实现该令牌桶, 那么在本步骤中对寄存器赋值为预设的初始值,在后续步骤向令牌桶注入令 牌或减去令牌时,运算器根据寄存器记录的数值进行运算,将得到的数值存 入寄存器中。再例如,可以采用计数器实现该令牌桶,那么在本步骤中,为 计数器赋值为预设的初始值,在后续步骤向令牌桶注入令牌或减去令牌时, 计数器根据当前计数值进行增计数或减计数。
步骤102:对各数据出口的实际发送数据量进行计数,每次计数值达到
预设阈值时,向该发送数据量达到阈值的数据出口的令牌桶注入与预设阈值 相等的令牌。
本步骤中,每次计数值达到预设阈值的判定方式为在某个数据出口, 例如数据出口 1的计数值达到预设阈值时,产生一个脉沖,在^r测到该脉冲 时,确定产生脉冲的数据出口 1的计数值达到预设阈值。此时,向数据出口 1对应的令牌桶中注入与设定阈值相等的令牌。令牌桶中令牌数目的增加会 增加数据出口l被调度的几率。
其中,各数据出口的阈值可以相同,也可以不同。
本步骤102实时反复执行。
步骤103:判断是否开始本轮调度,如果是,则执行步骤104;否则, 继续执行本步骤。
在视频网关中,往往在指定时刻发送指定数量的数据,例如,通常每隔 1/30秒(s)发送一帧数据,该帧数据可以在1/30s中的任何时刻发送。因此, 本步骤中,每隔1/30s判定开始本轮调度。
步骤104:对等待发送数据的数据出口对应的令牌桶令牌数目进行排序, 得到令牌数目最多的数据出口 。
其中,等待发送数据的数据出口的确定方式为从所有数据出口中过滤 出使能的数据出口 ,从使能的数据出口中过滤出存在待发送数据的数据出 口 ,这些有发送数据需要的数据出口为等待发送数据的数据出口 。
步骤105:判断步骤104得到的令牌数目最多的数据出口的令牌数目是否大于或等于该数据出口的待发送数据长度,如果是,则将令牌数目最多的
数据出口确定为当前数据出口,执行步骤106;否则,判定调度失败,执行 步骤107。
其中,令牌数目越多表示对应的数据出口越需要数据,需要优先被调度。 步骤106:对当前数据出口的待发送数据进行发送前的相应处理,然后 緩存到当前数据出口对应的緩存队列中,将当前数据出口对应的令牌桶中减 去与被调度的待发送数据长度相等的令牌数,进入下一轮调度,返回步骤 103。
在视频网关中,对当前数据出口的待发送数据进行发送前的相应处理, 然后緩存到当前数据出口对应的緩存队列中的操作具体包括以下步骤
1 、 生成待发送数据的发送命令,将发送命令緩存到发送命令队列中。 其中,发送命令中包括待发送数据的存储地址和数据长度。
2、 依次处理发送命令队列中的发送命令,将根据发送命令获取的待 发送数据緩存到数据队列中。
3、 依次对数据队列中的待发送数据进行数据处理,例如图像处理, 然后将经过数据处理的待发送数据緩存到相应VP的TXQ中,等 待发送给DSP进行处理。
步骤107:判断是否退出本轮调度,如果是,则进行下一轮调度,返回 执行步骤103;否则,返回步骤104。
对于视频网关,每隔1/30s开始一轮调度。在本步骤中,如果本轮调度 的1/30s结束,则判定退出本轮调度,进行下一轮调度,返回步骤103;如 果本轮调度的1/30s没有结束,则判定不退出本轮调度,返回步骤104,重 新进行当前数据出口的遴选。
在实际中,当判定返回步骤104时,可以等待5ns再返回,从而给各数 据出口留出一段积累令牌的时间。当采用FPGA实现本发明数据输出控制方 法时,由于FPGA采用硬件实现返回步骤104的操作,该返回过程需要一'J、 段时间,大约为5ns,因此可以直接返回步骤104,无需等待5ns。至此,本流程结束。
从图l所示的流程可以看出,调度时,当前数据出口不仅需满足具有容 纳数据能力的条件,而且与其它数据出口相比,当前数据出口具有更多的空 闲位,表示该数据出口的緩存队列急切地需要新数据的填补。可见,具有较 多空闲位的数据出口能够优先被调度,被调度次数越多,其出口带宽越大。 使得本发明实施例能够根据数据出口的实际数据输出情况,动态调整各个出 口带宽,使其适应实时变化,避免了现有技术中公平调度或根据固定权重进 行调度带来的带宽无法调节的缺陷。
同时,图1所示的流程采用令牌数目表示数据出口緩存队列的空闲位大 小,且实时根据接收的脉冲调整令牌数目,从而精确的反映出各数据出口的 缓存队列能够容纳的数据长度,即緩存队列的空闲位数据量,从而增加了调 度准确性。
图l所示的流程中,对实际发送数据量计数,并在计数值达到预设阈值 时,更新令牌桶。这种方式属于根据数据出口的流量信息更新令牌桶,流量 信息间接反映緩存队列变化。在实际中,还可以采用其它方式获取緩存队列 的空闲位长度。
例如,实时或定期获取各緩存队列中空闲位占緩存队列长度的百分比, 或数据位占緩存队列长度的百分比,然后将百分比换算为空闲位长度值。这 种方式属于根据緩存队列变化信息更新令牌桶。
再例如,分别对各数据出口的实际发送数量进行计数,在计数时间达到 预设时间时,将所计数值换算为令牌数目,注入相应令牌桶。这种方式下, 所有令牌桶同时更新,每个令牌桶注入数据量根据数据出口实际发送量而不 同。这种方式属于根据数据出口的流量信息更新令牌桶。
图1示出的流程中,在步骤105判定调度失败且步骤107判定未到达本 次调度时限时,返回步骤104再次进行数据出口遴选。在实际中,也可以在 步骤107判定未到达本次调度时限时,将步骤104确定的令牌数第二多的数 据出口确定为当前数据出口 ,然后比较该数据出口的令牌数目和其待发送数据长度,进而决定是否调度,如果确定调度,则在调度后,返回步骤103; 如果令牌数第二多的数据出口也调度失败,则将步骤104确定的令牌数第三 多的数据出口确定为当前数据出口,依此类推,直到调度成功或者判断本次 调度时间到,再返回步骤103,进入下一轮的调度。
交换机和路由器没有定时调度的限制,因此对于交换机和路由器来说, 不需要等待定时发送时刻的到来,因此在步骤102,只要有待发送数据就判 定开始本轮调度并执行图1示出的步骤103到105。在步骤105中,当判定 当前数据出口的令牌数目大于或等于该数据出口的待发送数据长度时,执行 步骤106,这与图l是相同的;与图l不同之处在于,步骤105在判定当前 数据出口的令牌数目小于该数据出口的待发送数据长度时,返回步骤104; 也可以在判定当前数据出口的令牌数目小于该数据出口的待发送数据长度 时,将步骤104确定的令牌数第二多的数据出口确定为当前数据出口 ,然后 比较该数据出口的令牌数目和待发送数据长度,如果令牌数第二多的数据出 口也调度失败,则将步骤104确定的令牌数第三多的数据出口确定为当前数 据出口 ,依此类推,直到调度成功或者处理完所有数据出口 ,返回步骤103。 但是,依次处理所有数据出口会耗费大量设备资源,而且在处理令牌并非最 多的数据出口时,令牌最多的数据出口可能已经凑齐了令牌,因此,可以设 置一轮调度中的调度失败次数,例如设置为2,则如果令牌数第二多的数据 出口也调度失败,则返回步骤103执行下一轮调度。
图1中的步骤104到步骤105示出了一种确定当前数据出口的方式。在 实际中,还可以采用如下调度方式二或调度方式三确定当前数据出口
调度方式二、包括以下步骤
al、从各等待发送数据的数据出口中,过滤出令牌数目大于或等于待发 送数据长度的各数据出口;这些数据出口对应的緩存队列具有容纳新数据的 能力。当然,如果任何一个数据出口都不具有容纳新数据能力,则直接确定 调度失败。a2、按照令牌数目从多到少的顺序,将过滤出的数据出口进行排 序,将令牌数目最多者确定为当前数据出口。将步骤a2确定的当前数据出口的待发送数据调度到緩存队列之后,可 以返回执行步骤al;或者,按步骤a2所排顺序,将除已经调度过的令牌数 目最多者以外的其他数据出口 ,依次作为当前数据出口,完成调度后再返回 步骤al。
调度方式三、包括以下步骤
bl、从各等待发送数据的数据出口中,过滤出令牌数目大于或等于待发 送数据长度的各数据出口;当然,如果任何一个数据出口都不具有容纳新数 据能力,则直接确定调度失败。b2、计算所获取的各数据出口的令牌数目与 其待发送数据长度之间的差值。b3、按照差值从大到小的顺序,对所获取的 各数据出口进行排序,将差值最大者确定为当前数据出口 。
将步骤b3确定的当前数据出口的待发送数据调度到缓存队列之后,可 以返回执行步骤bl;或者,按步骤b3所排顺序,将除已经调度过的差值最 大者以外的其他数据出口,依次作为当前数据出口,完成调度后再返回步骤 bl。
为了实现上述数据发送控制方法,本发明实施例还提供了一种数据发送 控制装置。图2为本发明中数据发送控制装置的结构示意图,如图2所示, 该装置包括输出控制单元20和数据出口单元22;其中,
输出控制单元20,用于对数据出口单元22进行监控,根据数据出口单 元22反馈的信息,获取数据出口单元22中緩存队列的空闲位长度,在数据 出口单元22中緩存队列的空闲位长度大于或等于该数据出口单元22的待发 送数据长度时,将待发送数据调度到数据出口单元22的緩存队列中。 数据出口单元22,用于向外部发送緩存在其緩存队列中的数据。 图3示出了具有l个以上数据出口单元的数据发送控制装置的结构示意 图。如图3所示,该装置包括输出控制单元21和n个数据出口单元22。 n 为大于1的整数。
下面对输出控制单元和数据出口单元的具体实现进行详细描述。
图4示出了图3中数据出口单元22的结构。该数据出口单元22的结构同样适用于图2中的数据出口单元22。如图3所示,数据出口单元22包括 数据出口221、緩存队列222、计数器223和脉冲生成器224;其中, 数据出口221,用于从缓存队列222获取数据,向外部发送。 緩存队列222,用于緩存来自输出控制单元的等待向所在装置外部发送 的数据。
计数器223,用于对数据出口 221发送的数据进行计数,当计数值达到预 设阈值时,通知力永沖生成器224,并,人零开始计数。
脉冲生成器224,用于在接到计数器223的通知后,生成脉冲,反馈给 输出控制单元。
上文还提到一种定时反馈发送数据量的方式,采用这种方式时,数据出 口单元22不包括脉冲生成器224,进一步包括计时器,在计数器223开始 计数时,计时器启动,当计时器计时值达到预设时间时,通知计数器223将 当前计数值反馈给输出控制单元。以上两种方式数据出口单元22反馈的信 息属于流量信息。
图5示出了图2中输出控制单元20的结构,如图5所示,该输出控制单元 20包括空闲位获取模块51和输出模块52;其中,
空闲位获取模块51中设置有令牌桶,该令牌桶中的令牌数目表示数据出口 单元22中緩存对列的空闲位长度。空闲位获取模块51在接收到来自数据出口 单元22的脉冲后,将该脉沖换算为令牌数目,注入令牌桶。在输出模块52将 数据出口单元22的待发送数据调度到数据出口单无22的緩存队列时,从令牌 桶中减去与调度的待发送数据长度相等的令牌数目。
输出模块52,用于在令牌桶中的令牌数目大于或等于待发送数据时,将待 发送数据调度到对应的緩存队列中。
图6示出了图3中输出控制单元21的结构,如图6所示,该输出控制单元 21包括空闲位获取模块211、调度;f莫块212和输出模块213;其中,
空闲位获取模块211,用于根据各数据出口单元22反馈的流量信息,获取 各数据出口单元22中緩存队列的空闲位长度,并提供给调度模块212。如前所述,流量信息可以为数据出口单元22发送的脉冲。
具体来说,该空闲位获取模块211包括对应每个数据出口单元的令牌桶和
令牌桶维护子模块(令牌桶和令牌桶维护子模块在图5中未示出);其中,令牌 桶维护子模块对各令牌桶进行初始化;在接收到来自数据出口单元22脉冲后, 将脉冲换算为与该脉冲对应的数据出口单元22使用的阈值相等的令牌数,然后 向对应的数据出口单元22的令牌桶中注入,将各数据出口单元的令牌数目作为 空闲位长度提供给调度模块212;该空闲位获取模块211还在才全测到输出才莫块 213将待发送数据调度到当前数据出口单元22的緩存队列中时,从当前数据出 口单元22的令牌桶中减去与调度的待发送数据长度相等的令牌数目。
调度模块212,用于接收空闲位获取模块211提供的空闲位长度,即各数 据出口的令牌数目,根据各个等待发送数据的数据出口单元22对应的空闲位长 度,确定当前数据出口单元;所确定的当前数据出口单元的空闲位长度大于或 等有其待发送数据长度。
该调度模块212可以采用前述不同的调度方式。图7为图6中调度模块212 的一种结构示意图。如图7所示,该调度模块212包括排序子才莫块71和确定子 模块72;其中,
排序子模块71,用于按照令牌数目从多到少的顺序,对各等待发送数据的 数据出口单元进行排序,得到令牌数目最多的数据出口单元。
确定子模块72,用于在排序子模块71得到的令牌数目最多的数据出口单 元对应的令牌数目大于或等于其待发送数据的长度时,将该令牌数目最多的数 据出口单元确定为当前凄史据出口单元。
上文所述调度方式二和调度方式三仍可以采用图7所示的调度模块212结 构。只是排序子模块71和确定子模块72的功能有所不同。
采用调度方式二时,排序子模块71和确定子模块72的功能如下
排序子模块71,用于从各等待发送数据的数据出口单元中,获取令牌数目 大于或等于待发送数据长度的各数据出口单元;按照令牌数目从多到少的顺序, 对所获取的各数据出口单元进行排序。确定子模块72,用于根据排序子模块71的排序结果,将令牌数目最多者 确定为当前数据出口单元。
采用调度方式三时,排序子模块71和确定子模块72的功能如下
排序子模块71,用于从各等待发送数据的数据出口单元中,获取令牌数目 大于或等于待发送数据长度的各数据出口单元;计算所获取的各数据出口单元 的令牌数目与其待发送数据长度之间的差值,按照差值从大到小的顺序,对所 获取的各数据出口单元进行排序。
确定子模块72,用于根据排序子模块71的排序结果,将差值最大者确定 为当前凄t据出口单元。
以上就是调度模块212的组成和功能。
输出控制单元21中的输出模块213,用于将调度模块212确定的当前数据 出口单元的待发送数据调度到当前数据出口单元的緩存队列中。
当该数据发送控制装置应用于视频网关时,数据出口单元22中的数据出口 221为VP,数据出口单元22中的緩存队列222为TXQ。图8示出了当该数据 发送控制装置应用于视频网关时输出模块213的结构示意图,如图8所示,输 出模块213包括判断子模块、命令生成子模块、用于缓存发送命令的发送命令 队列,命令解析子模块、用于缓存发送前待处理数据如待图像处理数据的数据 队列、数据处理子模块和多路复用器。其中,
判断子模块,用于判断调度模块212确定的当前数据出口单元的空闲位长 度是否大于或等于当前数据出口单元的待发送数据的长度,并在判定结果为是 的情况下,通知命令生成子模块;
命令生成子模块,用于生成待发送数据的发送命令,将发送命令緩存到发 送命令队列中,其中,发送命令中包括待发送数据的存储地址和数据长度。
命令解析子模块,用于依次处理发送命令队列中的发送命令,将根据发送 命令获取的待发送数据緩存到数据队列中;
数据子处理模块,用于依次对数据队列中的待发送数据进行数据处理,例 如图像处理,然后将经过数据处理的待发送数据通过多路复用器发送到相应VP的TXQ中,等待发送。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的 保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改 进等,均应包含在本发明的保护范围之内。
权利要求
1、一种数据输出控制方法,其特征在于,该方法包括获取数据出口对应的缓存队列的空闲位长度;在获取的空闲位长度大于或等于所述数据出口的待发送数据的长度时,将所述待发送数据调度到所述数据出口对应的缓存队列中。
2、 如权利要求l所述的方法,其特征在于,所述数据出口对应的緩存队列 的空闲位长度用令牌桶中的令牌数目表示,具体包括为所述数据出口设置令牌桶;对所述数据出口的实际发送数据量进行计数,在每次计数值达到预设阈值 时,向所述令牌桶注入与所述预设阈值相等的令牌数目;所述将所述待发送数据调度到所述数据出口对应的緩存队列中之后,进一 步包括从所述令牌桶中减去与被调度的待发送数据长度相等的令牌数目。
3、 一种数据输出控制方法,其特征在于,该方法包括 获取各数据出口对应的緩存队列的空闲位长度;根据各个等待发送数据的数据出口对应的空闲位长度,确定当前数据出口 ; 所述当前数据出口的空闲位长度大于或等于该当前数据出口的待发送数据长 度;将所述当前数据出口的待发送数据调度到该当前数据出口对应的緩存队列中。
4、 如权利要求3所述的方法,其特征在于,所述各数据出口对应的緩存队 列的空闲位长度用令牌桶中的令牌数目表示,具体包括为每个数据出口对应设置令牌桶;对各数据出口的实际发送数据量进行计数,在每次计数值达到预设阈值时, 向发送数据量达到预设阚值的数据出口的令牌桶注入与预设阈值相等的令牌数 目5所述将当前数据出口的待发送数据调度到该当前数据出口对应的緩存队列中之后,进一步包括从所述当前数据出口对应的令牌桶中减去与被调度的待 发送数据长度相等的令牌数目。
5、 如权利要求3所述的方法,其特征在于,所述确定当前数据出口具体为 按照空闲位长度从长到短的顺序,对各等待发送数据的数据出口进行排序,得到空闲位长度最长的数据出口 ;如果当前所述空闲位最长的数据出口对应的空闲位长度大于或等于其待发 送数据的长度,则将该空闲位最长的数据出口确定为所述当前数据出口。
6、 如权利要求5所述的方法,其特征在于,该方法进一步包括在所述空 闲位最长的数据出口对应的空闲位长度小于其待发送数量的长度时,返回执行 所述对各等待发送数据的数据出口进行排序的操作。
7、 如权利要求3所述的方法,其特征在于,所述确定当前数据出口具体为 从各等待发送数据的数据出口中,获取空闲位长度大于或等于待发送数据长度的婆U居出口;按照空闲位长度从长到短的顺序,对获取的各数据出口进行排序,将空闲 位长度最长者确定为所述当前数据出口 。
8、 如权利要求7所述的方法,其特征在于,所述将当前数据出口的待发送 数据调度到该当前数据出口对应的緩存队列中之后,该方法进一步包括返回执行所述从各等待发送数据的数据出口中,获取空闲位长度大于或等 于待发送数据长度的数据出口的步骤;或者,按所排顺序,将除所述空闲位长度最长者以外的其他数据出口依次 作为所述当前数据出口 ,将当前数据出口的待发送数据调度到该当前数据出口 对应的緩存队列中,然后返回执行所述从各等待发送数据的数据出口中,获取 空闲位长度大于或等于待发送数据长度的数据出口的步骤。
9、 如权利要求3所述的方法,其特征在于,所述确定当前数据出口具体为 从各等待发送数据的数据出口中,获取空闲位长度大于或等于待发送数据长度的iy居出口;计算获取的各数据出口的空闲位长度与待发送数据长度之间的差值;按照差值从大到小的顺序,对所获取的各数据出口进行排序,将差值最大者确定为所述当前邀:据出口。
10、 如权利要求9所述的方法,其特征在于,所述将当前数据出口的待发 送数据调度到该当前数据出口对应的緩存队列中之后,该方法进一步包括返回执行所述从各等待发送数据的数据出口中,获取空闲位长度大于或等 于待发送数据长度的数据出口的步骤;或者,按所排顺序,将除所述差值最大者以外的各数据出口依次作为所述 当前数据出口 ,将当前数据出口的待发送数据调度到该当前数据出口对应的緩 存队列中,然后返回执行所述从各等待发送数据的数据出口中,获取空闲位长 度大于或等于待发送数据长度的数据出口的步骤。
11、 一种数据输出控制装置,其特征在于该装置包括输出控制单元和 数据出口单元;所述输出控制单元,用于获取所述数据出口单元中緩存队列的空闲位长度, 在所述空闲位长度大于或等于所述数据出口单元的待发送数据的长度时,将所 述待发送数据调度到所述数据出口单元的緩存队列中;所述数据出口单元,用于向外部发送緩存在其緩存队列中的数据。
12、 如权利要求11所述的装置,其特征在于,所述数据出口单元包括数据 出口、緩存队列、计数器和脉沖生成器;所述计数器,用于对所述数据出口发送的数据量进行计数,当计数值达到 预设阈值时,通知脉冲生成器,并从零开始计数;所述脉冲生成器,用于在接到通知后,生成脉沖并反^t贵给所述输出控制单元;所述数据出口,用于向所在装置外部发送数据;所述緩存队列,用于緩存来自输出控制单元的等待向所在装置外部发送的 数据;所述输出控制单元,进一步用于设置表示所述空闲位长度的令牌桶;在接 收到所述脉冲后,向所述令牌桶注入与所述阈值相等的令牌数目,在将所述待发送数据调度到所述数据出口单元的緩存队列中时,从所述令牌桶中減去与被 调度的待发送数据长度相等的令牌数目。
13、 一种数据输出控制装置,其特征在于该装置包括输出控制单元和 多个数据出口单元;所述输出控制单元,用于获取各数据出口单元中緩存队列的空闲位长度, 根据各个等待发送数据的数据出口单元对应的空闲位长度,确定当前数据出口单元;将所述当前数据出口单元的待发送数据调度到该当前数据出口的緩存队 列中;其中,所述当前数据出口的空闲位长度大于或等于所述当前数据出口的 待发送数据长度;所述数据出口单元,用于向外部发送缓存在其緩存队列中的li:据。
14、 如权利要求13所述的装置,其特征在于,所述输出控制单元包括空闲 位获取模块、调度模块和输出模块;所述空闲位获取模块,用于根据各数据出口单元反馈的流量信息,获取各 数据出口单元中緩存队列的空闲位长度,并提供给所述调度模块;所述调度模块,用于根据所述空闲位获取模块获取的空闲位长度,确定当 前数据出口单元;所述当前数据出口单元的空闲位长度大于或等于所述当前数 据出口的待发送数据长度;所述输出模块,用于将所述当前数据出口单元的待发送数据调度到该当前 数据出口单元的緩存队列中;所述数据出口单元进一步用于向输出控制单元反馈流量信息。
15、 如权利要求14所述的装置,其特征在于,所述调度模块包括排序子模 块和确定子模块;所述排序子模块,用于按照空闲位长度从长到短的顺序,对各等待发送数 据的数据出口进行排序,得到空闲位长度最长的数据出口 ;所述确定子模块,用于在所述排序子模块得到的所述空闲位最长的数据出 口对应的空闲位长度大于或等于其待发送数据长度时,将空闲位最长的数据出 口确定为所述当前#:据出口 。
16、 如权利要求14所述的装置,其特征在于,所述调度模块包括排序子模 块和确定子模块;所述排序子模块,用于从各等待发送数据的数据出口中,获取空闲位长度 大于或等于待发送数据长度的数据出口;按照空闲位长度从长到短的顺序,对 获取的各数据出口进行排序;所述确定子模块,用于根据所述排序子模块的排序结果,将空闲位长度最 长的数据出口确定为所述当前数据出口 。
17、 如权利要求14所述的装置,其特征在于,所述调度模块包括排序子模 块和确定子模块;所述排序子模块,用于从各等待发送数据的数据出口中,获取空闲位长度 大于或等于待发送数据长度的数据出口 ;计算获取的各数据出口的空闲位长度 与其待发送数据长度之间的差值;按照差值从大到小的顺序,对获取的各数据 出口进行排序;所述确定子模块,用于根据所述排序子模块的排序结果,将差值最大的数 据出口确定为所述当前凄史据出口。
18、 如权利要求14所述的装置,其特征在于,所述数据出口单元包括数据 出口、緩存队列、计^t器和脉冲生成器;所述计数器,用于对所述数据出口发送的数据进行计数,当计数值达到预 设阈值时,通知脉冲生成器,并从零开始计数;所述脉冲生成器,用于在接到通知后,生成脉沖,作为所述流量信息反馈 给输出控制单元;所述数据出口,用于向所在装置外部发送数据;所述緩存队列,用于緩存来自输出控制单元的等待向所在装置外部发送的 数据;所述空闲位获取模块包括对应每个数据出口单元的令牌桶和令牌桶维护子 模块;所述令牌桶维护子模块,用于在接收到脉冲后,向发送该脉沖的数据出口单元的令牌桶中注入与所述阈值相等的令牌,将各数据出口单元的令牌数目作 为空闲位长度提供给所述调度模块;在所述输出模块将所述待发送数据调度到 当前数据出口单元的緩存队列中时,从当前数据出口单元的令牌桶中减去与被 调度的待发送数据长度相等的令牌数目。
全文摘要
本发明公开了一种数据输出控制方法,该方法包括获取数据出口对应的缓存队列的空闲位长度;在获取的空闲位长度大于或等于所述数据出口的待发送数据的长度时,将所述待发送数据调度到所述数据出口对应的缓存队列中。本发明还公开了另一种数据输出控制方法和两种数据输出控制装置。使用本发明能够避免断流现象的发生。
文档编号H04L12/56GK101286947SQ200810114079
公开日2008年10月15日 申请日期2008年5月30日 优先权日2008年5月30日
发明者侯新宇, 强 刘, 晋兆虎 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1