RFC 9984 PROPOSED STANDARD MANAGEMENT · YANG · UDP

YANG UDP groupings: YANG Groupings for UDP Clients and UDP Servers

Reusable YANG building blocks for describing how a UDP client or UDP server is configured.

On rfc-editor.org ↗
PUBLISHED
June 2026
AUTHORS
A. Huang-Feng, P. Francois, K. Watsen
STREAM
IETF
YANG MODULES
ietf-udp-client and ietf-udp-server
YANG VERSION
1.1
DEFAULT LOCAL-PORT (CLIENT)
0 (any available port)
MODULE PREFIXES
udpc and udps
MODULE REVISION
2026-06-15
DOI
10.17487/RFC9984

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                     A. Huang-Feng
Request for Comments: 9984                                   P. Francois
Category: Standards Track                                      INSA-Lyon
ISSN: 2070-1721                                                K. Watsen
                                                         Watsen Networks
                                                               June 2026


             YANG Groupings for UDP Clients and UDP Servers

Abstract

   This document presents two YANG 1.1 modules with reusable groupings
   for managing UDP clients and UDP servers.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 7841.

   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 (c) 2026 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Revised BSD License text as described in Section 4.e of the
   Trust Legal Provisions and are provided without warranty as described
   in the Revised BSD License.

Table of Contents

   1.  Introduction
     1.1.  Requirements Language
     1.2.  Adherence to the NMDA
     1.3.  Conventions
   2.  The "ietf-udp-client" Module
     2.1.  Data Model Overview
     2.2.  Example Usage
     2.3.  YANG Module
   3.  The "ietf-udp-server" Module
     3.1.  Data Model Overview
     3.2.  Example Usage
     3.3.  YANG Module
   4.  Security Considerations
   5.  IANA Considerations
     5.1.  The "IETF XML Registry"
     5.2.  The "YANG Module Names" Registry
   6.  References
     6.1.  Normative References
     6.2.  Informative References
   Acknowledgements
   Authors' Addresses

1.  Introduction

   This document presents two YANG 1.1 [RFC7950] modules with reusable
   groupings for managing UDP clients and UDP servers [RFC768].  These
   modules may be used directly (e.g., define a specific UDP client or
   UDP server) or in conjunction with the configuration defined for
   higher-level protocols that depend on UDP.

1.1.  Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

1.2.  Adherence to the NMDA

   This document is compliant with the Network Management Datastore
   Architecture (NMDA) [RFC8342].  It does not define any protocol-
   accessible nodes that are "config false".

1.3.  Conventions

   Various examples in this document use the XML [W3C.REC-xml-20081126]
   encoding.  Other encodings, such as JSON [RFC8259], could
   alternatively be used.

2.  The "ietf-udp-client" Module

   This section defines a YANG 1.1 module called "ietf-udp-client".
   This YANG module defines the "udp-client" grouping for providing UDP
   clients with remote server information.

   Section 2.1 provides the overview of the YANG module.  An example of
   usage is illustrated in Section 2.2.  Section 2.3 defines the YANG
   module itself.

2.1.  Data Model Overview

   This section provides an overview of the features and the grouping
   defined in the "ietf-udp-client" YANG module.

2.1.1.  Features

   The "ietf-udp-client" module defines the following "feature"
   statement:

   Features:
     +-- local-binding

   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].

   This feature indicates that the client supports configuring local
   bindings (i.e., the local address and local port number) for UDP
   clients.

