<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-cmcc-tcp-sro-02" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="TCP SR">The Session Recovery (SR) Option for TCP</title>

    <author initials="Z." surname="Luo" fullname="Zhaoyu Luo" role="editor">
      <organization>CMCC</organization>
      <address>
        <postal>
          <street>No. 58 Kunlunshan Road</street>
          <city>Suzhou</city>
          <code>215000</code>
          <country>China</country>
        </postal>
        <email>lluozy@yeah.net</email>
      </address>
    </author>
    <author initials="H." surname="Yan" fullname="Haishuang Yan">
      <organization>CMCC</organization>
      <address>
        <postal>
          <street>No. 58 Kunlunshan Road</street>
          <city>Suzhou</city>
          <code>215000</code>
          <country>China</country>
        </postal>
        <email>yanhaishuang_yewu@cmss.chinamobile.com</email>
      </address>
    </author>

    <date year="2026" month="September" day="14"/>

    <area>Internet</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 63?>

<t>This document defines the Session Recovery (SR) option for TCP. The option lets the endpoints of a connection exchange identifiers: during the handshake each endpoint carries its own identifier, and designated segments afterwards carry the identifier of the peer. This places the knowledge of which endpoint a connection belongs to inside the TCP header, where network functions on the path - load balancers, NAT gateways, firewalls - can read it without per-flow state and without payload inspection. The primary use is session recovery in SNAT and load-balancing clusters; further uses include reduced-state forwarding, connection-tracking recovery, and per-backend telemetry. The option is carried in the SYN, the SYN-ACK, and retransmitted segments, or in every segment when so configured; the default adds no overhead to normal data segments. Endpoints that do not support it behave as if the option did not exist.</t>



    </abstract>



  </front>

  <middle>


<?line 67?>

<section anchor="introduction"><name>Introduction</name>

<t>SNAT <xref target="RFC2663"/> and LB are stateful services: session state resides on the serving node, and a single node cannot recover its sessions after a failure. To provide reliable service, operators deploy high-availability (HA) pairs or clusters. Existing elastically scaling SNAT/LB cluster designs are complex to implement, and the most complex part is session recovery and session migration. Moreover, these services are unfriendly to long-lived connections: an idle connection is typically cleaned up by the serving node after a timeout <xref target="RFC5382"/>, breaking the connection.</t>

<t>Almost every TCP option standardized to date serves the two endpoints of a connection: MSS, Window Scale, SACK <xref target="RFC9293"/>, and timestamps <xref target="RFC7323"/> tune the transport between the two stacks. The network between the endpoints has evolved differently. Load balancers, NAT gateways, and firewalls are deployed at scale on virtually every path, and they maintain per-connection state that the endpoints are unaware of; yet no TCP option serves this middle tier, and its session management is implemented privately by every product. The option defined in this document fills this gap: endpoints voluntarily publish, inside the TCP header, the identifier of the endpoint a connection belongs to, so that on-path network functions can consume this information without per-flow state and without payload inspection. The information is provided by the endpoints and is read-only on path; the end-to-end semantics of TCP are preserved.</t>

<t>A novel approach to reliable service is to back up the session state to the client or server side, so that even a single serving node can recover a session after a failure. This approach is embodied in the Available Session Recovery Protocol (ASRP) <xref target="I-D.draft-cmcc-asrp"/>, to which readers may refer for the details of session backup and recovery. A key challenge of this approach is locating the endpoint that holds the session backup. Other mechanisms exist, such as multipath TCP <xref target="RFC8684"/> on the endpoint side, but the Session Recovery (SR) option defined in this document addresses this challenge in the most direct way: it locates the backup endpoint in a single step.</t>

<t>The SR option is a TCP option <xref target="RFC9293"/>. During the TCP handshake, the client and the server exchange their identifiers; when a session needs to be recovered, an endpoint carries the identifier of the peer, and the network node uses it to locate the endpoint holding the session backup. The SR option is lightweight: by default it is carried only in the SYN, the SYN-ACK, and segments sent on timeout retransmission, adding no overhead to normal data segments; a per-segment mode, selected by the deployment, carries it in every segment where the identifier is needed on the forwarding path (see the Other Uses section). Despite this small cost, the option is important for the reliability of SNAT and LB services: it simplifies session recovery and session migration in elastically scaling SNAT/LB clusters, and makes them friendly to long-lived connections. With the SR option, a session that has been cleaned up after an idle timeout is recovered as soon as a segment carrying the identifier arrives.</t>

