<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.24 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-guo-intarea-savax-data-00" category="std">

  <front>
    <title abbrev="SAVA-X-Data">Data Plane of Inter-Domain Source Address Validation Architecture</title>

    <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="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="October" day="23"/>

    <area>Internet Area</area>
    <workgroup>Internet Area 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" title="Introduction">

<t>The Inter-Domain Source Address Validation (SAVA-X) mechanism
establishes a trust alliance among Address Domains (AD), maintains a
one-to-one state machine among ADs, generates a consistent tag, and
deploys the tag to the ADs' border router (AER). The AER of the
source AD adds a tag to identify the identity of the AD to the
packet originating from one AD and sinking in another AD. The AER of
the destination AD verifies the source address by validating the
correctness of the tag to determine whether it is a packet with a
forged source address.</t>

<t>In the process of packet forwarding, if the source address and the
destination address of this packet both are addresses in the trust
alliance, however the tag is not added or incorrectly added, AER of
the destination AD determines that the source address is forged and
directly discards this packet. The destination AD forwards the
packet directly for packets whose source address is an address
outside the trust alliance.</t>

<t>This document mainly studies the relevant specifications of the
data plane of the inter-domain source address validation
architecture mechanism between ADs, which will protect IPv6 networks
from being forged source address. You could see <xref target="RFC8200"/> for more 
details about IPv6. It stipulates the state machine,
tag generation and update, tag processing in AER, and packet signature
Its promotion and application can realize the standardization of 
the data plane in the SAVA-X to facilitate the related equipment
developed by different manufacturers and organizations to cooperate
to accomplish the inter-domain source address validation jointly.</t>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119, BCP 14
<xref target="RFC2119"/> and indicate requirement levels for compliant CoAP
implementations.</t>

</section>
<section anchor="terminology-and-abbreviation" title="Terminology and Abbreviation">

<texttable>
      <ttcol align='left'>Abbreviation</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>AD</c>
      <c>Address Domain, the unit of a trust alliance, which is an address set consisting of all IPv6 addresses corresponding to an IPv6 address prefix.</c>
      <c>TA</c>
      <c>Trust Alliance, the IPv6 network that uses the SAVA-X mechanism.</c>
      <c>ACS</c>
      <c>AD Control Server, the server that matains state machine with other ACS and distribute information to AER.</c>
      <c>AER</c>
      <c>AD border router, which is placed at the boundary of an AD of STA.</c>
      <c>ADID</c>
      <c>The identity of an AD.</c>
      <c>ADID_Rec</c>
      <c>The record of a number of an AD.</c>
      <c>ARI_Rec</c>
      <c>The record with relavent information of an AD or STA.</c>
      <c>API_Rec</c>
      <c>The record of prefix of an AD or STA.</c>
      <c>SM</c>
      <c>State Machine, which is maintained by a pair of ACS to generate tags.</c>
      <c>Tag</c>
      <c>The authentic identification of source address of a packet.</c>
</texttable>

</section>
<section anchor="state-machine-mechanism" title="State Machine Mechanism">

<t>In SAVA-X, state machine mechanism is used to generate, update,
and manage the tags.</t>

<figure title="State machine mechanism." anchor="SM"><artwork><![CDATA[
  +------+              +-------+                    +---------+
  | S_n  |     triger   | A-Box |     transition     | S_(n+1) |
  |      |------------->|       |------------------->|         |
  +------+              +-------+                    +---------+
                            | generation
                            |
                            v
                        +-------+
                        | Tag_n |
                        +-------+
]]></artwork></figure>

<t><list style="hanging">
  <t hangText="State:">
  <spanx style="verb">S_n</spanx> and <spanx style="verb">S_(n+1)</spanx> represent the current state and next state
of the SM respectively.</t>
  <t hangText="Tag:">
  <spanx style="verb">Tag_n</spanx> is generated in the progress of state transiting from
<spanx style="verb">S_n</spanx> to <spanx style="verb">S_(n+1)</spanx>.</t>
  <t hangText="Algorithm Box:">
  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 
