<?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.29 (Ruby 3.2.2) -->


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

<!ENTITY RFC0768 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0768.xml">
<!ENTITY RFC0791 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0791.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8200 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml">
<!ENTITY RFC2991 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2991.xml">
<!ENTITY RFC2992 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2992.xml">
<!ENTITY RFC3828 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3828.xml">
<!ENTITY RFC4787 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4787.xml">
<!ENTITY RFC4987 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4987.xml">
<!ENTITY RFC6335 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6335.xml">
<!ENTITY RFC9293 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9293.xml">
]>


<rfc ipr="trust200902" docName="draft-cmcc-asrp-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>Available Session Recovery Protocol</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>luozhaoyu@cmss.chinamobile.com</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@cmss.chinamobile.com</email>
      </address>
    </author>

    <date year="2026" month="January" day="27"/>

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

    <abstract>


<?line 66?>

<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 <xref target="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.</t>

<t>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: it significantly enhances the cluster&#39;s elastic scaling capabilities; supports rapid recovery from single-point or even multi-point failures; reduces resource redundancy by eliminating centralized backup nodes; and substantially simplifies the implementation complexity of the cluster.</t>

<t>The ASRP protocol provides exceptional elastic scalability for network clusters, facilitating the implementation and deployment of large-scale elastic network clusters.</t>



    </abstract>



  </front>

  <middle>


<?line 74?>

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

<t>Traditional high-availability network clusters based on a master-backup architecture rely on session state synchronization between the master and backup nodes. While functionally complete, this architecture faces challenges in the cloud era, such as insufficient flexibility for elastic scaling, resource redundancy, and high implementation complexity. To address these challenges, the industry has proposed the Elastic Stateful Cluster.</t>

<t>An Elastic Stateful Cluster is a high-availability network service cluster composed of multiple cooperative nodes. The number of nodes within the cluster can be elastically scaled, enabling it to provide stateful network services such as load balancing (SLB) and Network Address Translation (NAT). To achieve elastic scaling, conventional Elastic Stateful Clusters adopt a Fast/Slow Path design philosophy, separating session management from packet forwarding. This allows the fast path node layer to achieve good elastic scaling capabilities.</t>

<section anchor="conventional-elastic-stateful-cluster"><name>Conventional Elastic Stateful Cluster</name>
<figure title="Fast/Slow Path Elastic Stateful Cluster" anchor="FP-SP-ESC"><artwork><![CDATA[
                   +--------------------------+
                   | +----------------------+ |
                   | |                      | |
                   | |    Slow Path Nodes   | |
                   | |         Group        | |
                   | |                      | |
                   | +----------------------+ |
                   |         ^        |       |
                   |         |        |       |
                   | +-------|--------|-----+ |
                   | |       |  ...   |     | |
+----------+       | |       |  ...   v     | |       +----------+
|          |       | |  +----------------+  | |       |          |
|  Client  | <--------> | Fast Path Node | <--------> |  Server  |
|          |       | |  +----------------+  | |       |          |
+----------+       | |          ...         | |       +----------+
                   | |          ...         | |
                   | +----------------------+ |
                   +--------------------------+
]]></artwork></figure>

<t>The slow path nodes are responsible for session creation and synchronization, while the fast path nodes are responsible for rapid packet forwarding. The drawback of this Elastic Stateful Cluster architecture is the weak elastic scaling capability of the slow path nodes. Implementing session synchronization among slow path nodes is complex. A typical implementation reference is the AWS Hyperplane NFV platform.</t>

</section>
<section anchor="asrp-elastic-stateful-cluster"><name>ASRP Elastic Stateful Cluster</name>
<figure title="ASRP Elastic Stateful Cluster" anchor="ASRP-ESC"><artwork><![CDATA[
                     +----------------------+
                     |          ...         |
+----------+         |          ...         |         +----------+
|          |         |  +----------------+  |         |          |
|  Client  | <--------> |    ASRP Node   | <--------> |  Server  |
|          |         |  +----------------+  |         |          |
+----------+         |          ...         |         +----------+
                     |          ...         |
                     +----------------------+
]]></artwork></figure>

<t>The Available Session Recovery Protocol (ASRP) proposes an innovative high-availability solution aimed at building a more concise, efficiently elastic, and highly available architecture for stateful services. Its core idea is to innovatively distribute session state information to the client or server. The lifecycle of the backup state is synchronized with the real session, eliminating the need for independent keepalive and timeout mechanisms. This design ensures the timeliness and availability of the backup information.</t>

<t>ASRP defines corresponding session backup and recovery mechanisms. The protocol allows protocol messages to be transmitted together with the original service data packets, thereby reducing control overhead for state synchronization. In an elastic stateful cluster built on ASRP, network nodes possess atomic and mutually independent properties. There is no need for communication between nodes, nor is session synchronization required within the cluster. This fundamental design provides theoretically unlimited scaling capability and supports rapid recovery from single-point or even multi-point failures.</t>

</section>
</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>

