<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.34 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-xu-savax-protocol-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="savax-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-04"/>
    <author initials="K." surname="Xu" fullname="Ke Xu">
      <organization abbrev="Tsinghua University">Computer Science, Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>xuke@tsinghua.edu.cn</email>
      </address>
    </author>
    <author initials="J." surname="Wu" fullname="Jianping Wu">
      <organization abbrev="Tsinghua University">Computer Science, Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>jianping@cernet.edu.cn</email>
      </address>
    </author>
    <author initials="X." surname="Wang" fullname="Xiaoliang Wang">
      <organization abbrev="Tsinghua University">Computer Science, Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>wangxiaoliang0623@foxmail.com</email>
      </address>
    </author>
    <author initials="Y." surname="Guo" fullname="Yangfei Guo">
      <organization abbrev="ZGC Lab">Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>guoyangfei@zgclab.edu.cn</email>
      </address>
    </author>
    <date year="2023" month="May" day="22"/>
    <abstract>
      <?line 91?>

<t>Because the Internet forwards packets according to the IP destination address, packet forwarding typically takes place without inspection of the source address and malicious attacks have been launched using spoofed source addresses. The inter-domain source address validation architecture is an effort to enhance the Internet by using state machine to generate consistent tags. When communicating between two end hosts at different ADs of IPv6 network, tags will be added to the packets to identify the authenticity of the IPv6 source address.</t>
      <t>This memo focus on the data plane of the SAVA-X mechanism.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/BasilGuo/savax-protocol"/>.</t>
    </note>
  </front>
  <middle>
    <?line 98?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Inter-Domain Source Address Validation (SAVA-X) mechanism establishes a trust alliance among Address Domains (AD), maintains a one-to-one state machine among ADs, generates a consistent tag, and deploys the tag to the ADs' border router (AER). The AER of the source AD adds a tag to identify the identity of the AD to the packet originating from one AD and sinking in another AD. The AER of the destination AD verifies the source address by validating the correctness of the tag to determine whether it is a packet with a forged source address.</t>
      <t>In the process of packet forwarding, if the source address and the destination address of this packet both are addresses in the trust alliance, however the tag is not added or incorrectly added, AER of the destination AD determines that the source address is forged and directly discards this packet. The destination AD forwards the packet directly for packets whose source address is an address outside the trust alliance.</t>
      <t>This document mainly studies the relevant specifications of the data plane of the inter-domain source address validation architecture mechanism between ADs, which will protect IPv6 networks from being forged source address. You could see <xref target="RFC8200"/> for more details about IPv6. It stipulates the state machine, tag generation and update, tag processing in AER, and packet signature Its promotion and application can realize the standardization of  the data plane in the SAVA-X to facilitate the related equipment developed by different manufacturers and organizations to cooperate to accomplish the inter-domain source address validation jointly.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<section anchor="terminology-and-abbreviation">
        <name>Terminology and Abbreviation</name>
        <table>
          <thead>
            <tr>
              <th align="left">Abbreviation</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">AD</td>
              <td align="left">Address Domain, the unit of a trust alliance, which is an address set consisting of all IPv6 addresses corresponding to an IPv6 address prefix.</td>
            </tr>
            <tr>
              <td align="left">TA</td>
              <td align="left">Trust Alliance, the IPv6 network that uses the SAVA-X mechanism.</td>
            </tr>
            <tr>
              <td align="left">ACS</td>
              <td align="left">AD Control Server, the server that matains state machine with other ACS and distribute information to AER.</td>
            </tr>
            <tr>
              <td align="left">AER</td>
              <td align="left">AD border router, which is placed at the boundary of an AD of STA.</td>
            </tr>
            <tr>
              <td align="left">ADID</td>
              <td align="left">The identity of an AD.</td>
            </tr>
            <tr>
              <td align="left">ADID_Rec</td>
              <td align="left">The record of a number of an AD.</td>
            </tr>
            <tr>
              <td align="left">ARI_Rec</td>
              <td align="left">The record with relavent information of an AD or STA.</td>
            </tr>
            <tr>
              <td align="left">API_Rec</td>
              <td align="left">The record of prefix of an AD or STA.</td>
            </tr>
            <tr>
              <td align="left">SM</td>
              <td align="left">State Machine, which is maintained by a pair of ACS to generate tags.</td>
            </tr>
            <tr>
              <td align="left">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>
    <section anchor="pkt-format">
      <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. TCP is used for communicating between ACS-ACS and ACS-AER.</t>
      <figure anchor="fig-common-fmt">
        <name>General communication packet format.</name>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Version    |    Alliance   | I Type| S Type|   Operation   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Total Length                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Number of Records                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Transaction Number                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Acknowledgement Number                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                              Data                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <dl>
        <dt>Version:</dt>
        <dd>
          <t>8-bit, the current version=0b1 of SAVA-X.</t>
        </dd>
        <dt>Alliance:</dt>
        <dd>
          <t>8-bit, the sub-trust alliance number.</t>
        </dd>
        <dt>I Type:</dt>
        <dd>
          <t>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.</t>
        </dd>
        <dt>S Type:</dt>
        <dd>
          <t>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.</t>
        </dd>
        <dt>Operation:</dt>
        <dd>
          <t>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.</t>
        </dd>
        <dt>Total Length:</dt>
        <dd>
          <t>32-bit, the length of this packet: from Version to Data.</t>
        </dd>
        <dt>Number of Records:</dt>
        <dd>
          <t>32-bit, he records in Data.</t>
        </dd>
        <dt>Transaction Number:</dt>
        <dd>
          <t>32-bit, this is the identification of a publication, query or response, and the value should increase monotonically. And different I Types <bcp14>MUST</bcp14> have its own Transaction Number. Through this field, ACS can locate which information has been resolved wrongly and corrected it.</t>
        </dd>
        <dt>Acknowledgement Number:</dt>
        <dd>
          <t>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.</t>
        </dd>
        <dt>Data:</dt>
        <dd>
          <t>Variable-length field. I Type and S Type specifies data jointly.</t>
        </dd>
      </dl>
      <t>When S Type is ANNOUNCEMENT:</t>
      <ul spacing="normal">
        <li>If I Type = AD_REG_INFO, Data field <bcp14>SHOULD</bcp14> be one or more ARI_Rec.</li>
        <li>If I Type = AD_PREFIX_INFO, Data field <bcp14>SHOULD</bcp14> be one or more API_Rec.</li>
        <li>If I Type = STATE_MACHINE_INFO, Data field <bcp14>SHOULD</bcp14> be one or more SMI_Rec.</li>
        <li>If I Type = TAG_INFO, ALLI_TAG_INFO or AD_V_TAG_INFO, Data field <bcp14>SHOULD</bcp14> 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 <bcp14>SHOULD</bcp14> be one or more ADID_Rec.</li>
        <li>If I Type = AD_PREFIX_INFO, Data field <bcp14>SHOULD</bcp14> be none or one or more ADID_Rec.</li>
        <li>If I Type = STATE_MACHINE_INFO, Data field <bcp14>SHOULD</bcp14> be none or one or more ADID_Rec.</li>
        <li>If I Type = DIAGNOSE_INFO, Data field <bcp14>SHOULD</bcp14> be a 32-bit diagnose reqeust code.</li>
        <li>If I Type = ALIVE_INFO, Data field <bcp14>SHOULD</bcp14> 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 <bcp14>SHOULD</bcp14> be one or more ARI_Rec.</li>
        <li>If I Type = AD_PREFIX_INFO, Data field <bcp14>SHOULD</bcp14> be one or more API_Rec.</li>
        <li>If I Type = STATE_MACHINE_INFO, Data field <bcp14>SHOULD</bcp14> be one or more SMI_Rec.</li>
        <li>If I Type = DIAGNOSE_INFO, Data field <bcp14>SHOULD</bcp14> be one 32-bit diagnose response code.</li>
        <li>If I Type = ALIVE_INFO, Data field <bcp14>SHOULD</bcp14> be none.</li>
      </ul>
      <t>When S Type is NAK, ANAK or RNAK, Data field <bcp14>SHOULD</bcp14> 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">
      <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">
        <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>
        <figure anchor="fig-smi-rec">
          <name>Format of state machine information record.</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
