<?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.2 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-xu-savax-data-05" category="std" consensus="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="savax-data">Data Plane of Inter-Domain Source Address Validation Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-xu-savax-data-05"/>
    <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="J." surname="Wu" fullname="Jianping Wu">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>jianping@cernet.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>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>guoyangfei@zgclab.edu.cn</email>
      </address>
    </author>
    <date year="2023" month="November" day="22"/>
    <abstract>
      <?line 53?>

<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 machines to generate consistent tags. When communicating between two end hosts at different ADs of the IPv6 network, tags will be added 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 59?>

<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 belong to the trust alliance, but the tag is not added or incorrectly added, the 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. 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>
        <table>
          <thead>
            <tr>
              <th align="left">Abbreviation</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ACS</td>
              <td align="left">AD Control Server. The server maintains the state machine with other ACS and distributes information to AER.</td>
            </tr>
            <tr>
              <td align="left">AD</td>
              <td align="left">Address Domain. The unit of a trust alliance. It is an address set consisting of all IPv6 addresses corresponding to an IPv6 address prefix.</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">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">API_Rec</td>
              <td align="left">The record of the prefix of an AD or STA.</td>
            </tr>
            <tr>
              <td align="left">ARI_Rec</td>
              <td align="left">The record with relevant information 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">TA</td>
              <td align="left">Trust Alliance. The IPv6 network that uses the SAVA-X mechanism.</td>
            </tr>
            <tr>
              <td align="left">Tag</td>
              <td align="left">The authentic identification of the source address of a packet.</td>
            </tr>
          </tbody>
        </table>
      </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>
        <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>
        <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>
        <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 359?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9092XbbSHbv/Ioa+eSM1CY1kmzLtrrdabblbivjLZbcnklO