<spanx style="verb">transit()</spanx>, <spanx style="verb">S_(n+1)</spanx> = transit(<spanx style="verb">S_n</spanx>); the second is the function
<spanx style="verb">generate()</spanx> to generate tags. <spanx style="verb">Tag_n</spanx> = generate(<spanx style="verb">S_n</spanx>). 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>
  <t hangText="Trigger:">
  It is used to trig the transition of State.</t>
  <t hangText="Transition:">
  It reprents the progress of state transiting from <spanx style="verb">S_n</spanx> to
<spanx style="verb">S_(n+1)</spanx>.</t>
  <t hangText="Generation:">
  It reprents the progress of calculating the current tag from
current State.</t>
</list></t>

</section>
<section anchor="tag" title="Tag">

<section anchor="tag-generation-algorithm" title="Tag Generation Algorithm">
<t>There are two ways to generate tags: pseudo-random number
algorithm and hash chain algorithm.</t>

<section anchor="pseudo-random-number-algorithm" title="Pseudo-Random Number Algorithm">
<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 title="KISS99: Pseudo-random number generatation" anchor="kiss99"><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 <spanx style="verb">S</spanx> can be expressed as (<spanx style="verb">x</spanx>, <spanx style="verb">y</spanx>, <spanx style="verb">z</spanx>, <spanx style="verb">c</spanx>).
The algorithm box is <spanx style="verb">KISS()</spanx>. After each calculation, the state
undergoes a transition from <spanx style="verb">S_n</spanx> to <spanx style="verb">S_(n+1)</spanx>, that is, the
four variables <spanx style="verb">x</spanx>, <spanx style="verb">y</spanx>, <spanx style="verb">z</spanx> and <spanx style="verb">c</spanx> are all changed. At the same
time, a pseudo-rng number (<spanx style="verb">x</spanx> + <spanx style="verb">y</spanx> + <spanx style="verb">z</spanx>) is generated.</t>

<t>As the state machine shown above, the initial state is <spanx style="verb">S_0</spanx> 
= (123456789, 362436000, 521288629, 7654321). In fact, the initial
state can be arbitrarily selected by the algorithm shown below:</t>

<figure title="KISS99: Initial state selection" anchor="seeds-rng"><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" title="Hash Chain Algorithm">

<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 <spanx style="verb">W</spanx>, and then uses some hash algorithm <spanx style="verb">H()</spanx> to iterate
on <spanx style="verb">W</spanx> to obtain a string sequence: <spanx style="verb">H_0(W)</spanx>, <spanx style="verb">H_1(W)</spanx>, ..., <spanx style="verb">H_N(W)</spanx>,
where <spanx style="verb">H_n(W)</spanx> represents the iterative operation of <spanx style="verb">H()</spanx> on <spanx style="verb">W</spanx>
n times, <spanx style="verb">H_0(W)</spanx> = <spanx style="verb">W</spanx>. The state sequence <spanx style="verb">{S}</spanx> is defined as the
reverse order of the hash chain, that is, <spanx style="verb">S_n</spanx> = <spanx style="verb">H_(N-n)(W)</spanx>.
For example, the initial state <spanx style="verb">S_0</spanx> = <spanx style="verb">H_N(W)</spanx> and the final state
<spanx style="verb">S_N</spanx> = <spanx style="verb">H_0(W)</spanx> = <spanx style="verb">W</spanx>, so the transfer function <spanx style="verb">transit()</spanx> is
repsented as the invere <spanx style="verb">H()</spanx>. 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 <spanx style="verb">generate()</spanx> are consistent, and <spanx style="verb">Tag_n</spanx> = <spanx style="verb">S_n</spanx>.
In the following discussion, <spanx style="verb">S_n</spanx> is temporarily used instead
of <spanx style="verb">Tag_n</spanx> for the convenience of expression.</t>