</section>
<section anchor="protocol-overview"><name>Protocol Overview</name>

<section anchor="two-operational-modes"><name>Two Operational Modes</name>

<t>For the ASRP protocol to function correctly, two prerequisites must be met. First, all network nodes within the cluster MUST run service software supporting the ASRP protocol. Second, the server or client responsible for backing up sessions MUST deploy a kernel module or an eBPF module that supports ASRP. Depending on whether this module is deployed on the server or the client, the protocol operates in one of two corresponding modes: Passive (PSV) Mode and Active (ACT) Mode.</t>

<section anchor="psv-mode"><name>PSV Mode</name>

<t>In PSV mode, the network node is typically located within the same trusted network domain as the server (e.g., inside a data center). Its typical service is load balancing.</t>

</section>
<section anchor="act-mode"><name>ACT Mode</name>

<t>In ACT mode, the network node is typically located within the same trusted network domain as the client (e.g., an enterprise intranet). Its typical service is Source Network Address Translation (SNAT).</t>

</section>
</section>
<section anchor="two-routing-behaviors"><name>Two Routing Behaviors</name>

<section anchor="symmetric-routing"><name>Symmetric Routing</name>
<figure title="Symmetric Routing" anchor="Symmetric-Routing"><artwork><![CDATA[
                             Elastic
                             Stateful
                             Cluster
                       +------------------+
+----------+           |       ...        |           +----------+
|          |           |  +------------+  |           |          |
|  Client  | <----------> |   node X   | <----------> |  Server  |
|          |           |  +------------+  |           |          |
+----------+           |       ...        |           +----------+
                       +------------------+
]]></artwork></figure>

<t>Symmetric routing refers to the path mode where bidirectional traffic of the same session between a client and a server is always routed to the same node within the cluster.</t>

</section>
<section anchor="asymmetric-routing"><name>Asymmetric Routing</name>
<figure title="Asymmetric Routing" anchor="Asymmetric-Routing"><artwork><![CDATA[
                             Elastic
                             Stateful
                             Cluster
                       +------------------+
                       |       ...        |
+----------+           |  +------------+  |           +----------+
|          | -----------> |   node X   | -----------> |          |
|          |           |  +------------+  |           |          |
|  Client  |           |       ...        |           |  Server  |
|          |           |  +------------+  |           |          |
|          | <----------- |   node Y   | <----------- |          |
+----------+           |  +------------+  |           +----------+
                       |       ...        |
                       +------------------+
]]></artwork></figure>

<t>Asymmetric routing refers to the scenario where bidirectional traffic of the same session may be routed (e.g., by mechanisms such as ECMP <xref target="RFC2991"/>, <xref target="RFC2992"/>) to different nodes within a cluster. In cloud networking environments, asymmetric routing is a common phenomenon, which imposes higher demands on the implementation of elastic stateful clusters.</t>

</section>
</section>
<section anchor="protocol-message"><name>Protocol Message</name>

<t>ASRP achieves distributed backup and recovery of session state information by exchanging specific protocol messages among the client, server, and network nodes (such as load balancers or NAT devices). In a load-balancing scenario, session state is distributed and backed up to individual servers; in a Source Network Address Translation (SNAT) scenario, session state is distributed and backed up to individual clients.</t>

<t>ASRP defines five protocol messages: New Session message (NS), Query Session message (QS), Recover Session message (RS), Hello Session message (HS), and Push Session Message (PS). NS, QS, and RS messages are encapsulated within UDP (not UDP-lite, <xref target="RFC0768"/>, <xref target="RFC3828"/>) datagrams for transmission. A specific destination port, referred to as ASRP-PORT (currently a configurable experimental port, e.g., 51200, is used), identifies that the UDP payload contains an ASRP message. HS/PS messages adopt the same outer encapsulation as the forwarded packet (to ensure HS/PS packets are routed to the correct network node), employing an ASPR Signature to identify an ASRP message.</t>

<t>A packet carrying an ASRP message is termed an ASRP packet (NS/QS/RS/HS/PS packet). An ASRP packet can simultaneously carry both the ASRP message and the forwarded packet. If it carries only the ASRP message, it is referred to as a pure ASRP packet (pure NS/QS/RS/HS/PS packet).</t>

<section anchor="ns-message"><name>NS Message</name>

<t>Generated by the network node, it is used to send session state information to a designated client (in ACT mode) or server (in PSV mode) for backup when creating a new session.</t>

</section>
<section anchor="qs-message"><name>QS Message</name>

<t>Generated by the network node, it is used to query the client or server for backup session state information when a received packet cannot match any local session and a session cannot be directly created. For TCP SYN packets, if no local session matches, a session can be created directly without querying the state.</t>

</section>
<section anchor="rs-message"><name>RS Message</name>

<t>Generated by the client or server holding the backup as a response to a NS/QS message, it contains the state information required to recover the session. The network node parses the RS message and reconstructs or marks the local session, thereby achieving failure recovery.</t>

</section>
<section anchor="hs-message"><name>HS Message</name>

