一种流量控制的方法及装置的制作方法

文档序号:7960610阅读:149来源:国知局
专利名称:一种流量控制的方法及装置的制作方法
技术领域
本发明涉及数据传输技术领域,尤其涉及一种流量控制的方法及装置。
背景技术
在一个实时性和可靠性要求很高的通信系统中,要满足传输的可靠,需要对不同的业务进行流量控制。
在已有的技术方案中,一种流量控制的方法是固定传输速率,如漏桶控制方式。漏桶相当于一个缓冲区,可以将突发传输流转化为平缓传输流,确保用户的传输流遵守用户在建立连接时的规定。当队列满时,分组被丢弃,队列按规定的速率向网络发送分组。
采用这种方式能保证系统的可靠性,但缺点也比较明显,就是在业务量存在变化的时候不能合理的使用资源,无论数据量多大,总以恒定速率发送数据。不能实时的根据网络状况对网络流量进行控制,如果网络出现拥塞,仍以规定速率进行发送,导致丢包率过高、延迟过大。如果在业务量较大的时候,速率设置过小则会出现数据堆积过多而丢包的情况。
另一种现有技术已实现了网络流量的动态调整、多优先级的分别传输。比如滑动窗口协议,可以通过动态调整窗口大小来进行流量控制。
传输控制协议(TCPTransmission Control Protocol)使用窗口技术来改善流量控制,以便通信双方能够充分利用带宽。滑动窗口允许发送方在收到接收方的确认之前发送多个数据段。窗口大小决定了在收到目的地确认之前,一次可以传送的数据段的最大数目。窗口越大,主机一次可以传输的数据段就越多。当主机传输窗口大小数目的数据段后,就必须等收到确认,才可以再传下面的数据段。窗口技术大大提高了网络带宽的利用率。
窗口的大小在通信双方连接期间是可变的,通信双方可以通过协商动态地修改窗口大小。在TCP的每个确认中,除了指出希望收到的下一个数据段的序列号之外,还包括一个窗口通告,通告中指出了接收方还能再收多少数据段,即接收方缓冲区大小。如果通告值增大,窗口大小也相应增大;通告值减小,窗口大小也相应减小。
网络流量动态调整的方法,往往只考虑速率的控制,忽略了系统资源的平衡,提高网络流量的同时,过高的速率使系统处理所耗资源过大,导致系统运行的不稳定性,影响其他业务的处理。还有可能导致系统资源不足而产生连锁反应应用层数据处理失败,套接字(socket)缓冲区发送出现拥塞情况等。

