<?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-protocol-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-Protocol">Communication Protocol Between the AD Control Server and the AD Edge Router of Inter-Domain Source Address Validation Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-xu-savax-protocol-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 packet formats and processing flow 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 Architecture (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">SMI_Rec</td>
            <td align="left">The record of the state machine information.</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="pkt-format" numbered="true" toc="default">
      <name>Communication Protocol Format</name>
      <t>Every AD should be placed at least one ACS, which is mainly responsible
for maintaining the relationship between ADs of the trust alliance,
establishing connections with other ACS, maintaining the synchronous
state machine, and sending the generated tags to the AER.</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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |    Version    |    Alliance   | I Type| S Type|   Operation   |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                           Total Length                        |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                        Number of Records                      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                       Transaction Number                      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                       Acknowledge Number                      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 ~                              Data                             ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      <dl newline="false" spacing="normal">
        <dt>Version:</dt>
        <dd>
  8-bit, the current version=0b1 of SAVA-X.</dd>
        <dt>Alliance:</dt>
        <dd>
  8-bit, the sub-trust alliance number.</dd>
        <dt>I Type:</dt>
        <dd>
  4-bit, Information type, 0 for G_REF_INFO, 1 for AD_REG_INFO, 2
for AD_PREFIX_INFO, 3 for STATE_MACHINE_INFO, 4 for DIAGNOSIS_INFO,
5 for RUNNING_STATE_INFO, 6 for STRATEGY_INFO, 7 for ALIVE_INFO, 8
for TAG_INFO, 9 for ALLI_TAG_INFO, 10 for AD_V_TAG_INFO and others
are unassigned.</dd>
        <dt>S Type:</dt>
        <dd>
  4-bit, Session type, 1 for ANNOUNCEMENT or DEPLOYMENT, 2 for
REQUEST, 3 for REQUEST_ALL, 4 for ACK, 5 for NAK, 6 for AACK, 7 for
ANAK, 8 for RACK, 9 for RNAK and others are unassigned.</dd>
        <dt>Operation:</dt>
        <dd>
  8-bit, the first 3 bits means for whether RENEW Type or not. First
bit: 0 for non-RENEW packet, 1 for RENEW packet. Second bit: 0 for
the first non-RENEW packet, 1 for the first RENEW packet. Third
bit: 0 for the last non-RENEW packet, 1 for the last RENEW packet.</dd>
        <dt>Total Length:</dt>
        <dd>
  32-bit, the length of this packet: from Version to Data.</dd>
        <dt>Number of Records:</dt>
        <dd>
  32-bit, he records in Data.</dd>
        <dt>Transaction Number:</dt>
        <dd>
  32-bit, this is the identification of a publication, query or
response, and the value should increase monotonically. And
different I Types MUST have its own Transaction Number.</dd>
        <dt>Acknowledge Number:</dt>
        <dd>
  32-bit, it is only be filled when S Type is ACK, NAK, AACK, ANAK,
RACK or RNAK. Otherwise it is should be filled as 0.</dd>
        <dt>Data:</dt>
        <dd>
  Variable-length field. I Type and S Type specifies data jointly.</dd>
      </dl>
      <t>When S Type is ANNOUNCEMENT:</t>
      <ul spacing="normal">
        <li>If I Type = AD_REG_INFO, Data field SHOULD be one or more ARI_Rec.</li>
        <li>If I Type = AD_PREFIX_INFO, Data field SHOULD be one or more
API_Rec.</li>
        <li>If I Type = STATE_MACHINE_INFO, Data field SHOULD be one or more
SMI_Rec.</li>
        <li>If I Type = TAG_INFO, ALLI_TAG_INFO or AD_V_TAG_INFO, Data field
SHOULD be one or more TAG_Rec.</li>
      </ul>
      <t>When S Type is REQUEST or REQUEST_ALL:</t>
      <ul spacing="normal">
        <li>If I Type = REG_INFO, Data field SHOULD be one or more ADID_Rec.</li>
        <li>If I Type = AD_PREFIX_INFO, Data field SHOULD be none or one or
more ADID_Rec.</li>
        <li>If I Type = STATE_MACHINE_INFO, Data field SHOULD be none or one
or more ADID_Rec.</li>
        <li>If I Type = DIAGNOSE_INFO, Data field SHOULD be a 32-bit diagnose
reqeust code.</li>
        <li>If I Type = ALIVE_INFO, Data field SHOULD be none.</li>
      </ul>
      <t>When S Type is ACK, AACK or RACK:</t>
      <ul spacing="normal">
        <li>If I Type = REG_INFO, Data field SHOULD be one or more ARI_Rec.</li>
        <li>If I Type = AD_PREFIX_INFO, Data field SHOULD be one or more
API_Rec.</li>
        <li>If I Type = STATE_MACHINE_INFO, Data field SHOULD be one or more
SMI_Rec.</li>
        <li>If I Type = DIAGNOSE_INFO, Data field SHOULD be one 32-bit diagnose
response code.</li>
        <li>If I Type = ALIVE_INFO, Data field SHOULD be none.</li>
      </ul>
      <t>When S Type is NAK, ANAK or RNAK, Data field SHOULD be one 32-bit
error code:</t>
      <ul spacing="normal">
        <li>1 for parameters are wrong which means the packet cannot resolve
correctly.</li>
        <li>2 for member AD(s) in request packet does not exist in the
designative sub-trust alliance.</li>
        <li>3 for algorithm for State Machine set by source ACS cannot
support by the destination ACS.</li>
      </ul>
    </section>
    <section anchor="acs-acs-communication-protocol" numbered="true" toc="default">
      <name>ACS-ACS Communication Protocol</name>
      <t>Since the blockchain is adopted in SAVA-X to maintain the information
of the trust alliance, ACS can query the address domain information
of relevant ADes of the trust alliance and the AD prefix information
corresponding to the address domain from the blockchain.</t>
      <section anchor="announcement-query-and-response-of-state-machine-information" numbered="true" toc="default">
        <name>Announcement, Query and Response of State Machine Information</name>
        <t>State machine information record (SMI_Rec) represents the packet
format used when state machine is negotiated between different
ordered pairs of ADs. When an ordered pair of ADs is negotiating the
state machine, ACS of AD with smaller ADID initiates the 
communication and ACS of AD with larger ADID uses SMI_Rec determines
the information to be used, such as initial state, tag generation
algorithm, state transition interval, etc. Compared to ARI_Rec and
API_Rec,SMI_Rec also needs an Expiring Time in addition to the Effecting Time. Expiration Time stands when the negotiated state machine is no longer valid.</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
 +-+-+-+-+-+-+-+-+
 |     Action    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                       Source ADID_Rec                         |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                     Destination ADID_Rec                      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                       State Mathine ID                        |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |        Algorithm            |             IS Length           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 ~                        Initial State                          ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                      Transition Interval                      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                        Effecting Time                         |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                        Expiring Time                          |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl newline="false" spacing="normal">
          <dt>Action:</dt>
          <dd>
  8-bit, 1 for add or update this SMI_Rec.</dd>
          <dt>Source ADID_Rec:</dt>
          <dd>
  Variable-length field. Refer to ADID_Rec <xref target="SAVA-X-Control" format="default"/>.</dd>
          <dt>Destination ADID_Rec:</dt>
          <dd>
  Variable-length field. Refer to ADID_Rec in <xref target="SAVA-X-Control" format="default"/>.</dd>
          <dt>State Mathine ID:</dt>
          <dd>
  32-bit, the ID used to identify the state machine, which is unique
to a specific ordered AD pair and grows monotonically in use. It is
used to distinguish the sequence before and after the generation of
multiple state machines.</dd>
          <dt>Algorithm:</dt>
          <dd>
  16-bit, algorithm used in A-Box. 1 for KISS-99 32-bit, 2 for
KISS-99 64-bit Joint, 3 for OTP-2289 MD5 and others are unassigned.</dd>
          <dt>IS Length:</dt>
          <dd>
  16-bit, the length of Initial State field.</dd>
          <dt>Initial State:</dt>
          <dd>
  Variable-length field, the length of this filed is determined by IS
Length.</dd>
          <dt>Transition Interval:</dt>
          <dd>
  32-bit, the milliseconds of interval of state transition.</dd>
          <dt>Effecting Time:</dt>
          <dd>
  64-bit, when this field is 0, it means this State Machine should be
enabled after the last State Machine expired.</dd>
          <dt>Expiring Time:</dt>
          <dd>
  64-bit, the end of this State Machine.</dd>
        </dl>
        <section anchor="state-machine-information-announcement" numbered="true" toc="default">
          <name>State Machine Information Announcement</name>
          <t>State machine information announcement (SM_INFO-Announce) is sent
