<?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 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 RFC1034 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1034.xml">
<!ENTITY RFC1035 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1035.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 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-06" 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>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@cmss.chinamobile.com</email>
      </address>
    </author>

    <date year="2026" month="April" day="08"/>

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

    <abstract>


<?line 64?>

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

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

  <middle>


<?line 72?>

<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, aiming to provide a standardized method for constructing elastic service clusters. This facilitates broader participation from software and hardware developers in building elastic cloud network service clusters. 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 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 the following protocol messages: New Session message (NS), New-session Acknowledge message (NA), Query Session message (QS), Recover Session message (RS), Recovery no-session message (RX), Hello Session message (HS) and Push Session message (PS).</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="na-message"><name>NA Message</name>

<t>Generated by the server holding backup as response to a NS message in PSV mode, indicating that the NS message is received by the server.</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 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="rx-message"><name>RX Message</name>

<t>Generated by the client or server holding the backup as a response to a QS message, indicating that the session queried by the QS message was not found. Except for the Msg Type field, the RX message is identical to the corresponding QS message.</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="transmission-modes-and-signature"><name>Transmission Modes and Signature</name>

<t>ASRP messages can be transmitted in three modes.</t>

<section anchor="inline-mode"><name>Inline mode</name>

<t>The ASRP message is inserted at the beginning of the payload of the forwarded packet. The ASRP message and the forwarded packet are transmitted together. When the total packet length does not exceed the MTU, NS, HS, and PS messages prefer this transmission mode.</t>

</section>
<section anchor="standalone-mode"><name>Standalone mode</name>

<t>The ASRP message is encapsulated into a separate new packet that uses the same 5-tuples (source IP, destination IP, source port, destination port, and protocol) as the forwarded packet. This ensures that both the ASRP message and the forwarded packet are delivered to the same network node for processing. To avoid exceeding the MTU, NS, HS, and PS messages may use this transmission mode.</t>

</section>
<section anchor="bundled-mode"><name>Bundled mode</name>

<t>The ASRP message is encapsulated using IP/UDP <xref target="RFC0768"/>, with IP addresses configured to ensure mutual reachability and a fixed destination port ASRP_PORT (e.g., 51200). When the total packet length does not exceed the MTU, the original IP packet to be forwarded may optionally be appended after the ASRP message, allowing them to be transmitted together. QS, RS, RX and NA messages typically use this transmission mode; additionally, NS messages also use this mode when an NA response is expected.</t>

</section>
<section anchor="asrp-signature"><name>ASRP Signature</name>

<t>In inline/standalone mode, an ASRP Signature is used to indicate that a packet contains an ASRP message.</t>

<t>Similar to the Proxy Protocol, a 12-byte ASRP Signature is used:</t>

<t>0x0D, 0x0A, 0x0D, 0x0A, 0x00, 0x0D, 0x0A, 0x41, 0x53, 0x52, 0x50, 0xF1.</t>

<t>The ASRP Signature is inserted in front of the ASRP message. In bundled mode, UDP destination port is ASRP-PORT, it does not require the ASRP Signature.</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------ |          |
+----------+            +-------------+                 +----------+
]]></artwork></figure>

<t>This scenario describes that, in PSV mode, a network node receives an explicit first packet (i.e., a packet whose characteristics explicitly indicate the start of a session) and directly creates a session flow. Common examples of explicit first packets include TCP SYN <xref target="RFC9293"/> and DNS <xref target="RFC1034"/> <xref target="RFC1035"/> query, among others.</t>

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

<t><list style="numbers" type="1">
  <t>Session Creation: Upon receiving a packet from the client (e.g., TCP SYN), the network node first creates a new session and then sends an NS message to the selected server.</t>
  <t>Server Response: Upon receiving the NS message, the server stores the session state information contained in the NS message and associates it with its local session. In the case of asymmetric routing, when sending its first response packet, the server sends a PS message to the network node.</t>
  <t>Session Recovery: In the case of asymmetric routing, the network node, upon receiving the PS message, restores the session and subsequently forwards packets according to that session.</t>
