1、TCP一般拥有两套独立机制来完成重传,一是基于时间,即超时重传,而是基于确认信息的构成,即快速重传。
2、RTT(Round Trip Time) 往返时延,数据包从发出到收到对应ACK的时间,每一条连接都有独立的RTT。RTO(Retransmission Time Out)重传超时,即超时时间。RTT和RTO都是动态变化的。
3、超时重传的时间间隔是不一样的,一般采用的是二进制指数退避策略,比如第一次间隔3s,第二次6s,然后12s、24s ...
4、计算RTO的经典方法
最初的TCP规范采用如下公式计算得到平滑的RTT估计值(SRTT):
SRTT <-- α(SRTT) + (1-α)RTT
α称为平滑因子,推荐值为0.8~0.9,这种估算方法为指数加权移动平均或低通滤波器。RTO计算公式如下
RTO = min(ubound, max(lbound, (SRTT)β))
β为时延离散因子,推荐值为1.3~2.0,ubound为RTO的上边界,lbound为下边界。
这种方法的一个明显的确定是在RTT变化较大的网络中,RTO的反应较慢。
5、计算RTO的标准方法
标准方法相对经典方法稍复杂些,这里仅列出公式,知道当RTT变化时,偏差的增量越大,RTO增长越快,且一些计算因子都取2的N次方,方便计算机计算,提高效率。
srtt <--(1-g)srtt + g(RTT)