发明内容
本发明要解决的技术问题是提供一种流量控制的方法及装置,该方法及装置可以做到系统处理能力与网络带宽的合理均衡,在保证了系统的运行效率前提下正常发送数据。
为解决上述技术问题,本发明的目的是通过以下技术方案实现的,一种流量控制的方法,包括步骤1)获取流量控制参数,所述流量控制参数包括系统性能数据;2)将所述流量控制参数与预设范围进行比较;3)根据所述比较的结果对数据包的发送速率进行控制。
优选地,所述流量控制参数具有不同的优先级;所述步骤3)中根据所述比较的结果依次按照各流量控制参数的优先级顺序对数据包的发送速率进行控制。
优选地,所述获取流量控制参数还包括获取网络性能数据,所述网络性能数据具有低于系统性能数据的优先级。
优选地,所述系统性能数据包括系统中央处理单元占用率和/或内存占用率。
优选地,所述步骤3)中对数据包的发送速率进行控制是对数据包发送的峰值速率进行调整。
优选地,所述对峰值速率进行调整是根据所述比较结果超出或低于预设范围的量按比例或定步长进行调整。
优选地,所述获取流量控制参数还包括获取流量接收端的反馈数据,所述反馈数据包括流量接收端的拥塞率和/或丢包率;该反馈数据具有低于系统性能数据的优先级。
本发明提供的一种流量控制的装置,包括统计单元,用于获取流量控制参数,所述流量控制参数包括系统性能数据;比较单元,用于将所述流量控制参数与预设范围进行比较;速率调整单元,用于根据所述比较的结果对数据包的发送速率进行控制。
优选地,还包括参数设置单元,用于设置获取的各流量控制参数的优先级和与流量控制参数比较的参数范围。
优选地,所述统计单元,还用于获取网络性能数据,所述网络性能数据具有低于系统性能数据的优先级。
优选地,包括一级数据缓冲区,用于接收数据并在单位时间内将一定量数据写入二级数据缓冲区;二级数据缓冲区,用于接收来自一级数据缓冲区写入的数据并在所述单位时间内全部发送出去;所述速率调整单元对发送速率的控制,是控制单位时间一级数据缓冲区可以写入二级数据缓冲区数据量的最大值。
优选地,所述一级数据缓冲区,由若干不同优先级队列组成;所述参数设置单元,还用于设置每个单位时间一级数据缓冲区各优先级队列中数据包写入二级数据缓冲区的比率。
采用上述技术方案,本发明有益的技术效果在于1)本发明通过获取包括系统性能数据在内的流量控制参数,并比较所述性能数据与预设范围,根据比较结果控制数据包发送的速率。解决了过高的传输速率使系统处理所耗资源过大、导致系统运行不稳定的问题。保证了数据发送时系统的运行效率。
2)在系统性能数据保持在正常范围内的基础上,获取的流量控制参数还可以包括网络性能数据,并将网络性能数据与预设范围进行比较,根据比较结果动态平滑调整数据包发送的速率,更好的利用了网络资源,保证系统运行的平稳性。
3)本发明对发送速率的控制是根据流量控制参数与预设范围的比较结果超出或低于预设范围的量按比例或定步长对峰值速率进行调整。做到了对数据发送的峰值速率合理的定量调整,使调整更精确、更迅速。