from source ACS to destination ACS. Source ACS fills in the following values for each field:</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Version</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">Alliance</td>
                <td align="left">The sub-trust alliance number.</td>
              </tr>
              <tr>
                <td align="left">I Type</td>
                <td align="left">SM_INFO</td>
              </tr>
              <tr>
                <td align="left">S Type</td>
                <td align="left">ANNOUNCEMENT</td>
              </tr>
              <tr>
                <td align="left">Operation</td>
                <td align="left">NULL: source ACS updates part of the state machines information to destination ACS. RENEW: source ACS updates all the state machines information to destination ACS.</td>
              </tr>
              <tr>
                <td align="left">Total Length</td>
                <td align="left">The length of this message.</td>
              </tr>
              <tr>
                <td align="left">Number of Records</td>
                <td align="left">The number of SMI_Recs in Data field.</td>
              </tr>
              <tr>
                <td align="left">Transaction Number</td>
                <td align="left">The last Transaction Number add 1. ACS would maintain a global Transaction Number for packets sent out where I Type is SM_INFO and ACS would keep it increasing monotonic.</td>
              </tr>
              <tr>
                <td align="left">Acknowledgement Number</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">One or more SMI_Recs.</td>
              </tr>
            </tbody>
          </table>
          <t>All SMI_Recs in Data field should have an unique SM_ID. When Action 
is ADD and SM_ID bigger than current used SM_ID, ACS should add the 
state machine defined in SMI_Rec. When Action is ADD and SM_ID equals 
to current used SM_ID, ACS should modify the state machine defined in 
SMI_Rec. Only Transition Interval and Expiring Time can be modified. 
Other SMI_Rec should be discarded and destination ACS should send a 
NAK message to source ACS.</t>
          <t>When receiving a non-RENEW packet, if it cannot resolve this message, 
destination ACS should send a NAK message to source ACS. When 
destination ACS can resolve the packet correctly, it SHOULD:</t>
          <ol spacing="normal" type="1"><li>Compare the Transaction Number in this packet with Transaction 
Number received from the same ACS before. Otherwise, destination ACS 
would discard this packet and send a SM_INFO-Request to request the 
lastest information of state machine. SM_INFO-Request is defined at 
<xref target="SM_INFO-Request" format="default"/>. If bigger, destination ACS WOULD:</li>
            <li>Accept every SMI_Rec and process them as following: 
  - If the SM_ID in SMI_Rec equals to current used SM_ID,
 destination ACS would update the current used SM_ID.
  - If the SM_ID in SMI_Rec bigger than current used SM_ID,
 destination ACS would add this state machine to its following
 used state machine list.</li>
            <li>And then destination ACS will send an SM_INFO-AACK message to source ACS.</li>
          </ol>
          <t>When receiving a RENEW packet, if it cannot resolve this message, 
destination ACS should send a SM_INFO-ANAK message to source ACS. 
When destination ACS can resolve the packet correctly, it SHOULD:</t>
          <ol spacing="normal" type="1"><li>Compare the Transaction Number in this packet with Transaction 
Number received from the same ACS before. Otherwise, destination ACS 
would discard this packet and send a SM_INFO-Request to request the 
lastest information of state machine. If bigger, destination ACS 
WOULD:</li>
            <li>Accept every SMI_Rec and process them as following: 
  - If the SM_ID in SMI_Rec equals to current used SM_ID,
 destination ACS would update the current used SM_ID. 
  - If the SM_ID in SMI_Rec bigger than current used SM_ID, 
 destination ACS would add this state machine to its following 
 used state machine list. Especially, state machines will be 
 removed right now when they are not listed in the SMI_Recs but 
 they are in using.</li>
            <li>And then destination ACS will send an SM_INFO-AACK message to
source ACS.</li>
          </ol>
          <t>There are two types of reply of SM_INFO-Annouce message. That is 
SM_INFO-AACK representing affirmative acknowledgement and 
SM_INFO-ANAK representing negative acknowledgement. These are sent 
from destination ACS to source ACS. The mainly part of packet is 
filled by destination ACS as follows:</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Version</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">Alliance</td>
                <td align="left">The sub-trust alliance number.</td>
              </tr>
              <tr>
                <td align="left">I Type</td>
                <td align="left">SM_INFO</td>
              </tr>
              <tr>
                <td align="left">S Type</td>
                <td align="left">AACK if it is affirmative acknowledgement or ANAK if it is negative acknowledgement.</td>
              </tr>
              <tr>
                <td align="left">Operation</td>
                <td align="left">NULL</td>
              </tr>
              <tr>
                <td align="left">Total Length</td>
                <td align="left">The length of this message.</td>
              </tr>
              <tr>
                <td align="left">Number of Records</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Transaction Number</td>
                <td align="left">The last Transaction Number add 1. ACS would maintain a global Transaction Number for packets sent out where I Type is SM_INFO and ACS would keep it increasing monotonic.</td>
              </tr>
              <tr>
                <td align="left">Acknowledgement Number</td>
                <td align="left">The Transaction Number of the response corresponding request.</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">S Type = AACK: None. S Type = ANAK: a 32-bit error code defined in <xref target="pkt-format" format="default"/>.</td>
              </tr>
            </tbody>
          </table>
          <t>Nothing needs to do when source ACS receives an SM_INFO-AACK message
while it should regenerate a new state machine and announces to
destination ACS when source ACS receives an SM_INFO-ANAK message.</t>
        </section>
        <section anchor="SM_INFO-Request" numbered="true" toc="default">
          <name>State Machine Information Request</name>
          <t>State machine information request (SM_INFO-Request) is sent from
source ACS to destination ACS. Source ACS fills in the following values for each field:</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Version</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">Alliance</td>
                <td align="left">The sub-trust alliance number.</td>
              </tr>
              <tr>
                <td align="left">I Type</td>
                <td align="left">SM_INFO</td>
              </tr>
              <tr>
                <td align="left">S Type</td>
                <td align="left">REQUEST</td>
              </tr>
              <tr>
                <td align="left">Operation</td>
                <td align="left">NULL: announce all state machine information to source ACS.</td>
              </tr>
              <tr>
                <td align="left">Total Length</td>
                <td align="left">The length of this message.</td>
              </tr>
              <tr>
                <td align="left">Number of Records</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Transaction Number</td>
                <td align="left">The last Transaction Number add 1. ACS would maintain a global Transaction Number for packets sent out where I Type is SM_INFO and ACS would keep it increasing monotonic.</td>
              </tr>
              <tr>
                <td align="left">Acknowledgement Number</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">None</td>
              </tr>
            </tbody>
          </table>
          <t>When source ACS receives a SM_INFO-Request message, it would send a
SM_INFO-RNAK message to destination ACS if some fields are wrong. 
Otherwise, source ACS would send an SM_INFO-RACK message to 
destination ACS and process this SM_INFO-Request message. Source ACS 
should compare the Transaction Number in this message with 
Transaction Number received from the same destination ACS before. 
Otherwise, source ACS would discard this packet. If bigger, source 
ACS would send an SM_INFO-RACK message to destination ACS.</t>
          <t>There are two types of reply of SM_INFO-Request message, i.e. 
SM_INFO-RACK representing affirmative acknowledgement and 
SM_INFO-RNAK representing negative acknowledgement. These are sent 
from source ACS to destination ACS. The mainly part of packet is 
filled by source ACS as follows:
I Type is SM_INFO. S Type is RACK if it is affirmative 
acknowledgement or RNAK if it is negative acknowledgement. Operation 
is NULL. When S Type is RACK, Data field is a few of SMI_Recs. When S 
Type is RNAK, Data field is a 32-bit error code.</t>
          <t>When receiving a SM_INFO-RACK message, if it cannot resolve this 
message, destination ACS should send a SM_INFO-Request message to 
source ACS to acquire another state machine. When destination ACS can 
resolve the message correctly, it SHOULD:</t>
          <ol spacing="normal" type="1"><li>Compare the Transaction Number in this packet with Transaction 
Number received from the same source ACS before. Otherwise, 
destination ACS would discard this packet and send a SM_INFO-Request 
to request the lastest information of state machine. If bigger, destination ACS WOULD:</li>
            <li>Accept every SMI_Rec and process them as following: 
  - If the SM_ID in SMI_Rec equals to current used SM_ID, destination ACS would update the current used SM_ID. 
  - If the SM_ID in SMI_Rec bigger than current used SM_ID, destination ACS would add this state machine to its following used state machine list.</li>
            <li>And then destination ACS will send an SM_INFO-AACK message to source ACS.</li>
          </ol>
          <t>When receiving a SM_INFO-RNAK message, if it cannot resolve this 
message, destination ACS should send a SM_INFO-Request message to 
source ACS to acquire new state machine. When destination ACS can 
resolve the message correctly, it SHOULD compare the Transaction 
Number in this packet with Transaction Number received from the same 
source ACS before. Otherwise, destination ACS would discard this 
packet and send a SM_INFO-Request to request the lastest information 
of state machine. If bigger, destination ACS WOULD send a new correct 
SM_INFO-Request message to source ACS.</t>
        </section>
      </section>
      <section anchor="request-and-response-of-diagnose-information" numbered="true" toc="default">
        <name>Request and Response of Diagnose Information</name>
        <t>Sent by destination ACS, request of diagnose information