|     Action    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source ADID_Rec                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Destination ADID_Rec                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       State Mathine ID                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Algorithm            |             IS Length           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                        Initial State                          ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Transition Interval                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Effecting Time                         |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Expiring Time                          |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl>
          <dt>Action:</dt>
          <dd>
            <t>8-bit, 1 for add or update this SMI_Rec.</t>
          </dd>
          <dt>Source ADID_Rec:</dt>
          <dd>
            <t>Variable-length field. Refer to ADID_Rec <xref target="savax-control"/>.</t>
          </dd>
          <dt>Destination ADID_Rec:</dt>
          <dd>
            <t>Variable-length field. Refer to ADID_Rec in <xref target="savax-control"/>.</t>
          </dd>
          <dt>State Mathine ID:</dt>
          <dd>
            <t>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.</t>
          </dd>
          <dt>Algorithm:</dt>
          <dd>
            <t>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.</t>
          </dd>
          <dt>IS Length:</dt>
          <dd>
            <t>16-bit, the length of Initial State field.</t>
          </dd>
          <dt>Initial State:</dt>
          <dd>
            <t>Variable-length field, the length of this filed is determined by IS Length.</t>
          </dd>
          <dt>Transition Interval:</dt>
          <dd>
            <t>32-bit, the milliseconds of interval of state transition.</t>
          </dd>
          <dt>Effecting Time:</dt>
          <dd>
            <t>64-bit, when this field is 0, it means this State Machine should be enabled after the last State Machine expired.</t>
          </dd>
          <dt>Expiring Time:</dt>
          <dd>
            <t>64-bit, the end of this State Machine.</t>
          </dd>
        </dl>
        <section anchor="state-machine-information-announcement">
          <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>
            <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 <bcp14>SHOULD</bcp14>:</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"/>. 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 <bcp14>SHOULD</bcp14>:</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>
            <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"/>.</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">
          <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>
            <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 <bcp14>SHOULD</bcp14>:</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 <bcp14>SHOULD</bcp14> 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">
        <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>
          <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>
          <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">
      <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">
        <name>Deployment, Request and Response of AD Registration information</name>
        <section anchor="deployment-of-ad-registration-information">
          <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 <bcp14>MUST</bcp14> 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 <bcp14>SHOULD</bcp14>:</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 <bcp14>MUST NOT</bcp14> send a RENEW packet with which the first bit of Operation field is 0 in RENEWing. AER <bcp14>MUST</bcp14> process this procedure of RENEW after