</list></t>

<t>The session state information backed up by the server is released upon local session termination, without requiring any additional teardown message.</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/RX--- |          |
+----------+             +-------------+                +----------+
]]></artwork></figure>

<t>This scenario describes the session recovery flow triggered by a server packet.</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 matching session is found, the node SHOULD first buffer the packet for forwarding, then sends a QS message back to the server.</t>
  <t>Server Response: 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 sends an RS/RX message back to the network node.</t>
  <t>Session Recovery: Upon receiving an RS message, the network node creates a new local session and forwards packets accordingly. Upon receiving an RX message, the node SHOULD discard the pending packets.</t>
</list></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/RX--- | +--------+ |
|          |             |           |      ...      | | server | |
|          |             |           |      ...      | +--------+ |
|  client  |             |   Nodes   | ----4:PKT---> |    ...     |
|          |             |           |               | +--------+ |
|          |             |           | ----4:NS----> | | server | |
|          | <--7:PKT--- |           | <---5:NA----- | +--------+ |
|          |             |           | <---6:PS----- |    ...     |
+----------+             +-----------+               +------------+
]]></artwork></figure>

<t>This scenario describes the session creation/recovery flow triggered by a client packet.</t>

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

<t><list style="numbers" type="1">
  <t>Query Local Session: Upon receiving a packet from the client, if no matching session is found, the network node first obtains a list of candidate servers (possibly multiple) for querying.</t>
  <t>Query Backup Session: The network node sends QS messages to each candidate server to query for backed-up sessions. Each server replies with an RS or RX message indicating the query result.</t>
  <t>Process Query Results: If a session is found, the network node restores the session according to the RS message and forwards the packet. Otherwise, for TCP packets: drop the packet. For UDP packets: proceed to create a new local session and send an NS message to the selected server.</t>
  <t>Server Creates New Session: Upon receiving an NS message, the server stores the session state information and associates it with its local session. It immediately replies with a pure NA packet as an acknowledgment.</t>
  <t>Session Recovery: In an asymmetric routing environment, when sending its first response packet, the server prioritizes sending a PS message to restore the session at the network node before forwarding the response packet.</t>
</list></t>

<t>In this scenario, obtaining the list of candidate servers is a key challenge. Two solutions are proposed:</t>

<t><list style="numbers" type="1">
  <t>The network node employs a deterministic server selection algorithm-such as consistent hashing or history-aware consistent hashing-to quickly map incoming packets to backend servers.</t>
  <t>Enhance the client so that client packets carry backend server information, allowing the network node to directly extract the target server from the client packet.</t>
</list></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/RX---> |             |             |          |
+----------+                +-------------+             +----------+
]]></artwork></figure>

<t>This scenario describes session creation at a network node and server-initiated session restoration.</t>

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

<t><list style="numbers" type="1">
  <t>Session backup: When sending a packet without receiving NS message, the client sends an HS message to the network node to request session backup (the client should rate-limit HS). Upon receiving HS, the node replies with an NS message for session backup.</t>
  <t>Session lookup: For packets from a server with no matching session, the network node identifies the target client and sends it a QS message.</t>
  <t>Session Recovery: Upon receiving QS, the client sends an RS/RX message to the network node to restore the session.</t>
</list></t>

<t>In step 2, identifying the target client is challenging. Two solutions are proposed:</t>

<t><list style="numbers" type="1">
  <t>Use static mapping (e.g., map destination port to client). For SNAT, client IP addresses can be statically mapped to distinct port ranges.</t>
  <t>Enhance the server to embed client information in its packets, allowing the network node to extract the client address directly.</t>
</list></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/RX---> |             |             |          |
+----------+                +-------------+             +----------+
]]></artwork></figure>

