Round-Trip Time Estimation and RTO Timeout Selection

Four variables are used to estimate the round-trip time and set the retransmission timer: rtt_, srtt_, rttvar_, tcpTick_, and backoff_. TCP initializes rttvar to $3/tcpTick\_$ and backoff to 1. When any future retransmission timer is set, it's timeout is set to the current time plus $\max(bt(a+4v+1), 64)$ seconds, where $b$ is the current backoff value, $t$ is the value of tcpTick, $a$ is the value of srtt, and $v$ is the value of rttvar.

Round-trip time samples arrive with new ACKs. The RTT sample is computed as the difference between the current time and a ``time echo'' field in the ACK packet. When the first sample is taken, its value is used as the initial value for srtt_. Half the first sample is used as the initial value for rttvar_. For subsequent samples, the values are updated as follows:

\begin{displaymath}srtt = \frac{7}{8} \times srtt + \frac{1}{8} \times sample \end{displaymath}

\begin{displaymath}rttvar = \frac{3}{4} \times rttvar + \frac{1}{4} \times \vert sample-srtt\vert \end{displaymath}

Tom Henderson 2011-11-05