<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.1 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ma-opsawg-schedule-yang-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="schedule YANG">A YANG Data Model for Scheduling</title>
    <seriesInfo name="Internet-Draft" value="draft-ma-opsawg-schedule-yang-01"/>
    <author fullname="Qiufang Ma">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>
          <city>Jiangsu</city>
          <code>210012</code>
          <country>China</country>
        </postal>
        <email>maqiufang1@huawei.com</email>
      </address>
    </author>
    <author fullname="Qin Wu">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>
          <city>Jiangsu</city>
          <code>210012</code>
          <country>China</country>
        </postal>
        <email>bill.wu@huawei.com</email>
      </address>
    </author>
    <author fullname="Mohamed Boucadair">
      <organization>Orange</organization>
      <address>
        <postal>
          <city>Rennes</city>
          <code>35000</code>
          <country>France</country>
        </postal>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <author fullname="Daniel King">
      <organization>Lancaster University</organization>
      <address>
        <postal>
          <country>United Kingdom</country>
        </postal>
        <email>d.king@lancaster.ac.uk</email>
      </address>
    </author>
    <date year="2023" month="October" day="20"/>
    <area>Operations and Management</area>
    <workgroup>OPSAWG</workgroup>
    <keyword>calendaring</keyword>
    <keyword>scheduling</keyword>
    <keyword>YANG</keyword>
    <keyword>groupings</keyword>
    <abstract>
      <?line 55?>

