<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-nishida-tcpm-agg-syn-ext-03" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="Aggregated_SynOpt">Aggregated Option for SYN Option Space Extension</title>
    <seriesInfo name="Internet-Draft" value="draft-nishida-tcpm-agg-syn-ext-03"/>
    <author initials="Y." surname="Nishida" fullname="Yoshifumi Nishida">
      <organization abbrev="AWS">Amazon Web Services</organization>
      <address>
        <postal>
          <street>440 Terry Ave N</street>
          <city>Seattle</city>
          <region>WA</region>
          <code>98109</code>
          <country>USA</country>
        </postal>
        <email>nsd.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2023" month="March" day="12"/>
    <area>TSV</area>
    <workgroup>TCPM Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>TCP option space is scarce resource as its maximum length is limited to
   40 bytes.  This limitation becomes more significant in SYN segments
   as all options used in a connection should be exchanged during SYN
   negotiations.  This document proposes a new SYN option negotiation
   scheme that can aggregate multiple TCP options in SYN segments into
   a single option so that more options can be negotiate during 3-way
   handshake. With its simple design, the approach does not require
   fundamental changes in TCP.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>TCP option space is scarce resource as its maximum length is limited to
   40 bytes because the length of the Data Offset field in the TCP header
   is 4 bits <xref target="RFC9293"/>.</t>
      <t>This limitation is a critical issue especially for SYN
   segments.  This is because although a TCP endpoint can send only one
   SYN segment to its peer, SYN segments need to contain all options
   expected to be used for the connection.  As a result, the current SYN
   option space tends to be congested.  Many TCP connections use MSS
   <xref target="RFC9293"/>, Timestamp and Window Scale <xref target="RFC7323"/>, SACK Permitted
   options <xref target="RFC2018"/> which already consume 19 bytes (10 + 4 + 3 + 2).
   In addition to these options, if a connection wants to use Multipath TCP
   <xref target="RFC8684"/>, it requires additional 4-12 bytes for MP_CAPABLE or 12-16
   bytes for MP_JOIN option.  Similarly, TCP Fast Open <xref target="RFC7413"/> and TCP
   AO <xref target="RFC5925"/> require additional 6-18 bytes and 16 bytes respectively.
   Moreover, Experimental Option Format defined in <xref target="RFC6994"/> requires
   16 bits or 32 bits ExID, which means the length of any experimental
   options will have at least 4 bytes.</t>
      <t>If an endpoint is willing to add some of extra options in addition
   to commonly used options, 40 bytes space may not be sufficient.
   If a SYN segment cannot accommodate all options that an endpoint wants
   to use, the endpoint needs to give up using some of them.
   This problem affects the extensibility of TCP.</t>
      <t>There have been various proposals in order to extend option space in
   SYN Segments such as <xref target="I-D.eddy-tcp-loo"/>, <xref target="I-D.yourtchenko-tcp-loic"/>,
   <xref target="I-D.touch-tcpm-tcp-syn-ext-opt"/>, <xref target="I-D.briscoe-tcpm-inner-space"/> and
   <xref target="I-D.allman-tcpx2-hack"/>. These proposals have adopted one or both of
   the following two types of approach.</t>
      <ul spacing="normal">
        <li>Extending TCP header in SYN segment: This approach tries to
accommodate more options in a SYN segment by using payload (e.g
override Data Offset field in TCP header).</li>
        <li>Using Multiple SYN or SYN-like segment: This approach uses
