| rfc9984.original | rfc9984.txt | |||
|---|---|---|---|---|
| Network Working Group A. Huang-Feng | Internet Engineering Task Force (IETF) A. Huang-Feng | |||
| Internet-Draft P. Francois | Request for Comments: 9984 P. Francois | |||
| Intended status: Standards Track INSA-Lyon | Category: Standards Track INSA-Lyon | |||
| Expires: 19 June 2026 K. Watsen | ISSN: 2070-1721 K. Watsen | |||
| Watsen Networks | Watsen Networks | |||
| 16 December 2025 | May 2026 | |||
| YANG Groupings for UDP Clients and UDP Servers | YANG Groupings for UDP Clients and UDP Servers | |||
| draft-ietf-netconf-udp-client-server-10 | ||||
| Abstract | Abstract | |||
| This document defines two YANG 1.1 modules with reusable groupings | This document defines two YANG 1.1 modules with reusable groupings | |||
| for managing UDP clients and UDP servers. | for managing UDP clients and UDP servers. | |||
| Notes to the RFC editor | ||||
| This note is to be removed before publishing as an RFC. | ||||
| Please replace "RFC XXXX" with the assigned RFC number prior to | ||||
| publication. Note that there are also several occurrences of "RFC | ||||
| XXXX" in the YANG modules. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 19 June 2026. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9984. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2025 IETF Trust and the persons identified as the | Copyright (c) 2026 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 Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 | 1.1. Requirements Language | |||
| 1.2. Adherence to the NMDA . . . . . . . . . . . . . . . . . . 3 | 1.2. Adherence to the NMDA | |||
| 1.3. Conventions . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.3. Conventions | |||
| 2. The "ietf-udp-client" Module . . . . . . . . . . . . . . . . 3 | 2. The "ietf-udp-client" Module | |||
| 2.1. Data Model Overview . . . . . . . . . . . . . . . . . . . 3 | 2.1. Data Model Overview | |||
| 2.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Example Usage | |||
| 2.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.3. YANG Module | |||
| 3. The "ietf-udp-server" Module . . . . . . . . . . . . . . . . 7 | 3. The "ietf-udp-server" Module | |||
| 3.1. Data Model Overview . . . . . . . . . . . . . . . . . . . 7 | 3.1. Data Model Overview | |||
| 3.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Example Usage | |||
| 3.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 9 | 3.3. YANG Module | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 4. Security Considerations | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | 5. IANA Considerations | |||
| 5.1. URI . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 5.1. The "IETF XML Registry" | |||
| 5.2. YANG Module Name . . . . . . . . . . . . . . . . . . . . 12 | 5.2. The "YANG Module Names" Registry | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 | 6. References | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 6.1. Normative References | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 12 | 6.2. Informative References | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 13 | Acknowledgements | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | Authors' Addresses | |||
| 1. Introduction | 1. Introduction | |||
| This document defines two YANG 1.1 [RFC7950] modules with reusable | This document defines two YANG 1.1 [RFC7950] modules with reusable | |||
| groupings for managing UDP clients and UDP servers [RFC768]. These | groupings for managing UDP clients and UDP servers [RFC768]. These | |||
| modules may be used directly (e.g., define a specific UDP client or | modules may be used directly (e.g., define a specific UDP client or | |||
| UDP server) or in conjunction with the configuration defined for | UDP server) or in conjunction with the configuration defined for | |||
| higher level protocols that depend on UDP. | higher-level protocols that depend on UDP. | |||
| 1.1. Requirements Language | 1.1. 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", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 1.2. Adherence to the NMDA | 1.2. Adherence to the NMDA | |||
| This document is compliant with the Network Management Datastore | This document is compliant with the Network Management Datastore | |||
| Architecture (NMDA) [RFC8342]. It does not define any protocol | Architecture (NMDA) [RFC8342]. It does not define any protocol- | |||
| accessible nodes that are "config false". | accessible nodes that are "config false". | |||
| 1.3. Conventions | 1.3. Conventions | |||
| Various examples in this document use the XML [W3C.REC-xml-20081126] | Various examples in this document use the XML [W3C.REC-xml-20081126] | |||
| encoding. Other encodings, such as JSON [RFC8259], could | encoding. Other encodings, such as JSON [RFC8259], could | |||
| alternatively be used. | alternatively be used. | |||
| 2. The "ietf-udp-client" Module | 2. The "ietf-udp-client" Module | |||
| This section defines a YANG 1.1 module called "ietf-udp-client". | This section defines a YANG 1.1 module called "ietf-udp-client". | |||
| This YANG module defines the "udp-client" grouping for providing UDP | This YANG module defines the "udp-client" grouping for providing UDP | |||
| clients with remote server information. | clients with remote server information. | |||
| Section 2.1 provides the overview of the YANG module. An example of | Section 2.1 provides the overview of the YANG module. An example of | |||
| usage is illustrated in Section 2.2, while Section 2.3 defines the | usage is illustrated in Section 2.2. Section 2.3 defines the YANG | |||
| YANG module itself. | module itself. | |||
| 2.1. Data Model Overview | 2.1. Data Model Overview | |||
| This section provides an overview of the features and the grouping | This section provides an overview of the features and the grouping | |||
| defined in the "ietf-udp-client" YANG module. | defined in the "ietf-udp-client" YANG module. | |||
| 2.1.1. Features | 2.1.1. Features | |||
| The "ietf-udp-client" module defines the following "feature" | The "ietf-udp-client" module defines the following "feature" | |||
| statement: | statement: | |||
| Features: | Features: | |||
| +-- local-binding | +-- local-binding | |||
| The diagram above uses syntax that is similar to but not defined in | The diagram above uses syntax that is similar to the syntax used in | |||
| [RFC8340]; but the syntax from the diagram is not defined in | ||||
| [RFC8340]. | [RFC8340]. | |||
| This feature indicates that the client supports configuring local | This feature indicates that the client supports configuring local | |||
| bindings (i.e., the local address and local port number) for UDP | bindings (i.e., the local address and local port number) for UDP | |||
| clients. | clients. | |||
| 2.1.2. The "udp-client" Grouping | 2.1.2. The "udp-client" Grouping | |||
| The following tree diagram [RFC8340] illustrates the tree structure | The following tree diagram [RFC8340] illustrates the tree structure | |||
| of the "udp-client" grouping: | of the "udp-client" grouping: | |||
| skipping to change at page 4, line 22 ¶ | skipping to change at line 150 ¶ | |||
| The description of these parameters is provided below: | The description of these parameters is provided below: | |||
| * The "remote-address", which is mandatory, may be configured as an | * The "remote-address", which is mandatory, may be configured as an | |||
| IPv4 address, an IPv6 address, or a hostname. The resolved | IPv4 address, an IPv6 address, or a hostname. The resolved | |||
| address should be compatible with the local address family, if | address should be compatible with the local address family, if | |||
| also provided. | also provided. | |||
| * The "remote-port" is defined with neither a "default" nor a | * The "remote-port" is defined with neither a "default" nor a | |||
| "mandatory" statement. YANG modules using this grouping SHOULD | "mandatory" statement. YANG modules using this grouping SHOULD | |||
| refine the grouping with a "default" statement, when the port | refine the grouping with a "default" statement when the port | |||
| number is well-known (e.g., a port number allocated by IANA), or | number is well-known (e.g., a port number allocated by IANA) or | |||
| with a "mandatory" statement, if a port number needs to always be | with a "mandatory" statement if a port number needs to always be | |||
| configured. This MAY be ignored when the port number is neither | configured. This MAY be ignored when the port number is neither | |||
| well-known nor mandatory to configure, such as might be the case | well-known nor mandatory to configure, such as might be the case | |||
| when this grouping is used by another grouping. | when this grouping is used by another grouping. | |||
| * The "local-address", which is enabled by the "local-binding" | * The "local-address", which is enabled by the "local-binding" | |||
| feature, may be configured as an IPv4 address, an IPv6 address, or | feature, may be configured as an IPv4 address, an IPv6 address, or | |||
| a wildcard value. In normal operation, the local and configured | a wildcard value. In normal operation, the local and configured | |||
| remote addresses SHOULD be from the same address family. | remote addresses SHOULD be from the same address family. | |||
| Differences between address families may occur in abnormal or | Differences between address families may occur in abnormal or | |||
| error conditions and are therefore allowed to be reported. | error conditions; therefore, they are allowed to be reported. | |||
| * The "local-port", which depends on the "local-binding" feature, is | * The "local-port", which depends on the "local-binding" feature, is | |||
| not mandatory. Its default value is "0", indicating that the | not mandatory. Its default value is "0", indicating that the | |||
| operating system can select an arbitrary port number. | operating system can select an arbitrary port number. | |||
| 2.2. Example Usage | 2.2. Example Usage | |||
| This section presents an example of usage of the "udp-client" | This section presents an example of usage of the "udp-client" | |||
| grouping. | grouping. | |||
| skipping to change at page 5, line 17 ¶ | skipping to change at line 185 ¶ | |||
| <udp-client xmlns="urn:ietf:params:xml:ns:yang:ietf-udp-client"> | <udp-client xmlns="urn:ietf:params:xml:ns:yang:ietf-udp-client"> | |||
| <remote-address>www.example.com</remote-address> | <remote-address>www.example.com</remote-address> | |||
| <remote-port>10000</remote-port> | <remote-port>10000</remote-port> | |||
| <local-address>192.0.2.2</local-address> | <local-address>192.0.2.2</local-address> | |||
| <local-port>12345</local-port> | <local-port>12345</local-port> | |||
| </udp-client> | </udp-client> | |||
| 2.3. YANG Module | 2.3. YANG Module | |||
| This module imports types defined in [I-D.ietf-netmod-rfc6991-bis]. | This module imports types defined in [RFC9911]. | |||
| <CODE BEGINS> file "ietf-udp-client@2025-12-16.yang" | <CODE BEGINS> file "ietf-udp-client@2026-05-13.yang" | |||
| module ietf-udp-client { | module ietf-udp-client { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace | namespace "urn:ietf:params:xml:ns:yang:ietf-udp-client"; | |||
| "urn:ietf:params:xml:ns:yang:ietf-udp-client"; | ||||
| prefix udpc; | prefix udpc; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| reference | reference | |||
| "RFC 9911: Common YANG Data Types"; | "RFC 9911: Common YANG Data Types"; | |||
| } | } | |||
| organization "IETF NETCONF (Network Configuration) Working Group"; | organization | |||
| "IETF NETCONF (Network Configuration) Working Group"; | ||||
| contact | contact | |||
| "WG Web: <https://datatracker.ietf.org/group/netconf/> | "WG Web: <https://datatracker.ietf.org/group/netconf/> | |||
| WG List: <mailto:netconf@ietf.org> | WG List: <mailto:netconf@ietf.org> | |||
| Authors: Alex Huang Feng | Authors: Alex Huang Feng | |||
| <mailto:alex.huang-feng@insa-lyon.fr> | <mailto:alex.huang-feng@insa-lyon.fr> | |||
| Pierre Francois | Pierre Francois | |||
| <mailto:pierre.francois@insa-lyon.fr>"; | <mailto:pierre.francois@insa-lyon.fr>"; | |||
| description | description | |||
| "Defines a generic grouping for UDP-based client applications. | "Defines a generic grouping for UDP-based client applications. | |||
| Copyright (c) 2025 IETF Trust and the persons identified as | Copyright (c) 2026 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or without | Redistribution and use in source and binary forms, with or | |||
| modification, is permitted pursuant to, and subject to the license | without modification, is permitted pursuant to, and subject to | |||
| terms contained in, the Revised BSD License set forth in Section | the license terms contained in, the Revised BSD License set | |||
| 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| (https://trustee.ietf.org/license-info). | Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | ||||
| All revisions of IETF and IANA published modules can be found | All revisions of IETF and IANA published modules can be found | |||
| at the YANG Parameters registry group | at the YANG Parameters registry group | |||
| (https://www.iana.org/assignments/yang-parameters). | (https://www.iana.org/assignments/yang-parameters). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC 9984; see | |||
| the RFC itself for full legal notices. | the RFC itself for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2025-12-16 { | revision 2026-05-13 { | |||
| description | description | |||
| "Initial revision"; | "Initial revision"; | |||
| reference | reference | |||
| "RFC XXXX: YANG Groupings for UDP Clients and UDP Servers"; | "RFC 9984: YANG Groupings for UDP Clients and UDP Servers"; | |||
| } | } | |||
| feature local-binding { | feature local-binding { | |||
| description | description | |||
| "Indicates that the UDP client supports configuring local | "Indicates that the UDP client supports configuring local | |||
| bindings (i.e., the local address and local port number) | bindings (i.e., the local address and local port number) | |||
| for UDP clients."; | for UDP clients."; | |||
| } | } | |||
| grouping udp-client { | grouping udp-client { | |||
| description | description | |||
| "A reusable grouping for UDP clients. | "A reusable grouping for UDP clients. | |||
| Note that this grouping uses fairly typical descendant | Note that this grouping uses fairly typical descendant | |||
| node names such that a stack of 'uses' statements will | node names such that a stack of 'uses' statements will | |||
| have name conflicts. It is intended that the consuming | have name conflicts. It is intended that the consuming | |||
| data model will resolve the issue (e.g., by wrapping | data model will resolve the issue (e.g., by wrapping | |||
| the 'uses' statement in a container called | the 'uses' statement in a container called | |||
| 'udp-client-parameters'). This model purposely does | 'udp-client-parameters'). This module purposely does | |||
| not do this itself so as to provide maximum flexibility | not do this itself so as to provide maximum flexibility | |||
| to consuming models."; | to consuming models."; | |||
| leaf remote-address { | leaf remote-address { | |||
| type inet:host; | type inet:host; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The IP address or hostname of the remote UDP server."; | "The IP address or hostname of the remote UDP server."; | |||
| } | } | |||
| leaf remote-port { | leaf remote-port { | |||
| type inet:port-number; | type inet:port-number; | |||
| description | description | |||
| "The port number of the remote UDP server."; | "The port number of the remote UDP server."; | |||
| } | } | |||
| leaf local-address { | leaf local-address { | |||
| if-feature "local-binding"; | if-feature "local-binding"; | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "The local IP address to bind to when sending UDP | "The local IP address to bind to when sending UDP | |||
| datagrams to the remote server. INADDR_ANY ('0.0.0.0') or | datagrams to the remote server. INADDR_ANY ('0.0.0.0') or | |||
| INADDR6_ANY ('0:0:0:0:0:0:0:0' a.k.a. '::') may be used | INADDR6_ANY ('0:0:0:0:0:0:0:0' a.k.a. '::') may be used | |||
| so that the client can bind to any IPv4 or IPv6 address. | so that the client can bind to any IPv4 or IPv6 address. | |||
| In normal operation, the local and configured | In normal operation, the local and configured | |||
| remote addresses SHOULD be from the same address family. | remote addresses SHOULD be from the same address family. | |||
| Differences between address families may occur in | Differences between address families may occur in | |||
| abnormal or error conditions and are therefore allowed to | abnormal or error conditions; therefore, they are allowed to | |||
| be reported."; | be reported."; | |||
| } | } | |||
| leaf local-port { | leaf local-port { | |||
| if-feature "local-binding"; | if-feature "local-binding"; | |||
| type inet:port-number; | type inet:port-number; | |||
| default "0"; | default "0"; | |||
| description | description | |||
| "The local port number to bind to when sending UDP | "The local port number to bind to when sending UDP | |||
| datagrams to the remote server. The port number '0', | datagrams to the remote server. The port number '0', | |||
| which is the default value, indicates that any available | which is the default value, indicates that any available | |||
| local port number may be used."; | local port number may be used."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 3. The "ietf-udp-server" Module | 3. The "ietf-udp-server" Module | |||
| This section defines a YANG 1.1 module called "ietf-udp-server". | This section defines a YANG 1.1 module called "ietf-udp-server". | |||
| This YANG module defines the "udp-server" grouping for managing UDP | This YANG module defines the "udp-server" grouping for managing UDP | |||
| servers. | servers. | |||
| Section 3.1 provides an overview of the "ietf-udp-server" YANG | Section 3.1 provides an overview of the "ietf-udp-server" YANG | |||
| module. An example of usage is illustrated in Section 3.2 while | module. An example of usage is illustrated in Section 3.2. | |||
| Section 3.3 defines the YANG module itself. | Section 3.3 defines the YANG module itself. | |||
| 3.1. Data Model Overview | 3.1. Data Model Overview | |||
| This section provides an overview of the grouping defined in the | This section provides an overview of the grouping defined in the | |||
| "ietf-udp-server" module. | "ietf-udp-server" module. | |||
| 3.1.1. The "udp-server" Grouping | 3.1.1. The "udp-server" Grouping | |||
| The following tree diagram [RFC8340] illustrates the structure of | The following tree diagram [RFC8340] illustrates the tree structure | |||
| "udp-server" grouping: | of "udp-server" grouping: | |||
| module: ietf-udp-server | module: ietf-udp-server | |||
| grouping udp-server: | grouping udp-server: | |||
| +-- local-bind* [local-address] | +-- local-bind* [local-address] | |||
| +-- local-address inet:ip-address | +-- local-address inet:ip-address | |||
| +-- local-port? inet:port-number | +-- local-port? inet:port-number | |||
| The description of these parameters is provided below: | The description of these parameters is provided below: | |||
| * The "local-address", which is mandatory, may be configured as an | * The "local-address", which is mandatory, may be configured as an | |||
| IPv4 address, an IPv6 address, or a wildcard value. | IPv4 address, an IPv6 address, or a wildcard value. | |||
| * The "local-port" is defined with neither a "default" nor a | * The "local-port" is defined with neither a "default" nor a | |||
| "mandatory" statement. YANG modules using this grouping SHOULD | "mandatory" statement. YANG modules using this grouping SHOULD | |||
| refine the grouping with a "default" statement, when the port | refine the grouping with a "default" statement when the port | |||
| number is well-known (e.g., a port number allocated by IANA), or | number is well-known (e.g., a port number allocated by IANA) or | |||
| with a "mandatory" statement, if a port number needs to always be | with a "mandatory" statement if a port number needs to always be | |||
| configured. This MAY be ignored when the port number is neither | configured. This MAY be ignored when the port number is neither | |||
| well-known nor mandatory to configure, such as might be the case | well-known nor mandatory to configure, such as might be the case | |||
| when this grouping is used by another grouping. | when this grouping is used by another grouping. | |||
| 3.2. Example Usage | 3.2. Example Usage | |||
| This section presents two examples of usage of the "udp-server" | This section presents two examples of usage of the "udp-server" | |||
| grouping. | grouping. | |||
| This following shows an example of a server configured for listening | The following shows an example of a server configured for listening | |||
| to an IPv4 address: | to an IPv4 address: | |||
| <!-- The outermost element below doesn't exist in the data model. --> | <!-- The outermost element below doesn't exist in the data model. --> | |||
| <!-- It simulates if the "grouping" were a "container" instead. --> | <!-- It simulates if the "grouping" were a "container" instead. --> | |||
| <udp-server xmlns="urn:ietf:params:xml:ns:yang:ietf-udp-server"> | <udp-server xmlns="urn:ietf:params:xml:ns:yang:ietf-udp-server"> | |||
| <local-bind> | <local-bind> | |||
| <local-address>192.0.2.2</local-address> | <local-address>192.0.2.2</local-address> | |||
| <local-port>49152</local-port> | <local-port>49152</local-port> | |||
| </local-bind> | </local-bind> | |||
| </udp-server> | </udp-server> | |||
| This following shows an example of a server configured to listen to | The following shows an example of a server configured for listening | |||
| an IPv4 and IPv6 together: | to an IPv4 and IPv6 together: | |||
| <!-- The outermost element below doesn't exist in the data model. --> | <!-- The outermost element below doesn't exist in the data model. --> | |||
| <!-- It simulates if the "grouping" were a "container" instead. --> | <!-- It simulates if the "grouping" were a "container" instead. --> | |||
| <udp-server xmlns="urn:ietf:params:xml:ns:yang:ietf-udp-server"> | <udp-server xmlns="urn:ietf:params:xml:ns:yang:ietf-udp-server"> | |||
| <local-bind> | <local-bind> | |||
| <local-address>192.0.2.2</local-address> | <local-address>192.0.2.2</local-address> | |||
| <local-port>49152</local-port> | <local-port>49152</local-port> | |||
| </local-bind> | </local-bind> | |||
| <local-bind> | <local-bind> | |||
| <local-address>2001:db8::0</local-address> | <local-address>2001:db8::0</local-address> | |||
| <local-port>49153</local-port> | <local-port>49153</local-port> | |||
| </local-bind> | </local-bind> | |||
| </udp-server> | </udp-server> | |||
| 3.3. YANG Module | 3.3. YANG Module | |||
| The "ietf-udp-server" imports types defined in | This module imports types defined in [RFC9911]. | |||
| [I-D.ietf-netmod-rfc6991-bis]. | ||||
| <CODE BEGINS> file "ietf-udp-server@2025-12-16.yang" | <CODE BEGINS> file "ietf-udp-server@2026-05-13.yang" | |||
| module ietf-udp-server { | module ietf-udp-server { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-udp-server"; | namespace "urn:ietf:params:xml:ns:yang:ietf-udp-server"; | |||
| prefix udps; | prefix udps; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| reference | reference | |||
| "RFC 9911: Common YANG Data Types"; | "RFC 9911: Common YANG Data Types"; | |||
| } | } | |||
| skipping to change at page 9, line 49 ¶ | skipping to change at line 406 ¶ | |||
| "WG Web: <https://datatracker.ietf.org/group/netconf/> | "WG Web: <https://datatracker.ietf.org/group/netconf/> | |||
| WG List: <mailto:netconf@ietf.org> | WG List: <mailto:netconf@ietf.org> | |||
| Authors: Alex Huang Feng | Authors: Alex Huang Feng | |||
| <mailto:alex.huang-feng@insa-lyon.fr> | <mailto:alex.huang-feng@insa-lyon.fr> | |||
| Pierre Francois | Pierre Francois | |||
| <mailto:pierre.francois@insa-lyon.fr>"; | <mailto:pierre.francois@insa-lyon.fr>"; | |||
| description | description | |||
| "Defines a generic grouping for UDP-based server applications. | "Defines a generic grouping for UDP-based server applications. | |||
| Copyright (c) 2025 IETF Trust and the persons identified as | Copyright (c) 2026 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or without | Redistribution and use in source and binary forms, with or | |||
| modification, is permitted pursuant to, and subject to the license | without modification, is permitted pursuant to, and subject to | |||
| terms contained in, the Revised BSD License set forth in Section | the license terms contained in, the Revised BSD License set | |||
| 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| (https://trustee.ietf.org/license-info). | Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | ||||
| All revisions of IETF and IANA published modules can be found | All revisions of IETF and IANA published modules can be found | |||
| at the YANG Parameters registry group | at the YANG Parameters registry group | |||
| (https://www.iana.org/assignments/yang-parameters). | (https://www.iana.org/assignments/yang-parameters). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC 9984; see | |||
| the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
| revision 2025-12-16 { | revision 2026-05-13 { | |||
| description | description | |||
| "Initial revision"; | "Initial revision"; | |||
| reference | reference | |||
| "RFC XXXX: YANG Groupings for UDP Clients and UDP Servers"; | "RFC 9984: YANG Groupings for UDP Clients and UDP Servers"; | |||
| } | } | |||
| grouping udp-server { | grouping udp-server { | |||
| description | description | |||
| "Provides a reusable grouping for managing UDP servers. | "A reusable grouping for managing UDP servers. | |||
| Note that this grouping uses fairly typical descendant | Note that this grouping uses fairly typical descendant | |||
| node names such that a stack of 'uses' statements will | node names such that a stack of 'uses' statements will | |||
| have name conflicts. It is intended that the consuming | have name conflicts. It is intended that the consuming | |||
| data model will resolve the issue (e.g., by wrapping | data model will resolve the issue (e.g., by wrapping | |||
| the 'uses' statement in a container called | the 'uses' statement in a container called | |||
| 'udp-server-parameters'). This model purposely does | 'udp-server-parameters'). This module purposely does | |||
| not do this itself so as to provide maximum flexibility | not do this itself so as to provide maximum flexibility | |||
| to consuming models."; | to consuming models."; | |||
| list local-bind { | list local-bind { | |||
| key "local-address"; | key "local-address"; | |||
| min-elements 1; | min-elements 1; | |||
| description | description | |||
| "A list of bind (listen) points for this server | "A list of bind (listen) points for this server | |||
| instance. A server instance may have multiple | instance. A server instance may have multiple | |||
| bind points to support, e.g., the same port number in | bind points to support, e.g., the same port number in | |||
| different address families or different port numbers | different address families or different port numbers | |||
| in the same address family."; | in the same address family."; | |||
| leaf local-address { | leaf local-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The local IP address to listen on for incoming | "The local IP address to listen on for incoming | |||
| UDP datagrams. INADDR_ANY ('0.0.0.0') or | UDP datagrams. INADDR_ANY ('0.0.0.0') or | |||
| INADDR6_ANY ('0:0:0:0:0:0:0:0' a.k.a. '::') may be used | INADDR6_ANY ('0:0:0:0:0:0:0:0' a.k.a. '::') may be used | |||
| so that the server can listen to any IPv4 or IPv6 address."; | so that the server can listen to any IPv4 or IPv6 | |||
| address."; | ||||
| } | } | |||
| leaf local-port { | leaf local-port { | |||
| type inet:port-number; | type inet:port-number; | |||
| description | description | |||
| "The local port number to listen on for incoming UDP | "The local port number to listen on for incoming UDP | |||
| datagrams."; | datagrams."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 4. Security Considerations | 4. Security Considerations | |||
| This section uses the template described in Section 3.7 of | This section uses the template described in Section 3.7.1 of | |||
| [I-D.ietf-netmod-rfc8407bis]. | [RFC9907]. | |||
| The "ietf-udp-client" and "ietf-udp-server" YANG modules defines a | The "ietf-udp-client" and "ietf-udp-server" YANG modules define a | |||
| data model that is designed to be accessed via YANG-based management | data model that is designed to be accessed via YANG-based management | |||
| protocols, such as NETCONF [RFC6241] and RESTCONF [RFC8040]. These | protocols, such as Network Configuration Protocol (NETCONF) [RFC6241] | |||
| YANG-based management protocols (1) have to use a secure transport | and RESTCONF [RFC8040]. These YANG-based management protocols (1) | |||
| layer (e.g., SSH [RFC6242], TLS [RFC8446], and QUIC [RFC9000]) and | have to use a secure transport layer (e.g., SSH [RFC4252], TLS | |||
| (2) have to use mutual authentication. | [RFC8446], and QUIC [RFC9000]) and (2) have to use mutual | |||
| authentication. | ||||
| The Network Configuration Access Control Model (NACM) [RFC8341] | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
| provides the means to restrict access for particular NETCONF or | provides the means to restrict access for particular NETCONF or | |||
| RESTCONF users to a preconfigured subset of all available NETCONF or | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
| RESTCONF protocol operations and content. | RESTCONF protocol operations and content. | |||
| These YANG modules define a set of identities, types, and groupings. | These YANG modules define a set of identities, types, and groupings. | |||
| These nodes are intended to be reused by other YANG modules. The | These nodes are intended to be reused by other YANG modules. The | |||
| modules by themselves do not expose any data nodes that are writable, | modules by themselves do not expose any data nodes that are writable, | |||
| data nodes that contain read-only state, or RPCs. As such, there are | data nodes that contain read-only state, or RPCs. As such, there are | |||
| no additional security issues related to the YANG module that need to | no additional security issues related to the YANG modules that need | |||
| be considered. | to be considered. | |||
| Modules that use the groupings that are defined in this document | Modules that use the groupings that are defined in this document | |||
| should identify the corresponding security considerations. For | should identify the corresponding security considerations. For | |||
| example, reusing some of these groupings will expose privacy-related | example, reusing some of these groupings will expose privacy-related | |||
| information (e.g., 'remote-address', 'remote-port', 'local-address', | information (e.g., 'remote-address', 'remote-port', 'local-address', | |||
| or 'local-port'). | or 'local-port'). | |||
| 5. IANA Considerations | 5. IANA Considerations | |||
| This document describes the URIs from IETF XML Registry and the | This document describes the URIs from the "IETF XML Registry" and the | |||
| registration of a two new YANG module names | registration of two new YANG module names. | |||
| 5.1. URI | 5.1. The "IETF XML Registry" | |||
| IANA is requested to assign two new URIs from the IETF XML Registry | IANA has assigned two new URIs from the "IETF XML Registry" | |||
| [RFC3688]: | [RFC3688]: | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-udp-client | URI: urn:ietf:params:xml:ns:yang:ietf-udp-client | |||
| 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. | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-udp-server | ||||
| Registrant Contact: The IESG. | ||||
| XML: N/A; the requested URI is an XML namespace. | ||||
| 5.2. YANG Module Name | ||||
| This document also requests IANA to register the following YANG | ||||
| modules in the YANG Module Names registry [RFC6020] within the "YANG | ||||
| Parameters" registry group: | ||||
| name: ietf-udp-client | URI: urn:ietf:params:xml:ns:yang:ietf-udp-server | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-udp-client | Registrant Contact: The IESG. | |||
| prefix: udpc | XML: N/A; the requested URI is an XML namespace. | |||
| maintained by IANA? N | ||||
| reference: RFC XXXX | ||||
| name: ietf-udp-server | 5.2. The "YANG Module Names" Registry | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-udp-server | ||||
| prefix: udps | ||||
| maintained by IANA? N | ||||
| reference: RFC XXXX | ||||
| 6. Acknowledgements | IANA has registered the following YANG modules in the "YANG Module | |||
| Names" registry [RFC6020] within the "YANG Parameters" registry | ||||
| group: | ||||
| The authors would like to thank Mohamed Boucadair, Ran Chen, Benoit | Name: ietf-udp-client | |||
| Claise, Mahesh Jethanandani, Qiufang Ma, Jürgen Schönwälder, Ketan | Maintained by IANA? N | |||
| Talaulikar, Eric Vyncke, Paul Wouters and Qin Wu for their review and | Namespace: urn:ietf:params:xml:ns:yang:ietf-udp-client | |||
| valuable comments. | Prefix: udpc | |||
| Reference: RFC 9984 | ||||
| 7. References | Name: ietf-udp-server | |||
| Maintained by IANA? N | ||||
| Namespace: urn:ietf:params:xml:ns:yang:ietf-udp-server | ||||
| Prefix: udps | ||||
| Reference: RFC 9984 | ||||
| 7.1. Normative References | 6. References | |||
| [I-D.ietf-netmod-rfc6991-bis] | 6.1. Normative References | |||
| Schönwälder, J., "Common YANG Data Types", Work in | ||||
| Progress, Internet-Draft, draft-ietf-netmod-rfc6991-bis- | ||||
| 18, 23 June 2025, <https://datatracker.ietf.org/doc/html/ | ||||
| draft-ietf-netmod-rfc6991-bis-18>. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
| <https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| skipping to change at page 13, line 36 ¶ | skipping to change at line 574 ¶ | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | |||
| Access Control Model", STD 91, RFC 8341, | Access Control Model", STD 91, RFC 8341, | |||
| DOI 10.17487/RFC8341, March 2018, | DOI 10.17487/RFC8341, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8341>. | <https://www.rfc-editor.org/info/rfc8341>. | |||
| 7.2. Informative References | [RFC9911] Schönwälder, J., Ed., "Common YANG Data Types", RFC 9911, | |||
| DOI 10.17487/RFC9911, December 2025, | ||||
| <https://www.rfc-editor.org/info/rfc9911>. | ||||
| [I-D.ietf-netmod-rfc8407bis] | 6.2. Informative References | |||
| Bierman, A., Boucadair, M., and Q. Wu, "Guidelines for | ||||
| Authors and Reviewers of Documents Containing YANG Data | [RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | |||
| Models", Work in Progress, Internet-Draft, draft-ietf- | Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, | |||
| netmod-rfc8407bis-28, 5 June 2025, | January 2006, <https://www.rfc-editor.org/info/rfc4252>. | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-netmod- | ||||
| rfc8407bis-28>. | ||||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
| and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | ||||
| <https://www.rfc-editor.org/info/rfc6242>. | ||||
| [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>. | |||
| [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | |||
| Interchange Format", STD 90, RFC 8259, | Interchange Format", STD 90, RFC 8259, | |||
| DOI 10.17487/RFC8259, December 2017, | DOI 10.17487/RFC8259, December 2017, | |||
| <https://www.rfc-editor.org/info/rfc8259>. | <https://www.rfc-editor.org/info/rfc8259>. | |||
| [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
| skipping to change at page 14, line 36 ¶ | skipping to change at line 616 ¶ | |||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
| <https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
| [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | |||
| Multiplexed and Secure Transport", RFC 9000, | Multiplexed and Secure Transport", RFC 9000, | |||
| DOI 10.17487/RFC9000, May 2021, | DOI 10.17487/RFC9000, May 2021, | |||
| <https://www.rfc-editor.org/info/rfc9000>. | <https://www.rfc-editor.org/info/rfc9000>. | |||
| [RFC9907] Bierman, A., Boucadair, M., Ed., and Q. Wu, "Guidelines | ||||
| for Authors and Reviewers of Documents Containing YANG | ||||
| Data Models", BCP 216, RFC 9907, DOI 10.17487/RFC9907, | ||||
| March 2026, <https://www.rfc-editor.org/info/rfc9907>. | ||||
| [W3C.REC-xml-20081126] | [W3C.REC-xml-20081126] | |||
| Bray, T., Paoli, J., Sperberg-McQueen, C.M., Maler, E., | Bray, T., Ed., Paoli, J., Ed., Sperberg-McQueen, C.M., | |||
| and F. Yergeau, "Extensible Markup Language (XML) 1.0 | Ed., Maler, E., Ed., and F. Yergeau, Ed., "Extensible | |||
| (Fifth Edition)", World Wide Web Consortium | Markup Language (XML) 1.0 (Fifth Edition)", W3C | |||
| Recommendation REC-xml-20081126, November 2008, | Recommendation, 26 November 2008, | |||
| <https://www.w3.org/TR/2008/REC-xml-20081126/>. | <https://www.w3.org/TR/2008/REC-xml-20081126/>. Latest | |||
| version available at <https://www.w3.org/TR/xml/>. | ||||
| Acknowledgements | ||||
| The authors would like to thank Mohamed Boucadair, Ran Chen, Benoit | ||||
| Claise, Mahesh Jethanandani, Qiufang Ma, Jürgen Schönwälder, Ketan | ||||
| Talaulikar, Éric Vyncke, Paul Wouters, and Qin Wu for their reviews | ||||
| and valuable comments. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Alex Huang Feng | Alex Huang Feng | |||
| INSA-Lyon | INSA-Lyon | |||
| Lyon | Lyon | |||
| France | France | |||
| Email: alex.huang-feng@insa-lyon.fr | Email: alex.huang-feng@insa-lyon.fr | |||
| Pierre Francois | Pierre Francois | |||
| INSA-Lyon | INSA-Lyon | |||
| Lyon | Lyon | |||
| France | France | |||
| Email: pierre.francois@insa-lyon.fr | Email: pierre.francois@insa-lyon.fr | |||
| Kent Watsen | Kent Watsen | |||
| Watsen Networks | Watsen Networks | |||
| Email: kent+ietf@watsen.net | Email: kent+ietf@watsen.net | |||
| End of changes. 73 change blocks. | ||||
| 211 lines changed or deleted | 197 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||