一种往返时延的测量方法、装置及系统与流程

文档序号:11147717阅读:840来源:国知局
一种往返时延的测量方法、装置及系统与制造工艺

本发明涉及通信领域,尤其涉及一种往返时延的测量方法、装置及系统。



背景技术:

传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它通过重传机制提供可靠的通信,具体的,TCP为每个数据包设置一个序列号,当接收端成功收到数据包A后向发送端发送数据包A的确认包(ACK),该确认包中携带有数据包A的序列号,如果发送端在一定时间内未收到数据包A的确认包,那么,发送端则认为数据包A已丢失,进而重传数据包A。

为了避免网络拥塞,TCP采用滑窗限流,批量传输的机制。具体的,发送端按照滑动窗口(Sliding Window,SW)规定的字节批量发送若干数据包(即包群),在一个批次的包群发送完成后,发送端停止发送数据包,直到一个往返时延(Round-Trip Time,RTT)后,即发送端收到接收端对上一批次的包群发送的确认包后,再启动新批次的包群发送。

从上述传输机制可以看出,往返时延是决定TCP传输速率的重要指标,如图1所示,在测量TCP链接的RTT时,通常在发送端和接收端之间设置监测点,将监测点接收到的数据包A和数据包A的确认包B之间的时间差作为RTT。

但是,上述RTT测量方法只能得到监测点到接收端之间的RTT值,并不能真实地测量发送端与接收端之间的RTT值,如果监测点距发送端端较远,那么,上述RTT测量方法测量得到的RTT值误差较大。



技术实现要素:

本发明的实施例提供一种往返时延的测量方法、装置及系统,可以一 定程度上提高RTT测量的准确度。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,本发明的实施例提供一种往返时延的测量方法,所述方法用于测量发送端与接收端之间TCP链接上的RTT,包括:获取在所述TCP链接上接收到数据包A的第一时间,所述数据包A为所述发送端向所述接收端发送的第一包群中的第一个数据包;在接收到所述数据包A的确认包之后,计算所述发送端发送的数据包C与数据包D之间的发包时间间隔,所述数据包C为在所述数据包A之后的数据包,所述数据包D为在所述数据包C之后与所述数据包C相邻的数据包;若所述数据包C与所述数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值,则将接收到所述数据包C的第二时间与所述第一时间的差值作为所述TCP链接的本次RTT值。

这样一来,基于TCP批量传输的机制,若监测到数据包C与数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值时,则确定数据包D为在第一包群之后的第二包群中的第一个数据包,此时,将接收到数据包D的第二时间与接收到数据包A的第一时间的差值,即接收第一包群与第二包群之间的时间差作为该TCP链接的本次RTT值,从而一定程度上提高RTT测量的准确度。

结合第一方面,在第一方面的第一种可能的实现方式中,获取在所述TCP链接上接收到所述数据包A的第一时间,可具体通过以下方式获得:计算在所述TCP链接上接收到的数据包E和数据包A’之间的发包时间间隔,所述数据包A’为在所述数据包E之后与所述数据包E相邻的数据包;若所述数据包E和所述数据包A’之间的发包时间间隔大于所述第一门限值,且小于所述第二门限值时,则将所述数据包A’确定为所述数据包A;查询接收到所述数据包A的接收时间,并将所述接收时间作为所述第一时间。

其中,查询接收到所述数据包A的接收时间,并将所述接收时间作为所述第一时间,可具体包括:根据所述数据包A的序列号,查询所述数据 包A的确认包是否唯一;若所述数据包A的确认包唯一,则查询接收到所述数据包A的接收时间,并将所述接收时间作为所述第一时间。

这样,通过查询该数据包A的确认包是否唯一,即可排除数据包A被接收端多次确认的情况,因为数据包A被接收端多次确认时会产生多个确认包,而通过这多个确认包无法准确确定接收端确认的是哪个数据包,进而造成RTT测量时得到的RTT值准确性降低。

结合第一方面,在第一方面的第二种可能的实现方式中,将接收到所述数据包D的第二时间与所述第一时间的差值作为所述TCP链接的本次RTT值之后,还包括:根据所述本次RTT值更新所述第一门限值和所述第二门限值,其中,更新后的所述第一门限值为第一比例系数与所述本次RTT值的乘积,更新后的所述第二门限值为第二比例系数与所述本次RTT值的乘积,所述第一比例系数小于所述第二比例系数。

结合第一方面,在第一方面的第三种可能的实现方式中,在将接收到所述数据包D的第二时间与所述第一时间的差值作为所述TCP链接的本次RTT值之后,还包括:对所述本次RTT值与本次RTT测量之前得到的N个历史RTT值求取平均值,N为大于0的整数;根据所述平均值更新所述第一门限值和所述第二门限值,其中,更新后的所述第一门限值为第一比例系数与所述平均值的乘积,更新后的所述第二门限值为第二比例系数与所述平均值的乘积,所述第一比例系数小于所述第二比例系数。