(DIAG_INFO-Request) is used to require the source ACS to check its
configuration and source AERs' settings. Source ACS will response
with its result. Destination ACS fills in the following values for each field:</t>
        <table align="center">
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Version</td>
              <td align="left">1</td>
            </tr>
            <tr>
              <td align="left">Alliance</td>
              <td align="left">The sub-trust alliance number.</td>
            </tr>
            <tr>
              <td align="left">I Type</td>
              <td align="left">DIAG_INFO</td>
            </tr>
            <tr>
              <td align="left">S Type</td>
              <td align="left">REQUEST</td>
            </tr>
            <tr>
              <td align="left">Operation</td>
              <td align="left">NULL</td>
            </tr>
            <tr>
              <td align="left">Total Length</td>
              <td align="left">The length of this message.</td>
            </tr>
            <tr>
              <td align="left">Number of Records</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">Transaction Number</td>
              <td align="left">The last Transaction Number add 1. ACS would maintain a global Transaction Number for packets sent out where I Type is DIAG_INFO and ACS would keep it increasing monotonic.</td>
            </tr>
            <tr>
              <td align="left">Acknowledgement Number</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">Data</td>
              <td align="left">a 32-bit error code defined below.</td>
            </tr>
          </tbody>
        </table>
        <t>Response of diagnose information (DIAG_INFO-Response) replys from
source ACS to destination ACS.</t>
        <table align="center">
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Version</td>
              <td align="left">1</td>
            </tr>
            <tr>
              <td align="left">Alliance</td>
              <td align="left">The sub-trust alliance number.</td>
            </tr>
            <tr>
              <td align="left">I Type</td>
              <td align="left">DIAG_INFO</td>
            </tr>
            <tr>
              <td align="left">S Type</td>
              <td align="left">ACK</td>
            </tr>
            <tr>
              <td align="left">Operation</td>
              <td align="left">NULL</td>
            </tr>
            <tr>
              <td align="left">Total Length</td>
              <td align="left">The length of this message.</td>
            </tr>
            <tr>
              <td align="left">Number of Records</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">Transaction Number</td>
              <td align="left">The last Transaction Number add 1. ACS would maintain a global Transaction Number for packets sent out where I Type is DIAG_INFO and ACS would keep it increasing monotonic.</td>
            </tr>
            <tr>
              <td align="left">Acknowledgement Number</td>
              <td align="left">The Transaction Number of the response corresponding request.</td>
            </tr>
            <tr>
              <td align="left">Data</td>
              <td align="left">a 32-bit error code defined below.</td>
            </tr>
          </tbody>
        </table>
        <t>Before it sends the DIAG_INFO-Request message, the destination ACS 
should check its own configuration and gurantee they are correct.</t>
        <t>If it receives a DIAG_INFO-Request message, the source ACS would 
check the communication with its own AER whether correct or not.</t>
        <ol spacing="normal" type="1"><li>If it's wrong, source ACS would reply a DIAG_INFO-Response message
in which its Data filed is filled with 2 for fault cannot be repaired 
and alarm to administrator to deal with this problem.</li>
          <li>If it's right, source ACS would RENEW all the registration 
information, prefix information and state machine information to its 
all AERs. After that, source ACS will reply a DIAG_INFO-Response 
message in which its Data filed is filled with 1 for all runs 
correctly after repairing.</li>
        </ol>
      </section>
    </section>
    <section anchor="acs-aer-communication-protocol" numbered="true" toc="default">
      <name>ACS-AER Communication Protocol</name>
      <t>ACS would periodically deploy AD registration information, AD prefix 
information, and state machine information of relevant ADes to its 
all AERs to guarantee all information are latest. And ACS also would 
deploy the tag information to its all AERs periodically.</t>
      <section anchor="deployment-request-and-response-of-ad-registration-information" numbered="true" toc="default">
        <name>Deployment, Request and Response of AD Registration information</name>
        <section anchor="deployment-of-ad-registration-information" numbered="true" toc="default">
          <name>Deployment of AD Registration Information</name>
          <t>After connecting with AER, ACS deploys the AD Registration 
Information (REG_INFO-Deploy) to AER peroidically. I Type is 
REG_INFO. S Type is Announcement. Operation is NULL when some ADes' 
information are joined, left or updated and Operation is RENEW when 
all ADes' information are deployed. Acknowledgement is 0. Data field 
is one or more ARI_Rec.</t>
          <t>It should be noted that when there are two ARI_Recs in Data fields 
responding to the same AD, one may effect right now and the other 
effects after passing Effecting Time. When AER receives this message, 
all of them should be restored in the trust alliance list and AER 
MUST process them orderly. Since the protocol processes the records 
in sequence, it is required that the ARI_Rec effecting at the current 
time for the same member AD should appear in front of another 
updating ARI_Rec.</t>
          <t>When receiving a non-RENEW packet, if it cannot resolve this message, 
AER could send a REG_INFO-Request message to acquire the latest AD 
registration information.</t>
          <t>When AER can resolve this message correctly, it SHOULD:</t>
          <ol spacing="normal" type="1"><li>Compare the Transaction Number in this packet with Transaction 
Number received from the same ACS before. If bigger, AER WOULD accept 
every ARI_Rec and process them as follows. Otherwise, AER would 
discard this packet and send a REG_INFO-RequestAll message to acquire 
the lastest information of AD registration information.</li>
            <li>Process every ARI_Rec:
  - If Action is ADD and the record does not exist in its maintained 
 trust alliance list, AER would add this record to its trust 
 alliance list.
  - If Action is ADD and the record exists in its maintained trust 
 alliance list but ACS Address is changed, AER would add this 
 record to its trust alliance list and delete original record 
 after passing Effecting Time in this ARI_Rec.
  - If Action is ADD and the record exists in its maintained trust 
 alliance list and ACS Address is not changed, AER would do 
 nothing.
  - If Action is DEL and the record exists in its maintained trust 
 alliance list, AER would remove this record from its trust 
 alliance list after passing Effecting Time in this ARI_Rec.</li>
            <li>If a change is made in step 2, the update should take effect after 
passing the Effecting Time, which acts on the data plane. If the 
Effecting Time is earlier than the current time or is all 0, it will 
take effect immediately.</li>
          </ol>
          <t>AER acts as following when receiving a RENEW packet. When ACS 
initiates RENEW, it would send a RENEW meesge with which the first 
bit of Operation field is 1. The second bit of Operation field 
identifies the begin of a procedure of RENEW and the third bit of 
Operation field identifies the end of a procedure of RENEW. ACS MUST 
NOT send a RENEW packet with which the first bit of Operation field 
is 0 in RENEWing. AER MUST process this procedure of RENEW after 
received all RENEW packets.
When AER can resolve this packet correctly, it SHOULD:</t>
          <ol spacing="normal" type="1"><li>Compare the Transaction Number in this packet with Transaction 
  Number received from the same ACS before. If bigger, AER would 
  accept every ARI_Rec and process them as follows. Otherwise, AER 
  would discard this packet and send a REG_INFO-RequestAll message to 
  acquire the lastest information of AD registration information.</li>
            <li>Process every ARI_Rec:
- If the record does not exist in its maintained trust alliance list, 
  AER would add this record to its trust alliance list.
- If the record exists in its maintained trust alliance list but ACS 
  Address is changed, AER would add this record to its trust alliance 
  list and delete original record after passing Effecting Time in this ARI_Rec.
- If the record exists in its maintained trust alliance list and ACS 
  Address is not changed, AER would do nothing.
- If there are some records in the original trust alliance list that 
  do not appear in the Data field during this RENEW process, they 
  will be deleted immediately.</li>
            <li>If a change is made in step 2, the update should take effect after 
  passing the Effecting Time, which acts on the data plane. If the 
  Effecting Time is earlier than the current time or is all 0, it 
  will take effect immediately.</li>
          </ol>
        </section>
        <section anchor="request-of-ad-registration-information" numbered="true" toc="default">
          <name>Request of AD Registration Information</name>
          <t>The request is sent by AER to ACS. There are two types of request of 
