<?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-02" category="info" 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-02"/>
    <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="February" day="28"/>
    <area>TSV</area>
    <workgroup>TCPM Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>TCP option space is scarce resource as its max 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 max length is limited to
   40 bytes.  This limitation is a nominal issue especially for SYN
   segment.  This is because although a TCP endpoint can send only one
   SYN segment to the 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 them, 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"/>
        <xref target="I-D.allman-tcpx2-hack"/>. These proposals have adopted one or both of
   the following two types of approach.</t>
      <t>o  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)</t>
      <t>o  Using Multiple SYN or SYN-like segment: This approach tries to use
      multiple SYN segment or additional segment that can be treated as
      a SYN segment.  (E.g sending another SYN with wrong checksum or
      from different source port)</t>
      <t>However, these approach require a certain complexity as it needs to
   update fundamental design of TCP and have potential risks for middlebox
   interventions because of it.
   Instead, we propose a very simple approach that can aggregate multiple
   TCP options into a single options. As this approach does not require
   drastic changes in TCP SYN negotiation scheme, the risk for middlebox
   interventions will be minimized.
   <xref target="I-D.boucadair-tcpm-capability-option"/> also propose a scheme to
   aggregate multiple options. However, our approach requires less option
   space in order to aggregate more options and to save option sapce
   for other options.</t>
      <t>One limitations of this approach is
   that it cannot aggregate all kinds of options. However, we believe
   it still will be useful especially for newly defined experimental options.
   One example use case is <xref target="I-D.gomez-tcpm-ack-rate-request"/>. In order
   to use the feature proposed in the draft, endpoints need to exchange
   a 4 bytes TCP option during 3 way handshake
   so that it can confirm the peer is capable of the feature.
   However, whether an endpoint supports the feature or not is just 1
   bit information. Using 4 bytes 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 this kind of cases, an endpoint can confirm that the peer supports the
   feature it wants to use by using 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 beleive
   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>
    </section>
    <section anchor="aggregated-option-design">
      <name>Aggregated Option Design</name>
      <section anchor="option-format">
        <name>Option Format</name>
        <t>This 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 use 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 bytes 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
   is split into 4 groups,
   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.</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 are appeared 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 is 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>Aggregated Option <bcp14>MUST</bcp14> be only used in SYN segments.  When an endpoint
   received SYN segments with Aggregated Option, it checks Aggregated
   Blocks in the option.  Otherwise, he 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 SYN ACK to the initiator, it
   <bcp14>SHOULD</bcp14> send back its response with Aggregated Option.
   But, it <bcp14>MAY</bcp14> uses original formats 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 a 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="contributors">
      <name>Contributors</name>
      <t>The contents in this documents are the individual contributions from the authors and do not relate
to the authors' positions at their affilications.</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="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:
H4sIAE/t/mMAA71b63IbN5b+z6fA0j822ZC0SNEXqdZbS1t2oh1L8lj2eFwu
VwrsBkmM+sJpdItiEudZ5lnmyeY7B5dGk7Sd7KbWiStsNPrg4OA7d2Q4HPZq
XWfqVPRny2WllrJWqbha17osxKKsxPX7S/94vZaJEs/valUYPPd7cj6v1G3n
0x+vtwWm93tpmRQyB920kot6WGiz0qkc1sk6H8rlcmi2xVDd1cOjSS/Bh8uy
2p4KXSzKXk+vq1NRV42pJ0dHJ5ggKyVPxZvrv/Q2ZXWzrMpmjcdnry7EOzzr
Yim+p7HejdpiQnoqzotaVYWqh2e0eK9nalmkP8qsLMDQVpmeyWVV//j3pqyV
ORVF2VvrU/GhLpOBMGVVV2ph8Gub04+PvZ5s6lVZnfbEsCfwRxf46P1IXNpN
8Zjd7PsSI4sm1513ZbWUhf5JkhRPxSyXP0Ga79RcXKvqVifgh2Z5ac7eXfOz
ARuqPhXT6ZF4o6pqK2a3Slzyu0TXENe1kjXOjkcgf6b+bmYnlCnYOXk8Pjpx
z01Rk4jfXtsJKpc6w9ZNOtKqXvz3kp5HSZn3ekVZ5eD1VmHD4vWLZyeTk2P3
8+HJyfS0R8fUnTI5Gj92Px8dT/zsR9Ox//ngZPLA/Xz88PGUfp4Pz0Yyy3JZ
ECruJsOVTG78i2WZq58cWpKbYQWIDCv190aZ2k9RabqlGcOsLP3YtmyqOlmp
4qZ0r3Ti39Vlk6wsSXrlAViuA8V5pU1SKjtHF4WqhoYwH96DgkylruyMRK7l
XGc4CiJC0u9hInD5SlZAAyBoTlnWQngde1PJwuTakP6IZyWOpMzEq6oE8vDj
G3z7rWi/7vuvZbUkJKzqem1O79/fbDYjLQs5ArDuSxBbFrkqanOf9rUOn+88
ju5WdZ7d6w4Ox73hcAjsAW0yqWlBMCHsfgTvXmgjTCIr/KqUgYDxQxqhayNy
eScyVSzrFU3KdK7JetQlkQFq51uo1wgUV/4tq4CYK+BM4fOyUoK41wudyKKG
YrG9MWrJ+yEyWAkgcQwZ0RgsgGkSiMYBJZbNVdlkKcgKdZesZLHEnLSpyDCA
HFEpYGBqzasHhmChGlpGrKtyXRrwIzFvwxy4/UefERUDZOVK1CtZC/ArpDd7
Im+yWq8zFQnP7O4Gz1YyEnsulpjspVxakiwO/zHRx4Y8B8pv6Fhs5JaoYJ+p
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
/p18mvZJL73RFd3M1BRZOGPxL+TuxccANQAA

-->

</rfc>