<t>Generated by the client, it is used in ACT mode to announce to the network node its capability to support the ASRP protocol and to trigger the network node to return an NS message to complete session backup.</t>

</section>
<section anchor="ps-message"><name>PS Message</name>

<t>Generated by the server, it is used in PSV mode to push session state information to the network node. In the case of asymmetric routing, the network node utilizes the PS message to create/update sessions for fast packet forwarding.</t>

</section>
</section>
<section anchor="session-creationrecovery-scenarios"><name>Session Creation/Recovery Scenarios</name>

<t>This section elaborates on, through a series of typical scenarios, how the ASRP protocol achieves session backup and recovery via message interaction in the event of network node failures under different operational modes. Each scenario details the involved protocol message flows and the processing steps of each entity.</t>

<section anchor="psv-scenario-1"><name>PSV-Scenario-1</name>

<figure title="Direct Session Creation in PSV Mdoe" anchor="PSV-Scenario-1"><artwork><![CDATA[
                            Elastic
                            Stateful
                            Cluster
+----------+            +-------------+                 +----------+
|          | --1:PKT--> |             | -----2:NS-----> |          |
|          |            |             |                 |          |
|  client  |            |    Nodes    |                 |  server  |
|          |            |             |                 |          |
|          | <--4:PKT-- |             | <----3:PS------ |          |
+----------+            +-------------+                 +----------+

                      a. recv PKT                    a. recv NS
                      b. new SESS                    b. new/get SESS
                      c. FWD NS                      c. send PS
                      d. recv PS
                      e. new/update SESS
                      f. FWD PKT
]]></artwork></figure>

<t>This scenario describes the direct session creation flow in PSV mode. The most common example is the SYN packet during TCP connection establishment, which represents the client initiating a new connection.</t>

<t>The processing flow is as follows:</t>

<t><list style="numbers" type="1">
  <t>Session Creation: Upon receiving a packet from a client (e.g., a TCP SYN), if no local session is found, the network node directly creates a new session. Subsequently, the network node sends an NS message to the selected server. If the NS message and the forwarded packet are transmitted separately, the NS message is sent first.</t>
  <t>Server Response: Upon receiving the NS message, the server backs up the session state information contained in the NS message locally and associates it with its local session. In the case of asymmetric routing, when the server sends its first response packet, it generates an PS message and sends it to the network node.</t>
  <t>Session Recovery: In the case of asymmetric routing, the network node, upon receiving the PS message, recovers the local session and subsequently forwards packets according to that session.</t>
</list></t>

<t>In the scenario above, provided that no IP fragmentation occurs, the NS/PS messages and the forwarded packets SHOULD be transmitted together to improve transmission efficiency. For example, for a TCP session, NS/PS messages are generally transmitted together with the SYN/SYN-ACK (<xref target="RFC9293"/>) packets. The backed-up session state information is released when the local session closes, requiring no additional close messages</t>

</section>
<section anchor="psv-scenario-2"><name>PSV-Scenario-2</name>

<figure title="Session Recovery for Server in PSV Mode" anchor="PSV-Scenario-2"><artwork><![CDATA[
                            Elastic
                            Stateful
                            Cluster
+----------+             +-------------+                +----------+
|          |             |             | <----1:PKT---- |          |
|          |             |             |                |          |
|  client  | <--4:PKT--- |    Nodes    | -----2:QS----> |  server  |
|          |             |             |                |          |
|          |             |             | <----3:RS----- |          |
+----------+             +-------------+                +----------+

                         a. recv PKT                    a. send PKT
                         b. no SESS                     b. recv QS
                         c. reply QS                    c. get SESS
                         d. recv RS                     d. reply RS
                         e. new SESS
                         f. FWD PKT
]]></artwork></figure>

<t>This scenario describes the session recovery flow triggered by a server packet when the network node has lost the session in PSV mode.</t>

<t>The processing flow is as follows:</t>

<t><list style="numbers" type="1">
  <t>Session Query: Upon receiving a packet from the server, the network node searches its local session table. If no corresponding session is found, the network node generates a QS message and sends it back to the server.</t>
  <t>Server-Assisted Reply: After receiving the QS message, the server, based on the content of the QS message, looks up the locally stored backup session state information and then generates an RS message, sending it back to the network node.</t>
  <t>Session Recovery: After receiving the RS message, the network node creates a new local session and subsequently forwards packets according to that session.</t>
</list></t>

<t>In the scenario above, provided that no IP fragmentation would occur, the forwarded packet may either be buffered or transmitted together with the QS message; otherwise, the network node should buffer the forwarded packet. Once the session is recovered, any buffered packet MUST be processed immediately and forwarded in accordance with the session.</t>

</section>
<section anchor="psv-scenario-3"><name>PSV-Scenario-3</name>

