rfc9937v4.txt   rfc9937.txt 
skipping to change at line 353 skipping to change at line 353
could, in some cases, be worse than [RFC6675] recovery, which simply could, in some cases, be worse than [RFC6675] recovery, which simply
sets cwnd to ssthresh at the start of recovery. This behavior of sets cwnd to ssthresh at the start of recovery. This behavior of
setting cwnd to ssthresh at the end of recovery has been implemented setting cwnd to ssthresh at the end of recovery has been implemented
since the first widely deployed TCP PRR implementation in 2011 since the first widely deployed TCP PRR implementation in 2011
[First_TCP_PRR] and is similar to [RFC6675], which specifies setting [First_TCP_PRR] and is similar to [RFC6675], which specifies setting
cwnd to ssthresh at the start of recovery. cwnd to ssthresh at the start of recovery.
Since [RFC6937] was written, PRR has also been adapted to perform Since [RFC6937] was written, PRR has also been adapted to perform
multiplicative window reduction for non-loss-based congestion control multiplicative window reduction for non-loss-based congestion control
algorithms, such as for Explicit Congestion Notification (ECN) as algorithms, such as for Explicit Congestion Notification (ECN) as
described in [RFC3168]. This can be done by using some parts of the specified in [RFC3168]. This can be done by using some parts of the
loss recovery state machine (in particular, the RecoveryPoint from loss recovery state machine (in particular, the RecoveryPoint from
[RFC6675]) to invoke the PRR ACK processing for exactly one round [RFC6675]) to invoke the PRR ACK processing for exactly one round
trip worth of ACKs. However, note that using PRR for cwnd reductions trip worth of ACKs. However, there can be interactions between using
for the [RFC3168] variant of ECN has been observed, with some PRR and approaches to Active Queue Management (AQM) and ECN; guidance
approaches to Active Queue Management (AQM), to cause an excess cwnd on the development and assessment of congestion control mechanisms is
reduction during ECN-triggered congestion episodes, as noted in provided in [RFC9743].
[VCC].
5. Relationships to Other Standards 5. Relationships to Other Standards
PRR MAY be used in conjunction with any congestion control algorithm PRR MAY be used in conjunction with any congestion control algorithm
that intends to make a multiplicative decrease in its sending rate that intends to make a multiplicative decrease in its sending rate
over approximately the time scale of one round-trip time, as long as over approximately the time scale of one round-trip time, as long as
the current volume of in-flight data is limited by a congestion the current volume of in-flight data is limited by a congestion
window (cwnd) and the target volume of in-flight data during that window (cwnd) and the target volume of in-flight data during that
reduction is a fixed value given by ssthresh. In particular, PRR is reduction is a fixed value given by ssthresh. In particular, PRR is
applicable to both Reno [RFC5681] and CUBIC [RFC9438] congestion applicable to both Reno [RFC5681] and CUBIC [RFC9438] congestion
skipping to change at line 802 skipping to change at line 801
require any changes at data receivers or in networks. This allows require any changes at data receivers or in networks. This allows
data senders using PRR to work correctly with any existing data data senders using PRR to work correctly with any existing data
receivers or networks. PRR does not require any changes to or receivers or networks. PRR does not require any changes to or
assistance from routers, switches, or other devices in the network. assistance from routers, switches, or other devices in the network.
11.2. Fairness 11.2. Fairness
PRR is designed to maintain the fairness properties of the congestion PRR is designed to maintain the fairness properties of the congestion
control algorithm with which it is deployed. PRR only operates control algorithm with which it is deployed. PRR only operates
during a congestion control response episode, such as fast recovery during a congestion control response episode, such as fast recovery
or response to the [RFC3168] variant of ECN, and only makes short- or when there is a step reduction in the cwnd from the TCP ECN
term, per-acknowledgment decisions to smoothly regulate the volume of reaction defined in [RFC3168], and only makes short-term, per-
in-flight data during an episode such that at the end of the episode acknowledgment decisions to smoothly regulate the volume of in-flight
it will be as close as possible to the slow start threshold data during an episode such that at the end of the episode it will be
(ssthresh), as determined by the congestion control algorithm. PRR as close as possible to the slow start threshold (ssthresh), as
does not modify the congestion control cwnd increase or decrease determined by the congestion control algorithm. PRR does not modify
mechanisms outside of congestion control response episodes. the congestion control cwnd increase or decrease mechanisms outside
of congestion control response episodes.
11.3. Protecting the Network Against Excessive Queuing and Packet Loss 11.3. Protecting the Network Against Excessive Queuing and Packet Loss
Over long time scales, PRR is designed to maintain the queuing and Over long time scales, PRR is designed to maintain the queuing and
packet loss properties of the congestion control algorithm with which packet loss properties of the congestion control algorithm with which
it is deployed. As noted above, PRR only operates during a it is deployed. As noted above, PRR only operates during a
congestion control response episode, such as fast recovery or congestion control response episode, such as fast recovery or
response to ECN, and only makes short-term, per-acknowledgment response to ECN, and only makes short-term, per-acknowledgment
decisions to smoothly regulate the volume of in-flight data during an decisions to smoothly regulate the volume of in-flight data during an
episode such that at the end of the episode it will be as close as episode such that at the end of the episode it will be as close as
skipping to change at line 982 skipping to change at line 982
[RFC3517] Blanton, E., Allman, M., Fall, K., and L. Wang, "A [RFC3517] Blanton, E., Allman, M., Fall, K., and L. Wang, "A
Conservative Selective Acknowledgment (SACK)-based Loss Conservative Selective Acknowledgment (SACK)-based Loss
Recovery Algorithm for TCP", RFC 3517, Recovery Algorithm for TCP", RFC 3517,
DOI 10.17487/RFC3517, April 2003, DOI 10.17487/RFC3517, April 2003,
<https://www.rfc-editor.org/info/rfc3517>. <https://www.rfc-editor.org/info/rfc3517>.
[RFC6937] Mathis, M., Dukkipati, N., and Y. Cheng, "Proportional [RFC6937] Mathis, M., Dukkipati, N., and Y. Cheng, "Proportional
Rate Reduction for TCP", RFC 6937, DOI 10.17487/RFC6937, Rate Reduction for TCP", RFC 6937, DOI 10.17487/RFC6937,
May 2013, <https://www.rfc-editor.org/info/rfc6937>. May 2013, <https://www.rfc-editor.org/info/rfc6937>.
[RFC9743] Duke, M., Ed. and G. Fairhurst, Ed., "Specifying New
Congestion Control Algorithms", BCP 133, RFC 9743,
DOI 10.17487/RFC9743, March 2025,
<https://www.rfc-editor.org/info/rfc9743>.
[Savage99] Savage, S., Cardwell, N., Wetherall, D., and T. Anderson, [Savage99] Savage, S., Cardwell, N., Wetherall, D., and T. Anderson,
"TCP Congestion Control with a Misbehaving Receiver", ACM "TCP Congestion Control with a Misbehaving Receiver", ACM
SIGCOMM Computer Communication Review, vol. 29, no. 5, pp. SIGCOMM Computer Communication Review, vol. 29, no. 5, pp.
71-78, DOI 10.1145/505696.505704, October 1999, 71-78, DOI 10.1145/505696.505704, October 1999,
<https://doi.org/10.1145/505696.505704>. <https://doi.org/10.1145/505696.505704>.
[TCP-RH] Mathis, M., Mahdavi, J., and J. Semke, "The Rate-Halving [TCP-RH] Mathis, M., Mahdavi, J., and J. Semke, "The Rate-Halving
Algorithm for TCP Congestion Control", Work in Progress, Algorithm for TCP Congestion Control", Work in Progress,
Internet-Draft, draft-mathis-tcp-ratehalving-00, 30 August Internet-Draft, draft-mathis-tcp-ratehalving-00, 30 August
1999, <https://datatracker.ietf.org/doc/html/draft-mathis- 1999, <https://datatracker.ietf.org/doc/html/draft-mathis-
tcp-ratehalving-00>. tcp-ratehalving-00>.
[VCC] Cronkite-Ratcliff, B., Bergman, A., Vargaftik, S., Ravi,
M., McKeown, N., Abraham, I., and I. Keslassy,
"Virtualized Congestion Control (Extended Version)",
SIGCOMM '16: Proceedings of the 2016 ACM SIGCOMM
Conference pp. 230-243, DOI 10.1145/2934872.2934889,
August 2016, <http://www.ee.technion.ac.il/~isaac/p/
sigcomm16_vcc_extended.pdf>.
Appendix A. Strong Packet Conservation Bound Appendix A. Strong Packet Conservation Bound
PRR-CRB is based on a conservative, philosophically pure, and PRR-CRB is based on a conservative, philosophically pure, and
aesthetically appealing Strong Packet Conservation Bound, described aesthetically appealing Strong Packet Conservation Bound, described
here. Although inspired by the packet conservation principle here. Although inspired by the packet conservation principle
[Jacobson88], it differs in how it treats segments that are missing [Jacobson88], it differs in how it treats segments that are missing
and presumed lost. Under all conditions and sequences of events and presumed lost. Under all conditions and sequences of events
during recovery, PRR-CRB strictly bounds the data transmitted to be during recovery, PRR-CRB strictly bounds the data transmitted to be
equal to or less than the amount of data delivered to the receiver. equal to or less than the amount of data delivered to the receiver.
Note that the effects of presumed losses are included in the inflight Note that the effects of presumed losses are included in the inflight
 End of changes. 5 change blocks. 
21 lines changed or deleted 18 lines changed or added

This html diff was produced by rfcdiff 1.48.