图1,为本发明实施例一流量控制的方法的流程图;图2,为本发明实施例二流量控制的方法的流程图;图3,为本发明实施例三流量控制的方法的流程图;
图4,为本发明流量控制的装置的结构图;图5,为本发明实施例四流量控制的装置的结构图;图6,为应用本发明进行的测试1情况下的CPU占用率图;图7,为应用本发明进行的测试2情况下的CPU占用率图;图8,为应用本发明进行的测试3情况下的CPU占用率图。
具体实施例方式
本发明提供一种流量控制的方法及装置,应用于数据传输技术领域。该方法及装置的基本思想是获取流量控制参数,所述流量控制参数包括系统性能数据;将所述流量控制参数与预设范围进行比较;根据所述比较的结果对数据包的发送速率进行控制。数据包发送速率越大消耗系统资源也随之增大,同时可能导致拥塞,降低数据包发送速率可以降低对系统资源的消耗,本发明保证了系统处理能力与网络带宽的合理均衡。所述流量控制参数还可以包括网络性能数据,通过网络性能数据对发送速率的控制具有低于系统性能数据的优先级。下面对本发明的流量控制方法和装置进行详细描述。
实施例一,一种流量控制的方法,流程图如图1所示,包括步骤步骤a1,获取系统中央处理单元(CPUCentral Processing Unit)占用率。
所述系统性能数据,是系统运行设备的软硬件参数,本实施例采用的是系统CPU的占用率,还可以是内存占用率等可以反映系统运行状况的数据,设备不同,获取的软硬件参数也可以不同,例如,还可以是某些设备特有的系统性能数据,具体获取的参数不构成对本发明的限制。
步骤a2,检查所述CPU占用率是否超出相应的预设范围,是,则转向步骤a3;否,则转向步骤a4。
步骤a3,降低数据包发送的峰值速率,并转向步骤a4。
所述峰值速率是每个单位时间数据包发送的最大值,通过对峰值速率的调整可以间接控制数据包发送的速率。本发明强调的是通过获取系统性能数据控制数据包发送的速率,具体对数据包发送的速率采用何种控制方式不构成对本发明的限制。
步骤a4,结束本次调整。
通过控制数据包发送速率可以达到控制传输任务对系统资源的占用的目的。解决了过高的传输速率使系统处理所耗资源过大、导致系统运行不稳定的问题,保证了数据发送时系统的运行效率。
实施例二,一种流量控制的方法,流程图如图2所示,包括步骤步骤b1,获取CPU占用率和数据包发送的实际速率。
所述数据包发送的实际速率是预置的时间周期内统计的数据包实际发送的平均速率。
本实施例中,网络性能数据为数据包发送的实际速率。所述网络性能数据还可以包括拥塞率和/或丢包率等有助于判断数据包传输状况的参数。
步骤b2,检查所述CPU占用率是否超出相应的预设范围,是,则转向步骤b4;否,则转向步骤b3。
步骤b3,检查所述实际速率是否在相应的预设范围之外,是,则转向步骤b5;否,则转向步骤b6。
步骤b4,降低数据包发送的峰值速率,并转向步骤b6。
步骤b5,对数据包发送的峰值速率进行调整,并转向步骤b6。
所述调整具体为,若所述实际速率高于相应的预设范围上限,则升高所述峰值速率,若所述实际速率低于相应的预设范围下限,则降低所述峰值速率。
所述用于与实际速率进行比较相应的预设范围,随着峰值速率的升高或降低进行等量的升高或降低。
步骤b6,结束本次调整。
实施例二与实施例一的区别是增加的获取网络性能数据并根据网络性能数据对数据包发送的峰值速率进行调整的步骤。在系统性能保持正常的前提下,通过根据获取的网络性能数据,动态平滑调整数据包发送的速率,做到了保证系统运行的平稳性,同时又合理利用了网络资源。
实施例三,一种流量控制的方法,流程图如图3所示,包括步骤步骤s1,获取预置的时间周期内统计的系统性能数据和网络性能数据。
本实施例中,每1秒进行数据统计,统计的数据包括本传输任务的平均CPU占用率、拥塞率、丢包率和数据包发送的实际速率。
本实施例中,每10毫秒作为发送数据的单位时间,速率值以单位时间发送的数据包个数来表示。可以理解的是,对速率值单位的定义不限于此种方式,也可以是每单位时间发送数据的位数、字节数或码元数。
实际速率为在1s统计周期内,每个单位时间(10毫秒)发送数据包个数的平均值。
步骤s2,检查获取的CPU占用率是否超过相应的阈值,是,则转向骤s3;否,则转向步骤s4。
可以理解的是,本实施例中用于与CPU占用率、拥塞率、丢包率进行比较的相应的预设范围用各自的阈值进行划定。考虑上层业务处理所耗CPU时间,设置本任务所占CPU阈值为20%。
步骤s3,根据所述CPU占用率超出相应阈值的量所占阈值的百分比对峰值速率采取对应的降低值,并转向步骤s11。此处的CPU占用率为高优先级流量控制参数,对峰值速率的控制为高优先级。
高优先级流量控制参数超出预设相应阈值的量所占阈值的百分比对应的峰值速率调整值如表1所示。CPU占用率作为高优先级流量控制参数,对峰值速率的调整幅度较大。
其中,峰值速率为每个单位时间(10毫秒)发送数据包个数的最大值。
本例实施例中,设置初始发包个数最大值为100(即峰值速率为100个包/10毫秒)。
步骤s4,检查获取的拥塞率是否超出相应的阈值,是,则转向步骤s6;否,则转向步骤s5。本实施例中,设置拥塞率阈值0.1%。
步骤s5,检查获取的丢包率是否超出相应的阈值,是,则转向步骤s6;否,则转向步骤s7。本实施例中,设置丢包率阈值为0.05%。
步骤s6,根据所述拥塞率或丢包率超出相应阈值的量所占相应阈值的百分比对峰值速率采取对应的降低值,并转向步骤s11。此处的拥塞率和丢包率为中优先级流量控制参数,对峰值速率的控制为中优先级。
中优先级流量控制参数超出预设相应阈值的量所占阈值的百分比对应的峰值速率调整值如表1所示。拥塞率和丢包率作为中优先级流量控制参数,与高优先级流量控制参数相比,对峰值速率的调整值相对较小。
本实施例中,CPU占用率、拥塞率和丢包率超出相应阈值的量所占阈值百分比的计算公式为
百分比=(获取的流量控制参数-阈值)/阈值×100%表1