<t>The encryption end sends the initial state <spanx style="verb">S_0</spanx> to the verification
end, and maintains <spanx style="verb">S_1</spanx> ~ <spanx style="verb">S_n</spanx>, which is also the tag sequence used.
The encryption end sends <spanx style="verb">S_(n+1)</spanx> to the verification end every time.
The verification end uses the <spanx style="verb">S_n</spanx> maintained by itself to verify the
tag correctness of the encryption end by calculating <spanx style="verb">S_(n+1)</spanx> =
transit(<spanx style="verb">S_n</spanx>). As explained above, <spanx style="verb">transit()</spanx> is the inversion of
<spanx style="verb">H()</spanx>. In practice, a secure hash algorithm is usually used as <spanx style="verb">H()</spanx>,
such as SHA-256. For these hash algorithms, it is easy to calculate
<spanx style="verb">H()</spanx>, but it is difficult to calculate the inversion of <spanx style="verb">H()</spanx>.
Therefore, the actual operation is as follows: after receiving 
<spanx style="verb">S_(n+1)</spanx>, the verification end calculates whether H(<spanx style="verb">S_(n+1)</spanx>) is 
equal to <spanx style="verb">S_n</spanx>. 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" title="Tag Update">
<t>After the state machine is enabled, the source AD uses the initial
state <spanx style="verb">S_0</spanx> to transfer to the state <spanx style="verb">S_1</spanx> through the algorithm box,
and generates the tag <spanx style="verb">Tag_1</spanx>. In the subsequent state transition
interval, the AER of the source AD uses the same tag, <spanx style="verb">Tag_1</spanx>, to add
to the message sent from this AD to the destination AD. The source AD
does not transfer from the state <spanx style="verb">S_1</spanx> to the state <spanx style="verb">S_2</spanx> until the
transition interval passes, and starts to use tag <spanx style="verb">Tag_2</spanx>. In this
cycle, the state sequence <spanx style="verb">S_1</spanx> ~ <spanx style="verb">S_N</spanx> and tag sequence <spanx style="verb">Tag_1</spanx> ~
<spanx style="verb">TAG_N</spanx> are experienced, in which <spanx style="verb">Tag_1</spanx> ~ <spanx style="verb">Tag_N</spanx> 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" title="Packet Processing at AER">
<t>SAVA-X does not require the intermediate router to recognize and
process the SAVA-X option, which we will described at <xref target="iana"/>, as
long as the intermediate router correctly implements the extension
header and option processing method described in IPv6 protocol 
<xref target="RFC8200"/>. The intermediate router could correctly forward the
packet regardless of its specific content even if it does not
recognize the SAVA-X option well.</t>

<t>The border router, AER, needs to handle tag correctly. The AER of the
source AD judges whether the IPv6 destination address belongs to the
trust alliance. If no, the packet will be forwarded directly. If yes,
the AER continues to judge the hierarchical relationship between the
the source AD and the member ADs to which the packet's destination
IP address belongs. If the source AD and the destination AD are under
the same sub-trust alliance, the AER would add the tag between the two
ADs, otherwise add the AD_V tag.</t>

<t>Note that the packet will not be processed at other AERs in the
sub-trust alliance.</t>

<t>At the AER of the boundary of sub-trust alliance, the packet is
classified according to the IPv6 destination address. If the
destination address is not within the trust alliance, it will be
forwarded directly. If the destination address belongs to this
sub-trust alliance, it will be classified according to the source IP
address. If the source address also belongs to this sub-trust
alliance, it will be forwarded directly. If the source address does
not belong to this sub-trust alliance, the AER needs to verify the
sub-trust alliance tag and replace it with the AD_V tag in this
sub-trust alliance for following forwarding. If the destination IP
address of packet belongs to other sub-trust alliance, it SHALL be
classified according to the source address. If the source address
belongs to this sub-trust alliance, verify the AD_V tag. If
consistent, replace with sub-trust alliance tag. If the source
address is not in this sub-trust alliance, it will be forwarded
directly. Otherwise, the packet will be discarded.</t>

