<?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.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mazilu-tcpm-packet-trimming-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="false" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title abbrev="TCP Trimming">TCP Packet Trimming Extension</title>
    <seriesInfo name="Internet-Draft" value="draft-mazilu-tcpm-packet-trimming-01"/>
    <author initials="F." surname="Mazilu" fullname="Flavius Romeo Mazilu">
      <organization>UPB</organization>
      <address>
        <email>flavius.mazilu@stud.acs.upb.ro</email>
      </address>
    </author>
    <author initials="V." surname="Bobaru" fullname="Valentin Ionut Bobaru">
      <organization>UPB</organization>
      <address>
        <email>valentin.bobaru@stud.acs.upb.ro</email>
      </address>
    </author>
    <author initials="C." surname="Raiciu" fullname="Costin Raiciu">
      <organization>UPB/Broadcom</organization>
      <address>
        <email>costin.raiciu@upb.ro</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Transport</area>
    <workgroup>tcpm Working Group</workgroup>
    <abstract>
      <?line 72?>

<t>This document specifies a TCP extension that enables TCP endpoints in data center networks or similarly controlled administrative domains to use packet trimming information when it is available. When switch buffers exceed a threshold, rather than silently dropping a packet, the switch trims the payload and forwards the header. This allows the destination to issue a deterministic Negative Acknowledgment (NACK), enabling faster, more deterministic loss recovery.</t>
    </abstract>
  </front>
  <middle>
    <?line 77?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>TCP's congestion control relies primarily on packet loss as a signal of congestion, or Explicit Congestion Notification (ECN) <xref target="RFC3168"/> as a proactive measure. The accuracy and speed of these signals are vital for a mechanism to adapt quickly and utilize available bandwidth efficiently.</t>
      <t>It is widely recognized that falling back to a Retransmission Timeout (RTO) <xref target="RFC6298"/> is undesirable. RTOs are overly conservative, drastically reduce the congestion window to one segment, and impose a high latency penalty (traditionally bounded to a 1-second minimum, though modern implementations often use around 300 ms).</t>
      <t>For these reasons, fast retransmit <xref target="RFC5681"/> is always preferred, as it recovers from loss much faster. The duplicate acknowledgment (DupAck) heuristic was the first method introduced to achieve this, but it suffers in environments with high packet reordering, short flows, or when packets at the end of a flight are lost (tail loss). RACK-TLP <xref target="RFC8985"/> represents a more modern approach, utilizing a Tail Loss Probe (TLP) for tail losses and replacing sequence-based DupAck counting with time-based inferences derived from per-segment transmit timestamps.</t>
      <t>However, because these approaches are fundamentally heuristics, they can fail to detect lost packets in time (forcing an RTO) or trigger false retransmissions, particularly in networks with significant packet reordering.</t>
      <t>Packet Trimming offers a deterministic alternative. Originally introduced in the Ultra Ethernet Consortium's specifications <xref target="UEC-SPEC"/>, this approach is gaining support in modern network switch hardware. When switch buffers get full or exceed a certain threshold (as in Active Queue Management), rather than silently dropping the packet, the switch trims the payload. It retains only the bytes up to the transport header and forwards this "trimmed" packet to the destination.</t>
      <t>By using Differentiated Services Code Point (DSCP) markings <xref target="RFC2474"/>, the network can inform the destination of the trimming event. The destination then issues a Negative Acknowledgment (NACK) carrying the specific sequence number of the affected packet, eliminating the need for the data sender to rely on heuristics to determine what to retransmit.</t>
      <t>This document defines the TCP signaling and endpoint behavior needed to use this information in data center networks or similarly controlled administrative domains. It does not specify how a network is configured for packet trimming, which packets a switch chooses to trim, or how DSCP values are provisioned inside such a domain. That network-side configuration is outside the scope of this document; deployments can refer to the Ultra Ethernet Consortium specifications <xref target="UEC-SPEC"/>.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" 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="tcp-extensions-for-packet-trimming">
      <name>TCP Extensions for Packet Trimming</name>
      <t>All additional state and signaling required between the two communicating hosts are carried as TCP options. This document defines a single TCP option, the TCP Trimming option, that is used for both capability negotiation and NACK signaling. The meaning of the option is inferred from its length and from the phase of the connection in which it appears.</t>
      <section anchor="tcp-trimming-option">
        <name>TCP Trimming Option</name>
        <t>The TCP Trimming option uses a single TCP option Kind. Two lengths are defined:</t>
        <ul spacing="normal">
          <li>
            <t>Length=7: Trimming Permitted, exchanged only during the three-way handshake. It carries a DSCP profile that the two endpoints use to negotiate the DSCP values used for trimming.</t>
          </li>
          <li>
            <t>Length=6: Trimming NACK, exchanged only on packets sent after the connection is established. It carries the sequence number of the trimmed packet.</t>
          </li>
        </ul>
        <t>A receiver MUST ignore a TCP Trimming option whose length is not 6 or 7. A receiver MUST ignore a Length=7 option on a non-SYN packet and MUST ignore a Length=6 option on a SYN packet.</t>
      </section>
      <section anchor="capability-negotiation-trimming-permitted">
        <name>Capability Negotiation (Trimming Permitted)</name>
        <t>If both endpoints support packet trimming, they SHOULD set the DSCP_TRIMMABLE codepoint on data packets once negotiation is complete. To prevent a scenario where a sender marks packets as trimmable but the receiver does not recognize the corresponding trimmed or control codepoints, capability negotiation is required.</t>
        <t>A TCP Trimming option with Length=7, Trimming Permitted, MUST be exchanged during the three-way handshake. Only if both the SYN and SYN+ACK packets carry an identical Trimming Permitted option will subsequent data packets be considered trimmable. This option MUST NOT be set on non-SYN packets.</t>
        <t>The Trimming Permitted option carries a DSCP profile that contains the six DSCP values defined in <xref target="dscp-marking-strategy"/>. The profile allows each endpoint to verify that the peer uses the same codepoints, avoiding silent failures caused by mismatched local DSCP configuration.</t>
        <t>TCP Trimming Permitted Option Format:</t>
        <figure anchor="fig-trimming-permitted-option">
          <artwork type="ascii-art"><![CDATA[
    +----------+----------+---------------------------+
    | Kind=TBD | Length=7 |   DSCP Profile (5 bytes)  |
    +----------+----------+---------------------------+
]]></artwork>
        </figure>
        <t>The DSCP Profile is a 36-bit big-endian value, padded with 4 reserved bits in the most-significant nibble of the first profile byte. The six DSCP values are packed as follows:</t>
        <sourcecode type="c"><![CDATA[
profile = ((DSCP_TRIMMABLE       & 0x3F) << 30) |
          ((DSCP_TRIMMED         & 0x3F) << 24) |
          ((DSCP_CONTROL         & 0x3F) << 18) |
          ((DSCP_NO_TRIM         & 0x3F) << 12) |
          ((DSCP_TRIMMABLE_RETX  & 0x3F) <<  6) |
          ((DSCP_TRIMMED_LASTHOP & 0x3F) <<  0);
/* profile is written as 5 bytes in network byte order */
]]></sourcecode>
        <t>If the local configuration does not provide an explicit value for an optional DSCP category, the endpoint infers it as follows:</t>
        <ul spacing="normal">
          <li>
            <t>DSCP_CONTROL defaults to DSCP_TRIMMABLE.</t>
          </li>
          <li>
            <t>DSCP_NO_TRIM defaults to 0 (CS0/DF).</t>
          </li>
          <li>
            <t>DSCP_TRIMMABLE_RETX defaults to DSCP_TRIMMABLE.</t>
          </li>
          <li>
            <t>DSCP_TRIMMED_LASTHOP defaults to DSCP_TRIMMED.</t>
          </li>
        </ul>
        <t>Trimming is enabled only when the Trimming Permitted option received from the peer exactly matches the option sent by the endpoint. If the options differ in any bit, both endpoints MUST disable trimming for the connection.</t>
        <t>This DSCP negotiation mechanism also creates a foundation for extending packet trimming across multiple administrative domains, or even across the public Internet, provided that domain-border devices translate DSCP values and rewrite the DSCP values carried in the Trimming Permitted option so that both endpoints agree on a consistent set of codepoints end-to-end. Defining such translation behavior is outside the scope of this document and is left for future work.</t>
      </section>
      <section anchor="trimming-nack-option">
        <name>Trimming NACK Option</name>
        <t>When congestion occurs at a network switch along the path, the switch trims the payload of packets marked with a DSCP_TRIMMABLE value. The switch updates the IP header to the corresponding DSCP_TRIMMED or DSCP_TRIMMED_LASTHOP value according to the domain's configured mapping between trimmable and trimmed codepoints, and forwards the header to the data receiver. The handshake ensures that both endpoints agree on the values used in this mapping.</t>
        <t>Upon receiving a packet, the data receiver inspects the DSCP field. If the packet is marked with the exact negotiated DSCP_TRIMMED or DSCP_TRIMMED_LASTHOP value, the receiver MUST immediately issue a new TCP packet with no data payload, carrying a TCP Trimming option with Length=6 (Trimming NACK). This option contains the sequence number of the trimmed packet. The receiver MAY include other options in this packet (e.g., SACK blocks <xref target="RFC2018"/>); there is not any requirement for NACK to be the only option set.</t>
        <t>Trimming NACK Option Format:</t>
        <figure anchor="fig-trimming-nack-option-format">
          <artwork type="ascii-art"><![CDATA[
    +----------+----------+-------------------------+
    | Kind=TBD | Length=6 | NACK Sequence (4 bytes) |
    +----------+----------+-------------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="basic-trimming-packet-flow">
        <name>Basic Trimming Packet Flow</name>
        <t>The following diagram illustrates the flow of packets when congestion occurs and a packet is trimmed:</t>
        <figure anchor="fig-basic-trimming-packet-flow">
          <artwork type="ascii-art"><![CDATA[
Event  TCP DATA SENDER                     TCP DATA RECEIVER
_____  ____________________________________________________________
  1.   [Sends Full Packet]        -->   [Receives Header Only]
        Format: IP|TCP|Payload              Format: IP|TCP
        DSCP:   DSCP_TRIMMABLE              DSCP:   DSCP_TRIMMED
        SEQ:    X                           SEQ:    X

                                          (Receiver detects Payload
                                          removal via DSCP change)

                                  <--    [Sends NACK Signal]
                                            Format: IP|TCP
                                            Options: NACK X

  2.   Receive NACK X
        (Triggers instant recovery
        of original payload)

        Retransmit segment X      -->    [Receives Full Packet]
        Format: IP|TCP|Payload              Format: IP|TCP|Payload
        DSCP:   DSCP_TRIMMABLE              DSCP:   DSCP_TRIMMABLE
        SEQ:    X                           SEQ:    X
]]></artwork>
        </figure>
      </section>
      <section anchor="effects-of-trimming-on-tcp-checksum-and-payload">
        <name>Effects of Trimming on TCP Checksum and Payload</name>
        <t>When a switch trims a packet, it updates the relevant IP header fields, including Total Length, Time to Live, Differentiated Services Code Point (DSCP), and IP Checksum. However, to avoid the high computational cost of parsing transport-layer headers, the switch does not update the TCP header <xref target="RFC9293"/>. Consequently, the TCP checksum remains calculated against the original, full payload, rendering it invalid for the trimmed packet.</t>
        <t>Switches may not trim the payload precisely at the TCP header boundary, as doing so requires parsing variable-length TCP headers to locate the data offset. Therefore, a trimmed packet may still contain a partial payload fragment. Since the TCP checksum is invalid, the integrity of this data cannot be verified.</t>
      </section>
    </section>
    <section anchor="data-receiver-behavior-upon-receiving-a-trimmed-packet">
      <name>Data Receiver Behavior upon Receiving a Trimmed Packet</name>
      <t>An endpoint MUST recognize only the exact DSCP values negotiated in the Trimming Permitted option. A packet whose DSCP field does not exactly match one of the negotiated values MUST be processed as ordinary TCP traffic, even if the DSCP value would belong to a trimming-related category in another deployment.</t>
      <section anchor="bypassing-tcp-checksum-validation">
        <name>Bypassing TCP Checksum Validation</name>
        <t>When a TCP data receiver identifies a trimmed packet by observing the exact negotiated DSCP_TRIMMED or DSCP_TRIMMED_LASTHOP value in the IP header, it MUST skip the standard TCP checksum verification for that packet, because trimming removes payload bytes that were covered by the original checksum. The receiver MUST process the packet only according to the trimmed-packet rules in this section; it MUST NOT treat the packet as ordinary TCP data.</t>
        <t>The checksum effects of trimming are described in <xref target="effects-of-trimming-on-tcp-checksum-and-payload"/>. Security considerations for bypassing checksum validation are discussed in <xref target="risks-of-bypassing-the-tcp-checksum"/>.</t>
      </section>
      <section anchor="ignoring-remaining-payload">
        <name>Ignoring Remaining Payload</name>
        <t>A trimmed packet may still contain payload bytes after the TCP header. The data receiver MUST NOT process, acknowledge, or deliver any payload data remaining in the trimmed packet.</t>
      </section>
      <section anchor="generating-the-nack-packet">
        <name>Generating the NACK Packet</name>
        <t>Upon processing a valid trimmed packet, the data receiver SHOULD immediately generate and transmit a new TCP packet to the data sender. This packet MUST NOT contain any payload data. It MUST include the TCP Trimming option with Length=6 (Trimming NACK).</t>
        <t>The NACK option payload is 4 bytes in length and MUST contain the sequence number extracted from the received trimmed packet.</t>
      </section>
    </section>
    <section anchor="data-sender-behavior-upon-receiving-a-nack">
      <name>Data Sender Behavior upon Receiving a NACK</name>
      <t>The data sender MUST mark trimmable data packets with the exact negotiated DSCP_TRIMMABLE value (or DSCP_TRIMMABLE_RETX when used). NACKs SHOULD arrive with the exact negotiated DSCP_CONTROL value.</t>
      <section anchor="identifying-and-retransmitting-the-lost-segment">
        <name>Identifying and Retransmitting the Lost Segment</name>
        <t>Upon receiving a TCP packet containing a NACK option, the data sender should extract the sequence number from the NACK option payload and locate the corresponding unacknowledged data segment in its retransmission queue.</t>
        <t>Due to mechanisms such as TCP Segmentation Offload (TSO) or middlebox fragmentation, the sequence number reported in the NACK might not match the exact starting sequence number of a segment in the data sender's queue. The data sender should identify the segment where the sequence space covers the NACKed sequence number (i.e., Segment.SEQ &lt;= NACK.SEQ &lt; Segment.SEQ + Segment.LEN).</t>
        <t>Once the appropriate segment is identified, the data sender MUST mark it as lost and SHOULD retransmit a SMSS starting from NACK sequence number immediately, subject to congestion window and flow control limits. If no unacknowledged segment covers the sequence number provided in the NACK (e.g., the segment has already been acknowledged or the NACK was spurious), the data sender MUST ignore the NACK and MUST NOT proceed to <xref target="entering-fast-recovery"/>.</t>
      </section>
      <section anchor="entering-fast-recovery">
        <name>Entering Fast Recovery</name>
        <t>If the sender successfully identifies and marks a segment as lost based on a NACK, it MUST enter Fast Recovery (as defined in <xref target="RFC5681"/>), provided it is not already in a recovery phase.</t>
        <t>A trimmed packet is an explicit signal of network congestion and packet loss. The data sender should anticipate that other packets within the same flight may have also been trimmed or dropped, which will be subsequently detected via additional NACKs, Duplicate ACKs, or RACK-TLP <xref target="RFC8985"/> timer expirations. By entering Fast Recovery, the data sender ensures that the congestion window is appropriately updated just once for the entire loss episode, conforming to the principle that losses, regardless of the detection mechanism, constitute a unified indication of congestion.</t>
      </section>
    </section>
    <section anchor="dscp-marking-strategy">
      <name>DSCP Marking Strategy</name>
      <t>This specification uses six DSCP categories, following the naming and semantics defined in the Ultra Ethernet Consortium specifications <xref target="UEC-SPEC"/>:</t>
      <ul spacing="normal">
        <li>
          <t>DSCP_TRIMMABLE: Applied by the sender to data packets eligible for trimming.</t>
        </li>
        <li>
          <t>DSCP_TRIMMED: Applied by a network switch after removing a packet's payload.</t>
        </li>
        <li>
          <t>DSCP_CONTROL: MAY be applied by endpoints to control traffic, including NACKs.</t>
        </li>
        <li>
          <t>DSCP_NO_TRIM: MAY be applied to packets that must not be trimmed.</t>
        </li>
        <li>
          <t>DSCP_TRIMMABLE_RETX: MAY be applied to retransmitted data packets to reduce the probability that they are trimmed.</t>
        </li>
        <li>
          <t>DSCP_TRIMMED_LASTHOP: MAY be applied by the last-hop switch when trimming occurs at the final network hop.</t>
        </li>
      </ul>
      <t>DSCP_TRIMMABLE and DSCP_TRIMMED are required for trimming. The other four categories are optional; when they are not configured, the defaults specified in <xref target="capability-negotiation-trimming-permitted"/> apply. All six values are negotiated using the Trimming Permitted option. Endpoints and switches MUST use only the exact negotiated values when marking or recognizing trimming-related traffic. A packet carrying any other DSCP value MUST NOT be treated as trimmable, trimmed, or trimming control traffic.</t>
      <t>Ideally, network switches should utilize at least two queues per port: a standard queue for DSCP_TRIMMABLE and regular traffic, and a high-priority queue for DSCP_TRIMMED and other control packets.</t>
      <t>Return Path DSCP for NACKs:</t>
      <t>A critical consideration is the DSCP value applied to the return NACK packets. These should ideally bypass the standard data low-priority queue to reach the sender with minimal latency.</t>
      <ul spacing="normal">
        <li>
          <t>Alternative 1 (DSCP_TRIMMED): NACKs could use DSCP_TRIMMED. However, this requires demultiplexing at the sender to differentiate incoming NACKs from inbound data packets that were trimmed on the reverse path.</t>
        </li>
        <li>
          <t>Alternative 2 (DSCP_CONTROL): The optimal approach, echoing Ultra Ethernet Transport protocols, is to map control packets to a dedicated DSCP_CONTROL codepoint. NACKs, pure ACKs, and FINs can utilize this to achieve improved latency.</t>
        </li>
        <li>
          <t>Alternative 3 (DSCP_TRIMMABLE): NACKs are sent with standard data priority. This reduces the number of required DSCP values but sacrifices the latency advantage needed for rapid fast-recovery.</t>
        </li>
      </ul>
    </section>
    <section anchor="interactions-with-other-tcp-extensions">
      <name>Interactions with Other TCP Extensions</name>
      <section anchor="tcp-fast-open">
        <name>TCP Fast Open</name>
        <t>The Trimming Permitted option MAY be carried in SYN and SYN+ACK packets that also carry TCP Fast Open <xref target="RFC7413"/> data or cookie requests. Because trimming is negotiated during the three-way handshake, SYN and SYN+ACK packets are sent before the endpoints have agreed to use trimming; therefore, any data carried in a SYN or SYN+ACK MUST use the connection's default DSCP and MUST NOT be marked DSCP_TRIMMABLE.</t>
      </section>
      <section anchor="tcp-authentication-option-tcp-ao">
        <name>TCP Authentication Option (TCP-AO)</name>
        <t>When TCP-AO <xref target="RFC5925"/> is used, a trimmed data packet cannot be authenticated because the switch removes payload bytes that are covered by the TCP-AO authentication tag. An attacker that can inject DSCP_TRIMMED packets toward a receiver may cause the receiver to emit NACKs to a spoofed source. Those NACKs may themselves be authenticated by TCP-AO, so the victim source receives apparently valid NACKs and reduces its sending rate. Because the trigger packet could not be authenticated, TCP-AO does not protect against this attack. Implementations that require full TCP-AO authentication of every data packet MUST NOT use packet trimming, or MUST rate-limit reactions to NACKs.</t>
      </section>
      <section anchor="multipath-tcp-mptcp">
        <name>Multipath TCP (MPTCP)</name>
        <t>When MPTCP <xref target="RFC8684"/> is used, the TCP Trimming option and the DSCP profile are negotiated independently on each subflow. A trimming event on one subflow affects only the sequence space and congestion state of that subflow; it does not imply loss on other subflows. An MPTCP sender MUST treat a NACK received on a subflow as a loss signal for that subflow only and MUST NOT use it to infer loss across the whole MPTCP connection.</t>
      </section>
    </section>
    <section anchor="interaction-with-existing-loss-detection-mechanisms">
      <name>Interaction with Existing Loss Detection Mechanisms</name>
      <t>In a fully trimming-enabled network topology where every switch is capable of packet trimming, heuristic mechanisms like DupAck and RACK-TLP MAY be disabled. Packet Trimming naturally handles high degrees of packet reordering without generating the false positive retransmissions common to DupAck heuristics.</t>
      <t>This extension is scoped to data center networks or similarly controlled administrative domains where the path can be configured for packet trimming. Outside such a trimming-enabled domain, endpoints MUST NOT assume that the path supports trimming. Consequently, DupAck and RACK-TLP MUST NOT be disabled in those cases. Packet Trimming does not hinder their functionality and can work cooperatively alongside these mechanisms.</t>
      <section anchor="interaction-with-rack-tlp">
        <name>Interaction with RACK-TLP</name>
        <t>Upon receiving a NACK, the data sender enters Fast Retransmit, retransmits the specified packet, and transitions to Fast Recovery. In this state, RACK-TLP continues to monitor for lost packets. RACK-TLP will not falsely retransmit the trimmed packet again because its internal RACK timer (based on rack.RTT + rack.reo_wnd) will not have expired for the newly retransmitted segment.</t>
        <t>Scenario A: Mixed Drop and Trim Events</t>
        <t>If a flight contains both dropped and trimmed packets, NACKs and SACKs cooperatively recover the flight:</t>
        <figure anchor="fig-mixed-drop-and-trim-events">
          <artwork type="ascii-art"><![CDATA[
Event  TCP DATA SENDER                        TCP DATA RECEIVER
 _____  _________________________________________________________
   1.   Send P0, P1, P2, P3          -->
        [P1 dropped by network]
        [P2 trimmed by network]
                                     <--   Receive P0, ACK 0
                                     <--   Receive P2 (Trimmed),
                                                NACK 2, ACK 0
                                     <--   Receive P3, ACK 0, SACK 3

   2.   Receive ACK 0
        Receive NACK 2, ACK 0
        (NACK triggers immediate
         retransmission of P2)
        Retransmit P2                -->
                                     <--          Receive P2, ACK 0,
                                                     SACK 2, 3

   3.   Receive ACK 0, SACK 2, 3
        RACK-TLP timer expires
        [Logic: Now() - P1_ts > RTT + reo_wnd?]
        (Condition = YES)
        Retransmit P1                -->
                                     <--          Receive P1, ACK 3
]]></artwork>
        </figure>
        <t>Scenario B: Delayed NACK / Preemptive SACK</t>
        <t>If a SACK arrives before a NACK, and the rack.RTT + rack.reo_wnd threshold has not been met, no retransmission occurs. When the NACK subsequently arrives, P2 is instantly recovered. The succeeding ACK+SACK for P2 provides the necessary time-lapse evidence for RACK to securely declare P1 lost and trigger its retransmission. This improves the standard RACK-TLP behavior which would otherwise, in this scenario, wait 2 RTTs for sending a TLP probe. By having the NACK trigger a retransmission which would bring more SACK information does the same thing as a TLP probe would do but faster, in only 1 RTT.</t>
        <figure anchor="fig-delayed-nack-preemptive-sack">
          <artwork type="ascii-art"><![CDATA[
Event  TCP DATA SENDER                           TCP DATA RECEIVER
 _____  ____________________________________________________________
   1.   Send P0, P1, P2, P3          -->
        [P1 dropped by network]
        [P2 trimmed by network]
                                     <--   Receive P0, ACK 0
                                     <--   Receive P2 (Trimmed),
                                                ACK 0, NACK 2
                                     <--   Receive P3, ACK 0, SACK 3

   2.   Receive ACK 0
        Receive ACK 0, SACK 3
        [No retransmission yet:
         Thresholds not met]

   3.   Receive NACK 2, ACK 0
        (Immediate recovery of P2)
        Retransmit P2                -->
                                     <--    Receive P2, ACK 0, SACK 2

   4.   Receive ACK 0, SACK 2
        (RACK: Since a later packet
         P2 has been delivered, P1
         is marked lost by time)
        Retransmit P1                -->
                                     <--      Receive P1, ACK 3
                                            (All data now contiguous)
]]></artwork>
        </figure>
        <t>(Implementation Note: To prevent redundant retransmissions in edge cases where a NACK arrives late but RACK has already retransmitted the segment, implementations MAY enforce a rule where NACK-driven retransmissions are ignored if the segment was already retransmitted within the last min_RTT.)</t>
      </section>
    </section>
    <section anchor="congestion-control-considerations">
      <name>Congestion Control Considerations</name>
      <t>A trimmed packet is an explicit and authoritative indication of network congestion: a switch removed the payload precisely because a queue exceeded its threshold. A NACK therefore conveys both a loss to be repaired and a congestion signal. A trimming sender MUST treat the receipt of a NACK as an indication of congestion and reduce its sending rate, as it would for a segment loss detected by other means <xref target="RFC5681"/>.</t>
      <t>The precise magnitude of this reduction is left as future work. Because trimming reports loss on a per-segment basis, a sender learns the exact number of segments lost in a flight rather than merely inferring that at least one was lost, which may permit a more accurate response than a single multiplicative decrease per loss episode. Defining and evaluating such a response is an open item; this document requires only that the reaction to a NACK be no more aggressive than the standard response to an equivalent inferred loss <xref target="RFC5681"/>.</t>
      <t>A retransmission triggered by a NACK is ordinary TCP data: it MUST remain subject to the congestion window and to the count of packets in flight, and MUST NOT bypass these limits. If the congestion window does not currently allow the retransmission, the retransmission is sent once the window permits.</t>
      <t>Because a NACK is generated only after a switch has actually removed a payload, the corresponding loss is never spurious; a sender SHOULD NOT undo a congestion-window reduction caused by a NACK. Reductions caused by inference-based mechanisms that remain enabled follow their own rules; see <xref target="interaction-with-existing-loss-detection-mechanisms"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="tcp-options">
        <name>TCP Options</name>
        <t>This document defines one new TCP option that requires assignment from the "TCP Option Kind Numbers" registry <xref target="RFC9293"/>. IANA is requested to assign one value:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Kind</th>
              <th align="left">Length</th>
              <th align="left">Meaning</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD</td>
              <td align="left">7</td>
              <td align="left">Trimming Permitted</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">TBD</td>
              <td align="left">6</td>
              <td align="left">Trimming NACK</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
        <t>The option formats are specified in <xref target="capability-negotiation-trimming-permitted"/> and <xref target="trimming-nack-option"/>. Prior to the assignment of a permanent Kind value, experimental deployments can carry these options using the shared experimental option Kinds and an Experiment Identifier as described in <xref target="RFC6994"/>.</t>
      </section>
      <section anchor="differentiated-services-codepoints">
        <name>Differentiated Services Codepoints</name>
        <t>This document does not request any new assignments from the Differentiated Services Field Codepoints registry. The DSCP categories used in this document (see <xref target="dscp-marking-strategy"/>) are realized with existing Differentiated Services codepoints <xref target="RFC2474"/> selected by local or domain policy. The names DSCP_TRIMMABLE, DSCP_TRIMMED, DSCP_CONTROL, DSCP_NO_TRIM, DSCP_TRIMMABLE_RETX, and DSCP_TRIMMED_LASTHOP are placeholders for those locally configured codepoints and do not denote new codepoint assignments.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The mechanisms in this document add a new control signal, the NACK, and rely on Differentiated Services markings to convey trimming events. Packet trimming is primarily intended for deployment within a single administrative domain, such as a data center, where the path is largely trusted. The analysis below also notes the residual risks that apply when traffic crosses a less trusted path.</t>
      <section anchor="forged-nack-injection">
        <name>Forged NACK Injection</name>
        <t>An attacker who can inject a TCP segment carrying a forged Trimming NACK option for an existing connection can attempt to force the sender to retransmit a segment, wasting bandwidth and provoking an unwarranted reduction of the congestion window. Several factors bound this attack:</t>
        <ul spacing="normal">
          <li>
            <t>A NACK is acted upon only when it arrives on a segment that passes the connection's normal demultiplexing checks. An off-path attacker must therefore guess the connection's four-tuple, as for any spoofed TCP segment.</t>
          </li>
          <li>
            <t>As required in <xref target="identifying-and-retransmitting-the-lost-segment"/>, the sender MUST ignore a NACK whose sequence number does not correspond to an outstanding unacknowledged segment. A forged NACK is effective only for an in-window sequence number, which confines the attack to the same blind in-window space analyzed in <xref target="RFC5961"/>.</t>
          </li>
          <li>
            <t>A retransmission provoked by a forged NACK carries only data the receiver legitimately expects; it cannot cause the receiver to accept incorrect data. The impact is limited to wasted bandwidth and an unnecessary congestion-window reduction.</t>
          </li>
        </ul>
        <t>To bound the congestion impact, the response to a NACK SHOULD be no larger than the response to an equivalent loss inferred by other means, so that a forged NACK is no more damaging than a forged duplicate acknowledgment. Implementations MAY additionally rate-limit the retransmissions and congestion reactions driven by NACKs.</t>
      </section>
      <section anchor="tcp-ao-and-trimmed-packets">
        <name>TCP-AO and Trimmed Packets</name>
        <t>When TCP-AO <xref target="RFC5925"/> is in use, a trimmed data packet can no longer be authenticated because the authentication tag covers payload bytes that the switch has removed. An attacker that can inject DSCP_TRIMMED packets toward a receiver may cause the receiver to emit NACKs to a spoofed source. Those NACKs may be authenticated by TCP-AO, so the victim source receives apparently valid NACKs and reduces its sending rate. Thus, trimming weakens TCP-AO's protection against spoofed loss signals. Deployments that require full TCP-AO authentication for every data packet MUST NOT use packet trimming, or MUST treat the congestion reaction to NACKs as untrusted and rate-limit it.</t>
      </section>
      <section anchor="risks-of-bypassing-the-tcp-checksum">
        <name>Risks of Bypassing the TCP Checksum</name>
        <t>As described in <xref target="bypassing-tcp-checksum-validation"/>, a receiver skips TCP checksum validation for a trimmed packet. This weakens the end-to-end integrity check for the header of that packet, so corruption of those header fields may pass undetected. The consequences are bounded by the restricted use the receiver makes of a trimmed packet. The receiver reads only the connection four-tuple and the sequence number, and MUST NOT deliver any payload from a trimmed packet to the application (see <xref target="ignoring-remaining-payload"/>).</t>
        <t>Undetected corruption can have the following effects:</t>
        <ul spacing="normal">
          <li>
            <t>Corrupted port numbers: If the source or destination port is corrupted, the receiver may fail to find a matching connection socket and discard the packet. If a false match occurs, the receiver will issue a NACK for an unexpected sequence number, which the sender will ignore unless that sequence number matches an unacknowledged packet.</t>
          </li>
          <li>
            <t>Corrupted sequence number: If the sequence number is corrupted, the receiver will issue a NACK for an incorrect sequence number. As with a forged NACK, this is ignored unless it falls within the outstanding window, and even then it can only cause a spurious retransmission, which the receiver disambiguates with a Duplicate SACK <xref target="RFC2883"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="dscp-remarking-and-priority-abuse">
        <name>DSCP Remarking and Priority Abuse</name>
        <t>This specification places control traffic, including NACKs, and trimmed packets into higher-priority service classes than ordinary trimmable data (see <xref target="dscp-marking-strategy"/>). Where traffic can cross a trust boundary, this raises two DSCP-related concerns:</t>
        <ul spacing="normal">
          <li>
            <t>Priority theft: an attacker that sets the control or trimmed-class codepoint on its own traffic could obtain preferential queueing, claiming an unfair share of capacity or degrading the latency of legitimate control traffic.</t>
          </li>
          <li>
            <t>Trimming evasion: an attacker that clears the trimmable codepoint on its flows could render them ineligible for trimming, escaping the congestion response that trimming imposes and competing unfairly with conforming flows.</t>
          </li>
        </ul>
        <t>Both are instances of the general Differentiated Services trust model <xref target="RFC2474"/> <xref target="RFC2475"/>: DSCP markings arriving from outside a trust boundary cannot be relied upon. A trimming-enabled domain MUST treat its boundary as a trust boundary and police or re-mark the DSCP of ingress traffic, so that the trimmable, trimmed, and control codepoints carry their intended meaning only within the domain that enforces them.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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" target="https://www.rfc-editor.org/info/rfc9293" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9293.xml">
          <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="RFC2474" target="https://www.rfc-editor.org/info/rfc2474" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2474.xml">
          <front>
            <title>Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers</title>
            <author fullname="K. Nichols" initials="K." surname="Nichols"/>
            <author fullname="S. Blake" initials="S." surname="Blake"/>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <date month="December" year="1998"/>
            <abstract>
              <t>This document defines the IP header field, called the DS (for differentiated services) field. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2474"/>
          <seriesInfo name="DOI" value="10.17487/RFC2474"/>
        </reference>
        <reference anchor="RFC5681" target="https://www.rfc-editor.org/info/rfc5681" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5681.xml">
          <front>
            <title>TCP Congestion Control</title>
            <author fullname="M. Allman" initials="M." surname="Allman"/>
            <author fullname="V. Paxson" initials="V." surname="Paxson"/>
            <author fullname="E. Blanton" initials="E." surname="Blanton"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document defines TCP's four intertwined congestion control algorithms: slow start, congestion avoidance, fast retransmit, and fast recovery. In addition, the document specifies how TCP should begin transmission after a relatively long idle period, as well as discussing various acknowledgment generation methods. This document obsoletes RFC 2581. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5681"/>
          <seriesInfo name="DOI" value="10.17487/RFC5681"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2018" target="https://www.rfc-editor.org/info/rfc2018" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2018.xml">
          <front>
            <title>TCP Selective Acknowledgment Options</title>
            <author fullname="M. Mathis" initials="M." surname="Mathis"/>
            <author fullname="J. Mahdavi" initials="J." surname="Mahdavi"/>
            <author fullname="S. Floyd" initials="S." surname="Floyd"/>
            <author fullname="A. Romanow" initials="A." surname="Romanow"/>
            <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="RFC2475" target="https://www.rfc-editor.org/info/rfc2475" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2475.xml">
          <front>
            <title>An Architecture for Differentiated Services</title>
            <author fullname="S. Blake" initials="S." surname="Blake"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <author fullname="M. Carlson" initials="M." surname="Carlson"/>
            <author fullname="E. Davies" initials="E." surname="Davies"/>
            <author fullname="Z. Wang" initials="Z." surname="Wang"/>
            <author fullname="W. Weiss" initials="W." surname="Weiss"/>
            <date month="December" year="1998"/>
            <abstract>
              <t>This document defines an architecture for implementing scalable service differentiation in the Internet. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2475"/>
          <seriesInfo name="DOI" value="10.17487/RFC2475"/>
        </reference>
        <reference anchor="RFC2883" target="https://www.rfc-editor.org/info/rfc2883" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2883.xml">
          <front>
            <title>An Extension to the Selective Acknowledgement (SACK) Option for TCP</title>
            <author fullname="S. Floyd" initials="S." surname="Floyd"/>
            <author fullname="J. Mahdavi" initials="J." surname="Mahdavi"/>
            <author fullname="M. Mathis" initials="M." surname="Mathis"/>
            <author fullname="M. Podolsky" initials="M." surname="Podolsky"/>
            <date month="July" year="2000"/>
            <abstract>
              <t>This note defines an extension of the Selective Acknowledgement (SACK) Option for TCP. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2883"/>
          <seriesInfo name="DOI" value="10.17487/RFC2883"/>
        </reference>
        <reference anchor="RFC3168" target="https://www.rfc-editor.org/info/rfc3168" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3168.xml">
          <front>
            <title>The Addition of Explicit Congestion Notification (ECN) to IP</title>
            <author fullname="K. Ramakrishnan" initials="K." surname="Ramakrishnan"/>
            <author fullname="S. Floyd" initials="S." surname="Floyd"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <date month="September" year="2001"/>
            <abstract>
              <t>This memo specifies the incorporation of ECN (Explicit Congestion Notification) to TCP and IP, including ECN's use of two bits in the IP header. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3168"/>
          <seriesInfo name="DOI" value="10.17487/RFC3168"/>
        </reference>
        <reference anchor="RFC5925" target="https://www.rfc-editor.org/info/rfc5925" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5925.xml">
          <front>
            <title>The TCP Authentication Option</title>
            <author fullname="J. Touch" initials="J." surname="Touch"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <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="RFC5961" target="https://www.rfc-editor.org/info/rfc5961" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5961.xml">
          <front>
            <title>Improving TCP's Robustness to Blind In-Window Attacks</title>
            <author fullname="A. Ramaiah" initials="A." surname="Ramaiah"/>
            <author fullname="R. Stewart" initials="R." surname="Stewart"/>
            <author fullname="M. Dalal" initials="M." surname="Dalal"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>TCP has historically been considered to be protected against spoofed off-path packet injection attacks by relying on the fact that it is difficult to guess the 4-tuple (the source and destination IP addresses and the source and destination ports) in combination with the 32-bit sequence number(s). A combination of increasing window sizes and applications using longer-term connections (e.g., H-323 or Border Gateway Protocol (BGP) [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5961"/>
          <seriesInfo name="DOI" value="10.17487/RFC5961"/>
        </reference>
        <reference anchor="RFC6298" target="https://www.rfc-editor.org/info/rfc6298" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6298.xml">
          <front>
            <title>Computing TCP's Retransmission Timer</title>
            <author fullname="V. Paxson" initials="V." surname="Paxson"/>
            <author fullname="M. Allman" initials="M." surname="Allman"/>
            <author fullname="J. Chu" initials="J." surname="Chu"/>
            <author fullname="M. Sargent" initials="M." surname="Sargent"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>This document defines the standard algorithm that Transmission Control Protocol (TCP) senders are required to use to compute and manage their retransmission timer. It expands on the discussion in Section 4.2.3.1 of RFC 1122 and upgrades the requirement of supporting the algorithm from a SHOULD to a MUST. This document obsoletes RFC 2988. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6298"/>
          <seriesInfo name="DOI" value="10.17487/RFC6298"/>
        </reference>
        <reference anchor="RFC6582" target="https://www.rfc-editor.org/info/rfc6582" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6582.xml">
          <front>
            <title>The NewReno Modification to TCP's Fast Recovery Algorithm</title>
            <author fullname="T. Henderson" initials="T." surname="Henderson"/>
            <author fullname="S. Floyd" initials="S." surname="Floyd"/>
            <author fullname="A. Gurtov" initials="A." surname="Gurtov"/>
            <author fullname="Y. Nishida" initials="Y." surname="Nishida"/>
            <date month="April" year="2012"/>
            <abstract>
              <t>RFC 5681 documents the following four intertwined TCP congestion control algorithms: slow start, congestion avoidance, fast retransmit, and fast recovery. RFC 5681 explicitly allows certain modifications of these algorithms, including modifications that use the TCP Selective Acknowledgment (SACK) option (RFC 2883), and modifications that respond to "partial acknowledgments" (ACKs that cover new data, but not all the data outstanding when loss was detected) in the absence of SACK. This document describes a specific algorithm for responding to partial acknowledgments, referred to as "NewReno". This response to partial acknowledgments was first proposed by Janey Hoe. This document obsoletes RFC 3782. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6582"/>
          <seriesInfo name="DOI" value="10.17487/RFC6582"/>
        </reference>
        <reference anchor="RFC6675" target="https://www.rfc-editor.org/info/rfc6675" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6675.xml">
          <front>
            <title>A Conservative Loss Recovery Algorithm Based on Selective Acknowledgment (SACK) for TCP</title>
            <author fullname="E. Blanton" initials="E." surname="Blanton"/>
            <author fullname="M. Allman" initials="M." surname="Allman"/>
            <author fullname="L. Wang" initials="L." surname="Wang"/>
            <author fullname="I. Jarvinen" initials="I." surname="Jarvinen"/>
            <author fullname="M. Kojo" initials="M." surname="Kojo"/>
            <author fullname="Y. Nishida" initials="Y." surname="Nishida"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This document presents a conservative loss recovery algorithm for TCP that is based on the use of the selective acknowledgment (SACK) TCP option. The algorithm presented in this document conforms to the spirit of the current congestion control specification (RFC 5681), but allows TCP senders to recover more effectively when multiple segments are lost from a single flight of data. This document obsoletes RFC 3517 and describes changes from it. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6675"/>
          <seriesInfo name="DOI" value="10.17487/RFC6675"/>
        </reference>
        <reference anchor="RFC6994" target="https://www.rfc-editor.org/info/rfc6994" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6994.xml">
          <front>
            <title>Shared Use of Experimental TCP Options</title>
            <author fullname="J. Touch" initials="J." surname="Touch"/>
            <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="RFC7323" target="https://www.rfc-editor.org/info/rfc7323" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7323.xml">
          <front>
            <title>TCP Extensions for High Performance</title>
            <author fullname="D. Borman" initials="D." surname="Borman"/>
            <author fullname="B. Braden" initials="B." surname="Braden"/>
            <author fullname="V. Jacobson" initials="V." surname="Jacobson"/>
            <author fullname="R. Scheffenegger" initials="R." role="editor" surname="Scheffenegger"/>
            <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" target="https://www.rfc-editor.org/info/rfc7413" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7413.xml">
          <front>
            <title>TCP Fast Open</title>
            <author fullname="Y. Cheng" initials="Y." surname="Cheng"/>
            <author fullname="J. Chu" initials="J." surname="Chu"/>
            <author fullname="S. Radhakrishnan" initials="S." surname="Radhakrishnan"/>
            <author fullname="A. Jain" initials="A." surname="Jain"/>
            <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="RFC8684" target="https://www.rfc-editor.org/info/rfc8684" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8684.xml">
          <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>
        <reference anchor="RFC8985" target="https://www.rfc-editor.org/info/rfc8985" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8985.xml">
          <front>
            <title>The RACK-TLP Loss Detection Algorithm for TCP</title>
            <author fullname="Y. Cheng" initials="Y." surname="Cheng"/>
            <author fullname="N. Cardwell" initials="N." surname="Cardwell"/>
            <author fullname="N. Dukkipati" initials="N." surname="Dukkipati"/>
            <author fullname="P. Jha" initials="P." surname="Jha"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document presents the RACK-TLP loss detection algorithm for TCP. RACK-TLP uses per-segment transmit timestamps and selective acknowledgments (SACKs) and has two parts. Recent Acknowledgment (RACK) starts fast recovery quickly using time-based inferences derived from acknowledgment (ACK) feedback, and Tail Loss Probe (TLP) leverages RACK and sends a probe packet to trigger ACK feedback to avoid retransmission timeout (RTO) events. Compared to the widely used duplicate acknowledgment (DupAck) threshold approach, RACK-TLP detects losses more efficiently when there are application-limited flights of data, lost retransmissions, or data packet reordering events. It is intended to be an alternative to the DupAck threshold approach.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8985"/>
          <seriesInfo name="DOI" value="10.17487/RFC8985"/>
        </reference>
        <reference anchor="UEC-SPEC" target="https://ultraethernet.org/">
          <front>
            <title>Ultra Ethernet Consortium Specification 1.1</title>
            <author>
              <organization>Ultra Ethernet Consortium</organization>
            </author>
            <date year="2026" month="October"/>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+193XIbR5LuPZ6iQopYkzYAi5RMS/R4zlIUtVasRHJIenYn
JiYcDaAA9Aro7unqJsWxdJ795JeZ9dMNQJKtnY29OIyZMEV0V2VlZeXvV4nR
aDRo8mZlj82Dm9NLc5lN39rG3NT5ep0XC3P2rrGFy8viwSCbTGp7q8/5Bx4M
plljF2V9f2xcMxu4Jitmv2SrsqAR59nK2UFe1cemqVvXHD569OzR4aDKjwfG
NOWU/2zpd1fWTW3nzr9Cf7lfyx/4icGsnBbZmoac1dm8Ga2zf+SrdtRMq/Wo
YopHjRI0WhE9rhm4drLOHShv7it68dXZzcvBjD47HkzLwtGiWj86renxIKtt
dkzLygpXETWDu7J+u6jLtqKHaBrzH/RvMOTf8LfBIGubZVnTOkZErDHzdrUS
Al+ustu8deaqXNvSvGFC+ZG8yJucVkePjPkPrq3lleShsl5kRf6PrCG6j83P
l8/5r3ad5SvijQw9ltX/q2va2TibunFbTcZ1uUnKn7OVLZq8MK/Kom3M83KS
1X1a/tyjJXnoo7Tc6tjjCb/waWJOSwdSrrJ8mveJOO0RkTy0QcS3z+sym03L
dUrNlAcf1/zevyoJg6Ks1/TirYW4Xb08PTw4eKa/Pj34/on++uzw2WP/wJPw
1++Onh4cDwZ5Me8P8ujgaXz8O//r06d+kMcHR/6B754dfhd+PTrQX48On/kH
jr57euh/PQqDHT175sn4/vGhH/f7Jwf+16dHT/0DT5895dd+PjsdXV+enR4z
W5qsXtjm2CybpnLH337brpo6s83S1oVtxsTTb+UxOfg/41Nzph/TThU4j3m7
NteVnebzfMrsNwfjA34tyD7/jPS/vFcfGYwf4wNoDh8dHo0OHg0G4/F4MBiN
RiabOHpt2gwGN8vcGTru7ZrkyzghwDqTGagd69WRaZZZY2yRTVb0IX9UzKoy
LxpHgoV5MjOlEWxtiAwcZkf0GZev81VWr+5JZIqmLlcrOzPZjBRHDgKwzzQ5
CVXhSEGZ1lkj+sV4/WKCSBARd0tbmLwxRHJ2S5IIasbmP/BXd5c306WZtPO5
rR0RPrWYiuiurVuWq9nQ0HzEJayEHs9xnoiuWV1WFebJdOYhPWD9cKDC8R+q
7H5FB8GQujVE0F1Wz+SDpc1mth4bZmS2WpV38veZxRkRumlppBtbS5PMLPFI
1p9PzbldCBNOpm+L8o64s+B92Ds/Of33/aEwHNTNM0fvDc26rG1vjFXpnKnt
tLy19T3tL2/wOp/NVqTIH5pX4PusnYIQ2u7Ty68cNmMB8og03RcaYIVtr2jB
WZ0TY+gz3QqeIINIuHxRZCtTzpMRhtjns3fVinQBy58f+bxsoizvnZ2e75tf
f9UD++GDDFiRcpkyA9Y2I31kwUdi03TaknjeM7dJJmknaU7iKsmH0EAvEyNu
84bIoe2godZ2ShubuzW4nc2yqjF/b/Pp25WM0jb5Kv+HjXJjJvTnu3zWLI2d
E505ywPx7xXLF31i6VXwdUEKkSjgE0D2kvdjQqzhicyVbWDE1PiZm5zsEGn/
vaubC10wFBAtmAZtC5KKvBaxpQdkFdg4OSHO1rcsD0MYXuwuTQciaP8sS1Wy
c3d5MSvvQAQZf+MsS86QF5uvq9JB2pb5YmlgoQtiZkXStGruzR4RPMsxBo8+
KUHWTFZzMHK0YhoC4rVu1zgNZUuDrEuS8gIjrywm4m2lMz6nsfncZjXGMY8f
PTJrt098fFnWumVk6h09PGQppn8pwxphD1S/sCdb3WX3kEFLZ5gWPYSQ5I0X
bmfmdbkWcVy3dDrlUIjIzFpIIK2UhKd7lF60FZ2ufTqobS0n5i6TIzrPa6Jn
TYq6JJ7pOVFOTJe5vQXPc6J7QhtKdDhVLqTwbHGb12WBGSArJETMaj0xtS1r
YhcJytCQ8qlJbqAX+KiwDpPnaMUNE0K6FAKe0WM0SsNSQcsk4huSVl7xPgkM
6YTRzetLYRssEbGttsQux2Rkoh10p7KKD9dyqKIvOu4G470GBy/rcmLNHo23
zycozATlT/TQwKtsirec/XtLAmRHk8wRd4SfJIktHJKFrL4hsdfPSWHbGs+T
XSEe3NKfeN8qW49USk2QALxHPuy6ciQxP5V3xHPSchM7zSBTIj5+JVaOy5zE
LGMRhPSGXXWsuOkYkXafYy20i1CU00ZY6VlOm4dJzR4tmpdHz/NZBQ/qfLEg
E8FecRRUPtk0fpWRZZ22YtBonGDpmAVQTKzwimZTDmh1fVe/FGHqmwQ6orR9
rAXG5oIIyuWYJvKJJZDU7DT9pOFd6kk4khjvsHz4MGShDlzFwVuQAeadbis4
45hApUiX6O3hkswemb4dRpd8IPZAwcpggKe2JtEqoiE2exnvwoko/j+1lgzj
m6zIFqxY9j9lqMUaf9pUj80rVjbsXJQFDYEPJ/cUrpi2gnjg342PQNSQ9w08
cecB+yJ29iD4JmXfwtP2Pr8nNQj6XuRzPgDkbDfEgWvS6TkOwylx1FzCZSKd
dH1Kx44sLWIcJwca3rDsjg1shzCLA7ThU4hBjH4SnZyiUV2Yuh7sMsH5gKh9
3N+g6er63vPYi1A4/6Zo1xPikM6c0TKnWKHfDPIg1jytDlBAAOZiBcRDJD0F
FhP/aisuRjy+/rziJFjSklkjz3lVMe77qjM7pydly+GQimMgJ3oW3FPSJUsK
48qayRHlLqoldx3f8r/Hi2Whm5VEVlF6d5qUFNnpLGxqzg7YPF+QvyMM6vm8
Q1p+Pl1GK+FlfLosS+hnCCA9y/YEY0OcECK2qiLpZN/mUFqsLBy5MnS06f1M
yYSYEH+VoBE/4ElSbtDC24Y/YFmYlpWVjU+24Afag2pV3osVhKyy5fbnY3ec
8xHtBAf2oblhMShX5eIe227NW9LsRCsdyQdvfr6+eTCU/5rzC/796uxPP7+6
OnuB369/Onn9Ovzin7j+6eLn1y/ib/HN04s3b87OX8jLb07+8kB8qAcXlzev
Ls5PXj8QfZuKHnhMiyT7mUNYyALjHGQweG5a5xPR0c9pUw6e6OGmWJistVju
Axx0dgRkKlZO8k82YaSabVZjCNL8xNcKbq5jb4g06B1ODalgYRTNEXJGjoWp
Z2cGgxMaJJt5j8+QuYWXBM86nJiajngOaZyQSFgr9oWEg6RivW4L3il6bEmG
VCQMmiKXNYOEsuKd1Cho44gicigWK5s8OwznNhrE8EHGLnjr9HhMSjKvxIZs
Qo4MObCFXZTQrhBUrAPKKy5GdCDFE4VYWZ5IxjZy5tm5FKckp/WQgVnQBKz4
8Te2IUvyZfzLdDQKO/VaQs4m+S6yTY434mF3KReVhlvb14ilbeWK+Xdy6mkB
xHmhSrgtfJwdDwZfm9f89x+/P46DXuK0NA0cZjK7ZDUXVoVq1tZeG8P+2hE5
2GTEi5lbZm8tKyvZSVDDWoRUx5xMrmyCl4IY67PqLMMOiHZI1U/YNK/MxpHm
o4Rm7NkGuWX0jB2fs3lj640toOieZJjiYre0s84aWFVtt1Zqw3V82rMThBWW
VHdtWJOQ+MB7zrbu190S8ZQKSi7K/Qja9/ux2TmQ3yk/CKSV3ixG13859yof
Qrf1raPOW/ENlbbTeBrOk9OwtykTFIQ+jGdnlJydmMOt/MMfKPydy3mLe+69
wg0rxcpK1amzTZCFX26uXr15c/L89RntG5kItsOl2le/wSXvUUI7m0WElw2y
ACXCwFsWArI+FLnWeQkdyTxSPwL+k4tW0glpEty3Qk7YmmCTQ0SvckW6gPy/
YsbnRIWENtbnRcICSP/uUEG5C/qT5WqrACFC8AIx3Hp0WQzIpMQz8anTe4Ez
k+t+4SmICSSK/vsNdKJnDft1CHTInhecVdhCQSSV7IVrJ3KQmu6uTfgowi+A
Cg38VsWvI3jLjKchF/Snrti7sarGnUR8TCthayRjiOOev+voH1WVUNR//dve
w5mbViP1s0fsrNnF/b6YCD+oJu0sgqHgNpKSI7GB8xY0YWVJjlhz88QUg3ak
I7stc5YiCVk4CCUPD9xnpTi5NxRKkrdJkeyMYlLsAlPe8bzGnKPbxhmxKeYl
e6xkCv4v/ZDQT/N8RHEpp3u/GYWf7b9u/HzD771nu/PjzfMX9GtQW+/pEybw
Uhm1952ET/v0xu+eD2QPfj02D2nNWzTQSATggwhIZ3oErebx0WhCtndCL9Ne
5STTvPEIzmdw7/mgPTHIidRIPUxyjfnhE5D7MkrD9CKfQFmoiZB0kJcKrFTk
pC9i7GFDjtn9mZcsPn5DpgM/wI9mb6+nDeXnX8yjd49f7ps//ME8frSvrJSf
9I2zF+HPyRuHT7a+cXpxfnN18XrbGwdPt75xfsHTbH3jcDdVWMcvV2c3/9l5
wxx9bB2/vD65vvnp4rLzxqP9Hwbffh3YjZRrDQkowFQVtCTJwn8wnE4xX38r
UgRbhY2Ts9QNYIK+51hoBoeXNKtmqXkjJW9cqMYJh1HLq0OfmBN1wF4jJyM7
W/616XCflE/WrhoO0LosG/tHPdvTRx+ZvdPrR9++eLkfHuvx+jMG7vN6+ytn
L6BgQm3FaUkniUHEL9+pmNWgpq4y1KJ9l02RpRH15lKfmz25yX2Hn+S1pX45
qW1OmnDIU9zj0A77XggblVnu2LyHrIdPL0T/0OcJeDdTMx0LBBRMUWRTW1Su
kXRF4lqemXPmqrHiDvRLUdm0ltzzqskrGI6tKQCOyuG6+OeZSS35q1MUYzgY
Hnqx1LKCvDqaiHzPrGSMOPWB7H1X/XByFodl0/v2YVn+qW10pUzcY3K2IDdD
XE42867hqiBs+Dwxdnhj1JTQwGPzAhZXsoechhOaMUlIvXxWNkEqFwjH5g1v
xLxtyH4i7H/rY6w0evAG8deHwYoUtGHRgHCKMimYlKgqcc496+c1AaDwmcVm
+YkSIBHu3SF4Ft7oZH3fl/dETYiM1VYzljmM9urSZxw1XdJ1RTt2gJix9YyL
Hsum9Kr4r5qYZGn6qpNmWmeSPQ0BfnCVwXbv+Hb8me2VzjAJ3ELvXssqg2tq
APeoeaEfkTGMkkaNPs2ipNKe/1wFjbNZou0QgDRXRQrAxSMxz+1qFhSNnuW8
u2esk6C6YkQ7+w2sH3ZjDAnkwEgMBN9ci76FveOoQIngqYvSe9YsVcOYfN0R
giYRxFES6HHmtut/dx3kz4qHef/iQk7+Qgydrlo6sCXn4r2e9nukK9mz48V4
aK5xHCdkht/6XPajg6cfPuz/gKlq6yNmqHaNlPjA45DzSZZcGtsDTgN4w9Gk
xio98/+dTvBuF/iIfuVZrz0P9554D/j3OcC73N9EcY0kJf1BNN7zzJHZiHpc
2P6S3A9xkMUVwUckc4s6WxuK3loJdLTISZ+nKutuh1YsZuF8Yb9UPjZZfMZB
OYvoi5ObE3ON3OmV2fYTnrk6Oz179eezq8Ev+DHmly/4Ib4fjGnwv16TSnHm
JepNwpa/+XlHoz/igSsRZ2d+EsWFcPlvwUlVESI9/J7ofH+pyr3z030mvAqF
cKz/3fDudz5z9iIMcH32J3xm/nMr23rPDAYfear3s3cV8h1c+nRG1/UbxqDD
WZJ2M7e5Bt+Sjtj/HDr+MBrhP7o3cnY4L/u330DATr5/zo8oCHcskzPzDiEu
yhj/Z/849ChKvtBswFIGsMF9hFnNyQhIGdYr64QXVxHN4IvbuqsihYkYpqL6
BWL4vr+lv08c8czvFMiODptAQyWBvMBDoXVUhZ1xnRBQkcSmFawcTpeWTEa7
Zu3jl/7rQytvjMp5HBfpymk1muobI3pjpLvhXb2s67JFb4H2JvW8aruyt9jq
6IKxr0A+jxg9UHhTAlokhmDIqB5YqdeMzfnsCq84Ua/iQscmYBwAMkHGSFwr
gEeQ/WwFWMPhrGtEb9dOcpNaqB6tsnsiWSh3HV81BL2y3FBi0VWyaQb+8sOH
MZfjJMO3uo/FGM9faAF2ISiyBuKB61uACTjJhfkTMZSCf3Bias7McmyJoJn0
SB5rwBs5+Gsm28Inu2e68UTH167oOOYOvpQm4ZLlMHApQ6iOylvJIUjpHQwX
GHeb1Tkc3ZGm7+MIHBsjeaCsYn+snM+dOkS1Jcppv7Me5UwuWc/VyrtaLGw1
4LWB8nmdsToYkwYspnaTw1yLYgYJ+1FKXNRILofIiOvRWQHOkH/E+cick8yD
h+YFPgzq/rkPtVq4zFeJy3yjpIviGQxOipjVYIc1JsQDSEJc4jSwTNzjT8WW
qIh4R5fLJtEbjwLayRcwgE390mQindrnxSlipkPmJOvGAQ/tPbOUjgYQfEOJ
uvN5LyymCLJdobQpQV7p9xNqhXQBz+XTPpKBEJ83FrfH4ovdV5ljkerorj9j
CzMNRSf+ma62ug3PRGWFQXoxDGfnFX7bE7kJicUEOU1fEfiCsMVvYdB/rCKZ
z+5tXolGwcUCCv26MisiOI3JEg7wvJ4NsC0vGuxK8FGUMyFJPX7nDnEBW1pJ
jadKJczXD0tAoYpBGtSx3G5EwcrAkcditSsb4xcnyaIfwsJRrmiQEkoH7gsa
tktLF4ElNpq3mCjimm0CBUAp4jdaNYrpri255lAIvuSieAmuiQdhjJsTBZEJ
yN20dS4SUOfuLU+fCOnSdgjY10TLK1QjMfgVmwEJPbx5zvXDUe0/TCzxyad1
ZVcaYo03KmaFMXUOR9glFYBhAvS0nHOb2RU/iTDTz6Fj+EWo4G8YIqz532zB
HNbzxY6iV5qciNCJRa2KZesOtC0voeXRNCuwkIl85kW9x40sQZpnkYKnRvn6
eWBIsEG9dXNpXHISGsvvgFx8IrcgAs/80Of9LETMk5ipT3AUPKuna1sWwr7j
+wdpHjlklrfsjli7ayn77rZ1oFGoTeFmTAyyPknSq1PU/JxUUMzomb2Oco1J
eo6skcmiowtKnN98JGUp9PjENL6IIGlDOYZiEO49qC0GG0FMX8NNvNbIg85m
fIOVSd15g8/7iqtg8saHLTm2RAR1ByNzO+CdlMduyTZWt3XrloeN3iZJWF3i
iXVzoW2RHPWZn1eWnBeM4elidc3fASolHr5o2W0PqX+nODhBLSnbRGVezOdM
yd7NtYCB5QrFpHwXXLksrr2/uNrCNY/eEa9xzWBuuDvi5sS9J+taNym2OsnO
ddbW4/NXTpdm+kKuG+D3X4mUcQQ20SHb0Q6r/XWBYCK/T89ePrZI8MlIY4oB
zR9+5Ifl984n34R/vT47h9648I4vg42rmhFDYXUuOjyzTYmKp1aKbgziZnCD
HKrkGgFphjfX15GpLGkCCustJ1HDQ2Ac/gvw8Kbccq2Cs99InXkgCMCtjeN8
clH2RdKvKWFof+pQ8EklRPOn6WYtcTFmRZ7I7J4cKq4iJRNpJMUv4xqDq8hD
KFu3v4OBCisK7wTlHCypQGLZQUFxCloC9ypGPg/iXYIz/dS8xCWOK/0U0frW
1z6E6qwX0HYK64lw8b7j6eKyCQN5ouD77ZYLBVyOEryY99YEo9ulZC/roD+S
uyX7SblNbo9xNlqZzNGbJ1uAf+MtfgzQB0kJOV6FCljtKENYU3J5audpzQDG
ySvReuR6StyRmiVvPgE20cshawYB3VopY05CMUekg2HyOE8CU2QwD2A4Ac8D
VCDnBhFh5VmKDGWjNcQFD71KI/+mUbdePcE1CljyKlfHdEwhkrFb5WRTPDsl
Ii3h9s6gv6UgioMIl7TGzPxXi9wIDpdPLUCc5NKMM7bKXTkjnxDlr7JeJzEB
jVRMuXbL08p1F2QtFhTqrBBWaBgqLOqUjXk8oq9p4bqRBmDFReIz8wFR516c
+i2IQt8I/shcK/6IDs1WXNIHLV134NGCOAoYFA1Uc5Adk/8cOWdr7yc4cngL
BtUnBwLP/C5IdsQ5BIfn2JxUJCQxdIvI/o5nRR75Ioe/1UeEpsFpZ7DN0izH
BxxJpjXAr0JUOe6hMI65fDVho+NHjdVHUfas0UPaIGb9+AT0sRobA9IYfoEs
RmuIoyZp9CjuAHJsGypx0bxzE0Yv07t/dBImHn/oT829YNG3TRqj/m0cYdwM
FPayrDyrBf4RYoNQLhdwFDSE3xt6Cd5V1zuG5HWSECAtIMs7EsAKUbTdvGzr
RKrlRqRCcn4IiBRZJ3gca9qqUzzOxd9dDvHuZ6Ne95kx92MDpDxOWgL0Srx0
ud7zidzXWaxz4yD6BCdbLeRGejm2zXQXr1g1A1SvT88FfGqatlIRTlJusYpM
0aBwOMmEpchMznZINi3ERUMvSkOTbFf/xOCS7MziVtqwd1qt86Yt3LclLWth
CYAjZ9/V4Saggbt8DJPv80z8GUvJFrEiBY1rd/HISrkSafMR6fSSsyTbRoAU
4oYFM8IvI4JQKaBq64LCfIrMJE2pJWmAu07MlMbNFVsWEzBcHu1mGJPjLKEs
D3ueYHBZ5HF9OfjpcvmWUzHdjBurAFLs/ZWxNsg0jlCFyzEl39UlKvWi7xj6
+iReIzQHpgPH2z/W8HQqO+Vsh2FpjWIZsc2wJR759I4FrOlr/rQsAqVahiSC
Xt3NC87Z95RcSAcGN6ZQLsKZFkjOuLekQ9PBPdKSbhRNBkbEu69kvLkw0DN8
oe8IlGpTTktcr8lZ4a6zqi8okjMm75G9ol64HiAzY+8/VUAtya+QvZevzuVy
lD8SzNXkjnG+hncKTLDfv+5aH5se/jJsIBQUw+vkAmpHgLzwaNJI7IhIWow1
g3ZOc/3AzrtsyplefcNfIc9mKJxlC+tv0+G81FmFIk/q/Yvzw2i3bCoeBZN4
weewe2kp3J5hh/GissWnwOFqzRKw2y7gO8uWwP0YAt+ZRpxZ9PkgZ1ZqP9AR
5dtczBb5cXBp+0ntvFMN+ThGf7iTsrB1Ey4yddCRTv17AKXihUWdXzE1Wpki
Ja9VosALuS1CS/FTBtvTdICSXzlvO2X3O6EhsVdxUn24adiuk5bG49sEkj+p
9AbK6eXo5GJfyxzyLw3Gnh1+p30QHF/uDwc+0QdJvSuLE/DNtHAn3PsrHykv
ZJvVBSUl65JNwkzWk7jWNJhfKxpy75azAx1bEhUCYHEmyfMiKosEhj/T5lmk
KOS8sh4hvVPOkTMgx2fKmRwUyeQBjELvr51dYWGbTLjXZQwFwYkWGLSZax3M
z8txU1ZLtCeZalUYbEtFE+Ryy4r9XsQfiahLipyvwodMIEzFto0ZesamiGu+
dh/rxQjkmL9j86rXQILZrWpIasnb94mUleUAPZWVIK5bGsewByMFTiJzxOkb
tp86b+mdfRboN2zZMi0P7725pP94GeZ/aOR79PRJKsK7Euqc2fcuQrhn0nUn
KXC0FYwn7xK9xLadAnWkneDRda92G74LZv0Dev06udney+2BhCSkllufHN1m
jR+Ey19h39Db415CaMzFqlofdHxGhBFpekkqZpobDgl8TtgEOpHY4UE1ZRLK
hv4JKd+l2gfbmXNijnH32oEmoqnvliXxU8jpIL+7Rkdsztk7XDAnNnLbixch
sH8Tk8K/PszjWyO8NbL6FtLlbhTSAaOYSkaGCwuVjFZwzT2g3jvGTVnxPWbN
wooQqwLDlTcEKXIHZUOAY8eSJIG9yt9a34ODawI+NaNWUSHys/FGbzlyJ9pa
mmbQi6iGMuxkZmFnXEJBbFvBHEQ7m0W3OCYNMqrS5eyh9Dpl8K1haXukhMZr
/h6eHztLIeEBQPgsZA++sJFUTHfzgYYun9gkbtx25X5sLhSgrhflN/ZTRh/2
byRAXMmDb9fJlVmeVm9NumSKLuRm6x4m9tdvpORuYCOmmbNuc1/DAV7m4oov
bQ70fDGVKBoRBGsDYoRmKondwjScPMAiPDbf2UTWfDG4f6I8uVuKR5Km3cz1
NUiLa0bQpzuGSepDQ6AQwvuCaiiR5kFtd/KKZFB8RR8KbhhZCTnJi1a6JZA0
5g2uFJR1pxtM0lSHM6XgIss2d12KXWo2asZi3IJTIpfM2GVf8ZCaHN0LGewa
1u/q5sZ8I7/SGfvlrpjtx3nZ5+NsatI2o7B3HVKaWGwAfspfjD05Nm/yd/DW
6rJipkE6DGN1HWfiQ2+hAA5nWL6mizuXAJQ3w8RnuNZ4MZUb9fUVZIyxvwgs
bLbhhc2XAoaBcGS4MGrH5vLR0Fwe0P8P6f+P48Sj0R8DFPKvlweBK5N7r4T+
lnx+GDi17fOP/gg+1mNRQQ5k5dHvevlQC/V2tj/8TRBZ/LDBPvyS6R/ry4r+
f8yQ2A7Utjt2B4C7MfOe3AMIYFxfp4uk9Sq8ZK0uD/e3wXCJMb2fdHs/Y4k9
gi89sb+dy/xzrQsWDj3e4NAweSLM7bVSUmOxLsrg63KRT4/NeXm3t29GJNO/
kAL6o1H9Iqrl/0SZ3DtFJZ0V+I/mL2fX2/l20Kf8C/l2IHx73MULr6GnRjhh
DFDAURqxgwuHKii058fkqQHoqt09vjWX5KSsKzb01wzzYKXGrBN8hfOhtLdC
3gnfoXpN7EiFmqvENsi9wu4U5YbAcTpcG1+FemqnrqZ0QL8IupMR5VFVwilD
ZoNLoZYDLxrjG14Dd2459HVKzdNYVEwBPuP2aquscnAgUTzV0teV3p5xQIpZ
Lu1NV4gzaDNDwdyHcps4Cc0NaQKql4YMMhiu8WlJkUNBDg/ucmeHEVOnmzc0
dxnJ0yHEUcBqPszMDMZDHcNyrRDjpnArT2nWZ34684QdU251x5xLmzixKxQK
piifLiQACfPqILOS01y+rWZeSBRyAJrHX2jGzD/Fkv1/Y7bzR9WoWJb/UWPW
fcl/+tfzDe1xb5vjSNmN1zyidta4ELJhHHYYylfeNEbMwj/TFm5aQTVXTPCT
ndYsEgw9cqwg+IwzyT76ioQQndDBrH8Vxon0yuVBfCTe3BRoiCjFf5ol27Ri
n/W+XzQqiRwBFQohotATMJ2uLZyJiZPrf1UwcCNH/yZruNdNlqGjrj1OW+Mg
lUfKumg2InC0KJ0tNGQMfXPOU2vJF8uhBNmIpLCjbriRgJOGG/1fkXSwUMC8
ucBY62SYiqx8DkR+nzgYKAEmzTxaP0DVdpKRoGFQt0bR6xco633O+iR9h0+1
eHPaAU1/GtHDJUVutZ03klDoQjs2cT7H8cqRpKJnGv737674MDHTSp40x2Q0
kotuCHJ+YgZ9gh9z3dp7jdU0jSaXZWtbZRwpSiU0zfRxmq2TQNxM2YUkddUI
5lBEgzmyC9GSZI83kse+Va9YV+nI7PeUqQ6Yo4kvS6NDm0thWgo0VrbRaV9Q
0M5XkOe+Eql9rEObADTjSLoEbBZrBJfpQlYz67Shxd01VOk8g1Y2q/XatJbn
Q6VMX1FgGpdZNKBOu5WSs873vrnHnLg2yI/6Gjjyt3cKbvMILaT8BYngG/hK
92tW8IDAckI+K2K7OK3C8h4h7WXRygLpOJ8pVQBU0pqBO2KivCcpPM1xhfHl
JJQVd1e36x9MtzFDqABrrjnIjyaFuKzBAjQBRkNXsVjUQMvfKvkd3zKurOQz
SOPLNxzE9ny8kq50nPStqvqLHjnEJORb7mwcB+CgXAVIoZ/boWfsN/sP26JJ
b1DT+7L1w17NLNTy0SsuwkW3zxCydrTZWqnhRlQeQJCsc7jlb5w2lbKAwoN0
XJEl5O6eB63jGeNvHmi7F4FWZbG5L5LsTas9x0WhJQ0KNoHZvEdcD0UiyGNR
f4gHKvbaRO/zsqOoRkpwPNWxUZaQPCYrrJ+lXbRCg2ltOJ0kx7WaxHvsE7eC
ktOsKLpn8k2gH4hEyzCh35H639dSw8n5yYaZ0eqo3kPe1bQWmsDf99CaUVoJ
Qzc76HFpk+CB8w/iwNytwJyzenIPgI9BHvy+e8WT6VMEB/FcMuwyMBPA9f7j
wUB6H4S+B/TLG+2emfy8p81Qvsu/B++lp8F739zg/baOB/0/0msGTRZovO/9
wFsq/e97nUST1442XmPx9n/svTbwuBC5sEZxotbevwQtRszCK9vaN+yPzSWQ
F157JPvIdhbDZAX+yTzXNiLkhFgajJuabzTVFeiCqBXfhyNi0dwygwLsjJA0
E9XODgW+okEf8NdKchz+Xs9a+cKCZ8+esMIlWf7YXWepg2yIeOy0yGLHIAXI
emSFizK9a/yXfF80zhJEXFIoPSxst4FMIGXPn/HtbQD3FaGYrfgLHri24Q//
TsKSLkhJ227SJqvg30g/MoCxuWZkqpKMtRKOb9xxPVDFsAMyGHbwRcMOFHW4
DVQ63EBehuue3KpulU0t/Ev+BgWuK3Az01K+XCKpiyVLw4ikr7GNJCwUd/AO
xm6eyV6KLgx3Ffv6EItONPRmL+XZTO++edSVOLDDkBYaquMpVfJd+xKaqQvC
l9zmXgE9Vs5SKE/8whPYgcJjmuIZ9IFHcL+2Vh2H4WJRltYwh/1iJBxXfFkQ
V4xb6GT9xhNa8T05o3xL+U4gS2C771hALCW7bPgKpzqVgKx6yC6jIg0XyPny
MEPZdQLFz+Ewvyzrhc+ovmJ4S44uxSn85W5ZpugXuQ4WrrfEFkVzGaqrg6Oe
lchKj1LSvBdD01wIdLFREjh2YYSdiz0h8LzLZKz4rS18yaIub8u34uGSh3FH
9FE0bGeJU1HucMBwvZa8FgASyPiXtZN+AilahYHvJ8F7kvuKfOkwdssDlRpQ
C+zBf8OFXIx2vl1oB3fF35S16gMq5RIuIy3K+XzE8hL2hTHmMTBctP4OdGdg
gKlHTVutJCCTjbgPkKNkLxlkGBvXeiv4G+8P7g/Tzes2MpY7Sqxr+nehou8b
3EmNBNAmDkHClmt/nnDakXkix8ASMBQGh5H3RcUvDx5mb3ofebHm898gIIz2
VpvTx/jmpVk6jOJq6KT+I71j9OyIw5OvzUZ8IuLpXdqUat/fVrp0Q2F0YGMr
MnaAsvKtF5j2aeMYrKPouO1IMwocbdUw8pbYOm30FjD0S76uEM9C/SAwEVcQ
ZwrEdY4UH6RYefiIv454vQynpnPEZDoftySxnvYEkrBAokXWh3UMEnfHhhJu
+ACxm0gYhpaGWV88fEQ6y9bZQoPyIj6265uDNrFqSHbF61IIkiKybDNCc30I
VgSfaV6MVuAxaBI1MO5Ni/exZ4f7KJYy5xtCH0FTMo9BRf1xUOUmMNJfZ9yC
r0xQmAgbNVr8X4ak/B+GT94sWzeMzsWdzd7awumMuK8kuEjOpCk00q8gwcc5
pG1iAPC5+Mi5NB39XQDJmBLcIq0BKQmD0hbeqWBWRPHPtUfKFTsoZHNjsxSP
kQwNU379nE4UaCXhNptofLK/CnouRaFBOxPXa2ESu2RImnKzEyJ6EevmKSxb
m50mPXp4vADT0Y5EHl7p0UvAnZMqbqvoiUBCO02nJAGIxBG+hk2SpKKzpx4u
NtW7SP6b2hTQTIqSaBenpH9a1kS+k4jzo50ekWlPMKSJpxZdiVBI37CjnfTX
tvYbHOZt9LLxoXGlSUzAxkM2ZmdzkX1kXX4OPEo5CyXD8CnGIoVbkdpxhd24
U3kaRODah6zAHfv8nCoA9vzjlyfJl2E5P5VH/HZUlf+usXnOiXi+6d9zel0Z
vusBTVmg7yQgkA0RdBYjKrUdEkMNenMxTsw3FD33kAG21uIg2I3b+97R6dwX
wijiorWFhAmMxe15aL6PM4/fccN8V46Upb23I1f71+93s3Ln8qI30xttDP9V
O+8mFl9vLeF/WmLSdeby7Y2de9WpuynuzVBz5dZ/dZaYMD4hPp3qE50badrI
7vi9Ezn5khMKsLn9nG8UHFwOLpZKHuHp08ch6YLsBlrv1G999v7S3wU7mRAR
Wy8Kc6DvPnm91YMqO2A/aLaS8cC2jvfOnATXZrrygQxY4bPrvW4qn0q2MHSG
b3lptIrUFkO6MwlVk4ZuUu7Jcp70ThqYx15dSHnXhZzrwBfi+hw3CvsOiLNN
CJSYL/5io52NeF3d7yiBWUeSOFApaJeJdC6qrc89rKSUx3aUhsnXIQglhVBL
Vo7LZxlxmJu61Yy0zmbeJvo7VfRQdPc3r1p+HWNse5s5KTtueFmoXLmIU+Vd
2VgXI/l1RbX1WGFcy9t6T3toyPpm4Tv3Or5BLEyl6RT+2lHv964r20gYB44g
XobwJ3fy5WLBYPCci5uoCTNgamrDLXypV6x25nxEbPBVhatOMs7/Ti7ysRym
kB3iYD00CfFdyfsSmNxC4i/GlbA/ran2cOGpIwVWh4GyTfGWzAVyglYu+I6k
OZFPa9LiaYJaUjh6hn1w09nh5Lauhhq9r6yJqeO8jvmt8NVYhW6K7zMjK9Fv
eubUDIvU2n+pML70dvD/ABY3hUDCfgAA

-->

</rfc>