步骤s7,比较数据包发送的峰值速率与实际速率得到差值,并检查所述差值是否大于预设的差值范围的上限值,是,则转向步骤s8;否,则转向步骤s9。
其中,因为峰值速率和实际速率以单位时间内发送数据包的个数来计算,所以其差值也为数据包个数。
步骤s8,根据所述差值对峰值速率采取对应的降低值并转向步骤s11。
步骤s9,检查所述峰值速率和实际速率的差值是否小于预设差值范围的下限值,是,则转向步骤s10;否,则转向步骤s11。
步骤s10,根据所述差值对峰值速率采取对应的升高值并转向步骤s11。
获取的实际速率为低优先级流量控制参数,对峰值速率的控制为低优先级,所述差值与对应的峰值速率调整值如表2所示。差值15为预设差值范围的下限值,差值35为预设差值范围的上限值,差值小于15表明当前网络状况良好,需要升高峰值速率,差值越小,峰值速率升高幅度越大;一旦差值超过35则表明网络状况较差,需要降低峰值速率;差值越大,峰值速率降低幅度越大。差值在15到35的范围内,认为发送速率趋于一个稳定状态,不对峰值速率进行调整,这样也保证速率在一段时间的调节后趋于稳定,从而CPU占用率也趋于稳定。
表2