multiple SYN segments or additional segments that can be treated as
a SYN segment (e.g sending another SYN with wrong checksum or
from different source port).</li>
      </ul>
      <t>However, these kinds of approach induce some complexity as it needs to
   update fundamental TCP design and have potential risks for middlebox
   interventions because of it.
   Instead, we propose a simple alternate approach that can aggregate multiple
   TCP options into a single options. As this approach does not require
   drastic changes to TCP SYN negotiation scheme, the risk for middlebox
   interventions will be minimized.
   <xref target="I-D.boucadair-tcpm-capability-option"/> also proposes a scheme to
   aggregate multiple options as many of these options are basically about
   negotiating support with the peer before actual use of the option.
   However, our approach requires less option space as it can aggregate
   and condence some TCP options to create more option space for others.
   Note that <xref target="I-D.boucadair-tcpm-capability-option"/>
   specifically target controlled domains to nullify the implications of
   the presence of middleboxes.</t>
      <t>The proposed approach in the draft cannot aggregate all kinds of options.
   However, we believe it still will be useful especially for newly defined
   experimental options that would require anyway negotiating support with
   the peer before actually making use of longer forms of the option.
   Subsequent uses may utilize the EDO <xref target="I-D.draft-ietf-tcpm-tcp-edo"/>
   extension if needed.</t>
      <t>One example use case for our approach is <xref target="I-D.gomez-tcpm-ack-rate-request"/>.
   In order to use the feature proposed in the document, endpoints need to
   exchange a 4-byte TCP option during 3-way handshake so that they can check
   if the peer is capable of the feature.
   However, whether an endpoint supports the feature or not is just 1-bit
   information. Using 4-byte field to carry 1-bit information looks
   redundant. On the other hand, Aggregated Option can accommodate up to 24
   TCP options like this example into a single TCP option.</t>
      <t>Also, even if more than 1-bit information needs to be carried in a TCP
   option for a certain feature, it is still possible to utilize aggregated
   options in some cases.
   In such cases, an endpoint can confirm that the peer supports the
   feature it wants to use by using the aggregated option. After that, it can
   continue to negotiate required parameters through 3rd segment and 4th segment.
   This type of approach is already used in MPTCP <xref target="RFC8684"/>. Hence, we believe
   this scheme can be applicable to many other TCP extensions.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <t>This document uses the following terms:</t>
      <ul spacing="normal">
        <li>Original Option format: refers to the option format as defined in <xref target="RFC9293"/></li>
        <li>Aggregated Option format: refers to indication of support of a TCP
