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

This html diff was produced by rfcdiff 1.48.