<?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.7.29 (Ruby 3.2.3) -->
<?rfc tocompact="yes"?>
<?rfc tocindent="yes"?>
<?rfc compact="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bonica-tcpm-extended-options-01" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.0 -->
  <front>
    <title abbrev="tcp-ext-opt">TCP Extended Options</title>
    <seriesInfo name="Internet-Draft" value="draft-bonica-tcpm-extended-options-01"/>
    <author initials="R." surname="Bonica" fullname="Ron Bonica">
      <organization>HPE</organization>
      <address>
        <postal>
          <city>Herndon</city>
          <region>Virginia</region>
          <country>USA</country>
        </postal>
        <email>rbonica@juniper.net</email>
      </address>
    </author>
    <author initials="T." surname="Li" fullname="Tony Li">
      <organization>HPE</organization>
      <address>
        <postal>
          <city>Sunnyvale</city>
          <region>California</region>
          <country>USA</country>
        </postal>
        <email>tli@juniper.net</email>
      </address>
    </author>
    <date year="2025" month="July" day="20"/>
    <area>Transport</area>
    <workgroup>TCPM Working Group</workgroup>
    <keyword>TCP</keyword>
    <abstract>
      <?line 54?>
<t>The TCP header can accommodates 40 octets of TCP options. However, modern applications may require more than 40 octets of TCP Options. Therefore, this document describes an experiment that extends the TCP Options field. If this experiment is successful, it will demonstrate that the extension procedures described herein are implementable and deployable. It will also demonstrate that they maintain backwards compatibility.</t>
    </abstract>
  </front>
  <middle>
    <?line 57?>

<section anchor="intro">
      <name>Introduction</name>
      <t><xref target="tcpseg"/> depicts a TCP <xref target="RFC9293"/> segment.</t>
      <figure anchor="tcpseg">
        <name>TCP Segment</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="384" width="568" viewBox="0 0 568 384" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,64 L 8,304" fill="none" stroke="black"/>
              <path d="M 72,160 L 72,224" fill="none" stroke="black"/>
              <path d="M 136,160 L 136,224" fill="none" stroke="black"/>
              <path d="M 152,160 L 152,224" fill="none" stroke="black"/>
              <path d="M 168,160 L 168,224" fill="none" stroke="black"/>
              <path d="M 184,160 L 184,224" fill="none" stroke="black"/>
              <path d="M 200,160 L 200,224" fill="none" stroke="black"/>
              <path d="M 216,160 L 216,224" fill="none" stroke="black"/>
              <path d="M 232,160 L 232,224" fill="none" stroke="black"/>
              <path d="M 248,160 L 248,224" fill="none" stroke="black"/>
              <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
              <path d="M 264,160 L 264,256" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,288" fill="none" stroke="black"/>
              <path d="M 520,336 L 520,352" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
              <path d="M 8,224 L 520,224" fill="none" stroke="black"/>
              <path d="M 8,256 L 520,256" fill="none" stroke="black"/>
              <path d="M 8,288 L 520,288" fill="none" stroke="black"/>
              <path d="M 8,352 L 520,352" fill="none" stroke="black"/>
              <g class="text">
                <text x="8" y="36">0</text>
                <text x="168" y="36">1</text>
                <text x="328" y="36">2</text>
                <text x="488" y="36">3</text>
                <text x="8" y="52">0</text>
                <text x="24" y="52">1</text>
                <text x="40" y="52">2</text>
                <text x="56" y="52">3</text>
                <text x="72" y="52">4</text>
                <text x="88" y="52">5</text>
                <text x="104" y="52">6</text>
                <text x="120" y="52">7</text>
                <text x="136" y="52">8</text>
                <text x="152" y="52">9</text>
                <text x="168" y="52">0</text>
                <text x="184" y="52">1</text>
                <text x="200" y="52">2</text>
                <text x="216" y="52">3</text>
                <text x="232" y="52">4</text>
                <text x="248" y="52">5</text>
                <text x="264" y="52">6</text>
                <text x="280" y="52">7</text>
                <text x="296" y="52">8</text>
                <text x="312" y="52">9</text>
                <text x="328" y="52">0</text>
                <text x="344" y="52">1</text>
                <text x="360" y="52">2</text>
                <text x="376" y="52">3</text>
                <text x="392" y="52">4</text>
                <text x="408" y="52">5</text>
                <text x="424" y="52">6</text>
                <text x="440" y="52">7</text>
                <text x="456" y="52">8</text>
                <text x="472" y="52">9</text>
                <text x="488" y="52">0</text>
                <text x="504" y="52">1</text>
                <text x="544" y="68">=</text>
                <text x="116" y="84">Source</text>
                <text x="164" y="84">Port</text>
                <text x="368" y="84">Destination</text>
                <text x="436" y="84">Port</text>
                <text x="236" y="116">Sequence</text>
                <text x="300" y="116">Number</text>
                <text x="544" y="116">T</text>
                <text x="544" y="132">C</text>
                <text x="228" y="148">Acknowledgment</text>
                <text x="316" y="148">Number</text>
                <text x="544" y="148">P</text>
                <text x="44" y="180">Data</text>
                <text x="144" y="180">C</text>
                <text x="160" y="180">E</text>
                <text x="176" y="180">U</text>
                <text x="192" y="180">A</text>
                <text x="208" y="180">P</text>
                <text x="224" y="180">R</text>
                <text x="240" y="180">S</text>
                <text x="256" y="180">F</text>
                <text x="544" y="180">H</text>
                <text x="44" y="196">Offset</text>
                <text x="104" y="196">Rsrvd</text>
                <text x="144" y="196">W</text>
                <text x="160" y="196">C</text>
                <text x="176" y="196">R</text>
                <text x="192" y="196">C</text>
                <text x="208" y="196">S</text>
                <text x="224" y="196">S</text>
                <text x="240" y="196">Y</text>
                <text x="256" y="196">I</text>
                <text x="388" y="196">Window</text>
                <text x="544" y="196">E</text>
                <text x="144" y="212">R</text>
                <text x="160" y="212">E</text>
                <text x="176" y="212">G</text>
                <text x="192" y="212">K</text>
                <text x="208" y="212">H</text>
                <text x="224" y="212">T</text>
                <text x="240" y="212">N</text>
                <text x="256" y="212">N</text>
                <text x="544" y="212">A</text>
                <text x="544" y="228">D</text>
                <text x="132" y="244">Checksum</text>
                <text x="364" y="244">Urgent</text>
                <text x="424" y="244">Pointer</text>
                <text x="544" y="244">E</text>
                <text x="544" y="260">R</text>
                <text x="264" y="276">[Options]</text>
                <text x="544" y="292">=</text>
                <text x="520" y="308">:</text>
                <text x="8" y="324">:</text>
                <text x="260" y="324">Data</text>
                <text x="520" y="324">:</text>
                <text x="8" y="340">:</text>
                <text x="544" y="356">=</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  =
    |          Source Port          |       Destination Port        |   
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
    |                        Sequence Number                        |  T
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  C
    |                    Acknowledgment Number                      |  P
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
    |  Data |       |C|E|U|A|P|R|S|F|                               |  H  
    | Offset| Rsrvd |W|C|R|C|S|S|Y|I|            Window             |  E 
    |       |       |R|E|G|K|H|T|N|N|                               |  A 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  D 
    |           Checksum            |         Urgent Pointer        |  E
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  R
    |                           [Options]                           |   
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  =
    |                                                               :  
    :                             Data                              :   
    :                                                               |  
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  = 
]]></artwork>
        </artset>
      </figure>
      <t>Every TCP segment contains a header. Some TCP segments also contain data.</t>
      <t>Each field in the TCP header, except for the last, has a fixed length. 
