| < draft-ietf-netconf-udp-notif-01.txt | draft-ietf-netconf-udp-notif-02.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: 6 May 2021 T. Graf | Expires: November 27, 2021 T. Graf | |||
| Swisscom | Swisscom | |||
| P. Francois | P. Francois | |||
| INSA-Lyon | INSA-Lyon | |||
| P. Lucente | P. Lucente | |||
| NTT | NTT | |||
| 2 November 2020 | May 26, 2021 | |||
| UDP-based Transport for Configured Subscriptions | UDP-based Transport for Configured Subscriptions | |||
| draft-ietf-netconf-udp-notif-01 | draft-ietf-netconf-udp-notif-02 | |||
| 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 data streaming directly from the publishing process on | |||
| collector. The objective is to rely on a lightweight approach to | network processor of line cards to receivers. The objective is a | |||
| allow for higher frequency and better transit performance compared to | lightweight approach to enable higher frequency and less performance | |||
| already established notification mechanisms. | impact on publisher and receiver process compared to already | |||
| established notification mechanisms. | ||||
| Requirements Language | Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| skipping to change at page 1, line 47 ¶ | skipping to change at page 1, line 48 ¶ | |||
| 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 6 May 2021. | This Internet-Draft will expire on November 27, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2021 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Simplified BSD License text | to this document. Code Components extracted from this document must | |||
| as described in Section 4.e of the Trust Legal Provisions and are | include Simplified BSD License text as described in Section 4.e of | |||
| provided without warranty as described in the Simplified BSD License. | the Trust Legal Provisions and are provided without warranty as | |||
| 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. Segmentation Option . . . . . . . . . . . . . . . . . 7 | 3.3.1. Segmentation Option . . . . . . . . . . . . . . . . . 7 | |||
| skipping to change at page 2, line 45 ¶ | skipping to change at page 2, line 46 ¶ | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 13 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 13 | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 15 | 10.2. Informative References . . . . . . . . . . . . . . . . . 15 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 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 receiver | |||
| 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 their features and general in their architecture, | While powerful in their features and general in their architecture, | |||
| the currently available transport mechanisms need to be complemented | the currently available transport mechanisms need to be complemented | |||
| to support data publications at high velocity from devices that | to support data publications at high velocity from devices that | |||
| feature a distributed architecture. The currently available | feature a distributed architecture. The currently available | |||
| transports are based on TCP and lack the efficiency needed to | transports are based on TCP and lack the efficiency needed to | |||
| continuously send 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.ietf-netconf-distributed-notif]. In the case of data | [I-D.ietf-netconf-distributed-notif]. In the case of publishing from | |||
| originating from multiple line cards, centralized designs require | multiple network processors on multiple line cards, centralized | |||
| data to be internally forwarded from those line cards to the push | designs require data to be internally forwarded from those network | |||
| server, presumably on a route processor, which then combines the | processors to the push server, presumably on a route processor, which | |||
| individual data items into a single consolidated stream. The | then combines the individual data items into a single consolidated | |||
| centralized data collection mechanism can result in a performance | stream. The centralized data collection mechanism can result in a | |||
| bottleneck, especially when large amounts of data are involved. | performance 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 a mechanism that allows for directly publishing | |||
| directly pushing multiple substreams, e.g. one from each line card, | from multiple network processors on line cards, without passing them | |||
| without passing them through an additional processing stage for | through an additional processing stage for internal consolidation. | |||
| internal consolidation. The proposed UDP-based transport allows for | The proposed UDP-based transport allows for such a distributed data | |||
| such a distributed data collection approach. | publishing approach. | |||
| * Firstly, a UDP approach reduces the burden of maintaining a large | o 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 receiver, notably in cases | |||
| cases where it collects data from the line cards of a large amount | where it collects data from network processors on line cards from | |||
| of networking devices. | a large amount of networking devices. | |||
| * 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 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. | |||
| * Ultimately, such advantages allow for a larger data analysis | o 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 receiver. | |||
| 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.ietf-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. | |||
| skipping to change at page 4, line 25 ¶ | skipping to change at page 4, line 30 ¶ | |||
| Note that receivers MAY NOT be already up and running when the | Note that receivers MAY NOT be already up and running when the | |||
| configuration of the subscription takes effect on the monitored | configuration of the subscription takes effect on the monitored | |||
| device. The first message MUST be a separate subscription-started | device. The first message MUST be a separate subscription-started | |||
| notification to indicate the Receiver that the stream has started | notification to indicate the Receiver that the stream has started | |||
| 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 behavior. | |||
| 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 segmentation 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 structure of an UDP-Notif message. | |||
| * The Message Header contains information that facilitate the | o The Message Header contains information that facilitate the | |||
| message transmission before deserializing the notification | message transmission before deserializing the notification | |||
| message. | message. | |||
| * Notification Message is the encoded content that the publication | o Notification Message is the encoded content that the publication | |||
| stream transports. The common encoding methods include, CBOR | stream transports. The common encoding methods include, 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 | |||
| +-----+-+-------+---------------+-------------------------------+ | +-----+-+-------+---------------+-------------------------------+ | |||
| skipping to change at page 5, line 34 ¶ | skipping to change at page 5, line 36 ¶ | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| | 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: | |||
| * Ver represents the PDU (Protocol Data Unit) encoding version. The | o Ver represents the PDU (Protocol Data Unit) encoding version. The | |||
| initial version value is 0. | initial version value is 0. | |||
| * S represents the space of encoding type specified in the ET field. | o S represents the space of encoding type specified in the ET field. | |||
| When S is unset, ET represents the standard encoding types as | When S is unset, ET represents the standard encoding types as | |||
| defined in this document. When S is set, ET represents a private | defined in this document. When S is set, ET represents a private | |||
| space to be freely used for non standard encodings. | space to be freely used for nonstandard encodings. | |||
| * ET is a 4 bit identifier to indicate the encoding type used for | o ET is a 4 bit identifier to indicate the encoding type used for | |||
| the Notification Message. 16 types of encoding can be expressed. | the Notification Message. 16 types of encoding can be expressed. | |||
| When the S bit is unset, the following values apply: | When the S bit is unset, the following values apply: | |||
| - 0: CBOR; | * 0: CBOR; | |||
| - 1: JSON; | * 1: JSON; | |||
| * 2: XML; | ||||
| - 2: XML; | * others are reserved. | |||
| - others are reserved. | ||||
| * Header Len is the length of the message header in octets, | o 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. | |||
| * Message Length is the total length of the message within one UDP | o 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. | |||
| * Observation-Domain-ID is a 32-bit identifier of the Observation | o Observation-Domain-ID is a 32-bit identifier of the Observation | |||
| Domain that led to the production of the notification message, as | Domain that led to the production of the notification message, as | |||
| defined in [I-D.ietf-netconf-notification-messages]. This allows | defined in [I-D.ietf-netconf-notification-messages]. This allows | |||
| disambiguation of an information source, such as the | disambiguation of an information source, such as the | |||
| identification of different line cards sending the notification | identification of different line cards sending the notification | |||
| messages. The source IP address of the UDP datagrams SHOULD NOT | messages. The source IP address of the UDP datagrams SHOULD NOT | |||
| be interpreted as the identifier for the host that originated the | be interpreted as the identifier for the host that originated the | |||
| UDP-Notif message. Indeed, the streamer sending the UDP-Notif | UDP-Notif message. Indeed, the streamer sending the UDP-Notif | |||
| message could be a relay for the actual source of data carried | message could be a relay for the actual source of data carried | |||
| within UDP-Notif messages. | within UDP-Notif messages. | |||
| * The Message ID is generated continuously by the sender of UDP- | o 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. | |||
| * Options is a variable-length field in the TLV format. When the | o 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 | |||
| * Type: 1 octet describing the option type; | o Type: 1 octet describing the option type; | |||
| * Length: 1 octet representing the total number of octets in the | o Length: 1 octet representing the total number of octets in the | |||
| TLV, including the Type and Length fields; | TLV, including the Type and Length fields; | |||
| * Variable-length data: 0 or more octets of TLV Value. | o Variable-length data: 0 or more octets of TLV Value. | |||
| 3.3.1. Segmentation 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 CBOR may not require more space than what is left, | encodings such as CBOR may not require more space than what is left, | |||
| more voluminous encodings such as JSON and XML may suffer from this | more voluminous encodings such as JSON and XML may suffer from this | |||
| size limitation. Although IPv4 and IPv6 senders can fragment | size limitation. Although IPv4 and IPv6 senders can fragment | |||
| outgoing packets exceeding their Maximum Transmission Unit(MTU), | outgoing packets exceeding their Maximum Transmission Unit(MTU), | |||
| fragmented IP packets may not be desired for operational and | fragmented IP packets may not be desired for operational and | |||
| skipping to change at page 7, line 28 ¶ | skipping to change at page 7, line 28 ¶ | |||
| Consequently, implementations of the mechanism SHOULD provide a | Consequently, implementations of the mechanism SHOULD provide a | |||
| configurable max-segment-size option to control the maximum size of a | configurable max-segment-size option to control the maximum size of 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 | Segment Number |L| | | Type | Length | Segment Number |L| | |||
| +---------------+---------------+-----------------------------+-+ | +---------------+---------------+-----------------------------+-+ | |||
| Figure 4: Segmentation Option Format | Figure 4: Segmentation Option Format | |||
| The Segmentation Option is to be included when the message content is | The Segmentation Option is to be included when the message content is | |||
| segmented into multiple pieces. Different segments of one message | segmented into multiple pieces. Different segments of one message | |||
| share the same Message ID. An illustration is provided in Figure 4. | share the same Message ID. An illustration is provided in Figure 4. | |||
| The fields of this TLV are: | The fields of this TLV are: | |||
| * Type: Generic option field which indicates a Segmentation Option. | o Type: Generic option field which indicates a Segmentation Option. | |||
| The Type value is to be asigned. | The Type value is to be assigned. | |||
| * Length: Generic option field which indicates the length of this | o Length: Generic option field which indicates the length of this | |||
| option. It is a fixed value of 4 octets for the Segmentation | option. It is a fixed value of 4 octets for the Segmentation | |||
| Option. | Option. | |||
| * Segment Number: 15-bit value indicating the sequence number of the | o Segment Number: 15-bit value indicating the sequence number of the | |||
| current segment. The first segment of a segmented message has a | current segment. The first segment of a segmented message has a | |||
| Segment Number value of 0. | Segment Number value of 0. | |||
| * L: is a flag to indicate whether the current segment is the last | o L: is a flag to indicate whether the current segment is the last | |||
| one of the message. When 0 is set, the current segment is not the | one of the message. When 0 is set, the current segment is not the | |||
| last one. When 1 is set, the current segment is the last one, | last one. When 1 is set, the current segment is the last one, | |||
| meaning that the total number of segments used to transport this | meaning that the total number of segments used to transport this | |||
| message is the value of the current Segment Number + 1. | message is the value of the current Segment Number + 1. | |||
| An implementation of this specification MUST NOT rely on IP | An implementation of this specification MUST NOT rely on IP | |||
| fragmentation by default to carry large messages. An implementation | fragmentation by default to carry large messages. An implementation | |||
| of this specification MUST either restrict the size of individual | of this specification MUST either restrict the size of individual | |||
| messages carried over this protocol, or support the segmentation | messages carried over this protocol, or support the segmentation | |||
| option. | option. | |||
| skipping to change at page 8, line 35 ¶ | skipping to change at page 8, line 35 ¶ | |||
| In this section, we provide an applicability statement for the | In this section, we provide an applicability statement for the | |||
| proposed mechanism, following the recommendations of [RFC8085]. | proposed mechanism, following the recommendations of [RFC8085]. | |||
| The proposed mechanism falls in the category of UDP applications | The proposed mechanism falls in the category of UDP applications | |||
| "designed for use within the network of a single network operator or | "designed for use within the network of a single network operator or | |||
| on networks of an adjacent set of cooperating network operators, to | on networks of an adjacent set of cooperating network operators, to | |||
| be deployed in controlled environments". Implementations of the | be deployed in controlled environments". Implementations of the | |||
| proposed mechanism should thus follow the recommendations in place | proposed mechanism should thus follow the recommendations in place | |||
| for such specific applications. In the following, we discuss | for such specific applications. In the following, we discuss | |||
| recommendations on congestion control, message size guildelines, | recommendations on congestion control, message size guidelines, | |||
| reliability considerations. | reliability considerations. | |||
| 4.1. Congestion Control | 4.1. Congestion Control | |||
| The proposed application falls into the category of applications | The proposed application falls into the category of applications | |||
| performing transfer of large amounts of data. It is expected that | performing transfer of large amounts of data. It is expected that | |||
| the operator using the solution configures QoS on its related flows. | the operator using the solution configures QoS on its related flows. | |||
| As per [RFC8085], such applications MAY choose not to implement any | As per [RFC8085], such applications MAY choose not to implement any | |||
| form of congestion control, but follow the following principles. | form of congestion control, but follow the following principles. | |||
| It is NOT RECOMMENDED to use the proposed mechanism over congestion- | It is NOT RECOMMENDED to use the proposed mechanism over congestion- | |||
| sensitive network paths. The only environments where UDP-Notif is | sensitive network paths. The only environments where UDP-Notif is | |||
| expected to be used are managed networks. The deployments require | expected to be used are managed networks. The deployments require | |||
| that the network path has been explicitly provisioned to handle the | that the network path has been explicitly provisioned to handle the | |||
| traffic through traffic engineering mechanisms, such as rate limiting | traffic through traffic engineering mechanisms, such as rate limiting | |||
| or capacity reservations. | or capacity reservations. | |||
| Implementation of the proposal SHOULD NOT push unlimited amounts of | Implementation of the proposal SHOULD NOT push unlimited amounts of | |||
| traffic by default, and SHOULD require the users to explicitely | traffic by default, and SHOULD require the users to explicitly | |||
| configure such a mode of operation. | configure such a mode of operation. | |||
| Burst mitigation through packet pacing is RECOMMENDED. Disabling | Burst mitigation through packet pacing is RECOMMENDED. Disabling | |||
| burst mitigation SHOULD require the users to explicitely configure | burst mitigation SHOULD require the users to explicitly configure | |||
| such a mode of operation. | such a mode of operation. | |||
| Applications SHOULD monitor packet losses and provide means to the | Applications SHOULD monitor packet losses and provide means to the | |||
| user for retrieving information on such losses. The UDP-Notif | user for retrieving information on such losses. The UDP-Notif | |||
| Message ID can be used to deduce congestion based on packet loss | Message ID can be used to deduce congestion based on packet loss | |||
| detection. Hence the collector can notify the device to use a lower | detection. Hence the receiver can notify the device to use a lower | |||
| streaming rate. The interaction to control the streaming rate on the | streaming rate. The interaction to control the streaming rate on the | |||
| device is out of the scope of this document. | device is out of the scope of this document. | |||
| 4.2. Message Size | 4.2. Message Size | |||
| [RFC8085] recommends not to rely on IP fragmentation for messages | [RFC8085] recommends not to rely on IP fragmentation for messages | |||
| whose size result in IP packets exceeding the MTU along the path. | whose size result in IP packets exceeding the MTU along the path. | |||
| The segmentation option of the current specification permits to | The segmentation option of the current specification permits | |||
| perform segmentation of the UDP Notif message content so as to not | segmentation of the UDP Notif message content without relying on IP | |||
| have to rely on IP fragmentation. Implementation of the current | fragmentation. Implementation of the current specification SHOULD | |||
| specification SHOULD allow for the configuration of the MTU. | allow for the configuration of the MTU. | |||
| 4.3. Reliability | 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, as information collected for the devices through the | the network, as information collected for the devices through the | |||
| means of the proposed mechanism is to be often refreshed. | means of the proposed mechanism is to be often refreshed. | |||
| A collector implementation for this protocol SHOULD deal with | A receiver implementation for this protocol SHOULD deal with | |||
| potential loss of packets carrying a part of segmented payload, by | potential loss of packets carrying a part of segmented payload, by | |||
| discarding packets that were actually received, but cannot be re- | discarding packets that were received, but cannot be re-assembled as | |||
| assembled as a complete message within a given amount of time. This | a complete message within a given amount of time. This time SHOULD | |||
| time SHOULD be configurable. | be configurable. | |||
| 5. A YANG Data Model for Management of UDP-Notif | 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 leaf's 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 | |||
| 6. YANG Module | 6. YANG Module | |||
| <CODE BEGINS> file "ietf-udp-notif@2020-04-27.yang" | <CODE BEGINS> file "ietf-udp-notif@2020-04-27.yang" | |||
| module ietf-udp-notif { | module ietf-udp-notif { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace | namespace | |||
| "urn:ietf:params:xml:ns:yang:ietf-udp-notif"; | "urn:ietf:params:xml:ns:yang:ietf-udp-notif"; | |||
| prefix un; | prefix un; | |||
| import ietf-subscribed-notifications { | import ietf-subscribed-notifications { | |||
| prefix sn; | prefix sn; | |||
| reference | reference | |||
| "RFC 8639: Subscription to YANG Notifications"; | "RFC 8639: Subscription to YANG Notifications"; | |||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| organization "IETF NETCONF (Network Configuration) Working Group"; | organization "IETF NETCONF (Network Configuration) Working Group"; | |||
| contact | contact | |||
| "WG Web: <http:/tools.ietf.org/wg/netconf/> | "WG Web: <http:/tools.ietf.org/wg/netconf/> | |||
| WG List: <mailto:netconf@ietf.org> | WG List: <mailto:netconf@ietf.org> | |||
| Authors: Guangying Zheng | Authors: Guangying Zheng | |||
| <mailto:zhengguangying@huawei.com> | <mailto:zhengguangying@huawei.com> | |||
| Tianran Zhou | Tianran Zhou | |||
| <mailto:zhoutianran@huawei.com> | <mailto:zhoutianran@huawei.com> | |||
| Thomas Graf | Thomas Graf | |||
| <mailto:thomas.graf@swisscom.com> | <mailto:thomas.graf@swisscom.com> | |||
| Pierre Francois | Pierre Francois | |||
| <mailto:pierre.francois@insa-lyon.fr> | <mailto:pierre.francois@insa-lyon.fr> | |||
| Paolo Lucente | Paolo Lucente | |||
| <mailto:paolo@ntt.net>"; | <mailto:paolo@ntt.net>"; | |||
| description | description | |||
| "Defines UDP-Notif as a supported transport for subscribed | "Defines UDP-Notif as a supported transport for subscribed | |||
| event notifications. | event notifications. | |||
| Copyright (c) 2018 IETF Trust and the persons identified as authors | Copyright (c) 2018 IETF Trust and the persons identified as authors | |||
| of the code. All rights reserved. | of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or without | Redistribution and use in source and binary forms, with or without | |||
| modification, is permitted pursuant to, and subject to the license | modification, is permitted pursuant to, and subject to the license | |||
| terms contained in, the Simplified BSD License set forth in Section | terms contained in, the Simplified BSD License set forth in Section | |||
| 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents | 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see the RFC | This version of this YANG module is part of RFC XXXX; see the RFC | |||
| itself for full legal notices."; | itself for full legal notices."; | |||
| revision 2020-04-27 { | revision 2020-04-27 { | |||
| description | description | |||
| "Initial version"; | "Initial version"; | |||
| reference | reference | |||
| "RFC XXXX: UDP-based Notifications for Streaming Telemetry"; | "RFC XXXX: UDP-based Notifications for Streaming Telemetry"; | |||
| } | } | |||
| identity udp-notif { | identity udp-notif { | |||
| base sn:transport; | base sn:transport; | |||
| description | description | |||
| "UDP-Notif is used as transport for notification messages | "UDP-Notif is used as transport for notification messages | |||
| and state change notifications."; | and state change notifications."; | |||
| } | } | |||
| identity encode-cbor { | identity encode-cbor { | |||
| base sn:encoding; | base sn:encoding; | |||
| description | description | |||
| "Encode data using CBOR as described in RFC 7049."; | "Encode data using CBOR as described in RFC 7049."; | |||
| reference | reference | |||
| "RFC 7049: Concise Binary Object Representation"; | "RFC 7049: Concise Binary Object Representation"; | |||
| } | } | |||
| grouping target-receiver { | grouping target-receiver { | |||
| description | description | |||
| "Provides a reusable description of a UDP-Notif target receiver."; | "Provides a reusable description of a UDP-Notif target receiver."; | |||
| leaf address { | leaf address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "IP address of target UDP-Notif receiver, which can be an | "IP address of target UDP-Notif receiver, which can be an | |||
| IPv4 address or an IPV6 address."; | IPv4 address or an IPV6 address."; | |||
| } | } | |||
| leaf port { | leaf port { | |||
| type inet:port-number; | type inet:port-number; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Port number of target UDP-Notif receiver, if not specified, | "Port number of target UDP-Notif receiver, if not specified, | |||
| the system should use default port number."; | the system should use default port number."; | |||
| } | ||||
| leaf enable-fragment { | } | |||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "The switch for the fragment feature. When disabled, the | ||||
| publisher will not allow fragment for a very large data"; | ||||
| } | ||||
| leaf max-fragment-size { | leaf enable-fragment { | |||
| when "../enable-fragment = true"; | type boolean; | |||
| type uint32; | default false; | |||
| description "UDP-Notif provides a configurable max-fragment-size | description | |||
| to control the size of each message."; | "The switch for the fragment feature. When disabled, the | |||
| } | publisher will not allow fragment for a very large data"; | |||
| } | } | |||
| augment "/sn:subscriptions/sn:subscription/sn:receivers/sn:receiver" { | leaf max-fragment-size { | |||
| description | when "../enable-fragment = true"; | |||
| "This augmentation allows UDP-Notif specific parameters to be | type uint32; | |||
| exposed for a subscription."; | description "UDP-Notif provides a configurable max-fragment-size | |||
| uses target-receiver; | to control the size of each message."; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | ||||
| augment "/sn:subscriptions/sn:subscription/sn:receivers/sn:receiver" { | ||||
| description | ||||
| "This augmentation allows UDP-Notif specific parameters to be | ||||
| exposed for a subscription."; | ||||
| uses target-receiver; | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 7. 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 | |||
| Assignee: IESG <iesg@ietf.org> | Assignee: IESG <iesg@ietf.org> | |||
| Contact: IETF Chair <chair@ietf.org> | Contact: IETF Chair <chair@ietf.org> | |||
| Description: UDP-based Publication Streaming Telemetry | Description: UDP-based Publication Streaming Telemetry | |||
| Reference: RFC XXXX | Reference: RFC XXXX | |||
| Port Number: PORT-X | ||||
| Port Number: PORT-X | ||||
| IANA is requested to assign a new URI from the IETF XML Registry | IANA is requested to assign a new URI from the IETF XML Registry | |||
| [RFC3688]. The following URI is suggested: | [RFC3688]. The following URI is suggested: | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-udp-notif | URI: urn:ietf:params:xml:ns:yang:ietf-udp-notif | |||
| Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
| XML: N/A; the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
| 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: | |||
| skipping to change at page 15, line 25 ¶ | skipping to change at page 15, line 20 ¶ | |||
| [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>. | |||
| 10.2. Informative References | 10.2. Informative References | |||
| [I-D.ietf-netconf-distributed-notif] | [I-D.ietf-netconf-distributed-notif] | |||
| Zhou, T., Zheng, G., Voit, E., Graf, T., and P. Francois, | Zhou, T., Zheng, G., Voit, E., Graf, T., and P. Francois, | |||
| "Subscription to Distributed Notifications", Work in | "Subscription to Distributed Notifications", draft-ietf- | |||
| Progress, Internet-Draft, draft-ietf-netconf-distributed- | netconf-distributed-notif-01 (work in progress), June | |||
| notif-01, June 2020, <https://tools.ietf.org/html/draft- | 2020. | |||
| 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", Work in Progress, Internet- | for YANG Notifications", draft-ietf-netconf-https-notif-08 | |||
| Draft, draft-ietf-netconf-https-notif-04, 27 July 2020, | (work in progress), February 2021. | |||
| <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", Work in | Clemm, "Notification Message Headers and Bundles", draft- | |||
| Progress, Internet-Draft, draft-ietf-netconf-notification- | ietf-netconf-notification-messages-08 (work in progress), | |||
| messages-08, 17 November 2019, <http://www.ietf.org/ | November 2019. | |||
| internet-drafts/draft-ietf-netconf-notification-messages- | ||||
| 08.txt>. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Guangying Zheng | Guangying Zheng | |||
| Huawei | Huawei | |||
| 101 Yu-Hua-Tai Software Road | 101 Yu-Hua-Tai Software Road | |||
| Nanjing | Nanjing, Jiangsu | |||
| 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 16, line 20 ¶ | skipping to change at page 16, line 4 ¶ | |||
| 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 | |||
| CH- Zuerich 8045 | 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 | |||
| Netherlands | NL | |||
| Email: paolo@ntt.net | Email: paolo@ntt.net | |||
| End of changes. 73 change blocks. | ||||
| 196 lines changed or deleted | 195 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/ | ||||