draft-ietf-netconf-udp-pub-channel-01.txt   draft-ietf-netconf-udp-pub-channel-02.txt 
NETCONF G. Zheng NETCONF G. Zheng
Internet-Draft T. Zhou Internet-Draft T. Zhou
Intended status: Standards Track A. Clemm Intended status: Standards Track A. Clemm
Expires: May 15, 2018 Huawei Expires: September 19, 2018 Huawei
November 11, 2017 March 18, 2018
UDP based Publication Channel for Streaming Telemetry UDP based Publication Channel for Streaming Telemetry
draft-ietf-netconf-udp-pub-channel-01 draft-ietf-netconf-udp-pub-channel-02
Abstract Abstract
This document describes a UDP-based publication channel for streaming This document describes a UDP-based publication channel for streaming
telemetry use to collect data from devices. A new shim header is telemetry use to collect data from devices. A new shim header is
proposed to facilitate the distributed data collection mechanism proposed to facilitate the distributed data collection mechanism
which directly pushes data from line cards to the collector. Because which directly pushes data from line cards to the collector. Because
of the lightweight UDP encapsulation, higher frequency and better of the lightweight UDP encapsulation, higher frequency and better
transit performance can be achieved. transit performance can be achieved.
skipping to change at page 1, line 42 skipping to change at page 1, line 42
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 May 15, 2018. This Internet-Draft will expire on September 19, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2018 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. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 4 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 4
4. UDP Transport for Publication Channel . . . . . . . . . . . . 5 4. Transport Mechanisms . . . . . . . . . . . . . . . . . . . . 5
4.1. Design Overview . . . . . . . . . . . . . . . . . . . . . 5 4.1. Dynamic Subscription . . . . . . . . . . . . . . . . . . 5
4.2. Data Format of the Message Header . . . . . . . . . . . . 6 4.2. Configured Subscription . . . . . . . . . . . . . . . . . 6
4.3. Options . . . . . . . . . . . . . . . . . . . . . . . . . 8 5. UDP Transport for Publication Channel . . . . . . . . . . . . 7
4.3.1. Reliability Option . . . . . . . . . . . . . . . . . 8 5.1. Design Overview . . . . . . . . . . . . . . . . . . . . . 7
4.4. Data Encoding . . . . . . . . . . . . . . . . . . . . . . 9 5.2. Data Format of the Message Header . . . . . . . . . . . . 8
5. Congestion Control . . . . . . . . . . . . . . . . . . . . . 9 5.3. Options . . . . . . . . . . . . . . . . . . . . . . . . . 9
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 5.3.1. Reliability Option . . . . . . . . . . . . . . . . . 10
7. Security Considerations . . . . . . . . . . . . . . . . . . . 10 5.3.2. Fragmentation Option . . . . . . . . . . . . . . . . 11
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 5.4. Data Encoding . . . . . . . . . . . . . . . . . . . . . . 11
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 6. Congestion Control . . . . . . . . . . . . . . . . . . . . . 12
9.1. Normative References . . . . . . . . . . . . . . . . . . 10 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
9.2. Informative References . . . . . . . . . . . . . . . . . 10 8. Security Considerations . . . . . . . . . . . . . . . . . . . 12
9.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 11 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13
Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 11 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 13
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 10.1. Normative References . . . . . . . . . . . . . . . . . . 13
10.2. Informative References . . . . . . . . . . . . . . . . . 13
10.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 14
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15
1. Introduction 1. Introduction
Streaming telemetry refers to sending a continuous stream of Streaming telemetry refers to sending a continuous stream of
operational data from a device to a remote receiver. This provides operational data from a device to a remote receiver. This provides
an ability to monitor a network from remote and to provide network an ability to monitor a network from remote and to provide network
analytics. Devices generate telemetry data and push that data to a analytics. Devices generate telemetry data and push that data to a
collector for further analysis. By streaming the data, much better collector for further analysis. By streaming the data, much better
performance, finer-grained sampling, monitoring accuracy, and performance, finer-grained sampling, monitoring accuracy, and
bandwidth utilization can be achieved than with polling-based bandwidth utilization can be achieved than with polling-based
alternatives. alternatives.
Sub-Notif [I-D.ietf-netconf-subscribed-notifications] and YANG-Push Sub-Notif [I-D.ietf-netconf-subscribed-notifications] and YANG-Push
[I-D.ietf-netconf-yang-push] defines a mechanism that allows a [I-D.ietf-netconf-yang-push] defines a mechanism that allows a
collector to subscribe to updates of YANG-defined data that is collector to subscribe to updates of YANG-defined data that is
maintained in a YANG [RFC7950] datastore. The mechanism separates maintained in a YANG [RFC7950] datastore. The mechanism separates
the management and control of subscriptions from the transport that the management and control of subscriptions from the transport that
is used to actually stream and deliver the data. Two transports have is used to actually stream and deliver the data. Two transports,
been defined so far, NETCONF [RFC6241] and RESTCONF [RFC8040]. NETCONF transport [I-D.ietf-netconf-netconf-event-notifications] and
HTTP transport [I-D.ietf-netconf-restconf-notif], have been defined
so far for the notification messages.
While powerful in its features and general in its architecture, in While powerful in its features and general in its architecture, in
its current form the mechanism needs to be extended to stream its current form the mechanism needs to be extended to stream
telemetry data at high velocity from devices that feature a telemetry data at high velocity from devices that feature a
distributed architecture. The transports that have been defined so distributed architecture. The transports that have been defined so
far, NETCONF and RESTCONF, are ultimately based on TCP (Transmission far, NETCONF and HTTP, are ultimately based on TCP and lack the
Control Protocol) and lack the efficiency needed to stream data efficiency needed to stream data continuously at high velocity. A
continuously at high velocity. A lighter-weight, more efficient lighter-weight, more efficient transport, e.g. a transport based on
transport, e.g. a transport based on UDP (User Datagram Protocol) is UDP is needed.
needed.
o Firstly, data collector will suffer a lot of TCP connections from, o Firstly, data collector will suffer a lot of TCP connections from,
for example, many line cards equipped on different devices. for example, many line cards equipped on different devices.
o Secondly, as no connection state needs to be maintained, UDP o Secondly, as no connection state needs to be maintained, UDP
encapsulation can be easily implemented by hardware which will encapsulation can be easily implemented by hardware which will
further improve the performance. further improve the performance.
o Thirdly, because of the lightweight UDP encapsulation, higher o Thirdly, because of the lightweight UDP encapsulation, higher
frequency and better transit performance can be achieved, which is frequency and better transit performance can be achieved, which is
important for streaming telemetry. important for streaming telemetry.
This document specifies a higher-performance transport option for This document specifies a higher-performance transport option for
YANG-Push that leverages UDP. Specifically, it facilitates the YANG-Push that leverages UDP. Specifically, it facilitates the
distributed data collection mechanism described in distributed data collection mechanism described in
[I-D.zhou-netconf-multi-stream-originators]. In the case of data [I-D.zhou-netconf-multi-stream-originators]. In the case of data
originating from multiple line cards, the design requires data to be originating from multiple line cards, the centralized design requires
internally forwarded from those line cards to the push server, data to be internally forwarded from those line cards to the push
presumably on a main board, which then combines the individual data server, presumably on a main board, which then combines the
items into a single consolidated stream. The centralized data individual data items into a single consolidated stream. The
collection mechanism can result in a performance bottleneck, centralized data collection mechanism can result in a performance
especially when large amounts of data are involved. What is needed bottleneck, especially when large amounts of data are involved. What
instead is the support for a distributed mechanism that allows to is needed instead is the support for a distributed mechanism that
directly push multiple individual substreams, e.g. one from each line allows to directly push multiple individual substreams, e.g. one from
card, without needing to first pass them through an additional each line card, without needing to first pass them through an
processing stage for internal consolidation, but still allowing those additional processing stage for internal consolidation, but still
substreams to be managed and controlled via a single subscription. allowing those substreams to be managed and controlled via a single
The proposed UDP publication channel natively supports the subscription. The proposed UDP based Publication Channel (UPC)
distributed data collection mechanism. natively supports the distributed data collection mechanism.
The transport described in this document can be used for transmitting
notification messages over both IPv4 and IPv6 [RFC8200].
While this document will focus on the data publication channel, the While this document will focus on the data publication channel, the
subscription can be used in conjunction with the mechanism proposed subscription can be used in conjunction with the mechanism proposed
in [I-D.ietf-netconf-yang-push] with necessary extensions in [I-D.ietf-netconf-yang-push] with extensions
[I-D.zhou-netconf-multi-stream-originators]. [I-D.zhou-netconf-multi-stream-originators].
2. Terminology 2. Terminology
Streaming telemetry: refers to sending a continuous stream of Streaming Telemetry: refers to sending a continuous stream of
operational data from a device to a remote receiver. This provides operational data from a device to a remote receiver. This provides
an ability to monitor a network from remote and to provide network an ability to monitor a network from remote and to provide network
analytics. analytics.
3. Solution Overview 3. Solution Overview
The typical distributed data collection solution is shown in Fig. 1. The typical distributed data collection solution is shown in Fig. 1.
The Subscriber cannot see the Agents directly, so it will send the Both the Collector and the Subscribed Domain can be distributed. The
Global Subscription information to the Master (e.g., main board). Collector includes the Subscriber and a set of Receivers. And the
When receiving a Global Subscription, the Subscription Server Subscribed Domain includes a Master and a set of Agents. The
decomposes the subscription request into multiple Component Subscriber cannot see the Agents directly, so it will send the Global
Subscription information to the Master (e.g., main board) via the
Subscription Channel. When receiving a Global Subscription, the
Master decomposes the subscription request into multiple Component
Subscriptions, each involving data from a separate internal telemetry Subscriptions, each involving data from a separate internal telemetry
source, for example a line card. The Component Subscriptions are source, for example a line card. The Component Subscriptions are
distributed to the Component Subscription Server located in Agents. distributed to the Agents. Subsequently, each data originator
Subsequently, each Agent generates its own stream of telemetry data, generates its own stream of telemetry data, collecting and
collecting and encapsulating the packets per the Component encapsulating the packets per the Component Subscription and
Subscription and streaming them to the designated Collector.This streaming them to the designated Receivers. This distributed data
distributed data collection mechanism may form multiple Publication collection mechanism may form multiple Publication Channels between
Channels between the data originators and the Collector. The the Data Originators and the Receivers. The Collector is able to
Collector is able to assemble many pieces of data associated with one assemble many pieces of data associated with one Global Subscription.
Global Subscription.
The Publication Channel supports the reliable data streaming, for The Publication Channel supports the reliable data streaming, for
example for some alarm events. The Collector has the option of example for some alarm events. The Collector has the option of
deducing the packet loss and the disorder based on the information deducing the packet loss and the disorder based on the information
carried by the notification data. And the Collector will decide the carried by the notification data. And the Collector will decide the
behavior to request retransmission. The Collector can send the behavior to request retransmission.
retransmission request to the subscriber server for further
processing.
The rest of the draft describes the UDP based publication channel. The rest of the draft describes the UDP based Publication Channel
(UPC).
retransmission + + Global +---------------------------------+
request | | Subscription | Collector |
+------------------------+ | |
| | | Master | | +------------+ +-----------+ |
| +--v----v--------+ | | | Subscriber | | Receivers | |
| | Subscription | | | +----+-------+ +--^----^---+ |
| | Server | | | | | | |
| +--+----+-----+--+ | +---------------------------------+
| | | | | internal | | |
Component +------------------------+ subscription Subscription | | | Publication
Subscription | | | distribution Channel | | | Channel
+---------------+ | +--------------+ | +---------+ |
| | | | | |
+------------------+ +------------------+ +------------------+ +---------------------------------+
| | | | | | | | | | | | | |
| +-------v------+ | | +------v-------+ | | +-----v--------+ | | +---v---+--+ +------+-+ |
| | Component | | | | Component | | | | Component | | | | Master | | Agents | |
| | Subscription | | | | Subscription | | | | Subscription | | | +----------+ +--------+ |
| | Server | | | | Server | | | | Server | | | |
| +--------------+ | | +--------------+ | | +--------------+ | | Subscribed Domain |
| Agent 1 | | Agent 2 | | Agent n | +---------------------------------+
+---------+--------+ +--------+---------+ +----------+-------+
| | |
| | Publication Channel |
+--------------+ | +-----------------+
| | |
+-v-----v-----v-+
| |
| Collector |
| |
+---------------+
Fig. 1 Distributed Data Collection Fig. 1 Distributed Data Collection
4. UDP Transport for Publication Channel 4. Transport Mechanisms
4.1. Design Overview For a complete pub-sub mechanism, this section will describe how the
UPC is used to interact with the Subscription Channel relying on
NETCONF or RESTCONF.
4.1. Dynamic Subscription
Dynamic subscriptions for YANG-Push [I-D.ietf-netconf-yang-push] are
configured and managed via signaling messages transported over
NETCONF [RFC6241] or RESTCONF [RFC8040]. The YANG-Push defined RPCs
are sent and responded via the Subscription Channel (a), between the
Subscriber and the Master of the Subscribed Domain. In this case,
only one Receiver is associated with the Subscriber. In the
Subscribed Domain, there may be multiple Data Originators.
Notification messages are pushed on separate channels (b), from
different Data Originators to the Receiver .
+--------------+ +--------------+
| Collector | | Subscribed |
| | | Domain |
| (a) (b) | | (a) (b) |
+--+------+----+ +--+-------+---+
| | | |
| | RPC:establish-subscription | |
+----------------------------------------> |
| | RPC Reply: OK | |
<----------------------------------------+ |
| | UPC:notifications | |
| <-----------------------------------------+
| | | |
| | RPC:modify-subscription | |
+----------------------------------------> |
| | RPC Reply: OK | |
<----------------------------------------+ |
| | UPC:notifications | |
| <-----------------------------------------+
| | | |
| | RPC:delete subscription | |
+----------------------------------------> |
| | RPC Reply: OK | |
<----------------------------------------+ |
| | | |
| | | |
+ + + +
Fig. 2 Call Flow for Dynamic Subscription
In the case of dynamic subscription, the Receiver and the Subscriber
SHOULD be collocated. So UPC can use the source IP address of the
Subscription Channel as it's destination IP address. The Receiver
MUST support listening messages at the IANA-assigned PORT-X, but MAY
be configured to listen at a different port.
4.2. Configured Subscription
For a Configured Subscription, there is no guarantee that the
Subscriber is currently in place with the associated Receiver(s). As
defined in [I-D.ietf-netconf-yang-push], the subscription
configuration contains the location information of all the receivers,
including the IP address and the port number. So that the Data
Originator can actively send generated messages to the corresponding
Receivers via the UPC.
The first message MUST be a separate subscription-started
notification to indicate the Receiver that the pushing is started.
Then, the notifications can be sent immediately without any wait.
All the subscription state notifications, as defined in
[I-D.ietf-netconf-subscribed-notifications], MUST be encapsulated to
be separated notification messages.
+--------------+ +--------------+
| Collector | | Subscribed |
| | | Domain |
| (a) (b) | | (a) (b) |
+--+------+----+ +--+-------+---+
| | | |
| | Capability Exchange | |
<----------------------------------------> |
| | | |
| | Edit config(create) | |
+----------------------------------------> |
| | RPC Reply: OK | |
<----------------------------------------+ |
| | UPC:subscription started | |
| <-----------------------------------------+
| | UPC:notifications | |
| <-----------------------------------------+
| | | |
| | Edit config(delete) | |
+----------------------------------------> |
| | RPC Reply: OK | |
<----------------------------------------+ |
| | UPC:subscription terminated | |
| <-----------------------------------------+
| | | |
| | | |
+ + + +
Fig. 3 Call Flow for Configured Subscription
5. UDP Transport for Publication Channel
5.1. Design Overview
As specified in YANG-Push, the telemetry data is encapsulated in the As specified in YANG-Push, the telemetry data is encapsulated in the
NETCONF/RESTCONF notification message, which is then encapsulated and NETCONF/RESTCONF notification message, which is then encapsulated and
carried in the transport protocols, e.g. TLS, HTTP2. The following carried in the transport protocols, e.g. TLS, HTTP2. The following
figure shows the overview of the UDP publication message structure. figure shows the overview of the typical UDP publication message
structure.
o Next to the UDP encapsulation, the DTLS layer is to provide
reusable security and authentication functions over UDP.
o The Message Header contains information that can facilitate the o The Message Header contains information that can facilitate the
message transmission before de-serializing the notification message transmission before de-serializing the notification
message. message.
o Notification Message is the encoded content that the publication o Notification Message is the encoded content that the publication
channel transports. The common encoding method includes GPB [1], channel transports. The common encoding method includes GPB [1],
CBOR [RFC7049], JSON, and XML. CBOR [RFC7049], JSON, and XML.
[I-D.ietf-netconf-notification-messages] describes the structure [I-D.ietf-netconf-notification-messages] describes the structure
of the Notification Message for both single notification and of the Notification Message for both single notification and
multiple bundled notifications. multiple bundled notifications.
+--------------+ +-------+ +--------------+ +--------------+
| Notification | | UDP | | Message | | Notification |
| Message | | | | Header | | Message |
+--------------+ +-------+ +--------------+ +--------------+
+--------------+
| Message |
| Header |
+--------------+
+--------------+
| DTLS |
+--------------+
+--------------+
| UDP |
+--------------+
Fig. 2 UDP Publication Message Overview Fig. 4 UDP Publication Message Overview
4.2. Data Format of the Message Header 5.2. Data Format of the Message Header
The Message Header contains information that can facilitate the The Message Header contains information that can facilitate the
message transmission before de-serializing the notification message. message transmission before de-serializing the notification message.
The data format is shown as follows. The data format is shown as follows.
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-------+---------------+-------+-------------------------------+ +-------+---------------+-------+-------------------------------+
| Vers. | Flag | ET | Length | | Vers. | Flag | ET | Length |
+-------+---------------+-------+-------------------------------+ +-------+---------------+-------+-------------------------------+
| Notification-Time | | Subscribed Domain ID |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| Message-Generator-ID | | Message ID |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
~ Options ~ ~ Options ~
+---------------------------------------------------------------+ +---------------------------------------------------------------+
Fig. 3 Message Header Format Fig. 5 Message Header Format
The Message Header contains the following field: The Message Header contains the following field:
o Vers.: represents the PDU (Protocol Data Unit) encoding version. o Vers.: represents the PDU (Protocol Data Unit) encoding version.
The initial version value is 0. The initial version value is 0.
o Flag: is a bitmap indicating what features this packet has and the o Flag: is a bitmap indicating what features this packet has and the
corresponding options attached. Each bit associates to one corresponding options attached. Each bit associates to one
feature and one option data. When the bit is set to 1, the feature and one option data. When the bit is set to 1, the
associated feature is enabled and the option data is attached. associated feature is enabled and the option data is attached.
skipping to change at page 7, line 28 skipping to change at page 9, line 4
The Message Header contains the following field: The Message Header contains the following field:
o Vers.: represents the PDU (Protocol Data Unit) encoding version. o Vers.: represents the PDU (Protocol Data Unit) encoding version.
The initial version value is 0. The initial version value is 0.
o Flag: is a bitmap indicating what features this packet has and the o Flag: is a bitmap indicating what features this packet has and the
corresponding options attached. Each bit associates to one corresponding options attached. Each bit associates to one
feature and one option data. When the bit is set to 1, the feature and one option data. When the bit is set to 1, the
associated feature is enabled and the option data is attached. associated feature is enabled and the option data is attached.
The sequence of the presence of the options follows the bit order The sequence of the presence of the options follows the bit order
of the bitmap. In this document, the flag is specified as of the bitmap. In this document, the flag is specified as
follows: follows:
* bit 0, the reliability flag; * bit 0, the reliability flag;
* other bits are reserved. * bit 1, the fragmentation flag;
* other bits are reserved. All the reserved bits MUST be set to
0.
o ET: is a 4 bits identifier to indicate the encoding type used for o ET: is a 4 bits identifier to indicate the encoding type used for
the Notification Message. 16 types of encoding can be expressed: the Notification Message. While 16 types of encoding can be
expressed, this document specifies the following usage:
* 0: GPB; * 0: GPB;
* 1: CBOR; * 1: CBOR;
* 2: JSON; * 2: JSON;
* 3: XML; * 3: XML;
* others are reserved. * others are reserved.
o Length: is the total length of the message, measured in octets, o Length: is the total length of the message, measured in octets,
including message header. including message header. If the notification message is
fragmented, this Length indicates the actual length of the current
message fragmentation.
o Message-Generator-ID: is a 32-bit identifier of the process which o Subscribed Domain ID: is a 32-bit identifier of the Subscribed
created the message notification. This allows disambiguation of Domain. With this parameter, the receiver can easily identify
an information source, such as the identification of different messages generated from the same Subscription Domain. One
line cards sending the notification messages. possible value is the visible IPv4 address of the Master.
o Notification-Time: is the time at which the message leaves the o The Message ID is generated continuously by the Data Originator.
exporter, expressed in seconds since the UNIX epoch of 1 January Different subscribers share the same Message ID sequence.
1970 at 00:00 UTC, encoded as an unsigned 32-bit integer. Different fragmentations of one message share the same Message ID.
o Options: is a variable-length field. The details of the Options o Options: is a variable-length field. The details of the Options
will be described in the respective sections below. will be described in the respective sections below.
4.3. Options 5.3. Options
The order of packing the data fields in the Options field follows the The order of packing the data fields in the Options field follows the
bit order of the Flag field. bit order of the Flag field.
4.3.1. Reliability Option 5.3.1. Reliability Option
The UDP based publication transport described in this document The UDP based publication transport described in this document
provides two streaming modes, the reliable mode an the unreliable provides two streaming modes, the reliable mode an the unreliable
mode, for different SLA (Service Level Agreement) and telemetry mode, for different SLA (Service Level Agreement) and telemetry
requirements. requirements.
In the unreliable streaming mode, the line card pushes the In the unreliable streaming mode, the line card pushes the
encapsulated data to the data collector without any sequence encapsulated data to the data collector without any sequence
information. So the subscriber does not know whether the data is information. So the subscriber does not know whether the data is
correctly received or not. Hence no retransmission happens. correctly received or not.
The reliable streaming mode provides sequence information in the UDP The reliable streaming mode provides sequence information in the UDP
packet, based on which the subscriber can deduce the packet loss and packet, based on which the subscriber can deduce the packet loss and
disorder. Then the subscriber can decide whether to request the disorder. Then the subscriber can decide whether to request the
retransmission of the lost packets. retransmission of the lost packets.
In most case, the unreliable streaming mode is preferred. Because In most case, the unreliable streaming mode is preferred. Because
the reliable streaming mode will cost more network bandwidth and the reliable streaming mode will cost more network bandwidth and
precious device resource. Different from the unreliable streaming precious device resource. Different from the unreliable streaming
mode, the line card cannot remove the sent reliable notifications mode, the line card cannot remove the sent reliable notifications
skipping to change at page 9, line 4 skipping to change at page 10, line 34
precious device resource. Different from the unreliable streaming precious device resource. Different from the unreliable streaming
mode, the line card cannot remove the sent reliable notifications mode, the line card cannot remove the sent reliable notifications
immediately, but to keep them in the memory for a while. Reliable immediately, but to keep them in the memory for a while. Reliable
notifications may be pushed multiple times, which will increase the notifications may be pushed multiple times, which will increase the
traffic. When choosing the reliable streaming mode or the unreliable traffic. When choosing the reliable streaming mode or the unreliable
streaming mode, the operate need to consider the reliable requirement streaming mode, the operate need to consider the reliable requirement
together with the resource usage. together with the resource usage.
When the reliability flag bit is set to 1 in the Flag field, the When the reliability flag bit is set to 1 in the Flag field, the
following option data will be attached following option data will be attached
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| Notification ID | | Previous Message ID |
+---------------------------------------------------------------+
| Previous Notification ID |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
Fig. 4 Reliability Option Format Fig. 4 Reliability Option Format
The notification ID is generated continuously by the message The Data Originator has the capability of index the Previous Message
generator. Different subscribers share the same notification ID ID for the message. Together with the current Message ID, the
sequence. Current ID and previous ID will be added in the packets. Receiver can detect whether the current message is in a right order.
For example, there are two subscriber A and B, For example, there are two subscriber A and B,
o Notification IDs for the generator are : [1, 2, 3, 4, 5, 6, 7, 8, o Message IDs for the generator are : [1, 2, 3, 4, 5, 6, 7, 8, 9],
9], in which Subscriber A subscribes [1,2,3,6,7] and Subscriber B in which Subscriber A subscribes [1,2,3,6,7] and Subscriber B
subscribes [1,2,4,5,7,8,9]. subscribes [1,2,4,5,7,8,9].
o Subscriber A will receive : [0,1][1,2][2,3][3,6][6,7]. o Subscriber A will receive : [0,1][1,2][2,3][3,6][6,7].
o Subscriber B will receive : [0,1][1,2][2,4][4,5][5,7][7,8]. o Subscriber B will receive : [0,1][1,2][2,4][4,5][5,7][7,8].
4.4. Data Encoding 5.3.2. Fragmentation Option
UDP payload has a theoretical length limitation to 65535. Other
encapsulation headers will make the actual payload even shorter.
Binary encodings like GPB and CBOR can generate a compact
notification message. So that the message can fit in one UDP packet.
In this case, fragmentation will not easily happen. However, text
encodings like JSON and XML can easily generate a notification
message exceeding the UDP length limitation.
The fragmentation flag in the fixed header is set to 1 only when the
Notification Message is actually fragmented. And the Fragmentation
Option is available in the message header when the fragmentation flag
is set to 1.
The Fragmentation Option is formatted as follow:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-------------------------------------------------------------+-+
| Fragment Number |L|
+---------------------------------------------------------------+
Fig. 5 Fragmentation Option Format
This option contains:
o Fragment Number: indicates the sequence number of the current
fragment. Together with the Message ID, the Receiver can compose
the entire Notification Message.
o L: is a flag to indicate whether the current fragment is the last
one. When 0 is set, current fragment is not the last one, hence
more fragments are expected. When 1 is set, current fragment is
the last one.
5.4. Data Encoding
Subscribed data can be encoded in GPB, CBOR, XML or JSON format. It Subscribed data can be encoded in GPB, CBOR, XML or JSON format. It
is conceivable that additional encodings may be supported as options is conceivable that additional encodings may be supported as options
in the future. This can be accomplished by augmenting the in the future. This can be accomplished by augmenting the
subscription data model with additional identity statements used to subscription data model with additional identity statements used to
refer to requested encodings. refer to requested encodings.
Implementation may support different encoding method per Implementation may support different encoding method per
subscription. When bundled notifications is supported between the subscription. When bundled notifications is supported between the
publisher and the receiver, only subscribed notifications with the publisher and the receiver, only subscribed notifications with the
same encoding can be bundled as one message. same encoding can be bundled as one message.
5. Congestion Control 6. Congestion Control
While efficient, UDP has no build-in congestion control mechanism. Congestion control mechanisms that respond to congestion by reducing
It is not recommended to use the UDP based publication channel over traffic rates and establish a degree of fairness between flows that
congestion-sensitive network paths. The deployments require the share the same path are vital to the stable operation of the Internet
communications from exporters to collectors are always congestion [RFC2914]. While efficient, UDP has no build-in congestion control
controllable, i.e., the transport is over dedicated links or the mechanism. Because streaming telemetry can generate unlimited
streaming rate can be limited. amounts of data, transferring this data over UDP is generally
problematic. It is not recommended to use the UPC over congestion-
sensitive network paths. The only environments where the UPC MAY be
used are managed networks. The deployments require the network path
has been explicitly provisioned for the UPC through traffic
engineering mechanisms, such as rate limiting or capacity
reservations.
6. IANA Considerations 7. IANA Considerations
TBD This RFC requests that IANA assigns one UDP port number in the
"Registered Port Numbers" range with the service names "udp-pub-ch".
This port will be the default port for the UDP based publication
channel for NETCONF and RESTCONF. Below is the registration template
following the rules in [RFC6335].
7. Security Considerations Service Name: udp-pub-ch
Transport Protocol(s): UDP
Assignee: IESG <iesg@ietf.org>
Contact: IETF Chair <chair@ietf.org>
Description: NETCONF Call Home (SSH)
Reference: RFC XXXX
Port Number: PORT-X
8. Security Considerations
TBD TBD
8. Acknowledgements 9. Acknowledgements
The authors of this documents would like to thank Eric Voit, Tim The authors of this documents would like to thank Eric Voit, Tim
Jenkins, and Huiyang Yang for the initial comments. Jenkins, and Huiyang Yang for the initial comments.
9. References 10. References
9.1. Normative References 10.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>.
[RFC2914] Floyd, S., "Congestion Control Principles", BCP 41,
RFC 2914, DOI 10.17487/RFC2914, September 2000,
<https://www.rfc-editor.org/info/rfc2914>.
[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>.
[RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object [RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object
Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049, Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049,
October 2013, <https://www.rfc-editor.org/info/rfc7049>. October 2013, <https://www.rfc-editor.org/info/rfc7049>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016, RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/info/rfc7950>. <https://www.rfc-editor.org/info/rfc7950>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
<https://www.rfc-editor.org/info/rfc8040>. <https://www.rfc-editor.org/info/rfc8040>.
9.2. Informative References [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", STD 86, RFC 8200,
DOI 10.17487/RFC8200, July 2017,
<https://www.rfc-editor.org/info/rfc8200>.
10.2. Informative References
[I-D.ietf-netconf-netconf-event-notifications]
Prieto, A., Voit, E., Clemm, A., Nilsen-Nygaard, E., and
A. Tripathy, "NETCONF Support for Event Notifications",
draft-ietf-netconf-netconf-event-notifications-08 (work in
progress), February 2018.
[I-D.ietf-netconf-notification-messages] [I-D.ietf-netconf-notification-messages]
Voit, E., Bierman, A., Clemm, A., and T. Jenkins, Voit, E., Birkholz, H., Bierman, A., Clemm, A., and T.
"Notification Message Headers and Bundles", draft-ietf- Jenkins, "Notification Message Headers and Bundles",
netconf-notification-messages-02 (work in progress), draft-ietf-netconf-notification-messages-03 (work in
October 2017. progress), February 2018.
[I-D.ietf-netconf-restconf-notif]
Voit, E., Tripathy, A., Nilsen-Nygaard, E., Clemm, A.,
Prieto, A., and A. Bierman, "RESTCONF and HTTP Transport
for Event Notifications", draft-ietf-netconf-restconf-
notif-04 (work in progress), January 2018.
[I-D.ietf-netconf-subscribed-notifications] [I-D.ietf-netconf-subscribed-notifications]
Voit, E., Clemm, A., Prieto, A., Nilsen-Nygaard, E., and Voit, E., Clemm, A., Prieto, A., Nilsen-Nygaard, E., and
A. Tripathy, "Custom Subscription to Event Streams", A. Tripathy, "Custom Subscription to Event Streams",
draft-ietf-netconf-subscribed-notifications-07 (work in draft-ietf-netconf-subscribed-notifications-10 (work in
progress), October 2017. progress), February 2018.
[I-D.ietf-netconf-yang-push] [I-D.ietf-netconf-yang-push]
Clemm, A., Voit, E., Prieto, A., Tripathy, A., Nilsen- Clemm, A., Voit, E., Prieto, A., Tripathy, A., Nilsen-
Nygaard, E., Bierman, A., and B. Lengyel, "YANG Datastore Nygaard, E., Bierman, A., and B. Lengyel, "YANG Datastore
Subscription", draft-ietf-netconf-yang-push-11 (work in Subscription", draft-ietf-netconf-yang-push-15 (work in
progress), October 2017. progress), February 2018.
[I-D.zhou-netconf-multi-stream-originators] [I-D.zhou-netconf-multi-stream-originators]
Zhou, T., Zheng, G., Voit, E., Clemm, A., and A. Bierman, Zhou, T., Zheng, G., Voit, E., Clemm, A., and A. Bierman,
"Subscription to Multiple Stream Originators", draft-zhou- "Subscription to Multiple Stream Originators", draft-zhou-
netconf-multi-stream-originators-00 (work in progress), netconf-multi-stream-originators-01 (work in progress),
October 2017. November 2017.
9.3. URIs 10.3. URIs
[1] https://developers.google.com/protocol-buffers/ [1] https://developers.google.com/protocol-buffers/
Appendix A. Change Log Appendix A. Change Log
(To be removed by RFC editor prior to publication) (To be removed by RFC editor prior to publication)
A.1. draft-ietf-zheng-udp-pub-channel-00 to v00 A.1. draft-ietf-zheng-udp-pub-channel-00 to v00
o Modified the telemetry header format. o Modified the message header format.
o Add a section on the Authentication Option. o Added a section on the Authentication Option.
o Cleaned up the text and removed unnecessary TBDs. o Cleaned up the text and removed unnecessary TBDs.
A.2. v01 A.2. v01
o Removed the detailed description on distributed data collection o Removed the detailed description on distributed data collection
mechanism from this document. Mainly focused on the description mechanism from this document. Mainly focused on the description
of a UDP based publication channel for telemetry use. of a UDP based publication channel for telemetry use.
o Modified the telemetry header format. o Modified the message header format.
A.2. v02
o Add the section on the transport mechanism.
o Modified the fixed message header format.
o Add the fragmentation option for the message header.
Authors' Addresses Authors' Addresses
Guangying Zheng Guangying Zheng
Huawei Huawei
101 Yu-Hua-Tai Software Road 101 Yu-Hua-Tai Software Road
Nanjing, Jiangsu Nanjing, Jiangsu
China China
Email: zhengguangying@huawei.com Email: zhengguangying@huawei.com
Tianran Zhou Tianran Zhou
Huawei Huawei
 End of changes. 59 change blocks. 
170 lines changed or deleted 351 lines changed or added

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