rfc9196xml2.original.xml   rfc9196.xml 
<?xml version="1.0" encoding="UTF-8"?> <?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" []>
<!-- <!DOCTYPE rfc [
:folding=sidekick: <!ENTITY nbsp "&#160;">
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> <!ENTITY zwsp "&#8203;">
<?rfc toc="yes"?> <!ENTITY nbhy "&#8209;">
<?rfc tocompact="yes"?> <!ENTITY wj "&#8288;">
<?rfc tocdepth="4"?> ]>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr="trust200902"
<?rfc sortrefs="yes"?> number="9196" docName="draft-ietf-netconf-notification-capabilities-21" obsolet
<?rfc comments="yes"?> es="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth=
<?rfc inline="yes"?> "4" symRefs="true" sortRefs="true" version="3" consensus="true">
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" ipr="trust200902" docName="draft-ietf-netconf-notification-c
apabilities-21">
<front> <front>
<title abbrev="System and Notification Capabilities"> <title abbrev="YANG System &amp; Notification Capabilities">
YANG Modules describing Capabilities for Systems and Datastore Update Noti YANG Modules Describing Capabilities for Systems and Datastore Update Noti
fications fications
</title> </title>
<seriesInfo name="RFC" value="9196"/>
<author initials="B." surname="Lengyel" fullname="Balazs Lengyel"> <author initials="B." surname="Lengyel" fullname="Balazs Lengyel">
<organization abbrev="Ericsson"> Ericsson </organization> <organization abbrev="Ericsson"> Ericsson </organization>
<address> <address>
<postal> <postal>
<street>Magyar Tudosok korutja 11</street> <street>Magyar Tudosok korutja 11</street>
<city>1117 Budapest</city> <city>Budapest</city>
<country>Hungary</country> <country>Hungary</country>
<code>1117</code>
</postal> </postal>
<email>balazs.lengyel@ericsson.com</email> <email>balazs.lengyel@ericsson.com</email>
</address> </address>
</author> </author>
<author fullname="Alexander Clemm" initials="A" surname="Clemm"> <author fullname="Alexander Clemm" initials="A" surname="Clemm">
<organization>Futurewei</organization> <organization>Futurewei</organization>
<address> <address>
<postal> <postal>
<street>2330 Central Expressway</street> <street>2330 Central Expressway</street>
<city>Santa Clara, CA 95050</city> <city>Santa Clara</city>
<country>USA</country> <region>CA</region>
<code>95050</code>
<country>United States of America</country>
</postal> </postal>
<email>ludwig@clemm.org</email> <email>ludwig@clemm.org</email>
</address> </address>
</author> </author>
<author fullname="Benoit Claise" initials="B" surname="Claise"> <author fullname="Benoit Claise" initials="B" surname="Claise">
<organization>Huawei</organization> <organization>Huawei</organization>
<address> <address>
<postal> <postal>
<street></street> <street>George's Court Townsend Street</street>
<city></city> <city>Dublin 2</city>
<country></country> <country>Ireland</country>
</postal> </postal>
<email>benoit.claise@huawei.com</email> <email>benoit.claise@huawei.com</email>
</address> </address>
</author> </author>
<date/> <date month="February" year="2022"/>
<area>OPS</area> <area>OPS</area>
<workgroup>NETCONF</workgroup> <workgroup>NETCONF</workgroup>
<keyword>NMDA</keyword>
<keyword>NETCONF</keyword>
<keyword>RESTCONF</keyword>
<abstract> <abstract>
<t> <t>
This document defines two YANG modules,"ietf-system-capabilities” and This document defines two YANG modules, "ietf-system-capabilities" and
"ietf-notification-capabilities”. "ietf-notification-capabilities".
</t><t> </t>
<t>
The module "ietf-system-capabilities" provides a placeholder structure th at The module "ietf-system-capabilities" provides a placeholder structure th at
can be used to discover YANG related system capabilities for servers. can be used to discover YANG-related system capabilities for servers.
The module can be used to report capability information from the server The module can be used to report capability information from the server
at run time or at implementation time, by making use of the YANG Instance at runtime or at implementation time by making use of the YANG instance d
Data ata file format.
File Format. </t>
</t><t> <t>
The module "ietf-notification-capabilities" augments "ietf-system-capabil ities" The module "ietf-notification-capabilities" augments "ietf-system-capabil ities"
to specify capabilities related to Subscription to YANG Notifications to specify capabilities related to "Subscription to YANG Notifications
for Datastore Updates. for Datastore Updates" (RFC 8641).
</t> </t>
</abstract> </abstract>
</front> </front>
<middle> <middle>
<section anchor="intro" title="Introduction"> <section anchor="intro" numbered="true" toc="default">
<name>Introduction</name>
<t> <t>
Servers and/or publishers often have capabilities, values describing Servers and/or publishers often have capabilities, which can be represen
operational behavior, that need to be conveyed to clients, which is ted by values that designate operational behavior, that need to be conveyed to c
enabled by the YANG modules described in this document. lients. The YANG modules that are defined in this document facilitate this.
</t> </t>
<t> <t>
There is a need to publish this capability information as it is part of There is a need to publish this capability information as it is part of
the API contract between the server and client. Examples include maximum the API contract between the server and client. Examples include the max imum
size of data that can be stored or transferred, information about counte rs (whether a node supports "on-change" telemetry), etc. Such capabilities are o ften dependent on a vendor's implementation or the available resources at deploy ment. size of data that can be stored or transferred, information about counte rs (whether a node supports "on-change" telemetry), etc. Such capabilities are o ften dependent on a vendor's implementation or the available resources at deploy ment.
Many such capabilities are specific to the complete system, Many such capabilities are specific to the complete system,
individual YANG datastores <xref target="RFC8342"/>, specific parts of t he YANG individual YANG datastores <xref target="RFC8342" format="default"/>, sp ecific parts of the YANG
schema, or even individual data nodes. It is a goal of this document to provide a schema, or even individual data nodes. It is a goal of this document to provide a
common way of representing such capabilities in a format that is: common way to represent such capabilities in a format that is:
<list style="symbols">
<t>vendor independent</t>
<t>machine-readable</t>
<t>available in an identical format both at implementation time a
nd at run time.</t>
</list>
</t> </t>
<ul spacing="normal">
<li>vendor independent,</li>
<li>machine readable, and</li>
<li>available in an identical format both at implementation time and at
runtime.</li>
</ul>
<t> <t>
Implementation-time information is needed by Network Management System Implementation-time information is needed by Network Management System
(NMS) implementers. (NMS) implementers.
An NMS implementation that supports notifications needs the informatio n An NMS implementation that supports notifications needs information
about a system's capability so it can send "on-change" notifica tions. about a system's capability so it can send "on-change" notifica tions.
If the information is not documented If the information is not documented
in a way that is readily available to the NMS designer, but only as in stance data from in a way that is readily available to the NMS designer, but only as in stance data from
the network node once it is deployed, the network node once it is deployed,
the NMS implementation will be delayed, because it has to wait for the the NMS implementation will be delayed because it has to wait for the
network node to be ready. In addition, the assumption that all network node to be ready. In addition, the assumption that all
NMS implementers will NMS implementers will
have a correctly configured network node available to retrieve data fr have a correctly configured network node available from which to retri
om eve data is an expensive proposition and may not always hold. (An NMS may need
is an expensive proposition and may not always hold. (An NMS may need
to be able to handle many dozens of network node types.) to be able to handle many dozens of network node types.)
Often a fully functional NMS is a requirement for introducing a new Often, a fully functional NMS is a requirement for introducing a new
network node type network node type
into a network, so delaying NMS readiness effectively also delays the into a network, so delaying NMS readiness effectively also delays the
time at which a new network node type can be introduced into the netwo rk. time at which a new network node type can be introduced into the netwo rk.
</t> </t>
<t> <t>
Implementation-time information is needed by system integrators. Implementation-time information is needed by system integrators.
When introducing a network node type into their network, When introducing a network node type into their network,
operators often need to integrate the node type into their own operators often need to integrate the node type into their own
management system. The NMS may have management functions that depend management system. The NMS may have management functions that depend
on "on-change" notifications. The network operators need to plan their on "on-change" notifications. The network operators need to plan their
management practices and NMS implementation before they decide to management practices and NMS implementation before they decide to
buy the specific network node type. Moreover, the decision to buy the node buy the specific network node type. Moreover, the decision to buy the node
type sometimes depends on these management possibilities. type sometimes depends on these management possibilities.
</t> </t>
<t> <t>
Run-time capability information is needed: Runtime capability information is needed:
<list style="symbols"> </t>
<t>for any "purely model driven" application, e.g., a NETCONF-browse <ul spacing="normal">
r. <li>for any "purely model-driven" application, e.g., a NETCONF browser.
Such applications depend on reading models and capabilities at run Such applications depend on reading models and capabilities at run
time time
to support all the publisher's available functionality.</t> to support all the publisher's available functionality.</li>
<t>in case the capability might change during run time <li>in case the capability might change during runtime,
e.g., due to licensing, HW constraints etc.</t> e.g., due to licensing, hardware constraints, etc.</li>
<t>to check that capability information provided earlier, at <li>to check that that capability information provided earlier, at
implementation time, is what the publisher has implemented.</t> implementation time, is what the publisher has implemented.</li>
</list> </ul>
</t> <section anchor="terminology" numbered="true" toc="default">
<name>Terminology</name>
<section title="Terminology" anchor="terminology"> <t>
<t> The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>
"MAY", and "OPTIONAL" in this document are to be interpreted as RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to
when, and only when, they appear in all capitals, as shown here. be interpreted as
described in BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.
</t> </t>
<t>The terms "YANG-Push", "on-change subscription" and "periodic <t>The terms "YANG-Push", "on-change subscription", and "periodic
subscription" are used as defined in <xref target="RFC8641"/>. subscription" are used as defined in <xref target="RFC8641" format="de
fault"/>.
</t> </t>
<t>The terms "subscriber", "publisher" and "receiver" are used as <t>The terms "subscriber", "publisher", and "receiver" are used as
defined in <xref target="RFC8639"/>. defined in <xref target="RFC8639" format="default"/>.
</t> </t>
<t>The term "server" is used as defined in <xref target="RFC8342"/>. <t>The term "server" is used as defined in <xref target="RFC8342" format ="default"/>.
</t> </t>
<t>The terms "YANG instance data file format", "instance data", and <t>The terms "YANG instance data file format", "instance data", and
"instance data set" are used as defined in "instance data set" are used as defined in
<xref target="I-D.ietf-netmod-yang-instance-file-format"/>. <xref target="RFC9195"/>.
</t> </t>
<t>In addition, this document defines the following terms:</t> <t>In addition, this document defines the following terms:</t>
<t> <dl>
"Implementation-time information": Information about the server's <dt>Implementation-time information:</dt><dd> Information about the se
rver's
behavior that is made available during the implementation of the serve r, behavior that is made available during the implementation of the serve r,
available from a source other than a running server. available from a source other than a running server.
</t> </dd>
<t> <dt>
"Run-time information": Information about the server's Runtime information:</dt><dd> Information about the server's
behavior that is available from the running server via management prot ocols behavior that is available from the running server via management prot ocols
such as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC such as NETCONF <xref target="RFC6241" format="default"/> or RESTCONF
8040"/>. <xref target="RFC8040" format="default"/>.
</t> </dd></dl>
</section> </section>
</section> </section>
<section anchor="capability-information" numbered="true" toc="default">
<section anchor="capability-information" title="Providing System Capability <name>Providing System Capability Information</name>
Information">
<t> <t>
Capability information is represented by instance-data based on one or Capability information is represented by instance data based on one or
more "capability defining YANG modules". This allows a user to discover more "capability-defining YANG modules". This allows a user to discover
capabilities both at implementation time and at run time. capabilities both at implementation time and at runtime.
</t> </t>
<t> <dl spacing="normal">
<list style="symbols"> <dt>For the implementation-time use case:</dt><dd> Capabilities <bcp14>S
<t>For the implementation-time use case: Capabilities SHOULD be provid HOULD</bcp14> be provided by the
ed by the implementer as YANG instance data files complying with
implementer as YANG instance data files complying to <xref target="RFC9195"/>.
<xref target="I-D.ietf-netmod-yang-instance-file-format"/>. When provided, the file <bcp14>MUST</bcp14> already be available at im
When provided, the file MUST be available already at implementation ti plementation time and retrievable in a way that does not depend
me, on a live network node, e.g., downloading from a product website.
retrievable in a way that does not depend </dd>
on a live network node. E.g., download from product website. <dt>For the runtime use case:</dt><dd> Capabilities <bcp14>SHOULD</bcp14
</t> > be available via
<t>For the run-time use case: Capabilities SHOULD be available via NETCONF <xref target="RFC6241" format="default"/> or
NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040" format="default"/> from the live serve
RESTCONF <xref target="RFC8040"/> from the live server (implementing r (implementing
the publisher) during run time. the publisher) during runtime.
Implementations that support changing these capabilities at Implementations that support changing these capabilities at
run time SHOULD support "on-change" notifications about the runtime <bcp14>SHOULD</bcp14> support "on-change" notifications about
system-capabilities container.</t> the
</list> system-capabilities container.</dd>
</dl>
<t>
The module "ietf-system-capabilities" provides a placeholder structure t
o be used to specify any YANG-related system capability.
</t> </t>
<t> <t>
The module "ietf-system-capabilities" provides a placeholder structure t
o be used to specify any YANG related system capability.
</t><t>
The module "ietf-notification-capabilities" is defined to allow a publis her to The module "ietf-notification-capabilities" is defined to allow a publis her to
specify capabilities related to "Subscription to YANG Notifications for specify capabilities related to "Subscription to YANG Notifications for
Datastore Updates" <xref target="RFC8641"/>, also known as YANG-Push, augmenting Datastore Updates" <xref target="RFC8641" format="default"/>, also known as YANG
"ietf-system-capabilities". -Push, augmenting "ietf-system-capabilities".
</t><t> </t>
<t>
The YANG data models in this document conform to the Network The YANG data models in this document conform to the Network
Management Datastore Architecture (NMDA) defined in <xref target="RFC834 2"/>. Management Datastore Architecture (NMDA) defined in <xref target="RFC834 2" format="default"/>.
</t> </t>
</section> </section>
<section anchor="Yang-Push-Capabilities" numbered="true" toc="default">
<section anchor="Yang-Push-Capabilities" title="Providing YANG-Push Notificatio <name>Providing YANG-Push Notification Capabilities Information</name>
n Capabilities Information"> <t>A specific case is the need to specify capabilities in the YANG-Push
<t>A specific case is the need to specify capabilities in the YANG-Push functionality. As defined in <xref target="RFC8641" format="default"/>,
functionality. As defined in <xref target="RFC8641"/> a publisher may al a publisher may allow
low
subscribers to subscribe to updates from a datastore and will sub sequently push subscribers to subscribe to updates from a datastore and will sub sequently push
such update notifications to the receiver. Notifications may be s ent such update notifications to the receiver. Notifications may be s ent
periodically or "on-change" (more or less immediately after each chang periodically or "on change" (more or less immediately after each chang
e). e).
</t> </t>
<t>A publisher supporting YANG-Push has a number of capabilities defined <t>A publisher supporting YANG-Push has a number of capabilities defined i
in n
<xref target="RFC8641"/> <xref target="RFC8641" format="default"/>
that are often determined during the implementation of the publisher. These include: that are often determined during the implementation of the publisher. These include:
<list style="symbols"> </t>
<t>Supported (reporting) periods for "periodic" subscriptions</t> <ul spacing="normal">
<t>Maximum number of objects that can be sent in an update</t> <li>supported (reporting) periods for "periodic" subscriptions.</li>
<t>The set of datastores or data nodes for which "periodic" notifica <li>the maximum number of objects that can be sent in an update.</li>
tion is supported.</t> <li>the set of datastores or data nodes for which "periodic" notificatio
</list> n is supported.</li>
</t> </ul>
<t>Additional capabilities if the optional "on-change" feature is suppor <t>Additional capabilities if the optional "on-change" feature is supporte
ted include: d include:
<list style="symbols"> </t>
<t>Supported dampening periods for "on-change" subscriptions</t> <ul spacing="normal">
<t>The set of datastores or data nodes for which "on-change" notific <li>supported dampening periods for "on-change" subscriptions.</li>
ation is supported</t> <li>the set of datastores or data nodes for which "on-change" notificati
</list> on is supported.</li>
</t> </ul>
<t> <t>
Publishers might have some capabilities (or limitations) to document. Publishers might have some capabilities (or limitations) to document -
For example, how many update notifications and how many datastore node - for example, how many update notifications and how many datastore node
updates they can send out in a certain time-period. Other publishers m updates they can send out in a certain time period. Other publishers m
ight ight
not support "periodic" subscriptions to all datastores. In some cases, a publisher supporting "on-change" notifications will not not support "periodic" subscriptions to all datastores. In some cases, a publisher supporting "on-change" notifications will not
be able to push updates for some object types "on-change". Reasons for be able to push updates for some object types "on change". Reasons for
this might be that the value of the datastore node changes frequently this might be that the value of the datastore node changes frequently
(e.g., in-octets counter), that small object changes are (e.g., in-octet counter), that small object changes are
frequent and irrelevant to the receiver (e.g., a temperature gauge cha nging 0.1 frequent and irrelevant to the receiver (e.g., a temperature gauge cha nging 0.1
degrees within a predetermined and acceptable range), or degrees within a predetermined and acceptable range), or
that the implementation is not capable of on-change notification for that the implementation is not capable of on-change notification for
a particular object. In all those cases, it will be important for a particular object. In all those cases, it will be important for
subscriber applications to have a way to identify which objects "on-ch subscriber applications to have a way to identify the objects for whic
ange" notifications are supported and for which ones not. h "on-change" notifications are supported and the objects for which they are not
</t> .
<t> </t>
Faced with the reality that support for "on-change" notification does <t>
not Support for "on-change" notifications does not
mean that such notifications will be sent for any specific data node, mean that such notifications will be sent for any specific data node,
subscriber/management applications can not rely on the "on-change" as the ability to do so may not be supported for every data node. Therefore, sub
functionality unless the subscriber has some means to identify which o scriber/management applications cannot rely on the "on-change"
bjects functionality unless the subscriber has some means to identify the obj
"on-change" notifications are supported for. YANG models are me ects for which "on-change" notifications are in fact supported. YANG data models
ant to be used as an are meant to be used as an
interface contract. Without identification of the data nodes ac interface contract.
tually supporting "on-change", Without identification of the data nodes actually supporting "o
n-change" notifications,
this contract would be incomplete. this contract would be incomplete.
</t> </t>
<t>Clients of a server (and subscribers to a publisher, as subscribers a <t>Clients of a server (and subscribers to a publisher, as subscribers are
re also clients) need a method to gather capability information. also clients) need a method to gather capability information.
</t> </t>
</section> </section>
<section anchor="system_capabilities_model" numbered="true" toc="default">
<section anchor="system_capabilities_model" title="System Capabilities Model <name>System Capabilities Model</name>
">
<t>The module "ietf-system-capabilities" is defined to provide a <t>The module "ietf-system-capabilities" is defined to provide a
structure that can be used to discover (as read-only operational state) a ny YANG related system capability.</t> structure that can be used to discover (as a read-only operational state) any YANG-related system capability.</t>
<t>This module itself does not contain any capabilities; it provides <t>This module itself does not contain any capabilities; it provides
augmentation points for capabilities to be defined in subsequent YANG augmentation points for capabilities to be defined in subsequent YANG
modules. The ietf-system-capabilies is used by other modules to augment modules. "ietf-system-capabilities" is used by other modules to augment
in specific in specific
capability information. Every set of such capabilities MUST be capability information. Every set of such capabilities <bcp14>MUST</bcp
14> be
wrapped in a container under the augment statement to cleanly wrapped in a container under the augment statement to cleanly
separate different groups of capabilities. These "wrapper containers" SH separate different groups of capabilities. These "wrapper containers" <b
ALL be cp14>SHALL</bcp14> be
augmented in at /sysc:system-capabilities and /sysc:system-capabilities/ augmented at /sysc:system-capabilities and /sysc:system-capabilities/sys
sysc:datastore-capabilities/sysc:per-node-capabilities.</t> c:datastore-capabilities/sysc:per-node-capabilities.</t>
<t>
Capability values can be specified on system level, <t>
datastore level (by selecting all nodes in the datastore) Capability values can be specified at the system level,
at the datastore level (by selecting all nodes in the datastore),
or for specific data nodes of a specific datastore or for specific data nodes of a specific datastore
(and their contained sub-trees). (and their contained subtrees).
Capability values specified for a specific datastore or Capability values specified for a specific datastore or
node-set override values specified on the system level. node-set override values specified at the system level.
</t> </t>
<t>
<t indent="3">
Note: The solution is usable for both NMDA and non-NMDA systems. Note: The solution is usable for both NMDA and non-NMDA systems.
For non-NMDA servers "config false" data is For non-NMDA servers, "config false" data is
considered as if it were part of the running datastore. considered as if it were part of the running datastore.
</t> </t>
<section title="Tree Diagram"> <section numbered="true" toc="default">
<name>Tree Diagram</name>
<t> <t>
The following tree diagram <xref target="RFC8340"/> The following tree diagram <xref target="RFC8340" format="default"/>
provides an overview of the data model. provides an overview of the data model.
</t> </t>
<t>
<figure> <sourcecode name="" type="yangtree"><![CDATA[
<artwork><![CDATA[
module: ietf-system-capabilities module: ietf-system-capabilities
+--ro system-capabilities +--ro system-capabilities
+--ro datastore-capabilities* [datastore] +--ro datastore-capabilities* [datastore]
+--ro datastore -> /yanglib:yang-library/datastore/name +--ro datastore -> /yanglib:yang-library/datastore/name
+--ro per-node-capabilities* [] +--ro per-node-capabilities* []
+--ro (node-selection)? +--ro (node-selection)?
+--:(node-selector) +--:(node-selector)
+--ro node-selector? nacm:node-instance-identifier +--ro node-selector? nacm:node-instance-identifier
]]></artwork> ]]></sourcecode>
</figure>
</t>
</section> </section>
<section title="YANG Module" anchor="ietf-system-capabilities.yang"> <section anchor="ietf-system-capabilities.yang" numbered="true" toc="defau
<t>This YANG module imports typedefs from <xref target="RFC8341"/> and lt">
a reference path from <xref target="RFC8525"/>. <name>YANG Module</name>
<t>This YANG module imports typedefs from <xref target="RFC8341" format=
"default"/> and
a reference path from <xref target="RFC8525" format="default"/>.
</t> </t>
<figure>
<artwork><![CDATA[
<CODE BEGINS> file "ietf-system-capabilities@2021-10-12.yang"
<sourcecode name="ietf-system-capabilities@2022-01-21.yang" type="yang" markers= "true"><![CDATA[
module ietf-system-capabilities { module ietf-system-capabilities {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-system-capabilities"; namespace "urn:ietf:params:xml:ns:yang:ietf-system-capabilities";
prefix sysc; prefix sysc;
import ietf-netconf-acm { import ietf-netconf-acm {
prefix nacm; prefix nacm;
reference reference
"RFC 8341: Network Configuration Access Control Model"; "RFC 8341: Network Configuration Access Control Model";
} }
skipping to change at line 338 skipping to change at line 336
organization organization
"IETF NETCONF (Network Configuration) Working Group"; "IETF NETCONF (Network Configuration) Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/netconf/> "WG Web: <https://datatracker.ietf.org/wg/netconf/>
WG List: <mailto:netconf@ietf.org> WG List: <mailto:netconf@ietf.org>
Editor: Balazs Lengyel Editor: Balazs Lengyel
<mailto:balazs.lengyel@ericsson.com>"; <mailto:balazs.lengyel@ericsson.com>";
description description
"This module specifies a structure to specify system "This module specifies a structure to specify system
capabilities for a server or a publisher. System capabilities capabilities for a server or a publisher. System capabilities
may include capabilities of a NETCONF or RESTCONF server or a may include capabilities of a NETCONF or RESTCONF server or a
notification publisher. notification publisher.
This module does not contain any specific capabilities, it only This module does not contain any specific capabilities; it only
provides a structure where containers containing the actual provides a structure where containers containing the actual
capabilities are augmented in. capabilities are augmented in.
Capability values can be specified on system level, Capability values can be specified at the system level, at the
datastore level (by selecting all nodes in the datastore) or datastore level (by selecting all nodes in the datastore), or
for specific data nodes of a specific datastore (and their for specific data nodes of a specific datastore (and their
contained sub-trees). contained subtrees).
Capability values specified for a specific datastore or Capability values specified for a specific datastore or
node-set override values specified on the system/publisher level. node-set override values specified on the system/publisher
level.
The same grouping MUST be used to define hierarchical capabilities The same grouping MUST be used to define hierarchical
supported both at the system level and datastore/data node level. capabilities supported both at the system level and at the
datastore/data-node level.
To find a capability value for a specific data node in a To find a capability value for a specific data node in a
specific datastore the user SHALL: specific datastore, the user SHALL:
1) search for a datastore-capabilities list entry for 1) search for a datastore-capabilities list entry for
the specific datastore. When stating a specific capability, the the specific datastore. When stating a specific capability, the
relative path for any specific capability must be the same relative path for any specific capability must be the same
under the system-capabilities container and under the under the system-capabilities container and under the
per-node-capabilities list. per-node-capabilities list.
2) If the datastore entry is found within that entry, process all 2) If the datastore entry is found within that entry, process
per-node-capabilities entries in the order they appear in the list. all per-node-capabilities entries in the order they appear in
The first entry that specifies the specific capability and has a the list. The first entry that specifies the specific
node-selector selecting the specific data node defines the capability and has a node-selector selecting the specific data
capability value. node defines the capability value.
3) If the capability value is not found above and the specific 3) If the capability value is not found above and the specific
capability is specified under the system-capabilities container capability is specified under the system-capabilities container
(outside the datastore-capabilities list), this value shall be (outside the datastore-capabilities list), this value shall be
used. used.
4) If no values are found in the previous steps, the 4) If no values are found in the previous steps, the
system/publisher is not capable of providing a value. Possible system/publisher is not capable of providing a value. Possible
reasons are: it is unknown, the capability is changing for some reasons are that it is unknown, the capability is changing for
reason, there is no specified limit, etc. In this case the some reason, there is no specified limit, etc. In this case,
system's behavior is unspecified. the system's behavior is unspecified.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
are to be interpreted as described in BCP 14 (RFC 2119) are to be interpreted as described in BCP 14 (RFC 2119)
(RFC 8174) when, and only when, they appear in all (RFC 8174) when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
Copyright (c) 2021 IETF Trust and the persons identified as Copyright (c) 2022 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to without modification, is permitted pursuant to, and subject to
the license terms contained in, the Simplified BSD License set the license terms contained in, the Revised BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX This version of this YANG module is part of RFC 9196
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself (https://www.rfc-editor.org/info/rfc9196); see the RFC itself
for full legal notices."; for full legal notices.";
// RFC Ed.: replace XXXX with actual RFC number and remove this revision 2022-01-21 {
// note.
revision 2021-10-12 {
description description
"Initial version "Initial version";
NOTE TO RFC EDITOR:
(1)Please replace the above revision date to
the date of RFC publication when published.
(2) Please replace the date in the file name
(ietf-system-capabilities@2021-10-12.yang)
to the date of RFC publication.
(3) Please replace the following reference
with RFC number when published
(i.e. RFC xxxx).";
reference reference
"RFC XXXX: YANG Modules describing Capabilities for Systems "RFC 9196: YANG Modules Describing Capabilities for Systems
and Datastore Update Notifications"; and Datastore Update Notifications";
} }
container system-capabilities { container system-capabilities {
config false; config false;
description description
"System capabilities. "System capabilities.
Capability values specified here at the system level Capability values specified here at the system level
are valid for all datastores and are used when the are valid for all datastores and are used when the
capability is not specified on the datastore level capability is not specified at the datastore level
or for specific data nodes."; or for specific data nodes.";
/* /*
* "Augmentation point for system level capabilities." * "Augmentation point for system-level capabilities."
*/ */
list datastore-capabilities { list datastore-capabilities {
key "datastore"; key "datastore";
description description
"Capabilities values per datastore. "Capabilities values per datastore.
For non-NMDA servers/publishers 'config false' data is For non-NMDA servers/publishers, 'config false' data is
considered as if it was part of the running datastore."; considered as if it were part of the running datastore.";
leaf datastore { leaf datastore {
type leafref { type leafref {
path path
"/yanglib:yang-library/yanglib:datastore/yanglib:name"; "/yanglib:yang-library/yanglib:datastore/yanglib:name";
} }
description description
"The datastore for which capabilities are defined. "The datastore for which capabilities are defined.
Only one specific datastore can be specified Only one specific datastore can be specified,
e.g., ds:conventional, which represents a set of e.g., ds:conventional must not be used, as it
configuration datastores, must not be used."; represents a set of configuration datastores.";
} }
list per-node-capabilities { list per-node-capabilities {
description description
"Each list entry specifies capabilities for the selected "Each list entry specifies capabilities for the selected
data nodes. The same capabilities apply for the data nodes data nodes. The same capabilities apply to the data nodes
in the subtree below the selected nodes. in the subtree below the selected nodes.
The system SHALL order the entries according to their The system SHALL order the entries according to their
precedence. The order of the entries MUST NOT change unless precedence. The order of the entries MUST NOT change
the underlying capabilities also change. unless the underlying capabilities also change.
Note that the longest patch matching can be achieved Note that the longest patch matching can be achieved
by ordering more specific matches before less by ordering more specific matches before less
specific ones."; specific ones.";
choice node-selection { choice node-selection {
description description
"A method to select some or all nodes within a datastore."; "A method to select some or all nodes within a
datastore.";
leaf node-selector { leaf node-selector {
type nacm:node-instance-identifier; type nacm:node-instance-identifier;
description description
"Selects the data nodes for which capabilities are "Selects the data nodes for which capabilities are
specified. The special value '/' denotes all data nodes specified. The special value '/' denotes all data
in the datastore, consistent with the path leaf node on nodes in the datastore, consistent with the path
page 41 [RFC8341]."; leaf node on page 41 of [RFC8341].";
reference reference
"RFC 8341: Network Configuration Access Control Model"; "RFC 8341: Network Configuration Access Control Model";
} }
} }
/* /*
* "Augmentation point for datastore or data node level * "Augmentation point for datastore- or data-node-level
* capabilities." * capabilities."
*/ */
} }
} }
} }
} }
]]></artwork>
</figure> ]]></sourcecode>
<t>&lt;CODE ENDS></t>
</section> </section>
</section> </section>
<section anchor="notification-capabilities_model" numbered="true" toc="defau
<section anchor="notification-capabilities_model" title="Notification Capabi lt">
lities Model"> <name>Notification Capabilities Model</name>
<t> <t>
The YANG module "ietf-notification-capabilities" provides YANG-Push The YANG module "ietf-notification-capabilities" provides information re
related capability information. lated to the YANG-Push capability.
</t> </t>
<section title="Tree Diagram"> <section numbered="true" toc="default">
<name>Tree Diagram</name>
<t> <t>
The following tree diagram <xref target="RFC8340"/> The following tree diagram <xref target="RFC8340" format="default"/>
provides an overview of the data model. provides an overview of the data model.
</t> </t>
<t> <sourcecode name="" type="yangtree"><![CDATA[
<figure>
<artwork><![CDATA[
module: ietf-notification-capabilities module: ietf-notification-capabilities
augment /sysc:system-capabilities: augment /sysc:system-capabilities:
+--ro subscription-capabilities +--ro subscription-capabilities
+--ro max-nodes-per-update? uint32 +--ro max-nodes-per-update? uint32
+--ro periodic-notifications-supported? notification-support +--ro periodic-notifications-supported? notification-support
+--ro (update-period)? +--ro (update-period)?
| +--:(minimum-update-period) | +--:(minimum-update-period)
| | +--ro minimum-update-period? uint32 | | +--ro minimum-update-period? uint32
| +--:(supported-update-period) | +--:(supported-update-period)
| +--ro supported-update-period* uint32 | +--ro supported-update-period* uint32
skipping to change at line 540 skipping to change at line 525
| +--:(minimum-update-period) | +--:(minimum-update-period)
| | +--ro minimum-update-period? uint32 | | +--ro minimum-update-period? uint32
| +--:(supported-update-period) | +--:(supported-update-period)
| +--ro supported-update-period* uint32 | +--ro supported-update-period* uint32
+--ro on-change-supported? notification-support +--ro on-change-supported? notification-support
| {yp:on-change}? | {yp:on-change}?
+--ro minimum-dampening-period? uint32 +--ro minimum-dampening-period? uint32
| {yp:on-change}? | {yp:on-change}?
+--ro supported-excluded-change-type* union +--ro supported-excluded-change-type* union
{yp:on-change}? {yp:on-change}?
]]></artwork> ]]></sourcecode>
</figure>
</t>
</section> </section>
<section title="YANG Module" anchor="ietf-notification-capabilities.yang"> <section anchor="ietf-notification-capabilities.yang" numbered="true" toc=
<t>This YANG module imports a feature and typedefs from <xref target="RF "default">
C8641"/> <name>YANG Module</name>
<t>This YANG module imports a feature and typedefs from <xref target="RF
C8641" format="default"/>
and also imports the "ietf-system-capabilities" specified in this docume nt. and also imports the "ietf-system-capabilities" specified in this docume nt.
</t> </t>
<figure>
<artwork><![CDATA[
<CODE BEGINS> file "ietf-notification-capabilities@2021-10-12.yang"
<sourcecode name="ietf-notification-capabilities@2022-01-21.yang" type=" yang" markers="true"><![CDATA[
module ietf-notification-capabilities { module ietf-notification-capabilities {
yang-version 1.1; yang-version 1.1;
namespace namespace
"urn:ietf:params:xml:ns:yang:ietf-notification-capabilities"; "urn:ietf:params:xml:ns:yang:ietf-notification-capabilities";
prefix notc; prefix notc;
import ietf-yang-push { import ietf-yang-push {
prefix yp; prefix yp;
description description
"This module requires ietf-yang-push to be implemented."; "This module requires ietf-yang-push to be implemented.";
reference reference
"RFC 8641: Subscription to YANG Notifications for Datastore "RFC 8641: Subscription to YANG Notifications for
Updates"; Datastore Updates";
} }
import ietf-system-capabilities { import ietf-system-capabilities {
prefix sysc; prefix sysc;
description description
"This module requires ietf-system-capabilities to be "This module requires ietf-system-capabilities to be
implemented."; implemented.";
reference reference
"RFC XXXX: YANG Modules describing Capabilities for Systems "RFC 9196: YANG Modules Describing Capabilities for Systems
and Datastore Update Notifications"; and Datastore Update Notifications";
} }
// RFC Ed.: replace the above XXXX with actual RFC number
// and remove this note.
organization organization
"IETF NETCONF (Network Configuration) Working Group"; "IETF NETCONF (Network Configuration) Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/netconf/> "WG Web: <https://datatracker.ietf.org/wg/netconf/>
WG List: <mailto:netconf@ietf.org> WG List: <mailto:netconf@ietf.org>
Editor: Balazs Lengyel Editor: Balazs Lengyel
<mailto:balazs.lengyel@ericsson.com>"; <mailto:balazs.lengyel@ericsson.com>";
description description
"This module specifies YANG-Push [RFC 8641] related publisher "This module specifies publisher capabilities related to
capabilities. YANG-Push (RFC 8641).
The module contains: The module contains:
- specification of which data nodes support 'on-change' or - a specification of the data nodes that support 'on-change' or
'periodic' notifications. 'periodic' notifications.
- capabilities related to the throughput of notification data - capabilities related to the throughput of notification data
that the publisher can support. (Note that for a specific that the publisher can support. (Note that for a specific
subscription, the publisher MAY allow only longer periods subscription, the publisher MAY allow only longer periods
or smaller updates depending on, e.g., actual load conditions.) or smaller updates depending on, e.g., actual load conditions.)
Capability values can be specified on system/publisher level, Capability values can be specified at the system/publisher
datastore level or for specific data nodes of a specific level, at the datastore level, or for specific data nodes of
datastore (and their contained sub-trees), as defined in the a specific datastore (and their contained subtrees), as defined
ietf-system-capabilities module. in the ietf-system-capabilities module.
If different data nodes covered by a single subscription If different data nodes covered by a single subscription
have different values for a specific capability, then using have different values for a specific capability, then using
values that are only acceptable for some of these data nodes, values that are only acceptable for some of these data nodes,
but not for others, may result in the rejection of the but not for others, may result in the rejection of the
subscription. subscription.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
are to be interpreted as described in BCP 14 (RFC 2119) are to be interpreted as described in BCP 14 (RFC 2119)
(RFC 8174) when, and only when, they appear in all (RFC 8174) when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
Copyright (c) 2021 IETF Trust and the persons identified as Copyright (c) 2022 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to without modification, is permitted pursuant to, and subject to
the license terms contained in, the Simplified BSD License set the license terms contained in, the Revised BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX This version of this YANG module is part of RFC 9196
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself (https://www.rfc-editor.org/info/rfc9196); see the RFC itself
for full legal notices."; for full legal notices.";
// RFC Ed.: replace XXXX with actual RFC number and remove this revision 2022-01-21 {
// note.
revision 2021-10-12 {
description description
"Initial version"; "Initial version";
reference reference
"RFC XXXX: YANG Modules describing Capabilities for Systems "RFC 9196: YANG Modules Describing Capabilities for Systems
and Datastore Update Notifications"; and Datastore Update Notifications";
} }
// RFC Ed.: replace XXXX with actual RFC number and remove this
// note.
grouping subscription-capabilities { grouping subscription-capabilities {
description description
"Capabilities related to YANG-Push subscriptions "Capabilities related to YANG-Push subscriptions
and notifications"; and notifications";
container subscription-capabilities { container subscription-capabilities {
description description
"Capabilities related to YANG-Push subscriptions "Capabilities related to YANG-Push subscriptions
and notifications"; and notifications";
typedef notification-support { typedef notification-support {
type bits { type bits {
bit config-changes { bit config-changes {
description description
"The publisher is capable of sending "The publisher is capable of sending
notifications for 'config true' nodes for the notifications for 'config true' nodes for the
relevant scope and subscription type."; relevant scope and subscription type.";
} }
bit state-changes { bit state-changes {
description description
"The publisher is capable of sending "The publisher is capable of sending
notifications for 'config false' nodes for the relevant notifications for 'config false' nodes for the
scope and subscription type."; relevant scope and subscription type.";
} }
} }
description description
"Type for defining whether 'on-change' or "Type for defining whether 'on-change' or
'periodic' notifications are supported for all data nodes, 'periodic' notifications are supported for all data nodes,
'config false' data nodes, 'config true' data nodes, or 'config false' data nodes, 'config true' data nodes, or
no data nodes. no data nodes.
If the bit config-changes or state-changes is set The bits config-changes or state-changes have no effect
for a datastore, or a set of nodes that does not contain when they are set for a datastore or for a set of nodes
nodes with the indicated config value, this has no that does not contain nodes with the indicated config
effect, as if no support was declared. E.g. indicating value. In those cases, the effect is the same as if no
support for state-changes for a candidate datastore has support was declared. One example of this is indicating
no effect."; support for state-changes for a candidate datastore that
has no effect.";
} }
leaf max-nodes-per-update { leaf max-nodes-per-update {
type uint32 { type uint32 {
range "1..max"; range "1..max";
} }
description description
"Maximum number of data nodes that can be sent "Maximum number of data nodes that can be sent
in an update. The publisher MAY support more data nodes, in an update. The publisher MAY support more data nodes
but SHOULD support at least this number. but SHOULD support at least this number.
May be used to avoid the 'update-too-big' error May be used to avoid the 'update-too-big' error
during subscription."; during subscription.";
reference reference
"RFC 8641: Subscription to YANG Notifications for Datastore "RFC 8641: Subscription to YANG Notifications for
Updates, the 'update-too-big' error/identity"; Datastore Updates, the 'update-too-big' error/identity";
} }
leaf periodic-notifications-supported { leaf periodic-notifications-supported {
type notification-support; type notification-support;
description description
"Specifies whether the publisher is capable of "Specifies whether the publisher is capable of
sending 'periodic' notifications for the selected sending 'periodic' notifications for the selected
data nodes including any subtrees that may exist data nodes, including any subtrees that may exist
below them."; below them.";
reference reference
"RFC 8641: Subscription to YANG Notifications for Datastore "RFC 8641: Subscription to YANG Notifications for
Updates, 'periodic' subscription concept"; Datastore Updates, 'periodic' subscription concept";
} }
choice update-period { choice update-period {
description description
"Supported update period value or values for "Supported update period value or values for
'periodic' subscriptions."; 'periodic' subscriptions.";
leaf minimum-update-period { leaf minimum-update-period {
type uint32; type uint32;
units "centiseconds"; units "centiseconds";
description description
"Indicates the minimal update period that is "Indicates the minimal update period that is
supported for a 'periodic' subscription. supported for a 'periodic' subscription.
A subscription request to the selected data nodes with A subscription request to the selected data nodes with
a smaller period than what this leaf specifies is a smaller period than what this leaf specifies is
likely to result in a 'period-unsupported' error."; likely to result in a 'period-unsupported' error.";
reference reference
"RFC 8641: Subscription to YANG Notifications for Datastore "RFC 8641: Subscription to YANG Notifications for
Updates, the period leaf in the ietf-yang-push YANG Datastore Updates, the period leaf in the ietf-yang-push
module"; YANG module";
} }
leaf-list supported-update-period { leaf-list supported-update-period {
type uint32; type uint32;
units "centiseconds"; units "centiseconds";
description description
"Supported update period values for a 'periodic' "Supported update period values for a 'periodic'
subscription. subscription.
A subscription request to the selected data nodes with a A subscription request to the selected data nodes with a
period not included in the leaf-list will result in a period not included in the leaf-list will result in a
'period-unsupported' error."; 'period-unsupported' error.";
reference reference
"RFC 8641: Subscription to YANG Notifications for Datastore "RFC 8641: Subscription to YANG Notifications for
Updates, the period leaf in the ietf-yang-push YANG Datastore Updates, the period leaf in the ietf-yang-push
module"; YANG module";
} }
} }
leaf on-change-supported { leaf on-change-supported {
if-feature "yp:on-change"; if-feature "yp:on-change";
type notification-support; type notification-support;
description description
"Specifies whether the publisher is capable of "Specifies whether the publisher is capable of
sending 'on-change' notifications for the selected sending 'on-change' notifications for the selected
data nodes and the subtree below them."; data nodes and the subtree below them.";
reference reference
"RFC 8641: Subscription to YANG Notifications for Datastore "RFC 8641: Subscription to YANG Notifications for Datastore
Updates, on-change concept"; Updates, on-change concept";
} }
leaf minimum-dampening-period { leaf minimum-dampening-period {
if-feature "yp:on-change"; if-feature "yp:on-change";
type uint32; type uint32;
units "centiseconds"; units "centiseconds";
description description
"The minimum dampening-period supported for 'on-change' "The minimum dampening period supported for 'on-change'
subscriptions for the selected data nodes. subscriptions for the selected data nodes.
If this value is present and greater than zero, If this value is present and greater than zero,
that implies dampening is mandatory."; that implies dampening is mandatory.";
reference reference
"RFC 8641: Subscription to YANG Notifications for "RFC 8641: Subscription to YANG Notifications for
Datastore Updates, the dampening-period leaf in the Datastore Updates, the dampening-period leaf in the
ietf-yang-push YANG module"; ietf-yang-push YANG module";
} }
leaf-list supported-excluded-change-type { leaf-list supported-excluded-change-type {
skipping to change at line 813 skipping to change at line 787
refine refine
"subscription-capabilities/supported-excluded-change-type" { "subscription-capabilities/supported-excluded-change-type" {
default "none"; default "none";
} }
} }
} }
augment "/sysc:system-capabilities/sysc:datastore-capabilities" augment "/sysc:system-capabilities/sysc:datastore-capabilities"
+ "/sysc:per-node-capabilities" { + "/sysc:per-node-capabilities" {
description description
"Add datastore and node level capabilities"; "Add datastore and node-level capabilities";
uses subscription-capabilities { uses subscription-capabilities {
refine refine
"subscription-capabilities/supported-excluded-change-type" { "subscription-capabilities/supported-excluded-change-type" {
default "none"; default "none";
} }
} }
} }
} }
]]></artwork> ]]></sourcecode>
</figure> <t>&lt;CODE ENDS&gt;</t>
<t>&lt;CODE ENDS></t>
</section> </section>
</section> </section>
<section anchor="security" numbered="true" toc="default">
<section anchor="security" title="Security Considerations"> <name>Security Considerations</name>
<t> <t>
The YANG modules specified in this document define a schema for data The YANG modules specified in this document define a schema for data
that is designed to be accessed via network management protocols such that is designed to be accessed via network management protocols such
as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/ > as NETCONF <xref target="RFC6241" format="default"/> or RESTCONF <xref target="RFC8040" format="default"/>
or as YANG instance data. or as YANG instance data.
The lowest NETCONF layer is the secure transport layer, and the The lowest NETCONF layer is the secure transport layer, and the
mandatory-to-implement secure transport is Secure Shell (SSH) mandatory-to-implement secure transport is Secure Shell (SSH)
<xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, an <xref target="RFC6242" format="default"/>. The lowest RESTCONF l
d ayer is HTTPS, and
the mandatory-to-implement secure transport is TLS <xref target= the mandatory-to-implement secure transport is TLS <xref target=
"RFC8446"/>. "RFC8446" format="default"/>.
</t> </t>
<t> <t>
The Network Configuration Access Control Model (NACM) [RFC8341] The Network Configuration Access Control Model (NACM) <xref target="RFC 8341"/>
provides the means to restrict access for particular NETCONF or provides the means to restrict access for particular NETCONF or
RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or
RESTCONF protocol operations and content. RESTCONF protocol operations and content.
</t> </t>
<t> <t>
This document outlines a framework for conveying system capability This document outlines a framework for conveying system capability
information that is inherently flexible and extensible. While t he full information that is inherently flexible and extensible. While t he full
set of use cases is not known now, they may range as wide as con veying set of use cases is not known now, they may range as wide as con veying
the minimum update period for periodic subscription updates and what the minimum update period for periodic subscription updates and what
protocols might be used for such notifications. Knowledge of th is type protocols might be used for such notifications. Knowledge of th is type
of value might, for example, allow an attacker to gain insight i nto how of value might, for example, allow an attacker to gain insight i nto how
long unauthorized configuration changes might be active prior to detection, long unauthorized configuration changes might be active prior to detection
and what communications channels might be disrupted to extend th e period and what communications channels might be disrupted to extend th e period
of non-detection. Documents adding additional capabilities via augmenting of non-detection. Documents adding additional capabilities via augmenting
this module are encouraged to document the security consideratio ns of the this module are encouraged to document the security consideratio ns of the
new YANG nodes, according to the guidance in BCP 216.
new YANG nodes, according to the guidance in BCP 216 <xref targe
t="RFC8407"/>.
</t> </t>
<t> All protocol-accessible data nodes in augmented modules are read-only <t> All protocol-accessible data nodes in augmented modules are read-only
and cannot be modified. The data in these modules is not security sen and cannot be modified. Access control may be configured to avoid exp
sitive. osing any read-only data that is defined by the augmenting module
Access control may be configured, to avoid exposing the read-only data. documentation as being security sensitive.
</t> </t>
<t>When that data is in file format, data should be protected against <t>When that data is in file format, the data should be protected against
modification or unauthorized access using normal file handling mechanism modification or unauthorized access using normal file-handling mechanisms.
s.
The data in file format also inherits all the security considerat ions of The data in file format also inherits all the security considerat ions of
<xref target="I-D.ietf-netmod-yang-instance-file-format"/> which <xref target="RFC9195"/>, which includes additional
has additional considerations about read protections and distinguishes between d
considerations about read protections; and distinguishes between ata at
data at
rest and in motion. rest and in motion.
</t> </t>
</section> </section>
<section anchor="iana" numbered="true" toc="default">
<section anchor="iana" title="IANA Considerations"> <name>IANA Considerations</name>
<section title="The IETF XML Registry"> <section numbered="true" toc="default">
<t>This document registers two URIs in the IETF XML <name>The IETF XML Registry</name>
registry <xref target="RFC3688"/>. Following the format in <t>This document registers the following URIs in the "IETF XML
<xref target="RFC3688"/>, the following registrations are Registry" <xref target="RFC3688" format="default"/>:</t>
requested:</t> <dl spacing="compact">
<t><figure><artwork> <dt>URI:</dt><dd> urn:ietf:params:xml:ns:yang:ietf-system-capabilities</dd>
URI: urn:ietf:params:xml:ns:yang:ietf-system-capabilities <dt>Registrant Contact:</dt><dd>The IESG.</dd>
Registrant Contact: The NETCONF WG of the IETF. <dt>XML:</dt><dd> N/A, the requested URI is an XML namespace.</dd>
XML: N/A, the requested URI is an XML namespace. </dl>
</artwork></figure></t> <dl spacing="compact">
<t><figure><artwork> <dt>URI:</dt><dd> urn:ietf:params:xml:ns:yang:ietf-notification-capabilities<
URI: urn:ietf:params:xml:ns:yang:ietf-notification-capabilities /dd>
Registrant Contact: The NETCONF WG of the IETF. <dt>Registrant Contact:</dt><dd>The IESG.</dd>
XML: N/A, the requested URI is an XML namespace. <dt>XML:</dt><dd> N/A, the requested URI is an XML namespace.</dd>
</artwork></figure></t> </dl>
</section> </section>
<section title="The YANG Module Names Registry"> <section numbered="true" toc="default">
<t>This document registers two YANG modules in the <name>The YANG Module Names Registry</name>
YANG Module Names registry <xref target="RFC6020"/>. <t>This document registers the following YANG modules in the
Following the format in <xref target="RFC6020"/>, the "YANG Module Names" registry <xref target="RFC6020" format="default"/>
following registrations are requested:</t> :</t>
<t><figure><artwork> <dl spacing="compact">
name: ietf-system-capabilities <dt>name:</dt><dd> ietf-system-capabilities</dd>
namespace: urn:ietf:params:xml:ns:yang:ietf-system-capabilities <dt>namespace:</dt><dd> urn:ietf:params:xml:ns:yang:ietf-system-capabilities
prefix: sysc </dd>
reference: RFC XXXX <dt>prefix:</dt><dd> sysc</dd>
</artwork></figure></t> <dt>reference:</dt><dd> RFC 9196</dd>
<t><figure><artwork> </dl>
name: ietf-notification-capabilities <dl spacing="compact">
namespace: <dt>name:</dt><dd> ietf-notification-capabilities</dd>
urn:ietf:params:xml:ns:yang:ietf-notification-capabilities <dt>namespace:</dt><dd>
prefix: notc urn:ietf:params:xml:ns:yang:ietf-notification-capabilities</dd>
reference: RFC XXXX <dt>prefix:</dt><dd> notc</dd>
</artwork></figure></t> <dt>reference:</dt><dd> RFC 9196</dd>
</dl>
</section> </section>
</section> </section>
<section title="Acknowledgments">
<t>For their valuable comments, discussions, and feedback, we wish to
acknowledge Andy Bierman, Juergen Schoenwaelder, Rob Wilton, Kent Watsen
,
Eric Voit, Joe Clarke, Martin Bjorklund, Ladislav Lhotka, Qin Wu,
Mahesh Jethanandani, Ran Tao, Reshad Rahman and other members of the Net
mod WG.</t>
</section>
</middle> </middle>
<back> <back>
<references title="Normative References"> <references>
<?rfc include='reference.I-D.ietf-netmod-yang-instance-file-format'?> <name>References</name>
<?rfc include='reference.RFC.2119'?> <references>
<?rfc include='reference.RFC.3688'?> <name>Normative References</name>
<?rfc include='reference.RFC.6020'?>
<?rfc include='reference.RFC.8174'?> <reference anchor="RFC9195" target="https://www.rfc-editor.org/info/rfc9195">
<?rfc include="reference.RFC.8341"?> <front>
<?rfc include="reference.RFC.8342"?> <title>A File Format for YANG Instance Data</title>
<?rfc include="reference.RFC.8525"?> <author initials='B' surname='Lengyel' fullname='Balazs Lengyel'>
<?rfc include='reference.RFC.8639'?> <organization />
<?rfc include='reference.RFC.8641'?> </author>
</references> <author initials='B' surname='Claise' fullname='Benoit Claise'>
<references title="Informative References"> <organization />
<?rfc include='reference.RFC.6241'?> </author>
<?rfc include='reference.RFC.6242'?> <date year='2022' month='February' />
<?rfc include="reference.RFC.8040"?> </front>
<?rfc include="reference.RFC.8340"?> <seriesInfo name="RFC" value="9195"/>
<?rfc include="reference.RFC.8446"?> <seriesInfo name="DOI" value="10.17487/RFC9195"/>
<?rfc include="reference.RFC.8792"?> </reference>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.2119.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.3688.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.6020.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8174.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8341.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8342.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8525.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8639.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8641.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.6241.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.6242.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8040.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8446.xml"/>
</references>
<references>
<name>Informative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8407.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8340.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8792.xml"/>
</references>
</references> </references>
<?rfc needLines="100"?> <section numbered="true" toc="default">
<section title="Instance data example #1"> <name>Instance Data Example #1</name>
<t>The following examples use artwork folding <t>The following examples use artwork folding
<xref target="RFC8792"/> for better formatting.</t> <xref target="RFC8792" format="default"/> for better formatting.</t>
<t> <t>
The following instance data example describes the notification The following instance data example describes the notification
capabilities of a hypothetical "acme-router". The router implements capabilities of a hypothetical "acme-router". The router implements
the running and operational datastores. the running and operational datastores.
Every change can be reported "on-change" from the running datastore, Every change can be reported "on-change" from the running datastore,
but only "config false" nodes and some "config false" data from the but only "config false" nodes and some "config false" data can be report ed on-change from the
operational datastore. operational datastore.
Interface statistics are not reported "on-change", only two important co unters. Interface statistics are not reported "on-change"; only two important co unters are.
Datastore subscription capabilities are not reported "on-change", as the y Datastore subscription capabilities are not reported "on-change", as the y
never change on the acme-router during run time. never change on the acme-router during runtime.
<figure align="center" anchor="acme-router-notification-capabilities" </t>
title="Notification Capabilities with data node specific settings"> <figure anchor="acme-router-notification-capabilities">
<artwork align="left" name="acme-router-notification-capabilities.xml" <name>Notification Capabilities with Settings Specific to the Data Node<
><![CDATA[ /name>
<sourcecode name="acme-router-notification-capabilities.xml" type="xml">
<![CDATA[
========== NOTE: '\' line wrapping per RFC 8792) =========== ========== NOTE: '\' line wrapping per RFC 8792) ===========
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<instance-data-set xmlns=\ <instance-data-set xmlns=\
"urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data">
<name>acme-router-notification-capabilities</name> <name>acme-router-notification-capabilities</name>
<content-schema> <content-schema>
<module>ietf-system-capabilities@2021-10-12</module> <module>ietf-system-capabilities@2022-01-21</module>
<module>ietf-notification-capabilities@2021-10-12</module> <module>ietf-notification-capabilities@2022-01-21</module>
</content-schema> </content-schema>
<description>Defines the notification capabilities of an acme-router. <description>Defines the notification capabilities of an
The router only has running and operational datastores. acme-router. The router only has running and operational
Every change can be reported on-change from the running datastores. Every change can be reported on-change from the
datastore, but only "config false" nodes and some "config running datastore, but only "config false" nodes and some
false" data from the operational datastore. Statistics are "config false" data can be reported on-change from the
not reported on-change except for two important counters, operational datastore. Statistics
are not reported on-change except for two important counters,
where a small dampening period is mandated. where a small dampening period is mandated.
</description> </description>
<content-data> <content-data>
<system-capabilities \ <system-capabilities \
xmlns="urn:ietf:params:xml:ns:yang:ietf-system-capabilities" \ xmlns="urn:ietf:params:xml:ns:yang:ietf-system-capabilities" \
xmlns:notc=\ xmlns:notc=\
"urn:ietf:params:xml:ns:yang:ietf-notification-capabilities" \ "urn:ietf:params:xml:ns:yang:ietf-notification-capabilities" \
xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores"> xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
<notc:subscription-capabilities> <notc:subscription-capabilities>
<notc:minimum-update-period>500</notc:minimum-update-period> <notc:minimum-update-period>500</notc:minimum-update-period>
<notc:max-nodes-per-update>2000</notc:max-nodes-per-update> <notc:max-nodes-per-update>2000</notc:max-nodes-per-update>
<notc:minimum-dampening-period>100</notc:minimum-dampening-period> <notc:minimum-dampening-period>\
100\
</notc:minimum-dampening-period>
<notc:periodic-notifications-supported>\ <notc:periodic-notifications-supported>\
config-changes state-changes\ config-changes state-changes\
</notc:periodic-notifications-supported> </notc:periodic-notifications-supported>
<notc:on-change-supported>\ <notc:on-change-supported>\
config-changes state-changes\ config-changes state-changes\
</notc:on-change-supported> </notc:on-change-supported>
<notc:supported-excluded-change-type>\ <notc:supported-excluded-change-type>\
all\ all\
</notc:supported-excluded-change-type> </notc:supported-excluded-change-type>
</notc:subscription-capabilities> </notc:subscription-capabilities>
skipping to change at line 1016 skipping to change at line 1010
<notc:subscription-capabilities> <notc:subscription-capabilities>
<notc:minimum-dampening-period>10 <notc:minimum-dampening-period>10
</notc:minimum-dampening-period> </notc:minimum-dampening-period>
<notc:on-change-supported>\ <notc:on-change-supported>\
state-changes\ state-changes\
</notc:on-change-supported> </notc:on-change-supported>
</notc:subscription-capabilities> </notc:subscription-capabilities>
</per-node-capabilities> </per-node-capabilities>
<per-node-capabilities> <per-node-capabilities>
<node-selector>\ <node-selector>\
/if:interfaces/if:interface/if:statistics/if:out-octets\ /if:interfaces/if:interface/if:statistics/if:out-octets\
</node-selector> </node-selector>
<notc:subscription-capabilities> <notc:subscription-capabilities>
<notc:minimum-dampening-period>10 <notc:minimum-dampening-period>10
</notc:minimum-dampening-period> </notc:minimum-dampening-period>
<notc:on-change-supported>\ <notc:on-change-supported>\
state-changes\ state-changes\
</notc:on-change-supported> </notc:on-change-supported>
</notc:subscription-capabilities> </notc:subscription-capabilities>
</per-node-capabilities> </per-node-capabilities>
<per-node-capabilities> <per-node-capabilities>
skipping to change at line 1038 skipping to change at line 1032
/if:interfaces/if:interface/if:statistics\ /if:interfaces/if:interface/if:statistics\
</node-selector> </node-selector>
<notc:subscription-capabilities> <notc:subscription-capabilities>
<notc:on-change-supported/> <notc:on-change-supported/>
</notc:subscription-capabilities> </notc:subscription-capabilities>
</per-node-capabilities> </per-node-capabilities>
</datastore-capabilities> </datastore-capabilities>
</system-capabilities> </system-capabilities>
</content-data> </content-data>
</instance-data-set> </instance-data-set>
]]></artwork> ]]></sourcecode>
</figure> </figure>
</t>
</section> </section>
<section numbered="true" toc="default">
<section title="Instance data example #2"> <name>Instance Data Example #2</name>
<t>The following examples use artwork folding <t>The following examples use artwork folding
<xref target="RFC8792"/> for better formatting.</t> <xref target="RFC8792" format="default"/> for better formatting.</t>
<t> <t>
The following instance data example describes the notification The following instance data example describes the notification
capabilities of a hypothetical "acme-switch". The switch implements capabilities of a hypothetical "acme-switch". The switch implements
the running, candidate and operational the running, candidate, and operational
datastores. Every change can be reported "on-change" from the datastores.
running datastore, nothing from the candidate datastore and all
"config false" data from the operational datastore. Every change can be reported "on-change" from the
"periodic" subscriptions are supported for running and running datastore, nothing can be reported on-change from the candidate
operational, but not for candidate datastores. datastore, and all
<figure align="center" anchor="acme-switch-notification-capabilities" ti "config false" data can be reported on-change from the operational data
tle="Notification Capabilities with datastore level settings"> store.
<artwork align="left" name="acme-switch-notification-capabilities.xml" "Periodic" subscriptions are supported for running and
><![CDATA[ operational but not for candidate datastores.
</t>
<figure anchor="acme-switch-notification-capabilities">
<name>Notification Capabilities with Datastore-Level Settings</name>
<sourcecode name="acme-switch-notification-capabilities.xml" type="xml">
<![CDATA[
========== NOTE: '\' line wrapping per RFC 8792) =========== ========== NOTE: '\' line wrapping per RFC 8792) ===========
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<instance-data-set xmlns=\ <instance-data-set xmlns=\
"urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data">
<name>acme-switch-notification-capabilities</name> <name>acme-switch-notification-capabilities</name>
<content-schema> <content-schema>
<module>ietf-system-capabilities@2021-10-12</module> <module>ietf-system-capabilities@2022-01-21</module>
<module>ietf-notification-capabilities@2021-10-12</module> <module>ietf-notification-capabilities@2022-01-21</module>
</content-schema> </content-schema>
<description>Notification capabilities of acme-switch. <description>Notification capabilities of acme-switch.
Acme-switch implements the running, candidate and operational Acme-switch implements the running, candidate, and operational
datastores. Every change can be reported on-change from the datastores. Every change can be reported on-change from the
running datastore, nothing from the candidate datastore and running datastore, nothing from the candidate datastore and
all "config false" data from the operational datastore. Periodic all "config false" data from the operational datastore. Periodic
subscriptions are supported for running and operational, but not subscriptions are supported for running and operational, but not
for candidate datastore. for candidate datastore.
</description> </description>
<content-data> <content-data>
<system-capabilities \ <system-capabilities \
xmlns="urn:ietf:params:xml:ns:yang:ietf-system-capabilities" \ xmlns="urn:ietf:params:xml:ns:yang:ietf-system-capabilities" \
xmlns:notc=\ xmlns:notc=\
"urn:ietf:params:xml:ns:yang:ietf-notification-capabilities" \ "urn:ietf:params:xml:ns:yang:ietf-notification-capabilities" \
xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores"> xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
<notc:subscription-capabilities> <notc:subscription-capabilities>
<notc:minimum-update-period>500</notc:minimum-update-period> <notc:minimum-update-period>500</notc:minimum-update-period>
<notc:max-nodes-per-update>2000</notc:max-nodes-per-update> <notc:max-nodes-per-update>2000</notc:max-nodes-per-update>
<notc:minimum-dampening-period>100</notc:minimum-dampening-period> <notc:minimum-dampening-period>\
100\
</notc:minimum-dampening-period>
<notc:periodic-notifications-supported>\ <notc:periodic-notifications-supported>\
config-changes state-changes\ config-changes state-changes\
</notc:periodic-notifications-supported> </notc:periodic-notifications-supported>
</notc:subscription-capabilities> </notc:subscription-capabilities>
<datastore-capabilities> <datastore-capabilities>
<datastore>ds:operational</datastore> <datastore>ds:operational</datastore>
<per-node-capabilities> <per-node-capabilities>
<node-selector>/</node-selector> <node-selector>/</node-selector>
<notc:subscription-capabilities> <notc:subscription-capabilities>
<notc:on-change-supported>\ <notc:on-change-supported>\
skipping to change at line 1124 skipping to change at line 1124
<notc:subscription-capabilities> <notc:subscription-capabilities>
<notc:on-change-supported>\ <notc:on-change-supported>\
config-changes\ config-changes\
</notc:on-change-supported> </notc:on-change-supported>
</notc:subscription-capabilities> </notc:subscription-capabilities>
</per-node-capabilities> </per-node-capabilities>
</datastore-capabilities> </datastore-capabilities>
</system-capabilities> </system-capabilities>
</content-data> </content-data>
</instance-data-set> </instance-data-set>
]]></artwork> ]]></sourcecode>
</figure> </figure>
</t>
</section> </section>
<section numbered="false" toc="default">
<section title="Changes between revisions"> <name>Acknowledgments</name>
<t> Note to RFC Editor (To be removed by RFC Editor)</t> <t>For their valuable comments, discussions, and feedback, we wish to
<t>v20 - v21 acknowledge <contact fullname="Andy Bierman"/>, <contact fullname="Juerg
<list style="symbols"> en Schoenwaelder"/>, <contact fullname="Rob Wilton"/>, <contact fullname="Kent W
<t>IESG review</t> atsen"/>,
</list> <contact fullname="Eric Voit"/>, <contact fullname="Joe Clarke"/>, <cont
</t> act fullname="Martin Bjorklund"/>, <contact fullname="Ladislav Lhotka"/>, <conta
<t>v19 - v20 ct fullname="Qin Wu"/>,
<list style="symbols"> <contact fullname="Mahesh Jethanandani"/>, <contact fullname="Ran Tao"/>
<t>IESG review</t> , <contact fullname="Reshad Rahman"/>, and other members of the Netmod Working G
</list> roup.</t>
</t>
<t>v18 - v19
<list style="symbols">
<t>IESG review</t>
</list>
</t>
<t>v17 - v18
<list style="symbols">
<t>IESG review</t>
</list>
</t>
<t>v16 - v17
<list style="symbols">
<t>AD review comments addressed</t>
</list>
</t>
<t>v15 - v16
<list style="symbols">
<t>Two editorial comments from document shepherd</t>
</list>
</t>
<t>v14 - v15
<list style="symbols">
<t>Address the last comments from document shepherd</t>
</list>
</t>
<t>v13 - v14
<list style="symbols">
<t>Updated according to sheperds review</t>
<t>Added to import, which imported modules need to be implemented.</t>
<t>Added notes to the RFC editor</t>
<t>Re-arrange the sections, for a better reading flow</t>
<t>Many editorial changes</t>
<t>Replace YANG module prefix</t>
</list>
</t>
<t>v12 - v13
<list style="symbols">
<t>Rearranged order of notification capability leafs into 3 groups:
generic, specific to periodic subscriptions, specific to on-change.</t
>
<t>Introduced artwork folding in the examples</t>
<t>Updated to follow draft-ietf-netmod-yang-instance-file-format-10</t
>
<t>Various editing changes</t>
</list>
</t>
<t>v11 - v12
<list style="symbols">
<t>Updated max-nodes-per-update description</t>
<t>Reformatted YANG models with pyang -f yang --keep-comments --yang-l
ine-length 69</t>
</list>
</t>
<t>v10 - v11
<list style="symbols">
<t>Updated examples</t>
<t>Updated typedef notification-support</t>
</list>
</t>
<t>v09 - v10
<list style="symbols">
<t>Removed description text from imports about the need for
implementing the imported module.</t>
<t>Changed notification-support to bits with shorter names</t>
<t>Assigned enum values to supported-excluded-change-type</t>
<t>Made node-selector a choice to allow for future alternative
selection methods.</t>
<t>Changed precedence of per-node-capabilities entries.
Precedence is now according to the position of entries in
the list.</t>
</list>
</t>
<t>v08 - v09
<list style="symbols">
<t>Split the YANG module into two: ietf-system-capabilities
and ietf-notification-capabilities. Restructured/updated the draft
accordingly.</t>
</list>
</t>
<t>v07 - v08
<list style="symbols">
<t>Prepared the YANG model to include other non-YANG-Push
related capabilities.</t>
<t>Renamed the top level container to system-capabilities</t>
<t>Added a container subscription-capabilities to the grouping
subscription-capabilities to contain all subscription
related capabilities</t>
<t>Updated examples according to
draft-ietf-netmod-yang-instance-file-format-06.</t>
</list>
</t>
<t>v06 - v07
<list style="symbols">
<t>Updated examples according to
draft-ietf-netmod-yang-instance-file-format-05.</t>
</list>
</t>
<t>v05 - v06
<list style="symbols">
<t>Providing the capability data is only a "SHOULD" recommendation.
Some reviewers wanted MUST some wanted much less.</t>
<t>The YANG module import statements now indicate the imported modules
that must be implemented not just available as import as requested by
the YangDoctors review.</t>
</list>
</t>
<t>v04 - v05
<list style="symbols">
<t>Added new capabilities periodic-notifications-supported and
supported-excluded-change-type.</t>
<t>Restructured YANG module to make the node-selector's usage similar
to how NACM uses it: "/" means the whole datastore.</t>
<t>Small corrections, spelling, rewording</t>
<t>Replaced the term server with the term publisher except in cases
where we speak about datastores and functionality based on
get, getconfig operations. In this latter case it is really the
server functionality that is discussed.</t>
</list>
</t>
<t>v03 - v04
<list style="symbols">
<t>Clarified recommended support for on-change notifications about
the datastore-subscription-capabilities.</t>
</list>
</t>
<t>v02 - v03
<list style="symbols">
<t>Allow throughput related capabilities to be defined on top,
datastore or data node level. Described that specific capability
values always override generic ones.</t>
<t>Indicate that non-NMDA servers can also use this model.</t>
<t>Updated according to draft-ietf-netmod-yang-instance-file-format-04
</t>
</list>
</t>
<t>v01 - v02
<list style="symbols">
<t>Added instance data examples</t>
<t>On-change capability can be defined per datastore</t>
<t>Added "if-feature yp:on-change" where relevant</t>
<t>Unified units used</t>
</list>
</t>
<t>v00 - v01
<list style="symbols">
<t>Add more capabilities: minimum period, supported period
max-number of objects, min dampening period,
dampening supported</t>
</list>
</t>
</section> </section>
</back> </back>
</rfc> </rfc>
<!-- Local Variables: -->
<!-- fill-column:72 -->
<!-- End: -->
 End of changes. 155 change blocks. 
632 lines changed or deleted 515 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/