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