Summary
- When TCP retransmits the same sequence range, a later cumulative ACK may confirm delivery without revealing whether the original or retransmitted copy caused it; Karn's algorithm therefore excludes that event from ordinary RTT sampling.
- Exponential backoff remains in force until newly sent and acknowledged data can supply a clean measurement, while TCP timestamps provide the specified exception when they remove transmission-instance ambiguity.
Consider a sender that transmits one TCP segment and starts its retransmission timer. No acknowledgment arrives before the timer expires, so the sender transmits the same sequence range again. Then a cumulative ACK returns. For reliability, the event is useful: the receiver has accepted responsibility for the acknowledged bytes. For measurement, it is incomplete. The ACK does not say whether the first segment was merely delayed, whether the retransmission arrived first, or whether both copies arrived and one reply covered them.
Starting a stopwatch at the first transmission produces one apparent round trip. Starting it at the retransmission produces another. The wire event supplies no ordinary identifier that selects between them. If the sender feeds either guess into its smoothed round-trip estimate, a recovery action can corrupt the clock that decides the next recovery action.
RFC 793 described the essential loop in 1981. Data carrying sequence numbers enter a retransmission queue and start a timer. An acknowledgment removes covered data; expiry sends the earliest unacknowledged segment again. Its illustrative timeout procedure measured elapsed time from sending a numbered octet until an acknowledgment covering it arrived, then used that value to update a smoothed RTT and derive an RTO.
That description made the estimator adaptive, but it left a measurement problem at the moment reliability duplicated a transmission. The same cumulative acknowledgment number can cover the same bytes regardless of which copy reached the receiver. A protocol signal can therefore be decisive for one state transition and still be inadmissible for another. The ACK closes the delivery obligation for those bytes, but it does not necessarily contain enough provenance to update the latency model.
By RFC 1122 in 1989, the repair had become a host requirement. Section 4.2.3.1 explicitly says a host TCP “MUST implement” both Karn's algorithm and Jacobson's algorithm for retransmission-timeout calculation, and that the implementation “MUST include” exponential backoff; the first sentence states those two named requirements without a SHOULD qualifier. The document kept their jobs distinct. Jacobson's calculation incorporated measured RTT variance into the estimator. Karn's selection rule kept ambiguous measurements from entering that estimator in the first place. Better arithmetic could not rescue an observation whose causal start time was unknown. RFC 6298's later statement that it upgrades RTO-algorithm support from SHOULD to MUST describes the general standard algorithm; it does not turn those two explicit RFC 1122 sentences into recommendations.
The same section required exponential backoff for successive RTO values for the same segment. This companion rule matters because rejecting a sample must not leave a sender aggressively repeating the old timeout. After expiry, the active RTO grows. The sender becomes more conservative while the path provides no clean evidence that would justify a lower estimate.
RFC 6298 later stated the rule with a sharp boundary. TCP must use Karn's algorithm, and RTT samples must not be taken from retransmitted segments because it is ambiguous whether the reply belongs to the first packet instance or a later one. This is not a preference for fewer measurements. It is an admissibility test tied to the history of a particular sequence range.
The exclusion is also narrower than the slogan “ignore ACKs after retransmission.” The acknowledgment still advances cumulative delivery state and manages the retransmission queue. Karn's rule says that this event cannot ordinarily be used as an RTT sample for the retransmitted data. New data can later be sent and acknowledged without the same ambiguity. RFC 6298 notes that such a clean measurement can run the estimator again and may collapse an RTO that had grown through backoff.
That sequence explains why backoff and sampling are coupled without being the same mechanism. When the timer expires, RFC 6298 calls for retransmitting the earliest unacknowledged segment, doubling the RTO, and restarting the timer with the backed-off value; an implementation may apply the optional maximum permitted by section 2.5. Karn's rule prevents the ambiguous reply from immediately pulling the estimate toward a guessed delay. Only a valid later sample can supply the evidence for recalculation.
After repeated backoff, an implementation may even clear its stored SRTT and RTTVAR and initialize them again from the next valid measurement.
The specification names one important exception. If the TCP timestamp option is used, timestamp information can remove the ambiguity about which instance triggered the acknowledgment. A retransmitted segment may then yield a safe RTT sample. The exception proves the logic of the rule: retransmission itself is not morally disqualified. What matters is whether the observation carries enough identity to bind the reply to a transmission event.
Karn's algorithm is not a loss detector. The timeout, duplicate-ACK logic or other recovery machinery decides that retransmission should occur. It is not congestion control: a timeout may also reduce the sender's congestion window, but Karn does not set that sending authority. It is not selective acknowledgment: SACK can report byte ranges at the receiver without necessarily identifying which copy supplied an RTT sample. And it is not delayed ACK policy, which governs when a receiver sends acknowledgments rather than how the sender classifies their measurement value.
The history is therefore a lesson in separating meanings inside one signal. An ACK can prove progress in the byte stream, retire data from a retransmission queue, restart or stop a timer, and yet remain unsuitable for estimating the path's round-trip time. Treating all those meanings as interchangeable would make TCP's own recovery behavior poison its future decisions.
Sources
Member Briefing
Deeper Profile Context
Sign in with the right membership level to unlock the full briefing and source notes.
Only for Strategic Circle
Strategic Circle
Open to all readers. Unlock profile briefings after joining and signing in.
Join Strategic CircleOnly for Leadership Alliance
Leadership Alliance
For qualified IP-asset owners and management; sign in to unlock alliance briefings.
Join Leadership Alliance