<t>The SR option defines how identifiers are negotiated and carried, not what they are used for. Session recovery is the primary use; other uses, including stateless forwarding, connection-tracking recovery, and per-backend telemetry, are described in <xref target="other-uses"/>.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;,
&quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and
&quot;OPTIONAL&quot; 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>

<t>&quot;SR option&quot; refers to the Session Recovery option defined in this document. &quot;Client&quot; refers to TCP&#39;s active open side, and &quot;server&quot; refers to TCP&#39;s passive open side. &quot;Network node&quot; refers to an on-path device (e.g., a load balancer, a NAT gateway, or a firewall) that forwards packets; in the session-recovery use, it also participates in session backup and recovery. &quot;Client identifier&quot; refers to a value, carried in the SR option in a SYN segment, that identifies a client within a cluster. Its length is configurable and defaults to 4 octets. &quot;Server identifier&quot; refers to a value, carried in the SR option in a SYN-ACK segment, that identifies a server within a cluster. Its length is configurable and defaults to 4 octets. &quot;Session backup&quot; refers to session state information stored on an endpoint for the purpose of session recovery.</t>

</section>
<section anchor="the-sr-option"><name>The SR Option</name>

<t>The SR option is negotiated during the TCP handshake, similar to other TCP options, e.g., the Window Scale option <xref target="RFC7323"/>, SACK <xref target="RFC9293"/>, the Authentication Option (TCP-AO) <xref target="RFC5925"/>, and TCP Fast Open <xref target="RFC7413"/>. During the handshake, each endpoint carries its own identifier in the SR option: a client includes the SR option in the SYN segment, and a server that supports the SR option includes it in the SYN-ACK segment. The SR option is only in effect if both segments carry the option. After the handshake, an endpoint carries the identifier of the peer in the SR option, which it stored during the handshake: a client carries the server identifier, and a server carries the client identifier.</t>

<section anchor="option-formats"><name>Option Formats</name>

<t>The SR option carries an identifier. During the handshake, it carries the identifier of its sender: the client identifier in a SYN segment, and the server identifier in a SYN-ACK segment; on session recovery, it carries the identifier of the peer. The identifier length is configurable, from 2 to 8 octets, with a default of 4 octets. The option is 2 + N octets long: 1 octet for the Kind, 1 octet for the Length (Length = N + 2), and N octets for the identifier.</t>

<figure title="SR Option" anchor="SR-OPT"><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
                                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                |      Kind     |    Length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                         Identifier (N octets)                 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="option-semantics"><name>Option Semantics</name>

<t>A client MAY include the SR option in a SYN segment; the client decides whether to use the SR option.</t>

<t>A server that supports the SR option and receives a SYN segment with the SR option SHOULD include the SR option in the SYN-ACK segment.</t>

<t>A server that does not support the SR option MUST NOT include the SR option in the SYN-ACK segment.</t>

<t>A server MUST NOT include the SR option in a SYN-ACK segment if the corresponding SYN segment did not include the SR option; the option is in effect only when both endpoints have offered it.</t>

<t>A client that receives a SYN-ACK segment without the SR option MUST NOT include the SR option in subsequent segments of that connection.</t>

<t>The length of an identifier is configurable, from 2 to 8 octets, with a default of 4 octets; each endpoint determines the length of its own identifier. The Length field MUST equal the identifier length plus 2.</t>

<t>A client that receives the SR option in a SYN-ACK segment SHOULD store the server identifier for the lifetime of the connection.</t>

<t>A server that receives the SR option in a SYN segment SHOULD store the client identifier for the lifetime of the connection.</t>

</section>
<section anchor="identifier-management"><name>Identifier Management</name>

<t>An identifier identifies an endpoint within a cluster. The option carries identifiers; it does not assign them. The following rules apply:</t>

<t>Uniqueness: An identifier MUST be unique among the endpoints of the cluster it serves.</t>

<t>Assignment: Identifiers are assigned by the deployment, e.g., by configuration or by the cluster&#39;s management system. How they are derived (randomly, by a keyed function of the address, or otherwise) is a deployment choice; see the Security Considerations. When the SR option is used with a mechanism that resolves identifiers to endpoint addresses, e.g., ASRP <xref target="I-D.draft-cmcc-asrp"/>, the deployment MUST ensure that the network nodes can perform this resolution.</t>

