diff options
Diffstat (limited to 'doc/rfc/rfc5690.txt')
-rw-r--r-- | doc/rfc/rfc5690.txt | 1851 |
1 files changed, 1851 insertions, 0 deletions
diff --git a/doc/rfc/rfc5690.txt b/doc/rfc/rfc5690.txt new file mode 100644 index 0000000..6fb40cb --- /dev/null +++ b/doc/rfc/rfc5690.txt @@ -0,0 +1,1851 @@ + + + + + + +Independent Submission S. Floyd +Request for Comments: 5690 ICIR +Category: Informational A. Arcia +ISSN: 2070-1721 D. Ros + TELECOM Bretagne + J. Iyengar + Franklin & Marshall College + February 2010 + + + Adding Acknowledgement Congestion Control to TCP + +Abstract + + This document describes a possible congestion control mechanism for + acknowledgement (ACKs) traffic in TCP. The document specifies an + end-to-end acknowledgement congestion control mechanism for TCP that + uses participation from both TCP hosts: the TCP data sender and the + TCP data receiver. The TCP data sender detects lost or Explicit + Congestion Notification (ECN)-marked ACK packets, and tells the TCP + data receiver the ACK Ratio R to use to respond to the congestion on + the reverse path from the data receiver to the data sender. The TCP + data receiver sends roughly one ACK packet for every R data packets + received. This mechanism is based on the acknowledgement congestion + control in the Datagram Congestion Control Protocol's (DCCP's) + Congestion Control Identifier (CCID) 2. This acknowledgement + congestion control mechanism is being specified for further + evaluation by the network community. + +Status of This Memo + + This document is not an Internet Standards Track specification; it is + published for informational purposes. + + This is a contribution to the RFC Series, independently of any other + RFC stream. The RFC Editor has chosen to publish this document at + its discretion and makes no statement about its value for + implementation or deployment. Documents approved for publication by + the RFC Editor are not a candidate for any level of Internet + Standard; see Section 2 of RFC 5741. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + http://www.rfc-editor.org/info/rfc5690. + + + + + + + +Floyd, et al. Informational [Page 1] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + +IESG Note + + The content of this RFC was at one time considered by the IETF, and + therefore it may resemble a current IETF work in progress or a + published IETF work. + +Copyright Notice + + Copyright (c) 2010 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. + +Table of Contents + + 1. Introduction ....................................................3 + 2. Conventions and Terminology .....................................4 + 3. Overview ........................................................4 + 4. Acknowledgement Congestion Control ..............................6 + 4.1. The ACK Congestion Control Permitted Option ................6 + 4.2. The TCP ACK Ratio Option ...................................7 + 4.3. The Receiver: Implementing the ACK Ratio ...................7 + 4.4. The Sender: Determining Lost or Marked ACK Packets .........8 + 4.4.1. The Sender: Detecting Lost ACK Packets + after a Congestion Event ...........................10 + 4.5. The Sender: Adjusting the ACK Ratio .......................10 + 4.5.1. Possible Addition: Decreasing the ACK Ratio + after a Congestion Window Decrease .................12 + 4.6. The Receiver: Sending ACKs for Out-of-Order Data + Segments ..................................................12 + 4.7. The Sender: Response to ACK Packets .......................13 + 4.8. Possible Addition: Receiver Bounds on the ACK Ratio .......15 + 5. Possible Complications .........................................15 + 5.1. Possible Complication: Delayed Acknowledgements ...........15 + 5.2. Possible Complication: Duplicate Acknowledgements .........15 + 5.3. Possible Complication: Two-Way Traffic ....................16 + 5.4. Possible Complication: Reordering of ACK Packets ..........16 + 5.5. Possible Complication: Abrupt Changes in the ACK Path .....17 + 5.6. Possible Complication: Corruption .........................17 + 5.7. Possible Complication: ACKs That Don't Contribute + to Congestion .............................................17 + 5.8. Possible Complication: TCP Implementations that + Skip ACK Packets ..........................................20 + + + +Floyd, et al. Informational [Page 2] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + 5.9. Possible Complication: Router or Middlebox-Based + ACK Mechanisms ............................................21 + 5.10. Possible Complication: Data-Limited Senders ..............21 + 5.11. Other Issues .............................................22 + 6. Evaluating ACK Congestion Control ..............................22 + 6.1. Contention in Wireless Links or in Non-Switched Ethernet ..22 + 6.2. Keep-Alive and Other Special ACK Packets ..................22 + 7. Measurements of ACK Traffic and Congestion .....................23 + 8. Acknowledgement Congestion Control in DCCP's CCID 2 ............23 + 9. Security Considerations ........................................24 + 10. IANA Considerations ...........................................25 + 11. Conclusions ...................................................26 + 12. Acknowledgements ..............................................26 + Appendix A. Related Work ..........................................27 + A.1. ECN-Only Mechanisms .......................................28 + A.2. Receiver-Only Mechanisms ..................................28 + A.3. Middlebox-Based Mechanisms ................................29 + Appendix B. Design Considerations .................................29 + B.1. The TCP ACK Ratio Option, or an AckNow Bit in + Data Packets? .............................................29 + Normative References ..............................................30 + Informative References ............................................30 + +1. Introduction + + This document describes a congestion control mechanism for + acknowledgements (ACKs) to TCP. This mechanism is based on the + acknowledgement congestion control in DCCP's CCID 2 ([RFC4340], + [RFC4341]), which is a successor to the TCP acknowledgement + congestion control mechanism proposed by Balakrishnan, et al. in + [BPK97]. + + In this document we use the terminology of senders and receivers, + with the sender sending data traffic and the receiver sending + acknowledgement traffic in response. In CCID 2's acknowledgement + congestion control, specified in Section 6.1 of [RFC4341], the + receiver uses an ACK Ratio R reported to it by the sender, sending + roughly one ACK packet for every R data packets received. The CCID 2 + sender keeps the acknowledgement rate roughly TCP-friendly by + monitoring the acknowledgement stream for lost and marked ACK packets + and modifying the ACK Ratio accordingly. For every round-trip time + (RTT) containing an ACK congestion event (that is, a lost or marked + ACK packet), the sender halves the acknowledgement rate by doubling + the ACK Ratio; for every RTT containing no ACK congestion event, the + sender additively increases the acknowledgement rate through gradual + decreases in the ACK Ratio. + + + + + +Floyd, et al. Informational [Page 3] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + The goal of this document is to explore a similar congestion control + mechanism for acknowledgement traffic for TCP. The assumption is + that in some environments with congestion on the reverse path, + reducing the sending rate for ACK traffic traversing the congested + path can help to reduce the congestion itself. For those + environments where the reverse path is congested but where TCP ACK + traffic does not appreciably contribute to that aggregate congestion, + the goal is for TCP's ACK congestion control to have a minimal + negative effect on the performance of the TCP connection. + + Adding acknowledgement congestion control as an option in TCP would + require the following: + + * An agreement from the TCP hosts on the use of ACK congestion + control. For the mechanism specified in this document, the TCP + hosts would use a new TCP option, the ACK Congestion Control + Permitted option. + + * A mechanism for the TCP sender to detect lost and ECN-marked pure + acknowledgement packets. + + * A mechanism for adjusting the ACK Ratio. The TCP sender would + adjust the ACK Ratio as specified in Section 6.1.2 of [RFC4341]. + + * A method for the TCP sender to inform the TCP receiver of a new + value for the ACK Ratio. For the mechanism specified in this + document, the TCP sender would use a new TCP option, the ACK Ratio + option. + +2. Conventions and Terminology + + MSS refers to the Maximum Segment Size. + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [RFC2119]. + +3. Overview + + This section gives an overview of acknowledgement congestion control + for TCP. + + + + + + + + + + +Floyd, et al. Informational [Page 4] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + --------------------------------------------------------------- + TCP Host A Router TCP Host B + (data sender) (data receiver) + ---------- ------ ---------- + <--- SYN with AckCC Permitted. + SYN/ACK with AckCC Permitted ---> + . . . + Data packets ---> + <--- one ACK packet + for every two data packets + . . . + Sender detects a lost ACK packet. + Data packet with an ACK Ratio option of 4 ---> + <--- one ACK packet + for at most every four data packets + . . . + Sender detects a period with no lost ACK packets. + Data packet with an ACK Ratio option of 3 ---> + <--- one ACK packet + for at most every three data packets + --------------------------------------------------------------- + + Figure 1: Acknowledgement Congestion Control, + Host B as the Connection Initiator, for a Connection without ECN + + Figure 1 gives an example of acknowledgement congestion control + (AckCC) with TCP Host B as the connection initiator. + + During connection initiation, TCP host B sends an ACK Congestion + Control Permitted option on its SYN or SYN/ACK packet. This allows + TCP host A (now called the sender) to send instructions to TCP host B + (now called the receiver) about the ACK Ratio to use in responding to + data packets. + + Also during connection initiation, TCP host A sends an ACK Congestion + Control Permitted option on its SYN or SYN/ACK packet. In + combination with TCP host B's sending of an ACK Congestion Control + Permitted option, and with the negotiation of ECN-Capability as + specified in [RFC3168], this would allow TCP host B to send its ACK + packets as ECN-Capable. + + The TCP receiver starts with an ACK Ratio of two, generally sending + one ACK packet for every two data packets received. + + + + + + + + +Floyd, et al. Informational [Page 5] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + The TCP sender detects a lost or ECN-marked ACK packet from the TCP + receiver and sends an ACK Ratio option of four to the receiver. The + TCP receiver changes to an ACK Ratio of four, sending one ACK packet + for at most four data packets. The TCP sender uses Appropriate Byte + Counting and rate-based pacing in responding to these ACK packets. + + The TCP sender detects a period with no lost ACK packets and sends an + ACK Ratio option of three to the TCP receiver. The TCP receiver + changes back to an ACK Ratio of three, sending one ACK packet for at + most three data packets. + +4. Acknowledgement Congestion Control + + The goal of the mechanism proposed in this document is to control + pure ACK traffic on the path from the TCP data receiver to the TCP + data sender. Note that the approach outlined here is an end-to-end + one (as is the approach followed by DCCP's CCID 2 [RFC4341]), but it + may also take advantage of explicit congestion information from the + network, conveyed by ECN [RFC3168], if available. The ECN + specification ([RFC3168], see Section 6.1.4) prohibits a TCP receiver + from setting the ECT(0) or ECT(1) codepoints in IP packets carrying + pure ACKs, but *only* as long as the receiver does *not* implement + any form of ACK congestion control. Unlike some of the related work + cited in the appendix, in this document we are proposing an end-to- + end ACK congestion control mechanism that controls congestion on the + reverse path (the path followed by the ACK traffic) by detecting and + responding to either marked or dropped ACK packets. + +4.1. The ACK Congestion Control Permitted Option + + The TCP end-points would negotiate the use of ACK congestion control + (AckCC) with a TCP option: the ACK Congestion Control Permitted + option. The option number would be allocated by IANA. + + The ACK Congestion Control Permitted option can only be sent on + packets that have the SYN bit set. If TCP end-point A receives an + ACK Congestion Control Permitted option from TCP end-point B, then + the TCP end-points may use ACK congestion control on the pure + acknowledgements sent from B to A. This means that TCP end-point A + may send ACK Ratio values to TCP end-point B, for TCP end-point B to + use on pure acknowledgement packets. Equivalently, if TCP end-point + A *does not* receive an ACK Congestion Control Permitted option from + TCP end-point B, then TCP end-point A knows not to waste its time + detecting lost ACK packets and adjusting and sending the ACK Ratio + values. + + + + + + +Floyd, et al. Informational [Page 6] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + If TCP end-point B receives an ACK Congestion Control Permitted + option from TCP end-point A, then the TCP end-points may use ACK + congestion control on the pure acknowledgements sent from A to B. + + If TCP end-point B receives an ACK Congestion Control Permitted + option from TCP end-point A and also sent an ACK Congestion Control + Permitted option to TCP end-point A, and if ECN-Capability has been + negotiated, then TCP end-point B can send its pure ACK packets as + ECN-Capable. + + TCP ACK Congestion Control Permitted Option: + + Kind: TBD1 + + +-----------+-----------+ + | Kind=TBD1 | Length=2 | + +-----------+-----------+ + + When ACK congestion control is used, the default initial ACK Ratio is + two, with the receiver acknowledging at least every other data + packet. + +4.2. The TCP ACK Ratio Option + + The sender uses an ACK Ratio TCP option to communicate the ACK Ratio + value from the sender to the receiver. + + TCP ACK Ratio Option: + + Kind: TBD2 + + +-----------+-----------+-----------+ + | Kind=TBD2 | Length=3 | ACK Ratio | + +-----------+-----------+-----------+ + + The ACK Ratio option is only sent on data packets. Because TCP uses + reliable delivery for data packets, the TCP sender can tell if the + TCP receiver has received an ACK Ratio option. + +4.3. The Receiver: Implementing the ACK Ratio + + With an ACK Ratio of R, the receiver should send one pure ACK for + every R newly received data packets unless the delayed ACK timer + expires first. A receiver could simply maintain a counter that + increments by one for each new data packet received, and send an ACK + packet when the counter reaches R. The receiver would reset the + counter to zero whenever a pure or piggybacked ACK is sent. + + + + +Floyd, et al. Informational [Page 7] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + If the receiver has buffer limitations, the receiver might have to + acknowledge K packets, for some K less than the current ACK Ratio R. + In this case, the sender could observe from the acknowledgements that + the receiver is acknowledging less than R packets. + + It is possible for there to be lost or marked ACK packets when there + haven't yet been any lost or marked data packets. Thus, the sender + could increase the ACK Ratio R even during the initial slow-start. + + [RFC5681] recommends that the receiver SHOULD acknowledge out-of- + order data packets immediately, sending an immediate duplicate ACK + when it receives a data segment above a gap in the sequence space, + and sending an immediate ACK when it receives a data segment that + fills in all or part of a gap in the sequence space. + + When ACK congestion control is being used and the ACK Ratio is at + most two, the TCP receiver acknowledges each out-of-order data packet + immediately. For an ACK Ratio greater than two, Section 4.6 + specifies in detail the receiver's behavior for sending ACKs for out- + of-order data packets. + +4.4. The Sender: Determining Lost or Marked ACK Packets + + The TCP data sender uses its knowledge of the ACK Ratio in use by the + receiver to infer when an ACK packet has been lost. + + Because the TCP sender knows the ACK Ratio R in use by the receiver, + the TCP sender knows that in the absence of dropped or reordered + acknowledgement packets, each new acknowledgement received will + acknowledge at most R additional data packets. Thus, if the sender + receives an acknowledgement acknowledging more than R data packets, + and does not receive a subsequent acknowledgement acknowledging a + strict subset (with a smaller cumulative acknowledgement, or with the + same cumulative acknowledgement but a strict subset of data + acknowledged in selective acknowledgement (SACK) blocks), then the + sender can infer that an ACK packet has been dropped. The use of + SACK options in ACK packets would help the sender in detecting lost + ACK packets. + + Similarly, the TCP sender knows that in the absence of dropped or + delayed data packets from the sender, and in the absence of delayed + acknowledgements due to a timer expiring at the receiver, each new + pure acknowledgement received will acknowledge at least R additional + data packets. In terms of ACK congestion control, the TCP sender + does not have to take any actions when it receives an acknowledgement + acknowledging less than R additional packets. + + + + + +Floyd, et al. Informational [Page 8] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + Out-of-order data packets: + + If the ACK Ratio is at most two, then the TCP receiver sends a + duplicate acknowledgement (DupACK) for every out-of-order data + packet. In this case, the TCP sender should be able to detect + lost DupACK packets by counting the number of DupACKs that arrive + between the beginning of the loss event and the arrival of the + first full or partial ACK, and comparing this number with the + number of DupACKs that should have arrived (based on the number of + packets being ACKed by the full or partial ACK). Simulations + and/or experiments will be needed to determine whether, in + practice, it works for the TCP sender to assess lost ACK packets + during loss events, for an ACK Ratio of at most two. + + If the ACK Ratio is greater than two, the TCP receiver does not + send a DupACK for every out-of-order data packet, as specified in + Section 4.6. For simplicity, the TCP sender does not attempt to + detect lost ACK packets during loss events involving forward-path + data traffic. That is, as soon as the sender infers a packet loss + for a forward-path data packet, it stops detection of ACK loss on + the reverse path. The sender waits until a new cumulative + acknowledgement is received that covers the retransmitted data, + and then restarts detection of ACK loss for reverse-path traffic. + + Detecting lost ACK packets after changes in the ACK Ratio: + + In detecting lost ACK packets, the sender relies on its knowledge + of the ACK Ratio used by the receiver. But when the sender makes + a change in the ACK Ratio and then receives ACK packets, how does + the sender know whether the receiver was using the new or the old + ACK Ratio when it sent those ACK packets? As specified in the + next section, the sender can make only one of two possible changes + to the ACK Ratio within one round-trip time. The sender can + decrease the ACK Ratio by one, from R to R-1, or the sender can + double the ACK Ratio, increasing it from R to 2R. But, in + detecting lost ACK packets after an increase in the ACK Ratio, the + sender needs to know whether the receiver was using the old ACK + Ratio R or the new ACK Ratio 2R. + + The sender sends ACK Ratio options only on data packets, and these + data packets are acknowledged by the receiver. One possibility + would be for the sender to save the sequence number of the last + data packet that contained an ACK Ratio option and to remember + whether that ACK Ratio option was for an increase or a decrease in + the ACK Ratio. Then, if the sender receives an ACK packet + acknowledging the saved sequence number, the sender knows that the + receiver has begun using the new ACK Ratio. + + + + +Floyd, et al. Informational [Page 9] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + It *might* be sufficient for the sender just to save the + information of whether the last change in the ACK Ratio was an + increase or a decrease, without saving the sequence number + associated with the last ACK Ratio option. In this way, if the + sender recently increased the ACK Ratio from R to 2R, the sender + could be more cautious in detecting lost ACK packets. Another + possibility would be that, after sending an ACK Ratio option, the + sender waits until that data has been ACKed, with the new ACK + Ratio in use by the receiver, before resuming the detection of + lost ACK packets. However, we do not explore either of these + approaches in more detail in this document. + +4.4.1. The Sender: Detecting Lost ACK Packets after a Congestion Event + + After a sender's retransmit timeout or fast retransmit, the sender + might retransmit a number of data packets dropped from a single + window of data. In particular, during a loss recovery period (from + the sender's detection of the congestion event up until the sender + receives an acknowledgement of all data packets transmitted before + the loss recovery period began), retransmitted data packets can fill + holes in the receiver's sequence space, resulting in irregular jumps + in the cumulative acknowledgement field in ACK packets from the + receiver. These jumps in the cumulative acknowledgement field make + it difficult for the sender to reliably detect lost ACK packets + during a loss recovery period. + + Because of this uneven progress of the cumulative acknowledgement + field during a loss recovery period, the sender should not attempt to + detect lost ACK packets during a loss recovery period. As a + consequence, the sender will not increase the ACK Ratio in response + to ACK packets that are lost during a loss recovery period. + +4.5. The Sender: Adjusting the ACK Ratio + + The TCP sender will adjust the ACK Ratio as specified in Section + 6.1.2 of [RFC4341], as follows. + + The ACK Ratio always meets the following three constraints. + + (1) The ACK Ratio is an integer. + + (2) The minimum ACK sending rate: The ACK Ratio does not exceed + max(2, cwnd/(K*MSS)), rounded up, for K=2. As a result, the TCP + receiver generally sends at least two ACKs in response to a + window of at least four full-sized segments. + + + + + + +Floyd, et al. Informational [Page 10] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + (3) If the congestion window is at least as large as four full-sized + segments, then the ACK Ratio is at least two. In other words, an + ACK Ratio of one is only allowed when the congestion window is at + most three full-sized segments. + + The sender changes the ACK Ratio within those constraints as follows. + + For each congestion window of data with lost or marked ACK packets, + the ACK Ratio R is doubled; for each cwnd/(MSS*(R^2 - R)) consecutive + congestion windows of data with no lost or marked ACK packets, the + ACK Ratio is decreased by 1. (See Appendix A of RFC 4341 for the + derivation. Note that Appendix A of RFC 4341 assumes a congestion + window W in packets, while we use cwnd in bytes.) As stated in the + previous section, when the ACK Ratio is greater than two, the sender + does not attempt to detect lost ACK packets during loss events for + forward-path traffic. + + For a constant congestion window, these modifications to the ACK + Ratio give an ACK sending rate that is roughly TCP-friendly. Of + course, cwnd usually varies over time; the dynamics will be rather + complex, but roughly TCP friendly. We recommend that the sender + determines when to decrease the ACK Ratio by one (i.e., by + calculating the number of in-order data packets to count) right after + an ACK loss event. + + The frequency of ACK Ratio negotiations: + + The sender need not keep the ACK Ratio completely up to date. For + instance, it may rate-limit ACK Ratio renegotiations to once every + four or five round-trip times, or to once every second or two. + The sender should not attempt to change the ACK Ratio more than + once per round-trip time. In particular, before sending a packet + with a new value for the ACK Ratio, the sender should verify that + the receiver has acknowledged a data packet containing an ACK + Ratio option for the old value of the ACK Ratio. Additionally, + the sender may enforce a minimum ACK Ratio of two, or it may set + the ACK Ratio to one for half-connections with persistent + congestion windows of 1 or 2 packets. + + The minimum ACK sending rate: + + From rule (2) above, the TCP receiver always sends at least K=2 + ACKs for a window of data, even in the face of very heavy + congestion on the reverse path. We would note, however, that if + congestion is sufficiently heavy, all the ACK packets are dropped, + and then the sender falls back on an exponentially backed-off + timeout. Thus, if congestion is sufficiently heavy on the reverse + path, then the sender reduces its sending rate on the forward + + + +Floyd, et al. Informational [Page 11] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + path, which reduces the rate on the reverse path as well. One + possibility would be to use a higher minimum ACK-sending rate, + adding a constant upper bound on the ACK Ratio. That is, if the + ACK Ratio also had an upper bound of J, independent of cwnd, then + the receiver would always send at least one ACK for every J data + packets, regardless of the level of congestion on the reverse + path. + +4.5.1. Possible Addition: Decreasing the ACK Ratio after a Congestion + Window Decrease + + After a lost or ECN-marked data packet, the data sender halves the + congestion window, thus halving the sending rate for data packets, + while making no change to the ACK Ratio R. As a result, after a + congestion event involving a data packet, the sending rate for ACK + packets on the return path is also halved. If the congestion event + was a lost or ECN-marked data packet, this was due to congestion on + the forward path, which may have been unrelated to conditions on the + reverse path. Thus, it has been suggested that the sender could + decrease the ACK Ratio R when it halves the congestion window; in + this case, the halving of the sending rate for data packets would not + be accompanied by a halving of the sending rate for ACK packets also. + + However, there are a few cases where a congestion event involving + data packets could in fact have been caused by congestion on the + reverse path. As one example, the path could include a congested + multiaccess link where forward-path and reverse-path traffic can + interfere with each other. Thus, in this case it might be desirable + if a congestion event resulted in a reduction in the sending rate of + ACK packets as well as of data packets. + + As a second example of a congestion event involving congestion of the + reverse path, a congestion event could be caused not by a dropped or + ECN-marked data packet, but by a window of dropped ACK packets, + resulting in a retransmit timeout at the data sender. After a + retransmit timeout, the TCP sender will slow-start, reducing the + congestion window to the initial window and setting the ACK Ratio to + at most two. + + Until further investigation, the sender will not decrease the ACK + Ratio as a result of a congestion event involving a data packet. + +4.6. The Receiver: Sending ACKs for Out-of-Order Data Segments + + RFC 5681 says that "a TCP receiver SHOULD send an immediate duplicate + ACK when an out-of-order segment arrives". After three duplicate + ACKs are received, the TCP sender infers a packet loss and implements + + + + +Floyd, et al. Informational [Page 12] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + fast retransmit and fast recovery, retransmitting the missing packet. + When the ACK Ratio is at most two, the TCP receiver should still send + an immediate duplicate ACK when an out-of-order segment arrives. + + In general, when the ACK Ratio is greater than two, the TCP receiver + still should send an immediate duplicate ACK for each of the first + three out-of-order segments that arrive in a reordering event. (We + define a reordering event at the receiver as beginning when an out- + of-order segment arrives, and ending when the receiver holds no more + out-of-order segments.) However, when the ACK Ratio is greater than + two, after the first three duplicate ACKs have been sent, the TCP + receiver should perform ACK congestion control on the remaining ACKs + to be sent during the current reordering event. That is, after the + first three duplicate ACKs have been sent, the TCP receiver should + return to sending an ACK for every R segments, instead of sending an + ACK for every out-of-order segment in that reordering event. (We + note that the fast recovery procedure of the TCP sender might have to + be modified to take this change into account.) In addition, a + receiver must not withhold an ACK for more than 500 ms. + + We note that in an environment with systematic reordering in the data + path (e.g., every set of K data packets arrives in inverted order, + for some value of K), the guideline above could result in the + receiver sending an ACK for every data packet, regardless of the ACK + Ratio. In such an environment with persistent reordering, the + receiver may decide not to send an immediate duplicate ACK for each + of the first three out-of-order segments that arrive in a reordering + event. We leave the investigation of mechanisms for effective ACK + congestion control in environments with systematic reordering for + future work. + +4.7. The Sender: Response to ACK Packets + + The use of a large ACK Ratio can generate line-rate data bursts at a + TCP sender. When the ACK Ratio is greater than two, the TCP sender + should use some form of burst mitigation or rate-based pacing for + sending data packets in response to a single acknowledgement. The + use of rate-based pacing will be limited by the timer granularity at + the TCP sender. + + We note that the interaction of ACK congestion control and burst + mitigation schemes needs further study. + + Byte counting at the sender: + + In addition to the impact of a large ACK Ratio on the burstiness + of the TCP sender's sending rate, a large ACK Ratio can also + affect the data-sending rate by slowing down the increase of the + + + +Floyd, et al. Informational [Page 13] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + congestion window cwnd. As specified in RFC 5681, in slow-start + the TCP sender increases cwnd by one full-sized segment for each + new ACK received (in this context, a "new ACK" is an ACK that + acknowledges new data). RFC 5681 also specifies that in + congestion avoidance, the TCP sender increases cwnd by roughly + 1/cwnd full-sized segments for each ACK received, resulting in an + increase in cwnd of roughly one full-sized segment per round-trip + time. In this case, the use of a large ACK Ratio would slow down + the increase of the sender's congestion window. + + RFC 5681 notes that during congestion avoidance, it is also + acceptable to count the number of bytes acknowledged by new ACKs + and to increase cwnd based on the number of bytes acknowledged, + rather than on the number of new ACKs received. Thus, the sender + should use this form of byte counting with acknowledgement + congestion control, so that the acknowledgement congestion control + doesn't slow down the window increases for the data traffic sent + by the sender. Because rate-based pacing should be used with + acknowledgement congestion control, as recommended earlier in this + section, the TCP sender may increase the congestion window by more + than two MSS for each ACK. + + We note that for Appropriate Byte Counting (ABC) as specified in + [RFC3465], during slow-start the sender is allowed to increase the + congestion window by at most two MSS for each ACK. It has not yet + been determined whether, with acknowledgement congestion control, + the TCP sender could use ABC during slow-start. If ABC is used + with acknowledgement congestion control, then when the TCP sender + is in slow-start and the ACK Ratio is greater than two, the TCP + sender may increase the congestion window by more that two MSS in + response to a single ACK. Section 4.2 of [LL07] explores some of + the issues with the use of ABC for TCP connections with a fixed + ACK Ratio greater than two. + + Inferring lost data packets: + + As cited earlier, RFC 5681 infers that a packet has been lost + after it receives three duplicate acknowledgements. Because ACK + congestion control is only used when there is congestion on the + reverse path, after a packet loss, one or more of the three + duplicate ACKs sent by the receiver could be lost on the reverse + path, and the receiver might wait until it has received R more + out-of-order segments before sending the next duplicate ACK. All + this could slow down fast recovery and fast retransmit quite a + bit. The use of SACK can help reduce the potential delay in + detecting a lost packet. With SACK, a TCP sender can use the + information in the SACK option to detect when the receiver has + + + + +Floyd, et al. Informational [Page 14] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + received at least three out-of-order data packets and to initiate + fast retransmit and fast recovery in this case, even if the TCP + sender has not yet received three duplicate ACKs. + +4.8. Possible Addition: Receiver Bounds on the ACK Ratio + + It has been suggested that in some environments, the TCP receiver + might want to set lower bounds on the ACK Ratio. For example, the + TCP receiver might know from configuration or from past experience + that the bandwidth on the return path is limited, and might want to + set a lower bound (greater than two) on the ACK Ratio R. If this is + included, this would require a TCP option from the TCP receiver to + the TCP sender, reporting the lower bound on the ACK Ratio. Care + would also be needed so that the lower bound on the ACK Ratio was + only in effect when the TCP sender's congestion window was + sufficiently high. + +5. Possible Complications + +5.1. Possible Complication: Delayed Acknowledgements + + The receiver could send a delayed acknowledgement acknowledging a + single packet, even when the ACK Ratio is two or more. + + This should not cause false positives (when the TCP sender infers a + loss when no loss happened). The TCP sender only infers that a pure + ACK packet has been lost when no data packet has been lost and an ACK + packet arrives acknowledging more than R new packets. + + Delayed acknowledgements could, however, cause false negatives, with + the TCP sender unable to detect the loss of an ACK packet sent as a + delayed acknowledgement. False negatives seem acceptable; this would + result in approximate ACK congestion control, which would be better + than no ACK congestion control at all. In particular, when this form + of false negative occurs, it is because the receiver is sending + acknowledgements at such a low rate that it is sending delayed + acknowledgements, rather than acknowledging at least R data packets + with each acknowledgement. + +5.2. Possible Complication: Duplicate Acknowledgements + + As discussed in Section 4.3, RFC 5681 states that "a TCP receiver + SHOULD send an immediate duplicate ACK when an out-of-order segment + arrives", and that "a TCP receiver SHOULD send an immediate ACK when + the incoming segment fills in all or part of a gap in the sequence + space" [RFC5681]. When ACK congestion control is used, the TCP + receiver instead uses the guidelines from Section 4.6 to govern the + sending of duplicate ACKs. More work would be useful to evaluate the + + + +Floyd, et al. Informational [Page 15] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + advantages and disadvantages of this approach in terms of the + potential delay in triggering fast retransmit, and to explore + alternate possibilities. + +5.3. Possible Complication: Two-Way Traffic + + In a TCP connection with two-way traffic, the receiver could send + some pure ACK packets and some acknowledgements piggybacked on data + packets. The receiver would still follow the rule of only sending a + pure ACK packet when there is a need for a delayed ACK or when there + are R new data packets to acknowledge. + + In a connection with two-way traffic, the TCP sender would not always + be able to infer when a pure ACK packet had been lost. For example, + the receiver could send a pure ACK packet acknowledging packet K and, + soon afterwards, the receiver could send a newly generated data + packet for the reverse-path flow also acknowledging packet K. The + pure ACK packet could be dropped in the network, and the sender would + not be able to detect this drop. + + Fortunately, there are limitations to the potential problems caused + by undetected ACK losses in two-way traffic. The sender will only + fail to detect the loss of a pure ACK packet if the ACK packet was + followed by a data packet with the same acknowledgement number. If + the reverse-path traffic for the connection is dominated by data + traffic, then the congestion control for the data traffic is more + important than the congestion control for the pure ACK traffic. If + the reverse-path traffic is dominated by pure ACK traffic, then the + sender would detect any losses of pure ACK packets followed by other + pure ACK packets, and this would include most of the pure ACK packets + for that connection. Thus, the sender's failure to detect the loss + of a pure ACK packet followed by a data packet with the same + acknowledgement number would not disable acknowledgement congestion + control for a TCP connection with two-way traffic. + +5.4. Possible Complication: Reordering of ACK Packets + + It is possible for ACK packets to be reordered on the reverse path. + The TCP sender could either use a parallel mechanism to the DupACK + threshold to infer when an ACK packet has been lost, as with TCP, or, + more robustly, the TCP sender could wait an entire round-trip time + before inferring that an ACK packet has been lost [RFC4653]. + + + + + + + + + +Floyd, et al. Informational [Page 16] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + +5.5. Possible Complication: Abrupt Changes in the ACK Path + + What happens when there are abrupt changes in the reverse path, such + as from vertical handovers? Can there be any problems that would be + worse than those experienced by a TCP connection that is not using + ACK congestion control? + +5.6. Possible Complication: Corruption + + As with data packets, it is possible for ACK packets to be dropped in + the network due to corruption rather than congestion. The current + assumption of ACK congestion control is that all losses should be + taken as indications of congestion. If there is ever some better + mechanism for identifying and responding to corrupted TCP data + packets, the same solution hopefully would apply to corrupted ACK + packets as well. + + One problem with the interaction of packet corruption and congestion + control, for both data and ACK packets, is that it is not always + obvious when the packet corruption is related to congestion and when + the packet corruption is independent of the level of congestion on + the corrupting link. In environments where packet corruption exists + and is independent of the level of congestion on the corrupting link, + applying ACK congestion control would only make the connection more + sensitive to ACK packet corruption by reducing the number of ACKs + that are sent. + +5.7. Possible Complication: ACKs that Don't Contribute to Congestion + + It is possible for the ACK packets in a TCP connection to traverse a + congested path where ACK packets are dropped but where the ACK + packets themselves don't significantly contribute to the congestion + on the path. In scenarios where ACK packets are dropped but where + ACK traffic doesn't make a significant contribution of the congestion + on the path, the use of ACK congestion control would not contribute + to reducing the aggregate congestion on the path. In this case, one + goal is to minimize the negative impact of ACK congestion control on + the overall performance of the TCP connection. + + J TCP conns. link L -> J TCP conns. + data -> |---| |---| <- ACKs + <-------------> | | | | <-------------> + | | <-------------> | | + <-------------> | | | | <-------------> + K TCP conns. |---| |---| K TCP conns. + ACKs -> <- link L1 <- data + + Figure 2. A Scenario with J Forward and K Reverse TCP Connections + + + +Floyd, et al. Informational [Page 17] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + To explore the relative contribution of ACK traffic on congestion, it + is useful to consider a simple scenario with a congested + unidirectional link L carrying data traffic from J TCP connections + (the forward TCP connections) and ACK traffic from K TCP connections + (the reverse TCP connections). We assume that all TCP connections + have the same round-trip time R and the same data packet size S of + 1500 bytes. We further assume that all of the forward TCP + connections have the same data packet drop rate p and the same + congestion window W, and that all of the reverse TCP connections have + the same congestion window W1 and the same ACK packet drop rate p1. + (The packet drop rate for data packets is defined as the fraction of + arriving data packets that are dropped; similarly, the packet drop + rate for ACK packets is the fraction of arriving ACK packets that are + dropped.) The J TCP connections each use a bandwidth on link L of + 1500*W/R bytes per second, and the K TCP connections, without ACK + congestion control, each use a bandwidth on link L of 40*(W1/2)/R + bytes per second. This gives a ratio of 75*(J/K)*(W/W1) for TCP data + bandwidth to TCP ACK bandwidth on link L. The ratio J/K is the ratio + between the number of forward and reverse TCP connections on link L, + and could have a wide range of values (e.g., large for an access link + from a web server, and small for an access link to a web server). + For this scenario, the ratio W/W1 is largely a function of the + different levels of congestion on the forward and reverse paths. + + To explore the possibilities, we will consider some of the range of + congestion control mechanisms for the congested link. First, we + consider scenarios where the limitation on the congested path is in + the link bandwidth in bytes per second. + + Cases (1), (2), (3), (5), and (7) below represent the best scenarios + for ACK congestion control, where the fraction of packet drops for + TCP ACK packets roughly matches the TCP ACK packets' contribution to + congestion. (In several of these cases this is, at best, a rough + match because the data packets are a factor in the bandwidth and in + the queue limitations, while the TCP ACK packets are only a factor in + the queue limitations.) Cases (4) and (8) below represent + problematic scenarios where the fraction of packet drops for TCP ACK + packets is much higher than the TCP ACK packets' contribution to + congestion (in terms of taking space in a congested queue, using + scarce CPU cycles at the congested router, or using scarce + bandwidth). Case (6) below represents scenarios where ACK congestion + control would not be effective because it would not be invoked. In + the scenarios in case (6), the fraction of packet drops for TCP ACK + packets would be much smaller than the TCP ACK packets' contribution + to congestion. + + + + + + +Floyd, et al. Informational [Page 18] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + (1) The Drop-Tail queue for link L is measured in packets. In this + case, the congested queue can accommodate N packets (regardless + of packet size), there is a limitation of both bandwidth in bytes + per second and also in queue space in packets, and large data + packets and small TCP ACK packets should see similar packet drop + rates. Although TCP ACK packets most likely aren't a major + factor in the bandwidth limitation, they can be a significant + contribution to the limitation of queue space. So, while the + packet drop rate for ACK packets could be high in times of + congestion, the ACK packets are contributing to that congestion + somewhat by using scarce buffer space. + + (2) The Drop-Tail queue is measured in bytes. In this case, the + congested queue can accommodate M bytes of packets, and TCP ACK + packets don't make a significant contribution to either the + bandwidth limitation or to the limitation in queue space. It is + also the case that, in this scenario, even if there is heavy + congestion, the packet drop rate for TCP ACK packets should be + small (because small ACK packets can often find space on the + congested queue when large data packets can't find space). In + this case, ACK congestion control should not present any + problems; the TCP ACK packets aren't contributing significantly + to congestion and aren't experiencing significant packet drop + rates. + + (3) The RED queue is in packet mode and is measured in packets. This + is similar to case (1) above. Because the queue is measured in + packets, small TCP ACK packets contribute to the limitation in + queue space but not to the limitation in link bandwidth. Because + the queue is in packet mode, large data packets and small TCP ACK + packets should see similar packet drop rates. + + (4) The RED queue is in packet mode but is measured in bytes. + Because the queue is measured in bytes, small TCP ACK packets + don't contribute significantly to either the limitation in queue + space or to the limitation in link bandwidth. Because the queue + is in packet mode, large data packets and small TCP ACK packets + should see similar packet drop rates. If it existed, this case + would be problematic, because the TCP ACK packets would not be + contributing significantly to the congestion but they would see a + similar packet drop rate as the large data packets that are + contributing to congestion. + + (5) The RED queue is in byte mode and is measured in bytes. This is + similar to case (2) above. Because the queue is measured in + bytes, small TCP ACK packets don't contribute significantly to + either the limitation in queue space or to the limitation in link + + + + +Floyd, et al. Informational [Page 19] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + bandwidth. At the same time, because the queue is in byte mode, + small TCP ACK packets see much smaller packet drop rates than + those of large data packets. + + (6) The RED queue is in byte mode but is measured in packets. + Because the queue is measured in packets, small TCP ACK packets + contribute to the limitation in queue space but not to the + limitation in link bandwidth. Because the queue is in byte mode, + small TCP ACK packets see much smaller packet drop rates than + those of large data packets. If this case existed, TCP ACK + packets would contribute somewhat to congestion but would see a + much smaller packet drop rate than that of large data packets. + + Next, we consider scenarios where the limitation on the congested + link is in CPU cycles at the router in packets per second, not in + bandwidth in bytes per second. + + (7) The CPU load imposed by TCP ACK packets is similar to the load + imposed by other packets (e.g., TCP data packets). ACK + congestion control would be useful in this scenario, particularly + if TCP ACK packets saw the same packet drop rates as TCP data + packets. + + (8) The CPU load imposed by TCP ACK packets is much less than the + load imposed by other packets (e.g., TCP data packets). If TCP + ACK packets saw a smaller packet drop rate than TCP data packets, + then the TCP ACK packet drop rate would roughly match the TCP ACK + packets' contribution to congestion, and this would be good. If + TCP ACK packets saw the same packet drop rate as TCP data + packets, this case would be problematic, because the TCP ACK + packets would not be contributing significantly to the + congestion, but they would see a similar packet drop rate as the + large data packets that are contributing to congestion. + +5.8. Possible Complication: TCP Implementations that Skip ACK Packets + + It has been reported in IETF meetings that current TCP + implementations do not always acknowledge at least every other data + packet, as required by the TCP specifications. In particular, it has + been reported that if a TCP receiver receives many data packets in a + burst, before it is able to send an acknowledgement, then it might + send a single acknowledgement for the burst of packets. We note that + such a behavior would cause complications for a TCP connection that + used ACK congestion control, as the sender would not be able to + determine when an ACK packet had been dropped in the network or when + the packet had been skipped by the receiver because it was processing + a burst of data packet arrivals. + + + + +Floyd, et al. Informational [Page 20] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + One possibility for addressing this problem would be for TCP + receivers using ACK congestion control to be required to send an + acknowledgement for each R packets, for ACK Ratio R. In this case, + if the receiver received a large burst of data packets back-to-back, + the receiver would be required to send a responding burst of ACK + packets, one for each set of R data packets. + + A second possibility for addressing this problem would be to define a + TCP option or flag that the TCP receiver could use when sending an + ACK packet to inform the sender that the TCP receiver `skipped' some + ACK packets, so that the sender should not infer ACK loss if some + previous ACK packets seem to be missing. + + Future work will explore the costs and benefits of these two + approaches. + +5.9. Possible Complication: Router or Middlebox-Based ACK Mechanisms + + One possible complication would be the interaction of ACK congestion + control with router-based or middlebox-based ACK mechanisms, such as + ACK filtering along the reverse path ([BPK97], [WWCM99], [BA03], + [KLS07]). We are not aware of the deployment of ACK filtering in the + Internet, but any testing of ACK congestion control would have to + look for interactions with any middlebox-based mechanisms regarding + ACK packets. In particular, we would consider interactions of ACK + congestion control with the possible deployment of ACK filtering on + satellite links, cable modems, or the like. + +5.10. Possible Complication: Data-Limited Senders + + The mechanism for adjusting the ACK Ratio is designed with the goal + of having the TCP receiver send at least two ACKs in response to each + window of at least four full-sized data packets. However, with ACK + congestion control in combination with a data-limited sender, it is + possible for the sender to send at least four full-sized data packets + in a round-trip time, with the receiver sending less than two ACKs in + response. + + As an example, consider a connection where the sender's congestion + window W is greater than four and the ACK Ratio R is at its maximum + value of W/2. If the sender becomes data-limited and sends less than + W data packets in a round-trip time, then the receiver can send less + than two ACK packets in response. This behavior makes the connection + more sensitive to the loss of an occasional ACK packet. + + Of course, there is still the safety mechanism of the receiver + sending an ACK packet when the delayed ACK timer expires. However, + more work would be useful to explore the conflicting goals of a + + + +Floyd, et al. Informational [Page 21] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + congestion-controlled ACK flow and a timely ACK response to the + sender for the specific case of a connection with a data-limited + sender and a congested ACK path. + +5.11. Other Issues + + Are there any problems caused by the combination of two-way traffic + and reordering? Or other issues that have not yet been addressed? + +6. Evaluating ACK Congestion Control + + Evaluating ACK congestion control will have two components: (1) + evaluating the effects of ACK congestion control on an individual TCP + connection, and (2) evaluating the effects of ACK congestion control + on aggregate traffic (including the effects of ACK congestion control + on the aggregate congestion of the path). + + The first part, evaluating ACK congestion control on the performance + of an individual TCP connection, will have to examine those scenarios + where ACK congestion control might help the performance of a TCP + connection and those scenarios where the use of ACK congestion + control might cause problems. + + The second part, evaluating the effects of ACK congestion control on + aggregate traffic, should consider scenarios where the use of ACK + congestion control helps all of the connections sharing a path by + reducing the aggregate congestion on the path. This part should also + see if there are scenarios where ACK congestion control causes + problems by increasing the burstiness of aggregate traffic or by + otherwise changing traffic dynamics. + +6.1. Contention in Wireless Links or in Non-Switched Ethernet + + One possible benefit of ACK congestion control is that it could + reduce contention in wireless links, shared Ethernet, or other + environments with contention between forward-path and reverse-path + traffic ([AJ03], [KIA07]). At the same time, contention on the + shared medium won't necessarily result in dropped ACK packets, and + therefore wouldn't necessarily be detected by ACK congestion control. + +6.2. Keep-Alive and Other Special ACK Packets + + Some TCP hosts send keep-alive packets when no data or ACK packets + have been received over a long period of time [KEEP-ALIVE]. This + keep-alive mechanism is not addressed in TCP specifications. + However, such keep-alive packets, if used, should not interact with + ACK congestion control one way or another. For ACK congestion + control, the ACK Ratio is set small enough to allow the receiver to + + + +Floyd, et al. Informational [Page 22] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + generally send at least two ACKs for a window of data. In addition, + the receiver uses a delayed ACK timer with the ACK Ratio, always + sending an acknowledgement if the delayed ACK timer expires. Thus, + ACK congestion control will never cause the receiver to delay + indefinitely in sending an acknowledgement for a received data + packet. + + Some TCP implementations send pure ACK packets as window probes, to + solicit an ACK packet from the other end with current window + information. Such ACK packets will generally be orthogonal to the + ACK congestion control specified in this document. + + TCP receivers also can send pure ACK packets as window update packets + announcing a new value for the receive window, even when the + acknowledgement number and SACK options in the ACK packet are not + new. The receiver may send window update packets even if the ACK + congestion control mechanism would say that it is not time yet to + send a pure ACK. The sender will not necessarily be able to detect + the loss of a window update ACK packet. + +7. Measurements of ACK Traffic and Congestion + + There are a number of studies about the traffic composition on + various links in the Internet, reporting the fraction of bandwidth + used by TCP data and by TCP ACK traffic [Studies]. + + Are there any studies that show the relative packet drop rates for + TCP data and ACK traffic, for particular links or for particular TCP + connections? + + Are there any studies of congested links that show the fraction of + traffic on the congested link, or in the congested queue, that + consist of TCP ACK packets? + +8. Acknowledgement Congestion Control in DCCP's CCID 2 + + In the transport protocol DCCP [RFC4340], the congestion control + mechanism for the CCID 2 profile is based on that of TCP. This + section briefly discusses some of the issues that have been addressed + in the acknowledgement congestion control already standardized in + CCID 2 [RFC4341]. + + + + + + + + + + +Floyd, et al. Informational [Page 23] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + Rate-based pacing: + + For CCID 2, RFC 4341 says that "senders MAY use a form of rate- + based pacing when sending multiple data packets liberated by a + single ACK packet, rather than sending all liberated data packets + in a single burst." However, rate-based pacing is not required in + CCID 2. + + Increasing the congestion window: + + For CCID 2, RFC 4341 says that "when cwnd < ssthresh, meaning that + the sender is in slow-start, the congestion window is increased by + one packet for every two newly acknowledged data packets with ACK + Vector State 0 (not ECN-marked), up to a maximum of ACK Ratio/2 + packets per acknowledgement. This is a modified form of + Appropriate Byte Counting [RFC3465] that is consistent with TCP's + current standard (which does not include byte counting), but + allows CCID 2 to increase as aggressively as TCP when CCID 2's ACK + Ratio is greater than the default value of two. When cwnd >= + ssthresh, the congestion window is increased by one packet for + every window of data acknowledged without lost or marked packets." + +9. Security Considerations + + What are the sender's incentives to cheat on ACK congestion control? + What are the receiver's incentives to cheat? What are the avenues + open for cheating? + + As long as ACK congestion control is optional, neither host can be + forced to use ACK congestion control if it doesn't want to. So ACK + congestion control will only be used if the sender or receiver have + some chance of receiving some benefit. + + As long as ACK congestion control is optional for TCP, there is + little incentive for the TCP end nodes to cheat on non-ECN-based ACK + congestion control. There is nothing now that requires TCP hosts to + use congestion control in response to dropped ACK packets. + + What avenues for cheating are opened by the use of ECN-Capable ACK + packets? If the end nodes can use ECN to have ACK packets marked + rather than dropped, and if the end nodes can then avoid the use of + ACK congestion control that goes along with the use of ECN on ACK + packets, then the end nodes could have an incentive to cheat. + Senders could cheat by not instructing the receiver to use a higher + ACK Ratio; the receiver would have a hard time detecting this + cheating. Receivers could cheat by not using the ACK Ratio they were + instructed to use, but senders could easily detect this cheating. + However, receivers could also cheat by not using ACK congestion + + + +Floyd, et al. Informational [Page 24] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + control and still sending ACK packets as ECN-Capable, so ACK + congestion control is not a necessary component for receivers to + cheat about sending ECN-Capable ACK packets. One question would be + whether there is any way for receivers to cheat about sending ECN- + Capable ACK packets and not using appropriate ACK congestion control + without this cheating being easily detected by the sender. + + What about the ability of routers or middleboxes to detect TCP + receivers that cheat by inappropriately sending ACK packets as ECN- + Capable? The router will only know if the receiver is authorized to + send ACK packets as ECN-Capable if the router can see traffic on both + the forward and reverse paths and monitored both the SYN and SYN/ACK + packets (and was able to read the TCP options in the packet headers). + If ACK congestion control has been negotiated, the router will only + know if ACK congestion control is being used correctly by the + receiver if it can monitor the ACK Ratio options sent from the sender + to the receiver. If ACK congestion control is being used, the router + will not necessarily be able to tell if ACK congestion control is + being used correctly by the sender, because drops of ACK packets + might be occurring after the ACK packets have left the router. + However, if the router sees the ACK Ratio options sent from the + sender, the router will be able to tell if the sender is correctly + accounting for those ACK packets that are dropped or ECN-marked on + the path from the receiver to the router. + +10. IANA Considerations + + No IANA action is needed at this time. If this document was advanced + as Experimental or Proposed Standard, then IANA would allocate the + option numbers for the two TCP options, the ACK Congestion Control + Permitted option, and the ACK Ratio option. In such a case, the + following two lines would be added to the TCP Option Numbers registry + (maintained by IANA -- http://www.iana.org): + + Kind Length Meaning Reference + ---- ------ --------------------------------- ----------- + TBD1 2 ACK Congestion Control Permitted [RFCXXXX] + TBD2 3 ACK Ratio [RFCXXXX] + + In the absence of TCP option numbers allocated by IANA, experimenters + may use the TCP Option Numbers set aside for Experimentation in RFC + 4727 [RFC4727]. As stressed in Section 1 of RFC 3692 [RFC3692], the + TCP Option Numbers in the experimental range are intended for + experimentation and testing and not for wide or general deployments; + these option numbers could be in use by other experimentors for other + purposes. + + + + + +Floyd, et al. Informational [Page 25] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + +11. Conclusions + + This document specifies a congestion control mechanism for + acknowledgement (ACKs) traffic for TCP and discusses the possible + complications. We are deferring a recommendation on the use of this + mechanism for TCP until it has been evaluated more fully. + +12. Acknowledgements + + Many thanks for feedback from Mark Allman, Armando Caro, Alfred + Hoenes, Ilpoo Jarvinen, Sara Landstrom, Anantha Ramaiah, and Michael + Welzl, and for contributed text from Michael Welzl. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Floyd, et al. Informational [Page 26] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + +Appendix A. Related Work + + There exist several papers dealing with controlling congestion in the + reverse path of a TCP connection, especially in the context of + networks with bandwidth asymmetry. Some of these proposals require + explicit support from routers or middleboxes, whereas others are + "pure" end-to-end schemes. + + RFC 3449 [RFC3449] discusses TCP performance problems that arise in + TCP connections over asymmetric paths. Section 3 of RFC 3449 + describes in detail how congestion on the ACK path can affect overall + TCP performance. RFC 3449 also outlines a number of proposed + mitigations, including ACK congestion control. The experimental ACK + congestion control mechanism discussed in that RFC relies on ECN, + with the TCP sender detecting congestion on the ACK path from ECN- + marked packets. RFC 3449 also discusses two receiver-based + mechanisms, the Window Prediction Mechanism (WPM) [CLP98] and + Acknowledgement based on Cwnd Estimation (ACE) [MJW00], for using a + dynamic ACK Ratio. RFC 3449 also considers link- and network-layer + techniques that address congestion on the upstream path. These + include header compression as well as bandwidth management techniques + for the upstream link, including ACK filtering and ACK + reconstruction. + + RFC 3135 [RFC3135], "Performance Enhancing Proxies Intended to + Mitigate Link-Related Degradations", surveys a range of Performance + Enhancing Proxies used to improve TCP behavior, including proxies for + ACK filtering and reconstruction. RFC 2760 [RFC2760], "Ongoing TCP + Research Related to Satellites", discusses both ACK congestion + control and ACK filtering and reconstruction, with detailed + descriptions of the mechanisms proposed by Balakrishnan, et al. in + [BPK97]. + + Landstrom, et al. in [LL07] explore a mechanism where the receiver + sends only four acknowledgements per window of data, along with the + sender using a form of Appropriate Byte Counting. In addition, the + receiver reverts to a lower acknowledgement frequency after a + timeout, to avoid unnecessary retransmit timeouts. One conclusion of + the paper is that pacing at the sender introduces an additional delay + and might not be necessary. A key result of the paper is that, with + the use of some form of byte counting at the sender, it is possible + for TCP to use a lower acknowledgement frequency than that of delayed + acknowledgements. + + + + + + + + +Floyd, et al. Informational [Page 27] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + +A.1. ECN-Only Mechanisms + + Balakrishnan, et al. in [BPK97] describe the use of ECN to detect + congestion in the return path, in order to reduce the sending rate of + ACKs. The use of a RED queue in the reverse path allows for marking + of ACK packets. The sender echoes back ECN congestion marks to the + receiver. The receiver keeps an ACK Ratio d (called the "delayed-ACK + factor"), specifying the number of data segments that have to be + received before the receiver sends a new ACK. The ACK Ratio d is + managed using multiplicative-increase, additive-decrease; upon + reception of a congestion mark, the receiver doubles the value of d + (hence dividing the ACK sending rate by two). The ACK Ratio + decreases linearly for each RTT in which no ECN-marked ACKs are + received. Multiple congestion marks received in an RTT are treated + as a single congestion event, i.e., d can be doubled at most once per + RTT. The TCP timestamp option is used to keep track of the RTT + values. + +A.2. Receiver-Only Mechanisms + + In [MJW00], Tam Ming-Chit, et al. propose a receiver-based method for + calculating an "appropriate" number of ACKs per congestion window + (cwnd) of data, in order to alleviate congestion on the reverse path. + The sender's cwnd is estimated at the receiver by counting the number + of received packets per RTT (which also has to be estimated by the + receiver). From this estimate, a simple algorithm is used to compute + the number of ACKs to be sent per cwnd. The algorithm enforces a + lower bound on the number of ACKs per cwnd, aiming at minimizing the + probability of timeout at the sender due to ACK loss. Similarly, the + ACK Ratio is upper-bounded so as to avoid excessive ACK delay. + + Blandford, et al. [BGG+07] propose an end-to-end, receiver-oriented + scheme called "smartacking". The algorithm is based upon the + receiver's monitoring the inter-segment arrival time for data packets + and adapting the ACK sending rate in response. When the bottleneck + link is underutilized, ACKs are sent frequently (up to one ACK per + received segment) to promote fast growth of the congestion window. + On the other hand, when the bottleneck is close to full utilization, + the algorithm tries to reduce control traffic overhead and slow + congestion window growth by generating ACKs at the minimum rate + needed to keep the data pipe full. + + Reducing the number of ACKs (or, equivalently, increasing the amount + of bytes acknowledged by each ACK) can increase the burstiness of the + TCP sender. Hence, any mechanism as those cited above should be + coupled with a burst mitigation technique, such as rate-based pacing, + that paces the sending of data segments ([AB05], [ASA00], [BPK97]). + + + + +Floyd, et al. Informational [Page 28] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + +A.3. Middlebox-Based Mechanisms + + ACK filtering (AF) [BPK97] from Balakrishnan, et al. is a router- + based technique that tries to reduce the number of ACKs sent over the + congested return link. With AF, an arriving ACK may replace + preceding, older ACKs at the bottleneck queue. An aggressive + replacement policy might guarantee that at most one ACK per + connection is waiting in the queue, alleviating congestion. However, + as in other proposals, care must be taken to avoid sender timeouts in + case the (too few) ACKs resulting from the filtering get lost. The + idea of filtering ACKs has been extended in [YMH03] to deal with SACK + information. + + Aweya, et al. [AOM02] present a middlebox-based approach for + mitigating data packet bursts and for controlling the uplink ACK + congestion. The main idea is to perform pacing on ACK segments on an + edge device close to the sender, so as to control the ACK arrival + rate at the sender. + +Appendix B. Design Considerations + +B.1. The TCP ACK Ratio Option or an AckNow Bit in Data Packets? + + In the ACK congestion control mechanism specified in this document, + the sender uses the TCP ACK Ratio option to tell the receiver the ACK + Ratio to use. An alternate approach to the TCP ACK Ratio option + could be for the sender to use an AckNow bit in the TCP header of + data packets, telling the receiver to acknowledge this data packet. + In the discussion below, we call these two approaches the TCP ACK + Ratio option approach and the AckNow approach. + + An advantage of an AckNow approach is that it would require less + state from the receiver; the receiver would not need to maintain a + variable for the current ACK Ratio and would not need to keep track + of the number of data packets un-ACKed to date. + + However, a disadvantage of the AckNow approach is that the sender + does not know when packets will be reordered, delayed, or dropped on + the path to the receiver. In particular, the sender does not have + control over whether a data packet with the AckNow bit set is + reordered, delayed, or dropped in the network. For this reason, we + have chosen the approach of the sender determining the ACK Ratio that + should be used and sending the ACK Ratio to the receiver, rather than + the sender telling the receiver exactly which data packets to + acknowledge. + + + + + + +Floyd, et al. Informational [Page 29] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + An additional disadvantage of the AckNow approach is that it would + add complications and difficulties for the default cases of the + receiver using an ACK Ratio of one or two, as is done in the absence + of ACK congestion control. + + For these reasons, we have specified that the sender determines the + ACK Ratio to use and tells the receiver, rather than the sender + setting an AckNow bit in the TCP Header of selected data packets. + +Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC3465] Allman, M., "TCP Congestion Control with Appropriate + Byte Counting (ABC)", RFC 3465, February 2003. + + [RFC3692] Narten, T., "Assigning Experimental and Testing Numbers + Considered Useful", BCP 82, RFC 3692, January 2004. + + [RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram + Congestion Control Protocol (DCCP)", RFC 4340, March + 2006. + + [RFC4341] Floyd, S. and E. Kohler, "Profile for Datagram + Congestion Control Protocol (DCCP) Congestion Control ID + 2: TCP-like Congestion Control", RFC 4341, March 2006. + + [RFC4727] Fenner, B., "Experimental Values In IPv4, IPv6, ICMPv4, + ICMPv6, UDP, and TCP Headers", RFC 4727, November 2006. + + [RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion + Control", RFC 5681, September 2009. + +Informative References + + [RFC2760] Allman, M., Ed., Dawkins, S., Glover, D., Griner, J., + Tran, D., Henderson, T., Heidemann, J., Touch, J., + Kruse, H., Ostermann, S., Scott, K., and J. Semke, + "Ongoing TCP Research Related to Satellites", RFC 2760, + February 2000. + + [RFC3135] Border, J., Kojo, M., Griner, J., Montenegro, G., and Z. + Shelby, "Performance Enhancing Proxies Intended to + Mitigate Link-Related Degradations", RFC 3135, June + 2001. + + + + + +Floyd, et al. Informational [Page 30] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition + of Explicit Congestion Notification (ECN) to IP", RFC + 3168, September 2001. + + [RFC3449] Balakrishnan, H., Padmanabhan, V., Fairhurst, G., and M. + Sooriyabandara, "TCP Performance Implications of Network + Path Asymmetry", BCP 69, RFC 3449, December 2002. + + [RFC4653] Bhandarkar, S., Reddy, A., Allman, M., and E. Blanton, + "Improving the Robustness of TCP to Non-Congestion + Events", RFC 4653, August 2006. + + [ASA00] Aggarwal, A., Savage, S., and T. Anderson, + "Understanding the Performance of TCP Pacing", INFOCOM + (3), pp. 1157-1165, 2000. + + [AB05] Allman, M., and E. Blanton, "Notes on Burst Mitigation + for Transport Protocols", SIGCOMM, Computer + Communications Review, 35(2):5360, 2005. + + [AJ03] Altman, E., and T. Jimenez, "Novel Delayed ACK + Techniques for Improving TCP Performance in Multihop + Wireless Networks", Proc. of the Personal Wireless + Communications, 2003. + + [AOM02] Aweya, J., Ouellette, M., and D. Y. Montuno, "A Self- + regulating TCP Acknowledgement (ack) Pacing Scheme", + International Journal of Network Management, + 12(3):145163, 2002. + + [BA03] Barakat, C., and E. Altman, "On ACK Filtering on a Slow + Reverse Channel", International Journal of Satellite + Communications and Networking, V.21 N.3, 2003. + + [BPK97] Balakrishnan, H., Padmanabhan, V., and Katz, R., "The + Effects of Asymmetry on TCP Performance", Third ACM/IEEE + Mobicom Conference, September 1997. + + [BGG+07] Blandford, D.K., Goldman, S.A., Gorinsky, S., Zhou, Y., + and D.R. Dooly, "Smartacking: Improving TCP Performance + from the Receiving End", Journal of Internet + Engineering, 1(1), 2007. + + [CLP98] Calveras, A., Linares, J., and J. Paradells, "Window + Prediction Mechanism for Improving TCP in Wireless + Asymmetric Links". Proc. IEEE Global Communications + Conference (GLOBECOM), Sydney Australia, pp. 533-538, + November 1998. + + + +Floyd, et al. Informational [Page 31] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + + [KIA07] Keceli, F., Inan, I., and E. Ayanoglu, "TCP ACK + Congestion Control and Filtering for Fairness Provision + in the Uplink of IEEE 802.11 Infrastructure Basic + Service Set", Proc. IEEE ICC 2007, June 2007. + + [KEEP-ALIVE] Busatto, F., "TCP Keepalive HOWTO", May 2007, + http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/index.html. + + [KLS07] Kim, H., Lee, H., and S. Shin, "On the Cross-Layer + Impact of TCP ACK Thinning on IEEE 802.11 Wireless MAC + Dynamics", IEICE Transactions on Communications, 2007. + + [LL07] Landstrom, S., and Larzon, L.A., "Reducing the TCP + Acknowledgement Frequency", SIGCOMM, Computer + Communications Review, July 2007. + + [MJW00] Ming-Chit, I.T., Jinsong, D., and W. Wang, "Improving + TCP Performance Over Asymmetric Networks", SIGCOMM, + Computer Communications Review (CCR), Vol.30, No.3, + 2000. + + [Studies] Floyd, S., "Measurement Studies of End-to-End Congestion + Control in the Internet", + http://www.icir.org/floyd/ccmeasure.html. + + [WWCM99] Wu, H., Wu, J., Cheng, S., and J. Ma, "ACK Filtering on + Bandwidth Asymmetry Networks", IEEE Communications, + 1999. + + [YMH03] Yu, L., Minhua, Y., and Z. Huimin, "The Improvement of + TCP Performance in Bandwidth Asymmetric Network", IEEE + PIMRC, 1:482-486, September 2003. + + + + + + + + + + + + + + + + + + + +Floyd, et al. Informational [Page 32] + +RFC 5690 TCPM - ACK Congestion Control February 2010 + + +Authors' Addresses + + Sally Floyd + ICSI Center for Internet Research + 1947 Center Street, Suite 600 + Berkeley, CA 94704 + USA + + EMail: floyd@icir.org + + + Andres Arcia + Networking, Security & Multimedia (RSM) Universidad de Los Andes + TELECOM Bretagne Facultad de Ingenieria + Rue de la Chataigneraie, CS 17607 Nucleo La Hechicera + 35576 Cesson Sevigne Cedex Merida, Merida 5101 + France Venezuela + + EMail: ae.arcia@telecom-bretagne.eu EMail: amoret@ula.ve + URI: http://www.ula.ve + + + David Ros + Networking, Security & Multimedia (RSM) Dpt. + TELECOM Bretagne + Rue de la Chataigneraie, CS 17607 + 35576 Cesson Sevigne Cedex + France + + EMail: David.Ros@telecom-bretagne.eu + + + Janardhan R. Iyengar + Math and Computer Science + Franklin & Marshall College + P. O. Box 3003 + Lancaster, PA 17604-3003 + USA + + EMail: jiyengar@fandm.edu + + + + + + + + + + + +Floyd, et al. Informational [Page 33] + |