<t>The AER of the destination AD classifies packet according to the
source address of the packet to be forwarded to determine whether
it originates from a member AD. If yes, enter the label check.
Otherwise it will be forwarded directly. Tag verification process: if
the tag carried by the packet is consistent with the tag used by the
source AD, remove the tag and forward the packet. Otherwise the
packet will be discarded.</t>

<section anchor="port-classification" title="Port Classification">

<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>

<t><list style="symbols">
  <t>Ingress Port: Connect to the port of non-SAVA-X router in this AD. 
              Generally connected to IGP router in the domain.</t>
  <t>Egress Port:  Connect to other AD ports.</t>
  <t>Trust Port:   Connect to the port of SAVA-X router in this AD.</t>
</list></t>

</section>
<section anchor="source-address-validation" title="Source Address Validation">
<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>

<t><list style="symbols">
  <t>The packet entering an AER from the Ingress Port SHALL only
carry the source address prefix belonging to this AD.</t>
  <t>The packet entering an AER from the Egress Port SHALL NOT
carry the source address prefix belonging to this AD.</t>
  <t>Packets entering an AER from Trust Port are not checked.</t>
</list></t>

<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" title="Packet Classification">
<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>

<t><list style="symbols">
  <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, 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.</t>
  <t>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.</t>
  <t>Packets entering AER from Trust Port. These packets SHOULD be
forwarded directly.</t>
</list></t>

<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" title="Tag Addition">
<t>AER SHOULD add destination option header and add SAVA-X option into 
the packet according to the requirements of IETF <xref target="RFC8200"/>.</t>

<t>According to <xref target="RFC8200"/>, the destination option header SHOULD be
filled so that its length is an integer multiple of 8 bytes,
including the Next Hader and Hdr Ext Len fields of the destination
option header, the Next Header and Payload Length fields of the IPv6
packet header, and the upper protocol header (such as TCP, UDP, etc.).
If it is necessary, AER SHOULD recalculate the Checksum field.</t>

</section>
<section anchor="tag-verify" title="Tag Verification">
<t>AER will process the first option with Option Type equals to
the binary code of <spanx style="verb">00111011</spanx> in the destination header. We would
talk more about that at <xref target="iana"/>.</t>

<t><list style="numbers">
  <t>If the packet does not contain destination option header or SAVA-X
option. the packet SHOULD be discarded.</t>
  <t>If the packet contains SAVA-X option but the parameters or tag are
incorrect, the packet SHOULD be discarded.</t>
  <t>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.</t>
</list></t>

<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" title="Tag Replacement">
<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>

<t><list style="numbers">
  <t>If the destination address does not belong to the trust alliance,
it will be forwarded directly.</t>
  <t>If the destination address belongs to this sub-trust alliance, it
will be classified according to the source address of the packet.
  <list style="symbols">
      <t>If the source address also belongs to this sub-trust alliance,
 the packet will be forwarded directly.</t>
      <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>
    </list></t>
  <t>If the destination address of the packet belongs to other
sub-trust alliance, it shall be classified according to the source
address.
  <list style="symbols">
      <t>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.</t>
      <t>If the source address is not in this sub-trust alliance, it
will be forwarded directly.</t>
    </list></t>
  <t>Otherwise, the packet will be discarded.</t>
</list></t>

<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" title="Packet Signature">
<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><artwork><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                     Packet by Packet Signature                |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |Lev|Len|                   Reserved                            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t><list style="hanging">
  <t hangText="Packet by Packet Signature:">
  Hash value of original tag, source address and destination address and
first 8-bit of payload, credible level and credible prefix length.</t>
  <t hangText="Lev:">
  2-bit of credible level.</t>
  <t hangText="Len:">
  7-bit of credible prefix length.</t>
  <t hangText="Reserved:">
  23-bit of reserved field. 0 will be padded.</t>
</list></t>

<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 <spanx style="verb">(src-ip, dst-ip, first 8-bit of payload)</spanx>,
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" title="Security Consideration">

