<?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-rfc2629 version 1.3.24 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-xu-savax-data-01" category="info" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.11.1 -->
  <front>
    <title abbrev="SAVA-X-Data">Data Plane of Inter-Domain Source Address Validation Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-xu-savax-data-01"/>
    <author initials="K." surname="Xu" fullname="Ke Xu">
      <organization abbrev="Tsinghua University">Computer Science, Tsinghua University</organization>
      <address>
        <postal>
          <street>Qinghuayuan street, Haidian District</street>
          <city>Beijing</city>
          <code>100084</code>
          <country>China</country>
        </postal>
        <email>xuke@tsinghua.edu.cn</email>
      </address>
    </author>
    <author initials="J." surname="Wu" fullname="Jianping Wu">
      <organization abbrev="Tsinghua University">Computer Science, Tsinghua University</organization>
      <address>
        <postal>
          <street>Qinghuayuan street, Haidian District</street>
          <city>Beijing</city>
          <code>100084</code>
          <country>China</country>
        </postal>
        <email>jianping@cernet.edu.cn</email>
      </address>
    </author>
    <author initials="X." surname="Wang" fullname="Xiaoliang Wang">
      <organization abbrev="Tsinghua University">Computer Science, Tsinghua University</organization>
      <address>
        <postal>
          <street>Qinghuayuan street, Haidian District</street>
          <city>Beijing</city>
          <code>100084</code>
          <country>China</country>
        </postal>
        <email>wangxiaoliang0623@foxmail.com</email>
      </address>
    </author>
    <author initials="Y." surname="Guo" fullname="Yangfei Guo">
      <organization abbrev="Tsinghua University">Institute for Network Sciences and Cyberspace, Tsinghua University</organization>
      <address>
        <postal>
          <street>Qinghuayuan street, Haidian District</street>
          <city>Beijing</city>
          <code>100084</code>
          <country>China</country>
        </postal>
        <email>guoyangf19@mails.tsinghua.edu.cn</email>
      </address>
    </author>
    <date year="2021" month="November" day="18"/>
    <area>Operations and Management Area</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>Because the Internet forwards packets according to the IP destination
address, packet forwarding typically takes place without inspection
of the source address and malicious attacks have been launched using
spoofed source addresses. The inter-domain source address validation
architecture is an effort to enhance the Internet by using
state machine to generate consistent tags. When communicating between
two end hosts at different ADs of IPv6 network, tags will be added to
the packets to identify the authenticity of the IPv6 source address.</t>
      <t>This memo focus on the data plane of the SAVA-X mechanism.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <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" format="default"/> for more 
details about IPv6. It stipulates the state machine,
tag generation and update, tag processing in AER, and packet signature
Its promotion and application can realize the standardization of 
the data plane in the SAVA-X to facilitate the related equipment
developed by different manufacturers and organizations to cooperate
to accomplish the inter-domain source address validation jointly.</t>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119, BCP 14
<xref target="RFC2119" format="default"/> and indicate requirement levels for compliant CoAP
implementations.</t>
    </section>
    <section anchor="terminology-and-abbreviation" numbered="true" toc="default">
      <name>Terminology and Abbreviation</name>
      <table align="center">
        <thead>
          <tr>
            <th align="left">Abbreviation</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">AD</td>
            <td align="left">Address Domain, the unit of a trust alliance, which is an address set consisting of all IPv6 addresses corresponding to an IPv6 address prefix.</td>
          </tr>
          <tr>
            <td align="left">TA</td>
            <td align="left">Trust Alliance, the IPv6 network that uses the SAVA-X mechanism.</td>
          </tr>
          <tr>
            <td align="left">ACS</td>
            <td align="left">AD Control Server, the server that matains state machine with other ACS and distribute information to AER.</td>
          </tr>
          <tr>
            <td align="left">AER</td>
            <td align="left">AD border router, which is placed at the boundary of an AD of STA.</td>
          </tr>
          <tr>
            <td align="left">ADID</td>
            <td align="left">The identity of an AD.</td>
          </tr>
          <tr>
            <td align="left">ADID_Rec</td>
            <td align="left">The record of a number of an AD.</td>
          </tr>
          <tr>
            <td align="left">ARI_Rec</td>
            <td align="left">The record with relavent information of an AD or STA.</td>
          </tr>
          <tr>
            <td align="left">API_Rec</td>
            <td align="left">The record of prefix of an AD or STA.</td>
          </tr>
          <tr>
            <td align="left">SM</td>
            <td align="left">State Machine, which is maintained by a pair of ACS to generate tags.</td>
          </tr>
          <tr>
            <td align="left">Tag</td>
            <td align="left">The authentic identification of source address of a packet.</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="state-machine-mechanism" numbered="true" toc="default">
      <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 name="" type="" align="left" alt=""><![CDATA[
  +------+              +-------+                    +---------+
  | S_n  |     triger   | A-Box |     transition     | S_(n+1) |
  |      |------------->|       |------------------->|         |
  +------+              +-------+                    +---------+
                            | generation
                            |
                            v
                        +-------+
                        | Tag_n |
                        +-------+
]]></artwork>
      </figure>
      <dl newline="false" spacing="normal">
        <dt>State:</dt>
        <dd>
          <tt>S_n</tt> and <tt>S_(n+1)</tt> represent the current state and next state