<t>This document defines a common schedule YANG module which is
   designed to be applicable for scheduling information such as event, policy,
   services, or resources based on date and time.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Operations and Management Area Working Group Working Group mailing list (opsawg@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/opsawg/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/boucadair/policy-based-network-acl"/>.</t>
    </note>
  </front>
  <middle>
    <?line 61?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Several specifications include a provision for scheduling. Examples of such specifications
are <xref target="I-D.ietf-opsawg-ucl-acl"/>, <xref target="I-D.contreras-opsawg-scheduling-oam-tests"/>, and <xref target="I-D.united-tvr-schedule-yang"/>.
Both <xref target="I-D.ietf-opsawg-ucl-acl"/> and <xref target="I-D.contreras-opsawg-scheduling-oam-tests"/> use the "ietf-schedule" module
initially specified in <xref target="I-D.ietf-opsawg-ucl-acl"/>.</t>
      <t>Given that the applicability of the "ietf-schedule" module is more general than scheduled
policy and OAMs, this document defines "ietf-schedule" as a common schedule YANG module. The module includes a set of reusable groupings which
are designed to be applicable for scheduling information such as event, policy,
services or resources based on date and time.</t>
      <section anchor="editorial-note-to-be-removed-by-rfc-editor">
        <name>Editorial Note (To be removed by RFC Editor)</name>
        <t>Note to the RFC Editor: This section is to be removed prior to publication.</t>
        <t>This document contains placeholder values that need to be replaced with finalized
   values at the time of publication.  This note summarizes all of the
   substitutions that are needed.  No other RFC Editor instructions are specified
   elsewhere in this document.</t>
        <t>Please apply the following replacements:</t>
        <ul spacing="normal">
          <li>
            <t>XXXX --&gt; the assigned RFC number for this draft</t>
          </li>
          <li>
            <t>YYYY --&gt; the assigned RFC number for <xref target="I-D.ietf-netmod-rfc6991-bis"/></t>
          </li>
          <li>
            <t>2023-01-19 --&gt; the actual date of the publication of this document</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

<t>The meanings of the symbols in tree diagrams are defined in
   <xref target="RFC8340"/>.</t>
      <t>Also, this document uses the YANG terminology defined in <xref section="3" sectionFormat="of" target="RFC7950"/>.</t>
    </section>
    <section anchor="modules-overview">
      <name>Modules Overview</name>
      <section anchor="the-schedule-yang-module">
        <name>The Schedule YANG Module</name>
        <t>This module defines two groupings "period" and "recurrence", which conform to
   the definition of the "period of time" and "recurrence rule" formats defined in
   <xref target="RFC5545"/>. Other formats may be considered in future revisions.</t>
        <t><xref target="schedule-tree"/> provides an overview of the tree structure of the "ietf-
   schedule" module in terms of its groupings.</t>
        <figure anchor="schedule-tree">
          <name>Schedule Tree Structure</name>
          <artwork align="center"><![CDATA[
module: ietf-schedule

  grouping period:
    +-- period-of-time
       +-- period-start?            yang:date-and-time
       +-- (period-type)?
          +--:(period-explicit)
          |  +-- period-end?        yang:date-and-time
          +--:(period-duration)
             +-- period-duration?   duration
  grouping recurrence:
    +-- recurrence
       +-- freq           enumeration
       +-- (recurrence-bound)?
       |  +--:(until)
       |  |  +-- until?   union
       |  +--:(count)
       |     +-- count?   uint32
       +-- interval?      uint32
       +-- bysecond*      uint32
       +-- byminute*      uint32
       +-- byhour*        uint32
       +-- byday* [weekday]
       |  +-- direction*   int32
       |  +-- weekday?     schedule:weekday
       +-- bymonthday*    int32
       +-- byyearday*     int32
       +-- byyearweek*    int32
       +-- byyearmonth*   uint32
       +-- bysetpos*      int32
       +-- wkst?          schedule:weekday
]]></artwork>
        </figure>
        <t>The "period-of-time" allows a time period to be represented using either a start ("period-start")
   and end date and time ("period-end"), or a start ("period-start") and a positive time duration ("period-duration").</t>
        <t>The "recurrence" indicates the scheduling recurrence of an event. The
   repetition can be scoped by a specified end time or by a count of occurences,
   and the frequency identifies the type of recurrence rule. For example, a "daily"
   frequency value specifies repeating events based on an interval of a day or more.
   The interval represents at which intervals the recurrence rule repeats. For example,
   within a daily recurrence rule, an interval value of "8" means every eight days.</t>
        <t>An array of the "bysecond" (or "byminut", "byhour") specifies a list of seconds within a minute (or minutes within an hour, hours of the day).</t>
        <t>The parameter "byday" specifies a list of days of
   the week, with an optional direction which indicates the nth occurrence of a specific day within
   the "monthly" or "yearly" frequency. For example, within a "monthly" rule,
   the "weekday" with a value of "monday" and the "direction" with a value of "-1"
   represents the last Monday of the month.</t>
        <t>An array of the "bymonthday" (or byyearday", "byyearweek", or "byyearmonth") specifies a list of
   days of the month (or days of the year, weeks of the year, or months of the year).</t>
        <t>The "bysetpos" conveys a list of values that corresponds to the nth occurrence
   within the set of recurrence instances to be specified. For example, in a "monthly"
   recurrence rule, the "byday" data node specifies every Monday of the week, the
   "bysetpos" with value of "-1" represents the last Monday of the month.
   Not setting the "bysetpos" data node represents every Monday of the month.</t>
        <t>The "wkst" data node specifies the day on which the week starts. This is
   significant when a "weekly" recurrence rule has an interval greater than 1, and
   a "byday" data node is specified. This is also significant when in a "yearly" rule
   and a "byyearweek" is specified. The default value is "monday".</t>
      </section>
      <section anchor="examples">
        <name>Examples</name>
        <t>The following subsections provide some examples to illustrate the use of the period and recurrence formats defined as
   YANG groupings. Only the message body is provided with JSON used for encoding <xref target="RFC7951"/>.</t>
        <section anchor="period-of-time">
          <name>Period of Time</name>
          <t>The example of a period that starts at 08:00:00 UTC, on January 1, 2023 and ends at 18:00:00 UTC
   on December 31, 2025 is encoded as follows:</t>
          <artwork><![CDATA[
{
  "period-of-time": {
    "period-start": "2023-01-01T08:00:00Z",
    "period-end": "2025-12-01T18:00:00Z"
  }
}
]]></artwork>
          <t>An example of a period that starts at 08:00:00 UTC, on January 1, 2023 and lasts 15 days and
   5 hours and 20 minutes is encoded as follows:</t>
          <artwork><![CDATA[
{
  "period-of-time": {
    "period-start": "2023-01-01T08:00:00Z",
    "period-duration": "P15DT05:20:00"
  }
}
]]></artwork>
          <t>Now, consider the example of a period that starts at 08:00:00 UTC, on January 1, 2023 and lasts 20 weeks:</t>
          <artwork><![CDATA[
{
  "period-of-time": {
    "period-start": "2023-01-01T08:00:00Z",
    "period-duration": "P20W"
  }
}
]]></artwork>
        </section>
        <section anchor="recurrence-rule">
          <name>Recurrence Rule</name>
          <t>The following snippet can be used to indicate a daily recurrent in December:</t>
          <artwork><![CDATA[
{
  "recurrence": {
    "freq": "daily",
    "byyearmonth": [12]
  }
}
]]></artwork>
          <t>The following snippet can be used to indicate 10 occurrences that occur every last Saturday of the month:</t>
          <artwork><![CDATA[
{
  "recurrence": {
    "freq": "monthly",
    "count": 10,
    "byday": [
      {
        "direction": [-1],
        "weekday": "saturday"
      }
    ]
  }
}
]]></artwork>
          <t>The following indicates the example of a recurrence that occurs on the last workday of the month until December 25, 2023:</t>
          <artwork><![CDATA[
{
  "recurrence": {
    "freq": "monthly",
    "until": "2023-12-25",
    "byday": [
      { "weekday": "monday" },
      { "weekday": "tuesday" },
      { "weekday": "wednesday" },
      { "weekday": "thursday" },
      { "weekday": "friday" }
    ],
    "bysetpos": [-1]
  }
}
]]></artwork>
          <t>The following depicts the example of a recurrence that occurs every other week on Tuesday and Sunday, the week starts from Monday:</t>
          <artwork><![CDATA[
{
  "recurrence": {
    "freq": "weekly",
    "interval": 2,
    "byday": [
      { "weekday": "tuesday" },
      { "weekday": "sunday" }
    ],
    "wkst": "monday"
  }
}
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="sec-schedule">
      <name>The "ietf-schedule" YANG Module</name>
      <t>This module imports types defined in <xref target="I-D.ietf-netmod-rfc6991-bis"/>.</t>
      <sourcecode markers="true" name="ietf-schedule@2023-01-19.yang"><![CDATA[
module ietf-schedule {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-schedule";
  prefix schedule;

  import ietf-yang-types {
    prefix yang;
    revision-date 2023-01-23;
    reference
      "RFC YYYY: Common YANG Data Types";
  }

  organization
    "IETF OPSAWG Working Group";
  contact
    "WG Web: <https://datatracker.ietf.org/wg/opsawg/>
     WG List: <mailto:opsawg@ietf.org>";
  description
    "This YANG module defines two groupings for iCalendar (Internet
     Calendaring and Scheduling Core Object Specification) data
     types: period of time and recurrence rule, for representing and
     exchanging calendaring and scheduling information. The YANG
     module complies with Sections 3.3.9 and 3.3.10 of RFC 5545. 

     Copyright (c) 2023 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 XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC
     itself for full legal notices.";

  revision 2023-01-19 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: A Policy-based Network Access Control";
  }

  typedef weekday {
    type enumeration {
      enum sunday {
        value 0;
        description
          "Sunday of the week.";
      }
      enum monday {
        value 1;
        description
          "Monday of the week.";
      }
      enum tuesday {
        value 2;
        description
          "Tuesday of the week.";
      }
      enum wednesday {
        value 3;
        description
          "Wednesday of the week.";
      }
      enum thursday {
        value 4;
        description
          "Thursday of the week.";
      }
      enum friday {
        value 5;
        description
          "Friday of the week.";
      }
      enum saturday {
        value 6;
        description
          "Saturday of the week.";
      }
    }
    description
      "Seven days of the week.";
  }
  
  typedef duration {
    type string {
      pattern '((\+)?|\-)P((([0-9]+)D)?(T(0[0-9]|1[0-9]|2[0-3])'
            + ':[0-5][0-9]:[0-5][0-9]))|P([0-9]+)W';
    }
    description
      "Duration of the time. The format can represent nominal 
       durations (weeks designated by 'W' and days designated by 'D') 
       and accurate durations (hours:minutes:seconds follows the 
       designator 'T').
           
       Note that this value type doesn't support the 'Y' and 'M' 
       designators to specify durations in terms of years and months. 
       
       Negative durations are typically used to schedule an alarm to
       trigger before an associated time.";
    reference 
      "RFC 5545: Internet Calendaring and Scheduling Core Object 
                 Specification (iCalendar), Sections 3.3.6 and 
                 3.8.6.3";    
  }
  
  grouping period {
    description
      "This grouping is defined for period of time property.";
    reference 
      "RFC 5545: Internet Calendaring and Scheduling Core Object 
                 Specification (iCalendar), Section 3.3.9";      
    container period-of-time {
      description
        "This container is defined to identify period values that
         contain a precise period of time.";
      leaf period-start {
        type yang:date-and-time;
        description
          "Period start time.";
      }
      choice period-type {
        description
          "Indicates the type of the time period. Two types are
            supported.";
        case period-explicit {
          description
            "A period of time is identified by its start and its
             end. 'period-start' indicates the period start.";
          leaf period-end {
            type yang:date-and-time;
            description
              "Period end time.";
          }
        }
        case period-duration {
          description
            "A period of time is defined by a start and a
             positive duration of time.";
          leaf period-duration {
            type duration {
              pattern 'P((([0-9]+)D)?(T(0[0-9]|1[0-9]|2[0-3])'
                    + ':[0-5][0-9]:[0-5][0-9]))|P([0-9]+)W';
            }
            description
              "A positive duration of the time. This value is 
               equivalent to the format of duration type except that 
               the value cannot be negative.";
          }
        }
      }
    }
  }

  grouping recurrence {
    description
      "This grouping is defined to identify properties that contain a 
       recurrence rule.";
    reference 
      "RFC 5545: Internet Calendaring and Scheduling Core Object 
       Specification (iCalendar), Section 3.3.10";        
    container recurrence {
      description
        "Recurrence rule definition.";
      leaf freq {
        type enumeration {
          enum secondly {
            value 1;
            description
              "Repeating events based on an interval of a second
               or more.";
          }
          enum minutely {
            value 2;
            description
              "Repeating events based on an interval of a minute
               or more.";
          }
          enum hourly {
            value 3;
            description
              "Repeating events based on an interval of an hour
               or more.";
          }
          enum daily {
            value 4;
            description
              "Repeating events based on an interval of a day or
               more.";
          }
          enum weekly {
            value 5;
            description
              "Repeating events based on an interval of a week or
               more.";
          }
          enum monthly {
            value 6;
            description
              "Repeating events based on an interval of a month or
               more.";
          }
          enum yearly {
            value 7;
            description
              "Repeating events based on an interval of a year or
               more.";
          }
        }
        mandatory true;
        description
          "This parameter is defined to identify the type of
           recurrence rule.";
      }
      choice recurrence-bound {
        description
          "Modes to bound the recurrence rule. If no choice is
           indicated, the recurrence rule is considered to repeat
           forever.";
        case until {
          description
            "This case defines a way that bounds the recurrence
             rule in an inclusive manner.";
          leaf until {
            type union {
              type yang:date-no-zone;
              type yang:date-and-time;
            }
            description
              "This parameter specifies a date-no-zone or
               date-time value to bounds the recurrence. The 
               specified value becomes the last instance of the
               recurrence.";
          }
        }
        case count {
          description
            "This case defines the number of occurrences at which
             to range-bound the recurrence.";
          leaf count {
            type uint32;
            description
              "The positive number of occurrences at which to
               range-bound the recurrence.";
          }
        }
      }
      leaf interval {
        type uint32;
        default "1";
        description
          "A positive integer representing at which intervals the
           recurrence rule repeats. The default value is '1', 
           meaning every second for a secondly rule, every minute
           for a minutely rule, every hour for an hourly rule, every
           day for a daily rule, every week for a weekly rule, every
           month for a monthly rule, and every year for a yearly 
           rule.";
      }
      leaf-list bysecond {
        type uint32 {
          range "0..60";
        }
        description
          "A list of seconds within a minute.";
      }
      leaf-list byminute {
        type uint32 {
          range "0..59";
        }
        description
          "A list of minutes within an hour.";
      }
      leaf-list byhour {
        type uint32 {
          range "0..23";
        }
        description
          "Specify a list of hours of the day.";
      }
      list byday {
        key "weekday";
        description
          "Specify a list of days of the week.";
        leaf-list direction {
          when '(enum-value(../../freq) = 6) or ' +
            '(enum-value(../../freq) = 7) and not(../../byyearweek)';
          type int32 {
            range "-53..-1|1..53";
          }
          description
            "When specified, it indicates the nth occurrence of a
             specific day within the MONTHLY or YEARLY 'RRULE'. For
             example, within a MONTHLY rule, +1 monday represents the
             first monday within the month, whereas -1 monday
             represents the last monday of the month.";
        }
        leaf weekday {
          type schedule:weekday;
          description
            "Corresponding to seven days of the week.";
        }
      }
      
      leaf-list bymonthday {
        type int32 {
          range "-31..-1|1..31";
        }
        description
          "Specifies a list of days of the month.";
      }
      leaf-list byyearday {
        type int32 {
          range "-366..-1|1..366";
        }
        description
          "Specifies a list of days of the year.";
      }
      leaf-list byyearweek {
        when 'enum-value(../freq)=7';
        type int32 {
          range "-53..-1|1..53";
        }
        description
          "Specifies a list of weeks of the year.";
      }
      leaf-list byyearmonth {
        type uint32 {
          range "1..12";
        }
        description
          "Specifies a list of months of the year.";
      }
      leaf-list bysetpos {
        type int32 {
          range "-366..-1|1..366";
        }
        description
          "Specifies a list of values that corresponds to the nth
           occurrence within the set of recurrence instances
           specified by the rule. It must only be used in conjunction
           with another by the rule part.";
      }
      leaf wkst {
        type schedule:weekday;
        default "monday";
        description
          "Specifies the day on which the workweek starts.";
      }
    }
  }
}

]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The "ietf-schedule" YANG module specified in this document defines 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>The "ietf-schedule" module defines a set of types and
   groupings.  These nodes are intended to be reused by other YANG
   modules.  The module by itself does 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 "ietf-
   schedule" module that need to be considered.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="the-ietf-xml-registry">
        <name>The "IETF XML" Registry</name>
        <t>This document registers the following URI in the "IETF XML Registry" <xref target="RFC3688"/>.</t>
        <artwork><![CDATA[
        URI: urn:ietf:params:xml:ns:yang:ietf-schedule
        Registrant Contact: The IESG.
        XML: N/A, the requested URI is an XML namespace.
]]></artwork>
      </section>
      <section anchor="the-yang-module-names-registry">
        <name>The "YANG Module Names" Registry</name>
        <t>This document registers the following YANG module in the "YANG Module Names"
   registry <xref target="RFC6020"/>.</t>
        <artwork><![CDATA[
        name:               ietf-schedule
        namespace:          urn:ietf:params:xml:ns:yang:ietf-schedule
        prefix:             schedule
        maintained by IANA: N
        reference:          RFC XXXX
]]></artwork>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="I-D.ietf-netmod-rfc6991-bis">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="Jürgen Schönwälder" initials="J." surname="Schönwälder">
              <organization>Constructor University</organization>
            </author>
            <date day="23" month="January" year="2023"/>
            <abstract>
              <t>   This document defines a collection of common data types to be used
   with the YANG data modeling language.  This version of the document
   adds several new type definitions and obsoletes RFC 6991.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-rfc6991-bis-15"/>
        </reference>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC6242">
          <front>
            <title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
            <author fullname="M. Wasserman" initials="M." surname="Wasserman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem. This document obsoletes RFC 4742. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6242"/>
          <seriesInfo name="DOI" value="10.17487/RFC6242"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-opsawg-ucl-acl">
          <front>
            <title>A YANG Data Model and RADIUS Extension for Policy-based Network Access Control</title>
            <author fullname="Qiufang Ma" initials="Q." surname="Ma">
              <organization>Huawei</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Daniel King" initials="D." surname="King">
              <organization>Lancaster University</organization>
            </author>
            <date day="17" month="October" year="2023"/>
            <abstract>
              <t>   This document defines a YANG data model for policy-based network
   access control, which provides consistent and efficient enforcement
   of network access control policies based on group identity.
   Moreover, this document defines a mechanism to ease the maintenance
   of the mapping between a user group identifier and a set of IP/MAC
   addresses to enforce policy-based network access control.

   In addition, the document defines a RADIUS attribute that is used to
   communicate the user group identifier as part of identification and
   authorization information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-ucl-acl-01"/>
        </reference>
        <reference anchor="I-D.contreras-opsawg-scheduling-oam-tests">
          <front>
            <title>A YANG Data Model for Network Diagnosis by scheduling sequences of OAM tests</title>
            <author fullname="Luis M. Contreras" initials="L. M." surname="Contreras">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Victor Lopez" initials="V." surname="Lopez">
              <organization>Nokia</organization>
            </author>
            <date day="10" month="July" year="2023"/>
            <abstract>
              <t>   This document defines a YANG data model for network diagnosis on-
   demand using Operations, Administration, and Maintenance (OAM) tests.
   This document defines both 'oam-unitary-test' and 'oam-test-sequence'
   data models to enable on-demand activation of network diagnosis
   procedures.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-contreras-opsawg-scheduling-oam-tests-01"/>
        </reference>
        <reference anchor="I-D.united-tvr-schedule-yang">
          <front>
            <title>YANG Data Model for Scheduled Attributes</title>
            <author fullname="Yingzhen Qu" initials="Y." surname="Qu">
              <organization>Futurewei</organization>
            </author>
            <author fullname="Acee Lindem" initials="A." surname="Lindem">
              <organization>LabN Consulting, L.L.C.</organization>
            </author>
            <author fullname="Eric Kinzie" initials="E." surname="Kinzie">
              <organization>LabN Consulting, L.L.C.</organization>
            </author>
            <author fullname="Don Fedyk" initials="D." surname="Fedyk">
              <organization>LabN Consulting, L.L.C.</organization>
            </author>
            <author fullname="Marc Blanchet" initials="M." surname="Blanchet">
              <organization>Viagenie</organization>
            </author>
            <date day="11" month="October" year="2023"/>
            <abstract>
              <t>   The YANG model in this document includes three modules, and can be
   used to manage network resources and topologies with scheduled
   attributes, such as predictable link loss and link connectivity as a
   function of time.  The intent is to have this information be utilized
   by Time-Variant Routing systems.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-united-tvr-schedule-yang-00"/>
        </reference>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="RFC5545">
          <front>
            <title>Internet Calendaring and Scheduling Core Object Specification (iCalendar)</title>
            <author fullname="B. Desruisseaux" initials="B." role="editor" surname="Desruisseaux"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document defines the iCalendar data format for representing and exchanging calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, independent of any particular calendar service or protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5545"/>
          <seriesInfo name="DOI" value="10.17487/RFC5545"/>
        </reference>
        <reference anchor="RFC7951">
          <front>
            <title>JSON Encoding of Data Modeled with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines encoding rules for representing configuration data, state data, parameters of Remote Procedure Call (RPC) operations or actions, and notifications defined using YANG as JavaScript Object Notation (JSON) text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7951"/>
          <seriesInfo name="DOI" value="10.17487/RFC7951"/>
        </reference>
      </references>
    </references>
    <?line 716?>

<section anchor="changes-between-revisions">
      <name>Changes between Revisions</name>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This work is derived from the <xref target="I-D.ietf-opsawg-ucl-acl"/>. There is a desire
   from the OPSAWG to see this model be separately defined for wide use in scheduling context.</t>
      <t>Thanks to Adrian Farrel, Wei Pan, Tianran Zhou, and Joe Clarke
   for their valuable comments and inputs to this work.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
kN/wgHUw8azIlROoiNNt/S/vgMjsE1cAAA==

-->

</rfc>