在进行下一次RTT测量时,仍然可以循环执行上述更新方法,并且,可以使用上一次RTT测量后更新的第一门限值和第二门限值,将得到的发包时间间隔与更新后的第一门限值和第二门限值进行比较,进而动态测量TCP链接上的每次RTT值。

结合第一方面,在第一方面的第四种可能的实现方式中,在获取在TCP链接上接收到所述数据包A的第一时间之前,还包括:计算建立所述TCP链接时的初始RTT值;根据所述初始RTT值设置所述第一门限值和所述第二门限值,其中,所述第一门限值为第一比例系数与所述初始 RTT值的乘积,所述第二门限值为第二比例系数与所述初始RTT值的乘积,所述第一比例系数小于所述第二比例系数。

结合第一方面以及第一方面的第一至第四中可能的实现方式中的任一种实现方式,在第一方面的第五种可能的实现方式中,在监测所述发送端发送的数据包C与数据包D之间的发包时间间隔之后,还包括:若所述数据包C与所述数据包D之间的发包时间间隔小于所述第一门限值,则继续计算所述数据包D与数据包H之间的发包时间间隔,所述数据包H为在所述数据包D之后与所述数据包D相邻的数据包;若所述数据包C与所述数据包D之间的发包时间间隔大于所述第二门限值,则放弃本次RTT测量。

结合第一方面以及第一方面的第一至第四中可能的实现方式中的任一种实现方式,在第一方面的第六种可能的实现方式中,在监测所述发送端发送的数据包C与数据包D之间的发包时间间隔之后,还包括:若所述发包时间间隔大于第一门限值,且小于第二门限值时,则将所述数据包D的序列号与所述数据包A的序列号的差值作为SW的大小。

由于除了RTT是决定TCP传输速率的重要指标之外,SW也是决定TCP传输速率的重要指标,因此,可以看出,本发明实施例提供的RTT测量方法,能够同时较为准确地测量RTT值和SW的大小,该方法适用于所有TCP链接,并且,可以对一条TCP链接上的数据流进行多次RTT测量,实现对RTT的动态跟踪。

第二方面,本发明的实施例提供一种往返时延的测量装置,所述装置用于测量发送端与接收端之间传输控制协议TCP链接上的往返时延RTT,包括:获取单元,用于获取在所述TCP链接上接收到数据包A的第一时间,所述数据包A为所述发送端向所述接收端发送的第一包群中的第一个数据包;计算单元,用于在接收到所述数据包A的确认包之后,计算所述发送端发送的数据包C与数据包D之间的发包时间间隔,所述数据包C 为在所述数据包A之后的数据包,所述数据包D为在所述数据包C之后与所述数据包C相邻的数据包;所述计算单元,还用于若所述数据包C与所述数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值,则将接收到所述数据包C的第二时间与所述第一时间的差值作为所述TCP链接的本次RTT值。

结合第二方面,在第二方面的第一种可能的实现方式中,所述装置还包括确定单元和查询单元,其中,所述计算单元,还用于计算在所述TCP链接上接收到的数据包E和数据包A’之间的发包时间间隔,所述数据包A’为在所述数据包E之后与所述数据包E相邻的数据包;所述确定单元,用于若所述数据包E和所述数据包A’之间的发包时间间隔大于所述第一门限值,且小于所述第二门限值时,则将所述数据包A’确定为所述数据包A;所述查询单元,用于查询接收到所述数据包A的接收时间,并将所述接收时间作为所述第一时间。

其中,所述查询单元,具体用于查询所述数据包A的确认包是否唯一;若所述数据包A的确认包唯一,则查询接收到所述数据包A的接收时间,并将所述接收时间作为所述第一时间。

结合第二方面,在第二方面的第二种可能的实现方式中,所述装置还包括:更新单元,用于根据所述本次RTT值更新所述第一门限值和所述第二门限值,其中,更新后的所述第一门限值为第一比例系数与所述本次RTT值的乘积,更新后的所述第二门限值为第二比例系数与所述本次RTT值的乘积,所述第一比例系数小于所述第二比例系数。

结合第二方面,在第二方面的第三种可能的实现方式中,所述装置还包括更新单元,其中,所述计算单元,还用于对本次RTT测量得到的所述本次RTT值与本次RTT测量之前得到的N个历史RTT值求取平均值,N为大于0的整数;所述更新单元,用于根据所述平均值更新所述第一门限值和所述第二门限值,其中,更新后的所述第一门限值为第一比例系数 与所述平均值的乘积,更新后的所述第二门限值为第二比例系数与所述平均值的乘积,所述第一比例系数小于所述第二比例系数。

结合第二方面,在第二方面的第四种可能的实现方式中,所述装置还包括设置单元,其中,所述计算单元,还用于计算建立所述TCP链接时的初始RTT值;所述设置单元,用于根据所述初始RTT值设置所述第一门限值和所述第二门限值,其中,所述第一门限值为第一比例系数与所述初始RTT值的乘积,所述第二门限值为第二比例系数与所述初始RTT值的乘积,所述第一比例系数小于所述第二比例系数。