<t>Stability: An identifier MUST remain stable for the lifetime of the connections that carry it, and SHOULD remain stable across reboots. Session recovery relies on the identifier of the backup holder: an identifier that changes after a restart leaves the backups associated with the earlier identifier unreachable.</t>

</section>
</section>
<section anchor="sr-option-operation"><name>SR Option Operation</name>

<section anchor="connection-establishment"><name>Connection Establishment</name>

<t>During the TCP handshake, the client and the server exchange the SR option according to the rules in Section 3.2. After the handshake, each endpoint has stored the identifier of the peer and conveys it for session recovery as described in Section 4.2.</t>

</section>
<section anchor="session-recovery"><name>Session Recovery</name>

<t>An endpoint conveys the identifier on timeout retransmission.</t>

<t>In a load-balancing cluster, where the session state is backed up to the server, a client conveys the server identifier on timeout retransmission. The network node uses the identifier to locate the server holding the backup and recover the session.</t>

<figure title="Session recovery in a load-balancing cluster" anchor="SR-REC"><artwork><![CDATA[
                          load-balancing
client                     network node                    server
|                               |                               |
| ------ SYN + Client-ID -----> | ----- SYN + Client-ID ------> |
| <---- SYN-ACK + Server-ID --- | <--- SYN-ACK + Server-ID ---- |
|                               |                               |
| <---------- data -----------> | <---------- data -----------> |
|                               |                               |
|   - - - (session lost) - - - x|x - - - (session lost) - - -   |
|                               |                               |
|                               |                               |
|        retransmission         |                               |
| ------------ + -------------> |                               |
|           Server-ID           |                               |
|                               |                               |
|                               | ------ recovery query ------> |
|                               | <----- session state -------- |
|                               |     (session recovered)       |
|                               |                               |
| <---------- data -----------> | <---------- data -----------> |
]]></artwork></figure>

<t><xref target="SR-REC"/> shows the recovery flow in a load-balancing cluster, where the client conveys the server identifier. The flow in a SNAT cluster is symmetric: the server conveys the client identifier, and the network node locates the client holding the backup. The detailed recovery procedures are described in the Available Session Recovery Protocol (ASRP) <xref target="I-D.draft-cmcc-asrp"/>.</t>

<t>In a SNAT cluster, where the session state is backed up to the client, a server conveys the client identifier on timeout retransmission. The network node uses the identifier to locate the client holding the backup and recover the session.</t>

<t>How the network node recovers a session is out of the scope of this document. It is suggested that the node use the Available Session Recovery Protocol (ASRP) <xref target="I-D.draft-cmcc-asrp"/> to recover the session; however, the SR option does not depend on ASRP.</t>

<t>The endpoint includes the identifier of the peer stored during the handshake in the retransmitted segment.</t>

</section>
<section anchor="carrying-modes"><name>Carrying Modes</name>

<t>The identifier of the peer is conveyed in one of two modes. Which mode applies is a deployment choice:</t>

<t>Retransmission mode: The identifier is carried only in segments sent on timeout retransmission. This is the protocol default, and it embodies the key design idea of the option: the overhead is synchronized with the need - the identifier appears exactly when a retransmission signals that the session may be in trouble, and normal data segments carry no overhead at all.</t>

<t>Per-segment mode: The identifier is carried in every segment of the connection. This is the enabling mode for stateless forwarding (<xref target="other-uses"/>): a load balancer that forwards segments without any session table needs the identifier on every segment. It adds 2 + N octets to every segment.</t>

<t>Deployments that consume the identifier on the forwarding path, e.g., stateless load balancing, SHOULD use the per-segment mode; for session recovery alone, the retransmission mode suffices.</t>

</section>
<section anchor="other-uses"><name>Other Uses</name>

<t>The SR option defines how identifiers are negotiated and carried, not what consumes them. Besides session recovery, uses include:</t>

<t>Stateless forwarding: In deployments where the load balancer forwards only the client-to-server direction (e.g., DSR and one-way DNAT), the load balancer can read the backend identifier from every segment and forward accordingly, with no session table at all; this greatly simplifies its implementation. It requires the per-segment mode (<xref target="carrying-modes"/>), so that the identifier is present on every segment. In deployments that keep a session table for other processing, the table is reduced to a cache that accelerates the common case: on a miss, the segment is still forwarded correctly.</t>