The fixed length fields in the TCP header occupy 20 octets.  One of these
fields is called the Data Offset field.</t>
      <t>The last field in the TCP header is called the Options field. When present, 
the Options field contains a list of TCP options <xref target="TCPOPTS"/>. Its length varies from 0 to 40 octets.</t>
      <t>The Data Offset field represents the offset of the Data field in the TCP
segment, measured in 4-octet units. The Data Offset field also determines the length of the 
Options field. This is because the Options field consumes all of the 
space between the fixed length fields in the TCP header and the Data field.</t>
      <t>The Data Offset field contains 4 bits. So, its value ranges nominally from
0 to 15. However, the value of the Data Offset field must be 5 or greater. This 
is because the Data field must follow the fixed length fields in the TCP header. As stated
above, those fields occupy 20 octets.</t>
      <t>Because the value of the Data Offset field cannot exceed 15, the offset of the Data
field cannot exceed 60 and the length of the Options field cannot exceed 40
(i.e., 60 minus 20).</t>
      <t>Modern applications may require more than 40 octets of TCP Options. Therefore, this document describes an experiment that extends the TCP Options field. If this experiment is successful, it will demonstrate that the extension procedures described herein are implementable and deployable. It will also demonstrate that they maintain backwards compatibility.</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 BCP14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="extending-the-tcp-options-field">
      <name>Extending The TCP Options field</name>
      <t>According to <xref target="RFC9293"/>:</t>
      <ul spacing="normal">
        <li>
          <t>The Data Offset field must have a value of 5 or greater</t>
        </li>
        <li>
          <t>TCP Options can be present only when the Data Offset field has a value greater than 5.</t>
        </li>
      </ul>
      <t>This document allows the Data Offset field to have a value of 0. When the Data Offset 