结合第二方面以及第二方面的第第一至四种可能的实现方式中的任一种实现方式,在第二方面的第五种可能的实现方式中,所述计算单元,还用于若所述数据包C与所述数据包D之间的发包时间间隔小于所述第一门限值,则继续计算所述数据包D与数据包H之间的发包时间间隔,所述数据包H为在所述数据包D之后与所述数据包D相邻的数据包;若所述数据包C与所述数据包D之间的发包时间间隔大于所述第二门限值,则放弃本次RTT测量。

结合第二方面以及第二方面的第第一至四种可能的实现方式中的任一种实现方式,在第二方面的第六种可能的实现方式中,所述计算单元,还用于若所述发包时间间隔大于第一门限值,且小于第二门限值时,则将所述数据包D的序列号与所述数据包A的序列号的差值作为滑动窗口SW的大小。

第三方面,本发明的实施例提供一种往返时延的测量系统,包括上述第二方面中任一项所述的往返时延的测量装置,以及与所述往返时延的测量装置均相连的接收端和发送端。

本发明的实施例提供一种往返时延的测量方法、装置及系统,可用于测量发送端与接收端之间TCP链接上的RTT,首先,可获取在该TCP链接上接收到数据包A的第一时间,该数据包A为发送端向接收端发送的第 一包群中的第一个数据包;在接收到该数据包A的确认包之后,计算发送端发送的数据包C与数据包D之间的发包时间间隔,该数据包C为在数据包A之后的数据包,该数据包D为在数据包C之后与数据包C相邻的数据包;若该数据包C与该数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值时,则将接收到该数据包D的第二时间与第一时间的差值作为该TCP链接的本次RTT值。这样一来,基于TCP批量传输的机制,若监测到数据包C与数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值时,则确定数据包D为在第一包群之后的第二包群中的第一个数据包,此时,将接收到数据包D的第二时间与接收到数据包A的第一时间的差值,即接收第一包群与第二包群之间的时间差作为该TCP链接的本次RTT值,从而一定程度上提高RTT测量的准确度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为现有技术中RTT测量方法的示意图;

图2为本发明实施例中进行RTT测量的架构示意图;

图3为本发明实施例提供的一种往返时延的测量方法的流程图一;

图4为本发明实施例提供的RTT测量方法的示意图;

图5为本发明实施例提供的一种往返时延的测量方法的流程图二;

图6为本发明实施例提供的三次握手机制的示意图;

图7为本发明实施例提供的一种往返时延的测量装置的结构示意图一;

图8为本发明实施例提供的一种往返时延的测量装置的结构示意图二;

图9为本发明实施例提供的一种往返时延的测量装置的结构示意图三;

图10为本发明实施例提供的一种往返时延的测量装置的结构示意图 四;

图11为本发明实施例提供的一种往返时延的测量系统的结构示意图;

图12为本发明实施例提供的一种往返时延的测量装置的硬件结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

另外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

如图2所示,TCP协议具有批量传输的机制,具体的,接收端与发送端之间通过“三次握手(three times handshake;three-way handshake)机制”建立TCP链接,该TCP链接建立后,发送端传输一个包群,该包群内包含若干个数据包,接收端在接收到发送端批量发送的数据包后,向发送端回复确认包(ACK),当发送端接收到该确认包后启动新的一轮包群的发送。

而RTT是指:TCP协议中从发送端发送一个数据包,到收到接收端发送的确认包所经历的时间,也就是发送端连续发送两次包群之间的时间间隔,即图2中的R1,对于RTT测量装置点来说,发送端与接收端之间在该TCP链接上的一次RTT,是指:监测到第一包群中第一个数据包,到监测到第二包群中第一个数据包的时间差,即图2中的R2,因此,本 发明的实施例提供的RTT测量方法通过识别包群间隔,计算发送端与接收端之间在该TCP链接上的一次RTT,该方法可以连续测量该TCP链接上每一次的RTT值,并且容易在网络中间任意位置上实现。

需要说明的是,在本发明实施例中涉及到的数据包A、数据包A’、数据包B、数据包C等数据包中,A、B、C等英文字母仅用于区分数据包,不会对数据包的顺序、大小等属性特征进行限制。

实施例1

本发明的实施例提供一种往返时延的测量方法,如图3所示,包括:

101、获取在TCP链接上接收到数据包A的第一时间,该数据包A为发送端向接收端发送的第一包群中的第一个数据包。

102、在接收到该数据包A的确认包之后,计算发送端发送的数据包C与数据包D之间的发包时间间隔,该数据包C为在数据包A之后的数据包,该数据包D为在数据包C之后与该数据包C相邻的数据包。

103、若该数据包C与数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值时,则将接收到该数据包D的第二时间与该第一时间的差值作为该TCP链接的本次RTT值。

在步骤101中,RTT测量装置位于接收端和发送端之间,当接收端与发送端之间通过“三次握手机制”建立TCP链接后,RTT测量装置可分别监测到发送端向接收端批量发送的包群(例如第一包群)中的每个数据包到达RTT测量装置的时间,以及接收端针对每个接收到的数据包向发送端发送的确认包到达RTT测量装置的时间。

