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-or-self(../../frequency,"
+ "'schedule:secondly')) or (current() < 100)) and " + "'schedule:secondly')) or (current() < 100)) and "
+ "(not(derived-from(../../frequency," + "(not(derived-from-or-self(../../frequency,"
+ "'schedule:minutely')) or (current() < 6000)) and " + "'schedule:minutely')) or (current() < 6000)) and "
+ "(not(derived-from(../../frequency,'schedule:hourly'))" + "(not(derived-from-or-self(../../frequency,"
+ " or (current() < 360000)) and " + "'schedule:hourly')) or (current() < 360000)) and "
+ "(not(derived-from(../../frequency,'schedule:daily'))" + "(not(derived-from-or-self(../../frequency,"
+ " or (current() < 8640000)) and " + "'schedule:daily')) or (current() < 8640000)) and "
+ "(not(derived-from(../../frequency,'schedule:weekly'))" + "(not(derived-from-or-self(../../frequency,"
+ " or (current() < 60480000)) and " + "'schedule:weekly')) or (current() < 60480000)) and "
+ "(not(derived-from(../../frequency," + "(not(derived-from-or-self(../../frequency,"
+ "'schedule:monthly')) or (current() < 267840000)) and " + "'schedule:monthly')) or (current() < 267840000)) and "
+ "(not(derived-from(../../frequency,'schedule:yearly'))" + "(not(derived-from-or-self(../../frequency,"
+ " or (current() < 3162240000))" { + "'schedule:yearly')) 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 1497 skipping to change at line 1479
range "0..23"; range "0..23";
} }
description description
"Specifies a list of hours of the day."; "Specifies a list of hours of the day.";
} }
list byday { list byday {
key "weekday"; key "weekday";
description description
"Specifies a list of days of the week."; "Specifies a list of days of the week.";
leaf-list direction { leaf-list direction {
when "derived-from(../../frequency, 'schedule:monthly') or " when "derived-from-or-self(../../frequency, "
+ "(derived-from(../../frequency, 'schedule:yearly') " + "'schedule:monthly') or "
+ " and not(../../byyearweek))"; + "(derived-from-or-self(../../frequency,"
+ "'schedule:yearly') 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 1532 skipping to change at line 1515
"Specifies a list of days of the month."; "Specifies a list of days of the month.";
} }
leaf-list byyearday { leaf-list byyearday {
type int32 { type int32 {
range "-366..-1|1..366"; range "-366..-1|1..366";
} }
description description
"Specifies a list of days of the year."; "Specifies a list of days of the year.";
} }
leaf-list byyearweek { leaf-list byyearweek {
when "derived-from(../frequency, 'schedule:yearly')"; when "derived-from-or-self(../frequency, 'schedule:yearly')";
type int32 { type int32 {
range "-53..-1|1..53"; range "-53..-1|1..53";
} }
description description
"Specifies a list of weeks of the year."; "Specifies a list of weeks of the year.";
} }
leaf-list byyearmonth { leaf-list byyearmonth {
type uint32 { type uint32 {
range "1..12"; range "1..12";
} }
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 1586
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 1639
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 1668
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,
reusing 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 1716?>
<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";
} }
organization
"Example, Inc.";
contact
"Support at example.com";
description
"Example of a module using 'generic-schedule-params' and
'schedule-status' groupings.";
revision "2026-02-20" {
description "Initial version.";
reference
"RFC 9922: A YANG Data Model for Scheduling";
}
container generic-schedule-params { container generic-schedule-params {
description
"A collection of generic scheduling parameters.";
uses schedule:generic-schedule-params; uses schedule:generic-schedule-params;
} }
container schedule-status { container schedule-status {
description
"A collection of scheduling status.";
uses schedule:schedule-status; uses schedule:schedule-status;
} }
} }
module example-sch-usage-2 { module example-sch-usage-2 {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-sch-usage-2"; namespace "http://example.com/example-sch-usage-2";
prefix "ex-schu2"; prefix "ex-schu2";
import ietf-schedule { import ietf-schedule {
prefix "schedule"; prefix "schedule";
} }
organization
"Example, Inc.";
contact
"Support at example.com";
description
"Example of a module using the 'period-of-time' grouping.";
revision "2026-02-20" {
description "Initial version.";
reference
"RFC 9922: A YANG Data Model for Scheduling";
}
container period-of-time { container period-of-time {
description
"A container for a time period.";
uses schedule:period-of-time; uses schedule:period-of-time;
} }
} }
module example-sch-usage-3 { module example-sch-usage-3 {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-sch-usage-3"; namespace "http://example.com/example-sch-usage-3";
prefix "ex-schu-3"; prefix "ex-schu-3";
import ietf-schedule { import ietf-schedule {
prefix "schedule"; prefix "schedule";
} }
organization
"Example, Inc.";
contact
"Support at example.com";
description
"Example of a module using the 'recurrence-basic' grouping.";
revision "2026-02-20" {
description "Initial version.";
reference
"RFC 9922: A YANG Data Model for Scheduling";
}
container recurrence-basic { container recurrence-basic {
description
"A container for a simple recurrence rule.";
uses schedule:recurrence-basic { uses schedule:recurrence-basic {
refine frequency {
mandatory true;
}
refine interval { refine interval {
default 1; default 1;
} }
} }
} }
} }
module example-sch-usage-4 { module example-sch-usage-4 {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-sch-usage-4"; namespace "http://example.com/example-sch-usage-4";
prefix "ex-schu-4"; prefix "ex-schu-4";
import ietf-schedule { import ietf-schedule {
prefix "schedule"; prefix "schedule";
} }
organization
"Example, Inc.";
contact
"Support at example.com";
description
"Example of a module using the 'recurrence-utc' grouping.";
revision "2026-02-20" {
description "Initial version.";
reference
"RFC 9922: A YANG Data Model for Scheduling";
}
container recurrence-utc { container recurrence-utc {
description
"A container for a simple recurrence rule in UTC format.";
uses schedule:recurrence-utc; uses schedule:recurrence-utc;
} }
} }
module example-sch-usage-5 { module example-sch-usage-5 {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-sch-usage-5"; namespace "http://example.com/example-sch-usage-5";
prefix "ex-schu-5"; prefix "ex-schu-5";
import ietf-schedule { import ietf-schedule {
prefix "schedule"; prefix "schedule";
} }
organization
"Example, Inc.";
contact
"Support at example.com";
description
"Example of a module using the 'recurrence-with-time-zone'
grouping.";
revision "2026-02-20" {
description "Initial version.";
reference
"RFC 9922: A YANG Data Model for Scheduling";
}
container recurrence-with-time-zone { container recurrence-with-time-zone {
description
"A container for a simple recurrence rule with a time zone.";
uses schedule:recurrence-with-time-zone; uses schedule:recurrence-with-time-zone;
} }
} }
module example-sch-usage-6 { module example-sch-usage-6 {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-sch-usage-6"; namespace "http://example.com/example-sch-usage-6";
prefix "ex-schu-6"; prefix "ex-schu-6";
import ietf-schedule { import ietf-schedule {
prefix "schedule"; prefix "schedule";
} }
container recurrence-utc-with-date-times { organization
"Example, Inc.";
contact
"Support at example.com";
description
"Example of a module using the 'recurrence-utc-with-periods'
grouping.";
revision "2026-02-20" {
description "Initial version.";
reference
"RFC 9922: A YANG Data Model for Scheduling";
}
container recurrence-utc-with-periods {
description
"A container for an aggregate set of repeating occurrences in
UTC format.";
uses schedule:recurrence-utc-with-periods; uses schedule:recurrence-utc-with-periods;
} }
} }
module example-sch-usage-7 { module example-sch-usage-7 {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-sch-usage-7"; namespace "http://example.com/example-sch-usage-7";
prefix "ex-schu-8"; prefix "ex-schu-8";
import ietf-schedule { import ietf-schedule {
prefix "schedule"; prefix "schedule";
}
container recurrence-time-zone-with-date-times { organization
"Example, Inc.";
contact
"Support at example.com";
description
"Example of a module using the
'recurrence-time-zone-with-periods' grouping.";
revision "2026-02-20" {
description "Initial version.";
reference
"RFC 9922: A YANG Data Model for Scheduling";
}
container recurrence-time-zone-with-periods {
description
"A container for an aggregate set of repeating occurrences
with a time zone.";
uses schedule:recurrence-time-zone-with-periods; uses schedule:recurrence-time-zone-with-periods;
} }
} }
module example-sch-usage-8 { module example-sch-usage-8 {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-sch-usage-8"; namespace "http://example.com/example-sch-usage-8";
prefix "ex-schu-8"; prefix "ex-schu-8";
import ietf-schedule {
prefix "schedule";
}
organization
"Example, Inc.";
contact
"Support at example.com";
description
"Example of a module using 'icalendar-recurrence' grouping.";
revision "2026-02-20" {
description "Initial version.";
reference
"RFC 9922: A YANG Data Model for Scheduling";
}
container icalendar-recurrence { container icalendar-recurrence {
description
"A container for a scheduled 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",
"period": [ "period": [
{ {
"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-01T00:00:00"
}, },
"frequency": "ietf-schedule:monthly", "frequency": "ietf-schedule:monthly",
"until": "2025-12-25", "until": "2025-12-25T23:59:59",
"byday": [ "byday": [
{ {
"weekday": "monday" "weekday": "monday"
}, },
{ {
"weekday": "tuesday" "weekday": "tuesday"
}, },
{ {
"weekday": "wednesday" "weekday": "wednesday"
}, },
skipping to change at line 2628 skipping to change at line 2401
}, },
{ {
"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 2436
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": "2025-12-01T12:20:00Z"
],
"upcoming-occurrence": [
"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 2550
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 2672
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> <start-time-utc>2025-12-01T01:00:00Z</start-time-utc>
</recurrence-first> </recurrence-first>
<frequency>schedule:daily</frequency> <frequency>schedule:daily</frequency>
<utc-until>2025-12-31T23:59:59Z</utc-until> <utc-until>2025-12-31T23:59:59Z</utc-until>
<period-timeticks> <period-timeticks>
<period-start>360000</period-start> <period-start>360000</period-start>
<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 {
prefix "schedule"; prefix "schedule";
} }
organization
"Example, Inc.";
contact
"Support at example.com";
description
"An example to show a scheduled link capacity reservation.";
revision "2026-02-20" {
description
"Initial version.";
reference
"RFC 9922: A YANG Data Model for Scheduling";
}
container link-capability-reservations { container link-capability-reservations {
description
"A container for a scheduled link capability reservations.";
list scheduled-link-capacity { list scheduled-link-capacity {
key "schedule-id"; key "schedule-id";
description
"Definition of scheduled link capacity list.";
leaf schedule-id { leaf schedule-id {
type string; type string;
description
"The schedule identifier for this schedule rule.";
} }
leaf link-id { leaf link-id {
type nt:link-id; type nt:link-id;
description
"The identifier of a link in the topology.";
} }
leaf reserved-capability { leaf reserved-capability {
type uint64; type uint64;
units "Mbps"; units "Mbps";
description
"The reserved capability for a particular link.";
} }
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 2833
<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 cchyf/+TN8z+NuTuWjRRHN5zh9nAfo5v7OnU9VY6/bIcSkNuS28l0kW+y8Za
hms2qMiHx9CR9cajJY+StLPd91Y4Jr5qrbztjcZRDa+2t8zi2MjQK+TDu3CN 2DAiEC6YuF+1V9bSQRFn+UprLX1qzWkxTrjHdD5PJmmMXq3VVVSNdjkU098o
GOfm2N9wr3VzRIASQJHz0rAH+6C7g47p7hj0QjA5/dgCs3K3iGrAAw0JaSD+ J5Cjp/rqZljXtHzI7rRwDWysi0HHK8RhT+poUCmeQrSDVZVP3eVy/fNWyqdA
c8QnTag5kf64+CCeJYXucb2rfu26Oo4KDdAt/bNlJ0rAmzHCQYczauLehz1n /UlGiNoyd2qCtNq5Lrsz5m1zBo9C5q29YLbBusAmvL1FvC6joBNy45F4uPHN
VibOYr/rhAQk6cUlSsIbNoo49hH1RQ6CUNPcGQzp3M6EX8vdoGIy2t/ZfHie wTrIPvRRVBvq6QcHLstMbYFIdaS4gO5IWbDy3ExOPTGGq4gFbbe6OF1ormox
Yoy2UUfQ+TOJ62mFAoa1DrBRMmAeeQGwUtgh7A6KPEpNgAfFDaLUO88ByxZp 1fTqeYIK/VtIYC1f22KqYMemllWOSyWl2Cv/6Nqo6aXNGVSEIR5rGzbaTk0+
sBdY4xE6tTTs82QUSzArh6BEGPRRKuUdNOkJmQx0kkF+SYkvKOVMhiIOEQ5o XIaerDceTXkUpT35vv/DcRqor5Urv/FxVMOr7ZFZJBspeqV8eJe4FuioTccz
ClYKRguPULGxwg9K/ZVlXEQSXlYQ+NIjnp5nOYokNjUEI9CdjYHcQZIBoyfm mA29bs4fUDYosnZP7BoBH/axfgd93t0JaJBgsPoRFWb9bhHLgWclEshBjOmI
ILCN6TWsih0Oahl88PllfEXnxNiBtmsl6BNoIQcOlImK/+LwJwoCvICVYAnM z7FQoSJNc3HYQc8NerCnqh52XSVIhUXoNu7Bthch4c0dIaITIIUCr2HPmZ+J
CFIR7Nd8imvPTB1IonWQcQioejcI8dD7Fcq3lskhIUDnK00RQOcsRqnwP/Cl M9l3YyGS9OISZeUNG1PP84opuydRIGrGO4MhHRM+ar/ygigA6dudJNO4nlUo
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
4MNXcX1BAcG8mVQfVlIbukLPneQY/WRKb6lQOikLH5FYUyZlJwoUm+a0IJLp dU48qrSRqi9GWwP/Ht8PGACz+fgd3slXEYj+/X+5CPn+G7xXB7abdacvg62c
Y2/3IQbHRdEq9p0Cky28RSf5n2noafOabHPP4FtqxIES/w54Zja+TseSafY+ 8b3ut4m+4ScnxWTpyVBotGH9ylD/HIuDfcptWwrYoMvnkioAW5vtJpem0alS
jDm326ZRh0A3jTrJ1eMZaNn1Ijtlfxvz4oftFEUcZ/k8n+YXQBx3tww/y0z6 VUV6TuKDU07kmVvqjgM5ZMIHhjjO4vINHU4/fgcrDQ2+U81jm2e84nlPE1T9
9dmWuECRXqBfpTmp94RLTH39vBUw5SBWJ2ruZK2SrMFMVmNvP+CPTpq6t6O5 kpInfqoBqagXG+gKp8w96vzqsaQA0hCOk0LSDjge9VLyXeAYLCCfkFjHxROL
IRfx/tP5vFzMcL/XvXEO4x6mlSk4U1KaRe/SaX6OXeHlJU4R3EjFZvQFwoXl YMO7y6jVRUahOjLoYtBOV3AdEmM4hE4BpvPehNelJ8uJq2cHDeHkMYXlbEKX
UWvFwbFTd5YwYD5zzGN650oTSmvRx2Q22HWFNdxSciKOlwiXlUZV+LZG8Qzl z/n+JemjVIdDwg6qSCHPhOHkzIEHi29P8jB9vHxaX31+2JrTXTN2DZ83Y9dg
7PoAH4NmsFSd8fK/ckIO6tOoAm0VWL2pfUEoXDBINwhQXZDuwpS3QN1zqM+4 ShUxRBX8p9rgCxOU9dnhbswQv3i0m74Nb62j5GphvLAw1vlBbhf4piT5Fwp/
+YDcxlQqhVwL4zxbA/Ukrty60YZlBKAXLwIFB0hJITfb74LU+ZTZakHOXuof awTA+Yva5+24cpQmtkJkAHVh/hSVP7moM8LR2E7+oiM1xfbibHI62R1mp7ZH
DVivMAzNf8lVeXeptSEcVN5WvvXqKXQi3gOhbF7DRVZs5CfjtjZ2SreFOHyq l+IZ+AiM3a4KdWtNc6fSW1sgcXe5yujhjKfyG3L3lk0QSK23sI4l7eGVUuuF
8VmzIB/AUty4Bq2eXgv/dNvaxk7IclH/ta9w8iHatrlJ4zk2nFgIhGKttNiw ckNGQjXUTbO4glR35dTKOfKfeW7lKG4v9qXzkF9fJpQThnOW2Ll4OF8KDg+0
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
--> -->
</rfc> </rfc>
 End of changes. 261 change blocks. 
1409 lines changed or deleted 1146 lines changed or added

This html diff was produced by rfcdiff 1.48.