<?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.7.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-xu-savax-protocol-08" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="savax-protocol">Communication Protocol Between the AD Control Server and the AD Edge Router of Source Address Validation Architecture-eXternal (SAVA-X)</title>
    <seriesInfo name="Internet-Draft" value="draft-xu-savax-protocol-08"/>
    <author initials="K." surname="Xu" fullname="Ke Xu">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>xuke@tsinghua.edu.cn</email>
      </address>
    </author>
    <author initials="J." surname="Wu" fullname="Jianping Wu">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>jianping@cernet.edu.cn</email>
      </address>
    </author>
    <author initials="X." surname="Wang" fullname="Xiaoliang Wang">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>wangxiaoliang0623@foxmail.com</email>
      </address>
    </author>
    <author initials="Y." surname="Guo" fullname="Yangfei Guo">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>guoyangfei@zgclab.edu.cn</email>
      </address>
    </author>
    <date year="2025" month="May" day="27"/>
    <abstract>
      <?line 61?>

<t>Due to the fact that the Internet forwards packets in accordance with the IP destination address, packet forwarding generally occurs without examination of the source address. As a result, malicious attacks have been initiated by utilizing spoofed source addresses. The inter-domain source address validation architecture represents an endeavor to enhance the Internet by employing state machines to generate consistent tags. When two end hosts at different address domains (ADs) of the IPv6 network communicate with each other, tags will be appended to the packets to identify the authenticity of the IPv6 source address.</t>
      <t>This memo focuses on the communication protocol between ACSs and AERs of the SAVA-X mechanism.</t>
    </abstract>
  </front>
  <middle>
    <?line 68?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Inter-Domain Source Address Validation-eXternal (SAVA-X) mechanism serves to establish a trust alliance among Address Domains (AD). It maintains a one-to-one state machine among ADs in conjunction with the AD Control Server (ACS). Moreover, it generates a consistent tag and deploys this tag to the ADs' border router (AER). The AER of the source AD appends a tag to packets originating from one AD and destined for another AD, thereby identifying the identity of the AD. The AER of the destination AD verifies the source address by validating the correctness of the tag to determine whether the packet has a forged source address.</t>
      <t>In the packet forwarding process, if both the source address and the destination address of a packet belong to the trust alliance, the tag is either not added or added incorrectly. In such a case, the AER of the destination AD determines that the source address is forged and directly discards this packet. For packets with a source address outside the trust alliance, the destination AD forwards the packet directly.</t>
      <t>This document mainly studies the relevant specifications of the communication protocol between ACSs and AERs of the SAVA-X mechanism between ADs, which will protect IPv6 networks from being forged source addresses. See <xref target="RFC8200"/> for more details about IPv6. It includes both ACS-to-ACS communication specification and ACS-to-AER communication specification.</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>
        <t>The following terms are used with a specific meaning:</t>
        <dl newline="true">
          <dt>ACS:</dt>
          <dd>
            <t>AD Control Server. The server maintains the state machine with other ACS and distributes information to AER.</t>
          </dd>
          <dt>AD:</dt>
          <dd>
            <t>Address Domain or Administrative Domain. The unit of a trust alliance. It is an address set consisting of all IPv6 addresses corresponding to an IPv6 address prefix.</t>
          </dd>
          <dt>ADID:</dt>
          <dd>
            <t>The identity of an AD.</t>
          </dd>
          <dt>ADID_Rec:</dt>
          <dd>
            <t>The record of the number of an AD.</t>
          </dd>
          <dt>AER:</dt>
          <dd>
            <t>AD border router, which is placed at the boundary of an AD of STA.</t>
          </dd>
          <dt>API_Rec:</dt>
          <dd>
            <t>The record of the prefix of an AD or STA.</t>
          </dd>
          <dt>ARI_Rec:</dt>
          <dd>
            <t>The record with relevant information of an AD or STA.</t>
          </dd>
          <dt>SM:</dt>
          <dd>
            <t>State Machine, which is maintained by a pair of ACS to generate tags.</t>
          </dd>
          <dt>SMI_Rec:</dt>
          <dd>
            <t>The record of the state machine information.</t>
          </dd>
          <dt>TA:</dt>
          <dd>
            <t>Trust Alliance. The IPv6 network that uses the SAVA-X mechanism.</t>
          </dd>
          <dt>Tag:</dt>
          <dd>
            <t>The authentic identification of the source address of a packet.</t>
          </dd>
        </dl>
      </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                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Acknowledgment Number                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                              Data                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <dl newline="true">
        <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 mean 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. Different I Types <bcp14>MUST</bcp14> have their own Transaction Number. Through this field, ACS can locate which information has been resolved wrongly and correct it.</t>
        </dd>
        <dt>Acknowledgment Number:</dt>
        <dd>
          <t>32-bit, it is only filled when the S Type is ACK, NAK, AACK, ANAK, RACK, or RNAK. Otherwise, it 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 the S Type is ANNOUNCEMENT:</t>
      <ul spacing="normal">
        <li>
          <t>If I Type = AD_REG_INFO, Data field <bcp14>SHOULD</bcp14> be one or more ARI_Rec.</t>
        </li>
        <li>
          <t>If I Type = AD_PREFIX_INFO, Data field <bcp14>SHOULD</bcp14> be one or more API_Rec.</t>
        </li>
        <li>
          <t>If I Type = STATE_MACHINE_INFO, Data field <bcp14>SHOULD</bcp14> be one or more SMI_Rec.</t>
        </li>
        <li>
          <t>If I Type = TAG_INFO, ALLI_TAG_INFO or AD_V_TAG_INFO, Data field <bcp14>SHOULD</bcp14> be one or more TAG_Rec.</t>
        </li>
      </ul>
      <t>When the S Type is REQUEST or REQUEST_ALL:</t>
      <ul spacing="normal">
        <li>
          <t>If I Type = REG_INFO, Data field <bcp14>SHOULD</bcp14> be one or more ADID_Rec.</t>
        </li>
        <li>
          <t>If I Type = AD_PREFIX_INFO, the Data field <bcp14>SHOULD</bcp14> be none or one or more ADID_Rec.</t>
        </li>
        <li>
          <t>If I Type = STATE_MACHINE_INFO, the Data field <bcp14>SHOULD</bcp14> be none or one or more ADID_Rec.</t>
        </li>
        <li>
          <t>If I Type = DIAGNOSE_INFO, the Data field <bcp14>SHOULD</bcp14> be a 32-bit diagnose request code.</t>
        </li>
        <li>
          <t>If I Type = ALIVE_INFO, Data field <bcp14>SHOULD</bcp14> be none.</t>
        </li>
      </ul>
      <t>When the S Type is ACK, AACK, or RACK:</t>
      <ul spacing="normal">
        <li>
          <t>If I Type = REG_INFO, Data field <bcp14>SHOULD</bcp14> be one or more ARI_Rec.</t>
        </li>
        <li>
          <t>If I Type = AD_PREFIX_INFO, Data field <bcp14>SHOULD</bcp14> be one or more API_Rec.</t>
        </li>
        <li>
          <t>If I Type = STATE_MACHINE_INFO, Data field <bcp14>SHOULD</bcp14> be one or more SMI_Rec.</t>
        </li>
        <li>
          <t>If I Type = DIAGNOSE_INFO, the Data field <bcp14>SHOULD</bcp14> be one 32-bit diagnose response code.</t>
        </li>
        <li>
          <t>If I Type = ALIVE_INFO, Data field <bcp14>SHOULD</bcp14> be none.</t>
        </li>
      </ul>
      <t>When the S Type is NAK, ANAK, or RNAK, the Data field <bcp14>SHOULD</bcp14> be one 32-bit error code:</t>
      <ul spacing="normal">
        <li>
          <t>1 for parameters are wrong which means the packet cannot resolve correctly.</t>
        </li>
        <li>
          <t>2 for member AD(s) in the request packet does not exist in the designative sub-trust alliance.</t>
        </li>
        <li>
          <t>3 for algorithm for State Machine set by source ACS cannot support by the destination ACS.</t>
        </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 a state machine is negotiated between different ordered pairs of ADs. When an ordered pair of ADs is negotiating the state machine, the ACS of AD with a smaller ADID initiates the  communication, and the ACS of AD with a larger ADID uses SMI_Rec to determine 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 newline="true">
          <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 Machine 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 the Initial State field.</t>
          </dd>
          <dt>Initial State:</dt>
          <dd>
            <t>Variable-length field, the length of this field is determined by IS Length.</t>
          </dd>
          <dt>Transition Interval:</dt>
          <dd>
            <t>32-bit, the milliseconds of the 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 expires.</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 machine's 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 the Data field should have a unique SM_ID. When Action  is ADD and SM_ID bigger than the 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 the Transition Interval and Expiring Time can be modified.  Other SMI_Rec should be discarded and the destination ACS should send a  NAK message to the source ACS.</t>
          <t>When receiving a non-RENEW packet, if it cannot resolve this message,  the destination ACS should send a NAK message to the source ACS. When  destination ACS can resolve the packet correctly, it <bcp14>SHOULD</bcp14>:</t>
          <ol spacing="normal" type="1"><li>
              <t>Compare the Transaction Number in this packet with the Transaction  Number received from the same ACS before. Otherwise, the destination ACS  would discard this packet and send an SM_INFO-Request to request the  latest information of the state machine. SM_INFO-Request is defined at  <xref target="SM_INFO-Request"/>. If bigger, destination ACS WOULD:</t>
            </li>
            <li>
              <t>Accept every SMI_Rec and process them as follows:
  - 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 is bigger than the current used SM_ID, destination ACS would add this state machine to its following used state machine list.</t>
            </li>
            <li>
              <t>The destination ACS will send an SM_INFO-AACK message to the source ACS.</t>
            </li>
          </ol>
          <t>When receiving a RENEW packet, if it cannot resolve this message, the destination ACS should send an SM_INFO-ANAK message to the source ACS. When destination ACS can resolve the packet correctly, it <bcp14>SHOULD</bcp14>:</t>
          <ol spacing="normal" type="1"><li>
              <t>Compare the Transaction Number in this packet with the Transaction Number received from the same ACS before. Otherwise, the destination ACS would discard this packet and send an SM_INFO-Request to request the latest information of the state machine. If bigger, destination ACS WOULD:</t>
            </li>
            <li>
              <t>Accept every SMI_Rec and process them as follows:
  - 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 is bigger than the 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 are in use.</t>
            </li>
            <li>
              <t>The destination ACS will send an SM_INFO-AACK message to the source ACS.</t>
            </li>
          </ol>
          <t>There are two types of replies to SM_INFO-Announce messages. That is SM_INFO-AACK representing affirmative acknowledgement and SM_INFO-ANAK representing negative acknowledgement. These are sent from the destination ACS to the source ACS. The main part of the packet is filled by the 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 be done when source ACS receives an SM_INFO-AACK message while it should regenerate a new state machine and announce 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 the source ACS to the 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 the source ACS receives an SM_INFO-Request message, it sends an SM_INFO-RNAK message to the destination ACS if some fields are wrong. Otherwise, the source ACS would send an SM_INFO-RACK message to the destination ACS and process this SM_INFO-Request message. Source ACS should compare the Transaction Number in this message with the Transaction Number received from the same destination ACS before. Otherwise, the source ACS would discard this packet. If bigger, the source ACS would send an SM_INFO-RACK message to the destination ACS.</t>
          <t>There are two types of replies to the SM_INFO-Request message, i.e. SM_INFO-RACK representing affirmative acknowledgement and SM_INFO-RNAK representing negative acknowledgement. These are sent from the source ACS to the destination ACS. The main part of the 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 the S Type is RACK, the Data field is a few of SMI_Recs. When the S  Type is RNAK, the Data field is a 32-bit error code.</t>
          <t>When receiving an SM_INFO-RACK message, if it cannot resolve this message, the destination ACS should send an SM_INFO-Request message to the 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>
              <t>Compare the Transaction Number in this packet with the Transaction Number received from the same source ACS before. Otherwise, the destination ACS would discard this packet and send an SM_INFO-Request to request the latest information of the state machine. If bigger, destination ACS WOULD:</t>
            </li>
            <li>
              <t>Accept every SMI_Rec and process them as follows:
  - 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 is bigger than the current used SM_ID, destination ACS would add this state machine to its following used state machine list.</t>
            </li>
            <li>
              <t>The destination ACS will send an SM_INFO-AACK message to the source ACS.</t>
            </li>
          </ol>
          <t>When receiving an SM_INFO-RNAK message, if it cannot resolve this message, the destination ACS should send an SM_INFO-Request message to the source ACS to acquire a new state machine. When destination ACS can resolve the message correctly, it <bcp14>SHOULD</bcp14> compare the Transaction Number in this packet with the Transaction Number received from the same source ACS before. Otherwise, the destination ACS would discard this packet and send an SM_INFO-Request to request the latest information of the 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, a request for diagnosis information (DIAG_INFO-Request) is used to require the source ACS to check its configuration and source AERs' settings. Source ACS will respond 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 monotonically.</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 is defined below.</td>
            </tr>
          </tbody>
        </table>
        <t>Response of diagnose information (DIAG_INFO-Response) replies 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 monotonically.</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 is defined below.</td>
            </tr>
          </tbody>
        </table>
        <t>Before it sends the DIAG_INFO-Request message, the destination ACS should check its own configuration and guarantee they are correct.</t>
        <t>If it receives a DIAG_INFO-Request message, the source ACS would check whether the communication with its own AER whether correct or not.</t>
        <ol spacing="normal" type="1"><li>
            <t>If it's wrong, source ACS would reply with a DIAG_INFO-Response message in which its Data filed is filled with 2 for fault cannot be repaired and alarm to the administrator to deal with this problem.</t>
          </li>
          <li>
            <t>If it's right, source ACS would RENEW all the registration information, prefix information and state machine information to all AERs. After that, source ACS will reply to a DIAG_INFO-Response message in which its Data filed is filled with 1 for all runs correctly after repair.</t>
          </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 all AERs to guarantee all information is latest. ACS also would deploy the tag information to 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 periodically. I Type is REG_INFO. S Type is Announcement. Operation is NULL when some ADes' information is joined, left or updated and Operation is RENEW when all ADes' information is deployed. Acknowledgment is 0. The 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 to 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>
              <t>Compare the Transaction Number in this packet with the 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 latest information on AD registration information.</t>
            </li>
            <li>
              <t>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 the original record after passing Effecting Time in this ARI_Rec.
  - If Action is ADD the record exists in its maintained trust alliance list and the 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.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
          </ol>
          <t>AER acts as follows when receiving a RENEW packet. When ACS initiates RENEW, it sends a RENEW message with which the first bit of the Operation field is 1. The second bit of the Operation field identifies the beginning of a procedure of RENEW and the third bit of the 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 the 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>
              <t>Compare the Transaction Number in this packet with the 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 latest information of AD registration information.</t>
            </li>
            <li>
              <t>Process every ARI_Rec:
- If the record does not exist in its maintained trust alliance list, AER will add this record to its trust alliance list.
- If the record exists in its maintained trust alliance list but the ACS Address is changed, AER would add this record to its trust alliance list and delete the original record after passing Effecting Time in this ARI_Rec.
- If the record exists in its maintained trust alliance list and the 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.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
          </ol>
        </section>
        <section anchor="request-for-ad-registration-information">
          <name>Request for AD Registration Information</name>
          <t>The request is sent by AER to ACS. There are two types of requests for AD Registration Information messages. 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 the REG_INFO-Request(ALL) message, ACS would reply REG_INFO-NAK to AER if it holds some fields that are wrong. For example, AER requests one ARI_Rec that does not exist. Otherwise, the REG_INFO-ACK message will be answered. ACS WOULD process as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>ACS <bcp14>SHOULD</bcp14> compare the Transaction Number in this packet with the 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.</t>
            </li>
            <li>
              <t>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 the Operation field is REQUEST_ALL.</t>
            </li>
            <li>
              <t>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 to the AD registration information of all members marked with "Reply" to the AER.</t>
            </li>
          </ol>
        </section>
        <section anchor="response-of-ad-registration-information">
          <name>Response of AD Registration Information</name>
          <t>AD registration information response includes two types. That is REG_INFO-ACK and REG_INFO-NAK. ACS will reply to AER according to the request for 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 to 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>
              <t>AER <bcp14>SHOULD</bcp14> compare the Transaction Number in this packet with the 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 latest information on AD registration information.</t>
            </li>
            <li>
              <t>AER WOULD 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 the original record after passing Effecting Time in this ARI_Rec.
  - If Action is ADD the record exists in its maintained trust alliance list and the 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.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
          </ol>
          <t>AER acts as follows when receiving a RENEW REG_INFO-ACK message. When ACS initiates RENEW, it sends a RENEW message with which the first bit of the Operation field is 1. The second bit of the Operation field identifies the beginning of a procedure of RENEW and the third bit of the 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 the Operation field is 0 in RENEWing. AER <bcp14>MUST</bcp14> process this procedure of RENEW after receiving all RENEW packets.</t>
          <t>When AER can resolve this packet correctly, it <bcp14>SHOULD</bcp14>:</t>
          <ol spacing="normal" type="1"><li>
              <t>Compare the Transaction Number in this packet with the 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 latest information of AD registration information.</t>
            </li>
            <li>
              <t>Process every ARI_Rec:
  - If the record does not exist in its maintained trust alliance list, AER will add this record to its trust alliance list.
  - If the record exists in its maintained trust alliance list but the ACS Address is changed, AER would add this record to its trust alliance list and delete the original record after passing Effecting Time in this ARI_Rec.
  - If the record exists in its maintained trust alliance list and the 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.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
          </ol>
          <t>When AER receives a 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' prefixes. RENEW: to publish all member ADs' prefixes.</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 affect right now and the other is an 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 deleting an API_Rec that does not exist or adding some prefix that conflicts 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>
              <t>AER <bcp14>SHOULD</bcp14> compare the Transaction Number in this packet with the 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 latest information on AD prefix information.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
            <li>
              <t>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>
            </li>
          </ol>
          <t>AER acts as follows when receiving a RENEW PFX_INFO-Deploy message. When ACS initiates RENEW, it sends a RENEW message with which the first bit of the Operation field is 1. The second bit of the Operation field identifies the beginning of a procedure of RENEW and the third bit of the 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 the 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>
              <t>AER <bcp14>SHOULD</bcp14> compare the Transaction Number in this packet with the 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 latest information on AD prefix information.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
            <li>
              <t>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.</t>
            </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' 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>
              <t>ACS <bcp14>SHOULD</bcp14> compare the Transaction Number in this packet with the 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.</t>
            </li>
            <li>
              <t>ACS processes every ADID_Rec. If AD exists in the maintained trust alliance list, ACS would mark this record as "Reply". Otherwise, ACS would mark this record as "Negative Reply". Particularly, all records are marked with "Reply" when the S Type is REQUEST_ALL.</t>
            </li>
            <li>
              <t>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 to the AD prefix information of all members marked with "Reply" to the AER.</t>
            </li>
          </ol>
        </section>
        <section anchor="PFX_INFO-Response">
          <name>Response of AD Prefix Information</name>
          <t>AD prefix information response includes 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 with 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 is defined as before and will not be repeated. The following mainly introduces the 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 to 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 for 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>
              <t>AER <bcp14>SHOULD</bcp14> compare the Transaction Number in this packet with the 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 latest information.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
            <li>
              <t>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>
            </li>
          </ol>
          <t>AER acts as follows when receiving a RENEW PFX_INFO-ACK message. When ACS initiates the RENEW process, it sends a RENEW message with which the first bit of the Operation field is 1. The second bit of the Operation field identifies the beginning of a procedure of RENEW and the third bit of the 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 the Operation field is 0 in the 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>
              <t>AER <bcp14>SHOULD</bcp14> compare the Transaction Number in this packet with the 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 latest information.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
          </ol>
          <t>When AER receives a 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 the state machine maintained by the pair of this AD and another AD and Operation is RENEW: to publish a wholesome update of the 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 the state machine is responding to an 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 the 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 the Data field. In addition, there are two actions for SMI_Rec: one is to add an SM whose SM_ID is bigger than the current state machine. The second is to modify an existing state machine whose SM_ID equals to current using a state machine. Both of them are using Action ADD. Here we require 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 the 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>
              <t>AER <bcp14>SHOULD</bcp14> compare the Transaction Number in this packet with the 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 latest information.</t>
            </li>
            <li>
              <t>AER processes every SMI_Rec:
  - If SM_ID equals the current using the state machine, AER should update the state machine in use.
  - If SM_ID is bigger than the current state machine, AER should add this state machine to its list.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
          </ol>
          <t>AER acts as follows when receiving a RENEW SM_INFO-Deploy message. When ACS initiates the RENEW process, it sends a RENEW message with which the first bit of the Operation field is 1. The second bit of the Operation field identifies the beginning of a procedure of RENEW and the third bit of the 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 the Operation field is 0 in the 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>
              <t>AER <bcp14>SHOULD</bcp14> compare the Transaction Number in this packet with the 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 message to acquire the latest information.</t>
            </li>
            <li>
              <t>AER processes every SMI_Rec.
  - If SM_ID equals the current using the state machine, AER should update the state machine in use.
  - If SM_ID is bigger than the current 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.</t>
            </li>
            <li>
              <t>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.</t>
            </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 the 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 is included in the 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 to these two state machines.</t>
          <t>When receiving an 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 <xref target="SM_INFO-Response"/>.</t>
          <ol spacing="normal" type="1"><li>
              <t>ACS <bcp14>SHOULD</bcp14> compare the Transaction Number in this packet with the 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 an SM_INFO-NAK message.</t>
            </li>
            <li>
              <t>ACS processes every ADID_Rec. If AD exists in the maintained trust alliance list, ACS would mark this record as "Reply". Otherwise, ACS would mark this record as "Negative Reply". Particularly, all records are marked with "Reply" when the S Type is REQUEST_ALL.</t>
            </li>
            <li>
              <t>If any case in step 2 is marked with "Negative Reply", ACS would construct an SM_INFO-NAK message to reply to the AER. Otherwise, an SM_INFO-ACK message is constructed to reply to the state machine information of all members marked with "Reply" to the AER.</t>
            </li>
          </ol>
        </section>
        <section anchor="SM_INFO-Response">
          <name>Response of State Machine Information</name>
          <t>State machine information response includes 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 to 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 monotonically.</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 the 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 an SM_INFO-RequestAll message to acquire the latest information.
