<?xml version="1.0" encoding="UTF-8"?>
<!-- This template is for creating an Internet Draft using xml2rfc,               
    which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt'?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-netconf-yp-transport-capabilities-07"
  ipr="trust200902" consensus="true" submissionType="IETF"
  xmlns:xi="http://www.w3.org/2001/XInclude">
  <front>
    <title abbrev="YANG Notification Transport Capabilities">YANG
      Notification Transport Capabilities</title>

    <author fullname="Qin Wu" initials="Q." surname="Wu">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>

          <city>Nanjing</city>

          <region>Jiangsu</region>

          <code>210012</code>

          <country>China</country>
        </postal>

        <email>bill.wu@huawei.com</email>
      </address>
    </author>

    <author fullname="Qiufang Ma" initials="Q." surname="Ma">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>

          <city>Nanjing</city>

          <region>Jiangsu</region>

          <code>210012</code>

          <country>China</country>
        </postal>

        <email>maqiufang1@huawei.com</email>
      </address>
    </author>

    <author fullname="Alex Huang Feng" initials="A." surname="Huang-Feng">
      <organization>Deutsche Telekom</organization>

      <address>
        <postal>
          <street />

          <city>Barcelona</city>

          <region />

          <code />

          <country>Spain</country>
        </postal>

        <phone />

        <facsimile />

        <email>alex.huang-feng@t-systems.com</email>

        <uri />
      </address>
    </author>

    <author fullname="Thomas Graf" initials="T" surname="Graf">
      <organization>Swisscom</organization>

      <address>
        <postal>
          <street>Binzring 17</street>

          <city>Zurich</city>

          <code>8045</code>

          <country>Switzerland</country>
        </postal>

        <email>thomas.graf@swisscom.com</email>
      </address>
    </author>

    <date day="17" month="August" year="2026" />

    <area>OPS Area</area>

    <workgroup>NETCONF Working Group</workgroup>

    <abstract>
      <t>This document specifies a YANG module for discovering
        transport capabilities for YANG notifications. The module
        augments the YANG notifications capabilities model with
        capabilities for the notification transport protocol,
        transport encoding, and transport encryption. The
        capabilities enable a client to determine the notification
        transport options supported by a NETCONF or RESTCONF server
        at runtime or at implementation time using the YANG
        instance data file format.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>The "ietf-system-capabilities" YANG module defined in <xref
          target="RFC9196" /> allows a NETCONF or RESTCONF client to discover capabilities supported
        by a NETCONF or RESTCONF server, including basic system capabilities and YANG-Push related
        capabilities. These capabilities can be provided at implementation time or reported at
        runtime, allowing a client to determine which YANG management features are supported by the
        server.</t>

      <t>YANG Notifications, as defined in <xref target="RFC8639" /> and <xref target="RFC8641" />,
        allow clients to establish subscriptions for receiving YANG notifications from a NETCONF or
        RESTCONF server. A server may support multiple notification delivery protocols, encoding
        formats, and security protocols. Knowledge of these capabilities can allow a client to
        select an appropriate notification delivery protocol and associated parameters when
        establishing a subscription.</t>

      <t>Currently, a client may determine whether a particular notification delivery protocol and
        its associated parameters are supported only by attempting to use them through
        configuration. For example, a NETCONF or RESTCONF server may reject a subscription request
        when the requested notification delivery parameters, such as the delivery protocol, encoding
        format, or security protocol, are not supported. As described in <xref section="3.2"
          sectionFormat="of"
          target="RFC8641" />, a simple negotiation mechanism, such as inserting hints into an error
        response to a failed RPC request, can increase the likelihood of success for subsequent RPC
        requests involving subscription parameters. While such error responses can help establish a
        subscription, they are not widely supported and may result in unexpected failures or
        additional message exchanges between the client and server.</t>

      <t>This document defines a YANG module that extends the system capabilities model defined in <xref
          target="RFC9196" /> with capabilities specific to the delivery of YANG notifications. The
        module allows a NETCONF or RESTCONF client to discover, from a NETCONF or RESTCONF server,
        the notification delivery protocols, encoding formats, and security protocols supported for
        YANG notifications. The capabilities can be provided at implementation time using the YANG
        instance data file format or discovered at runtime through a YANG management protocol.</t>

      <section title="Terminology">
        <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>

        <t>The terms "subscription", "publisher", and "receiver" are used as defined in <xref
            target="RFC8639" />.</t>

        <t>The terms "client", and "server" are used as defined in <xref
            target="RFC8342" />.</t>

        <t>The term "transport protocol" is used as defined by the "transport" identity in <xref
            target="RFC8639" /> and refers to the notification delivery protocol used to deliver
          YANG notifications between a publisher and a receiver.</t>
      </section>
    </section>

    <section title="Capabilities for Systems and Datastore Update
    Notifications">
      <t><xref section="3.1"
          sectionFormat="of" target="RFC8641" /> lists the NETCONF/RESTCONF server capabilities
        related to YANG-Push that are supported in the YANG module "ietf-notification-capabilities".</t>

      <t>These server capabilities are transport independent, session
        level capabilities. They can be provided either at the
        implementation time or reported at runtime.</t>

      <t>This document provides additional attributes associated with
        system capabilities that are related to the YANG notification delivery
        protocol:</t>

      <list style="symbols">
        <t>Transport protocols supported for YANG notifications that a client can request when
          establishing a subscription. This includes HTTPS-based <xref
            target="I-D.ietf-netconf-https-notif" /> or UDP-based <xref
            target="I-D.ietf-netconf-udp-notif" /> transports for configured subscriptions.</t>

        <t>YANG notifications encodings formats supported by the NETCONF/RESTCONF server. This
          includes XML <xref target="RFC7950" />, JSON <xref target="RFC7951" /> or CBOR <xref
            target="RFC9254" />.</t>

        <t>Security protocols supported for protecting YANG notifications connections. This includes <xref
            target="RFC6347">DTLS 1.2</xref>, <xref target="RFC9147">DTLS 1.3</xref>, <xref
            target="RFC5246">TLS 1.2</xref>, and <xref target="RFC8446">TLS 1.3</xref>.</t>
        </list>

        <t>The model defined in this document augments the System Capabilities
        model defined in <xref target="RFC9196"/>.</t>

        <t>This model is intended to be used between an orchestrator and a
        network device that provides YANG notifications. A management network
        between the orchestrator and the network device is assumed to be
        available for exchanging YANG management information. The management
        connectivity and endpoint of the network device are expected to be
        provisioned as part of the management network configuration. The
        orchestrator can use the established management connection to discover
        the notification transport capabilities of the network device before
        establishing the notification subscription.</t>

      <section title="Tree Diagram">
        <t>The following tree diagram <xref target="RFC8340" /> provides an overview of the data
          model.</t>

        <sourcecode type="yangtree"><![CDATA[
module: ietf-yp-transport-capabilities

  augment /sysc:system-capabilities/notc:subscription-capabilities:
    +--ro transport-capabilities
       +--ro transport-capability* [transport-protocol]
          +--ro transport-protocol    identityref
          +--ro security-protocol*    union
          +--ro encoding-format*      identityref
]]></sourcecode>
      </section>
    </section>

    <section title="YANG Module">
      <sourcecode type="yang" markers="true"
        name="ietf-yp-transport-capabilities@2026-08-13.yang"><![CDATA[
module ietf-yp-transport-capabilities {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-yp-transport-capabilities";
  prefix yptc;

  import ietf-subscribed-notifications {
    prefix sn;
    reference
      "RFC 8639: Subscription to YANG Notifications";
  }
  import ietf-system-capabilities {
    prefix sysc;
    reference
      "RFC 9196: YANG Modules Describing Capabilities for
       Systems and Datastore Update Notifications";
  }
  import ietf-notification-capabilities {
    prefix notc;
    reference
      "RFC 9196: YANG Modules Describing Capabilities for
       Systems and Datastore Update Notifications";
  }
  import ietf-tls-common {
    prefix tlscmn;
    reference
      "RFC 9645: YANG Groupings for TLS Clients and TLS Servers";
  }

  organization
    "IETF NETCONF (Network Configuration) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/group/netconf/>
     WG List:  <mailto:netconf@ietf.org>

     Authors:  Qin Wu
               <mailto:bill.wu@huawei.com>
               Qiufang Ma
               <mailto:maqiufang1@huawei.com>
               Alex Huang Feng
               <mailto:alex.huang-feng@t-systems.com>
               Thomas Graf
               <mailto:thomas.graf@swisscom.com>";
  description
    "This module defines an extension to YANG-Push
     Notification Capabilities model that provides additional
     transport specific capabilities for YANG notifications.

     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
     (http://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";

  revision 2026-08-13 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: YANG Notifications Transport Capabilities";
  }

  identity security-protocol {
    description
      "Identity for YANG notifications security protocols.";
  }

  identity dtls12 {
    base security-protocol;
    description
      "Indicates DTLS Protocol Version 1.2. DTLS 1.2 is obsolete,
       and thus it is NOT RECOMMENDED to enable this feature.";
    reference
      "RFC 6347: The Datagram Transport Layer Security (DTLS)
       Protocol Version 1.2.";
  }

  identity dtls13 {
    base security-protocol;
    description
      "Indicates DTLS Protocol Version 1.3.";
    reference
      "RFC 9147: The Datagram Transport Layer Security (DTLS)
       Protocol Version 1.3.";
  }

  augment "/sysc:system-capabilities"
        + "/notc:subscription-capabilities" {
    description
      "Adds subscription-related system level capabilities.";
    container transport-capabilities {
      description
        "Specifies capabilities related to YANG-Push transports.";
      list transport-capability {
        key "transport-protocol";
        description
          "Indicates supported YANG notifications transport protocol
           for Subscribed Notifications [RFC8639] and YANG-Push
           [RFC8641]. Defines the supported transports, security
           protocols and supported notification encodings.";
        leaf transport-protocol {
          type identityref {
            base sn:transport;
          }
          description
            "Indicates the supported YANG notifications transport
             protocol for Subscribed Notifications [RFC8639] and
             YANG-Push [RFC8641].";
        }
        leaf-list security-protocol {
          type union {
            type identityref {
              base security-protocol;
            }
            type identityref {
              base tlscmn:tls-version-base;
            }
          }
          description
            "Indicates the supported YANG notifications transport
             encryption protocols.";
        }
        leaf-list encoding-format {
          type identityref {
            base sn:encoding;
          }
          description
            "Indicates supported encoding formats for YANG
             notifications.";
        }
      }
    }
  }
}
]]></sourcecode>
    </section>

    <section title="IANA Considerations">
      <section anchor="xml" title="Updates to the IETF XML Registry">
        <t>This document registers a URI in the "IETF XML Registry" <xref target="RFC3688" />.
          Following the format in <xref
            target="RFC3688" />, the following registration has been made:</t>

        <artwork align="left"><![CDATA[
URI: urn:ietf:params:xml:ns:yang:ietf-yp-transport-capabilities
Registrant Contact: The IESG.
XML: N/A; the requested URI is an XML namespace.
Reference: RFC XXXX (RFC Ed.: replace XXX with actual RFC number
  and remove this note.)]]></artwork>

      </section>

      <section anchor="module"
        title="Updates to the YANG Module Names Registry">
        <t>This document registers one YANG module in the "YANG Module Names" registry <xref
            target="RFC6020" />. Following the format in <xref target="RFC6020" />, the following
          registration has been made:</t>

        <artwork align="left"><![CDATA[
name: ietf-yp-transport-capabilities
namespace: urn:ietf:params:xml:ns:yang:ietf-yp-transport-capabilities
prefix: yptc
reference: RFC XXXX (RFC Ed.: replace XXX with actual RFC number
  and remove this note.)]]></artwork>
      </section>
    </section>

    <section anchor="Implementation" title="Implementation Status">
      <t>Note to the RFC-Editor: Please remove this section before
        publishing.</t>

      <section anchor="Huawei" title="Huawei VRP">
        <t>Huawei implemented this document for a YANG Push publisher in
          their VRP platform.</t>
      </section>

      <section anchor="Cisco" title="Cisco IOS XR">
        <t>Cisco implemented this document for a YANG Push publisher in
          their IOS XR platform.</t>
      </section>
    </section>

    <section anchor="security" title="Security Considerations">
      <t>This section is modeled after the template described in <xref
          section="3.7" sectionFormat="of"
          target="I-D.ietf-netmod-rfc8407bis" /></t>

      <t>The "ietf-yp-transport-capabilities" YANG module defines a data model that is designed to
        be accessed via YANG-based management protocols, such as NETCONF <xref
          target="RFC6241" /> and RESTCONF <xref target="RFC8040" />. These protocols have to use a
        secure transport layer (e.g., SSH <xref
          target="RFC4252" />, TLS <xref target="RFC8446" />, and QUIC <xref
          target="RFC9000" />) and 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>All protocol-accessible data nodes are read-only and cannot be modified. The data in the
        module is not security sensitive. It inherits all the security considerations of <xref
          target="RFC9196" />.</t>
    </section>

    <section title="Contributors">
      <figure>
        <artwork>Ran Tao