2.1.2.  The "udp-client" Grouping

   The following tree diagram [RFC8340] illustrates the tree structure
   of the "udp-client" grouping:

   module: ietf-udp-client

     grouping udp-client:
       +-- remote-address    inet:host
       +-- remote-port?      inet:port-number
       +-- local-address?    inet:ip-address {local-binding}?
       +-- local-port?       inet:port-number {local-binding}?

   The description of these parameters is provided below:

   *  The "remote-address", which is mandatory, may be configured as an
      IPv4 address, an IPv6 address, or a hostname.  The resolved
      address should be compatible with the local address family, if
      also provided.

   *  The "remote-port" is defined with neither a "default" nor a
      "mandatory" statement.  YANG modules using this grouping SHOULD
      refine the grouping with a "default" statement when the port
      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
      configured.  This MAY be ignored when the port number is neither
      well-known nor mandatory to configure, such as might be the case
      when this grouping is used by another grouping.

   *  The "local-address", which is enabled by the "local-binding"
      feature, may be configured as an IPv4 address, an IPv6 address, or
      a wildcard value.  In normal operation, the local and configured
      remote addresses SHOULD be from the same address family.
      Differences between address families may occur in abnormal or
      error conditions; therefore, they are allowed to be reported.

   *  The "local-port", which depends on the "local-binding" feature, is
      not mandatory.  Its default value is "0", indicating that the
      operating system can select an arbitrary port number.

2.2.  Example Usage

   This section presents an example of usage of the "udp-client"
   grouping.

   <!-- The outermost element below doesn't exist in the data model. -->
   <!--  It simulates if the "grouping" were a "container" instead.  -->

   <udp-client xmlns="urn:ietf:params:xml:ns:yang:ietf-udp-client">
     <remote-address>www.example.com</remote-address>
     <remote-port>10000</remote-port>
     <local-address>192.0.2.2</local-address>
     <local-port>12345</local-port>
   </udp-client>