AD Registration Information message. When querying the information of 
all member ADs of the trust alliance, the type is REG_INFO-RequestAll 
and REG_INFO-Request is used when querying the information of partial 
member ADs of the trust alliance.</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Version</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">Alliance</td>
                <td align="left">The sub-trust alliance number.</td>
              </tr>
              <tr>
                <td align="left">I Type</td>
                <td align="left">REG_INFO</td>
              </tr>
              <tr>
                <td align="left">S Type</td>
                <td align="left">REQUEST: for querying partial member ADs and S Type is REQUEST_ALL: for querying all member ADs.</td>
              </tr>
              <tr>
                <td align="left">Operation</td>
                <td align="left">NULL</td>
              </tr>
              <tr>
                <td align="left">Total Length</td>
                <td align="left">The length of this message.</td>
              </tr>
              <tr>
                <td align="left">Number of Records</td>
                <td align="left">S Type = REQUEST: the number of ADID_Recs in Data field. S Type = REQUEST_ALL: 0.</td>
              </tr>
              <tr>
                <td align="left">Transaction Number</td>
                <td align="left">The last Transaction Number add 1. AER would maintain a global Transaction Number for packets sent out to ACS where I Type is REG_INFO and AER would keep it increasing monotonic.</td>
              </tr>
              <tr>
                <td align="left">Acknowledgement Number</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">S Type = REQUEST: one or more ADID_Recs. S Type = REQUEST_ALL: None.</td>
              </tr>
            </tbody>
          </table>
          <t>When processing REG_INFO-Request(ALL) message, ACS would reply 
REG_INFO-NAK to AER if it holds some fields are wrong. For example, 
AER requests one ARI_Rec that does not exist. Otherwise, REG_INFO-ACK 
message will be replyed. ACS WOULD process as follows:</t>
          <ol spacing="normal" type="1"><li>ACS SHOULD compare the Transaction Number in this packet with 
Transaction Number received from the same AER before. If bigger, ACS 
would process as step 2. Otherwise, AER WOULD discard this packet and 
send a REG_INFO-NAK message to AER.</li>
            <li>ACS processes every ADID_Rec. If the AD exists in its maintained 
trust alliance list, ACS would mark this record as "Reply". Otherwise 
ACS would mark this record as "Negative Reply". Especially, all 
records would be marked with "Reply" when Operation field is 
REQUEST_ALL.</li>
            <li>If any case in step 2 is marked with "Negative Reply", ACS would 
construct a REG_INFO-NAK message to reply to the AER. Otherwise, a 
REG_INFO-ACK message is constructed to reply the AD registration 
information of all members marked with "Reply" to the AER.</li>
          </ol>
        </section>
        <section anchor="reponse-of-ad-registration-information" numbered="true" toc="default">
          <name>Reponse of AD Registration Information</name>
          <t>AD registration information response includs two types. That is 
REG_INFO-ACK and REG_INFO-NAK. ACS will reply to AER according to the 
request of registration information sent by AER to ACS.</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Version</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">Alliance</td>
                <td align="left">The sub-trust alliance number.</td>
              </tr>
              <tr>
                <td align="left">I Type</td>
                <td align="left">REG_INFO</td>
              </tr>
              <tr>
                <td align="left">S Type</td>
                <td align="left">ACK: representing affirmative acknowledgement. NAK: representing negative acknowledgement.</td>
              </tr>
              <tr>
                <td align="left">Operation</td>
                <td align="left">NULL: REG_INFO-Request message. RENEW: REG_INFO-RequestAll.</td>
              </tr>
              <tr>
                <td align="left">Total Length</td>
                <td align="left">The length of this message.</td>
              </tr>
              <tr>
                <td align="left">Number of Records</td>
                <td align="left">S Type = ACK: the number of ARI_Recs in Data field. S Type = REQUEST_ALL: 0.</td>
              </tr>
              <tr>
                <td align="left">Transaction Number</td>
                <td align="left">The last Transaction Number add 1. ACS would maintain a global Transaction Number for packets sent out to AER where I Type is REG_INFO and ACS would keep it increasing monotonic.</td>
              </tr>
              <tr>
                <td align="left">Acknowledgement Number</td>
                <td align="left">The Transaction Number of the response corresponding request.</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">S Type = ACK: one or more ARI_Recs. S Type = NAK: a 32-bit error code defined at <xref target="pkt-format" format="default"/>. There is no boundary identification between these ARI_Recs, which requires that the implementation of the protocol can process each record sequentially until the end of this message.</td>
              </tr>
            </tbody>
          </table>
          <t>It should be noted that when there are two ARI_Recs in Data fields 
responding to the same AD, one may effect right now and the other 
effects after passing Effecting Time. When AER receives this message, 
all of them should be restored in the trust alliance list and AER 
MUST process them orderly. Since the protocol processes the records 
in sequence, it is required that the ARI_Rec effecting at the current 
time for the same member AD should appear in front of another 
updating ARI_Rec.</t>
          <t>When receiving a non-RENEW REG_INFO-ACK message, if it holds that 
some fields are wrong, AER could send a REG_INFO-RequestAll message 
to acquire the latest AD registration information. Otherwise, AER 
would act as follows.</t>
          <ol spacing="normal" type="1"><li>AER SHOULD compare the Transaction Number in this packet with 
Transaction Number received from the same ACS before. If bigger, AER 
would process them as follows. Otherwise, AER would discard this 
packet and send a REG_INFO-RequestAll message to acquire the lastest 
information of AD registration information.</li>
            <li>AER WOULD processes every ARI_Rec:
- If Action is ADD and the record does not exist in its maintained 
trust alliance list, AER would add this record to its trust alliance 
list.
  - If Action is ADD and the record exists in its maintained trust 
  alliance list but ACS Address is changed, AER would add this record 
  to its trust alliance list and delete original record after 
  passing 
  Effecting Time in this ARI_Rec.
  - If Action is ADD and the record exists in its maintained trust 
  alliance list and ACS Address is not changed, AER would do nothing.
  - If Action is DEL and the record exists in its maintained trust 
  alliance list, AER would remove this record from its trust 
  alliance 
  list after passing Effecting Time in this ARI_Rec.</li>
            <li>If a change is made in step 2, the update should take effect after 
passing the Effecting Time, which acts on the data plane. If the 
Effecting Time is earlier than the current time or is all 0, it will 
take effect immediately.</li>
          </ol>
          <t>AER acts as following when receiving a RENEW REG_INFO-ACK message. 
When ACS initiates RENEW, it would send a RENEW meesge with which the 
first bit of Operation field is 1. The second bit of Operation field 
identifies the begin of a procedure of RENEW and the third bit of 
Operation field identifies the end of a procedure of RENEW. ACS MUST 
NOT send a RENEW packet with which the first bit of Operation field 
is 0 in RENEWing. AER MUST process this procedure of RENEW after 
received all RENEW packets.
When AER can resolve this packet correctly, it SHOULD:</t>
          <ol spacing="normal" type="1"><li>Compare the Transaction Number in this packet with Transaction 
Number received from the same ACS before. If bigger, AER would accept 
every ARI_Rec and process them as step 2. Otherwise, AER would 
discard this packet and send a REG_INFO-RequestAll message to acquire 
the lastest information of AD registration information.</li>
            <li>Process every ARI_Rec:
  - If the record does not exist in its maintained trust alliance 
  list, AER would add this record to its trust alliance list.
  - If the record exists in its maintained trust alliance list but 
  ACS Address is changed, AER would add this record to its trust 
  alliance list and delete original record after passing Effecting 
  Time in this ARI_Rec.
  - If the record exists in its maintained trust alliance list and 
  ACS Address is not changed, AER would do nothing.
  -If there are some records in the original trust alliance list that 
  do not appear in the Data field during this RENEW process, they 
  will be deleted immediately.</li>
            <li>If a change is made in step 2, the update should take effect after 
passing the Effecting Time, which acts on the data plane. If the 
Effecting Time is earlier than the current time or is all 0, it will 
take effect immediately.</li>
          </ol>
          <t>When AER receives an REG_INFO-NAK message, it could send a 
REG_INFO-RequestAll message to ACS to acquire the latest AD 
registration information.</t>
        </section>
      </section>
      <section anchor="deployment-request-and-reply-of-ad-prefix-information" numbered="true" toc="default">
        <name>Deployment, Request and Reply of AD Prefix Information</name>
        <section anchor="deployment-of-ad-prefix-information" numbered="true" toc="default">
          <name>Deployment of AD Prefix Information</name>
          <t>AD prefix information deployment (PFX_INFO-Deploy) is sent from ACS 
to AER. ACS fills in the following values for each field:</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Version</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">Alliance</td>
                <td align="left">The sub-trust alliance number.</td>
              </tr>
              <tr>
                <td align="left">I Type</td>
                <td align="left">AD_PREFIX_INFO</td>
              </tr>
              <tr>
                <td align="left">S Type</td>
                <td align="left">DEPLOYMENT</td>
              </tr>
              <tr>
                <td align="left">Operation</td>
                <td align="left">NULL: to publish partial update information of member ADs' prefix. RENEW: to publish all member ADs' prefix.</td>
              </tr>
              <tr>
                <td align="left">Total Length</td>
                <td align="left">The length of this message.</td>
              </tr>
              <tr>
                <td align="left">Number of Records</td>
                <td align="left">The number of API_Recs in Data field.</td>
              </tr>
              <tr>
                <td align="left">Transaction Number</td>
                <td align="left">The last Transaction Number add 1. ACS would maintain a global Transaction Number for packets sent out to AER where I Type is AD_PREFIX_INFO and ACS would keep it increasing monotonic.</td>
              </tr>
              <tr>
                <td align="left">Acknowledgement Number</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">One or more API_Recs. There is no boundary identification between these API_Recs, which requires that the implementation of the protocol can process each record sequentially until the end of this message.</td>
              </tr>
            </tbody>
          </table>
          <t>It should be noted that when there are two ARI_Recs in Data fields 