<figure title="Session Creation/Recovery for Client in PSV Mode" anchor="PSV-Scenario-3"><artwork><![CDATA[
                            Elastic
                            Stateful
                            Cluster
+----------+             +-----------+               +------------+
|          |             |           | ----2:QS----> |    ...     |
|          | ---1:PKT--> |           | <---3:RS----- | +--------+ |
|          |             |           |      ...      | | server | |
|          |             |           |      ...      | +--------+ |
|  client  |             |   Nodes   | ----4:PKT---> |    ...     |
|          |             |           |               | +--------+ |
|          |             |           | ----4:NS----> | | server | |
|          | <--7:PKT--- |           | <---5:RS----- | +--------+ |
|          |             |           | <---6:PS----- |    ...     |
+----------+             +-----------+               +------------+

                      a. recv PKT                    a. recv QS
                      b. no SESS                     b. reply RS
                      c. send QS                     c. recv NS
                      d. recv RS                     d. new SESS
                      e. new/recover SESS            e. reply RS
                      f. send NS                     f. send RS/PS
                      g. recv RS/PS
                      h. recover SESS
                      j. FWD PKT
]]></artwork></figure>

<t>This scenario describes the situation in PSV mode where, upon receiving a packet from a client, the network node cannot match it to a local session and cannot directly create a new session either. The network node MUST first determine whether this packet belongs to an existing session to decide how to handle it. The network node uses the ASRP protocol to query servers that may hold the backup session state information. ASRP relies on the cluster employing a deterministic server selection algorithm (such as a consistent hashing algorithm or a consistent hashing algorithm with history) to identify the target servers for querying.</t>

<t>A consistent hashing algorithm with history maintains a list of servers that have been used historically within a hash bucket. This list also serves as the target candidate server list for the network node&#39;s queries. ASRP recommends setting a maximum query count to avoid performance issues. Simultaneously, ASRP suggests setting a timeout for historical servers in the hash bucket to reduce the length of the server list by deleting timed-out historical records.</t>

<t>The processing flow is as follows:</t>

<t><list style="numbers" type="1">
  <t>Query Local Session: Upon receiving a forwarded packet from a client, the network node searches its local session table. If no local session is found, it calculates candidate servers (which may be multiple) using a deterministic server selection algorithm.</t>
  <t>Query Backup Session: The network node sends QS messages to each candidate server to query for the backup session. The servers return the query results via RS messages.</t>
  <t>Process Query Results: If a session is found, the network node recovers the local session based on the RS message and then forwards the forwarded packet. If no session is found, it proceeds to the new session creation flow by sending an NS message to the server selected by the algorithm.</t>
  <t>Server Creates New Session: After receiving the NS message, the server backs up the session state information locally. In an asymmetric routing environment, it MUST immediately reply with a pure RS packet as an acknowledgment.</t>
  <t>Session Recovery: When the server sends its first response packet to the client, it generates an PS message and sends it to the network node. Upon receiving the PS message, the network node first recovers the local session based on the message and then forwards packets according to the session.</t>
</list></t>

<t>In the scenario above, provided that no IP fragmentation would occur, the forwarded packet may either be buffered or transmitted together with the QS message; otherwise, the network node SHOULD buffer the forwarded packet. Once the session is created or recovered, any buffered packet MUST be processed immediately and forwarded in accordance with the session.</t>

</section>
<section anchor="act-scenario-1"><name>ACT-Scenario-1</name>

<figure title="Session Creation/Recovery in ACT Mode" anchor="ACT-Scenario-1"><artwork><![CDATA[
                                Elastic
                                Stateful
                                Cluster
+----------+                +-------------+             +----------+
|          | -----1:HS----> |             |             |          |
|          | <----2:NS----- |             | ---3:PKT--> |          |
|  client  |                |    Nodes    |             |  server  |
|          | <----5:QS----- |             | <--4:PKT--- |          |
|          | -----6:RS----> |             |             |          |
+----------+                +-------------+             +----------+

a. send HS                  a. recv HS
b. recv NS                  b. new session
c. store NS                 c. reply NS
d. recv QS                  d. recv PKT
e. reply RS                 e. no SESS
                            f. send QS
                            g. recv RS
                            h. FWD PKT
]]></artwork></figure>

<t>This scenario describes the session creation process by the network node and the server-packet-triggered session recovery flow in ACT mode. During the session recovery phase, the network node MUST be able to deterministically locate the client that holds the backup for that session. The use of a static, configurable mapping strategy is recommended. If such a mapping cannot be established, ASRP cannot function in this scenario. For SNAT services, ports can typically be used to map clients, with different clients using different, configurable port ranges.</t>

<t>The processing flow is as follows:</t>

<t><list style="numbers" type="1">
  <t>Session Creation: When a client initiates the first packet, it generates an HS message and sends it to the network node. Upon receiving the HS message, the network node follows the normal procedure to create a new session, returns a pure NS packet to the client, and forwards the forwarded packet according to the session.</t>
  <t>Processing Server Response Packets: If a matching session is found, the packet is forwarded according to that session. If no matching session is found, the network node uses the mapping relationship to locate the corresponding client and sends a QS message to it.</t>
  <t>Client-Assisted Recovery: After receiving the QS message, the client queries its locally stored backup session state information and replies with an RS message to the network node.</t>
  <t>Session Recovery: After receiving the RS message, the network node recovers the session state locally and subsequently forwards packets according to the session.</t>