其中,对于所述峰值速率和实际速率的差值与预设范围上限值或下限值的判断以及调整并无绝对顺序,更进一步,对于所述差值与上限值和下限值的判断步骤也非必要,也可以直接通过差值查询差值与峰值速率调整值的对应关系得到调整值,不过此种方式增加了对表2的访问次数,对系统资源占用较大,不建议采用。
所述峰值速率和实际速率的比较结果在本实施例中采用的是两者的差值,可以理解的是,所述比较结果也可以是两者的比值。只要可以根据比较得出的结果可以对应预设的对峰值速率的调整值即可。
步骤s11,结束本次调整。
本发明对于流量控制参数优先级的高低以及对应调整策略的可以进行设置,并且设置的优先级也不限于以上三个,可以根据不同的流量控制参数分别设置不同的优先级以满足用户的需求。
本实施例是根据流量控制参数与预设范围的比较结果超出或低于预设范围的量定步长对峰值速率进行调整。所述定步长进行调整,是根据所述比较结果对应其相应的峰值速率调整值。同样,也可以采用按照比例对峰值速率进行调整,所述按比例进行调整为根据比较结果对应其相应的峰值速率调整的比例。对峰值速率的定量调整的方式并不构成对本发明的限制。通过上述调整方式,做到了对数据发送的峰值速率合理定量调整,使调整更精确、更迅速。
以上实施方式对本发明的描述只考虑通过统计本地数据对数据发送的流量进行控制,可以理解的是,本发明还可以与流量接收端建立握手机制,反馈本端统计数据给流量接收端同时获得流量接收端的反馈数据。所述反馈的数据可以包括流量接收端的CPU占用率、拥塞率、丢包率和实际发送速率等。通过获取所述反馈数据统计数据对本端数据发送速率做相应调整。在本实施例基础上,可以将这些反馈数据作为中优先级的流量控制参数进行判断,调整数据包发送的峰值速率,以适应流量接收端情况。
下面对本发明提供的一种流量控制的装置进行详细描述。
请参阅图4,是本发明流量控制的装置的结构图,包括统计单元310,用于获取流量控制参数,所述流量控制参数包括系统性能数据;比较单元320,用于将所述流量控制参数与预设范围进行比较;速率调整单元330,用于根据所述比较的结果对数据包的发送速率进行控制。
实施例四,一种流量控制的装置,结构图如图5所示,包括一级数据缓冲区100,被划分成若干不同优先级队列,用于接收数据并在单位时间内将一定量数据写入二级数据缓冲区200。
二级数据缓冲区200,用于接收来自一级数据缓冲区100写入的数据并在所述单位时间内全部发送出去。
可以理解的是,二级数据缓冲区200可以是套接字缓冲区,还可以是其他用于发送数据的缓冲区。
统计单元310,用于获取流量控制参数,所述流量控制参数包括系统性能数据。
比较单元320,用于将所述流量控制参数与预设范围进行比较。
速率调整单元330,用于根据比较结果对数据包的发送速率进行控制。所述控制是控制数据包发送的峰值速率,即控制单位时间一级数据缓冲区可以写入二级数据缓冲区数据量的最大值。
参数设置单元340,用于设置获取的各流量控制参数的优先级和与流量控制参数的比较的参数范围;还用于设置每个单位时间一级数据缓冲区100各优先级队列中数据包写入二级数据缓冲区200的比率。
需要说明的是,上层业务模块将数据包写入一级数据缓冲区100,写入数据时,按照数据包的优先级字段,将数据包写入一级数据缓冲区100内对应的优先级队列。一级数据缓冲区100将数据写入二级数据缓冲区200时,按照参数设置单元340设置的各优先级队列写入二级数据缓冲区200的比率写入数据。
上述装置可应用前述实施例一至实施例三中的控制方法来进行流量控制,下面以实施例三中的方法为例,详细说明本装置的控制过程首先用户根据需要可以在参数设置单元340设置相关的参数,所述参数和实施例三中需要设置的参数一致。系统启动后统计单元310获取预置的时间周期内统计的系统性能数据和网络性能数据。本实施例中,每1秒进行数据统计,统计的数据包括本传输任务的平均CPU占用率、实际发送速率、丢包率、拥塞率。比较单元320检查统计单元310获取的平均CPU占用率是否超过相应的阈值,是,则速率调整单元330根据所述CPU占用率超出相应阈值的量所占阈值的百分比对峰值速率采取对应的降低值,并结束本次调整;否,则比较单元320检查统计单元310获取的拥塞率是否超出相应的阈值,是,则速率调整单元330根据所述拥塞率超出相应阈值的量所占阈值的百分比对峰值速率采取对应的降低值,并结束本次调整;否,则比较单元320检查统计单元310获取的丢包率是否超出相应的阈值,是,则速率调整单元330根据所述丢包率超出相应阈值的量所占阈值的百分比对峰值速率采取对应的降低值,并结束本次调整;否,则比较单元320比较数据包发送的峰值速率与实际速率得到差值,并检查所述差值是否大于预设的差值范围的上限值,是,则根据所述差值对峰值速率采取对应的降低值,并结束本地调整;否,则比较单元320检查所述峰值速率和实际速率的差值是否小于预设差值范围的下限值,是,则速率调整单元330根据所述差值对峰值速率采取对应升高值,并结束本次调整;否,则直接结束本次调整。
为了进一步说明本发明的实际效果,下面给出基于上述应用例,用不同数据进行实际测试并与现有技术进行对比的说明。
测试1网络状况良好,socket缓冲区大小为96Kbytes,数据包大小平均为320bytes,每单位时间(10毫秒)发包个数最大值初始为100,经过动态调整后稳定于62,实际发包个数稳定于29,请参阅图6,CPU占用率稳定于15%。发送速率稳定于7.11Mbps,丢包率和拥塞率都为0。
测试2网络状况较差,socket缓冲区大小为96Kbytes,数据包大小平均为170bytes,每单位时间(10毫秒)发包个数最大值初始为100。请参阅图7,CPU占用率出现轻微波动,稳定于18%~19%,未超过阈值20%。每单位时间发包个数最大值经过动态调整后稳定于90,实际发包个数稳定于56,发送速率稳定于7.23Mbps。测试中出现拥塞和丢包情况,经过动态降低发包个数最大值,影响到实际发包个数,从而降低发送速率,防止出现更恶劣的拥塞或丢包情况,一旦网络状况得到好转,自动将发包个数最大值调高,实际发包个数也随之增加,从而升高了发送速率。整个过程体现了本发明在保证系统性能前提下对网络速率的改善。
测试3采用现有技术的漏桶控制方式,网络状况良好,socket缓冲区大小为96Kbytes,数据包大小平均为320bytes。与测试1数据一致,每单位时间(10毫秒)发包个数最大值固定为100,每单位时间实际发送数据包个数波动较大,大致处于16到24范围,而发送速率处于3.80到6.20Mbps。请参阅图8,CPU占用率波动较大,处于10%到15%之间。对比测试1,可以看出本发明良好的系统稳定性和较快的发送速率。
如表3、表4,分别进行了9组测试,表3为采用现有技术测试数据,即每个单位时间发包个数最大值固定,不经过动态调整数据,每个单位时间实际发包个数存在波动,且发送速率存在不稳定,某些组合速率较低、CPU占用率波动较大。表4为使用本发明的测试数据,不管初始发包个数多少,发包的大小,经过动态调整后,发包个数的最大值和实际值皆趋于稳定,保证较高的发送速率和稳定的CPU占用率。
表3