Huawei
101 Software Avenue, Yuhua District
Nanjing, Jiangsu 210012
China
Email: taoran20@huawei.com

Liang Geng
China Mobile
32 Xuanwumen West St, Xicheng District
Beijing 10053
China
Email: gengliang@chinamobile.com

Peng Liu
China Mobile
Beiqijia Town, Changping District
Beijing 10053
China
Email: liupengyjy@chinamobile.com

Wei Wang
China Telecom
32 Xuanwumen West St, Xicheng District
Beijing 102209
China
Email: wangw36@chinatelecom.cn</artwork>
      </figure>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank Mohamed Boucadair,
        Kent Watson, Jan Lindblad, Reshad Rahman, Xiao Min, Per Andersson
        and Rob Wilton for their review and valuable comments.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.5246.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.6241.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.6347.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.7950.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.7951.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.8040.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.8341.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.8342.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.8446.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.8639.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.8641.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.9147.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.9196.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.9254.xml" />
    </references>

    <references title="Informative References">
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.3688.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.4252.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.6020.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.8340.xml" />
      <xi:include href="https://xml.resource.org/public/rfc/bibxml/reference.RFC.9000.xml" />
      <xi:include
        href="https://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-netconf-udp-notif.xml" />
      <xi:include
        href="https://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-netconf-https-notif.xml" />
      <xi:include
        href="https://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-netmod-rfc8407bis.xml" />
    </references>

    <section
      title="Usage Example of interaction with UDP-Notif and HTTPS-Notif for Configured Subscription">
      <t>The following instance-data example describes the notification
        transport capabilities of a hypothetical "acme-router".</t>

      <sourcecode type="xml"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<instance-data-set 
  xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"
  xmlns:sysc="urn:ietf:params:xml:ns:yang:ietf-system-capabilities"
  xmlns:notc="urn:ietf:params:xml:ns:yang:ietf-notification-capabilities"
  xmlns:hnt="urn:ietf:params:xml:ns:yang:ietf-https-notif-transport"
  xmlns:sn="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"
  xmlns:tlscmn="urn:ietf:params:xml:ns:yang:ietf-tls-common"
  xmlns:unt="urn:ietf:params:xml:ns:yang:ietf-udp-notif-transport">
  <name>acme-router-notification-capabilities</name>
  <content-schema>
    <module>ietf-system-capabilities@2022-02-17</module>
    <module>ietf-notification-capabilities@2022-02-17</module>
    <module>ietf-yp-transport-capabilities@2026-08-13</module>
  </content-schema>
  <!-- revision date, contact, etc. -->
  <description>Server Capability Discovery</description>
  <content-data>
    <sysc:system-capabilities>
      <notc:subscription-capabilities>
        <transport-capabilities
      xmlns="urn:ietf:params:xml:ns:yang:ietf-yp-transport-capabilities">
          <transport-capability>
            <transport-protocol>hnt:https</transport-protocol>
            <encoding-format>sn:encode-xml</encoding-format>
            <encoding-format>sn:encode-json</encoding-format>
            <security-protocol>tlscmn:tls12</security-protocol>
            <security-protocol>tlscmn:tls13</security-protocol>
          </transport-capability>
          <transport-capability>
            <transport-protocol>unt:udp-notif</transport-protocol>
            <encoding-format>sn:encode-json</encoding-format>
            <encoding-format>unt:encode-cbor</encoding-format>
            <security-protocol>dtls12</security-protocol>
            <security-protocol>dtls13</security-protocol>
          </transport-capability>
        </transport-capabilities>
      </notc:subscription-capabilities>
    </sysc:system-capabilities>
  </content-data>