</list></t>

<t>After sending an HS message, the client waits for an NS message. If an NS message is not received, a minimum time interval (suggested on the order of milliseconds) is set. Subsequent packets sent by the client will trigger new HS messages to remind the network node to return an NS message. Upon receiving an HS message, if the network node does not find a matching local session, it creates a session, generates an NS message, and sends it to the client. If the network node subsequently receives further HS messages that do match a local session, it will also immediately send an NS message to the client.</t>

<t>In the scenario above, provided that no IP fragmentation would occur, the forwarded packet may either be buffered or transmitted together with the QS message; otherwise, the network node SHOULD buffer the forwarded packet. Once the session is recovered, any buffered packet MUST be processed immediately and forwarded in accordance with the session.</t>

</section>
<section anchor="act-scenario-2"><name>ACT-Scenario-2</name>

<figure title="Session Recovery for Client in ACT Mode" anchor="ACT-Scenario-2"><artwork><![CDATA[
                              Elastic
                              Stateful
                              Cluster
+----------+              +-------------+               +----------+
|          | ---1:PKT---> |             |               |          |
|          |              |             |               |          |
|  client  | <---2:QS---- |    Nodes    | ----4:PKT---> |  server  |
|          |              |             |               |          |
|          | ----3:RS---> |             |               |          |
+----------+              +-------------+               +----------+

a. send PKT               a. recv PKT
b. recv QS                b. no SESS
c. got SESS               c. reply QS
d. replay RS              d. recv RS
                          e. new SESS
                          f. FWD PKT
]]></artwork></figure>

<t>This scenario describes the client-packet-triggered session recovery flow in ACT mode.</t>

<t>The processing flow is as follows:</t>

<t><list style="numbers" type="1">
  <t>Session Query: Upon receiving a packet from a client, if the network node finds no local session and the packet does not contain an HS message, it sends a QS message to the client.</t>
  <t>Client-Assisted Recovery: After receiving the QS message, the client queries its locally stored backup session state information and replies with an RS message to the network node.</t>
  <t>Session Recovery: After receiving the RS message, the network node recovers the session locally and subsequently forwards the packet according to the session.</t>
</list></t>

<t>In the scenario above, provided that no IP fragmentation would occur, the forwarded packet may either be buffered or transmitted together with the QS message; otherwise, the network node SHOULD buffer the forwarded packet. Once the session is recovered, any buffered packet MUST be processed immediately and forwarded in accordance with the session.</t>

</section>
</section>
</section>
<section anchor="protocol-details"><name>Protocol Details</name>

<section anchor="message-format"><name>Message Format</name>

<t>All ASRP protocol messages are encoded using the TLV (Type-Length-Value) structure. All numeric fields use network byte order (big-endian).</t>

<t>The fields that can be used in ASRP messages are as follows:</t>

<t><list style="numbers" type="1">
  <t>Sub and Type: 1 byte. Sub (high 4 bits) indicates the internal data type of the message; Type (low 4 bits) indicates the message type.</t>
  <t>Length: 1 byte, indicating the total length of the entire ASRP message.</t>
  <t>Flags: 1 byte. ASRP_F_ACT (0x1) is ACT mode flag; ASRP_F_MSG (0x2) is pure message flag.</t>
  <t>Protocol: 1 byte, identifying the session protocol, such as TCP, UDP, etc.</t>
  <t>Session-Tuple: Contains source address, destination address, source port, destination port. The IP address type is IPv4 or IPv6 (<xref target="RFC0791"/> <xref target="RFC8200"/>).</t>
  <t>Session-Data: Variable-length field, carrying the private state information of the network node. The specific content is determined by the implementation and can generally be empty.</t>
</list></t>

<t>If the ASRP_F_ACT flag is set, it indicates the current mode is ACT mode; otherwise, the current mode is PSV mode.</t>

<t>If the ASRP_F_MSG flag is set, it indicates the message is transmitted independently; otherwise, it indicates this message is transmitted together with the forwarded packet.</t>

<t>IPv4-Session-Tuple Format:</t>

<figure title="IPv4 Session Tuple Format" anchor="ASRP-ST4"><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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Source IP (IPv4)                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Destination IP (IPv4)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>IPv6-Session-Tuple Format: The structure of IPv6-Session-Tuple is the same as IPv4-Session-Tuple, with the main difference being the IP address length/type in the Session-Tuple field.</t>

<section anchor="ns-message-format"><name>NS Message Format</name>

<t>The NS message is used by the network node to back up session state information to the client or server. The NS message contains two Session-Tuples.</t>

