发明内容
有鉴于此,本发明提供了一种数据传输的限速方法及装置,可以使速度统计和限速结果更加平滑。
为达上述目的,本发明的技术方案具体是这样实现的:
一种数据传输的限速方法,该方法包括:
设置用于栈入数据的平滑处理容器,该平滑处理容器采用先入先出方式栈入预设时长的数据;
传输的数据栈入所述平滑处理容器;
根据所述平滑处理容器中当前记录的数据量和平滑处理容器的时长容量,统计平均数据传输速度;
根据所述平均数据传输速度进行限速。
较佳地,所述平滑处理容器包括:
用于栈入所有下载数据的全局平滑处理容器;
和/或,与下载任务对应的仅用于栈入属于该下载任务的下载数据的任务平滑处理容器;
和/或,与下载任务中的节点对应的仅用于栈入从该节点下载的数据的节点平滑处理容器。
较佳地,所述设置用于栈入数据的平滑处理容器,将传输的数据栈入所述平滑处理容器,包括:
设置全局平滑处理容器;
若接收到的数据包的源地址为节点地址,且数据合法,则将该数据栈入所述全局平滑处理容器。
较佳地,所述设置用于栈入数据的平滑处理容器,将传输的数据栈入所述平滑处理器,包括:
为每个下载任务对应设置任务平滑处理容器;
若接收到的数据包的源地址为节点地址,数据合法,且存在对应的下载任务,则将该数据栈入与该下载任务对应的任务平滑处理容器。
较佳地,所述设置用于栈入数据的平滑处理容器,将传输的数据栈入所述平滑处理器,包括:
为每个下载任务中的每个节点对应设置节点平滑处理容器;
若接收到的数据包的源地址为节点地址,数据合法,存在对应的下载任务,且对应的下载任务中存在对应的节点,则将该数据栈入与该节点对应的节点平滑处理容器。
较佳地,所述设置用于栈入数据的平滑处理容器,将传输的数据栈入所述平滑处理器,包括:
设置全局平滑处理容器;每个下载任务对应设置一个任务平滑处理容器;每个下载任务中的每个节点对应设置一个节点平滑处理容器;
若接收到的数据包的源地址为节点地址,且数据合法,则将该数据栈入所述全局平滑处理容器;
若所述数据存在对应的下载任务,则将该数据栈入与该下载任务对应的任务平滑处理容器;
若所述数据在对应的下载任务中还存在对应的节点,则进一步将该数据栈入与该节点对应的节点平滑处理容器。
较佳地,所述根据平滑处理容器中当前记录的数据量和平滑处理容器的时长容量,统计平均数据传输速度,包括:
将所述全局平滑处理容器中当前记录的数据量除以所述全局平滑处理容器的时长容量,得到全局平均数据传输速度;
将所述与下载任务对应的任务平滑处理容器中当前记录的数据量除以该下载任务对应的任务平滑处理容器的时长容量,得到该下载任务对应的任务平均数据传输速度;
将所述与下载任务中的每个节点对应的节点平滑处理容器中当前记录的数据量除以该节点对应的节点平滑处理容器的时长容量,得到该节点对应的节点平均数据传输速度。
一种数据传输的限速装置,该装置包括:
速度统计模块,设置用于栈入数据的平滑处理容器,该平滑处理容器采用先入先出方式栈入预设时长的数据;在传输的数据栈入所述平滑处理容器时,根据所述平滑处理容器中的当前数据量和平滑处理容器的时长容量,统计平均数据传输速度;
数据控制模块,用于将传输的数据栈入所述平滑处理容器;
限速模块,用于根据所述速度统计模块统计的平均数据传输速度进行限速。
较佳地,所述速度统计模块包括:
全局速度统计单元,通过用于栈入所有下载数据的全局平滑处理容器,统计全局平均数据传输速度;
和/或,任务速度统计单元,通过与下载任务对应的仅用于栈入属于该下载任务的下载数据的任务平滑处理容器,统计任务平均数据传输速度;
和/或,节点速度统计单元,通过与下载任务中的节点对应的仅用于栈入从该节点下载的数据的节点平滑处理容器,统计下载任务中对应节点的节点平均数据传输速度。
较佳地,所述全局速度统计单元包括:
全局平滑处理容器和全局速度计算子单元;
所述全局速度计算子单元,将所述全局平滑处理容器中当前记录的数据量除以所述全局平滑处理容器的时长容量,得到全局平均数据传输速度;
所述数据控制模块,若接收到的数据包的源地址为节点地址,且数据合法,则将该数据栈入所述全局平滑处理容器。
较佳地,所述任务速度统计单元包括:
任务平滑处理容器和任务速度计算子单元;
所述任务速度计算子单元,将与下载任务对应的任务平滑处理容器中当前记录的数据量除以该下载任务对应的任务平滑处理容器的时长容量,得到该下载任务对应的任务平均数据传输速度;
所述数据控制模块,若接收到的数据包的源地址为节点地址,数据合法,且存在对应的下载任务,则将该数据栈入与该下载任务对应的任务平滑处理容器。
较佳地,所述节点速度统计单元包括:
节点平滑处理容器和节点速度计算子单元;
所述节点速度计算子单元,将所述与下载任务中的每个节点对应的节点平滑处理容器中当前记录的数据量除以该节点对应的节点平滑处理容器的时长容量,得到该节点对应的节点平均数据传输速度;
所述数据控制模块,若接收到的数据包的源地址为节点地址,数据合法,存在对应的下载任务,且对应的下载任务中存在对应的节点,则将该数据栈入与该节点对应的节点平滑处理容器。
由上述技术方案可见,本发明的这种数据传输的限速方法及装置,通过平滑处理容器,将现有限速过程中的速度统计由统计瞬时速度改变为统计平均速度,使得速度统计的结果更加平滑,以该速度统计结果进行的限速结果也会更加平滑。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明主要是将现有限速过程中的速度统计由统计瞬时速度改为统计平均速度,使得速度统计的结果更加平滑,以该速度统计结果进行的限速结果也会更加平滑。
本发明的数据传输限速方法总体实现流程如图1所示,包括如下步骤:
步骤101,预先设置用于栈入数据的平滑处理容器,该平滑处理容器采用先入先出方式栈入预设时长的数据。
其中,栈入并非存储或缓存,平滑处理容器相当于一个管道,所有数据会经过平滑处理容器,但平滑处理容器中并不保存真实的数据,只是记录当前经过平滑处理容器的数据量。
该平滑处理容器以时长容量作为容器工作的单位,是预先设置的定值,时长容量即平滑处理容器中记录多长时间内的数据的数据量,例如预设的时长容量是10秒,该平滑处理容器中栈入第一个数据的时间为T,则该平滑处理容器中栈入的是T+0,T+1…T+9的数据,当T=10的数据进入平滑处理容器时,T+0的数据就被丢弃。
步骤102,将传输的数据栈入所述平滑处理容器;
对于上传来说,可以将本地发送出的数据栈入平滑处理容器,对于下载,可以将本地接收到的数据栈入平滑处理容器。
步骤103,根据所述平滑处理容器中当前记录的数据量和平滑处理容器的时长容量,统计所述预设时长内的平均数据传输速度;平均速度=平滑处理容器中当前记录的数据量/时长容量,其中平滑处理容器中当前记录的数据量是从对应平滑处理容器中动态获取的,该时长容量是个定值,对于不同的平滑处理容器,时长容量也可以不同,可以根据需要确定。
步骤104,根据所述平均数据传输速度进行限速。
具体限速的方法可以采用现有成熟技术,本文对于具体限速过程没有进行改进,这里不再赘述。
本发明的数据传输限速方法可以用于多种应用下的数据的上传或下载,例如P2P应用中的数据下载和上传。
其中,在P2P下载应用中,可以进行统计和限速的有:表示所有下载任务总下载速度的全局下载速度;表示某个下载任务中所有节点的总下载速度的任务下载速度;表示某下载任务中某个节点的下载速度的节点下载速度;对应的,所述平滑处理容器根据上述应用的需要,可以包括用于栈入所有下载数据的全局平滑处理容器;和/或,与下载任务对应的仅用于栈入属于该下载任务的下载数据的任务平滑处理容器;和/或,与下载任务中的节点对应的仅用于栈入从该节点下载的数据的节点平滑处理容器。
在P2P下载时,可能同时会有多个下载任务,对于每一个下载任务,都可以设置一个对应的平滑处理容器,同样的,对于下载任务中的每一个节点,也都可以设置一个对应的平滑处理容器。最终,将会形成一个由平滑处理容器组成的数据栈入阵列。
当然,对于其他应用,设置平滑处理器的原理是相同的,即每一个需要统计的速度,都设置一个平滑处理器专门用于该速度的统计,不同速度的统计,使用不同的平滑处理器。
作为另一种实现方式,也可以仅设置一个全局平滑处理容器,对于全局、下载任务(Task)和下载任务对应的节点(peer),只需要分别用一个整数来记录对应全局数据、task数据、peer数据的数据量;对于每个栈入全局平滑处理容器的数据,先确定该数据是全局数据,和/或task数据,和/或peer数据,并相应增加记录的数据量即可;当然,上传和下载还是需要分开保存,即一个整数用来保存上传的数据量,一个整数用来保存下载的数据量。
如果存在多个平滑处理容器,那么在步骤102中,还需要对传输的数据进行判断,从而将数据对应栈入相应的平滑处理容器中,以便得到正确的速度统计数据。
仍以P2P下载应用为例,对于全局下载速度的统计,将数据栈入平滑处理容器的流程如图2所示,包括如下步骤:
步骤201,判断接收到的数据包的源地址是否为节点地址;即判断接收到的数据包是否为一个P2P节点所发送,如果是,则进入步骤202,否则结束流程;
步骤202,判断接收到的数据是否合法,例如校验该数据包的长度、类型(握手包或者比特位包)、以及协议字段是否合法等;如果是,则进入步骤203,否则结束流程。
步骤203,将该数据栈入全局平滑处理容器。
对于任务下载速度的统计,将数据栈入平滑处理容器的流程如图3所示,包括如下步骤:
步骤301,判断接收到的数据包的源地址是否为节点地址;如果是,则进入步骤302,否则结束流程。
步骤302,判断接收到的数据是否合法;如果是,则进入步骤303,否则结束流程。
步骤303,判断接收到的数据是否存在对应的下载任务,即该数据是否属于正在进行下载的一个下载任务,如果是,则进入步骤304,否则结束流程。
步骤304,将该数据栈入对应的任务平滑处理容器。
对于节点下载速度的统计,将数据栈入平滑处理容器的流程如图4所示,包括如下步骤:
步骤401,判断接收到的数据包的源地址是否为节点地址;如果是,则进入步骤402,否则结束流程。
步骤402,判断接收到的数据是否合法;如果是,则进入步骤403,否则结束流程。
步骤403,判断接收到的数据是否存在对应的下载任务;如果是,则进入步骤404,否则结束流程。
步骤404,判断接收到的数据是否存在对应的节点,即数据是否为正在进行下载的一个下载任务中的一个节点发送的,如果是,则进入步骤405,否则结束流程。
步骤405,将该数据栈入对应的节点平滑处理容器。
如果同时包括全局平滑处理容器,任务平滑处理容器,以及节点平滑处理容器,则将数据栈入平滑处理容器的流程如图5所示,包括如下步骤:
步骤501,判断接收到的数据包的源地址是否为节点地址;如果是,则进入步骤502,否则结束流程。
步骤502,判断接收到的数据是否合法;如果是,则进入步骤503,否则结束流程。
步骤503,将该数据栈入全局平滑处理容器。
步骤504,判断接收到的数据是否存在对应的下载任务;如果是,则进入步骤505,否则结束流程。
步骤505,将该数据栈入对应的任务平滑处理容器。
步骤506,判断接收到的数据是否存在对应的节点;如果是,则进入步骤507,否则结束流程。
步骤507,将该数据栈入对应的节点平滑处理容器。
将数据栈入相应的平滑处理容器后,即可以统计出相应的平均数据传输速度;具体如:将所述全局平滑处理容器中当前记录的数据量除以所述全局平滑处理容器的时长容量,得到全局平均数据传输速度;将所述与下载任务对应的任务平滑处理容器中当前记录的数据量除以该下载任务对应的任务平滑处理容器的时长容量,得到该下载任务对应的任务平均数据传输速度;将所述与下载任务中的每个节点对应的节点平滑处理容器中当前记录的数据量除以该节点对应的节点平滑处理容器的时长容量,得到该节点对应的节点平均数据传输速度。
对于仅使用一个全局平滑处理容器,并需要统计task、peer的数据传输速度的实施例,则在判断出数据是全局,和/或task,和/或peer数据时,增加用于记录对应数据的数据量的长度即可。
通过上述方法,数据传输客户端可以根据统计出的平均数据传输速度进行限速,由于平均数据传输速度的波动很小,所以限速的效果也会显现出很小的速度波动,使限速效果和速度统计结果都更加平滑。
另外,本发明还提供了一种数据传输的限速装置,如图6所示,包括:
速度统计模块601,设置用于栈入数据的平滑处理容器,该平滑处理容器采用先入先出方式栈入预设时长的数据;在传输的数据栈入所述平滑处理容器时,根据所述平滑处理容器中当前记录的数据量和所述平滑处理容器的时长容量,统计平均数据传输速度;
数据控制模块602,用于将传输的数据栈入所述平滑处理容器;
限速模块603,用于根据所述速度统计模块601统计的平均数据传输速度进行限速。
其中,所述速度统计模块601包括:
全局速度统计单元604,通过用于栈入所有下载数据的全局平滑处理容器,统计全局平均数据传输速度;只有一个。
和/或,任务速度统计单元605,通过与下载任务对应的仅用于栈入属于该下载任务的下载数据的任务平滑处理容器,统计任务平均数据传输速度;可以有多个,每一个下载任务对应一个任务速度统计单元605。
和/或,节点速度统计单元606,通过与下载任务中的节点对应的仅用于栈入从该节点下载的数据的节点平滑处理容器,统计下载任务中对应节点的节点平均数据传输速度。可以有多个,每一个下载任务中的一个节点对应一个节点速度统计单元606。
所述全局速度统计单元604包括:
全局平滑处理容器607和全局速度计算子单元608;
所述全局速度计算子单元608,将所述全局平滑处理容器607中当前记录的数据量除以所述全局平滑处理容器607的时长容量,得到全局平均数据传输速度;
所述数据控制模块602,若接收到的数据包的源地址为节点地址,且数据合法,则将该数据栈入所述全局平滑处理容器607。
所述任务速度统计单元605包括:
任务平滑处理容器609和任务速度计算子单元610;
所述任务速度计算子单元610,将与下载任务对应的任务平滑处理容器609中当前记录的数据量除以该下载任务对应的任务平滑处理容器609的时长容量,得到该下载任务对应的任务平均数据传输速度;
所述数据控制模块602,若接收到的数据包的源地址为节点地址,数据合法,且存在对应的下载任务,则将该数据栈入与该下载任务对应的任务平滑处理容器609。
所述节点速度统计单元606包括:
节点平滑处理容器611和节点速度计算子单元612;
所述节点速度计算子单元612,将所述与下载任务中的每个节点对应的节点平滑处理容器611中当前记录的数据量除以该节点对应的节点平滑处理容器611的时长容量,得到该节点对应的节点平均数据传输速度;
所述数据控制模块602,若接收到的数据包的源地址为节点地址,数据合法,存在对应的下载任务,且对应的下载任务中存在对应的节点,则将该数据栈入与该节点对应的节点平滑处理容器611。
由上述的实施例可见,本发明的这种数据传输的限速方法及装置,通过平滑处理容器,将现有限速过程中的速度统计由统计瞬时速度改变为统计平均速度,使得速度统计的结果更加平滑,以该速度统计结果进行的限速结果也会更加平滑。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。