responding to the same AD, one may effect right now and the other is 
update message for ADD or DEL effecting after the Effecting Time. For 
example, if the current time is 5 and there are two records 
corresponding to the prefix P, in which the Effecting Time of record 
R1 is 1, the action is ADD, the Effecting Time of record R2 is 7 and 
the action is DEL, then it indicates that the prefix P is currently 
valid effective from time 1 and becomes invalid at time 7. When ACS 
or AER receives this message, all of them should be restored in the 
database and ACS should send them all when deploying. Since the 
protocol processes the records in sequence, it is required that the 
API_Rec effecting at the current time for the same member AD should 
appear in front of another updating API_Rec.</t>
          <t>When receiving a non-RENEW PFX_INFO-Deploy message, if it holds that 
some fields are wrong, for example, it requires to delete a API_Rec 
that does not exist or to add some prefix that is conflict with other 
member ADs, AER could send a request message to acquire the latest AD 
prefix information. Otherwise, AER would act as follows.</t>
          <ol spacing="normal" type="1"><li>AER SHOULD compare the Transaction Number in this packet with 
Transaction Number received from the same ACS before. If bigger, AER 
WOULD process them as step 2. Otherwise, AER would discard this 
packet and send a PFX_INFO-RequestAll message to acquire the lastest 
information of AD prefix information.</li>
            <li>AER processes every API_Rec:
  - If Action is ADD and the record does not exist in its maintained 
  prefix list, AER would add this record to its prefix list.
  - If Action is ADD and the record exists in its maintained prefix 
  list, AER would do nothing.
  - If Action is DEL and the record exists in its maintained prefix 
  list, AER would remove this record from its prefix list after 
  Effecting Time.</li>
            <li>If a change is made in step 2, the update should take effect after 
the Effecting Time, which acts on the data plane. If the Effecting 
Time is earlier than the current time or is all 0, it will take 
effect immediately.</li>
          </ol>
          <t>AER acts as following when receiving a RENEW PFX_INFO-Deploy message. 
When ACS initiates RENEW, it would send a RENEW meesge with which the 
first bit of Operation field is 1. The second bit of Operation field 
identifies the begin of a procedure of RENEW and the third bit of 
Operation field identifies the end of a procedure of RENEW. ACS MUST 
NOT send a RENEW packet with which the first bit of Operation field 
is 0 in RENEWing. AER SHOULD uniformly process all packets in this 
RENEW process after receiving all RENEW packets.</t>
          <ol spacing="normal" type="1"><li>AER SHOULD compare the Transaction Number in this packet with 
Transaction Number received from the same ACS before. If bigger, AER 
WOULD process as step 2. Otherwise, AER would discard this message 
and send a PFX_INFO-RequestAll message to acquire the lastest 
information of AD prefix information.</li>
            <li>AER processes every API_Rec:
  - If the record does not exist in its maintained prefix list, AER 
  would add this record to its trust alliance list.
  - If the record exists in its maintained prefix list, AER would do 
  nothing.
  - If there are some records in the original prefix list that do not 
  appear in the Data field during this RENEW process, these records 
  will be deleted immediately.</li>
            <li>If a change is made in step 2, the update should take effect after 
passing the Effecting Time, which acts on the data plane. If the 
Effecting Time is earlier than the current time or is all 0, it will 
take effect immediately.</li>
          </ol>
        </section>
        <section anchor="request-of-ad-prefix-information" numbered="true" toc="default">
          <name>Request of AD Prefix Information</name>
          <t>AD prefix information request (PFX_INFO-RequestAll) is sent from AER to 
ACS to query some member ADs', including itself, all latest AD prefix 
information. 
AER fills in the following values for each field:</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Version</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">Alliance</td>
                <td align="left">The sub-trust alliance number.</td>
              </tr>
              <tr>
                <td align="left">I Type</td>
                <td align="left">AD_PREFIX_INFO</td>
              </tr>
              <tr>
                <td align="left">S Type</td>
                <td align="left">REQUEST_ALL: querying from ACS the latest AD prefix information of all member ADs.</td>
              </tr>
              <tr>
                <td align="left">Operation</td>
                <td align="left">NULL</td>
              </tr>
              <tr>
                <td align="left">Total Length</td>
                <td align="left">The length of this message.</td>
              </tr>
              <tr>
                <td align="left">Number of Records</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Transaction Number</td>
                <td align="left">The last Transaction Number add 1. AER would maintain a global Transaction Number for packets sent out to ACS where I Type is AD_PREFIX_INFO and AER would keep it increasing monotonic.</td>
              </tr>
              <tr>
                <td align="left">Acknowledgement Number</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">None</td>
              </tr>
            </tbody>
          </table>
          <t>When receiving a PFX_INFO-RequestAll message, if it holds that some 
fields are wrong, ACS could send a PFX_INFO-NAK. Otherwise, ACS would 
act as follows. The specific construction methods of PFX_INFO-ACK and 
PFX_INFO-NAK are described in <xref target="PFX_INFO-Response" format="default"/>.</t>
          <ol spacing="normal" type="1"><li>ACS SHOULD compare the Transaction Number in this packet with 
Transaction Number whose I Type is PFX_INFO received from the same 
AER before. If bigger, ACS WOULD process them as step 2. Otherwise, 
ACS would discard this packet and send a PFX_INFO-NAK message.</li>
            <li>ACS processes every ADID_Rec. If AD exists in the maintained trust 
alliance list, ACS would mark this record as "Reply". Otherwise, ACS 
wourld mark this rocord as "Negative Reply". Particularly, all 
records are marked with "Reply" when S Type is REQUEST_ALL.</li>
            <li>If any case in step 2 is marked with "Negative Reply", ACS would 
construct a PFX_INFO-NAK message to reply to the AER. Otherwise, a 
PFX_INFO-ACK message is constructed to reply the AD prefix 
information of all members marked with "Reply" to the AER.</li>
          </ol>
        </section>
        <section anchor="PFX_INFO-Response" numbered="true" toc="default">
          <name>Response of AD Prefix Information</name>
          <t>AD prefix information response includs two types. That is 
PFX_INFO-ACK and PFX_INFO-NAK. According to the request sent by AER, 
if some fields are wrong, ACS will reply NAK, in which the error 
code is "parameter error". If a non-existent member AD is queried, 
the error code is "the requested member AD does not exist", which 
defined as before will not be repeated. The following mainly 
introduces PFX_INFO-ACK response. ACS fills in the following values 
for each field:</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Version</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">Alliance</td>
                <td align="left">The sub-trust alliance number.</td>
              </tr>
              <tr>
                <td align="left">I Type</td>
                <td align="left">AD_PREFIX_INFO</td>
              </tr>
              <tr>
                <td align="left">S Type</td>
                <td align="left">ACK: representing affirmative acknowledgement. NAK: representing negative acknowledgement.</td>
              </tr>
              <tr>
                <td align="left">Operation</td>
                <td align="left">RENEW: replying the latest AD prefix information to AER.</td>
              </tr>
              <tr>
                <td align="left">Total Length</td>
                <td align="left">The length of this message.</td>
              </tr>
              <tr>
                <td align="left">Number of Records</td>
                <td align="left">S Type = ACK: the number of API_Rec in Data field. S Type = NAK: 0</td>
              </tr>
              <tr>
                <td align="left">Transaction Number</td>
                <td align="left">The last Transaction Number add 1. ACS would maintain a global Transaction Number for packets sent out to AER where I Type is AD_PREFIX_INFO and ACS would keep it increasing monotonic.</td>
              </tr>
              <tr>
                <td align="left">Acknowledgement Number</td>
                <td align="left">The Transaction Number of the response corresponding request.</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">S Type = ACK: One or more latest requested API_Rec. S Type = NAK: a 32-bit error code defined in <xref target="pkt-format" format="default"/>. There is no boundary identification between these API_Recs, which requires that the implementation of the protocol can process each record sequentially until the end of this message.</td>
              </tr>
            </tbody>
          </table>
          <t>When receiving a non-RENEW PFX_INFO-ACK message which is the 
