<?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.6.17 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-xu-savax-data-03" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.2 -->
  <front>
    <title abbrev="SAVA-X-Data">Data Plane of Inter-Domain Source Address Validation Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-xu-savax-data-03"/>
    <author initials="K." surname="Xu" fullname="Ke Xu">
      <organization abbrev="Tsinghua University">Computer Science, Tsinghua University</organization>
      <address>
        <postal>
          <street>Qinghuayuan street, Haidian District</street>
          <city>Beijing</city>
          <code>100084</code>
          <country>China</country>
        </postal>
        <email>xuke@tsinghua.edu.cn</email>
      </address>
    </author>
    <author initials="J." surname="Wu" fullname="Jianping Wu">
      <organization abbrev="Tsinghua University">Computer Science, Tsinghua University</organization>
      <address>
        <postal>
          <street>Qinghuayuan street, Haidian District</street>
          <city>Beijing</city>
          <code>100084</code>
          <country>China</country>
        </postal>
        <email>jianping@cernet.edu.cn</email>
      </address>
    </author>
    <author initials="X." surname="Wang" fullname="Xiaoliang Wang">
      <organization abbrev="Tsinghua University">Computer Science, Tsinghua University</organization>
      <address>
        <postal>
          <street>Qinghuayuan street, Haidian District</street>
          <city>Beijing</city>
          <code>100084</code>
          <country>China</country>
        </postal>
        <email>wangxiaoliang0623@foxmail.com</email>
      </address>
    </author>
    <author initials="Y." surname="Guo" fullname="Yangfei Guo">
      <organization abbrev="Tsinghua University">Institute for Network Sciences and Cyberspace, Tsinghua University</organization>
      <address>
        <postal>
          <street>Qinghuayuan street, Haidian District</street>
          <city>Beijing</city>
          <code>100084</code>
          <country>China</country>
        </postal>
        <email>guoyangfei@zgclab.edu.cn</email>
      </address>
    </author>
    <date year="2022" month="November" day="21"/>
    <area>Operations and Management Area</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <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. The inter-domain source address validation architecture is an effort to enhance the Internet by using state machine to generate consistent tags. When communicating between two end hosts at different ADs of IPv6 network, tags will be added to the packets to identify the authenticity of the IPv6 source address.</t>
      <t>This memo focus on the data plane of the SAVA-X mechanism.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The Inter-Domain Source Address Validation (SAVA-X) mechanism establishes a trust alliance among Address Domains (AD), maintains a one-to-one state machine among ADs, generates a consistent tag, and deploys the tag to the ADs' border router (AER). The AER of the source AD adds a tag to identify the identity of the AD to the packet originating from one AD and sinking in another AD. The AER of the destination AD verifies the source address by validating the correctness of the tag to determine whether it is a packet with a forged source address.</t>
      <t>In the process of packet forwarding, if the source address and the destination address of this packet both are addresses in the trust alliance, however the tag is not added or incorrectly added, AER of the destination AD determines that the source address is forged and directly discards this packet. The destination AD forwards the packet directly for packets whose source address is an address outside the trust alliance.</t>
      <t>This document mainly studies the relevant specifications of the data plane of the inter-domain source address validation architecture mechanism between ADs, which will protect IPv6 networks from being forged source address. You could 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>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119, BCP 14 <xref target="RFC2119"/> and indicate requirement levels for compliant CoAP implementations.</t>
    </section>
    <section anchor="terminology-and-abbreviation">
      <name>Terminology and Abbreviation</name>
      <table>
        <thead>
          <tr>
            <th align="left">Abbreviation</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">AD</td>
            <td align="left">Address Domain, the unit of a trust alliance, which is an address set consisting of all IPv6 addresses corresponding to an IPv6 address prefix.</td>
          </tr>
          <tr>
            <td align="left">TA</td>
            <td align="left">Trust Alliance, the IPv6 network that uses the SAVA-X mechanism.</td>
          </tr>
          <tr>
            <td align="left">ACS</td>
            <td align="left">AD Control Server, the server that matains state machine with other ACS and distribute information to AER.</td>
          </tr>
          <tr>
            <td align="left">AER</td>
            <td align="left">AD border router, which is placed at the boundary of an AD of STA.</td>
          </tr>
          <tr>
            <td align="left">ADID</td>
            <td align="left">The identity of an AD.</td>
          </tr>
          <tr>
            <td align="left">ADID_Rec</td>
            <td align="left">The record of a number of an AD.</td>
          </tr>
          <tr>
            <td align="left">ARI_Rec</td>
            <td align="left">The record with relavent information of an AD or STA.</td>
          </tr>
          <tr>
            <td align="left">API_Rec</td>
            <td align="left">The record of prefix of an AD or STA.</td>
          </tr>
          <tr>
            <td align="left">SM</td>
            <td align="left">State Machine, which is maintained by a pair of ACS to generate tags.</td>
          </tr>
          <tr>
            <td align="left">Tag</td>
            <td align="left">The authentic identification of source address of a packet.</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="state-machine-mechanism">
      <name>State Machine Mechanism</name>
      <t>In SAVA-X, 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>
        <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 transite 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>). Algorithm box (A-Box) is the core of 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 trig 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 reprents the progress of calculating the current tag from 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 stringis 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 ulong a = 698769069UL;
   ulong 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</tt> = (123456789, 362436000, 521288629, 7654321). 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 pseudo-random number generation algorithm is mainly long cycle and pretty distribution, however, without or little consideration of safety factors. The backstepping security and prediction ability of KISS algorithm have not been proved.</t>
        </section>
        <section anchor="hash-chain-algorithm">
          <name>Hash Chain Algorithm</name>
          <t>For the design of 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 can't backstep or predict, but also the verification end cannot do that. The disadvantage of 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 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 performs 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 described 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 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 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 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 packet belongs to other sub-trust alliance, it SHALL 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 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 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>Ingress Port: Connect to the port of non-SAVA-X router in this AD. Generally connected to IGP router in the domain.</li>
          <li>Egress Port:  Connect to other AD ports.</li>
          <li>Trust Port:   Connect to the port of SAVA-X router in this AD.</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>The packet entering an AER from the Ingress Port SHALL only carry the source address prefix belonging to this AD.</li>
          <li>The packet entering an AER from the Egress Port SHALL NOT carry the source address prefix belonging to this AD.</li>
          <li>Packets entering an AER from Trust Port are not checked.</li>
        </ul>
        <t>The prefix of IP address owned by one AD SHALL 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 SHALL be classified after the packet entering an AER passes the source address validation. There are three types of packets: packets that SHOULD be taged, packets that SHOULD check tags, and other messages. The judgment rules of the three packets are as follows:</t>
        <ul spacing="normal">
          <li>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, 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 alliances, the  tag must be verified and replaced with the sub-trust alliance tag. Other packets are forwarded directly.</li>
          <li>Packets entering AER from the Egress Port. 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 other 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.</li>
          <li>Packets entering AER from Trust Port. These packets SHOULD be forwarded directly.</li>
        </ul>
        <t>The relationship between IP address and ADs SHALL 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 SHOULD add destination option header and add 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 SHOULD 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 SHOULD recalculate the Checksum field.</t>
      </section>
      <section anchor="tag-verify">
        <name>Tag Verification</name>
        <t>AER will process the first option with Option Type equals to the binary code of <tt>00111011</tt> in the destination header. We would talk more about that at <xref target="iana"/>.</t>
        <ol spacing="normal" type="1"><li>If the packet does not contain destination option header or SAVA-X option. the packet SHOULD be discarded.</li>
          <li>If the packet contains SAVA-X option but the parameters or tag are incorrect, the packet SHOULD be discarded.</li>
          <li>If the packet contains 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.</li>
        </ol>
        <t>In the following scenarios, the tag needs to be removed. If there are only SAVA-X option, Pad1 and PadN options in the destination option header of the message, AER SHOULD remove the whole destination option header. If there are other options besides SAVA-X option, Pad1 and PadN option in the destination option header, AER SHOULD remove SAVA-X option and adjust the alignment of other options according to the relevant protocols of IPv6. In order to removing the sava-x option, the destination option header may also be filled, or some Pad1 and PadN may be removed, to make its length be 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.) SHALL be rewritten