此时,若接收到接收端发送的第一包群中的第一个数据包(本发明实施例中称为数据包A)的确认包,RTT测量装置可获取从发送端在该TCP链接上接收该数据包A的第一时间T1(T1>0),即第一包群中的第一个数据包到达RTT测量装置的时间。

具体的,RTT测量装置可记录接收到的各个数据包的接收时间,并将该各个数据包的接收时间存储至自身的存储单元,并且,RTT测量装置可实时计算接收到的各个数据包之间的时间间隔,该时间间隔即为发送端发送各个数据包之间的发包时间间隔,由于TCP协议具有批量传输的机制,也就是说,当发送端将第一包群进行发送结束后,当发送端接收到该第一 包群内的数据包的确认包后,才启动新的一轮包群(即第二包群)的发送,因此,第一包群的最后一个数据包与第二包群的第一个数据包之间的发包间隔时间,通常大于每个包群内数据包之间的发包时间间隔,那么,当RTT测量装置监测到该数据包A的前一个数据包(本发明实施例中称为数据包E)与该数据包A之间的发包时间间隔大于第一门限值,且小于第二门限值时,则可认为该数据包E为第一包群的前一个包群(即第三包群)中的最后一个数据包。

此时,RTT测量装置查询该数据包A的确认包是否唯一,即排除数据包A被接收端多次确认的情况,因为数据包A被接收端多次确认时会产生多个确认包,RTT测量装置通过这多个确认包无法准确确定接收端确认的是哪个数据包,进而造成RTT测量时得到的RTT值准确性降低。

具体的,由于TCP为每个数据包设置一个序列号,当接收端成功收到数据包A后,向发送端发送数据包A的确认包,该确认包中也携带有数据包A的序列号,因此,RTT测量装置可以解析监测到的各个数据包的序列号和各个确认包的序列号,通过对比,确定数据包A的确认包是否唯一,若数据包A的确认包唯一,RTT测量装置则从存储器中已经记录的接收该数据包A的接收时间作为该第一时间T1。

示例性的,如图4所示,下行方向表示发送端向接收端发送各个数据包,上行方向表示接收端向发送端发送对应的确认包,RTT测量装置会记录每一个接收到的数据包的接收时间,当监测到在该TCP链接上接收到的数据包E和数据包A’之间的发包时间间隔J1(J1>0)大于第一门限值,且小于所述第二门限值时,则确定该数据包A’为发送端向所述接收端发送的第一包群中的第一个数据包,即数据包A,此时,RTT测量装置从上行方向上查找与数据包A的序列号相同的确认包B是否唯一,若数据包A的确认包B唯一,RTT测量装置则将存储器中已经记录的接收该数据包A的接收时间作为该第一时间T1。

其中,第一门限值和第二门限值的具体取值可以由本领域技术人员根据实际经验进行预置,又或者,第一门限值和第二门限值的具体取值可以是由RTT测量装置根据本次RTT测量的前一次RTT测量得到的RTT值计算的,本发明后续实施例将对此做详细介绍,故此处不再赘述。

至此,RTT测量装置获取到从发送端在该TCP链接上接收数据包A的第一时间T1。

在步骤102中,由于发送端发送的第二包群一定是在接收到第一包群的确认包之后发送的,也就是说,在发送端接收到数据包A的确认包之后,才会发送第二包群的第一个数据包,因此,在接收到该数据包A的确认包之后,RTT测量装置可连续计算发送端发送的数据包C与数据包D之间的发包时间间隔,数据包C与数据包D均为数据阿伯A之后的数据包,且数据包D为在数据包C之后与该数据包C相邻的数据包(本发明实施例中所指的相邻数据包,是指按照时间的先后顺序RTT测量装置连续接收到的两个数据包)。

进一步地,由于发送端按照滑动窗口(Sliding Window,SW)规定的字节发送包群,而包群内的大多数数据包都按照预定字节大小进行封装(即数据包为满包),而每个包群内的最后一个或几个数据包的大小可能会小于该预定字节大小,出现非满包的情况。

而由于非满包(可能是大小极小的包)的传输时延可能与满包的传输时延有差别,因此,为了增加RTT测量的准确性,RTT测量装置可连续计算数据包为满包的数据包C与数据包D之间的发包时间间隔。

在步骤103中,若在步骤102中计算出数据包C与数据包D之间的发包时间间隔J2(J2>0)大于第一门限值,且小于第二门限值时,RTT测量装置则记录接收该数据包D的第二时间T2,以便于计算该TCP链接的本次RTT值。

示例性的,仍如图4所示,当RTT测量装置在下行方向上,计算得到数据包A的确认包B之后的数据包C与相邻的数据包D之间的发包时间间隔J2大于第一门限值,且小于所述第二门限值时,可以认为数据包D为第一包群之后的包群(及第二包群)中的第一个数据包,此时,RTT测量装置记录接收该数据包D的第二时间T2。