positive reply to the request of AD prefix sent from ACS to AER, if 
it holds that some fields are wrong, AER could send a request 
message to acquire the latest AD prefix information. Otherwise, AER 
would act as follows.</t>
          <ol spacing="normal" type="1"><li>AER SHOULD compare the Transaction Number in this packet with 
Transaction Number whose I Type is PFX_INFO received from the same 
ACS before. If bigger, AER would process them as follows. Otherwise, 
AER would discard this packet and send REG_INFO-RequestAll and 
PFX_INFO-RequestAll messages to acquire the lastest information.</li>
            <li>AER processes every API_Rec:
  - If Action is ADD and the record does not exist in its maintained 
  prefix list, AER would add this record to its prefix list.
  - If Action is ADD and the record exists in its maintained prefix 
  list, AER would do nothing.
  - If Action is DEL and the record exists in its maintained prefix 
  list, AER would remove this record from its prefix list after 
  Effecting Time.</li>
            <li>If a change is made in step 2, the update should take effect 
after the Effecting Time, which acts on the data plane. If the 
Effecting Time is earlier than the current time or is all 0, it will 
take effect immediately.</li>
          </ol>
          <t>AER acts as following when receiving a RENEW PFX_INFO-ACK message. 
When ACS initiates RENEW process, it would send a RENEW meesge with 
which the first bit of Operation field is 1. The second bit of 
Operation field identifies the begin of a procedure of RENEW and the 
third bit of Operation field identifies the end of a procedure of 
RENEW. ACS MUST NOT send a RENEW packet with which the first bit of 
Operation field is 0 in RENEW process. AER SHOULD uniformly process 
all packets in this RENEW process after receiving all RENEW packets.</t>
          <ol spacing="normal" type="1"><li>AER SHOULD compare the Transaction Number in this packet with 
Transaction Number whose I Type is PFX_INFO received from the same 
ACS before. If bigger, AER WOULD process as step 2. Otherwise, AER 
would discard this message and send REG_INFO-RequestAll and 
PFX_INFO-RequestAll messages to acquire the lastest information.</li>
            <li>AER processes every API_Rec. All Action in API_Recs is ADD during 
RENEW process.
  - If the record does not exist in its maintained prefix list, AER 
  would add this record to its trust alliance list.
  - If the record exists in its maintained prefix list, AER would do 
  nothing.
  - If there are some records in the original prefix list that do 
  not appear in the Data field during this RENEW process, these 
  records will be deleted immediately.</li>
            <li>If a change is made in step 2, the update message should take 
effect after the Effecting Time, which acts on the data plane. If 
the Effecting Time is earlier than current time or is all 0, it will 
take effect immediately.</li>
          </ol>
          <t>When AER receives an PFX_INFO-NAK message, it could send 
REG_INFO-RequestAll and PFX_INFO-RequestAll messages to ACS to 
acquire the latest AD registration information and AD prefix 
information.</t>
        </section>
      </section>
      <section anchor="deployment-request-and-response-of-state-machine-information" numbered="true" toc="default">
        <name>Deployment, Request and Response of State Machine Information</name>
        <section anchor="deployment-of-state-machine-information" numbered="true" toc="default">
          <name>Deployment of State Machine Information</name>
          <t>State machine information deployment (SM_INFO-Deploy) is sent from 
ACS to AER. ACS fills in the following values for each field:</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Version</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">Alliance</td>
                <td align="left">The sub-trust alliance number.</td>
              </tr>
              <tr>
                <td align="left">I Type</td>
                <td align="left">SM_INFO</td>
              </tr>
              <tr>
                <td align="left">S Type</td>
                <td align="left">DEPLOYMENT</td>
              </tr>
              <tr>
                <td align="left">Operation</td>
                <td align="left">NULL: to publish the partial update of state machine maintained by the pair of this AD and another AD and Operation is RENEW: to publish wholesome update of state machine maintained by the pair of this AD and another AD.</td>
              </tr>
              <tr>
                <td align="left">Total Length</td>
                <td align="left">The length of this message.</td>
              </tr>
              <tr>
                <td align="left">Number of Records</td>
                <td align="left">The number of SMI_Recs in Data field</td>
              </tr>
              <tr>
                <td align="left">Transaction Number</td>
                <td align="left">The last Transaction Number add 1. ACS would maintain a global Transaction Number for packets sent out to AER where I Type is SM_INFO and ACS would keep it increasing monotonic.</td>
              </tr>
              <tr>
                <td align="left">Acknowledgement Number</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">One or more SMI_Recs. There is no boundary identification between these ARI_Recs, which requires that the implementation of the protocol can process each record sequentially until the end of this message.</td>
              </tr>
            </tbody>
          </table>
          <t>It should be noted that state machine is responding to a ordered AD 
pair. The state machine information mastered by ACS includes the 
state machine information from this AD to another member AD, and the 
state machine information from another member AD to this AD. When 
ACS deployment is partially updated, only some changed or newly 
added state machines are deployed. When ACS deploys the update of 
RENEW message, it is necessary to deploy all existing and updated 
information. For the same ordered AD pair, there cannot be two or 
more SMI_Recs using the same SM_ID in Data field. In addition, there 
are two actions for SMI_Rec: one is to add a SM whose SM_ID is 
bigger than current using state machine. The second is to modify an 
existing state machine whose SM_ID equals to current using state 
machine. Both of them are using Action ADD. Here we requires only 
Transition Interval and Expiring Time can be updated.</t>
          <t>When receiving a non-RENEW SM_INFO-Deploy message sent from ACS to 
AER, if it holds that some fields are wrong, for example, Action is 
DEL or SM_ID is smaller than current state machine in using, AER 
could send a request message to acquire the latest information. 
Otherwise, AER would act as follows.</t>
          <ol spacing="normal" type="1"><li>AER SHOULD compare the Transaction Number in this packet with 
Transaction Number whose I Type is SM_INFO received from the same 
ACS before. If bigger, AER WOULD process them as step 2. Otherwise, 
AER would discard this packet and send REG_INFO-RequestAll and 
request messages to acquire the lastest information.</li>
            <li>AER processes every SMI_Rec:
  - If SM_ID equals to the current using state machine, AER should 
  update the state machine in use.
  - If SM_ID bigger than the current using state machine, AER should 
  add this state machine to its list.</li>
            <li>If a change is made in step 2, the update message should take 
effect after the Effecting Time, which acts on the data plane. If 
the Effecting Time is earlier than the current time or is all 0, it 
will take effect immediately.</li>
          </ol>
          <t>AER acts as following when receiving a RENEW SM_INFO-Deploy message. 
When ACS initiates RENEW process, it would send a RENEW meesge with 
which the first bit of Operation field is 1. The second bit of 
Operation field identifies the begin of a procedure of RENEW and the 
third bit of Operation field identifies the end of a procedure of 
RENEW. ACS MUST NOT send a RENEW packet with which the first bit of 
Operation field is 0 in RENEW process. AER SHOULD uniformly process 
all packets in this RENEW process after receiving all RENEW packets.</t>
          <ol spacing="normal" type="1"><li>AER SHOULD compare the Transaction Number in this packet with 
Transaction Number whose I Type is SM_INFO received from the same 
ACS before. If bigger, AER WOULD process as step 2. Otherwise, AER
would discard this message and send a request messages to acquire the lastest information.</li>
            <li>AER processes every SMI_Rec.
  - If SM_ID equals to the current using state machine, AER should 
  update the state machine in use.
  - If SM_ID bigger than the current using state machine, AER should 
  add this state machine to its list.
  - If there are some records of state machines in use that do not 
  appear in the Data field during this RENEW process, these state 
  machines will be deleted immediately.</li>
            <li>If a change is made in step 2, the update message should take 
effect after the Effecting Time, which acts on the data plane. If 
the Effecting Time is earlier than current time or is all 0, it will 
take effect immediately.</li>
          </ol>
        </section>
        <section anchor="request-of-state-machine-information" numbered="true" toc="default">
          <name>Request of State Machine Information</name>
          <t>State machine information request (SM_INFO-Request) is sent from AER 
to ACS. AER fills in the following values for each field:</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Version</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">Alliance</td>
                <td align="left">The sub-trust alliance number.</td>
              </tr>
              <tr>
                <td align="left">I Type</td>
                <td align="left">SM_INFO</td>
              </tr>
              <tr>
                <td align="left">S Type</td>
                <td align="left">REQUEST: querying the state machines maintained by the pair of this AD to another member AD and vice versa. These member ADs are specified by ADID_Rec defined in Data field. REQUEST_ALL: querying all state machines maintained by this AD with other member ADs.</td>
              </tr>
              <tr>
                <td align="left">Operation</td>
                <td align="left">NULL</td>
              </tr>
              <tr>
                <td align="left">Total Length</td>
                <td align="left">The length of this message.</td>
              </tr>
              <tr>
                <td align="left">Number of Records</td>
                <td align="left">S Type = REQUEST: the number of ADID_Rec in Data field. S Type = REQUEST_ALL: 0.</td>
              </tr>
              <tr>
                <td align="left">Transaction Number</td>
                <td align="left">The last Transaction Number add 1. AER would maintain a global Transaction Number for packets sent out to ACS where I Type is SM_INFO and AER would keep it increasing monotonic.</td>
              </tr>
              <tr>
                <td align="left">Acknowledgement Number</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">S Type = REQUEST: One or more ADID_Recs. S Type = REQUEST_ALL: none. There is no boundary identification between these ADID_Recs, which requires that the implementation of the protocol can process each record sequentially until the end of this message.</td>
              </tr>
            </tbody>
          </table>
          <t>For example, let this AD is AD1. When any ADID_Rec including in Data 
