<?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.35 (Ruby 3.2.3) -->
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mboned-amt-yang-09" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="YANG Data Model for AMT">A YANG Data Model for Automatic Multicast Tunneling (AMT)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mboned-amt-yang-09"/>
    <author initials="Y." surname="Liu" fullname="Yisong Liu" role="editor">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>liuyisong@chinamobile.com</email>
      </address>
    </author>
    <author initials="C." surname="Lin" fullname="Changwang Lin" role="editor">
      <organization>New H3C Technologies</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>linchangwang.04414@h3c.com</email>
      </address>
    </author>
    <author initials="Z." surname="Zhang" fullname="Zheng(Sandy) Zhang">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>zhang.zheng@zte.com.cn</email>
      </address>
    </author>
    <author initials="X." surname="Geng" fullname="Xuesong Geng">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>gengxuesong@huawei.com</email>
      </address>
    </author>
    <author initials="V." surname="Kumar Nagaraj" fullname="Vinod Kumar Nagaraj">
      <organization>Juniper Networks</organization>
      <address>
        <email>vinkumar@juniper.net</email>
      </address>
    </author>
    <date year="2026" month="April" day="17"/>
    <area>Ops</area>
    <workgroup>MBONED Working Group</workgroup>
    <keyword>YANG, AMT</keyword>
    <abstract>
      <?line 92?>

<t>This document defines a YANG data model for the management of
   Automatic Multicast Tunneling (AMT) protocol operations.</t>
    </abstract>
  </front>
  <middle>
    <?line 97?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="RFC7450"/> introduces the protocol definition of the Automatic
   Multicast Tunneling (AMT) for delivering multicast traffic from
   sources in a multicast-enabled network to receivers that lack
   multicast connectivity to the source network. AMT uses UDP
   encapsulation and unicast replication to provide this functionality.</t>
      <t><xref target="RFC8777"/> updates <xref target="RFC7450"/> by modifying the Relay Discovery process.
   It defines DNS Reverse IP AMT Discovery (DRIAD) mechanism for AMT
   Gateways to discover AMT Relays that are capable of forwarding
   multicast traffic from a known source IP address.</t>
      <t>This document defines a YANG data model for managing AMT protocol.</t>
      <t>RFC Ed.: Please replace all occurrences of 'XXXX' with the
   actual RFC number (and remove this note). Also, please update
   the revision date to match the publication date.</t>
    </section>
    <section anchor="terminology-notation-conventions">
      <name>Terminology &amp; Notation Conventions</name>
      <section anchor="conventions">
        <name>Conventions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in BCP
   14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
   capitals, as shown here.</t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The terminology for describing YANG data models is found in <xref target="RFC6020"/>
   (which defines YANG version 1) and <xref target="RFC7950"/> (which defines YANG version 1.1), including:</t>
        <ul spacing="normal">
          <li>
            <t>augment</t>
          </li>
          <li>
            <t>data model</t>
          </li>
          <li>
            <t>data node</t>
          </li>
          <li>
            <t>identity</t>
          </li>
          <li>
            <t>module</t>
          </li>
        </ul>
        <t>The following AMT terms are used in this document:</t>
        <ul spacing="normal">
          <li>
            <t>Gateway: A functional entity that acts as an endpoint for
AMT tunnels on the receiver's domain. Its primary role is to
discover AMT Relays, establish AMT tunnels to them, receive
multicast traffic over these tunnels, and then forward that
traffic directly within its local domain.</t>
          </li>
          <li>
            <t>Relay: A functional entity located in the source's domain
or a multicast-enabled part of the Internet. Its primary role is
to listen for requests from AMT Gateways, replicate multicast
traffic from standard multicast routing domains, and encapsulate/
forward this traffic through established AMT tunnels to requesting
Gateways.</t>
          </li>
          <li>
            <t>Tunnel: A unidirectional, UDP-based encapsulation tunnel
established between an AMT Gateway (the tunnel head) and an AMT
Relay (the tunnel tail). It is used to transport multicast
packets from the Relay to the Gateway over networks that do not
support built-in IP multicast.</t>
          </li>
          <li>
            <t>Pseudo-Interface: A logical interface within the AMT Gateway or
Relay that represents the endpoint of an AMT tunnel. Multicast
routing protocols interact with this interface as if it were a
physical interface receiving standard multicast traffic.</t>
          </li>
          <li>
            <t>Gateway Service: The functional component in the AMT protocol
architecture. It interacts downstream with local multicast
receivers and upstream with AMT Relays. It implements the
complete service functionality of the AMT protocol, including
processing multicast subscription requests, establishing tunnels,
decapsulating data, and forwarding multicast traffic.</t>
          </li>
          <li>
            <t>Relay Service: The central component in the AMT protocol
architecture. It establishes and manages tunnels between
multicast sources and AMT gateways, enabling the conversion and
forwarding of multicast traffic from multicast networks to unicast
networks.</t>
          </li>
          <li>
            <t>Secret Key Rotation Interval: The maximum recommended validity period or
rotation interval for the private secret (or key) used by an AMT
Relay to compute Response Message Authentication Code (MAC) values,
according to <xref section="5.3.6" sectionFormat="of" target="RFC7450"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="tree-diagrams">
        <name>Tree Diagrams</name>
        <t>Tree diagrams used in this document follow the notation defined in
   <xref target="RFC8340"/>.</t>
      </section>
    </section>
    <section anchor="data-model-overview">
      <name>Data Model Overview</name>
      <t>The AMT protocol mainly includes two components illustrated in
   <xref target="fig-cpt"/>. The two components are Relay and Gateway entities, each
   with their internal modules (Discovery, Tunnel Management, and Multicast
   Forwarding).</t>
      <figure anchor="fig-cpt">
        <name>AMT Protocol Components</name>
        <artwork><![CDATA[
         +------------------------------------------------+
         |            AMT Protocol Components             |
         +------------------------------------------------+
         |  .-----------------.      .-----------------.  |
         |  |   AMT Relay     |<---->|   AMT Gateway   |  |
         |  |                 |      |                 |  |
         |  |  .-----------.  |      |  .-----------.  |  |
         |  |  | Discovery |  |      |  | Discovery |  |  |
         |  |  |  Service  |<-+------+--|  Service  |  |  |
         |  |  '-----+-----'  |      |  '-----+-----'  |  |
         |  |        |        |      |        |        |  |
         |  |  .-----+-----.  |      |  .-----+-----.  |  |
         |  |  |   Tunnel  |  |      |  |   Tunnel  |  |  |
         |  |  | Management|<-+------+--| Management|  |  |
         |  |  '-----+-----'  |      |  '-----+-----'  |  |
         |  |        |        |      |        |        |  |
         |  |  .-----+-----.  |      |  +-----+-----+  |  |
         |  |  | Multicast |  |      |  | Multicast |  |  |
         |  |  | Forwarding|  |      |  | Forwarding|  |  |
         |  |  '-----------'  |      |  +-----------+  |  |
         |  '-----------------'      '-----------------'  |
         +------------------------------------------------+
]]></artwork>
      </figure>
      <t>The AMT data model provides methods for managing AMT protocol,
   covering all its core functional components as illustrated in
   Figure 1. It includes:</t>
      <ul spacing="normal">
        <li>
          <t>Parameters of AMT Relay service, such as Relay Discovery Address
(<xref section="4.1.5" sectionFormat="of" target="RFC7450"/>), Relay Address (<xref section="4.1.5" sectionFormat="of" target="RFC7450"/>),
the maximum number of tunnels, and secret key rotation interval.</t>
        </li>
        <li>
          <t>Parameters of AMT Gateway service, such as Relay Discovery Address
(<xref section="4.1.5" sectionFormat="of" target="RFC7450"/>), Relay Address (<xref section="4.1.5" sectionFormat="of" target="RFC7450"/>),
Discovery Timeout (<xref section="5.2.2.4" sectionFormat="of" target="RFC7450"/>),
Request Timeout (<xref section="5.2.2.4" sectionFormat="of" target="RFC7450"/>), and Maximum
Retransmission Count (<xref section="5.2.2.4" sectionFormat="of" target="RFC7450"/>).</t>
        </li>
        <li>
          <t>AMT tunnel information, such as endpoint IP address and UDP port