received all RENEW packets.</t>
          <t>When AER can resolve this packet correctly, it <bcp14>SHOULD</bcp14>:</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">
          <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>
            <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 <bcp14>SHOULD</bcp14> 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">
          <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>
            <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"/>. 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 <bcp14>MUST</bcp14> 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 <bcp14>SHOULD</bcp14> 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 <bcp14>MUST NOT</bcp14> send a RENEW packet with which the first bit of Operation field is 0 in RENEWing. AER <bcp14>MUST</bcp14> process this procedure of RENEW after received all RENEW packets.</t>
          <t>When AER can resolve this packet correctly, it <bcp14>SHOULD</bcp14>:</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">
        <name>Deployment, Request and Reply of AD Prefix Information</name>
        <section anchor="deployment-of-ad-prefix-information">
          <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>
            <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 <bcp14>SHOULD</bcp14> 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 <bcp14>MUST NOT</bcp14> send a RENEW packet with which the first bit of Operation field is 0 in RENEWing. AER <bcp14>SHOULD</bcp14> uniformly process all packets in this RENEW process after receiving all RENEW packets.</t>
          <ol spacing="normal" type="1"><li>AER <bcp14>SHOULD</bcp14> 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">
          <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.</t>
          <t>AER fills in the following values for each field:</t>
          <table>
            <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"/>.</t>
          <ol spacing="normal" type="1"><li>ACS <bcp14>SHOULD</bcp14> 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">
          <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>
            <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"/>. 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 <bcp14>SHOULD</bcp14> 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 <bcp14>MUST NOT</bcp14> send a RENEW packet with which the first bit of Operation field is 0 in RENEW process. AER <bcp14>SHOULD</bcp14> uniformly process all packets in this RENEW process after receiving all RENEW packets.</t>
          <ol spacing="normal" type="1"><li>AER <bcp14>SHOULD</bcp14> 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">
        <name>Deployment, Request and Response of State Machine Information</name>
        <section anchor="deployment-of-state-machine-information">
          <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>
            <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 <bcp14>SHOULD</bcp14> 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 <bcp14>MUST NOT</bcp14> send a RENEW packet with which the first bit of Operation field is 0 in RENEW process. AER <bcp14>SHOULD</bcp14> uniformly process all packets in this RENEW process after receiving all RENEW packets.</t>
          <ol spacing="normal" type="1"><li>AER <bcp14>SHOULD</bcp14> 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">
          <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>
            <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 <bcp14>SHOULD</bcp14> 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">
          <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>
            <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"/>. 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 <bcp14>SHOULD</bcp14> 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 <bcp14>MUST NOT</bcp14> send a RENEW packet with which the first bit of Operation field is 0 in RENEW process. AER <bcp14>SHOULD</bcp14> uniformly process all packets in this RENEW process after receiving all RENEW packets.</t>
          <ol spacing="normal" type="1"><li>AER <bcp14>SHOULD</bcp14> 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">
        <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">
          <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>
            <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">
          <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>
            <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">
      <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>
      <figure anchor="fig-tag-fmt">
        <name>Format of tag information record.</name>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
