<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="2"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-netconf-udp-client-server-01"
     ipr="trust200902">
  <front>
    <title abbrev="udp-client-server-grouping">YANG Groupings for UDP
    Clients and UDP Servers</title>

    <author fullname="Alex Huang Feng" initials="A." surname="Huang Feng">
      <organization>INSA-Lyon</organization>

      <address>
        <postal>
          <street/>

          <city>Lyon</city>

          <region/>

          <code/>

          <country>France</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>alex.huang-feng@insa-lyon.fr</email>

        <uri/>
      </address>
    </author>

    <author fullname="Pierre Francois" initials="P." surname="Francois">
      <organization>INSA-Lyon</organization>

      <address>
        <postal>
          <street/>

          <city>Lyon</city>

          <region/>

          <code/>

          <country>France</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>pierre.francois@insa-lyon.fr</email>

        <uri/>
      </address>
    </author>
    <author fullname="Kent Watsen" initials="K." surname="Watsen">
      <organization>Watsen Networks</organization>
      <address>
        <email>kent+ietf@watsen.net</email>
      </address>
    </author>

    <date day="27" month="February" year="2024"/>

    <abstract>
      <t>This document defines two YANG 1.1 modules to
      support the configuration of UDP clients and UDP servers.</t>
    </abstract>

    <note title="Requirements Language">
      <t>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
      <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when,
      they appear in all capitals, as shown here.</t>
    </note>
  </front>

  <middle>
    <section anchor="introduction" title="Introduction">
      <t>This document defines two YANG 1.1 <xref target="RFC7950"/> modules to support
      the configuration of UDP clients and UDP servers <xref target="RFC768"/>, either
      as standalone or in conjunction with configuration of other layers.</t>
    </section>

    <section anchor="udp-client" title='The "ietf-udp-client" Module'>
      <t>The "ietf-udp-client" YANG module defines the "udp-client-grouping"
      grouping for configuring UDP clients with remote server information.</t>

      <section anchor="udp-client-grouping" title='The "udp-client-grouping" Grouping'>
        <t>The following tree diagram <xref target="RFC8340"/> illustrates the tree
        structure of the "udp-client-grouping" grouping:</t>

          <t><figure>
              <artwork><![CDATA[
module: ietf-udp-client

  grouping udp-client-grouping:
    +-- remote-address    inet:ip-address-no-zone
    +-- remote-port?      inet:port-number
          ]]></artwork>
            </figure>
          </t>
      </section>

      <section anchor="udp-client-ym" title="YANG Module">
        <t>This module imports types defined in <xref target="RFC6991"/>.</t>

          <t><figure>
              <artwork><![CDATA[
<CODE BEGINS> file "ietf-udp-client@2024-02-26.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 6991: Common YANG Data Types";
  }

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

     Authors:  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.

    Copyright (c) 2024 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).

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

  revision 2024-02-26 {
    description
      "Initial revision";
    reference
      "RFC-to-be: YANG Grouping for UDP Clients and UDP Servers";
  }

  grouping udp-client-grouping {
    description
      "Provides a reusable grouping for configuring a UDP client.";

    leaf remote-address {
      type inet:ip-address-no-zone;
      mandatory true;
      description
        "Specifies an IP address of the UDP client, which can be an
        IPv4 address or an IPv6 address.";
    }

    leaf remote-port {
      type inet:port-number;
      default "0";
      description
        "Specifies a port number of the UDP client. An invalid default
        value is used so that importing modules may 'refine' it with
        the appropriate default port number value.";
    }
  }
}
<CODE ENDS>]]></artwork>
            </figure>
          </t>
      </section>
    </section>

    <section anchor="udp-server" title='The "ietf-udp-server" Module'>
      <t>The "ietf-udp-server" YANG module defines the "udp-server-grouping" grouping for
      configuring UDP servers.</t>

      <section anchor="udp-server-grouping" title='The "udp-server-grouping" Grouping'>
        <t>The following tree diagram <xref target="RFC8340"/> illustrates the structure of
        "udp-server-grouping" grouping:</t>
        
          <t><figure>
              <artwork><![CDATA[
module: ietf-udp-server

  grouping udp-server-grouping:
    +-- local-address    inet:ip-address-no-zone
    +-- local-port?      inet:port-number
          ]]></artwork>
            </figure>
        </t>
      </section>

      <section anchor="udp-server-ym" title="YANG Module">
        <t>The "ietf-udp-server" imports types defined in <xref target="RFC6991"/>.</t>

        <t><figure>
          <artwork><![CDATA[
<CODE BEGINS> file "ietf-udp-server@2024-02-26.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 6991: Common YANG Data Types";
  }

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

     Authors:  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) 2024 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).

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

  revision 2024-02-26 {
    description
      "Initial revision";
    reference
      "RFC-to-be: YANG Grouping for UDP Clients and UDP Servers";
  }

  grouping udp-server-grouping {
    description
      "Provides a reusable grouping for configuring a UDP servers.";

    leaf local-address {
      type inet:ip-address-no-zone;
      mandatory true;
      description
        "Specifies an IP address of the UDP server, which can be an
        IPv4 address or an IPv6 address.";
    }

    leaf local-port {
      type inet:port-number;
      default "0";
      description
        "Specifies a port number of the UDP server. An invalid default
        value is used so that importing modules may 'refine' it with
        the appropriate default port number value.";
    }
  }
}
<CODE ENDS>]]></artwork>
            </figure>
          </t>
      </section>
    </section>

    <section anchor="security" title="Security Considerations">

      <t>The YANG module specified in this document defines a schema for data
        that is designed to be accessed via network management protocols such
        as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>.
        The lowest NETCONF layer is the secure transport layer, and the
        mandatory-to-implement secure transport is Secure Shell (SSH) <xref target="RFC6242"/>.
        The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport
        is TLS <xref target="RFC8446"/>.
      </t>

      <t>The Network Configuration Access Control Model (NACM) <xref target="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.
      </t>

      <t>Since the module in this document only define groupings, these considerations are
      primarily for the designers of other modules that use these groupings.</t>

      <t>None of the readable data nodes defined in this YANG module are considered sensitive
      or vulnerable in network environments. The NACM "default-deny-all" extension has not
      been set for any data nodes defined in this module.</t>

      <t>None of the writable data nodes defined in this YANG module are considered sensitive
      or vulnerable in network environments. The NACM "default-deny-write" extension has not
      been set for any data nodes defined in this module.</t>

      <t>This module does not define any RPCs, actions, or notifications, and thus the security
      consideration for such is not provided here.</t>

    </section>

    <section anchor="IANA_Considerations" title="IANA Considerations">
      <t>This document describes the URIs from IETF
      XML Registry and the registration of a two new YANG module names</t>
      <section title="URI">
        <t>IANA is requested to assign two new URI from the <xref
        target="RFC3688">IETF XML Registry</xref>. The following two URIs are
        suggested:</t>

        <t><figure>
            <artwork align="left"><![CDATA[
URI: urn:ietf:params:xml:ns:yang:ietf-udp-client
Registrant Contact: The IESG.
XML: N/A; the requested URI is an XML namespace.]]></artwork>
          </figure></t>

        <t><figure>
            <artwork align="left"><![CDATA[
URI: urn:ietf:params:xml:ns:yang:ietf-udp-server
Registrant Contact: The IESG.
XML: N/A; the requested URI is an XML namespace.]]></artwork>
          </figure></t>
      </section>

      <section title="YANG module name">
        <t>This document also requests two new YANG module names in the
        <xref target="RFC8342">YANG Module Names registry</xref> with the
        following suggestions:</t>

        <t><figure>
            <artwork align="left"><![CDATA[
name: ietf-udp-client
namespace: urn:ietf:params:xml:ns:yang:ietf-udp-client
prefix: udpc
maintained by IANA? N
reference: RFC-to-be]]></artwork>
          </figure></t>

        <t><figure>
            <artwork align="left"><![CDATA[
name: ietf-udp-server
namespace: urn:ietf:params:xml:ns:yang:ietf-udp-server
prefix: udps
maintained by IANA? N
reference: RFC-to-be]]></artwork>
          </figure></t>
      </section>
    </section>

    <section anchor="acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank Mohamed Boucadair, Benoit Claise, Qiufang Ma
      and Qin Wu for their review and valuable comments.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.768.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.3688.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.6241.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.6242.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.6991.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.7950.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.8341.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.8040.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.8340.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.8342.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.8446.xml"?>
    </references>

    <references title="Informative References">
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.9325.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.8085.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.9147.xml"?>
      <?rfc include="https://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-netconf-tls-client-server.xml"?>
    </references>
  </back>
</rfc>