<t>Connection-tracking recovery: A firewall or NAT gateway that loses its connection table - after a restart, a table overflow, or a failover - normally drops established connections. With the SR option, a segment carrying the identifier lets the middlebox rebuild its entry, or locate the backup as in the recovery flow of Section 4.2, without any endpoint involvement.</t>

<t>Per-backend telemetry: On-path measurement can attribute traffic to individual backends from the identifiers alone, without inspecting the application payload.</t>

<t>Opaque affinity: A network element need not resolve an identifier to an endpoint at all: it can use the identifier as an opaque anchor, e.g., as a hash key that assigns flows to nodes, so that traffic carrying the same identifier follows a stable path without any per-flow state or mapping to maintain.</t>

</section>
</section>
<section anchor="compatibility"><name>Compatibility</name>

<t>Clients that do not support the SR option do not include it in the SYN segment, and servers that do not support it do not include it in the SYN-ACK segment. Such connections behave exactly as connections without the SR option, and session recovery falls back to the mechanisms implemented by the network node. Similarly, if the SR option is removed by an intermediate device, the endpoints operate without identifiers. The SR option is designed for the common deployment where a single tier of SNAT or LB nodes sits between the client and the server; in multi-tier deployments, only the tier closest to the client or the server can use the SR option.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The SR option only exchanges endpoint identifiers. It carries no session state and no authentication information; the SR option itself performs no validation and promises none. Connections that require integrity protection can use TCP-AO <xref target="RFC5925"/> alongside the SR option; the two are independent and can coexist on the same connection.</t>

<t>The security of mechanisms built on the identifiers relies on the validation performed by the framework that consumes them. When the SR option is used with ASRP <xref target="I-D.draft-cmcc-asrp"/>, the message validation described there applies: a network node verifies that a recovery response matches its outstanding request (cookie-based validation) and that the session referenced by the message is legitimate (session-legitimacy validation).</t>

<t>A forged identifier cannot recover a non-existent session, because recovery succeeds only if the session backup actually exists on the identified endpoint. A segment carrying an identifier triggers at most one recovery query, which is no more than the number of queries triggered by other recovery mechanisms.</t>

<t>How a network node maps an identifier to an endpoint address is an implementation matter. A node SHOULD ignore an identifier that it cannot map to a known endpoint.</t>

<t>An identifier SHOULD be randomly assigned or derived with a secret key, rather than being derived directly from the endpoint IP address, so that internal addressing information is not exposed to third parties.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>IANA is requested to allocate one TCP option Kind number from the TCP option kind registry for the Session Recovery option:</t>

<texttable>
      <ttcol align='left'>Kind</ttcol>
      <ttcol align='left'>Length</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>TBD</c>
      <c>variable</c>
      <c>SR</c>
      <c>This document</c>
</texttable>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
<reference anchor="RFC9293">
  <front>
    <title>Transmission Control Protocol (TCP)</title>
    <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy"/>
    <date month="August" year="2022"/>
    <abstract>
      <t>This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion. This document collects and brings those changes together with the protocol specification from RFC 793. This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793. It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements. It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state. The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="7"/>
  <seriesInfo name="RFC" value="9293"/>
  <seriesInfo name="DOI" value="10.17487/RFC9293"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC2663">
  <front>
    <title>IP Network Address Translator (NAT) Terminology and Considerations</title>
    <author fullname="P. Srisuresh" initials="P." surname="Srisuresh"/>
    <author fullname="M. Holdrege" initials="M." surname="Holdrege"/>
    <date month="August" year="1999"/>
    <abstract>
      <t>This document attempts to describe the operation of NAT devices and the associated considerations in general, and to define the terminology used to identify various flavors of NAT. This memo provides information for the Internet community.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2663"/>
  <seriesInfo name="DOI" value="10.17487/RFC2663"/>
</reference>
<reference anchor="RFC5382">
  <front>
    <title>NAT Behavioral Requirements for TCP</title>
    <author fullname="S. Guha" initials="S." role="editor" surname="Guha"/>
    <author fullname="K. Biswas" initials="K." surname="Biswas"/>
    <author fullname="B. Ford" initials="B." surname="Ford"/>
    <author fullname="S. Sivakumar" initials="S." surname="Sivakumar"/>
    <author fullname="P. Srisuresh" initials="P." surname="Srisuresh"/>
    <date month="October" year="2008"/>
    <abstract>
      <t>This document defines a set of requirements for NATs that handle TCP that would allow many applications, such as peer-to-peer applications and online games to work consistently. Developing NATs that meet this set of requirements will greatly increase the likelihood that these applications will function properly. 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="142"/>
  <seriesInfo name="RFC" value="5382"/>
  <seriesInfo name="DOI" value="10.17487/RFC5382"/>