<figure><artwork><![CDATA[
Type Assignments (Least significant nibble):
NS: 0x0

Sub Assignments (Most significant nibble):
ST44: 0x0, IPv4-Session-Tuple + IPv4-Session-Tuple
ST66: 0x1, IPv6-Session-Tuple + IPv6-Session-Tuple
ST46: 0x2, IPv4-Session-Tuple + IPv6-Session-Tuple
ST64: 0x3, IPv6-Session-Tuple + IPv4-Session-Tuple
]]></artwork></figure>

<t>NS(Sub-ST44/ST66/ST46/ST64) Message Format:</t>

<figure title="ASRP NS Message Format" anchor="ASRP-NS-MSG"><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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Sub  |  Type |      Length   |     Flags     |    Protocol   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~               IPv4/IPv6/IPv4/IPv6-Session-Tuple               ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~               IPv4/IPv6/IPv6/IPv4-Session-Tuple               ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                         Session-Data                          ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The NS message contains two Session-Tuples, representing the connection between the network node and the client, and the connection between the network node and the server, respectively.</t>

</section>
<section anchor="qs-message-format"><name>QS Message Format</name>

<t>The QS message is used by the network node to query backup session state information.</t>

<figure><artwork><![CDATA[
Type Assignments (Least significant nibble):
QS: 0x1

Sub Assignments (Most significant nibble):
ST4: 0x0, IPv4-Session-Tuple
ST6: 0x1, IPv6-Session-Tuple
]]></artwork></figure>

<t>QS(Sub-ST4/ST6) Message Format:</t>

<figure title="ASRP QS Message Format" anchor="ASRP-QS-MSG"><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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Sub  |  Type |     Length    |     Flags     |    Protocol   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                    IPv4/IPv6-Session-Tuple                    ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                         Session-Data                          ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="rs-message-format"><name>RS Message Format</name>

<t>The RS message is used to recover a network node&#39;s session.</t>

<figure><artwork><![CDATA[
Type Assignments (Least significant nibble):
RS: 0x2

Sub Assignments (Most significant nibble):
ST44: 0x0, IPv4-Session-Tuple + IPv4-Session-Tuple
ST66: 0x1, IPv6-Session-Tuple + IPv6-Session-Tuple
ST46: 0x2, IPv4-Session-Tuple + IPv6-Session-Tuple
ST64: 0x3, IPv6-Session-Tuple + IPv4-Session-Tuple
ST4: 0x4, IPv4-Session-Tuple
ST6: 0x5, IPv6-Session-Tuple
]]></artwork></figure>

<t>RS(Sub-ST44/ST66/ST46/ST64) Message Format: The structure of messages is the same as NS.</t>

<t>RS(Sub-ST4/ST6) Message Format: The structure of messages is the same as QS.</t>

<t>If the Sub field of an RS message is ST44, ST66, ST46, or ST64, it indicates the RS message carries session recovery information. If the Sub field is ST4 or ST6, this RS message is a response indicating a failed query for the corresponding QS message.</t>

</section>
<section anchor="hs-message-format"><name>HS Message Format</name>

<t>The HS message is generated by the client to announce to the network node that it requires an NS message to back up session state information.</t>

<figure><artwork><![CDATA[
Type Assignments (Least significant nibble):
HS: 0x3

Sub Assignments (Most significant nibble):
NST: 0x0, No-Session-Tuple
]]></artwork></figure>

<figure title="ASRP HS Message Format" anchor="ASRP-HS-MSG"><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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Sub  |  Type |      Length   |     Flags     |    reserved   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="ps-message-format"><name>PS Message Format</name>

<figure><artwork><![CDATA[
Type Assignments (Least significant nibble):
PS: 0x4
]]></artwork></figure>

<t>The structure of the PS message is the same as that of the NS message.</t>

</section>
</section>
<section anchor="asrp-packet-format"><name>ASRP packet Format</name>

<section anchor="nsqsrs-packet"><name>NS/QS/RS packet</name>

<t>The format of the NS/QS/RS packet is as follows:</t>

<figure title="NS/QS/RS packet" anchor="NS-QS-RS-PKT"><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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~   IP-Header + UDP Header (with destination port: ASRP-PORT)   ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                        NS/QS/RS message                       ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                    Forwarded-PKT (IP packet)                  ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>If the ASRP_F_MSG flag is set in the Flags field of an NS/QS/RS message, it indicates that this is a pure NS/QS/RS packet (in which case the Forwarded-PKT section has a length of zero); otherwise, it indicates that the NS/QS/RS message is transmitted together with the forwarded packet.</t>

</section>
<section anchor="hsps-packet"><name>HS/PS packet</name>

<t>HS/PS packets adopt the same protocol header as the forwarded packet (the packet sent from the client or server to the network node for forwarding)., which necessitates the use of an ASRP Signature to identify the message. Similar to the Proxy Protocol, a 12-byte ASRP Signature is placed at the beginning of the data: 0x0D 0x0A 0x0A 0x0D 0x00 0x0D 0x0A 0x41 0x53 0x52 0x50 0x0A. This signature contains a CRLF pattern, a null byte, and the specific ASCII sequence &quot;ASRP&quot;. The probability of this sequence occurring in normal data streams is less than 2^{-96}, making it easy to debug and identify: during packet capture analysis, the clear &quot;ASRP&quot; identifier is visible.</t>