2. AER processes every SMI_Rec:
  - If SM_ID equals the current using the state machine, AER should update the state machine in use.
  - If SM_ID is bigger than the current 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 follows when receiving a RENEW SM_INFO-ACK message. When ACS initiates the RENEW process, it sends a RENEW message with which the first bit of the Operation field is 1. The second bit of the Operation field identifies the beginning of a procedure of RENEW and the third bit of the 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 the Operation field is 0 in the 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>
              <t>AER <bcp14>SHOULD</bcp14> compare the Transaction Number in this packet with the 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 an SM_INFO-RequestAll message to acquire the latest information.</t>
            </li>
            <li>
              <t>AER processes every API_Rec. All Action in API_Recs is ADD during the RENEW process.
  - If SM_ID equals the current using the state machine, AER should update the state machine in use.
  - If SM_ID is bigger than the current 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.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
          </ol>
          <t>When AER receives an SM_INFO-NAK message, it could send an 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 a Keep-alive request to query the availability of AER in the 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 an 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 the 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 monotonically.</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 replies to the request correctly. ACS performs the following steps to update AER:</t>
          <ol spacing="normal" type="1"><li>
              <t>Keep time synchronization between AER and ACS.</t>
            </li>
            <li>
              <t>Deploy AD registration information, AD prefix information, and state machine information to AER by way of a RENEW message.</t>
            </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 to 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 monotonically.</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 adds, verifies, and removes the tag to/from the 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 newline="true">
        <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 the interval of state transition.</t>
        </dd>
      </dl>
      <t>When ACS announces a 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 monotonically. Acknowledgment 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 anchor="sec-normative-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"/>
          <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"/>
          <author fullname="J. Bi" initials="J." surname="Bi"/>
          <author fullname="X. Li" initials="X." surname="Li"/>
          <author fullname="G. Ren" initials="G." surname="Ren"/>
          <author fullname="K. Xu" initials="K." surname="Xu"/>
          <author fullname="M. Williams" initials="M." surname="Williams"/>
          <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"/>
          <author fullname="R. Hinden" initials="R." surname="Hinden"/>
          <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="savax-control">
        <front>
          <title>*** BROKEN REFERENCE ***</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </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"/>
          <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"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 835?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