of the SM respectively.</dd>
        <dt>Tag:</dt>
        <dd>
          <tt>Tag_n</tt> is generated in the progress of state transiting from
<tt>S_n</tt> to <tt>S_(n+1)</tt>.</dd>
        <dt>Algorithm Box:</dt>
        <dd>
  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.</dd>
        <dt>Trigger:</dt>
        <dd>
  It is used to trig the transition of State.</dd>
        <dt>Transition:</dt>
        <dd>
  It reprents the progress of state transiting from <tt>S_n</tt> to
<tt>S_(n+1)</tt>.</dd>
        <dt>Generation:</dt>
        <dd>
  It reprents the progress of calculating the current tag from
current State.</dd>
      </dl>
    </section>
    <section anchor="tag" numbered="true" toc="default">
      <name>Tag</name>
      <section anchor="tag-generation-algorithm" numbered="true" toc="default">
        <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" numbered="true" toc="default">
          <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 name="" type="" align="left" alt=""><![CDATA[
/* Seed variables */
uint x = 123456789,y = 362436000,z = 521288629,c = 7654321;
uint KISS(){
   const ulong a = 698769069UL;
   ulong t;
   x = 69069*x+12345;
   y ^= (y<<13); y ^= (y>>17); y ^= (y<<5);
   t = a*z+c; c = (t>>32);
   z=cast(uint)t;
   return x+y+z;
}
]]></artwork>
          </figure>
          <t>In this algorithm, State <tt>S</tt> can be expressed as (<tt>x</tt>, <tt>y</tt>, <tt>z</tt>, <tt>c</tt>).
The algorithm box is <tt>KISS()</tt>. After each calculation, the state
undergoes a transition from <tt>S_n</tt> to <tt>S_(n+1)</tt>, that is, the
four variables <tt>x</tt>, <tt>y</tt>, <tt>z</tt> and <tt>c</tt> are all changed. At the same
time, a pseudo-rng number (<tt>x</tt> + <tt>y</tt> + <tt>z</tt>) is generated.</t>
          <t>As the state machine shown above, the initial state is <tt>S_0</tt> 