<t>The format of the HS/PS packet is as follows:</t>

<figure title="HS/PS packet" anchor="HS-PS-PKT"><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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                       Forwarded-PKT-Header                    ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                          ASRP Signature                       |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                          HS/PS message                        ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                        Forwarded-PKT-Data                     ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>If the ASRP_F_MSG flag is set in the Flags field of an HS/PS message, it indicates that this is a pure HS/PS packet (in which case the Forwarded-PKT-Data section has a length of zero); otherwise, it indicates that HS/PS messages are embedded within the forwarded packet and transmitted together with it.</t>

</section>
</section>
<section anchor="message-processing"><name>Message Processing</name>

<t>NS/QS/RS packets can be identified by their UDP destination port, while HS/PS packets are identified by the ASRP Signature. Once an ASRP packet is identified, the ASRP message within the packet can then be parsed and processed.</t>

<t>If transmission can be performed without causing IP fragmentation, all ASRP messages may be transmitted together with the forwarded packet. The specific encapsulation method is defined in the ASRP Packet Format. In subsequent message processing descriptions, this point will not be repeatedly emphasized.</t>

<section anchor="ns-message-processing"><name>NS Message Processing</name>

<t>The NS message is generated by a network node when creating a new session and is used to back up the session to the client or server.</t>

<t>The source IP of the NS packet is set to the network node&#39;s local IP (which can be obtained from configuration), and the destination IP is set to the client&#39;s or server&#39;s IP (which can be obtained from the forwarded packet). The source port is randomly generated, and the destination port is set to ASRP-PORT.</t>

<t>When a client or server receives an NS packet, it extracts the NS message and backs up the session state information, extracts the forwarded packet (if present), and hands it over to the system.</t>

<t>In PSV mode, if an NS message is lost, for TCP connections, the retransmission of the SYN packet will trigger the retransmission of the NS message. For other types of connections, subsequent packets will continue to generate NS messages until an RS message is received.</t>

<t>In ACT mode, if an NS message is lost, subsequent packets sent by the client will generate HS messages, prompting the network node to retransmit the NS message in response to these subsequent HS messages.</t>

<t>NS messages may be generated in both PSV and ACT modes. The handling procedures are described in <xref target="PSV-Scenario-1"/>, <xref target="PSV-Scenario-3"/>, and <xref target="ACT-Scenario-1"/>.</t>

</section>
<section anchor="qs-message-processing"><name>QS Message Processing</name>

<t>The QS message is generated by the network node to query backup session state information.</t>

<t>The source IP of the QS packet is set to the network node&#39;s local IP (obtainable from configuration), and the destination IP is set to the client&#39;s or server&#39;s IP (obtainable from the forwarded packet as described in <xref target="PSV-Scenario-2"/> and <xref target="ACT-Scenario-2"/>, or derived via algorithmic mapping to the client or server as described in <xref target="PSV-Scenario-3"/> and <xref target="ACT-Scenario-1"/>). The source port is randomly generated, and the destination port is set to ASRP-PORT.</t>

<t>When a client or server receives a QS packet, it extracts the QS message, queries the backup session state information, and returns an RS message; it extracts the forwarded packet (if present), processes it first according to the backup session state information, and then hands it over to the system.</t>

<t>If a QS message is lost, subsequent packets will trigger the generation of new QS packets, continuing the attempt to recover the session.</t>

<t>QS messages may be generated in both PSV and ACT modes. The handling procedures are described in <xref target="PSV-Scenario-2"/>, <xref target="PSV-Scenario-3"/>, and <xref target="ACT-Scenario-2"/>.</t>

</section>
<section anchor="rs-message-processing"><name>RS Message Processing</name>

<t>The RS message is generated by the client or server in response to an NS or QS message. It is processed by the network node to recover a session.</t>

<t>The RS packet reuses the protocol header of the NS/QS packet, with the source and destination IP addresses and UDP ports swapped.</t>

<t>When a network node receives an RS packet, it extracts the RS message and recovers the session (upon successful QS query); it extracts the forwarded packet (if present) and forwards it according to the session.</t>

<t>If an RS message is lost, subsequent NS or QS messages will continue the attempt to recover the session, thereby triggering retransmission of the RS message.</t>

<t>RS messages may be generated in both PSV and ACT modes. The handling procedures are described in <xref target="PSV-Scenario-1"/>, <xref target="PSV-Scenario-2"/>, <xref target="PSV-Scenario-3"/>, <xref target="ACT-Scenario-1"/>, and <xref target="ACT-Scenario-2"/>.</t>

</section>
<section anchor="hs-message-processing"><name>HS Message Processing</name>

<t>The HS message is sent by the client during the initial connection establishment phase to announce to the network node that it requires an NS message to back up session state information.</t>

<t>The source IP, destination IP, and source port of the HS packet are copied from the packet sent by the client.</t>

<t>When a network node receives an HS message, it extracts the HS message, creates a session, forwards packets according to the session, and returns a pure NS packet to the client.</t>