2.3.  YANG Module

   This module imports types defined in [RFC9911].

   <CODE BEGINS> file "ietf-udp-client@2026-06-15.yang"
   module ietf-udp-client {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-udp-client";
     prefix udpc;

     import ietf-inet-types {
       prefix inet;
       reference
         "RFC 9911: Common YANG Data Types";
     }

     organization
       "IETF NETCONF (Network Configuration) Working Group";
     contact
       "WG Web:   <https://datatracker.ietf.org/group/netconf/>
        WG List:  <mailto:netconf@ietf.org>

        Authors:  Alex Huang Feng
                  <mailto:alex.huang-feng@insa-lyon.fr>
                  Pierre Francois
                  <mailto:pierre.francois@insa-lyon.fr>";
     description
        "Defines a generic grouping for UDP-based client applications.

        The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
        NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
        'MAY', and 'OPTIONAL' in this document are to be interpreted as
        described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
        they appear in all capitals, as shown here.

        Copyright (c) 2026 IETF Trust and the persons identified as
        authors of the code.  All rights reserved.

        Redistribution and use in source and binary forms, with or
        without modification, is permitted pursuant to, and subject to
        the license terms contained in, the Revised BSD License set
        forth in Section 4.c of the IETF Trust's Legal Provisions
        Relating to IETF Documents
        (https://trustee.ietf.org/license-info).

        All revisions of IETF and IANA published modules can be found
        at the YANG Parameters registry group
        (https://www.iana.org/assignments/yang-parameters).

        This version of this YANG module is part of RFC 9984; see
        the RFC itself for full legal notices.";

     revision 2026-06-15 {
       description
         "Initial revision";
       reference
         "RFC 9984: YANG Groupings for UDP Clients and UDP Servers";
     }

     feature local-binding {
       description
         "Indicates that the UDP client supports configuring local
          bindings (i.e., the local address and local port number)
          for UDP clients.";
     }

     grouping udp-client {
       description
         "A reusable grouping for UDP clients.

          Note that this grouping uses fairly typical descendant
          node names such that a stack of 'uses' statements will
          have name conflicts.  It is intended that the consuming
          data model will resolve the issue (e.g., by wrapping
          the 'uses' statement in a container called
          'udp-client-parameters').  This module purposely does
          not do this itself so as to provide maximum flexibility
          to consuming models.";
       leaf remote-address {
         type inet:host;
         mandatory true;
         description
           "The IP address or hostname of the remote UDP server.";
       }
       leaf remote-port {
         type inet:port-number;
         description
           "The port number of the remote UDP server.";
       }
       leaf local-address {
         if-feature "local-binding";
         type inet:ip-address;
         description
           "The local IP address to bind to when sending UDP
            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
            so that the client can bind to any IPv4 or IPv6 address.
            In normal operation, the local and configured
            remote addresses SHOULD be from the same address family.
            Differences between address families may occur in
            abnormal or error conditions; therefore, they are allowed to
            be reported.";
       }

       leaf local-port {
         if-feature "local-binding";
         type inet:port-number;
         default "0";
         description
           "The local port number to bind to when sending UDP
            datagrams to the remote server. The port number '0',
            which is the default value, indicates that any available
            local port number may be used.";
       }
     }
   }
   <CODE ENDS>

3.  The "ietf-udp-server" Module

   This section defines a YANG 1.1 module called "ietf-udp-server".
   This YANG module defines the "udp-server" grouping for managing UDP
   servers.

   Section 3.1 provides an overview of the "ietf-udp-server" YANG
   module.  An example of usage is illustrated in Section 3.2.
   Section 3.3 defines the YANG module itself.

3.1.  Data Model Overview

   This section provides an overview of the grouping defined in the
   "ietf-udp-server" module.

3.1.1.  The "udp-server" Grouping

   The following tree diagram [RFC8340] illustrates the tree structure
   of "udp-server" grouping:

   module: ietf-udp-server

     grouping udp-server:
       +-- local-bind* [local-address]
          +-- local-address    inet:ip-address
          +-- local-port?      inet:port-number

   The description of these parameters is provided below:

   *  The "local-address", which is mandatory, may be configured as an
      IPv4 address, an IPv6 address, or a wildcard value.

   *  The "local-port" is defined with neither a "default" nor a
      "mandatory" statement.  YANG modules using this grouping SHOULD
      refine the grouping with a "default" statement when the port
      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
      configured.  This MAY be ignored when the port number is neither
      well-known nor mandatory to configure, such as might be the case
      when this grouping is used by another grouping.

3.2.  Example Usage

   This section presents two examples of usage of the "udp-server"
   grouping.

   The following shows an example of a server configured for listening
   to an IPv4 address:

   <!-- The outermost element below doesn't exist in the data model. -->
   <!--  It simulates if the "grouping" were a "container" instead.  -->

   <udp-server xmlns="urn:ietf:params:xml:ns:yang:ietf-udp-server">
     <local-bind>
       <local-address>192.0.2.2</local-address>
       <local-port>49152</local-port>
     </local-bind>
   </udp-server>

   The following shows an example of a server configured for listening
   to an IPv4 and IPv6 together:

   <!-- The outermost element below doesn't exist in the data model. -->
   <!--  It simulates if the "grouping" were a "container" instead.  -->

   <udp-server xmlns="urn:ietf:params:xml:ns:yang:ietf-udp-server">
     <local-bind>
       <local-address>192.0.2.2</local-address>
       <local-port>49152</local-port>
     </local-bind>
     <local-bind>
       <local-address>2001:db8::0</local-address>
       <local-port>49153</local-port>
     </local-bind>
   </udp-server>

3.3.  YANG Module

   This module imports types defined in [RFC9911].

   <CODE BEGINS> file "ietf-udp-server@2026-06-15.yang"
   module ietf-udp-server {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-udp-server";
     prefix udps;

     import ietf-inet-types {
       prefix inet;
       reference
         "RFC 9911: Common YANG Data Types";
     }

     organization
       "IETF NETCONF (Network Configuration) Working Group";
     contact
       "WG Web:   <https://datatracker.ietf.org/group/netconf/>
        WG List:  <mailto:netconf@ietf.org>

        Authors:  Alex Huang Feng
                  <mailto:alex.huang-feng@insa-lyon.fr>
                  Pierre Francois
                  <mailto:pierre.francois@insa-lyon.fr>";
     description
       "Defines a generic grouping for UDP-based server applications.

        Copyright (c) 2026 IETF Trust and the persons identified as
        authors of the code.  All rights reserved.

        Redistribution and use in source and binary forms, with or
        without modification, is permitted pursuant to, and subject to
        the license terms contained in, the Revised BSD License set
        forth in Section 4.c of the IETF Trust's Legal Provisions
        Relating to IETF Documents
        (https://trustee.ietf.org/license-info).

        All revisions of IETF and IANA published modules can be found
        at the YANG Parameters registry group
        (https://www.iana.org/assignments/yang-parameters).

        This version of this YANG module is part of RFC 9984; see
        the RFC itself for full legal notices.";

     revision 2026-06-15 {
       description
         "Initial revision";
       reference
         "RFC 9984: YANG Groupings for UDP Clients and UDP Servers";
     }

     grouping udp-server {
       description
         "A reusable grouping for managing UDP servers.

          Note that this grouping uses fairly typical descendant
          node names such that a stack of 'uses' statements will
          have name conflicts.  It is intended that the consuming
          data model will resolve the issue (e.g., by wrapping
          the 'uses' statement in a container called
          'udp-server-parameters').  This module purposely does
          not do this itself so as to provide maximum flexibility
          to consuming models.";
       list local-bind {
         key "local-address";
         min-elements 1;
         description
           "A list of bind (listen) points for this server
            instance.  A server instance may have multiple
            bind points to support, e.g., the same port number in
            different address families or different port numbers
            in the same address family.";
         leaf local-address {
           type inet:ip-address;
           mandatory true;
           description
             "The local IP address to listen on for incoming
              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
              so that the server can listen to any IPv4 or IPv6
              address.";
         }
         leaf local-port {
           type inet:port-number;
           description
             "The local port number to listen on for incoming UDP
              datagrams.";
         }
       }
     }
   }
   <CODE ENDS>

4.  Security Considerations

   This section uses the template described in Section 3.7.1 of
   [RFC9907].

   The "ietf-udp-client" and "ietf-udp-server" YANG modules define a
   data model that is designed to be accessed via YANG-based management
   protocols, such as the Network Configuration Protocol (NETCONF)
   [RFC6241] and RESTCONF [RFC8040].  These YANG-based management
   protocols (1) have to use a secure transport layer (e.g., Secure
   Shell (SSH) [RFC4252], TLS [RFC8446], and QUIC [RFC9000]) and (2)
   have to use mutual authentication.

   The Network Configuration Access Control Model (NACM) [RFC8341]
   provides the means to restrict access for particular NETCONF or
   RESTCONF users to a preconfigured subset of all available NETCONF or
   RESTCONF protocol operations and content.

   These YANG modules define a set of identities, types, and groupings.
   These nodes are intended to be reused by other YANG modules.  The
   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
   no additional security issues related to the YANG modules that need
   to be considered.

   Modules that use the groupings that are defined in this document
   should identify the corresponding security considerations.  For
   example, reusing some of these groupings will expose privacy-related
   information (e.g., 'remote-address', 'remote-port', 'local-address',
   or 'local-port').

5.  IANA Considerations

   This document describes the URIs from the "IETF XML Registry" and the
   registration of two new YANG module names.

5.1.  The "IETF XML Registry"

   IANA has assigned two new URIs from the "IETF XML Registry"
   [RFC3688]:

   URI:  urn:ietf:params:xml:ns:yang:ietf-udp-client
   Registrant Contact:  The IESG.
   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.  The "YANG Module Names" Registry

   IANA has registered the following YANG modules in the "YANG Module
   Names" registry [RFC6020] within the "YANG Parameters" registry
   group:

   Name:  ietf-udp-client
   Maintained by IANA?  N
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-udp-client
   Prefix:  udpc
   Reference:  RFC 9984

   Name:  ietf-udp-server
   Maintained by IANA?  N
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-udp-server
   Prefix:  udps
   Reference:  RFC 9984

6.  References

6.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC3688]  Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
              DOI 10.17487/RFC3688, January 2004,
              <https://www.rfc-editor.org/info/rfc3688>.

   [RFC6020]  Bjorklund, M., Ed., "YANG - A Data Modeling Language for
              the Network Configuration Protocol (NETCONF)", RFC 6020,
              DOI 10.17487/RFC6020, October 2010,
              <https://www.rfc-editor.org/info/rfc6020>.

   [RFC768]   Postel, J., "User Datagram Protocol", STD 6, RFC 768,
              DOI 10.17487/RFC0768, August 1980,
              <https://www.rfc-editor.org/info/rfc768>.

   [RFC7950]  Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
              RFC 7950, DOI 10.17487/RFC7950, August 2016,
              <https://www.rfc-editor.org/info/rfc7950>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

   [RFC8341]  Bierman, A. and M. Bjorklund, "Network Configuration
              Access Control Model", STD 91, RFC 8341,
              DOI 10.17487/RFC8341, March 2018,
              <https://www.rfc-editor.org/info/rfc8341>.

   [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>.

6.2.  Informative References

   [RFC4252]  Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH)
              Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252,
              January 2006, <https://www.rfc-editor.org/info/rfc4252>.

   [RFC6241]  Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
              and A. Bierman, Ed., "Network Configuration Protocol
              (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
              <https://www.rfc-editor.org/info/rfc6241>.

   [RFC8040]  Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
              Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
              <https://www.rfc-editor.org/info/rfc8040>.

   [RFC8259]  Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
              Interchange Format", STD 90, RFC 8259,
              DOI 10.17487/RFC8259, December 2017,
              <https://www.rfc-editor.org/info/rfc8259>.

   [RFC8340]  Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
              BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
              <https://www.rfc-editor.org/info/rfc8340>.

   [RFC8342]  Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
              and R. Wilton, "Network Management Datastore Architecture
              (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
              <https://www.rfc-editor.org/info/rfc8342>.

   [RFC8446]  Rescorla, E., "The Transport Layer Security (TLS) Protocol
              Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
              <https://www.rfc-editor.org/info/rfc8446>.

   [RFC9000]  Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
              Multiplexed and Secure Transport", RFC 9000,
              DOI 10.17487/RFC9000, May 2021,
              <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]
              Bray, T., Ed., Paoli, J., Ed., Sperberg-McQueen, C.M.,
              Ed., Maler, E., Ed., and F. Yergeau, Ed., "Extensible
              Markup Language (XML) 1.0 (Fifth Edition)", W3C
              Recommendation, 26 November 2008,
              <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

   Alex Huang Feng
   INSA-Lyon
   Lyon
   France
   Email: alex.huang-feng@insa-lyon.fr


   Pierre Francois
   INSA-Lyon
   Lyon
   France
   Email: pierre.francois@insa-lyon.fr


   Kent Watsen
   Watsen Networks
   Email: kent+ietf@watsen.net

AI ELI5

On this page
PROBLEMMany protocols that run over UDP each need configuration for where to send datagrams or which addresses and ports to listen on, and each YANG model would otherwise redefine the same nodes.
MECHANISMRFC 9984 defines two YANG 1.1 modules, ietf-udp-client and ietf-udp-server, each with one reusable grouping: udp-client (remote address and port, optional local binding) and udp-server (a list of local address and port bind points).
WHY IT MATTERSOther YANG modules can pull in these groupings instead of writing their own UDP settings. The modules define no data nodes by themselves, so they add no extra security exposure.

§1What the Document Provides

RFC 9984 presents two YANG 1.1 modules with reusable groupings for managing UDP clients and UDP servers, where UDP is the protocol of RFC 768. A grouping is a named bundle of configuration nodes that other modules can include.

The modules may be used directly, to define a specific UDP client or server, or together with the configuration of higher-level protocols that depend on UDP. The document also states that it complies with the Network Management Datastore Architecture (NMDA) and defines no protocol-accessible nodes that are config false.

It is a box of ready-made pieces for describing how a computer talks over UDP, so nobody has to rebuild them.

§2The udp-client Grouping

The ietf-udp-client module defines the udp-client grouping, which gives a UDP client information about the remote server. It has four nodes: remote-address, remote-port, local-address and local-port.

The remote-address is mandatory and may be an IPv4 address, an IPv6 address or a hostname. The remote-port has neither a default nor a mandatory statement. Modules that use the grouping SHOULD refine it with a default when the port is well known, or with mandatory when a port must always be configured.

The two local nodes sit behind a feature called local-binding, which says the client supports configuring the local address and local port. The local-port defaults to 0, meaning the operating system may pick any port. The local and remote addresses SHOULD be from the same address family in normal operation; differences may occur in abnormal or error conditions, so they are allowed to be reported.

The client form asks where to send messages and, if you want, which of your own doors and numbers to send from. If you leave your own number as zero, the computer picks one.

THE UDP-CLIENT GROUPING (RFC 9984)
  • grouping udp-client
    • remote-address mandatory; inet:host
    • remote-port optional; inet:port-number
    • local-address needs local-binding feature
    • local-port needs local-binding feature; default 0

§3Client and Server Examples

The client example in the RFC sets remote-address to www.example.com, remote-port to 10000, local-address to 192.0.2.2 and local-port to 12345. The outer udp-client element is only a stand-in: it does not exist in the data model and simulates the grouping being a container.

The server examples show a server listening on one IPv4 address, 192.0.2.2 port 49152, and a server listening on that IPv4 address together with an IPv6 address, 2001:db8::0 port 49153. Examples are written in XML, though the RFC notes other encodings such as JSON could be used.

The examples are filled-in forms: one client that names who to talk to, and servers that say which addresses and numbers they wait at.

§4The udp-server Grouping

The ietf-udp-server module defines the udp-server grouping for managing UDP servers. Its core is a list called local-bind, keyed by local-address, with at least one element. Each entry is a bind (listen) point holding a mandatory local-address and an optional local-port.

A server instance may have several bind points, for example the same port number in different address families or different port numbers in the same address family. The local-address may be an IPv4 address, an IPv6 address or a wildcard (0.0.0.0 or ::), so the server can listen on any address. As in the client grouping, local-port has no default or mandatory statement, and users of the grouping SHOULD refine it in the same way.

Both groupings use fairly typical node names, so stacking several uses statements can cause name conflicts. The consuming model is expected to resolve this, for example by wrapping the uses statement in a container; the modules deliberately do not do it themselves, for maximum flexibility.

A server can wait at several doors at once. The server form is a list of those doors, each with an address and a number.

THE UDP-SERVER GROUPING (RFC 9984)
  • grouping udp-server
    • local-bind list keyed by local-address; at least one entry
      • local-address mandatory; inet:ip-address
      • local-port optional; inet:port-number

§5Security Considerations

The modules are designed to be accessed through YANG-based management protocols such as NETCONF and RESTCONF. Those protocols have to use a secure transport layer (for example SSH, TLS or QUIC) and have to use mutual authentication. The Network Configuration Access Control Model (NACM) can restrict which users may reach which operations and content.

The modules define identities, types and groupings meant for reuse, and by themselves expose no writable data nodes, no read-only state and no RPCs. So they raise no additional security issues. Modules that reuse the groupings should state their own security considerations, since nodes such as remote-address, remote-port, local-address and local-port can expose privacy-related information.

The forms are blank, so they hold no secrets. Whoever fills them in must protect them, because addresses and numbers can say a lot about a computer.

§6IANA Registrations

IANA has assigned two URIs in the IETF XML Registry, urn:ietf:params:xml:ns:yang:ietf-udp-client and urn:ietf:params:xml:ns:yang:ietf-udp-server, each with the IESG as registrant contact.

IANA has also registered the two module names in the YANG Module Names registry. ietf-udp-client uses the prefix udpc and ietf-udp-server uses the prefix udps. Neither is maintained by IANA, and both cite RFC 9984. Both modules carry the revision date 2026-06-15 and import types from RFC 9911.

The names of the two forms were written in an official list so nobody else uses the same names.

§7References