A.2 Congestion Control: Adjusting for Time-Out

This section describes how the calculation of ATO is modified in the case where a time-out does occur.  When a time-out occurs, the time-out value should be adjusted rapidly upward.  Although the GRE packets are not retransmitted when a time-out occurs, the time-out should be adjusted up toward a maximum limit.  To compensate for shifting internetwork time delays, a strategy must be employed to increase the time-out when it expires.  A simple formula called Karn's Algorithm is used in TCP implementations and may be used in implementing the backoff timers for the PNS or the PAC.  Notice that in addition to increasing the time-out, we are also shrinking the size of the window as described in the next section.

Karn's timer backoff algorithm, as used in TCP, is:

NewTIMEOUT = delta * TIMEOUT

Adapted to our time-out calculations, for an interval in which a time-out occurs, the new ATO is calculated as:

RTT[n] = delta * RTT[n-1]

DEV[n] = DEV[n-1]

ATO[n] = MIN (RTT[n] + (chi * DEV[n]), MaxTimeOut)

In this modified calculation of ATO, only the two values that contribute to ATO and that are stored for the next iteration are calculated. RTT is scaled by chi, and DEV is unmodified. DIFF is not carried forward and is not used in this scenario. A value of 2 for Delta, the time-out gain factor for RTT, is suggested.