rfc9922.original.xml   rfc9922.xml 
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [ <!DOCTYPE rfc [
<!ENTITY nbsp "&#160;"> <!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;"> <!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;"> <!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;"> <!ENTITY wj "&#8288;">
]> ]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4. <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 2.5.
4) --> 9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft
-ietf-netmod-schedule-yang-10" category="std" consensus="true" submissionType="I -ietf-netmod-schedule-yang-rfceditor-latest" category="std" consensus="true" sub
ETF" tocInclude="true" sortRefs="true" symRefs="true" version="3"> missionType="IETF" xml:lang="en" number="9922" tocInclude="true" sortRefs="true"
<!-- xml2rfc v2v3 conversion 3.30.0 --> symRefs="true" version="3">
<!-- xml2rfc v2v3 conversion 3.31.0 -->
<link href="https://datatracker.ietf.org/doc/draft-ietf-netmod-schedule-yang-r
fceditor-latest" rel="prev"/>
<front> <front>
<title abbrev="Common Schedule YANG">A Common YANG Data Model for Scheduling <title abbrev="YANG Scheduling">A Common YANG Data Model for Scheduling</tit
</title> le>
<seriesInfo name="Internet-Draft" value="draft-ietf-netmod-schedule-yang-10" <seriesInfo name="RFC" value="9922"/>
/>
<author fullname="Qiufang Ma" role="editor"> <author fullname="Qiufang Ma" role="editor">
<organization>Huawei</organization> <organization>Huawei</organization>
<address> <address>
<postal> <postal>
<street>101 Software Avenue, Yuhua District</street> <street>101 Software Avenue, Yuhua District</street>
<city>Jiangsu</city> <city>Jiangsu</city>
<code>210012</code> <code>210012</code>
<country>China</country> <country>China</country>
</postal> </postal>
<email>maqiufang1@huawei.com</email> <email>maqiufang1@huawei.com</email>
skipping to change at line 59 skipping to change at line 60
</author> </author>
<author fullname="Daniel King"> <author fullname="Daniel King">
<organization>Lancaster University</organization> <organization>Lancaster University</organization>
<address> <address>
<postal> <postal>
<country>United Kingdom</country> <country>United Kingdom</country>
</postal> </postal>
<email>d.king@lancaster.ac.uk</email> <email>d.king@lancaster.ac.uk</email>
</address> </address>
</author> </author>
<date year="2025" month="August" day="07"/> <date year="2026" month="February"/>
<area>Operations and Management</area> <area>OPS</area>
<workgroup>netmod</workgroup> <workgroup>netmod</workgroup>
<keyword>calendaring</keyword> <keyword>calendaring</keyword>
<keyword>scheduling</keyword> <keyword>scheduling</keyword>
<keyword>YANG</keyword> <keyword>YANG</keyword>
<keyword>groupings</keyword> <keyword>groupings</keyword>
<abstract> <abstract>
<?line 57?> <?line 96?>
<!-- [rfced] FYI - We will do the following when we convert the file to RFCXML:
- compact the spacing of the definition lists in Sections 8.1 and 8.2
-->
<t>This document defines common types and groupings that are meant to be used <t>This document defines common types and groupings that are meant to be used
for scheduling purposes such as event, policy, services, or resources based o n for scheduling purposes, such as events, policies, services, or resources bas ed on
date and time. For the sake of better modularity, the YANG module includes a date and time. For the sake of better modularity, the YANG module includes a
set of recurrence-related groupings with varying levels of representation set of recurrence-related groupings with varying levels of representation
(i.e., from basic to advanced) to accommodate a variety of requirements. (i.e., from basic to advanced) to accommodate a variety of requirements.
It also defines groupings for validating requested schedules and reporting sc heduling status.</t> It also defines groupings for validating requested schedules and reporting sc heduling statuses.</t>
</abstract> </abstract>
<note removeInRFC="true">
<name>Discussion Venues</name>
<t>This note is to be removed before publishing as an RFC.</t>
<t>Discussion of this document takes place on the
Network Modeling (NETMOD) Working Group mailing list (netmod@ietf.org),
which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/
netmod/"/>.</t>
<t>Source for this draft and an issue tracker can be found at
<eref target="https://github.com/netmod-wg/schedule-yang"/>.</t>
</note>
</front> </front>
<middle> <middle>
<?line 66?> <?line 110?>
<section anchor="intro"> <section anchor="intro">
<name>Introduction</name> <name>Introduction</name>
<t>This document defines a common schedule YANG module ("ietf-schedule") t hat can <t>This document defines a common schedule YANG module ("ietf-schedule") t hat can
be used in several scheduling contexts, e.g., (but not limited to) be used in several scheduling contexts, e.g., (but not limited to)
<xref target="I-D.ietf-opsawg-ucl-acl"/>, <xref target="I-D.ietf-opsawg-scheduli ng-oam-tests"/>, <xref target="I-D.ietf-opsawg-ucl-acl"/>, <xref target="I-D.ietf-opsawg-scheduli ng-oam-tests"/>,
and <xref target="I-D.ietf-tvr-schedule-yang"/>. The module includes a set of re and <xref target="I-D.ietf-tvr-schedule-yang"/>. The module includes a set of re
usable groupings which usable groupings that
are designed to be applicable for scheduling purposes such as event, policy, are designed to be applicable for scheduling purposes, such as events, policies,
services or resources based on date and time. It also defines groupings for vali services, or resources based on date and time. It also defines groupings for val
dating idating
requested schedules and reporting scheduling status.</t> requested schedules and reporting scheduling statuses.</t>
<t>This document does not make any assumption about the nature of actions that are <t>This document does not make any assumption about the nature of actions that are
triggered by the schedules. Detection and resolution of any schedule conflicts triggered by the schedules. Detection and resolution of any schedule conflicts
are beyond the scope of this document.</t> are beyond the scope of this document.</t>
<t><xref target="sec-mib"/> discusses the relationship with the Management Information Base (MIB) <t><xref target="sec-mib"/> discusses the relationship with the Management Information Base (MIB)
managed objects for scheduling management operations defined in <xref target="RF C3231"/>.</t> managed objects for scheduling management operations defined in <xref target="RF C3231"/>.</t>
<t><xref target="usage"/> describes a set of examples to illustrate the us e of the common schedule groupings (<xref target="sec-grp"/>). <t><xref target="usage"/> describes a set of examples to illustrate the us e of the common schedule groupings (<xref target="sec-grp"/>).
<xref target="sec-ext"/> provides sample modules to exemplify how future modules can use the extensibility <xref target="sec-ext"/> provides sample modules to exemplify how future modules can use the extensibility
provisions in the "ietf-schedule" module (<xref target="sec-schedule"/>). Also, <xref target="ex-framework"/> provides provisions in the "ietf-schedule" module (<xref target="sec-schedule"/>). Also, <xref target="ex-framework"/> provides
an example of using the "ietf-schedule" module for scheduled use of a resources framework (e.g., <xref target="RFC8413"/>).</t> an example of using the "ietf-schedule" module for scheduled use of a resources framework (e.g., <xref target="RFC8413"/>).</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 public
ation.</t>
<t>This document contains placeholder values that need to be replaced wi
th finalized
values at the time of publication. This note summarizes all of the
substitutions that are needed. No other RFC Editor instructions are specifie
d
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>2025-05-30 --&gt; the actual date of the publication of this docu
ment</t>
</li>
</ul>
</section>
</section> </section>
<section anchor="conventions-and-definitions"> <section anchor="conventions-and-definitions">
<name>Conventions and Definitions</name> <name>Conventions and Definitions</name>
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14 >REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL <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>RECO MMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECO MMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be i nterpreted as "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be i nterpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t> appear in all capitals, as shown here.</t>
<?line -18?> <?line -18?>
<t>The meanings of the symbols in tree diagrams are defined in <t>The meanings of the symbols in tree diagrams are defined in
<xref target="RFC8340"/>.</t> <xref target="RFC8340"/>.</t>
<t>This document uses the YANG terminology defined in <xref section="3" se ctionFormat="of" target="RFC7950"/>.</t> <t>This document uses the YANG terminology defined in <xref section="3" se ctionFormat="of" target="RFC7950"/>.</t>
<t>The document makes use of the following terms:</t> <t>This document makes use of the following terms:</t>
<dl> <dl>
<dt>Recurrence rule:</dt> <dt>Recurrence rule:</dt>
<dd> <dd>
<t>Refers to a rule or repeating pattern for recurring events. See als o <xref section="3.8.5.3" sectionFormat="of" target="RFC5545"/> for a comprehens ive iCalendar recurrence rule specification.</t> <t>Refers to a rule or repeating pattern for recurring events. See als o <xref section="3.8.5.3" sectionFormat="of" target="RFC5545"/> for a comprehens ive iCalendar recurrence rule specification.</t>
</dd> </dd>
<dt>Recurrence instance (or Recurrence, for short):</dt> <dt>Recurrence instance (or Recurrence, for short):</dt>
<dd> <dd>
<t>Refers to an instance that matches a recurrence rule.</t> <t>Refers to an instance that matches a recurrence rule.</t>
</dd> </dd>
<dt>Recurrence set:</dt> <dt>Recurrence set:</dt>
<dd> <dd>
<t>Refers to a set of recurrence instances.</t> <t>Refers to a set of recurrence instances.</t>
</dd> </dd>
<dt>Frequency:</dt> <dt>Frequency:</dt>
<dd> <dd>
<t>Characterizes the type of a recurrence rule. Values are taken from "FREQ" rule in <xref section="3.3.10" sectionFormat="of" target="RFC5545"/>.</t> <t>Characterizes the type of a recurrence rule. Values are taken from the "FREQ" rule in <xref section="3.3.10" sectionFormat="of" target="RFC5545"/>. </t>
</dd> </dd>
<dt/> <dt/>
<dd> <dd>
<t>For example, repeating events based on an interval of a second or m ore are <t>For example, repeating events based on an interval of a second or m ore are
classified as recurrence with a frequency value of "SECONDLY". Frequency values defined as identities classified as recurrence with a frequency value of "SECONDLY". Frequency values defined as identities
in the YANG module are used in lowercase.</t> in the YANG module are used in lowercase.</t>
</dd> </dd>
<dt>iCalendar:</dt> <dt>iCalendar:</dt>
<dd> <dd>
<t>Refers to Internet Calendaring per <xref target="RFC5545"/>.</t> <t>Refers to Internet Calendaring per <xref target="RFC5545"/>.</t>
</dd> </dd>
<dt>Interval:</dt> <dt>Interval:</dt>
<dd> <dd>
<t>Refers to an integer that specifies interval at which a recurrence rule repeats. Values are taken from "INTERVAL" rule in <xref section="3.3.10" se ctionFormat="of" target="RFC5545"/>.</t> <t>Refers to an integer that specifies the interval at which a recurre nce rule repeats. Values are taken from the "INTERVAL" rule in <xref section="3. 3.10" sectionFormat="of" target="RFC5545"/>.</t>
</dd> </dd>
<dt/> <dt/>
<dd> <dd>
<t>For example, "1", means every second for a secondly rule, every min ute for a minutely rule, every hour for an hourly rule, etc.</t> <t>For example, "1" means every second for a secondly rule, every minu te for a minutely rule, every hour for an hourly rule, etc.</t>
</dd> </dd>
<dt>System:</dt> <dt>System:</dt>
<dd> <dd>
<t>Refers to an entity that hosts a schedule that is managed using the YANG module defined in this document.</t> <t>Refers to an entity that hosts a schedule that is managed using the YANG module defined in this document.</t>
</dd> </dd>
</dl> </dl>
<t>"schedule-status-*" refers to any of "schedule-status", "schedule-statu s-with-time-zone", and "schedule-status-with-name".</t>
</section> </section>
<section anchor="sec-overview"> <section anchor="sec-overview">
<name>Module Overview</name> <name>Module Overview</name>
<section anchor="sec-features"> <section anchor="sec-features">
<name>Features</name> <name>Features</name>
<t>The "ietf-schedule" data model defines the recurrence related groupin gs using <t>The "ietf-schedule" data model defines the recurrence-related groupin gs using
a modular approach. To that aim, a variety of representations of recurrence a modular approach. To that aim, a variety of representations of recurrence
groupings ranging from basic to advanced (iCalender-like) are defined. groupings ranging from basic to advanced (iCalender-like) are defined.
To allow for different options, two features are defined in the data model:</ t> To allow for different options, two features are defined in the data model:</ t>
<ul spacing="normal"> <ul spacing="normal">
<li> <li>
<t>"basic-recurrence"</t> <t>"basic-recurrence"</t>
</li> </li>
<li> <li>
<t>"icalendar-recurrence"</t> <t>"icalendar-recurrence"</t>
</li> </li>
</ul> </ul>
<t>Refer to Sections <xref format="counter" target="sec-aug"/> and <xref format="counter" target="features"/> for the use of these features.</t> <t>Refer to <xref target="sec-aug"/> and <xref target="features"/> for t he use of these features.</t>
</section> </section>
<section anchor="sec-types"> <section anchor="sec-types">
<name>Types and Identities</name> <name>Types and Identities</name>
<t>The "ietf-schedule" module (<xref target="sec-schedule"/>) defines th e following identities:</t> <t>The "ietf-schedule" module (<xref target="sec-schedule"/>) defines th e following identities:</t>
<ul spacing="normal"> <ul spacing="normal">
<li> <li>
<t>"schedule-type": Indicates the type of a schedule. The following types are defined so far: <t>"schedule-type": Indicates the type of schedule. The following ty pes are defined so far:
</t> </t>
<ul spacing="normal"> <ul spacing="normal">
<li> <li>
<t>one-shot: The schedule will trigger an action that has either the duration specified as 0 or the end time specified the same as start time, a nd then the schedule will disable itself (<xref section="3.3" sectionFormat="of" target="RFC3231"/>).</t> <t>one-shot: This type is used for a schedule that triggers an a ction that has either the duration specified as 0 or the end time specified as t he same as the start time, and then the schedule will disable itself (<xref sect ion="3.3" sectionFormat="of" target="RFC3231"/>).</t>
</li> </li>
<li> <li>
<t>period: The schedule is a period-based schedule consisting ei ther (1) a start and end or (2) a start and positive duration of time. If neithe r an end nor a duration is indicated, the period is considered to last forever.< /t> <t>period: This type is used for a period-based schedule consist ing of either (1) a start and end or (2) a start and positive duration of time. If neither an end nor a duration is indicated, the period is considered to last forever.</t>
</li> </li>
<li> <li>
<t>recurrence: This type is used for a recurrence-based schedule . A recurrence may be periodic (i.e., repeat over the same period, e.g., every f ive minutes) or not (i.e., repeat in a non-regular manner, e.g., every day at 8 and 9 AM).</t> <t>recurrence: This type is used for a recurrence-based schedule . A recurrence may be periodic (i.e., repeat over the same period, e.g., every f ive minutes) or not (i.e., repeat in a non-regular manner, e.g., every day at 8 and 9 AM).</t>
</li> </li>
</ul> </ul>
</li> </li>
<li> <li>
<t>"frequency-type": Characterizes the repeating interval rule of a recurrence schedule (secondly, minutely, etc.).</t> <t>"frequency-type": Characterizes the repeating interval rule of a recurrence schedule (secondly, minutely, etc.).</t>
</li> </li>
<li> <li>
skipping to change at line 265 skipping to change at line 246
<t>"icalendar-recurrence" (<xref target="sec-ical-rec"/>)</t> <t>"icalendar-recurrence" (<xref target="sec-ical-rec"/>)</t>
</li> </li>
<li> <li>
<t>"schedule-status", "schedule-status-with-time-zone", and "schedul e-status-with-name" (<xref target="sec-schedule-status"/>)</t> <t>"schedule-status", "schedule-status-with-time-zone", and "schedul e-status-with-name" (<xref target="sec-schedule-status"/>)</t>
</li> </li>
</ul> </ul>
<t>Examples are provided in <xref target="usage"/>.</t> <t>Examples are provided in <xref target="usage"/>.</t>
<section anchor="sec-gen"> <section anchor="sec-gen">
<name>The "generic-schedule-params" Grouping</name> <name>The "generic-schedule-params" Grouping</name>
<t>A system accepts and handles schedule requests, which may help furt her <t>A system accepts and handles schedule requests, which may help furt her
automate the scheduling process of events, policy, services, or resources automate the scheduling process of events, policies, services, or resources
based on date and time. The "generic-schedule-params" grouping (<xref target= "gsp-tree"/>) based on date and time. The "generic-schedule-params" grouping (<xref target= "gsp-tree"/>)
specifies a set of configuration parameters that are used by a system for specifies a set of configuration parameters that are used by a system for
validating requested schedules.</t> validating requested schedules.</t>
<figure anchor="gsp-tree"> <figure anchor="gsp-tree">
<name>'generic-schedule-params' Tree Structure</name> <name>'generic-schedule-params' Grouping Tree Structure</name>
<artwork><![CDATA[ <sourcecode type="yangtree"><![CDATA[
grouping generic-schedule-params: grouping generic-schedule-params:
+-- description? string +-- description? string
+-- time-zone-identifier? sys:timezone-name +-- time-zone-identifier? sys:timezone-name
+-- validity? yang:date-and-time +-- validity? yang:date-and-time
+-- max-allowed-start? yang:date-and-time +-- max-allowed-start? yang:date-and-time
+-- min-allowed-start? yang:date-and-time +-- min-allowed-start? yang:date-and-time
+-- max-allowed-end? yang:date-and-time +-- max-allowed-end? yang:date-and-time
+-- discard-action? identityref +-- discard-action? identityref
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>The "description" includes a description of the schedule. No constr aint is imposed <t>The "description" parameter includes a description of the schedule. No constraint is imposed
on the structure nor the use of this parameter.</t> on the structure nor the use of this parameter.</t>
<t>The "time-zone-identifier" parameter, if provided, specifies the <t>The "time-zone-identifier" parameter, if provided, specifies the
time zone reference <xref target="RFC7317"/> of the local date and time value s. This parameter time zone reference <xref target="RFC7317"/> of the local date and time value s. This parameter
<bcp14>MUST</bcp14> be specified if any of the date and time values are in th e format of local time. <bcp14>MUST</bcp14> be specified if any of the date and time values are in th e format of local time.
It <bcp14>MUST NOT</bcp14> be applied to date and time values which are speci fied in the format It <bcp14>MUST NOT</bcp14> be applied to date and time values that are specif ied in the format
of UTC or time zone offset to UTC.</t> of UTC or time zone offset to UTC.</t>
<t>The "validity" parameter specifies the date and time after which a schedule <t>The "validity" parameter specifies the date and time after which a schedule
will not be considered as valid. It determines the latest time that a schedul e will not be considered as valid. It determines the latest time that a schedul e
can be started to execute independent of when it ends and takes precedence ov er can be started and thus executed independently from when it ends, and it take s precedence over
similar attributes that are provided at the schedule instance itself. A reque sted similar attributes that are provided at the schedule instance itself. A reque sted
schedule may still be accepted but any occurrences that start later than the configured value will not be executed.</t> schedule may still be accepted, but any occurrences that start later than the configured value will not be executed.</t>
<t>The "max/min-allowed-start" parameters specify the maximum/minimum scheduled <t>The "max/min-allowed-start" parameters specify the maximum/minimum scheduled
start date and time. A requested schedule will be rejected if the first start date and time. A requested schedule will be rejected if the first
occurrence of the schedule starts later/earlier than the configured values.</ t> occurrence of the schedule starts later/earlier than the configured values.</ t>
<t>The "max-allowed-end" parameter specifies the maximum allowed end t ime of <t>The "max-allowed-end" parameter specifies the maximum allowed end t ime of
the last occurrence. A requested schedule will be rejected if the end time the last occurrence. A requested schedule will be rejected if the end time
of last occurrence is later than the configured "max-allowed-end" value.</t> of the last occurrence is later than the configured "max-allowed-end" value.< /t>
<t>The "discard-action" parameter specifies the action if a requested schedule <t>The "discard-action" parameter specifies the action if a requested schedule
cannot be accepted for any reason and is discarded. Possible reasons include, cannot be accepted for any reason and is discarded. Possible reasons include,
but are not limited to, the requested schedule failing to satisfy the guards in this grouping, but are not limited to, the requested schedule failing to satisfy the guards in this grouping,
conflicting with existing schedules, or being out-of-date (e.g., the expected start is already passed).</t> conflicting with existing schedules, or being out-of-date (e.g., the expected start has already passed).</t>
<t>These parameters apply to all schedules on a system and are meant <t>These parameters apply to all schedules on a system and are meant
to provide guards against stale configuration, too short schedule requests to provide guards against stale configuration, schedule requests
that would prevent validation by admins of some critical systems, etc.</t> that are too short and that would thus prevent validation by admins of some c
ritical systems, etc.</t>
</section> </section>
<section anchor="sec-period"> <section anchor="sec-period">
<name>The "period-of-time" Grouping</name> <name>The "period-of-time" Grouping</name>
<t>The "period-of-time" grouping (<xref target="pt-tree"/>) represents a time period using <t>The "period-of-time" grouping (<xref target="pt-tree"/>) represents a time period using
either a start date and time ("period-start") and end date and time ("period- end"), or a either a start date and time ("period-start") and end date and time ("period- end") or a
start date and time ("period-start") and a non-negative time duration ("durat ion"). For the first start date and time ("period-start") and a non-negative time duration ("durat ion"). For the first
format, the start of the period <bcp14>MUST</bcp14> be no later than the end of the period. If neither an end date and time ("period-end") format, the start of the period <bcp14>MUST</bcp14> be no later than the end of the period. If neither an end date and time ("period-end")
nor a duration ("duration") is indicated, the period is considered to last fo rever. nor a duration ("duration") is indicated, the period is considered to last fo rever.
If the duration ("duration") value is 0 or the end time ("period-end") is the same as the start time ("period-start"), the period If the duration ("duration") value is 0 or the end time ("period-end") is the same as the start time ("period-start"), the period
is considered as a one-shot schedule. If no start date and time ("period-star t") is considered as a one-shot schedule. If no start date and time ("period-star t")
is specified, the period is considered to start immediately.</t> is specified, the period is considered to start immediately.</t>
<t>The "time-zone-identifier" parameter indicates the identifier for t he <t>The "time-zone-identifier" parameter indicates the identifier for t he
time zone. This parameter <bcp14>MUST</bcp14> be specified if either the "per iod-start" or "period-end" time zone. This parameter <bcp14>MUST</bcp14> be specified if either the "per iod-start" or "period-end"
value is reported in local time format. It <bcp14>MUST NOT</bcp14> be applied to date and time value is reported in local time format. It <bcp14>MUST NOT</bcp14> be applied to date and time
values which are specified in the format of UTC or time zone offset to UTC.</ values that are specified in the format of UTC or time zone offset to UTC.</t
t> >
<t>The "period-description" includes a description of the period. No c <t>The "period-description" parameter includes a description of the pe
onstraint is imposed riod. No constraint is imposed
on the structure nor the use of this parameter.</t> on the structure nor the use of this parameter.</t>
<figure anchor="pt-tree"> <figure anchor="pt-tree">
<name>'period-of-time' Grouping Tree Structure</name> <name>'period-of-time' Grouping Tree Structure</name>
<artwork><![CDATA[ <sourcecode type="yangtree"><![CDATA[
grouping period-of-time: grouping period-of-time:
+-- period-description? string +-- period-description? string
+-- period-start? yang:date-and-time +-- period-start? yang:date-and-time
+-- time-zone-identifier? sys:timezone-name +-- time-zone-identifier? sys:timezone-name
+-- (period-type)? +-- (period-type)?
+--:(explicit) +--:(explicit)
| +-- period-end? yang:date-and-time | +-- period-end? yang:date-and-time
+--:(duration) +--:(duration)
+-- duration? duration +-- duration? duration
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="sec-rec"> <section anchor="sec-rec">
<name>The "recurrence-basic" Grouping</name> <name>The "recurrence-basic" Grouping</name>
<t>The "recurrence-basic" grouping (<xref target="rec-grp-tree"/>) spe cifies a simple recurrence rule which starts immediately and repeats forever.</t > <t>The "recurrence-basic" grouping (<xref target="rec-grp-tree"/>) spe cifies a simple recurrence rule that starts immediately and repeats forever.</t>
<figure anchor="rec-grp-tree"> <figure anchor="rec-grp-tree">
<name>'recurrence-basic' Grouping Tree Structure</name> <name>'recurrence-basic' Grouping Tree Structure</name>
<artwork><![CDATA[ <sourcecode type="yangtree"><![CDATA[
grouping recurrence-basic: grouping recurrence-basic:
+-- recurrence-description? string +-- recurrence-description? string
+-- frequency? identityref +-- frequency? identityref
+-- interval? uint32 +-- interval? uint32
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>The frequency parameter ("frequency") identifies the type of a recu rrence rule. For example, <t>The frequency parameter ("frequency") identifies the type of recurr ence rule. For example,
a "daily" frequency value specifies repeating events based on an interval of a day or more.</t> a "daily" frequency value specifies repeating events based on an interval of a day or more.</t>
<t>Consistent with <xref section="3.3.10" sectionFormat="of" target="R FC5545"/>, the interval ("interval") represents at which interval the recurrence rule repeats. For example, <t>Consistent with <xref section="3.3.10" sectionFormat="of" target="R FC5545"/>, the interval parameter ("interval") represents at which interval the recurrence rule repeats. For example,
within a "daily" recurrence rule, an interval value of "8" means every eight d ays.</t> within a "daily" recurrence rule, an interval value of "8" means every eight d ays.</t>
<t>Note that per <xref section="4.13" sectionFormat="of" target="I-D.i <t>Note that, per <xref section="4.13" sectionFormat="of" target="I-D.
etf-netmod-rfc8407bis"/>, neither a "default" ietf-netmod-rfc8407bis"/>, no "default"
nor a "mandatory" substatement is defined here for both "frequency" and "inter substatement is defined here for both "frequency" and "interval"
val" parameters because there are cases (e.g., profiling) where using these stateme
parameters because there are cases (e.g., profiling) where using these stateme nts is problematic. No "mandatory" substatement is defined here for the same rea
nts is problematic. son.
YANG modules using this grouping <bcp14>SHOULD</bcp14> refine these two nodes with either a YANG modules using this grouping <bcp14>SHOULD</bcp14> refine these two nodes with either a
"mandatory" or a "default" statement, if they always need to be configured or have default values. "mandatory" or a "default" statement if they always need to be configured or h ave default values.
This recommendation <bcp14>MAY</bcp14> be ignored in cases such as when this g rouping is used by another grouping.</t> This recommendation <bcp14>MAY</bcp14> be ignored in cases such as when this g rouping is used by another grouping.</t>
<t>The "recurrence-description" includes a description of the period. No constraint is imposed <t>The "recurrence-description" parameter includes a description of th e period. No constraint is imposed
on the structure nor the use of this parameter.</t> on the structure nor the use of this parameter.</t>
</section> </section>
<section anchor="sec-rec-utc"> <section anchor="sec-rec-utc">
<name>The "recurrence-utc" Grouping</name> <name>The "recurrence-utc" Grouping</name>
<t>The "recurrence-utc" grouping (<xref target="rec-utc-grp-tree"/>) u ses the "recurrence-basic" <t>The "recurrence-utc" grouping (<xref target="rec-utc-grp-tree"/>) u ses the "recurrence-basic"
grouping (<xref target="sec-rec"/>) and specifies a simple recurrence rule in UTC format.</t> grouping (<xref target="sec-rec"/>) and specifies a simple recurrence rule in UTC format.</t>
<figure anchor="rec-utc-grp-tree"> <figure anchor="rec-utc-grp-tree">
<name>'recurrence-utc' Grouping Tree Structure</name> <name>'recurrence-utc' Grouping Tree Structure</name>
<artwork><![CDATA[ <sourcecode type="yangtree"><![CDATA[
grouping recurrence-utc: grouping recurrence-utc:
+-- recurrence-first +-- recurrence-first
| +-- start-time-utc? yang:date-and-time | +-- start-time-utc? yang:date-and-time
| +-- duration? uint32 | +-- duration? uint32
+-- (recurrence-end)? +-- (recurrence-end)?
| +--:(until) | +--:(until)
| | +-- utc-until? yang:date-and-time | | +-- utc-until? yang:date-and-time
| +--:(count) | +--:(count)
| +-- count? uint32 | +-- count? uint32
+-- recurrence-description? string +-- recurrence-description? string
+-- frequency? identityref +-- frequency? identityref
+-- interval? uint32 +-- interval? uint32
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>The "start-time-utc" indicates the start time in UTC format.</t> <t>The "start-time-utc" parameter indicates the start time in UTC form at.</t>
<t>The "duration" parameter specifies, in units of seconds, the time p eriod of <t>The "duration" parameter specifies, in units of seconds, the time p eriod of
the first occurrence. Unless specified otherwise (e.g., through additional the first occurrence. Unless specified otherwise (e.g., through additional
augmented parameters), the "duration" also applies to subsequent recurrence augmented parameters), the "duration" also applies to subsequent recurrence
instances. When unspecified, each occurrence is considered as instances. When unspecified, each occurrence is considered as
immediate completion (e.g., execute an immediate command that is considered immediate completion (e.g., execute an immediate command that is considered
to complete quickly) or hard to compute an exact duration (e.g., run a data to complete quickly) or hard to compute an exact duration (e.g., run a data
analysis script whose execution time may depend on the data volume and analysis script whose execution time may depend on the data volume and
computation resource availability). The behavior to follow when a task takes computation resource availability). The behavior to follow when a task takes
more time than specified by the "duration" is out of scope. Such consideratio ns more time than specified by the "duration" is out of scope. Such consideratio ns
belong to task management, not schedule management.</t> belong to task management, not schedule management.</t>
<t>Note that the "interval" and "duration" cover two distinct properti es of a schedule event. <t>Note that the "interval" and "duration" cover two distinct properti es of a schedule event.
The interval specifies when a schedule will occur, combined with the frequency p arameter; while the duration indicates how long The interval specifies when a schedule will occur, combined with the frequency p arameter, while the duration indicates how long
an occurrence will last. This document allows the interval between occurrences t o be shorter than the duration of each occurrence (e.g., a recurring event is sc heduled to start every day for a duration of 2 days).</t> an occurrence will last. This document allows the interval between occurrences t o be shorter than the duration of each occurrence (e.g., a recurring event is sc heduled to start every day for a duration of 2 days).</t>
<t>The repetition can be scoped by a specified end time or by a count of occurrences, <t>The repetition can be scoped by a specified end time or by a count of occurrences,
indicated by the "recurrence-end" choice. The "count" value <bcp14>MUST</bcp14 > be greater than 1, the "start-time-utc" value always counts indicated by the "recurrence-end" choice. The "count" value <bcp14>MUST</bcp14 > be greater than 1, and the "start-time-utc" value always counts
as the first occurrence.</t> as the first occurrence.</t>
<t>The "recurrence-utc" grouping is designed to be reused in schedulin g contexts <t>The "recurrence-utc" grouping is designed to be reused in schedulin g contexts
where machine readability is more desirable.</t> where machine readability is more desirable.</t>
</section> </section>
<section anchor="sec-rec-tz"> <section anchor="sec-rec-tz">
<name>The "recurrence-with-time-zone" Grouping</name> <name>The "recurrence-with-time-zone" Grouping</name>
<t>The "recurrence-with-time-zone" grouping (<xref target="rec-tz-grp- tree"/>) uses the <t>The "recurrence-with-time-zone" grouping (<xref target="rec-tz-grp- tree"/>) uses the
"recurrence-basic" grouping (<xref target="sec-rec"/>) and specifies a simple recurrence rule with a time zone.</t> "recurrence-basic" grouping (<xref target="sec-rec"/>) and specifies a simple recurrence rule with a time zone.</t>
<figure anchor="rec-tz-grp-tree"> <figure anchor="rec-tz-grp-tree">
<name>'recurrence-with-time-zone' Grouping Tree Structure</name> <name>'recurrence-with-time-zone' Grouping Tree Structure</name>
<artwork><![CDATA[ <sourcecode type="yangtree"><![CDATA[
grouping recurrence-with-time-zone: grouping recurrence-with-time-zone:
+-- recurrence-first +-- recurrence-first
| +-- start-time? yang:date-and-time | +-- start-time? yang:date-and-time
| +-- duration? duration | +-- duration? duration
+-- time-zone-identifier? sys:timezone-name +-- time-zone-identifier? sys:timezone-name
+-- (recurrence-end)? +-- (recurrence-end)?
| +--:(until) | +--:(until)
| | +-- until? yang:date-and-time | | +-- until? yang:date-and-time
| +--:(count) | +--:(count)
| +-- count? uint32 | +-- count? uint32
+-- recurrence-description? string +-- recurrence-description? string
+-- frequency? identityref +-- frequency? identityref
+-- interval? uint32 +-- interval? uint32
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>The "recurrence-first" container includes "start-time" and "duratio n" parameters <t>The "recurrence-first" container includes "start-time" and "duratio n" parameters
to specify the start time and period of the first occurrence. Unless specifie d otherwise (e.g., through additional to specify the start time and period of the first occurrence. Unless specifie d otherwise (e.g., through additional
augmented parameters), the "duration" also applies to subsequent recurrence i nstances. When unspecified, each occurrence is considered as augmented parameters), the "duration" also applies to subsequent recurrence i nstances. When unspecified, each occurrence is considered as
immediate completion (e.g., execute an immediate command that is considered immediate completion (e.g., execute an immediate command that is considered
to complete quickly) or hard to compute an exact duration (e.g., run a data to complete quickly) or hard to compute an exact duration (e.g., run a data
analysis script whose execution time may depend on the data volume and analysis script whose execution time may depend on the data volume and
computation resource availability).</t> computation resource availability).</t>
<t>The grouping also includes a <t>The grouping also includes a
"time-zone-identifier" parameter which <bcp14>MUST</bcp14> be specified if ei ther the "start-time" or "until" "time-zone-identifier" parameter, which <bcp14>MUST</bcp14> be specified if e ither the "start-time" or "until"
value is reported in local time format. It <bcp14>MUST NOT</bcp14> be applied to date and time value is reported in local time format. It <bcp14>MUST NOT</bcp14> be applied to date and time
values which are specified in the format of UTC or time zone offset to UTC.</ t> values that are specified in the format of UTC or time zone offset to UTC.</t >
<t>The repetition can be scoped by a specified end time or by a count of occurrences, <t>The repetition can be scoped by a specified end time or by a count of occurrences,
indicated by the "recurrence-end" choice. The "count" value <bcp14>MUST</bcp14 > be greater than 1, the "start-time" value always counts indicated by the "recurrence-end" choice. The "count" value <bcp14>MUST</bcp14 > be greater than 1, and the "start-time" value always counts
as the first occurrence.</t> as the first occurrence.</t>
<t>The considerations discussed in <xref target="sec-rec-utc"/> for "i nterval" and "duration" are also applicable to "recurrence-with-time-zone".</t> <t>The considerations discussed in <xref target="sec-rec-utc"/> for "i nterval" and "duration" are also applicable to "recurrence-with-time-zone".</t>
<t>Unlike the definition of "recurrence-utc" grouping (<xref target="s ec-rec-utc"/>), <t>Unlike the definition of the "recurrence-utc" grouping (<xref targe t="sec-rec-utc"/>),
"recurrence-with-time-zone" is intended to promote human readability over "recurrence-with-time-zone" is intended to promote human readability over
machine readability.</t> machine readability.</t>
</section> </section>
<section anchor="sec-rec-utc-dt"> <section anchor="sec-rec-utc-dt">
<name>The "recurrence-utc-with-periods" Grouping</name> <name>The "recurrence-utc-with-periods" Grouping</name>
<t>The "recurrence-utc-with-periods" grouping (<xref target="rec-utc-d t-grp-tree"/>) uses <t>The "recurrence-utc-with-periods" grouping (<xref target="rec-utc-d t-grp-tree"/>) uses
the "recurrence-utc" grouping (<xref target="sec-rec-utc"/>) and adds a "peri od-timeticks" the "recurrence-utc" grouping (<xref target="sec-rec-utc"/>) and adds a "peri od-timeticks"
list to define an aggregate set of repeating occurrences.</t> list to define an aggregate set of repeating occurrences.</t>
<figure anchor="rec-utc-dt-grp-tree"> <figure anchor="rec-utc-dt-grp-tree">
<name>'recurrence-utc-with-periods' Grouping Tree Structure</name> <name>'recurrence-utc-with-periods' Grouping Tree Structure</name>
<artwork><![CDATA[ <sourcecode type="yangtree"><![CDATA[
grouping recurrence-utc-with-periods: grouping recurrence-utc-with-periods:
+-- recurrence-first +-- recurrence-first
| +-- start-time-utc? yang:date-and-time | +-- start-time-utc? yang:date-and-time
| +-- duration? uint32 | +-- duration? uint32
+-- (recurrence-end)? +-- (recurrence-end)?
| +--:(until) | +--:(until)
| | +-- utc-until? yang:date-and-time | | +-- utc-until? yang:date-and-time
| +--:(count) | +--:(count)
| +-- count? uint32 | +-- count? uint32
+-- recurrence-description? string +-- recurrence-description? string
+-- frequency? identityref +-- frequency? identityref
+-- interval? uint32 +-- interval? uint32
+-- period-timeticks* [period-start] +-- period-timeticks* [period-start]
+-- period-start yang:timeticks +-- period-start yang:timeticks
+-- period-end? yang:timeticks +-- period-end? yang:timeticks
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>The recurrence instances are specified by the union of occurrences defined <t>The recurrence instances are specified by the union of occurrences defined
by both the recurrence rule and "period-timeticks" list. This list uses by both the recurrence rule and "period-timeticks" list. This list uses the
"yang:timeticks" type defined in <xref target="RFC6991"/>. Duplicate instances "yang:timeticks" type defined in <xref target="RFC9911"/>. Duplicate instances
are ignored. The value of the "period-start" instance <bcp14>MUST NOT</bcp14> exceed the are ignored. The value of the "period-start" instance <bcp14>MUST NOT</bcp14> exceed the
value indicated by the value of "frequency" instance, i.e., the timeticks value of the "frequency" instance, i.e., the "timeticks"
value must not exceed 100 in a secondly recurrence rule, and it must not value must not exceed 100 in a secondly recurrence rule, and it must not
exceed 6000 in a minutely recurrence rule, and so on.</t> exceed 6000 in a minutely recurrence rule, and so on.</t>
</section> </section>
<section anchor="sec-rec-tz-dt"> <section anchor="sec-rec-tz-dt">
<name>The "recurrence-time-zone-with-periods" Grouping</name> <name>The "recurrence-time-zone-with-periods" Grouping</name>
<t>The "recurrence-time-zone-with-periods" grouping (<xref target="rec -tz-dt-grp-tree"/>) uses <t>The "recurrence-time-zone-with-periods" grouping (<xref target="rec -tz-dt-grp-tree"/>) uses
the "recurrence-with-time-zone" grouping (<xref target="sec-rec-tz"/>) and the "recurrence-with-time-zone" grouping (<xref target="sec-rec-tz"/>) and
adds a "period" list to define an aggregate set of repeating occurrences.</t> adds a "period" list to define an aggregate set of repeating occurrences.</t>
<figure anchor="rec-tz-dt-grp-tree"> <figure anchor="rec-tz-dt-grp-tree">
<name>'recurrence-time-zone-with-periods' Grouping Tree Structure</n ame> <name>'recurrence-time-zone-with-periods' Grouping Tree Structure</n ame>
<artwork><![CDATA[ <sourcecode type="yangtree"><![CDATA[
grouping recurrence-time-zone-with-periods: grouping recurrence-time-zone-with-periods:
+-- recurrence-first +-- recurrence-first
| +-- start-time? yang:date-and-time | +-- start-time? yang:date-and-time
| +-- duration? duration | +-- duration? duration
+-- time-zone-identifier? sys:timezone-name +-- time-zone-identifier? sys:timezone-name
+-- (recurrence-end)? +-- (recurrence-end)?
| +--:(until) | +--:(until)
| | +-- until? yang:date-and-time | | +-- until? yang:date-and-time
| +--:(count) | +--:(count)
| +-- count? uint32 | +-- count? uint32
skipping to change at line 509 skipping to change at line 490
+-- interval? uint32 +-- interval? uint32
+-- period* [period-start] +-- period* [period-start]
+-- period-description? string +-- period-description? string
+-- period-start yang:date-and-time +-- period-start yang:date-and-time
+-- time-zone-identifier? sys:timezone-name +-- time-zone-identifier? sys:timezone-name
+-- (period-type)? +-- (period-type)?
+--:(explicit) +--:(explicit)
| +-- period-end? yang:date-and-time | +-- period-end? yang:date-and-time
+--:(duration) +--:(duration)
+-- duration? duration +-- duration? duration
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>The recurrence instances are specified by the union of occurrences defined <t>The recurrence instances are specified by the union of occurrences defined
by both the recurrence rule and "period" list. Duplicate instances by both the recurrence rule and "period" list. Duplicate instances
are ignored.</t> are ignored.</t>
</section> </section>
<section anchor="sec-ical-rec"> <section anchor="sec-ical-rec">
<name>The "icalendar-recurrence" Grouping</name> <name>The "icalendar-recurrence" Grouping</name>
<t>The "icalendar-recurrence" grouping (<xref target="ical-grp-tree"/> ) uses the <t>The "icalendar-recurrence" grouping (<xref target="ical-grp-tree"/> ) uses the
"recurrence-time-zone-with-periods" grouping (<xref target="sec-rec-tz-dt"/>) and defines "recurrence-time-zone-with-periods" grouping (<xref target="sec-rec-tz-dt"/>) and defines
more data nodes to enrich the definition of recurrence. The structure of the more data nodes to enrich the definition of recurrence. The structure of the
"icalendar-recurrence" grouping refers to the definition of recurrence "icalendar-recurrence" grouping refers to the definition of the recurrence
component defined in Sections <xref target="RFC5545" section="3.3.10" sectionF ormat="bare"/> and <xref target="RFC5545" section="3.8.5" sectionFormat="bare"/> of <xref target="RFC5545"/>.</t> component defined in Sections <xref target="RFC5545" section="3.3.10" sectionF ormat="bare"/> and <xref target="RFC5545" section="3.8.5" sectionFormat="bare"/> of <xref target="RFC5545"/>.</t>
<figure anchor="ical-grp-tree"> <figure anchor="ical-grp-tree">
<name>'icalendar-recurrence' Grouping Tree Structure</name> <name>'icalendar-recurrence' Grouping Tree Structure</name>
<artwork><![CDATA[ <sourcecode type="yangtree"><![CDATA[
grouping icalendar-recurrence: grouping icalendar-recurrence:
+-- recurrence-first +-- recurrence-first
| +-- start-time? yang:date-and-time | +-- start-time? yang:date-and-time
| +-- duration? duration | +-- duration? duration
+-- time-zone-identifier? sys:timezone-name +-- time-zone-identifier? sys:timezone-name
+-- (recurrence-end)? +-- (recurrence-end)?
| +--:(until) | +--:(until)
| | +-- until? yang:date-and-time | | +-- until? yang:date-and-time
| +--:(count) | +--:(count)
| +-- count? uint32 | +-- count? uint32
skipping to change at line 560 skipping to change at line 541
+-- byday* [weekday] +-- byday* [weekday]
| +-- direction* int32 | +-- direction* int32
| +-- weekday schedule:weekday | +-- weekday schedule:weekday
+-- bymonthday* int32 +-- bymonthday* int32
+-- byyearday* int32 +-- byyearday* int32
+-- byyearweek* int32 +-- byyearweek* int32
+-- byyearmonth* uint32 +-- byyearmonth* uint32
+-- bysetpos* int32 +-- bysetpos* int32
+-- workweek-start? schedule:weekday +-- workweek-start? schedule:weekday
+-- exception-dates* yang:date-and-time +-- exception-dates* yang:date-and-time
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>An array of the "bysecond" (or "byminute", "byhour") specifies a li <t>An array of the "bysecond" (or "byminute" or "byhour") specifies a
st of list of
seconds within a minute (or minutes within an hour, hours of the day). For seconds within a minute (or minutes within an hour or hours of the day). For
example, within a "minutely" recurrence rule, the values of "byminute" node example, within a "minutely" recurrence rule, the values of "byminute" node
"10" and "20" means the occurrences are generated at the 10th and 20th minute "10" and "20" mean the occurrences are generated at the 10th and 20th minute
within an hour, reducing the number of recurrence instances from all minutes. </t> within an hour, reducing the number of recurrence instances from all minutes. </t>
<t>The parameter "byday" specifies a list of days of the week, with an optional <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 direction that indicates the nth occurrence of a specific day within
the "monthly" or "yearly" frequency instance. Valid values of "direction" are the "monthly" or "yearly" frequency instance. Valid values of "direction" are
1 to 5 or -5 to -1 within a "monthly" recurrence rule; and 1 to 53 or -53 to -1 1 to 5 or -5 to -1 within a "monthly" recurrence rule and 1 to 53 or -53 to -1
within a "yearly" recurrence rule. For example, within a "monthly" rule, within a "yearly" recurrence rule. For example, within a "monthly" rule,
the "weekday" with a value of "monday" and the "direction" with a value of "- 1" the "weekday" with a value of "monday" and the "direction" with a value of "- 1"
represents the last Monday of the month.</t> represents the last Monday of the month.</t>
<t>An array of the "bymonthday" (or byyearday", "byyearweek", or "byye armonth") specifies a list of <t>An array of the "bymonthday" (or byyearday", "byyearweek", or "byye armonth") specifies a list of
days of the month (or days of the year, weeks of the year, or months of the y ear). days of the month (or days of the year, weeks of the year, or months of the y ear).
For example, within a "yearly" recurrence rule, the values of "byyearmonth" For example, within a "yearly" recurrence rule, the values of "byyearmonth"
instance "1" and "2" means the occurrences are generated in January and Febru ary, instances "1" and "2" mean the occurrences are generated in January and Febru ary,
increasing the "yearly" recurrence from every year to every January and Febru ary increasing the "yearly" recurrence from every year to every January and Febru ary
of the year.</t> of the year.</t>
<t>The "bysetpos" conveys a list of values that corresponds to the nth occurrence <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 "mo nthly" within the set of recurrence instances to be specified. For example, in a "mo nthly"
recurrence rule, the "byday" data node specifies every Monday of the week, th recurrence rule, the "byday" data node specifies every Monday of the week, an
e d the
"bysetpos" with value of "-1" represents the last Monday of the month. "bysetpos" with a value of "-1" represents the last Monday of the month.
Not setting the "bysetpos" data node represents every Monday of the month.</t > Not setting the "bysetpos" data node represents every Monday of the month.</t >
<t>The "workweek-start" data node specifies the day on which the week starts. This is <t>The "workweek-start" data node specifies the day on which the week starts. This is
significant when a "weekly" recurrence rule has an interval greater than 1, a nd significant when a "weekly" recurrence rule has an interval greater than 1, a nd
a "byday" data node is specified. This is also significant when in a "yearly" rule a "byday" data node is specified. This is also significant when in a "yearly" rule
and a "byyearweek" is specified. Note that per <xref section="4.13" sectionFo and a "byyearweek" is specified. Note that, per <xref section="4.13" sectionF
rmat="of" target="I-D.ietf-netmod-rfc8407bis"/>, neither a "default" ormat="of" target="I-D.ietf-netmod-rfc8407bis"/>, no "default"
nor a "mandatory" substatement is defined here because there are cases (e.g., substatement is defined here because there are cases (e.g., profiling)
profiling) where using these statements is problematic. No "mandatory" substatement is d
where using these statements is problematic. efined here for the same reason.
YANG modules using this grouping <bcp14>SHOULD</bcp14> refine the "workweek-s tart" node with either a YANG modules using this grouping <bcp14>SHOULD</bcp14> refine the "workweek-s tart" node with either a
"mandatory" or a "default" statement, if it always needs to be configured or has a default value. "mandatory" or a "default" statement if it always needs to be configured or h as a default value.
This <bcp14>MAY</bcp14> be ignored in cases such as when this grouping is use d by another grouping.</t> This <bcp14>MAY</bcp14> be ignored in cases such as when this grouping is use d by another grouping.</t>
<t>The "exception-dates" data node specifies a list of exceptions for recurrence. The <t>The "exception-dates" data node specifies a list of exceptions for recurrence. The
final recurrence set is generated by gathering all of the date and time value s final recurrence set is generated by gathering all of the date and time value s
created by any of the specified recurrence rule and date-times, and then created by any of the specified recurrence rules and date-times and then
excluding any start date and time values specified by "exception-dates" param eter.</t> excluding any start date and time values specified by "exception-dates" param eter.</t>
</section> </section>
<section anchor="sec-schedule-status"> <section anchor="sec-schedule-status">
<name>The "schedule-status", "schedule-status-with-time-zone", and "sc hedule-status-with-name" Groupings</name> <name>The "schedule-status", "schedule-status-with-time-zone", and "sc hedule-status-with-name" Groupings</name>
<t>The "schedule-status", "schedule-status-with-time-zone", and "sched ule-status-with-name" groupings (<xref target="sche-status-tree"/>) define commo n parameters <t>The "schedule-status", "schedule-status-with-time-zone", and "sched ule-status-with-name" groupings (<xref target="sche-status-tree"/>) define commo n parameters
for scheduling management/status exposure. The "schedule-status-with-time-zon e" grouping has the same for scheduling management/status exposure. The "schedule-status-with-time-zon e" grouping has the same
structure as "schedule-status" but with an additional parameter to identify a time zone. Similarly, the "schedule-status-with-name" grouping has the same str ucture as "schedule-status" but with an additional parameter to identify a sched ule "schedule-name". These structure as "schedule-status" but with an additional parameter to identify a time zone. Similarly, the "schedule-status-with-name" grouping has the same str ucture as "schedule-status" but with an additional parameter to identify a sched ule "schedule-name". These
structures are defined in the module to allow for better modularity and flexi bility.</t> structures are defined in the module to allow for better modularity and flexi bility.</t>
<figure anchor="sche-status-tree"> <figure anchor="sche-status-tree">
<name>'schedule-status-*' Groupings Tree Structure</name> <name>'schedule-status-*' Groupings Tree Structure</name>
<artwork><![CDATA[ <sourcecode type="yangtree"><![CDATA[
grouping schedule-status: grouping schedule-status:
+-- state? identityref +-- state? identityref
+-- version? uint16 +-- version? uint16
+-- schedule-type? identityref +-- schedule-type? identityref
+--ro local-time? yang:date-and-time +--ro local-time? yang:date-and-time
+--ro last-update? yang:date-and-time +--ro last-update? yang:date-and-time
+--ro counter? yang:counter32 +--ro counter? yang:counter32
+--ro last-occurrence? yang:date-and-time +--ro last-occurrence? yang:date-and-time
+--ro upcoming-occurrence? yang:date-and-time +--ro upcoming-occurrence? yang:date-and-time
+--ro last-failed-occurrence? yang:date-and-time +--ro last-failed-occurrence? yang:date-and-time
skipping to change at line 642 skipping to change at line 623
+-- state? identityref +-- state? identityref
+-- version? uint16 +-- version? uint16
+-- schedule-type? identityref +-- schedule-type? identityref
+--ro local-time? yang:date-and-time +--ro local-time? yang:date-and-time
+--ro last-update? yang:date-and-time +--ro last-update? yang:date-and-time
+--ro counter? yang:counter32 +--ro counter? yang:counter32
+--ro last-occurrence? yang:date-and-time +--ro last-occurrence? yang:date-and-time
+--ro upcoming-occurrence? yang:date-and-time +--ro upcoming-occurrence? yang:date-and-time
+--ro last-failed-occurrence? yang:date-and-time +--ro last-failed-occurrence? yang:date-and-time
+--ro failure-counter? yang:counter32 +--ro failure-counter? yang:counter32
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>The "schedule-name" parameter is useful to uniquely identify a sche dule in <t>The "schedule-name" parameter is useful to uniquely identify a sche dule in
a network device or controller if multiple scheduling contexts exist.</t> a network device or controller if multiple scheduling contexts exist.</t>
<t>The "state" parameter is defined to configure/expose the scheduling state, <t>The "state" parameter is defined to configure/expose the scheduling state,
depending on the use of the grouping. For a recurrence-based schedule, it depending on the use of the grouping. For a recurrence-based schedule, it
represents the state of the overall recurrence. The "identityref" type is use d for this represents the state of the overall recurrence. The "identityref" type is use d for this
parameter to allow extensibility in future modules.</t> parameter to allow extensibility in future modules.</t>
<t>The "version" parameter is used to track the current schedule versi on <t>The "version" parameter is used to track the current schedule versi on
information. The version can be incremented by the entity that created the sc hedule. information. The version can be incremented by the entity that created the sc hedule.
The "last-update" parameter identifies when the schedule was last modified. The "last-update" parameter identifies when the schedule was last modified.
skipping to change at line 674 skipping to change at line 655
<t>The current groupings capture common parameters that are applicable <t>The current groupings capture common parameters that are applicable
to typical scheduling contexts known so far. Future modules can define other to typical scheduling contexts known so far. Future modules can define other
useful parameters as needed. For example, in a scheduling context with multip le useful parameters as needed. For example, in a scheduling context with multip le
system sources to feed the schedules, the "source" and "precedence" parameter s system sources to feed the schedules, the "source" and "precedence" parameter s
may be needed to reflect how schedules from different sources should be prior itized.</t> may be needed to reflect how schedules from different sources should be prior itized.</t>
</section> </section>
</section> </section>
<section anchor="sec-aug"> <section anchor="sec-aug">
<name>Features Use and Augmentations</name> <name>Features Use and Augmentations</name>
<t><xref target="features"/> provides an example about how the features defined in <xref target="sec-features"/> can be used. Implementations <t><xref target="features"/> provides an example about how the features defined in <xref target="sec-features"/> can be used. Implementations
may support a basic recurrence rule or an advanced one as needed, by declarin g may support a basic recurrence rule or an advanced one, as needed, by declari ng
different features. Whether only one or both features are supported is implem entation different features. Whether only one or both features are supported is implem entation
specific and depends on the specific scheduling context.</t> specific and depends on the specific scheduling context.</t>
<t>The common schedule groupings (<xref target="sec-grp"/>) can also be augmented to support specific needs. As an example, <t>The common schedule groupings (<xref target="sec-grp"/>) can also be augmented to support specific needs. As an example,
<xref target="augments"/> demonstrates how additional parameters can be added to comply with specific schedule needs.</t> <xref target="augments"/> demonstrates how additional parameters can be added to comply with specific schedule needs.</t>
</section> </section>
</section> </section>
<section anchor="some-usage-restrictions"> <section anchor="some-usage-restrictions">
<name>Some Usage Restrictions</name> <name>Some Usage Restrictions</name>
<t>There are some restrictions that need to be followed when using groupin gs defined <t>There are some restrictions that need to be followed when using groupin gs defined
in the "ietf-schedule" YANG module (<xref target="sec-grp"/>):</t> in the "ietf-schedule" YANG module (<xref target="sec-grp"/>):</t>
<ul spacing="normal"> <ul spacing="normal">
<li> <li>
<t>The instant in time represented by "period-start" <bcp14>MUST</bcp1 4> be before the <t>The instant in time represented by "period-start" <bcp14>MUST</bcp1 4> be before the
"period-end" for "period-of-time" grouping (<xref target="sec-period"/>).</t> "period-end" for the "period-of-time" grouping (<xref target="sec-period"/>).</t >
</li> </li>
<li> <li>
<t>The combination of the day, month, and year represented for date an d time <t>The combination of the day, month, and year represented for date an d time
values <bcp14>MUST</bcp14> be valid. See <xref section="5.7" sectionFormat="of" target="RFC3339"/> for the maximum day values <bcp14>MUST</bcp14> be valid. See <xref section="5.7" sectionFormat="of" target="RFC3339"/> for the maximum day
number based on the month and year.</t> number based on the month and year.</t>
</li> </li>
<li> <li>
<t>Unless deployed in contexts where time synchronization is not subje ct to leap second adjustments (e.g., <xref section="4.3" sectionFormat="of" targ et="I-D.ietf-ntp-ntpv5"/>), the second for date and time values <bcp14>SHOULD</b cp14> have the value "60" at the end of months in which a leap <t>Unless deployed in contexts where time synchronization is not subje ct to leap second adjustments (e.g., <xref section="4.3" sectionFormat="of" targ et="I-D.ietf-ntp-ntpv5"/>), the second for date and time values <bcp14>SHOULD</b cp14> have the value "60" at the end of months in which a leap
second occurs.</t> second occurs.</t>
</li> </li>
<li> <li>
<t>Schedules received with a starting time in the past with respect to <t>Schedules received with a starting time in the past with respect to
current time <bcp14>SHOULD</bcp14> be ignored. When a local policy is provided, an implementation <bcp14>MAY</bcp14> omit the past occurrences and current time <bcp14>SHOULD</bcp14> be ignored. When a local policy is provided, an implementation <bcp14>MAY</bcp14> omit the past occurrences and
start immediately (e.g., for a period-based schedule) or starts from the start immediately (e.g., for a period-based schedule) or start from the
date and time when the recurrence pattern is first satisfied from the current ti me (e.g., for a recurrence-based schedule).</t> date and time when the recurrence pattern is first satisfied from the current ti me (e.g., for a recurrence-based schedule).</t>
</li> </li>
</ul> </ul>
</section> </section>
<section anchor="sec-mib"> <section anchor="sec-mib">
<name>Relationship to the DISMAN-SCHEDULE-MIB</name> <name>Relationship to the DISMAN-SCHEDULE-MIB</name>
<t><xref target="RFC3231"/> specifies a Management Information Base (MIB) used to <t><xref target="RFC3231"/> specifies a Management Information Base (MIB) used to
schedule management operations periodically or at specified dates and times.</t> schedule management operations periodically or at specified dates and times.</t>
<t>Although no data nodes are defined in this document, <xref target="mapp ing"/> lists <t>Although no data nodes are defined in this document, <xref target="mapp ing"/> lists
how the main objects in the DISMAN-SCHEDULE-MIB can be mapped to YANG how the main objects in the DISMAN-SCHEDULE-MIB can be mapped to YANG
skipping to change at line 812 skipping to change at line 793
</tr> </tr>
<tr> <tr>
<td align="left">schedTriggers</td> <td align="left">schedTriggers</td>
<td align="left">counter/failure-counter</td> <td align="left">counter/failure-counter</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</section> </section>
<section anchor="sec-schedule"> <section anchor="sec-schedule">
<name>The "ietf-schedule" YANG Module</name> <name>The "ietf-schedule" YANG Module</name>
<t>This module imports types defined in <xref target="RFC6991"/> and <xref <t>This module imports types defined in <xref target="RFC9911"/> and <xref
target="RFC7317"/>.</t> target="RFC7317"/>.</t>
<sourcecode markers="true" name="ietf-schedule@2025-05-30.yang"><![CDATA[ <sourcecode type="yang" markers="true"><![CDATA[
file "ietf-schedule@2026-02-18.yang"
module ietf-schedule { module ietf-schedule {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-schedule"; namespace "urn:ietf:params:xml:ns:yang:ietf-schedule";
prefix schedule; prefix schedule;
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 9911: Common YANG Data Types";
} }
import ietf-system { import ietf-system {
prefix sys; prefix sys;
reference reference
"RFC 7317: A YANG Data Model for System Management"; "RFC 7317: A YANG Data Model for System Management";
} }
organization organization
"IETF NETMOD Working Group"; "IETF NETMOD Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/netmod/> "WG Web: <https://datatracker.ietf.org/wg/netmod/>
WG List: <mailto:netmod@ietf.org> WG List: <mailto:netmod@ietf.org>
Editor: Qiufang Ma Editor: Qiufang Ma
<mailto:maqiufang1@huawei.com <mailto:maqiufang1@huawei.com>
Author: Qin Wu Author: Qin Wu
<mailto:bill.wu@huawei.com> <mailto:bill.wu@huawei.com>
Editor: Mohamed Boucadair Editor: Mohamed Boucadair
<mailto:mohamed.boucadair@orange.com> <mailto:mohamed.boucadair@orange.com>
Author: Daniel King Author: Daniel King
<mailto:d.king@lancaster.ac.uk>"; <mailto:d.king@lancaster.ac.uk>";
description description
"This YANG module defines a set of common types and groupings "This YANG module defines a set of common types and groupings
which are applicable for scheduling purposes such as events, that are applicable for scheduling purposes, such as events,
policy, services, or resources based on date and time. policies, services, or resources based on date and time.
Copyright (c) 2025 IETF Trust and the persons identified The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
as authors of the code. All rights reserved. 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 Redistribution and use in source and binary forms, with
or without modification, is permitted pursuant to, and or without modification, is permitted pursuant to, and
subject to the license terms contained in, the Revised subject to the license terms contained in, the Revised
BSD License set forth in Section 4.c of the IETF Trust's BSD License set forth in Section 4.c of the IETF Trust's
Legal Provisions Relating to IETF Documents Legal Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
All revisions of IETF and IANA published modules can be found This version of this YANG module is part of RFC 9922; see
at the YANG Parameters registry group
(https://www.iana.org/assignments/yang-parameters).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices. the RFC itself for full legal notices.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL All revisions of IETF and IANA-maintained modules can be found
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', in the 'YANG Parameters' registry group
'MAY', and 'OPTIONAL' in this document are to be interpreted as (https://www.iana.org/assignments/yang-parameters).";
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here.";
revision 2025-05-30 { revision 2026-02-18 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: A Common YANG Data Model for Scheduling"; "RFC 9922: A Common YANG Data Model for Scheduling";
} }
feature basic-recurrence { feature basic-recurrence {
description description
"Indicates that the server supports configuring a basic "Indicates that the server supports configuring a basic
scheduled recurrence."; scheduled recurrence.";
} }
feature icalendar-recurrence { feature icalendar-recurrence {
description description
"Indicates that the server supports configuring a comprehensive "Indicates that the server supports configuring a comprehensive
scheduled iCalendar recurrence"; scheduled iCalendar recurrence.";
reference reference
"RFC 5545: Internet Calendaring and Scheduling Core Object "RFC 5545: Internet Calendaring and Scheduling Core Object
Specification (iCalendar), Specification (iCalendar),
Sections 3.3.10 and 3.8.5"; Sections 3.3.10 and 3.8.5";
} }
typedef weekday { typedef weekday {
type enumeration { type enumeration {
enum sunday { enum sunday {
value 0; value 0;
skipping to change at line 944 skipping to change at line 926
description description
"Seven days of the week."; "Seven days of the week.";
} }
typedef duration { typedef duration {
type string { type string {
pattern '((\+)?|\-)P((([0-9]+)D)?(T(0[0-9]|1[0-9]|2[0-3])' 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'; + ':[0-5][0-9]:[0-5][0-9]))|P([0-9]+)W';
} }
description description
"Duration of the time. The format can represent nominal "Duration of the time. The format can represent nominal
durations (weeks designated by 'W' and days designated by 'D') durations (weeks designated by 'W' and days designated by 'D')
and accurate durations (hours:minutes:seconds follows the and accurate durations (hours:minutes:seconds follows the
designator 'T'). designator 'T').
Note that this value type doesn't support the 'Y' and 'M' Note that this value type doesn't support the 'Y' and 'M'
designators to specify durations in terms of years and months. designators to specify durations in terms of years and months.
Negative durations are typically used to schedule an alarm to Negative durations are typically used to schedule an alarm to
trigger before an associated time."; trigger before an associated time.";
reference reference
skipping to change at line 968 skipping to change at line 950
} }
identity schedule-type { identity schedule-type {
description description
"Base identity for schedule type."; "Base identity for schedule type.";
} }
identity one-shot { identity one-shot {
base schedule-type; base schedule-type;
description description
"Indicates a one-shot schedule. That is a schedule that "Indicates a one-shot schedule. That is a schedule that
will trigger an action with the duration being specified as will trigger an action with the duration being specified as
0 or end time being specified the same as start time, 0 or end time being specified as the same as the start time,
and then the schedule will disable itself."; and then the schedule will disable itself.";
} }
identity period { identity period {
base schedule-type; base schedule-type;
description description
"Indicates a period-based schedule consisting of either a "Indicates a period-based schedule consisting of either a
start and end or a start and positive duration of time. If start and end or a start and positive duration of time. If
neither an end nor a duration is indicated, the period is neither an end nor a duration is indicated, the period is
considered to last forever."; considered to last forever.";
} }
identity recurrence { identity recurrence {
base schedule-type; base schedule-type;
description description
"Indicates a recurrence-based schedule."; "Indicates a recurrence-based schedule.";
} }
skipping to change at line 1123 skipping to change at line 1105
Such parameters are used as guards to prevent, e.g., stale Such parameters are used as guards to prevent, e.g., stale
configuration."; configuration.";
leaf description { leaf description {
type string; type string;
description description
"Provides a description of the schedule."; "Provides a description of the schedule.";
} }
leaf time-zone-identifier { leaf time-zone-identifier {
type sys:timezone-name; type sys:timezone-name;
description description
"Indicates the identifier for the time zone. This parameter "Indicates the identifier for the time zone. This parameter
MUST be specified if any of the date and time values are MUST be specified if any of the date and time values are
in the format of local time. It MUST NOT be applied to in the format of local time. It MUST NOT be applied to
date and time values which are specified in the format of date and time values that are specified in the format of
UTC or time zone offset to UTC."; UTC or time zone offset to UTC.";
} }
leaf validity { leaf validity {
type yang:date-and-time; type yang:date-and-time;
description description
"Specifies the date and time after which a schedule will not "Specifies the date and time after which a schedule will not
be considered as valid. This parameter takes precedence be considered as valid. This parameter takes precedence
over similar attributes that are provided at the schedule over similar attributes that are provided at the schedule
instance itself."; instance itself.";
} }
leaf max-allowed-start { leaf max-allowed-start {
type yang:date-and-time; type yang:date-and-time;
description description
"Specifies the maximum scheduled start date and time. "Specifies the maximum scheduled start date and time.
A requested schedule whose first instance occurs after A requested schedule whose first instance occurs after
this value cannot be accepted by the entity. Specifically, this value cannot be accepted by the entity. Specifically,
a requested schedule will be rejected if the first a requested schedule will be rejected if the first
occurrence of that schedule exceeds 'max-allowed-start'."; occurrence of that schedule exceeds 'max-allowed-start'.";
} }
leaf min-allowed-start { leaf min-allowed-start {
type yang:date-and-time; type yang:date-and-time;
description description
"Specifies the minimum scheduled start date and time. "Specifies the minimum scheduled start date and time.
A requested schedule whose first instance occurs before A requested schedule whose first instance occurs before
this value cannot be accepted by the entity. Specifically, this value cannot be accepted by the entity. Specifically,
a requested schedule will be rejected if the first a requested schedule will be rejected if the first
occurrence of that schedule is scheduled before occurrence of that schedule is scheduled before
'min-allowed-start'."; 'min-allowed-start'.";
} }
leaf max-allowed-end { leaf max-allowed-end {
type yang:date-and-time; type yang:date-and-time;
description description
"A requested schedule will be rejected if the end time of "A requested schedule will be rejected if the end time of
the last occurrence exceeds 'max-allowed-end'."; the last occurrence exceeds 'max-allowed-end'.";
} }
leaf discard-action { leaf discard-action {
type identityref { type identityref {
base discard-action-type; base discard-action-type;
} }
description description
"Specifies the behavior when a schedule is discarded for "Specifies the behavior when a schedule is discarded for
any reason, e.g., failing to satisfy the guards in this any reason, e.g., failing to satisfy the guards in this
grouping or it is received out-of-date."; grouping or being received out-of-date.";
} }
} }
grouping period-of-time { grouping period-of-time {
description description
"This grouping is defined for period of time property."; "This grouping is defined for the period of time property.";
reference reference
"RFC 5545: Internet Calendaring and Scheduling Core Object "RFC 5545: Internet Calendaring and Scheduling Core Object
Specification (iCalendar), Section 3.3.9"; Specification (iCalendar), Section 3.3.9";
leaf period-description { leaf period-description {
type string; type string;
description description
"Provides a description of the period."; "Provides a description of the period.";
} }
leaf period-start { leaf period-start {
type yang:date-and-time; type yang:date-and-time;
description description
"Period start time."; "Period start time.";
} }
leaf time-zone-identifier { leaf time-zone-identifier {
type sys:timezone-name; type sys:timezone-name;
description description
"Indicates the identifier for the time zone. This parameter "Indicates the identifier for the time zone. This parameter
MUST be specified if either the 'period-start' or MUST be specified if either the 'period-start' or
'period-end' value is reported in local time format. 'period-end' value is reported in local time format.
It MUST NOT be applied to date and time values which are It MUST NOT be applied to date and time values that are
specified in the format of UTC or time zone offset specified in the format of UTC or time zone offset
to UTC."; to UTC.";
} }
choice period-type { choice period-type {
description description
"Indicates the type of the time period. Two types are "Indicates the type of the time period. Two types are
supported. If no choice is indicated, the period is supported. If no choice is indicated, the period is
considered to last forever."; considered to last forever.";
case explicit { case explicit {
description description
"A period of time is identified by its start and its end. "A period of time is identified by its start and its end.
'period-start' indicates the period start."; 'period-start' indicates the period start.";
leaf period-end { leaf period-end {
type yang:date-and-time; type yang:date-and-time;
description description
"A period of time is defined by a start and end time. "A period of time is defined by a start and end time.
The start MUST be no later than the end. The period The start MUST be no later than the end. The period
is considered as a one-shot schedule if the end time is considered as a one-shot schedule if the end time
is the same as the start time."; is the same as the start time.";
} }
} }
case duration { case duration {
description description
"A period of time is defined by a start and a non-negative "A period of time is defined by a start and a non-negative
duration of time."; duration of time.";
leaf duration { leaf duration {
type duration { type duration {
pattern 'P((([0-9]+)D)?(T(0[0-9]|1[0-9]|2[0-3])' 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'; + ':[0-5][0-9]:[0-5][0-9]))|P([0-9]+)W';
} }
description description
"A non-negative duration of time. This value is "A non-negative duration of time. This value is
equivalent to the format of duration type except that equivalent to the format of 'duration' type except that
the value cannot be negative. The period is considered the value cannot be negative. The period is considered
to be a one-shot schedule if the value is 0."; to be a one-shot schedule if the value is 0.";
} }
} }
} }
} }
grouping recurrence-basic { grouping recurrence-basic {
description description
"A simple definition of recurrence."; "A simple definition of recurrence.";
leaf recurrence-description { leaf recurrence-description {
skipping to change at line 1256 skipping to change at line 1238
base frequency-type; base frequency-type;
} }
description description
"Specifies the frequency type of the recurrence rule."; "Specifies the frequency type of the recurrence rule.";
} }
leaf interval { leaf interval {
type uint32 { type uint32 {
range "1..max"; range "1..max";
} }
must '../frequency' { must '../frequency' {
error-message error-message "Frequency must be provided.";
"Frequency must be provided.";
} }
description description
"A positive integer representing interval at which the "A positive integer representing the interval at which the
recurrence rule repeats. For example, within a 'daily' recurrence rule repeats. For example, within a 'daily'
recurrence rule, a value of '8' means every eight days."; recurrence rule, a value of '8' means every eight days.";
} }
} }
grouping recurrence-utc { grouping recurrence-utc {
description description
"A simple definition of recurrence with time specified in "A simple definition of recurrence with time specified in
UTC format."; UTC format.";
container recurrence-first { container recurrence-first {
description description
"Specifies the first instance of the recurrence. If "Specifies the first instance of the recurrence. If
unspecified, the recurrence is considered to start from unspecified, the recurrence is considered to start from
the date and time when the recurrence pattern is first the date and time when the recurrence pattern is first
satisfied."; satisfied.";
leaf start-time-utc { leaf start-time-utc {
type yang:date-and-time; type yang:date-and-time;
description description
"Defines the date and time of the first instance "Defines the date and time of the first instance
in the recurrence set. A UTC format MUST be used."; in the recurrence set. A UTC format MUST be used.";
} }
leaf duration { leaf duration {
type uint32; type uint32;
units "seconds"; units "seconds";
description description
"When specified, it indicates how long the first occurrence "When specified, it indicates how long the first occurrence
lasts. Unless specified otherwise, it also applies to all lasts. Unless specified otherwise, it also applies to all
the other instances in the recurrence set."; the other instances in the recurrence set.";
} }
} }
choice recurrence-end { choice recurrence-end {
description description
"Modes to control the end of a recurrence rule. If no "Modes to control the end of a recurrence rule. If no
choice is indicated, the recurrence rule is considered choice is indicated, the recurrence rule is considered
to repeat forever."; to repeat forever.";
case until { case until {
description description
"This case defines a way that limits the end of "This case defines a way that limits the end of
a recurrence rule in an inclusive manner."; a recurrence rule in an inclusive manner.";
leaf utc-until { leaf utc-until {
type yang:date-and-time; type yang:date-and-time;
description description
"This parameter specifies a date and time value to "This parameter specifies a date and time value to
skipping to change at line 1333 skipping to change at line 1314
} }
uses recurrence-basic; uses recurrence-basic;
} }
grouping recurrence-with-time-zone { grouping recurrence-with-time-zone {
description description
"A simple definition of recurrence to specify a recurrence "A simple definition of recurrence to specify a recurrence
rule with a time zone."; rule with a time zone.";
container recurrence-first { container recurrence-first {
description description
"Specifies the first instance of the recurrence. If "Specifies the first instance of the recurrence. If
unspecified, the recurrence is considered to start from unspecified, the recurrence is considered to start from
the date and time when the recurrence pattern is first the date and time when the recurrence pattern is first
satisfied."; satisfied.";
leaf start-time { leaf start-time {
type yang:date-and-time; type yang:date-and-time;
description description
"Defines the date and time of the first instance "Defines the date and time of the first instance
in the recurrence set."; in the recurrence set.";
} }
leaf duration { leaf duration {
type duration; type duration;
description description
"When specified, it indicates how long the first "When specified, it indicates how long the first
occurrence last. Unless specified otherwise, it also occurrence lasts. Unless specified otherwise, it also
applies to all the other instances in the recurrence applies to all the other instances in the recurrence
set."; set.";
} }
} }
leaf time-zone-identifier { leaf time-zone-identifier {
type sys:timezone-name; type sys:timezone-name;
description description
"Indicates the identifier for the time zone in a time "Indicates the identifier for the time zone in a time
zone database. This parameter MUST be specified if either zone database. This parameter MUST be specified if either
the 'start-time' or 'until' value is reported in local the 'start-time' or 'until' value is reported in local
time format. It MUST NOT be applied to date and time time format. It MUST NOT be applied to date and time
values which are specified in the format of UTC or time values that are specified in the format of UTC or time
zone offset to UTC."; zone offset to UTC.";
} }
choice recurrence-end { choice recurrence-end {
description description
"Modes to terminate the recurrence rule. If no choice is "Modes to terminate the recurrence rule. If no choice is
indicated, the recurrence rule is considered to repeat indicated, the recurrence rule is considered to repeat
forever."; forever.";
case until { case until {
description description
"The end of the recurrence rule is indicated by a specific "The end of the recurrence rule is indicated by a specific
date-and-time value in an inclusive manner."; date-and-time value in an inclusive manner.";
leaf until { leaf until {
type yang:date-and-time; type yang:date-and-time;
description description
"Specifies a date and time value to inclusively terminate "Specifies a date and time value to inclusively terminate
the recurrence. Thats is, if the value specified by this the recurrence. That is, if the value specified by
parameter is synchronized with the specified recurrence, this parameter is synchronized with the specified
it becomes the last instance of the recurrence."; recurrence, it becomes the last instance of the
recurrence.";
} }
} }
case count { case count {
description description
"The end of the recurrence is indicated by the number "The end of the recurrence is indicated by the number
of occurrences."; of occurrences.";
leaf count { leaf count {
type uint32 { type uint32 {
range "1..max"; range "1..max";
} }
skipping to change at line 1400 skipping to change at line 1382
terminate the recurrence."; terminate the recurrence.";
} }
} }
} }
uses recurrence-basic; uses recurrence-basic;
} }
grouping recurrence-utc-with-periods { grouping recurrence-utc-with-periods {
description description
"This grouping defines an aggregate set of repeating "This grouping defines an aggregate set of repeating
occurrences with UTC time format. The recurrence instances occurrences with UTC time format. The recurrence instances
are specified by the occurrences defined by both the are specified by the occurrences defined by both the
recurrence rule and 'period-timeticks' list. Duplicate recurrence rule and 'period-timeticks' list. Duplicate
instances are ignored."; instances are ignored.";
uses recurrence-utc; uses recurrence-utc;
list period-timeticks { list period-timeticks {
key "period-start"; key "period-start";
description description
"A list of periods with timeticks formats."; "A list of periods with timeticks formats.";
leaf period-start { leaf period-start {
type yang:timeticks; type yang:timeticks;
must "(not(derived-from(../../frequency," must "(not(derived-from(../../frequency,"
+ "'schedule:secondly')) or (current() < 100)) and " + "'schedule:secondly')) or (current() < 100)) and "
skipping to change at line 1426 skipping to change at line 1408
+ " or (current() < 360000)) and " + " or (current() < 360000)) and "
+ "(not(derived-from(../../frequency,'schedule:daily'))" + "(not(derived-from(../../frequency,'schedule:daily'))"
+ " or (current() < 8640000)) and " + " or (current() < 8640000)) and "
+ "(not(derived-from(../../frequency,'schedule:weekly'))" + "(not(derived-from(../../frequency,'schedule:weekly'))"
+ " or (current() < 60480000)) and " + " or (current() < 60480000)) and "
+ "(not(derived-from(../../frequency," + "(not(derived-from(../../frequency,"
+ "'schedule:monthly')) or (current() < 267840000)) and " + "'schedule:monthly')) or (current() < 267840000)) and "
+ "(not(derived-from(../../frequency,'schedule:yearly'))" + "(not(derived-from(../../frequency,'schedule:yearly'))"
+ " or (current() < 3162240000))" { + " or (current() < 3162240000))" {
error-message error-message
"The period-start must not exceed the frequency "The 'period-start' must not exceed the frequency
interval."; interval.";
} }
description description
"Start time of the schedule within one recurrence. "Start time of the schedule within one recurrence.
Given that the value is in timeticks format Given that the value is in timeticks format
(i.e., 1/100 of a second), the values in the must (i.e., 1/100 of a second), the values in the must
statement translate to: 100 = 1s (secondly), statement translate to 100 = 1 s (secondly),
6000 = 60 s = 1 min (minutely), and so on for all 6000 = 60 s = 1 min (minutely), and so on for all
instances in the must statement invariant."; instances in the must statement invariant.";
} }
leaf period-end { leaf period-end {
type yang:timeticks; type yang:timeticks;
description description
"End time of the schedule within one recurrence. "End time of the schedule within one recurrence.
The period start MUST be no later than the period The period start MUST be no later than the period
end."; end.";
} }
skipping to change at line 1507 skipping to change at line 1489
when "derived-from(../../frequency, 'schedule:monthly') or " when "derived-from(../../frequency, 'schedule:monthly') or "
+ "(derived-from(../../frequency, 'schedule:yearly') " + "(derived-from(../../frequency, 'schedule:yearly') "
+ " and not(../../byyearweek))"; + " and not(../../byyearweek))";
type int32 { type int32 {
range "-53..-1|1..53"; range "-53..-1|1..53";
} }
description description
"When specified, it indicates the nth occurrence of a "When specified, it indicates the nth occurrence of a
specific day within the monthly or yearly recurrence specific day within the monthly or yearly recurrence
rule. For example, within a monthly rule, +1 monday rule. For example, within a monthly rule, +1 monday
represents the first monday within the month, whereas represents the first Monday within the month, whereas
-1 monday represents the last monday of the month."; -1 monday represents the last Monday of the month.";
} }
leaf weekday { leaf weekday {
type schedule:weekday; type schedule:weekday;
description description
"Corresponds to seven days of the week."; "Corresponds to seven days of the week.";
} }
} }
leaf-list bymonthday { leaf-list bymonthday {
type int32 { type int32 {
range "-31..-1|1..31"; range "-31..-1|1..31";
skipping to change at line 1553 skipping to change at line 1535
description description
"Specifies a list of months of the year."; "Specifies a list of months of the year.";
} }
leaf-list bysetpos { leaf-list bysetpos {
type int32 { type int32 {
range "-366..-1|1..366"; range "-366..-1|1..366";
} }
description description
"Specifies a list of values that corresponds to the nth "Specifies a list of values that corresponds to the nth
occurrence within the set of recurrence instances occurrence within the set of recurrence instances
specified by the rule. It must only be used in conjunction specified by the rule. It must only be used in conjunction
with another 'byxxx' (bysecond, byminute, etc.) rule with another 'byxxx' (bysecond, byminute, etc.) rule
part ."; part.";
} }
leaf workweek-start { leaf workweek-start {
type schedule:weekday; type schedule:weekday;
description description
"Specifies the day on which the workweek starts."; "Specifies the day on which the workweek starts.";
} }
leaf-list exception-dates { leaf-list exception-dates {
type yang:date-and-time; type yang:date-and-time;
description description
"Defines a list of exceptions for recurrence."; "Defines a list of exceptions for recurrence.";
skipping to change at line 1603 skipping to change at line 1585
type yang:date-and-time; type yang:date-and-time;
config false; config false;
description description
"Reports the local time as used by the entity that "Reports the local time as used by the entity that
hosts the schedule."; hosts the schedule.";
} }
leaf last-update { leaf last-update {
type yang:date-and-time; type yang:date-and-time;
config false; config false;
description description
"Reports the timestamp that the schedule is last updated."; "Reports the timestamp of when the schedule is last
updated.";
} }
leaf counter { leaf counter {
when "derived-from-or-self(../schedule-type, " when "derived-from-or-self(../schedule-type, "
+ "'schedule:recurrence')"; + "'schedule:recurrence')";
type yang:counter32; type yang:counter32;
config false; config false;
description description
"The number of occurrences while invoking the scheduled "The number of occurrences while invoking the scheduled
action successfully. The count wraps around when it reaches action successfully. The count wraps around when it reaches
the maximum value."; the maximum value.";
} }
leaf last-occurrence { leaf last-occurrence {
when "derived-from-or-self(../schedule-type, " when "derived-from-or-self(../schedule-type, "
+ "'schedule:recurrence')"; + "'schedule:recurrence')";
type yang:date-and-time; type yang:date-and-time;
config false; config false;
description description
"Indicates the timestamp of last occurrence."; "Indicates the timestamp of last occurrence.";
} }
skipping to change at line 1655 skipping to change at line 1638
config false; config false;
description description
"Counts the number of failures while invoking the scheduled "Counts the number of failures while invoking the scheduled
action."; action.";
} }
} }
grouping schedule-status-with-time-zone { grouping schedule-status-with-time-zone {
description description
"This grouping defines common properties of scheduling "This grouping defines common properties of scheduling
status, including timezone"; status, including timezone.";
leaf time-zone-identifier { leaf time-zone-identifier {
type sys:timezone-name; type sys:timezone-name;
config false; config false;
description description
"Indicates the identifier for the time zone in a time "Indicates the identifier for the time zone in a time
zone database."; zone database.";
} }
uses schedule-status; uses schedule-status;
} }
skipping to change at line 1684 skipping to change at line 1667
schedule within a device, controller, network, etc. schedule within a device, controller, network, etc.
The unicity scope depends on the implementation."; The unicity scope depends on the implementation.";
} }
uses schedule-status; uses schedule-status;
} }
} }
]]></sourcecode> ]]></sourcecode>
</section> </section>
<section anchor="security-considerations"> <section anchor="security-considerations">
<name>Security Considerations</name> <name>Security Considerations</name>
<t>This section uses the template described in <xref section="3.7" section <t>This section is modeled after the template described in <xref section="
Format="of" target="I-D.ietf-netmod-rfc8407bis"/>.</t> 3.7" sectionFormat="of" target="I-D.ietf-netmod-rfc8407bis"/>.</t>
<t>The "ietf-schedule" YANG module specified in this document defines sche <!--[rfced] *AD - Security Considerations Questions
ma for data
a) FYI - We updated the Security Considerations section to
match the template at
<https://wiki.ietf.org/group/ops/yang-security-guidelines>.
Please review and let us know if any further updates are
needed.
b) As the Writable nodes, Readable nodes, and RFC/action operations
sections are not applicable to this document, do the following
sentences need to be added accordingly (per the template)?
- "There are no particularly sensitive writable data nodes."
- "There are no particularly sensitive readable data nodes."
- "There are no particularly sensitive RPC or action operations."
c) We note that in the paragraph that relates to the "No data nodes"
section, there is a sentence missing (i.e., from the template: "For
example, reusing some of these groupings will expose privacy-related
information (e.g., 'node-example')". Is that omission intentional or
should it be added for clarity?
From the template:
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., 'node-example').
Current text in the document:
Modules that use the groupings that are defined in this document
should identify the corresponding security considerations, for
example:
-->
<t>The "ietf-schedule" YANG module defines a data model
that is designed to be accessed via YANG-based management protocols, such that is designed to be accessed via YANG-based management protocols, such
as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. Th ese YANG-based management protocols (1) have to use as NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. T hese YANG-based management protocols (1) have to use
a secure transport layer (e.g., SSH <xref target="RFC4252"/>, TLS <xref targe t="RFC8446"/>, and QUIC <xref target="RFC9000"/>) a secure transport layer (e.g., SSH <xref target="RFC4252"/>, TLS <xref targe t="RFC8446"/>, and QUIC <xref target="RFC9000"/>)
and (2) have to use mutual authentication.</t> and (2) have to use mutual authentication.</t>
<t>The Network Configuration Access Control Model (NACM) <xref target="RFC 8341"/> <t>The Network Configuration Access Control Model (NACM) <xref target="RFC 8341"/>
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.</t> RESTCONF protocol operations and content.</t>
<t>The "ietf-schedule" module defines a set of types and <t>The "ietf-schedule" module defines a set of identities, types, and
groupings. These nodes are intended to be reused by other YANG groupings. These nodes are intended to be reused by other YANG
modules. The module by itself does not expose any data nodes that modules. The module by itself does not expose any data nodes that
are writable, data nodes that contain read-only state, or RPCs. As are writable, data nodes that contain read-only state, or RPCs. As
such, there are no additional security issues related to the "ietf-schedule" such, there are no additional security issues related to the "ietf-schedule"
module that need to be considered.</t> module that need to be considered.</t>
<t>Modules that use the groupings that are defined in this document <t>Modules that use the groupings that are defined in this document
should identify the corresponding security considerations, e.g.,:</t> should identify the corresponding security considerations. For example,
reuising the following groupings will expose privacy-related information:</t>
<ul spacing="normal"> <ul spacing="normal">
<li> <li>
<t>Scheduling depends on reliable and accurate time synchronization. I naccurate date <t>Scheduling depends on reliable and accurate time synchronization. I naccurate date
and time setting can lead to scheduling events being triggered at incorrect and time setting can lead to scheduling events being triggered at incorrect
intervals, potentially causing system failures or security vulnerabilities.</t> intervals, potentially causing system failures or security vulnerabilities.</t>
</li> </li>
<li> <li>
<t>Recurring events may conceal abnormal behavior or security threats, which <t>Recurring events may conceal abnormal behavior or security threats, which
may be drowned out by normal events, especially when they are triggered frequent ly.</t> may be drowned out by normal events, especially when they are triggered frequent ly.</t>
</li> </li>
<li> <li>
<t>The absence of detailed logs and audit records of each occurrence t rigger time <t>The absence of detailed logs and audit records of each occurrence t rigger time
and action results, and so on, may make security incidents difficult to trace.< /t> and action results and therefore may make security incidents difficult to trace. </t>
</li> </li>
<li> <li>
<t>Care must be taken when defining recurrences occurring very often a nd <t>Care must be taken when defining recurrences occurring very often a nd
frequent that can be an additional source of attacks by keeping the system frequent that can be an additional source of attacks by keeping the system
permanently busy with the management of scheduling.</t> permanently busy with the management of scheduling.</t>
</li> </li>
</ul> </ul>
</section> </section>
<section anchor="iana-considerations"> <section anchor="iana-considerations">
<name>IANA Considerations</name> <name>IANA Considerations</name>
<section anchor="the-ietf-xml-registry"> <section anchor="the-ietf-xml-registry">
<name>The "IETF XML" Registry</name> <name>The IETF XML Registry</name>
<t>This document registers the following URI in the "IETF XML Registry" <t>This document has registered the following URI in the "IETF XML Regis
<xref target="RFC3688"/>.</t> try" <xref target="RFC3688"/>.</t>
<artwork><![CDATA[ <dl>
URI: urn:ietf:params:xml:ns:yang:ietf-schedule <dt>URI:</dt>
Registrant Contact: The IESG. <dd>
XML: N/A, the requested URI is an XML namespace. <t>urn:ietf:params:xml:ns:yang:ietf-schedule</t>
]]></artwork> </dd>
<dt>Registrant Contact:</dt>
<dd>
<t>The IESG.</t>
</dd>
<dt>XML:</dt>
<dd>
<t>N/A; the requested URI is an XML namespace.</t>
</dd>
</dl>
</section> </section>
<section anchor="the-yang-module-names-registry"> <section anchor="the-yang-module-names-registry">
<name>The "YANG Module Names" Registry</name> <name>The YANG Module Names Registry</name>
<t>This document registers the following YANG module in the "YANG Module <t>This document has registered the following YANG module in the "YANG M
Names" odule Names"
registry <xref target="RFC6020"/>.</t> registry <xref target="RFC6020"/>.</t>
<artwork><![CDATA[ <dl>
name: ietf-schedule <dt>Name:</dt>
namespace: urn:ietf:params:xml:ns:yang:ietf-schedule <dd>
prefix: schedule <t>ietf-schedule</t>
maintained by IANA? N </dd>
reference: RFC XXXX <dt>Maintained by IANA:</dt>
]]></artwork> <dd>
<t>N</t>
</dd>
<dt>Namespace:</dt>
<dd>
<t>urn:ietf:params:xml:ns:yang:ietf-schedule</t>
</dd>
<dt>Prefix:</dt>
<dd>
<t>schedule</t>
</dd>
<dt>Reference:</dt>
<dd>
<t>RFC 9922</t>
</dd>
</dl>
</section> </section>
</section> </section>
</middle> </middle>
<back> <back>
<displayreference target="I-D.ietf-netmod-eca-policy" to="NETMOD-ECA-POLICY"
/>
<displayreference target="I-D.ietf-netmod-rfc8407bis" to="YANG-GUIDE"/>
<displayreference target="I-D.ietf-ntp-ntpv5" to="NTPv5"/>
<displayreference target="I-D.ietf-opsawg-scheduling-oam-tests" to="YANG-OAM
"/>
<displayreference target="I-D.ietf-opsawg-ucl-acl" to="YANG-NAC"/>
<displayreference target="I-D.ietf-tvr-schedule-yang" to="YANG-SCHEDULE"/>
<displayreference target="I-D.liu-netmod-yang-schedule" to="YANG-CONFIG-SCHE
DULE"/>
<references anchor="sec-combined-references"> <references anchor="sec-combined-references">
<name>References</name> <name>References</name>
<references anchor="sec-normative-references"> <references anchor="sec-normative-references">
<name>Normative References</name> <name>Normative References</name>
<reference anchor="RFC3231"> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3
<front> 231.xml"/>
<title>Definitions of Managed Objects for Scheduling Management Oper <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2
ations</title> 119.xml"/>
<author fullname="D. Levi" initials="D." surname="Levi"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
<author fullname="J. Schoenwaelder" initials="J." surname="Schoenwae 174.xml"/>
lder"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7
<date month="January" year="2002"/> 950.xml"/>
<abstract> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5
<t>This memo defines a portion of the Management Information Base 545.xml"/>
(MIB) for use with network management protocols in the Internet community. In pa <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7
rticular, it describes a set of managed objects that are used to schedule manage 317.xml"/>
ment operations periodically or at specified dates and times. [STANDARDS-TRACK]< <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9
/t> 911.xml"/>
</abstract> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
</front> 341.xml"/>
<seriesInfo name="RFC" value="3231"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3
<seriesInfo name="DOI" value="10.17487/RFC3231"/> 688.xml"/>
</reference> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6
<reference anchor="RFC2119"> 020.xml"/>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</tit
le>
<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 sig
nify the requirements in the specification. These words are often capitalized. T
his document defines these words as they should be interpreted in IETF documents
. This document specifies an Internet Best Current Practices for the Internet Co
mmunity, 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</ti
tle>
<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 protoco
l 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 da
ta, state data, Remote Procedure Calls, and notifications for network management
protocols. This document describes the syntax and semantics of version 1.1 of t
he 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 al
so 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="RFC5545">
<front>
<title>Internet Calendaring and Scheduling Core Object Specification
(iCalendar)</title>
<author fullname="B. Desruisseaux" initials="B." role="editor" surna
me="Desruisseaux"/>
<date month="September" year="2009"/>
<abstract>
<t>This document defines the iCalendar data format for representin
g and exchanging calendaring and scheduling information such as events, to-dos,
journal entries, and free/busy information, independent of any particular calend
ar service or protocol. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="5545"/>
<seriesInfo name="DOI" value="10.17487/RFC5545"/>
</reference>
<reference anchor="RFC7317">
<front>
<title>A YANG Data Model for System Management</title>
<author fullname="A. Bierman" initials="A." surname="Bierman"/>
<author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
<date month="August" year="2014"/>
<abstract>
<t>This document defines a YANG data model for the configuration a
nd identification of some common system properties within a device containing a
Network Configuration Protocol (NETCONF) server. This document also includes dat
a node definitions for system identification, time-of-day management, user manag
ement, DNS resolver configuration, and some protocol operations for system manag
ement.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="7317"/>
<seriesInfo name="DOI" value="10.17487/RFC7317"/>
</reference>
<reference anchor="RFC6991">
<front>
<title>Common YANG Data Types</title>
<author fullname="J. Schoenwaelder" initials="J." role="editor" surn
ame="Schoenwaelder"/>
<date month="July" year="2013"/>
<abstract>
<t>This document introduces a collection of common data types to b
e used with the YANG data modeling language. This document obsoletes RFC 6021.</
t>
</abstract>
</front>
<seriesInfo name="RFC" value="6991"/>
<seriesInfo name="DOI" value="10.17487/RFC6991"/>
</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 requ
ires a structured and secure operating environment that promotes human usability
and multi-vendor interoperability. There is a need for standard mechanisms to r
estrict NETCONF or RESTCONF protocol access for particular users to a preconfigu
red 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 st
andards which use Extensible Markup Language (XML) related items such as Namespa
ces, Document Type Declarations (DTDs), Schemas, and Resource Description Framew
ork (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 an
d state data manipulated by the Network Configuration Protocol (NETCONF), NETCON
F 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>
<references anchor="sec-informative-references"> <references anchor="sec-informative-references">
<name>Informative References</name> <name>Informative References</name>
<reference anchor="I-D.ietf-opsawg-ucl-acl"> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
<front> ietf-netmod-eca-policy.xml"/>
<title>A YANG Data Model and RADIUS Extension for Policy-based Netwo <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
rk Access Control</title> ietf-netmod-rfc8407bis.xml"/>
<author fullname="Qiufang Ma" initials="Q." surname="Ma"> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
<organization>Huawei</organization> ietf-ntp-ntpv5.xml"/>
</author> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
<author fullname="Qin Wu" initials="Q." surname="Wu"> ietf-opsawg-scheduling-oam-tests.xml"/>
<organization>Huawei</organization> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
</author> ietf-opsawg-ucl-acl.xml"/>
<author fullname="Mohamed Boucadair" initials="M." surname="Boucadai <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
r"> ietf-tvr-schedule-yang.xml"/>
<organization>Orange</organization> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
</author> liu-netmod-yang-schedule.xml"/>
<author fullname="Daniel King" initials="D." surname="King"> <reference anchor="W3C.XML1.0" target="https://www.w3.org/TR/2008/REC-xm
<organization>Lancaster University</organization> l-20081126/">
</author>
<date day="20" month="March" year="2025"/>
<abstract>
<t> This document defines a YANG data model for policy-based net
work
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 Remote Authentication Dial-in
User Service (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-07"
/>
</reference>
<reference anchor="I-D.ietf-opsawg-scheduling-oam-tests">
<front>
<title>A YANG Data Model for Network Diagnosis using Scheduled Seque
nces of OAM Tests</title>
<author fullname="Luis M. Contreras" initials="L. M." surname="Contr
eras">
<organization>Telefonica</organization>
</author>
<author fullname="Victor Lopez" initials="V." surname="Lopez">
<organization>Nokia</organization>
</author>
<date day="7" month="July" year="2025"/>
<abstract>
<t> This document defines a YANG data model for network diagnosi
s on-
demand relying upon Operations, Administration, and Maintenance (OAM)
tests. This document defines both 'oam-unitary-test' and 'oam-test-
sequence' YANG modules to manage the lifecycle of network diagnosis
procedures, primarily intended for use by an SDN controller or
network orchestrator, rather than by individual network nodes.
</t>
</abstract>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-scheduling-
oam-tests-01"/>
</reference>
<reference anchor="I-D.ietf-tvr-schedule-yang">
<front>
<title>YANG Data Model for Scheduled Attributes</title>
<author fullname="Yingzhen Qu" initials="Y." surname="Qu">
<organization>Futurewei Technologies</organization>
</author>
<author fullname="Acee Lindem" initials="A." surname="Lindem">
<organization>Arrcus, Inc.</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="4" month="July" year="2025"/>
<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-ietf-tvr-schedule-yang-
05"/>
</reference>
<reference anchor="RFC8413">
<front>
<title>Framework for Scheduled Use of Resources</title>
<author fullname="Y. Zhuang" initials="Y." surname="Zhuang"/>
<author fullname="Q. Wu" initials="Q." surname="Wu"/>
<author fullname="H. Chen" initials="H." surname="Chen"/>
<author fullname="A. Farrel" initials="A." surname="Farrel"/>
<date month="July" year="2018"/>
<abstract>
<t>Time-Scheduled (TS) reservation of Traffic Engineering (TE) res
ources can be used to provide resource booking for TE Label Switched Paths so as
to better guarantee services for customers and to improve the efficiency of net
work resource usage at any moment in time, including network usage that is plann
ed for the future. This document provides a framework that describes and discuss
es the architecture for supporting scheduled reservation of TE resources. This d
ocument does not describe specific protocols or protocol extensions needed to re
alize this service.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="8413"/>
<seriesInfo name="DOI" value="10.17487/RFC8413"/>
</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="Be
rger"/>
<date month="March" year="2018"/>
<abstract>
<t>This document captures the current syntax used in YANG module t
ree diagrams. The purpose of this document is to provide a single location for t
his definition. This syntax may be updated from time to time based on the evolut
ion 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="I-D.ietf-netmod-rfc8407bis">
<front>
<title>Guidelines for Authors and Reviewers of Documents Containing
YANG Data Models</title>
<author fullname="Andy Bierman" initials="A." surname="Bierman">
<organization>YumaWorks</organization>
</author>
<author fullname="Mohamed Boucadair" initials="M." surname="Boucadai
r">
<organization>Orange</organization>
</author>
<author fullname="Qin Wu" initials="Q." surname="Wu">
<organization>Huawei</organization>
</author>
<date day="5" month="June" year="2025"/>
<abstract>
<t> This document provides guidelines for authors and reviewers
of
specifications containing YANG data models, including IANA-maintained
modules. Recommendations and procedures are defined, which are
intended to increase interoperability and usability of Network
Configuration Protocol (NETCONF) and RESTCONF Protocol
implementations that utilize YANG modules. This document obsoletes
RFC 8407.
Also, this document updates RFC 8126 by providing additional
guidelines for writing the IANA considerations for RFCs that specify
IANA-maintained modules.
</t>
</abstract>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-netmod-rfc8407bis-
28"/>
</reference>
<reference anchor="RFC3339">
<front>
<title>Date and Time on the Internet: Timestamps</title>
<author fullname="G. Klyne" initials="G." surname="Klyne"/>
<author fullname="C. Newman" initials="C." surname="Newman"/>
<date month="July" year="2002"/>
<abstract>
<t>This document defines a date and time format for use in Interne
t protocols that is a profile of the ISO 8601 standard for representation of dat
es and times using the Gregorian calendar.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="3339"/>
<seriesInfo name="DOI" value="10.17487/RFC3339"/>
</reference>
<reference anchor="I-D.ietf-ntp-ntpv5">
<front>
<title>Network Time Protocol Version 5</title>
<author fullname="Miroslav Lichvar" initials="M." surname="Lichvar">
<organization>Red Hat</organization>
</author>
<author fullname="Tal Mizrahi" initials="T." surname="Mizrahi">
<organization>Huawei</organization>
</author>
<date day="2" month="July" year="2025"/>
<abstract>
<t> The Network Time Protocol (NTP) is a widely deployed protoco
l that
allows hosts to obtain the current time of day from time servers.
This document specifies version 5 of the protocol (NTPv5), which
adopts a client-server model as its sole mode of operation. Legacy
operational modes supported in earlier versions have been removed to
improve protocol robustness and clarity. While this specification
defines the protocol used for time distribution, it does not define
the algorithms or heuristics employed by clients to determine or
adjust their local time.
</t>
</abstract>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-ntp-ntpv5-05"/>
</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" surn
ame="Schoenwaelder"/>
<author fullname="A. Bierman" initials="A." role="editor" surname="B
ierman"/>
<date month="June" year="2011"/>
<abstract>
<t>The Network Configuration Protocol (NETCONF) defined in this do
cument provides mechanisms to install, manipulate, and delete the configuration
of network devices. It uses an Extensible Markup Language (XML)-based data encod
ing for the configuration data as well as the protocol messages. The NETCONF pro
tocol operations are realized as remote procedure calls (RPCs). This document ob
soletes 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 c
oncepts 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="RFC4252">
<front>
<title>The Secure Shell (SSH) Authentication Protocol</title>
<author fullname="T. Ylonen" initials="T." surname="Ylonen"/>
<author fullname="C. Lonvick" initials="C." role="editor" surname="L
onvick"/>
<date month="January" year="2006"/>
<abstract>
<t>The Secure Shell Protocol (SSH) is a protocol for secure remote
login and other secure network services over an insecure network. This document
describes the SSH authentication protocol framework and public key, password, a
nd host-based client authentication methods. Additional authentication methods a
re described in separate documents. The SSH authentication protocol runs on top
of the SSH transport layer protocol and provides a single authenticated tunnel f
or the SSH connection protocol. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="4252"/>
<seriesInfo name="DOI" value="10.17487/RFC4252"/>
</reference>
<reference anchor="RFC8446">
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</titl
e>
<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 Secu
rity (TLS) protocol. TLS allows client/server applications to communicate over t
he Internet in a way that is designed to prevent eavesdropping, tampering, and m
essage forgery.</t>
<t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 50
77, 5246, and 6961. This document also specifies new requirements for TLS 1.2 im
plementations.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="8446"/>
<seriesInfo name="DOI" value="10.17487/RFC8446"/>
</reference>
<reference anchor="RFC9000">
<front>
<title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
<author fullname="J. Iyengar" initials="J." role="editor" surname="I
yengar"/>
<author fullname="M. Thomson" initials="M." role="editor" surname="T
homson"/>
<date month="May" year="2021"/>
<abstract>
<t>This document defines the core of the QUIC transport protocol.
QUIC provides applications with flow-controlled streams for structured communica
tion, low-latency connection establishment, and network path migration. QUIC inc
ludes security measures that ensure confidentiality, integrity, and availability
in a range of deployment circumstances. Accompanying documents describe the int
egration of TLS for key negotiation, loss detection, and an exemplary congestion
control algorithm.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="9000"/>
<seriesInfo name="DOI" value="10.17487/RFC9000"/>
</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 configura
tion data, state data, parameters of Remote Procedure Call (RPC) operations or a
ctions, 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>
<reference anchor="RFC9657">
<front>
<title>Time-Variant Routing (TVR) Use Cases</title>
<author fullname="E. Birrane, III" initials="E." surname="Birrane, I
II"/>
<author fullname="N. Kuhn" initials="N." surname="Kuhn"/>
<author fullname="Y. Qu" initials="Y." surname="Qu"/>
<author fullname="R. Taylor" initials="R." surname="Taylor"/>
<author fullname="L. Zhang" initials="L." surname="Zhang"/>
<date month="October" year="2024"/>
<abstract>
<t>This document introduces use cases where Time-Variant Routing (
TVR) computations (i.e., routing computations that take into consideration time-
based or scheduled changes to a network) could improve routing protocol converge
nce and/or network performance.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="9657"/>
<seriesInfo name="DOI" value="10.17487/RFC9657"/>
</reference>
<reference anchor="I-D.ietf-netmod-eca-policy">
<front>
<title>A YANG Data model for ECA Policy Management</title>
<author fullname="Qin Wu" initials="Q." surname="Wu">
<organization>Huawei</organization>
</author>
<author fullname="Igor Bryskin" initials="I." surname="Bryskin">
<organization>Individual</organization>
</author>
<author fullname="Henk Birkholz" initials="H." surname="Birkholz">
<organization>Fraunhofer SIT</organization>
</author>
<author fullname="Xufeng Liu" initials="X." surname="Liu">
<organization>Volta Networks</organization>
</author>
<author fullname="Benoît Claise" initials="B." surname="Claise">
<organization>Cisco</organization>
</author>
<date day="19" month="February" year="2021"/>
<abstract>
<t> This document defines a YANG data model for Event Condition
Action
(ECA) policy management. The ECA policy YANG module provides the
ability to delegate some network management functions to the server
(e.g., a NETCONF or RESTCONF server) which can take simple and
instant action when a trigger condition on the managed objects is
met.
</t>
</abstract>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-netmod-eca-policy-
01"/>
</reference>
<reference anchor="I-D.liu-netmod-yang-schedule">
<front> <front>
<title>A YANG Data Model for Configuration Scheduling</title> <title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title>
<author fullname="Xufeng Liu" initials="X." surname="Liu"> <author initials="T." surname="Bray" fullname="Tim Bray" role="edito
<organization>Jabil</organization> r">
</author> <organization/>
<author fullname="Igor Bryskin" initials="I." surname="Bryskin">
<organization>Huawei Technologies</organization>
</author> </author>
<author fullname="Vishnu Pavan Beeram" initials="V. P." surname="Bee <author initials="J." surname="Paoli" fullname="Jean Paoli" role="ed
ram"> itor">
<organization>Juniper Networks</organization> <organization/>
</author> </author>
<author fullname="Tarek Saad" initials="T." surname="Saad"> <author initials="C. M." surname="Sperberg-McQueen" fullname="C. M.
<organization>Cisco Systems Inc</organization> Sperberg-McQueen" role="editor">
<organization/>
</author> </author>
<author fullname="Himanshu Shah" initials="H." surname="Shah"> <author initials="E." surname="Maler" fullname="Eve Maler" role="edi
<organization>Ciena</organization> tor">
<organization/>
</author> </author>
<author fullname="Oscar Gonzalez de Dios" initials="O. G." surname=" <author initials="F." surname="Yergeau" fullname="Francois Yergeau"
de Dios"> role="editor">
<organization>Telefonica</organization> <organization/>
</author> </author>
<date day="1" month="March" year="2018"/> <date year="2008" month="November" day="26"/>
<abstract>
<t> This document describes a data model for configuration sched
uling.
</t>
</abstract>
</front> </front>
<seriesInfo name="Internet-Draft" value="draft-liu-netmod-yang-schedul e-05"/> <refcontent>W3C Recommendation</refcontent>
</reference> </reference>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
413.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
340.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3
339.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6
241.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
040.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4
252.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
446.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9
000.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7
951.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9
657.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
345.xml"/>
</references> </references>
</references> </references>
<?line 1637?> <?line 1715?>
<section anchor="usage"> <section anchor="usage">
<name>Examples of Scheduling Format Representation</name> <name>Examples of Scheduling Format Representation</name>
<t>This section provides some examples to illustrate the use of the <t>This section provides some examples to illustrate the use of the
period and recurrence formats defined in <xref target="sec-schedule"/>. The f ollowing period and recurrence formats defined in <xref target="sec-schedule"/>. The f ollowing
modules are used for illustration purposes and make examples verifiable:</t> modules are used for illustration purposes and make examples verifiable:</t>
<artwork><![CDATA[ <sourcecode type="yang"><![CDATA[
module example-sch-usage-1 { module example-sch-usage-1 {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-sch-usage-1"; namespace "http://example.com/example-sch-usage-1";
prefix "ex-schu-1"; prefix "ex-schu-1";
import ietf-schedule { import ietf-schedule {
prefix "schedule"; prefix "schedule";
} }
container generic-schedule-params { container generic-schedule-params {
skipping to change at line 2359 skipping to change at line 1985
prefix "ex-schu-8"; prefix "ex-schu-8";
container icalendar-recurrence { container icalendar-recurrence {
uses schedule:icalendar-recurrence { uses schedule:icalendar-recurrence {
refine workweek-start { refine workweek-start {
default monday; default monday;
} }
} }
} }
} }
]]></artwork> ]]></sourcecode>
<t>For each example, only the message body is provided with <t>For each example, only the message body is provided with
JSON used for encoding per the guidance in <xref target="RFC7951"/>.</t> JSON, which is used for encoding per the guidance in <xref target="RFC7951"/> .</t>
<section anchor="the-generic-schedule-params-grouping"> <section anchor="the-generic-schedule-params-grouping">
<name>The "generic-schedule-params" Grouping</name> <name>The "generic-schedule-params" Grouping</name>
<t><xref target="ex-0"/> illustrates the example of a requested schedule that needs to start no earlier than <t><xref target="ex-0"/> illustrates the example of a requested schedule that needs to start no earlier than
08:00 AM, January 1, 2025 and end no later than 8:00 PM, January 31, 2025 (Beiji ng time). 08:00 AM, January 1, 2025 and end no later than 8:00 PM, January 31, 2025 (Beiji ng time).
Schedule requests that fail to meet the requirements are ignored by the system a s indicated by Schedule requests that fail to meet the requirements are ignored by the system, as indicated by
"discard-action".</t> "discard-action".</t>
<figure anchor="ex-0"> <figure anchor="ex-0">
<name>Generic Parameters with 'max-allowed-end' for Schedule Validatio n</name> <name>Generic Parameters with 'max-allowed-end' for Schedule Validatio n</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-1:generic-schedule-params": { "example-sch-usage-1:generic-schedule-params": {
"time-zone-identifier": "China/Beijing", "time-zone-identifier": "China/Beijing",
"min-allowed-start": "2025-01-01T08:00:00", "min-allowed-start": "2025-01-01T08:00:00",
"max-allowed-end": "2025-01-31T20:00:00", "max-allowed-end": "2025-01-31T20:00:00",
"discard-action": "ietf-schedule:silently-discard" "discard-action": "ietf-schedule:silently-discard"
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>To illustrate the difference between "max-allowed-end" and "validity" parameters, <t>To illustrate the difference between "max-allowed-end" and "validity" parameters,
<xref target="ex-00"/> shows the example of a requested schedule that needs to s tart no earlier than <xref target="ex-00"/> shows the example of a requested schedule that needs to s tart no earlier than
08:00 AM, January 1, 2025 (Beijing time). Schedule requests that fail to meet th e 08:00 AM, January 1, 2025 (Beijing time). Schedule requests that fail to meet th e
requirements are ignored by the system as indicated by "discard-action". The requirements are ignored by the system, as indicated by "discard-action". The
requested schedule may end after 8:00 PM, January 31, 2025, but any occurrences that are generated requested schedule may end after 8:00 PM, January 31, 2025, but any occurrences that are generated
after that time would not be considered as valid.</t> after that time would not be considered as valid.</t>
<figure anchor="ex-00"> <figure anchor="ex-00">
<name>Generic Parameters with 'validity' for Schedule Validation</name > <name>Generic Parameters with 'validity' for Schedule Validation</name >
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-1:generic-schedule-params": { "example-sch-usage-1:generic-schedule-params": {
"time-zone-identifier": "China/Beijing", "time-zone-identifier": "China/Beijing",
"validity": "2025-01-31T20:00:00", "validity": "2025-01-31T20:00:00",
"min-allowed-start": "2025-01-01T08:00:00", "min-allowed-start": "2025-01-01T08:00:00",
"discard-action": "ietf-schedule:silently-discard" "discard-action": "ietf-schedule:silently-discard"
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-period-of-time-grouping"> <section anchor="the-period-of-time-grouping">
<name>The "period-of-time" Grouping</name> <name>The "period-of-time" Grouping</name>
<t><xref target="ex-1"/> shows an example of a period that starts at 08: 00:00 UTC, on January 1, 2025 and ends at 18:00:00 UTC <t><xref target="ex-1"/> shows an example of a period that starts at 08: 00:00 UTC on January 1, 2025 and ends at 18:00:00 UTC
on December 31, 2027.</t> on December 31, 2027.</t>
<figure anchor="ex-1"> <figure anchor="ex-1">
<name>Simple Start/End Schedule</name> <name>Simple Start/End Schedule</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-2:period-of-time": { "example-sch-usage-2:period-of-time": {
"period-start": "2025-01-01T08:00:00Z", "period-start": "2025-01-01T08:00:00Z",
"period-end": "2027-12-31T18:00:00Z" "period-end": "2027-12-31T18:00:00Z"
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>An example of a period that starts at 08:00:00 UTC, on January 1, 202 5 and lasts 15 days and <t>An example of a period that starts at 08:00:00 UTC on January 1, 2025 and lasts 15 days and
5 hours and 20 minutes is encoded as shown in <xref target="ex-2"/>.</t> 5 hours and 20 minutes is encoded as shown in <xref target="ex-2"/>.</t>
<figure anchor="ex-2"> <figure anchor="ex-2">
<name>Simple Schedule with Duration</name> <name>Simple Schedule with Duration</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-2:period-of-time": { "example-sch-usage-2:period-of-time": {
"period-start": "2025-01-01T08:00:00Z", "period-start": "2025-01-01T08:00:00Z",
"duration": "P15DT05:20:00" "duration": "P15DT05:20:00"
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>An example of a period that starts at 2:00 A.M. in Los Angeles on Nov ember 19, <t>An example of a period that starts at 2:00 AM in Los Angeles on Novem ber 19,
2025 and lasts 20 weeks is depicted in <xref target="ex-3"/>.</t> 2025 and lasts 20 weeks is depicted in <xref target="ex-3"/>.</t>
<figure anchor="ex-3"> <figure anchor="ex-3">
<name>Simple Schedule with Time Zone Indication</name> <name>Simple Schedule with Time Zone Indication</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-2:period-of-time": { "example-sch-usage-2:period-of-time": {
"period-start": "2025-11-19T02:00:00", "period-start": "2025-11-19T02:00:00",
"time-zone-identifier": "America/Los_Angeles", "time-zone-identifier": "America/Los_Angeles",
"duration": "P20W" "duration": "P20W"
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-recurrence-basic-grouping"> <section anchor="the-recurrence-basic-grouping">
<name>The "recurrence-basic" Grouping</name> <name>The "recurrence-basic" Grouping</name>
<t><xref target="ex-6"/> indicates a recurrence of every 2 days which st arts immediately and repeats forever:</t> <t><xref target="ex-4"/> indicates a recurrence of every 2 days, which s tarts immediately and repeats forever:</t>
<figure anchor="ex-4"> <figure anchor="ex-4">
<name>Simple Schedule with Recurrence</name> <name>Simple Schedule with Recurrence</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-3:recurrence-basic": { "example-sch-usage-3:recurrence-basic": {
"recurrence-description": "forever recurrence rule", "recurrence-description": "forever recurrence rule",
"frequency": "ietf-schedule:daily", "frequency": "ietf-schedule:daily",
"interval": 2 "interval": 2
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-recurrence-utc-grouping"> <section anchor="the-recurrence-utc-grouping">
<name>The "recurrence-utc" Grouping</name> <name>The "recurrence-utc" Grouping</name>
<t><xref target="ex-5"/> indicates a recurrence from 8:00 AM to 9:00 AM every day, from <t><xref target="ex-5"/> indicates a recurrence from 8:00 AM to 9:00 AM every day, from
December 1 to December 31, 2025 in UTC:</t> December 1 to December 31, 2025 in UTC:</t>
<figure anchor="ex-5"> <figure anchor="ex-5">
<name>Simple Schedule with Recurrence in UTC</name> <name>Simple Schedule with Recurrence in UTC</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-4:recurrence-utc": { "example-sch-usage-4:recurrence-utc": {
"recurrence-first": { "recurrence-first": {
"start-time-utc": "2025-12-01T08:00:00Z", "start-time-utc": "2025-12-01T08:00:00Z",
"duration": 3600 "duration": 3600
}, },
"frequency": "ietf-schedule:daily", "frequency": "ietf-schedule:daily",
"interval": 1, "interval": 1,
"utc-until": "2025-12-31T23:59:59Z" "utc-until": "2025-12-31T23:59:59Z"
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-recurrence-with-time-zone-grouping"> <section anchor="the-recurrence-with-time-zone-grouping">
<name>The "recurrence-with-time-zone" Grouping</name> <name>The "recurrence-with-time-zone" Grouping</name>
<t><xref target="ex-6"/> indicates a recurrence of every 2 hours for 10 <t><xref target="ex-6"/> indicates a recurrence of every 2 hours for 10
occurrences, lasting occurrences that
10 minutes, and starting at 3 p.m. on December 1, 2025 in New York:</t> lasts 10 minutes and starts at 3 PM on December 1, 2025 in New York:</t>
<figure anchor="ex-6"> <figure anchor="ex-6">
<name>Simple Schedule with Recurrence with Time Zone Indication</name> <name>Simple Schedule with Recurrence with Time Zone Indication</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-5:recurrence-with-time-zone": { "example-sch-usage-5:recurrence-with-time-zone": {
"recurrence-first": { "recurrence-first": {
"start-time": "2025-12-01T15:00:00", "start-time": "2025-12-01T15:00:00",
"duration": "PT00:10:00", "duration": "PT00:10:00",
"time-zone-identifier": "America/New_York" "time-zone-identifier": "America/New_York"
}, },
"frequency": "ietf-schedule:hourly", "frequency": "ietf-schedule:hourly",
"interval": 2, "interval": 2,
"count": 10 "count": 10
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-recurrence-utc-with-periods-grouping"> <section anchor="the-recurrence-utc-with-periods-grouping">
<name>The "recurrence-utc-with-periods" Grouping</name> <name>The "recurrence-utc-with-periods" Grouping</name>
<t><xref target="ex-7"/> indicates a recurrence that occurs every two da ys starting at 9:00 AM <t><xref target="ex-7"/> indicates a recurrence that occurs every two da ys starting at 9:00 AM
and 3:00 PM for a duration of 30 minutes and 40 minutes respectively, and 3:00 PM for a duration of 30 minutes and 40 minutes, respectively,
from 2025-06-01 to 2025-06-30 in UTC:</t> from 2025-06-01 to 2025-06-30 in UTC:</t>
<figure anchor="ex-7"> <figure anchor="ex-7">
<name>Example of Recurrence With Date Times</name> <name>Example of Recurrence With Date Times</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-6:recurrence-utc-with-periods": { "example-sch-usage-6:recurrence-utc-with-periods": {
"recurrence-first": { "recurrence-first": {
"start-time-utc": "2025-06-01T09:00:00Z" "start-time-utc": "2025-06-01T09:00:00Z"
}, },
"frequency": "ietf-schedule:daily", "frequency": "ietf-schedule:daily",
"interval": 2, "interval": 2,
"utc-until": "2025-06-30T23:59:59Z", "utc-until": "2025-06-30T23:59:59Z",
"period-timeticks": [ "period-timeticks": [
{ {
"period-start": "3240000", "period-start": "3240000",
"period-end": "3420000" "period-end": "3420000"
}, },
{ {
"period-start": "5400000", "period-start": "5400000",
"period-end": "5640000" "period-end": "5640000"
} }
] ]
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-recurrence-time-zone-with-periods-grouping"> <section anchor="the-recurrence-time-zone-with-periods-grouping">
<name>The "recurrence-time-zone-with-periods" Grouping</name> <name>The "recurrence-time-zone-with-periods" Grouping</name>
<t><xref target="ex-8"/> indicates a recurrence that occurs every <t><xref target="ex-8"/> indicates a recurrence that occurs every
30 minutes and lasts for 15 minutes from 9:00 AM to 5:00 PM and an extra two occurrences 30 minutes and lasts for 15 minutes from 9:00 AM to 5:00 PM and two extra occ urrences
at 6:00 PM and 6:30 PM with each lasting for 20 minutes on 2025-12-01 (New Yo rk):</t> at 6:00 PM and 6:30 PM with each lasting for 20 minutes on 2025-12-01 (New Yo rk):</t>
<figure anchor="ex-8"> <figure anchor="ex-8">
<name>Example of Advanced Recurrence Schedule</name> <name>Example of Advanced Recurrence Schedule</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-7:recurrence-time-zone-with-periods": { "example-sch-usage-7:recurrence-time-zone-with-periods": {
"recurrence-first": { "recurrence-first": {
"start-time": "2025-12-01T09:00:00", "start-time": "2025-12-01T09:00:00",
"duration": "PT00:15:00", "duration": "PT00:15:00",
"time-zone-identifier": "America/New_York" "time-zone-identifier": "America/New_York"
}, },
"frequency": "ietf-schedule:minutely", "frequency": "ietf-schedule:minutely",
"interval": 30, "interval": 30,
"until": "2025-12-01T17:00:00Z", "until": "2025-12-01T17:00:00Z",
skipping to change at line 2564 skipping to change at line 2190
"period-start": "2025-12-01T18:00:00", "period-start": "2025-12-01T18:00:00",
"duration": "PT00:20:00" "duration": "PT00:20:00"
}, },
{ {
"period-start": "2025-12-01T18:30:00", "period-start": "2025-12-01T18:30:00",
"duration": "PT00:20:00" "duration": "PT00:20:00"
} }
] ]
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-icalendar-recurrence-grouping"> <section anchor="the-icalendar-recurrence-grouping">
<name>The "icalendar-recurrence" Grouping</name> <name>The "icalendar-recurrence" Grouping</name>
<t><xref target="ex-9"/> indicates 10 occurrences that occur at <t><xref target="ex-9"/> indicates 10 occurrences at
8:00 AM (EST), every last Saturday of the month starting in January 2024:</t> 8:00 AM (EST) every last Saturday of the month starting in January 2024:</t>
<figure anchor="ex-9"> <figure anchor="ex-9">
<name>Simple iCalendar Recurrence</name> <name>Simple iCalendar Recurrence</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-8:icalendar-recurrence": { "example-sch-usage-8:icalendar-recurrence": {
"recurrence-first": { "recurrence-first": {
"start-time": "2024-01-27T08:00:00", "start-time": "2024-01-27T08:00:00",
"time-zone-identifier": "America/New_York" "time-zone-identifier": "America/New_York"
}, },
"frequency": "ietf-schedule:monthly", "frequency": "ietf-schedule:monthly",
"count": 10, "count": 10,
"byday": [ "byday": [
{ {
"direction": [ "direction": [
-1 -1
], ],
"weekday": "saturday" "weekday": "saturday"
} }
] ]
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t><xref target="ex-10"/> is an example of a recurrence that occurs on t he last <t><xref target="ex-10"/> is an example of a recurrence that occurs on t he last
workday of the month until December 25, 2025, from January 1, 2025:</t> workday of the month until December 25, 2025, starting January 1, 2025:</t>
<figure anchor="ex-10"> <figure anchor="ex-10">
<name>Example of Advanced iCalendar Recurrence</name> <name>Example of Advanced iCalendar Recurrence</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-8:icalendar-recurrence": { "example-sch-usage-8:icalendar-recurrence": {
"recurrence-first": { "recurrence-first": {
"start-time": "2025-01-01" "start-time": "2025-01-01"
}, },
"frequency": "ietf-schedule:monthly", "frequency": "ietf-schedule:monthly",
"until": "2025-12-25", "until": "2025-12-25",
"byday": [ "byday": [
{ {
"weekday": "monday" "weekday": "monday"
skipping to change at line 2628 skipping to change at line 2254
}, },
{ {
"weekday": "friday" "weekday": "friday"
} }
], ],
"bysetpos": [ "bysetpos": [
-1 -1
] ]
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t><xref target="ex-11"/> indicates a recurrence that occurs every 20 <t><xref target="ex-11"/> indicates a recurrence that occurs every 20
minutes from 9:00 AM to 4:40 PM (UTC), with the occurrence starting at 10:20 minutes from 9:00 AM to 4:40 PM (UTC), with the exclusion of the
AM occurrence starting at 10:20 AM on 2025-12-01:</t>
being excluded on 2025-12-01:</t>
<figure anchor="ex-11"> <figure anchor="ex-11">
<name>Example of Advanced iCalendar Recurrence with Exceptions</name> <name>Example of Advanced iCalendar Recurrence with Exceptions</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-8:icalendar-recurrence": { "example-sch-usage-8:icalendar-recurrence": {
"recurrence-first": { "recurrence-first": {
"start-time": "2025-12-01T09:00:00Z" "start-time": "2025-12-01T09:00:00Z"
}, },
"until": "2025-12-01T16:40:00Z", "until": "2025-12-01T16:40:00Z",
"frequency": "ietf-schedule:minutely", "frequency": "ietf-schedule:minutely",
"byminute": [ "byminute": [
0, 0,
20, 20,
skipping to change at line 2663 skipping to change at line 2289
13, 13,
14, 14,
15, 15,
16 16
], ],
"exception-dates": [ "exception-dates": [
"2025-12-01T10:20:00Z" "2025-12-01T10:20:00Z"
] ]
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-schedule-status-grouping"> <section anchor="the-schedule-status-grouping">
<name>The "schedule-status" Grouping</name> <name>The "schedule-status" Grouping</name>
<t><xref target="ex-12"/> indicates the scheduled recurrence status of < xref target="ex-11"/> at the time <t><xref target="ex-12"/> indicates the scheduled recurrence status of < xref target="ex-11"/> at the time
of 12:15 PM, 2025-12-01 (UTC):</t> of 12:15 PM on 2025-12-01 (UTC):</t>
<figure anchor="ex-12"> <figure anchor="ex-12">
<name>Example of a Schedule Status</name> <name>Example of a Schedule Status</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-1:schedule-status": { "example-sch-usage-1:schedule-status": {
"state": "ietf-schedule:enabled", "state": "ietf-schedule:enabled",
"version": 1, "version": 1,
"schedule-type": "ietf-schedule:recurrence", "schedule-type": "ietf-schedule:recurrence",
"counter": 9, "counter": 9,
"last-occurrence": [ "last-occurrence": [
"2025-12-01T12:00:00Z" "2025-12-01T12:00:00Z"
], ],
"upcoming-occurrence": [ "upcoming-occurrence": [
"2025-12-01T12:20:00Z" "2025-12-01T12:20:00Z"
] ]
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>At the time of 12:15 PM, 2025-12-01 (UTC), the recurring event occurr <t>At the time of 12:15 PM on 2025-12-01 (UTC), the recurring event occu
ed at rred at
(note that occurrence at 10:20 AM is excluded): (note that the occurrence at 10:20 AM is excluded):
9:00, 9:20, 9:40, 10:00, 10:40, 11:00, 11:20, 11:40, 12:00. 9:00, 9:20, 9:40, 10:00, 10:40, 11:00, 11:20, 11:40, and 12:00.
The last occurrence was at 12:00, the upcoming one is at 12:20.</t> The last occurrence was at 12:00, and the upcoming one is at 12:20.</t>
</section> </section>
</section> </section>
<section anchor="sec-ext"> <section anchor="sec-ext">
<name>Examples of Using/Extending the "ietf-schedule" Module</name> <name>Examples of Using/Extending the "ietf-schedule" Module</name>
<t>This non-normative section shows two examples for how the "ietf-schedul e" module <t>This non-normative section shows two examples for how the "ietf-schedul e" module
can be used or extended for scheduled events or attributes based on date and time.</t> can be used or extended for scheduled events or attributes based on date and time.</t>
<section anchor="features"> <section anchor="features">
<name>Example: Schedule Tasks to Execute Based on a Recurrence Rule</nam e> <name>Example: Schedule Tasks to Execute Based on a Recurrence Rule</nam e>
<t>Scheduled tasks can be used to execute specific actions based on cert ain recurrence rules (e.g., <t>Scheduled tasks can be used to execute specific actions based on cert ain recurrence rules (e.g.,
every Friday at 8:00 AM). The following example module which "uses" the "ical every Friday at 8:00 AM). The following example module, which "uses" the "ica
endar-recurrence" lendar-recurrence"
grouping from "ietf-schedule" module shows how a scheduled task could be defi grouping from the "ietf-schedule" module, shows how a scheduled task could be
ned defined
with different features used for options.</t> with different features used for options.</t>
<artwork><![CDATA[ <sourcecode type="yang"><![CDATA[
module example-scheduled-backup { module example-scheduled-backup {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-scheduled-backup"; namespace "http://example.com/example-scheduled-backup";
prefix "ex-scback"; prefix "ex-scback";
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
} }
import ietf-schedule { import ietf-schedule {
prefix "schedule"; prefix "schedule";
} }
organization organization
"Example, Inc."; "Example, Inc.";
contact contact
"Support at example.com"; "Support at example.com";
description description
"Example of a module defining a scheduled based backup "Example of a module defining a scheduled-based backup
operation."; operation.";
revision "2023-01-19" { revision "2026-02-20" {
description description
"Initial Version."; "Initial version.";
reference reference
"RFC XXXX: A YANG Data Model for Scheduling."; "RFC 9922: A YANG Data Model for Scheduling.";
} }
container scheduled-backup-tasks { container scheduled-backup-tasks {
description description
"A container for backing up all current running configuration "A container for backing up all current running configurations
on the device."; on the device.";
list tasks { list tasks {
key "task-id"; key "task-id";
description description
"The list of backing up tasks on this device."; "The list of backing up tasks on this device.";
leaf task-id { leaf task-id {
type string; type string;
description description
"The task identifier that uniquely identifies a scheduled "The task identifier that uniquely identifies a scheduled
backup task."; backup task.";
} }
choice local-or-remote { choice local-or-remote {
description description
"Specifies whether the configuration to be backed up is "Specifies whether the configuration to be backed up is
local or remote."; local or remote.";
case local { case local {
description description
"Configuration parameters for backing up of local "Configuration parameters for the backing up of local
devices."; devices.";
leaf local { leaf local {
type empty; type empty;
description description
"The parameter specifies the configuration to be "The parameter specifies the configuration to be
backed up is on the local device."; backed up is on the local device.";
} }
} }
case remote { case remote {
description description
skipping to change at line 2781 skipping to change at line 2407
description description
"The parameter specifies the remote device domain "The parameter specifies the remote device domain
name."; name.";
} }
} }
} }
container basic-recurrence-schedules { container basic-recurrence-schedules {
if-feature schedule:basic-recurrence; if-feature schedule:basic-recurrence;
description description
"Basic recurrence schedule specification, only applies when "Basic recurrence schedule specification, which only
schedule:basic-recurrence feature is supported."; applies when the schedule:basic-recurrence feature
is supported.";
leaf schedule-id { leaf schedule-id {
type string; type string;
description description
"The schedule identifier for this recurrence rule."; "The schedule identifier for this recurrence rule.";
} }
uses schedule:recurrence-basic { uses schedule:recurrence-basic {
refine frequency { refine frequency {
mandatory true; mandatory true;
} }
refine interval { refine interval {
default 1; default 1;
} }
} }
} }
container icalendar-recurrence-schedules { container icalendar-recurrence-schedules {
if-feature schedule:icalendar-recurrence; if-feature schedule:icalendar-recurrence;
description description
"Basic recurrence schedule specification, only applies when "Basic recurrence schedule specification, which only
schedule:icalendar-recurrence feature is supported."; applies when the schedule:icalendar-recurrence feature
is supported.";
leaf schedule-id { leaf schedule-id {
type string; type string;
description description
"The schedule identifier for this recurrence rule."; "The schedule identifier for this recurrence rule.";
} }
uses schedule:icalendar-recurrence { uses schedule:icalendar-recurrence {
refine workweek-start { refine workweek-start {
default monday; default monday;
} }
} }
} }
} }
list schedule-set { list schedule-set {
key "schedule-name"; key "schedule-name";
description description
"The list of schedule status for the backup tasks."; "Schedule status list for the backup tasks.";
uses schedule:schedule-status-with-name; uses schedule:schedule-status-with-name;
} }
} }
} }
]]></artwork> ]]></sourcecode>
</section> </section>
<section anchor="augments"> <section anchor="augments">
<name>Example: Schedule Network Properties to Change Based on Date and T ime</name> <name>Example: Schedule Network Properties to Change Based on Date and T ime</name>
<t>Network properties may change over a specific period of time or based on a <t>Network properties may change over a specific period of time or based on a
recurrence rule, e.g., <xref target="RFC9657"/>. recurrence rule, e.g., <xref target="RFC9657"/>.
The following example module which augments the "recurrence-utc-with-periods" The following example module, which augments the "recurrence-utc-with-periods
grouping from "ietf-schedule" module shows how a scheduled attribute "
could be defined.</t> grouping from the "ietf-schedule" module, shows how a scheduled attribute
<artwork><![CDATA[ could be defined. Note that <br/>
<xref target="RFC8345"/> and this document are referenced in the modul
e.</t>
<sourcecode type="yang"><![CDATA[
module example-scheduled-link-bandwidth { module example-scheduled-link-bandwidth {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-scheduled-link-bandwidth"; namespace "http://example.com/example-scheduled-link-bandwidth";
prefix "ex-scattr"; prefix "ex-scattr";
import ietf-network { import ietf-network {
prefix "nw"; prefix "nw";
reference reference
"RFC 8345: A YANG Data Model for Network Topologies"; "RFC 8345: A YANG Data Model for Network Topologies";
} }
import ietf-schedule { import ietf-schedule {
prefix "schedule"; prefix "schedule";
reference reference
"RFC XXXX: A YANG Data Model for Scheduling"; "RFC 9922: A YANG Data Model for Scheduling";
} }
organization organization
"Example, Inc."; "Example, Inc.";
contact contact
"Support at example.com"; "Support at example.com";
description description
"Example of a module defining a scheduled link bandwidth."; "Example of a module defining a scheduled link bandwidth.";
revision "2023-01-19" { revision "2026-02-20" {
description description
"Initial Version."; "Initial version.";
reference reference
"RFC XXXX: A YANG Data Model for Scheduling."; "RFC 9922: A YANG Data Model for Scheduling";
} }
grouping link-bandwidth-grouping { grouping link-bandwidth-grouping {
description description
"Grouping of the link bandwidth definition."; "Grouping of the link bandwidth definition.";
leaf scheduled-bandwidth { leaf scheduled-bandwidth {
type uint64; type uint64;
units "Kbps"; units "Kbps";
description description
"Bandwidth values, expressed in kilobits per second."; "Bandwidth values, expressed in kilobits per second.";
skipping to change at line 2900 skipping to change at line 2529
leaf destination-node { leaf destination-node {
type nw:node-id; type nw:node-id;
description description
"Indicates the source node identifier."; "Indicates the source node identifier.";
} }
leaf default-bandwidth { leaf default-bandwidth {
type uint64; type uint64;
units "Kbps"; units "Kbps";
description description
"Bandwidth value used for perdiods that don't match "Bandwidth value used for periods that don't match
a schedule."; a schedule.";
} }
choice time-variant-type { choice time-variant-type {
description description
"Controls the schedule type."; "Controls the schedule type.";
case period { case period {
uses schedule:period-of-time; uses schedule:period-of-time;
} }
case recurrence { case recurrence {
uses schedule:recurrence-utc-with-periods { uses schedule:recurrence-utc-with-periods {
augment "period-timeticks" { augment "period-timeticks" {
description description
"Specifies the attributes inside each "Specifies the attributes inside each
period-timeticks entry."; 'period-timeticks' entry.";
uses link-bandwidth-grouping; uses link-bandwidth-grouping;
} }
} }
} }
} }
} }
} }
} }
]]></artwork> ]]></sourcecode>
<t><xref target="ex-13"/> shows a configuration example of a link's band <t><xref target="ex-13"/> shows a configuration example in XML <xref tar
width that is get="W3C.XML1.0"/> of a link's bandwidth that is
scheduled between 2025-12-01 0:00 UTC to the end of 2025-12-31 with a daily scheduled between 2025-12-01 0:00 UTC to the end of 2025-12-31 with a daily
schedule. In each day, the bandwidth value is scheduled to be 500 Kbps between schedule. In each day, the bandwidth value is scheduled to be 500 Kbps between
1:00 AM to 6:00 AM and 800 Kbps between 10:00 PM to 11:00 PM. The bandwidth 1:00 AM to 6:00 AM and 800 Kbps between 10:00 PM to 11:00 PM. The bandwidth
value that is not covered by the period above is 1000 Kbps.</t> value that is not covered by the period above is 1000 Kbps.</t>
<figure anchor="ex-13"> <figure anchor="ex-13">
<name>Example of Scheduled Link's Bandwidth</name> <name>Example of Scheduled Link's Bandwidth</name>
<artwork><![CDATA[ <sourcecode type="xml"><![CDATA[
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<link-attributes <link-attributes
xmlns="http://example.com/example-scheduled-link-bandwidth" xmlns="http://example.com/example-scheduled-link-bandwidth"
xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule">
<link> <link>
<source-node>ne1</source-node> <source-node>ne1</source-node>
<destination-node>ne2</destination-node> <destination-node>ne2</destination-node>
<default-bandwidth>1000</default-bandwidth> <default-bandwidth>1000</default-bandwidth>
<recurrence-first> <recurrence-first>
<utc-start-time>2025-12-01T01:00:00Z</utc-start-time> <utc-start-time>2025-12-01T01:00:00Z</utc-start-time>
skipping to change at line 2958 skipping to change at line 2587
<period-end>2160000</period-end> <period-end>2160000</period-end>
<scheduled-bandwidth>500</scheduled-bandwidth> <scheduled-bandwidth>500</scheduled-bandwidth>
</period-timeticks> </period-timeticks>
<period-timeticks> <period-timeticks>
<period-start>7920000</period-start> <period-start>7920000</period-start>
<period-end>8280000</period-end> <period-end>8280000</period-end>
<scheduled-bandwidth>800</scheduled-bandwidth> <scheduled-bandwidth>800</scheduled-bandwidth>
</period-timeticks> </period-timeticks>
</link> </link>
</link-attributes> </link-attributes>
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
</section> </section>
<section anchor="ex-framework"> <section anchor="ex-framework">
<name>Examples of Using "ietf-schedule" Module for Scheduled Use of Resour ces Framework</name> <name>Examples of Using the "ietf-schedule" Module for Scheduled Use of Re sources Framework</name>
<t>This section exemplifies how the architecture for supporting scheduled <t>This section exemplifies how the architecture for supporting scheduled
reservation of Traffic Engineering (TE) resources in <xref target="RFC8413"/> might leverage the "period-of-time" reservation of Traffic Engineering (TE) resources in <xref target="RFC8413"/> might leverage the "period-of-time"
grouping defined in the "ietf-schedule" module to implement scheduled use of grouping defined in the "ietf-schedule" module to implement scheduled use of
resources.</t> resources.</t>
<t>The following example module shows how a scheduled link capacity reserv ation <t>The following example module shows how a scheduled link capacity reserv ation
could be defined.</t> could be defined.</t>
<artwork><![CDATA[ <sourcecode type="yang"><![CDATA[
module example-sch-capacity-res { module example-sch-capacity-res {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-sch-capacity-res"; namespace "http://example.com/example-sch-capacity-res";
prefix "ex-schecaparev"; prefix "ex-schecaparev";
import ietf-network-topology { import ietf-network-topology {
prefix "nt"; prefix "nt";
} }
import ietf-schedule { import ietf-schedule {
skipping to change at line 3001 skipping to change at line 2630
type nt:link-id; type nt:link-id;
} }
leaf reserved-capability { leaf reserved-capability {
type uint64; type uint64;
units "Mbps"; units "Mbps";
} }
uses schedule:period-of-time; uses schedule:period-of-time;
} }
} }
} }
]]></artwork> ]]></sourcecode>
<t><xref section="4" sectionFormat="of" target="RFC8413"/> defines the ref erence architecture for scheduled use <t><xref section="4" sectionFormat="of" target="RFC8413"/> defines the ref erence architecture for scheduled use
of resources, the service requester sends a request to a Path Computation Ele of resources. The service requester sends a request to a Path Computation Ele
ment (PCE) and includes the ment (PCE) and includes the
parameters of the Label Switched Path (LSP) that the requester wishes to supp parameters of the Label Switched Path (LSP) that the requester wishes to supp
ly, the configuration ly. The configuration
example to provide the scheduled resource is shown in <xref target="ex-14"/>. </t> example to provide the scheduled resource is shown in <xref target="ex-14"/>. </t>
<figure anchor="ex-14"> <figure anchor="ex-14">
<name>Example of Scheduled Link's Bandwidth Reservation</name> <name>Example of Scheduled Link's Bandwidth Reservation</name>
<artwork><![CDATA[ <sourcecode type="xml"><![CDATA[
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<link-capability-reservations <link-capability-reservations
xmlns="http://example.com/example-sch-capacity-res" xmlns="http://example.com/example-sch-capacity-res"
xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule">
<scheduled-link-capacity> <scheduled-link-capacity>
<schedule-id>1</schedule-id> <schedule-id>1</schedule-id>
<link-id>1-2-1</link-id> <link-id>1-2-1</link-id>
<reserved-capability>500</reserved-capability> <reserved-capability>500</reserved-capability>
<period-start>2025-03-10T08:00:00Z</period-start> <period-start>2025-03-10T08:00:00Z</period-start>
<period-end>2025-03-10T09:00:00Z</period-end> <period-end>2025-03-10T09:00:00Z</period-end>
skipping to change at line 3035 skipping to change at line 2664
<duration>PT09:00:00</duration> <duration>PT09:00:00</duration>
</scheduled-link-capacity> </scheduled-link-capacity>
<scheduled-link-capacity> <scheduled-link-capacity>
<schedule-id>3</schedule-id> <schedule-id>3</schedule-id>
<link-id>2-1-1</link-id> <link-id>2-1-1</link-id>
<reserved-capability>500</reserved-capability> <reserved-capability>500</reserved-capability>
<period-start>2025-04-01T09:00:00Z</period-start> <period-start>2025-04-01T09:00:00Z</period-start>
<period-end>2025-04-01T23:59:59Z</period-end> <period-end>2025-04-01T23:59:59Z</period-end>
</scheduled-link-capacity> </scheduled-link-capacity>
</link-capability-reservations> </link-capability-reservations>
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section numbered="false" anchor="acknowledgments"> <section numbered="false" anchor="acknowledgments">
<name>Acknowledgments</name> <name>Acknowledgments</name>
<t>This work is derived from the <xref target="I-D.ietf-opsawg-ucl-acl"/>. <t>This work is derived from <xref target="I-D.ietf-opsawg-ucl-acl"/>. The
There is a desire re is a desire
from the OPSAWG to see this model be separately defined for wide use in sched from the OPSAWG to see this module separately defined for wide use in schedul
uling context.</t> ing context.</t>
<t>Thanks to Adrian Farrel, Wei Pan, Tianran Zhou, Joe Clarke, Steve Baill <t>Thanks to <contact fullname="Adrian Farrel"/>, <contact fullname="Wei P
argeon, Dhruv Dhody, Robert Wilton, and Italo Busi an"/>, <contact fullname="Tianran Zhou"/>, <contact fullname="Joe Clarke"/>, <co
ntact fullname="Steve Baillargeon"/>, <contact fullname="Dhruv Dhody"/>, <contac
t fullname="Robert Wilton"/>, and <contact fullname="Italo Busi"/>
for their valuable comments and inputs to this work.</t> for their valuable comments and inputs to this work.</t>
<t>Many thanks to the authors of <xref target="I-D.ietf-tvr-schedule-yang" />, <xref target="I-D.ietf-opsawg-scheduling-oam-tests"/>, and <xref target="I-D .ietf-netmod-eca-policy"/> <t>Many thanks to the authors of <xref target="I-D.ietf-tvr-schedule-yang" />, <xref target="I-D.ietf-opsawg-scheduling-oam-tests"/>, and <xref target="I-D .ietf-netmod-eca-policy"/>
for the constructive discussion during IETF#118.</t> for the constructive discussion during IETF#118.</t>
<t>Other related efforts were explored in the past, e.g., <xref target="I- D.liu-netmod-yang-schedule"/>.</t> <t>Other related efforts were explored in the past, e.g., <xref target="I- D.liu-netmod-yang-schedule"/>.</t>
<t>Thanks to Reshad Rahman for the great YANG Doctors review, Mahesh Jetha <t>Thanks to <contact fullname="Reshad Rahman"/> for the great YANG Doctor
nandani for the AD review, Per Andersson for the OPSDIR review, s review, <contact fullname="Mahesh Jethanandani"/> for the AD review, <contact
Peter Yee for genart review, and Acee Lindem for the rtgdir review.</t> fullname="Per Andersson"/> for the OPSDIR review,
<t>Thanks to Éric Vyncke, Erik Kline, and Mike Bishop for the IESG review. <contact fullname="Peter Yee"/> for the GENART review, and <contact fullname=
</t> "Acee Lindem"/> for the RTGDIR review.</t>
<t>Thanks to <contact fullname="Éric Vyncke"/>, <contact fullname="Erik Kl
ine"/>, and <contact fullname="Mike Bishop"/> for the IESG review.</t>
</section> </section>
</back> </back>
<!-- ##markdown-source: <!-- ##markdown-source:
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
aVqbWio1HXCeXEJXFFJTS2tbKhXsg9SiyfF/pBTA5h/nMq2LJmoxAhWliWe9 Dlnun3/yhtltQ+6uRQvF6T13mA3s1/jGXkxdb6UzLsuhNOS29HYiXeS7bOyF
hms2qMiHx9CR9cajJY+StLPd91Y4Jr5qrbztjcZRDa+2t8zi2MjQK+TDu3CN DSMC4YKJ51V7ZS0dFHGWr7TXMqbWnBbjhEdM5/Nkksbo1VpdRdVol0sx3UY5
GOfm2N9wr3VzRIASQJHz0rAH+6C7g47p7hj0QjA5/dgCs3K3iGrAAw0JaSD+ gRw91Vc3w7qm5UN2l4V7YGNdDDreIQ57UleDSvEUoh2sqnzqIZfrn3dSPgXq
c8QnTag5kf64+CCeJYXucb2rfu26Oo4KDdAt/bNlJ0rAmzHCQYczauLehz1n exkh6sg8qAnSaue67M6Yt80VPAuZt/aG2QbrApvw7hbxusyCTsiNZ+Lhxm8O
VibOYr/rhAQk6cUlSsIbNoo49hH1RQ6CUNPcGQzp3M6EX8vdoGIy2t/ZfHie 1kH2oY+i2lCffnbgsszUFojUQIoL6IGUBSufm8WpT4zhKmJB260uTheaq1pM
Yoy2UUfQ+TOJ62mFAoa1DrBRMmAeeQGwUtgh7A6KPEpNgAfFDaLUO88ByxZp Nb16nqBC/xYSWEtrW0wV7NjUsspxqaQUe+VfXRs1vbQ5g4owxGttw0bbqcmH
sBdY4xE6tTTs82QUSzArh6BEGPRRKuUdNOkJmQx0kkF+SYkvKOVMhiIOEQ5o y9CT9Y1HUx5FaU++7/9wnAaqtXLlNxpHNXy1PTKbZCNF75QP7xLXAl216XgG
ClYKRguPULGxwg9K/ZVlXEQSXlYQ+NIjnp5nOYokNjUEI9CdjYHcQZIBoyfm c6DXzf0DygZF1u6NXSPgw77W76DPuzsBDRIMVj+iwuzfHWI58K5EAjmIMR3x
ILCN6TWsih0Oahl88PllfEXnxNiBtmsl6BNoIQcOlImK/+LwJwoCvICVYAnM PRYqVKRpLg476LlBD/ZS1YddVwlSYRG6j3ux7UVIeGtHiOgGSKHA69hz1mfi
CFIR7Nd8imvPTB1IonWQcQioejcI8dD7Fcq3lskhIUDnK00RQOcsRqnwP/Cl TPbdWIgkvbxCWXnLxtSrvGLK7kkUiFrxzmBI14TP2p+8IApA+nYnyTSuZxUK
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
tsJ+0F9/R+rfQVt366Hv4PlFqJszBnQb2oU8oOQTYZrVeSKs1/jTH+o//maR /i+0ESVwz2Mgvl8ixEJ2UE0M1nmmCxC6UhgRMSsFVrYtnc+TCVZ5ByWYvZiU
lMpZASCUgvnl9PTIU2h0mhTPnFG0MaRTgqYrqYUpS4Q5kgN2gccpDYLg/J5a 11plFTtYAfPbDc+JwX04szriSibwn5UrtGpnS5OJUw4W1U75VqDZKID5nYWY
X0UvJPsiiUl7HpQvSSXiEbnrUjd41tZud/miW6vIZ0uLmI7VuKqTcvXW18k4 f6vnbsE3WKAhbO+2Y5sCdkQHQTXisfzKWwAb0NPJJDUfHmJDnyvvSgLZVXZg
u0376hJWc/XmkyJtUp+eO1+qt6YvBB2iz+HmIoa3lFqHt1GZt8gUbVMRdg52 x7Oag/inR6z6G/jOzVxtTsYoxFxcSsd8Omxf3X+7hvKRzu5rQ4C6wPbB7mP4
SNavgz670TMhjVbkp61qD5Gli67N4bbJe6pVPXaVgS9L0K7Q9/ThoJDdg2nb X1Ak7K64r4LElu11nS6hnd5b6VyxWEBdYLjV0M5wLBEnRmZQMhTNOLdB4XMk
QvYWglzd/rdWelPRzZb+bWfTIw+00KxPHqmGQ/3JcKh/29K/bevfdvRvu/q3 s0UCr5Kb6EcwfVehg912j9JdScIjh+Guwyh9vncOXw7d75exUljX/8B1dVel
PWcQ70q/NZozd5HKgqYgeQ5vS55MOCf61r8toL0gsKAzf8uhaPe2rp2NnUPN I872FDr38hEFpSNhbQUIZm9VgrkrS/adVCEqetRORRxbx6XpmJyqm5y1DtoM
ABqzEeSOs4pLhnfDLdDu6CTI1k6RwJeQ5dAPWDMUSbH/TeKQO6P6hIZjASz3 CmeuFBvBEZF0ttlI4Ew6TpWQbZfGdvSfParwi7ddmPuQUEa8ihWKPdhk5ELq
jXO/sPm9Rfy2KCXpLCTS9a4Oty3rlkP9iiYCl2/bO1hKF1sBuoiNu+CUkUas Lxhmdfazt8hp91W8iOA633psKYdfxXNGrTyH1mzxHFdh1fmDoP1fBGbjgGpo
6tAsy+I1sZN/60B6xX/GrI5hJk2btzE1WPyIjhSEE8EqR8TievDfLfrvDvyX GNucmarbazQRzXd7Z0QNlK+qt3zMXRpywZi7nHFMj0n//hQ4Co/UUTgxKp11
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
--> -->
</rfc> </rfc>
 End of changes. 220 change blocks. 
1370 lines changed or deleted 933 lines changed or added

This html diff was produced by rfcdiff 1.48.