当然,在步骤102之后,若监测到的数据包C与数据包D之间的发包时间间隔J2小于该第一门限值,即说明数据包D仍属于第一包群内的数据包,那么,RTT测量装置可继续监测该数据包D与后续相邻的数据包H之间的发包时间间隔;又或者,若监测到的数据包C与数据包D之 间的发包时间间隔J2大于该第二门限值,即认为当前发送端无数据包发送,此时,RTT测量装置可放弃本次RTT测量。

而对于RTT测量装置来说,发送端与接收端之间在该TCP链接上的一次RTT,是指:监测到第一包群中第一个数据包,到监测到第二包群中第一个数据包的时间差,即图2中的R2,因此,在该TCP链接上本次RTT测量装置测量的RTT值(即本次RTT值)R2=第二时间T2-第一时间T1。

至此,本发明的实施例提供一种往返时延的测量方法,可用于测量发送端与接收端之间TCP链接上的RTT,首先,可获取在该TCP链接上接收到数据包A的第一时间,该数据包A为发送端向接收端发送的第一包群中的第一个数据包;在接收到该数据包A的确认包之后,计算发送端发送的数据包C与数据包D之间的发包时间间隔,该数据包C为在数据包A之后的数据包,该数据包D为在数据包C之后与数据包C相邻的数据包;若该数据包C与该数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值时,则将接收到该数据包D的第二时间与第一时间的差值作为该TCP链接的本次RTT值。这样一来,基于TCP批量传输的机制,若监测到数据包C与数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值时,则确定数据包D为在第一包群之后的第二包群中的第一个数据包,此时,将接收到数据包D的第二时间与接收到数据包A的第一时间的差值,即接收第一包群与第二包群之间的时间差作为该TCP链接的本次RTT值,从而一定程度上提高RTT测量的准确度。

实施例2

本发明的实施例提供一种往返时延的测量方法,如图5所示,包括:

201、计算建立TCP链接时的初始RTT值。

202、根据该初始RTT值设置第一门限值和第二门限值,其中,第一门限值为第一比例系数与初始RTT值的乘积,第二门限值为第二比例系数与初始RTT值的乘积。

203、获取在TCP链接上接收到数据包A的第一时间,该数据包A为发送端向接收端发送的第一包群中的第一个数据包。

204、在接收到该数据包A的确认包之后,计算发送端发送的数据包 C与数据包D之间的发包时间间隔。

205、若该发包时间间隔大于第一门限值,且小于第二门限值时,则记录接收该数据包D的第二时间。

206、将该第二时间与该第一时间的差值作为该TCP链接的本次RTT值。

207、根据该本次RTT值更新该第一门限值和该第二门限值,其中,更新后的第一门限值为第一比例系数与本次RTT值的乘积,更新后的第二门限值为第二比例系数与本次RTT值的乘积。

208、若该发包时间间隔大于第一门限值,且小于第二门限值时,则将该数据包D的序列号与该数据包A的序列号的差值作为SW的大小。

具体的,RTT测量装置位于接收端和发送端之间,而接收端与发送端之间通过“三次握手机制”建立TCP链接。

其中,所谓的三次握手的机制,是指为了提供可靠的数据传送,接收端和发送端对每次数据的传输进行协商,使数据的发送和接收同步。如图6所示,第一次握手是指,在建立TCP链接时,发送端发送SYN(synchronous)报文到接收端,该SYN报文中包含该TCP链接的配置信息,以使得接收端根据配置信息进行初始化配置。第二次握手是指,接收端进行初始化配置后发送响应消息(即SYN报文+ACK)指示发送端该TCP链接的配置完成。第三次握手是指,发送端收到接收端的响应消息后发送确认信息(即ACK),指示接收端该TCP链接已经建立,准备传输数据。

可以看出,发送端与接收端在建立TCP链接时的初始RTT值(即该TCP链接上的第一次RTT值),为RTT测量装置从接收到发送端在第一次握手时发送SYN报文,至RTT测量装置接收到接收端发送的响应消息的时间W1,以及RTT测量装置从接收到接收端发送的响应消息至,RTT测量装置接收到发送端发送的确认信息的时间W2。

因此,在步骤201中,RTT测量装置根据上述W1与W2,计算在建立该TCP链接时的初始RTT值,即RTT测量装置=W1+W2。

然而,步骤201中得到的初始RTT值,只能代表该TCP链接上传输的数据流在开始时刻的RTT值,为了能够动态测量在该TCP链接上整个 数据流的在进行数据发送和接收时RTT值的变化,可进一步执行步骤202-207。

在步骤202中,RTT测量装置根据步骤201中得到的该初始RTT值,设置第一门限值和第二门限值,其中,第一门限值为第一比例系数与初始RTT值的乘积,第二门限值为第二比例系数与初始RTT值的乘积,该第一比例系数小于第二比例系数。即:

第一门限值M1=第一比例系数*初始RTT值

第二门限值M2=第二比例系数*初始RTT值

例如,第一比例系数可以是0.2-0.3范围内的任意值,第二比例系数可以是2-3范围内的任意值,本领域技术人员可以根据实际经验或特定的算法选择第一比例系数和第二比例系数,本发明实施例对此不做限定。

