draft-ietf-netconf-distributed-notif-00.txt   draft-ietf-netconf-distributed-notif-01.txt 
NETCONF T. Zhou NETCONF T. Zhou
Internet-Draft G. Zheng Internet-Draft G. Zheng
Intended status: Standards Track Huawei Intended status: Standards Track Huawei
Expires: April 6, 2021 E. Voit Expires: May 6, 2021 E. Voit
Cisco Systems Cisco Systems
T. Graf T. Graf
Swisscom Swisscom
P. Francois P. Francois
INSA-Lyon INSA-Lyon
October 3, 2020 November 02, 2020
Subscription to Distributed Notifications Subscription to Distributed Notifications
draft-ietf-netconf-distributed-notif-00 draft-ietf-netconf-distributed-notif-01
Abstract Abstract
This documents describes extensions to the YANG notifications This documents describes extensions to the YANG notifications
subscription to allow metrics being published directly from subscription to allow metrics being published directly from
processors on line cards to target receivers, while subscription is processors on line cards to target receivers, while subscription is
still maintained at the route processor in a distributed forwarding still maintained at the route processor in a distributed forwarding
system. system.
Requirements Language Requirements Language
skipping to change at page 1, line 46 skipping to change at page 1, line 46
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 April 6, 2021. This Internet-Draft will expire on May 6, 2021.
Copyright Notice Copyright Notice
Copyright (c) 2020 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. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminologies . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminologies . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 4 3. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Subscription Decomposition . . . . . . . . . . . . . . . . . 6 4. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 4
5. Publication Composition . . . . . . . . . . . . . . . . . . . 6 5. Subscription Decomposition . . . . . . . . . . . . . . . . . 6
6. Subscription State Change Notifications . . . . . . . . . . . 7 6. Publication Composition . . . . . . . . . . . . . . . . . . . 6
7. Publisher Configurations . . . . . . . . . . . . . . . . . . 7 7. Subscription State Change Notifications . . . . . . . . . . . 7
8. YANG Tree . . . . . . . . . . . . . . . . . . . . . . . . . . 7 8. Publisher Configurations . . . . . . . . . . . . . . . . . . 7
9. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 7 9. YANG Tree . . . . . . . . . . . . . . . . . . . . . . . . . . 7
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 10. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 8
11. Security Considerations . . . . . . . . . . . . . . . . . . . 10 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10
12. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 11 12. Security Considerations . . . . . . . . . . . . . . . . . . . 10
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 13. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 11
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11
14.1. Normative References . . . . . . . . . . . . . . . . . . 11 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 11
14.2. Informative References . . . . . . . . . . . . . . . . . 12 15.1. Normative References . . . . . . . . . . . . . . . . . . 11
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 12 15.2. Informative References . . . . . . . . . . . . . . . . . 12
A.1. Dynamic Subscription . . . . . . . . . . . . . . . . . . 12 Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 13
A.2. Configured Subscription . . . . . . . . . . . . . . . . . 16 A.1. Dynamic Subscription . . . . . . . . . . . . . . . . . . 13
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 A.2. Configured Subscription . . . . . . . . . . . . . . . . . 17
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19
1. Introduction 1. Introduction
The mechanism to support a subscription to a continuous and The mechanism to support a subscription to a continuous and
customized stream of updates from a YANG datastore is defined in customized stream of updates from a YANG datastore is defined in
[RFC8639] and [RFC8641]. Requirements for Subscription to YANG [RFC8639] and [RFC8641]. Requirements for Subscription to YANG
Datastores are defined in [RFC7923] Datastores are defined in [RFC7923]
By streaming data from publishers to receivers, much better By streaming data from publishers to receivers, much better
performance and fine-grained sampling can be achieved than with performance and fine-grained sampling can be achieved than with
skipping to change at page 4, line 5 skipping to change at page 4, line 5
Component Capability: is the subscription capability that each Component Capability: is the subscription capability that each
Publisher can expose to the Subscriber. Publisher can expose to the Subscriber.
Master: is the Publisher that interacts with the Subscriber to deal Master: is the Publisher that interacts with the Subscriber to deal
with the Global Subscription. It decomposes the Global Subscription with the Global Subscription. It decomposes the Global Subscription
to multiple Component Subscriptions and interacts with the Agents. to multiple Component Subscriptions and interacts with the Agents.
Agent: is the Publisher that interacts with the Master to deal with Agent: is the Publisher that interacts with the Master to deal with
the Component Subscription and pushing the data to the collector. the Component Subscription and pushing the data to the collector.
3. Solution Overview Observation Domain: An Observation Domain is the largest set of
Observation Points for which metrics can be collected by a metering
process. For example, a router line card may be an Observation
Domain if it is composed of several interfaces, each of which is an
Observation Point. In the YANG notification messages it generates,
the Observation Domain includes its Observation Domain ID, which is
unique per publisher process. That way, the collecting process can
identify the specific Observation Domain from the publisher that
sends the YANG notification messages. Every Observation Point is
associated with an Observation Domain.
Observation Domain ID: A 32-bit identifier of the Observation Domain
that is locally unique to the publisher process. The publisher
process uses the Observation Domain ID to uniquely identify to the
collecting process the Observation Domain that meters the metrics.
Receivers SHOULD use the transport session and the Observation Domain
ID field to separate different publisher streams originating from the
same publisher.
3. Motivation
Lost and corrupt YANG notification messages need to be recognized at
the receiver to ensure data integrity even when multiple publisher
processes publishing from the same transport session.
To preserve data integrity down to the publisher process, the
Observation Domain ID in the transport message header of the YANG
notification message is introduced. In case of UDP transport, this
is described in Section 3.2 of UDP based transport
[I-D.ietf-netconf-udp-notif].
4. Solution Overview
Figure 2 below shows the distributed data export framework. Figure 2 below shows the distributed data export framework.
A collector usually includes two components, A collector usually includes two components,
o the Subscriber generates the subscription instructions to express o the Subscriber generates the subscription instructions to express
what and how the collector want to receive the data; what and how the collector want to receive the data;
o the Receiver is the target for the data publication. o the Receiver is the target for the data publication.
skipping to change at page 6, line 5 skipping to change at page 6, line 16
o The Agents announce the status of their Component Subscriptions to o The Agents announce the status of their Component Subscriptions to
the Master. The status of the overall subscription is maintained the Master. The status of the overall subscription is maintained
by the Master. The Master is responsible for notifying the by the Master. The Master is responsible for notifying the
subscriber in case of problems with the Component Subscriptions. subscriber in case of problems with the Component Subscriptions.
The technical mechanisms or protocols used for the coordination of The technical mechanisms or protocols used for the coordination of
operational information between Master and Agent is out-of-scope of operational information between Master and Agent is out-of-scope of
this document. this document.
4. Subscription Decomposition 5. Subscription Decomposition
The Collector can only subscribe to the Master. This requires the The Collector can only subscribe to the Master. This requires the
Master to: Master to:
1. expose the Global Capability that can be served by multiple 1. expose the Global Capability that can be served by multiple
Publisher Agents; Publisher Agents;
2. disassemble the Global Subscription to multiple Component 2. disassemble the Global Subscription to multiple Component
Subscriptions, and distribute them to the Publisher Agents of the Subscriptions, and distribute them to the Publisher Agents of the
corresponding metric sources so that they not overlap; corresponding metric sources so that they not overlap;
skipping to change at page 6, line 29 skipping to change at page 6, line 40
And the Agent to: And the Agent to:
o Inherit the Global Subscription properties from Publisher Master o Inherit the Global Subscription properties from Publisher Master
for its Component Subscription; for its Component Subscription;
o share the same life-cycle as the Global Subscription; o share the same life-cycle as the Global Subscription;
o share the same Subscription ID as the Global Subscription. o share the same Subscription ID as the Global Subscription.
5. Publication Composition 6. Publication Composition
The Publisher Agent collects data and encapsulates the packets per The Publisher Agent collects data and encapsulates the packets per
Component Subscription. The format and structure of the data records Component Subscription. The format and structure of the data records
are defined by the YANG schema, so that the decomposition at the are defined by the YANG schema, so that the decomposition at the
Receiver can benefit from the structured and hierarchical data Receiver can benefit from the structured and hierarchical data
records. records.
The Receiver is able to associate the YANG data records with The Receiver is able to associate the YANG data records with
Subscription ID [RFC8639] to the subscribed subscription and with Subscription ID [RFC8639] to the subscribed subscription and with
Message Generator ID [I-D.ietf-netconf-notification-messages] to one Message Observation Domain ID
of the Publisher Agents software processes to enable message [I-D.ietf-netconf-notification-messages] to one of the Publisher
integrity. Agents software processes to enable message integrity.
For the dynamic subscription, the output of the "establish- For the dynamic subscription, the output of the "establish-
subscription" RPC defined in [RFC8639] MUST include a list of Message subscription" RPC defined in [RFC8639] MUST include a list of Message
Generator IDs to indicate how the Global Subscription is decomposed Observation Domain IDs to indicate how the Global Subscription is
into several Component Subscriptions. decomposed into several Component Subscriptions.
The "subscription-started" and "subscription-modified" notification The "subscription-started" and "subscription-modified" notification
defined in [RFC8639] MUST also include a list of Message Generator defined in [RFC8639] MUST also include a list of Message Observation
IDs to notify the current Publishers for the corresponding Global Domain IDs to notify the current Publishers for the corresponding
Subscription. Global Subscription.
6. Subscription State Change Notifications 7. Subscription State Change Notifications
In addition to sending event records to Receivers, the Master MUST In addition to sending event records to Receivers, the Master MUST
also send subscription state change notifications [RFC8639] when also send subscription state change notifications [RFC8639] when
events related to subscription management have occurred. All the events related to subscription management have occurred. All the
subscription state change notifications MUST be delivered by the subscription state change notifications MUST be delivered by the
Master. Master.
When the subscription decomposition result changed, the When the subscription decomposition result changed, the
"subscription-modified" notification MUST be sent to indicate the new "subscription-modified" notification MUST be sent to indicate the new
list of Publishers. list of Publishers.
7. Publisher Configurations 8. Publisher Configurations
This document assumes that all Publisher Agents are preconfigured to This document assumes that all Publisher Agents are preconfigured to
push data. The actual working Publisher Agents are selected based on push data. The actual working Publisher Agents are selected based on
the subscription decomposition result. the subscription decomposition result.
All Publisher Agents share the same source IP address for data All Publisher Agents share the same source IP address for data
export. For connectionless data transport such as UDP based export. For connectionless data transport such as UDP based
transport [I-D.unyte-netconf-udp-notif] the same Layer 4 source port transport [I-D.ietf-netconf-udp-notif] the same Layer 4 source port
for data export can be used. For connection based data transport for data export can be used. For connection based data transport
such as HTTPS based transport [I-D.ietf-netconf-https-notif], each such as HTTPS based transport [I-D.ietf-netconf-https-notif], each
Publisher Agent MUST be able to acknowledge packet retrieval from Publisher Agent MUST be able to acknowledge packet retrieval from
Receivers, and therefore requires a dedicated Layer 4 source port per Receivers, and therefore requires a dedicated Layer 4 source port per
software process. software process.
The specific configuration on transports is described in the The specific configuration on transports is described in the
resposible documents. resposible documents.
8. YANG Tree 9. YANG Tree
module: ietf-distributed-notifications module: ietf-distributed-notifications
augment /sn:subscriptions/sn:subscription: augment /sn:subscriptions/sn:subscription:
+--ro message-generator-id* string +--ro message-observation-domain-id* string
augment /sn:subscription-started: augment /sn:subscription-started:
+--ro message-generator-id* string +--ro message-observation-domain-id* string
augment /sn:subscription-modified: augment /sn:subscription-modified:
+--ro message-generator-id* string +--ro message-observation-domain-id* string
augment /sn:establish-subscription/sn:output: augment /sn:establish-subscription/sn:output:
+--ro message-generator-id* string +--ro message-observation-domain-id* string
9. YANG Module 10. YANG Module
<CODE BEGINS> file "ietf-distributed-notifications@2020-05-09.yang" <CODE BEGINS> file "ietf-distributed-notifications@2020-05-09.yang"
module ietf-distributed-notif { module ietf-distributed-notif {
yang-version 1.1; yang-version 1.1;
namespace namespace
"urn:ietf:params:xml:ns:yang:ietf-distributed-notifications"; "urn:ietf:params:xml:ns:yang:ietf-distributed-notifications";
prefix mso; prefix mso;
import ietf-subscribed-notifications { import ietf-subscribed-notifications {
prefix sn; prefix sn;
} }
skipping to change at page 8, line 45 skipping to change at page 9, line 15
This version of this YANG module is part of RFC XXXX; see the This version of this YANG module is part of RFC XXXX; see the
RFC itself for full legal notices."; RFC itself for full legal notices.";
revision 2020-05-09 { revision 2020-05-09 {
description description
"Initial version"; "Initial version";
reference reference
"RFC XXXX: Subscription to Distributed Notifications"; "RFC XXXX: Subscription to Distributed Notifications";
} }
grouping message-generator-ids { grouping message-observation-domain-ids {
description description
"Provides a reusable list of message-generator-ids."; "Provides a reusable list of message-observation-domain-ids.";
leaf-list message-generator-id { leaf-list message-observation-domain-id {
type string; type string;
config false; config false;
ordered-by user; ordered-by user;
description description
"Software process which created the message (e.g., "Software process which created the message (e.g.,
processor 1 on linecard 1). This field is processor 1 on linecard 1). This field is
used to notify the collector the working originator."; used to notify the collector the working originator.";
} }
} }
augment "/sn:subscriptions/sn:subscription" { augment "/sn:subscriptions/sn:subscription" {
description description
"This augmentation allows the message generators to be "This augmentation allows the message
exposed for a subscription."; Observation Domain ID to be exposed for a subscription.";
uses message-generator-ids; uses message-observation-domain-ids;
} }
augment "/sn:subscription-started" { augment "/sn:subscription-started" {
description description
"This augmentation allows MSO specific parameters to be "This augmentation allows MSO specific parameters to be
exposed for a subscription."; exposed for a subscription.";
uses message-generator-ids; uses message-observation-domain-ids;
} }
augment "/sn:subscription-modified" { augment "/sn:subscription-modified" {
description description
"This augmentation allows MSO specific parameters to be "This augmentation allows MSO specific parameters to be
exposed for a subscription."; exposed for a subscription.";
uses message-generator-ids; uses message-observation-domain-ids;
} }
augment "/sn:establish-subscription/sn:output" { augment "/sn:establish-subscription/sn:output" {
description description
"This augmentation allows MSO specific parameters to be "This augmentation allows MSO specific parameters to be
exposed for a subscription."; exposed for a subscription.";
uses message-generator-ids; uses message-observation-domain-ids;
} }
} }
<CODE ENDS> <CODE ENDS>
10. IANA Considerations 11. IANA Considerations
This document registers the following namespace URI in the IETF XML This document registers the following namespace URI in the IETF XML
Registry [RFC3688]: Registry [RFC3688]:
URI: urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications URI: urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications
Registrant Contact: The IESG. Registrant Contact: The IESG.
XML: N/A; the requested URI is an XML namespace. XML: N/A; the requested URI is an XML namespace.
skipping to change at page 10, line 23 skipping to change at page 10, line 37
Name: ietf-subscribed-notifications Name: ietf-subscribed-notifications
Namespace: urn:ietf:params:xml:ns:yang:ietf-subscribed- Namespace: urn:ietf:params:xml:ns:yang:ietf-subscribed-
notifications notifications
Prefix: mso Prefix: mso
Reference: RFC XXXX Reference: RFC XXXX
11. Security Considerations 12. Security Considerations
The YANG module specified in this document defines a schema for data The YANG module specified in this document defines 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
[RFC5246]. [RFC5246].
The NETCONF Access Control Model (NACM) [RFC6536] provides the means The NETCONF Access Control Model (NACM) [RFC6536] provides the means
to restrict access for particular NETCONF or RESTCONF users to a to restrict access for particular NETCONF or RESTCONF users to a
preconfigured subset of all available NETCONF or RESTCONF protocol preconfigured subset of all available NETCONF or RESTCONF protocol
operations and content. operations and content.
The new data nodes introduced in this YANG module may be considered The new data nodes introduced in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus sensitive or vulnerable in some network environments. It is thus
important to control read access (e.g., via get-config or important to control read access (e.g., via get-config or
notification) to this data nodes. These are the subtrees and data notification) to this data nodes. These are the subtrees and data
nodes and their sensitivity/vulnerability: nodes and their sensitivity/vulnerability:
o /subscriptions/subscription/message-generator-ids o /subscriptions/subscription/message-observation-domain-ids
The entries in the two lists above will show where subscribed The entries in the two lists above will show where subscribed
resources might be located on the publishers. Access control MUST be resources might be located on the publishers. Access control MUST be
set so that only someone with proper access permissions has the set so that only someone with proper access permissions has the
ability to access this resource. ability to access this resource.
Other Security Considerations is the same as those discussed in YANG- Other Security Considerations is the same as those discussed in YANG-
Push [RFC8641]. Push [RFC8641].
12. Contributors 13. Contributors
Alexander Clemm Alexander Clemm
Futurewai Futurewai
2330 Central Expressway 2330 Central Expressway
Santa Clara Santa Clara
California California
United States of America United States of America
Email: ludwig@clemm.org Email: ludwig@clemm.org
13. Acknowledgements 14. Acknowledgements
We thank Kent Watsen, Mahesh Jethanandani, Martin Bjorklund, Tim We thank Kent Watsen, Mahesh Jethanandani, Martin Bjorklund, Tim
Carey and Qin Wu for their constructive suggestions for improving Carey and Qin Wu for their constructive suggestions for improving
this document. this document.
14. References 15. References
14.1. Normative References 15.1. Normative 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 12, line 23 skipping to change at page 12, line 42
[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>.
14.2. Informative References 15.2. Informative References
[I-D.ietf-netconf-https-notif] [I-D.ietf-netconf-https-notif]
Jethanandani, M. and K. Watsen, "An HTTPS-based Transport Jethanandani, M. and K. Watsen, "An HTTPS-based Transport
for Configured Subscriptions", draft-ietf-netconf-https- for Configured Subscriptions", draft-ietf-netconf-https-
notif-04 (work in progress), July 2020. notif-05 (work in progress), October 2020.
[I-D.ietf-netconf-notification-messages] [I-D.ietf-netconf-notification-messages]
Voit, E., Jenkins, T., Birkholz, H., Bierman, A., and A. Voit, E., Jenkins, T., Birkholz, H., Bierman, A., and A.
Clemm, "Notification Message Headers and Bundles", draft- Clemm, "Notification Message Headers and Bundles", draft-
ietf-netconf-notification-messages-08 (work in progress), ietf-netconf-notification-messages-08 (work in progress),
November 2019. November 2019.
[I-D.unyte-netconf-udp-notif] [I-D.ietf-netconf-udp-notif]
Zhou, T., Zheng, G., Lucente, P., Graf, T., and P. Zhou, T., Zheng, G., Lucente, P., Graf, T., and P.
Francois, "UDP-based Transport for Configured Francois, "UDP-based Transport for Configured
Subscriptions", draft-unyte-netconf-udp-notif-00 (work in Subscriptions", draft-ietf-netconf-udp-notif-01 (work in
progress), July 2020. progress), July 2020.
Appendix A. Examples Appendix A. Examples
This appendix is non-normative. This appendix is non-normative.
A.1. Dynamic Subscription A.1. Dynamic Subscription
Figure 3 shows a typical dynamic subscription to the device with Figure 3 shows a typical dynamic subscription to the device with
distributed data export capability. distributed data export capability.
+-------------+ +-------------+ +-------------+ +-------------+ +-------------+ +-------------+
| Subscriber/ | | Publisher | | Publisher | | Subscriber/ | | Publisher | | Publisher |
| Receiver | | (Master) | | (Agent) | | Receiver | | (Master) | | (Agent) |
+-------------+ +------+------+ +------+------+ +-------------+ +------+------+ +------+------+
| | | | | |
| establish-subscription | | | establish-subscription | |
+------------------------------>+ component | +------------------------------>+ component |
| | subscription | | | subscription |
| RPC Reply: OK, id #22 +-------------->+ | RPC Reply: OK, id #22 +-------------->+
| message generator ID [#1, #2] | | | Observation Domain ID [#1,#2] | |
+<------------------------------+ | +<------------------------------+ |
| | | | | |
| notif-mesg, id #22 | | | notif-mesg, id #22 | |
| message generator ID #1 | | | Observation Domain ID #1 | |
+<------------------------------+ | +<------------------------------+ |
| | | | | |
| notif-mesg, id#22 | | | notif-mesg, id#22 | |
| message generator ID #2 | | | Observation Domain ID #2 | |
+<----------------------------------------------+ +<----------------------------------------------+
| | | | | |
| modify-subscription (id#22) | | | modify-subscription (id#22) | |
+------------------------------>+ component | +------------------------------>+ component |
| | subscription | | | subscription |
| RPC Reply: OK, id #22 +-------------->+ | RPC Reply: OK, id #22 +-------------->+
+<------------------------------+ | +<------------------------------+ |
| | | | | |
| subscription-modified, id#22 | | | subscription-modified, id#22 | |
| message generator ID [#1] | | | Observation Domain ID [#1] | |
+<------------------------------+ | +<------------------------------+ |
| | | | | |
| notif-mesg, id #22 | | | notif-mesg, id #22 | |
| message generator ID #1 | | | Observation Domain ID #1 | |
+<------------------------------+ | +<------------------------------+ |
| | | | | |
| | | | | |
+ + + + + +
Fig. 3 Call Flow for Dynamic Subscription Fig. 3 Call Flow for Dynamic Subscription
A "establish-subscription" RPC request as per [RFC8641] is sent to A "establish-subscription" RPC request as per [RFC8641] is sent to
the Master with a successful response. An example of using NETCONF: the Master with a successful response. An example of using NETCONF:
skipping to change at page 14, line 29 skipping to change at page 15, line 29
<yp:period>500</yp:period> <yp:period>500</yp:period>
</yp:periodic> </yp:periodic>
</establish-subscription> </establish-subscription>
</netconf:rpc> </netconf:rpc>
Fig. 4 "establish-subscription" Request Fig. 4 "establish-subscription" Request
As the device is able to fully satisfy the request, the request is As the device is able to fully satisfy the request, the request is
given a subscription ID of 22. The response as in Figure 5 indicates given a subscription ID of 22. The response as in Figure 5 indicates
that the subscription is decomposed into two component subscriptions that the subscription is decomposed into two component subscriptions
which will be published by two message generators: #1 and #2. which will be published by two message Observation Domain ID: #1 and
#2.
<rpc-reply message-id="101" <rpc-reply message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<id <id
xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"> xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications">
22 22
</id> </id>
<message-generator-id <message-observation-domain-id
xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications> xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications>
1 1
</message-generator-id> </message-observation-domain-id>
<message-generator-id <message-observation-domain-id
xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications> xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications>
2 2
</message-generator-id> </message-observation-domain-id>
</rpc-reply> </rpc-reply>
Fig. 5 "establish-subscription" Positive RPC Response Fig. 5 "establish-subscription" Positive RPC Response
Then, both Publishers send notifications with the corresponding piece Then, both Publishers send notifications with the corresponding piece
of data to the Receiver. of data to the Receiver.
The subscriber may invoke the "modify-subscription" RPC for a The subscriber may invoke the "modify-subscription" RPC for a
subscription it previously established. The RPC has no difference to subscription it previously established. The RPC has no difference to
the single publisher case as in [RFC8641]. Figure 6 provides an the single publisher case as in [RFC8641]. Figure 6 provides an
skipping to change at page 15, line 38 skipping to change at page 16, line 38
</yp:periodic> </yp:periodic>
</modify-subscription> </modify-subscription>
</rpc> </rpc>
Fig. 6 "modify-subscription" Request Fig. 6 "modify-subscription" Request
If the modification is successfully accepted, the "subscription- If the modification is successfully accepted, the "subscription-
modified" subscription state notification is sent to the subscriber modified" subscription state notification is sent to the subscriber
by the Master. The notification, Figure 7 for example, indicates the by the Master. The notification, Figure 7 for example, indicates the
modified subscription is decomposed into one component subscription modified subscription is decomposed into one component subscription
which will be published by message generator #1. which will be published by message Observation Domain #1.
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2007-09-01T10:00:00Z</eventTime> <eventTime>2007-09-01T10:00:00Z</eventTime>
<subscription-modified <subscription-modified
xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications" xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"
xmlns:yp="urn:ietf:params:xml:ns:yang:ietf-yang-push"> xmlns:yp="urn:ietf:params:xml:ns:yang:ietf-yang-push">
<id>22</id> <id>22</id>
<yp:datastore <yp:datastore
xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores"> xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
ds:operational ds:operational
</yp:datastore> </yp:datastore>
<yp:datastore-xpath-filter <yp:datastore-xpath-filter
xmlns:ex="https://example.com/sample-data/1.0"> xmlns:ex="https://example.com/sample-data/1.0">
/ex:bar /ex:bar
</yp:datastore-xpath-filter> </yp:datastore-xpath-filter>
<yp:periodic> <yp:periodic>
<yp:period>250</yp:period> <yp:period>250</yp:period>
</yp:periodic> </yp:periodic>
<message-generator-id <message-observation-domain-id
xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationss> xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationss>
1 1
</message-generator-id> </message-observation-domain-id>
</subscription-modified> </subscription-modified>
</notification> </notification>
Fig. 7 "subscription-modified" Subscription State Notification Fig. 7 "subscription-modified" Subscription State Notification
A.2. Configured Subscription A.2. Configured Subscription
Figure 8 shows a typical configured subscription to the device with Figure 8 shows a typical configured subscription to the device with
distributed data export capability. distributed data export capability.
+-------------+ +-------------+ +-------------+ +-------------+ +-------------+ +-------------+
| Receiver | | Publisher | | Publisher | | Receiver | | Publisher | | Publisher |
| | | (Master) | | (Agent) | | | | (Master) | | (Agent) |
+------+------+ +------+------+ +------+------+ +------+------+ +------+------+ +------+------+
| | | | | |
| subscription-started, id#39 | | | subscription-started, id#39 | |
| message generator ID [#1, #2] | | | Observation Domain ID [#1,#2] | |
+<------------------------------+ | +<------------------------------+ |
| | | | | |
| notif-mesg, id#39 | | | notif-mesg, id#39 | |
| message generator ID #1 | | | Observation Domain ID #1 | |
+<------------------------------+ | +<------------------------------+ |
| | | | | |
| notif-mesg, id#39 | | | notif-mesg, id#39 | |
| message generator ID #2 | | | Observation Domain ID #2 | |
+<----------------------------------------------+ +<----------------------------------------------+
| | | | | |
| | | | | |
| | | | | |
Fig. 8 Call Flow for Configured Subscription Fig. 8 Call Flow for Configured Subscription
Before starting to push data, the "subscription-started" subscription Before starting to push data, the "subscription-started" subscription
state notification is sent to the Receiver. The following example state notification is sent to the Receiver. The following example
assumes the NETCONF transport has already established. The assumes the NETCONF transport has already established. The
notification indicates that the configured subscription is decomposed notification indicates that the configured subscription is decomposed
into two component subscriptions which will be published by two into two component subscriptions which will be published by two
message generators: #1 and #2. message Observation Domain: #1 and #2.
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2007-09-01T10:00:00Z</eventTime> <eventTime>2007-09-01T10:00:00Z</eventTime>
<subscription-started <subscription-started
xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications" xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"
xmlns:yp="urn:ietf:params:xml:ns:yang:ietf-yang-push"> xmlns:yp="urn:ietf:params:xml:ns:yang:ietf-yang-push">
<identifier>39</identifier> <identifier>39</identifier>
<yp:datastore <yp:datastore
xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores"> xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
ds:operational ds:operational
</yp:datastore> </yp:datastore>
<yp:datastore-xpath-filter <yp:datastore-xpath-filter
xmlns:ex="https://example.com/sample-data/1.0"> xmlns:ex="https://example.com/sample-data/1.0">
/ex:foo /ex:foo
</yp:datastore-xpath-filter> </yp:datastore-xpath-filter>
<yp:periodic> <yp:periodic>
<yp:period>250</yp:period> <yp:period>250</yp:period>
</yp:periodic> </yp:periodic>
<message-generator-id <message-observation-domain-id
xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications> xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications>
1 1
</message-generator-id> </message-observation-domain-id>
<message-generator-id <message-observation-domain-id
xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications> xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications>
2 2
</message-generator-id> </message-observation-domain-id>
</subscription-started> </subscription-started>
</notification> </notification>
Fig. 9 "subscription-started" Subscription State Notification Fig. 9 "subscription-started" Subscription State Notification
Then, both Publishers send notifications with the corresponding data Then, both Publishers send notifications with the corresponding data
record to the Receiver. record to the Receiver.
Authors' Addresses Authors' Addresses
 End of changes. 59 change blocks. 
85 lines changed or deleted 116 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/