表4

以上对本发明所提供的一种流量控制的方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种流量控制的方法,其特征在于,包括步骤1)获取流量控制参数,所述流量控制参数包括系统性能数据;2)将所述流量控制参数与预设范围进行比较;3)根据所述比较的结果对数据包的发送速率进行控制。
2.如权利要求1所述的流量控制的方法,其特征在于所述流量控制参数具有不同的优先级;所述步骤3)中根据所述比较的结果依次按照各流量控制参数的优先级顺序对数据包的发送速率进行控制。
3.如权利要求2所述的流量控制的方法,其特征在于所述获取流量控制参数还包括获取网络性能数据,所述网络性能数据具有低于系统性能数据的优先级。
4.如权利要求1所述的流量控制的方法,其特征在于,所述系统性能数据包括系统中央处理单元占用率和/或内存占用率。
5.如权利要求1至4任意一项所述的流量控制的方法,其特征在于所述步骤3)中对数据包的发送速率进行控制是对数据包发送的峰值速率进行调整。
6.如权利要求5所述的流量控制的方法,其特征在于所述对峰值速率进行调整是根据所述比较结果超出或低于预设范围的量按比例或定步长进行调整。
7.如权利要求6所述的流量控制的方法,其特征在于所述获取流量控制参数还包括获取流量接收端的反馈数据,所述反馈数据包括流量接收端的拥塞率和/或丢包率;该反馈数据具有低于系统性能数据的优先级。
8.一种流量控制的装置,其特征在于,包括统计单元,用于获取流量控制参数,所述流量控制参数包括系统性能数据;比较单元,用于将所述流量控制参数与预设范围进行比较;速率调整单元,用于根据所述比较的结果对数据包的发送速率进行控制。
9.如权利要求8所述的流量控制的装置,其特征在于,还包括参数设置单元,用于设置获取的各流量控制参数的优先级和与流量控制参数的比较参数范围。
10.如权利要求9所述的流量控制的装置,其特征在于所述统计单元,还用于获取网络性能数据,所述网络性能数据具有低于系统性能数据的优先级。
11.如权利要求10所述的流量控制的装置,其特征在于,包括一级数据缓冲区,用于接收数据并在单位时间内将一定量数据写入二级数据缓冲区;二级数据缓冲区,用于接收来自一级数据缓冲区写入的数据并在所述单位时间内全部发送出去;所述速率调整单元对发送速率的控制,是控制单位时间一级数据缓冲区可以写入二级数据缓冲区数据量的最大值。
12.如权利要求11所述的流量控制的装置,其特征在于所述一级数据缓冲区,由若干不同优先级队列组成;所述参数设置单元,还用于设置每个单位时间一级数据缓冲区各优先级队列中数据包写入二级数据缓冲区的比率。
全文摘要
本发明公开了一种流量控制的方法及装置,应用于数据传输技术领域,所述方法包括步骤获取流量控制参数,所述流量控制参数包括系统性能数据;将所述流量控制参数与预设范围进行比较;根据所述比较的结果对数据包的发送速率进行控制。本发明同时提供实现所述方法的装置。本发明解决了过高的传输速率使系统处理所耗资源过大,导致系统运行不稳定的问题,做到了系统处理能力与网络带宽的合理均衡,既保证了数据的正常发送,又保证了系统的运行效率。
文档编号H04L12/00GK1968192SQ200610078308
公开日2007年5月23日 申请日期2006年5月9日 优先权日2006年5月9日
发明者魏末平, 陈文军 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1