rfc-9959

Careful Resume: Convergence of Congestion Control from Retained State

N. Kuhn, E. Stephan, G. Fairhurst, R. Secchi, C. Huitema
date2026-05 streamIETF areawit wgtsvwg statusPROPOSED STANDARD pages29 canonicalhttps://www.rfc-editor.org/rfc/rfc9959 doi10.17487/RFC9959
This document specifies a cautious method for Internet transports that enables fast startup of Congestion Control (CC) for a wide range of connections, known as "Careful Resume". It reuses a set of computed CC parameters that are based on previously observed path characteristics between the same pair of transport endpoints. These parameters are saved, allowing them to be later used to modify the CC behaviour of a subsequent connection. This document describes the assumptions and defines the requirements for how a sender utilises these parameters to provide opportunities for a connection to more rapidly get up to speed and utilise available capacity. It discusses how the use of this method impacts the capacity at a shared network bottleneck and the safe response that is needed after any indication that the new rate is inappropriate.

Extracted elements (28)

design-rationale §4.2.1

A current RTT more than ten times saved_rtt is treated as indicating a path change. The factor of ten accommodates both buffering-induced latency increases and RTT sample variation without prematurely aborting Careful Resume on transient spikes.

congestion

design-rationale §4.3

jump_cwnd is limited to half of saved_cwnd to avoid starving flows that started or increased their capacity since the last observation. A direct reuse of saved_cwnd at full value would risk a disproportionate share of the bottleneck, displacing existing flows.

congestion

design-rationale §4.2

Only one connection at a time may use a specific set of saved CC parameters. Allowing multiple simultaneous connections to each jump by saved_cwnd/2 would create an excessive aggregate load at the bottleneck. Implementations must coordinate (e.g., via hash table or distributed lock) when load balancing may route concurrent connections from the same client to different server processes.

congestion

design-rationale §4.5

Proportional Rate Reduction (PRR) is explicitly not used in the Safe Retreat Phase because PRR assumes it is safe to reduce rate gradually during congestion avoidance. When Careful Resume produces significant overshoot, gradual reduction would maintain an excessively high rate and further starve competing flows.

congestion

design-rationale §3.5

The default Beta value of 0.5 was chosen to reduce the probability of inducing a second round of congestion after Safe Retreat. CUBIC defines Beta_cubic=0.7, which may be used instead when running CUBIC.

congestion

design-rationale §4.3.1

The Lifetime for saved CC parameters is intentionally configurable rather than fixed. For dynamic or shared paths a short Lifetime (minutes) is recommended to reduce risk; for stable, lightly shared paths a longer Lifetime (hours) is justified because Careful Resume's overshoot mitigations reduce the safety risk compared to RFC 7661's fixed 5-minute NVP.

congestion

design-rationale §4.2

The Reconnaissance Phase uses the standard IW (no more than recommended maximum initial window per RFC 6928 / RFC 9002) for the first RTT rather than jumping immediately to saved_cwnd. This ensures any path with persistent congestion is detected before the large CWND jump, and establishes the current minimum RTT needed to validate the saved parameters.

congestion, tcp, quic

design-rationale §4.2.1

The RTT lower bound for path confirmation is saved_rtt/2, because jump_cwnd is set to saved_cwnd/2 and the resulting sending rate should not exceed the previously observed rate. A factor of two arises directly from the relationship between CWND, RTT, and throughput.

congestion

design-rationale §4.3.2

Unvalidated packets are paced using the current RTT rather than the saved_rtt. This avoids a smaller saved_rtt inflating the sending rate beyond what was previously observed, providing a safety margin proportional to actual path conditions.

congestion

interoperability-note §4.7

A TCP sender is limited by the receiver-advertised window (rwnd). Unless the receiver configures a sufficiently large rwnd, it will constrain the rate of increase and reduce the benefit of Careful Resume, since the CWND increase enabled by the method may not be usable.

tcp, congestion

interoperability-note §C.1

For BBR, Careful Resume is restricted to operation during BBR's Startup state only. The 'carefully-resuming' flag gates unvalidated packet transmission and triggers entry into BBR's Drain state (Safe Retreat) on congestion. The flag is cleared two rounds after being set to allow measured delivery rates to reflect actual path capacity.

congestion

interoperability-note §5

Network mechanisms such as ECMP, anycast routing, and NAT can silently change the forwarding path between connections. Servers using anycast addresses cannot guarantee that the same physical path is used across connections; operators must ensure alternative paths have equivalent capacity or avoid using Careful Resume in such deployments.

ip, congestion, nat

interoperability-note §4.7