field, defined as AD2, it means that AER will request the SM(AD1, 
AD2) and SM(AD2, AD1). When ACS replies, it will reply these two 
state machines both.</t>
          <t>When receiving a SM_INFO-Request(All) message, if it holds that some 
fields are wrong, ACS could send a PFX_INFO-NAK. Otherwise, ACS 
would act as follows. The specific construction methods of 
SM_INFO-ACK and SM_INFO-NAK are described in secion 3.2.3.3.</t>
          <ol spacing="normal" type="1"><li>ACS SHOULD compare the Transaction Number in this packet with 
Transaction Number whose I Type is SM_INFO received from the same 
AER before. If bigger, ACS WOULD process them as step 2. Otherwise, 
ACS would discard this packet and send a SM_INFO-NAK message.</li>
            <li>ACS processes every ADID_Rec. If AD exists in the maintained 
trust alliance list, ACS would mark this record as "Reply". 
Otherwise, ACS wourld mark this rocord as "Negative Reply". 
Particularly, all records are marked with "Reply" when S Type is 
REQUEST_ALL.</li>
            <li>If any case in step 2 is marked with "Negative Reply", ACS would 
construct a SM_INFO-NAK message to reply to the AER. Otherwise, a 
SM_INFO-ACK message is constructed to reply the state machine 
information of all members marked with "Reply" to the AER.</li>
          </ol>
        </section>
        <section anchor="response-of-state-machine-information" numbered="true" toc="default">
          <name>Response of State Machine Information</name>
          <t>State machine information response includs two types. That is 
SM_INFO-ACK and SM_INFO-NAK. Both of them are sent from ACS to AER. 
ACS fills in the following values for each field:</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Version</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">Alliance</td>
                <td align="left">The sub-trust alliance number.</td>
              </tr>
              <tr>
                <td align="left">I Type</td>
                <td align="left">SM_INFO</td>
              </tr>
              <tr>
                <td align="left">S Type</td>
                <td align="left">ACK: representing affirmative acknowledgement. NAK: representing negative acknowledgement.</td>
              </tr>
              <tr>
                <td align="left">Operation</td>
                <td align="left">RENEW: replying the latest state machine information to AER.</td>
              </tr>
              <tr>
                <td align="left">Total Length</td>
                <td align="left">The length of this message.</td>
              </tr>
              <tr>
                <td align="left">Number of Records</td>
                <td align="left">S Type = ACK: the number of SMI_Recs in Data field. S Type = NAK: 0.</td>
              </tr>
              <tr>
                <td align="left">Transaction Number</td>
                <td align="left">The last Transaction Number add 1. ACS would maintain a global Transaction Number for packets sent to AER where I Type is SM_INFO and would keep it increasing monotonic.</td>
              </tr>
              <tr>
                <td align="left">Acknowledgement Number</td>
                <td align="left">The Transaction Number of the response corresponding request.</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">S Type = ACK: one or more latest requested SMI_Rec. S Type = NAK: a 32-bit error code defined in <xref target="pkt-format" format="default"/>. There is no boundary identification between these ADID_Recs, which requires that the implementation of the protocol can process each record sequentially until the end of this message.</td>
              </tr>
            </tbody>
          </table>
          <t>When receiving a non-RENEW SM_INFO-ACK message which is the positive 
reply to the request of AD prefix sent from ACS to AER, if it holds 
that some fields are wrong, AER could send a request message to 
acquire the latest state machine information. Otherwise, AER would 
act as follows.
1. AER SHOULD compare the Transaction Number in this packet with 
Transaction Number whose I Type is PFX_INFO received from the same 
ACS before. If bigger, AER WOULD process them as step 2. Otherwise, 
AER would discard this packet and send a SM_INFO-RequestAll message 
to acquire the lastest information.
2. AER processes every SMI_Rec:
  - If SM_ID equals to the current using state machine, AER should 
  update the state machine in use.
  - If SM_ID bigger than the current using state machine, AER should 
  add this state machine to its list.
3. If a change is made in step 2, the update should take effect 
after the Effecting Time, which acts on the data plane. If the 
Effecting Time is earlier than the current time or is all 0, it will 
take effect immediately.</t>
          <t>AER acts as following when receiving a RENEW SM_INFO-ACK message. 
When ACS initiates RENEW process, it would send a RENEW meesge with 
which the first bit of Operation field is 1. The second bit of 
Operation field identifies the begin of a procedure of RENEW and the 
third bit of Operation field identifies the end of a procedure of 
RENEW. ACS MUST NOT send a RENEW packet with which the first bit of 
Operation field is 0 in RENEW process. AER SHOULD uniformly process 
all packets in this RENEW process after receiving all RENEW packets.</t>
          <ol spacing="normal" type="1"><li>AER SHOULD compare the Transaction Number in this packet with 
Transaction Number whose I Type is SM_INFO received from the same 
ACS before. If bigger, AER WOULD process as step 2. Otherwise, AER 
would discard this message and send a SM_INFO-RequestAll message to 
acquire the lastest information.</li>
            <li>AER processes every API_Rec. All Action in API_Recs is ADD during 
RENEW process.
  - If SM_ID equals to the current using state machine, AER should 
  update the state machine in use.
  - If SM_ID bigger than the current using state machine, AER should 
  add this state machine to its list.
  - If there are some records of state machines in use that do not 
  appear in the Data field during this RENEW process, these state 
  machines will be deleted immediately.</li>
            <li>If a change is made in step 2, the update message should take 
effect after the Effecting Time, which acts on the data plane. If 
the Effecting Time is earlier than current time or is all 0, it will 
take effect immediately.</li>
          </ol>
          <t>When AER receives an SM_INFO-NAK message, it could send a 
SM_INFO-RequestAll message to ACS to acquire the latest state 
machine information.</t>
        </section>
      </section>
      <section anchor="request-and-response-of-keep-alive-information" numbered="true" toc="default">
        <name>Request and Response of Keep-alive Information</name>
        <t>In SAVA-X, ACS will periodically send Keep-alive request to query 
the availability of AER in SAVA-X mechanism.</t>
        <section anchor="request-of-keep-alive-information" numbered="true" toc="default">
          <name>Request of Keep-alive Information</name>
          <t>Keep-alive information request (ALIVE_INFO-Request) is sent by ACS 
to test the viability of AER. AER would reply to ACS when receiving 
a ALIVE_INFO-Request message. ACS considers that AER has gone wrong 
if it does not receive a response from AER within 60 seconds and ACS 
notifies the AD administrator of the failure information by email. 
ACS would keep sending ALIVE_INFO-Request to the fault AER at the 
same time. The filling values of each field in ACS request are as 
follows:</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Version</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">Alliance</td>
                <td align="left">The sub-trust alliance number.</td>
              </tr>
              <tr>
                <td align="left">I Type</td>
                <td align="left">ALIVE_INFO</td>
              </tr>
              <tr>
                <td align="left">S Type</td>
                <td align="left">REQUEST</td>
              </tr>
              <tr>
                <td align="left">Operation</td>
                <td align="left">NULL</td>
              </tr>
              <tr>
                <td align="left">Total Length</td>
                <td align="left">The length of this message.</td>
              </tr>
              <tr>
                <td align="left">Number of Records</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Transaction Number</td>
                <td align="left">The last Transaction Number add 1. ACS would maintain a global Transaction Number for packets sent to AER where I Type is ALIVE_INFO and would keep it increasing monotonic.</td>
              </tr>
              <tr>
                <td align="left">Acknowledgement Number</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">None</td>
              </tr>
            </tbody>
          </table>
          <t>ACS considers that AER has gone wrong if it does not receive a 
response from AER within 60 seconds and ACS notifies the AD 
administrator of the failure information by email. ACS would 
consider that AER has recovered from failure when AER reply to the 
request correctly. ACS performs the following steps to update AER:</t>
          <ol spacing="normal" type="1"><li>Keep time synchronization between AER and ACS.</li>
            <li>Deploy AD registration information, AD prefix information and 
state machine information to AER by the way of RENEW message.</li>
          </ol>
        </section>
        <section anchor="response-of-keep-alive-information" numbered="true" toc="default">
          <name>Response of Keep-alive Information</name>
          <t>Keep-alive information response (ALIVE_INFO-Response) is sent by AER 