= (123456789, 362436000, 521288629, 7654321). In fact, the initial
state can be arbitrarily selected by the algorithm shown below:</t>
          <figure anchor="seeds-rng">
            <name>KISS99: Initial state selection</name>
            <artwork name="" type="" align="left" alt=""><![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" numbered="true" toc="default">
          <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" format="default"/>. 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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
      <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" format="default"/>, as
long as the intermediate router correctly implements the extension
header and option processing method described in IPv6 protocol 
<xref target="RFC8200" format="default"/>. The intermediate router could correctly forward the
packet regardless of its specific content even if it does not
recognize the SAVA-X option well.</t>
      <t>The border router, AER, needs to handle tag correctly. The AER of the
source AD judges whether the IPv6 destination address belongs to the
trust alliance. If no, the packet will be forwarded directly. If yes,
the AER continues to judge the hierarchical relationship between the
the source AD and the member ADs to which the packet's destination
IP address belongs. If the source AD and the destination AD are under
the same sub-trust alliance, the AER would add the tag between the two
ADs, otherwise add the AD_V tag.</t>
      <t>Note that the packet will not be processed at other AERs in the
sub-trust alliance.</t>
      <t>At the AER of the boundary of sub-trust alliance, the packet is
classified according to the IPv6 destination address. If the
destination address is not within the trust alliance, it will be
forwarded directly. If the destination address belongs to this
sub-trust alliance, it will be classified according to the source IP
address. If the source address also belongs to this sub-trust
alliance, it will be forwarded directly. If the source address does
not belong to this sub-trust alliance, the AER needs to verify the
sub-trust alliance tag and replace it with the AD_V tag in this
sub-trust alliance for following forwarding. If the destination IP
address of packet belongs to other sub-trust alliance, it SHALL be
classified according to the source address. If the source address
belongs to this sub-trust alliance, verify the AD_V tag. If
consistent, replace with sub-trust alliance tag. If the source
address is not in this sub-trust alliance, it will be forwarded
directly. Otherwise, the packet will be discarded.</t>
      <t>The AER of the destination AD classifies packet according to the
source address of the packet to be forwarded to determine whether
it originates from a member AD. If yes, enter the label check.
Otherwise it will be forwarded directly. Tag verification process: if
the tag carried by the packet is consistent with the tag used by the
source AD, remove the tag and forward the packet. Otherwise the
packet will be discarded.</t>
      <section anchor="port-classification" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" format="default"/> step, and the packet using the fake source IP
address will be discarded. The source address is checked using
the ingress filtering method. AER only checks the source address
according to the following three rules:</t>
        <ul spacing="normal">
          <li>The packet entering an AER from the Ingress Port SHALL only
carry the source address prefix belonging to this AD.</li>
          <li>The packet entering an AER from the Egress Port SHALL NOT
carry the source address prefix belonging to this AD.</li>
          <li>Packets entering an AER from Trust Port are not checked.</li>
        </ul>
        <t>The prefix of IP address owned by one AD SHALL be configured by the
administrator or obtained from the control plane, and deployed to AER 
by ACS of this AD.</t>
      </section>
      <section anchor="pkt-clsscify" numbered="true" toc="default">
        <name>Packet Classification</name>
        <t>It SHALL be classified after the packet entering an AER passes the
source address validation. There are three types of packets: packets
that SHOULD be taged, packets that SHOULD check tags, and other
messages. The judgment rules of the three packets are as follows:</t>
        <ul spacing="normal">
          <li>Packets entering AER from Ingress Port. If the source address
belongs to this AD and the IPv6 destination address belongs to another
AD in the same sub-trust alliance, tag must be added. If the source IP
address belongs to another AD in the same sub-trust alliance and the
IPv6 destination address belongs to another sub-trust alliances, the 
tag must be verified and replaced with the sub-trust alliance tag.
Other packets are forwarded directly.</li>
          <li>Packets entering AER from the Egress Port. Tag must be checked if
the source address belongs to another AD in the same sub-trust
alliance and the IPv6 destination address belongs to this AD. If the
source address belongs to other sub-trust alliance and the
IPv6 destination address
belongs to another AD in the same sub-trust alliance, the tag must be
checked and replaced. And other packets can be forwarded directly.</li>
          <li>Packets entering AER from Trust Port. These packets SHOULD be
forwarded directly.</li>
        </ul>
        <t>The relationship between IP address and ADs SHALL be obtained from
the control plane and deployed to the AER by the ACS of the AD. When
the SAVA-X option of the packet received from the progress port
carries the active AD number, you can skip the "mapping from address
to AD number" process and directly use the AD number carried in the
message.</t>
      </section>
      <section anchor="tag-addition" numbered="true" toc="default">
        <name>Tag Addition</name>
        <t>AER SHOULD add destination option header and add SAVA-X option into 
the packet according to the requirements of IETF <xref target="RFC8200" format="default"/>.</t>
        <t>According to <xref target="RFC8200" format="default"/>, the destination option header SHOULD be
filled so that its length is an integer multiple of 8 bytes,
including the Next Hader and Hdr Ext Len fields of the destination
option header, the Next Header and Payload Length fields of the IPv6
packet header, and the upper protocol header (such as TCP, UDP, etc.).
If it is necessary, AER SHOULD recalculate the Checksum field.</t>
      </section>
      <section anchor="tag-verify" numbered="true" toc="default">
        <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" format="default"/>.</t>
        <ol spacing="normal" type="1"><li>If the packet does not contain destination option header or SAVA-X
option. the packet SHOULD be discarded.</li>
          <li>If the packet contains SAVA-X option but the parameters or tag are
incorrect, the packet SHOULD be discarded.</li>
          <li>If the packet contains SAVA-X option, and the parameters and tag 
are correct, AER must replace the tag or remove the tag when needed
before forwarding the message.</li>
        </ol>
        <t>In the following scenarios, the tag needs to be removed. If there are
only SAVA-X option, Pad1 and PadN options in the destination option
header of the message, AER SHOULD remove the whole destination option
header. If there are other options besides SAVA-X option, Pad1 and
PadN option in the destination option header, AER SHOULD remove
SAVA-X option and adjust the alignment of other options according to
the relevant protocols of IPv6. In order to removing the sava-x
option, the destination option header may also be filled, or some
Pad1 and PadN may be removed, to make its length be multiple of 8
bytes. At the same time, the Next Header field and Payload Length
field deployed in the IPv6 message header, and the Checksum field of
the upper protocol header (such as TCP, UDP, etc.) SHALL be rewritten
as necessary.</t>
      </section>
      <section anchor="tag-replacement" numbered="true" toc="default">
        <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" numbered="true" toc="default">
      <name>Packet Signature</name>
      <t>It is difficult to accurately synchronize time among the trust 
alliance members. So we propose a shared time slice, which means that
there are two tags effecting at the same time in a period of time.
But it may suffer from replay attack. Therefore, a packet signature
mechanism is proposed to prevent replay attack and concel the
original tag.</t>
      <t>Tag is time-dependent. The state machine triggers state transition by
time and generates a new tag. In a short period of time, all data
packets are labeled with the same tag. Moreover, due to the subtle
differences in time synchronization, both old and new tags can be
used for this short period of time, so attackers can reuse tags for
replay attack by simply copying tags.</t>
      <t>The packet signature mechanism joins 8-bit part of the payload in
the packet and the tags generated by the state machine. And then it
calculates hash value with parameters above to achieve the effect of
packet by packet signature and resist the attackers reuse of tags.
Its processing flow is shown below.</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                     Packet by Packet Signature                |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |Lev|Len|                   Reserved                            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      <dl newline="false" spacing="normal">
        <dt>Packet by Packet Signature:</dt>
        <dd>
  Hash value of original tag, source address and destination address and
first 8-bit of payload, credible level and credible prefix length.</dd>
        <dt>Lev:</dt>
        <dd>
  2-bit of credible level.</dd>
        <dt>Len:</dt>
        <dd>
  7-bit of credible prefix length.</dd>
        <dt>Reserved:</dt>
        <dd>
  23-bit of reserved field. 0 will be padded.</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="security-consideration" numbered="true" toc="default">
      <name>Security Consideration</name>
      <t>This present memo doesnot find any security problem.</t>
    </section>
    <section anchor="iana" numbered="true" toc="default">
      <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.
      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                    ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</t>
      <dl newline="false" spacing="normal">
        <dt>Option Type:</dt>
        <dd>
  8-bit field. The destination option type of SAVA-X = 59.</dd>
        <dt>Opt Data Len:</dt>
        <dd>
  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.</dd>
        <dt>Tag Len:</dt>
        <dd>
  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.</dd>
        <dt>AI Type:</dt>
        <dd>
  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.</dd>
        <dt>Reserverd:</dt>
        <dd>
  These bits are not used now and must be zero.</dd>
        <dt>TAG:</dt>
        <dd>
  Variable-length field The actual tag, its length is determined by
Tag Len field.</dd>
        <dt>Additional Information:</dt>
        <dd>
  As defined in AI Type field.</dd>
      </dl>
    </section>
    <section anchor="acknowledgements" numbered="true" toc="default">
      <name>Acknowledgements</name>
      <t>Much of the content of this document is the expansion of the IETF <xref target="RFC5210" format="default"/>
in inter-domain level. Thanks to the effort of pioneers.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1760.xml"/>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5210.xml"/>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml"/>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIABmimGEAA+U92XIbR5LvjOA/1MqxMZQFwCQlURJtOQyLGok7lsQRKXvm
ZcVCdwEoq9GN6YMkdDj2N/b39ks2rzq60aCoGe9G7CxnLALddWRl5Z1ZxeFw
uL21vVXbOjOH6kjXWp1kOjeqmKrjvDbl8KhYaJur06IpE6PGaVqaqlI/68ym
urZFrsZlMre1SeqmNGp7S08mpbk4VKfjn8fDvwxxSJwhLZJcL2COtNTTenjV
DCt9oa+GMIge7u5BA13D2/3d/b3hHvz/IXb6SlW1ztO3OityeLkyFT61y/JQ
1WVT1fu7u49292HO0uhD9WppSgKpUtBJvdC5npmFyWsA0QAQl7ND9dLUl0X5
Tv0C/9h8pp6VRbPc3np3ecjLzU09PEIIt7cSXR8qm08LnDMpUmh+qJpqqKvE
2u2tpT1U8POVSnQOj43SZalXasdOlc4yhPW2Kko119VczU1pcDVqqOoikU9V
UdalmVbu62rB3xS2kcUq3+qQ5krNVDdZXUET34D7eezopp4X5SG+wp+h+6AU
4/9PRv2lCQ+LElb1pFgsG1i9Ok2syRMzUGcVLHfeaPUmtxemrGy9Cn3cFl/b
qAKwDWDwz9xm1QCa+NlAPdc2tfD9yMITm9ShVwJjHKofjf0VukWPixRA39vd
3X14L37a5HUJ7Z/Mba7DcwMUmx2qq+ad+aEWGEcmbUZJvhEt/wbwLJEifvn/
gZxfZb0/JET0n0PPX6wuMugC+NHx3P/EGLqEhV65Ze8e7N/9YVpc4atRUiw2
Iuqv0HhqrHrWFB0sHecViFnAk5qCXHCCSFDGIuvJagJ4WOoNKFT/53A4a4oV
ImTv0Q/4oBqtseP2Vl6UCxDbF4Zk1us/Ptl7cLDrPu/v7T1yn+/v7/nnD0H0
H2JvVhPD4VDlRW3eHj89ffb2JXyi5/xykmn3Hz7AtnoCq9a46h9NolF613Pj
NQBu0KUu00rBVrwzIG51khQlagAUvNT0BGQx7GdOCgekLuvFgfRwI1CP1dIm
oBJWqtbvYKOXGeyvurQgppsaFEy1BN1Jg4DOxbErVrUyJBHGAtRtYosGvtU1
zFCBXrkwamJMrjLd5MncpKCEaMOqZVFM4Wt7GFON1BkMbkmpp6zUOzNdeKWO
KjXS6hahUGYKq6oRAyafayDaNtImKw9BDbocYIYRwJKA9jOTo2o2QC55BQSH
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
psELF7a3/hvRXTO1lm0AAA==

-->

</rfc>
