<?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.34 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-xu-savax-data-04" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="savax-data">Data Plane of Inter-Domain Source Address Validation Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-xu-savax-data-04"/>
    <author initials="K." surname="Xu" fullname="Ke Xu">
      <organization abbrev="Tsinghua University">Computer Science, Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <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>
          <city>Beijing</city>
          <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>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>wangxiaoliang0623@foxmail.com</email>
      </address>
    </author>
    <author initials="Y." surname="Guo" fullname="Yangfei Guo">
      <organization abbrev="ZGC Lab">Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>guoyangfei@zgclab.edu.cn</email>
      </address>
    </author>
    <date year="2023" month="May" day="22"/>
    <abstract>
      <?line 61?>

<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>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/BasilGuo/savax-data"/>.</t>
    </note>
  </front>
  <middle>
    <?line 67?>

<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>
    </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">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>
    <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 = (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 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 <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 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 <bcp14>SHALL</bcp14> only carry the source address prefix belonging to this AD.</li>
          <li>The packet entering an AER from the Egress Port <bcp14>SHALL NOT</bcp14> 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 <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 taged, 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>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 <bcp14>SHOULD</bcp14> be forwarded directly.</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 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 <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 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 <bcp14>SHOULD</bcp14> be discarded.</li>
          <li>If the packet contains SAVA-X option but the parameters or tag are incorrect, the packet <bcp14>SHOULD</bcp14> 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 <bcp14>SHOULD</bcp14> 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 <bcp14>SHOULD</bcp14> 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.) <bcp14>SHALL</bcp14> 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>
      <figure anchor="fig-pkt-sig">
        <name>Format of packet by packet signatrue</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>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>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 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 <bcp14>MAY</bcp14> 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>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, 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>
      <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 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>
  </middle>
  <back>
    <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">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <author fullname="J. Bi" initials="J." surname="Bi">
            <organization/>
          </author>
          <author fullname="X. Li" initials="X." surname="Li">
            <organization/>
          </author>
          <author fullname="G. Ren" initials="G." surname="Ren">
            <organization/>
          </author>
          <author fullname="K. Xu" initials="K." surname="Xu">
            <organization/>
          </author>
          <author fullname="M. Williams" initials="M." surname="Williams">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <author fullname="R. Hinden" initials="R." surname="Hinden">
            <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>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <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 367?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9092XYbR3bv+Ioa6uQMaQEcktppy2NYlCVmtEWkrPHkJGKj
