TCP往返传输时间(RTT)的估计
1) TCP传输往返时间是指发送端从发送TCP包开始到接收到它的立即响应所耗费的传输时间.
当接收端和发送端同时支持TCP时戳选项时,
发送端记录在TCP包头选项内的时戳可以被接收端随响应反射回来,
发送端就可以利用响应报文的反射时戳计算出某个TCP包的即时往返传输时间.
当接收端应答不反射时戳时,
发送端则利用重发队列中非重传响应所确认的最先数据片段的时戳来取样RTT.
2) 发送端每接收到一次新的响应, 产生出一个新的RTT样本. 为了去除RTT样本的随机抖动,
系统利用加权平均算法对样本进行平滑, 为了避免内核浮点运算,
RTT的平滑值(SRTT)是实际RTT均值的8倍, 在迭代过程中, SRTT收敛于8倍的RTT.
3) 在平滑RTT样本值的同时, 发送端还跟踪样本的抖动性. RTT的抖动用中心差(tp->mdev)来衡量,
它是RTT与RTT均值偏差绝对值的加权平均, 它的值越大, 说明RTT抖动得越利害.
tp->mdev_max变量用来跟踪MDEV的最大值, 它再经过平滑生成tp->rttvar,
描述RTT抖动的最大范围. 发送端的重发超时被设为RTT均值和tp->rttvar的和.
1) TCP传输往返时间是指发送端从发送TCP包开始到接收到它的立即响应所耗费的传输时间.
当接收端和发送端同时支持TCP时戳选项时,
发送端记录在TCP包头选项内的时戳可以被接收端随响应反射回来,
发送端就可以利用响应报文的反射时戳计算出某个TCP包的即时往返传输时间.
当接收端应答不反射时戳时,
发送端则利用重发队列中非重传响应所确认的最先数据片段的时戳来取样RTT.
2) 发送端每接收到一次新的响应, 产生出一个新的RTT样本. 为了去除RTT样本的随机抖动,
系统利用加权平均算法对样本进行平滑, 为了避免内核浮点运算,
RTT的平滑值(SRTT)是实际RTT均值的8倍, 在迭代过程中, SRTT收敛于8倍的RTT.
3) 在平滑RTT样本值的同时, 发送端还跟踪样本的抖动性. RTT的抖动用中心差(tp->mdev)来衡量,
它是RTT与RTT均值偏差绝对值的加权平均, 它的值越大, 说明RTT抖动得越利害.
tp->mdev_max变量用来跟踪MDEV的最大值, 它再经过平滑生成tp->rttvar,
描述RTT抖动的最大范围. 发送端的重发超时被设为RTT均值和tp->rttvar的和.