<?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.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-nishida-tcpm-agg-syn-ext-01" 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-01"/>
    <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="2022" month="October" day="23"/>
    <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.</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 case, at first, an endpoint confirms that the peer supports the
   feature it wants to use by using aggregated option. After that, it can
   negotiate required parameters through 3rd segment and 4th segment.
   This type of approach is used in MPTCP <xref target="RFC8684"/>.</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>
  </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="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:
H4sIAIjpVGMAA71a65Ibt3L+z6dAVn/smKSWXOqyrDgValeyN0d7iVaKolKp
XOAMSCI7F57BzHJpW36WPEueLF83LoMhKdlOXJGtEgeDaTQa3V/fMBgMerWu
MzUVR7PlslJLWatUXK9rXRZiUVbi9sOVf7xdy0SJlw+1Kgyej3pyPq/UfefT
n263BaYf9dIyKWQOumklF/Wg0GalUzmok3U+kMvlwGyLgXqoB8ejXoIPl2W1
nQpdLMpeT6+rqairxtTj4+PT43FPVkpOxdvbf+9tyupuWZXNGo9nN5fiPZ51
sRQ/0FjvTm0xIZ2Ki6JWVaHqwTkt3uuZWhbpTzIrCzC0VaZnclnVP/29KWtl
pqIoe2s9FR/rMukLU1Z1pRYGv7Y5/fjU68mmXpXVtCcGPYE/usBHH4biym6K
x+xmP5QYWTS57rwrq6Us9M+SpDgVs1z+DGm+V3Nxq6p7nYAfmuWlOXt/y88G
bKh6KiaTY/FWVdVWzO6VuOJ3ia4hrlsla5wdj0D+TP39zE4oU7Bz+nx0fOqe
m6ImEb+7tRNULnWGrZt0qFW9+JclPQ+TMu/1irLKweu9wobFm1dnp+PTE/fz
6enpZNqjY+pOGR+Pnrufz07Gfvazycj/fHI6fuJ+Pn/6fEI/LwbnQ5lluSxI
Kx7Gg5VM7vyLZZmrn522JHeDCioyqNTfG2VqP0Wl6ZZmDLKy9GPbsqnqZKWK
u9K90ol/V5dNsrIk6ZVXwHIdKM4rbZJS2Tm6KFQ1MKTz0x4mQN9uZIVThmqZ
KctQCG87bytZmFwbsgtxVkLUZSZuqhIahR/f4NtvRfv1kf9aVks64VVdr830
8ePNZjPUspBDKMxjCWLLIldFbR4Tv+vw+c7j8GFV59mj7uBg1BsMBtApaJFM
aloQTIjSWjLvSmgjTCIr/KqUgeDwQxqhayNy+SAyVSzrFU3KdK4JFeqSyEAb
51uYzRAUV/4tq7aYK+iPwudlpQRxrxc6kUUNg2EcMWrJ+yEyWAmH7xgyojFY
ANMkNBWCTyybq7LJUpAV6iFZyWKJOWlTkcGDHFEpABy15tUDQ0CehpYR66pc
lwb8SMzbMAdu/9FnRMVAY3Il6pWsBfgV0sOZyJus1utMRcIzu7vBs5WMxJ6L
JSZ7KZeWJIvDf0z0sSHPgfIbOhEbuSUq2GdqVvJODcV7TQeAFYzOiYlUkVD7
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
4YIEBRdteSnkG089Cao3/Q/JTek70DIAAA==

-->

</rfc>