<t>This scenario describes the client-packet-triggered session recovery.</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 with no local session and without an HS message, the network node sends a QS message to the client.</t>
  <t>Session Recovery: The client responds with an RS/RX message; the RS message enables session restoration.</t>
</list></t>

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

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

<t>An ASRP message consists of nine fields in total. The message header has a fixed length and is composed of the first six fields. The message body has variable length and comprises the remaining three fields. The fields are defined as follows:</t>

<figure><artwork><![CDATA[
1. Version: 1 octet, the protocol version.
2. MsgType: 1 octet, the message type.
3. Flags: 1 octet, message flags.
    - F_MSG: Pure message (sent independently);
    - F_ACT: ACT mode in use;
    - F_PEER: First ST is the server-side ST.
4. DataType: 1 octet, session tuple type.
5. Length: 2 octets, total ASRP message length in octets.
6. Reserved: 1 octet, reserved for future use.
7. Protocol: 1 octet, transport-layer protocol(e.g., TCP, UDP).
8. Session-Tuple(ST): source and destination addresses and ports.
    The IP address type is IPv4/IPv6.
    There are 6 types of ST, as follows:
    - ST4: IPv4-only tuple;
    - ST6: IPv6-only tuple;
    - ST44/ST66: Pairs of ST4 or ST6;
    - ST46/ST64: Mixed IPv4/IPv6 tuples.
9. Session-Data(SD): opaque session state information.
]]></artwork></figure>

<t>The values and semantics of the six header fields (Version through Reserved) are specified in the following table.</t>

<figure title="ASRP Message Header" anchor="ASRP-MSGH"><artwork><![CDATA[
+==========+=======+========+==================================+
|  Field   | Value |  Name  |  Description                     |
+==========+=======+========+==================================+
| Version  |   0   |  Ver0  |  ASRP Version                    |
+----------+-------+--------+----------------------------------+
|          |   0   |   NS   |  NS Message                      |
|          +-------+--------+----------------------------------+
|          |   1   |   NA   |  NA Message                      |
|          +-------+--------+----------------------------------+
|          |   2   |   QS   |  QS Message                      |
|          +-------+--------+----------------------------------+
| MsgType  |   3   |   RS   |  RS Message                      |
|          +-------+--------+----------------------------------+
|          |   4   |   RX   |  RX Message                      |
|          +-------+--------+----------------------------------+
|          |   5   |   HS   |  HS Message                      |
|          +-------+--------+----------------------------------+
|          |   6   |   PS   |  PS Message                      |
+----------+-------+--------+----------------------------------+
|          |   0   |  NULL  |  Message body contains no ST     |
|          +-------+--------+----------------------------------+
|          |   1   |  ST44  |  Message body contains ST44      |
|          +-------+--------+----------------------------------+
| DataType |   2   |  ST66  |  Message body contains ST66      |
|          +-------+--------+----------------------------------+
|          |   3   |  ST46  |  Message body contains ST46      |
|          +-------+--------+----------------------------------+
|          |   4   |  ST64  |  Message body contains ST64      |
+----------+-------+--------+----------------------------------+
|          |  0x1  |  F-MSG |  Pure message                    |
|          +-------+--------+----------------------------------+
|  Flags   |  0x2  |  F-ACT |  ACT mode                        |
|          +-------+--------+----------------------------------+
|          |  0x4  | F-PEER |  Peer Session-Tuple              |
+----------+-------+--------+----------------------------------+
|  Length  |  len  |  LEN   |  Message length in octets        |
+----------+-------+--------+----------------------------------+
| Reserved |   0   |  RSRV  |  Reserved                        |
+----------+-------+--------+----------------------------------+
]]></artwork></figure>

<t>ST4(length 12) 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>

