| < draft-gomez-tcpm-ack-rate-request-01.txt | draft-gomez-tcpm-ack-rate-request-02.txt > | |||
|---|---|---|---|---|
| TCPM Working Group C. Gomez | TCPM Working Group C. Gomez | |||
| Internet-Draft UPC | Internet-Draft UPC | |||
| Intended status: Experimental J. Crowcroft | Intended status: Experimental J. Crowcroft | |||
| Expires: May 4, 2021 University of Cambridge | Expires: August 23, 2021 University of Cambridge | |||
| October 31, 2020 | February 19, 2021 | |||
| TCP ACK Rate Request Option | TCP ACK Rate Request Option | |||
| draft-gomez-tcpm-ack-rate-request-01 | draft-gomez-tcpm-ack-rate-request-02 | |||
| Abstract | Abstract | |||
| TCP Delayed Acknowledgments (ACKs) is a widely deployed mechanism | TCP Delayed Acknowledgments (ACKs) is a widely deployed mechanism | |||
| that allows reducing protocol overhead in many scenarios. However, | that allows reducing protocol overhead in many scenarios. However, | |||
| Delayed ACKs may also contribute to suboptimal performance. When a | Delayed ACKs may also contribute to suboptimal performance. When a | |||
| relatively large congestion window (cwnd) can be used, less frequent | relatively large congestion window (cwnd) can be used, less frequent | |||
| ACKs may be desirable. On the other hand, in relatively small cwnd | ACKs may be desirable. On the other hand, in relatively small cwnd | |||
| scenarios, eliciting an immediate ACK may avoid unnecessary delays | scenarios, eliciting an immediate ACK may avoid unnecessary delays | |||
| that may be incurred by the Delayed ACKs mechanism. This document | that may be incurred by the Delayed ACKs mechanism. This document | |||
| skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 40 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on May 4, 2021. | This Internet-Draft will expire on August 23, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| skipping to change at page 2, line 20 ¶ | skipping to change at page 2, line 20 ¶ | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Conventions used in this document . . . . . . . . . . . . . . 3 | 2. Conventions used in this document . . . . . . . . . . . . . . 3 | |||
| 3. TCP ACK Rate Request Functionality . . . . . . . . . . . . . 4 | 3. TCP ACK Rate Request Functionality . . . . . . . . . . . . . 4 | |||
| 3.1. Sender behavior . . . . . . . . . . . . . . . . . . . . . 4 | 3.1. Sender behavior . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.2. Receiver behavior . . . . . . . . . . . . . . . . . . . . 4 | 3.2. Receiver behavior . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Option Format . . . . . . . . . . . . . . . . . . . . . . . . 5 | 4. Option Format . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 6 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
| 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 6 | 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 6 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 7 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 7 | 8.2. Informative References . . . . . . . . . . . . . . . . . 8 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 7 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 1. Introduction | 1. Introduction | |||
| Delayed Acknowledgments (ACKs) were specified for TCP with the aim to | Delayed Acknowledgments (ACKs) were specified for TCP with the aim to | |||
| reduce protocol overhead [RFC1122]. With Delayed ACKs, a TCP delays | reduce protocol overhead [RFC1122]. With Delayed ACKs, a TCP delays | |||
| sending an ACK by up to 500 ms (often 200 ms, with lower values in | sending an ACK by up to 500 ms (often 200 ms, with lower values in | |||
| recent implementations such as ~50 ms also reported), and typically | recent implementations such as ~50 ms also reported), and typically | |||
| sends an ACK for at least every second segment received in a stream | sends an ACK for at least every second segment received in a stream | |||
| of full-sized segments. This allows combining several segments into | of full-sized segments. This allows combining several segments into | |||
| a single one (e.g. the application layer response to an application | a single one (e.g. the application layer response to an application | |||
| skipping to change at page 4, line 8 ¶ | skipping to change at page 4, line 8 ¶ | |||
| 2. Conventions used in this document | 2. Conventions used in this document | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL","SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL","SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| 3. TCP ACK Rate Request Functionality | 3. TCP ACK Rate Request Functionality | |||
| A TCP endpoint announces that it supports the TARR option by | A TCP endpoint announces that it supports the TARR option by | |||
| including the TARR option format in packets that have the SYN bit | including the TARR option format format (with the appropriate Length | |||
| set. In such packets, the values carried by the TARR option format | value, see Section 4) in packets that have the SYN bit set. | |||
| other than Kind, Length and ExID MUST be ignored by the receiving | ||||
| TCP. | ||||
| TBD1: perhaps two formats (with one codepoint each), a shorter one | ||||
| just to advertise that TARR is supported, and a larger one which is | ||||
| the current TARR option format defined in section 4? | ||||
| The next two subsections define the sender and receiver behaviors for | The next two subsections define the sender and receiver behaviors for | |||
| devices that support the TARR option, respectively. | devices that support the TARR option, respectively. | |||
| 3.1. Sender behavior | 3.1. Sender behavior | |||
| A TCP sender MUST NOT include the TARR option in TCP data segments to | A TCP sender MUST NOT include the TARR option in TCP data segments to | |||
| be sent if the TCP receiver does not support the TARR option. | be sent if the TCP receiver does not support the TARR option. | |||
| A TCP sender MAY request a TARR-option-capable receiver to modify the | A TCP sender MAY request a TARR-option-capable receiver to modify the | |||
| skipping to change at page 5, line 9 ¶ | skipping to change at page 4, line 52 ¶ | |||
| option present in a received data segment. | option present in a received data segment. | |||
| When the TARR option of a received segment carries an R value | When the TARR option of a received segment carries an R value | |||
| different from zero, a TARR-option-capable receiving TCP MUST modify | different from zero, a TARR-option-capable receiving TCP MUST modify | |||
| its ACK rate to one ACK every R full-sized received data segments | its ACK rate to one ACK every R full-sized received data segments | |||
| from the sender, as long as packet reordering does not occur. When R | from the sender, as long as packet reordering does not occur. When R | |||
| is different from zero, the receiving TCP MUST ignore the N field of | is different from zero, the receiving TCP MUST ignore the N field of | |||
| the TARR option. | the TARR option. | |||
| A TARR-option-capable TCP that receives a TARR option with the Ignore | A TARR-option-capable TCP that receives a TARR option with the Ignore | |||
| Order field set to True (see Section 4), MUST NOT send an ACK after | Order (I) field set to True (see Section 4), MUST NOT send an ACK | |||
| each reordered data segment. Instead, it MUST continue to send one | after each reordered data segment. Instead, it MUST continue to send | |||
| ACK every R received data segments. Otherwise (i.e., Ignore Order = | one ACK every R received data segments. Otherwise (i.e., Ignore | |||
| False), such a receiver will need to send an ACK after each reordered | Order = False), such a receiver will need to send an ACK after each | |||
| data segment received. | reordered data segment received. | |||
| If a TARR-option-capable TCP receives a segment carrying the TARR | If a TARR-option-capable TCP receives a segment carrying the TARR | |||
| option with R=0, the receiving TCP MUST send an ACK immediately, and | option with R=0, the receiving TCP MUST send an ACK immediately, and | |||
| it MUST also send an ACK immediately after each one of the N next | it MUST also send an ACK immediately after each one of the N next | |||
| consecutive segments to be received. N refers to the corresponding | consecutive segments to be received. N refers to the corresponding | |||
| field in the TARR option of the received segment (see Section 4). | field in the TARR option of the received segment (see Section 4). | |||
| 4. Option Format | 4. Option Format | |||
| The TARR option has the format and content shown in Fig. 1. | The TARR option presents two different formats that can be identified | |||
| by the corresponding format length. For packets that have the SYN | ||||
| bit set, the TARR option has the format shown in Fig. 1. | ||||
| 0 1 2 3 | 0 1 2 3 | |||
| 01234567 89012345 67890123 45678901 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +--------+--------+--------+--------+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Kind | Length | ExID | | | Kind | Length | ExID | | |||
| +--------+--------+--------+--------+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | R | IgnOrd | N | | ||||
| +--------+--------+--------+ | ||||
| Figure 1: TCP ACK Rate Request option format. | Figure 1: TCP ACK Rate Request option format for packets that have | |||
| the SYN bit set. | ||||
| Kind: The Kind field value is TBD. | Kind: The Kind field value is TBD. | |||
| Length: The Length field value is 7 bytes. | Length: The Length field value is 4 bytes. | |||
| ExID: The experiment ID field size is 2 bytes, and its value is | ExID: The experiment ID field size is 2 bytes, and its value is | |||
| 0x00AC. | 0x00AC. | |||
| R: The size of this field is 1 byte. If all bits of this field are | For packets that do not have the SYN bit set, the TARR option has the | |||
| format and content shown in Fig. 2. | ||||
| 0 1 2 3 | ||||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Kind | Length | ExID | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | R |I| N | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Figure 2: TCP ACK Rate Request option format. | ||||
| Kind: The Kind field value is TBD. | ||||
| Length: The Length field value is 6 bytes. | ||||
| ExID: The experiment ID field size is 2 bytes, and its value is | ||||
| 0x00AC. | ||||
| R: The size of this field is 7 bits. If all bits of this field are | ||||
| set to 0, the field indicates a request by the sender for the | set to 0, the field indicates a request by the sender for the | |||
| receiver to trigger one or more ACKs immediately. Otherwise, the | receiver to trigger one or more ACKs immediately. Otherwise, the | |||
| field carries the binary encoding of the number of full-sized | field carries the binary encoding of the number of full-sized | |||
| segments received after which the receiver is requested by the sender | segments received after which the receiver is requested by the sender | |||
| to send an ACK. | to send an ACK. | |||
| Ignore Order: The size of this field is 1 byte. This field MUST have | Ignore Order (I): The size of this field is 1 bit. This field either | |||
| the value 0x01 ("True") or 0x00 ("False"). When this field is set to | has the value 1 ("True") or 0 ("False"). When this field is set to | |||
| True, the receiver MUST NOT send an ACK after each reordered data | True, the receiver MUST NOT send an ACK after each reordered data | |||
| segment. Instead, it MUST continue to send one ACK every R received | segment. Instead, it MUST continue to send one ACK every R received | |||
| data segments. | data segments. | |||
| TBD2: perhaps 7 bits for R and 1 bit for Ignore Order? | ||||
| N: The size of this field is 1 byte. When R=0, the N field indicates | N: The size of this field is 1 byte. When R=0, the N field indicates | |||
| the number of subsequent consecutive data segments to be sent for | the number of subsequent consecutive data segments to be sent for | |||
| which immediate ACKs are requested by the sender. | which immediate ACKs are requested by the sender. | |||
| 5. IANA Considerations | 5. IANA Considerations | |||
| This document specifies a new TCP option (TCP ACK Rate Request) that | This document specifies a new TCP option (TCP ACK Rate Request) that | |||
| uses the shared experimental options format [RFC6994], with ExID in | uses the shared experimental options format [RFC6994], with ExID in | |||
| network-standard byte order. | network-standard byte order. | |||
| The authors plan to request the allocation of ExID value 0x00AC for | The authors plan to request the allocation of ExID value 0x00AC for | |||
| the TCP option specified in this document. | the TCP option specified in this document. | |||
| 6. Security Considerations | 6. Security Considerations | |||
| TBD | The TARR option opens the door to new security threats. This section | |||
| discusses such new threats, and suggests mitigation techniques. | ||||
| An attacker might be able to impersonate a legitimate sender, and | ||||
| forge an apparently valid packet intended for the receiver, in order | ||||
| to intentionally communicate a bad R value to the latter with the aim | ||||
| to damage communication or device performance. For example, in a | ||||
| small cwnd scenario, using a too high R value may lead to exacerbated | ||||
| RTT increase and throughput decrease. In other scenarios, a too low | ||||
| R value may contribute to depleting the energy of a battery-operated | ||||
| receiver at a faster rate or may lead to increased network packet | ||||
| load. | ||||
| While Transport Layer Security (TLS) [RFC8446] is strongly | ||||
| recommended for securing TCP-based communication, TLS does not | ||||
| protect TCP headers, and thus cannot protect the TARR option fields | ||||
| carried by a segment. One approach to address the problem is using | ||||
| network-layer protection, such as Internet Protocol Security (IPsec) | ||||
| [RFC4301]. | ||||
| 7. Acknowledgments | 7. Acknowledgments | |||
| Bob Briscoe, Jonathan Morton, Richard Scheffenegger, Neal Cardwell, | Bob Briscoe, Jonathan Morton, Richard Scheffenegger, Neal Cardwell, | |||
| Michael Tuexen, Yuchung Cheng, Matt Mathis, Jana Iyengar, Gorry | Michael Tuexen, Yuchung Cheng, Matt Mathis, Jana Iyengar, Gorry | |||
| Fairhurst, and Stuart Cheshire provided useful comments and input for | Fairhurst, and Stuart Cheshire provided useful comments and input for | |||
| this document. Jana Iyengar suggested including a field to allow a | this document. Jana Iyengar suggested including a field to allow a | |||
| sender communicate its tolerance to reordering. Gorry Fairhurst | sender communicate its tolerance to reordering. Gorry Fairhurst | |||
| suggested adding a mechanism to request a number of consecutive | suggested adding a mechanism to request a number of consecutive | |||
| immediate ACKs. | immediate ACKs. | |||
| skipping to change at page 7, line 21 ¶ | skipping to change at page 8, line 21 ¶ | |||
| RFC 6994, DOI 10.17487/RFC6994, August 2013, | RFC 6994, DOI 10.17487/RFC6994, August 2013, | |||
| <https://www.rfc-editor.org/info/rfc6994>. | <https://www.rfc-editor.org/info/rfc6994>. | |||
| 8.2. Informative References | 8.2. Informative References | |||
| [RFC3449] Balakrishnan, H., Padmanabhan, V., Fairhurst, G., and M. | [RFC3449] Balakrishnan, H., Padmanabhan, V., Fairhurst, G., and M. | |||
| Sooriyabandara, "TCP Performance Implications of Network | Sooriyabandara, "TCP Performance Implications of Network | |||
| Path Asymmetry", BCP 69, RFC 3449, DOI 10.17487/RFC3449, | Path Asymmetry", BCP 69, RFC 3449, DOI 10.17487/RFC3449, | |||
| December 2002, <https://www.rfc-editor.org/info/rfc3449>. | December 2002, <https://www.rfc-editor.org/info/rfc3449>. | |||
| [RFC4301] Kent, S. and K. Seo, "Security Architecture for the | ||||
| Internet Protocol", RFC 4301, DOI 10.17487/RFC4301, | ||||
| December 2005, <https://www.rfc-editor.org/info/rfc4301>. | ||||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | ||||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8446>. | ||||
| [RFC8490] Bellis, R., Cheshire, S., Dickinson, J., Dickinson, S., | [RFC8490] Bellis, R., Cheshire, S., Dickinson, J., Dickinson, S., | |||
| Lemon, T., and T. Pusateri, "DNS Stateful Operations", | Lemon, T., and T. Pusateri, "DNS Stateful Operations", | |||
| RFC 8490, DOI 10.17487/RFC8490, March 2019, | RFC 8490, DOI 10.17487/RFC8490, March 2019, | |||
| <https://www.rfc-editor.org/info/rfc8490>. | <https://www.rfc-editor.org/info/rfc8490>. | |||
| Authors' Addresses | Authors' Addresses | |||
| Carles Gomez | Carles Gomez | |||
| UPC | UPC | |||
| C/Esteve Terradas, 7 | C/Esteve Terradas, 7 | |||
| End of changes. 16 change blocks. | ||||
| 40 lines changed or deleted | 79 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||