一 RTO简介
提到TCP的传输,RTO(retransmission
timeout)是重要内容之一。在TCP的传输中,使用了一个timer来决定数据是否有丢弃,是否要进行重传。其中有几个名词:
RTT:round-trip
time,说的简单点就是发送一个数据开始,到收到数据的ack,这个时间就是一个RTT。
RTO:就是在发送一个数据出去之后,经过一个RTO的时间,如果未收到这个数据的ACK,那么就判定此数据传输超时,传输有问题了。
SRTT:
smoothed round-trip time
RTTVAR:round-trip
time variation
二 RTO算法
对于RTO的计算,如果不知道这个具体算法的话,我们能想到的是可以根据各个RTT来进行加权平均,这样通过计算网络的平均传输时延来得到一个RTO来判别是否有丢包。
下面主要分析一下RFC6298对于RFC算法的介绍:
在开始传输数据之前:
RTO
2)
当第一个RTT计算出来的时候,此值为R
SRTT
RTTVAR
RTO
3)
当后续的包到达的时候,计算所得的RTT为 R',之后的算法改为
RTTVAR
SRTT
其中,alpha
= 1/8, beta = 1/4
计算完成之后:
RTO<