CN108011780A - 一种数据传输速率测量方法、装置、设备和计算机可读介质 - Google Patents
一种数据传输速率测量方法、装置、设备和计算机可读介质 Download PDFInfo
- Publication number
- CN108011780A CN108011780A CN201711251209.5A CN201711251209A CN108011780A CN 108011780 A CN108011780 A CN 108011780A CN 201711251209 A CN201711251209 A CN 201711251209A CN 108011780 A CN108011780 A CN 108011780A
- Authority
- CN
- China
- Prior art keywords
- rtt
- speed
- rate
- data volume
- minimum
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0894—Packet rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/142—Network analysis or design using statistical or mathematical methods
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/147—Network analysis or design for predicting network behaviour
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W24/00—Supervisory, monitoring or testing arrangements
- H04W24/08—Testing, supervising or monitoring using real traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
- H04L43/0847—Transmission error
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
- H04L43/0864—Round trip delays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0053—Allocation of signaling, i.e. of overhead other than pilot signals
- H04L5/0055—Physical resource allocation for ACK/NACK
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/326—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Pure & Applied Mathematics (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出一种数据传输速率测量方法,应用于服务器端,该方法包括:在收到来自客户端的确认(ACK)消息时,更新本轮滑动周期内的往返延迟(RTT);计算获得所述本轮滑动周期内的最大RTT、最小RTT和平均RTT;获得当前最新的RTT内的数据量;根据所述当前最新的RTT内的数据量,以及所述本轮滑动周期内的最大RTT、最小RTT和平均RTT,分别计算获得最小速率、最大速率和平均速率;根据所述最小速率、最大速率和平均速率计算获得速率变化梯度信息;根据所述速率变化梯度信息计算获得速率预测值。本发明还提出了一种数据传输速率测量装置、服务器端设备和计算机可读介质。
Description
技术领域
本发明涉及互联网信息传输技术领域,尤其涉及一种数据传输速率测量方法、装置、设备和计算机可读介质。
背景技术
相关技术中针对传输控制协议(TCP,Transmission Control Protocol)连接进行测速的方法主要包括:往返时延(RTT,Round-Trip Time)内取瞬时值的方法、周期内取移动平均值的方法、时间窗内取最值与平均值的方法等。其中,RTT内取瞬时值的方法是指,在每个RTT内从发送的字节数以及被确认的字节数中取最大值,除以RTT的时间间隔,得到当前RTT内的瞬时速率;RTT是计算机网络中的一个重要性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认,总共经历的时延。周期内取移动平均值的方法是指,设定一个移动窗口,在每个传输的RTT进行速率测量,将整个移动窗口中的速率平均值作为该移动窗口的速率值,随着时间移动,调整窗口的起点,每次向前移动一个RTT,逐次进行计算。时间窗内取最值与平均值的方法是指,设定一个时间窗口,在该时间窗口内计算速率最值与平均值。
对于广域网场景而言,由于速度变化波动频繁、带宽存在突升突降的情况、以及测量延迟等原因,基于上述测速方法测得的速率值与用户实际达到的速率值存在较大偏差,从而进行其他相关的调节就会产生误判现象,影响数据真实传输速率,降低用户体验。
发明内容
本发明实施例提供一种数据传输速率测量方法、装置、设备和计算机可读介质,以至少解决现有技术中的以上技术问题。
第一方面,本发明实施例提供了一种数据传输速率测量方法,应用于服务器端,该方法包括:
在收到来自客户端的确认(ACK)消息时,更新本轮滑动周期内的往返延迟(RTT);
计算获得所述本轮滑动周期内的最大RTT、最小RTT和平均RTT;
获得当前最新的RTT内的数据量;
根据所述当前最新的RTT内的数据量,以及所述本轮滑动周期内的最大RTT、最小RTT和平均RTT,分别计算获得最小速率、最大速率和平均速率;
根据所述最小速率、最大速率和平均速率计算获得速率变化梯度信息;
根据所述速率变化梯度信息计算获得速率预测值。
结合第一方面,本发明在第一方面的第一种实施方式中,所述在收到来自客户端的ACK消息时更新本轮滑动周期内的RTT,包括:
在收到来自客户端的ACK时,获得当前最新的RTT;
根据所述最新的RTT更新RTT列表rtt_list,更新后的rtt_list记录N个RTT,所述N个RTT中包括所述当前最新的RTT,以及时间上与所述当前最新的RTT依次最相近的N-1个RTT;更新后的rtt_list即为所述本轮滑动周期内的rtt_list;
其中,N为大于1的整数。
结合第一方面的第一种实施方式,本发明在第一方面的第二种实施方式中,所述计算获得本轮滑动周期内的最大RTT、最小RTT和平均RTT,包括:
依次遍历所述滑动周期内的rtt_list中的每个RTT,选择所述rtt_list中时间间隔最大的RTT为所述最大RTT,时间间隔最小的RTT为所述最小RTT,所述rtt_list中所有RTT的求和除以所述rtt_list中的RTT的数量N。
结合第一方面、第一方面的第一种实施方式和第二种实施方式,本发明在第一方面的第三种实施方式中,所述获得当前最新的RTT内的数据量,包括:
预设的字段包括:last_send_bytes、send_bytes、last_delivered_bytes、delivered_bytes和record_timestamp,其中,last_send_bytes用于记录截止上一轮滑动周期所发送的数据量,send_bytes用于记录截止本轮滑动周期所发送的数据量,last_delivered_bytes用于记录截止上一轮滑动周期所被确认的数据量,delivered_bytes用于记录截止本轮滑动周期所被确认的数据量,record_timestamp用于记录上一轮滑动周期的截止时间;
计算当前最新的RTT内发送的数据量为:send=send_byte-last_send_bytes,以及当前最新的RTT内被确认的数据量为:delivered=delivered_bytes-last_delivered_bytes;
从当前最新的RTT内发送的数据量send、以及被确认的数据量delivered中选择最大值的数据量作为所述当前最新的RTT内的数据量payload。
结合第一方面、第一方面的第一种实施方式和第二种实施方式,本发明在第一方面的第四种实施方式中,所述根据当前最新的RTT内的数据量,以及本轮滑动周期内的最大RTT、最小RTT和平均RTT,分别计算获得最小速率、最大速率和平均速率,包括:
计算最小速率speed_min=payload/rtt_max;
计算最大速率speed_max=payload/rtt_min;
计算平均速率speed_ava=payload/rtt_ava;
其中,payload表示所述当前最新的RTT内的数据量,rtt_max表示所述本轮滑动周期内的最大RTT,rtt_min所述本轮滑动周期内的最小RTT,rtt_ava表示所述本轮滑动周期内的平均RTT。
结合第一方面的第四种实施方式,本发明在第一方面的第五种实施方式中,所述根据最小速率、最大速率和平均速率计算获得速率变化梯度信息,包括:
根据预设的一组系数[w0,w1,w2,w3],并按下式计算获得速率变化梯度信息D=[D0,D1,D2,D3]:
var=w0*CONST+w1*speed_max+w2*speed_min+w3*speed_ava,
delta=speed_max–var,
D0=p*delta*CONST,
D1=p*delta*speed_max,
D2=p*delta*speed_min,
D3=p*delta*speed_ava,
其中,p为预设的缩放因子,CONST为预设的常量,speed_max表示计算获得的最大速率,speed_min表示计算获得的最小速率,speed_ava表示计算获得的平均速率。
结合第一方面的第五种实施方式,本发明在第一方面的第六种实施方式中,所述根据速率变化梯度信息计算获得速率预测值,包括:
根据预设的系数[w0,w1,w2,w3]和速率变化梯度信息,更新向量W[w0′,w1′,w2′,w3′],使w0′=w0+D0,w1′=w1+D1,w2′=w2+D2,w3′=w3+D3;
按照下式计算获得所述速率预测值SPD_h:
SPD_h=w0′*CONST+w1′*speed_max+w2′*speed_min+w3′*speed_ava。
结合第一方面、第一方面的第一种实施方式和第二种实施方式,本发明在第一方面的第七种实施方式中,在获得速率预测值后,所述方法还包括:
根据维护的速率调整索引C_INDEX,对所述速率预测值进行调整修正,获得修正后的速率预测值。
结合第一方面的第七种实施方式,本发明在第一方面的第八种实施方式中,在获得修正后的速率预测值后,所述方法还包括:
根据修正后的速率预测值计算获得带宽时延积BDP:BDP=SPD_adj*rtt_min,其中,SPD_adj表示修正后的速率预测值,rtt_min表示本轮滑动周期内的最小RTT;
根据获得的BDP计算拥塞窗口CWND:CWND=BDP/MSS,其中,MSS表示预设的最大报文段长度。
第二方面,本发明实施例提供了一种数据传输速率测量装置,应用于服务器端,该装置包括:
RTT更新单元,用于在收到来自客户端的ACK消息时,更新本轮滑动周期内的RTT;
RTT获得单元,用于计算获得所述本轮滑动周期内的最大RTT、最小RTT和平均RTT;
数据量获得单元,用于获得当前最新的RTT内的数据量;
速率计算单元,用于根据所述当前最新的RTT内的数据量,以及所述本轮滑动周期内的最大RTT、最小RTT和平均RTT,分别计算获得最小速率、最大速率和平均速率;
梯度信息获得单元,用于根据所述最小速率、最大速率和平均速率计算获得速率变化梯度信息;
速率预测值获得单元,根据所述速率变化梯度信息计算获得速率预测值。
结合第二方面,本发明在第二方面的第一种实施方式中,所述RTT更新单元进一步用于:
在收到来自客户端的ACK时,获得当前最新的RTT;
根据所述最新的RTT更新RTT列表rtt_list,更新后的rtt_list记录N个RTT,所述N个RTT中包括所述当前最新的RTT,以及时间上与所述当前最新的RTT依次最相近的N-1个RTT;更新后的rtt_list即为所述本轮滑动周期内的rtt_list;
其中,N为大于1的整数。
结合第二方面的第一种实施方式,本发明在第二方面的第二种实施方式中,所述RTT获得单元进一步用于:
依次遍历所述滑动周期内的rtt_list中的每个RTT,选择所述rtt_list中时间间隔最大的RTT为所述最大RTT,时间间隔最小的RTT为所述最小RTT,所述rtt_list中所有RTT的求和除以所述rtt_list中的RTT的数量N。
结合第二方面、第二方面的第一种实施方式和第二种实施方式,本发明在第二方面的第三种实施方式中,所述数据量获得单元进一步用于:
获得预设的字段,包括:last_send_bytes、send_bytes、last_delivered_bytes、delivered_bytes和record_timestamp,其中,last_send_bytes用于记录截止上一轮滑动周期所发送的数据量,send_bytes用于记录截止本轮滑动周期所发送的数据量,last_delivered_bytes用于记录截止上一轮滑动周期所被确认的数据量,delivered_bytes用于记录截止本轮滑动周期所被确认的数据量,record_timestamp用于记录上一轮滑动周期的截止时间;
计算当前最新的RTT内发送的数据量为:send=send_byte-last_send_bytes,以及当前最新的RTT内被确认的数据量为:delivered=delivered_bytes-last_delivered_bytes;
从当前最新的RTT内发送的数据量send、以及被确认的数据量delivered中选择最大值的数据量作为所述当前最新的RTT内的数据量payload。
结合第二方面、第二方面的第一种实施方式和第二种实施方式,本发明在第二方面的第四种实施方式中,所述速率计算单元进一步用于:
计算最小速率speed_min=payload/rtt_max;
计算最大速率speed_max=payload/rtt_min;
计算平均速率speed_ava=payload/rtt_ava;
其中,payload表示所述当前最新的RTT内的数据量,rtt_max表示所述本轮滑动周期内的最大RTT,rtt_min所述本轮滑动周期内的最小RTT,rtt_ava表示所述本轮滑动周期内的平均RTT。
结合第二方面的第四种实施方式,本发明在第二方面的第五种实施方式中,所述梯度信息获得单元进一步用于:
根据预设的一组系数[w0,w1,w2,w3],并按下式计算获得速率变化梯度信息D=[D0,D1,D2,D3]:
var=w0*CONST+w1*speed_max+w2*speed_min+w3*speed_ava,
delta=speed_max–var,
D0=p*delta*CONST,
D1=p*delta*speed_max,
D2=p*delta*speed_min,
D3=p*delta*speed_ava,
其中,p为预设的缩放因子,CONST为预设的常量,speed_max表示计算获得的最大速率,speed_min表示计算获得的最小速率,speed_ava表示计算获得的平均速率。
结合第二方面的第五种实施方式,本发明在第二方面的第六种实施方式中,所述速率预测值获得单元进一步用于:
根据预设的系数[w0,w1,w2,w3]和速率变化梯度信息,更新向量W[w0′,w1′,w2′,w3′],使w0′=w0+D0,w1′=w1+D1,w2′=w2+D2,w3′=w3+D3;
按照下式计算获得所述速率预测值SPD_h:
SPD_h=w0′*CONST+w1′*speed_max+w2′*speed_min+w3′*speed_ava。
结合第二方面、第二方面的第一种实施方式和第二种实施方式,本发明在第二方面的第七种实施方式中,所述装置还包括:速率修正单元,用于根据维护的速率调整索引C_INDEX,对获得的所述速率预测值进行调整修正,获得修正后的速率预测值。
结合第二方面的第七种实施方式,本发明在第二方面的第八种实施方式中,所述装置还包括:拥塞窗口计算单元,用于根据修正后的速率预测值计算获得带宽时延积BDP:BDP=SPD_adj*rtt_min,其中,SPD_adj表示修正后的速率预测值,rtt_min表示本轮滑动周期内的最小RTT;
根据获得的BDP计算拥塞窗口CWND:CWND=BDP/MSS,其中,MSS表示预设的最大报文段长度。
上述各单元的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的单元。
在一个可能的设计中,数据传输速率测量装置的结构中包括处理器和存储器,所述存储器用于存储支持数据传输速率测量装置执行上述第一方面中数据传输速率测量方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述数据传输速率测量装置还可以包括通信接口,用于数据传输速率测量装置与其他设备或通信网络通信。
第三方面,本发明实施例提供了一种计算机可读存储介质,用于存储数据传输速率测量装置所用的计算机软件指令,其包括用于执行上述第一方面中数据传输速率测量方法为数据传输速率测量装置所涉及的程序。
上述技术方案中的至少一个技术方案具有如下优点或有益效果:
本发明实施例依据TCP行为以及网络传输特性,主动跟踪TCP连接在传输过程中实际速度的变化,得出更加准确的传输速率,进而提升TCP传输速度,改善用户体验。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。
图1为本发明实施例的一种数据传输速率测量方法的流程示意图;
图2为本发明实施例的一种RTT的更新,及计算最大RTT、最小RTT和平均RTT的流程示意图;
图3为本发明实施例的一种计算RTT最大值与最小值的过程示意图;
图4为本发明实施例的一种获得当前最新的RTT内的数据量的流程示意图;
图5为本发明实施例的一种速率修正的方法流程示意图;
图6为本发明实施例的一种拥塞控制的过程示意图;
图7为本发明实施例的一种数据传输速率测量装置的组成结构示意图;
图8为本发明实施例的一种服务器端设备的组成结构示意图;
图9为相关技术中RTT内取瞬时值的方法示意图;
图10为相关技术中周期内取移动平均值的方法示意图;
图11为相关技术中时间窗内取最值与平均值的方法示意图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
本发明实施例旨在不通过直接取平均值来计算数据传输的速率值,而是通过RTT、数据量这两个维度,基于梯度下降原则来计算数据传输的速率值,同时兼顾数据的平稳性以及链路变化的敏感性。本发明实施例针对所有应用场景,采取同样的策略,无需根据不同的环境各自调整参数,并且仅在服务器(server)端部署,不需要客户端的参与。下面分实施例详细阐述本发明技术方案的核心思想。
实施例一
本发明的实施例一提供了一种数据传输速率测量方法,应用于服务器端,如图1所示,该方法主要包括:
步骤101,在收到来自客户端的ACK消息时,更新本轮滑动周期内的RTT。
服务器端在收到来自客户端的ACK消息时,本发明实施例一的方法被触发执行。滑动周期为一个预设的概念,可以预设每轮滑动周期由固定数量的RTT组成,例如10个、20个,那么滑动周期也是随着RTT的不断更新而不断更新的。每当服务器端收到来自客户端的ACK消息时,随之需要进行滑动周期的更新。
其中,更新本轮滑动周期内的RTT包括:
获得当前最新的RTT;
根据最新的RTT更新RTT列表rtt_list,更新后的rtt_list记录N个RTT,N个RTT中包括当前最新的RTT,以及时间上与当前最新的RTT依次最相近的N-1个RTT;更新后的rtt_list即为本轮滑动周期内的rtt_list;
其中,N为大于1的整数。
具体的,RTT的更新依赖于接收到客户端发送来的ACK,所以在系统内核(如Linux系统内核等等)的拥塞控制入口进行处理,可以在tcp_sock结构体中增加如下的字段用于RTT跟踪:
具体实施过程中,一种RTT的更新方法如图2中的步骤201~204所示,具体的:
步骤201,收到ACK,RTT更新在拥塞控制入口处执行,由ACK的到来触发执行。
步骤202,实时计算当前最新的RTT,可直接取值为tcp_sock结构中的srtt,该值已经根据系统内核标准的RTT算法进行了更新。
步骤203,rtt_list移位,rtt_list中的每个RTT用下标标识,RTT下标范围从0到N-1依次记录N个RTT的数据,本发明实施例将最新的RTT记录在下标N-1的位置,每次经历一个新的RTT,将下标为1的数据移动到下标0,下标2移动到下标1,下标3移动到下标2,依次类推,下标N-1移动到下标N-2。
步骤204,rtt_list记录最新的RTT,最新的RTT记录在下标N-1的位置,设置完成之后,rtt_list完成更新。
步骤102,计算获得本轮滑动周期内的最大RTT、最小RTT和平均RTT。
具体实施过程中,一种计算最大RTT、最小RTT和平均RTT的方法如图2中的步骤205~209所示,具体的:
步骤205,计算rtt_list中的RTT最大值与最小值,从下标0开始,一直遍历至下标N-1,记录最大值、最小值。
步骤206,更新rtt_max,将rtt_max设置为rtt_list中的最大值。
步骤207,更新rtt_min,将rtt_min设置为rtt_list中的最小值。
步骤208,rtt_list求和并计算平均值,遍历rtt_list,累加所有N个下标的数值求和后除以N。
步骤209,更新rtt_ava,将rtt_ava设置为平均值。
上述方法实现了基于移动平均的最大RTT、最小RTT、平均RTT计算过程,得到的最大值、最小值以及平均值将用于后续的速率计算,每次更新之后,rtt_list、rtt_max、rtt_min以及rtt_ava均为最新的值。
图2中步骤205计算RTT最大值与最小值的过程,如图3所示,首先初始化i=0、rtt_max=rtt_list[0]、rtt_min=rtt_list[0],然后使i=i+1,依次遍历rtt_list的每个RTT,直到找出rtt_list中RTT最大值作为rtt_max的赋值,RTT最小值作为rtt_min的赋值。
步骤103,获得当前最新的RTT内的数据量。
为了衡量数据量,可以在tcp_sock结构中增加如下的字段用于记录数据量:
连接初始化时,last_send_bytes、send_bytes、last_delivered_bytes以及delivered_bytes均初始化为0,每次数据发送时,均将发送的数据记入send_bytes,在每次ACK到来时,均将本次确认的数据量记入delivered_bytes。为了统计每个RTT内的速率数据,在每次ACK到来时进行新一轮计算周期的评估,判断当前ACK是否为新的一轮计算周期,具体处理过程参见图4所示,主要包括:
步骤401,收到ACK,评估过程由ACK的到来触发,在拥塞控制入口开始进行处理。
步骤402,ACK确认报文数据量计算,根据ACK计算本次确认的数据量,包括ACK确认的报文数据量,以及选择确认(SACK,Selective Acknowledgement)的数据量,扫描发送窗口,根据ACK号以及SACK确认的数据段逐一比对计算得到。
需要说明的是,实际情况中考虑到SACK的场景,确认的数据量的计算还要加上被SACK确认的字节数。SACK是TCP选项,它使得接收方能告诉发送方哪些报文段丢失,哪些报文段重传了,哪些报文段已经提前收到等信息。根据这些信息TCP就可以只重传那些真正丢失的报文段。需要注意的是只有收到失序的分组时才会可能会发送SACK,TCP的ACK还是建立在累积确认的基础上的。也就是说,如果收到的报文段与期望收到的报文段的序号相同就会发送累积的ACK,SACK只是针对失序到达的报文段的。
步骤403,delivered_bytes更新,将本次ACK确认的数据量累加至delivered_bytes,delivered_bytes值为连接建立以来,截止到当前总共被确认的数据量。
步骤404,delivered_bytes判断,仅当delivered_bytes大于last_delivered_bytes时才计算速率值,即转到步骤405;否则,执行步骤413。
步骤405,获取当前时间戳,取当前时间毫秒粒度即可,直接取Linux内核中的jiffies值,取到之后,将该值赋给cur_timestamp。
步骤406,当前时间戳判断,仅当cur_timestamp与record_timestamp时间间隔超过当前最小RTT(即rtt_min)时才计算速率值,即转到步骤407;否则,执行步骤413。
步骤407,发送数据量增量计算,由send_bytes与last_send_bytes差值得到。
步骤408,被确认数据增量计算,由delivered_bytes与last_delivered_bytes差值得到。
步骤409,数据量评估,数据量取发送数据量增量与被确认数据量两者的最大值,最大值赋值给payload。
步骤410,RTT轮次判定,判定当前时间点为新的RTT起点,即将计算速率值。
步骤411,last_send_byte更新,RTT轮次判定后,更新last_send_bytes,将其设置为send_bytes。
步骤412,last_delivered_bytes更新,RTT轮次判定后,更新last_delivered_bytes,将其设置为delivered_bytes。
步骤413,返回,即当前时间点不是新的RTT起点。
步骤104,根据当前最新的RTT内的数据量,以及本轮滑动周期内的最大RTT、最小RTT和平均RTT,分别计算获得最小速率、最大速率和平均速率。
在上一步骤中RTT判定完成之后,如果当前时间为新的RTT起点,则开始计算速率值,计算过程如下所示:
计算最小速率speed_min=payload/rtt_max;
计算最大速率speed_max=payload/rtt_min;
计算平均速率speed_ava=payload/rtt_ava;
其中,payload表示当前最新的RTT内的数据量,rtt_max表示本轮滑动周期内的最大RTT,rtt_min本轮滑动周期内的最小RTT,rtt_ava表示本轮滑动周期内的平均RTT。
步骤105,根据最小速率、最大速率和平均速率计算获得速率变化梯度信息。
在TCP连接初始化时,设定一组系数[w0,w1,w2,w3],初始值设置为如下:
变量 | 初始值 |
w0 | 1/4 |
w1 | 1/4 |
w2 | 1/4 |
w3 | 1/4 |
根据预设的系数[w0,w1,w2,w3],并按下式计算获得速率变化梯度信息D=[D0,D1,D2,D3]:
var=w0*CONST+w1*speed_max+w2*speed_min+w3*speed_ava,
delta=speed_max–var,
D0=p*delta*CONST,
D1=p*delta*speed_max,
D2=p*delta*speed_min,
D3=p*delta*speed_ava,
其中,p为预设的缩放因子,可以设置为1/100,当然也可根据实际需要设置为其他数值;CONST为预设的常量,可以设置为500,表示为500K字节每秒的速率,当然也可以根据实际需要设置为其他值;speed_max表示计算获得的最大速率,speed_min表示计算获得的最小速率,speed_ava表示计算获得的平均速率。在计算获得D0、D1、D2、D3之后,速率变化梯度信息即计算完成。
步骤106,根据速率变化梯度信息计算获得速率预测值。
具体的,维护一组速度向量X=[x0,x1,x2,x3],其中,x0对应于CONST,x1对应于测量到的最大值speed_max,x2对应于测量到的最小值speed_min,x3对应于测量到的平均值speed_ava。
本方案假定实际速率值与测量到的速率值存在如下的关系:
SPEED=w0*x0+w1*x1+w2*x2+w3*x3
前述已获得速率变化梯度信息D,为了预测实际的速率值,首先更新W向量,W的更新过程如下:
根据预设的系数[w0,w1,w2,w3]和速率变化梯度信息,更新向量W[w0′,w1′,w2′,w3′],使w0′=w0+D0,w1′=w1+D1,w2′=w2+D2,w3′=w3+D3。
随后,按照下式计算获得所述速率预测值SPD_h:
SPD_h=w0′*CONST+w1′*speed_max+w2′*speed_min+w3′*speed_ava。
该值SPD_h即为本方案得到的速率预测值,即认为SPD_h值为该TCP连接实际的可使用的链路带宽。
在一种可实施方式中,考虑到计算过程中存在误差,可以根据历史速率信息对速率预测值进行适当的修正,修正值作为最终的预测值。考虑到广域网场景下链路会发生不同程度的变化,为了更有效的利用带宽,在数据发送过程中,主动进行速率值的调整,调整之后的速率值为SPD_adj。维护一个RTT索引C_INDEX,该索引初始值为0,不同的索引值对应的调整量如下所示:
索引 | 说明 |
0 | 保持不变,即SPD_adj=SPD_h |
1 | 保持不变,即SPD_adj=SPD_h |
2 | 增大30%,即SPD_adj=1.3*SPD_h |
3 | 保持不变,即SPD_adj=SPD_h |
4 | 增大15%,即SPD_adj=1.15*SPD_h |
5 | 保持不变,即SPD_adj=SPD_h |
6 | 减小15%,即SPD_adj=0.85*SPD_h |
7 | 保持不变,即SPD_adj=SPD_h |
8 | 减小30%,即SPD_adj=0.7*SPD_h |
速率修正的方法参见图5,主要包括:
步骤501,收到ACK,评估过程由ACK的到来触发,在拥塞控制入口开始进行处理。
步骤502,RTT轮次判断,在新的轮次重新估算速率,即转到步骤503;否则,转到步骤504。
步骤503,速率预测,按照前述的过程执行速率预测,获得SPD_h。
步骤504,非新的RTT轮次,直接使用之前的速率预测值作为本次的预测值,并转到步骤505。
步骤505,获取C_INDEX。
步骤506,根据C_INDEX执行速率预测值调整。
步骤507,C_INDEX更新,执行加1操作。
步骤508,C_INDEX复位判断,C_INDEX范围为0到8,若C_INDEX+1大于等于8,则转到步骤509;否则,转到步骤510。
步骤509,C_INDEX复位,重新置为0。
步骤510,结束。
在另一种可实施方式中,在获得修正后的速率预测值SPD_adj后,SPD_adj可用于TCP拥塞控制,具体参见图6所示,拥塞窗口的计算主要包括:
根据修正后的速率预测值SPD_adj计算获得带宽时延积(BDP,Bandwidth-DelayProduct):BDP=SPD_adj*rtt_min,其中,rtt_min表示本轮滑动周期内的最小RTT;
根据获得的BDP计算拥塞窗口(CWND,Congestion Window):CWND=BDP/MSS,其中,MSS(Max Segment Size)表示预设(TCP连接设定的)的最大报文段长度。
从而,根据计算的拥塞窗口进行后续数据的发送。
实施例二
对应本发明实施例一的方法,本发明实施例二还提供了一种数据传输速率测量装置,应用于服务器端,如图7所示,该装置主要包括:
RTT更新单元10,用于在收到来自客户端的ACK消息时,更新本轮滑动周期内的RTT;
RTT获得单元20,用于计算获得本轮滑动周期内的最大RTT、最小RTT和平均RTT;
数据量获得单元30,用于获得当前最新的RTT内的数据量;
速率计算单元40,用于根据当前最新的RTT内的数据量,以及本轮滑动周期内的最大RTT、最小RTT和平均RTT,分别计算获得最小速率、最大速率和平均速率;
梯度信息获得单元50,用于根据最小速率、最大速率和平均速率计算获得速率变化梯度信息;
速率预测值获得单元60,根据速率变化梯度信息计算获得速率预测值。
在一种可实施方式中,RTT更新单元10进一步用于:
在收到来自客户端的ACK时,获得当前最新的RTT;
根据最新的RTT更新RTT列表rtt_list,更新后的rtt_list记录N个RTT,N个RTT中包括所述当前最新的RTT,以及时间上与当前最新的RTT依次最相近的N-1个RTT;更新后的rtt_list即为本轮滑动周期内的rtt_list;
其中,N为大于1的整数。
在一种可实施方式中,RTT获得单元20进一步用于:
依次遍历滑动周期内的rtt_list中的每个RTT,选择rtt_list中时间间隔最大的RTT为最大RTT,时间间隔最小的RTT为最小RTT,rtt_list中所有RTT的求和除以rtt_list中的RTT的数量N。
在一种可实施方式中,数据量获得单元30进一步用于:
获得预设的字段,包括:last_send_bytes、send_bytes、last_delivered_bytes、delivered_bytes和record_timestamp,其中,last_send_bytes用于记录截止上一轮滑动周期所发送的数据量,send_bytes用于记录截止本轮滑动周期所发送的数据量,last_delivered_bytes用于记录截止上一轮滑动周期所被确认的数据量,delivered_bytes用于记录截止本轮滑动周期所被确认的数据量,record_timestamp用于记录上一轮滑动周期的截止时间;
计算当前最新的RTT内发送的数据量为:send=send_byte-last_send_bytes,以及当前最新的RTT内被确认的数据量为:delivered=delivered_bytes-last_delivered_bytes;
从当前最新的RTT内发送的数据量send、以及被确认的数据量delivered中选择最大值的数据量作为当前最新的RTT内的数据量payload。
在一种可实施方式中,速率计算单元40进一步用于:
计算最小速率speed_min=payload/rtt_max;
计算最大速率speed_max=payload/rtt_min;
计算平均速率speed_ava=payload/rtt_ava;
其中,payload表示当前最新的RTT内的数据量,rtt_max表示本轮滑动周期内的最大RTT,rtt_min本轮滑动周期内的最小RTT,rtt_ava表示本轮滑动周期内的平均RTT。
在一种可实施方式中,梯度信息获得单元50进一步用于:
根据预设的一组系数[w0,w1,w2,w3],并按下式计算获得速率变化梯度信息D=[D0,D1,D2,D3]:
var=w0*CONST+w1*speed_max+w2*speed_min+w3*speed_ava,
delta=speed_max–var,
D0=p*delta*CONST,
D1=p*delta*speed_max,
D2=p*delta*speed_min,
D3=p*delta*speed_ava,
其中,p为预设的缩放因子,CONST为预设的常量,speed_max表示计算获得的最大速率,speed_min表示计算获得的最小速率,speed_ava表示计算获得的平均速率。
在一种可实施方式中,速率预测值获得单元60进一步用于:
根据预设的系数[w0,w1,w2,w3]和速率变化梯度信息,更新向量W[w0′,w1′,w2′,w3′],使w0′=w0+D0,w1′=w1+D1,w2′=w2+D2,w3′=w3+D3;
按照下式计算获得速率预测值SPD_h:
SPD_h=w0′*CONST+w1′*speed_max+w2′*speed_min+w3′*speed_ava。
在一种可实施方式中,该装置还包括:速率修正单元70,用于根据维护的速率调整索引C_INDEX,对获得的速率预测值进行调整修正,获得修正后的速率预测值。
在一种可实施方式中,该装置还包括:拥塞窗口计算单元80,用于根据修正后的速率预测值计算获得BDP:BDP=SPD_adj*rtt_min,其中,SPD_adj表示修正后的速率预测值,rtt_min表示本轮滑动周期内的最小RTT;
根据获得的BDP计算CWND:CWND=BDP/MSS,其中,MSS表示预设的最大报文段长度。
上述各单元的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的单元。
实施例三
本发明实施例三提供一种信息分类设备,如图8所示,该设备包括:存储器21和处理器22,存储器21内存储有可在处理器22上运行的计算机程序。处理器22执行所述计算机程序时实现上述实施例中的数据传输速率测量方法。存储器21和处理器22的数量可以为一个或多个。
该设备还包括:
通信接口23,用于存储器21和处理器22之间的通信。
存储器21可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
如果存储器21、处理器22和通信接口23独立实现,则存储器21、处理器22和通信接口23可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(ISA,Industry Standard Architecture)总线、外部设备互连(PCI,PeripheralComponent)总线或扩展工业标准体系结构(EISA,Extended Industry StandardComponent)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器21、处理器22及通信接口23集成在一块芯片上,则存储器21、处理器22及通信接口23可以通过内部接口完成相互间的通信。
综上所述,本发明实施例不通过直接取平均值来计算数据传输的速率值,而是依据TCP行为以及网络传输特性,提出一套基于服务器端单边测速的方法,主动跟踪TCP连接在传输过程中实际速度的变化,得出更加准确的传输速率,进而提升TCP传输速度,改善用户体验。
本发明实施例的所有场景采取同样的策略,无需根据不同的环境各自调整参数,仅在server端部署,不需要客户端的参与。
通过实施本发明实施例,链路带宽的预估更加准确,直接用测量来的链路带宽计算拥塞控制窗口,使得TCP的传输过程更加精确。
可以在链路波动的情况下,平稳的跟踪实际的链路带宽,在链路带宽剧烈变化时,本方法可快速感知到变化,并快速收敛,与业界广泛应用的加权平均以及移动平均等方案相比,有显著优势。
在广域网场景下,本方案预测出的链路带宽与实际值接近,基于此,CDN内核协议栈拥塞控制算法基于该预测值进行拥塞窗口评估,使用本方案后对比Linux内核默认的发送机制,慢速比降低。慢速比是指下载速度小于100KBps的请求比例。
下面对比相关技术中的几种测速方法,来进一步分析本发明实施例的有益效果。
如图9所示,图9示出了一种RTT内取瞬时值的方法示意。
TCP的传输按照RTT依次进行,在每个RTT,根据发送的字节数以及被确认的字节数取最大值,除以RTT的时间间隔,即可得到当前RTT的瞬时速率。图9中,interval是一个RTT的时间间隔,在这个RTT内,发送的总字节数为L5-L1,被确认的总字节数为L4-L1,速率的计算方式如下所示:
send_bytes=L5–L1
acked_bytes=L4–L1
speed=max(send_bytes,acked_bytes)/interval
其中,send_bytes表示发送的总字节数,acked_bytes表示被确认的总字节数。实际情况中,考虑到SACK的场景,acked_bytes的计算还要加上被SACK确认的字节数。
计算完成之后,speed即可认为是当前RTT测到的瞬时值,也就是一个RTT之内的平均传输速率。
RTT内取瞬时值的方法主要存在以下缺陷:
1、广域网场景下,速度计算值存在不同程度的波动,用瞬时值预估链路速度会导致预估值持续变化,长期无法收敛;
2、遇到瞬时值突然增大的场景,链路预估值会太过激进,而对于瞬时值突然减小的场景,链路预估值会太过保守;
3、无法根据速度值的变化,准确的判断链路状况出现了明显的变化。
相比RTT内取瞬时值的方法,本发明实施例不直接取平均值来计算数据传输的速率值,受瞬时波动影响小;基于RTT和数据量这两个维度的测量计算值,能够主动跟踪TCP连接在传输过程中实际速率的变化,得出更加准确的传输速率。
如图10所示,图10示出了一种周期内取移动平均值的方法示意。该方法中,设定一个移动窗口,在每个传输的RTT进行速率测量,把整个移动窗口中的平均值作为速率值,随着时间移动,调整窗口的起点,每次向前移动一个RTT,逐次进行计算。图10中,speed1、speed2至speed7为每个RTT内分别计算得到的速率值,而mov_speed取滑动周期内的平均值,即:
mov_speed1=(speed1+speed2+speed3)/3
mov_speed2=(speed2+speed3+speed4)/3
mov_speed3=(speed3+speed4+speed5)/3
mov_speed4=(speed4+speed5+speed6)/3
mov_speed5=(speed5+speed6+speed7)/3
其中,3为滑动周期,也可以调整为其他的值,该方法通过移动平均,消除短时间内的速度波动,使得到的速率值更加平滑,进而以平滑的速率值来预估链路的实际速率。
相对于瞬时值,移动平均算法得到的速率值可以排除一些突发情况的影响,对于链路带宽的估算也更加平稳。
但周期内取移动平均值的方法主要存在以下缺陷:
1、对于速度值的变化感知的敏感度与滑动窗口有关,滑动窗口越小,对变化的感知越敏感,而平滑度会降低,滑动窗口增大,对变化的感知越迟钝,而平滑度会增加,在不同场景下,链路的变化情况存在较大差别,滑动窗口的取值难以遵循一个确切的策略;
2、移动平均计算得到的是整个窗口内的平均速度,对于链路预估而言,存在着一定的延迟,及时瞬时速度变化剧烈,也需要较长的时间能够感知到。
相比周期内取移动平均值的方法,本发明实施例由于不直接取平均值来计算数据传输的速率值,速度值的变化感知的敏感度与滑动窗口无关联,不存在上述的缺陷;另外,基于RTT和数据量这两个维度的测量计算值,受瞬时速率波动影响小,得到的测量速率值更加准确。
如图11所示,图11示出了一种时间窗内取最值与平均值的方法示意。该方法中,设定一个时间窗口,在该时间窗口内计算最值与平均值。图11中,speed1、speed2至speed7为每个RTT内分别计算得到的速率值,而max、min、ava取周期内的最大值、最小值以及平均值,即:
max1=max(speed1,speed2,speed3)
min1=min(speed1,speed2,speed3)
ava1=(speed1+speed2+speed3)/3
max2=max(speed4,speed5,speed6)
min2=min(speed4,speed5,speed6)
ava2=(speed4+speed5+speed6)/3
其中,3为滑动周期,可以调整为其他的值。
时间窗取最值的方法实现简单,在计算平均值时,可以按照一定的加权系数来计算,如下所示:
ava=(x*speed1+y*speed2+z*speed3)/3
其中,x、y、z表示权重系数。
时间窗内取最值与平均值的方法主要存在以下缺陷:
1、速度的更新较慢,必须等到一个时间窗口完全结束才能获得新的测量值;
2、在相邻的时间窗口处,速度值可能会出现跳变,导致测量值出现毛刺;
3、在不同场景下,链路的变化情况存在较大差别,时间窗的取值难以遵循一个确切的策略。
相比时间窗内取最值与平均值的方法,本发明实施例
由于不直接取平均值来计算数据传输的速率值,速度值的变化感知的敏感度与时间窗口无直接关联,不存在上述的缺陷;另外,基于RTT和数据量这两个维度的测量计算值,受瞬时速率波动影响小,得到的测量速率值更加准确。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
本发明实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质的更具体的示例至少(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式只读存储器(CDROM)。另外,计算机可读存储介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
在本发明实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于指令执行系统、输入法或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、射频(RadioFrequency,RF)等等,或者上述的任意合适的组合。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (20)
1.一种数据传输速率测量方法,应用于服务器端,其特征在于,所述方法包括:
在收到来自客户端的确认ACK消息时,更新本轮滑动周期内的往返延迟RTT;
计算获得所述本轮滑动周期内的最大RTT、最小RTT和平均RTT;
获得当前最新的RTT内的数据量;
根据所述当前最新的RTT内的数据量,以及所述本轮滑动周期内的最大RTT、最小RTT和平均RTT,分别计算获得最小速率、最大速率和平均速率;
根据所述最小速率、最大速率和平均速率计算获得速率变化梯度信息;
根据所述速率变化梯度信息计算获得速率预测值。
2.根据权利要求1所述的方法,其特征在于,所述在收到来自客户端的ACK消息时更新本轮滑动周期内的RTT,包括:
在收到来自客户端的ACK时,获得当前最新的RTT;
根据所述最新的RTT更新RTT列表rtt_list,更新后的rtt_list记录N个RTT,所述N个RTT中包括所述当前最新的RTT,以及时间上与所述当前最新的RTT依次最相近的N-1个RTT;更新后的rtt_list即为所述本轮滑动周期内的rtt_list;
其中,N为大于1的整数。
3.根据权利要求2所述的方法,其特征在于,所述计算获得本轮滑动周期内的最大RTT、最小RTT和平均RTT,包括:
依次遍历所述滑动周期内的rtt_list中的每个RTT,选择所述rtt_list中时间间隔最大的RTT为所述最大RTT,时间间隔最小的RTT为所述最小RTT,所述rtt_list中所有RTT的求和除以所述rtt_list中的RTT的数量N。
4.根据权利要求1、2或3所述的方法,其特征在于,所述获得当前最新的RTT内的数据量,包括:
预设的字段包括:last_send_bytes、send_bytes、last_delivered_bytes、delivered_bytes和record_timestamp,其中,last_send_bytes用于记录截止上一轮滑动周期所发送的数据量,send_bytes用于记录截止本轮滑动周期所发送的数据量,last_delivered_bytes用于记录截止上一轮滑动周期所被确认的数据量,delivered_bytes用于记录截止本轮滑动周期所被确认的数据量,record_timestamp用于记录上一轮滑动周期的截止时间;
计算当前最新的RTT内发送的数据量为:send=send_byte-last_send_bytes,以及当前最新的RTT内被确认的数据量为:delivered=delivered_bytes-last_delivered_bytes;
从当前最新的RTT内发送的数据量send、以及被确认的数据量delivered中选择最大值的数据量作为所述当前最新的RTT内的数据量payload。
5.根据权利要求1、2或3所述的方法,其特征在于,所述根据当前最新的RTT内的数据量,以及本轮滑动周期内的最大RTT、最小RTT和平均RTT,分别计算获得最小速率、最大速率和平均速率,包括:
计算最小速率speed_min=payload/rtt_max;
计算最大速率speed_max=payload/rtt_min;
计算平均速率speed_ava=payload/rtt_ava;
其中,payload表示所述当前最新的RTT内的数据量,rtt_max表示所述本轮滑动周期内的最大RTT,rtt_min所述本轮滑动周期内的最小RTT,rtt_ava表示所述本轮滑动周期内的平均RTT。
6.根据权利要求5所述的方法,其特征在于,所述根据最小速率、最大速率和平均速率计算获得速率变化梯度信息,包括:
根据预设的一组系数[w0,w1,w2,w3],并按下式计算获得速率变化梯度信息D=[D0,D1,D2,D3]:
var=w0*CONST+w1*speed_max+w2*speed_min+w3*speed_ava,
delta=speed_max–var,
D0=p*delta*CONST,
D1=p*delta*speed_max,
D2=p*delta*speed_min,
D3=p*delta*speed_ava,
其中,p为预设的缩放因子,CONST为预设的常量,speed_max表示计算获得的最大速率,speed_min表示计算获得的最小速率,speed_ava表示计算获得的平均速率。
7.根据权利要求6所述的方法,其特征在于,所述根据速率变化梯度信息计算获得速率预测值,包括:
根据预设的系数[w0,w1,w2,w3]和速率变化梯度信息,更新向量W[w0′,w1′,w2′,w3′],使w0′=w0+D0,w1′=w1+D1,w2′=w2+D2,w3′=w3+D3;
按照下式计算获得所述速率预测值SPD_h:
SPD_h=w0′*CONST+w1′*speed_max+w2′*speed_min+w3′*speed_ava。
8.根据权利要求1、2或3所述的方法,其特征在于,在获得速率预测值后,所述方法还包括:
根据维护的速率调整索引C_INDEX,对所述速率预测值进行调整修正,获得修正后的速率预测值。
9.根据权利要求8所述的方法,其特征在于,在获得修正后的速率预测值后,所述方法还包括:
根据修正后的速率预测值计算获得带宽时延积BDP:BDP=SPD_adj*rtt_min,其中,SPD_adj表示修正后的速率预测值,rtt_min表示本轮滑动周期内的最小RTT;
根据获得的BDP计算拥塞窗口CWND:CWND=BDP/MSS,其中,MSS表示预设的最大报文段长度。
10.一种数据传输速率测量装置,应用于服务器端,其特征在于,所述装置包括:
往返延迟RTT更新单元,用于在收到来自客户端的确认ACK消息时,更新本轮滑动周期内的RTT;
RTT获得单元,用于计算获得所述本轮滑动周期内的最大RTT、最小RTT和平均RTT;
数据量获得单元,用于获得当前最新的RTT内的数据量;
速率计算单元,用于根据所述当前最新的RTT内的数据量,以及所述本轮滑动周期内的最大RTT、最小RTT和平均RTT,分别计算获得最小速率、最大速率和平均速率;
梯度信息获得单元,用于根据所述最小速率、最大速率和平均速率计算获得速率变化梯度信息;
速率预测值获得单元,根据所述速率变化梯度信息计算获得速率预测值。
11.根据权利要求10所述的装置,其特征在于,所述RTT更新单元进一步用于:
在收到来自客户端的ACK时,获得当前最新的RTT;
根据所述最新的RTT更新RTT列表rtt_list,更新后的rtt_list记录N个RTT,所述N个RTT中包括所述当前最新的RTT,以及时间上与所述当前最新的RTT依次最相近的N-1个RTT;更新后的rtt_list即为所述本轮滑动周期内的rtt_list;
其中,N为大于1的整数。
12.根据权利要求11所述的装置,其特征在于,所述RTT获得单元进一步用于:
依次遍历所述滑动周期内的rtt_list中的每个RTT,选择所述rtt_list中时间间隔最大的RTT为所述最大RTT,时间间隔最小的RTT为所述最小RTT,所述rtt_list中所有RTT的求和除以所述rtt_list中的RTT的数量N。
13.根据权利要求10、11或12所述的装置,其特征在于,所述数据量获得单元进一步用于:
获得预设的字段,包括:last_send_bytes、send_bytes、last_delivered_bytes、delivered_bytes和record_timestamp,其中,last_send_bytes用于记录截止上一轮滑动周期所发送的数据量,send_bytes用于记录截止本轮滑动周期所发送的数据量,last_delivered_bytes用于记录截止上一轮滑动周期所被确认的数据量,delivered_bytes用于记录截止本轮滑动周期所被确认的数据量,record_timestamp用于记录上一轮滑动周期的截止时间;
计算当前最新的RTT内发送的数据量为:send=send_byte-last_send_bytes,以及当前最新的RTT内被确认的数据量为:delivered=delivered_bytes-last_delivered_bytes;
从当前最新的RTT内发送的数据量send、以及被确认的数据量delivered中选择最大值的数据量作为所述当前最新的RTT内的数据量payload。
14.根据权利要求10、11或12所述的装置,其特征在于,所述速率计算单元进一步用于:
计算最小速率speed_min=payload/rtt_max;
计算最大速率speed_max=payload/rtt_min;
计算平均速率speed_ava=payload/rtt_ava;
其中,payload表示所述当前最新的RTT内的数据量,rtt_max表示所述本轮滑动周期内的最大RTT,rtt_min所述本轮滑动周期内的最小RTT,rtt_ava表示所述本轮滑动周期内的平均RTT。
15.根据权利要求14所述的装置,其特征在于,所述梯度信息获得单元进一步用于:
根据预设的一组系数[w0,w1,w2,w3],并按下式计算获得速率变化梯度信息D=[D0,D1,D2,D3]:
var=w0*CONST+w1*speed_max+w2*speed_min+w3*speed_ava,
delta=speed_max–var,
D0=p*delta*CONST,
D1=p*delta*speed_max,
D2=p*delta*speed_min,
D3=p*delta*speed_ava,
其中,p为预设的缩放因子,CONST为预设的常量,speed_max表示计算获得的最大速率,speed_min表示计算获得的最小速率,speed_ava表示计算获得的平均速率。
16.根据权利要求15所述的装置,其特征在于,所述速率预测值获得单元进一步用于:
根据预设的系数[w0,w1,w2,w3]和速率变化梯度信息,更新向量W[w0′,w1′,w2′,w3′],使w0′=w0+D0,w1′=w1+D1,w2′=w2+D2,w3′=w3+D3;
按照下式计算获得所述速率预测值SPD_h:
SPD_h=w0′*CONST+w1′*speed_max+w2′*speed_min+w3′*speed_ava。
17.根据权利要求10、11或12所述的装置,其特征在于,所述装置还包括:速率修正单元,用于根据维护的速率调整索引C_INDEX,对获得的所述速率预测值进行调整修正,获得修正后的速率预测值。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括:拥塞窗口计算单元,用于根据修正后的速率预测值计算获得带宽时延积BDP:BDP=SPD_adj*rtt_min,其中,SPD_adj表示修正后的速率预测值,rtt_min表示本轮滑动周期内的最小RTT;
根据获得的BDP计算拥塞窗口CWND:CWND=BDP/MSS,其中,MSS表示预设的最大报文段长度。
19.一种服务器端设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-9中任一所述的方法。
20.一种计算机可读存储介质,其存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711251209.5A CN108011780B (zh) | 2017-12-01 | 2017-12-01 | 一种数据传输速率测量方法、装置、设备和计算机可读介质 |
US16/129,885 US10594568B2 (en) | 2017-12-01 | 2018-09-13 | Method and apparatus for measuring a data transmission speed, device and computer readable medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711251209.5A CN108011780B (zh) | 2017-12-01 | 2017-12-01 | 一种数据传输速率测量方法、装置、设备和计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108011780A true CN108011780A (zh) | 2018-05-08 |
CN108011780B CN108011780B (zh) | 2019-01-22 |
Family
ID=62056246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711251209.5A Active CN108011780B (zh) | 2017-12-01 | 2017-12-01 | 一种数据传输速率测量方法、装置、设备和计算机可读介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10594568B2 (zh) |
CN (1) | CN108011780B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110290428A (zh) * | 2019-06-26 | 2019-09-27 | 腾讯科技(深圳)有限公司 | 一种拥塞控制方法、装置、终端及存储介质 |
CN111328059A (zh) * | 2020-02-25 | 2020-06-23 | Oppo广东移动通信有限公司 | 一种数据传输方法、数据传输装置及电子设备 |
CN111629281A (zh) * | 2020-04-13 | 2020-09-04 | 北京创享苑科技文化有限公司 | 一种视频传输中基于网络丢包率分布的在线连续检验方法 |
US11129044B2 (en) * | 2017-12-11 | 2021-09-21 | Wangsu Science & Technology Co., Ltd. | Method for transmitting wireless network data, sending terminal and receiving terminal |
CN115277556A (zh) * | 2022-06-21 | 2022-11-01 | 网宿科技股份有限公司 | 拥塞控制方法、电子设备及可读存储介质 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11438275B2 (en) * | 2018-08-08 | 2022-09-06 | British Telecommunications Public Limited Company | Congestion response |
KR102139378B1 (ko) * | 2018-11-20 | 2020-07-29 | 울산과학기술원 | 혼잡 제어 방법 및 장치 |
JP7192608B2 (ja) * | 2019-03-26 | 2022-12-20 | オムロン株式会社 | ネットワーク管理装置、管理方法、管理プログラムおよび記録媒体 |
CN111970208B (zh) * | 2020-08-27 | 2024-03-05 | 腾讯科技(深圳)有限公司 | 网络传输方法、装置、设备及计算机可读存储介质 |
CN115150639B (zh) * | 2022-09-01 | 2022-12-20 | 北京蔚领时代科技有限公司 | 一种基于分散编码器的抗弱网方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060050640A1 (en) * | 2004-08-17 | 2006-03-09 | Cheng Jin | Method and apparatus for network congestion control using queue control and one-way delay measurements |
CN1871806A (zh) * | 2003-10-24 | 2006-11-29 | 索尼株式会社 | 无线通信系统、无线通信设备和无线通信方法及计算机程序 |
CN103763156A (zh) * | 2014-01-28 | 2014-04-30 | 中国移动(深圳)有限公司 | 网络测速方法及系统 |
WO2014132471A1 (ja) * | 2013-02-27 | 2014-09-04 | 富士ゼロックス株式会社 | 帯域測定装置及びプログラム |
EP3135009A1 (en) * | 2014-04-23 | 2017-03-01 | Bequant S.L. | Method and apparatus for network congestion control based on transmission rate gradients |
CN106713166A (zh) * | 2015-07-31 | 2017-05-24 | 华为技术有限公司 | 确定拥塞窗口大小的方法及装置 |
CN106878192A (zh) * | 2016-12-26 | 2017-06-20 | 北京邮电大学 | 一种自适应mptcp的数据调度方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005002120A2 (en) * | 2003-06-12 | 2005-01-06 | California Institute Of Technology | Method and apparatus for network congestion control |
US8340099B2 (en) * | 2009-07-15 | 2012-12-25 | Microsoft Corporation | Control of background data transfers |
CN101634995B (zh) | 2009-08-13 | 2011-09-21 | 浙江大学 | 一种基于机器学习的网络连接速度预测方法 |
CN103841136B (zh) | 2012-11-22 | 2018-04-27 | 腾讯科技(深圳)有限公司 | 应用程序的加速方法及系统 |
CN104349459B (zh) * | 2013-07-25 | 2019-04-19 | 索尼公司 | 在无线通信系统中进行动态上行配置的方法、基站和终端 |
US20150237164A1 (en) * | 2014-02-18 | 2015-08-20 | Qualcomm Incorporated | Improving or optimizing a radio heatmap via feedback to agents |
JP2015195511A (ja) * | 2014-03-31 | 2015-11-05 | 富士通株式会社 | パケット解析プログラム、パケット解析装置およびパケット解析方法 |
KR102363534B1 (ko) * | 2015-06-08 | 2022-02-17 | 삼성전자주식회사 | 통신 시스템에서 tcp 기반의 전송 제어 방법 및 장치 |
WO2017150944A1 (ko) * | 2016-03-03 | 2017-09-08 | 엘지전자 주식회사 | 무선 통신 시스템에서 무선 신호 송수신 방법 및 장치 |
CN106162831A (zh) | 2016-07-21 | 2016-11-23 | 北京小米移动软件有限公司 | 网络连接方法及装置 |
US10972358B2 (en) * | 2017-08-30 | 2021-04-06 | Citrix Systems, Inc. | Inferring congestion and signal quality |
US11317444B2 (en) * | 2017-11-03 | 2022-04-26 | Qualcomm Incorporated | Random access channel (RACH) design |
-
2017
- 2017-12-01 CN CN201711251209.5A patent/CN108011780B/zh active Active
-
2018
- 2018-09-13 US US16/129,885 patent/US10594568B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1871806A (zh) * | 2003-10-24 | 2006-11-29 | 索尼株式会社 | 无线通信系统、无线通信设备和无线通信方法及计算机程序 |
US20060050640A1 (en) * | 2004-08-17 | 2006-03-09 | Cheng Jin | Method and apparatus for network congestion control using queue control and one-way delay measurements |
WO2014132471A1 (ja) * | 2013-02-27 | 2014-09-04 | 富士ゼロックス株式会社 | 帯域測定装置及びプログラム |
CN103763156A (zh) * | 2014-01-28 | 2014-04-30 | 中国移动(深圳)有限公司 | 网络测速方法及系统 |
EP3135009A1 (en) * | 2014-04-23 | 2017-03-01 | Bequant S.L. | Method and apparatus for network congestion control based on transmission rate gradients |
CN106713166A (zh) * | 2015-07-31 | 2017-05-24 | 华为技术有限公司 | 确定拥塞窗口大小的方法及装置 |
CN106878192A (zh) * | 2016-12-26 | 2017-06-20 | 北京邮电大学 | 一种自适应mptcp的数据调度方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11129044B2 (en) * | 2017-12-11 | 2021-09-21 | Wangsu Science & Technology Co., Ltd. | Method for transmitting wireless network data, sending terminal and receiving terminal |
CN110290428A (zh) * | 2019-06-26 | 2019-09-27 | 腾讯科技(深圳)有限公司 | 一种拥塞控制方法、装置、终端及存储介质 |
CN110290428B (zh) * | 2019-06-26 | 2021-08-20 | 腾讯科技(深圳)有限公司 | 一种拥塞控制方法、装置、终端及存储介质 |
CN111328059A (zh) * | 2020-02-25 | 2020-06-23 | Oppo广东移动通信有限公司 | 一种数据传输方法、数据传输装置及电子设备 |
WO2021169687A1 (zh) * | 2020-02-25 | 2021-09-02 | Oppo广东移动通信有限公司 | 一种数据传输方法、数据传输装置及电子设备 |
CN111629281A (zh) * | 2020-04-13 | 2020-09-04 | 北京创享苑科技文化有限公司 | 一种视频传输中基于网络丢包率分布的在线连续检验方法 |
CN115277556A (zh) * | 2022-06-21 | 2022-11-01 | 网宿科技股份有限公司 | 拥塞控制方法、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10594568B2 (en) | 2020-03-17 |
CN108011780B (zh) | 2019-01-22 |
US20190173763A1 (en) | 2019-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108011780A (zh) | 一种数据传输速率测量方法、装置、设备和计算机可读介质 | |
CN107800642A (zh) | 一种拥塞控制方法及装置 | |
EP1376945B1 (en) | Receiver-based RTT measurement in TCP | |
CN110535965A (zh) | 一种数据处理方法及装置、存储介质 | |
CN103999409A (zh) | 用于带宽变化移动数据网络的链路缓冲器大小和队列长度估算的方法 | |
CN110519175B (zh) | 一种信息处理方法、设备及计算机可读存储介质 | |
JPWO2015045080A1 (ja) | 計測装置、通信装置、中継装置、計測方法および計測プログラム | |
CN109921962A (zh) | 带宽测量方法、装置、计算机可读存储介质和计算机设备 | |
CN106713166A (zh) | 确定拥塞窗口大小的方法及装置 | |
CN102457438A (zh) | 用于发送数据的方法和设备 | |
EP1096737A3 (en) | Method and apparatus for queue management | |
CN105978822A (zh) | 一种数据中心中基于时限敏感和往返时延的拥塞控制方法 | |
US9432296B2 (en) | Systems and methods for initializing packet transfers | |
CN110875938A (zh) | 一种区块链中信息的发送方法及装置 | |
CN111245578B (zh) | 数据包传输方法、装置、电子设备和存储介质 | |
CN103312632A (zh) | 一种测量可用带宽的方法 | |
WO2018161303A1 (zh) | 无线质量支持视频体验的检测方法及装置 | |
WO2017096837A1 (zh) | 节点间距离的度量方法及系统 | |
CN110248379A (zh) | 无线局域网中基站的性能测试方法及装置 | |
JP2020149249A (ja) | 転送プログラム、転送方法、および転送装置 | |
JP7003467B2 (ja) | パケット分類プログラム、パケット分類方法およびパケット分類装置 | |
CN104580006A (zh) | 一种移动网络发送速率控制方法、装置及系统 | |
JP3866647B2 (ja) | パケット損失率測定方法及びシステム | |
EP3348027B1 (en) | Technique for multi-connectivity | |
CN107171887B (zh) | 一种网络带宽测试方法、客户端及网络带宽测试系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |