draft-ietf-netconf-udp-notif-00.txt | draft-ietf-netconf-udp-notif-01.txt | |||
---|---|---|---|---|
NETCONF G. Zheng | NETCONF G. Zheng | |||
Internet-Draft T. Zhou | Internet-Draft T. Zhou | |||
Intended status: Standards Track Huawei | Intended status: Standards Track Huawei | |||
Expires: April 6, 2021 T. Graf | Expires: 6 May 2021 T. Graf | |||
Swisscom | Swisscom | |||
P. Francois | P. Francois | |||
INSA-Lyon | INSA-Lyon | |||
P. Lucente | P. Lucente | |||
NTT | NTT | |||
October 3, 2020 | 2 November 2020 | |||
UDP-based Transport for Configured Subscriptions | UDP-based Transport for Configured Subscriptions | |||
draft-ietf-netconf-udp-notif-00 | draft-ietf-netconf-udp-notif-01 | |||
Abstract | Abstract | |||
This document describes an UDP-based notification mechanism to | This document describes an UDP-based notification mechanism to | |||
collect data from networking devices. A shim header is proposed to | collect data from networking devices. A shim header is proposed to | |||
facilitate the streaming of data directly from line cards to a | facilitate the streaming of data directly from line cards to a | |||
collector. The objective is to rely on a lightweight approach to | collector. The objective is to rely on a lightweight approach to | |||
allow for higher frequency and better transit performance compared to | allow for higher frequency and better transit performance compared to | |||
already established notification mechanisms. | already established notification mechanisms. | |||
skipping to change at page 1, line 47 ¶ | skipping to change at page 1, line 47 ¶ | |||
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 6 May 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/ | |||
(https://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
publication of this document. Please review these documents | Please review these documents carefully, as they describe your rights | |||
carefully, as they describe your rights and restrictions with respect | and restrictions with respect to this document. Code Components | |||
to this document. Code Components extracted from this document must | extracted from this document must include Simplified BSD License text | |||
include Simplified BSD License text as described in Section 4.e of | as described in Section 4.e of the Trust Legal Provisions and are | |||
the Trust Legal Provisions and are provided without warranty as | 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. Configured Subscription to UDP-Notif . . . . . . . . . . . . 4 | 2. Configured Subscription to UDP-Notif . . . . . . . . . . . . 4 | |||
3. UDP-Based Transport . . . . . . . . . . . . . . . . . . . . . 4 | 3. UDP-Based Transport . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Design Overview . . . . . . . . . . . . . . . . . . . . . 4 | 3.1. Design Overview . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.2. Format of the UDP-Notif Message Header . . . . . . . . . 5 | 3.2. Format of the UDP-Notif Message Header . . . . . . . . . 5 | |||
3.3. Options . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.3. Options . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3.3.1. Fragmentation Option . . . . . . . . . . . . . . . . 6 | 3.3.1. Segmentation Option . . . . . . . . . . . . . . . . . 7 | |||
3.4. Data Encoding . . . . . . . . . . . . . . . . . . . . . . 7 | 3.4. Data Encoding . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4. Congestion Control . . . . . . . . . . . . . . . . . . . . . 8 | 4. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
5. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4.1. Congestion Control . . . . . . . . . . . . . . . . . . . 8 | |||
6. A YANG Data Model for Management of UDP-Notif . . . . . . . . 8 | 4.2. Message Size . . . . . . . . . . . . . . . . . . . . . . 9 | |||
7. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 4.3. Reliability . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | 5. A YANG Data Model for Management of UDP-Notif . . . . . . . . 9 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 6. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 12 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 14 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
11.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 13 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | 10.2. Informative References . . . . . . . . . . . . . . . . . 15 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | ||||
1. Introduction | 1. Introduction | |||
Sub-Notif [RFC8639] defines a mechanism that lets a collector | Sub-Notif [RFC8639] defines a mechanism that lets a collector | |||
subscribe to the publication of YANG-defined data maintained in a | subscribe to the publication of YANG-defined data maintained in a | |||
YANG [RFC7950] datastore. The mechanism separates the management and | YANG [RFC7950] datastore. The mechanism separates the management and | |||
control of subscriptions from the transport used to deliver the data. | control of subscriptions from the transport used to deliver the data. | |||
Three transport mechanisms, namely NETCONF transport [RFC8640], | Three transport mechanisms, namely NETCONF transport [RFC8640], | |||
RESTCONF transport [RFC8650], and HTTPS transport | RESTCONF transport [RFC8650], and HTTPS transport | |||
[I-D.ietf-netconf-https-notif] have been defined so far for such | [I-D.ietf-netconf-https-notif] have been defined so far for such | |||
notification messages. | notification messages. | |||
While powerful in its features and general in their architecture, the | While powerful in their features and general in their architecture, | |||
currently available transport mechanisms need to be complemented to | the currently available transport mechanisms need to be complemented | |||
support data publications at high velocity from devices that feature | to support data publications at high velocity from devices that | |||
a distributed architecture. The currently available transports are | feature a distributed architecture. The currently available | |||
based on TCP and lack the efficiency needed to continuously send | transports are based on TCP and lack the efficiency needed to | |||
notifications at high velocity. | continuously send notifications at high velocity. | |||
This document specifies a transport option for Sub-Notif that | This document specifies a transport option for Sub-Notif that | |||
leverages UDP. Specifically, it facilitates the distributed data | leverages UDP. Specifically, it facilitates the distributed data | |||
collection mechanism described in | collection mechanism described in | |||
[I-D.unyte-netconf-distributed-notif]. In the case of data | [I-D.ietf-netconf-distributed-notif]. In the case of data | |||
originating from multiple line cards, centralized designs require | originating from multiple line cards, centralized designs require | |||
data to be internally forwarded from those line cards to the push | data to be internally forwarded from those line cards to the push | |||
server, presumably on a route processor, which then combines the | server, presumably on a route processor, which then combines the | |||
individual data items into a single consolidated stream. The | individual data items into a single consolidated stream. The | |||
centralized data collection mechanism can result in a performance | centralized data collection mechanism can result in a performance | |||
bottleneck, especially when large amounts of data are involved. | bottleneck, especially when large amounts of data are involved. | |||
What is needed is the support for a mechanism that allows for | What is needed is the support for a mechanism that allows for | |||
directly pushing multiple substreams, e.g. one from each line card, | directly pushing multiple substreams, e.g. one from each line card, | |||
without passing them through an additional processing stage for | without passing them through an additional processing stage for | |||
internal consolidation. The proposed UDP-based transport allows for | internal consolidation. The proposed UDP-based transport allows for | |||
such a distributed data collection approach. | such a distributed data collection approach. | |||
o Firstly, a UDP approach reduces the burden of maintaining a large | * Firstly, a UDP approach reduces the burden of maintaining a large | |||
amount of active TCP connections at the collector, notably in | amount of active TCP connections at the collector, notably in | |||
cases where it collects data from the line cards of a large amount | cases where it collects data from the line cards of a large amount | |||
of networking devices. | of networking devices. | |||
o Secondly, as no connection state needs to be maintained, UDP | * Secondly, as no connection state needs to be maintained, UDP | |||
encapsulation can be easily implemented by the hardware of the | encapsulation can be easily implemented by the hardware of the | |||
publication streamer, which will further improve performance. | publication streamer, which will further improve performance. | |||
o Ultimately, such advantages allow for a larger data analysis | * Ultimately, such advantages allow for a larger data analysis | |||
feature set, as more voluminous, finer grained data sets can be | feature set, as more voluminous, finer grained data sets can be | |||
streamed to the collector. | streamed to the collector. | |||
The transport described in this document can be used for transmitting | The transport described in this document can be used for transmitting | |||
notification messages over both IPv4 and IPv6. | notification messages over both IPv4 and IPv6. | |||
This document describes the notification mechanism. It is intended | This document describes the notification mechanism. It is intended | |||
to be used in conjunction with [RFC8639], extended by | to be used in conjunction with [RFC8639], extended by | |||
[I-D.unyte-netconf-distributed-notif]. | [I-D.ietf-netconf-distributed-notif]. | |||
Section 2 describes the control of the proposed transport mechanism. | Section 2 describes the control of the proposed transport mechanism. | |||
Section 3 details the notification mechanism and message format. | Section 3 details the notification mechanism and message format. | |||
Section 4 discusses congestion control. Section 5 covers the | Section 4.1 discusses congestion control. Section 4 covers the | |||
applicability of the proposed mechanism. | applicability of the proposed mechanism. | |||
2. Configured Subscription to UDP-Notif | 2. Configured Subscription to UDP-Notif | |||
This section describes how the proposed mechanism can be controlled | This section describes how the proposed mechanism can be controlled | |||
using subscription channels based on NETCONF or RESTCONF. | using subscription channels based on NETCONF or RESTCONF. | |||
Following the usual approach of Sub-Notif, configured subscriptions | Following the usual approach of Sub-Notif, configured subscriptions | |||
contain the location information of all the receivers, including the | contain the location information of all the receivers, including the | |||
IP address and the port number, so that the publisher can actively | IP address and the port number, so that the publisher can actively | |||
skipping to change at page 4, line 29 ¶ | skipping to change at page 4, line 29 ¶ | |||
flowing. Then, the notifications can be sent immediately without | flowing. Then, the notifications can be sent immediately without | |||
delay. All the subscription state notifications, as defined in | delay. All the subscription state notifications, as defined in | |||
[RFC8639], MUST be encapsulated in separate notification messages. | [RFC8639], MUST be encapsulated in separate notification messages. | |||
3. UDP-Based Transport | 3. UDP-Based Transport | |||
In this section, we specify the UDP-Notif Transport behaviour. | In this section, we specify the UDP-Notif Transport behaviour. | |||
Section 3.1 describes the general design of the solution. | Section 3.1 describes the general design of the solution. | |||
Section 3.2 specifies the UDP-Notif message format. Section 3.3 | Section 3.2 specifies the UDP-Notif message format. Section 3.3 | |||
describes a generic optional sub TLV format. Section 3.3.1 uses such | describes a generic optional sub TLV format. Section 3.3.1 uses such | |||
options to provide a fragmentation solution for large UDP-Notif | options to provide a segmentation solution for large UDP-Notif | |||
message payloads. Section 3.4 describes the encoding of the message | message payloads. Section 3.4 describes the encoding of the message | |||
payload. | payload. | |||
3.1. Design Overview | 3.1. Design Overview | |||
As specified in Sub-Notif, the telemetry data is encapsulated in the | As specified in Sub-Notif, 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 using transport protocols such as TLS or HTTP2. Figure 1 | carried using transport protocols such as TLS or HTTP2. Figure 1 | |||
illustrates the the structure of an UDP-Notif message. | illustrates the the structure of an UDP-Notif message. | |||
o The Message Header contains information that facilitate the | * The Message Header contains information that facilitate the | |||
message transmission before deserializing the notification | message transmission before deserializing the notification | |||
message. | message. | |||
o Notification Message is the encoded content that the publication | * Notification Message is the encoded content that the publication | |||
stream transports. The common encoding methods include GPB [1], | stream transports. The common encoding methods include, CBOR | |||
CBOR [RFC7049], JSON, and XML. | [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 single notifications and bundled | of the Notification Message for single notifications and bundled | |||
notifications. | notifications. | |||
+-------+ +--------------+ +--------------+ | +-------+ +--------------+ +--------------+ | |||
| UDP | | Message | | Notification | | | UDP | | Message | | Notification | | |||
| | | Header | | Message | | | | | Header | | Message | | |||
+-------+ +--------------+ +--------------+ | +-------+ +--------------+ +--------------+ | |||
Figure 1: UDP-Notif Message Overview | Figure 1: UDP-Notif Message Overview | |||
3.2. Format of the UDP-Notif Message Header | 3.2. Format of the UDP-Notif Message Header | |||
The UDP-Notif Message Header contains information that facilitate the | The UDP-Notif Message Header contains information that facilitate the | |||
message transmission before deserializing the notification message. | message transmission before deserializing the notification message. | |||
The data format is shown in Figure 2. | The data format is shown in Figure 2. | |||
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. | ET | Header Len | Message Length | | | Ver |S| ET | Header Len | Message Length | | |||
+-------+-------+---------------+-------------------------------+ | +-----+-+-------+---------------+-------------------------------+ | |||
| Message-Generator-ID | | | Observation-Domain-ID | | |||
+---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| Message ID | | | Message-ID | | |||
+---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
~ Options ~ | ~ Options ~ | |||
+---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
Figure 2: UDP-Notif Message Header Format | Figure 2: UDP-Notif Message Header Format | |||
The Message Header contains the following field: | The Message Header contains the following field: | |||
o Version represents the PDU (Protocol Data Unit) encoding version. | * Ver represents the PDU (Protocol Data Unit) encoding version. The | |||
The initial version value is 0. | initial version value is 0. | |||
o ET is a 4 bit identifier to indicate the encoding type used for | ||||
the Notification Message. 16 types of encoding can be expressed: | ||||
* 0: GPB; | * S represents the space of encoding type specified in the ET field. | |||
When S is unset, ET represents the standard encoding types as | ||||
defined in this document. When S is set, ET represents a private | ||||
space to be freely used for non standard encodings. | ||||
* 1: CBOR; | * ET is a 4 bit identifier to indicate the encoding type used for | |||
the Notification Message. 16 types of encoding can be expressed. | ||||
When the S bit is unset, the following values apply: | ||||
* 2: JSON; | - 0: CBOR; | |||
* 3: XML; | - 1: JSON; | |||
* others are reserved. | - 2: XML; | |||
- others are reserved. | ||||
o Header Length is the length of the message header in octets, | * Header Len is the length of the message header in octets, | |||
including both the fixed header and the options. | including both the fixed header and the options. | |||
o Message Length is the total length of the message within one UDP | * Message Length is the total length of the message within one UDP | |||
datagram, measured in octets, including the message header. | datagram, measured in octets, including the message header. | |||
o Message-Generator-ID is a 32-bit identifier of the process which | * Observation-Domain-ID is a 32-bit identifier of the Observation | |||
created the notification message. This allows disambiguation of | Domain that led to the production of the notification message, as | |||
an information source, such as the identification of different | defined in [I-D.ietf-netconf-notification-messages]. This allows | |||
line cards sending the notification messages. The source IP | disambiguation of an information source, such as the | |||
address of the UDP datagrams SHOULD NOT be interpreted as the | identification of different line cards sending the notification | |||
identifier for the host that originated the UDP-Notif message. | messages. The source IP address of the UDP datagrams SHOULD NOT | |||
Indeed, the streamer sending the UDP-Notif message could be a | be interpreted as the identifier for the host that originated the | |||
relay for the actual source of data carried within UDP-Notif | UDP-Notif message. Indeed, the streamer sending the UDP-Notif | |||
messages. | message could be a relay for the actual source of data carried | |||
within UDP-Notif messages. | ||||
o The Message ID is generated continuously by the sender of UDP- | * The Message ID is generated continuously by the sender of UDP- | |||
Notif messages. Different subscribers share the same Message ID | Notif messages. Different subscribers share the same Message ID | |||
sequence. | sequence. | |||
o Options is a variable-length field in the TLV format. When the | * Options is a variable-length field in the TLV format. When the | |||
Header Length is larger than 12 octets, which is the length of the | Header Length is larger than 12 octets, which is the length of the | |||
fixed header, Options TLVs follow directly after the fixed message | fixed header, Options TLVs follow directly after the fixed message | |||
header (i.e., Message ID). The details of the options are | header (i.e., Message ID). The details of the options are | |||
described in the following section. | described in the following section. | |||
3.3. Options | 3.3. Options | |||
All the options are defined with the following format, illustrated in | All the options are defined with the following format, illustrated in | |||
Figure 3. | Figure 3. | |||
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 | |||
+---------------+---------------+-------------------------------- | +---------------+---------------+-------------------------------- | |||
| Type | Length | Variable-length data | | Type | Length | Variable-length data | |||
+---------------+---------------+-------------------------------- | +---------------+---------------+-------------------------------- | |||
Figure 3: Generic Option Format | Figure 3: Generic Option Format | |||
o Type: 1 octet describing the option type; | * Type: 1 octet describing the option type; | |||
o Length: 1 octet of the TLV Length, including the Type and Length | * Length: 1 octet representing the total number of octets in the | |||
fields; | TLV, including the Type and Length fields; | |||
o Variable-length data: 0 or more octets of TLV Value. | * Variable-length data: 0 or more octets of TLV Value. | |||
3.3.1. Fragmentation Option | 3.3.1. Segmentation Option | |||
The UDP payload length is limited to 65535. Application level | The UDP payload length is limited to 65535. Application level | |||
headers will make the actual payload shorter. Even though binary | headers will make the actual payload shorter. Even though binary | |||
encodings such as GPB and CBOR may not require more space than what | encodings such as CBOR may not require more space than what is left, | |||
is left, more voluminous encodings such as JSON and XML may suffer | more voluminous encodings such as JSON and XML may suffer from this | |||
from this size limitation. Although IPv4 and IPv6 senders can | size limitation. Although IPv4 and IPv6 senders can fragment | |||
fragment outgoing packets exceeding their Maximum Transmission | outgoing packets exceeding their Maximum Transmission Unit(MTU), | |||
Unit(MTU), fragmented IP packets may not be desired for operational | fragmented IP packets may not be desired for operational and | |||
and performance reasons. | performance reasons. | |||
Consequently, implementations of the mechanism SHOULD provide a | Consequently, implementations of the mechanism SHOULD provide a | |||
configurable max-fragment-size option to control the maximum size of | configurable max-segment-size option to control the maximum size of a | |||
a payload. | payload. | |||
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 | |||
+---------------+---------------+ | +---------------+---------------+-----------------------------+-+ | |||
| Type | Length | | | Type | Length | Segment Number |L| | |||
+-------------------------------+---------------+-------------+-+ | +---------------+---------------+-----------------------------+-+ | |||
| Fragment Number |L| | ||||
+-------------------------------------------------------------+-+ | ||||
Figure 4: Fragmentation Option Format | Figure 4: Segmentation Option Format | |||
The Fragmentation Option is to be included when the message content | The Segmentation Option is to be included when the message content is | |||
is fragmented into multiple pieces. Different fragments of one | segmented into multiple pieces. Different segments of one message | |||
message share the same Message ID. An illustration is provided in | share the same Message ID. An illustration is provided in Figure 4. | |||
Figure 4. The fields of this TLV are: | The fields of this TLV are: | |||
o Type: indicates Fragmentation Option. The Type value is to be | * Type: Generic option field which indicates a Segmentation Option. | |||
asigned. | The Type value is to be asigned. | |||
o Length: is a fixed value of 6 octets. | * Length: Generic option field which indicates the length of this | |||
option. It is a fixed value of 4 octets for the Segmentation | ||||
Option. | ||||
o Fragment Number: indicates the sequence number of the current | * Segment Number: 15-bit value indicating the sequence number of the | |||
fragment. | current segment. The first segment of a segmented message has a | |||
Segment Number value of 0. | ||||
o L: is a flag to indicate whether the current fragment is the last | * L: is a flag to indicate whether the current segment is the last | |||
one. When 0 is set, the current fragment is not the last one, | one of the message. When 0 is set, the current segment is not the | |||
hence more fragments are expected. When 1 is set, the current | last one. When 1 is set, the current segment is the last one, | |||
fragment is the last one. | meaning that the total number of segments used to transport this | |||
message is the value of the current Segment Number + 1. | ||||
An implementation of this specification MUST NOT rely on IP | ||||
fragmentation by default to carry large messages. An implementation | ||||
of this specification MUST either restrict the size of individual | ||||
messages carried over this protocol, or support the segmentation | ||||
option. | ||||
3.4. Data Encoding | 3.4. Data Encoding | |||
UDP-Notif message data can be encoded in GPB, CBOR, XML or JSON | UDP-Notif message data can be encoded in CBOR, XML or JSON format. | |||
format. It is conceivable that additional encodings may be supported | It is conceivable that additional encodings may be supported in the | |||
in the future. This can be accomplished by augmenting the | future. This can be accomplished by augmenting the subscription data | |||
subscription data model with additional identity statements used to | model with additional identity statements used to refer to requested | |||
refer to requested encodings. | encodings. | |||
Implementation MAY support multiple encoding methods per | Implementation MAY support multiple encoding methods per | |||
subscription. When bundled notifications are supported between the | subscription. When bundled notifications are 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 in a given message. | same encoding can be bundled in a given message. | |||
4. Congestion Control | 4. Applicability | |||
Congestion control mechanisms that respond to congestion by reducing | In this section, we provide an applicability statement for the | |||
traffic rates and establish a degree of fairness between flows that | proposed mechanism, following the recommendations of [RFC8085]. | |||
share the same path are vital to the stable operation of the Internet | ||||
[RFC2914]. While efficient, UDP has no built-in congestion control | ||||
mechanism. Because streaming telemetry can generate unlimited | ||||
amounts of data, transferring this data over UDP may be considered | ||||
problematic. It is not recommended to use the proposed mechanism | ||||
over congestion-sensitive network paths. The only environments where | ||||
UDP-Notif is expected to be used are managed networks. The | ||||
deployments require that the network path has been explicitly | ||||
provisioned to handle the traffic through traffic engineering | ||||
mechanisms, such as rate limiting or capacity reservations. The UDP- | ||||
Notif Message ID can be used to deduce congestion based on packet | ||||
loss detection. Hence the collector can notify the device to use a | ||||
lower streaming rate. The interaction to control the streaming rate | ||||
on the device is out of the scope of this document. | ||||
5. Applicability | The proposed mechanism falls in the category of UDP applications | |||
"designed for use within the network of a single network operator or | ||||
on networks of an adjacent set of cooperating network operators, to | ||||
be deployed in controlled environments". Implementations of the | ||||
proposed mechanism should thus follow the recommendations in place | ||||
for such specific applications. In the following, we discuss | ||||
recommendations on congestion control, message size guildelines, | ||||
reliability considerations. | ||||
4.1. Congestion Control | ||||
The proposed application falls into the category of applications | ||||
performing transfer of large amounts of data. It is expected that | ||||
the operator using the solution configures QoS on its related flows. | ||||
As per [RFC8085], such applications MAY choose not to implement any | ||||
form of congestion control, but follow the following principles. | ||||
It is NOT RECOMMENDED to use the proposed mechanism over congestion- | ||||
sensitive network paths. The only environments where UDP-Notif is | ||||
expected to be used are managed networks. The deployments require | ||||
that the network path has been explicitly provisioned to handle the | ||||
traffic through traffic engineering mechanisms, such as rate limiting | ||||
or capacity reservations. | ||||
Implementation of the proposal SHOULD NOT push unlimited amounts of | ||||
traffic by default, and SHOULD require the users to explicitely | ||||
configure such a mode of operation. | ||||
Burst mitigation through packet pacing is RECOMMENDED. Disabling | ||||
burst mitigation SHOULD require the users to explicitely configure | ||||
such a mode of operation. | ||||
Applications SHOULD monitor packet losses and provide means to the | ||||
user for retrieving information on such losses. The UDP-Notif | ||||
Message ID can be used to deduce congestion based on packet loss | ||||
detection. Hence the collector can notify the device to use a lower | ||||
streaming rate. The interaction to control the streaming rate on the | ||||
device is out of the scope of this document. | ||||
4.2. Message Size | ||||
[RFC8085] recommends not to rely on IP fragmentation for messages | ||||
whose size result in IP packets exceeding the MTU along the path. | ||||
The segmentation option of the current specification permits to | ||||
perform segmentation of the UDP Notif message content so as to not | ||||
have to rely on IP fragmentation. Implementation of the current | ||||
specification SHOULD allow for the configuration of the MTU. | ||||
4.3. Reliability | ||||
The target application for UDP-Notif is the collection of data-plane | The target application for UDP-Notif is the collection of data-plane | |||
information. The lack of reliability of the data streaming mechanism | information. The lack of reliability of the data streaming mechanism | |||
is thus considered acceptable as the mechanism is to be used in | is thus considered acceptable as the mechanism is to be used in | |||
controlled environments, mitigating the risk of information loss, | controlled environments, mitigating the risk of information loss, | |||
while allowing for publication of very large amounts of data. | while allowing for publication of very large amounts of data. | |||
Moreover, in this context, sporadic events when incomplete data | Moreover, in this context, sporadic events when incomplete data | |||
collection is provided is not critical for the proper management of | collection is provided is not critical for the proper management of | |||
the network. | the network, as information collected for the devices through the | |||
means of the proposed mechanism is to be often refreshed. | ||||
6. A YANG Data Model for Management of UDP-Notif | A collector implementation for this protocol SHOULD deal with | |||
potential loss of packets carrying a part of segmented payload, by | ||||
discarding packets that were actually received, but cannot be re- | ||||
assembled as a complete message within a given amount of time. This | ||||
time SHOULD be configurable. | ||||
5. A YANG Data Model for Management of UDP-Notif | ||||
The YANG model defined in Section 9 has two leafs augmented into one | The YANG model defined in Section 9 has two leafs augmented into one | |||
place of Sub-Notif [RFC8639], plus one identity. | place of Sub-Notif [RFC8639], plus one identity. | |||
module: ietf-udp-subscribed-notifications | module: ietf-udp-subscribed-notifications | |||
augment /sn:subscriptions/sn:subscription/sn:receivers/sn:receiver: | augment /sn:subscriptions/sn:subscription/sn:receivers/sn:receiver: | |||
+--rw address inet:ip-address | +--rw address inet:ip-address | |||
+--rw port inet:port-number | +--rw port inet:port-number | |||
+--rw enable-fragment? boolean | +--rw enable-fragment? boolean | |||
+--rw max-fragment-size? uint32 | +--rw max-fragment-size? uint32 | |||
7. YANG Module | 6. YANG Module | |||
<CODE BEGINS> file "ietf-udp-notif@2020-04-27.yang" | ||||
module ietf-udp-notif { | ||||
yang-version 1.1; | ||||
namespace | ||||
"urn:ietf:params:xml:ns:yang:ietf-udp-notif"; | ||||
prefix un; | ||||
import ietf-subscribed-notifications { | ||||
prefix sn; | ||||
reference | ||||
"RFC 8639: Subscription to YANG Notifications"; | ||||
} | ||||
import ietf-inet-types { | ||||
prefix inet; | ||||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | ||||
organization "IETF NETCONF (Network Configuration) Working Group"; | ||||
contact | ||||
"WG Web: <http:/tools.ietf.org/wg/netconf/> | ||||
WG List: <mailto:netconf@ietf.org> | ||||
Authors: Guangying Zheng | <CODE BEGINS> file "ietf-udp-notif@2020-04-27.yang" | |||
<mailto:zhengguangying@huawei.com> | module ietf-udp-notif { | |||
Tianran Zhou | yang-version 1.1; | |||
<mailto:zhoutianran@huawei.com> | namespace | |||
Thomas Graf | "urn:ietf:params:xml:ns:yang:ietf-udp-notif"; | |||
<mailto:thomas.graf@swisscom.com> | prefix un; | |||
Pierre Francois | import ietf-subscribed-notifications { | |||
<mailto:pierre.francois@insa-lyon.fr> | prefix sn; | |||
Paolo Lucente | reference | |||
<mailto:paolo@ntt.net>"; | "RFC 8639: Subscription to YANG Notifications"; | |||
} | ||||
import ietf-inet-types { | ||||
prefix inet; | ||||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | ||||
description | organization "IETF NETCONF (Network Configuration) Working Group"; | |||
"Defines UDP-Notif as a supported transport for subscribed | contact | |||
event notifications. | "WG Web: <http:/tools.ietf.org/wg/netconf/> | |||
WG List: <mailto:netconf@ietf.org> | ||||
Copyright (c) 2018 IETF Trust and the persons identified as authors | Authors: Guangying Zheng | |||
of the code. All rights reserved. | <mailto:zhengguangying@huawei.com> | |||
Tianran Zhou | ||||
<mailto:zhoutianran@huawei.com> | ||||
Thomas Graf | ||||
<mailto:thomas.graf@swisscom.com> | ||||
Pierre Francois | ||||
<mailto:pierre.francois@insa-lyon.fr> | ||||
Paolo Lucente | ||||
<mailto:paolo@ntt.net>"; | ||||
Redistribution and use in source and binary forms, with or without | description | |||
modification, is permitted pursuant to, and subject to the license | "Defines UDP-Notif as a supported transport for subscribed | |||
terms contained in, the Simplified BSD License set forth in Section | event notifications. | |||
4.c of the IETF Trust's Legal Provisions Relating to IETF Documents | ||||
(https://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX; see the RFC | Copyright (c) 2018 IETF Trust and the persons identified as authors | |||
of the code. All rights reserved. | ||||
itself for full legal notices."; | 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 | ||||
(https://trustee.ietf.org/license-info). | ||||
revision 2020-04-27 { | This version of this YANG module is part of RFC XXXX; see the RFC | |||
description | ||||
"Initial version"; | ||||
reference | ||||
"RFC XXXX: UDP-based Notifications for Streaming Telemetry"; | ||||
} | ||||
identity udp-notif { | itself for full legal notices."; | |||
base sn:transport; | ||||
description | ||||
"UDP-Notif is used as transport for notification messages | ||||
and state change notifications."; | ||||
} | ||||
identity encode-cbor { | revision 2020-04-27 { | |||
base sn:encoding; | description | |||
description | "Initial version"; | |||
"Encode data using CBOR as described in RFC 7049."; | reference | |||
reference | "RFC XXXX: UDP-based Notifications for Streaming Telemetry"; | |||
"RFC 7049: Concise Binary Object Representation"; | } | |||
} | ||||
identity encode-gpb { | identity udp-notif { | |||
base sn:encoding; | base sn:transport; | |||
description | description | |||
"Encode data using GPB."; | "UDP-Notif is used as transport for notification messages | |||
} | and state change notifications."; | |||
} | ||||
grouping target-receiver { | identity encode-cbor { | |||
description | base sn:encoding; | |||
"Provides a reusable description of a UDP-Notif target receiver."; | description | |||
leaf address { | "Encode data using CBOR as described in RFC 7049."; | |||
type inet:ip-address; | reference | |||
mandatory true; | "RFC 7049: Concise Binary Object Representation"; | |||
description | } | |||
"IP address of target UDP-Notif receiver, which can be an | ||||
IPv4 address or an IPV6 address."; | ||||
} | ||||
leaf port { | ||||
type inet:port-number; | ||||
mandatory true; | ||||
description | ||||
"Port number of target UDP-Notif receiver, if not specified, | ||||
the system should use default port number."; | ||||
} | grouping target-receiver { | |||
description | ||||
"Provides a reusable description of a UDP-Notif target receiver."; | ||||
leaf address { | ||||
type inet:ip-address; | ||||
mandatory true; | ||||
description | ||||
"IP address of target UDP-Notif receiver, which can be an | ||||
IPv4 address or an IPV6 address."; | ||||
} | ||||
leaf port { | ||||
type inet:port-number; | ||||
mandatory true; | ||||
description | ||||
"Port number of target UDP-Notif receiver, if not specified, | ||||
the system should use default port number."; | ||||
} | ||||
leaf enable-fragment { | leaf enable-fragment { | |||
type boolean; | type boolean; | |||
default false; | default false; | |||
description | description | |||
"The switch for the fragment feature. When disabled, the | "The switch for the fragment feature. When disabled, the | |||
publisher will not allow fragment for a very large data"; | publisher will not allow fragment for a very large data"; | |||
} | } | |||
leaf max-fragment-size { | leaf max-fragment-size { | |||
when "../enable-fragment = true"; | when "../enable-fragment = true"; | |||
type uint32; | type uint32; | |||
description "UDP-Notif provides a configurable max-fragment-size | description "UDP-Notif provides a configurable max-fragment-size | |||
to control the size of each message."; | to control the size of each message."; | |||
} | } | |||
} | } | |||
augment "/sn:subscriptions/sn:subscription/sn:receivers/sn:receiver" { | augment "/sn:subscriptions/sn:subscription/sn:receivers/sn:receiver" { | |||
description | description | |||
"This augmentation allows UDP-Notif specific parameters to be | "This augmentation allows UDP-Notif specific parameters to be | |||
exposed for a subscription."; | exposed for a subscription."; | |||
uses target-receiver; | uses target-receiver; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
8. IANA Considerations | 7. IANA Considerations | |||
This RFC requests that IANA assigns one UDP port number in the | This RFC requests that IANA assigns one UDP port number in the | |||
"Registered Port Numbers" range with the service name "udp-notif". | "Registered Port Numbers" range with the service name "udp-notif". | |||
This port will be the default port for the UDP-based notification | This port will be the default port for the UDP-based notification | |||
Streaming Telemetry (UDP-Notif) for NETCONF and RESTCONF. Below is | Streaming Telemetry (UDP-Notif) for NETCONF and RESTCONF. Below is | |||
the registration template following the rules of [RFC6335]. | the registration template following the rules of [RFC6335]. | |||
Service Name: udp-notif | Service Name: udp-notif | |||
Transport Protocol(s): UDP | Transport Protocol(s): UDP | |||
skipping to change at page 12, line 19 ¶ | skipping to change at page 13, line 21 ¶ | |||
XML: N/A; the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
This document also requests a new YANG module name in the YANG Module | This document also requests a new YANG module name in the YANG Module | |||
Names registry [RFC7950] with the following suggestion: | Names registry [RFC7950] with the following suggestion: | |||
name: ietf-udp-notif | name: ietf-udp-notif | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-udp-notif | namespace: urn:ietf:params:xml:ns:yang:ietf-udp-notif | |||
prefix: un | prefix: un | |||
reference: RFC XXXX | reference: RFC XXXX | |||
9. Security Considerations | 8. Security Considerations | |||
TBD | TBD | |||
10. Acknowledgements | 9. Acknowledgements | |||
The authors of this documents would like to thank Alexander Clemm, | The authors of this documents would like to thank Alexander Clemm, | |||
Eric Voit, Huiyang Yang, Kent Watsen, Mahesh Jethanandani, Stephane | Eric Voit, Huiyang Yang, Kent Watsen, Mahesh Jethanandani, Stephane | |||
Frenot, Timothy Carey, Tim Jenkins, and Yunan Gu for their | Frenot, Timothy Carey, Tim Jenkins, and Yunan Gu for their | |||
constructive suggestions for improving this document. | constructive suggestions for improving this document. | |||
11. References | 10. References | |||
11.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, | [RFC2914] Floyd, S., "Congestion Control Principles", BCP 41, | |||
RFC 2914, DOI 10.17487/RFC2914, September 2000, | RFC 2914, DOI 10.17487/RFC2914, September 2000, | |||
<https://www.rfc-editor.org/info/rfc2914>. | <https://www.rfc-editor.org/info/rfc2914>. | |||
skipping to change at page 13, line 43 ¶ | skipping to change at page 14, line 47 ¶ | |||
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>. | |||
[RFC8085] Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage | ||||
Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085, | ||||
March 2017, <https://www.rfc-editor.org/info/rfc8085>. | ||||
[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>. | |||
[RFC8640] Voit, E., Clemm, A., Gonzalez Prieto, A., Nilsen-Nygaard, | [RFC8640] Voit, E., Clemm, A., Gonzalez Prieto, A., Nilsen-Nygaard, | |||
E., and A. Tripathy, "Dynamic Subscription to YANG Events | E., and A. Tripathy, "Dynamic Subscription to YANG Events | |||
and Datastores over NETCONF", RFC 8640, | and Datastores over NETCONF", RFC 8640, | |||
DOI 10.17487/RFC8640, September 2019, | DOI 10.17487/RFC8640, September 2019, | |||
<https://www.rfc-editor.org/info/rfc8640>. | <https://www.rfc-editor.org/info/rfc8640>. | |||
[RFC8650] Voit, E., Rahman, R., Nilsen-Nygaard, E., Clemm, A., and | [RFC8650] Voit, E., Rahman, R., Nilsen-Nygaard, E., Clemm, A., and | |||
A. Bierman, "Dynamic Subscription to YANG Events and | A. Bierman, "Dynamic Subscription to YANG Events and | |||
Datastores over RESTCONF", RFC 8650, DOI 10.17487/RFC8650, | Datastores over RESTCONF", RFC 8650, DOI 10.17487/RFC8650, | |||
November 2019, <https://www.rfc-editor.org/info/rfc8650>. | November 2019, <https://www.rfc-editor.org/info/rfc8650>. | |||
11.2. Informative References | 10.2. Informative References | |||
[I-D.ietf-netconf-distributed-notif] | ||||
Zhou, T., Zheng, G., Voit, E., Graf, T., and P. Francois, | ||||
"Subscription to Distributed Notifications", Work in | ||||
Progress, Internet-Draft, draft-ietf-netconf-distributed- | ||||
notif-01, June 2020, <https://tools.ietf.org/html/draft- | ||||
ietf-netconf-distributed-notif-01>. | ||||
[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", Work in Progress, Internet- | |||
notif-04 (work in progress), July 2020. | Draft, draft-ietf-netconf-https-notif-04, 27 July 2020, | |||
<http://www.ietf.org/internet-drafts/draft-ietf-netconf- | ||||
https-notif-04.txt>. | ||||
[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", Work in | |||
ietf-netconf-notification-messages-08 (work in progress), | Progress, Internet-Draft, draft-ietf-netconf-notification- | |||
November 2019. | messages-08, 17 November 2019, <http://www.ietf.org/ | |||
internet-drafts/draft-ietf-netconf-notification-messages- | ||||
[I-D.unyte-netconf-distributed-notif] | 08.txt>. | |||
Zhou, T., Zheng, G., Voit, E., Graf, T., and P. Francois, | ||||
"Subscription to Distributed Notifications", draft-unyte- | ||||
netconf-distributed-notif-00 (work in progress), June | ||||
2020. | ||||
11.3. URIs | ||||
[1] https://developers.google.com/protocol-buffers/ | ||||
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 | |||
156 Beiqing Rd., Haidian District | 156 Beiqing Rd., Haidian District | |||
Beijing | Beijing | |||
China | China | |||
skipping to change at page 15, line 4 ¶ | skipping to change at page 16, line 20 ¶ | |||
Email: zhengguangying@huawei.com | Email: zhengguangying@huawei.com | |||
Tianran Zhou | Tianran Zhou | |||
Huawei | Huawei | |||
156 Beiqing Rd., Haidian District | 156 Beiqing Rd., Haidian District | |||
Beijing | Beijing | |||
China | China | |||
Email: zhoutianran@huawei.com | Email: zhoutianran@huawei.com | |||
Thomas Graf | Thomas Graf | |||
Swisscom | Swisscom | |||
Binzring 17 | Binzring 17 | |||
Zuerich 8045 | CH- Zuerich 8045 | |||
Switzerland | Switzerland | |||
Email: thomas.graf@swisscom.com | Email: thomas.graf@swisscom.com | |||
Pierre Francois | Pierre Francois | |||
INSA-Lyon | INSA-Lyon | |||
Lyon | Lyon | |||
France | France | |||
Email: pierre.francois@insa-lyon.fr | Email: pierre.francois@insa-lyon.fr | |||
Paolo Lucente | Paolo Lucente | |||
NTT | NTT | |||
Siriusdreef 70-72 | Siriusdreef 70-72 | |||
Hoofddorp, WT 2132 | Hoofddorp, WT 2132 | |||
NL | Netherlands | |||
Email: paolo@ntt.net | Email: paolo@ntt.net | |||
End of changes. 81 change blocks. | ||||
270 lines changed or deleted | 322 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/ |