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 95?>
<!-- [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
-->
<!--[rfced] Note that we have updated the short title, which appears in the
running header in the PDF output, as follows. Please let us know of any
objections.
Original:
Common Schedule YANG
Current:
YANG Scheduling
-->
<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 120?>
<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 <!--[rfced] To avoid awkward hyphenation, may we update this sentence to r
Information Base (MIB) ead as
"objects managed by MIB"?
Original:
Section 5 discusses the relationship with the Management Information
Base (MIB) managed objects for scheduling management operations
defined in [RFC3231].
Perhaps:
Section 5 discusses the relationship with the objects managed by
Management Information Base (MIB) for scheduling management operations
defined in [RFC3231].
-->
<t><xref target="sec-mib"/> discusses the relationship with the Management Infor
mation 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>
</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: The schedule will trigger an action that has either the duration specified as 0 or the end time specified as the same as the start time, and then the schedule will disable itself (<xref section="3.3" sectionForm at="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 270
<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 <!--[rfced] Please clarify "to execute independent of when it
schedule ends". Is the meaning that the validity parameter determines when a
schedule can be started and thus "executed independently from when it
ends"?
Original:
It determines the latest time that a schedule can be started to
execute independent of when it ends and takes precedence over
similar attributes that are provided at the schedule instance
itself.
Perhaps:
It determines the latest time that a schedule can be started and
thus executed independently from when it ends, and it takes
precedence over similar attributes that are provided at the
schedule instance itself.
-->
<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 to execute independent of when it ends, and it takes precedenc e 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 conflicting with existing schedules, or being out-of-date (e.g., the expected
start is already passed).</t> start has already passed).</t>
<!--[rfced] May we update this sentence to make the two items
mentioned (i.e., "all schedules on a system" and "too short schedule
requests") more parallel and thus easier to read?
Original:
These parameters apply to all schedules on a system and are meant to
provide guards against stale configuration, too short schedule
requests that would prevent validation by admins of some critical
systems, etc.
Perhaps:
These parameters apply to all schedules on a system and are meant
to provide guards against stale configuration, schedule requests
that are too short and that would thus prevent validation by admins
of some critical systems, etc.
-->
<t>*</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, too short schedule requests
that would prevent validation by admins of some critical systems, etc.</t> that would prevent validation by admins of some critical 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 <!-- [rfced] We note that Section 4.13 of [I-D.ietf-netmod-rfc8407bis]
etf-netmod-rfc8407bis"/>, neither a "default" mentions
"default" but doesn't mention "mandatory"; however, Section 4.14
mentions both "default" and "mandatory". Should the citations below be updated
to point to Section 4.14 instead?
Original (Section 3.3.3):
Note that per Section 4.13 of [I-D.ietf-netmod-rfc8407bis], neither a
"default" nor a "mandatory" substatement is defined here for both
"frequency" and "interval" parameters because there are cases (e.g.,
profiling) where using these statements is problematic.
Original (Section 3.3.8):
Note that per Section 4.13 of [I-D.ietf-netmod-rfc8407bis], neither a
"default" nor a "mandatory" substatement is defined here because there
are cases (e.g., profiling) where using these statements is problematic.
-->
<t>Note that, per <xref section="4.13" sectionFormat="of" target="I-D.ietf-netmo
d-rfc8407bis"/>, neither a "default"
nor a "mandatory" substatement is defined here for both "frequency" and "inter val" nor a "mandatory" substatement is defined here for both "frequency" and "inter val"
parameters because there are cases (e.g., profiling) where using these stateme nts is problematic. parameters because there are cases (e.g., profiling) where using these stateme nts is problematic.
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 <!--[rfced] For conciseness, may we shorten "the value indicated by th
defined e value
by both the recurrence rule and "period-timeticks" list. This list uses of the..." in the sentence below as follows?
Original:
The value of the "period-start" instance MUST
NOT exceed the value indicated by the value of "frequency" instance...
Perhaps:
The value of the "period-start" instance MUST
NOT exceed the value of the "frequency" instance...
-->
<t>The recurrence instances are specified by the union of occurrences defined
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="RFC6991"/>. 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 indicated by the 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 578
+-- 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 629
+-- 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 rmat="of" target="I-D.ietf-netmod-rfc8407bis"/>, neither a "default" and a "byyearweek" is specified. Note that, per <xref section="4.13" sectionF ormat="of" target="I-D.ietf-netmod-rfc8407bis"/>, neither a "default"
nor a "mandatory" substatement is defined here because there are cases (e.g., profiling) nor a "mandatory" substatement is defined here because there are cases (e.g., profiling)
where using these statements is problematic. where using these statements is problematic.
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"> <!--[rfced] In the title of Figure 9, is the asterisk (*) in
"schedule-status-*" correct? We ask as we do not see this elsewhere in
the document.
Current:
Figure 9: 'schedule-status-*' Groupings Tree Structure
Perhaps:
Figure 9: 'schedule-status' Groupings Tree Structure
-->
<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 722
+-- 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 754
<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 892
</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 <!--[rfced] FYI - As RFC 5545 is also cited within the "ietf-schedule"
target="RFC7317"/>.</t> module, we've added it to the list of RFCs preceding the module.
<sourcecode markers="true" name="ietf-schedule@2025-05-30.yang"><![CDATA[
Original:
This module imports types defined in [RFC6991] and [RFC7317].
Current:
This module imports types defined in [RFC5545], [RFC6991], and [RFC7317].
-->
<!--[rfced] FYI - We made the following update to the format in the
"ietf-schedule" YANG module using the formatting option of pyang.
Original:
error-message
"Frequency must be provided.";
Current:
error-message "Frequency must be provided.";
-->
<t>This module imports types defined in <xref target="RFC5545"/>, <xref target="
RFC6991"/>, and <xref target="RFC7317"/>.</t>
<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 6991: 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 1046
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 1070
} }
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 1225
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 1358
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 1434
} }
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 1502
terminate the recurrence."; terminate the recurrence.";
} }
} }
} }
uses recurrence-basic; uses recurrence-basic;
} }
grouping recurrence-utc-with-periods { grouping recurrence-utc-with-periods {
description description
"This grouping defines an aggregate set of repeating "This grouping defines an aggregate set of repeating
occurrences with UTC time format. The recurrence instances occurrences with UTC time format. The recurrence instances
are specified by the occurrences defined by both the are specified by the occurrences defined by both the
recurrence rule and 'period-timeticks' list. Duplicate recurrence rule and 'period-timeticks' list. Duplicate
instances are ignored."; instances are ignored.";
uses recurrence-utc; uses recurrence-utc;
list period-timeticks { list period-timeticks {
key "period-start"; key "period-start";
description description
"A list of periods with timeticks formats."; "A list of periods with timeticks formats.";
leaf period-start { leaf period-start {
type yang:timeticks; type yang:timeticks;
must "(not(derived-from(../../frequency," must "(not(derived-from(../../frequency,"
+ "'schedule:secondly')) or (current() < 100)) and " + "'schedule:secondly')) or (current() < 100)) and "
skipping to change at line 1426 skipping to change at line 1528
+ " or (current() < 360000)) and " + " or (current() < 360000)) and "
+ "(not(derived-from(../../frequency,'schedule:daily'))" + "(not(derived-from(../../frequency,'schedule:daily'))"
+ " or (current() < 8640000)) and " + " or (current() < 8640000)) and "
+ "(not(derived-from(../../frequency,'schedule:weekly'))" + "(not(derived-from(../../frequency,'schedule:weekly'))"
+ " or (current() < 60480000)) and " + " or (current() < 60480000)) and "
+ "(not(derived-from(../../frequency," + "(not(derived-from(../../frequency,"
+ "'schedule:monthly')) or (current() < 267840000)) and " + "'schedule:monthly')) or (current() < 267840000)) and "
+ "(not(derived-from(../../frequency,'schedule:yearly'))" + "(not(derived-from(../../frequency,'schedule:yearly'))"
+ " or (current() < 3162240000))" { + " or (current() < 3162240000))" {
error-message error-message
"The period-start must not exceed the frequency "The 'period-start' must not exceed the frequency
interval."; interval.";
} }
description description
"Start time of the schedule within one recurrence. "Start time of the schedule within one recurrence.
Given that the value is in timeticks format Given that the value is in timeticks format
(i.e., 1/100 of a second), the values in the must (i.e., 1/100 of a second), the values in the must
statement translate to: 100 = 1s (secondly), statement translate to 100 = 1 s (secondly),
6000 = 60 s = 1 min (minutely), and so on for all 6000 = 60 s = 1 min (minutely), and so on for all
instances in the must statement invariant."; instances in the must statement invariant.";
} }
leaf period-end { leaf period-end {
type yang:timeticks; type yang:timeticks;
description description
"End time of the schedule within one recurrence. "End time of the schedule within one recurrence.
The period start MUST be no later than the period The period start MUST be no later than the period
end."; end.";
} }
skipping to change at line 1507 skipping to change at line 1609
when "derived-from(../../frequency, 'schedule:monthly') or " when "derived-from(../../frequency, 'schedule:monthly') or "
+ "(derived-from(../../frequency, 'schedule:yearly') " + "(derived-from(../../frequency, 'schedule:yearly') "
+ " and not(../../byyearweek))"; + " and not(../../byyearweek))";
type int32 { type int32 {
range "-53..-1|1..53"; range "-53..-1|1..53";
} }
description description
"When specified, it indicates the nth occurrence of a "When specified, it indicates the nth occurrence of a
specific day within the monthly or yearly recurrence specific day within the monthly or yearly recurrence
rule. For example, within a monthly rule, +1 monday rule. For example, within a monthly rule, +1 monday
represents the first monday within the month, whereas represents the first Monday within the month, whereas
-1 monday represents the last monday of the month."; -1 monday represents the last Monday of the month.";
} }
leaf weekday { leaf weekday {
type schedule:weekday; type schedule:weekday;
description description
"Corresponds to seven days of the week."; "Corresponds to seven days of the week.";
} }
} }
leaf-list bymonthday { leaf-list bymonthday {
type int32 { type int32 {
range "-31..-1|1..31"; range "-31..-1|1..31";
skipping to change at line 1553 skipping to change at line 1655
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 1705
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 1758
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 1787
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:</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"> <reference anchor="W3C.XML1.0" target="https://www.w3.org/TR/2008/REC-xm
<front> l-20081126/">
<title>Definitions of Managed Objects for Scheduling Management Oper
ations</title>
<author fullname="D. Levi" initials="D." surname="Levi"/>
<author fullname="J. Schoenwaelder" initials="J." surname="Schoenwae
lder"/>
<date month="January" year="2002"/>
<abstract>
<t>This memo defines a portion of the Management Information Base
(MIB) for use with network management protocols in the Internet community. In pa
rticular, it describes a set of managed objects that are used to schedule manage
ment operations periodically or at specified dates and times. [STANDARDS-TRACK]<
/t>
</abstract>
</front>
<seriesInfo name="RFC" value="3231"/>
<seriesInfo name="DOI" value="10.17487/RFC3231"/>
</reference>
<reference anchor="RFC2119">
<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 anchor="sec-informative-references">
<name>Informative References</name>
<reference anchor="I-D.ietf-opsawg-ucl-acl">
<front>
<title>A YANG Data Model and RADIUS Extension for Policy-based Netwo
rk Access Control</title>
<author fullname="Qiufang Ma" initials="Q." surname="Ma">
<organization>Huawei</organization>
</author>
<author fullname="Qin Wu" initials="Q." surname="Wu">
<organization>Huawei</organization>
</author>
<author fullname="Mohamed Boucadair" initials="M." surname="Boucadai
r">
<organization>Orange</organization>
</author>
<author fullname="Daniel King" initials="D." surname="King">
<organization>Lancaster University</organization>
</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.3
231.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2
119.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
174.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7
950.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5
545.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7
317.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6
991.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
341.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3
688.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6
020.xml"/>
</references>
<references anchor="sec-informative-references">
<name>Informative References</name>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
ietf-netmod-eca-policy.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
ietf-netmod-rfc8407bis.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
ietf-ntp-ntpv5.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
ietf-opsawg-scheduling-oam-tests.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
ietf-opsawg-ucl-acl.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
ietf-tvr-schedule-yang.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
liu-netmod-yang-schedule.xml"/>
<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"/>
</references> </references>
</references> </references>
<?line 1637?> <?line 1834?>
<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[ <!--[rfced] In Appendix A, should each example be listed in separate
sourcecode blocks? They are all currently contained within one block of
sourcecode.
-->
<!-- [rfced] FYI, the YANG examples (example-sch-usage-1 - 8.yang and
example-scheduled-backup.yang, example-scheduled-link-bandwidth.yang,
and example-sch-capacity-res.yang) each give errors and warnings from
pyang -ietf. Please confirm this is as expected.
-->
<sourcecode type="yang"><![CDATA[
module example-sch-usage-1 { module example-sch-usage-1 {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-sch-usage-1"; namespace "http://example.com/example-sch-usage-1";
prefix "ex-schu-1"; prefix "ex-schu-1";
import ietf-schedule { import ietf-schedule {
prefix "schedule"; prefix "schedule";
} }
container generic-schedule-params { container generic-schedule-params {
skipping to change at line 2359 skipping to change at line 2114
prefix "ex-schu-8"; prefix "ex-schu-8";
container icalendar-recurrence { container icalendar-recurrence {
uses schedule:icalendar-recurrence { uses schedule:icalendar-recurrence {
refine workweek-start { refine workweek-start {
default monday; default monday;
} }
} }
} }
} }
]]></artwork> ]]></sourcecode>
<t>For each example, only the message body is provided with <t>For each example, only the message body is provided with
JSON used for encoding per the guidance in <xref target="RFC7951"/>.</t> JSON, which is used for encoding per the guidance in <xref target="RFC7951"/> .</t>
<section anchor="the-generic-schedule-params-grouping"> <section anchor="the-generic-schedule-params-grouping">
<name>The "generic-schedule-params" Grouping</name> <name>The "generic-schedule-params" Grouping</name>
<t><xref target="ex-0"/> illustrates the example of a requested schedule that needs to start no earlier than <t><xref target="ex-0"/> illustrates the example of a requested schedule that needs to start no earlier than
08:00 AM, January 1, 2025 and end no later than 8:00 PM, January 31, 2025 (Beiji ng time). 08:00 AM, January 1, 2025 and end no later than 8:00 PM, January 31, 2025 (Beiji ng time).
Schedule requests that fail to meet the requirements are ignored by the system a s indicated by Schedule requests that fail to meet the requirements are ignored by the system, as indicated by
"discard-action".</t> "discard-action".</t>
<figure anchor="ex-0"> <figure anchor="ex-0">
<name>Generic Parameters with 'max-allowed-end' for Schedule Validatio n</name> <name>Generic Parameters with 'max-allowed-end' for Schedule Validatio n</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-1:generic-schedule-params": { "example-sch-usage-1:generic-schedule-params": {
"time-zone-identifier": "China/Beijing", "time-zone-identifier": "China/Beijing",
"min-allowed-start": "2025-01-01T08:00:00", "min-allowed-start": "2025-01-01T08:00:00",
"max-allowed-end": "2025-01-31T20:00:00", "max-allowed-end": "2025-01-31T20:00:00",
"discard-action": "ietf-schedule:silently-discard" "discard-action": "ietf-schedule:silently-discard"
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>To illustrate the difference between "max-allowed-end" and "validity" parameters, <t>To illustrate the difference between "max-allowed-end" and "validity" parameters,
<xref target="ex-00"/> shows the example of a requested schedule that needs to s tart no earlier than <xref target="ex-00"/> shows the example of a requested schedule that needs to s tart no earlier than
08:00 AM, January 1, 2025 (Beijing time). Schedule requests that fail to meet th e 08:00 AM, January 1, 2025 (Beijing time). Schedule requests that fail to meet th e
requirements are ignored by the system as indicated by "discard-action". The requirements are ignored by the system, as indicated by "discard-action". The
requested schedule may end after 8:00 PM, January 31, 2025, but any occurrences that are generated requested schedule may end after 8:00 PM, January 31, 2025, but any occurrences that are generated
after that time would not be considered as valid.</t> after that time would not be considered as valid.</t>
<figure anchor="ex-00"> <figure anchor="ex-00">
<name>Generic Parameters with 'validity' for Schedule Validation</name > <name>Generic Parameters with 'validity' for Schedule Validation</name >
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-1:generic-schedule-params": { "example-sch-usage-1:generic-schedule-params": {
"time-zone-identifier": "China/Beijing", "time-zone-identifier": "China/Beijing",
"validity": "2025-01-31T20:00:00", "validity": "2025-01-31T20:00:00",
"min-allowed-start": "2025-01-01T08:00:00", "min-allowed-start": "2025-01-01T08:00:00",
"discard-action": "ietf-schedule:silently-discard" "discard-action": "ietf-schedule:silently-discard"
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-period-of-time-grouping"> <section anchor="the-period-of-time-grouping">
<name>The "period-of-time" Grouping</name> <name>The "period-of-time" Grouping</name>
<t><xref target="ex-1"/> shows an example of a period that starts at 08: 00:00 UTC, on January 1, 2025 and ends at 18:00:00 UTC <t><xref target="ex-1"/> shows an example of a period that starts at 08: 00:00 UTC on January 1, 2025 and ends at 18:00:00 UTC
on December 31, 2027.</t> on December 31, 2027.</t>
<figure anchor="ex-1"> <figure anchor="ex-1">
<name>Simple Start/End Schedule</name> <name>Simple Start/End Schedule</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-2:period-of-time": { "example-sch-usage-2:period-of-time": {
"period-start": "2025-01-01T08:00:00Z", "period-start": "2025-01-01T08:00:00Z",
"period-end": "2027-12-31T18:00:00Z" "period-end": "2027-12-31T18:00:00Z"
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>An example of a period that starts at 08:00:00 UTC, on January 1, 202 5 and lasts 15 days and <t>An example of a period that starts at 08:00:00 UTC on January 1, 2025 and lasts 15 days and
5 hours and 20 minutes is encoded as shown in <xref target="ex-2"/>.</t> 5 hours and 20 minutes is encoded as shown in <xref target="ex-2"/>.</t>
<figure anchor="ex-2"> <figure anchor="ex-2">
<name>Simple Schedule with Duration</name> <name>Simple Schedule with Duration</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-2:period-of-time": { "example-sch-usage-2:period-of-time": {
"period-start": "2025-01-01T08:00:00Z", "period-start": "2025-01-01T08:00:00Z",
"duration": "P15DT05:20:00" "duration": "P15DT05:20:00"
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>An example of a period that starts at 2:00 A.M. in Los Angeles on Nov ember 19, <t>An example of a period that starts at 2:00 AM in Los Angeles on Novem ber 19,
2025 and lasts 20 weeks is depicted in <xref target="ex-3"/>.</t> 2025 and lasts 20 weeks is depicted in <xref target="ex-3"/>.</t>
<figure anchor="ex-3"> <figure anchor="ex-3">
<name>Simple Schedule with Time Zone Indication</name> <name>Simple Schedule with Time Zone Indication</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-2:period-of-time": { "example-sch-usage-2:period-of-time": {
"period-start": "2025-11-19T02:00:00", "period-start": "2025-11-19T02:00:00",
"time-zone-identifier": "America/Los_Angeles", "time-zone-identifier": "America/Los_Angeles",
"duration": "P20W" "duration": "P20W"
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-recurrence-basic-grouping"> <section anchor="the-recurrence-basic-grouping">
<name>The "recurrence-basic" Grouping</name> <name>The "recurrence-basic" Grouping</name>
<t><xref target="ex-6"/> indicates a recurrence of every 2 days which st arts immediately and repeats forever:</t> <t><xref target="ex-4"/> indicates a recurrence of every 2 days, which s tarts immediately and repeats forever:</t>
<figure anchor="ex-4"> <figure anchor="ex-4">
<name>Simple Schedule with Recurrence</name> <name>Simple Schedule with Recurrence</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-3:recurrence-basic": { "example-sch-usage-3:recurrence-basic": {
"recurrence-description": "forever recurrence rule", "recurrence-description": "forever recurrence rule",
"frequency": "ietf-schedule:daily", "frequency": "ietf-schedule:daily",
"interval": 2 "interval": 2
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-recurrence-utc-grouping"> <section anchor="the-recurrence-utc-grouping">
<name>The "recurrence-utc" Grouping</name> <name>The "recurrence-utc" Grouping</name>
<t><xref target="ex-5"/> indicates a recurrence from 8:00 AM to 9:00 AM every day, from <t><xref target="ex-5"/> indicates a recurrence from 8:00 AM to 9:00 AM every day, from
December 1 to December 31, 2025 in UTC:</t> December 1 to December 31, 2025 in UTC:</t>
<figure anchor="ex-5"> <figure anchor="ex-5">
<name>Simple Schedule with Recurrence in UTC</name> <name>Simple Schedule with Recurrence in UTC</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-4:recurrence-utc": { "example-sch-usage-4:recurrence-utc": {
"recurrence-first": { "recurrence-first": {
"start-time-utc": "2025-12-01T08:00:00Z", "start-time-utc": "2025-12-01T08:00:00Z",
"duration": 3600 "duration": 3600
}, },
"frequency": "ietf-schedule:daily", "frequency": "ietf-schedule:daily",
"interval": 1, "interval": 1,
"utc-until": "2025-12-31T23:59:59Z" "utc-until": "2025-12-31T23:59:59Z"
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-recurrence-with-time-zone-grouping"> <section anchor="the-recurrence-with-time-zone-grouping">
<name>The "recurrence-with-time-zone" Grouping</name> <name>The "recurrence-with-time-zone" Grouping</name>
<t><xref target="ex-6"/> indicates a recurrence of every 2 hours for 10 <t><xref target="ex-6"/> indicates a recurrence of every 2 hours for 10
occurrences, lasting occurrences that
10 minutes, and starting at 3 p.m. on December 1, 2025 in New York:</t> lasts 10 minutes and starts at 3 PM on December 1, 2025 in New York:</t>
<figure anchor="ex-6"> <figure anchor="ex-6">
<name>Simple Schedule with Recurrence with Time Zone Indication</name> <name>Simple Schedule with Recurrence with Time Zone Indication</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-5:recurrence-with-time-zone": { "example-sch-usage-5:recurrence-with-time-zone": {
"recurrence-first": { "recurrence-first": {
"start-time": "2025-12-01T15:00:00", "start-time": "2025-12-01T15:00:00",
"duration": "PT00:10:00", "duration": "PT00:10:00",
"time-zone-identifier": "America/New_York" "time-zone-identifier": "America/New_York"
}, },
"frequency": "ietf-schedule:hourly", "frequency": "ietf-schedule:hourly",
"interval": 2, "interval": 2,
"count": 10 "count": 10
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-recurrence-utc-with-periods-grouping"> <section anchor="the-recurrence-utc-with-periods-grouping">
<name>The "recurrence-utc-with-periods" Grouping</name> <name>The "recurrence-utc-with-periods" Grouping</name>
<t><xref target="ex-7"/> indicates a recurrence that occurs every two da ys starting at 9:00 AM <t><xref target="ex-7"/> indicates a recurrence that occurs every two da ys starting at 9:00 AM
and 3:00 PM for a duration of 30 minutes and 40 minutes respectively, and 3:00 PM for a duration of 30 minutes and 40 minutes, respectively,
from 2025-06-01 to 2025-06-30 in UTC:</t> from 2025-06-01 to 2025-06-30 in UTC:</t>
<figure anchor="ex-7"> <!--[rfced] We note that dates are formatted in different ways in
Appendix A. For example, "January 31, 2025" and "2025-06-01" are used
in Appendices A.1 and A.6, respectively. If these instances should be
consistent, please let us know which form you prefer.
Original:
Figure 10 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 (Beijing time).
...
Figure 18 indicates a recurrence that occurs every two days starting
at 9:00 AM and 3:00 PM for a duration of 30 minutes and 40 minutes
respectively, from 2025-06-01 to 2025-06-30 in UTC:
-->
<figure anchor="ex-7">
<name>Example of Recurrence With Date Times</name> <name>Example of Recurrence With Date Times</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-6:recurrence-utc-with-periods": { "example-sch-usage-6:recurrence-utc-with-periods": {
"recurrence-first": { "recurrence-first": {
"start-time-utc": "2025-06-01T09:00:00Z" "start-time-utc": "2025-06-01T09:00:00Z"
}, },
"frequency": "ietf-schedule:daily", "frequency": "ietf-schedule:daily",
"interval": 2, "interval": 2,
"utc-until": "2025-06-30T23:59:59Z", "utc-until": "2025-06-30T23:59:59Z",
"period-timeticks": [ "period-timeticks": [
{ {
"period-start": "3240000", "period-start": "3240000",
"period-end": "3420000" "period-end": "3420000"
}, },
{ {
"period-start": "5400000", "period-start": "5400000",
"period-end": "5640000" "period-end": "5640000"
} }
] ]
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-recurrence-time-zone-with-periods-grouping"> <section anchor="the-recurrence-time-zone-with-periods-grouping">
<name>The "recurrence-time-zone-with-periods" Grouping</name> <name>The "recurrence-time-zone-with-periods" Grouping</name>
<t><xref target="ex-8"/> indicates a recurrence that occurs every <t><xref target="ex-8"/> indicates a recurrence that occurs every
30 minutes and lasts for 15 minutes from 9:00 AM to 5:00 PM and an extra two occurrences 30 minutes and lasts for 15 minutes from 9:00 AM to 5:00 PM and two extra occ urrences
at 6:00 PM and 6:30 PM with each lasting for 20 minutes on 2025-12-01 (New Yo rk):</t> at 6:00 PM and 6:30 PM with each lasting for 20 minutes on 2025-12-01 (New Yo rk):</t>
<figure anchor="ex-8"> <figure anchor="ex-8">
<name>Example of Advanced Recurrence Schedule</name> <name>Example of Advanced Recurrence Schedule</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-7:recurrence-time-zone-with-periods": { "example-sch-usage-7:recurrence-time-zone-with-periods": {
"recurrence-first": { "recurrence-first": {
"start-time": "2025-12-01T09:00:00", "start-time": "2025-12-01T09:00:00",
"duration": "PT00:15:00", "duration": "PT00:15:00",
"time-zone-identifier": "America/New_York" "time-zone-identifier": "America/New_York"
}, },
"frequency": "ietf-schedule:minutely", "frequency": "ietf-schedule:minutely",
"interval": 30, "interval": 30,
"until": "2025-12-01T17:00:00Z", "until": "2025-12-01T17:00:00Z",
skipping to change at line 2564 skipping to change at line 2334
"period-start": "2025-12-01T18:00:00", "period-start": "2025-12-01T18:00:00",
"duration": "PT00:20:00" "duration": "PT00:20:00"
}, },
{ {
"period-start": "2025-12-01T18:30:00", "period-start": "2025-12-01T18:30:00",
"duration": "PT00:20:00" "duration": "PT00:20:00"
} }
] ]
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-icalendar-recurrence-grouping"> <section anchor="the-icalendar-recurrence-grouping">
<name>The "icalendar-recurrence" Grouping</name> <name>The "icalendar-recurrence" Grouping</name>
<t><xref target="ex-9"/> indicates 10 occurrences that occur at <t><xref target="ex-9"/> indicates 10 occurrences at
8:00 AM (EST), every last Saturday of the month starting in January 2024:</t> 8:00 AM (EST) every last Saturday of the month starting in January 2024:</t>
<figure anchor="ex-9"> <figure anchor="ex-9">
<name>Simple iCalendar Recurrence</name> <name>Simple iCalendar Recurrence</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-8:icalendar-recurrence": { "example-sch-usage-8:icalendar-recurrence": {
"recurrence-first": { "recurrence-first": {
"start-time": "2024-01-27T08:00:00", "start-time": "2024-01-27T08:00:00",
"time-zone-identifier": "America/New_York" "time-zone-identifier": "America/New_York"
}, },
"frequency": "ietf-schedule:monthly", "frequency": "ietf-schedule:monthly",
"count": 10, "count": 10,
"byday": [ "byday": [
{ {
"direction": [ "direction": [
-1 -1
], ],
"weekday": "saturday" "weekday": "saturday"
} }
] ]
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t><xref target="ex-10"/> is an example of a recurrence that occurs on t he last <t><xref target="ex-10"/> is an example of a recurrence that occurs on t he last
workday of the month until December 25, 2025, from January 1, 2025:</t> workday of the month until December 25, 2025, starting January 1, 2025:</t>
<figure anchor="ex-10"> <figure anchor="ex-10">
<name>Example of Advanced iCalendar Recurrence</name> <name>Example of Advanced iCalendar Recurrence</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-8:icalendar-recurrence": { "example-sch-usage-8:icalendar-recurrence": {
"recurrence-first": { "recurrence-first": {
"start-time": "2025-01-01" "start-time": "2025-01-01"
}, },
"frequency": "ietf-schedule:monthly", "frequency": "ietf-schedule:monthly",
"until": "2025-12-25", "until": "2025-12-25",
"byday": [ "byday": [
{ {
"weekday": "monday" "weekday": "monday"
skipping to change at line 2628 skipping to change at line 2398
}, },
{ {
"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 2433
13, 13,
14, 14,
15, 15,
16 16
], ],
"exception-dates": [ "exception-dates": [
"2025-12-01T10:20:00Z" "2025-12-01T10:20:00Z"
] ]
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="the-schedule-status-grouping"> <section anchor="the-schedule-status-grouping">
<name>The "schedule-status" Grouping</name> <name>The "schedule-status" Grouping</name>
<t><xref target="ex-12"/> indicates the scheduled recurrence status of < xref target="ex-11"/> at the time <t><xref target="ex-12"/> indicates the scheduled recurrence status of < xref target="ex-11"/> at the time
of 12:15 PM, 2025-12-01 (UTC):</t> of 12:15 PM on 2025-12-01 (UTC):</t>
<figure anchor="ex-12"> <figure anchor="ex-12">
<name>Example of a Schedule Status</name> <name>Example of a Schedule Status</name>
<artwork><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"example-sch-usage-1:schedule-status": { "example-sch-usage-1:schedule-status": {
"state": "ietf-schedule:enabled", "state": "ietf-schedule:enabled",
"version": 1, "version": 1,
"schedule-type": "ietf-schedule:recurrence", "schedule-type": "ietf-schedule:recurrence",
"counter": 9, "counter": 9,
"last-occurrence": [ "last-occurrence": [
"2025-12-01T12:00:00Z" "2025-12-01T12:00:00Z"
], ],
"upcoming-occurrence": [ "upcoming-occurrence": [
"2025-12-01T12:20:00Z" "2025-12-01T12:20:00Z"
] ]
} }
} }
]]></artwork> ]]></sourcecode>
</figure> </figure>
<t>At the time of 12:15 PM, 2025-12-01 (UTC), the recurring event occurr <t>At the time of 12:15 PM on 2025-12-01 (UTC), the recurring event occu
ed at rred at
(note that occurrence at 10:20 AM is excluded): (note that the occurrence at 10:20 AM is excluded):
9:00, 9:20, 9:40, 10:00, 10:40, 11:00, 11:20, 11:40, 12:00. 9:00, 9:20, 9:40, 10:00, 10:40, 11:00, 11:20, 11:40, and 12:00.
The last occurrence was at 12:00, the upcoming one is at 12:20.</t> The last occurrence was at 12:00, and the upcoming one is at 12:20.</t>
</section> </section>
</section> </section>
<section anchor="sec-ext"> <section anchor="sec-ext">
<name>Examples of Using/Extending the "ietf-schedule" Module</name> <name>Examples of Using/Extending the "ietf-schedule" Module</name>
<t>This non-normative section shows two examples for how the "ietf-schedul e" module <t>This non-normative section shows two examples for how the "ietf-schedul e" module
can be used or extended for scheduled events or attributes based on date and time.</t> can be used or extended for scheduled events or attributes based on date and time.</t>
<section anchor="features"> <section anchor="features">
<name>Example: Schedule Tasks to Execute Based on a Recurrence Rule</nam e> <name>Example: Schedule Tasks to Execute Based on a Recurrence Rule</nam e>
<t>Scheduled tasks can be used to execute specific actions based on cert ain recurrence rules (e.g., <t>Scheduled tasks can be used to execute specific actions based on cert ain recurrence rules (e.g.,
every Friday at 8:00 AM). The following example module which "uses" the "ical every Friday at 8:00 AM). The following example module, which "uses" the "ica
endar-recurrence" lendar-recurrence"
grouping from "ietf-schedule" module shows how a scheduled task could be defi grouping from the "ietf-schedule" module, shows how a scheduled task could be
ned defined
with different features used for options.</t> with different features used for options.</t>
<artwork><![CDATA[ <sourcecode type="yang"><![CDATA[
module example-scheduled-backup { module example-scheduled-backup {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-scheduled-backup"; namespace "http://example.com/example-scheduled-backup";
prefix "ex-scback"; prefix "ex-scback";
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
} }
import ietf-schedule { import ietf-schedule {
prefix "schedule"; prefix "schedule";
} }
organization organization
"Example, Inc."; "Example, Inc.";
contact contact
"Support at example.com"; "Support at example.com";
description description
"Example of a module defining a scheduled based backup "Example of a module defining a scheduled-based backup
operation."; operation.";
revision "2023-01-19" { revision "2023-01-19" {
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 2551
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 "
grouping from the "ietf-schedule" module, shows how a scheduled attribute
could be defined.</t> could be defined.</t>
<artwork><![CDATA[ <!--[rfced] The example module in Appendix B references RFC 8345 but
no corresponding reference entry exists. May we add RFC 8345 under the
Informative References section and update the running text as follows?
Original:
The following example module which augments the
"recurrence-utc-with-periods" grouping from "ietf-schedule" module
shows how a scheduled attribute could be defined.
Perhaps:
The following example module, which augments the
"recurrence-utc-with-periods" grouping from "ietf-schedule" module,
shows how a scheduled attribute could be defined. Note that
[RFC8345] and this document are referenced in the module.
-->
<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 "2023-01-19" {
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 2688
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"> <!--[rfced] FYI, a normative reference to the XML specification has
been added because this document contains XML.
See the IESG statement on "Guidelines for the Use of Formal
Languages in IETF Specifications"
(https://ietf.org/blog/guidelines-use-formal-languages-ietf-specifications/) -
specifically "The use of a language requires a reference to the
specification for that language. This reference is normative, and
needs to fulfil the usual requirements for normative references
(Section 7 of RFC 2026)." Please review where the XML specification
is cited and let us know if you prefer otherwise.
Original:
Figure 24 shows a configuration example 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 schedule.
Current:
Figure 24 shows a configuration example in XML [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 schedule.
Normative Reference Entry:
[W3C.XML1.0]
Bray, T., Ed., Paoli, J., Ed., Sperberg-McQueen, C.M., Ed., Maler,
E., Ed., and F. Yergeau, Ed., "Extensible Markup Language (XML)
1.0 (Fifth Edition)", W3C Recommendation, 26 November 2008,
<https://www.w3.org/TR/2008/REC-xml-20081126/>.
-->
<figure anchor="ex-13">
<name>Example of Scheduled Link's Bandwidth</name> <name>Example of Scheduled Link's Bandwidth</name>
<artwork><![CDATA[ <sourcecode type="xml"><![CDATA[
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<link-attributes <link-attributes
xmlns="http://example.com/example-scheduled-link-bandwidth" xmlns="http://example.com/example-scheduled-link-bandwidth"
xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule">
<link> <link>
<source-node>ne1</source-node> <source-node>ne1</source-node>
<destination-node>ne2</destination-node> <destination-node>ne2</destination-node>
<default-bandwidth>1000</default-bandwidth> <default-bandwidth>1000</default-bandwidth>
<recurrence-first> <recurrence-first>
<utc-start-time>2025-12-01T01:00:00Z</utc-start-time> <utc-start-time>2025-12-01T01:00:00Z</utc-start-time>
skipping to change at line 2958 skipping to change at line 2775
<period-end>2160000</period-end> <period-end>2160000</period-end>
<scheduled-bandwidth>500</scheduled-bandwidth> <scheduled-bandwidth>500</scheduled-bandwidth>
</period-timeticks> </period-timeticks>
<period-timeticks> <period-timeticks>
<period-start>7920000</period-start> <period-start>7920000</period-start>
<period-end>8280000</period-end> <period-end>8280000</period-end>
<scheduled-bandwidth>800</scheduled-bandwidth> <scheduled-bandwidth>800</scheduled-bandwidth>
</period-timeticks> </period-timeticks>
</link> </link>
</link-attributes> </link-attributes>
]]></artwork> ]]></sourcecode>
</figure> </figure>
</section> </section>
</section> </section>
<section anchor="ex-framework"> <section anchor="ex-framework">
<name>Examples of Using "ietf-schedule" Module for Scheduled Use of Resour ces Framework</name> <name>Examples of Using the "ietf-schedule" Module for Scheduled Use of Re sources Framework</name>
<t>This section exemplifies how the architecture for supporting scheduled <t>This section exemplifies how the architecture for supporting scheduled
reservation of Traffic Engineering (TE) resources in <xref target="RFC8413"/> might leverage the "period-of-time" reservation of Traffic Engineering (TE) resources in <xref target="RFC8413"/> might leverage the "period-of-time"
grouping defined in the "ietf-schedule" module to implement scheduled use of grouping defined in the "ietf-schedule" module to implement scheduled use of
resources.</t> resources.</t>
<t>The following example module shows how a scheduled link capacity reserv ation <t>The following example module shows how a scheduled link capacity reserv ation
could be defined.</t> could be defined.</t>
<artwork><![CDATA[ <sourcecode type="yang"><![CDATA[
module example-sch-capacity-res { module example-sch-capacity-res {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-sch-capacity-res"; namespace "http://example.com/example-sch-capacity-res";
prefix "ex-schecaparev"; prefix "ex-schecaparev";
import ietf-network-topology { import ietf-network-topology {
prefix "nt"; prefix "nt";
} }
import ietf-schedule { import ietf-schedule {
skipping to change at line 3001 skipping to change at line 2818
type nt:link-id; type nt:link-id;
} }
leaf reserved-capability { leaf reserved-capability {
type uint64; type uint64;
units "Mbps"; units "Mbps";
} }
uses schedule:period-of-time; uses schedule:period-of-time;
} }
} }
} }
]]></artwork> ]]></sourcecode>
<t><xref section="4" sectionFormat="of" target="RFC8413"/> defines the ref erence architecture for scheduled use <t><xref section="4" sectionFormat="of" target="RFC8413"/> defines the ref erence architecture for scheduled use
of resources, the service requester sends a request to a Path Computation Ele of resources. The service requester sends a request to a Path Computation Ele
ment (PCE) and includes the ment (PCE) and includes the
parameters of the Label Switched Path (LSP) that the requester wishes to supp parameters of the Label Switched Path (LSP) that the requester wishes to supp
ly, the configuration ly. The configuration
example to provide the scheduled resource is shown in <xref target="ex-14"/>. </t> example to provide the scheduled resource is shown in <xref target="ex-14"/>. </t>
<figure anchor="ex-14"> <figure anchor="ex-14">
<name>Example of Scheduled Link's Bandwidth Reservation</name> <name>Example of Scheduled Link's Bandwidth Reservation</name>
<artwork><![CDATA[ <sourcecode type="xml"><![CDATA[
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<link-capability-reservations <link-capability-reservations
xmlns="http://example.com/example-sch-capacity-res" xmlns="http://example.com/example-sch-capacity-res"
xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule">
<scheduled-link-capacity> <scheduled-link-capacity>
<schedule-id>1</schedule-id> <schedule-id>1</schedule-id>
<link-id>1-2-1</link-id> <link-id>1-2-1</link-id>
<reserved-capability>500</reserved-capability> <reserved-capability>500</reserved-capability>
<period-start>2025-03-10T08:00:00Z</period-start> <period-start>2025-03-10T08:00:00Z</period-start>
<period-end>2025-03-10T09:00:00Z</period-end> <period-end>2025-03-10T09:00:00Z</period-end>
skipping to change at line 3035 skipping to change at line 2852
<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>
</section> <t>Thanks to <contact fullname="Éric Vyncke"/>, <contact fullname="Erik Kl
ine"/>, and <contact fullname="Mike Bishop"/> for the IESG review.</t>
<!-- [rfced] Please review the language set for each instance of sourcecod
e
in the MD file to ensure correctness. If the current list of preferred
values for languages
(https://www.rfc-editor.org/rpc/wiki/doku.php?id=sourcecode-types)
does not contain an applicable language, then feel free to let us know.
Also, it is acceptable to leave the language not set.
-->
<!-- [rfced] RFC 6991 has been obsoleted by RFC 9911. May we replace RFC
6991 with RFC 9911? If yes, this will include updating the references in the
YANG module.
-->
<!-- [rfced] Please review the "Inclusive Language" portion of the online
Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language>
and let us know if any changes are needed. Updates of this nature typically
result in more precise language, which is helpful for readers.
Note that our script did not flag any words in particular, but this should
still be reviewed as a best practice.
-->
</section>
</back> </back>
<!-- ##markdown-source: <!-- ##markdown-source:
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
aVqbWio1HXCeXEJXFFJTS2tbKhXsg9SiyfF/pBTA5h/nMq2LJmoxAhWliWe9 oEM8qptXtj4Vmqw1V1dgaZ6qVH2TSVBVlVvpvtqqeJMV7J3LXxRKXOmQpF3x
hms2qMiHx9CR9cajJY+StLPd91Y4Jr5qrbztjcZRDa+2t8zi2MjQK+TDu3CN hnHdlDpS9a7hcBIlJNfDHi5AAi4kJV5XEd4rK/u2kndpBGWGIOdHvEuJP0jL
GOfm2N9wr3VzRIASQJHz0rAH+6C7g47p7hj0QjA5/dgCs3K3iGrAAw0JaSD+ lxaZSQEYxqTCVyXqqkS3UtHnq/s5rxmTNVoJoym6reChWYAIteUd0hfLPV7I
c8QnTag5kf64+CCeJYXucb2rfu26Oo4KDdAt/bNlJ0rAmzHCQYczauLehz1n 1YeMnHcZsIJ4VrRmfHlOVmiyIbXxjtg4FiFupSLQZrWuzDLpNKmXSOlK7S2+
VibOYr/rhAQk6cUlSsIbNoo49hH1RQ6CUNPcGQzp3M6EX8vdoGIy2t/ZfHie W8KVnk7jqTmmYQ0SNmYg+L5nzRXZiK39jgLOgmzkTcBQ17YTIx86xP/UwkTX
Yoy2UUfQ+TOJ62mFAoa1DrBRMmAeeQGwUtgh7A6KPEpNgAfFDaLUO88ByxZp ETI+xN40djUfwG99GtCDmon0F82q6RiZMCpxWgECKFA9GgMDIhWvyGBbgvhb
sBdY4xE6tTTs82QUSzArh6BEGPRRKuUdNOkJmQx0kkF+SYkvKOVMhiIOEQ5o ou7cYn0EcatuWOyT+Ytn2mIL1X1mWlNpmYFEyvVA4YEXS0+b1m3Z3CXncKbv
ClYKRguPULGxwg9K/ZVlXEQSXlYQ+NIjnp5nOYokNjUEI9CdjYHcQZIBoyfm zR0O669bf69511e4joEHrLC/vNoQ4ducPPuDtD0Z/uh/byvy81Lp8eaeCRUt
ILCN6TWsih0Oahl88PllfEXnxNiBtmsl6BNoIQcOlImK/+LwJwoCvICVYAnM OgKk8VrfWynbd+j0E5tqHD5Vt7SNveEzZOVkV44aztNwj2xwTuNr8tvnD7X9
CFIR7Nd8imvPTB1IonWQcQioejcI8dD7Fcq3lskhIUDnK00RQOcsRqnwP/Cl fbOtfm1vGe9ffdKyUtKxbi3kgSQnqtSqNPPPI7orsL8NXQYsmygO710W2MB+
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
AQA=
--> -->
</rfc> </rfc>
 End of changes. 220 change blocks. 
1369 lines changed or deleted 1193 lines changed or added

This html diff was produced by rfcdiff 1.48.