|     Action    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source ADID_Rec                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Destination ADID_Rec                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Tag Len   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                             TAG                               ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Transition Interval                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <dl>
        <dt>Action:</dt>
        <dd>
          <t>8-bit filed. 1 for add (ADD=1) and 2 for delete (DEL=2).</t>
        </dd>
        <dt>Source ADID_Rec:</dt>
        <dd>
          <t>Variable-length field. Refer to ADID_Rec in <xref target="savax-control"/>.</t>
        </dd>
        <dt>Destination ADID_Rec:</dt>
        <dd>
          <t>Variable-length field. Refer to ADID_Rec.</t>
        </dd>
        <dt>Tag Len:</dt>
        <dd>
          <t>The length of TAG. The equation for calculation is (Tag Len + 1) * 8 bits. The length of TAG <bcp14>MUST</bcp14> 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.</t>
        </dd>
        <dt>TAG:</dt>
        <dd>
          <t>Variable-length field. The actual Tag or packet signature.</t>
        </dd>
        <dt>Transition Interval:</dt>
        <dd>
          <t>32-bit, the milliseconds of interval of state transition.</t>
        </dd>
      </dl>
      <t>When ACS announce tag to ACS or AER, it fills in the following values for each field:</t>
      <table>
        <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-considerations">
      <name>Security Considerations</name>
      <t>TBD.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TBD.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC1760">
          <front>
            <title>The S/KEY One-Time Password System</title>
            <author fullname="N. Haller" initials="N." surname="Haller">
              <organization/>
            </author>
            <date month="February" year="1995"/>
            <abstract>
              <t>This document describes the S/KEY* One-Time Password system as released for public use by Bellcore. This memo provides information for the Internet community.  This memo does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1760"/>
          <seriesInfo name="DOI" value="10.17487/RFC1760"/>
        </reference>
        <reference anchor="RFC5210">
          <front>
            <title>A Source Address Validation Architecture (SAVA) Testbed and Deployment Experience</title>
            <author fullname="J. Wu" initials="J." surname="Wu">
              <organization/>
            </author>
            <author fullname="J. Bi" initials="J." surname="Bi">
              <organization/>
            </author>
            <author fullname="X. Li" initials="X." surname="Li">
              <organization/>
            </author>
            <author fullname="G. Ren" initials="G." surname="Ren">
              <organization/>
            </author>
            <author fullname="K. Xu" initials="K." surname="Xu">
              <organization/>
            </author>
            <author fullname="M. Williams" initials="M." surname="Williams">
              <organization/>
            </author>
            <date month="June" year="2008"/>
            <abstract>
              <t>Because the Internet forwards packets according to the IP destination address, packet forwarding typically takes place without inspection of the source address and malicious attacks have been launched using spoofed source addresses.  In an effort to enhance the Internet with IP source address validation, a prototype implementation of the IP Source Address Validation Architecture (SAVA) was created and an evaluation was conducted on an IPv6 network.  This document reports on the prototype implementation and the test results, as well as the lessons and insights gained from experimentation.  This memo defines an  Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5210"/>
          <seriesInfo name="DOI" value="10.17487/RFC5210"/>
        </reference>
        <reference anchor="RFC8200">
          <front>
            <title>Internet Protocol, Version 6 (IPv6) Specification</title>
            <author fullname="S. Deering" initials="S." surname="Deering">
              <organization/>
            </author>
            <author fullname="R. Hinden" initials="R." surname="Hinden">
              <organization/>
            </author>
            <date month="July" year="2017"/>
            <abstract>
              <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="86"/>
          <seriesInfo name="RFC" value="8200"/>
          <seriesInfo name="DOI" value="10.17487/RFC8200"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="savax-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="J." surname="Wu" fullname="Jianping Wu">
              <organization abbrev="Tsinghua University">Computer Science, 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="2023"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 833?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