</reference>
<reference anchor="RFC5925">
  <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="RFC7323">
  <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">
  <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">
  <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="I-D.draft-cmcc-asrp">
   <front>
      <title>Available Session Recovery Protocol</title>
      <author fullname="Zhaoyu Luo" initials="Z." surname="Luo">
         <organization>CMCC</organization>
      </author>
      <author fullname="Haishuang Yan" initials="H." surname="Yan">
         <organization>CMCC</organization>
      </author>
      <date day="1" month="September" year="2026"/>
      <abstract>
	 <t>   This document describes an experimental protocol named the Available
   Session Recovery Protocol (ASRP).  The protocol is designed to
   optimize high-availability network cluster architectures, providing a
   superior high-availability solution for clusters offering stateful
   network services such as load balancing and Network Address
   Translation (NAT [RFC4787]).  ASRP defines the procedures for session
   backup and recovery, as well as the message formats used during these
   interactions, enabling efficient and streamlined session state
   management.

   In contrast to traditional high-availability techniques that back up
   session state within the cluster itself, the core innovation of ASRP
   lies in its distributed backup of state information to the client or
   server side.  This approach offers multiple advantages: theoretically
   unlimited elastic scaling capacity; support for rapid recovery from
   multi-point failures; reduction of resource redundancy through the
   elimination of centralized backup nodes; and significant
   simplification of cluster implementation complexity.

   The ASRP protocol provides a standardized method for constructing
   elastic service clusters, facilitating broader participation from
   software and hardware developers in building elastic cloud network
   service clusters.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-cmcc-asrp-07"/>
   
</reference>



    </references>

</references>


<?line 227?>

<section anchor="acknowledgments"><name>Acknowledgments</name>

<t>The authors would like to thank all individuals who have provided valuable feedback and contributions during the development of this document, especially Mike Heard and Michael Tuexen for their detailed review comments.</t>

</section>
<section anchor="changes-since-draft-cmcc-tcp-sro-01"><name>Changes since draft-cmcc-tcp-sro-01</name>

<t><list style="symbols">
  <t>Renamed the option abbreviation from &quot;SRO&quot; to &quot;SR&quot;.</t>
  <t>Repositioned the option as serving on-path network functions and generalized its description beyond session recovery; rewrote the abstract and Introduction, added the &quot;Other Uses&quot; section, and made the two carrying modes equal deployment choices.</t>
  <t>Added normative rules: the &quot;Identifier Management&quot; section and negotiation symmetry.</t>
  <t>Rewrote the Security Considerations.</t>
