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


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

<!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-07" 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_yewu@cmss.chinamobile.com</email>
      </address>
    </author>

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

    <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 Node |  | |
                   | |  +----------------+  | |
                   | |          ...         | |
                   | |          ...         | |
                   | +----------------------+ |
                   |            ^ |           |
                   |            | 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>

<t>The operational mode (PSV or ACT) is determined by the deployment configuration of the network node and is not carried in ASRP messages.</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 an 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), New Session Conflict message (NC), 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 as a response to an NS message in PSV mode, acknowledging the receipt of the NS message.</t>

</section>
<section anchor="nc-message"><name>NC Message</name>

<t>Generated by the client or server when the session state carried in a received NS message conflicts with an existing local session, indicating the session conflict to the network node.</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.</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 MsgType 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 two modes: Inline Message and Standalone Message.</t>

<section anchor="inline-message"><name>Inline Message</name>

<t>The Inline Message is transmitted with the same 5-tuples as the flow, either inserted into the original packet or carried in a separate packet that copies the original packet header. When the total packet length does not exceed the MTU, NS, HS, and PS messages SHOULD be inserted into the original packet; otherwise, they are carried in a separate packet. HS messages are sent after forwarded packets, and PS messages are sent before forwarded packets.</t>

</section>
<section anchor="standalone-message"><name>Standalone Message</name>

<t>The Standalone Message is transmitted in an independent packet with its own 5-tuples. It 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). QS, RS, RX, NA and NC messages typically use this transmission mode.</t>

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

<t>In Inline Message 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 Standalone Message mode, the UDP destination port is ASRP-PORT, and the ASRP Signature is not required.</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 Mode" anchor="PSV-Scenario-1"><artwork><![CDATA[
                           ASRP Cluster