<t>HS messages are only generated in ACT mode. The handling procedure is described in <xref target="ACT-Scenario-1"/>.</t>

</section>
<section anchor="ps-message-processing"><name>PS Message Processing</name>

<t>The PS message is generated by the server after receiving an NS message. When the server sends its first response packet to the client, it uses the PS message to push session state information to the network node. This is used to recover the network node&#39;s session in the case of asymmetric routing.</t>

<t>The source IP, destination IP, and source port of the PS packet are copied from the packet sent by the server.</t>

<t>When a network node receives a PS message, it extracts the PS message and recovers the session; it extracts the forwarded packet (if present) and forwards it according to the session.</t>

<t>PS messages are only generated in PSV mode. The handling procedure is described in <xref target="PSV-Scenario-1"/> <xref target="PSV-Scenario-3"/>.</t>

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

<section anchor="message-forgery-attacks"><name>Message Forgery Attacks</name>

<t>The security design of the ASRP protocol is based on its typical deployment model.</t>

<t>Deployment Boundaries and Access Control: ASRP recommends deploying network nodes and the clients or servers that back up sessions within the same trusted internal network domain. In this model, all ASRP protocol packets communicate within an internal address space. By implementing appropriate network segmentation (e.g., using firewall policies or security groups) and strictly checking the source addresses of packets, forged ASRP packets originating from untrusted external networks can be effectively prevented from reaching the target nodes.</t>

<t>Session Legitimacy Verification: When processing ASRP packets that may establish new sessions (e.g., HS or RS packets), network nodes SHOULD perform basic validation according to the specific policies of the upper-layer application or service. For instance, in a load-balancing scenario, a node SHOULD verify whether the session points to a known and healthy server. In a NAT scenario, it SHOULD verify whether the address translation complies with predefined rules. This prevents the establishment of illegal sessions at the application layer.</t>

<t>Internal Threat Assessment: Even if an attacker is located within the trusted network and can forge ASRP packets, the scope of impact is inherently limited. The attacker can only forge sessions where they themselves are the endpoint (e.g., masquerading as a client to request recovery of a non-existent connection). Such forged sessions are indistinguishable in form from sessions established through normal access. They do not directly jeopardize the security of other users or nodes, nor can they elevate the attacker&#39;s privileges or grant access to unauthorized resources.</t>

</section>
<section anchor="qsrs-flood-attacks"><name>QS/RS Flood Attacks</name>

<t>When a network node loses a session, it may generate a large volume of QS packets. If maliciously exploited or due to a malfunction, this could lead to a flood attack <xref target="RFC4987"/>. To mitigate such risks, implementers SHOULD consider the following protective measures:</t>

<t>Rate Limiting and Traffic Shaping: Each network node SHOULD implement monitoring and limiting of the rate at which QS packets are sent. A reasonable threshold (e.g., the number of QS packets allowed per second) SHOULD be set. When the rate exceeds this threshold, the node SHOULD adopt a packet drop policy, for example, discarding newly arriving forwarded packets that trigger queries. The parameters for rate limiting SHOULD be configurable to adapt to deployment environments of different scales.</t>

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

<t>This document defines an application-layer protocol (ASRP). The protocol message types and internal identifiers are defined by this specification itself and constitute internal implementation details of the protocol. Therefore, there is no need to request registration of a separate protocol number or code point from IANA. However, for the implementation of this protocol, a UDP destination port requires allocation:</t>

<section anchor="udp-destination-port"><name>UDP Destination Port</name>

<t>NS/QS/RS messages are encapsulated within UDP datagrams for transmission. A fixed UDP destination port number is required so that the receiving end can identify and process such encapsulated packets.</t>

<t>Service Name: asrp</t>

<t>Port Number: 51200 (proposed value for current experimentation)</t>

<t>Transport Protocol: udp</t>

<t>Description: Used for receiving UDP-encapsulated ASRP protocol messages.</t>

<t>For experimental implementations and interoperability testing prior to IANA assignment, UDP port 51200 MAY be used as a temporary default. This port falls within the dynamic/private port range (49152-65535) reserved for local or temporary use and documentation examples <xref target="RFC6335"/>.</t>

<t>IANA is requested to assign a permanent port number in the &quot;User Ports&quot; range (1024-49151) for the &quot;asrp&quot; service in the &quot;Service Name and Transport Protocol Port Number Registry&quot;, with a reference to this document.</t>

</section>
</section>


  </middle>

  <back>


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

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

&RFC0768;
&RFC0791;
&RFC2119;
&RFC8174;
&RFC8200;


    </references>

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

&RFC2991;
&RFC2992;
&RFC3828;
&RFC4787;
&RFC4987;
&RFC6335;
&RFC9293;


    </references>

</references>


<?line 740?>

<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.</t>

</section>


  </back>

<!-- ##markdown-source:
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
gQ4F+y0IFsrRidkxR6P/HPwfQTJtE925AAA=

-->

</rfc>

