<?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.39 (Ruby 3.2.3) -->
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-sidrops-rtr-yang-11"
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 RTR">YANG Data Model for RPKI to Router Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-sidrops-rtr-yang-11"/>
    <author initials="Y." surname="Liu" fullname="Yisong Liu">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <street>32 Xuanwumen West Street</street>
          <region>Xicheng District</region>
          <code>100053</code>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>liuyisong@chinamobile.com</email>
      </address>
    </author>
    <author initials="C." surname="Lin" fullname="Changwang Lin">
      <organization>New H3C Technologies</organization>
      <address>
        <postal>
          <street>8 Yongjia North Road</street>
          <region>Haidian District</region>
          <code>100094</code>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>linchangwang.04414@h3c.com</email>
      </address>
    </author>
    <author initials="J." surname="Roy" fullname="Jishnu Roy">
      <organization>HPE</organization>
      <address>
        <postal>
          <street>192, Whitefield Road</street>
          <region>B Narayanapura, Mahadevapura</region>
          <city>Bengaluru, Karnataka</city>
          <code>560048</code>
          <country>India</country>
        </postal>
        <email>jishnu.roy@hpe.com</email>
      </address>
    </author>
    <author initials="H." surname="Wang" fullname="Haibo Wang">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>rainsword.wang@huawei.com</email>
      </address>
    </author>
    <author initials="J." surname="Haas" fullname="Jeffrey Haas">
      <organization>HPE</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <region>Sunnyvale, CA 94089</region>
          <country>United States of America</country>
        </postal>
        <email>jeffrey.haas@hpe.com</email>
      </address>
    </author>
    <author initials="H." surname="Liu" fullname="Hongwei Liu">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>liu.hongwei3@zte.com.cn</email>
      </address>
    </author>
    <author initials="D." surname="Ma" fullname="Di Ma">
      <organization>ZDNS</organization>
      <address>
        <postal>
          <street>Floor 21, Block B, Greenland Center</street>
          <city>Chaoyang Beijing, 100102</city>
          <country>China</country>
        </postal>
        <email>madi@zdns.cn</email>
      </address>
    </author>
    <date year="2026"/>
    <area>ops</area>
    <workgroup>SIDROPS Working Group</workgroup>
    <keyword>YANG, RPKI, RTR</keyword>
    <abstract>
<t>This document defines YANG data models for managing
   Resource Public Key Infrastructure (RPKI) to Router Protocol
   (RFC6810 and RFC8210).</t>
    </abstract>
  </front>
  <middle>
<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="RFC6810"/> and <xref target="RFC8210"/> describe a protocol to deliver Resource
   Public Key Infrastructure (RPKI) prefix origin data and router keys
   from a trusted cache server to a router, referred to as the RPKI to Router (RTR)
   protocol.</t>
      <t><xref target="I-D.ietf-sidrops-8210bis"/> describes version 2 of the RTR protocol, which
   adds a new Autonomous System Provider Authorization (ASPA) PDU type.</t>
      <t>This document defines YANG <xref target="RFC7950"/> data models for
   managing RTR protocol (<xref target="RFC6810"/>, <xref target="RFC8210"/>, and
   <xref target="I-D.ietf-sidrops-8210bis"/>).</t>
    </section>
    <section anchor="terminology-and-notation-conventions">
      <name>Terminology and Notation Conventions</name>
      <section anchor="requirements-notation">
        <name>Requirements Notation</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 following terms are defined in <xref target="RFC7950"/> and are not redefined
   here:</t>
        <ul spacing="normal">
          <li>
            <t>augment</t>
          </li>
          <li>
            <t>data model</t>
          </li>
          <li>
            <t>data node</t>
          </li>
          <li>
            <t>module</t>
          </li>
          <li>
            <t>namespace</t>
          </li>
          <li>
            <t>YANG</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>This document defines two YANG modules: "ietf-rpki-rtr" and "ietf-rpki-table".</t>
      <t>The "ietf-rpki-rtr" YANG module provides the methods for
   managing RTR protocol. It includes:</t>
      <ul spacing="normal">
        <li>
          <t>Connectivity parameters, such as RPKI cache server IP address and
destination port.</t>
        </li>
        <li>
          <t>Session parameters, such as refresh interval, retry interval, expire
interval, purge interval, and hold interval.</t>
        </li>
        <li>
          <t>Session status and statistics, such as session ID, serial number,
number of received and transmitted messages.</t>
        </li>
      </ul>
      <t>The "ietf-rpki-table" YANG module provides the methods for
   managing records of RTR protocol and the corresponding state hash which is a hash value
   used in the Canonical Cache Representation (CCR) content <xref target="I-D.ietf-sidrops-rpki-ccr"/>.
   It includes:</t>
      <ul spacing="normal">
        <li>
          <t>Validated ROA Payload (VRP) records.</t>
        </li>
        <li>
          <t>Router Key records.</t>
        </li>
        <li>
          <t>ASPA records.</t>
        </li>
        <li>
          <t>CCR state hash, which is optional and is used to verify the integrity and consistency of RPKI data
