<?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.35 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tcpm-rst-diagnostic-payload-00" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="RST Diagnostic Payload">TCP RST Diagnostic Payload</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tcpm-rst-diagnostic-payload-00"/>
    <author fullname="Mohamed Boucadair">
      <organization>Orange</organization>
      <address>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <author fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <postal>
          <country>India</country>
        </postal>
        <email>kondtir@gmail.com</email>
      </address>
    </author>
    <author fullname="Jason Xing">
      <organization>Tencent</organization>
      <address>
        <email>kerneljasonxing@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="22"/>
    <area/>
    <workgroup>TCP Maintenance and Minor Extensions</workgroup>
    <keyword>Service diagnostic</keyword>
    <abstract>
      <?line 54?>
<t>This document specifies an experimental diagnostic payload format returned in TCP
   RST segments. Such payloads are used to share with an endpoint the
   reasons for which a TCP connection has been reset.  Sharing this
   information is meant to ease diagnostic and troubleshooting.</t>
      <t>This specification builds on provisions that are already present in RFC 9293 "Transmission Control Protocol (TCP)".
   As such, this document does not require any change to RFC 9293.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    TCP Maintenance and Minor Extensions  mailing list (tcpm@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tcpm/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/boucadair/draft-boucadair-tcpm-rst-diagnostic-payload"/>.</t>
    </note>
  </front>
  <middle>
    <?line 63?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>A TCP connection <xref target="RFC9293"/> can be reset by a peer for various
   reasons, e.g., received data does not correspond to an active
   connection.  Also, a TCP connection can be reset by an on-path
   service function (e.g., Carrier Grade NAT (CGN) <xref target="RFC6888"/>, NAT64
   <xref target="RFC6146"/>, or firewall) for several reasons.  Typically, a Network
   Address Translator (NAT) function can generate an RST segment to
   notify an endpoint upon the expiry of the lifetime of the
   corresponding mapping entry or because an RST segment was received
   from a peer (<xref section="2.2" sectionFormat="of" target="RFC7857"/>).</t>
      <t>A TCP connection can also be
   closed by a user or an application at any time.  However, the peer
   that receives an RST segment does not have any hint about the reason
   that led to terminating the connection.  Likewise, the application
   that relies upon such a TCP connection may not easily identify the
   reason for the connection reset. Troubleshooting such events at
   the remote side of the connection that receives the RST segment may
   not be trivial.</t>
      <t>This document fills this void by specifying an experimental format of the
   diagnostic payload returned in an RST segment. This design is
   backward compatible with TCP as further clarified in <xref target="bc"/>.</t>
      <t>The generic procedure for processing an RST segment is specified in
   <xref section="3.5.3" sectionFormat="of" target="RFC9293"/>. Only the deviations from that procedure
   to insert and validate a diagnostic payload is provided in <xref target="payload"/>.</t>
      <t>This document specifies the format and the overall approach to ease
   maintaining the list of codes while allowing for adding new codes as
   needed in the future and accommodating any existing vendor-specific
   codes.  An initial version of error codes is available in <xref target="initial"/>.
   However, the authoritative source to retrieve the full list of error
   codes is the IANA-maintained registry (<xref target="causes"/>).</t>
      <t><xref target="examples"/> provides a set of examples to illustrate the use of TCP RST
   diagnostic payloads.</t>
      <t><xref target="socket-api"/> provides an informative discussion of socket API considerations.
   Implementation and experimental validation are detailed in <xref target="sec-validation"/>.</t>
      <t>Experiment goals are listed in <xref target="sec-goals"/>.</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>
      <?line -18?>

<t>This document makes use of the terms defined in <xref section="4" sectionFormat="of" target="RFC9293"/>.</t>
      <t>SEG.LEN is defined in <xref section="3.3.1" sectionFormat="of" target="RFC9293"/>.</t>
      <t>This document uses the following terms:</t>
      <dl>
        <dt>RST diagnostic payload:</dt>
        <dd>
          <t>The payload of an RST message that conveys diagnostic data.</t>
        </dd>
        <dt>RST with diagnostic payload:</dt>
        <dd>
          <t>An RST segment that includes diagnostic payload.</t>
        </dd>
      </dl>
    </section>
    <section anchor="sec-goals">
      <name>Experiment Description &amp; Goals</name>
      <t>The main objective of this experiment is to have a common format
  of RST diagnostic payload that would be used as basis for consistent
  testing and evaluation in a variety of deployment contexts
  (Internet, data centers, application clients/servers provided and managed by the same entity,
  clients and servers software owned by distinct entities, etc.).</t>
      <t>Experiments reports are encouraged to share the main lessons
  learned in these experimentations. Specifically, the following items are of interest:</t>
      <dl>
        <dt>Delivery &amp; on-path device interference:</dt>
        <dd>
          <t>Identify and share issues or lack thereof related to the delivery of RST with diagnostic payload.</t>
        </dd>
        <dt>CPU/load impact:</dt>
        <dd>
          <t>Assess CPU/load impact (or lack thereof) of handling RSTs, including when a mix of RSTs with and without diagnostic payload are sent.</t>
        </dd>
        <dt>Standard reset reasons:</dt>
        <dd>
          <t>Assess whether the list of code reasons (<xref target="causes"/>) reflects most of reset cases.</t>
        </dd>
        <dt>Integration of socket API extensions:</dt>
        <dd>
          <t>Exercise the socket API extensions and identify any required adjustement (<xref target="socket-api"/>).</t>
        </dd>
        <dt>Operational guidance:</dt>
        <dd>
          <t>Strengthen the operational guidance for deploying RSTs with diagnostic payload.</t>
        </dd>
      </dl>
    </section>
    <section anchor="payload">
      <name>RST Diagnostic Payload</name>
      <section anchor="compact">
        <name>Payload Format</name>
        <t>This section defines the message format to convey RST diagnostic payload. This format is designed to minimize the length of the payload.</t>
        <t>The format of the RST diagnostic payload is shown in <xref target="format-1"/>.</t>
        <figure anchor="format-1">
          <name>Structure of the RST Diagnostic Payload</name>
          <artwork><![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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             0x33AA            |          reason-code          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                              pen                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The RST diagnostic payload comprises a magic number that is used to
   unambiguously identify an RST payload that follows this
   specification.  It <bcp14>MUST</bcp14> be set to 0x33AA.</t>
        <t>The descriptions of other fields shown in <xref target="format-1"/> are as follows:</t>
        <dl>
          <dt>reason-code:</dt>
          <dd>
            <t>This field takes a value from an available registry (IANA or vendor-specific).</t>
          </dd>
          <dt/>
          <dd>
            <t>Value 0 is reserved and <bcp14>MUST NOT</bcp14> be used.</t>
          </dd>
          <dt/>
          <dd>
            <t>The reason code is taken from the "TCP Failure Causes" registry (<xref target="causes"/>) if "pen" is set to 0.</t>
          </dd>
          <dt/>
          <dd>
            <t>If the "pen" is not set to 0, then the reason code refers to the registry of the entity specified by the "pen" parameter.</t>
          </dd>
          <dt>pen:</dt>
          <dd>
            <t>Includes a Private Enterprise Number (PEN) <xref target="Private-Enterprise-Numbers"/>.</t>
          </dd>
          <dt/>
          <dd>
            <t>The reserved PEN value "0" is used to indicate that the reason code refers to the IANA-maintained registry (<xref target="causes"/>).</t>
          </dd>
        </dl>
        <t>SEG.LEN <bcp14>MUST</bcp14> be 8 for an RST with diagnostic payload.</t>
      </section>
      <section anchor="behavior">
        <name>Behavior</name>
        <t>Malformed RST diagnostic payloads that include the magic
   numbers 0x33AA <bcp14>MUST</bcp14> be silently ignored by the receiver.
   RSTs that carry such malformed diagnostic payloads are handled like an RST without payload.</t>
        <t>A peer that receives a valid diagnostic payload may pass the reset
   reason information to the local application in addition to the
   information (<bcp14>MUST</bcp14>-12) described in <xref section="3.6" sectionFormat="of" target="RFC9293"/>.  That
   information may also be logged locally, unless a local policy
   specifies otherwise.  How the information is passed to an application
   and how it is stored locally is implementation-specific.</t>
      </section>
    </section>
    <section anchor="examples">
      <name>Some Examples</name>
      <t><xref target="fig-1"/> depicts an example of an RST diagnostic payload that is
   generated to inform the peer that the TCP connection is reset because
   an ACK was received from that peer while the connection is still in
   the LISTEN state (<xref section="3.10.7.2" sectionFormat="of" target="RFC9293"/>).</t>
      <figure anchor="fig-1">
        <name>Example of an RST Diagnostic Payload with Reason Code</name>
        <artwork><![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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             0x33AA            |               0x02            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                              0x00                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t>An RST diagnostic payload may also be sent by an on-path service
   function.  For example, the following diagnostic payload is returned
   by a NAT function upon expiry of the mapping entry to which the TCP
   connection is bound (<xref target="fig-2"/>).</t>
      <figure anchor="fig-2">
        <name>Example of an RST Diagnostic Payload to Report Connection Timeout</name>
        <artwork><![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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             0x33AA            |              0x0E             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                              0x00                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t><xref target="fig-3"/> illustrates an RST diagnostic payload that is returned by a
   peer that resets a TCP connection for a reason code 1234 defined by a
   vendor with the private enterprise number 32473 (0x7D9).</t>
      <figure anchor="fig-3">
        <name>Example of an RST Diagnostic Payload to Report Vendor-Specific Reason Code</name>
        <artwork><![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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             0x33AA            |              0x4DE            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             0x7D9                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t><xref target="fig-3"/> uses the Enterprise Number 32473 defined for documentation
   use <xref target="RFC5612"/>.</t>
    </section>
    <section anchor="ops-cons">
      <name>Operational Considerations</name>
      <section anchor="bc">
        <name>Backward Compatibility</name>
        <t>Returning diagnostic data in an RST segment is consistent with
   the provision in <xref section="3.5.3" sectionFormat="of" target="RFC9293"/> for RST segments, especially:</t>
        <blockquote>
          <t>"TCP implementations <bcp14>SHOULD</bcp14> allow a received RST segment to
 include data (SHLD-2)."</t>
        </blockquote>
        <t>Also, this document does not change the conditions under which an RST
   segment is generated (<xref section="3.5.2" sectionFormat="of" target="RFC9293"/>).</t>
      </section>
      <section anchor="multiple-rsts">
        <name>Multiple RSTs</name>
        <t>Per <xref section="3.6" sectionFormat="of" target="RFC9293"/>, one or more RST segments can be sent
   to reset a connection.</t>
        <t>Sending more RST segments to reset a connection can be used
   to mitigate deployment contexts where some on-path devices may
   discard RSTs with payload data.</t>
        <t>Whether a TCP endpoint elects to send more
   than one RST with only a subset of them that include the diagnostic
   payload is implementation-specific.</t>
      </section>
      <section anchor="manageability">
        <name>Manageability</name>
        <t>TCP server implementations should support the following parameters:</t>
        <ul spacing="normal">
          <li>
            <t>A parameter to control the activation of RSTs with diagnostic payload.</t>
          </li>
          <li>
            <t>A parameter to control whether "empty" RSTs are also sent together with an RST with diagnostic payload.</t>
          </li>
          <li>
            <t>A rate-limit of RSTs with diagnostic payload.</t>
          </li>
          <li>
            <t>Counters to track sent/received RSTs with diagnostic payload.</t>
          </li>
          <li>
            <t>Counters to track received invalid RSTs with diagnostic payload.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="socket-api">
      <name>Socket API Considerations (Informative)</name>
      <t>This section describes how the socket API  can  be extended to provide a way
for an application to use the functionality described in this document.</t>
      <t>This section is informational only.</t>
      <t>The API described in this section can change in a non-backwards compatible way
during the evolution of this document due to changed functionality or gained
experience during the implementation.</t>
      <section anchor="socket-options">
        <name>Socket Options</name>
        <t><xref target="socket-options-table"/> provides an overview of the <tt>IPPROTO_TCP</tt>-level socket
options defined in this section.</t>
        <table anchor="socket-options-table">
          <name>Socket Options</name>
          <thead>
            <tr>
              <th align="left">Option Name</th>
              <th align="left">Data Type</th>
              <th align="left">Set</th>
              <th align="left">Get</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>TCP_RST_REASON_ENABLE</tt></td>
              <td align="left">
                <tt>uint32_t</tt></td>
              <td align="left">X</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>TCP_RST_REASON_CODE</tt></td>
              <td align="left">
                <tt>struct tcp_rst_reason</tt></td>
              <td align="left">X</td>
              <td align="left">X</td>
            </tr>
          </tbody>
        </table>
        <section anchor="enable-the-sending-of-the-diagnostic-payload-tcprstreasonenable">
          <name>Enable the Sending of the Diagnostic Payload (<tt>TCP_RST_REASON_ENABLE</tt>)</name>
          <t>Using <tt>setsockopt()</tt> with the <tt>IPPROTO_TCP</tt>-level socket option with the
name <tt>TCP_RST_REASON_ENABLE</tt> enables or disables the sending of the
diagnostic payload using a reason-code and pen.
The <tt>option_value</tt> of type <tt>uint32_t</tt> specifies the pen in host byte order
to use.
When 0 is used (<xref section="3" sectionFormat="of" target="RFC9371"/>), the reason-codes from the registry
specified in <xref target="causes"/> are used.
When 0xffffffff is used (<xref section="3" sectionFormat="of" target="RFC9371"/>), the sending is disabled.
The default is that the sending of a diagnostic payload is disabled.
An implementation might not support the use of PENs different from zero and
0xffffffff.</t>
        </section>
        <section anchor="get-or-set-the-diagnostic-payload-as-code-tcprstreasoncode">
          <name>Get or Set the Diagnostic Payload as Code (<tt>TCP_RST_REASON_CODE</tt>)</name>
          <t>Using <tt>getsockopt()</tt> with the <tt>IPPROTO_TCP</tt>-level socket option with the
name <tt>TCP_RST_REASON_CODE</tt> allows the caller to retrieve the reason-code and
the pen of the diagnostic payload in the received RST segment, which terminated
the corresponding TCP connection.</t>
          <t>Using <tt>setsockopt()</tt> with this socket option allows the caller to provide
reason-code and pen to be sent as part of the diagnostic payload when the
application triggers the sending of a RST segment by using <tt>close()</tt>.
In addition to using <tt>close()</tt> in combination with the <tt>SOL_SOCKET</tt>-level
socket option with name <tt>SO_LINGER</tt>, the application can just provide the
<tt>TCP_RR_RST_ON_CLOSE</tt> flag in <tt>trr_flags</tt>. This way the application can
trigger the sending of a RST segment by calling <tt>setsockopt()</tt> once followed
by <tt>close()</tt>.</t>
          <t>For accepted sockets, this socket option is inherited from the listening socket.</t>
          <t>The following structure is used as the <tt>option_value</tt>:</t>
          <sourcecode type="c"><![CDATA[
struct tcp_rst_reason {
        uint16_t trr_flags;
        uint16_t trr_code;
        uint32_t trr_pen;
};
]]></sourcecode>
          <dl>
            <dt><tt>trr_flags</tt>:</dt>
            <dd>
              <dl>
                <dt>This field is reported as 0 for <tt>getsockopt()</tt> calls. For <tt>setsockopt()</tt></dt>
                <dd>
                  <t/>
                </dd>
                <dt>calls, the following flag can be used:</dt>
                <dd>
                  <t/>
                </dd>
                <dt><tt>TCP_RR_RST_ON_CLOSE</tt>:</dt>
                <dd>
                  <t>When this flag is set, calling <tt>close()</tt> triggers the sending of a RST segment
similar to case, where the <tt>SOL_SOCKET</tt>-level socket option with name
<tt>SO_LINGER</tt> is used to enable lingering with the linger time of 0.
When this flag is cleared, the corresponding functionality is disabled.</t>
                </dd>
              </dl>
            </dd>
            <dt><tt>trr_code</tt>:</dt>
            <dd>
              <t>The reason-code in host byte order to be interpreted in combination with
the PEN provided in <tt>trr_pen</tt>. In case of <tt>trr_pen</tt> being
zero, <tt>trr_code</tt> refers to a value in the registry defined in
<xref target="causes"/>.</t>
            </dd>
            <dt><tt>trr_pen</tt>:</dt>
            <dd>
              <t>The PEN in host byte order to is used in combination with the reason-code
specified in <tt>trr_code</tt>.
When this socket option is used with <tt>setsockopt()</tt>, it is an error to use
zero as a value for <tt>trr_pen</tt> as long as <tt>trr_code</tt> is not
zero.</t>
            </dd>
          </dl>
          <t>When <tt>getsockopt()</tt> with this socket option is performed on a socket, which
has not received a RST with a diagnostic payload containing a reason-code and
pen, zero is provided as the <tt>trr_code</tt> and <tt>trr_pen</tt>.
When <tt>setsockopt()</tt> with a <tt>trr_code</tt> and <tt>trr_pen</tt> of zero
is performed, the special handling of RST segments sent during the ungraceful
termination of the TCP connection is disabled.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t><xref target="RFC9293"/> discusses TCP-related security considerations. In
   particular, RST-specific attacks and their mitigations are discussed
   in <xref section="3.10.7.3" sectionFormat="of" target="RFC9293"/>.</t>
      <t>The presence of vendor-specific reason codes may be used
   to fingerprint hosts.  Such a concern does not apply if the reason
   codes are taken from the IANA-maintained registry.  Implementers are,
   thus, encouraged to register new codes within IANA instead of
   maintaining specific registries.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="causes">
        <name>New Registry for TCP Failure Causes</name>
        <t>This document requests IANA to create a new registry entitled "TCP
   Failure Causes" under the "Transmission Control Protocol (TCP)
   Parameters" registry group <xref target="IANA-TCP"/>.</t>
        <t>Values are taken from the 1-65535 range.</t>
        <t>The assignment policy for this registry is "Expert Review"
   (<xref section="4.5" sectionFormat="of" target="RFC8126"/>). See more guidance at <xref target="de"/>.</t>
        <t>The registry is initially populated with the values listed in
   <xref target="initial"/>.</t>
        <table anchor="initial">
          <name>Initial TCP Failure Causes</name>
          <thead>
            <tr>
              <th align="center">Value</th>
              <th align="left">Description</th>
              <th align="left">Specification (if available)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">0</td>
              <td align="left">Reserved</td>
              <td align="left">ThisDocument</td>
            </tr>
            <tr>
              <td align="center">1</td>
              <td align="left">Illegal Option</td>
              <td align="left">
                <xref section="3.1" sectionFormat="of" target="RFC9293"/></td>
            </tr>
            <tr>
              <td align="center">2</td>
              <td align="left">Desynchronized state</td>
              <td align="left">
                <xref section="3.5.1" sectionFormat="of" target="RFC9293"/></td>
            </tr>
            <tr>
              <td align="center">3</td>
              <td align="left">New data is received after CLOSE is called</td>
              <td align="left">Sections 3.6.1 and  3.10.7.1 of <xref target="RFC9293"/></td>
            </tr>
            <tr>
              <td align="center">4</td>
              <td align="left">ABORT Process</td>
              <td align="left">
                <xref section="3.10.5" sectionFormat="of" target="RFC9293"/></td>
            </tr>
            <tr>
              <td align="center">5</td>
              <td align="left">Unexpected ACK received by non-synchronized state connection</td>
              <td align="left">
                <xref section="3.10.7" sectionFormat="of" target="RFC9293"/></td>
            </tr>
            <tr>
              <td align="center">6</td>
              <td align="left">Unexpected SYN in the window</td>
              <td align="left">
                <xref section="3.10.7" sectionFormat="of" target="RFC9293"/></td>
            </tr>
            <tr>
              <td align="center">7</td>
              <td align="left">Unexpected security compartment</td>
              <td align="left">
                <xref section="A.1" sectionFormat="of" target="RFC9293"/></td>
            </tr>
            <tr>
              <td align="center">8</td>
              <td align="left">Malformed Message</td>
              <td align="left">ThisDocument</td>
            </tr>
            <tr>
              <td align="center">9</td>
              <td align="left">Not Authorized</td>
              <td align="left">ThisDocument</td>
            </tr>
            <tr>
              <td align="center">10</td>
              <td align="left">Resource Exceeded</td>
              <td align="left">ThisDocument</td>
            </tr>
            <tr>
              <td align="center">11</td>
              <td align="left">Network Failure</td>
              <td align="left">ThisDocument</td>
            </tr>
            <tr>
              <td align="center">12</td>
              <td align="left">Reset received from the peer</td>
              <td align="left">ThisDocument</td>
            </tr>
            <tr>
              <td align="center">13</td>
              <td align="left">Destination Unreachable</td>
              <td align="left">ThisDocument</td>
            </tr>
            <tr>
              <td align="center">14</td>
              <td align="left">Connection Timeout</td>
              <td align="left">ThisDocument</td>
            </tr>
            <tr>
              <td align="center">15</td>
              <td align="left">Too much outstanding data</td>
              <td align="left">
                <xref section="3.6" sectionFormat="of" target="RFC8684"/></td>
            </tr>
            <tr>
              <td align="center">16</td>
              <td align="left">Unacceptable performance</td>
              <td align="left">
                <xref section="3.6" sectionFormat="of" target="RFC8684"/></td>
            </tr>
            <tr>
              <td align="center">17</td>
              <td align="left">Middlebox interference</td>
              <td align="left">
                <xref section="3.6" sectionFormat="of" target="RFC8684"/></td>
            </tr>
          </tbody>
        </table>
        <t>Note that codes in the 8-14 range can be used by service functions (CGN, firewall, proxy, etc.).</t>
        <ul empty="true">
          <li>
            <t>Note to the RFC Editor: Please replace ThisDocument with the RFC number assigned to this document.</t>
          </li>
        </ul>
      </section>
      <section anchor="de">
        <name>Guidelines for the Designated Experts</name>
        <t>Criteria that should be applied by the designated experts include
   determining whether the proposed registration duplicates existing
   entries and whether the registration description is clear and fits
   the purpose of this registry.</t>
        <t>The designated experts may approve registration once they checked
   that the new requested code is not covered by an existing code and if
   the provided reasoning to register the new code is acceptable.  A
   registration request may supply a pointer to a specification where
   that code is defined.  However, a registration may be accepted even
   if no permanent and readily available public specification is
   available.</t>
        <t>Registration requests are to be sent to <eref target="mailto:rst-diag-review@ietf.org">rst-diag-review@ietf.org</eref>
   and are evaluated within a three-week review period on the advice of
   one or more designated experts.  Within the review period, the
   designated experts will either approve or deny the registration
   request, communicating this decision to the review list and IANA.
   Denials should include an explanation and, if applicable, suggestions
   as to how to make the request successful.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-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"/>
            <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="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="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8684">
          <front>
            <title>TCP Extensions for Multipath Operation with Multiple Addresses</title>
            <author fullname="A. Ford" initials="A." surname="Ford"/>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="O. Bonaventure" initials="O." surname="Bonaventure"/>
            <author fullname="C. Paasch" initials="C." surname="Paasch"/>
            <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IANA-TCP" target="https://www.iana.org/assignments/tcp-parameters/tcp-parameters.xhtml#">
          <front>
            <title>Transmission Control Protocol (TCP) Parameters</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Private-Enterprise-Numbers" target="https://www.iana.org/assignments/enterprise-numbers">
          <front>
            <title>Private Enterprise Numbers</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC6888">
          <front>
            <title>Common Requirements for Carrier-Grade NATs (CGNs)</title>
            <author fullname="S. Perreault" initials="S." role="editor" surname="Perreault"/>
            <author fullname="I. Yamagata" initials="I." surname="Yamagata"/>
            <author fullname="S. Miyakawa" initials="S." surname="Miyakawa"/>
            <author fullname="A. Nakagawa" initials="A." surname="Nakagawa"/>
            <author fullname="H. Ashida" initials="H." surname="Ashida"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>This document defines common requirements for Carrier-Grade NATs (CGNs). It updates RFC 4787.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="127"/>
          <seriesInfo name="RFC" value="6888"/>
          <seriesInfo name="DOI" value="10.17487/RFC6888"/>
        </reference>
        <reference anchor="RFC6146">
          <front>
            <title>Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers</title>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <author fullname="I. van Beijnum" initials="I." surname="van Beijnum"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document describes stateful NAT64 translation, which allows IPv6-only clients to contact IPv4 servers using unicast UDP, TCP, or ICMP. One or more public IPv4 addresses assigned to a NAT64 translator are shared among several IPv6-only clients. When stateful NAT64 is used in conjunction with DNS64, no changes are usually required in the IPv6 client or the IPv4 server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6146"/>
          <seriesInfo name="DOI" value="10.17487/RFC6146"/>
        </reference>
        <reference anchor="RFC7857">
          <front>
            <title>Updates to Network Address Translation (NAT) Behavioral Requirements</title>
            <author fullname="R. Penno" initials="R." surname="Penno"/>
            <author fullname="S. Perreault" initials="S." surname="Perreault"/>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="S. Sivakumar" initials="S." surname="Sivakumar"/>
            <author fullname="K. Naito" initials="K." surname="Naito"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This document clarifies and updates several requirements of RFCs 4787, 5382, and 5508 based on operational and development experience. The focus of this document is Network Address Translation from IPv4 to IPv4 (NAT44).</t>
              <t>This document updates RFCs 4787, 5382, and 5508.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="127"/>
          <seriesInfo name="RFC" value="7857"/>
          <seriesInfo name="DOI" value="10.17487/RFC7857"/>
        </reference>
        <reference anchor="RFC5612">
          <front>
            <title>Enterprise Number for Documentation Use</title>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="D. Harrington" initials="D." surname="Harrington"/>
            <date month="August" year="2009"/>
            <abstract>
              <t>This document describes an Enterprise Number (also known as SMI Network Management Private Enterprise Code) for use in documentation. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5612"/>
          <seriesInfo name="DOI" value="10.17487/RFC5612"/>
        </reference>
        <reference anchor="RFC9371">
          <front>
            <title>Registration Procedures for Private Enterprise Numbers (PENs)</title>
            <author fullname="A. Baber" initials="A." surname="Baber"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="March" year="2023"/>
            <abstract>
              <t>This document describes how Private Enterprise Numbers (PENs) are registered by IANA. It shows how to request a new PEN and how to modify a current PEN. It also gives a brief overview of PEN uses.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9371"/>
          <seriesInfo name="DOI" value="10.17487/RFC9371"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
      </references>
    </references>
    <?line 477?>

<section anchor="sec-validation">
      <name>Implementation and Experimental Validation in Linux</name>
      <t>Questions and concerns have been raised regarding whether RST with payload affects the normal termination of flows across different software platforms, operating systems, middleboxes, etc. Even though <xref section="3.5.3" sectionFormat="of" target="RFC9293"/> explicitly allows this behavior, a full implementation is needed to widely verify if unexpected cases can happen in the real world.</t>
      <t>The overall design in Linux is to pre-allocate a large enough zeroed buffer, put a reset reason code in the first byte and sent it out to verify whether the RST with payload can be possibly declined by any equipment in between two sides and the other side successfully parses the RST with payload.</t>
      <section anchor="implementation">
        <name>Implementation</name>
        <t>The following implementation is accomplished on top of Linux 6.16:</t>
        <dl>
          <dt><strong>Payload Attachment</strong>:</dt>
          <dd>
            <t>Allocate a 1000-byte data payload attached to all generated RST packets.</t>
          </dd>
          <dt><strong>Reason Code Encoding</strong>:</dt>
          <dd>
            <t>The first byte of the payload is used to store a predefined reset reason code that is listed in include/net/rstreason.h file, while the remainder of the payload is zero-padded. The reason code is generated by the existing mechanism called <eref target="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d5115a55ffb52">TCP reset reasons</eref>.</t>
          </dd>
          <dt><strong>Handling of Reset Types</strong>:</dt>
          <dd>
            <t>The implementation distinguishes between the two primary reset scenarios in <tt>tcp_send_active_reset()</tt> and <tt>tcp_v4_send_reset()</tt> respectively:
</t>
            <ul spacing="normal">
              <li>
                <t>For an <strong>Active Reset</strong>, initiated proactively by the local system, the payload is placed in the linear area of the socket buffer (<tt>sk_buff</tt>).</t>
              </li>
              <li>
                <t>For a <strong>Passive Reset</strong>, sent in response to an unexpected or invalid incoming packet, the payload is stored in the non-linear (paged) area of the <tt>sk_buff</tt>.</t>
              </li>
            </ul>
          </dd>
        </dl>
        <t>Complete patch is shown in <xref target="patch"/>.</t>
        <figure anchor="patch">
          <name>Complete Patch</name>
          <artwork><![CDATA[
diff --git a/include/net/tcp.h b/include/net/tcp.h
index b3815d104340..0b32257774c8 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -62,6 +62,7 @@ void tcp_time_wait(struct sock *sk, int state, int timeo);
 #define MAX_TCP_OPTION_SPACE 40
 #define TCP_MIN_SND_MSS                48
 #define TCP_MIN_GSO_SIZE       (TCP_MIN_SND_MSS - MAX_TCP_OPTION_SPACE)
+#define PAYLOAD_LEN 1000

 /*
  * Never offer a window over 32767 without using window scaling. Some
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 84d3d556ed80..49250e6bd6a1 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -741,6 +741,7 @@ static bool tcp_v4_ao_sign_reset(const struct sock *sk, struct sk_buff *skb,
 static void tcp_v4_send_reset(const struct sock *sk, struct sk_buff *skb,
                              enum sk_rst_reason reason)
 {
+       u32 len = sizeof(struct tcphdr) + REPLY_OPTIONS_LEN + PAYLOAD_LEN;
        const struct tcphdr *th = tcp_hdr(skb);
        struct {
                struct tcphdr th;
@@ -757,6 +758,7 @@ static void tcp_v4_send_reset(const struct sock *sk, struct sk_buff *skb,
 #endif
        u64 transmit_time = 0;
        struct sock *ctl_sk;
+       char buffer[len];
        struct net *net;
        u32 txhash = 0;

@@ -786,7 +788,8 @@ static void tcp_v4_send_reset(const struct sock *sk, struct sk_buff *skb,
        }

        memset(&arg, 0, sizeof(arg));
-       arg.iov[0].iov_base = (unsigned char *)&rep;
+       memset(&buffer, 0, len);
+       arg.iov[0].iov_base = (unsigned char *)buffer;
        arg.iov[0].iov_len  = sizeof(rep.th);

        net = sk ? sock_net(sk) : skb_dst_dev_net_rcu(skb);
@@ -911,6 +914,10 @@ static void tcp_v4_send_reset(const struct sock *sk, struct sk_buff *skb,
                ctl_sk->sk_mark = 0;
                ctl_sk->sk_priority = 0;
        }
+       memcpy(buffer, (char *)&rep, arg.iov[0].iov_len);
+       /* put rst reason into the first byte in payload */
+       buffer[arg.iov[0].iov_len] = reason;
+       arg.iov[0].iov_len += PAYLOAD_LEN;
        ip_send_unicast_reply(ctl_sk, sk,
                              skb, &TCP_SKB_CB(skb)->header.h4.opt,
                              ip_hdr(skb)->saddr, ip_hdr(skb)->daddr,
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index b616776e3354..c07dd009a0de 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -3628,12 +3628,14 @@ void tcp_send_fin(struct sock *sk)
 void tcp_send_active_reset(struct sock *sk, gfp_t priority,
                           enum sk_rst_reason reason)
 {
+       u32 len = MAX_TCP_HEADER + PAYLOAD_LEN;
+       char payload[PAYLOAD_LEN];
        struct sk_buff *skb;

        TCP_INC_STATS(sock_net(sk), TCP_MIB_OUTRSTS);

        /* NOTE: No TCP options attached and we never retransmit this. */
-       skb = alloc_skb(MAX_TCP_HEADER, priority);
+       skb = alloc_skb(len, priority);
        if (!skb) {
                NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTFAILED);
                return;
@@ -3641,8 +3643,13 @@ void tcp_send_active_reset(struct sock *sk, gfp_t priority,

        /* Reserve space for headers and prepare control bits. */
        skb_reserve(skb, MAX_TCP_HEADER);
+       skb_put(skb, PAYLOAD_LEN);
        tcp_init_nondata_skb(skb, tcp_acceptable_seq(sk),
                             TCPHDR_ACK | TCPHDR_RST);
+       memset(payload, 0, PAYLOAD_LEN);
+       payload[0] = reason;
+       skb_store_bits(skb, 0, payload, PAYLOAD_LEN);
+       TCP_SKB_CB(skb)->end_seq += PAYLOAD_LEN;
        tcp_mstamp_refresh(tcp_sk(sk));
        /* Send it off. */
        if (tcp_transmit_skb(sk, skb, 0, priority))
]]></artwork>
        </figure>
      </section>
      <section anchor="experimental-validation">
        <name>Experimental Validation</name>
        <t>To ensure a thorough evaluation, a multi-layered experimental methodology was designed, progressing from basic functional checks to complex, real-world compatibility and stability tests. The whole implementation has been deployed in Tencent's production environment for almost six months.</t>
        <section anchor="functional-verification">
          <name>Functional Verification</name>
          <t>The basic functionality test is using iperf or iperf3 to construct a normal termination senario. The <tt>tcpdump</tt> tool with <tt>-X</tt> option effectively helps to show the <tt>[RST+]</tt> flag and the 1000-byte payload, confirming that the kernel correctly generated and transmitted the augmented RST packets.</t>
          <t>Two servers, designated as Client A and Server B. The test is conducted as following:</t>
          <ol spacing="normal" type="1"><li>
              <t>Start the <tt>iperf3</tt> server on Server B (<tt>iperf3 -s</tt>).</t>
            </li>
            <li>
              <t>Initiate a connection from Client A to Server B (<tt>iperf3 -c [IP_of_B]</tt>).</t>
            </li>
            <li>
              <t>After the connection is established, one of the <tt>iperf3</tt> processes is terminated using the <tt>kill</tt> command, triggering the kernel to send an RST packet.</t>
            </li>
            <li>
              <t>Simultaneously, <tt>tcpdump</tt> is run on either host to capture the reset packet using the filter: <tt>'tcp[tcpflags] &amp; tcp-rst != 0' -X -nn -vv -S</tt>.</t>
            </li>
          </ol>
        </section>
        <section anchor="compatibility-verification">
          <name>Compatibility Verification</name>
          <dl>
            <dt><strong>Hardwares and Kernels</strong>:</dt>
            <dd>
              <t>Tests were conducted on various Linux distributions (e.g., Ubuntu or CentOS) with different kernel versions. The physical hosts were equipped with a range of network interface cards (NICs), including Intel <tt>i40e</tt>, <tt>ixgbe</tt>, and Mellanox <tt>mlx5</tt>.</t>
            </dd>
            <dt><strong>Virtualization</strong>:</dt>
            <dd>
              <t>The mechanism was tested in a virtualized environment where the VM used a <tt>virtio_net</tt> driver and the host employed DPDK to redirect packets in the host.</t>
            </dd>
            <dt><strong>Middleboxes</strong>:</dt>
            <dd>
              <t>Tests were performed with Layer 4 (L4) and Layer 7 (L7) gateways placed between the client and server to verify correct packet parsing and forwarding.</t>
            </dd>
            <dt><strong>Wide Area Network (WAN)</strong>:</dt>
            <dd>
              <t>The setup was tested over long-haul international links to simulate complex conditions, including China-to-Singapore (RTT &gt; 30ms) and China-to-Germany (RTT &gt; 200ms).</t>
            </dd>
          </dl>
          <t>In conclusion, across all complex environment tests, the RST packets with payloads were successfully received by the peer. No instances of packets being dropped or mishandled by intermediate middleboxes, gateways, or diverse hardware and software configurations were observed.</t>
        </section>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The "diagnostic payload" name is inspired by <xref section="5.5.2" sectionFormat="of" target="RFC7252"/>
  that was cited by Carsten Bormann in the tcpm mailing list.</t>
      <t>Thanks to Jon Shallow, Neal Cardwell, Lars Eggert, Eric Dumazet, Rick Jones, Yoshifumi Nishida, Li Jinghui, Gleb Smirnoff, and Michael Tuexen for the review and comments.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact fullname="Michael Tüxen">
        <organization/>
        <address>
          <email>tuexen@fh-muenster.de</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
jKaajIYvXb2DfIY6opJ/WNvUYUnQupiatdFB2iRfDvOyldYwAdc3Nrcq17Ad
SOx7YXNWXsZcrRN17Ploc2Nrd1N11u53j178DzdIg62jBjv8d3ED4+DRFn8G
N2x+Jjf8JEdI64xt0SY1W1TRh+XjktCfpV/2qJmYRWUxInoiiTPbO+sbJlSn
XMfdYSOcSHZhOst78LqLR+2lDegfmoB+FOP49/bJMJCVvmZGXNBL7GBfShgA
39b+fOYwa6VVSVqLZvlS8J736eaudZVmQxdGsBz4CT3/LNNCv8eXb/gc3bSM
c2UiXRwlZ6FgjMzlTJ9vVHUE4111Bj+cHvU2VvsrovY5I+qBBDCb9CVGqpxQ
6HiahLpKlktsvNiBUW1Gd5qg2GiCYlVOla/KuIhAfTjZ8aIuaPxHzjZdsj00
XBlTOkA0YGkzuXKTUsrhdtjmvpt1I6dgbdKXlsZo7WRHxtncjDwleIwhWVvi
NXCWw7WOM0sz6JDbZBgEyEGYte/Y6og6fvazcbmLLqhStbR41hFL0YjrpCbV
Y8Jmma4P8hzA9emIPDQpADTadPlc7mQm0zCOUfbIgYzwxuEkXziKA220Rokc
LdFrPuEQWV7OWIA0DcI6rZXp/ymO4PaRcWZzDiNnVSCAV4UNHve7PzKUjWWs
6OmsmK/IQJJZmadi5RbpWNrY1NFH3SMyF6i+F0dEGR+3ukMkVlsvToZgD6Z+
7rLzJ49QdY4S8Vl8MDgxqMMqC9K0c1JndKwisFpHUJAU0QhHiF8i5wP+QrCG
mQfcw1GbUM7XJjRJ5HlHDDFaTtejNmVu02TkHOCz8G74QBqiq7+wKpBw7Z4g
bQGG6Es+Bxa2PFLusLsRfxyeTYj8bXJY3sgOo8WHZWZzmfRtGpeWPBfEasn5
GTJquLAn2v6YPXeeBD0RklTOuE2GEgY0eDufmSyVKsKVypNeARfwQo4OErNu
I31nj1HX1ycXF6/PL8+viH2vr3uxvtWxQZ5nBnLTD1wo0TLemenVGaLJCyaL
OoLGuZzPFt/g3YCW/k59j//SKNfXNP0VkerV6+ODwfnZ1fHZwcvT4+trhXcl
Sb3NjauCvi6M8ktlWrWOcnh+dMyd8C7niIMqgtlVlhdXYknzDL/UY7Fx1AZH
YyutNKG+QrQQ51+vxIr/t8JWxxMydqQLAdgqGgPvFsOq8+DmVz3vDWcM0uLp
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
i0x6gYTep/Jzcd7/BUI9v8iecgAA

-->

</rfc>