field has a value of 0, the format of the TCP Options field is as depicted in <xref target="extopt"/>.</t>
      <figure anchor="extopt">
        <name>TCP Options</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="560" viewBox="0 0 560 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,64 L 8,112" fill="none" stroke="black"/>
              <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
              <g class="text">
                <text x="8" y="36">0</text>
                <text x="168" y="36">1</text>
                <text x="328" y="36">2</text>
                <text x="488" y="36">3</text>
                <text x="8" y="52">0</text>
                <text x="24" y="52">1</text>
                <text x="40" y="52">2</text>
                <text x="56" y="52">3</text>
                <text x="72" y="52">4</text>
                <text x="88" y="52">5</text>
                <text x="104" y="52">6</text>
                <text x="120" y="52">7</text>
                <text x="136" y="52">8</text>
                <text x="152" y="52">9</text>
                <text x="168" y="52">0</text>
                <text x="184" y="52">1</text>
                <text x="200" y="52">2</text>
                <text x="216" y="52">3</text>
                <text x="232" y="52">4</text>
                <text x="248" y="52">5</text>
                <text x="264" y="52">6</text>
                <text x="280" y="52">7</text>
                <text x="296" y="52">8</text>
                <text x="312" y="52">9</text>
                <text x="328" y="52">0</text>
                <text x="344" y="52">1</text>
                <text x="360" y="52">2</text>
                <text x="376" y="52">3</text>
                <text x="392" y="52">4</text>
                <text x="408" y="52">5</text>
                <text x="424" y="52">6</text>
                <text x="440" y="52">7</text>
                <text x="456" y="52">8</text>
                <text x="472" y="52">9</text>
                <text x="488" y="52">0</text>
                <text x="504" y="52">1</text>
                <text x="76" y="84">Length</text>
                <text x="316" y="84">Reserved</text>
                <text x="520" y="116">:</text>
                <text x="8" y="132">:</text>
                <text x="228" y="132">Individual</text>
                <text x="304" y="132">Options</text>
                <text x="520" y="132">:</text>
                <text x="8" y="148">:</text>
                <text x="520" y="148">:</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
    |     Length    |                  Reserved                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               :
    :                      Individual Options                       :   
    :                                                               :  
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    
]]></artwork>
        </artset>
      </figure>
      <ul spacing="normal">
        <li>
          <t>Length: 8-bit unsigned integer. 
Represents the length of the TCP Options field, including the length and reserved fields. Measured in 4-octet units. Value <bcp14>MUST</bcp14> be greater than 10.</t>
        </li>
        <li>
          <t>Reserved: <bcp14>MUST</bcp14> be set to 0 by the sender and <bcp14>MUST</bcp14> be ignored by the receiver.</t>
        </li>
        <li>
          <t>Individual Options: Defined in <xref target="RFC9293"/>.</t>
        </li>
      </ul>
      <t>When a TCP segment contains 40 bytes of TCP Options or fewer, it <bcp14>MUST</bcp14> be formatted exactly as described in <xref target="RFC9293"/>. When a TCP segment contains more than 40 bytes of TCP Options, the Data Offset field <bcp14>MUST</bcp14> be equal to 0 and the Options field <bcp14>MUST</bcp14> be formatted as described in this section.</t>
      <t>When the Data Offset field is equal to 0, a TCP segment can include over 1,000 bytes of options. While this may be
required in the distant future, it is <bcp14>RECOMMENDED</bcp14> that TCP options not exceed 256 bytes.</t>
    </section>
    <section anchor="checksum-considerations">
      <name>Checksum Considerations</name>
      <t>As per <xref target="RFC9293"/>, checksums are calculated over the entire Options field.</t>
    </section>
    <section anchor="signaling">
      <name>Signaling</name>
      <t>TCP endpoints that can process segments with Data Offset equal to 0 <bcp14>MUST</bcp14> signal their ability to do so. They
can use the Extended Options Permitted (EOP) Option to do so. If a TCP endpoint sends an EOP Option, it must do 
so during connection establishment. <xref target="eopo"/> depicts the EOP Option.</t>
      <figure anchor="eopo">
        <name>Extended Options Permitted Option</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="96" width="184" viewBox="0 0 184 96" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 88,32 L 88,64" fill="none" stroke="black"/>
              <path d="M 168,32 L 168,64" fill="none" stroke="black"/>
              <path d="M 8,32 L 168,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 168,64" fill="none" stroke="black"/>
              <g class="text">
                <text x="44" y="52">Kind</text>
                <text x="132" y="52">Length</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                   +---------+---------+
                   |  Kind   |  Length |
                   +---------+---------+ 
]]></artwork>
        </artset>
      </figure>
      <ul spacing="normal">
        <li>
          <t>Kind - Extended Options Permitted (EPO). Value TBD</t>
        </li>
        <li>
          <t>Length - <bcp14>MUST</bcp14> be equal to 2.</t>
        </li>
      </ul>
      <t>TCP endpoints also can signal their ability to process segments with Data Offset equal to 0 by sending such