QUIC includes flow control and anti-amplification mechanisms that can constrain sending rate independently of CWND. A QUIC receiver may need to issue proactive MAX_DATA frames to increase flow control limits before or during Careful Resume to realise the expected throughput benefit.

quic, congestion

normative-requirement §3.1 MUST NOT

A sender MUST NOT retain more than one set of CC parameters for a Remote Endpoint, though the set SHOULD be updated or replaced after a later observation of the same path.

congestion

normative-requirement §3.3 MUST

All packets sent in the Unvalidated Phase MUST use pacing based on the current RTT. The recommended inter-packet transmission time is ITT = (current_RTT × MPS) / jump_cwnd.

congestion, tcp, quic

normative-requirement §3.2 MUST

If congestion (packet loss or ECN-CE) is detected in the Reconnaissance Phase, the sender MUST continue using normal CC to react to the detected congestion and MUST NOT proceed with Careful Resume.

congestion, ecn

normative-requirement §3.2 MUST

In the Reconnaissance Phase, the sender MUST stop using Careful Resume and return to normal CC if: another connection is already using the saved_cwnd; the Remote Endpoint does not match any saved_remote_endpoint; the Lifetime of saved CC parameters is exceeded; or the minimum RTT measured in the Reconnaissance Phase is less than or equal to saved_rtt/2.

congestion, tcp, quic

normative-requirement §3.3 MUST

In the Unvalidated Phase exit check, if flight_size is less than IW or less than or equal to PipeSize, CWND is reset to PipeSize and normal CC resumes; otherwise CWND MUST be set to flight_size before entering the Validating Phase.

congestion

normative-requirement §3.3 MUST

In the Unvalidated Phase, if a detected path change or congestion (packet loss or ECN-CE) occurs, the Safe Retreat Phase MUST be entered immediately.

congestion, ecn

normative-requirement §3.5 MUST

On entry to the Safe Retreat Phase, the CWND MUST be reduced to no more than PipeSize/2 to avoid persistent starvation of competing flows. The CWND MUST NOT be increased while in the Safe Retreat Phase.

congestion

normative-requirement §3.3 MUST

On entry to the Unvalidated Phase, the jump_cwnd MUST be no more than half of the saved_cwnd: jump_cwnd ≤ min(max_jump, saved_cwnd/2). CWND is set to jump_cwnd.

congestion, tcp, quic

normative-requirement §3.5 MUST

On leaving the Safe Retreat Phase, ssthresh MUST be set to no larger than the most recently measured PipeSize multiplied by Beta (default Beta=0.5). Saved CC parameters are deleted on Safe Retreat entry to prevent reuse.

congestion

normative-requirement §C.3 MUST

When using BBR, delivery rates measured in the Drain state MUST be discarded if the 'carefully-resuming' flag is True, because packets sent during the attempt may still be queued at the bottleneck and could have displaced competing flows' packets.

congestion

protocol-element §2.4

jump_cwnd is the tentative CWND used in the Unvalidated Phase, set to min(max_jump, saved_cwnd/2). PipeSize tracks the validated portion of capacity, initialised to flight_size on entry to the Unvalidated Phase and incremented per acknowledged byte. Beta is a scaling factor (0.5–1, default 0.5) applied to PipeSize when setting ssthresh on Safe Retreat exit.

congestion, tcp, quic

protocol-element §3.1

saved_cwnd records the utilised capacity (bytes sent during one RTT, or volume acknowledged in one RTT) observed on a previous connection. saved_rtt records the minimum RTT at the time of observation. Together with a Lifetime timestamp and a saved_remote_endpoint, these form the complete set of saved CC parameters.

congestion, tcp, quic

protocol-element §2.2

The Remote Endpoint identifies the observed network path and consists of an identifier for the sending interface (e.g., globally assigned address/prefix) and an identifier for the destination (e.g., unicast or anycast IP address). It may also include a DSCP value. Saved CC parameters are only reused when the Remote Endpoint has not changed.

congestion, ip

security-consideration §7

The security considerations for Careful Resume are the same as for other sender-based congestion control methods. These methods rely on the receiver appropriately acknowledging receipt of data; an on-path or off-path attacker's ability to influence CC depends on the security properties of the underlying transport protocol.

security, congestion

state-machine §3

Careful Resume defines five phases: Observing (normal CC, saving parameters), Reconnaissance (confirm path using IW), Unvalidated (tentative jump to saved_cwnd/2 with pacing), Validating (check unvalidated packets for congestion), and Safe Retreat (drain path, reduce CWND to PipeSize/2 on detected congestion). Transitions back to normal CC can occur from any phase.

congestion, tcp, quic