| 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 " "> | <!ENTITY nbsp " "> | |||
| <!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
| <!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
| <!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
| ]> | ]> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
| <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4. | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
| 4) --> | -ietf-netmod-schedule-yang-rfceditor-latest-10" category="std" consensus="true" | |||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | submissionType="IETF" xml:lang="en" number="9922" tocInclude="true" sortRefs="tr | |||
| -ietf-netmod-schedule-yang-10" category="std" consensus="true" submissionType="I | ue" symRefs="true" version="3"> | |||
| ETF" tocInclude="true" sortRefs="true" symRefs="true" version="3"> | ||||
| <!-- xml2rfc v2v3 conversion 3.30.0 --> | ||||
| <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 57 ¶ | |||
| </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="March"/> | |||
| <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?> | |||
| <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 --> the assigned RFC number for this draft</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>2025-05-30 --> 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 | <t> | |||
| >REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECO | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
| MMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ", | |||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be i | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
| nterpreted as | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
| only when, they | be | |||
| appear in all capitals, as shown here.</t> | interpreted as described in BCP 14 <xref target="RFC2119"/> <xref | |||
| target="RFC8174"/> when, and only when, they appear in all capitals, as | ||||
| shown here. | ||||
| </t> | ||||
| <?line -18?> | <?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 243 ¶ | |||
| <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 487 ¶ | |||
| +-- 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 538 ¶ | |||
| +-- 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 620 ¶ | |||
| +-- 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 652 ¶ | |||
| <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 790 ¶ | |||
| </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 923 ¶ | |||
| 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 947 ¶ | |||
| } | } | |||
| 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 1102 ¶ | |||
| 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 1235 ¶ | |||
| 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 1311 ¶ | |||
| } | } | |||
| 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 1379 ¶ | |||
| terminate the recurrence."; | terminate the recurrence."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| uses recurrence-basic; | uses recurrence-basic; | |||
| } | } | |||
| grouping recurrence-utc-with-periods { | grouping recurrence-utc-with-periods { | |||
| description | description | |||
| "This grouping defines an aggregate set of repeating | "This grouping defines an aggregate set of repeating | |||
| occurrences with UTC time format. The recurrence instances | occurrences with UTC time format. The recurrence instances | |||
| are specified by the occurrences defined by both the | are specified by the occurrences defined by both the | |||
| recurrence rule and 'period-timeticks' list. Duplicate | recurrence rule and 'period-timeticks' list. Duplicate | |||
| instances are ignored."; | instances are ignored."; | |||
| uses recurrence-utc; | uses recurrence-utc; | |||
| list period-timeticks { | list period-timeticks { | |||
| key "period-start"; | key "period-start"; | |||
| description | description | |||
| "A list of periods with timeticks formats."; | "A list of periods with timeticks formats."; | |||
| leaf period-start { | leaf period-start { | |||
| type yang:timeticks; | type yang:timeticks; | |||
| must "(not(derived-from(../../frequency," | must "(not(derived-from-or-self(../../frequency," | |||
| + "'schedule:secondly')) or (current() < 100)) and " | + "'schedule:secondly')) or (current() < 100)) and " | |||
| + "(not(derived-from(../../frequency," | + "(not(derived-from-or-self(../../frequency," | |||
| + "'schedule:minutely')) or (current() < 6000)) and " | + "'schedule:minutely')) or (current() < 6000)) and " | |||
| + "(not(derived-from(../../frequency,'schedule:hourly'))" | + "(not(derived-from-or-self(../../frequency," | |||
| + " or (current() < 360000)) and " | + "'schedule:hourly')) or (current() < 360000)) and " | |||
| + "(not(derived-from(../../frequency,'schedule:daily'))" | + "(not(derived-from-or-self(../../frequency," | |||
| + " or (current() < 8640000)) and " | + "'schedule:daily')) or (current() < 8640000)) and " | |||
| + "(not(derived-from(../../frequency,'schedule:weekly'))" | + "(not(derived-from-or-self(../../frequency," | |||
| + " or (current() < 60480000)) and " | + "'schedule:weekly')) or (current() < 60480000)) and " | |||
| + "(not(derived-from(../../frequency," | + "(not(derived-from-or-self(../../frequency," | |||
| + "'schedule:monthly')) or (current() < 267840000)) and " | + "'schedule:monthly')) or (current() < 267840000)) and " | |||
| + "(not(derived-from(../../frequency,'schedule:yearly'))" | + "(not(derived-from-or-self(../../frequency," | |||
| + " or (current() < 3162240000))" { | + "'schedule:yearly')) or (current() < 3162240000))" { | |||
| error-message | error-message | |||
| "The period-start must not exceed the frequency | "The 'period-start' must not exceed the frequency | |||
| interval."; | interval."; | |||
| } | } | |||
| description | description | |||
| "Start time of the schedule within one recurrence. | "Start time of the schedule within one recurrence. | |||
| Given that the value is in timeticks format | Given that the value is in timeticks format | |||
| (i.e., 1/100 of a second), the values in the must | (i.e., 1/100 of a second), the values in the must | |||
| statement translate to: 100 = 1s (secondly), | statement translate to 100 = 1 s (secondly), | |||
| 6000 = 60 s = 1 min (minutely), and so on for all | 6000 = 60 s = 1 min (minutely), and so on for all | |||
| instances in the must statement invariant."; | instances in the must statement invariant."; | |||
| } | } | |||
| leaf period-end { | leaf period-end { | |||
| type yang:timeticks; | type yang:timeticks; | |||
| description | description | |||
| "End time of the schedule within one recurrence. | "End time of the schedule within one recurrence. | |||
| The period start MUST be no later than the period | The period start MUST be no later than the period | |||
| end."; | end."; | |||
| } | } | |||
| skipping to change at line 1497 ¶ | skipping to change at line 1476 ¶ | |||
| range "0..23"; | range "0..23"; | |||
| } | } | |||
| description | description | |||
| "Specifies a list of hours of the day."; | "Specifies a list of hours of the day."; | |||
| } | } | |||
| list byday { | list byday { | |||
| key "weekday"; | key "weekday"; | |||
| description | description | |||
| "Specifies a list of days of the week."; | "Specifies a list of days of the week."; | |||
| leaf-list direction { | leaf-list direction { | |||
| when "derived-from(../../frequency, 'schedule:monthly') or " | when "derived-from-or-self(../../frequency, " | |||
| + "(derived-from(../../frequency, 'schedule:yearly') " | + "'schedule:monthly') or " | |||
| + " and not(../../byyearweek))"; | + "(derived-from-or-self(../../frequency," | |||
| + "'schedule:yearly') and not(../../byyearweek))"; | ||||
| type int32 { | type int32 { | |||
| range "-53..-1|1..53"; | range "-53..-1|1..53"; | |||
| } | } | |||
| description | description | |||
| "When specified, it indicates the nth occurrence of a | "When specified, it indicates the nth occurrence of a | |||
| specific day within the monthly or yearly recurrence | specific day within the monthly or yearly recurrence | |||
| rule. For example, within a monthly rule, +1 monday | rule. For example, within a monthly rule, +1 monday | |||
| represents the first monday within the month, whereas | represents the first Monday within the month, whereas | |||
| -1 monday represents the last monday of the month."; | -1 monday represents the last Monday of the month."; | |||
| } | } | |||
| leaf weekday { | leaf weekday { | |||
| type schedule:weekday; | type schedule:weekday; | |||
| description | description | |||
| "Corresponds to seven days of the week."; | "Corresponds to seven days of the week."; | |||
| } | } | |||
| } | } | |||
| leaf-list bymonthday { | leaf-list bymonthday { | |||
| type int32 { | type int32 { | |||
| range "-31..-1|1..31"; | range "-31..-1|1..31"; | |||
| skipping to change at line 1532 ¶ | skipping to change at line 1512 ¶ | |||
| "Specifies a list of days of the month."; | "Specifies a list of days of the month."; | |||
| } | } | |||
| leaf-list byyearday { | leaf-list byyearday { | |||
| type int32 { | type int32 { | |||
| range "-366..-1|1..366"; | range "-366..-1|1..366"; | |||
| } | } | |||
| description | description | |||
| "Specifies a list of days of the year."; | "Specifies a list of days of the year."; | |||
| } | } | |||
| leaf-list byyearweek { | leaf-list byyearweek { | |||
| when "derived-from(../frequency, 'schedule:yearly')"; | when "derived-from-or-self(../frequency, 'schedule:yearly')"; | |||
| type int32 { | type int32 { | |||
| range "-53..-1|1..53"; | range "-53..-1|1..53"; | |||
| } | } | |||
| description | description | |||
| "Specifies a list of weeks of the year."; | "Specifies a list of weeks of the year."; | |||
| } | } | |||
| leaf-list byyearmonth { | leaf-list byyearmonth { | |||
| type uint32 { | type uint32 { | |||
| range "1..12"; | range "1..12"; | |||
| } | } | |||
| description | description | |||
| "Specifies a list of months of the year."; | "Specifies a list of months of the year."; | |||
| } | } | |||
| leaf-list bysetpos { | leaf-list bysetpos { | |||
| type int32 { | type int32 { | |||
| range "-366..-1|1..366"; | range "-366..-1|1..366"; | |||
| } | } | |||
| description | description | |||
| "Specifies a list of values that corresponds to the nth | "Specifies a list of values that corresponds to the nth | |||
| occurrence within the set of recurrence instances | occurrence within the set of recurrence instances | |||
| specified by the rule. It must only be used in conjunction | specified by the rule. It must only be used in conjunction | |||
| with another 'byxxx' (bysecond, byminute, etc.) rule | with another 'byxxx' (bysecond, byminute, etc.) rule | |||
| part ."; | part."; | |||
| } | } | |||
| leaf workweek-start { | leaf workweek-start { | |||
| type schedule:weekday; | type schedule:weekday; | |||
| description | description | |||
| "Specifies the day on which the workweek starts."; | "Specifies the day on which the workweek starts."; | |||
| } | } | |||
| leaf-list exception-dates { | leaf-list exception-dates { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Defines a list of exceptions for recurrence."; | "Defines a list of exceptions for recurrence."; | |||
| skipping to change at line 1603 ¶ | skipping to change at line 1583 ¶ | |||
| 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 1636 ¶ | |||
| 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 1665 ¶ | |||
| 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 | <t>The "ietf-schedule" YANG module defines a data model | |||
| ma for data | ||||
| 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 newline="false" spacing="compact"> | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-schedule | <dt>URI:</dt> | |||
| Registrant Contact: The IESG. | <dd>urn:ietf:params:xml:ns:yang:ietf-schedule</dd> | |||
| XML: N/A, the requested URI is an XML namespace. | <dt>Registrant Contact:</dt> | |||
| ]]></artwork> | <dd>The IESG.</dd> | |||
| <dt>XML:</dt> | ||||
| <dd>N/A; the requested URI is an XML namespace.</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 newline="false" spacing="compact"> | |||
| name: ietf-schedule | <dt>Name:</dt> | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-schedule | <dd>ietf-schedule</dd> | |||
| prefix: schedule | <dt>Maintained by IANA:</dt> | |||
| maintained by IANA? N | <dd>N</dd> | |||
| reference: RFC XXXX | <dt>Namespace:</dt> | |||
| ]]></artwork> | <dd>urn:ietf:params:xml:ns:yang:ietf-schedule</dd> | |||
| <dt>Prefix:</dt> | ||||
| <dd>schedule</dd> | ||||
| <dt>Reference:</dt> | ||||
| <dd>RFC 9922</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <displayreference target="I-D.ietf-netmod-eca-policy" to="NETMOD-ECA-POLICY" | ||||
| /> | ||||
| <displayreference target="I-D.ietf-netmod-rfc8407bis" to="YANG-GUIDE"/> | ||||
| <displayreference target="I-D.ietf-ntp-ntpv5" to="NTPv5"/> | ||||
| <displayreference target="I-D.ietf-opsawg-scheduling-oam-tests" to="YANG-OAM | ||||
| "/> | ||||
| <displayreference target="I-D.ietf-opsawg-ucl-acl" to="YANG-NAC"/> | ||||
| <displayreference target="I-D.ietf-tvr-schedule-yang" to="YANG-SCHEDULE"/> | ||||
| <displayreference target="I-D.liu-netmod-yang-schedule" to="YANG-CONFIG-SCHE | ||||
| DULE"/> | ||||
| <references anchor="sec-combined-references"> | <references anchor="sec-combined-references"> | |||
| <name>References</name> | <name>References</name> | |||
| <references anchor="sec-normative-references"> | <references anchor="sec-normative-references"> | |||
| <name>Normative References</name> | <name>Normative References</name> | |||
| <reference anchor="RFC3231"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | |||
| <front> | 231.xml"/> | |||
| <title>Definitions of Managed Objects for Scheduling Management Oper | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
| ations</title> | 119.xml"/> | |||
| <author fullname="D. Levi" initials="D." surname="Levi"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwae | 174.xml"/> | |||
| lder"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| <date month="January" year="2002"/> | 950.xml"/> | |||
| <abstract> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
| <t>This memo defines a portion of the Management Information Base | 545.xml"/> | |||
| (MIB) for use with network management protocols in the Internet community. In pa | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| rticular, it describes a set of managed objects that are used to schedule manage | 317.xml"/> | |||
| ment operations periodically or at specified dates and times. [STANDARDS-TRACK]< | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
| /t> | 911.xml"/> | |||
| </abstract> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| </front> | 341.xml"/> | |||
| <seriesInfo name="RFC" value="3231"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | |||
| <seriesInfo name="DOI" value="10.17487/RFC3231"/> | 688.xml"/> | |||
| </reference> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
| <reference anchor="RFC2119"> | 020.xml"/> | |||
| <front> | ||||
| <title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
| le> | ||||
| <author fullname="S. Bradner" initials="S." surname="Bradner"/> | ||||
| <date month="March" year="1997"/> | ||||
| <abstract> | ||||
| <t>In many standards track documents several words are used to sig | ||||
| nify the requirements in the specification. These words are often capitalized. T | ||||
| his document defines these words as they should be interpreted in IETF documents | ||||
| . This document specifies an Internet Best Current Practices for the Internet Co | ||||
| mmunity, and requests discussion and suggestions for improvements.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="2119"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174"> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
| tle> | ||||
| <author fullname="B. Leiba" initials="B." surname="Leiba"/> | ||||
| <date month="May" year="2017"/> | ||||
| <abstract> | ||||
| <t>RFC 2119 specifies common key words that may be used in protoco | ||||
| l specifications. This document aims to reduce the ambiguity by clarifying that | ||||
| only UPPERCASE usage of the key words have the defined special meanings.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="8174"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7950"> | ||||
| <front> | ||||
| <title>The YANG 1.1 Data Modeling Language</title> | ||||
| <author fullname="M. Bjorklund" initials="M." role="editor" surname= | ||||
| "Bjorklund"/> | ||||
| <date month="August" year="2016"/> | ||||
| <abstract> | ||||
| <t>YANG is a data modeling language used to model configuration da | ||||
| ta, state data, Remote Procedure Calls, and notifications for network management | ||||
| protocols. This document describes the syntax and semantics of version 1.1 of t | ||||
| he YANG language. YANG version 1.1 is a maintenance release of the YANG language | ||||
| , addressing ambiguities and defects in the original specification. There are a | ||||
| small number of backward incompatibilities from YANG version 1. This document al | ||||
| so specifies the YANG mappings to the Network Configuration Protocol (NETCONF).< | ||||
| /t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7950"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7950"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5545"> | ||||
| <front> | ||||
| <title>Internet Calendaring and Scheduling Core Object Specification | ||||
| (iCalendar)</title> | ||||
| <author fullname="B. Desruisseaux" initials="B." role="editor" surna | ||||
| me="Desruisseaux"/> | ||||
| <date month="September" year="2009"/> | ||||
| <abstract> | ||||
| <t>This document defines the iCalendar data format for representin | ||||
| g and exchanging calendaring and scheduling information such as events, to-dos, | ||||
| journal entries, and free/busy information, independent of any particular calend | ||||
| ar service or protocol. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5545"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5545"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7317"> | ||||
| <front> | ||||
| <title>A YANG Data Model for System Management</title> | ||||
| <author fullname="A. Bierman" initials="A." surname="Bierman"/> | ||||
| <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
| <date month="August" year="2014"/> | ||||
| <abstract> | ||||
| <t>This document defines a YANG data model for the configuration a | ||||
| nd identification of some common system properties within a device containing a | ||||
| Network Configuration Protocol (NETCONF) server. This document also includes dat | ||||
| a node definitions for system identification, time-of-day management, user manag | ||||
| ement, DNS resolver configuration, and some protocol operations for system manag | ||||
| ement.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7317"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7317"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6991"> | ||||
| <front> | ||||
| <title>Common YANG Data Types</title> | ||||
| <author fullname="J. Schoenwaelder" initials="J." role="editor" surn | ||||
| ame="Schoenwaelder"/> | ||||
| <date month="July" year="2013"/> | ||||
| <abstract> | ||||
| <t>This document introduces a collection of common data types to b | ||||
| e used with the YANG data modeling language. This document obsoletes RFC 6021.</ | ||||
| t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6991"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6991"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8341"> | ||||
| <front> | ||||
| <title>Network Configuration Access Control Model</title> | ||||
| <author fullname="A. Bierman" initials="A." surname="Bierman"/> | ||||
| <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
| <date month="March" year="2018"/> | ||||
| <abstract> | ||||
| <t>The standardization of network configuration interfaces for use | ||||
| with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requ | ||||
| ires a structured and secure operating environment that promotes human usability | ||||
| and multi-vendor interoperability. There is a need for standard mechanisms to r | ||||
| estrict NETCONF or RESTCONF protocol access for particular users to a preconfigu | ||||
| red subset of all available NETCONF or RESTCONF protocol operations and content. | ||||
| This document defines such an access control model.</t> | ||||
| <t>This document obsoletes RFC 6536.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="STD" value="91"/> | ||||
| <seriesInfo name="RFC" value="8341"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8341"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3688"> | ||||
| <front> | ||||
| <title>The IETF XML Registry</title> | ||||
| <author fullname="M. Mealling" initials="M." surname="Mealling"/> | ||||
| <date month="January" year="2004"/> | ||||
| <abstract> | ||||
| <t>This document describes an IANA maintained registry for IETF st | ||||
| andards which use Extensible Markup Language (XML) related items such as Namespa | ||||
| ces, Document Type Declarations (DTDs), Schemas, and Resource Description Framew | ||||
| ork (RDF) Schemas.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="81"/> | ||||
| <seriesInfo name="RFC" value="3688"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3688"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6020"> | ||||
| <front> | ||||
| <title>YANG - A Data Modeling Language for the Network Configuration | ||||
| Protocol (NETCONF)</title> | ||||
| <author fullname="M. Bjorklund" initials="M." role="editor" surname= | ||||
| "Bjorklund"/> | ||||
| <date month="October" year="2010"/> | ||||
| <abstract> | ||||
| <t>YANG is a data modeling language used to model configuration an | ||||
| d state data manipulated by the Network Configuration Protocol (NETCONF), NETCON | ||||
| F remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6020"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6020"/> | ||||
| </reference> | ||||
| </references> | </references> | |||
| <references anchor="sec-informative-references"> | <references anchor="sec-informative-references"> | |||
| <name>Informative References</name> | <name>Informative References</name> | |||
| <reference anchor="I-D.ietf-opsawg-ucl-acl"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| <front> | ietf-netmod-eca-policy.xml"/> | |||
| <title>A YANG Data Model and RADIUS Extension for Policy-based Netwo | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| rk Access Control</title> | ietf-netmod-rfc8407bis.xml"/> | |||
| <author fullname="Qiufang Ma" initials="Q." surname="Ma"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| <organization>Huawei</organization> | ietf-ntp-ntpv5.xml"/> | |||
| </author> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| <author fullname="Qin Wu" initials="Q." surname="Wu"> | ietf-opsawg-scheduling-oam-tests.xml"/> | |||
| <organization>Huawei</organization> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| </author> | ietf-opsawg-ucl-acl.xml"/> | |||
| <author fullname="Mohamed Boucadair" initials="M." surname="Boucadai | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| r"> | ietf-tvr-schedule-yang.xml"/> | |||
| <organization>Orange</organization> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| </author> | liu-netmod-yang-schedule.xml"/> | |||
| <author fullname="Daniel King" initials="D." surname="King"> | <reference anchor="W3C.XML1.0" target="https://www.w3.org/TR/2008/REC-xm | |||
| <organization>Lancaster University</organization> | l-20081126/"> | |||
| </author> | ||||
| <date day="20" month="March" year="2025"/> | ||||
| <abstract> | ||||
| <t> This document defines a YANG data model for policy-based net | ||||
| work | ||||
| access control, which provides consistent and efficient enforcement | ||||
| of network access control policies based on group identity. | ||||
| Moreover, this document defines a mechanism to ease the maintenance | ||||
| of the mapping between a user group identifier and a set of IP/MAC | ||||
| addresses to enforce policy-based network access control. | ||||
| In addition, the document defines a Remote Authentication Dial-in | ||||
| User Service (RADIUS) attribute that is used to communicate the user | ||||
| group identifier as part of identification and authorization | ||||
| information. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-ucl-acl-07" | ||||
| /> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-opsawg-scheduling-oam-tests"> | ||||
| <front> | ||||
| <title>A YANG Data Model for Network Diagnosis using Scheduled Seque | ||||
| nces of OAM Tests</title> | ||||
| <author fullname="Luis M. Contreras" initials="L. M." surname="Contr | ||||
| eras"> | ||||
| <organization>Telefonica</organization> | ||||
| </author> | ||||
| <author fullname="Victor Lopez" initials="V." surname="Lopez"> | ||||
| <organization>Nokia</organization> | ||||
| </author> | ||||
| <date day="7" month="July" year="2025"/> | ||||
| <abstract> | ||||
| <t> This document defines a YANG data model for network diagnosi | ||||
| s on- | ||||
| demand relying upon Operations, Administration, and Maintenance (OAM) | ||||
| tests. This document defines both 'oam-unitary-test' and 'oam-test- | ||||
| sequence' YANG modules to manage the lifecycle of network diagnosis | ||||
| procedures, primarily intended for use by an SDN controller or | ||||
| network orchestrator, rather than by individual network nodes. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-scheduling- | ||||
| oam-tests-01"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-tvr-schedule-yang"> | ||||
| <front> | ||||
| <title>YANG Data Model for Scheduled Attributes</title> | ||||
| <author fullname="Yingzhen Qu" initials="Y." surname="Qu"> | ||||
| <organization>Futurewei Technologies</organization> | ||||
| </author> | ||||
| <author fullname="Acee Lindem" initials="A." surname="Lindem"> | ||||
| <organization>Arrcus, Inc.</organization> | ||||
| </author> | ||||
| <author fullname="Eric Kinzie" initials="E." surname="Kinzie"> | ||||
| <organization>LabN Consulting, L.L.C.</organization> | ||||
| </author> | ||||
| <author fullname="Don Fedyk" initials="D." surname="Fedyk"> | ||||
| <organization>LabN Consulting, L.L.C.</organization> | ||||
| </author> | ||||
| <author fullname="Marc Blanchet" initials="M." surname="Blanchet"> | ||||
| <organization>Viagenie</organization> | ||||
| </author> | ||||
| <date day="4" month="July" year="2025"/> | ||||
| <abstract> | ||||
| <t> The YANG model in this document includes three modules, and | ||||
| can be | ||||
| used to manage network resources and topologies with scheduled | ||||
| attributes, such as predictable link loss and link connectivity as a | ||||
| function of time. The intent is to have this information be utilized | ||||
| by Time-Variant Routing systems. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-tvr-schedule-yang- | ||||
| 05"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8413"> | ||||
| <front> | ||||
| <title>Framework for Scheduled Use of Resources</title> | ||||
| <author fullname="Y. Zhuang" initials="Y." surname="Zhuang"/> | ||||
| <author fullname="Q. Wu" initials="Q." surname="Wu"/> | ||||
| <author fullname="H. Chen" initials="H." surname="Chen"/> | ||||
| <author fullname="A. Farrel" initials="A." surname="Farrel"/> | ||||
| <date month="July" year="2018"/> | ||||
| <abstract> | ||||
| <t>Time-Scheduled (TS) reservation of Traffic Engineering (TE) res | ||||
| ources can be used to provide resource booking for TE Label Switched Paths so as | ||||
| to better guarantee services for customers and to improve the efficiency of net | ||||
| work resource usage at any moment in time, including network usage that is plann | ||||
| ed for the future. This document provides a framework that describes and discuss | ||||
| es the architecture for supporting scheduled reservation of TE resources. This d | ||||
| ocument does not describe specific protocols or protocol extensions needed to re | ||||
| alize this service.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8413"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8413"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8340"> | ||||
| <front> | ||||
| <title>YANG Tree Diagrams</title> | ||||
| <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
| <author fullname="L. Berger" initials="L." role="editor" surname="Be | ||||
| rger"/> | ||||
| <date month="March" year="2018"/> | ||||
| <abstract> | ||||
| <t>This document captures the current syntax used in YANG module t | ||||
| ree diagrams. The purpose of this document is to provide a single location for t | ||||
| his definition. This syntax may be updated from time to time based on the evolut | ||||
| ion of the YANG language.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="215"/> | ||||
| <seriesInfo name="RFC" value="8340"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8340"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-netmod-rfc8407bis"> | ||||
| <front> | ||||
| <title>Guidelines for Authors and Reviewers of Documents Containing | ||||
| YANG Data Models</title> | ||||
| <author fullname="Andy Bierman" initials="A." surname="Bierman"> | ||||
| <organization>YumaWorks</organization> | ||||
| </author> | ||||
| <author fullname="Mohamed Boucadair" initials="M." surname="Boucadai | ||||
| r"> | ||||
| <organization>Orange</organization> | ||||
| </author> | ||||
| <author fullname="Qin Wu" initials="Q." surname="Wu"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <date day="5" month="June" year="2025"/> | ||||
| <abstract> | ||||
| <t> This document provides guidelines for authors and reviewers | ||||
| of | ||||
| specifications containing YANG data models, including IANA-maintained | ||||
| modules. Recommendations and procedures are defined, which are | ||||
| intended to increase interoperability and usability of Network | ||||
| Configuration Protocol (NETCONF) and RESTCONF Protocol | ||||
| implementations that utilize YANG modules. This document obsoletes | ||||
| RFC 8407. | ||||
| Also, this document updates RFC 8126 by providing additional | ||||
| guidelines for writing the IANA considerations for RFCs that specify | ||||
| IANA-maintained modules. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-rfc8407bis- | ||||
| 28"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3339"> | ||||
| <front> | ||||
| <title>Date and Time on the Internet: Timestamps</title> | ||||
| <author fullname="G. Klyne" initials="G." surname="Klyne"/> | ||||
| <author fullname="C. Newman" initials="C." surname="Newman"/> | ||||
| <date month="July" year="2002"/> | ||||
| <abstract> | ||||
| <t>This document defines a date and time format for use in Interne | ||||
| t protocols that is a profile of the ISO 8601 standard for representation of dat | ||||
| es and times using the Gregorian calendar.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3339"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3339"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-ntp-ntpv5"> | ||||
| <front> | ||||
| <title>Network Time Protocol Version 5</title> | ||||
| <author fullname="Miroslav Lichvar" initials="M." surname="Lichvar"> | ||||
| <organization>Red Hat</organization> | ||||
| </author> | ||||
| <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <date day="2" month="July" year="2025"/> | ||||
| <abstract> | ||||
| <t> The Network Time Protocol (NTP) is a widely deployed protoco | ||||
| l that | ||||
| allows hosts to obtain the current time of day from time servers. | ||||
| This document specifies version 5 of the protocol (NTPv5), which | ||||
| adopts a client-server model as its sole mode of operation. Legacy | ||||
| operational modes supported in earlier versions have been removed to | ||||
| improve protocol robustness and clarity. While this specification | ||||
| defines the protocol used for time distribution, it does not define | ||||
| the algorithms or heuristics employed by clients to determine or | ||||
| adjust their local time. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-ntp-ntpv5-05"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6241"> | ||||
| <front> | ||||
| <title>Network Configuration Protocol (NETCONF)</title> | ||||
| <author fullname="R. Enns" initials="R." role="editor" surname="Enns | ||||
| "/> | ||||
| <author fullname="M. Bjorklund" initials="M." role="editor" surname= | ||||
| "Bjorklund"/> | ||||
| <author fullname="J. Schoenwaelder" initials="J." role="editor" surn | ||||
| ame="Schoenwaelder"/> | ||||
| <author fullname="A. Bierman" initials="A." role="editor" surname="B | ||||
| ierman"/> | ||||
| <date month="June" year="2011"/> | ||||
| <abstract> | ||||
| <t>The Network Configuration Protocol (NETCONF) defined in this do | ||||
| cument provides mechanisms to install, manipulate, and delete the configuration | ||||
| of network devices. It uses an Extensible Markup Language (XML)-based data encod | ||||
| ing for the configuration data as well as the protocol messages. The NETCONF pro | ||||
| tocol operations are realized as remote procedure calls (RPCs). This document ob | ||||
| soletes RFC 4741. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6241"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6241"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8040"> | ||||
| <front> | ||||
| <title>RESTCONF Protocol</title> | ||||
| <author fullname="A. Bierman" initials="A." surname="Bierman"/> | ||||
| <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
| <author fullname="K. Watsen" initials="K." surname="Watsen"/> | ||||
| <date month="January" year="2017"/> | ||||
| <abstract> | ||||
| <t>This document describes an HTTP-based protocol that provides a | ||||
| programmatic interface for accessing data defined in YANG, using the datastore c | ||||
| oncepts defined in the Network Configuration Protocol (NETCONF).</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8040"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8040"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4252"> | ||||
| <front> | ||||
| <title>The Secure Shell (SSH) Authentication Protocol</title> | ||||
| <author fullname="T. Ylonen" initials="T." surname="Ylonen"/> | ||||
| <author fullname="C. Lonvick" initials="C." role="editor" surname="L | ||||
| onvick"/> | ||||
| <date month="January" year="2006"/> | ||||
| <abstract> | ||||
| <t>The Secure Shell Protocol (SSH) is a protocol for secure remote | ||||
| login and other secure network services over an insecure network. This document | ||||
| describes the SSH authentication protocol framework and public key, password, a | ||||
| nd host-based client authentication methods. Additional authentication methods a | ||||
| re described in separate documents. The SSH authentication protocol runs on top | ||||
| of the SSH transport layer protocol and provides a single authenticated tunnel f | ||||
| or the SSH connection protocol. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4252"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4252"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8446"> | ||||
| <front> | ||||
| <title>The Transport Layer Security (TLS) Protocol Version 1.3</titl | ||||
| e> | ||||
| <author fullname="E. Rescorla" initials="E." surname="Rescorla"/> | ||||
| <date month="August" year="2018"/> | ||||
| <abstract> | ||||
| <t>This document specifies version 1.3 of the Transport Layer Secu | ||||
| rity (TLS) protocol. TLS allows client/server applications to communicate over t | ||||
| he Internet in a way that is designed to prevent eavesdropping, tampering, and m | ||||
| essage forgery.</t> | ||||
| <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 50 | ||||
| 77, 5246, and 6961. This document also specifies new requirements for TLS 1.2 im | ||||
| plementations.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8446"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8446"/> | ||||
| </reference> | ||||
| <reference anchor="RFC9000"> | ||||
| <front> | ||||
| <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title> | ||||
| <author fullname="J. Iyengar" initials="J." role="editor" surname="I | ||||
| yengar"/> | ||||
| <author fullname="M. Thomson" initials="M." role="editor" surname="T | ||||
| homson"/> | ||||
| <date month="May" year="2021"/> | ||||
| <abstract> | ||||
| <t>This document defines the core of the QUIC transport protocol. | ||||
| QUIC provides applications with flow-controlled streams for structured communica | ||||
| tion, low-latency connection establishment, and network path migration. QUIC inc | ||||
| ludes security measures that ensure confidentiality, integrity, and availability | ||||
| in a range of deployment circumstances. Accompanying documents describe the int | ||||
| egration of TLS for key negotiation, loss detection, and an exemplary congestion | ||||
| control algorithm.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9000"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9000"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7951"> | ||||
| <front> | ||||
| <title>JSON Encoding of Data Modeled with YANG</title> | ||||
| <author fullname="L. Lhotka" initials="L." surname="Lhotka"/> | ||||
| <date month="August" year="2016"/> | ||||
| <abstract> | ||||
| <t>This document defines encoding rules for representing configura | ||||
| tion data, state data, parameters of Remote Procedure Call (RPC) operations or a | ||||
| ctions, and notifications defined using YANG as JavaScript Object Notation (JSON | ||||
| ) text.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7951"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7951"/> | ||||
| </reference> | ||||
| <reference anchor="RFC9657"> | ||||
| <front> | ||||
| <title>Time-Variant Routing (TVR) Use Cases</title> | ||||
| <author fullname="E. Birrane, III" initials="E." surname="Birrane, I | ||||
| II"/> | ||||
| <author fullname="N. Kuhn" initials="N." surname="Kuhn"/> | ||||
| <author fullname="Y. Qu" initials="Y." surname="Qu"/> | ||||
| <author fullname="R. Taylor" initials="R." surname="Taylor"/> | ||||
| <author fullname="L. Zhang" initials="L." surname="Zhang"/> | ||||
| <date month="October" year="2024"/> | ||||
| <abstract> | ||||
| <t>This document introduces use cases where Time-Variant Routing ( | ||||
| TVR) computations (i.e., routing computations that take into consideration time- | ||||
| based or scheduled changes to a network) could improve routing protocol converge | ||||
| nce and/or network performance.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9657"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9657"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-netmod-eca-policy"> | ||||
| <front> | ||||
| <title>A YANG Data model for ECA Policy Management</title> | ||||
| <author fullname="Qin Wu" initials="Q." surname="Wu"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <author fullname="Igor Bryskin" initials="I." surname="Bryskin"> | ||||
| <organization>Individual</organization> | ||||
| </author> | ||||
| <author fullname="Henk Birkholz" initials="H." surname="Birkholz"> | ||||
| <organization>Fraunhofer SIT</organization> | ||||
| </author> | ||||
| <author fullname="Xufeng Liu" initials="X." surname="Liu"> | ||||
| <organization>Volta Networks</organization> | ||||
| </author> | ||||
| <author fullname="Benoît Claise" initials="B." surname="Claise"> | ||||
| <organization>Cisco</organization> | ||||
| </author> | ||||
| <date day="19" month="February" year="2021"/> | ||||
| <abstract> | ||||
| <t> This document defines a YANG data model for Event Condition | ||||
| Action | ||||
| (ECA) policy management. The ECA policy YANG module provides the | ||||
| ability to delegate some network management functions to the server | ||||
| (e.g., a NETCONF or RESTCONF server) which can take simple and | ||||
| instant action when a trigger condition on the managed objects is | ||||
| met. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-eca-policy- | ||||
| 01"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.liu-netmod-yang-schedule"> | ||||
| <front> | <front> | |||
| <title>A YANG Data Model for Configuration Scheduling</title> | <title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title> | |||
| <author fullname="Xufeng Liu" initials="X." surname="Liu"> | <author initials="T." surname="Bray" fullname="Tim Bray" role="edito | |||
| <organization>Jabil</organization> | r"> | |||
| </author> | <organization/> | |||
| <author fullname="Igor Bryskin" initials="I." surname="Bryskin"> | ||||
| <organization>Huawei Technologies</organization> | ||||
| </author> | </author> | |||
| <author fullname="Vishnu Pavan Beeram" initials="V. P." surname="Bee | <author initials="J." surname="Paoli" fullname="Jean Paoli" role="ed | |||
| ram"> | itor"> | |||
| <organization>Juniper Networks</organization> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Tarek Saad" initials="T." surname="Saad"> | <author initials="C. M." surname="Sperberg-McQueen" fullname="C. M. | |||
| <organization>Cisco Systems Inc</organization> | Sperberg-McQueen" role="editor"> | |||
| <organization/> | ||||
| </author> | </author> | |||
| <author fullname="Himanshu Shah" initials="H." surname="Shah"> | <author initials="E." surname="Maler" fullname="Eve Maler" role="edi | |||
| <organization>Ciena</organization> | tor"> | |||
| <organization/> | ||||
| </author> | </author> | |||
| <author fullname="Oscar Gonzalez de Dios" initials="O. G." surname=" | <author initials="F." surname="Yergeau" fullname="Francois Yergeau" | |||
| de Dios"> | role="editor"> | |||
| <organization>Telefonica</organization> | <organization/> | |||
| </author> | </author> | |||
| <date day="1" month="March" year="2018"/> | <date year="2008" month="November" day="26"/> | |||
| <abstract> | ||||
| <t> This document describes a data model for configuration sched | ||||
| uling. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | </front> | |||
| <seriesInfo name="Internet-Draft" value="draft-liu-netmod-yang-schedul e-05"/> | <refcontent>W3C Recommendation</refcontent> | |||
| </reference> | </reference> | |||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 413.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 340.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | ||||
| 339.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
| 241.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 040.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
| 252.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 446.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 000.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
| 951.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 657.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 345.xml"/> | ||||
| </references> | </references> | |||
| </references> | </references> | |||
| <?line 1637?> | <?line 1716?> | |||
| <section anchor="usage"> | <section anchor="usage"> | |||
| <name>Examples of Scheduling Format Representation</name> | <name>Examples of Scheduling Format Representation</name> | |||
| <t>This section provides some examples to illustrate the use of the | <t>This section provides some examples to illustrate the use of the | |||
| period and recurrence formats defined in <xref target="sec-schedule"/>. The f ollowing | period and recurrence formats defined in <xref target="sec-schedule"/>. The f ollowing | |||
| modules are used for illustration purposes and make examples verifiable:</t> | modules are used for illustration purposes and make examples verifiable:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="yang"><![CDATA[ | |||
| module example-sch-usage-1 { | module example-sch-usage-1 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-1"; | namespace "http://example.com/example-sch-usage-1"; | |||
| prefix "ex-schu-1"; | prefix "ex-schu-1"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using 'generic-schedule-params' and | ||||
| 'schedule-status' groupings."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container generic-schedule-params { | container generic-schedule-params { | |||
| description | ||||
| "A collection of generic scheduling parameters."; | ||||
| uses schedule:generic-schedule-params; | uses schedule:generic-schedule-params; | |||
| } | } | |||
| container schedule-status { | container schedule-status { | |||
| description | ||||
| "A collection of scheduling status."; | ||||
| uses schedule:schedule-status; | uses schedule:schedule-status; | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-2 { | module example-sch-usage-2 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-2"; | namespace "http://example.com/example-sch-usage-2"; | |||
| prefix "ex-schu2"; | prefix "ex-schu2"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using the 'period-of-time' grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container period-of-time { | container period-of-time { | |||
| description | ||||
| "A container for a time period."; | ||||
| uses schedule:period-of-time; | uses schedule:period-of-time; | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-3 { | module example-sch-usage-3 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-3"; | namespace "http://example.com/example-sch-usage-3"; | |||
| prefix "ex-schu-3"; | prefix "ex-schu-3"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using the 'recurrence-basic' grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container recurrence-basic { | container recurrence-basic { | |||
| description | ||||
| "A container for a simple recurrence rule."; | ||||
| uses schedule:recurrence-basic { | uses schedule:recurrence-basic { | |||
| refine frequency { | ||||
| mandatory true; | ||||
| } | ||||
| refine interval { | refine interval { | |||
| default 1; | default 1; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-4 { | module example-sch-usage-4 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-4"; | namespace "http://example.com/example-sch-usage-4"; | |||
| prefix "ex-schu-4"; | prefix "ex-schu-4"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using the 'recurrence-utc' grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container recurrence-utc { | container recurrence-utc { | |||
| description | ||||
| "A container for a simple recurrence rule in UTC format."; | ||||
| uses schedule:recurrence-utc; | uses schedule:recurrence-utc; | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-5 { | module example-sch-usage-5 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-5"; | namespace "http://example.com/example-sch-usage-5"; | |||
| prefix "ex-schu-5"; | prefix "ex-schu-5"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using the 'recurrence-with-time-zone' | ||||
| grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container recurrence-with-time-zone { | container recurrence-with-time-zone { | |||
| description | ||||
| "A container for a simple recurrence rule with a time zone."; | ||||
| uses schedule:recurrence-with-time-zone; | uses schedule:recurrence-with-time-zone; | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-6 { | module example-sch-usage-6 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-6"; | namespace "http://example.com/example-sch-usage-6"; | |||
| prefix "ex-schu-6"; | prefix "ex-schu-6"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| container recurrence-utc-with-date-times { | organization | |||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using the 'recurrence-utc-with-periods' | ||||
| grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container recurrence-utc-with-periods { | ||||
| description | ||||
| "A container for an aggregate set of repeating occurrences in | ||||
| UTC format."; | ||||
| uses schedule:recurrence-utc-with-periods; | uses schedule:recurrence-utc-with-periods; | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-7 { | module example-sch-usage-7 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-7"; | namespace "http://example.com/example-sch-usage-7"; | |||
| prefix "ex-schu-8"; | prefix "ex-schu-8"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | ||||
| container recurrence-time-zone-with-date-times { | organization | |||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using the | ||||
| 'recurrence-time-zone-with-periods' grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container recurrence-time-zone-with-periods { | ||||
| description | ||||
| "A container for an aggregate set of repeating occurrences | ||||
| with a time zone."; | ||||
| uses schedule:recurrence-time-zone-with-periods; | uses schedule:recurrence-time-zone-with-periods; | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-8 { | module example-sch-usage-8 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-8"; | namespace "http://example.com/example-sch-usage-8"; | |||
| prefix "ex-schu-8"; | prefix "ex-schu-8"; | |||
| import ietf-schedule { | ||||
| prefix "schedule"; | ||||
| } | ||||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using 'icalendar-recurrence' grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container icalendar-recurrence { | container icalendar-recurrence { | |||
| description | ||||
| "A container for a scheduled iCalendar recurrence."; | ||||
| uses schedule:icalendar-recurrence { | uses schedule:icalendar-recurrence { | |||
| refine workweek-start { | refine workweek-start { | |||
| default monday; | default monday; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>For each example, only the message body is provided with | <t>For each example, only the message body is provided with | |||
| JSON used for encoding per the guidance in <xref target="RFC7951"/>.</t> | JSON, which is used for encoding per the guidance in <xref target="RFC7951"/> .</t> | |||
| <section anchor="the-generic-schedule-params-grouping"> | <section anchor="the-generic-schedule-params-grouping"> | |||
| <name>The "generic-schedule-params" Grouping</name> | <name>The "generic-schedule-params" Grouping</name> | |||
| <t><xref target="ex-0"/> illustrates the example of a requested schedule that needs to start no earlier than | <t><xref target="ex-0"/> illustrates the example of a requested schedule that needs to start no earlier than | |||
| 08:00 AM, January 1, 2025 and end no later than 8:00 PM, January 31, 2025 (Beiji ng time). | 08:00 AM, January 1, 2025 and end no later than 8:00 PM, January 31, 2025 (Beiji ng time). | |||
| Schedule requests that fail to meet the requirements are ignored by the system a s indicated by | Schedule requests that fail to meet the requirements are ignored by the system, as indicated by | |||
| "discard-action".</t> | "discard-action".</t> | |||
| <figure anchor="ex-0"> | <figure anchor="ex-0"> | |||
| <name>Generic Parameters with 'max-allowed-end' for Schedule Validatio n</name> | <name>Generic Parameters with 'max-allowed-end' for Schedule Validatio n</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-1:generic-schedule-params": { | "example-sch-usage-1:generic-schedule-params": { | |||
| "time-zone-identifier": "China/Beijing", | "time-zone-identifier": "China/Beijing", | |||
| "min-allowed-start": "2025-01-01T08:00:00", | "min-allowed-start": "2025-01-01T08:00:00", | |||
| "max-allowed-end": "2025-01-31T20:00:00", | "max-allowed-end": "2025-01-31T20:00:00", | |||
| "discard-action": "ietf-schedule:silently-discard" | "discard-action": "ietf-schedule:silently-discard" | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t>To illustrate the difference between "max-allowed-end" and "validity" parameters, | <t>To illustrate the difference between "max-allowed-end" and "validity" parameters, | |||
| <xref target="ex-00"/> shows the example of a requested schedule that needs to s tart no earlier than | <xref target="ex-00"/> shows the example of a requested schedule that needs to s tart no earlier than | |||
| 08:00 AM, January 1, 2025 (Beijing time). Schedule requests that fail to meet th e | 08:00 AM, January 1, 2025 (Beijing time). Schedule requests that fail to meet th e | |||
| requirements are ignored by the system as indicated by "discard-action". The | requirements are ignored by the system, as indicated by "discard-action". The | |||
| requested schedule may end after 8:00 PM, January 31, 2025, but any occurrences that are generated | requested schedule may end after 8:00 PM, January 31, 2025, but any occurrences that are generated | |||
| after that time would not be considered as valid.</t> | after that time would not be considered as valid.</t> | |||
| <figure anchor="ex-00"> | <figure anchor="ex-00"> | |||
| <name>Generic Parameters with 'validity' for Schedule Validation</name > | <name>Generic Parameters with 'validity' for Schedule Validation</name > | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-1:generic-schedule-params": { | "example-sch-usage-1:generic-schedule-params": { | |||
| "time-zone-identifier": "China/Beijing", | "time-zone-identifier": "China/Beijing", | |||
| "validity": "2025-01-31T20:00:00", | "validity": "2025-01-31T20:00:00", | |||
| "min-allowed-start": "2025-01-01T08:00:00", | "min-allowed-start": "2025-01-01T08:00:00", | |||
| "discard-action": "ietf-schedule:silently-discard" | "discard-action": "ietf-schedule:silently-discard" | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-period-of-time-grouping"> | <section anchor="the-period-of-time-grouping"> | |||
| <name>The "period-of-time" Grouping</name> | <name>The "period-of-time" Grouping</name> | |||
| <t><xref target="ex-1"/> shows an example of a period that starts at 08: 00:00 UTC, on January 1, 2025 and ends at 18:00:00 UTC | <t><xref target="ex-1"/> shows an example of a period that starts at 08: 00:00 UTC on January 1, 2025 and ends at 18:00:00 UTC | |||
| on December 31, 2027.</t> | on December 31, 2027.</t> | |||
| <figure anchor="ex-1"> | <figure anchor="ex-1"> | |||
| <name>Simple Start/End Schedule</name> | <name>Simple Start/End Schedule</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-2:period-of-time": { | "example-sch-usage-2:period-of-time": { | |||
| "period-start": "2025-01-01T08:00:00Z", | "period-start": "2025-01-01T08:00:00Z", | |||
| "period-end": "2027-12-31T18:00:00Z" | "period-end": "2027-12-31T18:00:00Z" | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t>An example of a period that starts at 08:00:00 UTC, on January 1, 202 5 and lasts 15 days and | <t>An example of a period that starts at 08:00:00 UTC on January 1, 2025 and lasts 15 days and | |||
| 5 hours and 20 minutes is encoded as shown in <xref target="ex-2"/>.</t> | 5 hours and 20 minutes is encoded as shown in <xref target="ex-2"/>.</t> | |||
| <figure anchor="ex-2"> | <figure anchor="ex-2"> | |||
| <name>Simple Schedule with Duration</name> | <name>Simple Schedule with Duration</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-2:period-of-time": { | "example-sch-usage-2:period-of-time": { | |||
| "period-start": "2025-01-01T08:00:00Z", | "period-start": "2025-01-01T08:00:00Z", | |||
| "duration": "P15DT05:20:00" | "duration": "P15DT05:20:00" | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t>An example of a period that starts at 2:00 A.M. in Los Angeles on Nov ember 19, | <t>An example of a period that starts at 2:00 AM in Los Angeles on Novem ber 19, | |||
| 2025 and lasts 20 weeks is depicted in <xref target="ex-3"/>.</t> | 2025 and lasts 20 weeks is depicted in <xref target="ex-3"/>.</t> | |||
| <figure anchor="ex-3"> | <figure anchor="ex-3"> | |||
| <name>Simple Schedule with Time Zone Indication</name> | <name>Simple Schedule with Time Zone Indication</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-2:period-of-time": { | "example-sch-usage-2:period-of-time": { | |||
| "period-start": "2025-11-19T02:00:00", | "period-start": "2025-11-19T02:00:00", | |||
| "time-zone-identifier": "America/Los_Angeles", | "time-zone-identifier": "America/Los_Angeles", | |||
| "duration": "P20W" | "duration": "P20W" | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-recurrence-basic-grouping"> | <section anchor="the-recurrence-basic-grouping"> | |||
| <name>The "recurrence-basic" Grouping</name> | <name>The "recurrence-basic" Grouping</name> | |||
| <t><xref target="ex-6"/> indicates a recurrence of every 2 days which st arts immediately and repeats forever:</t> | <t><xref target="ex-4"/> indicates a recurrence of every 2 days, which s tarts immediately and repeats forever:</t> | |||
| <figure anchor="ex-4"> | <figure anchor="ex-4"> | |||
| <name>Simple Schedule with Recurrence</name> | <name>Simple Schedule with Recurrence</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-3:recurrence-basic": { | "example-sch-usage-3:recurrence-basic": { | |||
| "recurrence-description": "forever recurrence rule", | "recurrence-description": "forever recurrence rule", | |||
| "frequency": "ietf-schedule:daily", | "frequency": "ietf-schedule:daily", | |||
| "interval": 2 | "interval": 2 | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-recurrence-utc-grouping"> | <section anchor="the-recurrence-utc-grouping"> | |||
| <name>The "recurrence-utc" Grouping</name> | <name>The "recurrence-utc" Grouping</name> | |||
| <t><xref target="ex-5"/> indicates a recurrence from 8:00 AM to 9:00 AM every day, from | <t><xref target="ex-5"/> indicates a recurrence from 8:00 AM to 9:00 AM every day, from | |||
| December 1 to December 31, 2025 in UTC:</t> | December 1 to December 31, 2025 in UTC:</t> | |||
| <figure anchor="ex-5"> | <figure anchor="ex-5"> | |||
| <name>Simple Schedule with Recurrence in UTC</name> | <name>Simple Schedule with Recurrence in UTC</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-4:recurrence-utc": { | "example-sch-usage-4:recurrence-utc": { | |||
| "recurrence-first": { | "recurrence-first": { | |||
| "start-time-utc": "2025-12-01T08:00:00Z", | "start-time-utc": "2025-12-01T08:00:00Z", | |||
| "duration": 3600 | "duration": 3600 | |||
| }, | }, | |||
| "frequency": "ietf-schedule:daily", | "frequency": "ietf-schedule:daily", | |||
| "interval": 1, | "interval": 1, | |||
| "utc-until": "2025-12-31T23:59:59Z" | "utc-until": "2025-12-31T23:59:59Z" | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-recurrence-with-time-zone-grouping"> | <section anchor="the-recurrence-with-time-zone-grouping"> | |||
| <name>The "recurrence-with-time-zone" Grouping</name> | <name>The "recurrence-with-time-zone" Grouping</name> | |||
| <t><xref target="ex-6"/> indicates a recurrence of every 2 hours for 10 | <t><xref target="ex-6"/> indicates a recurrence of every 2 hours for 10 | |||
| occurrences, lasting | occurrences that | |||
| 10 minutes, and starting at 3 p.m. on December 1, 2025 in New York:</t> | lasts 10 minutes and starts at 3 PM on December 1, 2025 in New York:</t> | |||
| <figure anchor="ex-6"> | <figure anchor="ex-6"> | |||
| <name>Simple Schedule with Recurrence with Time Zone Indication</name> | <name>Simple Schedule with Recurrence with Time Zone Indication</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-5:recurrence-with-time-zone": { | "example-sch-usage-5:recurrence-with-time-zone": { | |||
| "recurrence-first": { | "recurrence-first": { | |||
| "start-time": "2025-12-01T15:00:00", | "start-time": "2025-12-01T15:00:00", | |||
| "duration": "PT00:10:00", | "duration": "PT00:10:00" | |||
| "time-zone-identifier": "America/New_York" | ||||
| }, | }, | |||
| "time-zone-identifier": "America/New_York", | ||||
| "frequency": "ietf-schedule:hourly", | "frequency": "ietf-schedule:hourly", | |||
| "interval": 2, | "interval": 2, | |||
| "count": 10 | "count": 10 | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-recurrence-utc-with-periods-grouping"> | <section anchor="the-recurrence-utc-with-periods-grouping"> | |||
| <name>The "recurrence-utc-with-periods" Grouping</name> | <name>The "recurrence-utc-with-periods" Grouping</name> | |||
| <t><xref target="ex-7"/> indicates a recurrence that occurs every two da ys starting at 9:00 AM | <t><xref target="ex-7"/> indicates a recurrence that occurs every two da ys starting at 9:00 AM | |||
| and 3:00 PM for a duration of 30 minutes and 40 minutes respectively, | and 3:00 PM for a duration of 30 minutes and 40 minutes, respectively, | |||
| from 2025-06-01 to 2025-06-30 in UTC:</t> | from 2025-06-01 to 2025-06-30 in UTC:</t> | |||
| <figure anchor="ex-7"> | <figure anchor="ex-7"> | |||
| <name>Example of Recurrence With Date Times</name> | <name>Example of Recurrence With Date Times</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-6:recurrence-utc-with-periods": { | "example-sch-usage-6:recurrence-utc-with-periods": { | |||
| "recurrence-first": { | "recurrence-first": { | |||
| "start-time-utc": "2025-06-01T09:00:00Z" | "start-time-utc": "2025-06-01T09:00:00Z" | |||
| }, | }, | |||
| "frequency": "ietf-schedule:daily", | "frequency": "ietf-schedule:daily", | |||
| "interval": 2, | "interval": 2, | |||
| "utc-until": "2025-06-30T23:59:59Z", | "utc-until": "2025-06-30T23:59:59Z", | |||
| "period-timeticks": [ | "period-timeticks": [ | |||
| { | { | |||
| "period-start": "3240000", | "period-start": 3240000, | |||
| "period-end": "3420000" | "period-end": 3420000 | |||
| }, | }, | |||
| { | { | |||
| "period-start": "5400000", | "period-start": 5400000, | |||
| "period-end": "5640000" | "period-end": 5640000 | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-recurrence-time-zone-with-periods-grouping"> | <section anchor="the-recurrence-time-zone-with-periods-grouping"> | |||
| <name>The "recurrence-time-zone-with-periods" Grouping</name> | <name>The "recurrence-time-zone-with-periods" Grouping</name> | |||
| <t><xref target="ex-8"/> indicates a recurrence that occurs every | <t><xref target="ex-8"/> indicates a recurrence that occurs every | |||
| 30 minutes and lasts for 15 minutes from 9:00 AM to 5:00 PM and an extra two occurrences | 30 minutes and lasts for 15 minutes from 9:00 AM to 5:00 PM and two extra occ urrences | |||
| at 6:00 PM and 6:30 PM with each lasting for 20 minutes on 2025-12-01 (New Yo rk):</t> | at 6:00 PM and 6:30 PM with each lasting for 20 minutes on 2025-12-01 (New Yo rk):</t> | |||
| <figure anchor="ex-8"> | <figure anchor="ex-8"> | |||
| <name>Example of Advanced Recurrence Schedule</name> | <name>Example of Advanced Recurrence Schedule</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-7:recurrence-time-zone-with-periods": { | "example-sch-usage-7:recurrence-time-zone-with-periods": { | |||
| "recurrence-first": { | "recurrence-first": { | |||
| "start-time": "2025-12-01T09:00:00", | "start-time": "2025-12-01T09:00:00", | |||
| "duration": "PT00:15:00", | "duration": "PT00:15:00" | |||
| "time-zone-identifier": "America/New_York" | ||||
| }, | }, | |||
| "time-zone-identifier": "America/New_York", | ||||
| "frequency": "ietf-schedule:minutely", | "frequency": "ietf-schedule:minutely", | |||
| "interval": 30, | "interval": 30, | |||
| "until": "2025-12-01T17:00:00Z", | "until": "2025-12-01T17:00:00Z", | |||
| "period": [ | "period": [ | |||
| { | { | |||
| "period-start": "2025-12-01T18:00:00", | "period-start": "2025-12-01T18:00:00", | |||
| "duration": "PT00:20:00" | "duration": "PT00:20:00" | |||
| }, | }, | |||
| { | { | |||
| "period-start": "2025-12-01T18:30:00", | "period-start": "2025-12-01T18:30:00", | |||
| "duration": "PT00:20:00" | "duration": "PT00:20:00" | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-icalendar-recurrence-grouping"> | <section anchor="the-icalendar-recurrence-grouping"> | |||
| <name>The "icalendar-recurrence" Grouping</name> | <name>The "icalendar-recurrence" Grouping</name> | |||
| <t><xref target="ex-9"/> indicates 10 occurrences that occur at | <t><xref target="ex-9"/> indicates 10 occurrences at | |||
| 8:00 AM (EST), every last Saturday of the month starting in January 2024:</t> | 8:00 AM (EST) every last Saturday of the month starting in January 2024:</t> | |||
| <figure anchor="ex-9"> | <figure anchor="ex-9"> | |||
| <name>Simple iCalendar Recurrence</name> | <name>Simple iCalendar Recurrence</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-8:icalendar-recurrence": { | "example-sch-usage-8:icalendar-recurrence": { | |||
| "recurrence-first": { | "recurrence-first": { | |||
| "start-time": "2024-01-27T08:00:00", | "start-time": "2024-01-27T08:00:00" | |||
| "time-zone-identifier": "America/New_York" | ||||
| }, | }, | |||
| "time-zone-identifier": "America/New_York", | ||||
| "frequency": "ietf-schedule:monthly", | "frequency": "ietf-schedule:monthly", | |||
| "count": 10, | "count": 10, | |||
| "byday": [ | "byday": [ | |||
| { | { | |||
| "direction": [ | "direction": [ | |||
| -1 | -1 | |||
| ], | ], | |||
| "weekday": "saturday" | "weekday": "saturday" | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t><xref target="ex-10"/> is an example of a recurrence that occurs on t he last | <t><xref target="ex-10"/> is an example of a recurrence that occurs on t he last | |||
| workday of the month until December 25, 2025, from January 1, 2025:</t> | workday of the month until December 25, 2025, starting January 1, 2025:</t> | |||
| <figure anchor="ex-10"> | <figure anchor="ex-10"> | |||
| <name>Example of Advanced iCalendar Recurrence</name> | <name>Example of Advanced iCalendar Recurrence</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-8:icalendar-recurrence": { | "example-sch-usage-8:icalendar-recurrence": { | |||
| "recurrence-first": { | "recurrence-first": { | |||
| "start-time": "2025-01-01" | "start-time": "2025-01-01T00:00:00" | |||
| }, | }, | |||
| "frequency": "ietf-schedule:monthly", | "frequency": "ietf-schedule:monthly", | |||
| "until": "2025-12-25", | "until": "2025-12-25T23:59:59", | |||
| "byday": [ | "byday": [ | |||
| { | { | |||
| "weekday": "monday" | "weekday": "monday" | |||
| }, | }, | |||
| { | { | |||
| "weekday": "tuesday" | "weekday": "tuesday" | |||
| }, | }, | |||
| { | { | |||
| "weekday": "wednesday" | "weekday": "wednesday" | |||
| }, | }, | |||
| skipping to change at line 2628 ¶ | skipping to change at line 2348 ¶ | |||
| }, | }, | |||
| { | { | |||
| "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 2383 ¶ | |||
| 13, | 13, | |||
| 14, | 14, | |||
| 15, | 15, | |||
| 16 | 16 | |||
| ], | ], | |||
| "exception-dates": [ | "exception-dates": [ | |||
| "2025-12-01T10:20:00Z" | "2025-12-01T10:20:00Z" | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-schedule-status-grouping"> | <section anchor="the-schedule-status-grouping"> | |||
| <name>The "schedule-status" Grouping</name> | <name>The "schedule-status" Grouping</name> | |||
| <t><xref target="ex-12"/> indicates the scheduled recurrence status of < xref target="ex-11"/> at the time | <t><xref target="ex-12"/> indicates the scheduled recurrence status of < xref target="ex-11"/> at the time | |||
| of 12:15 PM, 2025-12-01 (UTC):</t> | of 12:15 PM on 2025-12-01 (UTC):</t> | |||
| <figure anchor="ex-12"> | <figure anchor="ex-12"> | |||
| <name>Example of a Schedule Status</name> | <name>Example of a Schedule Status</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-1:schedule-status": { | "example-sch-usage-1:schedule-status": { | |||
| "state": "ietf-schedule:enabled", | "state": "ietf-schedule:enabled", | |||
| "version": 1, | "version": 1, | |||
| "schedule-type": "ietf-schedule:recurrence", | "schedule-type": "ietf-schedule:recurrence", | |||
| "counter": 9, | "counter": 9, | |||
| "last-occurrence": [ | "last-occurrence": "2025-12-01T12:00:00Z", | |||
| "2025-12-01T12:00:00Z" | "upcoming-occurrence": "2025-12-01T12:20:00Z" | |||
| ], | ||||
| "upcoming-occurrence": [ | ||||
| "2025-12-01T12:20:00Z" | ||||
| ] | ||||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t>At the time of 12:15 PM, 2025-12-01 (UTC), the recurring event occurr | <t>At the time of 12:15 PM on 2025-12-01 (UTC), the recurring event occu | |||
| ed at | rred at | |||
| (note that occurrence at 10:20 AM is excluded): | (note that the occurrence at 10:20 AM is excluded): | |||
| 9:00, 9:20, 9:40, 10:00, 10:40, 11:00, 11:20, 11:40, 12:00. | 9:00, 9:20, 9:40, 10:00, 10:40, 11:00, 11:20, 11:40, and 12:00. | |||
| The last occurrence was at 12:00, the upcoming one is at 12:20.</t> | The last occurrence was at 12:00, and the upcoming one is at 12:20.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec-ext"> | <section anchor="sec-ext"> | |||
| <name>Examples of Using/Extending the "ietf-schedule" Module</name> | <name>Examples of Using/Extending the "ietf-schedule" Module</name> | |||
| <t>This non-normative section shows two examples for how the "ietf-schedul e" module | <t>This non-normative section shows two examples for how the "ietf-schedul e" module | |||
| can be used or extended for scheduled events or attributes based on date and time.</t> | can be used or extended for scheduled events or attributes based on date and time.</t> | |||
| <section anchor="features"> | <section anchor="features"> | |||
| <name>Example: Schedule Tasks to Execute Based on a Recurrence Rule</nam e> | <name>Example: Schedule Tasks to Execute Based on a Recurrence Rule</nam e> | |||
| <t>Scheduled tasks can be used to execute specific actions based on cert ain recurrence rules (e.g., | <t>Scheduled tasks can be used to execute specific actions based on cert ain recurrence rules (e.g., | |||
| every Friday at 8:00 AM). The following example module which "uses" the "ical | every Friday at 8:00 AM). The following example module, which "uses" the "ica | |||
| endar-recurrence" | lendar-recurrence" | |||
| grouping from "ietf-schedule" module shows how a scheduled task could be defi | grouping from the "ietf-schedule" module, shows how a scheduled task could be | |||
| ned | defined | |||
| with different features used for options.</t> | with different features used for options.</t> | |||
| <artwork><![CDATA[ | <sourcecode type="yang"><![CDATA[ | |||
| module example-scheduled-backup { | module example-scheduled-backup { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-scheduled-backup"; | namespace "http://example.com/example-scheduled-backup"; | |||
| prefix "ex-scback"; | prefix "ex-scback"; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| } | } | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | organization | |||
| "Example, Inc."; | "Example, Inc."; | |||
| contact | contact | |||
| "Support at example.com"; | "Support at example.com"; | |||
| description | description | |||
| "Example of a module defining a scheduled based backup | "Example of a module defining a scheduled-based backup | |||
| operation."; | operation."; | |||
| revision "2023-01-19" { | revision "2026-02-20" { | |||
| description | description | |||
| "Initial Version."; | "Initial version."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for Scheduling."; | "RFC 9922: A YANG Data Model for Scheduling"; | |||
| } | } | |||
| container scheduled-backup-tasks { | container scheduled-backup-tasks { | |||
| description | description | |||
| "A container for backing up all current running configuration | "A container for backing up all current running configurations | |||
| on the device."; | on the device."; | |||
| list tasks { | list tasks { | |||
| key "task-id"; | key "task-id"; | |||
| description | description | |||
| "The list of backing up tasks on this device."; | "The list of backing up tasks on this device."; | |||
| leaf task-id { | leaf task-id { | |||
| type string; | type string; | |||
| description | description | |||
| "The task identifier that uniquely identifies a scheduled | "The task identifier that uniquely identifies a scheduled | |||
| backup task."; | backup task."; | |||
| } | } | |||
| choice local-or-remote { | choice local-or-remote { | |||
| description | description | |||
| "Specifies whether the configuration to be backed up is | "Specifies whether the configuration to be backed up is | |||
| local or remote."; | local or remote."; | |||
| case local { | case local { | |||
| description | description | |||
| "Configuration parameters for backing up of local | "Configuration parameters for the backing up of local | |||
| devices."; | devices."; | |||
| leaf local { | leaf local { | |||
| type empty; | type empty; | |||
| description | description | |||
| "The parameter specifies the configuration to be | "The parameter specifies the configuration to be | |||
| backed up is on the local device."; | backed up is on the local device."; | |||
| } | } | |||
| } | } | |||
| case remote { | case remote { | |||
| description | description | |||
| skipping to change at line 2781 ¶ | skipping to change at line 2497 ¶ | |||
| 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 | |||
| <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 2619 ¶ | |||
| leaf destination-node { | leaf destination-node { | |||
| type nw:node-id; | type nw:node-id; | |||
| description | description | |||
| "Indicates the source node identifier."; | "Indicates the source node identifier."; | |||
| } | } | |||
| leaf default-bandwidth { | leaf default-bandwidth { | |||
| type uint64; | type uint64; | |||
| units "Kbps"; | units "Kbps"; | |||
| description | description | |||
| "Bandwidth value used for perdiods that don't match | "Bandwidth value used for periods that don't match | |||
| a schedule."; | a schedule."; | |||
| } | } | |||
| choice time-variant-type { | choice time-variant-type { | |||
| description | description | |||
| "Controls the schedule type."; | "Controls the schedule type."; | |||
| case period { | case period { | |||
| uses schedule:period-of-time; | uses schedule:period-of-time; | |||
| } | } | |||
| case recurrence { | case recurrence { | |||
| uses schedule:recurrence-utc-with-periods { | uses schedule:recurrence-utc-with-periods { | |||
| augment "period-timeticks" { | augment "period-timeticks" { | |||
| description | description | |||
| "Specifies the attributes inside each | "Specifies the attributes inside each | |||
| period-timeticks entry."; | 'period-timeticks' entry."; | |||
| uses link-bandwidth-grouping; | uses link-bandwidth-grouping; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t><xref target="ex-13"/> shows a configuration example of a link's band | <t><xref target="ex-13"/> shows a configuration example in XML <xref tar | |||
| width that is | get="W3C.XML1.0"/> of a link's bandwidth that is | |||
| scheduled between 2025-12-01 0:00 UTC to the end of 2025-12-31 with a daily | scheduled between 2025-12-01 0:00 UTC to the end of 2025-12-31 with a daily | |||
| schedule. In each day, the bandwidth value is scheduled to be 500 Kbps between | schedule. In each day, the bandwidth value is scheduled to be 500 Kbps between | |||
| 1:00 AM to 6:00 AM and 800 Kbps between 10:00 PM to 11:00 PM. The bandwidth | 1:00 AM to 6:00 AM and 800 Kbps between 10:00 PM to 11:00 PM. The bandwidth | |||
| value that is not covered by the period above is 1000 Kbps.</t> | value that is not covered by the period above is 1000 Kbps.</t> | |||
| <figure anchor="ex-13"> | <figure anchor="ex-13"> | |||
| <name>Example of Scheduled Link's Bandwidth</name> | <name>Example of Scheduled Link's Bandwidth</name> | |||
| <artwork><![CDATA[ | <sourcecode type="xml"><![CDATA[ | |||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <link-attributes | <link-attributes | |||
| xmlns="http://example.com/example-scheduled-link-bandwidth" | xmlns="http://example.com/example-scheduled-link-bandwidth" | |||
| xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> | xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> | |||
| <link> | <link> | |||
| <source-node>ne1</source-node> | <source-node>ne1</source-node> | |||
| <destination-node>ne2</destination-node> | <destination-node>ne2</destination-node> | |||
| <default-bandwidth>1000</default-bandwidth> | <default-bandwidth>1000</default-bandwidth> | |||
| <recurrence-first> | <recurrence-first> | |||
| <utc-start-time>2025-12-01T01:00:00Z</utc-start-time> | <start-time-utc>2025-12-01T01:00:00Z</start-time-utc> | |||
| </recurrence-first> | </recurrence-first> | |||
| <frequency>schedule:daily</frequency> | <frequency>schedule:daily</frequency> | |||
| <utc-until>2025-12-31T23:59:59Z</utc-until> | <utc-until>2025-12-31T23:59:59Z</utc-until> | |||
| <period-timeticks> | <period-timeticks> | |||
| <period-start>360000</period-start> | <period-start>360000</period-start> | |||
| <period-end>2160000</period-end> | <period-end>2160000</period-end> | |||
| <scheduled-bandwidth>500</scheduled-bandwidth> | <scheduled-bandwidth>500</scheduled-bandwidth> | |||
| </period-timeticks> | </period-timeticks> | |||
| <period-timeticks> | <period-timeticks> | |||
| <period-start>7920000</period-start> | <period-start>7920000</period-start> | |||
| <period-end>8280000</period-end> | <period-end>8280000</period-end> | |||
| <scheduled-bandwidth>800</scheduled-bandwidth> | <scheduled-bandwidth>800</scheduled-bandwidth> | |||
| </period-timeticks> | </period-timeticks> | |||
| </link> | </link> | |||
| </link-attributes> | </link-attributes> | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="ex-framework"> | <section anchor="ex-framework"> | |||
| <name>Examples of Using "ietf-schedule" Module for Scheduled Use of Resour ces Framework</name> | <name>Examples of Using the "ietf-schedule" Module for Scheduled Use of Re sources Framework</name> | |||
| <t>This section exemplifies how the architecture for supporting scheduled | <t>This section exemplifies how the architecture for supporting scheduled | |||
| reservation of Traffic Engineering (TE) resources in <xref target="RFC8413"/> might leverage the "period-of-time" | reservation of Traffic Engineering (TE) resources in <xref target="RFC8413"/> might leverage the "period-of-time" | |||
| grouping defined in the "ietf-schedule" module to implement scheduled use of | grouping defined in the "ietf-schedule" module to implement scheduled use of | |||
| resources.</t> | resources.</t> | |||
| <t>The following example module shows how a scheduled link capacity reserv ation | <t>The following example module shows how a scheduled link capacity reserv ation | |||
| could be defined.</t> | could be defined.</t> | |||
| <artwork><![CDATA[ | <sourcecode type="yang"><![CDATA[ | |||
| module example-sch-capacity-res { | module example-sch-capacity-res { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-capacity-res"; | namespace "http://example.com/example-sch-capacity-res"; | |||
| prefix "ex-schecaparev"; | prefix "ex-schecaparev"; | |||
| import ietf-network-topology { | import ietf-network-topology { | |||
| prefix "nt"; | prefix "nt"; | |||
| } | } | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "An example to show a scheduled link capacity reservation."; | ||||
| revision "2026-02-20" { | ||||
| description | ||||
| "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container link-capability-reservations { | container link-capability-reservations { | |||
| description | ||||
| "A container for a scheduled link capability reservations."; | ||||
| list scheduled-link-capacity { | list scheduled-link-capacity { | |||
| key "schedule-id"; | key "schedule-id"; | |||
| description | ||||
| "Definition of scheduled link capacity list."; | ||||
| leaf schedule-id { | leaf schedule-id { | |||
| type string; | type string; | |||
| description | ||||
| "The schedule identifier for this schedule rule."; | ||||
| } | } | |||
| leaf link-id { | leaf link-id { | |||
| type nt:link-id; | type nt:link-id; | |||
| description | ||||
| "The identifier of a link in the topology."; | ||||
| } | } | |||
| leaf reserved-capability { | leaf reserved-capability { | |||
| type uint64; | type uint64; | |||
| units "Mbps"; | units "Mbps"; | |||
| description | ||||
| "The reserved capability for a particular link."; | ||||
| } | } | |||
| uses schedule:period-of-time; | uses schedule:period-of-time; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t><xref section="4" sectionFormat="of" target="RFC8413"/> defines the ref erence architecture for scheduled use | <t><xref section="4" sectionFormat="of" target="RFC8413"/> defines the ref erence architecture for scheduled use | |||
| of resources, the service requester sends a request to a Path Computation Ele | of resources. The service requester sends a request to a Path Computation Ele | |||
| ment (PCE) and includes the | ment (PCE) and includes the | |||
| parameters of the Label Switched Path (LSP) that the requester wishes to supp | parameters of the Label Switched Path (LSP) that the requester wishes to supp | |||
| ly, the configuration | ly. The configuration | |||
| example to provide the scheduled resource is shown in <xref target="ex-14"/>. </t> | example to provide the scheduled resource is shown in <xref target="ex-14"/>. </t> | |||
| <figure anchor="ex-14"> | <figure anchor="ex-14"> | |||
| <name>Example of Scheduled Link's Bandwidth Reservation</name> | <name>Example of Scheduled Link's Bandwidth Reservation</name> | |||
| <artwork><![CDATA[ | <sourcecode type="xml"><![CDATA[ | |||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <link-capability-reservations | <link-capability-reservations | |||
| xmlns="http://example.com/example-sch-capacity-res" | xmlns="http://example.com/example-sch-capacity-res" | |||
| xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> | xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> | |||
| <scheduled-link-capacity> | <scheduled-link-capacity> | |||
| <schedule-id>1</schedule-id> | <schedule-id>1</schedule-id> | |||
| <link-id>1-2-1</link-id> | <link-id>1-2-1</link-id> | |||
| <reserved-capability>500</reserved-capability> | <reserved-capability>500</reserved-capability> | |||
| <period-start>2025-03-10T08:00:00Z</period-start> | <period-start>2025-03-10T08:00:00Z</period-start> | |||
| <period-end>2025-03-10T09:00:00Z</period-end> | <period-end>2025-03-10T09:00:00Z</period-end> | |||
| skipping to change at line 3035 ¶ | skipping to change at line 2780 ¶ | |||
| <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: | ||||
| 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 | ||||
| Gbmgk/fiN9BaB+lQ5wnZQHWFyj7RrFhKfEw+5/Vikka/xBSmM74BXJYgoDY0 | ||||
| tkEYWVtFTjrJ52bFbiCetPIICNMBWR22G4VzqHnFF3hoTPt7mri6F4CX53x8 | ||||
| 0VQ5mTbRC53XUzylJiVSq2AABSpo41nKLscyB4oG4Vyh7i7glcq3q9Vk3yLy | ||||
| tGOxjAzx+e1tRXNeKT3TuEBRSaC9Ja4V7VJVnpkQW4nW1TjMrja0B6ilGe6T | ||||
| DVr3uIVThbtkf0iWXFBMHjfU7qH1rvq1u2GC3TQPY4HaU+6AotKH0TxTpRNk | ||||
| ub/byZVltw35qhbNFIf3fFk2sJ/j2Ho2cV2LTr8scdKQj9EFkGIqLF+jwVFw | ||||
| LWwYEQgXzBhpSHlLLfUScZavtNbSp9aJFuNEmMJslozTGF1Sq2ufGu08ZdNG | ||||
| eXAcFdTXJMNqpOXwdaeFa2BjXceS4JQ4lkwdnimdUoh2sKpeaYWnLFUtb6VX | ||||
| Cti3MCvUTrlXo8K3Tl3uZozSJrjfhoxSe3lsM3OBJXd7O3ZdRkF/4ca34ozG | ||||
| NwfrINdANqbVhnr60YHLMi5bIFIdqT2vO1J2pzw3k1NPjLkpUkBbmy5O14yE | ||||
| aVqbWio1HXCeXEJXFFJTS2tbKhXsg9SiyfF/pBTA5h/nMq2LJmoxAhWliWe9 | ||||
| hms2qMiHx9CR9cajJY+StLPd91Y4Jr5qrbztjcZRDa+2t8zi2MjQK+TDu3CN | ||||
| GOfm2N9wr3VzRIASQJHz0rAH+6C7g47p7hj0QjA5/dgCs3K3iGrAAw0JaSD+ | ||||
| c8QnTag5kf64+CCeJYXucb2rfu26Oo4KDdAt/bNlJ0rAmzHCQYczauLehz1n | ||||
| VibOYr/rhAQk6cUlSsIbNoo49hH1RQ6CUNPcGQzp3M6EX8vdoGIy2t/ZfHie | ||||
| Yoy2UUfQ+TOJ62mFAoa1DrBRMmAeeQGwUtgh7A6KPEpNgAfFDaLUO88ByxZp | ||||
| sBdY4xE6tTTs82QUSzArh6BEGPRRKuUdNOkJmQx0kkF+SYkvKOVMhiIOEQ5o | ||||
| ClYKRguPULGxwg9K/ZVlXEQSXlYQ+NIjnp5nOYokNjUEI9CdjYHcQZIBoyfm | ||||
| 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 | ||||
| 3PX19SAFPkeAcQl4msMDYt1WShsFJ20WJT9UtlB787ADl7YN8lmsMf8NOoH5 | ||||
| c1oVeCzFK3GPTGpMuUboBVMwHakDDpa6pg78Glq1az3+F+9z4++qpjn+ToXL | ||||
| 9S/chTRjs8n8Zj7X9cjxT69E+ZpszjWwl9bYEl9TlcnXblERnjrxy8JHw51o | ||||
| HVGBReE3+FcsCb8RrAivsXcTrVYWvkvCWFFUZBQEEZI+F0RJhvfvYkOGg+4C | ||||
| +YnrivKzIaUtMaqZn8jPKIL/ib8t8ovaLoLLXBlQpX6QHRXKG1bqIx6Kp+Ou | ||||
| lWgwGfSsAzoj0BU4oXsr9wiSU2C9CVqo4voi7OPVxoNwgW2kG6v44xH6rNgo | ||||
| 84VlpEpbjiRpk4Zioxdo23bd0uAS5SPITm0nMfro5CvJYI/ICdwH6RyfAb4y | ||||
| 0xR/2Aez+Y1+0EQ/oeG09kPAFb0yqekR+L5EY4Th0hGaQeYtI1R1UoaG2Fo6 | ||||
| xJl8uXyM62SchUfZXjrKW/3tCnO5BMEbGmZn+WTUp8tHmRRpaIzdpWM85Q+X | ||||
| j1Ditg6NsbecstSnC0b51MYZTlGta9yNGjQ3ic6VZu0SDvnRICtv2Nr6+n99 | ||||
| vfHtx//qb7xeX1//62b/0d++3jje+Hb9bH2T/vo45H+24J/tv22sOdv362jt | ||||
| AJ7v/o3aWL9ubHx8rXp7u/bN4okd2+WcLxOr6KWkGxtRYinxUYMon6VyBYw6 | ||||
| rJW/a52v9HAuThVOvfZ2TaKlbxqvjtd0XgK6Q4A+BdSCrS7pAt+B3GM7UFcA | ||||
| +TChtByQumuQTmtna1qpcRPcpqWQCqeoyZMyW6v0yQvOfe0nBnftxVqz59LO | ||||
| RGiARHWB1FTAH3qL2JBgx7IFh6p8ZD4ktYJPREEbUOEN2qink6K4mBmHsS5W | ||||
| LicW2KIs81HKcRq4bv9U2eKKkj3L32z9oGjZG2xb5r6qBu04BdtFNHli9UeW | ||||
| McbrOgj0rEsacadodLmjfbNcHwgWRjqT9IpW8JSKgcCflgrzOruxZhVcQ80u | ||||
| Lq+6oPpPOj2f306HgbtV5u1tVa1SbD6ENEms+VkoW1qCPp84113wp1GIfuUi | ||||
| 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 | ||||
| </rfc> | </rfc> | |||
| End of changes. 262 change blocks. | ||||
| 1422 lines changed or deleted | 637 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||