a segment during connection establishment.</t>
      <t>TCP endpoints <bcp14>MUST</bcp14> maintain per-connection state regarding their peers' ability to process segments with Data Offset equal to 0.</t>
    </section>
    <section anchor="backward">
      <name>Backwards Compatibility Considerations</name>
      <section anchor="extended-options-used-during-connection-establishment">
        <name>Extended Options Used During Connection Establishment</name>
        <t>When one TCP endpoint is not capable of processing segments with Data Offset equal to 0, and such a
segment is sent during connection establishment, the segment will be ignored and the connection will not
establish.</t>
      </section>
      <section anchor="extended-options-used-during-connection-establishment-1">
        <name>Extended Options Used During Connection Establishment</name>
        <t>Once a TCP session has been established, TCP implementations <bcp14>MUST NOT</bcp14> send segments with Data Offset equal to 0
unless their peer has signaled the ability to process them.</t>
      </section>
      <section anchor="middleboxes-and-accelerators">
        <name>Middleboxes and Accelerators</name>
        <t>Legacy middleboxes and hardware accelerators discard packets with Data Offset equal to 0. Therefore,
this experiment should not be performed in the presence of such devices.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to add the following entry to the "TCP Option Kind Numbers" registry (https://www.iana.org/assignments/tcp-parameters/tcp-parameters.xhtml#tcp-parameters-1).</t>
      <figure anchor="iana">
        <name>IANA Actions</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="80" width="504" viewBox="0 0 504 80" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 64,32 L 64,64" fill="none" stroke="black"/>
              <path d="M 136,32 L 136,64" fill="none" stroke="black"/>
              <path d="M 368,32 L 368,64" fill="none" stroke="black"/>
              <path d="M 496,32 L 496,64" fill="none" stroke="black"/>
              <path d="M 16,48 L 488,48" fill="none" stroke="black"/>
              <g class="text">
                <text x="36" y="36">Kind</text>
                <text x="100" y="36">Length</text>
                <text x="176" y="36">Meaning</text>
                <text x="416" y="36">Reference</text>
                <text x="32" y="68">TBD</text>
                <text x="96" y="68">2</text>
                <text x="180" y="68">Extended</text>
                <text x="248" y="68">Options</text>
                <text x="320" y="68">Permitted</text>
                <text x="396" y="68">This</text>
                <text x="452" y="68">document</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
| Kind | Length | Meaning                    | Reference     |
|------+--------+----------------------------+---------------|
| TBD  |   2    | Extended Options Permitted | This document |
]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="experimental-results">
      <name>Experimental Results</name>
      <t>Parties participating in this experiment should publish experimental results within one year of the publication of this document Experimental results should address the following:</t>
      <ul spacing="normal">
        <li>
          <t>Effort required to deploy
          </t>
          <ul spacing="normal">
            <li>
              <t>Was deployment incremental or network-wide?</t>
            </li>
            <li>
              <t>Was there a need to synchronize configurations at each node or could nodes be configured independently?</t>
            </li>
            <li>
              <t>Did the deployment require hardware upgrade?</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Scale of deployment</t>
        </li>
        <li>
          <t>Interoperability
          </t>
          <ul spacing="normal">
            <li>
              <t>Did you deploy two interoperable implementations?</t>
            </li>
            <li>
              <t>Did you experience interoperability problems?</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Effectiveness and sufficiency of OAM mechanisms
          </t>
          <ul spacing="normal">
            <li>
              <t>Did Wireshark work?</t>
            </li>
            <li>
              <t>Did TCPDUMP work?</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors wish to acknowledge Keshawn Hamlin, Jordan Head, Rahul Khali, Prashant Kumar, Amalesh Maity, Erin MacNeil, Joe Touch and Michael Tuexen for their review and helpful comments.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <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"/>
            <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>
        <reference anchor="RFC9293">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy"/>
            <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="TCPOPTS">
          <front>
            <title>Transmission Control Protocol (TCP) Parameters -</title>
            <author>
              <organization>Internet Assigned Numbers Authority (IANA)</organization>
            </author>
            <date/>
          </front>
          <seriesInfo name="Web" value="https://www.iana.org/assignments/tcp-parameters/tcp-parameters.xhtml#tcp-parameters-1"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
y/8iSsbgRj8fItGRkoLg3xINmxsPKAAA

-->

</rfc>
