<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-xu-savax-data-09" category="std" consensus="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="savax-data">Data Plane of Source Address Validation Architecture-eXternal (SAVA-X)</title>
    <seriesInfo name="Internet-Draft" value="draft-xu-savax-data-09"/>
    <author initials="K." surname="Xu" fullname="Ke Xu">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>xuke@tsinghua.edu.cn</email>
      </address>
    </author>
    <author initials="X." surname="Wang" fullname="Xiaoliang Wang">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>wangxiaoliang0623@foxmail.com</email>
      </address>
    </author>
    <author initials="Y." surname="Guo" fullname="Yangfei Guo">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>guoyangfei@zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="J." surname="Wu" fullname="Jianping Wu">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>jianping@cernet.edu.cn</email>
      </address>
    </author>
    <date year="2025" month="November" day="20"/>
    <abstract>
      <?line 54?>

<t>Due to the fact that the Internet forwards packets in accordance with the IP destination address, packet forwarding generally occurs without examination of the source address. As a result, malicious attacks have been initiated by utilizing spoofed source addresses. The inter-domain source address validation architecture represents an endeavor to enhance the Internet by employing state machines to generate consistent tags. When two end hosts at different address domains (ADs) of the IPv6 network communicate with each other, tags will be appended to the packets to identify the authenticity of the IPv6 source address.</t>
      <t>This memo focuses on the data plane of the SAVA-X mechanism.</t>
    </abstract>
  </front>
  <middle>
    <?line 61?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Inter-Domain Source Address Validation-eXternal (SAVA-X) mechanism serves to establish a trust alliance among Address Domains (AD). It maintains a one-to-one state machine among ADs in conjunction with the AD Control Server (ACS). Moreover, it generates a consistent tag and deploys this tag to the ADs' border router (AER). The AER of the source AD appends a tag to packets originating from one AD and destined for another AD, thereby identifying the identity of the AD. The AER of the destination AD verifies the source address by validating the correctness of the tag to determine whether the packet has a forged source address.</t>
      <t>In the packet forwarding process, if both the source address and the destination address of a packet belong to the trust alliance, the tag is either not added or added incorrectly. In such a case, the AER of the destination AD determines that the source address is forged and directly discards this packet. For packets with a source address outside the trust alliance, the destination AD forwards the packet directly.</t>
      <t>This document mainly studies the relevant specifications of the data plane of the SAVA-X between ADs, which will protect IPv6 networks from being forged source addresses. See <xref target="RFC8200"/> for more details about IPv6. It stipulates the state machine, tag generation and update, tag processing in AER, and packet signature Its promotion and application can realize the standardization of  the data plane in the SAVA-X to facilitate the related equipment developed by different manufacturers and organizations to cooperate to accomplish the inter-domain source address validation jointly.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<section anchor="terminology-and-abbreviation">
        <name>Terminology and Abbreviation</name>
        <t>The following terms are used with a specific meaning:</t>
        <dl newline="true">
          <dt>ACS:</dt>
          <dd>
            <t>AD Control Server. The server maintains the state machine with other ACS and distributes information to AER.</t>
          </dd>
          <dt>AD:</dt>
          <dd>
            <t>Address Domain. The unit of a trust alliance. It is an address set consisting of all IPv6 addresses corresponding to an IPv6 address prefix.</t>
          </dd>
          <dt>ADID:</dt>
          <dd>
            <t>The identity of an AD.</t>
          </dd>
          <dt>ADID_Rec:</dt>
          <dd>
            <t>The record of the number of an AD.</t>
          </dd>
          <dt>AER:</dt>
          <dd>
            <t>AD border router, which is placed at the boundary of an AD of STA.</t>
          </dd>
          <dt>API_Rec:</dt>
          <dd>
            <t>The record of the prefix of an AD or STA.</t>
          </dd>
          <dt>ARI_Rec:</dt>
          <dd>
            <t>The record with relevant information of an AD or STA.</t>
          </dd>
          <dt>SM:</dt>
          <dd>
            <t>State Machine, which is maintained by a pair of ACS to generate tags.</t>
          </dd>
          <dt>TA:</dt>
          <dd>
            <t>Trust Alliance. The IPv6 network that uses the SAVA-X mechanism.</t>
          </dd>
          <dt>Tag:</dt>
          <dd>
            <t>The authentic identification of the source address of a packet.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="state-machine-mechanism">
      <name>State Machine Mechanism</name>
      <t>In SAVA-X, the state machine mechanism is used to generate, update, and manage the tags.</t>
      <figure anchor="SM">
        <name>State machine mechanism.</name>
        <artwork><![CDATA[
+------+              +-------+                    +---------+
| S_n  |     triger   | A-Box |     transition     | S_(n+1) |
|      |------------->|       |------------------->|         |
+------+              +-------+                    +---------+
                          | generation
                          |
                          v
                      +-------+
                      | Tag_n |
                      +-------+
]]></artwork>
      </figure>
      <dl newline="true">
        <dt>State:</dt>
        <dd>
          <t><tt>S_n</tt> and <tt>S_(n+1)</tt> represent the current state and next state of the SM respectively.</t>
        </dd>
        <dt>Tag:</dt>
        <dd>
          <t><tt>Tag_n</tt> is generated in the progress of state transiting from <tt>S_n</tt> to <tt>S_(n+1)</tt>.</t>
        </dd>
        <dt>Algorithm Box:</dt>
        <dd>
          <t>A-Box is Alogorithm Box. It is used to transmit the State and generate the tag. It takes the current State as the input and the following State and current tag as the output. The algorithm box consists of two parts: one is the transition function <tt>transit()</tt>, <tt>S_(n+1)</tt> = transit(<tt>S_n</tt>); the second is the function <tt>generate()</tt> to generate tags. <tt>Tag_n</tt> = generate(<tt>S_n</tt>). The algorithm box (A-Box) is the core of the state machine. It determines the data structure of state and tag, the specific mode of state machine implementation, as well as its security and complexity.</t>
        </dd>
        <dt>Trigger:</dt>
        <dd>
          <t>It is used to trigger the transition of State.</t>
        </dd>
        <dt>Transition:</dt>
        <dd>
          <t>It reprents the progress of state transiting from <tt>S_n</tt> to <tt>S_(n+1)</tt>.</t>
        </dd>
        <dt>Generation:</dt>
        <dd>
          <t>It represents the progress of calculating the current tag from the current State.</t>
        </dd>
      </dl>
    </section>
    <section anchor="tag">
      <name>Tag</name>
      <section anchor="tag-generation-algorithm">
        <name>Tag Generation Algorithm</name>
        <t>There are two ways to generate tags: pseudo-random number algorithm and hash chain algorithm.</t>
        <section anchor="pseudo-random-number-algorithm">
          <name>Pseudo-Random Number Algorithm</name>
          <t>In the pseudo-random number generation algorithm, an initial number or string is usually used as the "seed", which corresponds to the initial state of the state machine. Using seeds, a pseudo-random number sequence is generated as a tag sequence through some algorithm. Next, we would take KISS (keep it simple stub), a pseudo-random number generation algorithm, as an example to introduce how to apply it to the state machine mechanism. For the algorithm details of KISS, you could refer to the following reference pseudo code:</t>
          <figure anchor="kiss99">
            <name>KISS99: Pseudo-random number generatation</name>
            <artwork><![CDATA[
/* Seed variables */
uint x = 123456789,y = 362436000,z = 521288629,c = 7654321;
uint KISS(){
   const unsigned long a = 698769069UL;
   unsigned long t;
   x = 69069*x+12345;
   y ^= (y<<13); y ^= (y>>17); y ^= (y<<5);
   t = a*z+c; c = (t>>32);
   z=cast(uint)t;
   return x+y+z;
}
]]></artwork>
          </figure>
          <t>In this algorithm, State <tt>S</tt> can be expressed as (<tt>x</tt>, <tt>y</tt>, <tt>z</tt>, <tt>c</tt>). The algorithm box is <tt>KISS()</tt>. After each calculation, the state undergoes a transition from <tt>S_n</tt> to <tt>S_(n+1)</tt>, that is, the four variables <tt>x</tt>, <tt>y</tt>, <tt>z</tt>, and <tt>c</tt> are all changed. At the same time, a pseudo-rng number (<tt>x</tt> + <tt>y</tt> + <tt>z</tt>) is generated.</t>
          <t>As the state machine shown above, the initial state is <tt>S_0 = (123456789, 362436000, 521288629, 7654321)</tt>. In fact, the initial state can be arbitrarily selected by the algorithm shown below:</t>
          <figure anchor="seeds-rng">
            <name>KISS99: Initial state selection</name>
            <artwork><![CDATA[
void init_KISS() {
   x = devrand();
   while (!(y = devrand())); /* y must not be zero */
   z = devrand();
   /* Don't really need to seed c as well
      but if you really want to... */
   c = devrand() % 698769069; /* Should be less than 698769069 */
}
]]></artwork>
          </figure>
          <t>The basic design goal of the pseudo-random number generation algorithm is mainly a long cycle and pretty distribution, however, without or little consideration of safety factors. The backstepping security and prediction ability of the KISS algorithm have not been proved.</t>
        </section>
        <section anchor="hash-chain-algorithm">
          <name>Hash Chain Algorithm</name>
          <t>For the design of a hash chain-based tag generating algorithm, one can see S/Key in <xref target="RFC1760"/>. In the S/Key system, there is an encryption end and an authentication end. The encryption end generates an initial state <tt>W</tt>, and then uses some hash algorithm <tt>H()</tt> to iterate on <tt>W</tt> to obtain a string sequence: <tt>H_0(W)</tt>, <tt>H_1(W)</tt>, ..., <tt>H_N(W)</tt>, where <tt>H_n(W)</tt> represents the iterative operation of <tt>H()</tt> on <tt>W</tt> n times, <tt>H_0(W)</tt> = <tt>W</tt>. The state sequence <tt>{S}</tt> is defined as the reverse order of the hash chain, that is, <tt>S_n</tt> = <tt>H_(N-n)(W)</tt>. For example, the initial state <tt>S_0</tt> = <tt>H_N(W)</tt> and the final state <tt>S_N</tt> = <tt>H_0(W)</tt> = <tt>W</tt>, so the transfer function <tt>transit()</tt> is repsented as the invere <tt>H()</tt>. Different from the KISS pseudo-random number generation algorithm mentioned in the previous section, in the hash chain, the tag is the state itself, that is, the output and input of <tt>generate()</tt> are consistent, and <tt>Tag_n</tt> = <tt>S_n</tt>. In the following discussion, <tt>S_n</tt> is temporarily used instead of <tt>Tag_n</tt> for the convenience of expression.</t>
          <t>The encryption end sends the initial state <tt>S_0</tt> to the verification end, and maintains <tt>S_1</tt> ~ <tt>S_n</tt>, which is also the tag sequence used. The encryption end sends <tt>S_(n+1)</tt> to the verification end every time. The verification end uses the <tt>S_n</tt> maintained by itself to verify the tag correctness of the encryption end by calculating <tt>S_(n+1)</tt> = transit(<tt>S_n</tt>). As explained above, <tt>transit()</tt> is the inversion of <tt>H()</tt>. In practice, a secure hash algorithm is usually used as <tt>H()</tt>, such as SHA-256. For these hash algorithms, it is easy to calculate <tt>H()</tt>, but it is difficult to calculate the inversion of <tt>H()</tt>. Therefore, the actual operation is as follows: after receiving  <tt>S_(n+1)</tt>, the verification end calculates whether H(<tt>S_(n+1)</tt>) is  equal to <tt>S_n</tt>. If it is equal, the verification is successful, otherwise, it fails.</t>
          <t>Hash chain algorithm has high security. It can prevent backstepping and prediction well. Not only the attacker cannot backstep or predict, but also the verification end cannot do that. The disadvantage of the hash chain algorithm is that before using tags, the encryption end needs to calculate all tag sequences, and then send the last of the sequence to the verification end as the initial state. At the same time, the encryption end needs to save a complete tag sequence, although it can be deleted after each tag is used up. The cost of storage of the hash chain algorithm can not be ignored</t>
        </section>
      </section>
      <section anchor="tag-update">
        <name>Tag Update</name>
        <t>After the state machine is enabled, the source AD uses the initial state <tt>S_0</tt> to transfer to the state <tt>S_1</tt> through the algorithm box, and generates the tag <tt>Tag_1</tt>. In the subsequent state transition interval, the AER of the source AD uses the same tag, <tt>Tag_1</tt>, to add to the message sent from this AD to the destination AD. The source AD does not transfer from the state <tt>S_1</tt> to the state <tt>S_2</tt> until the transition interval passes, and starts to use tag <tt>Tag_2</tt>. In this cycle, the state sequence <tt>S_1</tt> ~ <tt>S_N</tt> and tag sequence <tt>Tag_1</tt> ~ <tt>TAG_N</tt> are experienced, in which <tt>Tag_1</tt> ~ <tt>Tag_N</tt> are used as tags in turn and added to the message by the source AER. Similarly, the destination AER uses the same state machine to calculate the tag sequence, so as to verify the tag in the message. If the source AD and the destination AD can ensure the synchronization of the state machine, it would guarantee the synchronization of the tags. So the tags can be verified correctly.</t>
        <t>Each state machine has an activation time and an Expiration Time. After the expiration time comes, the current state machine is deactivated. If a new state machine is available, the new state machine will be used and perform the same label verification process.</t>
      </section>
    </section>
    <section anchor="packet-processing-at-aer">
      <name>Packet Processing at AER</name>
      <t>SAVA-X does not require the intermediate router to recognize and process the SAVA-X option, which we will describe at <xref target="iana"/>, as long as the intermediate router correctly implements the extension header and option processing method described in IPv6 protocol  <xref target="RFC8200"/>. The intermediate router could correctly forward the packet regardless of its specific content even if it does not recognize the SAVA-X option well.</t>
      <t>The border router, AER, needs to handle the tag correctly. The AER of the source AD judges whether the IPv6 destination address belongs to the trust alliance. If no, the packet will be forwarded directly. If yes, the AER continues to judge the hierarchical relationship between the source AD and the member ADs to which the packet's destination IP address belongs. If the source AD and the destination AD are under the same sub-trust alliance, the AER would add the tag between the two ADs, otherwise add the AD_V tag.</t>
      <t>Note that the packet will not be processed at other AERs in the sub-trust alliance.</t>
      <t>At the AER of the boundary of the sub-trust alliance, the packet is classified according to the IPv6 destination address. If the destination address is not within the trust alliance, it will be forwarded directly. If the destination address belongs to this sub-trust alliance, it will be classified according to the source IP address. If the source address also belongs to this sub-trust alliance, it will be forwarded directly. If the source address does not belong to this sub-trust alliance, the AER needs to verify the sub-trust alliance tag and replace it with the AD_V tag in this sub-trust alliance for following forwarding. If the destination IP address of the packet belongs to another sub-trust alliance, it <bcp14>SHALL</bcp14> be classified according to the source address. If the source address belongs to this sub-trust alliance, verify the AD_V tag. If consistent, replace with a sub-trust alliance tag. If the source address is not in this sub-trust alliance, it will be forwarded directly. Otherwise, the packet will be discarded.</t>
      <t>The AER of the destination AD classifies the packet according to the source address of the packet to be forwarded to determine whether it originates from a member AD. If yes, enter the label check. Otherwise, it will be forwarded directly. Tag verification process: if the tag carried by the packet is consistent with the tag used by the source AD, remove the tag and forward the packet. Otherwise, the packet will be discarded.</t>
      <section anchor="port-classification">
        <name>Port Classification</name>
        <t>In order to classify packets correctly to complete tag addition, inspection, and packet forwarding, it is necessary to classify the ports (interfaces) of AER. Any connected port of AER must belong to and only belong to the following types of ports:</t>
        <ul spacing="normal">
          <li>
            <t>Ingress Port: Connect to the port of the non-SAVA-X router in this AD. Generally connected to IGP router in the domain.</t>
          </li>
          <li>
            <t>Egress Port:  Connect to other AD ports.</t>
          </li>
          <li>
            <t>Trust Port:   Connect to the port of the SAVA-X router in this AD.</t>
          </li>
        </ul>
      </section>
      <section anchor="source-address-validation">
        <name>Source Address Validation</name>
        <t>In SAVA-X, AER must check the source address of the packet. Only the packet passing the check will be subject to the  <xref target="pkt-clsscify"/> step, and the packet using the fake source IP address will be discarded. The source address is checked using the ingress filtering method. AER only checks the source address according to the following three rules:</t>
        <ul spacing="normal">
          <li>
            <t>The packet entering an AER from the Ingress Port <bcp14>SHALL</bcp14> only carry the source address prefix belonging to this AD.</t>
          </li>
          <li>
            <t>The packet entering an AER from the Egress Port <bcp14>SHALL NOT</bcp14> carry the source address prefix belonging to this AD.</t>
          </li>
          <li>
            <t>Packets entering an AER from Trust Port are not checked.</t>
          </li>
        </ul>
        <t>The prefix of IP address owned by one AD <bcp14>SHALL</bcp14> be configured by the administrator or obtained from the control plane and deployed to AER by ACS of this AD.</t>
      </section>
      <section anchor="pkt-clsscify">
        <name>Packet Classification</name>
        <t>It <bcp14>SHALL</bcp14> be classified after the packet entering an AER passes the source address validation. There are three types of packets: packets that <bcp14>SHOULD</bcp14> be tagged, packets that <bcp14>SHOULD</bcp14> check tags and other messages. The judgment rules of the three packets are as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Packets entering AER from Ingress Port. If the source address belongs to this AD and the IPv6 destination address belongs to another AD in the same sub-trust alliance, the tag must be added. If the source IP address belongs to another AD in the same sub-trust alliance and the IPv6 destination address belongs to another sub-trust alliance, the  tag must be verified and replaced with the sub-trust alliance tag. Other packets are forwarded directly.</t>
          </li>
          <li>
            <t>Packets entering AER from the Egress Port. The tag must be checked if the source address belongs to another AD in the same sub-trust alliance and the IPv6 destination address belongs to this AD. If the source address belongs to another sub-trust alliance and the IPv6 destination address belongs to another AD in the same sub-trust alliance, the tag must be checked and replaced. And other packets can be forwarded directly.</t>
          </li>
          <li>
            <t>Packets entering AER from Trust Port. These packets <bcp14>SHOULD</bcp14> be forwarded directly.</t>
          </li>
        </ul>
        <t>The relationship between IP address and ADs <bcp14>SHALL</bcp14> be obtained from the control plane and deployed to the AER by the ACS of the AD. When the SAVA-X option of the packet received from the progress port carries the active AD number, you can skip the "mapping from address to AD number" process and directly use the AD number carried in the message.</t>
      </section>
      <section anchor="tag-addition">
        <name>Tag Addition</name>
        <t>AER <bcp14>SHOULD</bcp14> add a destination option header and add the SAVA-X option into the packet according to the requirements of IETF <xref target="RFC8200"/>.</t>
        <t>According to <xref target="RFC8200"/>, the destination option header <bcp14>SHOULD</bcp14> be filled so that its length is an integer multiple of 8 bytes, including the Next Hader and Hdr Ext Len fields of the destination option header, the Next Header and Payload Length fields of the IPv6 packet header, and the upper protocol header (such as TCP, UDP, etc.). If it is necessary, AER <bcp14>SHOULD</bcp14> recalculate the Checksum field.</t>
      </section>
      <section anchor="tag-verify">
        <name>Tag Verification</name>
        <t>AER will process the first option with Option Type equal to the binary code of <tt>00111011</tt> in the destination header. It is detailed described at <xref target="iana"/>.</t>
        <ol spacing="normal" type="1"><li>
            <t>If the packet does not contain a destination option header or SAVA-X option. the packet <bcp14>SHOULD</bcp14> be discarded.</t>
          </li>
          <li>
            <t>If the packet contains the SAVA-X option but the parameters or tag are incorrect, the packet <bcp14>SHOULD</bcp14> be discarded.</t>
          </li>
          <li>
            <t>If the packet contains the SAVA-X option, and the parameters and tag are correct, AER must replace the tag or remove the tag when needed before forwarding the message.</t>
          </li>
        </ol>
        <t>In the following scenarios, the tag needs to be removed. If there are only the SAVA-X option, Pad1, and PadN options in the destination option header of the message, AER <bcp14>SHOULD</bcp14> remove the whole destination option header. If there are other options besides the SAVA-X option, Pad1 and PadN option in the destination option header, AER <bcp14>SHOULD</bcp14> remove the SAVA-X option and adjust the alignment of other options according to the relevant protocols of IPv6. In order to remove the SAVA-X option, the destination option header may also be filled, or some Pad1 and PadN may be removed, to make its length multiple of 8 bytes. At the same time, the Next Header field and Payload Length field deployed in the IPv6 message header, and the Checksum field of the upper protocol header (such as TCP, UDP, etc.) <bcp14>SHALL</bcp14> be rewritten