number, local IP address and UDP port number.</t>
        </li>
        <li>
          <t>DNS Resource Record (RR) used by an AMT Relay service.</t>
        </li>
      </ul>
    </section>
    <section anchor="amt-yang-module">
      <name>AMT YANG Module</name>
      <section anchor="prefixes">
        <name>Prefixes</name>
        <t><xref target="tab-prefixes"/> summarizes the prefixes used in this document.</t>
        <table anchor="tab-prefixes">
          <name>Prefixes and Corresponding YANG Modules</name>
          <thead>
            <tr>
              <th align="left">Prefix</th>
              <th align="left">YANG module</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">inet</td>
              <td align="left">ietf-inet-types</td>
              <td align="left">
                <xref target="RFC9911"/></td>
            </tr>
            <tr>
              <td align="left">rt-types</td>
              <td align="left">ietf-routing-types</td>
              <td align="left">
                <xref target="RFC8294"/></td>
            </tr>
            <tr>
              <td align="left">rt</td>
              <td align="left">ietf-routing</td>
              <td align="left">
                <xref target="RFC8349"/></td>
            </tr>
            <tr>
              <td align="left">yang</td>
              <td align="left">ietf-yang-types</td>
              <td align="left">
                <xref target="RFC9911"/></td>
            </tr>
            <tr>
              <td align="left">if</td>
              <td align="left">ietf-interfaces</td>
              <td align="left">
                <xref target="RFC8343"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="tree-view">
        <name>Tree View</name>
        <t>The full tree diagram of the "ietf-amt" YANG module is provided in
   <xref target="full-tree"/>. The following subsections list the subtree structures.</t>
        <section anchor="overall-structure">
          <name>Overall Structure</name>
          <t>The overall tree structure of the AMT YANG module is shown in
   <xref target="fig-overall-tree"/>.</t>
          <t>The AMT YANG module augments the core routing YANG module "ietf-routing"
   specified in <xref target="RFC8349"/>. Specifically, the AMT YANG module
   augments "/rt:routing/rt:control-plane-protocols".</t>
          <figure anchor="fig-overall-tree">
            <name>Overall AMT Tree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-amt
  augment /rt:routing/rt:control-plane-protocols:
    +--rw amt!
       +--rw relay {amt-relay}?
       |  ...
       +--rw gateway {amt-gateway}?
          ...
]]></artwork>
          </figure>
          <t>The 'amt' container encapsulates all AMT functionality and serves as
   the primary entry point for its configuration and state. The 'amt'
   container consists of two functional components: the 'relay' and the
   'gateway'. Support of an AMT Relay or an AMT Gateway is indicated by
   dedicated YANG features.</t>
          <t>The 'relay' container manages the AMT Relay function on the multicast
   source side. It provides the configuration and operational state for
   AMT Relay devices that receive multicast traffic, tunnel it to AMT
   Gateways over unicast, and act as tunnel termination points. This
   container is conditionally present only if the device implements the
   'amt-relay' feature, typically on service provider edge routers or data
   center gateways.</t>
          <t>The 'gateway' container manages the AMT Gateway function on the
   multicast receiver side. It provides the configuration and
   operational state for AMT Gateway devices that discover AMT Relays,
   establish tunnels to receive multicast traffic, and forward it to
   local receivers. This container is conditionally present only if the
   device implements the 'amt-gateway' feature, typically on enterprise
   edge routers or Customer Premises Equipment (CPE).</t>
        </section>
        <section anchor="relay">
          <name>Relay</name>
          <t>The overall structure of 'relay' is shown in <xref target="fig-relay-subtree"/>.</t>
          <figure anchor="fig-relay-subtree">
            <name>AMT Relay Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-amt
  augment /rt:routing/rt:control-plane-protocols:
    +--rw amt!
       +--rw relay {amt-relay}?
       |  +--rw addresses
       |  |  +--rw address* [family]
       |  |     +--rw family              identityref
       |  |     +--rw anycast-prefix?     inet:ip-prefix
       |  |     +--rw local-address?      inet:ip-address
       |  +--rw tunnel-limit?             uint32
       |  +--rw secret-key-rotation-interval?      uint32
       |  +--rw relay-dns-resource-records
       |  |  +--rw record* [source-address]
       |  |     +--rw source-address         inet:ip-address
       |  |     +--rw precedence?            uint32
       |  |     +--rw d-bit?                 boolean
       |  |     +--rw relay-type?            enumeration
       |  |     +--rw discovery-address?     inet:ip-address
       |  |     +--rw domain-name?           inet:domain-name
       |  +--ro tunnels
       |  |  ...
       |  +--ro relay-message-statistics
       |     ...
       +--rw gateway {amt-gateway}?
          ...
]]></artwork>
          </figure>
          <t>The 'relay' data nodes are described as follows:</t>
          <dl>
            <dt>'addresses':</dt>
            <dd>
              <t>Indicates the core address configurations for AMT Relay.</t>
            </dd>
            <dt/>
            <dd>
              <t>This data node includes 'family', 'anycast-prefix', and 'local-address'.
   The 'family' indicates the address family (IPv4 or IPv6).
   The 'anycast-prefix' indicates the address prefix used by the Gateway
   to discover the Relay. The 'local-address' indicates the local
   interface address the Relay actually listens on and sends AMT
   messages on, or the actual communication address after the tunnel is
   established.</t>
            </dd>
            <dt>'tunnel-limit':</dt>
            <dd>
              <t>Indicates the maximum number of endpoint Gateways
   that a Relay can serve simultaneously.</t>
            </dd>
            <dt>'secret-key-rotation-interval':</dt>
            <dd>
              <t>Indicates the maximum recommended validity
   period or rotation interval for the private secret (or key) used by an
   AMT Relay to compute Response MAC values. In addition, the private
   secret (or key) is known only to the AMT Relay, and the provisioning
   of the private secret (or key) is out of scope.</t>
            </dd>
            <dt>'relay-dns-resource-records':</dt>
            <dd>
              <t>Indicates the DNS RR configuration for
   AMT Relay Discovery. Each DNS RR configuration ('record') includes
   the specific multicast source IP address to which this DNS RR applies
   ('source-address'), the priority value of this DNS RR ('precedence'),
   the discovery optional flag ('d-bit'), the type of AMT Relay Address
   ('relay-type'), the directly specified IP address of AMT Relay
   Discovery Address ('discovery-address'), and the wire-encoded domain
   name of AMT Relay ('domain-name').</t>
            </dd>
            <dt>'tunnels' (<xref target="fig-tunnel-subtree"/>):</dt>
            <dd>
              <t>Indicates tunnel information from various AMT Gateways
   connected to this AMT Relay.</t>
            </dd>
            <dt/>
            <dd>
              <t>Each tunnel entry ('tunnel') includes
   the IP address and port number of the tunnel opposite end ('gateway')
   ('gateway-address' and 'gateway-port'), the local IP address and UDP port number
   used by the local ('relay') end for this tunnel ('local-address' and 'local-port'),
   the tunnel status ('state'), the multicast flow information
   ('multicast-flows') carried by the tunnel, the number of different
   multicast groups currently carried by this tunnel ('multicast-group-num'),
   the message counter carried by the tunnel ('request-message-count',
   'membership-query-message-count', and 'membership-update-message-count'),
   and the time on the most recent occasion at which
   any one or more of the tunnel's counters suffered a discontinuity
   ('discontinuity-time').</t>
            </dd>
            <dt/>
            <dd>
              <t>Each multicast flow information ('flow') has
   multicast source address ('source-address') and multicast group
   address ('group-address').</t>
            </dd>
          </dl>
          <ul empty="true">
            <li>
              <t>Design note: The four data nodes ('gateway-address', 'gateway-port',
'local-address', and 'local-port') do not reuse the standard
"udp-client" grouping defined in <xref target="I-D.ietf-netconf-udp-client-server"/>
because AMT requires the Gateway to be a specific IP address (inet:ip-address),
while the "udp-client" grouping allows the use of domain names (inet:host).
Reuse could lead to configuration errors or runtime risks, so a custom structure
must be defined to enforce this constraint.</t>
            </li>
          </ul>
          <figure anchor="fig-tunnel-subtree">
            <name>AMT Relay Tunnel Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-amt
  augment /rt:routing/rt:control-plane-protocols:
    +--rw amt!
       +--rw relay {amt-relay}?
       |  ...
       |  +--ro tunnels
       |  |  +--ro tunnel* [gateway-address gateway-port]
       |  |     +--ro gateway-address     inet:ip-address
       |  |     +--ro gateway-port        inet:port-number
       |  |     +--ro local-address?      inet:ip-address
       |  |     +--ro local-port?         inet:port-number
       |  |     +--ro state?              identityref
       |  |     +--ro multicast-flows
       |  |     |  +--ro flow* [source-address
       |  |     |     |         group-address]
       |  |     |     +--ro source-address
       |  |     |     |         ip-multicast-source-address
       |  |     |     +--ro group-address
       |  |     |               rt-types:ip-multicast-group-address
       |  |     +--ro multicast-group-num?       yang:gauge32
       |  |     +--ro request-message-count?
       |  |     |              yang:zero-based-counter64
       |  |     +--ro membership-query-message-count?
       |  |     |              yang:zero-based-counter64
       |  |     +--ro membership-update-message-count?
       |  |     |              yang:zero-based-counter64
       |  |     +--ro discontinuity-time?        yang:date-and-time
       |  +--ro relay-message-statistics
       |     ...
       +--rw gateway {amt-gateway}?
          ...
]]></artwork>
          </figure>
          <dl>
            <dt>'relay-message-statistics':</dt>
            <dd>
              <t>Indicates various messages and error
   statistics handled by AMT Relay as shown in <xref target="fig-stats-subtree"/>.</t>
            </dd>
          </dl>
          <figure anchor="fig-stats-subtree">
            <name>AMT Relay Statistics Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-amt
  augment /rt:routing/rt:control-plane-protocols:
    +--rw amt!
       +--rw relay {amt-relay}?
       |  ...
       |  +--ro tunnels
       |  |  ...
       |  +--ro relay-message-statistics
       |     +--ro received
       |     |  +--ro relay-discovery?      yang:zero-based-counter64
       |     |  +--ro request?              yang:zero-based-counter64
       |     |  +--ro membership-update?    yang:zero-based-counter64
       |     |  +--ro teardown?             yang:zero-based-counter64
       |     +--ro sent
       |     |  +--ro relay-advertisement? yang:zero-based-counter64
       |     |  +--ro membership-query?     yang:zero-based-counter64
       |     +--ro error
       |     |  +--ro incomplete-packet?    yang:zero-based-counter64
       |     |  +--ro invalid-mac?          yang:zero-based-counter64
       |     |  +--ro unexpected-type?      yang:zero-based-counter64
       |     |  +--ro invalid-relay-discovery-address?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro invalid-membership-request-address?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro invalid-membership-update-address?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro incomplete-relay-discovery-messages?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro incomplete-membership-request-messages?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro incomplete-membership-update-messages?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro no-active-gateway?    yang:zero-based-counter64
       |     |  +--ro invalid-inner-header-checksum?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro gateways-timed-out?   yang:zero-based-counter64
       |     +--ro discontinuity-time?      yang:date-and-time
       +--rw gateway {amt-gateway}?
          ...
]]></artwork>
          </figure>
        </section>
        <section anchor="gateway">
          <name>Gateway</name>
          <t>The structure of 'gateway' is shown in <xref target="fig-gateway-subtree"/>.</t>
          <figure anchor="fig-gateway-subtree">
            <name>AMT Gateway Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-amt
  augment /rt:routing/rt:control-plane-protocols:
    +--rw amt!
       +--rw relay {amt-relay}?
       |  ...
       +--rw gateway {amt-gateway}?
          +--rw pseudo-interfaces
          |  +--rw interface* [name]
          |     +--rw name                      if:interface-ref
          |     +--rw discovery-method?         identityref
          |     +--rw relay-discovery-address?  inet:ip-address
          |     +--rw relay-address?            inet:ip-address
          |     +--rw relay-port?               inet:port-number
          |     +--ro local-address?            inet:ip-address
          |     +--ro local-port?               inet:port-number
          |     +--rw upstream-interface?       if:interface-ref
          |     +--rw discovery-timeout?        uint32
          |     +--rw discovery-retrans-count?  uint32
          |     +--rw request-timeout?          uint32
          |     +--rw request-retrans-count?    uint32
          |     +--rw dest-unreach-retry-count? uint32
          |     +--ro tunnel-state?             identityref
          |     +--ro relay-discovery-message-count?
          |     |                      yang:zero-based-counter64
          |     +--ro relay-advertisement-message-count?
          |     |                      yang:zero-based-counter64
          |     +--ro request-message-count?
          |     |                      yang:zero-based-counter64
          |     +--ro membership-query-message-count?
          |     |                      yang:zero-based-counter64
          |     +--ro membership-update-message-count?
          |     |                      yang:zero-based-counter64
          |     +--ro discontinuity-time?     yang:date-and-time
          +--ro gateway-message-statistics
             +--ro discontinuity-time?        yang:date-and-time
             +--ro received
             |  +--ro relay-advertisement? yang:zero-based-counter64
             |  +--ro membership-query? yang:zero-based-counter64
             +--ro sent
                +--ro relay-discovery? yang:zero-based-counter64
                +--ro request?           yang:zero-based-counter64
                +--ro membership-update? yang:zero-based-counter64
                +--ro teardown?          yang:zero-based-counter64
]]></artwork>
          </figure>
          <t>The 'gateway' data nodes are described as follows:</t>
          <dl>
            <dt>'pseudo-interfaces':</dt>
            <dd>
              <t>Indicates the configuration and operational
   state of pseudo interfaces used to establish AMT tunnels between
   Gateways and Relays.</t>
            </dd>
            <dt>'gateway-message-statistics':</dt>
            <dd>
              <t>Indicates the message statistics of the
   AMT Gateway. It has the time on the most recent occasion at which
   any one or more of the AMT Gateway message counters suffered a discontinuity
   ('discontinuity-time'), the received message statistics of AMT Gateway
   ('received'), and the sent message statistics of AMT Gateway ('sent').</t>
            </dd>
            <dt/>
            <dd>
              <t>'received' container includes the number of AMT Relay advertisement
   messages received ('relay-advertisement') and the number of AMT
   membership query messages received ('membership-query').</t>
            </dd>
            <dt/>
            <dd>
              <t>'sent' container includes the number of AMT Relay Discovery messages sent ('relay-
   discovery'), the number of AMT membership request messages sent
   ('request'), the number of AMT membership update messages sent
   ('membership-update'), and the number of AMT teardown messages sent
   ('teardown').</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="yang-module">
        <name>YANG Module</name>
        <t>This document imports modules defined in <xref target="RFC9911"/>, <xref target="RFC8294"/>,
   <xref target="RFC8343"/>, and <xref target="RFC8349"/>.</t>
        <sourcecode type="yang" markers="true" name="ietf-amt@2026-03-10.yang"><![CDATA[
module ietf-amt {
  yang-version "1.1";
  namespace "urn:ietf:params:xml:ns:yang:ietf-amt";
  prefix amt;

  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 9911: Common YANG Data Types, Section 4";
  }

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 9911: Common YANG Data Types, Section 3";
  }

  import ietf-routing-types {
    prefix rt-types;
    reference
      "RFC 8294: Common YANG Data Types for the Routing Area";
  }

  import ietf-interfaces {
    prefix if;
    reference
      "RFC 8343: A YANG Data Model for Interface Management";
  }

  import ietf-routing {
    prefix rt;
    reference
      "RFC 8349: A YANG Data Model for Routing Management
                 (NMDA Version)";
  }

  organization
    "IETF Multicast Backbone Deployment (MBONED) Working Group";

  contact
    "WG Web:   <https://datatracker.ietf.org/wg/mboned/>
     WG List:  MBONED <mailto:mboned@ietf.org>

     Editor:   Yisong Liu
               <mailto:liuyisong@chinamobile.com>
     Editor:   Changwang Lin
               <mailto:linchangwang.04414@h3c.com>
     Editor:   Zheng(Sandy) Zhang
               <mailto:zhang.zheng@zte.com.cn>
     Editor:   Xuesong Geng
               <mailto:gengxuesong@huawei.com>
     Editor:   Vinod Kumar Nagaraj
               <mailto:vinkumar@juniper.net>";

  description
    "This module describes a YANG data model for managing the 
     Automatic Multicast Tunneling (AMT) protocol.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.

     Copyright (c) 2026 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Revised BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     All revisions of IETF and IANA published modules can be found
     at the YANG Parameters registry group
     (https://www.iana.org/assignments/yang-parameters).

     This version of this YANG module is part of RFC XXXX; see the
     RFC itself for full legal notices.";

  revision 2026-03-10 {
    description
      "Initial Version";
    reference
      "RFC XXXX: A YANG Data Model for Automatic Multicast
                 Tunneling (AMT)";
  }

  feature amt-gateway {
    description
      "Indicates support of AMT Gateway functionality.";
    reference
      "RFC 7450: Automatic Multicast Tunneling, Section 4.1.2";
  }

  feature amt-relay {
    description
      "Indicates support of AMT Relay functionality.";
    reference
      "RFC 7450: Automatic Multicast Tunneling, Section 4.1.3";
  }

  typedef ip-multicast-source-address {
    type union {
      type rt-types:ipv4-multicast-source-address;
      type rt-types:ipv6-multicast-source-address;
    }
    description
      "This type represents a version-neutral IP multicast source
       address. The format of the textual representation implies
       the IP address family.";
  }

  identity tunnel-state-base {
    description
      "Base identity for AMT tunnel states.";
  }

  identity up {
    base tunnel-state-base;
    description
      "The AMT tunnel has been successfully established.";
  }

  identity establishing {
    base tunnel-state-base;
    description
      "The AMT tunnel is being established.";
  }

  identity initial {
    base tunnel-state-base;
    description
      "Initial AMT tunnel state.";
  }

  identity discovering {
    base tunnel-state-base;
    description
      "The Relay Discovery message has been sent
       and is waiting for the Advertisement message.";
  }

  identity requesting {
    base tunnel-state-base;
    description
      "The Request message has been sent, waiting for the Query
       message.";
  }

  identity discovery-method-base {
    description
      "Base identity for all methods used to discover an
       AMT Relay Address.
       
       New discovery methods should be defined by creating
       new identities derived from this base identity.";
  }

  identity by-amt-solicit {
    base discovery-method-base;
    description
      "Find the Relay Address by sending an AMT Discovery message.
       
       This method involves sending an AMT Discovery message to
       discover available Relays in the network.";
    reference
      "RFC 7450: Automatic Multicast Tunneling, Section 5.1.1";
  }

  identity by-dns-reverse-ip {
    base discovery-method-base;
    description
      "Find the Relay Address by DNS reverse IP AMT Discovery.
       
       This method uses DNS reverse IP lookup to discover AMT
       Relays based on the client's IP address.";
    reference
      "RFC 8777: DNS Reverse IP Automatic Multicast Tunneling (AMT)
                 Discovery";
  }

  augment "/rt:routing/rt:control-plane-protocols" {
    description
      "AMT augmentation to the routing instance model.";
    container amt {
      presence "Enables AMT";
      description
        "Management parameters for the AMT protocol.";
      container relay {
        if-feature "amt-relay";
        description
          "Parameters of the AMT Relay service.";
        container addresses {
          description
            "Parameters of AMT Relay Addresses.";
          list address {
            key "family";
            description
              "Each entry contains parameters for an AMT Relay
               Address identified by the 'family' key. Under
               normal operation, these addresses SHOULD belong
               to the same address family indicated by 'family'.
               Any mismatch is an indication of abnormal
               configuration and is therefore allowed to be
               reported.
               
               The 'anycast-prefix' serve as the discovery entry
               for AMT Relays, while unicast IP addresses
               'local-address' are the actual communication entities
               of AMT Relays. The AMT Gateway first locates the AMT
               Relay via the 'anycast-prefix' and then uses its
               'local-address' to complete all subsequent AMT
               interactions.";
            leaf family {
              type identityref {
                base rt:address-family;
              }
              description
                "Indicates the address family for the entry.";
            }
            leaf anycast-prefix {
              type inet:ip-prefix;
              description
                "An anycast IP prefix of the AMT Relay Discovery
                 Address which is used when sending discovery
                 messages to a Relay.
                 
                 If 'family' is IPv4, it SHOULD be an IPv4 prefix;
                 If 'family' is IPv6, it SHOULD be an IPv6 prefix.
                 
                 Any mismatch is an indication of abnormal
                 configuration and is therefore allowed to be
                 reported.";
            }
            leaf local-address {
              type inet:ip-address;
              description
                "A unicast IP address of the AMT Relay Address
                 that is statically configured on the Relay device.
                 This address is used by the AMT Gateway to establish
                 tunnels.
                 
                 If 'family' is IPv4, it SHOULD be an IPv4 address;
                 If 'family' is IPv6, it SHOULD be an IPv6 address.
                 
                 Any mismatch is an indication of abnormal
                 configuration and is therefore allowed to be
                 reported.";
            }
          }
        }
        leaf tunnel-limit {
          type uint32;
          description
            "The maximum number of endpoint Gateways that a Relay can
             serve simultaneously.";
        }
        leaf secret-key-rotation-interval {
          type uint32;
          units "minutes";
          description
            "Specifies the interval period for computing a new
             private secret. This maximum RECOMMENDED interval
             is 120 minutes.";
          reference
               "RFC 7450: Automatic Multicast Tunneling,
                          Section 5.3.6";
        }
        container relay-dns-resource-records {
          description
            "The DNS Resource Records (RRs) of the AMT Relay.";
          list record {
            key "source-address";
            description
              "Specifies an RR entry.";
            leaf source-address {
              type inet:ip-address;
              description
                "The unicast IP address of multicast sender.";
            }
            leaf precedence {
              type uint32;
              description
                "The precedence value of this record, used
                 for Relay selection priority.
                 
                 Lower values indicate higher priority.
                 Relays listed in AMT Relay records with
                 a lower value for precedence are to be
                 attempted first.";
              reference
                "RFC 8777: DNS Reverse IP Automatic Multicast
                           Tunneling (AMT) Discovery,
                           Section 4.2.1";
            }
            leaf d-bit {
              type boolean;
              default false;
              description
                "If the D-bit is set to true, the Gateway MAY
                 send an AMT Request message directly to the
                 discovered Relay Address without first
                 sending an AMT Discovery message.
                 
                 If the D-bit is set to false, the Gateway MUST
                 receive an AMT Relay advertisement message
                 for an address before sending an AMT
                 Request message to that address.";
              reference
                "RFC 8777: DNS Reverse IP Automatic Multicast
                           Tunneling (AMT) Discovery,
                           Section 4.2.2";
            }
            leaf relay-type {
              type enumeration {
                enum empty {
                  value 0;
                  description
                    "The relay field is empty.";
                }
                enum ipv4-address {
                  value 1;
                  description
                    "The relay field contains a 4-octet IPv4
                     address.";
                }
                enum ipv6-address {
                  value 2;
                  description
                    "The relay field contains a 16-octet IPv6
                     address.";
                }
                enum domain-name {
                  value 3;
                  description
                    "The relay field contains a wire-encoded
                     domain name.";
                }
              }
              description
                "Indicates the type of Relay in the AMT Relay RR.
                 
                 Value 0 indicates that no AMT Relay should be
                 used for multicast traffic from this source.
                 
                 Values 1 and 2 indicate that the IP address is
                 used to describe the AMT Relay.
                 
                 Value 3 indicates that the domain name is
                 used to describe the AMT Relay.";
              reference
                "RFC 8777: DNS Reverse IP Automatic Multicast
                           Tunneling (AMT) Discovery,
                           Section 4.2.3";
            }
            leaf discovery-address {
              type inet:ip-address;
              must "(../relay-type = 'ipv4-address' or "
                 + "../relay-type = 'ipv6-address')" {
                error-message
                  "The 'discovery-address' can only be configured
                   when the 'relay-type' is ipv4-address or
                   ipv6-address.";
              }
              description
                "The IP address of AMT Relay Discovery Address.
                 
                 When the 'relay-type' value is 1 or 2, this
                 data node is used to indicate the AMT Relay of
                 the AMT Relay RR.";
            }
            leaf domain-name {
              type inet:domain-name;
              must "../relay-type = 'domain-name'" {
                error-message
                  "The 'domain-name' can only be configured when
                   the 'relay-type' is domain-name.";
              }
              description
                "The wire-encoded domain name of the AMT Relay.
                 
                 When the 'relay-type' value is 3, this data node
                 is used to indicate the AMT Relay of the AMT
                 Relay RR.";
            }
          }
        }
        container tunnels {
          config false;
          description
            "AMT tunnel session information, which contains
             session parameters, state, and statistics for
             all AMT tunnels established between Gateways
             and this Relay.";
          list tunnel {
            key "gateway-address gateway-port";
            description
              "Records a tunnel entry.";
            leaf gateway-address {
              type inet:ip-address;
              description
                "The IP address of an AMT Gateway.";
            }
            leaf gateway-port {
              type inet:port-number;
              description
                "The UDP port number of an AMT Gateway.";
            }
            leaf local-address {
              type inet:ip-address;
              description
                "The local IP address of the AMT Relay.";
            }
            leaf local-port {
              type inet:port-number;
              description
                "The local UDP port number of the AMT Relay.";
            }
            leaf state {
              type identityref {
                base tunnel-state-base;
              }
              description
                "The state of AMT tunnel.";
            }
            container multicast-flows {
              config false;
              description
                "The multicast flow information in the AMT tunnel.

                 Contains operational data for all multicast
                 flows being forwarded through AMT tunnels between
                 this Relay and connected Gateways.";
              list flow {
                key "source-address group-address";
                description
                  "Records the characteristics of a multicast flow.";
                leaf source-address {
                  type ip-multicast-source-address;
                  description
                    "The source IP address of a multicast flow.

                     It MUST belong to the same address family as
                     group-address.";
                }
                leaf group-address {
                  type rt-types:ip-multicast-group-address;
                  description
                    "The group IP address of a multicast flow.

                     It MUST belong to the same address family as
                     source-address.";
                }
              }
            }
            leaf multicast-group-num {
              type yang:gauge32;
              description
                "Number of multicast groups.";
            }
            leaf request-message-count {
              type yang:zero-based-counter64;
              description
                "Number of AMT Request messages received
                 in the tunnel.";
            }
            leaf membership-query-message-count {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership Query messages sent
                 in the tunnel.";
            }
            leaf membership-update-message-count {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership Update messages received
                 in the tunnel.";
            }
            leaf discontinuity-time {
              type yang:date-and-time;
              description
                "The time on the most recent occasion at which any
                 one or more of this AMT tunnel's counters suffered
                 a discontinuity.

                 If no such discontinuities have occurred since the
                 last re-initialization of the AMT tunnel, then this
                 node contains the time when the AMT tunnel was last
                 initialized or the tunnel was established.";
            }
          }
        }
        container relay-message-statistics {
          config false;
          description
            "Message statistics of an AMT Relay.";
          container received {
            description
              "Received message statistics of AMT Relay.";
            leaf relay-discovery {
              type yang:zero-based-counter64;
              description
                "Number of AMT Relay Discovery messages
                 received.";
            }
            leaf request {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership Request messages
                 received.";
            }
            leaf membership-update {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership Update messages
                 received.";
            }
            leaf teardown {
              type yang:zero-based-counter64;
              description
                "Number of AMT Teardown messages received.";
            }
          }
          container sent {
            description
              "Sent message statistics of AMT Relay.";
            leaf relay-advertisement {
              type yang:zero-based-counter64;
              description
                "Number of AMT Relay advertisement messages sent.";
            }
            leaf membership-query {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership Query messages sent.";
            }
          }
          container error {
            description
              "Error message statistics of AMT Relay.";
            leaf incomplete-packet {
              type yang:zero-based-counter64;
              description
                "Number of messages received with length errors
                 so severe that further classification could not
                 occur.";
            }
            leaf invalid-mac {
              type yang:zero-based-counter64;
              description
                "Number of messages received with an invalid
                 Message Authentication Code (MAC).";
            }
            leaf unexpected-type {
              type yang:zero-based-counter64;
              description
                "Number of messages received with an unknown
                 message type specified.";
            }
            leaf invalid-relay-discovery-address {
              type yang:zero-based-counter64;
              description
                "Number of AMT Relay Discovery messages
                 received with an address other than the
                 configured anycast address.";
            }
            leaf invalid-membership-request-address {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership request messages
                 received with an address other than the
                 configured AMT local address.";
            }
            leaf invalid-membership-update-address {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership update messages
                 received with an address other than the
                 configured AMT local address.";
            }
            leaf incomplete-relay-discovery-messages {
              type yang:zero-based-counter64;
              description
                "Number of AMT Relay Discovery messages
                 received that are not fully formed.";
            }
            leaf incomplete-membership-request-messages {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership request messages
                 received that are not fully formed.";
            }
            leaf incomplete-membership-update-messages {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership update messages
                 received that are not fully formed.";
            }
            leaf no-active-gateway {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership update messages
                 received for a tunnel that does not exist
                 for the Gateway that sent the message.";
            }
            leaf invalid-inner-header-checksum {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership update messages
                 received with an invalid IP checksum.";
            }
            leaf gateways-timed-out {
              type yang:zero-based-counter64;
              description
                "Number of Gateways that timed out because
                 of inactivity.";
            }
          }
          leaf discontinuity-time {
            type yang:date-and-time;
            description
              "The time on the most recent occasion at which any
               one or more of this AMT tunnel's message counters
               suffered a discontinuity.

               If no such discontinuities have occurred since the
               last re-initialization of the AMT tunnel, then this
               node contains the time when the AMT tunnel was last
               initialized or the tunnel was established.";
          }
        }
      } // relay
      container gateway {
        if-feature "amt-gateway";
        description
          "Parameters of AMT Gateway service.";
        container pseudo-interfaces {
          description
            "Parameters of AMT pseudo-interface.";
          list interface {
            key "name";
            description
              "An entry of AMT pseudo-interface.";
            leaf name {
              type if:interface-ref;
              description
                "Indicates the name of a pseudo interface.";
            }
            leaf discovery-method {
              type identityref {
                base discovery-method-base;
              }
              description
                "The method used to discover the relay address.";
            }
            leaf relay-discovery-address {
              type inet:ip-address;
              description
                "Specifies the AMT Relay Discovery Address.";
            }
            leaf relay-address {
              type inet:ip-address;
              description
                "Specifies the IP address of the AMT Relay.";
            }
            leaf relay-port {
              type inet:port-number;
              description
                "The UDP port number of the AMT Relay.";
            }
            leaf local-address {
              type inet:ip-address;
              config false;
              description
                "The local IP address of this AMT tunnel.";
            }
            leaf local-port {
              type inet:port-number;
              config false;
              description
                "The local UDP port number of this AMT tunnel.";
            }
            leaf upstream-interface {
              type if:interface-ref;
              description
                "Indicates the upstream interface to reach the AMT
                 Relay.";
            }
            leaf discovery-timeout {
              type uint32;
              units "seconds";
              description
                "Initial time to wait for a response to
                 a Relay Discovery message.";
            }
            leaf discovery-retrans-count {
              type uint32;
              description
                "Maximum number of Relay Discovery retransmissions
                 to allow before terminating Relay Discovery
                 and reporting an error.";
            }
            leaf request-timeout {
              type uint32;
              units "seconds";
              description
                "Initial time to wait for a response
                 to a Request message";
            }
            leaf request-retrans-count {
              type uint32;
              description
                "Maximum number of Request retransmissions
                 to allow before abandoning a Relay and restarting
                 Relay Discovery or reporting an error.";
            }
            leaf dest-unreach-retry-count {
              type uint32;
              description
                "The maximum number of times a Gateway should
                 attempt to send the same Request or Membership
                 Update message after receiving an ICMP Destination
                 Unreachable message.";
            }
            leaf tunnel-state {
              type identityref {
                base tunnel-state-base;
              }
              config false;
              description
                "The tunnel's state.";
            }
            leaf relay-discovery-message-count {
              type yang:zero-based-counter64;
              config false;
              description
                "Number of AMT Relay Discovery messages sent
                 on the interface.";
            }
            leaf relay-advertisement-message-count {
              type yang:zero-based-counter64;
              config false;
              description
                "Number of AMT Relay advertisement messages received
                 on the interface.";
            }
            leaf request-message-count {
              type yang:zero-based-counter64;
              config false;
              description
                "Number of AMT membership request messages sent
                 on the interface.";
            }
            leaf membership-query-message-count {
              type yang:zero-based-counter64;
              config false;
              description
                "Number of AMT membership query messages received
                 on the interface.";
            }
            leaf membership-update-message-count {
              type yang:zero-based-counter64;
              config false;
              description
                "Number of AMT membership update messages sent
                 on the interface.";
            }
            leaf discontinuity-time {
              type yang:date-and-time;
              config false;
              description
                "The time on the most recent occasion at which any
                 one or more of this interface's counters suffered
                 a discontinuity.

                 If no such discontinuities have occurred since the
                 last re-initialization of the AMT tunnel based on
                 this interface, then this node contains the time
                 when the AMT tunnel was last initialized or the
                 tunnel was established.";
            }
          }
        }
        container gateway-message-statistics {
          config false;
          description
            "Message statistics of the AMT Gateway.";
          leaf discontinuity-time {
            type yang:date-and-time;
            description
              "The time on the most recent occasion at which the AMT
               Gateway message counters suffered a discontinuity.

               If no such discontinuities have occurred since the
               last re-initialization of the Gateway, then this
               data node contains the time when the Gateway was last
               initialized.";
          }
          container received {
            description
              "Received message statistics of the AMT Gateway.";
            leaf relay-advertisement {
              type yang:zero-based-counter64;
              description
                "Number of AMT Relay advertisement messages
                 received.";
            }
            leaf membership-query {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership query messages
                 received.";
            }
          }
          container sent {
            description
              "Sent message statistics of the AMT Gateway.";
            leaf relay-discovery {
              type yang:zero-based-counter64;
              description
                "Number of AMT Relay Discovery messages sent.";
            }
            leaf request {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership request messages sent.";
            }
            leaf membership-update {
              type yang:zero-based-counter64;
              description
                "Number of AMT membership update messages sent.";
            }
            leaf teardown {
              type yang:zero-based-counter64;
              description
                "Number of AMT teardown messages sent.";
            }
          }
        }
      } // gateway
    } // amt
  } // augment
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>This document specifies a YANG data model for AMT that configures and monitors
   address parameters for both Relay and Gateway functions. Operators
   have to monitor for address family mismatches between associated address parameters
   to ensure correct protocol operation, tunnel establishment, and forwarding behavior.</t>
      <t>The following address pairs and combinations are critical and have to be validated
   for address family consistency:</t>
      <ul spacing="normal">
        <li>
          <t>On the AMT Relay:  </t>
          <t>
Within the 'relay/addresses/address' list entry indexed by a given address
family ('family'):  </t>
          <ul spacing="normal">
            <li>
              <t>The 'anycast-prefix' (discovery anycast prefix)</t>
            </li>
            <li>
              <t>The 'local-address' (unicast IP address)</t>
            </li>
          </ul>
          <t>
These IP addresses have to belong to the same address family indicated by the 'family'
leaf (either both IPv4 or both IPv6). A mismatch (e.g., IPv4 'anycast-prefix' paired
with IPv6 'local-address' under the same IPv4 'family' entry) indicates a configuration
anomaly that can prevent Relay Discovery, Advertisement responses, and tunnel setup.</t>
        </li>
        <li>
          <t>On the AMT Gateway:  </t>
          <t>
Within each 'gateway/pseudo-interfaces/interface' entry:  </t>
          <ul spacing="normal">
            <li>
              <t>The 'relay-discovery-address'</t>
            </li>
            <li>
              <t>The 'relay-address'</t>
            </li>
            <li>
              <t>The 'local-address' (operational state)</t>
            </li>
          </ul>
          <t>
These IP addresses must all belong to the same address family. A mismatch can lead to
failure in Relay Discovery, tunnel establishment, or traffic decapsulation.</t>
        </li>
      </ul>
      <t>It is RECOMMENDED that operators implement automated configuration validation tools to
   detect such address family mismatches. When combined with the required monitoring,
   this provides a robust defense against misconfiguration.</t>
      <t>Upon detecting an address family mismatch, the device MUST log an appropriate error or alarm
   and prevent the inconsistent configuration from being applied.
   Corrective actions include reconfiguring the affected addresses to match the intended address
   family and verifying routing reachability for the configured addresses.</t>
      <t>This section focuses on fault management for address family mismatches, the core operational
   risk addressed here. While broader network management includes performance, security, and other aspects,
   this document does not define new requirements in those areas. The above recommendations for validation
   and logging still support overall network reliability and security.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section is modeled after the template described in Section 3.7.1
   of <xref target="RFC9907"/>.</t>
      <t>The "ietf-amt" YANG module defines a data model that is designed to
   be accessed via YANG-based management protocols, such as Network Configuration
   Protocol (NETCONF) <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. These YANG-based management
   protocols (1) have to use a secure transport layer (e.g., Secure Shell (SSH)
   <xref target="RFC4252"/>, TLS <xref target="I-D.ietf-tls-rfc8446bis"/>, and QUIC <xref target="RFC9000"/>) and (2) have to use
   mutual authentication.</t>
      <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/>
   provides the means to restrict access for particular NETCONF or
   RESTCONF users to a preconfigured subset of all available NETCONF or
   RESTCONF protocol operations and content.</t>
      <t>There are a number of data nodes defined in this YANG module that are
   writable/creatable/deletable (i.e., config true, which is the
   default). All writable data nodes are likely to be sensitive or
   vulnerable in some network environments. Write operations (e.g.,
   edit-config) and delete operations to these data nodes without proper
   protection or authentication can have a negative effect on network
   operations. The following subtrees and data nodes have particular
   sensitivities/vulnerabilities:</t>
      <artwork><![CDATA[
  Under /rt:routing/rt:control-plane-protocols/rt:control-plane-
  protocol/: Unauthorized access to any data nodes in these subtrees
  can adversely affect the AMT subsystem of both the local device and
  the network. This may lead to network malfunctions, delivery of
  packets to inappropriate destinations, and other problems.

    amt/relay/addresses/address:
      This subtree specifies the IPv4 or IPv6 address information
      for an AMT Relay. Modifying the configuration may cause the
      AMT tunnel to be torn down or established.

    amt/relay/secret-key-rotation-interval:
      This data node defines the maximum validity period or rotation
      interval for the private secret key. Modifying this value can
      weaken security or disrupt operations, as AMT protocol security
      fundamentally depends on this key. Using a secret key beyond
      its validity period extends its exposure to potential attacks,
      increasing the likelihood of compromise and weakening the
      intended security protections. Therefore, write access to this
      node MUST be restricted to authorized administrators, and all
      changes SHOULD be logged. Note that while key provisioning is
      out of scope of this document, it MUST also be performed
      securely.

    amt/relay/relay-dns-resource-records/record:
      This subtree specifies the DNS RR configuration used to
      discover AMT Relays. Modifying this configuration may cause
      the AMT Gateway to discover new AMT Relay devices, or fail to
      discover AMT Relay devices.

    amt/gateway/pseudo-interfaces/interface:
      This subtree specifies the parameters of AMT pseudo-interface
      for an AMT Gateway. Modifying this configuration may cause the
      AMT Gateway to establish or tear down tunnels with multiple
      AMT Relays.
]]></artwork>
      <t>Some of the readable data nodes in this YANG module may be considered
   sensitive or vulnerable in some network environments. It is thus
   important to control read access (e.g., via get, get-config, or
   notification) to these data nodes. Specifically, the following
   subtrees and data nodes have particular sensitivities/
   vulnerabilities:</t>
      <artwork><![CDATA[
  Under /rt:routing/rt:control-plane-protocols/rt:control-plane-
  protocol/: amt/relay and amt/gateway. Unauthorized access to any
  data nodes in these subtrees can disclose operational state
  information about the AMT Relay or AMT Gateway on this device.
]]></artwork>
      <t>There are no particularly sensitive RPC or action operations.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="ietf-xml-registry">
        <name>IETF XML Registry</name>
        <t>IANA is requested to register the following URI in the "ns" registry
   within the "IETF XML Registry" group <xref target="RFC3688"/>:</t>
        <artwork type="ascii-art"><![CDATA[
   URI:  urn:ietf:params:xml:ns:yang:ietf-amt
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.
]]></artwork>
      </section>
      <section anchor="yang-module-names-registry">
        <name>YANG Module Names Registry</name>
        <t>IANA is requested to register the following YANG module in the "YANG
   Module Names" registry <xref target="RFC6020"/> within the "YANG Parameters"
   registry group:</t>
        <artwork type="ascii-art"><![CDATA[
   Name:  ietf-amt
   Maintained by IANA?  N
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-amt
   Prefix:  amt
   Reference:  RFC XXXX
]]></artwork>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Mohamed Boucadair for review and comments.</t>
      <t>Thanks to David Blacka for the DNSDIR, Mike Ounsworth for the SECDIR,
Michael P for the OPSDIR, Robert Wills for the YANGDOCTORS, and
Behcet Sarikaya for the GENART review.</t>
      <t>Thanks to Deb Cooley, Eric Vyncke, Gorry Fairhurst, Roman Danyliw, Andy Newton,
Christopher Inacio, Mahesh Jethanandani, Mike Bishop, Charles Eckel, Gunter Van de Velde,
Jim Guichard, Ketan Talaulikar, and Tommy Jensen for the IESG review.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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="RFC3688" target="https://www.rfc-editor.org/info/rfc3688" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020" target="https://www.rfc-editor.org/info/rfc6020" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <reference anchor="RFC7450" target="https://www.rfc-editor.org/info/rfc7450" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7450.xml">
          <front>
            <title>Automatic Multicast Tunneling</title>
            <author fullname="G. Bumgardner" initials="G." surname="Bumgardner"/>
            <date month="February" year="2015"/>
            <abstract>
              <t>This document describes Automatic Multicast Tunneling (AMT), a protocol for delivering multicast traffic from sources in a multicast-enabled network to receivers that lack multicast connectivity to the source network. The protocol uses UDP encapsulation and unicast replication to provide this functionality.</t>
              <t>The AMT protocol is specifically designed to support rapid deployment by requiring minimal changes to existing network infrastructure.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7450"/>
          <seriesInfo name="DOI" value="10.17487/RFC7450"/>
        </reference>
        <reference anchor="RFC7950" target="https://www.rfc-editor.org/info/rfc7950" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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>
        <reference anchor="RFC8294" target="https://www.rfc-editor.org/info/rfc8294" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8294.xml">
          <front>
            <title>Common YANG Data Types for the Routing Area</title>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="C. Hopps" initials="C." surname="Hopps"/>
            <author fullname="L. Berger" initials="L." surname="Berger"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>This document defines a collection of common data types using the YANG data modeling language. These derived common types are designed to be imported by other modules defined in the routing area.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8294"/>
          <seriesInfo name="DOI" value="10.17487/RFC8294"/>
        </reference>
        <reference anchor="RFC8341" target="https://www.rfc-editor.org/info/rfc8341" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8341.xml">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC8343" target="https://www.rfc-editor.org/info/rfc8343" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8343.xml">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document obsoletes RFC 7223.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8343"/>
          <seriesInfo name="DOI" value="10.17487/RFC8343"/>
        </reference>
        <reference anchor="RFC8349" target="https://www.rfc-editor.org/info/rfc8349" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8349.xml">
          <front>
            <title>A YANG Data Model for Routing Management (NMDA Version)</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document specifies three YANG modules and one submodule. Together, they form the core routing data model that serves as a framework for configuring and managing a routing subsystem. It is expected that these modules will be augmented by additional YANG modules defining data models for control-plane protocols, route filters, and other functions. The core routing data model provides common building blocks for such extensions -- routes, Routing Information Bases (RIBs), and control-plane protocols.</t>
              <t>The YANG modules in this document conform to the Network Management Datastore Architecture (NMDA). This document obsoletes RFC 8022.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8349"/>
          <seriesInfo name="DOI" value="10.17487/RFC8349"/>
        </reference>
        <reference anchor="RFC8777" target="https://www.rfc-editor.org/info/rfc8777" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8777.xml">
          <front>
            <title>DNS Reverse IP Automatic Multicast Tunneling (AMT) Discovery</title>
            <author fullname="J. Holland" initials="J." surname="Holland"/>
            <date month="April" year="2020"/>
            <abstract>
              <t>This document updates RFC 7450, "Automatic Multicast Tunneling" (or AMT), by modifying the relay discovery process. A new DNS resource record named AMTRELAY is defined for publishing AMT relays for source-specific multicast channels. The reverse IP DNS zone for a multicast sender's IP address is configured to use AMTRELAY resource records to advertise a set of AMT relays that can receive and forward multicast traffic from that sender over an AMT tunnel. Other extensions and clarifications to the relay discovery process are also defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8777"/>
          <seriesInfo name="DOI" value="10.17487/RFC8777"/>
        </reference>
        <reference anchor="RFC9911" target="https://www.rfc-editor.org/info/rfc9911">
          <front>
            <title>Common YANG Data Types</title>
            <author initials="J." surname="Schowalder" fullname="Jürgen Schowalder" role="editor">
              <organization/>
            </author>
            <date year="2025" month="December"/>
          </front>
          <refcontent>RFC 9911, DOI 10.17487/RFC9911</refcontent>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4252" target="https://www.rfc-editor.org/info/rfc4252" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4252.xml">
          <front>
            <title>The Secure Shell (SSH) Authentication Protocol</title>
            <author fullname="T. Ylonen" initials="T." surname="Ylonen"/>
            <author fullname="C. Lonvick" initials="C." role="editor" surname="Lonvick"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>The Secure Shell Protocol (SSH) is a protocol for secure remote login and other secure network services over an insecure network. This document describes the SSH authentication protocol framework and public key, password, and host-based client authentication methods. Additional authentication methods are described in separate documents. The SSH authentication protocol runs on top of the SSH transport layer protocol and provides a single authenticated tunnel for the SSH connection protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4252"/>
          <seriesInfo name="DOI" value="10.17487/RFC4252"/>
        </reference>
        <reference anchor="RFC6241" target="https://www.rfc-editor.org/info/rfc6241" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC7951" target="https://www.rfc-editor.org/info/rfc7951" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7951.xml">
          <front>
            <title>JSON Encoding of Data Modeled with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines encoding rules for representing configuration data, state data, parameters of Remote Procedure Call (RPC) operations or actions, and notifications defined using YANG as JavaScript Object Notation (JSON) text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7951"/>
          <seriesInfo name="DOI" value="10.17487/RFC7951"/>
        </reference>
        <reference anchor="RFC8040" target="https://www.rfc-editor.org/info/rfc8040" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC8340" target="https://www.rfc-editor.org/info/rfc8340" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8340.xml">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="I-D.ietf-tls-rfc8446bis" target="https://datatracker.ietf.org/doc/html/draft-ietf-tls-rfc8446bis-14" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-rfc8446bis.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <date day="13" month="September" year="2025"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery. This document updates RFCs 5705, 6066, 7627, and 8422 and obsoletes RFCs 5077, 5246, 6961, 8422, and 8446. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8446bis-14"/>
        </reference>
        <reference anchor="RFC9000" target="https://www.rfc-editor.org/info/rfc9000" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9000.xml">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="W3C.REC-xml-20081126" target="https://www.w3.org/TR/2008/REC-xml-20081126">
          <front>
            <title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title>
            <author initials="T." surname="Bray" fullname="Tim Bray">
              <organization/>
            </author>
            <author initials="J." surname="Paoli" fullname="Jean Paoli">
              <organization/>
            </author>
            <author initials="M." surname="Sperberg-McQueen" fullname="Michael Sperberg-McQueen">
              <organization/>
            </author>
            <author initials="E." surname="Maler" fullname="Eve Maler">
              <organization/>
            </author>
            <author initials="F." surname="Yergeau" fullname="François Yergeau">
              <organization/>
            </author>
            <date year="2008" month="November"/>
          </front>
          <refcontent>World Wide Web Consortium Recommendation REC-xml-20081126</refcontent>
        </reference>
        <reference anchor="RFC9907" target="https://www.rfc-editor.org/info/rfc9907" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9907.xml">
          <front>
            <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="March" year="2026"/>
            <abstract>
              <t>This document provides guidelines for authors and reviewers of specifications containing YANG data models, including IANA-maintained YANG modules. Recommendations and procedures are defined, which are intended to increase interoperability and usability of Network Configuration Protocol (NETCONF) and RESTCONF protocol implementations that utilize YANG modules.</t>
              <t>This document obsoletes RFC 8407; it also updates RFC 8126 by providing additional guidelines for writing the IANA considerations for RFCs that specify IANA-maintained YANG modules.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="216"/>
          <seriesInfo name="RFC" value="9907"/>
          <seriesInfo name="DOI" value="10.17487/RFC9907"/>
        </reference>
        <reference anchor="I-D.ietf-netconf-udp-client-server" target="https://datatracker.ietf.org/doc/html/draft-ietf-netconf-udp-client-server-10" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-netconf-udp-client-server.xml">
          <front>
            <title>YANG Groupings for UDP Clients and UDP Servers</title>
            <author fullname="Alex Huang Feng" initials="A. H." surname="Feng">
              <organization>INSA-Lyon</organization>
            </author>
            <author fullname="Pierre Francois" initials="P." surname="Francois">
              <organization>INSA-Lyon</organization>
            </author>
            <author fullname="Kent Watsen" initials="K." surname="Watsen">
              <organization>Watsen Networks</organization>
            </author>
            <date day="16" month="December" year="2025"/>
            <abstract>
              <t>This document defines two YANG 1.1 modules with reusable groupings for managing UDP clients and UDP servers. Notes to the RFC editor This note is to be removed before publishing as an RFC. Please replace "RFC XXXX" with the assigned RFC number prior to publication. Note that there are also several occurrences of "RFC XXXX" in the YANG modules.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-udp-client-server-10"/>
        </reference>
      </references>
    </references>
    <?line 1572?>

<section anchor="full-tree">
      <name>Full Tree</name>
      <artwork type="ascii-art"><![CDATA[
module: ietf-amt
  augment /rt:routing/rt:control-plane-protocols:
    +--rw amt!
       +--rw relay {amt-relay}?
       |  +--rw addresses
       |  |  +--rw address* [family]
       |  |     +--rw family              identityref
       |  |     +--rw anycast-prefix?     inet:ip-prefix
       |  |     +--rw local-address?      inet:ip-address
       |  +--rw tunnel-limit?             uint32
       |  +--rw secret-key-rotation-interval?      uint32
       |  +--rw relay-dns-resource-records
       |  |  +--rw record* [source-address]
       |  |     +--rw source-address         inet:ip-address
       |  |     +--rw precedence?            uint32
       |  |     +--rw d-bit?                 boolean
       |  |     +--rw relay-type?            enumeration
       |  |     +--rw discovery-address?     inet:ip-address
       |  |     +--rw domain-name?           inet:domain-name
       |  +--ro tunnels
       |  |  +--ro tunnel* [gateway-address gateway-port]
       |  |     +--ro gateway-address     inet:ip-address
       |  |     +--ro gateway-port        inet:port-number
       |  |     +--ro local-address?      inet:ip-address
       |  |     +--ro local-port?         inet:port-number
       |  |     +--ro state?              identityref
       |  |     +--ro multicast-flows
       |  |     |  +--ro flow* [source-address
       |  |     |     |         group-address]
       |  |     |     +--ro source-address
       |  |     |     |         ip-multicast-source-address
       |  |     |     +--ro group-address
       |  |     |               rt-types:ip-multicast-group-address
       |  |     +--ro multicast-group-num?        yang:gauge32
       |  |     +--ro request-message-count?
       |  |     |              yang:zero-based-counter64
       |  |     +--ro membership-query-message-count?
       |  |     |              yang:zero-based-counter64
       |  |     +--ro membership-update-message-count?
       |  |     |              yang:zero-based-counter64
       |  |     +--ro discontinuity-time?          yang:date-and-time
       |  +--ro relay-message-statistics
       |     +--ro received
       |     |  +--ro relay-discovery?      yang:zero-based-counter64
       |     |  +--ro request?              yang:zero-based-counter64
       |     |  +--ro membership-update?    yang:zero-based-counter64
       |     |  +--ro teardown?             yang:zero-based-counter64
       |     +--ro sent
       |     |  +--ro relay-advertisement? yang:zero-based-counter64
       |     |  +--ro membership-query?     yang:zero-based-counter64
       |     +--ro error
       |     |  +--ro incomplete-packet?    yang:zero-based-counter64
       |     |  +--ro invalid-mac?          yang:zero-based-counter64
       |     |  +--ro unexpected-type?      yang:zero-based-counter64
       |     |  +--ro invalid-relay-discovery-address?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro invalid-membership-request-address?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro invalid-membership-update-address?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro incomplete-relay-discovery-messages?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro incomplete-membership-request-messages?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro incomplete-membership-update-messages?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro no-active-gateway?    yang:zero-based-counter64
       |     |  +--ro invalid-inner-header-checksum?
       |     |  |                           yang:zero-based-counter64
       |     |  +--ro gateways-timed-out?   yang:zero-based-counter64
       |     +--ro discontinuity-time?      yang:date-and-time
       +--rw gateway {amt-gateway}?
          +--rw pseudo-interfaces
          |  +--rw interface* [name]
          |     +--rw name                      if:interface-ref
          |     +--rw discovery-method?         identityref
          |     +--rw relay-discovery-address?  inet:ip-address
          |     +--rw relay-address?            inet:ip-address
          |     +--rw relay-port?               inet:port-number
          |     +--ro local-address?            inet:ip-address
          |     +--ro local-port?               inet:port-number
          |     +--rw upstream-interface?       if:interface-ref
          |     +--rw discovery-timeout?        uint32
          |     +--rw discovery-retrans-count?  uint32
          |     +--rw request-timeout?          uint32
          |     +--rw request-retrans-count?    uint32
          |     +--rw dest-unreach-retry-count? uint32
          |     +--ro tunnel-state?             identityref
          |     +--ro relay-discovery-message-count?
          |     |                      yang:zero-based-counter64
          |     +--ro relay-advertisement-message-count?
          |     |                      yang:zero-based-counter64
          |     +--ro request-message-count?
          |     |                      yang:zero-based-counter64
          |     +--ro membership-query-message-count?
          |     |                      yang:zero-based-counter64
          |     +--ro membership-update-message-count?
          |     |                      yang:zero-based-counter64
          |     +--ro discontinuity-time?     yang:date-and-time
          +--ro gateway-message-statistics
             +--ro discontinuity-time?        yang:date-and-time
             +--ro received
             |  +--ro relay-advertisement? yang:zero-based-counter64
             |  +--ro membership-query? yang:zero-based-counter64
             +--ro sent
                +--ro relay-discovery? yang:zero-based-counter64
                +--ro request?           yang:zero-based-counter64
                +--ro membership-update? yang:zero-based-counter64
                +--ro teardown?          yang:zero-based-counter64
]]></artwork>
    </section>
    <section anchor="data-model-example">
      <name>Data Model Example</name>
      <t>This section presents a simple and illustrative example of how to
   configure AMT.</t>
      <t>The example is represented in both XML <xref target="W3C.REC-xml-20081126"/> and
   JSON <xref target="RFC7951"/> formats.</t>
      <t><xref target="fig-relay-example-xml"/> shows a sample configuration for an AMT Relay
   service in XML format. This example configures the protocol address family
   (IPv4 or IPv6), secret key rotation interval (120 minutes), and tunnel limit
   (10) for AMT Relay function. In addition, the AMT anycast prefix is
   set to 192.0.2.1/32 for IPv4 and 2001:db8::1/128 for IPv6, and the
   AMT local address is configured to 198.51.100.42 for IPv4 and
   2001:db8:abcd:12::42 for IPv6.</t>
      <figure anchor="fig-relay-example-xml">
        <name>Data Model Example for Relay in XML</name>
        <sourcecode type="xml"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"
         xmlns:rt="urn:ietf:params:xml:ns:yang:ietf-routing">
  <control-plane-protocols>
    <amt xmlns="urn:ietf:params:xml:ns:yang:ietf-amt">
      <relay>
        <addresses>
          <address>
            <family>rt:ipv4</family>
            <anycast-prefix>192.0.2.1/32</anycast-prefix>
            <local-address>198.51.100.42</local-address>
          </address>
          <address>
            <family>rt:ipv6</family>
            <anycast-prefix>2001:db8::1/128</anycast-prefix>
            <local-address>2001:db8:abcd:12::42</local-address>
          </address>
        </addresses>
        <tunnel-limit>10</tunnel-limit>
        <secret-key-rotation-interval>
          120
        </secret-key-rotation-interval>
      </relay>
    </amt>
  </control-plane-protocols>
</routing>
]]></sourcecode>
      </figure>
      <t><xref target="fig-relay-example-json"/> shows the same sample configuration for an AMT Relay
   service in JSON format.</t>
      <figure anchor="fig-relay-example-json">
        <name>Data Model Example for Relay in JSON</name>
        <sourcecode type="json"><![CDATA[
{
  "ietf-routing:routing": {
    "control-plane-protocols": {
      "ietf-amt:amt": {
        "relay": {
          "addresses": {
            "address": [
              {
                "family": "ietf-routing:ipv4",
                "anycast-prefix": "192.0.2.1/32",
                "local-address": "198.51.100.42"
              },
              {
                "family": "ietf-routing:ipv6",
                "anycast-prefix": "2001:db8::1/128",
                "local-address": "2001:db8:abcd:12::42"
              }
            ]
          },
          "tunnel-limit": 10,
          "secret-key-rotation-interval": 120
        }
      }
    }
  }
}
]]></sourcecode>
      </figure>
      <t><xref target="fig-gateway-example-xml"/> shows a sample configuration for an AMT Gateway service in XML format.
   This example configures two AMT pseudo-interfaces, amt0 and amt1. The Relay Discovery method
   is set to send an AMT Discovery message.
   For amt0, the Relay Discovery Address is configured as 192.0.2.1; for amt1, it is 2001:db8::1.
   Additionally, the initial time to wait for a response to a Relay Discovery message is
   set to 60 seconds for both interfaces. Likewise, the initial time to wait for
   a response to a Request message is also configured to 60 seconds for both amt0 and amt1.</t>
      <figure anchor="fig-gateway-example-xml">
        <name>Data Model Example for Gateway in XML</name>
        <sourcecode type="xml"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"
            xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
  <interface>
    <name>Tunnel0</name>
    <type>ianaift:tunnel</type>
    <enabled>true</enabled>
  </interface>
  <interface>
    <name>Tunnel1</name>
    <type>ianaift:tunnel</type>
    <enabled>true</enabled>
  </interface>
</interfaces>
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
  <control-plane-protocols>
    <amt xmlns="urn:ietf:params:xml:ns:yang:ietf-amt">
      <gateway>
        <pseudo-interfaces>
          <interface>
            <name>Tunnel0</name>
            <discovery-method>by-amt-solicit</discovery-method>
            <relay-discovery-address>192.0.2.1</
             relay-discovery-address>
            <discovery-timeout>60</discovery-timeout>
            <request-timeout>60</request-timeout>
          </interface>
          <interface>
            <name>Tunnel1</name>
            <discovery-method>by-amt-solicit</discovery-method>
            <relay-discovery-address>2001:db8::1</
             relay-discovery-address>
            <discovery-timeout>60</discovery-timeout>
            <request-timeout>60</request-timeout>
          </interface>
        </pseudo-interfaces>
      </gateway>
    </amt>
  </control-plane-protocols>
</routing>
]]></sourcecode>
      </figure>
      <t><xref target="fig-gateway-example-json"/> shows the same sample configuration for an AMT Gateway
   service in JSON format.</t>
      <figure anchor="fig-gateway-example-json">
        <name>Data Model Example for Gateway in JSON</name>
        <sourcecode type="json"><![CDATA[
{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "Tunnel0",
        "type": "iana-if-type:tunnel",
        "enabled": true
      },
      {
        "name": "Tunnel1",
        "type": "iana-if-type:tunnel",
        "enabled": true
      }
    ]
  },
  "ietf-routing:routing": {
    "control-plane-protocols": {
      "ietf-amt:amt": {
        "gateway": {
          "pseudo-interfaces": {
            "interface": [
              {
                "name": "Tunnel0",
                "discovery-method": "by-amt-solicit",
                "relay-discovery-address": "192.0.2.1",
                "discovery-timeout": 60,
                "request-timeout": 60
              },
              {
                "name": "Tunnel1",
                "discovery-method": "by-amt-solicit",
                "relay-discovery-address": "2001:db8::1",
                "discovery-timeout": 60,
                "request-timeout": 60
              }
            ]
          }
        }
      }
    }
  }
}
]]></sourcecode>
      </figure>
    </section>
  </back>
  <!-- ##markdown-source:
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
YkyaNP8foMoO5zIbAQA=

-->

</rfc>