<figure><artwork><![CDATA[
ST6(length 36)  Format: Same structure as ST4, but with IPv6
ST44(length 24) Format: ST4 pair
ST66(length 72) Format: ST6 pair
ST46(length 48) Format: Mixed ST pair(ST4->ST6 sequence)
ST64(length 48) Format: Mixed ST pair(ST6->ST4 sequence)
]]></artwork></figure>

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

<t>NS 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Version    |     MsgType   |    DataType   |     Flags     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Length             |    Reserved   |    Protocol   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~               Session-Tuples: ST44/ST66/ST46/ST64             ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                         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="na-message-format"><name>NA Message Format</name>

<t>The NA message is used only in PSV mode to inform the network node that the server has received the NS message.</t>

<t>RS Message Format: The structure of message is the same as that of the NS message.</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>

<t>QS 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Version    |     MsgType   |    DataType   |     Flags     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Length             |    Reserved   |    Protocol   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                   Session-Tuple: ST4 or ST6                   ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                         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>

<t>RS Message Format: The structure of message is the same as that of the NS message.</t>

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

<t>The RX message indicates that the session queried by a prior QS message is not present in the responder&#39;s session table.</t>

<t>RX Message Format: The structure of messages is the same as taht of the 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>

<t>HS Message Format:</t>

<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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Version    |     MsgType   |    DataType   |     Flags     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Length             |    Reserved   |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

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

<t>In PSV mode, in an asymmetric routing environment, when the server sends its first packet, it uses a PS message to push session information to the network node, enabling rapid session establishment and fast forwarding of the server&#39;s initial packet.</t>

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

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

<t>A packet that carries a single ASRP message is referred to as an ASRP packet. Based on the three transmission modes of ASRP messages, the format of ASRP packets can also be classified into three types.</t>

<section anchor="inline-asrp-packet"><name>Inline-ASRP packet</name>

<t>In Inline mode, the ASRP packet format is as follows:</t>

<figure title="Inline-ASRP packet" anchor="Inline-ASRP-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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~             Original packet header (IP + TCP/UDP)             ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                        ASRP Signature                         |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                       NS/HS/PS message                        ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                     Original packet data                      ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="standalone-asrp-packet"><name>Standalone-ASRP packet</name>

<t>In standalone mode, the ASRP packet format is as follows:</t>

<figure title="Standalone-ASRP packet" anchor="Standalone-ASRP-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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~             Original packet header (IP + TCP/UDP)             ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                        ASRP Signature                         |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                       NS/HS/PS message                        ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The message within the packet MUST have the F_MSG flag set to indicate that this is a pure message packet.</t>

</section>
<section anchor="bundled-asrp-packet"><name>Bundled-ASRP packet</name>

<t>In bundled mode, the ASRP packet format is as follows:</t>

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

<t>If there is no original IP packet following the message in the packet, the F_MSG flag MUST be set in the message to indicate that this is a pure message packet.</t>

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

<t>Bundled-ASRP packets are identified by the UDP destination port, while other ASRP packets are identified by the ASRP Signature. Once an ASRP packet is identified, the ASRP messages 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>If the NS message is received via a Bundled-ASRP packet, the server MUST immediately respond with an NA message.</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 NA 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="na-message-processing"><name>NA Message Processing</name>

<t>Upon receiving an NA message, the network node MUST NOT send any further NS messages to the server.</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 QS message. It is processed by the network node to recover a session.</t>

<t>The RS packet reuses the protocol header of the 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 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="rx-message-processing"><name>RX Message Processing</name>

<t>The RX message is generated by either the client or the server in response to a QS message, indicating that no session was found. Upon receiving an RX message, the network node follows the processing procedures described in the respective scenarios under PSV/ACT mode.</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="qs-flood-attacks"><name>QS 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;
&RFC2119;
&RFC8174;


    </references>

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

&RFC1034;
&RFC1035;
&RFC2991;
&RFC2992;
&RFC4787;
&RFC4987;
&RFC6335;
&RFC9293;


    </references>

</references>


<?line 781?>

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

-->

</rfc>

