| < draft-ietf-tcpm-tcp-edo-10.txt | draft-ietf-tcpm-tcp-edo-11.txt > | |||
|---|---|---|---|---|
| TCPM WG J. Touch | TCPM WG J. Touch | |||
| Internet Draft | Internet Draft Independent consultant | |||
| Updates: 793 Wes Eddy | Updates: 793 Wes Eddy | |||
| Intended status: Standards Track MTI Systems | Intended status: Standards Track MTI Systems | |||
| Expires: January 2019 July 19, 2018 | Expires: April 2022 October 12, 2021 | |||
| TCP Extended Data Offset Option | TCP Extended Data Offset Option | |||
| draft-ietf-tcpm-tcp-edo-10.txt | draft-ietf-tcpm-tcp-edo-11.txt | |||
| Status of this Memo | Status of this Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
| Drafts. | Drafts. | |||
| skipping to change at page 1, line 32 ¶ | skipping to change at page 1, line 32 ¶ | |||
| months and may be updated, replaced, or obsoleted by other documents | months and may be updated, replaced, or obsoleted by other documents | |||
| at any time. It is inappropriate to use Internet-Drafts as | at any time. It is inappropriate to use Internet-Drafts as | |||
| reference material or to cite them other than as "work in progress." | reference material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt | http://www.ietf.org/ietf/1id-abstracts.txt | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html | http://www.ietf.org/shadow.html | |||
| This Internet-Draft will expire on January 19, 2019. | This Internet-Draft will expire on April 12, 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 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 | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://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 | carefully, as they describe your rights and restrictions with | |||
| respect to this document. Code Components extracted from this | respect to this document. Code Components extracted from this | |||
| document must include Simplified BSD License text as described in | document must include Simplified BSD License text as described in | |||
| Section 4.e of the Trust Legal Provisions and are provided without | Section 4.e of the Trust Legal Provisions and are provided without | |||
| skipping to change at page 8, line 37 ¶ | skipping to change at page 8, line 37 ¶ | |||
| When the longer, 6-byte variant is used, the Segment_Length field is | When the longer, 6-byte variant is used, the Segment_Length field is | |||
| used to check whether modification of the segment was performed | used to check whether modification of the segment was performed | |||
| consistent with knowledge of the EDO option. The Segment_Length | consistent with knowledge of the EDO option. The Segment_Length | |||
| field will detect any modification of the length of the segment, | field will detect any modification of the length of the segment, | |||
| such as might occur when segments are split or merged, that occurs | such as might occur when segments are split or merged, that occurs | |||
| without also updating the Segment Length field as well. The Segment | without also updating the Segment Length field as well. The Segment | |||
| Length field thus helps endpoints detects devices that merge or | Length field thus helps endpoints detects devices that merge or | |||
| split TCP segments without support for EDO. Devices that merge or | split TCP segments without support for EDO. Devices that merge or | |||
| split TCP segments that support EDO would update the Segment Length | split TCP segments that support EDO would update the Segment Length | |||
| field as needed, but would also ensure that the user data is handled | field as needed but would also ensure that the user data is handled | |||
| separately from the extended option space indicate by EDO. | separately from the extended option space indicate by EDO. | |||
| >> When an endpoint creates a new segment using the 6-byte EDO | >> When an endpoint creates a new segment using the 6-byte EDO | |||
| Extension option, the Segment_Length field is initialized with a | Extension option, the Segment_Length field is initialized with a | |||
| copy of the segment length from the TCP pseudoheader. | copy of the segment length from the TCP pseudoheader. | |||
| >> When an endpoint receives a segment using the 6-byte EDO | >> When an endpoint receives a segment using the 6-byte EDO | |||
| Extension option, it MUST validate the Segment_Length field with the | Extension option, it MUST validate the Segment_Length field with the | |||
| length of the segment as indicated in the TCP pseudoheader. If the | length of the segment as indicated in the TCP pseudoheader. If the | |||
| segment lengths do not match, the segment MUST be discarded and an | segment lengths do not match, the segment MUST be discarded and an | |||
| skipping to change at page 10, line 16 ¶ | skipping to change at page 10, line 16 ¶ | |||
| TCP EDO alters segment processing during the TCP option processing | TCP EDO alters segment processing during the TCP option processing | |||
| step. Once detected, the TCP EDO Extension option overrides the TCP | step. Once detected, the TCP EDO Extension option overrides the TCP | |||
| Data Offset field for all subsequent option processing. Option | Data Offset field for all subsequent option processing. Option | |||
| processing continues at the next option (if present) after the EDO | processing continues at the next option (if present) after the EDO | |||
| Extension option. | Extension option. | |||
| 6.4. Impact on TCP Header Size | 6.4. Impact on TCP Header Size | |||
| The TCP EDO Supported option increases SYN header length by a | The TCP EDO Supported option increases SYN header length by a | |||
| minimum of 2 bytes, but could increase it by more depending on 32- | minimum of 2 bytes but could increase it by more depending on 32-bit | |||
| bit word alignment. Currently popular SYN options total 19 bytes, | word alignment. Currently popular SYN options total 19 bytes, which | |||
| which leaves more than enough room for the EDO Supported option: | leaves more than enough room for the EDO Supported option: | |||
| o SACK permitted (2 bytes in SYN, optionally 2 + 8N bytes after) | o SACK permitted (2 bytes in SYN, optionally 2 + 8N bytes after) | |||
| [RFC2018][RFC6675] | [RFC2018][RFC6675] | |||
| o Timestamp (10 bytes) [RFC7323] | o Timestamp (10 bytes) [RFC7323] | |||
| o Window scale (3 bytes) [RFC7323] | o Window scale (3 bytes) [RFC7323] | |||
| o MSS option (4 bytes) [RFC793] | o MSS option (4 bytes) [RFC793] | |||
| skipping to change at page 11, line 17 ¶ | skipping to change at page 11, line 17 ¶ | |||
| The full combination of the above options (47 bytes for TS, WS, MSS, | The full combination of the above options (47 bytes for TS, WS, MSS, | |||
| SACK, TCP-AO, and MPTCP) does not fit in the existing SYN option | SACK, TCP-AO, and MPTCP) does not fit in the existing SYN option | |||
| space and (as noted) that space cannot be extended within a single | space and (as noted) that space cannot be extended within a single | |||
| SYN segment. There has been a proposal to change TS to a 2 byte "TS | SYN segment. There has been a proposal to change TS to a 2 byte "TS | |||
| permitted" signal in the initial SYN, provided it can be safely | permitted" signal in the initial SYN, provided it can be safely | |||
| enabled during the connection later or might be avoided completely | enabled during the connection later or might be avoided completely | |||
| [Ni15]. Even using "TS-permitted", the total space is still too | [Ni15]. Even using "TS-permitted", the total space is still too | |||
| large to support in the initial SYN without SYN option space | large to support in the initial SYN without SYN option space | |||
| extension [Bo14][Br14][To18]. | extension [Bo14][Br14][To18]. | |||
| The EDO Extension option has negligible impact on other headers, | The EDO Extension option has negligible impact on other headers | |||
| because it can either come first or just after security information, | because it can either come first or just after security information, | |||
| and in either case the additional 4 or 6 bytes are easily | and in either case the additional 4 or 6 bytes are easily | |||
| accommodated within the TCP Data Offset length. Once the EDO option | accommodated within the TCP Data Offset length. Once the EDO option | |||
| is processed, the entirety of the remainder of the TCP segment is | is processed, the entirety of the remainder of the TCP segment is | |||
| available for any remaining options. | available for any remaining options. | |||
| 6.5. Connectionless Resets | 6.5. Connectionless Resets | |||
| A RST may arrive during a currently active connection or may be | A RST may arrive during a currently active connection or may be | |||
| needed to cleanup old state from an abandoned connection. The latter | needed to cleanup old state from an abandoned connection. The latter | |||
| skipping to change at page 18, line 19 ¶ | skipping to change at page 18, line 19 ¶ | |||
| The key difficulty with most previous proposals is the desire to | The key difficulty with most previous proposals is the desire to | |||
| extend the option space in all TCP segments, including the initial | extend the option space in all TCP segments, including the initial | |||
| SYN, i.e., SYN with no ACK, typically the first segment of a | SYN, i.e., SYN with no ACK, typically the first segment of a | |||
| connection, as well as possibly the SYN/ACK. It has proven difficult | connection, as well as possibly the SYN/ACK. It has proven difficult | |||
| to extend space within the segment of the initial SYN in the absence | to extend space within the segment of the initial SYN in the absence | |||
| of prior negotiation while maintaining current TCP three-way | of prior negotiation while maintaining current TCP three-way | |||
| handshake properties, and it may be similarly challenging to extend | handshake properties, and it may be similarly challenging to extend | |||
| the SYN/ACK (depending on asymmetric middlebox assumptions). | the SYN/ACK (depending on asymmetric middlebox assumptions). | |||
| A new TCP option cannot extend the Data Offset of a single TCP | A new TCP option cannot extend the Data Offset of a single TCP | |||
| initial SYN segment, and cannot extend a SYN/ACK in a single segment | initial SYN segment and cannot extend a SYN/ACK in a single segment | |||
| when considering misbehaving middleboxes. All TCP segments, | when considering misbehaving middleboxes. All TCP segments, | |||
| including the initial SYN and SYN/ACK, may include user data in the | including the initial SYN and SYN/ACK, may include user data in the | |||
| payload data [RFC793], and this can be useful for some proposed | payload data [RFC793], and this can be useful for some proposed | |||
| features such as TCP Fast Open [RFC7413]. Legacy endpoints that | features such as TCP Fast Open [RFC7413]. Legacy endpoints that | |||
| ignore the new option would process the payload contents as user | ignore the new option would process the payload contents as user | |||
| data and send an ACK. Once ACK'd, this data cannot be removed from | data and send an ACK. Once ACK'd, this data cannot be removed from | |||
| the user stream. | the user stream. | |||
| The Reserved TCP header bits cannot be redefined easily, even though | The Reserved TCP header bits cannot be redefined easily, even though | |||
| three of the six total bits have already been redefined (ECE/CWR | three of the six total bits have already been redefined (ECE/CWR | |||
| skipping to change at page 22, line 21 ¶ | skipping to change at page 22, line 21 ¶ | |||
| "TCP Extensions for Multipath Operation with Multiple | "TCP Extensions for Multipath Operation with Multiple | |||
| Addresses", RFC 6824, January 2013. | Addresses", RFC 6824, January 2013. | |||
| [RFC7323] Borman, D., Braden, B., Jacobson, V., and R. Scheffenegger | [RFC7323] Borman, D., Braden, B., Jacobson, V., and R. Scheffenegger | |||
| (Ed.), "TCP Extensions for High Performance", RFC 7323, | (Ed.), "TCP Extensions for High Performance", RFC 7323, | |||
| September 2014. | September 2014. | |||
| [RFC7413] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP | [RFC7413] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP | |||
| Fast Open", RFC 7413, December 2014. | Fast Open", RFC 7413, December 2014. | |||
| [To18] Touch, J., T. Faber, "TCP SYN Extended Option Space Using | [To21] Touch, J., T. Faber, "TCP SYN Extended Option Space Using | |||
| an Out-of-Band Segment", draft-touch-tcpm-tcp-syn-ext-opt | an Out-of-Band Segment", draft-touch-tcpm-tcp-syn-ext-opt | |||
| (work in progress), Jan. 2018. | (work in progress), Oct. 2019. | |||
| [Yo11] Yourtchenko, A., "Introducing TCP Long Options by Invalid | [Yo11] Yourtchenko, A., "Introducing TCP Long Options by Invalid | |||
| Checksum", draft-yourtchenko-tcp-loic-00 (work in | Checksum", draft-yourtchenko-tcp-loic-00 (work in | |||
| progress), April 2011. | progress), April 2011. | |||
| 13. Acknowledgments | 13. Acknowledgments | |||
| The authors would like to thank the IETF TCPM WG for their feedback, | The authors would like to thank the IETF TCPM WG for their feedback, | |||
| in particular: Oliver Bonaventure, Bob Briscoe, Ted Faber, John | in particular: Oliver Bonaventure, Bob Briscoe, Ted Faber, John | |||
| Leslie, Pasi Sarolahti, Richard Scheffenegger, and Alexander | Leslie, Pasi Sarolahti, Richard Scheffenegger, and Alexander | |||
| End of changes. 11 change blocks. | ||||
| 13 lines changed or deleted | 13 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/ | ||||