rfc-3042

Enhancing TCP's Loss Recovery Using Limited Transmit

M. Allman, H. Balakrishnan, S. Floyd
date2001-01 streamIETF areawit wgtsvwg statusPROPOSED STANDARD pages9 canonicalhttps://www.rfc-editor.org/rfc/rfc3042 doi10.17487/RFC3042
This document proposes a new Transmission Control Protocol (TCP) mechanism that can be used to more effectively recover lost segments when a connection's congestion window is small, or when a large number of segments are lost in a single transmission window. [STANDARDS-TRACK]

Extracted elements (15)

design-rationale §1

Empirical data from a busy web server showed 56% of retransmissions were RTO-based and only 4% could have been avoided with SACK alone. The technique in this document could have avoided approximately 25% of the RTO-based retransmissions in that dataset, motivating its adoption.

tcp, congestion, measurement

design-rationale §2

Limited Transmit follows the 'conservation of packets' principle: each of the first two duplicate ACKs indicates a segment has left the network, so transmitting new segments does not deviate from TCP's congestion control principles and the sender has no reason to assume the current congestion state is inaccurate.

tcp, congestion

design-rationale §1

Limited Transmit is designed to enable Fast Retransmit (which requires three duplicate ACKs) in situations where the congestion window is too small to generate three duplicate ACKs naturally. With cwnd of three segments and one drop, only two duplicate ACKs arrive, forcing an RTO without this mechanism.

tcp, congestion

design-rationale §2

Sending new data (rather than retransmitting old data) on the first two duplicate ACKs is more robust to packet reordering, since retransmitting old packets on early duplicate ACKs could cause spurious retransmissions when the original packet was merely reordered.

tcp, congestion

design-rationale §2

Without Limited Transmit, when an ACK for new data arrives following packet reordering, a burst of segments is sent. Limited Transmit clocks data out via incoming ACKs, reducing burstiness in the presence of reordering.

tcp, congestion

interoperability-note §3

ECN may independently benefit connections with small congestion window sizes by signaling congestion without dropping segments, potentially reducing the need for Fast Retransmits and Retransmission Timeouts. ECN and Limited Transmit address similar failure modes.

tcp, congestion, ecn

interoperability-note §2

Limited Transmit can be used both in conjunction with and in the absence of the TCP selective acknowledgment (SACK) mechanism, making it applicable to all TCP connections.

tcp

interoperability-note §3

The Rate-Halving congestion control algorithm uses a related form of limited transmit, transmitting a data segment on every second duplicate ACK. Unlike Limited Transmit, Rate-Halving decouples the decision of what to send from when to send.

tcp, congestion

normative-requirement §2 MUST NOT

The congestion window (cwnd) MUST NOT be changed when new segments are transmitted under the Limited Transmit algorithm.

tcp, congestion

normative-requirement §2 SHOULD

When a TCP sender has previously unsent data queued for transmission, it SHOULD use the Limited Transmit algorithm and transmit new data upon the arrival of the first two consecutive duplicate ACKs, provided the receiver's advertised window allows it and outstanding data would remain ≤ cwnd + 2 segments.

tcp, congestion

normative-requirement §2 MUST NOT

When using SACK, the data sender MUST NOT send new segments in response to duplicate ACKs that contain no new SACK information, to prevent a misbehaving receiver from triggering inappropriate data transmission.

tcp, congestion, security

protocol-element §2

The Limited Transmit algorithm: upon receiving the first two consecutive duplicate ACKs, the sender transmits one new previously unsent data segment per duplicate ACK, subject to the receiver's advertised window and the constraint that outstanding data does not exceed cwnd + 2 segments.

tcp, congestion

security-consideration §4

False duplicate ACKs — either from network duplication or misbehaving receivers — could subvert end-to-end congestion control by triggering additional transmissions under Limited Transmit. However, the sender is constrained to exceed cwnd by less than the duplicate ACK threshold (three segments), limiting the damage.

tcp, security, congestion

security-consideration §4

For non-SACK connections, a sender could track the number of packets transmitted and allow at most one acknowledgment per packet for triggering new transmissions, but this requires additional state and complexity and is not considered necessary given the limited damage potential.

tcp, security

security-consideration §4

When SACK is in use, the TCP sender has strong protection against false duplicate ACKs because SACK duplicate ACKs report sequence numbers of newly received data, allowing the sender to verify the ACK acknowledges data it actually sent before transmitting new segments.

tcp, security