</list></t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA81cbXPbOJL+rl+Bcj6sXSPpYieZSeTdq/U4mY1r4iRnZ2pr
98sWREISKxShJUg7miTz2+/pboAESclONqmr09TEFAkCjUb30y9oaDKZjKqs
ys1MvVsZdW2cy2yhrkxib0y5VYfXV0fqzaaimwtbqnfnb0d6Pi/NzYyu1fXV
KLVJodfoIC31opok6ySZVMlm4ko7eXgyeqBSXeHpycOTHycPn02OH/dvjUau
0kX6L53bAnersjajUbYp+dJVJw8fPkM/ujR6pi6KypSFqUa3y5l6bapbW75X
f8c/WbFUfyttvRm9v22bTZ4TTaNEVzNlPmxGrp6vM55itd1grIsX734ZjRKb
4vWZqt1EuyTLRptspvB5oBJd4K5Ruiw1mJEtlM5ztTXuSIEZK+1WamVKgxmp
iapsIhfOllVpFs5/2675i6IGM3oZl6HJjIdJzULXeeXQIjyXl6T5SNfVypaz
keLPxP9VKivQ4p9T9aq2zT1Zi3+utN3WnQe2xBTPL8/PmzulpXU3aVbZsrnp
QJcBu17bqXryVP1aF3lduBUYcWV12jRLsmo7U9f17ytbtzdtSst6/OThw4fR
zbqoSjQ+X2WFbm6btc7ymcrz2v6+/evW6NWU1nXnFF9O1T900ZviS525Va2x
7vGz4Sz/jye01cUqUPavrbmt/5qsnZsm1HZt51lupoldj0aFLde6ym7MjMTE
T1uVi+Tk+PhZ79bT458eY5yrX87p4Uwu6aa/fHby7NEMOlMs2k6l+Y8/PvKX
Tx49PQmXz06e+MufHp2EBj89Pg6XT398yl1fTJ5PI63WrtxgmMlkovQcbNVJ
NRq9W2VOAQPqtSkqkuSsMBDkvWBiO2AyZdjx93JTyZumSDc2K/DNQuPA8KIw
CTcxHxKs3NKoLMVw2SIzJeQjrUvSf3oVT1Ms7nt0opNV0xM0uSwzEJZRp7dF
9P5Y4RUQ7rJlAVhKlTNLmotTmLgpb3WZOn59ywO0LxJxdGdjTEnzAB82uU78
7N8X9jY3KUhFs9tVFhPTmdLcAPeWrPsQdnTPrxO4roxOib5bwhhVeLRb1AW/
iHkUMr6uVpCTHNKs5jrXRQKmjNXrs3dqiQnd6i2+LbISV3nu0JJQDWiaghnq
NgO01BUmUU4Wub2FuuAdZknzSG+5b1C3EZpl1TZlttbgCgEk5u78cpdhubNC
XRMR1Bd1MBHiaKWSHMAOKk8xmxJzKKkTLE6BB2BAadI6MelEaIGo0CLgvXHE
twnJH8N+GFAWkiYyxxMwW1UmN2sDXe2IWea8NNCURFL/8XocLiZn579KTyXe
1IVbZ1UsFWNCfrxneI7+Li1RAVAn+hbZssYETrlDj+xKpxCiwioilJaVVpsR
ICdbqJvep+pFI/vVSkOhqF2lXL3ZwGTQis3NSt9ghcAukT8/rTRLuan5kLlq
Kmq6ztI0hzV9QBaxtOAqNR2NeF0+fvQI8fkzz/fVz7BzRgRgUeegqbzJIM6z
ZmllPUpDUtqIHzfDMhTASmEcpoMbueFbJG1Ell8lVkDfn9cwtF8AOsE0LJOF
WNmbjIUgz/Q8N4EOMB5rq2GrgDdmk9utWmXL1UTf4GUNYAWAq8OXZ0cQ2Axt
sExBzMBVYgpRaXKNiwSagMXDH7pH3PgvzN4391jgmBvA6k1uPrB20hWtksyS
5r62rmqabDQt0A5FoNbh5jpbYg6sQ5e2NNSARc8185Rx62IBCS1SkImhCSEm
OXA9jTQAC6MJyHITwwkIgG/jZ5jkRhd4qd6o+XawWg37q2xtSNNZIshQfP48
VnDy9PsAq+0AkKyznOctGkBA5SWQ3TjS1N8NCzh5eTygh0Tg135on6nL6+ux
+ntWpECha9CPFb+GMgpVZOKIKuY8yMVY642TZ2TEIMNVXQh2stqyusyBmcYU
zeh4K3nvBA0CnsZtWurg22GCNieWp9liAQQuqhxA8upOmCXyWqilhRRRRS9Q
ZhI4Q3pzk5VVzSskTCQIb6Rqq+BJFBX+ZzCL1lb0j3GhS61IjL6lv3ZxCq+x
IrSJ1yYsA+RDUAFsDMYv0kmMXeglizmJUiPzmADw/gbjg+h5Q7dgSgdexQXw
2Br7BouMeML3lnozi8gHn+FS6TJD35t6nsN9Gu8zhrtt8H2mdUzgzIyD5WCD
OTSnZBbxsgO1QmXjT6Grb7CTcTfkIwi+pUEjo1WkpXBsmie2AC/wAtF6GtpN
KjsxDCZYJaAYKxExh9Z9A1ymRU5JQ7H6NyZXeoPRyA+CNvbxlJHCKrKVhA8C
DjHOV1ZUP89o9QCn3D3+ZAT0gZ8QhKJF/A68iJ8hsK+bzoeYT7xuKMW1Wc8R
kbXm+UwQPt/hUr4tLaIqm6vDs+urt0fAgx0+K+EGJiNOWMlyBCVAQIcQC6SQ
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

-->

</rfc>