to reply the ALIVE_INFO-Request message.</t>
          <t>In response to ALIVE_INFO-Request, AER fills in the following values 
for each field in the response:</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Version</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">Alliance</td>
                <td align="left">The sub-trust alliance number.</td>
              </tr>
              <tr>
                <td align="left">I Type</td>
                <td align="left">ALIVE_INFO</td>
              </tr>
              <tr>
                <td align="left">S Type</td>
                <td align="left">ACK</td>
              </tr>
              <tr>
                <td align="left">Operation</td>
                <td align="left">NULL</td>
              </tr>
              <tr>
                <td align="left">Total Length</td>
                <td align="left">The length of this message.</td>
              </tr>
              <tr>
                <td align="left">Number of Records</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Transaction Number</td>
                <td align="left">The last Transaction Number add 1. AER would maintain a global Transaction Number for packets sent to ACS where I Type is ALIVE_INFO and would keep it increasing monotonic.</td>
              </tr>
              <tr>
                <td align="left">Acknowledgement Number</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">None</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
    <section anchor="deployment-of-tag-information" numbered="true" toc="default">
      <name>Deployment of Tag Information</name>
      <t>Tag information deployment (TAG_INFO-Deploy) is sent from ACS to AER 
and AER would add, verify and remove the tag to packet. When using 
sub trust alliance level tags and AD_V tags, the primary address 
domain ACS needs to distribute these two tags to the ACS of the 
boundary address domain first, and then the boundary address domain 
ACS will distribute these tags to their respective address domains' 
AERs. The sub trust alliance tag is used in the data plane to cross 
different address domain levels. The AD_V tag is used in the data 
plane when it is sent from the current address domain to the 
boundary address domain. Standard TAG_INFO is used in the data plane 
at the same level and under the same direct parent address field. 
The three types of tags use the same message format as follows.</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
 +-+-+-+-+-+-+-+-+
 |     Action    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                       Source ADID_Rec                         |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                     Destination ADID_Rec                      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |     Tag Len   |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 ~                             TAG                               ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                      Transition Interval                      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      <dl newline="false" spacing="normal">
        <dt>Action:</dt>
        <dd>
  8-bit filed. 1 for add (ADD=1) and 2 for delete (DEL=2).</dd>
        <dt>Source ADID_Rec:</dt>
        <dd>
  Variable-length field. Refer to ADID_Rec in <xref target="SAVA-X-Control" format="default"/>.</dd>
        <dt>Destination ADID_Rec:</dt>
        <dd>
  Variable-length field. Refer to ADID_Rec.</dd>
        <dt>Tag Len:</dt>
        <dd>
  The length of TAG. The equation for calculation is (Tag Len + 1) * 
8 bits. The length of TAG MUST be multiple times of 8 bits. The 
maximum length is 128 bits and the minimum length is 32 bits. So the 
minimum of Tag Len is 0011.</dd>
        <dt>TAG:</dt>
        <dd>
  Variable-length field. The actual Tag or packet signature.</dd>
        <dt>Transition Interval:</dt>
        <dd>
  32-bit, the milliseconds of interval of state transition.</dd>
      </dl>
      <t>When ACS announce tag to ACS or AER, it fills in the following 
values for each field:</t>
      <table align="center">
        <thead>
          <tr>
            <th align="left">Field</th>
            <th align="left">Value</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Version</td>
            <td align="left">1</td>
          </tr>
          <tr>
            <td align="left">Alliance</td>
            <td align="left">The sub-trust alliance number.</td>
          </tr>
          <tr>
            <td align="left">I Type</td>
            <td align="left">TAG_INFO, ALLI_TAG_INFO or AD_V_TAG_INFO</td>
          </tr>
          <tr>
            <td align="left">S Type</td>
            <td align="left">ANNOUNCEMENT</td>
          </tr>
          <tr>
            <td align="left">Operation</td>
            <td align="left">NULL</td>
          </tr>
          <tr>
            <td align="left">Total Length</td>
            <td align="left">The length of this message.</td>
          </tr>
          <tr>
            <td align="left">Number of Records</td>
            <td align="left">The number of TAG_Rec in Data field.</td>
          </tr>
          <tr>
            <td align="left">Transaction Number</td>
            <td align="left">ACS would maintain a global Transaction Number for packets sent to ACS or AER where I Type is TAG_INFO and would keep it increasing monotonic. Acknowledgement Number is 0.</td>
          </tr>
          <tr>
            <td align="left">Acknowledgement Number</td>
            <td align="left">0</td>
          </tr>
          <tr>
            <td align="left">Data</td>
            <td align="left">One or more TAG_Recs. There is no boundary identification between these records, which requires that the implementation of the protocol can process each record sequentially until the end of this message.</td>
          </tr>
        </tbody>
      </table>
    </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-consideration" numbered="true" toc="default">
      <name>IANA Consideration</name>
      <t>There are two tcp ports, 23160 and 23161, are used in implementing 
SAVA-X mechanism. Port 23160 is used for the communication between 
ACS and ACS. Port 23161 is used for the communication between ACS 
and AER.</t>
    </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>References</name>
      <references>
        <name>Normative References</name>
        <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>
      <references>
        <name>Informative References</name>
        <reference anchor="SAVA-X-Control">
          <front>
            <title>Control Plane of Inter-Domain Source Address Validation Architecture</title>
            <author initials="." surname="Computer Science" fullname="Ke Xu">
              <organization>Tsinghua University</organization>
            </author>
            <author initials="." surname="Computer Science" fullname="Xiaoliang Wang">
              <organization>Tsinghua University</organization>
            </author>
            <author initials="." surname="Institute for Network Sciences and Cyberspace" fullname="Yangfei Guo">
              <organization>Tsinghua University</organization>
            </author>
            <date year="2021"/>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAB2imGEAA+19a3PbNvb3e8/4O2DSF02elTS206apZ3ZmVcvJ+t/E8dpu
2r7KUBJkc0ORWpKy4026n/05N4AACUry3Wnt7rYSReJycK6/cwB2u931tfW1
Mi4Tva12sul0nsajqIyzVB3kWZmNskT9pMtzrVNVnmrVH8BdaZnD5SOdn+lc
RenY/LI7PtHqMJuXcDmbqL0UPnQH2TSKU3WUzfMR3DUe57oo1PsoicfcTz8f
ncalHpXzXK+vRcNhrs+21VH/fb/7W9cMAkc5zkZpNIVxjvNoUnY/zbtFdBZ9
6s7knu7GJtwUlXDH1sbWZncT/vcSH/xGFSUM80OUZCn8eKELvBrP8m1V5vOi
3NrY+HFjC/rOdbSt3s10TiMraG5vozQ60VOdljBSHa2vnZ9sq30gSZZ/VL/C
v+L0RL3Os/lsfe3j+TbPOtVld4CjXF8Dam6rOJ1k2OcoG8Pt22pedKNiFMfr
a7N4W8HfN2oUpXBZqyjPowv1NJ6oKElwrM9UlqvTqDhVpxop9I1SXQUTlk9F
lpe5nhTm68WUvym8Ryar7F3b1NdYT6J5UhZwi72Bn7PUieblaZZv40/41zUf
lOI1+Fmr3+bVxSw/If6Z0eIfjWKdjnRHHRcw3dN5pH5JY2CWIi4vqmfMUi+8
qYBha6Dgv/ieizmQia911D+jeBzD90EMV+JRWT01gja2gXHjf8NjzuVsDEPf
3NjYePmde3UOHA3375zGaVRd18C4ybb6NP+o/1HKGHt6PO+N0lay/B+MZ4Yc
8etfgzj/lvn+Y0RMv4w8v8VRlsAjQJ/I7ftPTKFzmOgnM+2NF1vP/zHJPuFP
vVE2bSXU73DzRMfq9TyrUWkvLUBdA53UBPSCUURCMlZZOxdDoMMsaiGh+upo
eDLPLpAgmz/+Ay8UvYY4rq+lWT4FtX2mSWcdvtrZ2tz80Xz+fmtzw3x+Ceoe
PqNKdp8QgyPWTRSfNYxs8g6SKNVXNm1E8JpaddYiToumDNQWf+E6BRRz98ab
D0twvZ9LMenyQail4lGZfeQFtIXdblelWak/7O0evf6wD5/oOv84TCLzf7yA
90ZD4OAIOfgnPYrQEqNXY6w5zuM8yseFghF/1GA6o9Eoy9GaoxGlWw/ArsK0
U1p7sKDMDx15wrRAT1zMwMtKkgtVRh+BHrMEyKDOY+CNeYkUnAHPUCPAa9h2
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
0MoMWtOgkWiEoKHUEIRrfe3/A1BViU6s/QAA

-->

</rfc>