</instance-data-set>
]]></sourcecode>

      <t>In addition, the client could also query notification transport
        capabilities from the NETCONF or RESTCONF server.
        For example, the client sends &lt;get&gt;
        request message to the the server to query from the server.</t>

      <sourcecode type="xml"><![CDATA[
================= NOTE: '\' line wrapping per RFC 8792 ==================

<rpc message-id="101"
  xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <get>
    <filter type="subtree">
      <system-capabilities xmlns="urn:ietf:params:xml:ns:yang:ietf-syste\
m-capabilities">
        <subscription-capabilities xmlns="urn:ietf:params:xml:ns:yang:ie\
tf-notification-capabilities">
          <transport-capabilities xmlns="urn:ietf:params:xml:ns:yang:iet\
f-yp-transport-capabilities"/>
        </subscription-capabilities>
      </system-capabilities>
    </filter>
  </get>
</rpc>
]]></sourcecode>

      <t>The server returns server data export capability using
        &lt;rpc-reply&gt; as follows:</t>

      <sourcecode type="xml"><![CDATA[
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
  xmlns:sysc="urn:ietf:params:xml:ns:yang:ietf-system-capabilities"
  xmlns:notc="urn:ietf:params:xml:ns:yang:ietf-notification-capabilities"
  xmlns:hnt="urn:ietf:params:xml:ns:yang:ietf-https-notif-transport"
  xmlns:sn="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"
  xmlns:unt="urn:ietf:params:xml:ns:yang:ietf-udp-notif-transport"
  xmlns:tlscmn="urn:ietf:params:xml:ns:yang:ietf-tls-common"
  message-id="101">
  <data>
    <sysc:system-capabilities>
      <notc:subscription-capabilities>
        <transport-capabilities 
    xmlns="urn:ietf:params:xml:ns:yang:ietf-yp-transport-capabilities">
          <transport-capability>
            <transport-protocol>hnt:https</transport-protocol>
            <encoding-format>sn:encode-xml</encoding-format>
            <encoding-format>sn:encode-json</encoding-format>
            <security-protocol>tlscmn:tls12</security-protocol>
            <security-protocol>tlscmn:tls13</security-protocol>
          </transport-capability>
          <transport-capability>
            <transport-protocol>unt:udp-notif</transport-protocol>
            <encoding-format>sn:encode-json</encoding-format>
            <encoding-format>unt:encode-cbor</encoding-format>
            <security-protocol>dtls12</security-protocol>
            <security-protocol>dtls13</security-protocol>
          </transport-capability>
        </transport-capabilities>
      </notc:subscription-capabilities>
    </sysc:system-capabilities>
  </data>
</rpc-reply>
]]></sourcecode>

    </section>
  </back>
</rfc>