rIJ/JnBjdNkmtwd87HNUmNg8dtiV4zAO6TvbnQ/yEoNzEIutN2/P+hjt47/i
6Jj+Pj3477e904Mu/n32j87hofmjoe44+8fx28Nu8Vfx5P7xmzcHR11+GK4K
51Jj603n1y2ew63jk37v+KhzuMXMtuUHdRHwYqDGP08l8jrIGiDewzQcwBd4
5sf9k//3f3e+htX4v2A57u7sfAfLkb+83Pn2a/gCSjfm3hKUR/4KbL1swPKQ
QUpGAaRiGMxhaiMQlSATGSi5mIJ3YOe//W/kzP/ZE/8+GM53vv4PdQEH7FzU
PHMuEs/KV0oPMxMrLlV0Y7jpXPc47dLb+dX5rvluXfz3/4zQRrV2Xv7nf+AS
eiL6pJmTKJlcEv86FK6EATsvn53v4jMsMZyXOX9rfG45n7/ttao+cB9o6M+e
o0LzI8AnzFEsfd9G6zJXM2egC5RzgpoiYSyGVFxh0cgwgX8caz8eGrBvAf0B
cvKxDWT1O0BWnzrumI6Ni6i0JtusRab0Wsn9w+Htn30uQ4TcVMZwITUCgTO5
ZK4XRq6Bclj2z5QBhMAlHGA0ZSJudEgTVI1t5Dz8S106vpfFNQo/RkJZW9DU
qAjJsQrIYMIfZ/0ON9Xt4fT0PQeM7jM3vD+VQ3UTWFXolGeNwULv9tNe+W4a
JCpT1FjOoAqSUiIJWzihFvzueOJKD2CfZ28+izPi6httcQwrtCvMGhs9spAo
RmbbkQuFK9RWZe8lo2aPgojoBxN+yEQd2r3VBgqa8XQ7cVE5Np+VVq9Eo19R
V+LTk/mHvMX9/t5oHMDaukRegDJDow2atJj5SAawsslF3j/zGAJakqUkCwcR
x+yaT9rbJdOHxmQazm0/w7i+nsSaWAUbADGNOeDNvAXeLHWUXUJomyYxRr6e
20COvVSiDLfqyRpxLKijEBSK/v4JDg4EdUTDqQ45gYCWljL6Gx5tNP6gT0Ns
i/Jnp+LabsW15/j4Dvz0XHwtvhEvxLfipfhunWuNv7Vu+B8obPi8QwwF1g58
6LvWbfS9J/qXcwnSov4V4niuvTL4fVM01Hz6CZhfcSjjCSyJms+t0nBkFNYp
SXZ29zT00yDOAgaDFDl3TENn+CFOLiI5mkhyw+qp2AQNf9TNBX+66Iwv+/yx
CRpYwD/tiSfjcNJC3ZDErfEsZ7z6+63XpFgiW2vA9BRBOKjb9hYo3IYSrr3G
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
AA==

-->

</rfc>