在步骤203中,RTT测量装置可获取在该TCP链接上接收到该数据包A的第一时间T1(T1>0),即第一包群中的第一个数据包到达RTT测量装置的时间,具体可参见步骤101中的相关描述。

在步骤204中,在接收到该数据包A的确认包之后,RTT测量装置可连续计算发送端发送的数据包C与数据包D之间的发包时间间隔J2,该数据包C与数据包D为前后相邻的数据包,具体可参见步骤102中的相关描述。

在步骤205中,可以进一步将步骤204中得到的发包时间间隔与步骤202中计算的第一门限值和第二门限值进行比较,若数据包C与数据包D之间的发包时间间隔J2大于第一门限值,且小于第二门限值时,RTT测量装置则记录接收该数据包D的第二时间T2。

示例性的,如图4所示,当RTT测量装置在下行方向上,监测到数据包A的确认包B之后的数据包C与相邻的数据包D之间的发包时间间隔J2大于第一门限值,且小于所述第二门限值时,可以认为数据包D为第一包群之后的包群(及第二包群)中的第一个数据包,此时,RTT测量装置记录接收该数据包D的第二时间T2。

在步骤206中,对于RTT测量装置来说,发送端与接收端之间在该TCP链接上的一次RTT,是指:监测到第一包群中第一个数据包,到监测到第二包群中第一个数据包的时间差,即图2中的R2,因此,在该TCP 链接上本次RTT测量装置测量的RTT值(即本次RTT值)R2=第二时间T2-第一时间T1。

在步骤207中,为了保证后续RTT测量时使用的第一门限值和该第二门限值更加准确,RTT测量装置可以根据步骤206中得到的该本次RTT值,更新该第一门限值和该第二门限值,其中,更新后的第一门限值为第一比例系数与本次RTT值的乘积,更新后的第二门限值为第二比例系数与本次RTT值的乘积。即:

更新后的第一门限值M3=第一比例系数*本次RTT值

更新后的第二门限值M4=第二比例系数*本次RTT值

这样,在步骤207之后进行下一次RTT测量时,RTT测量装置仍然可以循环执行步骤203-206中的方法,不同的是,在循环执行步骤205时,RTT测量装置可以使用上一次RTT测量后更新的第一门限值M3和第二门限值M4,将步骤204中得到的发包时间间隔与更新后的第一门限值M3和第二门限值M4进行比较。

又或者,RTT测量装置还可以对步骤206中得到的本次RTT值与进行本次RTT测量之前得到的N(N>0)个历史RTT值求取平均值(该平均值可以是算术平均值,也可以是几何平均值);进而,根据该平均值更新第一门限值和第二门限值,其中,该第一门限值为第一比例系数与该平均值的乘积,该第二门限值为第二比例系数与该平均值的乘积。

进一步地,在TCP协议中,发送端按照滑动窗口SW规定的字节批量发送若干数据包(即包群),在一个批次的包群发送完成后,发送端停止发送数据包,直到一个RTT后,发送端再启动新批次的包群发送。

从上述传输机制可以看出,除了RTT是决定TCP传输速率的重要指标之外,SW也是决定TCP传输速率的重要指标。

因此,在步骤208中,为了计算该TCP链接上SW的大小,当步骤204中监测到的该发包时间间隔J2大于第一门限值,且小于第二门限值,由于该TCP链接上的数据包都是按照序列号的大小依次发送的,因此,RTT测量装置可以将该数据包D的序列号与该数据包A的序列号的差值作为该SW的大小,即通过第一包群中第一个数据包的序列号与第二包群中第一个数据包的序列号的差值,计算该SW的大小。

可以看出,本发明实施例提供的RTT测量方法,能够同时较为准确地测量RTT值和SW的大小,该方法适用于所有TCP链接,并且,可以对一条TCP链接上的数据流进行多次RTT测量,实现对RTT的动态跟踪。

需要说明的是,步骤208可以在步骤205-207之间的任意时间执行,本发明实施例对此不作限制。

至此,本发明的实施例提供一种往返时延的测量方法,可用于测量发送端与接收端之间TCP链接上的RTT,首先,可获取在该TCP链接上接收到数据包A的第一时间,该数据包A为发送端向接收端发送的第一包群中的第一个数据包;在接收到该数据包A的确认包之后,计算发送端发送的数据包C与数据包D之间的发包时间间隔,该数据包C为在数据包A之后的数据包,该数据包D为在数据包C之后与数据包C相邻的数据包;若该数据包C与该数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值时,则将接收到该数据包D的第二时间与第一时间的差值作为该TCP链接的本次RTT值。这样一来,基于TCP批量传输的机制,若监测到数据包C与数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值时,则确定数据包D为在第一包群之后的第二包群中的第一个数据包,此时,将接收到数据包D的第二时间与接收到数据包A的第一时间的差值,即接收第一包群与第二包群之间的时间差作为该TCP链接的本次RTT值,从而一定程度上提高RTT测量的准确度。

实施例3

本发明的实施例提供一种往返时延的测量装置(即RTT测量装置),该装置用于测量发送端与接收端之间TCP链接上的RTT,如图7所示,该装置包括:

