TCP重传机制Timeout特点:
• 设长了,重发就慢,效率和性能差;
• 设短了,重发就快,可能导致没有丢就重发,增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。
TCP协议引入2个概念:
RTT——Round Trip Time(一个数据包从发出去到回来的时间)。
RTO—Retransmission TimeOut(重传超时时间)。
1 经典算法
RFC793 经典算法:
• 采样RTT,记下最近好几次的RTT值。
• 做平滑计算SRTT(α 取值在0.8 到 0.9之间,α -加权移动平均),公式为:
SRTT = ( α * SRTT ) + ((1- α) * RTT)
• 计算RTO(β 值一般在1.3到2.0之间)。公式为:
RTO = min [ UBOUND, max [ LBOUND, (β * SRTT) ] ]
说明:
• UBOUND是最大的timeout时间,上限值
• LBOUND是最小的timeout时间,下限值
优点:
• 算法简单
• RTT连续采样(包括正常和重传),采样简单
缺点:
• RTT采样方案,不能反应真实网络,即正常和重传区分不开
• 参数α是为了平滑SRTT。小的α值可以感受到 RTT 的微小变化,但可能会容易受到暂时波动的影响。大的α值更稳定,但可能不够快,无法适应真正的变化。
2 Karn / Partridge 算法
经典算法问