+----------+             +--------------+                +----------+
|          | ---1:PKT--> |              | -----2:NS----> |          |
|          |             |              | <----3:NC----- |          |
|  client  |             |  ASRP Nodes  |                |  server  |
|          |             |              |                |          |
|          | <--5:PKT--- |              | <----4: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 and associates it with its local session. If a conflict occurs, it sends an NC message. 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: Upon receiving the PS message, the network node restores the session and forwards packets accordingly.</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[
                           ASRP Cluster
+----------+             +--------------+                +----------+
|          |             |              | <----1:PKT---- |          |
|          |             |              |                |          |
|  client  | <--4:PKT--- |  ASRP 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 looks up the backed-up session state information and sends an RS/RX message.</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[
                          ASRP Cluster
+----------+             +------------+                +------------+
|          |             |            | ----2:QS-----> |    ...     |
|          | ---1:PKT--> |            | <---3:RS/RX--- | +--------+ |
|          |             |            |      ...       | | server | |
|          |             |            |      ...       | +--------+ |
|  client  |             | ASRP Nodes | ---4:PKT/NS--> |    ...     |
|          |             |            |                | +--------+ |
|          |             |            |                | | server | |
|          | <--7:PKT--- |            | <--5:NA/NC---- | +--------+ |
|          |             |            | <----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. Each server replies with an RS or RX message.</t>
  <t>Process Query Results: If a session is found, the network node restores the session and forwards the packet. Otherwise, for TCP packets: drop the packet. For UDP packets: 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. If a conflict occurs, it sends an NC message; otherwise, if the F-NA flag is set, it immediately replies with an NA packet.</t>
  <t>Session Recovery: In an asymmetric routing environment, when sending its first response packet, the server sends a PS message to restore the session at the network node.</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[
                              ASRP Cluster
+----------+                +--------------+             +----------+
|          | -----1:HS----> |              |             |          |
|          | <----2:NS----- |              | ---3:PKT--> |          |
|  client  |                |  ASRP 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 an NS message, the client sends an HS message to the network node to request session backup (the client SHOULD rate-limit HS). Upon receiving the HS message, the node replies with an NS message.</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[
                              ASRP Cluster
+----------+                +--------------+             +----------+
|          | ----1:PKT----> |              |             |          |
|          |                |              |             |          |
|  client  | <----2:QS----- |  ASRP 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 comprises the remaining three fields: the fixed-length Protocol field, and the variable-length Session-Tuple and Session-Data 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. STType: 1 octet, session tuple type.
4. Flags: 1 octet, message flags.
    - F-LIP6: The Node-Local-IP is an IPv6 address.
    - F-CC: Client-side session conflict.
    - F-NA: NA acknowledgment requested.
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                      |
|          +-------+--------+----------------------------------+
|          |   7   |   NC   |  NC Message                      |
+----------+-------+--------+----------------------------------+
|          |   0   |  NULL  |  Message body contains no ST     |
|          +-------+--------+----------------------------------+
|          |   1   |  ST44  |  Message body contains ST44      |
|          +-------+--------+----------------------------------+
|          |   2   |  ST66  |  Message body contains ST66      |
|          +-------+--------+----------------------------------+
|  STType  |   3   |  ST46  |  Message body contains ST46      |
|          +-------+--------+----------------------------------+
|          |   4   |  ST64  |  Message body contains ST64      |
|          +-------+--------+----------------------------------+
|          |   5   |  ST4   |  Message body contains ST4       |
|          +-------+--------+----------------------------------+
|          |   6   |  ST6   |  Message body contains ST6       |
+----------+-------+--------+----------------------------------+
|          |  0x1  | F-LIP6 |  NS Node-Local-IP is IPv6        |
|          +-------+--------+----------------------------------+
|  Flags   |  0x2  |  F-CC  |  Client-side session conflict    |
|          +-------+--------+----------------------------------+
|          |  0x4  |  F-NA  |  NS requests NA ack              |
+----------+-------+--------+----------------------------------+
|  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>

<t>For messages carrying two Session-Tuples (NS, NA, NC, RS, and PS), the first Session-Tuple (ST1) MUST be the client-side tuple, and the second Session-Tuple (ST2) MUST be the server-side tuple. For messages carrying a single Session-Tuple (QS and RX), the Session-Tuple MUST be the 5-tuple of the triggering packet.</t>

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

<t>The NS message contains a Node-Local-IP field and two Session-Tuples.</t>

<t>The Node-Local-IP field is located at the end of the NS message and carries the local IP address of the network node that sends the NS message. Its length is 16 octets when the F-LIP6 flag is set, and 4 octets otherwise. The client or server uses this address as the destination IP to send the NA message back to the network node.</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   |     STType    |     Flags     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Length             |    Reserved   |    Protocol   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~               Session-Tuples: ST44/ST66/ST46/ST64             ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                         Session-Data                          ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                   Node-Local-IP (IPv4 or IPv6)                ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The two Session-Tuples represent the network node&#39;s connections with the client and the server, respectively.</t>

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

<t>The NA message acknowledges the receipt of an NS message that carries the F-NA flag.</t>

<t>The NA message has the same structure as the NS message, except that the Node-Local-IP field is not present.</t>

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

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

<t>In the NC message, the client-side Session-Tuple remains unchanged, while the server-side Session-Tuple may be modified to reflect the conflicting session. The F-CC flag indicates whether the conflict is on the client side or the server side.</t>

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

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

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

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

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

<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   |     STType    |     Flags     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Length             |    Reserved   |    Protocol   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Reserved                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

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

<t>PS Message Format: The structure of the message is the same as that of the NA 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 two transmission modes of ASRP messages, the format of ASRP packets can also be classified into two types.</t>

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

<t>In Inline Message mode, the ASRP packet shares the 5-tuples with the flow. The ASRP message is either inserted into the original packet:</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>

<t>or carried in a separate packet that copies the original packet header, without the original packet data:</t>

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

<t>In Standalone Message mode, the ASRP packet uses its own 5-tuples and is encapsulated using IP/UDP. The 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~      IP + UDP Header (with destination port: ASRP-PORT)       ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                    QS/RS/RX/NA/NC message                     ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

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

<t>Standalone-ASRP packets are identified by the UDP destination port, while Inline-ASRP packets are identified by the ASRP Signature. Once an ASRP packet is identified, the ASRP messages within it are then parsed and processed.</t>

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

<t>When a client or server receives an NS message, it MUST first check for session conflicts on the client side and then on the server side. A client-side conflict occurs when the client-side tuple matches an existing backed-up session on either side. If a conflict is found, it MUST clear the F-NA flag and send an NC message, with the F-CC flag set to indicate a client-side conflict.</t>

<t>If no conflict is found, it MUST back up the session state information and hand the embedded packet (if present) over to the system. If the F-NA flag is set, it MUST send an NA message.</t>

<t>The F-NA flag SHOULD be set when the session is created from a non-explicit first packet; explicit first packets (e.g., TCP SYN or DNS query) do not require it.</t>

<t>If an NS message is lost, in PSV mode a TCP SYN retransmission or subsequent packets regenerate NS messages until an NA message is received; in ACT mode, subsequent packets generate HS messages, prompting the network node to retransmit the NS message.</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>The destination IP of the NA packet MUST be set to the Node-Local-IP field carried in the received NS message, and the destination port MUST be set to ASRP-PORT.</t>

<t>Upon receiving an NA message, the network node considers that the corresponding NS message has been processed by the responder, and MUST NOT send any further NS messages for this session.</t>

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

<t>The destination IP of the NC packet MUST be set to the Node-Local-IP field carried in the received NS message, and the destination port MUST be set to ASRP-PORT.</t>

<t>Upon receiving an NC message, the network node considers that the session conflicts with an existing local session on the responder. If the F-CC flag is set, the conflict is on the client side; otherwise, it is on the server side. The network node SHOULD handle the conflict according to its local policy.</t>

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

<t>The source IP of the QS packet MUST be set to the network node&#39;s local IP (obtainable from configuration), and the destination IP MUST be 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 MUST be randomly generated, and the destination port MUST be set to ASRP-PORT.</t>

<t>The backup holder MUST index the backed-up session by both the client-side and the server-side 5-tuples. When a client or server receives a QS packet, it MUST look up the backed-up session whose client-side or server-side 5-tuple matches the Session-Tuple in the QS message. If a match is found, it MUST return an RS message; otherwise, it MUST return an RX message.</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 packet MUST reuse the protocol header of the QS packet, with the source and destination IP addresses swapped.</t>

<t>When a network node receives an RS packet, it MUST recover the session and forward packets 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>Upon receiving an RX message, the network node MUST follow 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>When a network node receives an HS message, it MUST create a session, forward packets according to the session, and return an NS message 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 source IP, destination IP, and source port of the PS packet MUST be copied from the packet sent by the server.</t>

<t>When a network node receives a PS message, it MUST recover 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>QS/RS/RX/NA/NC 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 743?>

<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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
XWqFHh8cnf7z3AUeOuwRpdDdlHBsarP0tcFpT9plDTt8emN1OZ9Xk3e2XcfQ
Zv6urWMo55a5shMobdpp3H/yaPw4miQmjFuCj4Urk0Rs71+ZNCX+LKf+Y9Dk
F+JNb6cPKEH+AdUh2Mie/hhwcGe8hLTn84Z+smQt1VHjqdsEMRj0P8BJ624f
mKv/21cb0rq+umxpXS+hYByrNzllRwe8wZVmxgc91uECc3IYRConwGHIiIph
c/xL9nm42t6ec9af/Y9z/4iaJm7k16jzPZfwNoroSa20uY7fhYf7uiLsPW44
V0QtPJaM/HHqMPA2trayNxGxTsCT9/PZanpS8L1bAwfr2rGKy68LN8w3dQrs
BOMMj7wLt8YHtQI8V6lTrxs3pdFVUGQ16p0del6pmMSGgVAITkr7bK4UMLe+
cdoQ1xTiVVvpzPqRt1Uhu+aov5Wp9IKAsbYIAA3Czdq3w86DR5paxYYqFraK
+ONWFi42bzcO5UU+6i0v+N26qoNhCT/EVqwzSKUxtlVS+LVXYeQM3NZBBhjo
NWF9RhiK7bHUgZWHeF1fcHi/GUWpL6UquNczesKrNAthxGYmV+z/zi+EPuzr
1/XqlWUeIh0vltW6TYtuwFU7tkwBWjc48btfunLmeF5tgZt+AAh0dp+MTDbu
ICplch5IrBMq88q7eJojJdWvv4YFNPkEm7BMDF7D/n/9Ndxz/fFjN1jj86Xz
boi6cQUIWtvUAqG1dYEUTyl0oZ7w6IgmZ6Kzo7X1DqcfwOh7Sn0chuGTsCJW
QacRlqYJ+4SV9j00xUjSBR4e5ri4lRzS3h5cY88jtQS6UrO6JC7nrz6fBdAc
0NoNJt0S9Ed/XNAffRrou/Jq86EhVmQ5+HtM04WmhGneHJAKK7D4jQKReN6e
iPBYok4dvsfVTyOx4wrELAu4u+pGu9oLblxWXeOSXr/WrXitS4PZ4koqdAo4
cfngnMjt/sWG53pewdD6i2l0kr+Y3leIyy0oPd8+/bbNlvakTG2LK+0htyrw
yKuS0BTLYrsqLN4W+DVHbt/01of9bwVeuM1rLYsQYD+w96RYZKuGd38eyWD/
Up0BDyaxZ+Bicf331FlXZQKWQzKirXaFIXi+1hThv1mjbHCrUTCwguH6AoZS
/9gbg+s3eL3TBbt5aMKC3vrZV6gC8tE5XbWrOTuk2TDcJtt2Q79AFnX+tkfz
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
AAA=

-->

</rfc>