<t>This present memo doesnot find any security problem.</t>

</section>
<section anchor="iana" title="IANA Considerations">

<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 
<spanx style="verb">00111011</spanx>, i.e. <spanx style="verb">59</spanx>, 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>

<t><list style="hanging">
  <t hangText="Option Type:">
  8-bit field. The destination option type of SAVA-X = 59.</t>
  <t hangText="Opt Data Len:">
  8-bit field. The bytes length of SAVA-X option. Its value is
<spanx style="verb">2 + LenOfAI + (TagLen + 1)</spanx>, where LenOfAI is 2 when AI Type is 1,
or 4 when AI Type is 2, or 0 default.</t>
  <t hangText="Tag Len:">
  4-bit field. The bytes length of TAG equals to <spanx style="verb">(Tag Len + 1) * 8</spanx>, 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>
  <t hangText="AI Type:">
  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>
  <t hangText="Reserverd:">
  These bits are not used now and must be zero.</t>
  <t hangText="TAG:">
  Variable-length field The actual tag, its length is determined by
Tag Len field.</t>
  <t hangText="Additional Information:">
  As defined in AI Type field.</t>
</list></t>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>Much of the content of this document is the expansion of the IETF <xref target="RFC5210"/>
in inter-domain level. Thanks to the effort of pioneers.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC1760" target='https://www.rfc-editor.org/info/rfc1760'>
<front>
<title>The S/KEY One-Time Password System</title>
<author initials='N.' surname='Haller' fullname='N. Haller'><organization /></author>
<date year='1995' month='February' />
<abstract><t>This document describes the S/KEY* One-Time Password system as released for public use by Bellcore. This memo provides information for the Internet community.  This memo does not specify an Internet standard of any kind.</t></abstract>
</front>
<seriesInfo name='RFC' value='1760'/>
<seriesInfo name='DOI' value='10.17487/RFC1760'/>
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference  anchor="RFC5210" target='https://www.rfc-editor.org/info/rfc5210'>
<front>
<title>A Source Address Validation Architecture (SAVA) Testbed and Deployment Experience</title>
<author initials='J.' surname='Wu' fullname='J. Wu'><organization /></author>
<author initials='J.' surname='Bi' fullname='J. Bi'><organization /></author>
<author initials='X.' surname='Li' fullname='X. Li'><organization /></author>
<author initials='G.' surname='Ren' fullname='G. Ren'><organization /></author>
<author initials='K.' surname='Xu' fullname='K. Xu'><organization /></author>
<author initials='M.' surname='Williams' fullname='M. Williams'><organization /></author>
<date year='2008' month='June' />
<abstract><t>Because the Internet forwards packets according to the IP destination address, packet forwarding typically takes place without inspection of the source address and malicious attacks have been launched using spoofed source addresses.  In an effort to enhance the Internet with IP source address validation, a prototype implementation of the IP Source Address Validation Architecture (SAVA) was created and an evaluation was conducted on an IPv6 network.  This document reports on the prototype implementation and the test results, as well as the lessons and insights gained from experimentation.  This memo defines an  Experimental Protocol for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='5210'/>
<seriesInfo name='DOI' value='10.17487/RFC5210'/>
</reference>



<reference  anchor="RFC8200" target='https://www.rfc-editor.org/info/rfc8200'>
<front>
<title>Internet Protocol, Version 6 (IPv6) Specification</title>
<author initials='S.' surname='Deering' fullname='S. Deering'><organization /></author>
<author initials='R.' surname='Hinden' fullname='R. Hinden'><organization /></author>
<date year='2017' month='July' />
<abstract><t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t></abstract>
</front>
<seriesInfo name='STD' value='86'/>
<seriesInfo name='RFC' value='8200'/>
<seriesInfo name='DOI' value='10.17487/RFC8200'/>
</reference>




    </references>





  </back>

<!-- ##markdown-source:
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

-->

</rfc>