as necessary.</t>
      </section>
      <section anchor="tag-replacement">
        <name>Tag Replacement</name>
        <t>Tag needs to be replaced when packet pass through different sub-trust alliance. 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 on the AER of each non-boundary address domain in the sub-trust alliance.</t>
        <t>When packet is arrieved at the AER of the sub-trust alliance boundary, it is classified according to the destination address.</t>
        <ol spacing="normal" type="1"><li>If the destination address does not belong to the trust alliance, it will be forwarded directly.</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>If the source address also belongs to this sub-trust alliance, the packet will be forwarded directly.</li>
              <li>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.</li>
            </ul>
          </li>
          <li>
            <t>If the destination address of the packet belongs to other sub-trust alliance, it shall be classified according to the source address.
            </t>
            <ul spacing="normal">
              <li>If the source address belongs to this sub-trust alliance, AER should verify the AD_V tag and replace the tag with sub-trust alliance tag when it is consistent.</li>
              <li>If the source address is not in this sub-trust alliance, it will be forwarded directly.</li>
            </ul>
          </li>
          <li>Otherwise, the packet will be discarded.</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 effecting at the same time in a period of time. But it may suffer from replay attack. Therefore, a packet signature mechanism is proposed to prevent replay attack and concel the original tag.</t>
      <t>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 attack by simply copying tags.</t>
      <t>The packet signature mechanism joins 8-bit part of the payload in the packet and the tags generated by the state machine. And then it calculates hash value with parameters above to achieve the effect of packet by packet signature and resist the attackers reuse of tags. Its processing flow is shown below.</t>
      <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                |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |Lev|Len|                   Reserved                            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      <dl>
        <dt>Packet by Packet Signature:</dt>
        <dd>
          <t>Hash value of original tag, source address and destination address and first 8-bit of payload, credible level and credible prefix length.</t>
        </dd>
        <dt>Lev:</dt>
        <dd>
          <t>2-bit of credible level.</t>
        </dd>
        <dt>Len:</dt>
        <dd>
          <t>7-bit of credible prefix length.</t>
        </dd>
        <dt>Reserved:</dt>
        <dd>
          <t>23-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 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 does 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. Othewise, 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 MAY still exists because the root cause is AER causing packet size exceeding 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 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 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>This present memo doesnot find any security problem.</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, header to carry the Tag. We recommend to use  <tt>00111011</tt>, i.e. <tt>59</tt>, for SAVA-X option. Here we give our SAVA-X option format in use.</t>
      <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>
      <dl>
        <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 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>Reserverd:</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, its length is determined by Tag Len field.</t>
        </dd>
        <dt>Additional Information:</dt>
        <dd>
          <t>As defined in AI Type field.</t>
        </dd>
      </dl>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Much of the content of this document is the expansion of the IETF <xref target="RFC5210"/> in inter-domain level. Thanks to the effort of pioneers.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC1760" target="https://www.rfc-editor.org/info/rfc1760" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1760.xml">
        <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="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <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="RFC5210" target="https://www.rfc-editor.org/info/rfc5210" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5210.xml">
        <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" target="https://www.rfc-editor.org/info/rfc8200" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml">
        <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"/>
          <author>
            <organization>RFC Publisher</organization>
          </author>
          <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>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