获取单元11,用于获取在所述TCP链接上接收到数据包A的第一时间,所述数据包A为所述发送端向所述接收端发送的第一包群中的第一个数据包;

计算单元12,用于在接收到所述数据包A的确认包之后,计算所述发送端发送的数据包C与数据包D之间的发包时间间隔,所述数据包C为在所述数据包A之后的数据包,所述数据包D为在所述数据包C之后与所述数据包C相邻的数据包;以及,若所述数据包C与所述数据包D 之间的发包时间间隔大于第一门限值,且小于第二门限值,则将接收到所述数据包C的第二时间与所述第一时间的差值作为所述TCP链接的本次RTT值。

进一步地,如图8所示,所述装置还包括确定单元13和查询单元14,其中,

所述计算单元12,还用于计算在所述TCP链接上接收到的数据包E和数据包A’之间的发包时间间隔,所述数据包A’为在所述数据包E之后与所述数据包E相邻的数据包;

所述确定单元13,用于若所述计算单元12中所述数据包E和所述数据包A’之间的发包时间间隔大于所述第一门限值,且小于所述第二门限值时,则将所述数据包A’确定为所述数据包A;

所述查询单元14,用于查询接收到所述数据包A的接收时间,并将所述接收时间作为所述第一时间.

进一步地,所述查询单元14,具体用于根据所述数据包A的序列号,查询所述数据包A的确认包是否唯一;若所述数据包A的确认包唯一,则查询接收到所述数据包A的接收时间,并将所述接收时间作为所述第一时间。

进一步地,如图9所示,所述装置还包括:

更新单元15,用于根据所述本次RTT值更新所述第一门限值和所述第二门限值,其中,更新后的所述第一门限值为第一比例系数与所述本次RTT值的乘积,更新后的所述第二门限值为第二比例系数与所述本次RTT值的乘积,所述第一比例系数小于所述第二比例系数。

又或者,如图9所示,所述计算单元12,还用于对本次RTT测量得到的所述本次RTT值与本次RTT测量之前得到的N个历史RTT值求取平均值,N为大于0的整数;

所述更新单元15,用于根据所述计算单元12中的平均值更新所述第一门限值和所述第二门限值,其中,更新后的所述第一门限值为第一比例系数与所述平均值的乘积,更新后的所述第二门限值为第二比例系数与所述平均值的乘积,所述第一比例系数小于所述第二比例系数。

进一步地,如图10所示,所述装置还包括设置单元16,其中,

所述计算单元12,还用于计算建立所述TCP链接时的初始RTT值;

所述设置单元16,用于根据所述计算单元12中的初始RTT值设置所述第一门限值和所述第二门限值,其中,所述第一门限值为第一比例系数与所述初始RTT值的乘积,所述第二门限值为第二比例系数与所述初始RTT值的乘积,所述第一比例系数小于所述第二比例系数。

进一步地,所述计算单元12,还用于若所述数据包C与所述数据包D之间的发包时间间隔小于所述第一门限值,则继续计算所述数据包D与数据包H之间的发包时间间隔,所述数据包H为在所述数据包D之后与所述数据包D相邻的数据包;若所述数据包C与所述数据包D之间的发包时间间隔大于所述第二门限值,则放弃本次RTT测量。

进一步地,所述计算单元12,还用于若所述发包时间间隔大于第一门限值,且小于第二门限值时,则将所述数据包D的序列号与所述数据包A的序列号的差值作为滑动窗口SW的大小。

至此,本发明的实施例提供一种往返时延的测量装置,可用于测量发送端与接收端之间TCP链接上的RTT,首先,可获取在该TCP链接上接收到数据包A的第一时间,该数据包A为发送端向接收端发送的第一包群中的第一个数据包;在接收到该数据包A的确认包之后,计算发送端发送的数据包C与数据包D之间的发包时间间隔,该数据包C为在数据包A之后的数据包,该数据包D为在数据包C之后与数据包C相邻的数据包;若该数据包C与该数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值时,则将接收到该数据包D的第二时间与第一时间的差值作为该TCP链接的本次RTT值。这样一来,基于TCP批量传输的机制,若监测到数据包C与数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值时,则确定数据包D为在第一包群之后的第二包群中的第一个数据包,此时,将接收到数据包D的第二时间与接收到数据包A的第一时间的差值,即接收第一包群与第二包群之间的时间差作为该TCP链接的本次RTT值,从而一定程度上提高RTT测量的准确度。

实施例4

图11为本发明实施例提供的一种往返时延的测量系统的结构示意图,该系统包括上述任一种往返时延的测量装置(即RTT测量装置)100, 以及与该往返时延的测量装置100均数据相连的接收端200和发送端300。

具体的,本发明实施例提供的系统可以用于实施上述图1-图6所示的本发明各实施例实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照图1-图6所示的本发明各实施例,故此处不再赘述。

示例性的,图12为本发明实施例提供的一种RTT测量装置100的实体结构示意图,本发明实施例提供的RTT测量装置100可以用于实施上述图1-图6所示的本发明各实施例实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照图1-图6所示的本发明各实施例。