option by setting the corresponding bit in the Aggregated TCP
Option.</li>
      </ul>
    </section>
    <section anchor="aggregated-option-design">
      <name>Aggregated Option Design</name>
      <section anchor="option-format">
        <name>Option Format</name>
        <t>The aggregated option can be used to indicate that an endpoint
   wants to enable the specified features during SYN segment exchanges.
   This option uses one bit in the option field for one TCP option.
   The receiver of the option also uses this option to indicate that
   it agrees to use the requested features or not.  The format of
   aggregated option format is shown in Figure 1.  The option
   contains 1-byte field named called "Aggregated Block". Aggregated
   Option can accommodate 1-3 Aggregated Blocks.</t>
        <figure anchor="fig1">
          <name>Aggregated Option format</name>
          <artwork type="ascii-art" align="center"><![CDATA[
                    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 = TBD  |  Length = 3-5 |   Block  #1   |   Block #2   |
+--------------+---------------+---------------+- - - - - - - -
|   Block #3   |
 - - - - - - - -
]]></artwork>
        </figure>
        <t>Figure 2 shows the format of Aggregated block.  Aggregated block has
   1 byte length which consists of 2 bits "Group ID" (GID) field and 6
   bits "Option Bits" field.  The options supported by Aggregated Option
   are split into 4 groups. The Group ID field is used to identify the
   group identifier of the option bits in the Aggregated Option and each
   single bit in Option Bits field represent a option in the group.</t>
        <t>If all options that an endpoint wants to aggregate belong to the same
   Group ID, the aggregated option needs to contain only one Aggregated
   Block.  Otherwise, it needs to contain multiple blocks as needed.</t>
        <figure anchor="fig2">
          <name>Aggregated Block format</name>
          <artwork type="ascii-art" align="center"><![CDATA[
0  1  2  3  4  5  6  7
+----------------------+
| GID |  Option Bits   |
+----------------------+
]]></artwork>
        </figure>
        <t>GID field in Aggregated Block indicate the group ID that option bits
   in the block belongs to.  Aggregated Blocks appear in SYN and
   SYN ACK segments, however, different mappings between GID value in
   the option and Group ID are used for these two segments.  This is
   because some implementations may copy back unknown options in SYN/ACK
   segments.  These mappings are used not to be confused by such
   cases.  Figure 3 shows the mapping between GID value in the
   option and Group ID.  For example, GID value 1 in SYN represents
   group 2, while GID value 1 in ACK segment for SYN ACK represents
   group 1.</t>
        <figure anchor="fig3">
          <name>Mapping between GID value and Group ID</name>
          <artwork type="ascii-art" align="center"><![CDATA[
+------------------+----------------------+----------------------+
| GID value in SYN | GID value in SYN ACK | Group ID Description |
+------------------+----------------------+----------------------+
|        0         |          1           |       group 1        |
|                  |                      |                      |
|        1         |          2           |       group 2        |
|                  |                      |                      |
|        2         |          3           |       group 3        |
|                  |                      |                      |
|        3         |          0           |       group 4        |
+------------------+----------------------+----------------------+
]]></artwork>
        </figure>
        <t>The allocation of the bit in Option Bits field in each group will be
   managed by the registry provided by IANA.  Since an aggregated block
   has 6-bits field to indicate options, one group can have 6 options at
   most. As a result, the maximum number of options that can be used
   with Aggregated Option will be limited to 24.  We believe this is
   sufficient number for the time being based on the current usage of
   option code points.</t>
        <t>The Aggregated Option <bcp14>MUST</bcp14> be only used in SYN segments. When an endpoint
   receives SYN segments with Aggregated Option, it checks Aggregated
   Blocks in the option.  Otherwise, the segment <bcp14>MUST</bcp14> be silently discarded.
   If it contains Aggregated Blocks, the options specified
   in the blocks <bcp14>MUST</bcp14> be processed as well as options in original
   formats.  When a responder sends back a SYN ACK to the initiator, it
   <bcp14>SHOULD</bcp14> send back its response with Aggregated Option.
   But, it <bcp14>MAY</bcp14> uses original format of the options for the response
   as long as there is enough option space.</t>
      </section>
      <section anchor="option-bits-registration">
        <name>Option Bits Registration</name>
        <t>As described in Section 3, Aggregated Option has 24 Option
   bits space and each bit represents a single option ID.  The
   allocation of the Option Bits in Aggregated Option is maintained by
   IANA.  If a new option can be aggregatable, one can request
   Option Bit in addition to the current procedure, requesting TCP
   Option Kind Number in <xref target="TCPParameters"/> .  If an option already has
   assigned TCP Option Kind Number, one can request Option bit only
   which will represent the assigned option kind.</t>
      </section>
      <section anchor="utilizing-3rd-and-4th-segments-for-further-negotiations">
        <name>Utilizing 3rd and 4th Segments for Further Negotiations</name>
        <t>Aggregated Option is designed to exchange 1-bit information
   for each TCP extension that indicate the willingness to use
   the feature. Hence, if a TCP extension wants to carry more
   information in the TCP option for the extension, Aggregated
   Option is basically not applicable for it.</t>
        <t>However, it is still possible for these TCP extensions
   to utilize Aggregated Option in some situations.
   It is based on the fact that not all TCP extensions will
   be used right after SYN exchanges. For example, SACK options
   are only used when there are packet losses.
   If a TCP extension is not used right after SYN exchange,
   it is possible to exchange additional parameters by using
   utilizing 3rd segments and 4th segments.
   This approach is already used in MPTCP <xref target="RFC8684"/>. As
   we have a solid precedence, we believe it will not be difficult
   to implement similar negotiation schemes for other features.
   However, discussing negotiation schemes with 3rd and 4th
   segments is out of scope of the document.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>We believe Aggregated Option maintains the same level of security as
   other TCP options does.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests new TCP option codepoint.  In addition, this
   document requires new registry for the option.  They are described in
   the following subsections.</t>
      <section anchor="aggregated-option">
        <name>Aggregated Option</name>
        <t>This document requests to add new option: Aggregated Option to the
   TCP option space registry which points to this document as follows:</t>
        <figure anchor="fig5">
          <name>Aggregated Option Format</name>
          <artwork type="ascii-art" align="center"><![CDATA[
+------+--------+--------------------+----------------+
| Kind | Length |      Meaning       |   Reference    |
+------+--------+--------------------+----------------+
| TBD  |   N    | Aggregated Option  | This Document  |
+------+--------+--------------------+----------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="option-bits-registry-for-aggregated-option">
        <name>Option Bits Registry for Aggregated Option</name>
        <t>This document also requests to create a "Aggregated Option
   Identifiers" registry in IANA registries.  The registry maintains 24
   records which are mapped to the TCP Option Kind Number Records in
   <xref target="TCPParameters"/> The 24 records are divided into 4 groups so that each
   group contains 6 records.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to appreciate Mohamed Boucadair
for his insightful comments on this document.</t>
    </section>
    <section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <t>The contents in this document are the individual contributions from the authors and do not relate
to the authors' positions at their affiliations.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC9293">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies the Transmission Control Protocol (TCP).  TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet.  Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion.  This document collects and brings those changes together with the protocol specification from RFC 793.  This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793.  It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements.  It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state.  The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="9293"/>
          <seriesInfo name="DOI" value="10.17487/RFC9293"/>
        </reference>
        <reference anchor="RFC6994">
          <front>
            <title>Shared Use of Experimental TCP Options</title>
            <author fullname="J. Touch" initials="J." surname="Touch">
              <organization/>
            </author>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document describes how the experimental TCP option codepoints can concurrently support multiple TCP extensions, even within the same connection, using a new IANA TCP experiment identifier. This approach is robust to experiments that are not registered and to those that do not use this sharing mechanism.  It is recommended for all new TCP options that use these codepoints.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6994"/>
          <seriesInfo name="DOI" value="10.17487/RFC6994"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC2018">
          <front>
            <title>TCP Selective Acknowledgment Options</title>
            <author fullname="M. Mathis" initials="M." surname="Mathis">
              <organization/>
            </author>
            <author fullname="J. Mahdavi" initials="J." surname="Mahdavi">
              <organization/>
            </author>
            <author fullname="S. Floyd" initials="S." surname="Floyd">
              <organization/>
            </author>
            <author fullname="A. Romanow" initials="A." surname="Romanow">
              <organization/>
            </author>
            <date month="October" year="1996"/>
            <abstract>
              <t>This memo proposes an implementation of SACK and discusses its performance and related issues.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2018"/>
          <seriesInfo name="DOI" value="10.17487/RFC2018"/>
        </reference>
        <reference anchor="RFC7323">
          <front>
            <title>TCP Extensions for High Performance</title>
            <author fullname="D. Borman" initials="D." surname="Borman">
              <organization/>
            </author>
            <author fullname="B. Braden" initials="B." surname="Braden">
              <organization/>
            </author>
            <author fullname="V. Jacobson" initials="V." surname="Jacobson">
              <organization/>
            </author>
            <author fullname="R. Scheffenegger" initials="R." role="editor" surname="Scheffenegger">
              <organization/>
            </author>
            <date month="September" year="2014"/>
            <abstract>
              <t>This document specifies a set of TCP extensions to improve performance over paths with a large bandwidth * delay product and to provide reliable operation over very high-speed paths.  It defines the TCP Window Scale (WS) option and the TCP Timestamps (TS) option and their semantics.  The Window Scale option is used to support larger receive windows, while the Timestamps option can be used for at least two distinct mechanisms, Protection Against Wrapped Sequences (PAWS) and Round-Trip Time Measurement (RTTM), that are also described herein.</t>
              <t>This document obsoletes RFC 1323 and describes changes from it.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7323"/>
          <seriesInfo name="DOI" value="10.17487/RFC7323"/>
        </reference>
        <reference anchor="RFC7413">
          <front>
            <title>TCP Fast Open</title>
            <author fullname="Y. Cheng" initials="Y." surname="Cheng">
              <organization/>
            </author>
            <author fullname="J. Chu" initials="J." surname="Chu">
              <organization/>
            </author>
            <author fullname="S. Radhakrishnan" initials="S." surname="Radhakrishnan">
              <organization/>
            </author>
            <author fullname="A. Jain" initials="A." surname="Jain">
              <organization/>
            </author>
            <date month="December" year="2014"/>
            <abstract>
              <t>This document describes an experimental TCP mechanism called TCP Fast Open (TFO).  TFO allows data to be carried in the SYN and SYN-ACK packets and consumed by the receiving end during the initial connection handshake, and saves up to one full round-trip time (RTT) compared to the standard TCP, which requires a three-way handshake (3WHS) to complete before data can be exchanged.  However, TFO deviates from the standard TCP semantics, since the data in the SYN could be replayed to an application in some rare circumstances.  Applications should not use TFO unless they can tolerate this issue, as detailed in the Applicability section.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7413"/>
          <seriesInfo name="DOI" value="10.17487/RFC7413"/>
        </reference>
        <reference anchor="RFC5925">
          <front>
            <title>The TCP Authentication Option</title>
            <author fullname="J. Touch" initials="J." surname="Touch">
              <organization/>
            </author>
            <author fullname="A. Mankin" initials="A." surname="Mankin">
              <organization/>
            </author>
            <author fullname="R. Bonica" initials="R." surname="Bonica">
              <organization/>
            </author>
            <date month="June" year="2010"/>
            <abstract>
              <t>This document specifies the TCP Authentication Option (TCP-AO), which obsoletes the TCP MD5 Signature option of RFC 2385 (TCP MD5).  TCP-AO specifies the use of stronger Message Authentication Codes (MACs), protects against replays even for long-lived TCP connections, and provides more details on the association of security with TCP connections than TCP MD5.  TCP-AO is compatible with either a static Master Key Tuple (MKT) configuration or an external, out-of-band MKT management mechanism; in either case, TCP-AO also protects connections when using the same MKT across repeated instances of a connection, using traffic keys derived from the MKT, and coordinates MKT changes between endpoints.  The result is intended to support current infrastructure uses of TCP MD5, such as to protect long-lived connections (as used, e.g., in BGP and LDP), and to support a larger set of MACs with minimal other system and operational changes.  TCP-AO uses a different option identifier than TCP MD5, even though TCP-AO and TCP MD5 are never permitted to be used simultaneously.  TCP-AO supports IPv6, and is fully compatible with the proposed requirements for the replacement of TCP MD5.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5925"/>
          <seriesInfo name="DOI" value="10.17487/RFC5925"/>
        </reference>
        <reference anchor="RFC8684">
          <front>
            <title>TCP Extensions for Multipath Operation with Multiple Addresses</title>
            <author fullname="A. Ford" initials="A." surname="Ford">
              <organization/>
            </author>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu">
              <organization/>
            </author>
            <author fullname="M. Handley" initials="M." surname="Handley">
              <organization/>
            </author>
            <author fullname="O. Bonaventure" initials="O." surname="Bonaventure">
              <organization/>
            </author>
            <author fullname="C. Paasch" initials="C." surname="Paasch">
              <organization/>
            </author>
            <date month="March" year="2020"/>
            <abstract>
              <t>TCP/IP communication is currently restricted to a single path per connection, yet multiple paths often exist between peers. The simultaneous use of these multiple paths for a TCP/IP session would improve resource usage within the network and thus improve user experience through higher throughput and improved resilience to network failure.</t>
              <t>Multipath TCP provides the ability to simultaneously use multiple paths between peers. This document presents a set of extensions to traditional TCP to support multipath operation. The protocol offers the same type of service to applications as TCP (i.e., a reliable bytestream), and it provides the components necessary to establish and use multiple TCP flows across potentially disjoint paths.</t>
              <t>This document specifies v1 of Multipath TCP, obsoleting v0 as specified in RFC 6824, through clarifications and modifications primarily driven by deployment experience.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8684"/>
          <seriesInfo name="DOI" value="10.17487/RFC8684"/>
        </reference>
        <reference anchor="I-D.allman-tcpx2-hack">
          <front>
            <title>TCPx2: Don't Fence Me In</title>
            <author fullname="Mark Allman" initials="M." surname="Allman">
              <organization>ICSI</organization>
            </author>
            <date day="8" month="May" year="2006"/>
            <abstract>
              <t>    In this document we aim to solve several problems caused by TCP's
    lack of header space for certain values by increasing the size of
    header without changing the semantics of the protocol.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-allman-tcpx2-hack-00"/>
        </reference>
        <reference anchor="I-D.gomez-tcpm-ack-rate-request">
          <front>
            <title>TCP ACK Rate Request Option</title>
            <author fullname="Carles Gomez" initials="C." surname="Gomez">
              <organization>UPC</organization>
            </author>
            <author fullname="Jon Crowcroft" initials="J." surname="Crowcroft">
              <organization>University of Cambridge</organization>
            </author>
            <date day="12" month="October" year="2022"/>
            <abstract>
              <t>   TCP Delayed Acknowledgments (ACKs) is a widely deployed mechanism
   that allows reducing protocol overhead in many scenarios.  However,
   Delayed ACKs may also contribute to suboptimal performance.  When a
   relatively large congestion window (cwnd) can be used, less frequent
   ACKs may be desirable.  On the other hand, in relatively small cwnd
   scenarios, eliciting an immediate ACK may avoid unnecessary delays
   that may be incurred by the Delayed ACKs mechanism.  This document
   specifies the TCP ACK Rate Request (TARR) option.  This option allows
   a sender to request the ACK rate to be used by a receiver, and it
   also allows to request immediate ACKs from a receiver.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-gomez-tcpm-ack-rate-request-06"/>
        </reference>
        <reference anchor="I-D.eddy-tcp-loo">
          <front>
            <title>Extending the Space Available for TCP Options</title>
            <author fullname="Wesley Eddy" initials="W." surname="Eddy">
              <organization>NASA GRC/Verizon FNS</organization>
            </author>
            <author fullname="Adam Langley" initials="A." surname="Langley">
              <organization>Google Inc</organization>
            </author>
            <date day="1" month="July" year="2008"/>
            <abstract>
              <t>This document describes a method for increasing the space available
for TCP options.  Two new TCP options (LO and SLO) are detailed which
reduce the limitations imposed by the TCP header's Data Offset field.
The LO option provides this extension after connection establishment,
and the SLO option aids in transmission of lengthy connection
initialization and configuration options.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-eddy-tcp-loo-04"/>
        </reference>
        <reference anchor="I-D.yourtchenko-tcp-loic">
          <front>
            <title>Introducing TCP Long Options by Invalid Checksum</title>
            <author fullname="Andrew Yourtchenko" initials="A." surname="Yourtchenko">
              <organization>Cisco</organization>
            </author>
            <date day="11" month="April" year="2011"/>
            <abstract>
              <t>This document discusses a possible approach to TCP option space
expansion, which allows placing the long TCP options into the TCP SYN
segments.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-yourtchenko-tcp-loic-00"/>
        </reference>
        <reference anchor="I-D.touch-tcpm-tcp-syn-ext-opt">
          <front>
            <title>TCP SYN Extended Option Space Using an Out-of-Band Segment</title>
            <author fullname="Dr. Joseph D. Touch" initials="J. D." surname="Touch">
              <organization>Independent Consultant</organization>
            </author>
            <author fullname="Ted Faber" initials="T." surname="Faber">
              <organization>The Aerospace Corporation</organization>
            </author>
            <date day="22" month="October" year="2022"/>
            <abstract>
              <t>   This document describes an experimental method to extend the option
   space for connection parameters within the initial TCP SYN segment,
   at the start of a TCP connection. This method effectively extends
   the option space of an initial SYN by using an additional coupled
   segment that is sent 'out-of-band'. It complements the proposed
   Extended Data Offset (EDO) option that is applicable only after the
   initial segment.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-touch-tcpm-tcp-syn-ext-opt-12"/>
        </reference>
        <reference anchor="I-D.briscoe-tcpm-inner-space">
          <front>
            <title>Inner Space for TCP Options</title>
            <author fullname="Bob Briscoe" initials="B." surname="Briscoe">
              <organization>BT</organization>
            </author>
            <date day="27" month="October" year="2014"/>
            <abstract>
              <t>   This document describes an experimental method to extend the limited
   space for control options in every segment of a TCP connection.  It
   can use a dual handshake so that, from the very first SYN segment,
   extra option space can immediately start to be used optimistically.
   At the same time a dual handshake prevents a legacy server from
   getting confused and sending the control options to the application
   as user-data.  The dual handshake is only one strategy - a single
   handshake will usually suffice once deployment has got started.  The
   protocol is designed to traverse most known middleboxes including
   connection splitters, because it sits wholly within the TCP Data.  It
   also provides reliable ordered delivery for control options.
   Therefore, it should allow new TCP options to be introduced i) with
   minimal middlebox traversal problems; ii) with incremental deployment
   from legacy servers; iii) without an extra round of handshaking delay
   iv) without having to provide its own loss recovery and ordering
   mechanism and v) without arbitrary limits on available space.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-briscoe-tcpm-inner-space-01"/>
        </reference>
        <reference anchor="I-D.boucadair-tcpm-capability-option">
          <front>
            <title>TCP Capability Option</title>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Christian Jacquenet" initials="C." surname="Jacquenet">
              <organization>Orange</organization>
            </author>
            <date day="8" month="December" year="2016"/>
            <abstract>
              <t>   This document defines an experimental TCP option that can be used to
   negotiate a set of options that are supported by two TCP endpoints.
   The main motivation for designing this option is the optimization of
   the option space for SYN segments.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-boucadair-tcpm-capability-option-01"/>
        </reference>
        <reference anchor="I-D.draft-ietf-tcpm-tcp-edo">
          <front>
            <title>TCP Extended Data Offset Option</title>
            <author fullname="Dr. Joseph D. Touch" initials="J. D." surname="Touch">
              <organization>Independent Consultant</organization>
            </author>
            <author fullname="Wesley Eddy" initials="W." surname="Eddy">
              <organization>MTI Systems</organization>
            </author>
            <date day="22" month="October" year="2022"/>
            <abstract>
              <t>   TCP segments include a Data Offset field to indicate space for TCP
   options but the size of the field can limit the space available for
   complex options such as SACK and Multipath TCP and can limit the
   combination of such options supported in a single connection. This
   document updates RFC 9293 with an optional TCP extension to that
   space to support the use of multiple large options. It also explains
   why the initial SYN of a connection cannot be extending a single
   segment.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tcpm-tcp-edo-13"/>
        </reference>
        <reference anchor="TCPParameters" target="https://www.iana.org/assignments/tcp-parameters/tcp-parameters.xhtml#tcp-parameters-1">
          <front>
            <title>Transmission Control Protocol (TCP) Parameters</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAIAyDmQAA7Vb63Ibx3L+j6eYUD/iCwATJHQhK0oFEiWbOSKpiFRUKpXK