originating from the RPKI cache.</t>
        </li>
      </ul>
    </section>
    <section anchor="rpki-to-router-yang-module">
      <name>RPKI to Router YANG Module</name>
      <section anchor="tree-view">
        <name>Tree View</name>
        <t>The full tree of the "ietf-rpki-rtr" YANG module is provided in <xref target="rtr-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 "ietf-rpki-rtr" YANG module is shown in <xref target="fig-rtr-overall-tree"/>.</t>
          <t>The "ietf-rpki-rtr" YANG module augments the core routing YANG module "ietf-routing"
   specified in <xref target="RFC8349"/> for managing RTR protocol sessions. Specifically, this YANG module
   augments "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol".</t>
          <figure anchor="fig-rtr-overall-tree">
            <name>Overall RPKI to Router Tree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-rtr
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--rw rpki-rtr
       +--rw sessions
          +--rw session* [server-address]
             +--rw server-address           inet:ip-address
             +--rw server-port?             inet:port-number
             +--rw local-address?           union
             +--rw local-port?              inet:port-number
             +--rw enabled?                 boolean
             +--rw preference?              uint32
             +--rw description?             string
             +--rw reconnect-interval?      uint32
             +--ro session-state?           enumeration
             +--rw enable-authentication?   boolean
             +--rw authentication
             |  ...
             +--rw vrp-limit
             |  ...
             +--rw aspa-limit
             |  ...
             +--ro statistics
             |  ...
             +--ro connection-data
             |  ...
             +--rw protocol-data
             |  ...
             +--ro pdu-counters
             |  ...
             +--ro error-pdu-counters
                ...
]]></artwork>
          </figure>
          <t>The "ietf-rpki-rtr" YANG module has a root container 'rpki-rtr', which has a subcontainer 'sessions'.
   The container 'sessions' contains a list 'session', where each entry represents a session
   configuration and state to a specific RPKI cache server.</t>
        </section>
        <section anchor="rtr-session-configuration">
          <name>RTR Session Configuration</name>
          <t>The RTR session configuration structure for the list 'session' is shown in
   <xref target="fig-rtr-sess-conf-tree"/>.</t>
          <figure anchor="fig-rtr-sess-conf-tree">
            <name>RTR Session Configuration Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-rtr
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--rw rpki-rtr
       +--rw sessions
          +--rw session* [server-address]
             +--rw server-address           inet:ip-address
             +--rw server-port?             inet:port-number
             +--rw local-address?           union
             +--rw local-port?              inet:port-number
             +--rw enabled?                 boolean
             +--rw preference?              uint32
             +--rw description?             string
             +--rw reconnect-interval?      uint32
             +--rw enable-authentication?   boolean
             +--rw authentication
             |  ...
             +--rw vrp-limit
             |  ...
             +--rw aspa-limit
             |  ...
             +--rw protocol-data
             |  ...
]]></artwork>
          </figure>
          <t>The configuration data nodes for the list 'session' are described as follows:</t>
          <t>'server-address': Indicates the IP address of the RPKI cache server.</t>
          <t>'server-port': Indicates the port number the server listens on.</t>
          <t>'local-address': Indicates the source IP address used when initiating a RTR session connection locally.</t>
          <t>'local-port': Indicates the source port number used when initiating a RTR session connection locally.</t>
          <t>'enabled': Indicates the management switch for the RTR session.</t>
          <t>'preference': Indicates the priority for connecting to the RPKI cache server.</t>
          <t>'description': Indicates the description information for the RTR session.</t>
          <t>'reconnect-interval': Indicates the reconnection interval after session disconnection.</t>
          <t>'enable-authentication': Indicates the switch to enable connection authentication for the RTR session.</t>
          <t>'authentication': Indicates the configuration information of connection authentication for the
   RTR session, as shown in <xref target="fig-rtr-sess-auth-tree"/>.</t>
          <figure anchor="fig-rtr-sess-auth-tree">
            <name>RTR Session Authentication Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-rtr
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--rw rpki-rtr
       +--rw sessions
          +--rw session* [server-address]
             ...
             +--rw authentication
             |  +--rw (option)?
             |     +--:(md5)
             |     |  +--rw md5-password?   ianach:crypt-hash
             |     +--:(ssh)
             |     |  +--rw client-identity
             |     |  |  +--rw username?  string
             |     |  |  +--rw public-key!
             |     |  |                   {client-ident-publickey}?
             |     |  |  +--rw password!
             |     |  |                   {client-ident-password}?
             |     |  |  +--rw hostbased!
             |     |  |                   {client-ident-hostbased}?
             |     |  |  +--rw none?      empty {client-ident-none}?
             |     |  |  +--rw certificate!
             |     |  |                   {sshcmn:ssh-x509-certs}?
             |     |  +--rw server-authentication
             |     |  |  +--rw ssh-host-keys!
             |     |  |  +--rw ca-certs!  {sshcmn:ssh-x509-certs}?
             |     |  |  +--rw ee-certs!  {sshcmn:ssh-x509-certs}?
             |     |  +--rw transport-params
             |     |  |                 {sshcmn:transport-params}?
             |     |  +--rw keepalives!   {ssh-client-keepalives}?
             |     |     +--rw max-wait?       uint16
             |     |     +--rw max-attempts?   uint8
             |     +--:(tcp-ao-keychain)
             |        +--rw keychain-name?  key-chain:key-chain-ref
             +--rw vrp-limit
             |  ...
             +--rw aspa-limit
             |  ...
]]></artwork>
          </figure>
          <t>'vrp-limit' (<xref target="fig-rtr-sess-record-limit-tree"/>): Indicates the limit configuration on the
   number of VRP record received from the RTR session.</t>
          <t>'aspa-limit' (<xref target="fig-rtr-sess-record-limit-tree"/>): Indicates the limit configuration on the
   number of ASPA record received from the RTR session.</t>
          <figure anchor="fig-rtr-sess-record-limit-tree">
            <name>RTR Session Received Record Limit Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-rtr
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--rw rpki-rtr
       +--rw sessions
          +--rw session* [server-address]
             ...
             +--rw authentication
             |  ...
             +--rw vrp-limit
             |  +--rw max-number?              uint64
             |  +--rw threshold-percentage?    rt-types:percentage
             |  +--rw over-threshold-action?   enumeration
             +--rw aspa-limit
             |  +--rw max-number?              uint64
             |  +--rw threshold-percentage?    rt-types:percentage
             |  +--rw over-threshold-action?   enumeration
]]></artwork>
          </figure>
          <t>In <xref target="fig-rtr-sess-record-limit-tree"/>, 'vrp-limit' and 'aspa-limit' have the same structure, both having
   the maximum number of records allowed to be received from the RTR session ('max-number'), the threshold
   percentage for record maximum number ('threshold-percentage'), and handling strategy when exceeding
   the record threshold ('over-threshold-action').</t>
          <t>'protocol-data': Indicates the protocol parameters of the RTR session. The configurable
   parameters include the preferred protocol version ('preferred-protocol-version') and the
   intervals for refresh ('refresh-interval'), retry ('retry-interval'), expire
   ('expire-interval'), purge ('purge-interval'), and hold ('hold-interval') timers, as
   shown in <xref target="fig-rtr-sess-proto-data-conf-tree"/>.</t>
          <figure anchor="fig-rtr-sess-proto-data-conf-tree">
            <name>RTR Session Protocol Data Configuration Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-rtr
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--rw rpki-rtr
       +--rw sessions
          +--rw session* [server-address]
             ...
             +--rw protocol-data
             |  +--rw preferred-protocol-version?   uint8
             |  +--rw refresh-interval?             uint32
             |  +--rw retry-interval?               uint32
             |  +--rw expire-interval?              uint32
             |  +--rw purge-interval?               uint32
             |  +--rw hold-interval?                uint32
             |  ...
             ...
]]></artwork>
          </figure>
        </section>
        <section anchor="rtr-session-state">
          <name>RTR Session State</name>
          <t>The RTR session state structure for the list 'session' is shown in
   <xref target="fig-rtr-sess-state-tree"/>.</t>
          <figure anchor="fig-rtr-sess-state-tree">
            <name>RTR Session State Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-rtr
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--rw rpki-rtr
       +--rw sessions
          +--rw session* [server-address]
             +--ro session-state?           enumeration
             +--ro statistics
             |  ...
             +--ro connection-data
             |  ...
             +--rw protocol-data
             |  ...
             +--ro pdu-counters
             |  ...
             +--ro error-pdu-counters
                ...
]]></artwork>
          </figure>
          <t>The state data nodes for the list 'session' are described as follows:</t>
          <t>'session-state': Indicates the connection status of the RTR session.</t>
          <t>'statistics': Indicates the statistics of RPKI records or messages received from the server of the RTR session,
   as shown in <xref target="fig-rtr-sess-statistic-tree"/>.</t>
          <figure anchor="fig-rtr-sess-statistic-tree">
            <name>RTR Session Statistics Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-rtr
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--rw rpki-rtr
       +--rw sessions
          +--rw session* [server-address]
             ...
             +--ro statistics
             |  +--ro total-vrp-records?  yang:zero-based-counter64
             |  +--ro ipv4-vrp-records?   yang:zero-based-counter64
             |  +--ro ipv6-vrp-records?   yang:zero-based-counter64
             |  +--ro router-key-records? yang:zero-based-counter64
             |  +--ro aspa-records?       yang:zero-based-counter64
             |  +--ro in-total-messages?  yang:zero-based-counter64
             |  +--ro out-total-messages? yang:zero-based-counter64
             +--ro connection-data
             |  ...
             +--rw protocol-data
             |  ...
             +--ro pdu-counters
             |  ...
             +--ro error-pdu-counters
                ...
]]></artwork>
          </figure>
          <t>'connection-data': Indicates the state information relating to the session connection with
   the RPKI cache server, as shown in <xref target="fig-rtr-sess-conn-data-tree"/>.</t>
          <figure anchor="fig-rtr-sess-conn-data-tree">
            <name>RTR Session Connection Data Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-rtr
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--rw rpki-rtr
       +--rw sessions
          +--rw session* [server-address]
             ...
             +--ro statistics
             |  ...
             +--ro connection-data
             |  +--ro flaps?                       uint32
             |  +--ro last-session-up-down?        yang:date-and-time
             |  +--ro last-update-sync?            yang:date-and-time
             |  +--ro last-full-sync?              yang:date-and-time
             |  +--ro last-serial-query?           yang:date-and-time
             |  +--ro last-reset-query?            yang:date-and-time
             |  +--ro last-eod-received?           yang:date-and-time
             |  +--ro last-config-change?          yang:date-and-time
             |  +--ro last-error?                  yang:date-and-time
             |  +--ro last-connection-error?       yang:date-and-time
             |  +--ro last-connection?             yang:date-and-time
             |  +--ro error-reason?                string
             +--rw protocol-data
             |  ...
             +--ro pdu-counters
             |  ...
             +--ro error-pdu-counters
                ...
]]></artwork>
          </figure>
          <t>'protocol-data': Indicates the state parameters of the RTR protocol of the session. The
   state parameters include the negotiated protocol version ('protocol-version'), the
   scheduled time points for refresh ('refresh-time'), response ('response-time'), record
   lifetime ('record-lifetime'), purge ('purge-time'), and hold ('hold-time'), as well as
   the session identifier ('session-id') and serial numbers ('serial-full' and
   'serial-incremental'), as shown in <xref target="fig-rtr-sess-proto-data-tree"/>. The
   configurable protocol parameters in 'protocol-data' are described in
   <xref target="rtr-session-configuration"/>.</t>
          <figure anchor="fig-rtr-sess-proto-data-tree">
            <name>RTR Session Protocol Data State Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-rtr
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--rw rpki-rtr
       +--rw sessions
          +--rw session* [server-address]
             ...
             +--ro statistics
             |  ...
             +--ro connection-data
             |  ...
             +--rw protocol-data
             |  ...
             |  +--ro protocol-version?   uint8
             |  +--ro refresh-time?       yang:date-and-time
             |  +--ro response-time?      yang:date-and-time
             |  +--ro record-lifetime?    yang:date-and-time
             |  +--ro purge-time?         yang:date-and-time
             |  +--ro hold-time?          yang:date-and-time
             |  +--ro session-id?         uint16
             |  +--ro serial-full?        uint32
             |  +--ro serial-incremental? uint32
             +--ro pdu-counters
             |  ...
             +--ro error-pdu-counters
                ...
]]></artwork>
          </figure>
          <t>'pdu-counters': Indicates the send and receive statistics of various types of RTR PDUs,
   as shown in <xref target="fig-rtr-sess-pdu-cnt-tree"/>.</t>
          <figure anchor="fig-rtr-sess-pdu-cnt-tree">
            <name>RTR Session PDU Counters Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-rtr
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--rw rpki-rtr
       +--rw sessions
          +--rw session* [server-address]
             ...
             +--ro statistics
             |  ...
             +--ro connection-data
             |  ...
             +--rw protocol-data
             |  ...
             +--ro pdu-counters
             |  +--ro serial-notify?    yang:zero-based-counter64
             |  +--ro serial-query?     yang:zero-based-counter64
             |  +--ro reset-query?      yang:zero-based-counter64
             |  +--ro cache-response?   yang:zero-based-counter64
             |  +--ro ipv4-prefix?      yang:zero-based-counter64
             |  +--ro ipv6-prefix?      yang:zero-based-counter64
             |  +--ro end-of-data?      yang:zero-based-counter64
             |  +--ro cache-reset?      yang:zero-based-counter64
             |  +--ro router-key?       yang:zero-based-counter64
             |  +--ro aspa?             yang:zero-based-counter64
             +--ro error-pdu-counters
                ...
]]></artwork>
          </figure>
          <t>'error-pdu-counters': Indicates counters of Error Report PDUs
   exchanged with the RPKI cache server, by error code, as shown in
   <xref target="fig-rtr-sess-err-pdu-cnt-tree"/>.</t>
          <figure anchor="fig-rtr-sess-err-pdu-cnt-tree">
            <name>RTR Session Error PDU Counters Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-rtr
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--rw rpki-rtr
       +--rw sessions
          +--rw session* [server-address]
             ...
             +--ro statistics
             |  ...
             +--ro connection-data
             |  ...
             +--rw protocol-data
             |  ...
             +--ro pdu-counters
             |  ...
             +--ro error-pdu-counters
                +--ro corrupt-data?      yang:zero-based-counter64
                +--ro internal-error?    yang:zero-based-counter64
                +--ro no-data-available? yang:zero-based-counter64
                +--ro invalid-request?   yang:zero-based-counter64
                +--ro unsupported-protocol-version?
                |                        yang:zero-based-counter64
                +--ro unsupported-pdu-type?
                |                        yang:zero-based-counter64
                +--ro withdrawal-unknown-record?
                |                        yang:zero-based-counter64
                +--ro duplicate-announcement-received?
                |                        yang:zero-based-counter64
                +--ro unexpected-protocol-version?
                |                        yang:zero-based-counter64
                +--ro aspa-provider-list-error?
                |                        yang:zero-based-counter64
                +--ro transport-failure?  yang:zero-based-counter64
                +--ro ordering-error?      yang:zero-based-counter64
                +--ro cache-restart?       yang:zero-based-counter64
                +--ro cache-shutdown?      yang:zero-based-counter64
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="yang-module">
        <name>YANG Module</name>
        <t>This YANG module has normative references to <xref target="RFC6810"/>, <xref target="RFC7317"/>,
  <xref target="RFC8177"/>, <xref target="RFC8210"/>, <xref target="RFC8294"/>, <xref target="RFC8343"/>, <xref target="RFC8349"/>, <xref target="RFC9644"/>, <xref target="RFC9911"/>, and <xref target="I-D.ietf-sidrops-8210bis"/>.</t>
        <sourcecode type="yang" markers="true" name="ietf-rpki-rtr@2026-10-15.yang"><![CDATA[
module ietf-rpki-rtr {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-rpki-rtr";
  prefix rpki-rtr;

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 9911: Common YANG Data Types";
  }
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 9911: Common YANG Data Types";
  }
  import ietf-routing {
    prefix rt;
    reference
      "RFC 8349: A YANG Data Model for Routing Management
                 (NMDA Version)";
  }
  import ietf-routing-types {
    prefix rt-types;
    reference
      "RFC 8294: Common YANG Data Types for the Routing Area";
  }
  import iana-crypt-hash {
    prefix ianach;
    reference
      "RFC 7317: A YANG Data Model for System Management";
  }
  import ietf-ssh-client {
    prefix sshc;
    reference
      "RFC 9644: YANG Groupings for SSH Clients and SSH Servers";
  }
  import ietf-interfaces {
    prefix if;
    reference
      "RFC 8343: A YANG Data Model for Interface Management";
  }
  import ietf-key-chain {
    prefix key-chain;
    reference
      "RFC 8177: YANG Data Model for Key Chains";
  }

  organization
    "IETF Secure Inter-Domain Routing Operations (SIDROPS)
     Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/sidrops/>
     WG List:  SIDROPS <mailto:sidrops@ietf.org>

     Editor:   Yisong Liu
               <mailto:liuyisong@chinamobile.com>
     Editor:   Changwang Lin
               <mailto:linchangwang.04414@h3c.com>
     Editor:   Haibo Wang
               <mailto:rainsword.wang@huawei.com>
     Editor:   Jishnu Roy
               <mailto:jishnu.roy@hpe.com>
     Editor:   Jeffrey Haas
               <mailto:jeffrey.haas@hpe.com>
     Editor:   Hongwei Liu
               <mailto:liu.hongwei3@zte.com.cn>
     Editor:   Di Ma
               <mailto:madi@zdns.cn>";
  description
    "This module describes a YANG model for the Resource Public
     Key Infrastructure (RPKI) to Router (RTR) protocol management.

     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-10-15 {
    description
      "Initial Version";
    reference
      "RFC XXXX: YANG Data Model for RPKI to Router Protocol";
  }

  identity rpki-rtr {
    base rt:routing-protocol;
    description
      "RTR protocol.";
  }

  grouping records-limit {
    description
      "Limit of records that can be received from the RPKI
       cache server.";
    leaf max-number {
      type uint64;
      description
        "Configures the maximum number of records that can be
         received from the RPKI cache server.";
    }
    leaf threshold-percentage {
      type rt-types:percentage;
      units "percent";
      description
        "Configures the threshold percentage for record maximum
         number.";
    }
    leaf over-threshold-action {
      type enumeration {
        enum alert-only {
          description
            "Generates alert messages.";
        }
        enum discard {
          description
            "Discards excess records.";
        }
        enum reconnect {
          description
            "Disconnects with the RPKI cache server,
             and tries to reconnect after reconnection
             timer expires.";
        }
        enum idle-forever {
          description
            "Disconnects with the RPKI cache server
             forever.";
        }
      }
      description
        "The action to taken when record number exceeds
         threshold.";
    }
  }

  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol" {
    when "derived-from-or-self(rt:type, 'rpki-rtr')" {
      description
        "This augmentation is valid for a routing protocol
         instance of RTR.";
    }
    description
      "RTR protocol augmentation of ietf-routing module
       control-plane-protocol.";
    container rpki-rtr {
      description
        "Configuration parameters for the RTR protocol.";
      container sessions {
        description
          "Parameters of RPKI sessions to cache servers.";
        list session {
          key "server-address";
          description
            "Each entry contains parameters for a RPKI session
             identified by the 'server-address' key.";
          leaf server-address {
            type inet:ip-address;
            mandatory true;
            description
              "The IP address of the RPKI cache server resembling
               a session.";
          }
          leaf server-port {
            type inet:port-number;
            description
              "The remote port for the connection
               to the RPKI cache server.";
          }
          leaf local-address {
            type union {
              type inet:ip-address;
              type if:interface-ref;
            }
            description
              "The local IP (either IPv4 or IPv6) address to use for
               the connection to the RPKI cache server. This may be
               expressed as either an IP address or reference to the
               name of an interface.";
          }
          leaf local-port {
            type inet:port-number;
            description
              "The local port for the connection
               to the RPKI cache server.";
          }
          leaf enabled {
            type boolean;
            default "true";
            description
              "Whether the RPKI cache server is enabled.";
          }
          leaf preference {
            type uint32;
            description
              "The router's preference to connect to that cache.
               The lower the value, the more preferred.";
          }
          leaf description {
            type string;
            description
              "Textual description of the RPKI cache server.";
          }
          leaf reconnect-interval {
            type uint32 {
              range "1..30000";
            }
            units "minutes";
            description
              "Time interval for the reconnection timer.";
          }
          leaf session-state {
            type enumeration {
              enum idle {
                description
                  "The session is down.";
              }
              enum connect {
                description
                  "The session is waiting for the underlying
                   transport session to be established.";
              }
              enum establish {
                description
                  "The session is up.";
              }
              enum ex-incr {
                description
                  "Incremental update of records in progress.";
              }
              enum ex-full {
                description
                  "Full update of records in progress.";
              }
            }
            config false;
            description
              "The session state.";
          }
          leaf enable-authentication {
            type boolean;
            default "false";
            description
              "Whether the session is secured.";
          }
          container authentication {
            when "../enable-authentication = 'true'";
            description
              "Container for describing how a particular session
               is to be secured.";
            choice option {
              description
                "Choice for session securing methods.";
              case md5 {
                leaf md5-password {
                  type ianach:crypt-hash;
                  description
                    "The password for md5 authentication.";
                }
                description
                  "Uses TCP-MD5 to secure the session.";
              }
              case ssh {
                uses sshc:ssh-client-grouping {
                  reference
                    "RFC 9644: YANG Groupings for SSH Clients and
                               SSH Servers";
                }
                description
                  "Uses SSH to secure the session.";
              }
              case tcp-ao-keychain {
                leaf keychain-name {
                  type key-chain:key-chain-ref;
                  description
                    "Name of key chain.";
                  reference
                    "RFC 8177: YANG Data Model for Key Chains";
                }
                description
                  "Uses key-chain to secure the session.";
              }
            }
          }
          container vrp-limit {
            description
              "Limit of Validated ROA Payload records that can be
               received from the RPKI cache server.";
            uses records-limit;
          }
          container aspa-limit {
            description
              "Limit of Autonomous System Provider Authorization
               (ASPA) records that can be received from the RPKI
               cache server.";
            uses records-limit;
          }
          container statistics {
            config false;
            description
              "Statistics of the RPKI cache server.";
            leaf total-vrp-records {
              type yang:zero-based-counter64;
              description
                "The total number of Validated ROA Payloads
                 received from the RPKI cache server.";
            }
            leaf ipv4-vrp-records {
              type yang:zero-based-counter64;
              description
                "The number of Validated ROA Payloads for IPv4
                 prefixes received from the RPKI cache server.";
            }
            leaf ipv6-vrp-records {
              type yang:zero-based-counter64;
              description
                "The number of Validated ROA Payloads for IPv6
                 prefixes received from the RPKI cache server.";
            }
            leaf router-key-records {
              type yang:zero-based-counter64;
              description
                "The number of Router Keys received from the RPKI
                 cache server.";
            }
            leaf aspa-records {
              type yang:zero-based-counter64;
              description
                "The number of ASPAs received from the RPKI
                 cache server.";
            }
            leaf in-total-messages {
              type yang:zero-based-counter64;
              description
                "The total number of messages received from the
                 RPKI cache server.";
            }
            leaf out-total-messages {
              type yang:zero-based-counter64;
              description
                "The total number of messages transmitted to the
                 RPKI cache server.";
            }
          }
          container connection-data {
            config false;
            description
              "State information relating to the connection
               with the RPKI cache server.";
            leaf flaps {
              type uint32;
              description
                "Count for number of flaps observed on the
                 session.";
            }
            leaf last-session-up-down {
              type yang:date-and-time;
              description
                "The date and time the RPKI-RTR session last
                 transitioned in or out of the UP state.";
              reference
                "RFC 6810: The Resource Public Key Infrastructure
                           (RPKI) to Router Protocol";
            }
            leaf last-update-sync {
              type yang:date-and-time;
              description
                "The date and time of the last serial sync with the
                 cache server.";
            }
            leaf last-full-sync {
              type yang:date-and-time;
              description
                "The date and time of the last reset sync with the
                 cache server.";
            }
            leaf last-serial-query {
              type yang:date-and-time;
              description
                "The date and time the last serial query was sent to
                 the cache server.";
            }
            leaf last-reset-query {
              type yang:date-and-time;
              description
                "The date and time the last reset query was sent to
                 the cache server.";
            }
            leaf last-eod-received {
              type yang:date-and-time;
              description
                "The date and time the last EOD was received.";
            }
            leaf last-config-change {
              type yang:date-and-time;
              description
                "The date and time of the last host, port, VRF or
                 local interface change.";
            }
            leaf last-error {
              type yang:date-and-time;
              description
                "The date and time of the last protocol error sent to
                 or received from the cache server.";
            }
            leaf last-connection-error {
              type yang:date-and-time;
              description
                "The date and time of the last connection error to
                 the cache server.";
            }
            leaf last-connection {
              type yang:date-and-time;
              description
                "The date and time of the last connection to the
                 cache server.";
            }
            leaf error-reason {
              type string;
              description
                "Reason for error in connection.";
            }
          }
          container protocol-data {
            description
              "Parameters related to the RTR protocol.";
            leaf preferred-protocol-version {
              type uint8;
              description
                "The preferred version number of the RTR protocol
                 to be used when establishing the session. If not
                 configured, the router will use its default
                 protocol version.";
            }
            leaf refresh-interval {
              type uint32 {
                range "1..86400";
              }
              default 3600;
              description
                "Number of seconds a router waits in between
                 sending periodic serial queries to the RPKI
                 cache server. If configured, this value
                 overrides the value announced by the cache
                 server in the End of Data PDU.";
              reference
                "draft-ietf-sidrops-8210bis: The Resource Public Key
                 Infrastructure (RPKI) to Router Protocol, Version 2,
                 Section 6";
            }
            leaf retry-interval {
              type uint32 {
                range "1..7200";
              }
              default 600;
              description
                "Number of seconds between poll error and cache
                 server poll. If configured, this value
                 overrides the value announced by the cache
                 server in the End of Data PDU.";
              reference
                "draft-ietf-sidrops-8210bis: The Resource Public Key
                 Infrastructure (RPKI) to Router Protocol, Version 2,
                 Section 6";
            }
            leaf expire-interval {
              type uint32 {
                range "600..172800";
              }
              default 7200;
              description
                "Number of seconds to retain data synced from
                 cache server. If configured, this value
                 overrides the value announced by the cache
                 server in the End of Data PDU.";
              reference
                "draft-ietf-sidrops-8210bis: The Resource Public Key
                 Infrastructure (RPKI) to Router Protocol, Version 2,
                 Section 6";
            }
            leaf purge-interval {
              type uint32;
              description
                "Number of seconds after the session drops before
                 data from the RPKI cache server is purged.";
            }
            leaf hold-interval {
              type uint32;
              description
                "Maximum number of seconds to wait without receiving
                 any RTR PDUs from the cache server before tearing
                 down the RTR session. Any incoming PDU resets this
                 timer. The hold-interval value must be at least
                 twice the configured refresh-interval. If not
                 configured, implementations should choose a value
                 that is at least twice the configured
                 refresh-interval.";
            }
            leaf protocol-version {
              type uint8;
              config false;
              description
                "The negotiated version number of the RTR protocol
                 currently in use for this session.";
            }
            leaf refresh-time {
              type yang:date-and-time;
              config false;
              description
                "The date and time when the next refresh of RPKI
                 data from the RPKI cache server will occur.";
            }
            leaf response-time {
              type yang:date-and-time;
              config false;
              description
                "The date and time when a response to a serial or
                 reset query to the RPKI cache server is expected.";
            }
            leaf record-lifetime {
              type yang:date-and-time;
              config false;
              description
                "The date and time when the records received from
                 the RPKI cache server will expire.";
            }
            leaf purge-time {
              type yang:date-and-time;
              config false;
              description
                "The date and time when the data from the RPKI cache
                 server will be purged after the session drops.";
            }
            leaf hold-time {
              type yang:date-and-time;
              config false;
              description
                "The date and time when the RTR session will be torn
                 down if no RTR PDUs are received from the cache
                 server.";
            }
            leaf session-id {
              type uint16;
              config false;
              description
                "When a cache server is started, it generates a
                 Session ID to identify the instance of the cache
                 and to bind it to the sequence of Serial Numbers
                 that cache instance will generate.";
              reference
                "RFC 6810: The Resource Public Key Infrastructure
                           (RPKI) to Router Protocol
                 RFC 8210: The Resource Public Key Infrastructure
                           (RPKI) to Router Protocol, Version 1";
            }
            leaf serial-full {
              type uint32;
              config false;
              description
                "A 32-bit strictly increasing unsigned integer which
                 wraps from 2^32-1 to 0. It denotes the logical
                 version of a cache. It resembles the latest full
                 query.";
              reference
                "RFC 6810: The Resource Public Key Infrastructure
                           (RPKI) to Router Protocol
                 RFC 8210: The Resource Public Key Infrastructure
                           (RPKI) to Router Protocol, Version 1";
            }
            leaf serial-incremental {
              type uint32;
              config false;
              description
                "A 32-bit strictly increasing unsigned integer which
                 wraps from 2^32-1 to 0. It denotes the logical
                 version of a cache. It resembles the latest
                 incremental query.";
              reference
                "RFC 6810: The Resource Public Key Infrastructure
                           (RPKI) to Router Protocol
                 RFC 8210: The Resource Public Key Infrastructure
                           (RPKI) to Router Protocol, Version 1";
            }
          }
          container pdu-counters {
            config false;
            description
              "Counters of RTR PDUs exchanged with the RPKI cache
               server, by PDU type.";
            leaf serial-notify {
              type yang:zero-based-counter64;
              description
                "Serial Notify (PDU Type 0) count.";
            }
            leaf serial-query {
              type yang:zero-based-counter64;
              description
                "Serial Query (PDU Type 1) count.";
            }
            leaf reset-query {
              type yang:zero-based-counter64;
              description
                "Reset Query (PDU Type 2) count.";
            }
            leaf cache-response {
              type yang:zero-based-counter64;
              description
                "Cache Response (PDU Type 3) count.";
            }
            leaf ipv4-prefix {
              type yang:zero-based-counter64;
              description
                "IPv4 Prefix (PDU Type 4) count.";
            }
            leaf ipv6-prefix {
              type yang:zero-based-counter64;
              description
                "IPv6 Prefix (PDU Type 6) count.";
            }
            leaf end-of-data {
              type yang:zero-based-counter64;
              description
                "End of Data (PDU Type 7) count.";
            }
            leaf cache-reset {
              type yang:zero-based-counter64;
              description
                "Cache Reset (PDU Type 8) count.";
            }
            leaf router-key {
              type yang:zero-based-counter64;
              description
                "Router Key (PDU Type 9) count.";
            }
            leaf aspa {
              type yang:zero-based-counter64;
              description
                "ASPA (PDU Type 11) count.";
            }
          }
          container error-pdu-counters {
            config false;
            description
              "Counters of Error Report PDUs exchanged with the
               RPKI cache server, by error code.";
            leaf corrupt-data {
              type yang:zero-based-counter64;
              description
                "Corrupt Data (Error Code 0) Error Report PDU
                 count.";
            }
            leaf internal-error {
              type yang:zero-based-counter64;
              description
                "Internal Error (Error Code 1) Error Report PDU
                 count.";
            }
            leaf no-data-available {
              type yang:zero-based-counter64;
              description
                "No Data Available (Error Code 2) Error Report PDU
                 count.";
            }
            leaf invalid-request {
              type yang:zero-based-counter64;
              description
                "Invalid Request (Error Code 3) Error Report PDU
                 count.";
            }
            leaf unsupported-protocol-version {
              type yang:zero-based-counter64;
              description
                "Unsupported Protocol Version (Error Code 4) Error
                 Report PDU count.";
            }
            leaf unsupported-pdu-type {
              type yang:zero-based-counter64;
              description
                "Unsupported PDU Type (Error Code 5) Error Report
                 PDU count.";
            }
            leaf withdrawal-unknown-record {
              type yang:zero-based-counter64;
              description
                "Withdrawal of Unknown Record (Error Code 6) Error
                 Report PDU count.";
            }
            leaf duplicate-announcement-received {
              type yang:zero-based-counter64;
              description
                "Duplicate Announcement Received (Error Code 7)
                 Error Report PDU count.";
            }
            leaf unexpected-protocol-version {
              type yang:zero-based-counter64;
              description
                "Unexpected Protocol Version (Error Code 8) Error
                 Report PDU count.";
            }
            leaf aspa-provider-list-error {
              type yang:zero-based-counter64;
              description
                "ASPA Provider List Error (Error Code 9) Error
                 Report PDU count.";
            }
            leaf transport-failure {
              type yang:zero-based-counter64;
              description
                "Transport Failure (Error Code 10) Error Report
                 PDU count.";
            }
            leaf ordering-error {
              type yang:zero-based-counter64;
              description
                "Ordering Error (Error Code 11) Error Report PDU
                 count.";
            }
            leaf cache-restart {
              type yang:zero-based-counter64;
              description
                "Cache Restart (Error Code 12) Error Report PDU
                 count.";
            }
            leaf cache-shutdown {
              type yang:zero-based-counter64;
              description
                "Cache Shutdown (Error Code 13) Error Report PDU
                 count.";
            }
          }
        }
      }
    }
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="rpki-table-yang-module">
      <name>RPKI Table YANG Module</name>
      <section anchor="tree-view-1">
        <name>Tree View</name>
        <t>The full tree of the "ietf-rpki-table" YANG module is provided in <xref target="rpki-table-full-tree"/>.
   The following subsections list the subtree structures.</t>
        <section anchor="overall-structure-1">
          <name>Overall Structure</name>
          <t>The overall tree structure of the "ietf-rpki-table" YANG module is shown
   in <xref target="fig-rtr-table-overall-tree"/>.</t>
          <t>The "ietf-rpki-table" YANG module also augments the core routing YANG module
   "ietf-routing" specified in <xref target="RFC8349"/>. Specifically, this YANG module augments
   "/rt:routing".</t>
          <figure anchor="fig-rtr-table-overall-tree">
            <name>Overall RPKI Table Tree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-table
  augment /rt:routing:
    +--ro vrp-tables
    |  +--ro vrp-table* [name]
    |     ...
    +--ro router-key-tables
    |  +--ro router-key-table* [name]
    |     ...
    +--ro aspa-tables
       +--ro aspa-table* [name]
          ...
]]></artwork>
          </figure>
          <t>The "ietf-rpki-table" YANG module has three containers: 'vrp-tables', 'router-key-tables', and 'aspa-tables'.</t>
          <t>The 'vrp-tables' container lists the VRP records received from all RPKI cache servers, and each list 'vrp-table'
   identifies a VRP record table received from a RPKI cache server.</t>
          <t>The 'router-key-tables' container lists the Router Key records received from all RPKI cache servers, and each list
   'router-key-table' identifies a Router Key record table received from a RPKI cache server.</t>
          <t>The 'aspa-tables' container lists the ASPA records received from all RPKI cache servers, and each list
   'aspa-table' identifies an ASPA record table received from a RPKI cache server.</t>
        </section>
        <section anchor="vrp-table">
          <name>VRP Table</name>
          <t>The structure of the list 'vrp-table' is shown in <xref target="fig-rpki-table-vrp-subtree"/>.</t>
          <figure anchor="fig-rpki-table-vrp-subtree">
            <name>RPKI VRP Table Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-table
  augment /rt:routing:
    +--ro vrp-tables
    |  +--ro vrp-table* [name]
    |     +--ro name                      string
    |     +--ro ccr-roapayloadstate-hash? ccr-hash
    |     +--ro ipv4
    |     |  +--ro vrps
    |     |  |  +--ro vrp* [prefix max-len asn source]
    |     |  |     +--ro prefix       inet:ipv4-prefix
    |     |  |     +--ro max-len      ipv4-prefix-length
    |     |  |     +--ro asn          inet:as-number
    |     |  |     +--ro source       union
    |     |  +--ro total-records?     yang:gauge32
    |     |  +--ro records-added?     yang:counter64
    |     |  +--ro records-deleted?   yang:counter64
    |     +--ro ipv6
    |        +--ro vrps
    |        |  +--ro vrp* [prefix max-len asn source]
    |        |     +--ro prefix       inet:ipv6-prefix
    |        |     +--ro max-len      ipv6-prefix-length
    |        |     +--ro asn          inet:as-number
    |        |     +--ro source       union
    |        +--ro total-records?     yang:gauge32
    |        +--ro records-added?     yang:counter64
    |        +--ro records-deleted?   yang:counter64
    +--ro router-key-tables
    |  +--ro router-key-table* [name]
    |     ...
    +--ro aspa-tables
       +--ro aspa-table* [name]
          ...
]]></artwork>
          </figure>
          <t>The 'vrp-table' data nodes are described as follows:</t>
          <t>'name': Indicates the name of the VRP table.</t>
          <t>'ccr-roapayloadstate-hash': Indicates the CCR state hash for the ROA payload.</t>
          <t>'ipv4': Indicates detailed information and statistics of IPv4 VRP records in the VRP table.</t>
          <artwork><![CDATA[
  This data node includes 'vrps', 'total-records', 'records-added',
  and 'records-deleted'. The 'vrps' indicates all IPv4 VRP records
  in the VRP table, and each list 'vrp' indicates an IPv4 VRP
  record, which includes the IPv4 prefix ('prefix'), the maximum
  IPv4 prefix length ('max-len'), the origin AS number of the IPv4
  prefix ('asn'), and the source of the IPv4 VRP record ('source').
  The 'total-records' indicates the total number of IPv4 VRP
  records. The 'records-added' indicates the number of IPv4 VRP
  records cumulatively added. The 'records-deleted' indicates the
  number of IPv4 VRP records cumulatively deleted.
]]></artwork>
          <t>'ipv6': Indicates detailed information and statistics of IPv6 VRP records in the VRP table.</t>
          <artwork><![CDATA[
  This data node has the same structure as the data node 'ipv4'.
  The 'vrps' indicates all IPv6 VRP records in the VRP table, and
  each list 'vrp' indicates an IPv6 VRP record, which includes the
  IPv6 prefix ('prefix'), the maximum IPv6 prefix length
  ('max-len'), the origin AS number of the IPv6 prefix ('asn'), and
  the source of the IPv6 VRP record ('source'). The 'total-records'
  indicates the total number of IPv6 VRP records. The
  'records-added' indicates the number of IPv6 VRP records
  cumulatively added. The 'records-deleted' indicates the number of
  IPv6 VRP records cumulatively deleted.
]]></artwork>
        </section>
        <section anchor="router-key-table">
          <name>Router Key Table</name>
          <t>The structure of the list 'router-key-table' is shown in <xref target="fig-rpki-table-rk-subtree"/>.</t>
          <figure anchor="fig-rpki-table-rk-subtree">
            <name>RPKI Router Key Table Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-table
  augment /rt:routing:
    +--ro vrp-tables
    |  +--ro vrp-table* [name]
    |     ...
    +--ro router-key-tables
    |  +--ro router-key-table* [name]
    |     +--ro name                     string
    |     +--ro ccr-routerkeystate-hash? ccr-hash
    |     +--ro router-keys
    |        +--ro router-key* [ski asn key server-address]
    |           +--ro ski            subject-key-id
    |           +--ro asn            inet:as-number
    |           +--ro key            binary
    |           +--ro server-address inet:ip-address
    +--ro aspa-tables
       +--ro aspa-table* [name]
          ...
]]></artwork>
          </figure>
          <t>The 'router-key-table' data nodes are described as follows:</t>
          <t>'name': Indicates the name of the Router Key table.</t>
          <t>'ccr-routerkeystate-hash': Indicates the CCR state hash for the Router Key payload.</t>
          <t>'router-keys': Indicates detailed information of Router Key records in the Router Key table.</t>
          <artwork><![CDATA[
  This data node only includes a list 'router-key', which contains
  the Subject Key Identifier (SKI) of the Router Key ('ski'), the
  AS number of the router which the Router Key belongs to ('asn'),
  the subjectPublicKeyInfo value of the Router Key (see [RFC8608])
  ('key'), and the IP address of the RPKI cache server
  ('server-address').
]]></artwork>
        </section>
        <section anchor="aspa-table">
          <name>ASPA Table</name>
          <t>The structure of the list 'aspa-table' is shown in <xref target="fig-rpki-table-aspa-subtree"/>.</t>
          <figure anchor="fig-rpki-table-aspa-subtree">
            <name>RPKI ASPA Table Subtree Structure</name>
            <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-table
  augment /rt:routing:
    +--ro vrp-tables
    |  +--ro vrp-table* [name]
    |     ...
    +--ro router-key-tables
    |  +--ro router-key-table* [name]
    |     ...
    +--ro aspa-tables
       +--ro aspa-table* [name]
          +--ro name                       string
          +--ro ccr-aspapayloadstate-hash? ccr-hash
          +--ro aspas* [customer-asn]
             +--ro customer-asn        inet:as-number
             +--ro server-address?     inet:ip-address
             +--ro provider-asns* [provider-asn]
                +--ro provider-asn     inet:as-number
]]></artwork>
          </figure>
          <t>The 'aspa-table' data nodes are described as follows:</t>
          <t>'name': Indicates the name of the ASPA table.</t>
          <t>'ccr-aspapayloadstate-hash': Indicates the CCR state hash for the ASPA payload.</t>
          <t>'aspas': Indicates detailed information of ASPA records in the ASPA table.</t>
          <artwork><![CDATA[
  This data node includes a leaf 'customer-asn', a leaf
  'server-address', and a list 'provider-asns'. The 'customer-asn'
  indicates the AS number of a customer. The 'server-address'
  indicates the IP address of the RPKI cache server from which ASPA
  records are received. The list 'provider-asns' contains a leaf
  'provider-asn' which indicates the AS number of a provider of the
  customer.
]]></artwork>
        </section>
      </section>
      <section anchor="yang-module-1">
        <name>YANG Module</name>
        <t>This YANG module has normative references to <xref target="RFC6487"/>,
   <xref target="RFC8349"/>, <xref target="RFC8608"/>, <xref target="RFC9911"/>,
   <xref target="I-D.ietf-sidrops-8210bis"/>, and <xref target="I-D.ietf-sidrops-rpki-ccr"/>.</t>
        <artwork><![CDATA[
  Note that the "RFC YYYY" in this YANG module must be replaced by
  the publication version of [I-D.ietf-sidrops-rpki-ccr] and this
  note is to be removed after the publication of
  [I-D.ietf-sidrops-rpki-ccr].
]]></artwork>
        <sourcecode type="yang" markers="true" name="ietf-rpki-table@2026-10-15.yang"><![CDATA[
module ietf-rpki-table {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-rpki-table";
  prefix rpki-table;

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

  organization
    "IETF Secure Inter-Domain Routing Operations (SIDROPS)
     Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/sidrops/>
     WG List:  SIDROPS <mailto:sidrops@ietf.org>

     Editor:   Yisong Liu
               <mailto:liuyisong@chinamobile.com>
     Editor:   Changwang Lin
               <mailto:linchangwang.04414@h3c.com>
     Editor:   Haibo Wang
               <mailto:rainsword.wang@huawei.com>
     Editor:   Jishnu Roy
               <mailto:jishnu.roy@hpe.com>
     Editor:   Jeffrey Haas
               <mailto:jeffrey.haas@hpe.com>
     Editor:   Hongwei Liu
               <mailto:liu.hongwei3@zte.com.cn>
     Editor:   Di Ma
               <mailto:madi@zdns.cn>";
  description
    "This module describes a YANG model for the Resource Public
     Key Infrastructure (RPKI) to Router (RTR) protocol data
     management.

     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-10-15 {
    description
      "Initial Version";
    reference
      "RFC XXXX: YANG Data Model for RPKI to Router Protocol";
  }

  typedef ipv4-prefix-length {
    type uint8 {
      range "0 .. 32";
    }
    description
      "IPv4 Prefix Length.";
  }

  typedef ipv6-prefix-length {
    type uint8 {
      range "0 .. 128";
    }
    description
      "IPv6 Prefix Length.";
  }

  typedef subject-key-id {
    type binary {
      length "20";
    }
    description
      "Subject Key Identifier.";
  }

  typedef ccr-hash {
    type binary {
      length "32";
    }
    description
      "Canonical Cache Representation (CCR) state hash.

       This represents a 256-bit SHA-256 hash of the canonical
       representation of RPKI data as defined in RFC YYYY.

       The hash provides a compact, verifiable representation
       of the complete state of RPKI validation data, enabling
       efficient synchronization and consistency verification
       between caches.";
    reference
      "RFC YYYY: A Profile for Resource Public Key Infrastructure
                 (RPKI) Canonical Cache Representation (CCR)";
  }

  grouping aspa-overall-records {
    description
      "Autonomous System Provider Authorization (ASPA) records
       received from all RPKI cache servers.";
    reference
      "draft-ietf-sidrops-8210bis: The Resource Public Key
       Infrastructure (RPKI) to Router Protocol, Version 2";
    list aspas {
      key "customer-asn";
      description
        "An entry for ASPA.";
      leaf customer-asn {
        type inet:as-number;
        description
          "The AS number of a customer.";
      }
      leaf server-address {
        type inet:ip-address;
        description
          "IP address of the RPKI cache server.";
      }
      list provider-asns {
        key "provider-asn";
        description
          "Providers of the customer.";
        leaf provider-asn {
          type inet:as-number;
          description
            "The AS number of a provider.";
        }
      }
    }
  }

  augment "/rt:routing" {
    description
      "RPKI tables augmentation of ietf-routing module.";
    container vrp-tables {
      config false;
      description
        "List of tables containing Validated ROA Payloads
         received from all RPKI cache servers.";
      list vrp-table {
        key "name";
        description
          "Table of Validated ROA Payloads received from
           a RPKI cache server.";
        leaf name {
          type string;
          description
            "Name of the Validated ROA Payload table.";
        }
        leaf ccr-roapayloadstate-hash {
          type ccr-hash;
          description
            "CCR state hash for the ROA payload.

             This hash represents the canonical state of this
             specific ROA entry as defined in the CCR specification.
             It is optional and can be used to verify the integrity
             and consistency of ROA data originating from the RPKI
             cache.";
          reference
            "RFC YYYY: A Profile for Resource Public Key
                       Infrastructure (RPKI) Canonical Cache
                       Representation (CCR)";
        }
        container ipv4 {
          config false;
          description
            "Container for IPv4 Validated ROA Payloads table.";
          container vrps {
            config false;
            description
              "IPv4 Validated ROA Payloads received from the RPKI
               cache server.";
            list vrp {
              key "prefix max-len asn source";
              description
                "An entry of IPv4 Validated ROA Payload.";
              leaf prefix {
                type inet:ipv4-prefix;
                description
                  "The IPv4 prefix of the IPv4 Validated ROA
                   Payload.";
              }
              leaf max-len {
                type ipv4-prefix-length;
                description
                  "Denotes the longest IPv4 prefix allowed. This
                   MUST NOT be less than the IPv4 prefix length.";
              }
              leaf asn {
                type inet:as-number;
                description
                  "The origin AS number of the IPv4 Validated ROA
                   Payload.";
              }
              leaf source {
                type union {
                  type inet:ip-address;
                  type string;
                }
                description
                  "String representing the source of the record
                   in this record-set.";
              }
            }
          }
          leaf total-records {
            type yang:gauge32;
            description
              "Total number of IPv4 Validated ROA Payload records.";
          }
          leaf records-added {
            type yang:counter64;
            description
              "Number of IPv4 Validated ROA Payload records
               cumulatively added.";
          }
          leaf records-deleted {
            type yang:counter64;
            description
              "Number of IPv4 Validated ROA Payload records
               cumulatively deleted.";
          }
        }
        container ipv6 {
          config false;
          description
            "Container for IPv6 Validated ROA Payloads table.";
          container vrps {
            config false;
            description
              "IPv6 Validated ROA Payloads received from the RPKI
               cache server.";
            list vrp {
              key "prefix max-len asn source";
              description
                "An entry for IPv6 Validated ROA Payload.";
              leaf prefix {
                type inet:ipv6-prefix;
                description
                  "The IPv6 prefix of the IPv6 Validated ROA
                   Payload.";
              }
              leaf max-len {
                type ipv6-prefix-length;
                description
                  "Denotes the longest IPv6 prefix allowed. This
                   MUST NOT be less than the prefix length.";
              }
              leaf asn {
                type inet:as-number;
                description
                  "The origin AS number of the IPv6 Validated ROA
                   Payload.";
              }
              leaf source {
                type union {
                  type inet:ip-address;
                  type string;
                }
                description
                  "Representing the source of the record in this
                   record-set. Either a server IP or a source file
                   of static records.";
              }
            }
          }
          leaf total-records {
            type yang:gauge32;
            description
              "Total number of IPv6 Validated ROA Payload records.";
          }
          leaf records-added {
            type yang:counter64;
            description
              "Number of IPv6 Validated ROA Payload records
               cumulatively added.";
          }
          leaf records-deleted {
            type yang:counter64;
            description
              "Number of IPv6 Validated ROA Payload records
               cumulatively deleted.";
          }
        }
      }
    }
    container router-key-tables {
      config false;
      description
        "List of Router Key table received from all RPKI cache
         servers.";
      list router-key-table {
        key "name";
        description
          "Table of Router Keys received from a RPKI cache
           server.";
        leaf name {
          type string;
          description
            "Name of the Router Key table.";
        }
        leaf ccr-routerkeystate-hash {
          type ccr-hash;
          description
            "CCR state hash for the Router Key payload.

             This hash represents the canonical state of this
             specific Router Key entry as defined in the CCR
             specification. It is optional and can effectively
             verify the consistency of BGPsec Router Key data
             derived from the RPKI cache.";
          reference
            "RFC YYYY: A Profile for Resource Public Key
                       Infrastructure (RPKI) Canonical Cache
                       Representation (CCR)";
        }
        container router-keys {
          config false;
          description
            "Router Keys received from the RPKI cache server.";
          list router-key {
            key "ski asn key server-address";
            description
              "An entry for Router Key.";
            leaf ski {
              type subject-key-id;
              description
                "A Router Key's Subject Key Identifier (SKI).";
              reference
                "RFC 6487: A Profile for X.509 PKIX Resource
                           Certificates";
            }
            leaf asn {
              type inet:as-number;
              description
                "The AS number of the router which the key
                 belongs to.";
            }
            leaf key {
              type binary;
              description
                "A Router Key's subjectPublicKeyInfo value, as
                 described in Section 3.1.1 of RFC 8608, encoded
                 using ASN.1 Distinguished Encoding Rules (DER).";
              reference
                "RFC 8608: BGPsec Algorithms, Key Formats, and
                           Signature Formats";
            }
            leaf server-address {
              type inet:ip-address;
              description
                "IP address of the RPKI cache server.";
            }
          }
        }
      }
    }
    container aspa-tables {
      config false;
      description
        "List of tables of ASPAs received from all RPKI cache
         servers.";
      list aspa-table {
        key "name";
        description
          "Table of ASPAs received from a RPKI cache server.";
        leaf name {
          type string;
          description
            "Name of the ASPA table.";
        }
        leaf ccr-aspapayloadstate-hash {
          type ccr-hash;
          description
            "CCR state hash for the ASPA payload.

             This hash represents the canonical state of this
             specific ASPA entry as defined in the CCR
             specification. It is optional and facilitates
             consistency checking for AS path validation data
             originating from the RPKI cache.";
          reference
            "RFC YYYY: A Profile for Resource Public Key
                       Infrastructure (RPKI) Canonical Cache
                       Representation (CCR)";
        }
        uses aspa-overall-records;
      }
    }
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to the RFC Editor - remove this section before publication, as
   well as remove the reference to <xref target="RFC7942"/>.</t>
      <t>This section records the status of known implementations of the
   protocol defined by this specification at the time of posting of this
   Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>.
   The description of implementations in this section is intended to
   assist the IETF in its decision processes in progressing drafts to
   RFCs. Please note that the listing of any individual implementation
   here does not imply endorsement by the IETF. Furthermore, no effort
   has been spent to verify the information presented here that was
   supplied by IETF contributors. This is not intended as, and must not
   be construed to be, a catalog of available implementations or their
   features. Readers are advised to note that other implementations may
   exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups
   to assign due consideration to documents that have the benefit of
   running code, which may serve as evidence of valuable experimentation
   and feedback that have made the implemented protocols more mature.
   It is up to the individual working groups to use this information as
   they see fit".</t>
      <section anchor="juniper-networks-hpe">
        <name>Juniper Networks (HPE)</name>
        <ul spacing="normal">
          <li>
            <t>Organization: Juniper Networks (HPE).</t>
          </li>
          <li>
            <t>Implementation: The following leaves/parameters in description are implemented.</t>
          </li>
          <li>
            <t>Description: YANG model leaves that are supported:
            </t>
            <ul spacing="normal">
              <li>
                <t>Ietf-rpki-rtr.yang</t>
              </li>
            </ul>
            <artwork type="ascii-art"><![CDATA[
     Server-address
     Session-state
     Total-vrp-records
     Ipv4-vrp-records
     Ipv6-vrp-records
     Refresh-time
     Hold-time
     Serial-incremental
     Serial-full
     Last-session-up-down
     Last-update-sync
     Last-eod-received
     Last-serial-query
     Last-reset-query
     Flaps
]]></artwork>
            <ul spacing="normal">
              <li>
                <t>Ietf-rpki-table.yang</t>
              </li>
            </ul>
            <artwork type="ascii-art"><![CDATA[
     Ipv4 | ipv6: 
       Total-records
       Records-added
       Records-deleted.
]]></artwork>
          </li>
          <li>
            <t>Maturity Level: Ready-for-deployment</t>
          </li>
          <li>
            <t>Coverage:</t>
          </li>
          <li>
            <t>Version: Draft-03</t>
          </li>
          <li>
            <t>Licensing: N/A</t>
          </li>
          <li>
            <t>Implementation experience: Nothing specific.</t>
          </li>
          <li>
            <t>Contact: jishnu.roy@hpe.com</t>
          </li>
          <li>
            <t>Last updated: March 30, 2026</t>
          </li>
        </ul>
      </section>
      <section anchor="new-h3c-technologies">
        <name>New H3C Technologies</name>
        <ul spacing="normal">
          <li>
            <t>Organization: New H3C Technologies.</t>
          </li>
          <li>
            <t>Implementation: The following leaves/parameters in description are implemented.</t>
          </li>
          <li>
            <t>Description: "ietf-rpki-rtr" and "ietf-rpki-table" YANG modules
have been implemented in New H3C Products.</t>
          </li>
          <li>
            <t>Maturity Level: Ready-for-deployment</t>
          </li>
          <li>
            <t>Coverage: All data nodes of "ietf-rpki-rtr" and "ietf-rpki-table" YANG modules.</t>
          </li>
          <li>
            <t>Version: Draft-03</t>
          </li>
          <li>
            <t>Licensing: N/A</t>
          </li>
          <li>
            <t>Implementation experience: Nothing specific.</t>
          </li>
          <li>
            <t>Contact: li_meng_limeng@h3c.com</t>
          </li>
          <li>
            <t>Last updated: March 30, 2026</t>
          </li>
        </ul>
      </section>
    </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-rpki-rtr" YANG module and "ietf-rpki-table" YANG module
   define data models that are 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="RFC9846"/>, 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 these YANG modules 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[
  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:server-address

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:server-port

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:local-address

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:local-port

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:enabled

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:preference

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:description

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:enable-authentication

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:authentication

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:vrp-limit

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:aspa-limit
]]></artwork>
      <t>Some of the readable data nodes in these YANG modules 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[
  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:session-state

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:statistics

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:connection-data

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:protocol-data

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:pdu-counters

  rpki-rtr:rpki-rtr/rpki-rtr:sessions/rpki-rtr:session/rpki-
  rtr:error-pdu-counters

  rt:routing/rpki-table:vrp-tables/rpki-table:vrp-table

  rt:routing/rpki-table:router-key-tables/rpki-table:router-key-
  table

  rt:routing/rpki-table:aspa-tables/rpki-table:aspa-table
]]></artwork>
      <t>There are no particularly sensitive RPC or action operations.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="rpki-to-router-yang-module-registry">
        <name>RPKI to Router YANG Module 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-rpki-rtr
   Registrant Contact: The IESG.
   XML: N/A; the requested URI is an XML namespace
]]></artwork>
        <t>IANA is requested to register the following YANG modules in the
   "YANG Module Names" registry (<xref target="RFC6020"/>) within the "YANG
   Parameters" registry group.</t>
        <artwork type="ascii-art"><![CDATA[
   Name: ietf-rpki-rtr
   Maintained by IANA? N
   Namespace: urn:ietf:params:xml:ns:yang:ietf-rpki-rtr
   Prefix: rpki-rtr
   Reference: RFC XXXX
]]></artwork>
      </section>
      <section anchor="rpki-table-yang-module-registry">
        <name>RPKI Table YANG Module 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-rpki-table
   Registrant Contact: The IESG.
   XML: N/A; the requested URI is an XML namespace
]]></artwork>
        <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-rpki-table
   Maintained by IANA? N
   Namespace: urn:ietf:params:xml:ns:yang:ietf-rpki-table
   Prefix: rpki-table
   Reference: RFC XXXX
]]></artwork>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Job Snijders, Santosh Kolenchery,
Ebben Xavier Aries, Tapasee Ratna Goutam and Haiyang Zhang for their
review and discussion of this document.</t>
      <t>
   Thanks to Per Andersson for the Yangdoctors Early 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="RFC6487" target="https://www.rfc-editor.org/info/rfc6487" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6487.xml">
          <front>
            <title>A Profile for X.509 PKIX Resource Certificates</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="G. Michaelson" initials="G." surname="Michaelson"/>
            <author fullname="R. Loomans" initials="R." surname="Loomans"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document defines a standard profile for X.509 certificates for the purpose of supporting validation of assertions of "right-of-use" of Internet Number Resources (INRs). The certificates issued under this profile are used to convey the issuer's authorization of the subject to be regarded as the current holder of a "right-of-use" of the INRs that are described in the certificate. This document contains the normative specification of Certificate and Certificate Revocation List (CRL) syntax in the Resource Public Key Infrastructure (RPKI). This document also specifies profiles for the format of certificate requests and specifies the Relying Party RPKI certificate path validation procedure. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6487"/>
          <seriesInfo name="DOI" value="10.17487/RFC6487"/>
        </reference>
        <reference anchor="RFC6810" target="https://www.rfc-editor.org/info/rfc6810" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6810.xml">
          <front>
            <title>The Resource Public Key Infrastructure (RPKI) to Router Protocol</title>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>In order to verifiably validate the origin Autonomous Systems of BGP announcements, routers need a simple but reliable mechanism to receive Resource Public Key Infrastructure (RFC 6480) prefix origin data from a trusted cache. This document describes a protocol to deliver validated prefix origin data to routers. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6810"/>
          <seriesInfo name="DOI" value="10.17487/RFC6810"/>
        </reference>
        <reference anchor="RFC7317" target="https://www.rfc-editor.org/info/rfc7317" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7317.xml">
          <front>
            <title>A YANG Data Model for System Management</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="August" year="2014"/>
            <abstract>
              <t>This document defines a YANG data model for the configuration and identification of some common system properties within a device containing a Network Configuration Protocol (NETCONF) server. This document also includes data node definitions for system identification, time-of-day management, user management, DNS resolver configuration, and some protocol operations for system management.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7317"/>
          <seriesInfo name="DOI" value="10.17487/RFC7317"/>
        </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="RFC8177" target="https://www.rfc-editor.org/info/rfc8177" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8177.xml">
          <front>
            <title>YANG Data Model for Key Chains</title>
            <author fullname="A. Lindem" initials="A." role="editor" surname="Lindem"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <author fullname="D. Yeung" initials="D." surname="Yeung"/>
            <author fullname="I. Chen" initials="I." surname="Chen"/>
            <author fullname="J. Zhang" initials="J." surname="Zhang"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>This document describes the key chain YANG data model. Key chains are commonly used for routing protocol authentication and other applications requiring symmetric keys. A key chain is a list containing one or more elements containing a Key ID, key string, send/accept lifetimes, and the associated authentication or encryption algorithm. By properly overlapping the send and accept lifetimes of multiple key chain elements, key strings and algorithms may be gracefully updated. By representing them in a YANG data model, key distribution can be automated.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8177"/>
          <seriesInfo name="DOI" value="10.17487/RFC8177"/>
        </reference>
        <reference anchor="RFC8210" target="https://www.rfc-editor.org/info/rfc8210" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8210.xml">
          <front>
            <title>The Resource Public Key Infrastructure (RPKI) to Router Protocol, Version 1</title>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <date month="September" year="2017"/>
            <abstract>
              <t>In order to verifiably validate the origin Autonomous Systems and Autonomous System Paths of BGP announcements, routers need a simple but reliable mechanism to receive Resource Public Key Infrastructure (RFC 6480) prefix origin data and router keys from a trusted cache. This document describes a protocol to deliver them.</t>
              <t>This document describes version 1 of the RPKI-Router protocol. RFC 6810 describes version 0. This document updates RFC 6810.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8210"/>
          <seriesInfo name="DOI" value="10.17487/RFC8210"/>
        </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="RFC8608" target="https://www.rfc-editor.org/info/rfc8608" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8608.xml">
          <front>
            <title>BGPsec Algorithms, Key Formats, and Signature Formats</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="O. Borchert" initials="O." surname="Borchert"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document specifies the algorithms, algorithm parameters, asymmetric key formats, asymmetric key sizes, and signature formats used in BGPsec (Border Gateway Protocol Security). This document updates RFC 7935 ("The Profile for Algorithms and Key Sizes for Use in the Resource Public Key Infrastructure") and obsoletes RFC 8208 ("BGPsec Algorithms, Key Formats, and Signature Formats") by adding Documentation and Experimentation Algorithm IDs, correcting the range of unassigned algorithms IDs to fill the complete range, and restructuring the document for better reading.</t>
              <t>This document also includes example BGPsec UPDATE messages as well as the private keys used to generate the messages and the certificates necessary to validate those signatures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8608"/>
          <seriesInfo name="DOI" value="10.17487/RFC8608"/>
        </reference>
        <reference anchor="RFC9644" target="https://www.rfc-editor.org/info/rfc9644" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9644.xml">
          <front>
            <title>YANG Groupings for SSH Clients and SSH Servers</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" year="2024"/>
            <abstract>
              <t>This document presents three IETF-defined YANG modules and a script used to create four supporting IANA modules.</t>
              <t>The three IETF modules are ietf-ssh-common, ietf-ssh-client, and ietf-ssh-server. The "ietf-ssh-client" and "ietf-ssh-server" modules are the primary productions of this work, supporting the configuration and monitoring of Secure Shell (SSH) clients and servers.</t>
              <t>The four IANA modules are iana-ssh-encryption-algs, iana-ssh-key-exchange-algs, iana-ssh-mac-algs, and iana-ssh-public-key-algs. These modules each define YANG enumerations providing support for an IANA-maintained algorithm registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9644"/>
          <seriesInfo name="DOI" value="10.17487/RFC9644"/>
        </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>
        <reference anchor="I-D.ietf-sidrops-8210bis" target="https://datatracker.ietf.org/doc/html/draft-ietf-sidrops-8210bis-27" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-sidrops-8210bis.xml">
          <front>
            <title>The Resource Public Key Infrastructure (RPKI) to Router Protocol, Version 2</title>
            <author fullname="Randy Bush" initials="R." surname="Bush">
              <organization>Arrcus, DRL, &amp; IIJ Research</organization>
            </author>
            <author fullname="Rob Austein" initials="R." surname="Austein">
              <organization>Dragon Research Labs</organization>
            </author>
            <author fullname="Tom Harrison" initials="T." surname="Harrison">
              <organization>Asia Pacific Network Information Centre</organization>
            </author>
            <date day="13" month="August" year="2026"/>
            <abstract>
              <t>In order to validate the origin Autonomous Systems (ASes) and Autonomous System relationships behind BGP announcements, routers need a simple but reliable mechanism to receive Resource Public Key Infrastructure (RFC6480) prefix origin data, Router Keys, and ASPA data from a trusted cache. This document describes a protocol to deliver them. This document describes version 2 of the RPKI-Router protocol. [RFC6810] describes version 0, and [RFC8210] describes version 1. This document is compatible with both.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-sidrops-8210bis-27"/>
        </reference>
        <reference anchor="I-D.ietf-sidrops-rpki-ccr" target="https://datatracker.ietf.org/doc/html/draft-ietf-sidrops-rpki-ccr-11" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-sidrops-rpki-ccr.xml">
          <front>
            <title>A Profile for Resource Public Key Infrastructure (RPKI) Canonical Cache Representation (CCR)</title>
            <author fullname="Job Snijders" initials="J." surname="Snijders">
              <organization>BSD Software Development</organization>
            </author>
            <author fullname="Bart Bakker" initials="B." surname="Bakker">
              <organization>RIPE NCC</organization>
            </author>
            <author fullname="Tim Bruijnzeels" initials="T." surname="Bruijnzeels">
              <organization>RIPE NCC</organization>
            </author>
            <author fullname="Theo Buehler" initials="T." surname="Buehler">
              <organization>OpenBSD</organization>
            </author>
            <date day="1" month="July" year="2026"/>
            <abstract>
              <t>This document specifies a Canonical Cache Representation (CCR) content type for use with the Resource Public Key Infrastructure (RPKI). CCR is a Distinguished Encoding Rules (DER) encoded data interchange format which can be used to represent various aspects of the state of a validated RPKI cache at a particular point in time. The CCR profile is a compact and versatile format, well-suited for a variety of applications, for example, audit trails, analytics pipelines, and validated payload dissemination.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-sidrops-rpki-ccr-11"/>
        </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="RFC7942" target="https://www.rfc-editor.org/info/rfc7942" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </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="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="RFC9846" target="https://www.rfc-editor.org/info/rfc9846" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9846.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="July" year="2026"/>
            <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.</t>
              <t>This document obsoletes RFC 8446, which specified TLS 1.3. This document obsoletes RFC 5246 (specifying TLS 1.2) and RFCs 5077, 6961, 7627, and 8422, all of which pertain to TLS 1.2 or earlier, and updates RFCs 5705 and 6066. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9846"/>
          <seriesInfo name="DOI" value="10.17487/RFC9846"/>
        </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>
      </references>
    </references>
    <section anchor="rtr-full-tree">
      <name>Full Tree of RPKI to Router YANG Module</name>
      <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-rtr
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--rw rpki-rtr
       +--rw sessions
          +--rw session* [server-address]
             +--rw server-address           inet:ip-address
             +--rw server-port?             inet:port-number
             +--rw local-address?           union
             +--rw local-port?              inet:port-number
             +--rw enabled?                 boolean
             +--rw preference?              uint32
             +--rw description?             string
             +--rw reconnect-interval?      uint32
             +--ro session-state?           enumeration
             +--rw enable-authentication?   boolean
             +--rw authentication
             |  +--rw (option)?
             |     +--:(md5)
             |     |  +--rw md5-password?   ianach:crypt-hash
             |     +--:(ssh)
             |     |  +--rw client-identity
             |     |  |  +--rw username?  string
             |     |  |  +--rw public-key!
             |     |  |                   {client-ident-publickey}?
             |     |  |  +--rw password!
             |     |  |                   {client-ident-password}?
             |     |  |  +--rw hostbased!
             |     |  |                   {client-ident-hostbased}?
             |     |  |  +--rw none?      empty {client-ident-none}?
             |     |  |  +--rw certificate!
             |     |  |                   {sshcmn:ssh-x509-certs}?
             |     |  +--rw server-authentication
             |     |  |  +--rw ssh-host-keys!
             |     |  |  +--rw ca-certs!  {sshcmn:ssh-x509-certs}?
             |     |  |  +--rw ee-certs!  {sshcmn:ssh-x509-certs}?
             |     |  +--rw transport-params
             |     |  |                 {sshcmn:transport-params}?
             |     |  +--rw keepalives!   {ssh-client-keepalives}?
             |     |     +--rw max-wait?       uint16
             |     |     +--rw max-attempts?   uint8
             |     +--:(tcp-ao-keychain)
             |        +--rw keychain-name?  key-chain:key-chain-ref
             +--rw vrp-limit
             |  +--rw max-number?              uint64
             |  +--rw threshold-percentage?    rt-types:percentage
             |  +--rw over-threshold-action?   enumeration
             +--rw aspa-limit
             |  +--rw max-number?              uint64
             |  +--rw threshold-percentage?    rt-types:percentage
             |  +--rw over-threshold-action?   enumeration
             +--ro statistics
             |  +--ro total-vrp-records?  yang:zero-based-counter64
             |  +--ro ipv4-vrp-records?   yang:zero-based-counter64
             |  +--ro ipv6-vrp-records?   yang:zero-based-counter64
             |  +--ro router-key-records? yang:zero-based-counter64
             |  +--ro aspa-records?       yang:zero-based-counter64
             |  +--ro in-total-messages?  yang:zero-based-counter64
             |  +--ro out-total-messages? yang:zero-based-counter64
             +--ro connection-data
             |  +--ro flaps?                       uint32
             |  +--ro last-session-up-down?        yang:date-and-time
             |  +--ro last-update-sync?            yang:date-and-time
             |  +--ro last-full-sync?              yang:date-and-time
             |  +--ro last-serial-query?           yang:date-and-time
             |  +--ro last-reset-query?            yang:date-and-time
             |  +--ro last-eod-received?           yang:date-and-time
             |  +--ro last-config-change?          yang:date-and-time
             |  +--ro last-error?                  yang:date-and-time
             |  +--ro last-connection-error?       yang:date-and-time
             |  +--ro last-connection?             yang:date-and-time
             |  +--ro error-reason?                string
             +--rw protocol-data
             |  +--rw preferred-protocol-version?  uint8
             |  +--rw refresh-interval?            uint32
             |  +--rw retry-interval?              uint32
             |  +--rw expire-interval?             uint32
             |  +--rw purge-interval?              uint32
             |  +--rw hold-interval?               uint32
             |  +--ro protocol-version?            uint8
             |  +--ro refresh-time?                yang:date-and-time
             |  +--ro response-time?               yang:date-and-time
             |  +--ro record-lifetime?             yang:date-and-time
             |  +--ro purge-time?                  yang:date-and-time
             |  +--ro hold-time?                   yang:date-and-time
             |  +--ro session-id?                  uint16
             |  +--ro serial-full?                 uint32
             |  +--ro serial-incremental?          uint32
             +--ro pdu-counters
             |  +--ro serial-notify?    yang:zero-based-counter64
             |  +--ro serial-query?     yang:zero-based-counter64
             |  +--ro reset-query?      yang:zero-based-counter64
             |  +--ro cache-response?   yang:zero-based-counter64
             |  +--ro ipv4-prefix?      yang:zero-based-counter64
             |  +--ro ipv6-prefix?      yang:zero-based-counter64
             |  +--ro end-of-data?      yang:zero-based-counter64
             |  +--ro cache-reset?      yang:zero-based-counter64
             |  +--ro router-key?       yang:zero-based-counter64
             |  +--ro aspa?             yang:zero-based-counter64
             +--ro error-pdu-counters
                +--ro corrupt-data?      yang:zero-based-counter64
                +--ro internal-error?    yang:zero-based-counter64
                +--ro no-data-available? yang:zero-based-counter64
                +--ro invalid-request?   yang:zero-based-counter64
                +--ro unsupported-protocol-version?
                |                        yang:zero-based-counter64
                +--ro unsupported-pdu-type?
                |                        yang:zero-based-counter64
                +--ro withdrawal-unknown-record?
                |                        yang:zero-based-counter64
                +--ro duplicate-announcement-received?
                |                        yang:zero-based-counter64
                +--ro unexpected-protocol-version?
                |                        yang:zero-based-counter64
                +--ro aspa-provider-list-error?
                |                        yang:zero-based-counter64
                +--ro transport-failure?  yang:zero-based-counter64
                +--ro ordering-error?      yang:zero-based-counter64
                +--ro cache-restart?       yang:zero-based-counter64
                +--ro cache-shutdown?      yang:zero-based-counter64
]]></artwork>
    </section>
    <section anchor="rpki-table-full-tree">
      <name>Full Tree of RPKI Table YANG Module</name>
      <artwork type="ascii-art"><![CDATA[
module: ietf-rpki-table
  augment /rt:routing:
    +--ro vrp-tables
    |  +--ro vrp-table* [name]
    |     +--ro name                      string
    |     +--ro ccr-roapayloadstate-hash? ccr-hash
    |     +--ro ipv4
    |     |  +--ro vrps
    |     |  |  +--ro vrp* [prefix max-len asn source]
    |     |  |     +--ro prefix       inet:ipv4-prefix
    |     |  |     +--ro max-len      ipv4-prefix-length
    |     |  |     +--ro asn          inet:as-number
    |     |  |     +--ro source       union
    |     |  +--ro total-records?     yang:gauge32
    |     |  +--ro records-added?     yang:counter64
    |     |  +--ro records-deleted?   yang:counter64
    |     +--ro ipv6
    |        +--ro vrps
    |        |  +--ro vrp* [prefix max-len asn source]
    |        |     +--ro prefix       inet:ipv6-prefix
    |        |     +--ro max-len      ipv6-prefix-length
    |        |     +--ro asn          inet:as-number
    |        |     +--ro source       union
    |        +--ro total-records?     yang:gauge32
    |        +--ro records-added?     yang:counter64
    |        +--ro records-deleted?   yang:counter64
    +--ro router-key-tables
    |  +--ro router-key-table* [name]
    |     +--ro name                     string
    |     +--ro ccr-routerkeystate-hash? ccr-hash
    |     +--ro router-keys
    |        +--ro router-key* [ski asn key server-address]
    |           +--ro ski            subject-key-id
    |           +--ro asn            inet:as-number
    |           +--ro key            binary
    |           +--ro server-address inet:ip-address
    +--ro aspa-tables
       +--ro aspa-table* [name]
          +--ro name                       string
          +--ro ccr-aspapayloadstate-hash? ccr-hash
          +--ro aspas* [customer-asn]
             +--ro customer-asn        inet:as-number
             +--ro server-address?     inet:ip-address
             +--ro provider-asns* [provider-asn]
                +--ro provider-asn     inet:as-number
]]></artwork>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="M." surname="Chen" fullname="Mengxiao Chen">
        <organization>H3C</organization>
        <address>
          <postal>
            <country>China</country>
          </postal>
          <email>chen.mengxiao@h3c.com</email>
        </address>
      </contact>
      <contact initials="S." surname="Kolenchery" fullname="Santosh Kolenchery">
        <organization>HPE</organization>
        <address>
          <email>santosh.kolenchery@hpe.com</email>
        </address>
      </contact>
      <contact initials="H." surname="Zhang" fullname="Haiyang Zhang">
        <organization>H3C</organization>
        <address>
          <postal>
            <country>China</country>
          </postal>
          <email>zhang.haiyanga@h3c.com</email>
        </address>
      </contact>
    </section>
  </back>

</rfc>