其中,该RTT测量装置100包括处理器21、收发器22以及存储器23,并且,该处理器21、收发器22以及存储器23通过总线24进行通信。

具体的,收发器22从存储器23中获取从发送端接收到数据包A的第一时间,所述数据包A为第一包群中的第一个数据包;在收发器22接收到所述数据包A的确认包之后,处理器21计算所述发送端发送的数据包C与数据包D之间的发包时间间隔,所述数据包C与所述数据包D为前后相邻的数据包;若所述发包时间间隔大于第一门限值,且小于第二门限值时,处理器21则将接收所述数据包D的第二时间记录在存储器23中;进而,处理器21通过处理器21计算所述第二时间与所述第一时间的差值,并将所述第二时间与所述第一时间的差值作为所述TCP链接的本次RTT值。

进一步地,收发器22从存储器23中获取从发送端接收到数据包A的第一时间,具体包括步骤:处理器21计算在所述TCP链接上接收到的数据包E和数据包A’之间的发包时间间隔,所述数据包A’为在所述数据包E之后与所述数据包E相邻的数据包;若所述数据包E和所述数据包A’之间的发包时间间隔大于所述第一门限值,且小于所述第二门限值时,处理器21则确定所述数据包A’为所述数据包A,此时,处理器21查询接收到所述数据包A的接收时间,并将所述接收时间作为所述第一时间。

具体的,处理器231可先根据所述数据包A的序列号,查询所述数据包A的确认包是否唯一;若所述数据包A的确认包唯一,则查询接收到所述数据包A的接收时间,并将所述接收时间作为所述第一时间。

进一步地,在处理器21将所述第二时间与所述第一时间的差值作为所述TCP链接的本次往返时延RTT值之后,还可以包括步骤:处理器21根据所述本次RTT值更新所述第一门限值和所述第二门限值,并将更新后的第一门限值和第二门限值存储至存储器23中,其中,更新后的所述第一门限值为第一比例系数与所述本次RTT值的乘积,更新后的所述第二门限值为第二比例系数与所述本次RTT值的乘积,所述第一比例系数小于所述第二比例系数。

进一步地,在处理器21将所述第二时间与所述第一时间的差值作为所述TCP链接的本次往返时延RTT值之后,还可以包括步骤:处理器21对本次RTT测量得到的所述本次RTT值与本次RTT测量之前得到的N个历史RTT值求取平均值,N为大于0的整数;进而,处理器21根据所述平均值更新所述第一门限值和所述第二门限值,并将更新后的第一门限值和第二门限值存储至存储器23,其中,更新后的所述第一门限值为第一比例系数与所述平均值的乘积,更新后的所述第二门限值为第二比例系数与所述平均值的乘积,所述第一比例系数小于所述第二比例系数。

进一步地,在收发器22则通过处理器21,从存储器23中获取从发送端接收数据包A的第一时间之前,还可以包括步骤:处理器21计算建立所述TCP链接时的初始RTT值;并且,处理器21根据所述初始RTT值设置所述第一门限值和所述第二门限值,其中,所述第一门限值为第一比例系数与所述初始RTT值的乘积,所述第二门限值为第二比例系数与所述初始RTT值的乘积,所述第一比例系数小于所述第二比例系数。

进一步地,在处理器21计算所述发送端发送的数据包C与数据包D之间的发包时间间隔之后,还可以包括步骤:若所述发包时间间隔小于所述第一门限值,处理器21则继续计算所述数据包D与后续相邻的数据包之间的发包时间间隔;若所述发包时间间隔大于所述第二门限值,处理器21则放弃本次RTT测量。

进一步地,在处理器21监测所述发送端发送的数据包C与数据包D 之间的发包时间间隔之后,还可以包括步骤:若所述发包时间间隔大于第一门限值,且小于第二门限值时,则处理器21通过处理器21将所述数据包D的序列号与所述数据包A的序列号的差值作为SW的大小。

至此,本发明的实施例提供一种往返时延的测量装置及系统,可用于测量发送端与接收端之间TCP链接上的RTT,首先,可获取在该TCP链接上接收到数据包A的第一时间,该数据包A为发送端向接收端发送的第一包群中的第一个数据包;在接收到该数据包A的确认包之后,计算发送端发送的数据包C与数据包D之间的发包时间间隔,该数据包C为在数据包A之后的数据包,该数据包D为在数据包C之后与数据包C相邻的数据包;若该数据包C与该数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值时,则将接收到该数据包D的第二时间与第一时间的差值作为该TCP链接的本次RTT值。这样一来,基于TCP批量传输的机制,若监测到数据包C与数据包D之间的发包时间间隔大于第一门限值,且小于第二门限值时,则确定数据包D为在第一包群之后的第二包群中的第一个数据包,此时,将接收到数据包D的第二时间与接收到数据包A的第一时间的差值,即接收第一包群与第二包群之间的时间差作为该TCP链接的本次RTT值,从而一定程度上提高RTT测量的准确度。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1