as necessary.</t>
      </section>
      <section anchor="tag-replacement">
        <name>Tag Replacement</name>
        <t>The tag needs to be replaced when the packet passes through different sub-trust alliances. Tag replacement needs to be done on the AER of the boundary address domain of the sub-trust alliance. This feature is not necessary to realize the AER of each non-boundary address domain in the sub-trust alliance.</t>
        <t>When the packet arrives at the AER of the sub-trust alliance boundary, it is classified according to the destination address.</t>
        <ol spacing="normal" type="1"><li>
            <t>If the destination address does not belong to the trust alliance, it will be forwarded directly.</t>
          </li>
          <li>
            <t>If the destination address belongs to this sub-trust alliance, it will be classified according to the source address of the packet.
            </t>
            <ul spacing="normal">
              <li>
                <t>If the source address also belongs to this sub-trust alliance, the packet will be forwarded directly.</t>
              </li>
              <li>
                <t>If the source address does not belong to this sub-trust alliance, AER should verify the sub-trust alliance tag and replace it with the AD_V tag in this sub-trust alliance for forwarding.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If the destination address of the packet belongs to another sub-trust alliance, it shall be classified according to the source address.
            </t>
            <ul spacing="normal">
              <li>
                <t>If the source address belongs to this sub-trust alliance, AER should verify the AD_V tag and replace the tag with the sub-trust alliance tag when it is consistent.</t>
              </li>
              <li>
                <t>If the source address is not in this sub-trust alliance, it will be forwarded directly.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Otherwise, the packet will be discarded.</t>
          </li>
        </ol>
        <t>Alliance tag will be used when the packet crosses the upper AD which is at the higher level of source AD and destination AD. Alliance tag is the tag maintained between the source AD corresponding to the AD in the parent AD and the destination AD corresponding to the address domain in the parent AD.</t>
      </section>
    </section>
    <section anchor="packet-signature">
      <name>Packet Signature</name>
      <t>It is difficult to accurately synchronize time among the trust  alliance members. So we propose a shared time slice, which means that there are two tags affecting at the same time in a period of time. But it may suffer from a replay attack. Therefore, a packet signature mechanism is proposed to prevent replay attacks and conceal the original tag.</t>
      <t>The tag is time-dependent. The state machine triggers state transition by time and generates a new tag. In a short period of time, all data packets are labeled with the same tag. Moreover, due to the subtle differences in time synchronization, both old and new tags can be used for this short period of time, so attackers can reuse tags for replay attacks by simply copying tags.</t>
      <t>The packet signature mechanism joins the 8-bit part of the payload in the packet and the tags generated by the state machine. Then it calculates the hash value with the parameters above to achieve the effect of packet-by-packet signature and resist the attacker's reuse of tags. Its processing flow is shown below.</t>
      <figure anchor="fig-pkt-sig">
        <name>Format of the Packet-by-Packet signature</name>
        <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Packet-by-Packet Signature                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Level       |    Length     |           Reserved          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <dl newline="true">
        <dt>Packet-by-Packet Signature:</dt>
        <dd>
          <t>The hash value of the original tag, source address, destination address, first 8-bit of payload, credible level, and credible prefix length.</t>
        </dd>
        <dt>Level:</dt>
        <dd>
          <t>8-bit of credible level.</t>
        </dd>
        <dt>Length:</dt>
        <dd>
          <t>8-bit of credible prefix length.</t>
        </dd>
        <dt>Reserved:</dt>
        <dd>
          <t>16-bit of reserved field. 0 will be padded.</t>
        </dd>
      </dl>
      <t>Firstly, it takes the source address, destination address and the first 8-bit of the data part of the data packet from the data packet, joins them in the way of <tt>(src-ip, dst-ip, first 8-bit of payload)</tt>, and then joins the tag generated by the state machine at this time, the credible level of the SAVA architecture adopted by this AD and the length of the credible prefix to hash the concatenated string with the hash algorithm to get a new message digest. Then it is reduced to a 32-bit packet signature by clipping and folding algorithm. The AER adds the 32-bit packet signature together with the 2-bit credible level and the 7-bit credible prefix length to the SAVA-X option, fills the option into 64-bit, and forwards it. At the AER of the destination AD, the same splicing and the same hash operation are performed to verify whether the generated string is consistent with the signature of the data packet. If they are consistent, they are forwarded. Otherwise, it is considered that the source address is forged and the data packet is discarded.</t>
      <t>Due to the problem of time synchronization, when both old and new tags are valid, both old and new tags need to be verified. As long as one of them passes the verification, the packet should be forwarded. The original tag generated by the state machine will not appear in the packet. The attackers do not know the tag generated by the state machine at this time, so they can not forge the packet signature in the same way, which ensures the security of the data communication plane.</t>
    </section>
    <section anchor="mtu-consideration">
      <name>MTU Consideration</name>
      <t>As the AER adds an option to the packet, the length of this packet is increasing, causing the MTU problem. This problem could taken  place in source AER or the link between source AER and destination AER. If it occurs on the source AER, the source AER returns the ICMP message of "packet too big" to the source host and informs the host to reduce the packet size. Otherwise, if it occurs on other links from the source AER to the destination AER, which means the packet size  exceeds the MTU of other links from the source AER to the destination AER after adding the tag, the corresponding router will return the ICMP message of "packet too big" to the source host. However, after the source host adjusts its own MTU, the problem <bcp14>MAY</bcp14> still exist because the root cause is AER causing packet size to exceed MTU, and the host does not know it. This problem can be solved by the following two methods. First, the MTU of the external link is set to 1280 at the source AER as this is the minimum value of MTU under IPv6. Then the MTU of the source host end will be set to the minimum value of MTU subtracting the maximum value of the SAVA-X option. This method can solve the problem, but it greatly limits the packet size and wastes the available MTU. The second is to monitor the ICMP message of "packet too big" sent to the host in the domain at the source AER. If such a message is monitored, the expected MTU value in the message minus the maximum value of the SAVA-X option will be forwarded. This method makes good use of MTU value to a certain extent, but it causes a large monitoring cost.</t>
    </section>
    <section anchor="security-consideration">
      <name>Security Consideration</name>
      <t>TBD.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>SAVA-X is designed for IPv6-enabled networks. It takes a destination option, SAVA-X option, and header to carry the Tag. We recommend using  <tt>00111011</tt>, i.e. <tt>59</tt>, for the SAVA-X option. Here we give our SAVA-X option format in use.</t>
      <figure anchor="fig-savax-opt">
        <name>Format of SAVA-X option.</name>
        <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Option Type  | Opt Data Len  |Tag Len|AI Type|   Reserved    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                              TAG                              ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                     Additional Information                    ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <dl newline="true">
        <dt>Option Type:</dt>
        <dd>
          <t>8-bit field. The destination option type of SAVA-X = 59.</t>
        </dd>
        <dt>Opt Data Len:</dt>
        <dd>
          <t>8-bit field. The bytes length of the SAVA-X option. Its value is <tt>2 + LenOfAI + (TagLen + 1)</tt>, where LenOfAI is 2 when AI Type is 1, or 4 when AI Type is 2, or 0 default.</t>
        </dd>
        <dt>Tag Len:</dt>
        <dd>
          <t>4-bit field. The bytes length of TAG equals to <tt>(Tag Len + 1) * 8</tt>, e.g. if Tag Len = 7, it means SAVA-X uses 64 bits long TAG. It guarantees the length of TAG would be an integral multiple of 8 bits. The maximum length of TAG is 128 bits and the minimum length of TAG is 32 bits.</t>
        </dd>
        <dt>AI Type:</dt>
        <dd>
          <t>4-bit field. The type of Additional Information. 0 for no Additional Information, 1 for 16-bit long Additional Information, and 2 for 32-bit long Additional Information. Others are not assigned.</t>
        </dd>
        <dt>Reserved:</dt>
        <dd>
          <t>These bits are not used now and must be zero.</t>
        </dd>
        <dt>TAG:</dt>
        <dd>
          <t>Variable-length field The actual tag, and its length is determined by the Tag Len field.</t>
        </dd>
        <dt>Additional Information:</dt>
        <dd>
          <t>As defined in the AI Type field.</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC1760">
        <front>
          <title>The S/KEY One-Time Password System</title>
          <author fullname="N. Haller" initials="N." surname="Haller"/>
          <date month="February" year="1995"/>
          <abstract>
            <t>This document describes the S/KEY* One-Time Password system as released for public use by Bellcore. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="1760"/>
        <seriesInfo name="DOI" value="10.17487/RFC1760"/>
      </reference>
      <reference anchor="RFC5210">
        <front>
          <title>A Source Address Validation Architecture (SAVA) Testbed and Deployment Experience</title>
          <author fullname="J. Wu" initials="J." surname="Wu"/>
          <author fullname="J. Bi" initials="J." surname="Bi"/>
          <author fullname="X. Li" initials="X." surname="Li"/>
          <author fullname="G. Ren" initials="G." surname="Ren"/>
          <author fullname="K. Xu" initials="K." surname="Xu"/>
          <author fullname="M. Williams" initials="M." surname="Williams"/>
          <date month="June" year="2008"/>
          <abstract>
            <t>Because the Internet forwards packets according to the IP destination address, packet forwarding typically takes place without inspection of the source address and malicious attacks have been launched using spoofed source addresses. In an effort to enhance the Internet with IP source address validation, a prototype implementation of the IP Source Address Validation Architecture (SAVA) was created and an evaluation was conducted on an IPv6 network. This document reports on the prototype implementation and the test results, as well as the lessons and insights gained from experimentation. This memo defines an Experimental Protocol for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5210"/>
        <seriesInfo name="DOI" value="10.17487/RFC5210"/>
      </reference>
      <reference anchor="RFC8200">
        <front>
          <title>Internet Protocol, Version 6 (IPv6) Specification</title>
          <author fullname="S. Deering" initials="S." surname="Deering"/>
          <author fullname="R. Hinden" initials="R." surname="Hinden"/>
          <date month="July" year="2017"/>
          <abstract>
            <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="86"/>
        <seriesInfo name="RFC" value="8200"/>
        <seriesInfo name="DOI" value="10.17487/RFC8200"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 387?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
