draft-ietf-netconf-notification-capabilities-08.txt   draft-ietf-netconf-notification-capabilities-09.txt 
NETCONF B. Lengyel NETCONF B. Lengyel
Internet-Draft Ericsson Internet-Draft Ericsson
Intended status: Standards Track A. Clemm Intended status: Standards Track A. Clemm
Expires: June 11, 2020 Futurewei Expires: July 10, 2020 Futurewei
B. Claise B. Claise
Cisco Systems, Inc. Cisco Systems, Inc.
December 9, 2019 January 7, 2020
YANG-Push Notification Capabilities Generic YANG-related System Capabilities and YANG-Push Notification
draft-ietf-netconf-notification-capabilities-08 Capabilities
draft-ietf-netconf-notification-capabilities-09
Abstract Abstract
This document proposes a YANG module that allows a publisher to This document proposes two YANG modules. The module ietf-system-
capabilities provides a structure that can be used to specify any
YANG related system capability.
The module ietf-notification-capabilities allows a publisher to
specify capabilities related to "Subscription to YANG Datastores" specify capabilities related to "Subscription to YANG Datastores"
(YANG-Push). It proposes to use YANG Instance Data to document this (YANG-Push). It proposes to use YANG Instance Data to document this
information and make it already available at implementation-time, but information and make it already available at implementation-time, but
also allow it to be reported at run-time. also allow it to be reported at run-time.
The YANG module is also prepared to contain other system
capabilities, for future augmentations.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on June 11, 2020. This Internet-Draft will expire on July 10, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Notification Capability Model . . . . . . . . . . . . . . . . 5 2.1. YANG-Push Notification Capabilities . . . . . . . . . . . 3
3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 6 3. Providing System Capability Information . . . . . . . . . . . 5
3.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 7 4. System Capabilities Model . . . . . . . . . . . . . . . . . . 6
3.3. Other System Capabilities . . . . . . . . . . . . . . . . 13 4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 6
4. Security Considerations . . . . . . . . . . . . . . . . . . . 13 4.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 7
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 5. Notification Capabilities Model . . . . . . . . . . . . . . . 10
5.1. The IETF XML Registry . . . . . . . . . . . . . . . . . . 13 5.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 10
5.2. The YANG Module Names Registry . . . . . . . . . . . . . 14 5.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 11
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 6. Security Considerations . . . . . . . . . . . . . . . . . . . 16
6.1. Normative References . . . . . . . . . . . . . . . . . . 14 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16
6.2. Informative References . . . . . . . . . . . . . . . . . 15 7.1. The IETF XML Registry . . . . . . . . . . . . . . . . . . 16
Appendix A. Instance data examples . . . . . . . . . . . . . . . 15 7.2. The YANG Module Names Registry . . . . . . . . . . . . . 17
Appendix B. Changes between revisions . . . . . . . . . . . . . 19 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 17
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 20 8.1. Normative References . . . . . . . . . . . . . . . . . . 17
8.2. Informative References . . . . . . . . . . . . . . . . . 18
Appendix A. Instance data examples . . . . . . . . . . . . . . . 18
Appendix B. Changes between revisions . . . . . . . . . . . . . 22
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24
1. Terminology 1. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
The terms YANG-Push, On-change subscription and Periodic subscription The terms YANG-Push, On-change subscription and Periodic subscription
skipping to change at page 2, line 45 skipping to change at page 3, line 4
14 [RFC2119] [RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
The terms YANG-Push, On-change subscription and Periodic subscription The terms YANG-Push, On-change subscription and Periodic subscription
are used as defined in [RFC8641] are used as defined in [RFC8641]
The terms Subscriber, Publisher and Receiver are used as defined in The terms Subscriber, Publisher and Receiver are used as defined in
[RFC8639] [RFC8639]
The term Server is used as defined in [RFC8342] The term Server is used as defined in [RFC8342]
On-change Notification Capability: The capability of the publisher to On-change Notification Capability: The capability of the publisher to
send on-change notifications for a specific datastore or a specific send on-change notifications for a specific datastore or a specific
data node. data node.
Implementation-time information: Information about the publisher's Implementation-time information: Information about the publisher's or
behavior that is made available during the implementation of the server's behavior that is made available during the implementation of
publisher, available from a source other then a running server the publisher/server, available from a source other then a running
implementing the publisher. server.
Run-time information: Information about the publisher's behavior that Run-time information: Information about the publisher's or server's
is available from the running server (implementing the publisher) via behavior that is available from the running server via management
management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040]. protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040].
2. Introduction 2. Introduction
As defined in [RFC8641] a publisher may allow subscribers to Systems implementing a server and/or a publisher often have
subscribe to updates from a datastore and subsequently push such capabilities that are not defined by the YANG model itself. There is
update notifications to the receiver. Notifications may be sent a need to publish this capability information as it part of the
periodically or on-change (more or less immediately after each contract between the server and client. Examples include: maximum
size of data that can be stored or transferred, information about
counters (whether a node supports on-change telemetry), etc. Such
capabilities are often dependent on a vendor's implementation or the
available resources at deployment. Many such capabilities are
specific to either the complete system, individual YANG datastores or
specific parts of the YANG schema, or even to individual data nodes.
It is a goal of this document to provide a common way of representing
such capabilities in a format that is:
o vendor independent
o machine readable
o available in identical format both in implementation-time and run-
time
2.1. YANG-Push Notification Capabilities
A specific case where we need to specify capabilities is the YANG-
Push functionality. As defined in [RFC8641] a publisher may allow
subscribers to subscribe to updates from a datastore and subsequently
push such update notifications to the receiver. Notifications may be
sent periodically or on-change (more or less immediately after each
change). change).
A publisher supporting YANG-Push has a number of capabilities defined A publisher supporting YANG-Push has a number of capabilities defined
in [RFC8641] that are often determined during the implementation of in [RFC8641] that are often determined during the implementation of
the publisher. These include: the publisher. These include:
o Supported (reporting) periods for periodic subscriptions o Supported (reporting) periods for periodic subscriptions
o Maximum number of objects that can be sent in an update o Maximum number of objects that can be sent in an update
o The set of datastores or data nodes for which periodic o The set of datastores or data nodes for which periodic
notification is supported notification is supported
If the optional on-change feature is supported, additionally: Additional capabilities if the optional on-change feature is
supported include:
o Supported dampening periods for on-change subscriptions o Supported dampening periods for on-change subscriptions
o The set of datastores or data nodes for which on-change o The set of datastores or data nodes for which on-change
notification is supported notification is supported
Publishers have limitations in how many update notifications and how Publishers have limitations in how many update notifications and how
many datastore node updates they can send out in a certain time- many datastore node updates they can send out in a certain time-
period. period.
Publishers might not support periodic subscriptions to all Publishers might not support periodic subscriptions to all
datastores. datastores.
In some cases, a publisher supporting on-change notifications will In some cases, a publisher supporting on-change notifications will
not be able to push updates for some object types on-change. Reasons not be able to push updates for some object types on-change. Reasons
for this might be that the value of the datastore node changes for this might be that the value of the datastore node changes
frequently (e.g. in-octets counter), that small object changes are frequently (e.g., in-octets counter), that small object changes are
frequent and irrelevant to the receiver (e.g., a temperature gauge frequent and irrelevant to the receiver (e.g., a temperature gauge
changing 0.1 degrees within a predetermined and acceptable range), or changing 0.1 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 those cases, it will be important for a particular object. In those cases, it will be important for
subscriber applications to have a way to identify which objects on- subscriber applications to have a way to identify which objects on-
change notifications are supported and for which ones not. change notifications are supported and for which ones not.
Faced with the reality that support for on-change notification does Faced with the reality that support for on-change notification does
not mean that such notifications will be sent for any specific data not mean that such notifications will be sent for any specific data
node, subscriber/management applications can not rely on the on- node, subscriber/management applications can not rely on the on-
change functionality unless the subscriber has some means to identify change functionality unless the subscriber has some means to identify
which objects on-change notifications are supported. YANG models are which objects on-change notifications are supported. YANG models are
meant to be used as an interface contract. Without identification of meant to be used as an interface contract. Without identification of
the data nodes actually supporting on-change, this contract would be the data nodes actually supporting on-change, this contract would be
incomplete. incomplete.
This document proposes a YANG module that allows a subscriber to Clients of a server, subscribers to a publisher need a method to
discover YANG-Push related capabilities both at implementation-time gather capability information.
and run-time.
Implementation-time information is needed by Network Management Implementation-time information is needed by Network Management
System (NMS) implementers. A NMS implementation that wants to System (NMS) implementers. A NMS implementation that wants to
support notifications, needs the information about on-change support notifications, needs the information about on-change
notification capability. If the information is not documented in a notification capability. If the information is not documented in a
way available to the NMS designer, but only as instance data from the way available to the NMS designer, but only as instance data from the
network node once it is deployed, the NMS implementation will be network node once it is deployed, the NMS implementation will be
delayed, because it has to wait for the network node to be ready. In delayed, because it has to wait for the network node to be ready. In
addition, the assumption that all NMS implementers will have a addition, the assumption that all NMS implementers will have a
correctly configured network node available to retrieve data from is correctly configured network node available to retrieve data from is
skipping to change at page 4, line 47 skipping to change at page 5, line 28
When introducing a network node type into their network, operators When introducing a network node type into their network, operators
often need to integrate the node type into their own management often need to integrate the node type into their own management
system. The NMS may have management functions that depend on on- system. The NMS may have management functions that depend on on-
change notifications. The network operator needs to plan his change notifications. The network operator needs to plan his
management practices and NMS implementation before he even decides to management practices and NMS implementation before he even decides to
buy the specific network node type. Moreover the decision to buy the buy the specific network node type. Moreover the decision to buy the
node type sometimes depends on these management possibilities. node type sometimes depends on these management possibilities.
Run-time information is needed: Run-time information is needed:
o for any "purely model driven" application, e.g. a NETCONF-browser. o for any "purely model driven" application, e.g., a NETCONF-
Such applications depend on reading models, capabilities in run- browser. Such applications depend on reading models and
time to support all the publisher's available functionality. capabilities in run-time to support all the publisher's available
functionality.
o in case the capability might change during run-time e.g. due to o in case the capability might change during run-time e.g., due to
licensing, HW constraints etc. licensing, HW constraints etc.
o to check that capability information provided early, already in o to check that capability information provided early, already in
implementation-time is indeed what the publisher implements (is implementation-time is indeed what the publisher implements (is
the supplied documentation correct?) the supplied documentation correct?)
The proposed YANG module is also intended as a base model to be 3. Providing System Capability Information
augmented by other YANG modules defining system-capabilities not
related to YANG-Push. Other capability defining YANG modules MAY
augment the data nodes specifying these capabilites into this model.
3. Notification Capability Model
It is a goal to provide YANG-Push notification capability information Capability information is represented by instance-data based on one
in a format that is: or more "capability defining YANG modules". This allows a user to
discover capabilities both at implementation-time and run-time.
o vendor independent o For the implementation-time use-case: Capabilities SHOULD be
provided by the implementer as YANG instance data files complying
to [I-D.ietf-netmod-yang-instance-file-format]. The file SHALL be
available already in implementation-time retrievable in a way that
does not depend on a live network node. E.g., download from
product website.
o machine readable o For the run-time use-case: Capabilities SHOULD be available via
NETCONF [RFC6241] or RESTCONF [RFC8040] from the live server
(implementing the publisher) during run-time. Implementations
which support changing these capabilities at run-time SHOULD
support on-change notifications about the system-capabilities
container.
o identical for implementation-time and run-time The module ietf-system-capabilities is defined to provide a structure
that can be used to specify any YANG related system capability.
The YANG module ietf-notification-capabilities is defined to provide The module ietf-notification-capabilities is defined to allow a
the information. It contains: publisher to specify capabilities related to "Subscription to YANG
Datastores" (YANG-Push) augmenting ietf-system-capabilities.
o a set of capabilities related to the throughput of notification 4. System Capabilities Model
data the publisher can send out.
o specification of which data nodes support on-change notifications. The module ietf-system-capabilities is defined to provide a structure
that can be used to specify any YANG related system capability.
Capability values can be specified on system/publisher level, Capability values can be specified on system/publisher level,
datastore level or on specific data nodes (and their contained sub- datastore level or for specific data nodes (and their contained sub-
tree) of a specific datastore. Capability values on a smaller, more tree) of a specific datastore. Capability values on a smaller, more
specific part of the publisher's data always override more generic specific part of the system's data always override more generic
values. values.
This module itself does not contain any capabilities. It SHOULD be
used by other modules to augment-in specific capability information.
Every set of such capabilities SHOULD be wrapped in a container under
the augment statement to cleanly separate different groups of
capabilities. These "wrapper containers" SHALL be augmented in at
/sysc:system-capabilities and /sysc:system-capabilities/
sysc:datastore-capabilities/sysc:per-node-capabilities.
Note: The solution is usable for both NMDA and non-NMDA systems. For Note: The solution is usable for both NMDA and non-NMDA systems. For
non-NMDA servers/publishers the config=false data is considered as if non-NMDA servers/publishers config=false data is considered as if it
it was part of the running datastore. was part of the running datastore.
The information SHOULD be provided in two ways both following the 4.1. Tree Diagram
ietf-notification-capabilities module:
o For the implementation-time use-case: It SHOULD be provided by the The following tree diagram [RFC8340] provides an overview of the data
implementer as YANG instance data file complying to model.
[I-D.ietf-netmod-yang-instance-file-format]. The file SHALL be
available already in implementation-time retrievable in a way that
does not depend on a live network node. E.g. download from
product website.
o For the run-time use-case: It SHOULD be available via NETCONF module: ietf-system-capabilities
[RFC6241] or RESTCONF [RFC8040] from the live server (implementing +--ro system-capabilities
the publisher) during run-time. Implementations which support +--ro datastore-capabilities* [datastore]
changing these capabilities at run-time SHOULD support on-change +--ro datastore -> /yanglib:yang-library/datastore/name
notifications about the system-capabilities container. +--ro per-node-capabilities* [node-selector]
+--ro node-selector nacm:node-instance-identifier
3.1. Tree Diagram 4.2. YANG Module
<CODE BEGINS> file "ietf-system-capabilities@2020-01-02.yang"
module ietf-system-capabilities {
yang-version 1.1;
namespace
"urn:ietf:params:xml:ns:yang:ietf-system-capabilities";
prefix sysc;
import ietf-netconf-acm {
prefix nacm;
description
"The module ietf-netconf-acm is OPTIONAL to implement.";
}
import ietf-yang-library {
prefix yanglib;
description "The module ietf-yang-library is REQUIRED to
be implemented. Revision 2019-01-04 or a
revision derived from it is REQUIRED.";
}
organization
"IETF NETCONF (Network Configuration) Working Group";
contact
"WG Web: <https://datatracker.ietf.org/wg/netconf/>
WG List: <mailto:netconf@ietf.org>
Editor: Balazs Lengyel
<mailto:balazs.lengyel@ericsson.com>";
description
"This module specifies a module intended to contain system
capabilities. System capabilities may include capabilities of a
NETCONF or RESTCONF server or a notification publisher.
This module does not contain any specific capabilities it only
provides a structure where containers containing the actual
capabilities should be augmented in.
Capability values can be specified on system level,
datastore level or for specific data nodes (and their contained
sub-tree) of a specific datastore.
If a capability is specified on multiple levels, the
specification on a more specific level overrides more
generic capability specifications; thus
- a system level specification is overridden by any
other specification
- a datastore level specification (with a node-selector '/') is
overridden by a specification with a more specific node-selector.
- a specification for a specific datastore and node-selector
is overridden by a specification for the same datastore with
a node-selector that describes more levels of containing lists
and containers.
It is not allowed to have multiple node selectors which
- are defined for the same datastore AND
- have the same number of containment levels AND
- select an overlapping set of nodes.
To find a capability value for a specific data node in a
specific datastore the user SHALL
1) consider the system level capabilities under the
system-capabilities container if the
capability value is specified.
2) search for a datastore-capabilities list entry for
the specific datastore.
3) within that datastore entry search for a
per-node-capabilities entry that specifies the specific
capability and that has the node-selector selecting the
specific data node and that specifies the most levels of
containing containers and lists.
4) If no entries are found in the previous steps the
publisher is not capable of providing a value because
it is unknown, the capability is changing for some reason,
there is no specified limit etc. In this case the
system's behavior is unspecified.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
are to be interpreted as described in BCP 14 (RFC 2119)
(RFC 8174) when, and only when, they appear in all
capitals, as shown here.
Copyright (c) 2020 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
for full legal notices.";
revision 2020-01-02 {
description
"Initial version";
reference
"RFC XXX: YANG-Push Notification Capabilities";
}
container system-capabilities {
config false;
description "System capabilities.
Capability values specified here at the system level
are valid for all datastores and
are used when the capability is not specified on the
datastore level or for specific data nodes.";
// augmentation point for system level capabilities
list datastore-capabilities {
key datastore;
description "Capabilities values per datastore.
For non-NMDA servers/publishers config=false data is
considered as if it was part of the running datastore.";
leaf datastore {
type leafref {
path /yanglib:yang-library/yanglib:datastore/yanglib:name;
}
description "The datastore for which capabilities are defined.
Only individual datastores can be specified
e.g., ds:conventional is not allowed.";
}
list per-node-capabilities {
key "node-selector";
description
"Each list entry specifies capabilities
for the selected data nodes. The same capabilities apply for
the data nodes in the subtree below them unless another list
entry with a more specific node selector specifying the same
capability is present.";
leaf node-selector {
type nacm:node-instance-identifier;
description
"Selects the data nodes for which capabilities are
specified. The special value '/' denotes all data nodes
in the datastore.
The system SHOULD order list entries according to
the tree structure of the data models to make
reading/parsing the data more simple.";
}
// augmentation point for datastore or data node level
// capabilities
}
}
}
}
<CODE ENDS>
5. Notification Capabilities Model
The YANG module ietf-notification-capabilities is defined to provide
YANG-Push related capability information.
5.1. Tree Diagram
The following tree diagram [RFC8340] provides an overview of the data The following tree diagram [RFC8340] provides an overview of the data
model. model.
module: ietf-notification-capabilities module: ietf-notification-capabilities
+--ro system-capabilities augment /sysc:system-capabilities:
+--ro subscription-capabilities +--ro subscription-capabilities
| +--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
| +--ro max-objects-per-update? uint32 +--ro max-objects-per-update? uint32
| +--ro minimum-dampening-period? uint32 {yp:on-change}? +--ro minimum-dampening-period? uint32 {yp:on-change}?
| +--ro on-change-supported? notification-support +--ro on-change-supported? notification-support
| | {yp:on-change}? | {yp:on-change}?
| +--ro periodic-notifications-supported? notification-support +--ro periodic-notifications-supported? notification-support
| +--ro supported-excluded-change-type* union {yp:on-change}? +--ro supported-excluded-change-type* union {yp:on-change}?
+--ro datastore-capabilities* [datastore]
+--ro datastore -> /yanglib:yang-library/datastore/name
+--ro per-node-capabilities* [node-selector]
+--ro node-selector nacm:node-instance-identifier
+--ro subscription-capabilities
+--ro (update-period)?
| +--:(minimum-update-period)
| | +--ro minimum-update-period? uint32
| +--:(supported-update-period)
| +--ro supported-update-period* uint32
+--ro max-objects-per-update? uint32
+--ro minimum-dampening-period? uint32
| {yp:on-change}?
+--ro on-change-supported? notification-support
| {yp:on-change}?
+--ro periodic-notifications-supported?
| notification-support
+--ro supported-excluded-change-type* union
{yp:on-change}?
3.2. YANG Module augment /sysc:system-capabilities/sysc:datastore-capabilities/ +
| sysc:per-node-capabilities:
+--ro subscription-capabilities
+--ro (update-period)?
| +--:(minimum-update-period)
| | +--ro minimum-update-period? uint32
| +--:(supported-update-period)
| +--ro supported-update-period* uint32
+--ro max-objects-per-update? uint32
+--ro minimum-dampening-period? uint32 {yp:on-change}?
+--ro on-change-supported? notification-support
| {yp:on-change}?
+--ro periodic-notifications-supported? notification-support
+--ro supported-excluded-change-type* union {yp:on-change}?
<CODE BEGINS> file "ietf-notification-capabilities@2019-12-09.yang" 5.2. YANG Module
<CODE BEGINS> file "ietf-notification-capabilities@2020-01-02.yang"
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 inc; prefix inc;
import ietf-netconf-acm {
prefix nacm;
description
"This module does not require NACM to be implemented, as
only a NACM typedef is used";
}
import ietf-yang-push { import ietf-yang-push {
prefix yp; prefix yp;
description description
"This module requires ietf-yang-push to be implemented for the "The module ietf-yang-push is REQUIRED to be
two subscription-capabilities containers."; implemented.";
} }
import ietf-yang-library {
prefix yanglib; import ietf-system-capabilities {
description "This module requires ietf-yang-library to prefix sysc;
be implemented. Revision 2019-01-04 or a description
revision derived from it is required."; "The module ietf-system-capabilities is REQUIRED to be
implemented.";
} }
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 related publisher "This module specifies YANG-Push related publisher capabilities.
capabilities.
The module contains The module contains
- specification of which data nodes support on-change or periodic
notifications.
- capabilities related to the throughput of notification data the - capabilities related to the throughput of notification data the
publisher can support. (Note that for a specific subscription publisher can support. (Note that for a specific subscription
the publisher MAY still allow only longer periods or smaller the publisher MAY still allow only longer periods or smaller
updates depending on e.g. actual load conditions.) updates depending on e.g., actual load conditions.)
- specification of which data nodes support on-change or periodic
notifications.
Capability values can be specified on system/publisher level, Capability values can be specified on system/publisher level,
datastore level or on specific data nodes (and their contained datastore level or for specific data nodes (and their contained
sub-tree) of a specific datastore. sub-tree) of a specific datastore, as defined in the
If a capability is specified on multiple levels, the ietf-system-capabilities module.
specification on a more specific level overrides more
generic capability specifications; thus
- a system/publisher level specification is overridden by any
other specification
- a datastore level specification (with a node-selector '/') is
overridden by a specification with a more specific node-selector.
- a specification for a specific datastore and node-selector
is overridden by a specification for the same datastore with
a node-slector that describes more levels of containing lists
and containers.
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 values have different values for a specific capability, then using values
that are only acceptable for some of these data nodes, but not for that are only acceptable for some of these data nodes, but not for
others, may result in the rejection of the subscription. others, may result in the rejection of the subscription.
To find a capability value for a specific node in a
specific datastore the user SHALL
1) consider the system/publisher level capabilities under the
system-capabilities container if the
capability value is specified.
2) search for a datastore-capabilities list entry for
the specific datastore.
3) within that datastore entry search for a
per-node-capabilities entry that specifies the specific
capability and that has the node-selector selecting the
specific data node and that specifies the most levels of
containing containers and lists.
4) If no entries are found in the previous steps the
publisher is not capable of providing a value because
it is unknown, the capability is changing for some reason,
there is no specified limit etc. In this case the
publisher'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) 2019 IETF Trust and the persons identified as Copyright (c) 2020 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 without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX
the RFC itself for full legal notices."; (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
for full legal notices.";
revision 2019-12-09 { revision 2020-01-02 {
description description
"Initial version"; "Initial version";
reference reference
"RFC XXX: YANG-Push Notification Capabilities"; "RFC XXX: YANG-Push Notification Capabilities";
} }
grouping subscription-capabilities { grouping subscription-capabilities {
description "Capabilities related to Yang-Push notifications"; description "Capabilities related to YANG-Push subscriptions
and notifications";
container subscription-capabilities { container subscription-capabilities {
description "Capabilities related to Yang-Push notifications"; description "Capabilities related to YANG-Push subscriptions
and notifications";
typedef notification-support { typedef notification-support {
type enumeration { type enumeration {
enum no-notifications-supported { enum no-notifications-supported {
description "The publisher is not capable of sending any description "The publisher is not capable of sending any
notifications for the relevant scope and subscription notifications for the relevant scope and subscription
type." ; type." ;
} }
enum notifications-for-config-changes-supported { enum notifications-for-config-changes-supported {
description "The publisher is capable of sending description "The publisher is capable of sending
skipping to change at page 11, line 46 skipping to change at page 15, line 44
} }
} }
type yp:change-type; type yp:change-type;
} }
description "The change types that can be excluded in description "The change types that can be excluded in
YANG-Push subscriptions."; YANG-Push subscriptions.";
} }
} }
} }
container system-capabilities { augment /sysc:system-capabilities {
config false; description "Add system level capabilities";
description "YANG-Push related publisher capabilities.
Capability values specified here at the publisher level
are valid for all datastores and
are used when the capability is not specified on the
datastore level or for specific data nodes. ";
uses subscription-capabilities { uses subscription-capabilities {
refine subscription-capabilities/supported-excluded-change-type { refine subscription-capabilities/supported-excluded-change-type {
default none; default none;
} }
} }
}
list datastore-capabilities { augment "/sysc:system-capabilities/sysc:datastore-capabilities" +
key datastore; "/sysc:per-node-capabilities" {
description "Add datastore and node level capabilities";
description "Capabilities values per datastore. uses subscription-capabilities {
For non-NMDA servers/publishers the config=false data is refine subscription-capabilities/supported-excluded-change-type {
considered as if it was part of the running datastore."; default none;
leaf datastore {
type leafref {
path /yanglib:yang-library/yanglib:datastore/yanglib:name;
}
description "The datastore for which capabilities are defined.
Only individual datastores can be specified
e.g. ds:conventional is not allowed.";
}
list per-node-capabilities {
key "node-selector";
description
"Each list entry specifies notification capabilities
for the selected data nodes. The same capabilities apply for
the data nodes in the subtree below them unless another list
entry with a more specific node selector is present.";
leaf node-selector {
type nacm:node-instance-identifier;
description
"Selects the data nodes for which capabilities are
specified. The special value '/' denotes all data nodes
in the datastore.
The system SHOULD order list entries according to
the tree structure of the data models to make
reading/parsing the data model more simple.";
}
uses subscription-capabilities;
} }
} }
} }
} }
<CODE ENDS>
3.3. Other System Capabilities
Other YANG modules defined in separate documents MAY augment this <CODE ENDS>
module to define other capabilities not related to YANG-Push. Every
set of such capabilities SHOULD be wrapped in a container similar to
the subscription-capabilities container in this YANG module to
cleanly separate different groups of capabilities. The "other-
capabilities" container SHOULD be augmented as a sibling to the
subscription-capabilities container.
4. Security Considerations 6. Security Considerations
The YANG module specified in this document defines 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 [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
is the secure transport layer, and the mandatory-to-implement secure is the secure transport layer, and the mandatory-to-implement secure
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
is HTTPS, and the mandatory-to-implement secure transport is TLS is HTTPS, and the mandatory-to-implement secure transport is TLS
[RFC8446]. [RFC8446].
The Network Configuration Access Control Model (NACM) [RFC8341] The Network Configuration Access Control Model (NACM) [RFC8341]
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.
All protocol-accessible data nodes are read-only and cannot be All protocol-accessible data nodes are read-only and cannot be
modified. The data in this module is not security sensitive. Access modified. The data in these modules is not security sensitive.
control may be configured, to avoid exposing the read-only data. Access control may be configured, to avoid exposing the read-only
data.
When that data is in file format, data should be protected against When that data is in file format, data should be protected against
modification or unauthorized access using normal file handling modification or unauthorized access using normal file handling
mechanisms. mechanisms.
5. IANA Considerations 7. IANA Considerations
5.1. The IETF XML Registry 7.1. The IETF XML Registry
This document registers one URI in the IETF XML registry [RFC3688]. This document registers two URIs in the IETF XML registry [RFC3688].
Following the format in [RFC3688], the following registrations are Following the format in [RFC3688], the following registrations are
requested: requested:
URI: urn:ietf:params:xml:ns:yang:ietf-system-capabilities
Registrant Contact: The NETCONF WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-notification-capabilities URI: urn:ietf:params:xml:ns:yang:ietf-notification-capabilities
Registrant Contact: The NETCONF WG of the IETF. Registrant Contact: The NETCONF WG of the IETF.
XML: N/A, the requested URI is an XML namespace. XML: N/A, the requested URI is an XML namespace.
5.2. The YANG Module Names Registry 7.2. The YANG Module Names Registry
This document registers one YANG module in the YANG Module Names This document registers two YANG modules in the YANG Module Names
registry [RFC7950]. Following the format in [RFC7950], the the registry. Following the format in [RFC7950], the the following
following registrations are requested: registrations are requested:
name: ietf-system-capabilities
namespace: urn:ietf:params:xml:ns:yang:ietf-system-capabilities
prefix: sysc
reference: RFC XXXX
name: ietf-notification-capabilities name: ietf-notification-capabilities
namespace: urn:ietf:params:xml:ns:yang:ietf-notification-capabilities namespace: urn:ietf:params:xml:ns:yang:ietf-notification-capabilities
prefix: inc prefix: inc
reference: RFC XXXX reference: RFC XXXX
6. References 8. References
6.1. Normative References 8.1. Normative References
[I-D.ietf-netmod-yang-instance-file-format] [I-D.ietf-netmod-yang-instance-file-format]
Lengyel, B. and B. Claise, "YANG Instance Data File Lengyel, B. and B. Claise, "YANG Instance Data File
Format", draft-ietf-netmod-yang-instance-file-format-06 Format", draft-ietf-netmod-yang-instance-file-format-06
(work in progress), December 2019. (work in progress), December 2019.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
skipping to change at page 15, line 14 skipping to change at page 18, line 23
[RFC8639] Voit, E., Clemm, A., Gonzalez Prieto, A., Nilsen-Nygaard, [RFC8639] Voit, E., Clemm, A., Gonzalez Prieto, A., Nilsen-Nygaard,
E., and A. Tripathy, "Subscription to YANG Notifications", E., and A. Tripathy, "Subscription to YANG Notifications",
RFC 8639, DOI 10.17487/RFC8639, September 2019, RFC 8639, DOI 10.17487/RFC8639, September 2019,
<https://www.rfc-editor.org/info/rfc8639>. <https://www.rfc-editor.org/info/rfc8639>.
[RFC8641] Clemm, A. and E. Voit, "Subscription to YANG Notifications [RFC8641] Clemm, A. and E. Voit, "Subscription to YANG Notifications
for Datastore Updates", RFC 8641, DOI 10.17487/RFC8641, for Datastore Updates", RFC 8641, DOI 10.17487/RFC8641,
September 2019, <https://www.rfc-editor.org/info/rfc8641>. September 2019, <https://www.rfc-editor.org/info/rfc8641>.
6.2. Informative References 8.2. Informative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>. <https://www.rfc-editor.org/info/rfc3688>.
skipping to change at page 15, line 48 skipping to change at page 19, line 8
be reported on-change from running, nothing from candidate and all be reported on-change from running, nothing from candidate and all
config=false data from operational. Periodic subscriptions are config=false data from operational. Periodic subscriptions are
supported for running and operational, but not for candidate. supported for running and operational, but not for candidate.
<?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>
<yid-version>1</yid-version> <yid-version>1</yid-version>
<content-schema> <content-schema>
<module>ietf-notification-capabilities@2019-12-04</module> <module>ietf-system-capabilities@2020-01-02</module>
<module>ietf-notification-capabilities@2020-01-02</module>
</content-schema> </content-schema>
<!-- revision date, contact, etc. --> <!-- revision date, contact, etc. -->
<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 running, datastores. Every change can be reported on-change from running,
nothing from candidate and all config=false data from operational. nothing from candidate and all config=false data from operational.
Periodic subscriptions are supported for running and Periodic subscriptions are supported for running and
operational, but not for candidate. operational, but not for candidate.
</description> </description>
<content-data> <content-data>
<system-capabilities <system-capabilities
xmlns="urn:ietf:params:xml:ns:yang:ietf-notification-capabilities" xmlns="urn:ietf:params:xml:ns:yang:ietf-system-capabilities"
xmlns:inc=
"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">
<subscription-capabilities> <inc:subscription-capabilities>
<minimum-update-period>500</minimum-update-period> <inc:minimum-update-period>500</inc:minimum-update-period>
<max-objects-per-update>2000</max-objects-per-update> <inc:max-objects-per-update>2000</inc:max-objects-per-update>
<minimum-dampening-period>100</minimum-dampening-period> <inc:minimum-dampening-period>100</inc:minimum-dampening-period>
<periodic-notifications-supported> <inc:periodic-notifications-supported>
notifications-for-all-changes-supported notifications-for-all-changes-supported
</periodic-notifications-supported> </inc:periodic-notifications-supported>
</subscription-capabilities> </inc: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>
<subscription-capabilities> <inc:subscription-capabilities>
<on-change-supported> <inc:on-change-supported>
notifications-for-state-changes-supported notifications-for-state-changes-supported
</on-change-supported> </inc:on-change-supported>
</subscription-capabilities> </inc:subscription-capabilities>
</per-node-capabilities> </per-node-capabilities>
</datastore-capabilities> </datastore-capabilities>
<datastore-capabilities> <datastore-capabilities>
<datastore>ds:candidate</datastore> <datastore>ds:candidate</datastore>
<per-node-capabilities> <per-node-capabilities>
<node-selector>/</node-selector> <node-selector>/</node-selector>
<subscription-capabilities> <inc:subscription-capabilities>
<on-change-supported>no-notifications-supported <inc:on-change-supported>no-notifications-supported
</on-change-supported> </inc:on-change-supported>
<periodic-notifications-supported> <inc:periodic-notifications-supported>
no-notifications-supported no-notifications-supported
</periodic-notifications-supported> </inc:periodic-notifications-supported>
</subscription-capabilities> </inc:subscription-capabilities>
</per-node-capabilities> </per-node-capabilities>
</datastore-capabilities> </datastore-capabilities>
<datastore-capabilities> <datastore-capabilities>
<datastore>ds:running</datastore> <datastore>ds:running</datastore>
<per-node-capabilities> <per-node-capabilities>
<node-selector>/</node-selector> <node-selector>/</node-selector>
<subscription-capabilities> <inc:subscription-capabilities>
<on-change-supported> <inc:on-change-supported>
notifications-for-all-changes-supported notifications-for-all-changes-supported
</inc:on-change-supported>
</on-change-supported> </inc:subscription-capabilities>
</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>
Figure 1: Notification Capabilities with datastore level settings Figure 1: Notification Capabilities with datastore level settings
The following is the instance-data describing the notification The following is the instance-data describing the notification
capabilities of a hypothetical "acme-router". The router implements capabilities of a hypothetical "acme-router". The router implements
skipping to change at page 17, line 30 skipping to change at page 20, line 41
reported on-change only 2 important counters. Datastore subscription reported on-change only 2 important counters. Datastore subscription
capabilities are not reported on-change as they never change on the capabilities are not reported on-change as they never change on the
acme-router during run-time. acme-router during run-time.
<?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>
<yid-version>1</yid-version> <yid-version>1</yid-version>
<content-schema> <content-schema>
<module>ietf-notification-capabilities@2019-12-04</module> <module>ietf-system-capabilities@2020-01-02</module>
<module>ietf-notification-capabilities@2020-01-02</module>
</content-schema> </content-schema>
<!-- revision date, contact, etc. --> <!-- revision date, contact, etc. -->
<description>Defines the notification capabilities of an acme-router. <description>Defines the notification capabilities of an acme-router.
The router only has running, and operational datastores. The router only has running, and operational datastores.
Every change can be reported on-change from running, but Every change can be reported on-change from running, but
only config=true nodes and some config=false data from operational. only config=true nodes and some config=false data from operational.
Statistics are not reported on-change only 2 important counters, Statistics are not reported on-change only 2 important counters,
for these a smaller dampening period is possible. for these a smaller dampening period is possible.
</description> </description>
<content-data> <content-data>
<system-capabilities <system-capabilities
xmlns="urn:ietf:params:xml:ns:yang:ietf-notification-capabilities" xmlns="urn:ietf:params:xml:ns:yang:ietf-system-capabilities"
xmlns:inc=
"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">
<subscription-capabilities> <inc:subscription-capabilities>
<minimum-update-period>500</minimum-update-period> <inc:minimum-update-period>500</inc:minimum-update-period>
<max-objects-per-update>2000</max-objects-per-update> <inc:max-objects-per-update>2000</inc:max-objects-per-update>
<minimum-dampening-period>100</minimum-dampening-period> <inc:minimum-dampening-period>100</inc:minimum-dampening-period>
<periodic-notifications-supported> <inc:periodic-notifications-supported>
notifications-for-all-changes-supported notifications-for-all-changes-supported
</periodic-notifications-supported> </inc:periodic-notifications-supported>
<on-change-supported> <inc:on-change-supported>
notifications-for-all-changes-supported notifications-for-all-changes-supported
</inc:on-change-supported>
</on-change-supported> <inc:supported-excluded-change-type>
<supported-excluded-change-type>
all all
</supported-excluded-change-type> </inc:supported-excluded-change-type>
</subscription-capabilities> </inc:subscription-capabilities>
<datastore-capabilities> <datastore-capabilities>
<datastore>ds:operational</datastore> <datastore>ds:operational</datastore>
<per-node-capabilities> <per-node-capabilities>
<node-selector> <node-selector>
/if:interfaces/if:interface/if:statistics</node-selector> /if:interfaces/if:interface/if:statistics</node-selector>
<subscription-capabilities> <inc:subscription-capabilities>
<on-change-supported> <inc:on-change-supported>
no-notifications-supported no-notifications-supported
</on-change-supported> </inc:on-change-supported>
</subscription-capabilities> </inc: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:in-octets /if:interfaces/if:interface/if:statistics/if:in-octets
</node-selector> </node-selector>
<subscription-capabilities> <inc:subscription-capabilities>
<minimum-dampening-period>10</minimum-dampening-period> <inc:minimum-dampening-period>10
<on-change-supported> </inc:minimum-dampening-period>
<inc:on-change-supported>
notifications-for-all-changes-supported notifications-for-all-changes-supported
</on-change-supported> </inc:on-change-supported>
</subscription-capabilities> </inc: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>
<subscription-capabilities> <inc:subscription-capabilities>
<minimum-dampening-period>10</minimum-dampening-period> <inc:minimum-dampening-period>10
<on-change-supported> </inc:minimum-dampening-period>
<inc:on-change-supported>
notifications-for-all-changes-supported notifications-for-all-changes-supported
</on-change-supported> </inc:on-change-supported>
</subscription-capabilities> </inc: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>
Figure 2: Notification Capabilities with data node specific settings Figure 2: Notification Capabilities with data node specific settings
Appendix B. Changes between revisions Appendix B. Changes between revisions
v08 - v09
o Split the YANG module into two: ietf-system-capabilities and ietf-
notification-capabilities. Restructured/updated the draft
accordingly.
v07 - v08 v07 - v08
o Prepared the YANG model to include other non-YANG-Push related o Prepared the YANG model to include other non-YANG-Push related
capabilities. capabilities.
o Renamed the top level container to system-capabilities o Renamed the top level container to system-capabilities
o Added a container subscription-capabilities to the grouping o Added a container subscription-capabilities to the grouping
subscription-capabilities to contain all subscription related subscription-capabilities to contain all subscription related
capabilities capabilities
 End of changes. 89 change blocks. 
290 lines changed or deleted 438 lines changed or added

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