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 " "> | |||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | <!ENTITY zwsp "​"> | |||
<?rfc toc="yes"?> | <!ENTITY nbhy "‑"> | |||
<?rfc tocompact="yes"?> | <!ENTITY wj "⁠"> | |||
<?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 & 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 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><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><CODE ENDS></t> | |||
<t><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/ |