+zn3DkCwuYq+ScI40fZAYyfp1MI5QjWyFcWMSNeWsrlEX5HKLaN1tmXdCe+m
GZu+sANG+q7D0K8pKsWRMGzoh9hAeKgxJxepwsRmqdznZg4O2mwOTsMikLBd
9RyULoAJjm7VFhlpKPWXk9NTtf1W6yUm2AxJAKYKJjsbwdiAOM4JXyU0AmZN
JWWpFURA5K9CDL3CWQQtG5wRTpc0kXKwyQDAHQI8VKuqxb0EWAX4jLp2eX2n
R+k1YYPXAK0z3BVgq/enLzHxkEHMW+fJpAAV8uWfBi1ArK5AU+0f3L5z9/De
/QfDFTzdPjy4c/twb29v+A6e7h7sH9y/f3jwYJjC073Du3duH+x/xX0RtO2d
92h5UR+D81diTgHmoWRWAh0OH9y/d/hg7/DB6x++wnZxi4beXVE7aPPl1S0C
hd6u1L8/VNurr7/evw0KWZ6++Wb/nn/6+uu7O9S2gRGSL9/dSr9SCOV28803
tw/407uHaWKabYR3h6eDaLitS3V1a3Xr3VeDj4Ff8DY35sED6xvg6h48OLIy
18sTxBXoHJxIDB4wCFu289NzSqBAMK6vlhTaEAtvn1+hDVrhX+/wr7TfRMCY
54zn8101nmIul1L6TotVZejqQiCi61lFGePQAvZrziH77LkZCje1dcAiHQjJ
4UnPScFR1A/sO9MZQCUJwwSkr8kXOhQkILJgDBesbuF4+Pe7851IqtFJ6QtR
OZuQTKoLSQzGugWxc/rLHtLcM3HAwQH7Wt5FPAK1MKnUN6LQKqknOeCvzjGR
CCFXKrtNsZgydJi7vXSidlHlGY35C5NNvbc8nukLZKJtZkzQnqA3tv+wvQo/
7QB3g7Cu1AKDLczyAjDvdF2hwCI7r40DrY+r8n//878aStIBvKVmW4zKFeRB
jLr4xxDaY74a9Yk0v8Rosql2d3dljjScQ/2Tl2EC7XROagjAKtCgAgOVvgWO
EEoU6Xfigo5QnURIZwyLKKEMTBIDTkumUVmoWQUNbcj8qQrahrkFxrekbNJV
WrB7hAmxZuVzHSRDQEpN+y52xxKUcpE3ADU7m5mdAj2TZKphAOShqpb9xQlu
UjZ6uWS7FnhOMF2Ws/OYTDAL6vY/yBh5kGmHk2muS/RZLkgw0PA/RZ/gEfkE
gbm3hkMQRVGy9x5GgEWdRTli1MpeQ6G3jPwOVFKnf/qLXmGYQclp3Hb++JEE
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
AAA=

-->

</rfc>