YoFAkaw2CDAoQBK9zMlv5C3fkk/Jl+RutQAE5aVn5iGeM24CqOXW3e+tW+XR
aDQY1KbO9ZHaOk7qRL3Ik0KrcqpOilpXo+NykZhCnZZNlWo1zrJKW6t+SXKT
JbUpCzWu0rmpdVo3ld4aJJNJpS9gLJtcJFcjaJNsDdKk1rOyWh0pW2eDgVlW
R6quGlsf7O3d3zsYZGVaJAuAIKuSaT26akah92jvzuCGss1kYayF+erVEhqe
PDr7SakbKsltCZOZItNLDX8V9dZQbZ2Mf4T/lBX8enn209agaBYTXR0NYDx9
NEjLwurCNpaA0AOA9hZMkVQ6OVLjl4/G8HBZVm9nVdksj9QzXeOTeg1/mWKm
fsbXAxglg6cj1dhRYlNjBktzpBTClCYFvNUwYJWs1LaZApS5Wmm7gyDNEztX
c13pQV2mR/h6YMuqrvTU0hOOkOlp0uS1VXXJDVYL/30wSJp6XsJqRgOlGG1/
1OpPDTyVFQB0ZgGueZOoV4W50JU19Qo+pWVT1EiBh3NTJPBCA1nzI3XVvNU/
1NJlV2fNblpEI/+TSYolrvr1V47/qwzwQ6qrQtfrM/zJJGUOjWAK+OvrJrmE
nldunL3Dg1s/TMsr/LSblotorj/D56k26uemdBP9y7wsZrMmKdKmUE+SSVkl
NXDqNZPNmnLF4/zwbpbmycStaVCU1QJk4gJ4TKmXPz3cv3u4Jz/vHOy7n/eA
6Y9ACIppaD4YjEYjlUxsXSVpPRj8qNMEWaieaxZDQJ2C9pdJlVm1TNK3Grgj
SdOyQi5EPqGmL4B1bA3gkmQmLKxD6eAGoA6rpUmBLVeqTt4C0y3zBKT70gBn
NbUyhV2CQOMYoAdwZMviLyOqpMjUAlRAasoGnuoaJrDA2hdaTbQuVJ40RTrX
GcgBzmaXZTmFp/Yo2u6qMxjbkJ7JWM90JroIeiaJ9IwyCIPSU1hSjavXxRxI
2EHYZOXmr0HwAWAYoNAkVTNd6ApfojIwtgbFAZiYAUSv5wA/sM2iKQBDNXaf
gAbAVYEegIkyNS8tYr9WmZlOQZKh7/jYOlSdvLg4VAUrjSENCngFBTChVQEW
hFiOivBoUHGZ6Yreo3jjYwo83xqzjZrdweBsDmhY6EUJlE2BXQCEgpqj3kSS
sh7HN6fjX8ajP0HjFPBk7GKXOW5hsizXwH43EGtVmTVEdRxaf67+3+axd8Lg
CngwmeTGzgGkhDU96kBDJEoWIHF+IB7equ3x8c5Q4e+anhNYix7V5Qj+06af
G+AYGNuREdu3KTkkHgWrkJcrSyiAlw710Pf3CkQ905UCbQ7LhPkfvdxhfoRf
HbYfHyPWaS08SItg/BCIBa1bJAZFY2YkkwD2tCoXuDQaEyAE/iSrAihOihI6
VfBlDY5YqqEjaEQzNdr2iSYwvRMalPM5snhVgdgU+FXGk2VkGpa+QJxezjXN
bWoSLQc5KgR4AimbrYkvsNAJs9uyKlMZfE3TDJXZqEG6K3PfCEjj9BwQCoCY
6LwMiq7NUkM1AaXl1gUdAZEia2BwTSEIAGVHL4dMpY3Y9VhB/CZ1H/Qwh+CE
uMzI8JmxKWnoCHymZWcKr8ojLvGjwEevHC5B1/TNnkTYasB8Z7oHL05FgHvV
LFAuULxgAls3meOeSuf6IoFvqPGBqVKC0TPKuib5Gm0dNINTpSS9l3OTzlk5
Agth45bytCwsE01y08uC6lRr9f69WNWPHwl3i7JChIMeyQFREzRoOOyuOoFV
1mbZ5KQxiKyxYiFl7VQKrQFo2yzRaeRPwucirsBArGSEftbMgMC43BMgHLRd
lH6UZLnMBbXkHoKrmZt32sFQZCgs7xJncbuoN0WsxEEGpklqckPACxHhZ6b0
fzRmSZTO9AUIzBLeTVaRmVokRQN9EcqKZRDQCpR5J1SHodMSupFphAf0MBZL
1ORfQvtfS2iYr3bJrjwsiwvUjzg8Tnisp6Yw9Mxm5q1eobsNwrD19NXpGfrv
+F/17Dn9fvnon1+dvHx0jL9PH4+fPPE/BtLi9PHzV0+Ow6/Q8+Hzp08fPTvm
zvBWtV4Ntp6O/7zFNNx6/uLs5Pmz8ZMtRnYsNRAYIC4msv5lpRHXiR2AUKeV
mcAD9Pnx4Yv/+e/928CNvwN2PNjfvw/syA/39u/ehgfQsQXPVqIU8iOgdTUA
9tBJRTYAZCFNlkDaHAQkscrOy8uC4gVA5zf/ipj5tyP13SRd7t/+Xl7gglsv
Hc5aLwln62/WOjMSe171TOOx2XrfwXQb3vGfW88O79HL7/4xR5M02r/3j98j
C91QZ6SPy7ycrQh/YwoyTcK+yofWs/oALIZ0WfLT4MOo9efm0ajvD7QbPzz9
gMoZOBZcoRx0SwWGlvW3pd+Rf7KmPdhWigV/eCqGARx6A8YJ1I3399FHK1F7
7CJwMN+HjjPEM4L7WaMu6PpPpMbaFsCC9hHvB3VTyQEnqVLvarMXAI544QIG
GCBuAhoLJPNql2A6QajOOr5NUpBrIg3evNSpNAK7BfLLwHKo3Wn+6CUhtuVx
OfVvJPjIlJhaUNioD8OU+OP0bMxDvTjBibvzsheC8Ee9qtDr5ck6uEQvb/5i
8nSHgBFOn35Qp0Tup85YePAdU7CyRd/JEAKQC+JQg+ILGOtsjIAQUceeqGed
yIFdD3Lqe/13HCeZ8YJ8xOD8Umdq+oM3opM4Jx9QRbcWpp66Oci/44mHPfwe
jDrgAADN4sUOveHkULFIZtp5aOg5/gX/DG6KSKrWn5uj3tftj/AZBP/0TaEA
mfgHBG0GzIWP49GP5ZV/nYBgEDYUfTx9s13c3N9BtuAR2/rhe3nbed35CJ9/
K/B932XoyAe5rtk13y42fLv5iemBn5LZm2Lj2KE/E/D9kbpx+lRR/vDB1mk/
f+xufRwM6NvR4EidA83OiSvOhRTnIIUgvJYiN4xXmoqcFWY3bFnoK/fo4tmn
CrUZJinA0UFXAwCn4WkB58iTjhcz5z+BTzZzEsCjOe5wgRkDB3zsYYORx/kM
Irh6vlDAVjgH8xfMMAaLFD45zexkgQZfGF7UqV9M0AcsDtSNszDx6qWDFcdr
CV6si5mmZZ6Xlwh0GNV1Qz9VOoGahV6sWhK/hgmALsaCvfzLEpRBVdsjCkuN
BMtBbKZNwamgc3m5vXM+jIj3wDXeJuztfMu6ApQsgCXDhTHc6mGQdeXoqffA
f5BB+1axTXTYcXOk6PY7jRdzIiG4FdSJcw3GueEAxTMEoRizBzSKhEQQUWRR
G8fgBjxjjR4iSSp5a5caDC/819RolYEmaDqJPOhG6yt4RFYFVTXDfPTRGsfQ
hy4F0P7hzNTVvZXeJDpFbX8Lg//s1U08qO0dNk3yFAMon1yI+I5mWOPhXTQx
QFf25KBZmE550aJQoNLsawNHXiYru8YfR2ppdZOVI1gUBCHO1whcgZim/Dpo
HnKm5QOCAJO/4N4vufcz7h2B4NIZfZPEYaHrgcZNUTCT5N7xqZCtKEREujaU
YyX6ilRuWa2zLec+BK/MutyGG7Cl7zoM/YrTmjASRgn9EFuIBjUm3FqqMHFZ
LP+5noNDNpuDl7CIJGxXPQOlC2CCY1s2eUYaSv3x5PRUbb/VeomZIksSgOmE
yc5GMDYgjvO3VwmNgBk1ST9qBQEPuacQMq9wFkHLBudjV/1UssAENnCxP+AO
AR6qVdlgOh9WAT4iylfZ0aP0mrDBa4DWGabl2cr94RvMM2QQ4lYmmeSgQr75
w6ABiNUVaKr9g1u37xzevXd/uIKnW4cHt28d7u3tDd/B052D/YN79w4P7g9T
eLp7eOf2rYP9b7kvgra98x4tLepjcPYKTCHAPJTpSqDD4f17dw/v7x3ef/Xk
W2zXblHTuytqB22+ubpJoNDblfr3B2p79d13+7dAIcvT99/v3w1P3313Z4fa
1jBC8s27m+m3CqHcrr///tYBf3r3IE1svY3w7vB0EPw2VaGubq5uvvt28DHy
A94aa+/fd74Aru7+/SMnc708QVyBzsGJhNwRg7BlOz89p3wJxN76akmRDLHw
9vkV2qAV/vUO/0r7TQSMec54Pt9V4ykmenWCYue0WFnEri0EHrqalZK1Dhaw
X3MO2Uc3dijc1FQRi3QgJIcnPScFR0E+sO9MZwCVJBgTkL7aLHQsSEBkwRgu
WN3E8fDvd+c7LalGJ6UvJOXkQTIpL/SwR7cgdk7f7CHNAxNHHByxr+NdxCNQ
C3NIfSMKrZJqYgB/lcFkI0RYac2xUVtMGTpM7F56UbsoTUZjvmGyqfeOxzN9
gUy0zYwJ2hP0xvbvtlfxpx3gbhDWlVpgcIVZYADmna5KFFhk57VxoPVxWfzv
f/5XTTk5gLfQbItRuYI8iFEXfxjzzGZK+kSaX2LwWJe7u7syRxrPof4hyDCB
djonNQRg5WhQgYGK0AJHiCWK9DtxQUeoTlpIZwyLKKEMTBILTkumUVmoWQkN
XYj8uQrahbWYMmdlk67SnN0jzH/Vq5DbIBkCUuoLCuplCxGUcm5qgJqdzcxN
gZ5JMtUwAPJQWcke4AQ3EGu9XLJdizwnmC4z7DwmE0x6+n0WMkYBZNp9ZJrr
An2WCxIMNPyP0Sd4SD5BZO6d4RBEUVgcvIcRYFFnrZQwauWgodBbRn4HKqnT
P/xRrzDMoFw07vt+/EiCQq4/fbQrWN+ChCbsXxZpteI8Fe4rUqa4COF84r4w
jjqto72voiOG569F4+BAnEQg606rCxg7fyxeuKnZyUIH/TW9KSc1eVDOmXHe
AgRYj9/sbb+mEODxm33+BdxPj8/48ZKWCM8FPne9SZ4MwjbFiWbhCgZGIChI
Fdqhnw2ECt5LLk64XvyX8/enHyneyzCzHBytChnSwiyUdBKeCfSNtDer9gc4
2fazUbGDE7JfIQ5Kn6pDzSmdaNkhOjNF3OiZNIqWMQRqBB8fHZK+GAuXBKhD
xIVFmeKCcUsW7dgn9r3rTULx+XK+4NR8HCPrC9rUt6xThu5DG3N+qy0YHYh5
dD7tGEWOQQk3HMMipeMYEO1h2LkVO+mjQKKMF6Tgr+FGW0PlQI56CIpeLEux
OuRxG/CqdEIJQjfkVGQ+pV0JQwwEn8W5gPF2WYV2ZA2IkNmNTCDuJO/KBql1
uS+XMobG++fqLwxwlD/EGiaPUs/WuIJeuWdYQvy9YXaF7L8iOeJh1hr45CJj
sJ3GZGri4NRv5QHs2U3uAAi94yhxc6YAnB+LqM95VvFTOiLgud7GioJ4YonF
MiYll4lsxpqG64nBqDtIYAPIh8fTx+PRwZ1DH0bY7hjAyLwprhO7og0yWZt2
Q5FTQE1wo83Ax7rdbtMSKOQFjhT9gvtyaKu9VkTesML1EPwm5L8C8rW5QMS2
PdEeAnsIrN/ff7ztO5ELiVuGMCe7tSRqU7dc/NAzMHwC3OE+6LSB77ThcWms
JjRNMe7Cfb/HPVE4IlbNDYaaYuApM4M2FLUOqrGWG9Cx/uiGQVQKBp62zwhj
VHgEy4IxyPJLd/Q+pCeTx4tYD46oZ1aS3pLNemOTDHcFMGm9Zjja7EXabkJU
lGIjzFQM++QCPUvb5gyMBGKpt5HZRjmnYXIIwXwewEftG9aT9KipviDjOvgs
elKJ5Kzqtl4CAHP08ICKpnb+fqZz3hMNEZaYB5K6Zsl4TUteiAW/71OoxZHF
gQfnDLCbDXwC6RVtLUDMQ9Othz3IvQVGYVLqEap4vMrbpMadQW4lHVhxuzxJ
O4iBKHPYSuuGYiOyOfvBfNlmwlisO8k5lCrcWb5wAtdbgeRhZypiklJmGFK+
JPOVZeA5WcSvjTwDzFb7uqR2NYp4VX6iDANgxH1wT5x30cJHB0UH5xA/1ybv
Zi/d0tQywY1Ixhb0qrj2jcocHbYOHLYAXIo44ug8eHzBkD47dynb6DNjBRuc
jX+mJhXlD0BWsEFGPg2b37gt/JK2Pl+HxXvo/2DKg7zzuIDPoVkCW4dA3Ng9
NQuTJ1W+Gq7jG2jbJmWbedcsR1v6QI8ltscsi5cmMJEeb7NPX8EVvE4pDLFo
O6n9qkiBz4uoGGVNvkjTc1Jw1iRA6Fpf25lT+6fex7FObUgZW6Z8gRaYjkeo
PdoomXO2EI39hWygm4V24dKjq6URg3lGzk5QCzp8oh6g0bTo5vYmU6Q5Mi3z
oPt1Qlva+nK9WXIBpg51DA+33sbVfDIvoSnTFW4xB7pDd523NbhUGFHK/AWX
Fb0IRUdgaYB7BgPZDPZyWmHdT+X8DNznANOHsEhtI3AL7nnPCiw5YqvKBXsU
nfJg5ZK9fanJEvhdhQtO/f69SYrk40dK3nKK0m6cMpTc+V0SKyQBP5/8oDm4
5pi9x3qYZbx6XOoC3JUyU60KG9oex0KxMi1zFZd9RXXEa3AgmwZopPCOQx1G
cKVn8CYXf5Z2bty+D0QJVE+KzgnmfUwdI91hdA2L7KpILqZd80BFY97QzmHx
eZDyIAab61B/bbJZ5M/hR8JLXx0l10z6jYW1OpIpLGQYo8LxrGBJh9JGar1y
woOQIW5M0XA5NUHFxtyAFcTaP1BiXJeGlV5zswxV1L1qaaF5N+aYxmMuDJD9
3rYWePKiu8bPV3ik3zHPGyngZjLqVpS6ZbKeI+MqVIrXgVtVVMro3WDfdHz8
5hfa3h0MwGfVypeSxrgWD0cYn2tgpITo0UvrlPo6fJjwrbuuQlw409+tRWw0
seBaWlbBPWcJ+rnKY7qP46T2FpOAAnsXAPNJLts0doubKQpZX140+nVrEyYJ
bNRlH1+ljHHDF058zbI6o3tdEhc3b5jA0drrjsj+r7fnMoAC97v4ZIeRWu6Y
M32lY09/zJOEdEso5+6lUCSOLtEsldsBc664fQPyuBTx88j2CZp9Drki5Hk5
xeHiTJRDndTA9yN5ExAiCJsx/EmWeR4C6x4NLZXmlOHu2Iqug+cQ2io2/wRu
O3Tk6tcA5aajA+6gg5bS7SSo9WBAMJ9ZSWCLDlA61+nb1no/gRkMAfu8piN3
1IBsaVJVJuw6RTovHBPxEoEdyE/ruPLHyAWL8iKYaJSpdR/iS6iFdQh4aOmh
0CWVKlYIe9hVwACAv638MYDgwFCFdhSXA8GMy9O6Q1utsvTWUQzCQKERW2go
4qkI7BKDsm1ypKbA+3hiccoRzbhYIeoK3svDhvKJ99qCBvP1ze0TG0GZ4AFO
PiuCsx0NBiMI+bi+BBFzhPW3OI0/RCNzkZtdFiNxtcTBcxKGHMaFJZjsC5DC
ICc/v2i1BnpwnS3M/CieOJ7ZHcVhKLEpV2xKy+uA3AggEX/jQapWuaVHLEnH
JyUUGNDlxITsGGz7Gh0awzEj6KJfI8jBj16+rUdpbi04vauPHxVm0Hweyo3X
+NGmWAiyZkF7eD1OK0R6kaDxRwM5gGAqTE0OGAvu/y6rNVwZdeo977SmySJO
m1cQmVYN+PbEZmdhOaSEOMlIk/gMR8yKYpUYANAnq775peyYud1EVhwJ/nlz
PlqbEivov3bGF6IzeqcLTEyOMNoooYcYklBFHVv1S9kVkINrwVqXxdTMmira
3s/AKODWMB6jxTws7yRCg1AdJvX1fLYlHNNjaUVQYSwsnnbnwJzoSETc1pzq
/Y0W/4IYbXAnfFpgAz04P9WH8XC2RZL2XKdG7BXUGeP9KBzsRI9fjk5MSFvP
MPfU91mkHHMjpD9J+UguR3bIMcSi4yjEzz63QjD4A8GVjncMBn3c4Fkh5vTP
9aWisOpzos5wotGHMtfFW2jPxJpwpq0L1nrc90WzfBXsm4BtQeszWZHPnQX/
YpPvSF5Di3o9/s61ROyoD2aVGDKnbftPYf7Nseht8yf5azO+/14s51AV0xAd
HyeP3hnj7OWXkiqoXqKSDWIbdETfmKSWezMpkTjQqahjGxTfl6pdF1+KGvfq
VxP16FB85NtInqsdJfDOZDylLxwm94hdclawlGMlW8LVCVKjieU0b2GF2GRr
kfA+IIcSslC0EK7Tlk9ktk7huosTfDsfDHSS5H5DaSxO9GCAKBByYCInabGb
rDpKXLpkTxst4D+3zn+vuSiSsOWsKJpavM0kzmcCIHGf6NP6hkIbqoiXwCGj
E7NsaTCxmetiVs+l+Ai9fCw2XzR5bbAKFwC5B/SvMUgzRZo3mXPQsBRYPfar
fpxV6hG8eQJMAVovz2xf7NmCaxiNE9D3IlnlZZLhQAhXeyxO9zIG3SBOEzTL
JQqkywXL2rfdpv7ZwxdD9eoY/tJ1ursT7Wr72IddbMEWME5ry+UheZvNgiEK
fPJLHHW+vwHKY8SZhI/MOe4os0+uT02FW56SFUZz8Jx/n4HXEPbeKXsHeKtW
VHhMJQJ7e/v7+/D/cx+0RLjlBbsDJ1zvrON0eZSvB/D3vf51Z81d5gmVAhd6
bWYpPAUX8/duPFLgtyjIPejOJ9P07Dj4o/vLpAJFXeO5ZKzEwNAW6+Tc4f3h
Jye99fmTxtGNn9XtI3JFkkzq4zCXDXJGo6y6qQE8z0vpOXSGuSAgvnClpXfW
CppsqoH8prTBLPlM30TLVN4fEgfU10F0FvciyfaHImDZM3lt+/ioQ+hpDGZH
QvxaL+dlfs0oXRjJdDoQJhpLQXspgkB3Yf4kyJtgbLMYa+pfkYxke3IzK8iV
hgW34evR1HI+1Oka1td8nUCUsdk096fU9SJZuSSzKGy6t4qqNdsYwZaBE2jL
f4GReKTXezT5ptKPWBOTktuoj4OXIMQgvez2vruKua05HUd9mboOTkylLytT
17oYJJHqDvr4JQsl0pLdpHW5ca64c2Ci9AjxIdd0hBsS1h1FyxnHKszVmiLD
mFju3enbjAnJfro1YePeDDqFeK2ITtwFR6ifW7m6+NYImYpqbTArtmm+67aQ
XneQgl7ShbbuIHa8/7julLsJXVbxusR93zZSbJX6fPrezZEv3U+KLNHfZ0up
PztHpwdGv3WPKaLUdUu+bq4v2XFC8ls+rvD32GvyO0yRId94OdBX7DDZefKl
VLwel59Dsn4ceqTEWPNuxPVJA9ZkprOVcT2kv3kzanD7S3Y4xi1w4zKYrhZO
q9Kn3NhGQMwW6qJZDWHFKHzJ8UYbqh5s7fB3S9lak7vDzBjkR9XNvYUIa/dj
SAjp6uITuedtYyFVX/9+ZezHiut8Tt31QZTA7BYTA6c2WF2IB6p8lZWWOii6
Dy0ox8AvvPvGxVeXFI4v8TqpBIUBc7bU3eZUQs1oX+ikCNdeRQdyOTcJVjKt
pRSp5VXQ3TVY4mRKtvpUifUjV0aj62Kbqa8kTJjpV1K/2yqE9lePheuUWhdN
yBooZ+GqhlujWTlvDetPuBZRdiVzqcZwfgIyB0A58jeHxqdLfDUen8i26xWb
k1WoQouvocNKMN4YpuMzc8x8tPEypLJfvt4pSv3Rbmgrayh1nrvqKaCmpONV
WeNLf0GM8XiVc11SzR4+kbRdiDfkK9RK8fIEQp/IItHkgxHGboAYyw6l2NrK
DVZSuEk3oXVJAMihw8EYzy5XrirabTFsJjDeHMUye280MTVdTBA0Pjunpu2z
FL4yJz7m7DZy28emz0R3RoXxpGGwAPkiyRsdkB8HhhNy7VEI50aLl69JFELe
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
PXt+/Bxgdi3BSv0fQ7pH3xhvAAA=

-->

</rfc>