uwCU1ehGeiEJLXPyG3nLt+RT8iW5W22NBiXZ45lzojkjobuqq27d/d66VR6N
RoNBY5pcH6qto6RJ1Is8KbQqp+q4aHQ1OioXiSnUSdlWqVbjLKt0Xasfk9xk
SWPKQo2rdG4anTZtpbcGyWRS6XMYq07Ok8sR9Em2BmnS6FlZrQ5V3WSDgVlW
h6qp2ro52Nu7t3cwyMq0SBYAQVYl02Z02Y7816O9m4Nrqm4nC1PXMF+zWkLH
44enPyh1TSV5XcJkpsj0UsNfRbM1VFvH4+/hn7KCXy9Pf9gaFO1ioqvDAYyn
DwdpWdS6qNuagNADgPYGTJFUOjlU45cPx/BwUVZvZ1XZLg/VM93gk3oNf5li
ph7h6wGMksHToWrrUVKnxgyW5lAphClNCnirYcAqWaltMwUoc7XS9Q6CNE/q
uZrrSg+Uasr0EBvgZ11WTaWnNT3jKJmeJm3e1NDJdlktXI/BIGmbeQlrGkEL
I+9PWv25haeyArAelItlC/RTJ6nRRaqH6rQGeOdtol4V5lxXtWlW0NnSq781
hX8O1ffa/Ayt+Fy2RYN0fDA3RQIvNDBHfqgu27f6u0aG2NVZu5sWAWT/bJJi
ibh7/Q+C72cB4LtUV4Vu1iH8s0nKHDoBiAmN9A8A8gJmvrRw7N0+uPHdtLzE
pt20XASw/gTNU23Uo7a0gP5lXhazWZsUaVuoJ8mkrJIG5C0A7S+PHmDDF4Az
a8sVz/Tdu1maJxOLtUFRVguQ/XOQJaVe/vBg/87tPfl562Df/rwLwn0Iwl5M
fffBYDQaAUx1UyVpMxh8r9MERaWZa1Y3QBwF/S+SKqvVMknfapCAJE3LCqUN
ZYG6vgDxqBsAlzRQwkppKB/YAeiD1dKkIH4r1SRvQbCWeQJa7MKA7LSNMkW9
BMWFY4C+w5FrVnMyokqKTC1A1aWmbOGpaWCCGkT4XKuJ1oXKk7ZI5zoDecfZ
6mVZTuEpHkXXu+oUxjakTzPWp52Jzr0+TQJ9qgzCoPQUltTg6nUxByJ3EDZZ
2fkbUHAAMAwAKhy6z3ShK3yHOs/UDehHQMQMAHo9B/CBrxZtAQhq8OsJKDpc
FKg7mCdT87JG5DcqM9MpKCz4dnxUk2V4cX5bFawXhzQgoBR03IQWBAgQOlkC
wqNB3WymK3qPugsfkRUt5mnMGCu7g8HpHDCw0IsSiJoCCQA/2BkNA9KSDRW+
ORn/OB79GbqmgCBTL3aZ1RYmy3INfHcN0VWVWUvkxoH15xq4bR57xw+ugPmS
SW7qObBUwqYMlbwh2iQLEEY3EA9fq+3x0c5Q4e+GnhNYix415Qj+6RBOBjgC
jrYExP4xDYfEnGD28nJVEwrgpUU8fPt7BVogA90F5gpV2Pb44csdZkT41eH3
8RHinNbCg0Tk4gdPKugdERh0kJmRMALY06pc4NJoTIAQGJPMJqA4KUr4qIKW
NThCcYYPQXmaqdF1n0wCt1tpQQGfI3NXFchLga0yniwj07D0BeL0Yq5pbtOQ
TFnIURPAE4jXbE1ugYWOmd2WVZnK4GsqZqjMRtXRXZltIyCNVXBAKASiChQG
YouWEXHWEETyQgNu3BJhDMCpCB04F6YQXIDCo5fDK5DskINoBjHvWQSML6gh
ZjMydGbqlDR0sAomaWcKp8oDZnGjQKPTEBegbPpmTwKkteBgZLoHL1ZPgBvZ
LlA8UMpggrppM8tElc71eQJtqPGBt1KC0fHLukL5JdraKwirS0mIL+YmnbOG
BE7CzpEGrVlmJprEp5cT1U9li4Y6hxat1fv3Yl8/fiQsLsoKUQ+KJQeUTdC0
4QS76hjW25hlm5MKIQKHmoZ0t9UxtBqgcrtEN5mbhPFFfoGVWOsIJWszA1Lj
wo+BhNB3UbpRkuUyFySTQwzOdW7eaQtDkaH0vEus7e0SQfhftDpI8jRJTW4I
eCEn/MyU/o/WLInmGQhGXi7h3WQVWKxFUrTwLUJZsVACgoFG74T+MHRawmdk
JeEBfY3FElX7l3DBzyV0zFe7ZGgelMU5KkwcHic80lNTGHpmu/NWrzDAALHY
evrq5BQjFvxXPXtOv18+/JdXxy8fHuHvk8fjJ0/cj4H0OHn8/NWTI//Lf/ng
+dOnD58d8cfwVkWvBltPxz9tMQ23nr84PX7+bPxki5Edyg/qIsDFRNa/rDTi
OqkHIN5pZSbwAN98/+DF//z3/k3gxt8BOx7s798DduSHu/t3bsIDKN2CZytR
HvkR0LoaAHvopCKjAFKRJksgbQ6iktSqBiVXUIQE6PzqXxEz/3aovpmky/2b
38oLXHD00uIsekk4W3+z9jEjsedVzzQOm9H7DqZjeMc/Rc8W78HLb/6Yo40a
7d/947fIQtfUKWnmMi9nK8LfmNx4k7Dz8iF6Vh+AxZAuS34afBhFf64fjvr+
QD/Q0B86jgrRR4FT2KBYdn0bq8tizVyDLhDnBDVFyQEvqThv0cgwgYNcWEce
Bgi7gP4AObncBbBOxwDWKU08dhM7H1G0Jtustha9tub/4fIenHxAKwQCCa5f
rk50BcaTh6rpNw8C0Qm5ZLEXRq6BOCwPTsQAQuBiJuBPKRfWoEdaomrcRczD
vzRl5HsFWKP4I1NibUFToyIkxyohgwk/Tk7HPNTRMZLntOOAUT/X4c1LnUon
sKowKVONEx6d7i+P13vTIlGZosaKFuVBqggkHOEFjdCdjgm39gHOefL0gzoh
rD61FsehwrrCrLHRIzMEMSI7DF0oXkGuSGY8s4serJdq7Qx83FHRhAzxTz6g
bo6AUU8tt5Cnxyw07LCBt+kAM7BbFgI3dNaSI8UimWnrnKH/+Ff6M7gugqii
P9dHva/jRmgGcT95UyggHP4BBpwBafFxPPq+vHSvExBAQoOixpM328X1/R2k
Ao8Ya4Vv5W3ndacRmn8t8H3tMnTgeVzV7Yq28w1t1z8xPTBSMntTbBzbfy8U
fH+orp08VZQovb910s8hu1sfBwNqOxwcqjMg2hnxxZnQ4gyEBoSlpggO45a2
Ih+FGQ57FvrSPtq49qlCtYlZCvBv0MMAyGl4WsEZcqXlxsy6TeCKzSz/82iW
PWyAxsABJzvYYORxPoNIrpkvFPAVzsEMBjOMwRD5JvIrA2mQwZnzT9xivASz
QNBnnIYJVy8f1OJvLcF5tbHTtMzz8gKB9qPaz9A9lY9AycJXHIAkbg0TAF2s
Erv5FyWogqqpDyk8NRI0e7mZtgXngs7k5fbO2TAg3n3beZuwt/O1GBKYJLPD
+THs6mGQdXXmqHffNcigu2ocrWCbaLBjx0/R03dUFQ4kxEbRnPjSYK1ajkzc
J4RazB4Q7BILQQCRrQ+rDDjCGh1CElFyzi40WHb41zRo9oEWaJWILOg160t4
RBYFHTXDhPvhGqeYWRftaPJwWvrOvpVPSV6Kpv41XP3IKZlPDZomeYqhkssr
BKxG40csu4v2BMjI/hp08RN5GpLDj5E9etTAgBfJql5jh0O1rHWblSNYDoQa
1np7VkYE074BKBpymaUBQYDJX/DXL/nrZ/x1AILNYvRNEgZ/9gu0ZopCliR3
rkSF3ASYIWq2lFIlqooMbkFcmm1Z8+6dvdqmiux4kXbrsPErzmLCSBgK9ANc
Q8iHufhY8SU2d+Wamzk4X7M5eASLQCvsqmegYgFM8O8onEZ9pP50fHKitt9q
vcT8UE18j9mDyc5GMDbgjdO1lwmNgHk0STpqTN2Q1wtx8QpnEbRscDZ21Q8l
p3k8F9gAH3CHAA/VyiUFwANDZ7bsaE16TdjgNUDvDLPwYtT+8BW4xIC886Qy
ySQHzfHVHwYtgKwuQTHtH9y4eev2nbv3hit4unH74OaN23t7e8N38HTrYP/g
7t3bB/eGKTzduX3r5o2D/a/5W4Rte+c9WlZUv+Cj55jOTKDj7Xt379y+t3f7
3qsnX2M7tzT0+5Laoe2ry+s0Nb1dqX+/r7ZX33yzfwP0rTx9++3+Hf/0zTe3
dqhvAyMkX727nn6tEKrt5ttvbxxw07v7aVI32wjfDk8HIW1bFery+ur6u68H
H0M7/9bU9b171tbjcu7dO7RC1ssFxAdo/I8lkg5Ygi3X2ckZpUEgpNaXSwqJ
iGm3zy7Rxqzwr3f4V3q202fIYMwzRuwZWIgpJnR1goJmVVYpkRvzE4QVupqV
kp32Fq5fSQ45DDL1UPinrQKeiCBkfyY943Qlhu7ArzOdAVCSQExA3Bqz0KHk
AJEFYbhedR2Hw7/fne1EYow+SE+aSlICyaQ8l0AwViaInJM3e0hzz7QBxwbs
ankV0QjEwsxQ34hCqqSaGEBfZTCZqHNwwjhYieWSoZtoEDovW+elyWjQN0w2
9d4yeabPkYm2mTNBX4Km2P7d9ips2gH2BulcqQUGwZjiBWje6apECUV+XhsH
eh+Vxf/+5381lGoDgAvNNhfVKQiEGG9xeCe4+zUlDSLdLzA52pS7u7syRxrO
of7JCy+BdjInxQNg5Wg9gYEK3wNHiESKVDrxQUeqjiO0M45FllAIJkkN3kmm
MdOoZiV0xHjzc/WxjTJhdaRo0lWasweEGa1m5eN5Eh9Jrg/d9iBo4Nw0AC/7
kZmdAP2PZKphAOSfspL9vQluDjZ6uWQjFjhHMF1m2C9MJpjGXFklHgBLu4pM
al2gX3JOAoEG/jHa/gdk+wOzbi2EoAdGDHwEwJzOovQu6mCvltAFRi7HdPLJ
H/6kVxg7UF4Zd3M/fiTxIH+eGusVrGxBouJ3JYu0WnHOCbcLKetb+Og8sS2M
nU7vYGOr6Ajf2euzoQ0BCs7wkBGn1Xl8nT0W1xoiD3Kl0Ot+TW/KSUN+krgs
zimAqOnxm73t1+TXP36zz7+A5enxGT9e0BLhucBnH7JJgEKTQSymOGks/MDA
CAQFKcB66GYDSYL3jAfL6eKmnL0/+UhBXIZZYu9PVciKNcxCeSRxlzx9A5XN
+vw+Trb9bFTs4ITsPogf0qfgUF/KR7RsH3KZIuz0TDoFyxgCNbwPj35HX+CE
SwLUIeL8okxxzrglM3bkkvRkl7ADicTny/eC0+xh4KvPaau+Zj0ytA0x5tzm
mTc1ENDofNqxhBxYEm44MEVKh4EdWkG/Lctc60M7oowTJO+W4fZZS8VMlnoI
il4sS7E15Fgb8J10Qhk2O+RUJD6lHQYqScFm8ShgvF1Wmx1ZAyJk9UYmEK+R
t1y91NqUlt2vhs77Z+qvDHCYB84tO4TeN66gV+4ZFh9Ub5hdIfuvSI54mLUO
LvPLGIyziUxNHJy+WzkAe7aKOwDC12EcuDn8B5enRtTnPKt4Jx0RcFxfh4qC
eGKJJTAmJUeJrMWahusJtehzkMAWkA+PJ4/Ho4Nbt120UHfHAEbmHW+d1Cva
7JK1aTsUeQLUBTfNDDQ2cb9NS6DAFjhS9AvusaF9dloReaMWrocQNyGnFZCv
zTkiNnY/ewjsIKjd5v3jbfcROY64/Qdzsi9Loja1y8WGnoGhCXCHe5rTFtop
vX9hapR/MOYQXeEW3uOeUBvxquYGA0qx7JR1QROKSge1WGT/O2YfXS+IPcG6
004YIYyqiWBVMMbv/dfodciHTBwnYD0YKtBfyErSWrIBb+okw41uzETHLkHE
WKTnJkQ/KR7CTMSwTyLQkaxjnkDPP5T3OjDYKOE0TA4hlwv0XVi+YS1Jj4Lq
Cyqugq9GDyqRVFQTayQAMEevDghoGuvfZzrnnU0fUIlhIHlrl4zTtOSF1ODr
XYVWHFV8dXDIALPZwCWHXtE+AcQ3NNV6iIM8W2DAlQ07hTlO0W1S3tYMRxkF
Vtc2CRIHLBBQDqMMra8fIkuz741W3U4Yg00n5YayhHvD51bMeouKHOxMQcw7
ygxDSoZkrlQM/KUacVsH/gAmnl2pUVxZIr6UmyjDWBdx750S61NE+Oig6OAM
QuXG5N2cpF2aWia4ecnYgq8qLmajkkWLrQOLLQCXIowwEPd+njefz85sFjZo
Zqxgh9PxI+pSUaoA5AQ7ZOTJsNEN+8Iv6euScViNh14PpjfIJw8r8iyaJYi1
CMTdyxOzMHlS5avhOr6BtjEp1yoNY3sRSx7or6TuMcbimwlMpL1j9umroYLX
KQUfNVpM6r8qUuDzIignWZMvMoOc8Zu1CRC60Vd+zFn6E+fZ1FZlSGVaplyh
FViMh6g5YpTMORWIJv5cdonNQtsg6eHl0oiZPCUXx6sF7ZvoC9BmWvRyvF8U
aI5MyzzodB3TBrC+WO+WnIOFQx3Dw633sUWczEtowXSFO8IB4eF7ncfqW4qE
KB/+giuDXvi6ITAzwD6DgWzQO0GtsHSnsu4F7l2AzUNgpF4R2AW3mGcFVg2x
NeUivMbv9pdLdvKlwEoW4ItUYO73701SJB8/Um6WE5H1xjl98Zzb+qiFKODf
k/8zB5ccc/NY07IMl49rXYCbUmYqqpKhmgUs+yrTMldh6VZQFbwGBzKqh0bK
6DjEYQxXegZvcvFjaTvGbuZAdEBFouiVYJLHNCHWLUrX0Mg+iuRd4vIFKvxy
ZnYOi88jdxqEYHNh6c9tNgt8OGwknPQVRmISrZi5PYNOmR+ydlEOQzRYjhUM
aV+kSL1XVnQQMsSLKVpNwxNUHBoasIFYxQcqjOvKsFJrbpa+IHquNyimhea9
liMak9nQQ/f7Olrk8YvuOj9f5ZGGx6RuoILbyahbnWOXypqOzKvo2mgtFyUX
Jnr313YdH735kfZqBwNwVrVyhaEhvsXHEcZnOZNCmYcvXe3qOnyY3m26zkJY
A7NpSTI5GlhwKmtWwD2nAvq5ymG5j+OkghZTfhtqbs0nuWzT2BE3U+Sxvrxg
9KvWJgziWajLOq7sGKOFL5z4imV1Rnd6hGe4cgJLZ6c3Auu/3p/38wvcyuIz
GkaKs0OudJWKPd9jbsSnWHx9di+FAlH0Nd0B1pibN6CNiwg/j2CfoNbnECpA
m5NOHC7MO1mkEcb6kbsJBBGAzZj9JKs8t1qkVzNLrTjlsjs2ouvWWXS6wvhP
YNWOI725YtVDuKn+355W0FJ4nXg17o0G5i0rCWPR40nnOn0brPVTSMGYr89L
OrTHBch8JlVl/JZSoOb8UQ8nBPgBOWYd3/0Iyb8oz73njWK07jKEwH+CTlhT
gAeOHghFUqk7hTCHHQN0+Llt5Ur4vbtCNdVBDA7kMjYb6w5cBXXk0WEKWn+h
EVdoFcKZCOoSY7Bt8pqmwPJ4qHLKAcy4WCHiCt6mw47SxLtoXmW5guRQi4UJ
WjxjypoBZzscDEYQ4XGZCOIFDwbSNO4YjMxVlMVIfCrx5KxYIWtxfQhm8zyU
MMDxoxdRbyAFVeLuwqwPw0nDWe1BGoYQu3K9rPTcBOBG4IjmG49AReWRDqEk
Ep8US2A7m/EScmNM7UpsaAzLg6B8fg6gBmd5+bYZpXldg2e7+vhRYYLMpZrs
eK0bbYrFHGumsofFw+xBoAgJGneaj6MEpsDU5IAx7+Pvsh7DldFHvSeV1tRX
wGHzCgLQqgUHntjr1C+HNA+nEGkSl8gIWVCMEAMAWmTVN78U5jKXm8BcI8E/
b86Ha1NiqfsvnfGFqIre6TwDk7eLRknoIZbD1xmH5vtCUv5y5Mwb57KYmllb
BTv2GVgC3PHFs7GYZuVtQujglptKpTgdQglP2LGoIqwwGFYo2yNcVnYk8I01
pnp/LWJgkKMN7oML/zcQhPNQfSj3p1AkJc+1ZsRfXo8x4g/9iUz06+WQw4S0
NKaY+lpFyik5TIqTNI/kbGTnG4MpOjhCDO1yKASDO8Rb6XA/YNDHDo4XQlb/
XN8pCJ4+J770hxFdwLIxqgIbJiaEs2ldkNYjuy+a4RfBvT6MhLoRuC5dFbjW
mfcpNrmK5ClEpOvxca6kYEd5sENkobJ6tv/k5G+OQmeRP8lYm1D9m3GaeHBd
RIXUQ0fHiqHzvTg5+aVE8iqX5Lj20upVQ9+YpI57UyWBJNCxpaPa67tPqNs1
bWsDSFHfTutqoh0dYF9PYsUhAW83hlO6el9yidgBZ71KKVSyIVxyIPWVWCPz
FlaIXbYWCe/ucdwgC0XDYD/acmnK6MCsvePA9XOufycH7vaLxuIzDwaIAiEH
ZmlCZpM1BzlJ7BEjBDzl6Kz2mlMiiVhOdqJxxatVwjQlgBB+EzSt7xTEEAVc
BC4YHWtl24L5ylwXs8YeJUN/Ho+1LNq8MVg7C4DcBco3qNVMkeZtZl0yLOBV
j92KH2eVeghvngA7gKbLs7ovvIzgGgbjeNS9SFZ5mWQ4EMIVj8VZXMagHcTq
gHa5RFG0KV5Z+7bdoz998GKoXh3BX7pJd3eCTWoX5bBTLdgClon2Uh6Qf9ku
GCLPIT+G0eX7a6A2Rpwq+Mg8Y88bu6T51FS4jynJXjQBz/n3KbgJvGPuMq8T
QFy1onph2vLf29vf34f/n7kYJUAurxhE0hdV52/5UDIfRiaaB8l4WMS+0772
WLhNLaFSwH3VzWyFB8xCHt8Nx/E8F0S0B93ZZJK6IyyT1mY7K1DRDR4ZxsIK
jGGx7M2erh9+csIbnzdhGMu4Ge3mIBcXyYQu6rKpHmsqyqob/uMxW8q6oevL
O/zhjSiRtlmrTapTDZQ3Ze2NkUvgTbRM5Rwg8TYpDOks7EWS7YtcZc/kbd3H
PR3aTkMIO4LhlnkxL/MrRumCR7bSgjDRWMq5Rog+eD8Jbh98MUexUv4ZKUdG
JjezglxlWGgMV49ilisLrGpxd6/QhrPLxNC8lrR4cdbo0q3qamQvkpVNGIuG
pluzqNoyxgf29OSnzfsFBtuBIofmHu29qYYj1L6k2DbqYO8TCDVIF9uN7K4y
jrWlZacvU9HeZan0RWWaRheDJFDXXge/ZGFEgtLBvI6sWHcbBTJIfihbluGv
KejZLKEJKj9BNHaG4a5chtO3meIT9nRzgd2U65sFneGpTux1Q6iCo/Sbvbkh
no2KZTDftWnKq3aBXgcIQfuPrtC5PxYdbiOuu952QpsrvCoL37cbFNqePs+9
d4/jS7eFAovz99kZ6s+9UbX/6NduFfVki/uWfNVcX7JxhOSv+XjB32PLyG0U
BUZ746U9DhGfu1lUz5MvpeHVmPwcgvVj0KEkxJlzGjbvHLH+Mp2Niauh/NW7
SoObX7KxNI7ADatYLmyYaP2wqnSZNLYKEJP5YmZWQFjnCS05XikT3CogGaZu
JVo0uT1WjEF8UJIc7L77wdauxJAQ0RazJ3Ln2sY6qL7v+9WwGyus0jmx9/dQ
XrJbAQxc2mJxIJ59ckVSWsqY6IYyrxY9v/BWGtdOXVC4vcSbnRIUBMzF0ud1
bvxdIgudFP4GquCsLJVdabCQaSOFRJEfQZfHYIWSKdnOUyHV91zOjP5K3U5d
ISCx+0pqbqPaZXcVmL/NKLryQVZAGQlb6RuNJsefYfFcRijbi7mUUZwKUwB0
I3dJaXgUxBXR8aHper3QcrLyxWPhhXBYwMU7u3TWZY4ZjRgfQ6rU5XuVgmQe
bWlGeUApz9xVTwEpJZ2CylpXrQvii6egrLuSygVlRMq4fm7Il5mV4s8JhC5B
RSLJpxhMvQFirBaU0uharo6Seku6jKyDfMANndfFWHW5snXMdsdgM2XxxqZa
3R1NTEO3Anj1zh6oibSGFUACwp86tjux8Snmsa2EpkJjV8ROJcPnSd7KNn0Y
8U0osEGZm6MnRKMy54f1Cav1BbEqR5XMwu8Qx0jDRVElo1zQZQvVphDtKVOH
Rxf9bSVqr+dGjP2edwc9727g5/vQdEPdVLfUbXUHIoF7X/JucH30K/83+NAD
mLJaD9DY1X/dnh/+ZjA8IRMio/ILimzcs/x5qelCouxvC0NwAnNqZiPci6qN
O4P5A931cwWDVa3Gg5ib8YYXKjz2bI0hbaD8hn1XIvZ5VlSvQMkplkeCiMRw
CPZaZ2aSazHGpGvtK9kQ5PgT+JeQjTC5YeKvqQv27e/THc7SBHvv37bdK0sp
TscBx1p/Y8l7Q4PBD7iWnAMUf99JjIzhRkz4VJ0DkWw/K/Gq+4IrKGx6O3g5
FB0HrxdWnV0kVGd3tl1X6cgsAYi6oX/70b8THsR0o4WnSjcoQTbWYvakeDkm
ZHBta3yHYpKVSzdsvK0niQb5tEs3qkyVa/vQHAM4BQEoh0CdseucsqLbOBox
pzatkJkZkIfMtHV9Ybo2ZT/gxoHYjY42xrNjufEHgKZgB6Nzt75Mlq5bRWg2
jdWUM65YcnBzxx6BwMY7cWPEy9aMdzJemPGRC3SCrYLbN3GkYVhEhNe9uDzO
xvqtofckarz70SLBvSW8+/Nh6IhIfTljVUKVsFDYc5kQcUNtlEfbunDYoG61
dlrTvXTxRxRzBBFPpsl3/axbUruySX61D1WOvFsFBhlotbCuz7ovRcFLv0OF
YNPW/yaPyx7/DzaB6cSirYEv3VWni7C6IKxZi8Ku2h34D7B12vF3P6UWXPmw
v/8xyFbwvRfOhXE5g7cF3p3ySxQPn5xbuZNZRKZoVY5xwq1ZUJM2OuFzJqLB
7Zn+kMmCO7Sxyg93MinGenr6Cquw/LUB7m4LJ/6Jy8dGW3TDNWXnrwo26HmD
lCc1Vcvh7ek284sTCkdJVs/yV+puuimU3IDubzMleZZKR1O8daFq0LwW9GK1
He9ilRgkumu5/TfDzrPct8IIOH7w9IXTtLDALVfACexqZludtAjeQy5nsP1h
FHpJ2Um6XSci6TvNcixi3AGU0zW41jo4JOYh7TtvhguKo9VoOqX0ZcrZWSGE
y+5/6TxSCoQlkzbCtrd1xeG+1PCRRMllNr8Qt7vqsb35wtchRbin/Qu+9Avj
BVjgMFJgT8c/4T3DAIm+pOvWJsG9/lWJm3r0iOYcD2II14YYZATiWxrdKlKa
P1YEpumyN8eWdZmfe60QlNpdlFK0B3EQuWbDkEwUal3iTfqgwkgCDN9oCoja
P7i7p2KdTySSi68l14NVZYt24Z1gHJkPa/BmzanNQQVThvjFQ6yuBFK78sfe
cTEUp4PjdisvuYw7dXZG5QJ9OpdEtQyIpZB47gT4DLQK1irkZmGadRZHilwk
tT0s6s6SIVSSzvA34QHGwYw1olc+yZN8I2LpKR4Vwq5TgLQPb964cXGZPKc9
QounJ6nIFvHG+ImrLRDDbf0ZaFxPVMaIXZCTPytLupbAkorHwqhepbqiPW06
R9Y4lJNUYCYnT9AuCfxIWjxyTGbkxNqcji05/Z5TecfjZ+O4rVbvr9E2uztz
RycE0dJJ8oU20OS0sbuEPLidMenZMhx2vUfZQ6Ojn7Ya9BQzSK/5btjFgs6B
82HZoIAAFPIu6OezW/fg53R9K/8xpgAvwPWjO1baTrviC2qRkDDu/7OcRViO
oT7go6L/IhOWtii8/xZ/fRgfU48PnazB3yRf0Js3cX9Ox4+u7vDX3wwGWw4F
Ovo4uKT4t4Ihzpvwf4wKGHA9cxIzL2ZLAiL6NIPkCk7nvbvxWKYbDHZf3bq3
SwM58veORPvrgZ/YESRM+YnWq9XZgbqOAz2fAvtcV9vATMhV19W+v/LINkP3
Aw49hNXwzT5VBtxce39A7/fsf65KEt4C8s1PgYwc5QuPzrblW4JLfaXuAmx6
F3QK+HC26b66Q6EZO2KyZlKjt2+CNWkkwoGRSaO50951x6vGqS9sSGMr0Crg
r04RA4zIsFsTEQ+BqDngbv5UqBjutZ43Dng8CAWOHYesIcmyQz/PY8YJ1WZR
bugwBBWFHSRllct/jKZPfBDgA+osWYgrOktoXLvifNzORJPiM2UVpcpOqZCU
ESJdKe2PvhtdKSS1rXidHbLL+BF+9aPcNzjKw9IPCgj5Yhlyg+O6QXe6i7w+
yyC2TK5/GTgXhsH2ui3judl+SP/hILyOBe3rOEWnEwwlFbjXoBO4gFNn97em
wLeUIT19fvQc4LQ9wS79HylR/nNXbwAA

-->

</rfc>