NdgdAHO4F5ydXYGwLD9LniVPlq97LjsLLGU7cXTqlLG7Mz09PX35uns4Go0G
ta4zdSoOZstlpZayVqm4Wte6LMSirMT1+0v/eL2WiRIv7mpVGDwfDOR8XqlP
nak/X28LDD8YpGVSyBx000ou6lGhzUqnclQn63wkl8uR2RYjdVePDo8HCSYu
y2p7KkydDgZ6XZ2KumpMfXR4eHJ4NJCVkqfi5vo/B5uyul1WZbPG4/PXF+Id
nnWxFD/Su8Gt2mJAeirOi1pVhapHZ7T2YGBqWaQ/y6wswM9WmYHJZVX//I+m
rJU5FUU5WOtT8aEuk6EwZVVXamHwa5vTj4+DgWzqVVmdDsRoIPBPF5j0fiwu
7Z74nd3r+xJvFk2uO9/KaikL/YskIZ6KWS5/gTDfqbm4VtUnnYAfGuWFOXt3
zc8GbKj6VEynh+JGVdVWzD4pccnfEl1DWtdK1jg6fgPxM/V3MzugTMHOyZPJ
4Yl7boqaJPz22g5QudQZtm7SsVb14t+W9DxOynwwKMoqB6+fFDYs3rx8fnJ0
cux+Pjo5mZ4OdLHYGXJ0OHnifj4+PvKjH08n/ufDk6OH7ueTR0+m9PN8dDaW
WZbLgpTi7mi0ksmt/7Asc/WLU5bkdlRBQ0aV+kejTO2HqDTd0ohRVpb+3bZs
qjpZqeK2dJ904r/VZZOsLEn65PWvXAeK80qbpFR2jC4KVY0MqXz4Dgoylbqy
IxK5lnOd4SiICEnfjbMaT2Jtl1MpmMR3qO1rWUFZoKHmlI9CCG+BN5UsTK4N
WZd4XuLEyky8rkooJn58g7nfinb2gZ8tqyUpyqqu1+b0hx82m81Yy0KOoXc/
SBBbFrkqavMD8bEO03cex3erOs8edF+OJoPRaATVhDLKpKYFwYSw2xUsHKGN
MIms8KtSBvLHD2mEro3I5Z3Om1xkqljWKxqY6VyTf6lLIgXFnm9hgWNQXfmv
bCVirqCKCiTKSgnagV7oRBY1bI89klFL3hORwWrQI8eUEY3BAhgmofQ4w8Sy
uiqbLAVZoe6SlSyWGJM2FfkOkCMqBVxQrXn1wBB8WEPLiHVVrksDfiTGbZgD
J4NoGlExUL5ciXolawF+hfSOUeRNVut1piIBmt3d4NlKRmLPxRKDvaRLS5LF
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

-->

</rfc>