snk+09p2nFcat3fPzRoJvtW42TKgzA/d4StoLXyPXVb49bO5rKsgyvuERK7O
4JUu9HwJJvmQyXvI5D1k8u4tvHmFTJ5P4z/k9b6MvJ69nH/ZxF4DDHSv83rW
brDPn9mrd/4ny+3dcII3MosP6b37YP/q4aEfbKS2rhKxVPYSrhm4rKp+RuCO
lckJV3gfrCx69t3of41FWD76+OTlr24hc2SfCaImR4DrNbaYfRak0H3/jSgB
w/LNdXDNGFoF78Gs6NVj+dTkABWLV/R5meL7StESoViFAVqtuOlA697Nnp6q
3hVxr05PbQD7Kgtzq2eparJcC2s7+QthbcFyrC2i81aUJGgtx6UKfX4b5KEN
S5mzp6tonJO0jMZ19Q0dfav7tmamTaP3TTtKlZ20y106HstBRRZE/9MdCinY
gAV2gNxe8SDlr74ztAnsqJaeTZh3cadHYXOKHiL5PzxfWHt6lYqmG3jc7Phi
nzvUxxC6ndE5zHxnoIj0nRV24RpcG92MSrM7xDydlkV79zx7z9DOBe98R3NA
EciGwc2TzwRunphNKUvQzYr5uzrAOXYYvSiVB/la6sQDPWdPkl7w6xXwRupB
MRDdiXsb4wjdJusN4aWN8aCr2bq7JupewZeHpbqY5CaCP8MNN4BSPZTVIGqt
fOBkk5shVMdrQqfW3TeETBv63Rg42ND+MlDQekTZqIp92lDQc1+DnSuAfQ0K
8AHvu0u8TynXRRKhEgEHwtQ4wbJr91vrVifgXwsFvK8q/EraWzPd/VHft6es
bwrara+i10SqbAW7AYQqL3t6gKqcSvSrQjvmrFePLFSxHVPShf/wS1Rp0W0U
Y6nHyIbmHh471AgJOSVSppK7hLpW+Mj1Yvuu8BSP3eH5M7dXpu1DczZZrG2f
F2u7KUuU+hXKUPDsNjtQMq1SxaS3vLYS+bCfot/zZgpLeatGMU35dWCmXV2a
aXdEIwplPsqioT7M2poeV6vRu+puq8b6YkrnoplF1b1fo/h6/ehrzXPnXFKZ
I7HXKb12yq5x8Hdfdn2CoPJoEYNhqBRe40ourbn2bj7ZfKm1j9xrlFo7HL5+
qfUqZXq9Iuu6YRQfH9VFqtFYrlFsvVSi6ZhRf1m1VTndbjyUul0t1qbZ03G4
DsTpHq+1Zd4+zz9sKbcIYS2SA+y6BM3gCTR1kVTvRaw0Zg0ayF8+5vqwW9ab
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
9b/x2AVbmfQAAA==

-->

</rfc>
