| 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(../../frequency," | |||
| + "'schedule:secondly')) or (current() < 100)) and " | + "'schedule:secondly')) or (current() < 100)) and " | |||
| skipping to change at line 1426 ¶ | skipping to change at line 1408 ¶ | |||
| + " or (current() < 360000)) and " | + " or (current() < 360000)) and " | |||
| + "(not(derived-from(../../frequency,'schedule:daily'))" | + "(not(derived-from(../../frequency,'schedule:daily'))" | |||
| + " or (current() < 8640000)) and " | + " or (current() < 8640000)) and " | |||
| + "(not(derived-from(../../frequency,'schedule:weekly'))" | + "(not(derived-from(../../frequency,'schedule:weekly'))" | |||
| + " or (current() < 60480000)) and " | + " or (current() < 60480000)) and " | |||
| + "(not(derived-from(../../frequency," | + "(not(derived-from(../../frequency," | |||
| + "'schedule:monthly')) or (current() < 267840000)) and " | + "'schedule:monthly')) or (current() < 267840000)) and " | |||
| + "(not(derived-from(../../frequency,'schedule:yearly'))" | + "(not(derived-from(../../frequency,'schedule:yearly'))" | |||
| + " or (current() < 3162240000))" { | + " or (current() < 3162240000))" { | |||
| error-message | error-message | |||
| "The period-start must not exceed the frequency | "The 'period-start' must not exceed the frequency | |||
| interval."; | interval."; | |||
| } | } | |||
| description | description | |||
| "Start time of the schedule within one recurrence. | "Start time of the schedule within one recurrence. | |||
| Given that the value is in timeticks format | Given that the value is in timeticks format | |||
| (i.e., 1/100 of a second), the values in the must | (i.e., 1/100 of a second), the values in the must | |||
| statement translate to: 100 = 1s (secondly), | statement translate to 100 = 1 s (secondly), | |||
| 6000 = 60 s = 1 min (minutely), and so on for all | 6000 = 60 s = 1 min (minutely), and so on for all | |||
| instances in the must statement invariant."; | instances in the must statement invariant."; | |||
| } | } | |||
| leaf period-end { | leaf period-end { | |||
| type yang:timeticks; | type yang:timeticks; | |||
| description | description | |||
| "End time of the schedule within one recurrence. | "End time of the schedule within one recurrence. | |||
| The period start MUST be no later than the period | The period start MUST be no later than the period | |||
| end."; | end."; | |||
| } | } | |||
| skipping to change at line 1507 ¶ | skipping to change at line 1489 ¶ | |||
| when "derived-from(../../frequency, 'schedule:monthly') or " | when "derived-from(../../frequency, 'schedule:monthly') or " | |||
| + "(derived-from(../../frequency, 'schedule:yearly') " | + "(derived-from(../../frequency, 'schedule:yearly') " | |||
| + " and not(../../byyearweek))"; | + " and not(../../byyearweek))"; | |||
| type int32 { | type int32 { | |||
| range "-53..-1|1..53"; | range "-53..-1|1..53"; | |||
| } | } | |||
| description | description | |||
| "When specified, it indicates the nth occurrence of a | "When specified, it indicates the nth occurrence of a | |||
| specific day within the monthly or yearly recurrence | specific day within the monthly or yearly recurrence | |||
| rule. For example, within a monthly rule, +1 monday | rule. For example, within a monthly rule, +1 monday | |||
| represents the first monday within the month, whereas | represents the first Monday within the month, whereas | |||
| -1 monday represents the last monday of the month."; | -1 monday represents the last Monday of the month."; | |||
| } | } | |||
| leaf weekday { | leaf weekday { | |||
| type schedule:weekday; | type schedule:weekday; | |||
| description | description | |||
| "Corresponds to seven days of the week."; | "Corresponds to seven days of the week."; | |||
| } | } | |||
| } | } | |||
| leaf-list bymonthday { | leaf-list bymonthday { | |||
| type int32 { | type int32 { | |||
| range "-31..-1|1..31"; | range "-31..-1|1..31"; | |||
| skipping to change at line 1553 ¶ | skipping to change at line 1535 ¶ | |||
| description | description | |||
| "Specifies a list of months of the year."; | "Specifies a list of months of the year."; | |||
| } | } | |||
| leaf-list bysetpos { | leaf-list bysetpos { | |||
| type int32 { | type int32 { | |||
| range "-366..-1|1..366"; | range "-366..-1|1..366"; | |||
| } | } | |||
| description | description | |||
| "Specifies a list of values that corresponds to the nth | "Specifies a list of values that corresponds to the nth | |||
| occurrence within the set of recurrence instances | occurrence within the set of recurrence instances | |||
| specified by the rule. It must only be used in conjunction | specified by the rule. It must only be used in conjunction | |||
| with another 'byxxx' (bysecond, byminute, etc.) rule | with another 'byxxx' (bysecond, byminute, etc.) rule | |||
| part ."; | part."; | |||
| } | } | |||
| leaf workweek-start { | leaf workweek-start { | |||
| type schedule:weekday; | type schedule:weekday; | |||
| description | description | |||
| "Specifies the day on which the workweek starts."; | "Specifies the day on which the workweek starts."; | |||
| } | } | |||
| leaf-list exception-dates { | leaf-list exception-dates { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Defines a list of exceptions for recurrence."; | "Defines a list of exceptions for recurrence."; | |||
| skipping to change at line 1603 ¶ | skipping to change at line 1585 ¶ | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| config false; | config false; | |||
| description | description | |||
| "Reports the local time as used by the entity that | "Reports the local time as used by the entity that | |||
| hosts the schedule."; | hosts the schedule."; | |||
| } | } | |||
| leaf last-update { | leaf last-update { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| config false; | config false; | |||
| description | description | |||
| "Reports the timestamp that the schedule is last updated."; | "Reports the timestamp of when the schedule is last | |||
| updated."; | ||||
| } | } | |||
| leaf counter { | leaf counter { | |||
| when "derived-from-or-self(../schedule-type, " | when "derived-from-or-self(../schedule-type, " | |||
| + "'schedule:recurrence')"; | + "'schedule:recurrence')"; | |||
| type yang:counter32; | type yang:counter32; | |||
| config false; | config false; | |||
| description | description | |||
| "The number of occurrences while invoking the scheduled | "The number of occurrences while invoking the scheduled | |||
| action successfully. The count wraps around when it reaches | action successfully. The count wraps around when it reaches | |||
| the maximum value."; | the maximum value."; | |||
| } | } | |||
| leaf last-occurrence { | leaf last-occurrence { | |||
| when "derived-from-or-self(../schedule-type, " | when "derived-from-or-self(../schedule-type, " | |||
| + "'schedule:recurrence')"; | + "'schedule:recurrence')"; | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| config false; | config false; | |||
| description | description | |||
| "Indicates the timestamp of last occurrence."; | "Indicates the timestamp of last occurrence."; | |||
| } | } | |||
| skipping to change at line 1655 ¶ | skipping to change at line 1638 ¶ | |||
| config false; | config false; | |||
| description | description | |||
| "Counts the number of failures while invoking the scheduled | "Counts the number of failures while invoking the scheduled | |||
| action."; | action."; | |||
| } | } | |||
| } | } | |||
| grouping schedule-status-with-time-zone { | grouping schedule-status-with-time-zone { | |||
| description | description | |||
| "This grouping defines common properties of scheduling | "This grouping defines common properties of scheduling | |||
| status, including timezone"; | status, including timezone."; | |||
| leaf time-zone-identifier { | leaf time-zone-identifier { | |||
| type sys:timezone-name; | type sys:timezone-name; | |||
| config false; | config false; | |||
| description | description | |||
| "Indicates the identifier for the time zone in a time | "Indicates the identifier for the time zone in a time | |||
| zone database."; | zone database."; | |||
| } | } | |||
| uses schedule-status; | uses schedule-status; | |||
| } | } | |||
| skipping to change at line 1684 ¶ | skipping to change at line 1667 ¶ | |||
| schedule within a device, controller, network, etc. | schedule within a device, controller, network, etc. | |||
| The unicity scope depends on the implementation."; | The unicity scope depends on the implementation."; | |||
| } | } | |||
| uses schedule-status; | uses schedule-status; | |||
| } | } | |||
| } | } | |||
| ]]></sourcecode> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="security-considerations"> | <section anchor="security-considerations"> | |||
| <name>Security Considerations</name> | <name>Security Considerations</name> | |||
| <t>This section uses the template described in <xref section="3.7" section | <t>This section is modeled after the template described in <xref section=" | |||
| Format="of" target="I-D.ietf-netmod-rfc8407bis"/>.</t> | 3.7" sectionFormat="of" target="I-D.ietf-netmod-rfc8407bis"/>.</t> | |||
| <t>The "ietf-schedule" YANG module specified in this document defines sche | <!--[rfced] *AD - Security Considerations Questions | |||
| ma for data | ||||
| a) FYI - We updated the Security Considerations section to | ||||
| match the template at | ||||
| <https://wiki.ietf.org/group/ops/yang-security-guidelines>. | ||||
| Please review and let us know if any further updates are | ||||
| needed. | ||||
| b) As the Writable nodes, Readable nodes, and RFC/action operations | ||||
| sections are not applicable to this document, do the following | ||||
| sentences need to be added accordingly (per the template)? | ||||
| - "There are no particularly sensitive writable data nodes." | ||||
| - "There are no particularly sensitive readable data nodes." | ||||
| - "There are no particularly sensitive RPC or action operations." | ||||
| c) We note that in the paragraph that relates to the "No data nodes" | ||||
| section, there is a sentence missing (i.e., from the template: "For | ||||
| example, reusing some of these groupings will expose privacy-related | ||||
| information (e.g., 'node-example')". Is that omission intentional or | ||||
| should it be added for clarity? | ||||
| From the template: | ||||
| Modules that use the groupings that are defined in this document | ||||
| should identify the corresponding security considerations. For | ||||
| example, reusing some of these groupings will expose | ||||
| privacy-related information (e.g., 'node-example'). | ||||
| Current text in the document: | ||||
| Modules that use the groupings that are defined in this document | ||||
| should identify the corresponding security considerations, for | ||||
| example: | ||||
| --> | ||||
| <t>The "ietf-schedule" YANG module defines a data model | ||||
| that is designed to be accessed via YANG-based management protocols, such | that is designed to be accessed via YANG-based management protocols, such | |||
| as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. Th ese YANG-based management protocols (1) have to use | as NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. T hese YANG-based management protocols (1) have to use | |||
| a secure transport layer (e.g., SSH <xref target="RFC4252"/>, TLS <xref targe t="RFC8446"/>, and QUIC <xref target="RFC9000"/>) | a secure transport layer (e.g., SSH <xref target="RFC4252"/>, TLS <xref targe t="RFC8446"/>, and QUIC <xref target="RFC9000"/>) | |||
| and (2) have to use mutual authentication.</t> | and (2) have to use mutual authentication.</t> | |||
| <t>The Network Configuration Access Control Model (NACM) <xref target="RFC 8341"/> | <t>The Network Configuration Access Control Model (NACM) <xref target="RFC 8341"/> | |||
| provides the means to restrict access for particular NETCONF or | provides the means to restrict access for particular NETCONF or | |||
| RESTCONF users to a preconfigured subset of all available NETCONF or | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
| RESTCONF protocol operations and content.</t> | RESTCONF protocol operations and content.</t> | |||
| <t>The "ietf-schedule" module defines a set of types and | <t>The "ietf-schedule" module defines a set of identities, types, and | |||
| groupings. These nodes are intended to be reused by other YANG | groupings. These nodes are intended to be reused by other YANG | |||
| modules. The module by itself does not expose any data nodes that | modules. The module by itself does not expose any data nodes that | |||
| are writable, data nodes that contain read-only state, or RPCs. As | are writable, data nodes that contain read-only state, or RPCs. As | |||
| such, there are no additional security issues related to the "ietf-schedule" | such, there are no additional security issues related to the "ietf-schedule" | |||
| module that need to be considered.</t> | module that need to be considered.</t> | |||
| <t>Modules that use the groupings that are defined in this document | <t>Modules that use the groupings that are defined in this document | |||
| should identify the corresponding security considerations, e.g.,:</t> | should identify the corresponding security considerations. For example, | |||
| reusing the following groupings will expose privacy-related information:</t> | ||||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>Scheduling depends on reliable and accurate time synchronization. I naccurate date | <t>Scheduling depends on reliable and accurate time synchronization. I naccurate date | |||
| and time setting can lead to scheduling events being triggered at incorrect | and time setting can lead to scheduling events being triggered at incorrect | |||
| intervals, potentially causing system failures or security vulnerabilities.</t> | intervals, potentially causing system failures or security vulnerabilities.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>Recurring events may conceal abnormal behavior or security threats, which | <t>Recurring events may conceal abnormal behavior or security threats, which | |||
| may be drowned out by normal events, especially when they are triggered frequent ly.</t> | may be drowned out by normal events, especially when they are triggered frequent ly.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The absence of detailed logs and audit records of each occurrence t rigger time | <t>The absence of detailed logs and audit records of each occurrence t rigger time | |||
| and action results, and so on, may make security incidents difficult to trace.< /t> | and action results and therefore may make security incidents difficult to trace. </t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>Care must be taken when defining recurrences occurring very often a nd | <t>Care must be taken when defining recurrences occurring very often a nd | |||
| frequent that can be an additional source of attacks by keeping the system | frequent that can be an additional source of attacks by keeping the system | |||
| permanently busy with the management of scheduling.</t> | permanently busy with the management of scheduling.</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| </section> | </section> | |||
| <section anchor="iana-considerations"> | <section anchor="iana-considerations"> | |||
| <name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
| <section anchor="the-ietf-xml-registry"> | <section anchor="the-ietf-xml-registry"> | |||
| <name>The "IETF XML" Registry</name> | <name>The IETF XML Registry</name> | |||
| <t>This document registers the following URI in the "IETF XML Registry" | <t>This document has registered the following URI in the "IETF XML Regis | |||
| <xref target="RFC3688"/>.</t> | try" <xref target="RFC3688"/>.</t> | |||
| <artwork><![CDATA[ | <dl> | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-schedule | <dt>URI:</dt> | |||
| Registrant Contact: The IESG. | <dd> | |||
| XML: N/A, the requested URI is an XML namespace. | <t>urn:ietf:params:xml:ns:yang:ietf-schedule</t> | |||
| ]]></artwork> | </dd> | |||
| <dt>Registrant Contact:</dt> | ||||
| <dd> | ||||
| <t>The IESG.</t> | ||||
| </dd> | ||||
| <dt>XML:</dt> | ||||
| <dd> | ||||
| <t>N/A; the requested URI is an XML namespace.</t> | ||||
| </dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| <section anchor="the-yang-module-names-registry"> | <section anchor="the-yang-module-names-registry"> | |||
| <name>The "YANG Module Names" Registry</name> | <name>The YANG Module Names Registry</name> | |||
| <t>This document registers the following YANG module in the "YANG Module | <t>This document has registered the following YANG module in the "YANG M | |||
| Names" | odule Names" | |||
| registry <xref target="RFC6020"/>.</t> | registry <xref target="RFC6020"/>.</t> | |||
| <artwork><![CDATA[ | <dl> | |||
| name: ietf-schedule | <dt>Name:</dt> | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-schedule | <dd> | |||
| prefix: schedule | <t>ietf-schedule</t> | |||
| maintained by IANA? N | </dd> | |||
| reference: RFC XXXX | <dt>Maintained by IANA:</dt> | |||
| ]]></artwork> | <dd> | |||
| <t>N</t> | ||||
| </dd> | ||||
| <dt>Namespace:</dt> | ||||
| <dd> | ||||
| <t>urn:ietf:params:xml:ns:yang:ietf-schedule</t> | ||||
| </dd> | ||||
| <dt>Prefix:</dt> | ||||
| <dd> | ||||
| <t>schedule</t> | ||||
| </dd> | ||||
| <dt>Reference:</dt> | ||||
| <dd> | ||||
| <t>RFC 9922</t> | ||||
| </dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <displayreference target="I-D.ietf-netmod-eca-policy" to="NETMOD-ECA-POLICY" | ||||
| /> | ||||
| <displayreference target="I-D.ietf-netmod-rfc8407bis" to="YANG-GUIDE"/> | ||||
| <displayreference target="I-D.ietf-ntp-ntpv5" to="NTPv5"/> | ||||
| <displayreference target="I-D.ietf-opsawg-scheduling-oam-tests" to="YANG-OAM | ||||
| "/> | ||||
| <displayreference target="I-D.ietf-opsawg-ucl-acl" to="YANG-NAC"/> | ||||
| <displayreference target="I-D.ietf-tvr-schedule-yang" to="YANG-SCHEDULE"/> | ||||
| <displayreference target="I-D.liu-netmod-yang-schedule" to="YANG-CONFIG-SCHE | ||||
| DULE"/> | ||||
| <references anchor="sec-combined-references"> | <references anchor="sec-combined-references"> | |||
| <name>References</name> | <name>References</name> | |||
| <references anchor="sec-normative-references"> | <references anchor="sec-normative-references"> | |||
| <name>Normative References</name> | <name>Normative References</name> | |||
| <reference anchor="RFC3231"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | |||
| <front> | 231.xml"/> | |||
| <title>Definitions of Managed Objects for Scheduling Management Oper | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
| ations</title> | 119.xml"/> | |||
| <author fullname="D. Levi" initials="D." surname="Levi"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwae | 174.xml"/> | |||
| lder"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| <date month="January" year="2002"/> | 950.xml"/> | |||
| <abstract> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
| <t>This memo defines a portion of the Management Information Base | 545.xml"/> | |||
| (MIB) for use with network management protocols in the Internet community. In pa | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| rticular, it describes a set of managed objects that are used to schedule manage | 317.xml"/> | |||
| ment operations periodically or at specified dates and times. [STANDARDS-TRACK]< | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
| /t> | 911.xml"/> | |||
| </abstract> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| </front> | 341.xml"/> | |||
| <seriesInfo name="RFC" value="3231"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | |||
| <seriesInfo name="DOI" value="10.17487/RFC3231"/> | 688.xml"/> | |||
| </reference> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
| <reference anchor="RFC2119"> | 020.xml"/> | |||
| <front> | ||||
| <title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
| le> | ||||
| <author fullname="S. Bradner" initials="S." surname="Bradner"/> | ||||
| <date month="March" year="1997"/> | ||||
| <abstract> | ||||
| <t>In many standards track documents several words are used to sig | ||||
| nify the requirements in the specification. These words are often capitalized. T | ||||
| his document defines these words as they should be interpreted in IETF documents | ||||
| . This document specifies an Internet Best Current Practices for the Internet Co | ||||
| mmunity, and requests discussion and suggestions for improvements.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="2119"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174"> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
| tle> | ||||
| <author fullname="B. Leiba" initials="B." surname="Leiba"/> | ||||
| <date month="May" year="2017"/> | ||||
| <abstract> | ||||
| <t>RFC 2119 specifies common key words that may be used in protoco | ||||
| l specifications. This document aims to reduce the ambiguity by clarifying that | ||||
| only UPPERCASE usage of the key words have the defined special meanings.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="8174"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7950"> | ||||
| <front> | ||||
| <title>The YANG 1.1 Data Modeling Language</title> | ||||
| <author fullname="M. Bjorklund" initials="M." role="editor" surname= | ||||
| "Bjorklund"/> | ||||
| <date month="August" year="2016"/> | ||||
| <abstract> | ||||
| <t>YANG is a data modeling language used to model configuration da | ||||
| ta, state data, Remote Procedure Calls, and notifications for network management | ||||
| protocols. This document describes the syntax and semantics of version 1.1 of t | ||||
| he YANG language. YANG version 1.1 is a maintenance release of the YANG language | ||||
| , addressing ambiguities and defects in the original specification. There are a | ||||
| small number of backward incompatibilities from YANG version 1. This document al | ||||
| so specifies the YANG mappings to the Network Configuration Protocol (NETCONF).< | ||||
| /t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7950"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7950"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5545"> | ||||
| <front> | ||||
| <title>Internet Calendaring and Scheduling Core Object Specification | ||||
| (iCalendar)</title> | ||||
| <author fullname="B. Desruisseaux" initials="B." role="editor" surna | ||||
| me="Desruisseaux"/> | ||||
| <date month="September" year="2009"/> | ||||
| <abstract> | ||||
| <t>This document defines the iCalendar data format for representin | ||||
| g and exchanging calendaring and scheduling information such as events, to-dos, | ||||
| journal entries, and free/busy information, independent of any particular calend | ||||
| ar service or protocol. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5545"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5545"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7317"> | ||||
| <front> | ||||
| <title>A YANG Data Model for System Management</title> | ||||
| <author fullname="A. Bierman" initials="A." surname="Bierman"/> | ||||
| <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
| <date month="August" year="2014"/> | ||||
| <abstract> | ||||
| <t>This document defines a YANG data model for the configuration a | ||||
| nd identification of some common system properties within a device containing a | ||||
| Network Configuration Protocol (NETCONF) server. This document also includes dat | ||||
| a node definitions for system identification, time-of-day management, user manag | ||||
| ement, DNS resolver configuration, and some protocol operations for system manag | ||||
| ement.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7317"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7317"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6991"> | ||||
| <front> | ||||
| <title>Common YANG Data Types</title> | ||||
| <author fullname="J. Schoenwaelder" initials="J." role="editor" surn | ||||
| ame="Schoenwaelder"/> | ||||
| <date month="July" year="2013"/> | ||||
| <abstract> | ||||
| <t>This document introduces a collection of common data types to b | ||||
| e used with the YANG data modeling language. This document obsoletes RFC 6021.</ | ||||
| t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6991"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6991"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8341"> | ||||
| <front> | ||||
| <title>Network Configuration Access Control Model</title> | ||||
| <author fullname="A. Bierman" initials="A." surname="Bierman"/> | ||||
| <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
| <date month="March" year="2018"/> | ||||
| <abstract> | ||||
| <t>The standardization of network configuration interfaces for use | ||||
| with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requ | ||||
| ires a structured and secure operating environment that promotes human usability | ||||
| and multi-vendor interoperability. There is a need for standard mechanisms to r | ||||
| estrict NETCONF or RESTCONF protocol access for particular users to a preconfigu | ||||
| red subset of all available NETCONF or RESTCONF protocol operations and content. | ||||
| This document defines such an access control model.</t> | ||||
| <t>This document obsoletes RFC 6536.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="STD" value="91"/> | ||||
| <seriesInfo name="RFC" value="8341"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8341"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3688"> | ||||
| <front> | ||||
| <title>The IETF XML Registry</title> | ||||
| <author fullname="M. Mealling" initials="M." surname="Mealling"/> | ||||
| <date month="January" year="2004"/> | ||||
| <abstract> | ||||
| <t>This document describes an IANA maintained registry for IETF st | ||||
| andards which use Extensible Markup Language (XML) related items such as Namespa | ||||
| ces, Document Type Declarations (DTDs), Schemas, and Resource Description Framew | ||||
| ork (RDF) Schemas.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="81"/> | ||||
| <seriesInfo name="RFC" value="3688"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3688"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6020"> | ||||
| <front> | ||||
| <title>YANG - A Data Modeling Language for the Network Configuration | ||||
| Protocol (NETCONF)</title> | ||||
| <author fullname="M. Bjorklund" initials="M." role="editor" surname= | ||||
| "Bjorklund"/> | ||||
| <date month="October" year="2010"/> | ||||
| <abstract> | ||||
| <t>YANG is a data modeling language used to model configuration an | ||||
| d state data manipulated by the Network Configuration Protocol (NETCONF), NETCON | ||||
| F remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6020"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6020"/> | ||||
| </reference> | ||||
| </references> | </references> | |||
| <references anchor="sec-informative-references"> | <references anchor="sec-informative-references"> | |||
| <name>Informative References</name> | <name>Informative References</name> | |||
| <reference anchor="I-D.ietf-opsawg-ucl-acl"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| <front> | ietf-netmod-eca-policy.xml"/> | |||
| <title>A YANG Data Model and RADIUS Extension for Policy-based Netwo | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| rk Access Control</title> | ietf-netmod-rfc8407bis.xml"/> | |||
| <author fullname="Qiufang Ma" initials="Q." surname="Ma"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| <organization>Huawei</organization> | ietf-ntp-ntpv5.xml"/> | |||
| </author> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| <author fullname="Qin Wu" initials="Q." surname="Wu"> | ietf-opsawg-scheduling-oam-tests.xml"/> | |||
| <organization>Huawei</organization> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| </author> | ietf-opsawg-ucl-acl.xml"/> | |||
| <author fullname="Mohamed Boucadair" initials="M." surname="Boucadai | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| r"> | ietf-tvr-schedule-yang.xml"/> | |||
| <organization>Orange</organization> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| </author> | liu-netmod-yang-schedule.xml"/> | |||
| <author fullname="Daniel King" initials="D." surname="King"> | <reference anchor="W3C.XML1.0" target="https://www.w3.org/TR/2008/REC-xm | |||
| <organization>Lancaster University</organization> | l-20081126/"> | |||
| </author> | ||||
| <date day="20" month="March" year="2025"/> | ||||
| <abstract> | ||||
| <t> This document defines a YANG data model for policy-based net | ||||
| work | ||||
| access control, which provides consistent and efficient enforcement | ||||
| of network access control policies based on group identity. | ||||
| Moreover, this document defines a mechanism to ease the maintenance | ||||
| of the mapping between a user group identifier and a set of IP/MAC | ||||
| addresses to enforce policy-based network access control. | ||||
| In addition, the document defines a Remote Authentication Dial-in | ||||
| User Service (RADIUS) attribute that is used to communicate the user | ||||
| group identifier as part of identification and authorization | ||||
| information. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-ucl-acl-07" | ||||
| /> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-opsawg-scheduling-oam-tests"> | ||||
| <front> | ||||
| <title>A YANG Data Model for Network Diagnosis using Scheduled Seque | ||||
| nces of OAM Tests</title> | ||||
| <author fullname="Luis M. Contreras" initials="L. M." surname="Contr | ||||
| eras"> | ||||
| <organization>Telefonica</organization> | ||||
| </author> | ||||
| <author fullname="Victor Lopez" initials="V." surname="Lopez"> | ||||
| <organization>Nokia</organization> | ||||
| </author> | ||||
| <date day="7" month="July" year="2025"/> | ||||
| <abstract> | ||||
| <t> This document defines a YANG data model for network diagnosi | ||||
| s on- | ||||
| demand relying upon Operations, Administration, and Maintenance (OAM) | ||||
| tests. This document defines both 'oam-unitary-test' and 'oam-test- | ||||
| sequence' YANG modules to manage the lifecycle of network diagnosis | ||||
| procedures, primarily intended for use by an SDN controller or | ||||
| network orchestrator, rather than by individual network nodes. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-scheduling- | ||||
| oam-tests-01"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-tvr-schedule-yang"> | ||||
| <front> | ||||
| <title>YANG Data Model for Scheduled Attributes</title> | ||||
| <author fullname="Yingzhen Qu" initials="Y." surname="Qu"> | ||||
| <organization>Futurewei Technologies</organization> | ||||
| </author> | ||||
| <author fullname="Acee Lindem" initials="A." surname="Lindem"> | ||||
| <organization>Arrcus, Inc.</organization> | ||||
| </author> | ||||
| <author fullname="Eric Kinzie" initials="E." surname="Kinzie"> | ||||
| <organization>LabN Consulting, L.L.C.</organization> | ||||
| </author> | ||||
| <author fullname="Don Fedyk" initials="D." surname="Fedyk"> | ||||
| <organization>LabN Consulting, L.L.C.</organization> | ||||
| </author> | ||||
| <author fullname="Marc Blanchet" initials="M." surname="Blanchet"> | ||||
| <organization>Viagenie</organization> | ||||
| </author> | ||||
| <date day="4" month="July" year="2025"/> | ||||
| <abstract> | ||||
| <t> The YANG model in this document includes three modules, and | ||||
| can be | ||||
| used to manage network resources and topologies with scheduled | ||||
| attributes, such as predictable link loss and link connectivity as a | ||||
| function of time. The intent is to have this information be utilized | ||||
| by Time-Variant Routing systems. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-tvr-schedule-yang- | ||||
| 05"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8413"> | ||||
| <front> | ||||
| <title>Framework for Scheduled Use of Resources</title> | ||||
| <author fullname="Y. Zhuang" initials="Y." surname="Zhuang"/> | ||||
| <author fullname="Q. Wu" initials="Q." surname="Wu"/> | ||||
| <author fullname="H. Chen" initials="H." surname="Chen"/> | ||||
| <author fullname="A. Farrel" initials="A." surname="Farrel"/> | ||||
| <date month="July" year="2018"/> | ||||
| <abstract> | ||||
| <t>Time-Scheduled (TS) reservation of Traffic Engineering (TE) res | ||||
| ources can be used to provide resource booking for TE Label Switched Paths so as | ||||
| to better guarantee services for customers and to improve the efficiency of net | ||||
| work resource usage at any moment in time, including network usage that is plann | ||||
| ed for the future. This document provides a framework that describes and discuss | ||||
| es the architecture for supporting scheduled reservation of TE resources. This d | ||||
| ocument does not describe specific protocols or protocol extensions needed to re | ||||
| alize this service.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8413"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8413"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8340"> | ||||
| <front> | ||||
| <title>YANG Tree Diagrams</title> | ||||
| <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
| <author fullname="L. Berger" initials="L." role="editor" surname="Be | ||||
| rger"/> | ||||
| <date month="March" year="2018"/> | ||||
| <abstract> | ||||
| <t>This document captures the current syntax used in YANG module t | ||||
| ree diagrams. The purpose of this document is to provide a single location for t | ||||
| his definition. This syntax may be updated from time to time based on the evolut | ||||
| ion of the YANG language.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="215"/> | ||||
| <seriesInfo name="RFC" value="8340"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8340"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-netmod-rfc8407bis"> | ||||
| <front> | ||||
| <title>Guidelines for Authors and Reviewers of Documents Containing | ||||
| YANG Data Models</title> | ||||
| <author fullname="Andy Bierman" initials="A." surname="Bierman"> | ||||
| <organization>YumaWorks</organization> | ||||
| </author> | ||||
| <author fullname="Mohamed Boucadair" initials="M." surname="Boucadai | ||||
| r"> | ||||
| <organization>Orange</organization> | ||||
| </author> | ||||
| <author fullname="Qin Wu" initials="Q." surname="Wu"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <date day="5" month="June" year="2025"/> | ||||
| <abstract> | ||||
| <t> This document provides guidelines for authors and reviewers | ||||
| of | ||||
| specifications containing YANG data models, including IANA-maintained | ||||
| modules. Recommendations and procedures are defined, which are | ||||
| intended to increase interoperability and usability of Network | ||||
| Configuration Protocol (NETCONF) and RESTCONF Protocol | ||||
| implementations that utilize YANG modules. This document obsoletes | ||||
| RFC 8407. | ||||
| Also, this document updates RFC 8126 by providing additional | ||||
| guidelines for writing the IANA considerations for RFCs that specify | ||||
| IANA-maintained modules. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-rfc8407bis- | ||||
| 28"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3339"> | ||||
| <front> | ||||
| <title>Date and Time on the Internet: Timestamps</title> | ||||
| <author fullname="G. Klyne" initials="G." surname="Klyne"/> | ||||
| <author fullname="C. Newman" initials="C." surname="Newman"/> | ||||
| <date month="July" year="2002"/> | ||||
| <abstract> | ||||
| <t>This document defines a date and time format for use in Interne | ||||
| t protocols that is a profile of the ISO 8601 standard for representation of dat | ||||
| es and times using the Gregorian calendar.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3339"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3339"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-ntp-ntpv5"> | ||||
| <front> | ||||
| <title>Network Time Protocol Version 5</title> | ||||
| <author fullname="Miroslav Lichvar" initials="M." surname="Lichvar"> | ||||
| <organization>Red Hat</organization> | ||||
| </author> | ||||
| <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <date day="2" month="July" year="2025"/> | ||||
| <abstract> | ||||
| <t> The Network Time Protocol (NTP) is a widely deployed protoco | ||||
| l that | ||||
| allows hosts to obtain the current time of day from time servers. | ||||
| This document specifies version 5 of the protocol (NTPv5), which | ||||
| adopts a client-server model as its sole mode of operation. Legacy | ||||
| operational modes supported in earlier versions have been removed to | ||||
| improve protocol robustness and clarity. While this specification | ||||
| defines the protocol used for time distribution, it does not define | ||||
| the algorithms or heuristics employed by clients to determine or | ||||
| adjust their local time. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-ntp-ntpv5-05"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6241"> | ||||
| <front> | ||||
| <title>Network Configuration Protocol (NETCONF)</title> | ||||
| <author fullname="R. Enns" initials="R." role="editor" surname="Enns | ||||
| "/> | ||||
| <author fullname="M. Bjorklund" initials="M." role="editor" surname= | ||||
| "Bjorklund"/> | ||||
| <author fullname="J. Schoenwaelder" initials="J." role="editor" surn | ||||
| ame="Schoenwaelder"/> | ||||
| <author fullname="A. Bierman" initials="A." role="editor" surname="B | ||||
| ierman"/> | ||||
| <date month="June" year="2011"/> | ||||
| <abstract> | ||||
| <t>The Network Configuration Protocol (NETCONF) defined in this do | ||||
| cument provides mechanisms to install, manipulate, and delete the configuration | ||||
| of network devices. It uses an Extensible Markup Language (XML)-based data encod | ||||
| ing for the configuration data as well as the protocol messages. The NETCONF pro | ||||
| tocol operations are realized as remote procedure calls (RPCs). This document ob | ||||
| soletes RFC 4741. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6241"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6241"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8040"> | ||||
| <front> | ||||
| <title>RESTCONF Protocol</title> | ||||
| <author fullname="A. Bierman" initials="A." surname="Bierman"/> | ||||
| <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
| <author fullname="K. Watsen" initials="K." surname="Watsen"/> | ||||
| <date month="January" year="2017"/> | ||||
| <abstract> | ||||
| <t>This document describes an HTTP-based protocol that provides a | ||||
| programmatic interface for accessing data defined in YANG, using the datastore c | ||||
| oncepts defined in the Network Configuration Protocol (NETCONF).</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8040"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8040"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4252"> | ||||
| <front> | ||||
| <title>The Secure Shell (SSH) Authentication Protocol</title> | ||||
| <author fullname="T. Ylonen" initials="T." surname="Ylonen"/> | ||||
| <author fullname="C. Lonvick" initials="C." role="editor" surname="L | ||||
| onvick"/> | ||||
| <date month="January" year="2006"/> | ||||
| <abstract> | ||||
| <t>The Secure Shell Protocol (SSH) is a protocol for secure remote | ||||
| login and other secure network services over an insecure network. This document | ||||
| describes the SSH authentication protocol framework and public key, password, a | ||||
| nd host-based client authentication methods. Additional authentication methods a | ||||
| re described in separate documents. The SSH authentication protocol runs on top | ||||
| of the SSH transport layer protocol and provides a single authenticated tunnel f | ||||
| or the SSH connection protocol. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4252"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4252"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8446"> | ||||
| <front> | ||||
| <title>The Transport Layer Security (TLS) Protocol Version 1.3</titl | ||||
| e> | ||||
| <author fullname="E. Rescorla" initials="E." surname="Rescorla"/> | ||||
| <date month="August" year="2018"/> | ||||
| <abstract> | ||||
| <t>This document specifies version 1.3 of the Transport Layer Secu | ||||
| rity (TLS) protocol. TLS allows client/server applications to communicate over t | ||||
| he Internet in a way that is designed to prevent eavesdropping, tampering, and m | ||||
| essage forgery.</t> | ||||
| <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 50 | ||||
| 77, 5246, and 6961. This document also specifies new requirements for TLS 1.2 im | ||||
| plementations.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8446"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8446"/> | ||||
| </reference> | ||||
| <reference anchor="RFC9000"> | ||||
| <front> | ||||
| <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title> | ||||
| <author fullname="J. Iyengar" initials="J." role="editor" surname="I | ||||
| yengar"/> | ||||
| <author fullname="M. Thomson" initials="M." role="editor" surname="T | ||||
| homson"/> | ||||
| <date month="May" year="2021"/> | ||||
| <abstract> | ||||
| <t>This document defines the core of the QUIC transport protocol. | ||||
| QUIC provides applications with flow-controlled streams for structured communica | ||||
| tion, low-latency connection establishment, and network path migration. QUIC inc | ||||
| ludes security measures that ensure confidentiality, integrity, and availability | ||||
| in a range of deployment circumstances. Accompanying documents describe the int | ||||
| egration of TLS for key negotiation, loss detection, and an exemplary congestion | ||||
| control algorithm.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9000"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9000"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7951"> | ||||
| <front> | ||||
| <title>JSON Encoding of Data Modeled with YANG</title> | ||||
| <author fullname="L. Lhotka" initials="L." surname="Lhotka"/> | ||||
| <date month="August" year="2016"/> | ||||
| <abstract> | ||||
| <t>This document defines encoding rules for representing configura | ||||
| tion data, state data, parameters of Remote Procedure Call (RPC) operations or a | ||||
| ctions, and notifications defined using YANG as JavaScript Object Notation (JSON | ||||
| ) text.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7951"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7951"/> | ||||
| </reference> | ||||
| <reference anchor="RFC9657"> | ||||
| <front> | ||||
| <title>Time-Variant Routing (TVR) Use Cases</title> | ||||
| <author fullname="E. Birrane, III" initials="E." surname="Birrane, I | ||||
| II"/> | ||||
| <author fullname="N. Kuhn" initials="N." surname="Kuhn"/> | ||||
| <author fullname="Y. Qu" initials="Y." surname="Qu"/> | ||||
| <author fullname="R. Taylor" initials="R." surname="Taylor"/> | ||||
| <author fullname="L. Zhang" initials="L." surname="Zhang"/> | ||||
| <date month="October" year="2024"/> | ||||
| <abstract> | ||||
| <t>This document introduces use cases where Time-Variant Routing ( | ||||
| TVR) computations (i.e., routing computations that take into consideration time- | ||||
| based or scheduled changes to a network) could improve routing protocol converge | ||||
| nce and/or network performance.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9657"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9657"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-netmod-eca-policy"> | ||||
| <front> | ||||
| <title>A YANG Data model for ECA Policy Management</title> | ||||
| <author fullname="Qin Wu" initials="Q." surname="Wu"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <author fullname="Igor Bryskin" initials="I." surname="Bryskin"> | ||||
| <organization>Individual</organization> | ||||
| </author> | ||||
| <author fullname="Henk Birkholz" initials="H." surname="Birkholz"> | ||||
| <organization>Fraunhofer SIT</organization> | ||||
| </author> | ||||
| <author fullname="Xufeng Liu" initials="X." surname="Liu"> | ||||
| <organization>Volta Networks</organization> | ||||
| </author> | ||||
| <author fullname="Benoît Claise" initials="B." surname="Claise"> | ||||
| <organization>Cisco</organization> | ||||
| </author> | ||||
| <date day="19" month="February" year="2021"/> | ||||
| <abstract> | ||||
| <t> This document defines a YANG data model for Event Condition | ||||
| Action | ||||
| (ECA) policy management. The ECA policy YANG module provides the | ||||
| ability to delegate some network management functions to the server | ||||
| (e.g., a NETCONF or RESTCONF server) which can take simple and | ||||
| instant action when a trigger condition on the managed objects is | ||||
| met. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-eca-policy- | ||||
| 01"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.liu-netmod-yang-schedule"> | ||||
| <front> | <front> | |||
| <title>A YANG Data Model for Configuration Scheduling</title> | <title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title> | |||
| <author fullname="Xufeng Liu" initials="X." surname="Liu"> | <author initials="T." surname="Bray" fullname="Tim Bray" role="edito | |||
| <organization>Jabil</organization> | r"> | |||
| </author> | <organization/> | |||
| <author fullname="Igor Bryskin" initials="I." surname="Bryskin"> | ||||
| <organization>Huawei Technologies</organization> | ||||
| </author> | </author> | |||
| <author fullname="Vishnu Pavan Beeram" initials="V. P." surname="Bee | <author initials="J." surname="Paoli" fullname="Jean Paoli" role="ed | |||
| ram"> | itor"> | |||
| <organization>Juniper Networks</organization> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Tarek Saad" initials="T." surname="Saad"> | <author initials="C. M." surname="Sperberg-McQueen" fullname="C. M. | |||
| <organization>Cisco Systems Inc</organization> | Sperberg-McQueen" role="editor"> | |||
| <organization/> | ||||
| </author> | </author> | |||
| <author fullname="Himanshu Shah" initials="H." surname="Shah"> | <author initials="E." surname="Maler" fullname="Eve Maler" role="edi | |||
| <organization>Ciena</organization> | tor"> | |||
| <organization/> | ||||
| </author> | </author> | |||
| <author fullname="Oscar Gonzalez de Dios" initials="O. G." surname=" | <author initials="F." surname="Yergeau" fullname="Francois Yergeau" | |||
| de Dios"> | role="editor"> | |||
| <organization>Telefonica</organization> | <organization/> | |||
| </author> | </author> | |||
| <date day="1" month="March" year="2018"/> | <date year="2008" month="November" day="26"/> | |||
| <abstract> | ||||
| <t> This document describes a data model for configuration sched | ||||
| uling. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | </front> | |||
| <seriesInfo name="Internet-Draft" value="draft-liu-netmod-yang-schedul e-05"/> | <refcontent>W3C Recommendation</refcontent> | |||
| </reference> | </reference> | |||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 413.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 340.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | ||||
| 339.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
| 241.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 040.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
| 252.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 446.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 000.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
| 951.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 657.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 345.xml"/> | ||||
| </references> | </references> | |||
| </references> | </references> | |||
| <?line 1637?> | <?line 1715?> | |||
| <section anchor="usage"> | <section anchor="usage"> | |||
| <name>Examples of Scheduling Format Representation</name> | <name>Examples of Scheduling Format Representation</name> | |||
| <t>This section provides some examples to illustrate the use of the | <t>This section provides some examples to illustrate the use of the | |||
| period and recurrence formats defined in <xref target="sec-schedule"/>. The f ollowing | period and recurrence formats defined in <xref target="sec-schedule"/>. The f ollowing | |||
| modules are used for illustration purposes and make examples verifiable:</t> | modules are used for illustration purposes and make examples verifiable:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="yang"><![CDATA[ | |||
| module example-sch-usage-1 { | module example-sch-usage-1 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-1"; | namespace "http://example.com/example-sch-usage-1"; | |||
| prefix "ex-schu-1"; | prefix "ex-schu-1"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using 'generic-schedule-params' and | ||||
| 'schedule-status' groupings."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container generic-schedule-params { | container generic-schedule-params { | |||
| description | ||||
| "A collection of generic scheduling parameters."; | ||||
| uses schedule:generic-schedule-params; | uses schedule:generic-schedule-params; | |||
| } | } | |||
| container schedule-status { | container schedule-status { | |||
| description | ||||
| "A collection of scheduling status."; | ||||
| uses schedule:schedule-status; | uses schedule:schedule-status; | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-2 { | module example-sch-usage-2 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-2"; | namespace "http://example.com/example-sch-usage-2"; | |||
| prefix "ex-schu2"; | prefix "ex-schu2"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using the 'period-of-time' grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container period-of-time { | container period-of-time { | |||
| description | ||||
| "A container for a time period."; | ||||
| uses schedule:period-of-time; | uses schedule:period-of-time; | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-3 { | module example-sch-usage-3 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-3"; | namespace "http://example.com/example-sch-usage-3"; | |||
| prefix "ex-schu-3"; | prefix "ex-schu-3"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using the 'recurrence-basic' grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container recurrence-basic { | container recurrence-basic { | |||
| description | ||||
| "A container for a simple recurrence rule."; | ||||
| uses schedule:recurrence-basic { | uses schedule:recurrence-basic { | |||
| refine frequency { | ||||
| mandatory true; | ||||
| } | ||||
| refine interval { | refine interval { | |||
| default 1; | default 1; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-4 { | module example-sch-usage-4 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-4"; | namespace "http://example.com/example-sch-usage-4"; | |||
| prefix "ex-schu-4"; | prefix "ex-schu-4"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using the 'recurrence-utc' grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container recurrence-utc { | container recurrence-utc { | |||
| description | ||||
| "A container for a simple recurrence rule in UTC format."; | ||||
| uses schedule:recurrence-utc; | uses schedule:recurrence-utc; | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-5 { | module example-sch-usage-5 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-5"; | namespace "http://example.com/example-sch-usage-5"; | |||
| prefix "ex-schu-5"; | prefix "ex-schu-5"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using the 'recurrence-with-time-zone' | ||||
| grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container recurrence-with-time-zone { | container recurrence-with-time-zone { | |||
| description | ||||
| "A container for a simple recurrence rule with a time zone."; | ||||
| uses schedule:recurrence-with-time-zone; | uses schedule:recurrence-with-time-zone; | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-6 { | module example-sch-usage-6 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-6"; | namespace "http://example.com/example-sch-usage-6"; | |||
| prefix "ex-schu-6"; | prefix "ex-schu-6"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| container recurrence-utc-with-date-times { | organization | |||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using the 'recurrence-utc-with-periods' | ||||
| grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container recurrence-utc-with-periods { | ||||
| description | ||||
| "A container for an aggregate set of repeating occurrences in | ||||
| UTC format."; | ||||
| uses schedule:recurrence-utc-with-periods; | uses schedule:recurrence-utc-with-periods; | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-7 { | module example-sch-usage-7 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-7"; | namespace "http://example.com/example-sch-usage-7"; | |||
| prefix "ex-schu-8"; | prefix "ex-schu-8"; | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | ||||
| container recurrence-time-zone-with-date-times { | organization | |||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using the | ||||
| 'recurrence-time-zone-with-periods' grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container recurrence-time-zone-with-periods { | ||||
| description | ||||
| "A container for an aggregate set of repeating occurrences | ||||
| with a time zone."; | ||||
| uses schedule:recurrence-time-zone-with-periods; | uses schedule:recurrence-time-zone-with-periods; | |||
| } | } | |||
| } | } | |||
| module example-sch-usage-8 { | module example-sch-usage-8 { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-usage-8"; | namespace "http://example.com/example-sch-usage-8"; | |||
| prefix "ex-schu-8"; | prefix "ex-schu-8"; | |||
| import ietf-schedule { | ||||
| prefix "schedule"; | ||||
| } | ||||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "Example of a module using 'icalendar-recurrence' grouping."; | ||||
| revision "2026-02-20" { | ||||
| description "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container icalendar-recurrence { | container icalendar-recurrence { | |||
| description | ||||
| "A container for a scheduled iCalendar recurrence."; | ||||
| uses schedule:icalendar-recurrence { | uses schedule:icalendar-recurrence { | |||
| refine workweek-start { | refine workweek-start { | |||
| default monday; | default monday; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>For each example, only the message body is provided with | <t>For each example, only the message body is provided with | |||
| JSON used for encoding per the guidance in <xref target="RFC7951"/>.</t> | JSON, which is used for encoding per the guidance in <xref target="RFC7951"/> .</t> | |||
| <section anchor="the-generic-schedule-params-grouping"> | <section anchor="the-generic-schedule-params-grouping"> | |||
| <name>The "generic-schedule-params" Grouping</name> | <name>The "generic-schedule-params" Grouping</name> | |||
| <t><xref target="ex-0"/> illustrates the example of a requested schedule that needs to start no earlier than | <t><xref target="ex-0"/> illustrates the example of a requested schedule that needs to start no earlier than | |||
| 08:00 AM, January 1, 2025 and end no later than 8:00 PM, January 31, 2025 (Beiji ng time). | 08:00 AM, January 1, 2025 and end no later than 8:00 PM, January 31, 2025 (Beiji ng time). | |||
| Schedule requests that fail to meet the requirements are ignored by the system a s indicated by | Schedule requests that fail to meet the requirements are ignored by the system, as indicated by | |||
| "discard-action".</t> | "discard-action".</t> | |||
| <figure anchor="ex-0"> | <figure anchor="ex-0"> | |||
| <name>Generic Parameters with 'max-allowed-end' for Schedule Validatio n</name> | <name>Generic Parameters with 'max-allowed-end' for Schedule Validatio n</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-1:generic-schedule-params": { | "example-sch-usage-1:generic-schedule-params": { | |||
| "time-zone-identifier": "China/Beijing", | "time-zone-identifier": "China/Beijing", | |||
| "min-allowed-start": "2025-01-01T08:00:00", | "min-allowed-start": "2025-01-01T08:00:00", | |||
| "max-allowed-end": "2025-01-31T20:00:00", | "max-allowed-end": "2025-01-31T20:00:00", | |||
| "discard-action": "ietf-schedule:silently-discard" | "discard-action": "ietf-schedule:silently-discard" | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t>To illustrate the difference between "max-allowed-end" and "validity" parameters, | <t>To illustrate the difference between "max-allowed-end" and "validity" parameters, | |||
| <xref target="ex-00"/> shows the example of a requested schedule that needs to s tart no earlier than | <xref target="ex-00"/> shows the example of a requested schedule that needs to s tart no earlier than | |||
| 08:00 AM, January 1, 2025 (Beijing time). Schedule requests that fail to meet th e | 08:00 AM, January 1, 2025 (Beijing time). Schedule requests that fail to meet th e | |||
| requirements are ignored by the system as indicated by "discard-action". The | requirements are ignored by the system, as indicated by "discard-action". The | |||
| requested schedule may end after 8:00 PM, January 31, 2025, but any occurrences that are generated | requested schedule may end after 8:00 PM, January 31, 2025, but any occurrences that are generated | |||
| after that time would not be considered as valid.</t> | after that time would not be considered as valid.</t> | |||
| <figure anchor="ex-00"> | <figure anchor="ex-00"> | |||
| <name>Generic Parameters with 'validity' for Schedule Validation</name > | <name>Generic Parameters with 'validity' for Schedule Validation</name > | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-1:generic-schedule-params": { | "example-sch-usage-1:generic-schedule-params": { | |||
| "time-zone-identifier": "China/Beijing", | "time-zone-identifier": "China/Beijing", | |||
| "validity": "2025-01-31T20:00:00", | "validity": "2025-01-31T20:00:00", | |||
| "min-allowed-start": "2025-01-01T08:00:00", | "min-allowed-start": "2025-01-01T08:00:00", | |||
| "discard-action": "ietf-schedule:silently-discard" | "discard-action": "ietf-schedule:silently-discard" | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-period-of-time-grouping"> | <section anchor="the-period-of-time-grouping"> | |||
| <name>The "period-of-time" Grouping</name> | <name>The "period-of-time" Grouping</name> | |||
| <t><xref target="ex-1"/> shows an example of a period that starts at 08: 00:00 UTC, on January 1, 2025 and ends at 18:00:00 UTC | <t><xref target="ex-1"/> shows an example of a period that starts at 08: 00:00 UTC on January 1, 2025 and ends at 18:00:00 UTC | |||
| on December 31, 2027.</t> | on December 31, 2027.</t> | |||
| <figure anchor="ex-1"> | <figure anchor="ex-1"> | |||
| <name>Simple Start/End Schedule</name> | <name>Simple Start/End Schedule</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-2:period-of-time": { | "example-sch-usage-2:period-of-time": { | |||
| "period-start": "2025-01-01T08:00:00Z", | "period-start": "2025-01-01T08:00:00Z", | |||
| "period-end": "2027-12-31T18:00:00Z" | "period-end": "2027-12-31T18:00:00Z" | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t>An example of a period that starts at 08:00:00 UTC, on January 1, 202 5 and lasts 15 days and | <t>An example of a period that starts at 08:00:00 UTC on January 1, 2025 and lasts 15 days and | |||
| 5 hours and 20 minutes is encoded as shown in <xref target="ex-2"/>.</t> | 5 hours and 20 minutes is encoded as shown in <xref target="ex-2"/>.</t> | |||
| <figure anchor="ex-2"> | <figure anchor="ex-2"> | |||
| <name>Simple Schedule with Duration</name> | <name>Simple Schedule with Duration</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-2:period-of-time": { | "example-sch-usage-2:period-of-time": { | |||
| "period-start": "2025-01-01T08:00:00Z", | "period-start": "2025-01-01T08:00:00Z", | |||
| "duration": "P15DT05:20:00" | "duration": "P15DT05:20:00" | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t>An example of a period that starts at 2:00 A.M. in Los Angeles on Nov ember 19, | <t>An example of a period that starts at 2:00 AM in Los Angeles on Novem ber 19, | |||
| 2025 and lasts 20 weeks is depicted in <xref target="ex-3"/>.</t> | 2025 and lasts 20 weeks is depicted in <xref target="ex-3"/>.</t> | |||
| <figure anchor="ex-3"> | <figure anchor="ex-3"> | |||
| <name>Simple Schedule with Time Zone Indication</name> | <name>Simple Schedule with Time Zone Indication</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-2:period-of-time": { | "example-sch-usage-2:period-of-time": { | |||
| "period-start": "2025-11-19T02:00:00", | "period-start": "2025-11-19T02:00:00", | |||
| "time-zone-identifier": "America/Los_Angeles", | "time-zone-identifier": "America/Los_Angeles", | |||
| "duration": "P20W" | "duration": "P20W" | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-recurrence-basic-grouping"> | <section anchor="the-recurrence-basic-grouping"> | |||
| <name>The "recurrence-basic" Grouping</name> | <name>The "recurrence-basic" Grouping</name> | |||
| <t><xref target="ex-6"/> indicates a recurrence of every 2 days which st arts immediately and repeats forever:</t> | <t><xref target="ex-4"/> indicates a recurrence of every 2 days, which s tarts immediately and repeats forever:</t> | |||
| <figure anchor="ex-4"> | <figure anchor="ex-4"> | |||
| <name>Simple Schedule with Recurrence</name> | <name>Simple Schedule with Recurrence</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-3:recurrence-basic": { | "example-sch-usage-3:recurrence-basic": { | |||
| "recurrence-description": "forever recurrence rule", | "recurrence-description": "forever recurrence rule", | |||
| "frequency": "ietf-schedule:daily", | "frequency": "ietf-schedule:daily", | |||
| "interval": 2 | "interval": 2 | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-recurrence-utc-grouping"> | <section anchor="the-recurrence-utc-grouping"> | |||
| <name>The "recurrence-utc" Grouping</name> | <name>The "recurrence-utc" Grouping</name> | |||
| <t><xref target="ex-5"/> indicates a recurrence from 8:00 AM to 9:00 AM every day, from | <t><xref target="ex-5"/> indicates a recurrence from 8:00 AM to 9:00 AM every day, from | |||
| December 1 to December 31, 2025 in UTC:</t> | December 1 to December 31, 2025 in UTC:</t> | |||
| <figure anchor="ex-5"> | <figure anchor="ex-5"> | |||
| <name>Simple Schedule with Recurrence in UTC</name> | <name>Simple Schedule with Recurrence in UTC</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-4:recurrence-utc": { | "example-sch-usage-4:recurrence-utc": { | |||
| "recurrence-first": { | "recurrence-first": { | |||
| "start-time-utc": "2025-12-01T08:00:00Z", | "start-time-utc": "2025-12-01T08:00:00Z", | |||
| "duration": 3600 | "duration": 3600 | |||
| }, | }, | |||
| "frequency": "ietf-schedule:daily", | "frequency": "ietf-schedule:daily", | |||
| "interval": 1, | "interval": 1, | |||
| "utc-until": "2025-12-31T23:59:59Z" | "utc-until": "2025-12-31T23:59:59Z" | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-recurrence-with-time-zone-grouping"> | <section anchor="the-recurrence-with-time-zone-grouping"> | |||
| <name>The "recurrence-with-time-zone" Grouping</name> | <name>The "recurrence-with-time-zone" Grouping</name> | |||
| <t><xref target="ex-6"/> indicates a recurrence of every 2 hours for 10 | <t><xref target="ex-6"/> indicates a recurrence of every 2 hours for 10 | |||
| occurrences, lasting | occurrences that | |||
| 10 minutes, and starting at 3 p.m. on December 1, 2025 in New York:</t> | lasts 10 minutes and starts at 3 PM on December 1, 2025 in New York:</t> | |||
| <figure anchor="ex-6"> | <figure anchor="ex-6"> | |||
| <name>Simple Schedule with Recurrence with Time Zone Indication</name> | <name>Simple Schedule with Recurrence with Time Zone Indication</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-5:recurrence-with-time-zone": { | "example-sch-usage-5:recurrence-with-time-zone": { | |||
| "recurrence-first": { | "recurrence-first": { | |||
| "start-time": "2025-12-01T15:00:00", | "start-time": "2025-12-01T15:00:00", | |||
| "duration": "PT00:10:00", | "duration": "PT00:10:00", | |||
| "time-zone-identifier": "America/New_York" | "time-zone-identifier": "America/New_York" | |||
| }, | }, | |||
| "frequency": "ietf-schedule:hourly", | "frequency": "ietf-schedule:hourly", | |||
| "interval": 2, | "interval": 2, | |||
| "count": 10 | "count": 10 | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-recurrence-utc-with-periods-grouping"> | <section anchor="the-recurrence-utc-with-periods-grouping"> | |||
| <name>The "recurrence-utc-with-periods" Grouping</name> | <name>The "recurrence-utc-with-periods" Grouping</name> | |||
| <t><xref target="ex-7"/> indicates a recurrence that occurs every two da ys starting at 9:00 AM | <t><xref target="ex-7"/> indicates a recurrence that occurs every two da ys starting at 9:00 AM | |||
| and 3:00 PM for a duration of 30 minutes and 40 minutes respectively, | and 3:00 PM for a duration of 30 minutes and 40 minutes, respectively, | |||
| from 2025-06-01 to 2025-06-30 in UTC:</t> | from 2025-06-01 to 2025-06-30 in UTC:</t> | |||
| <figure anchor="ex-7"> | <figure anchor="ex-7"> | |||
| <name>Example of Recurrence With Date Times</name> | <name>Example of Recurrence With Date Times</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-6:recurrence-utc-with-periods": { | "example-sch-usage-6:recurrence-utc-with-periods": { | |||
| "recurrence-first": { | "recurrence-first": { | |||
| "start-time-utc": "2025-06-01T09:00:00Z" | "start-time-utc": "2025-06-01T09:00:00Z" | |||
| }, | }, | |||
| "frequency": "ietf-schedule:daily", | "frequency": "ietf-schedule:daily", | |||
| "interval": 2, | "interval": 2, | |||
| "utc-until": "2025-06-30T23:59:59Z", | "utc-until": "2025-06-30T23:59:59Z", | |||
| "period-timeticks": [ | "period-timeticks": [ | |||
| { | { | |||
| "period-start": "3240000", | "period-start": "3240000", | |||
| "period-end": "3420000" | "period-end": "3420000" | |||
| }, | }, | |||
| { | { | |||
| "period-start": "5400000", | "period-start": "5400000", | |||
| "period-end": "5640000" | "period-end": "5640000" | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-recurrence-time-zone-with-periods-grouping"> | <section anchor="the-recurrence-time-zone-with-periods-grouping"> | |||
| <name>The "recurrence-time-zone-with-periods" Grouping</name> | <name>The "recurrence-time-zone-with-periods" Grouping</name> | |||
| <t><xref target="ex-8"/> indicates a recurrence that occurs every | <t><xref target="ex-8"/> indicates a recurrence that occurs every | |||
| 30 minutes and lasts for 15 minutes from 9:00 AM to 5:00 PM and an extra two occurrences | 30 minutes and lasts for 15 minutes from 9:00 AM to 5:00 PM and two extra occ urrences | |||
| at 6:00 PM and 6:30 PM with each lasting for 20 minutes on 2025-12-01 (New Yo rk):</t> | at 6:00 PM and 6:30 PM with each lasting for 20 minutes on 2025-12-01 (New Yo rk):</t> | |||
| <figure anchor="ex-8"> | <figure anchor="ex-8"> | |||
| <name>Example of Advanced Recurrence Schedule</name> | <name>Example of Advanced Recurrence Schedule</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-7:recurrence-time-zone-with-periods": { | "example-sch-usage-7:recurrence-time-zone-with-periods": { | |||
| "recurrence-first": { | "recurrence-first": { | |||
| "start-time": "2025-12-01T09:00:00", | "start-time": "2025-12-01T09:00:00", | |||
| "duration": "PT00:15:00", | "duration": "PT00:15:00", | |||
| "time-zone-identifier": "America/New_York" | "time-zone-identifier": "America/New_York" | |||
| }, | }, | |||
| "frequency": "ietf-schedule:minutely", | "frequency": "ietf-schedule:minutely", | |||
| "interval": 30, | "interval": 30, | |||
| "until": "2025-12-01T17:00:00Z", | "until": "2025-12-01T17:00:00Z", | |||
| skipping to change at line 2564 ¶ | skipping to change at line 2336 ¶ | |||
| "period-start": "2025-12-01T18:00:00", | "period-start": "2025-12-01T18:00:00", | |||
| "duration": "PT00:20:00" | "duration": "PT00:20:00" | |||
| }, | }, | |||
| { | { | |||
| "period-start": "2025-12-01T18:30:00", | "period-start": "2025-12-01T18:30:00", | |||
| "duration": "PT00:20:00" | "duration": "PT00:20:00" | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-icalendar-recurrence-grouping"> | <section anchor="the-icalendar-recurrence-grouping"> | |||
| <name>The "icalendar-recurrence" Grouping</name> | <name>The "icalendar-recurrence" Grouping</name> | |||
| <t><xref target="ex-9"/> indicates 10 occurrences that occur at | <t><xref target="ex-9"/> indicates 10 occurrences at | |||
| 8:00 AM (EST), every last Saturday of the month starting in January 2024:</t> | 8:00 AM (EST) every last Saturday of the month starting in January 2024:</t> | |||
| <figure anchor="ex-9"> | <figure anchor="ex-9"> | |||
| <name>Simple iCalendar Recurrence</name> | <name>Simple iCalendar Recurrence</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-8:icalendar-recurrence": { | "example-sch-usage-8:icalendar-recurrence": { | |||
| "recurrence-first": { | "recurrence-first": { | |||
| "start-time": "2024-01-27T08:00:00", | "start-time": "2024-01-27T08:00:00", | |||
| "time-zone-identifier": "America/New_York" | "time-zone-identifier": "America/New_York" | |||
| }, | }, | |||
| "frequency": "ietf-schedule:monthly", | "frequency": "ietf-schedule:monthly", | |||
| "count": 10, | "count": 10, | |||
| "byday": [ | "byday": [ | |||
| { | { | |||
| "direction": [ | "direction": [ | |||
| -1 | -1 | |||
| ], | ], | |||
| "weekday": "saturday" | "weekday": "saturday" | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t><xref target="ex-10"/> is an example of a recurrence that occurs on t he last | <t><xref target="ex-10"/> is an example of a recurrence that occurs on t he last | |||
| workday of the month until December 25, 2025, from January 1, 2025:</t> | workday of the month until December 25, 2025, starting January 1, 2025:</t> | |||
| <figure anchor="ex-10"> | <figure anchor="ex-10"> | |||
| <name>Example of Advanced iCalendar Recurrence</name> | <name>Example of Advanced iCalendar Recurrence</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-8:icalendar-recurrence": { | "example-sch-usage-8:icalendar-recurrence": { | |||
| "recurrence-first": { | "recurrence-first": { | |||
| "start-time": "2025-01-01" | "start-time": "2025-01-01" | |||
| }, | }, | |||
| "frequency": "ietf-schedule:monthly", | "frequency": "ietf-schedule:monthly", | |||
| "until": "2025-12-25", | "until": "2025-12-25", | |||
| "byday": [ | "byday": [ | |||
| { | { | |||
| "weekday": "monday" | "weekday": "monday" | |||
| skipping to change at line 2628 ¶ | skipping to change at line 2400 ¶ | |||
| }, | }, | |||
| { | { | |||
| "weekday": "friday" | "weekday": "friday" | |||
| } | } | |||
| ], | ], | |||
| "bysetpos": [ | "bysetpos": [ | |||
| -1 | -1 | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t><xref target="ex-11"/> indicates a recurrence that occurs every 20 | <t><xref target="ex-11"/> indicates a recurrence that occurs every 20 | |||
| minutes from 9:00 AM to 4:40 PM (UTC), with the occurrence starting at 10:20 | minutes from 9:00 AM to 4:40 PM (UTC), with the exclusion of the | |||
| AM | occurrence starting at 10:20 AM on 2025-12-01:</t> | |||
| being excluded on 2025-12-01:</t> | ||||
| <figure anchor="ex-11"> | <figure anchor="ex-11"> | |||
| <name>Example of Advanced iCalendar Recurrence with Exceptions</name> | <name>Example of Advanced iCalendar Recurrence with Exceptions</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-8:icalendar-recurrence": { | "example-sch-usage-8:icalendar-recurrence": { | |||
| "recurrence-first": { | "recurrence-first": { | |||
| "start-time": "2025-12-01T09:00:00Z" | "start-time": "2025-12-01T09:00:00Z" | |||
| }, | }, | |||
| "until": "2025-12-01T16:40:00Z", | "until": "2025-12-01T16:40:00Z", | |||
| "frequency": "ietf-schedule:minutely", | "frequency": "ietf-schedule:minutely", | |||
| "byminute": [ | "byminute": [ | |||
| 0, | 0, | |||
| 20, | 20, | |||
| skipping to change at line 2663 ¶ | skipping to change at line 2435 ¶ | |||
| 13, | 13, | |||
| 14, | 14, | |||
| 15, | 15, | |||
| 16 | 16 | |||
| ], | ], | |||
| "exception-dates": [ | "exception-dates": [ | |||
| "2025-12-01T10:20:00Z" | "2025-12-01T10:20:00Z" | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="the-schedule-status-grouping"> | <section anchor="the-schedule-status-grouping"> | |||
| <name>The "schedule-status" Grouping</name> | <name>The "schedule-status" Grouping</name> | |||
| <t><xref target="ex-12"/> indicates the scheduled recurrence status of < xref target="ex-11"/> at the time | <t><xref target="ex-12"/> indicates the scheduled recurrence status of < xref target="ex-11"/> at the time | |||
| of 12:15 PM, 2025-12-01 (UTC):</t> | of 12:15 PM on 2025-12-01 (UTC):</t> | |||
| <figure anchor="ex-12"> | <figure anchor="ex-12"> | |||
| <name>Example of a Schedule Status</name> | <name>Example of a Schedule Status</name> | |||
| <artwork><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
| { | { | |||
| "example-sch-usage-1:schedule-status": { | "example-sch-usage-1:schedule-status": { | |||
| "state": "ietf-schedule:enabled", | "state": "ietf-schedule:enabled", | |||
| "version": 1, | "version": 1, | |||
| "schedule-type": "ietf-schedule:recurrence", | "schedule-type": "ietf-schedule:recurrence", | |||
| "counter": 9, | "counter": 9, | |||
| "last-occurrence": [ | "last-occurrence": [ | |||
| "2025-12-01T12:00:00Z" | "2025-12-01T12:00:00Z" | |||
| ], | ], | |||
| "upcoming-occurrence": [ | "upcoming-occurrence": [ | |||
| "2025-12-01T12:20:00Z" | "2025-12-01T12:20:00Z" | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t>At the time of 12:15 PM, 2025-12-01 (UTC), the recurring event occurr | <t>At the time of 12:15 PM on 2025-12-01 (UTC), the recurring event occu | |||
| ed at | rred at | |||
| (note that occurrence at 10:20 AM is excluded): | (note that the occurrence at 10:20 AM is excluded): | |||
| 9:00, 9:20, 9:40, 10:00, 10:40, 11:00, 11:20, 11:40, 12:00. | 9:00, 9:20, 9:40, 10:00, 10:40, 11:00, 11:20, 11:40, and 12:00. | |||
| The last occurrence was at 12:00, the upcoming one is at 12:20.</t> | The last occurrence was at 12:00, and the upcoming one is at 12:20.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec-ext"> | <section anchor="sec-ext"> | |||
| <name>Examples of Using/Extending the "ietf-schedule" Module</name> | <name>Examples of Using/Extending the "ietf-schedule" Module</name> | |||
| <t>This non-normative section shows two examples for how the "ietf-schedul e" module | <t>This non-normative section shows two examples for how the "ietf-schedul e" module | |||
| can be used or extended for scheduled events or attributes based on date and time.</t> | can be used or extended for scheduled events or attributes based on date and time.</t> | |||
| <section anchor="features"> | <section anchor="features"> | |||
| <name>Example: Schedule Tasks to Execute Based on a Recurrence Rule</nam e> | <name>Example: Schedule Tasks to Execute Based on a Recurrence Rule</nam e> | |||
| <t>Scheduled tasks can be used to execute specific actions based on cert ain recurrence rules (e.g., | <t>Scheduled tasks can be used to execute specific actions based on cert ain recurrence rules (e.g., | |||
| every Friday at 8:00 AM). The following example module which "uses" the "ical | every Friday at 8:00 AM). The following example module, which "uses" the "ica | |||
| endar-recurrence" | lendar-recurrence" | |||
| grouping from "ietf-schedule" module shows how a scheduled task could be defi | grouping from the "ietf-schedule" module, shows how a scheduled task could be | |||
| ned | defined | |||
| with different features used for options.</t> | with different features used for options.</t> | |||
| <artwork><![CDATA[ | <sourcecode type="yang"><![CDATA[ | |||
| module example-scheduled-backup { | module example-scheduled-backup { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-scheduled-backup"; | namespace "http://example.com/example-scheduled-backup"; | |||
| prefix "ex-scback"; | prefix "ex-scback"; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| } | } | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | organization | |||
| "Example, Inc."; | "Example, Inc."; | |||
| contact | contact | |||
| "Support at example.com"; | "Support at example.com"; | |||
| description | description | |||
| "Example of a module defining a scheduled based backup | "Example of a module defining a scheduled-based backup | |||
| operation."; | operation."; | |||
| revision "2023-01-19" { | revision "2026-02-20" { | |||
| description | description | |||
| "Initial Version."; | "Initial version."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for Scheduling."; | "RFC 9922: A YANG Data Model for Scheduling"; | |||
| } | } | |||
| container scheduled-backup-tasks { | container scheduled-backup-tasks { | |||
| description | description | |||
| "A container for backing up all current running configuration | "A container for backing up all current running configurations | |||
| on the device."; | on the device."; | |||
| list tasks { | list tasks { | |||
| key "task-id"; | key "task-id"; | |||
| description | description | |||
| "The list of backing up tasks on this device."; | "The list of backing up tasks on this device."; | |||
| leaf task-id { | leaf task-id { | |||
| type string; | type string; | |||
| description | description | |||
| "The task identifier that uniquely identifies a scheduled | "The task identifier that uniquely identifies a scheduled | |||
| backup task."; | backup task."; | |||
| } | } | |||
| choice local-or-remote { | choice local-or-remote { | |||
| description | description | |||
| "Specifies whether the configuration to be backed up is | "Specifies whether the configuration to be backed up is | |||
| local or remote."; | local or remote."; | |||
| case local { | case local { | |||
| description | description | |||
| "Configuration parameters for backing up of local | "Configuration parameters for the backing up of local | |||
| devices."; | devices."; | |||
| leaf local { | leaf local { | |||
| type empty; | type empty; | |||
| description | description | |||
| "The parameter specifies the configuration to be | "The parameter specifies the configuration to be | |||
| backed up is on the local device."; | backed up is on the local device."; | |||
| } | } | |||
| } | } | |||
| case remote { | case remote { | |||
| description | description | |||
| skipping to change at line 2781 ¶ | skipping to change at line 2553 ¶ | |||
| description | description | |||
| "The parameter specifies the remote device domain | "The parameter specifies the remote device domain | |||
| name."; | name."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container basic-recurrence-schedules { | container basic-recurrence-schedules { | |||
| if-feature schedule:basic-recurrence; | if-feature schedule:basic-recurrence; | |||
| description | description | |||
| "Basic recurrence schedule specification, only applies when | "Basic recurrence schedule specification, which only | |||
| schedule:basic-recurrence feature is supported."; | applies when the schedule:basic-recurrence feature | |||
| is supported."; | ||||
| leaf schedule-id { | leaf schedule-id { | |||
| type string; | type string; | |||
| description | description | |||
| "The schedule identifier for this recurrence rule."; | "The schedule identifier for this recurrence rule."; | |||
| } | } | |||
| uses schedule:recurrence-basic { | uses schedule:recurrence-basic { | |||
| refine frequency { | refine frequency { | |||
| mandatory true; | mandatory true; | |||
| } | } | |||
| refine interval { | refine interval { | |||
| default 1; | default 1; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container icalendar-recurrence-schedules { | container icalendar-recurrence-schedules { | |||
| if-feature schedule:icalendar-recurrence; | if-feature schedule:icalendar-recurrence; | |||
| description | description | |||
| "Basic recurrence schedule specification, only applies when | "Basic recurrence schedule specification, which only | |||
| schedule:icalendar-recurrence feature is supported."; | applies when the schedule:icalendar-recurrence feature | |||
| is supported."; | ||||
| leaf schedule-id { | leaf schedule-id { | |||
| type string; | type string; | |||
| description | description | |||
| "The schedule identifier for this recurrence rule."; | "The schedule identifier for this recurrence rule."; | |||
| } | } | |||
| uses schedule:icalendar-recurrence { | uses schedule:icalendar-recurrence { | |||
| refine workweek-start { | refine workweek-start { | |||
| default monday; | default monday; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| list schedule-set { | list schedule-set { | |||
| key "schedule-name"; | key "schedule-name"; | |||
| description | description | |||
| "The list of schedule status for the backup tasks."; | "Schedule status list for the backup tasks."; | |||
| uses schedule:schedule-status-with-name; | uses schedule:schedule-status-with-name; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="augments"> | <section anchor="augments"> | |||
| <name>Example: Schedule Network Properties to Change Based on Date and T ime</name> | <name>Example: Schedule Network Properties to Change Based on Date and T ime</name> | |||
| <t>Network properties may change over a specific period of time or based on a | <t>Network properties may change over a specific period of time or based on a | |||
| recurrence rule, e.g., <xref target="RFC9657"/>. | recurrence rule, e.g., <xref target="RFC9657"/>. | |||
| The following example module which augments the "recurrence-utc-with-periods" | The following example module, which augments the "recurrence-utc-with-periods | |||
| grouping from "ietf-schedule" module shows how a scheduled attribute | " | |||
| could be defined.</t> | grouping from the "ietf-schedule" module, shows how a scheduled attribute | |||
| <artwork><![CDATA[ | could be defined. Note that <br/> | |||
| <xref target="RFC8345"/> and this document are referenced in the modul | ||||
| e.</t> | ||||
| <sourcecode type="yang"><![CDATA[ | ||||
| module example-scheduled-link-bandwidth { | module example-scheduled-link-bandwidth { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-scheduled-link-bandwidth"; | namespace "http://example.com/example-scheduled-link-bandwidth"; | |||
| prefix "ex-scattr"; | prefix "ex-scattr"; | |||
| import ietf-network { | import ietf-network { | |||
| prefix "nw"; | prefix "nw"; | |||
| reference | reference | |||
| "RFC 8345: A YANG Data Model for Network Topologies"; | "RFC 8345: A YANG Data Model for Network Topologies"; | |||
| } | } | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for Scheduling"; | "RFC 9922: A YANG Data Model for Scheduling"; | |||
| } | } | |||
| organization | organization | |||
| "Example, Inc."; | "Example, Inc."; | |||
| contact | contact | |||
| "Support at example.com"; | "Support at example.com"; | |||
| description | description | |||
| "Example of a module defining a scheduled link bandwidth."; | "Example of a module defining a scheduled link bandwidth."; | |||
| revision "2023-01-19" { | revision "2026-02-20" { | |||
| description | description | |||
| "Initial Version."; | "Initial version."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for Scheduling."; | "RFC 9922: A YANG Data Model for Scheduling"; | |||
| } | } | |||
| grouping link-bandwidth-grouping { | grouping link-bandwidth-grouping { | |||
| description | description | |||
| "Grouping of the link bandwidth definition."; | "Grouping of the link bandwidth definition."; | |||
| leaf scheduled-bandwidth { | leaf scheduled-bandwidth { | |||
| type uint64; | type uint64; | |||
| units "Kbps"; | units "Kbps"; | |||
| description | description | |||
| "Bandwidth values, expressed in kilobits per second."; | "Bandwidth values, expressed in kilobits per second."; | |||
| skipping to change at line 2900 ¶ | skipping to change at line 2675 ¶ | |||
| leaf destination-node { | leaf destination-node { | |||
| type nw:node-id; | type nw:node-id; | |||
| description | description | |||
| "Indicates the source node identifier."; | "Indicates the source node identifier."; | |||
| } | } | |||
| leaf default-bandwidth { | leaf default-bandwidth { | |||
| type uint64; | type uint64; | |||
| units "Kbps"; | units "Kbps"; | |||
| description | description | |||
| "Bandwidth value used for perdiods that don't match | "Bandwidth value used for periods that don't match | |||
| a schedule."; | a schedule."; | |||
| } | } | |||
| choice time-variant-type { | choice time-variant-type { | |||
| description | description | |||
| "Controls the schedule type."; | "Controls the schedule type."; | |||
| case period { | case period { | |||
| uses schedule:period-of-time; | uses schedule:period-of-time; | |||
| } | } | |||
| case recurrence { | case recurrence { | |||
| uses schedule:recurrence-utc-with-periods { | uses schedule:recurrence-utc-with-periods { | |||
| augment "period-timeticks" { | augment "period-timeticks" { | |||
| description | description | |||
| "Specifies the attributes inside each | "Specifies the attributes inside each | |||
| period-timeticks entry."; | 'period-timeticks' entry."; | |||
| uses link-bandwidth-grouping; | uses link-bandwidth-grouping; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t><xref target="ex-13"/> shows a configuration example of a link's band | <t><xref target="ex-13"/> shows a configuration example in XML <xref tar | |||
| width that is | get="W3C.XML1.0"/> of a link's bandwidth that is | |||
| scheduled between 2025-12-01 0:00 UTC to the end of 2025-12-31 with a daily | scheduled between 2025-12-01 0:00 UTC to the end of 2025-12-31 with a daily | |||
| schedule. In each day, the bandwidth value is scheduled to be 500 Kbps between | schedule. In each day, the bandwidth value is scheduled to be 500 Kbps between | |||
| 1:00 AM to 6:00 AM and 800 Kbps between 10:00 PM to 11:00 PM. The bandwidth | 1:00 AM to 6:00 AM and 800 Kbps between 10:00 PM to 11:00 PM. The bandwidth | |||
| value that is not covered by the period above is 1000 Kbps.</t> | value that is not covered by the period above is 1000 Kbps.</t> | |||
| <figure anchor="ex-13"> | <figure anchor="ex-13"> | |||
| <name>Example of Scheduled Link's Bandwidth</name> | <name>Example of Scheduled Link's Bandwidth</name> | |||
| <artwork><![CDATA[ | <sourcecode type="xml"><![CDATA[ | |||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <link-attributes | <link-attributes | |||
| xmlns="http://example.com/example-scheduled-link-bandwidth" | xmlns="http://example.com/example-scheduled-link-bandwidth" | |||
| xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> | xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> | |||
| <link> | <link> | |||
| <source-node>ne1</source-node> | <source-node>ne1</source-node> | |||
| <destination-node>ne2</destination-node> | <destination-node>ne2</destination-node> | |||
| <default-bandwidth>1000</default-bandwidth> | <default-bandwidth>1000</default-bandwidth> | |||
| <recurrence-first> | <recurrence-first> | |||
| <utc-start-time>2025-12-01T01:00:00Z</utc-start-time> | <utc-start-time>2025-12-01T01:00:00Z</utc-start-time> | |||
| skipping to change at line 2958 ¶ | skipping to change at line 2733 ¶ | |||
| <period-end>2160000</period-end> | <period-end>2160000</period-end> | |||
| <scheduled-bandwidth>500</scheduled-bandwidth> | <scheduled-bandwidth>500</scheduled-bandwidth> | |||
| </period-timeticks> | </period-timeticks> | |||
| <period-timeticks> | <period-timeticks> | |||
| <period-start>7920000</period-start> | <period-start>7920000</period-start> | |||
| <period-end>8280000</period-end> | <period-end>8280000</period-end> | |||
| <scheduled-bandwidth>800</scheduled-bandwidth> | <scheduled-bandwidth>800</scheduled-bandwidth> | |||
| </period-timeticks> | </period-timeticks> | |||
| </link> | </link> | |||
| </link-attributes> | </link-attributes> | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="ex-framework"> | <section anchor="ex-framework"> | |||
| <name>Examples of Using "ietf-schedule" Module for Scheduled Use of Resour ces Framework</name> | <name>Examples of Using the "ietf-schedule" Module for Scheduled Use of Re sources Framework</name> | |||
| <t>This section exemplifies how the architecture for supporting scheduled | <t>This section exemplifies how the architecture for supporting scheduled | |||
| reservation of Traffic Engineering (TE) resources in <xref target="RFC8413"/> might leverage the "period-of-time" | reservation of Traffic Engineering (TE) resources in <xref target="RFC8413"/> might leverage the "period-of-time" | |||
| grouping defined in the "ietf-schedule" module to implement scheduled use of | grouping defined in the "ietf-schedule" module to implement scheduled use of | |||
| resources.</t> | resources.</t> | |||
| <t>The following example module shows how a scheduled link capacity reserv ation | <t>The following example module shows how a scheduled link capacity reserv ation | |||
| could be defined.</t> | could be defined.</t> | |||
| <artwork><![CDATA[ | <sourcecode type="yang"><![CDATA[ | |||
| module example-sch-capacity-res { | module example-sch-capacity-res { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "http://example.com/example-sch-capacity-res"; | namespace "http://example.com/example-sch-capacity-res"; | |||
| prefix "ex-schecaparev"; | prefix "ex-schecaparev"; | |||
| import ietf-network-topology { | import ietf-network-topology { | |||
| prefix "nt"; | prefix "nt"; | |||
| } | } | |||
| import ietf-schedule { | import ietf-schedule { | |||
| prefix "schedule"; | prefix "schedule"; | |||
| } | } | |||
| organization | ||||
| "Example, Inc."; | ||||
| contact | ||||
| "Support at example.com"; | ||||
| description | ||||
| "An example to show a scheduled link capacity reservation."; | ||||
| revision "2026-02-20" { | ||||
| description | ||||
| "Initial version."; | ||||
| reference | ||||
| "RFC 9922: A YANG Data Model for Scheduling"; | ||||
| } | ||||
| container link-capability-reservations { | container link-capability-reservations { | |||
| description | ||||
| "A container for a scheduled link capability reservations."; | ||||
| list scheduled-link-capacity { | list scheduled-link-capacity { | |||
| key "schedule-id"; | key "schedule-id"; | |||
| description | ||||
| "Definition of scheduled link capacity list."; | ||||
| leaf schedule-id { | leaf schedule-id { | |||
| type string; | type string; | |||
| description | ||||
| "The schedule identifier for this schedule rule."; | ||||
| } | } | |||
| leaf link-id { | leaf link-id { | |||
| type nt:link-id; | type nt:link-id; | |||
| description | ||||
| "The identifier of a link in the topology."; | ||||
| } | } | |||
| leaf reserved-capability { | leaf reserved-capability { | |||
| type uint64; | type uint64; | |||
| units "Mbps"; | units "Mbps"; | |||
| description | ||||
| "The reserved capability for a particular link."; | ||||
| } | } | |||
| uses schedule:period-of-time; | uses schedule:period-of-time; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t><xref section="4" sectionFormat="of" target="RFC8413"/> defines the ref erence architecture for scheduled use | <t><xref section="4" sectionFormat="of" target="RFC8413"/> defines the ref erence architecture for scheduled use | |||
| of resources, the service requester sends a request to a Path Computation Ele | of resources. The service requester sends a request to a Path Computation Ele | |||
| ment (PCE) and includes the | ment (PCE) and includes the | |||
| parameters of the Label Switched Path (LSP) that the requester wishes to supp | parameters of the Label Switched Path (LSP) that the requester wishes to supp | |||
| ly, the configuration | ly. The configuration | |||
| example to provide the scheduled resource is shown in <xref target="ex-14"/>. </t> | example to provide the scheduled resource is shown in <xref target="ex-14"/>. </t> | |||
| <figure anchor="ex-14"> | <figure anchor="ex-14"> | |||
| <name>Example of Scheduled Link's Bandwidth Reservation</name> | <name>Example of Scheduled Link's Bandwidth Reservation</name> | |||
| <artwork><![CDATA[ | <sourcecode type="xml"><![CDATA[ | |||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <link-capability-reservations | <link-capability-reservations | |||
| xmlns="http://example.com/example-sch-capacity-res" | xmlns="http://example.com/example-sch-capacity-res" | |||
| xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> | xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> | |||
| <scheduled-link-capacity> | <scheduled-link-capacity> | |||
| <schedule-id>1</schedule-id> | <schedule-id>1</schedule-id> | |||
| <link-id>1-2-1</link-id> | <link-id>1-2-1</link-id> | |||
| <reserved-capability>500</reserved-capability> | <reserved-capability>500</reserved-capability> | |||
| <period-start>2025-03-10T08:00:00Z</period-start> | <period-start>2025-03-10T08:00:00Z</period-start> | |||
| <period-end>2025-03-10T09:00:00Z</period-end> | <period-end>2025-03-10T09:00:00Z</period-end> | |||
| skipping to change at line 3035 ¶ | skipping to change at line 2836 ¶ | |||
| <duration>PT09:00:00</duration> | <duration>PT09:00:00</duration> | |||
| </scheduled-link-capacity> | </scheduled-link-capacity> | |||
| <scheduled-link-capacity> | <scheduled-link-capacity> | |||
| <schedule-id>3</schedule-id> | <schedule-id>3</schedule-id> | |||
| <link-id>2-1-1</link-id> | <link-id>2-1-1</link-id> | |||
| <reserved-capability>500</reserved-capability> | <reserved-capability>500</reserved-capability> | |||
| <period-start>2025-04-01T09:00:00Z</period-start> | <period-start>2025-04-01T09:00:00Z</period-start> | |||
| <period-end>2025-04-01T23:59:59Z</period-end> | <period-end>2025-04-01T23:59:59Z</period-end> | |||
| </scheduled-link-capacity> | </scheduled-link-capacity> | |||
| </link-capability-reservations> | </link-capability-reservations> | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section numbered="false" anchor="acknowledgments"> | <section numbered="false" anchor="acknowledgments"> | |||
| <name>Acknowledgments</name> | <name>Acknowledgments</name> | |||
| <t>This work is derived from the <xref target="I-D.ietf-opsawg-ucl-acl"/>. | <t>This work is derived from <xref target="I-D.ietf-opsawg-ucl-acl"/>. The | |||
| There is a desire | re is a desire | |||
| from the OPSAWG to see this model be separately defined for wide use in sched | from the OPSAWG to see this module separately defined for wide use in schedul | |||
| uling context.</t> | ing context.</t> | |||
| <t>Thanks to Adrian Farrel, Wei Pan, Tianran Zhou, Joe Clarke, Steve Baill | <t>Thanks to <contact fullname="Adrian Farrel"/>, <contact fullname="Wei P | |||
| argeon, Dhruv Dhody, Robert Wilton, and Italo Busi | an"/>, <contact fullname="Tianran Zhou"/>, <contact fullname="Joe Clarke"/>, <co | |||
| ntact fullname="Steve Baillargeon"/>, <contact fullname="Dhruv Dhody"/>, <contac | ||||
| t fullname="Robert Wilton"/>, and <contact fullname="Italo Busi"/> | ||||
| for their valuable comments and inputs to this work.</t> | for their valuable comments and inputs to this work.</t> | |||
| <t>Many thanks to the authors of <xref target="I-D.ietf-tvr-schedule-yang" />, <xref target="I-D.ietf-opsawg-scheduling-oam-tests"/>, and <xref target="I-D .ietf-netmod-eca-policy"/> | <t>Many thanks to the authors of <xref target="I-D.ietf-tvr-schedule-yang" />, <xref target="I-D.ietf-opsawg-scheduling-oam-tests"/>, and <xref target="I-D .ietf-netmod-eca-policy"/> | |||
| for the constructive discussion during IETF#118.</t> | for the constructive discussion during IETF#118.</t> | |||
| <t>Other related efforts were explored in the past, e.g., <xref target="I- D.liu-netmod-yang-schedule"/>.</t> | <t>Other related efforts were explored in the past, e.g., <xref target="I- D.liu-netmod-yang-schedule"/>.</t> | |||
| <t>Thanks to Reshad Rahman for the great YANG Doctors review, Mahesh Jetha | <t>Thanks to <contact fullname="Reshad Rahman"/> for the great YANG Doctor | |||
| nandani for the AD review, Per Andersson for the OPSDIR review, | s review, <contact fullname="Mahesh Jethanandani"/> for the AD review, <contact | |||
| Peter Yee for genart review, and Acee Lindem for the rtgdir review.</t> | fullname="Per Andersson"/> for the OPSDIR review, | |||
| <t>Thanks to Éric Vyncke, Erik Kline, and Mike Bishop for the IESG review. | <contact fullname="Peter Yee"/> for the GENART review, and <contact fullname= | |||
| </t> | "Acee Lindem"/> for the RTGDIR review.</t> | |||
| <t>Thanks to <contact fullname="Éric Vyncke"/>, <contact fullname="Erik Kl | ||||
| ine"/>, and <contact fullname="Mike Bishop"/> for the IESG review.</t> | ||||
| </section> | </section> | |||
| </back> | </back> | |||
| <!-- ##markdown-source: | <!-- ##markdown-source: | |||
| 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 | |||
| ub/byZVltw35qhbNFIf3fFk2sJ/j2Ho2cV2LTr8scdKQj9EFkGIqLF+jwVFw | PoivQSsppHKdJ2Q01RVaB0S3Ylrx6e0VrxmTNfpl4hnMZ3IDyCxBaG1odIOA | |||
| LWwYEQgXzBhpSHlLLfUScZavtNbSp9aJFuNEmMJslozTGF1Sq2ufGu08ZdNG | svYLsuQbcvXNZmZAOhnQ6iZgTAcNddjSFP6hJhZfxMg4cPRZ4upqvaZqymQZ | |||
| eXAcFdTXJMNqpOXwdaeFa2BjXceS4JQ4lkwdnimdUoh2sKpeaYWnLFUtb6VX | qzPNnE9rhAWibz2vZ8INrwpSRLUSB3ChijeBLU1qapkDoYMIr1D/F4BL5bPW | |||
| Cti3MCvUTrlXo8K3Tl3uZozSJrjfhoxSe3lsM3OBJXd7O3ZdRkF/4ca34ozG | qrZvVXkatlhXhh79721V9apSmqpxr6IqQVtO3DPaXau8OyFuE62rcZiLbWgv | |||
| NwfrINdANqbVhnr60YHLMi5bIFIdqT2vO1J2pzw3k1NPjLkpUkBbmy5O14yE | UstnuHXIcxK38K9wj+xSyZILChHlD7WHab2rfu1umOgszdlY7PYsv5wwAJmo | |||
| aVqbWio1HXCeXEJXFFJTS2tbKhXsg9SiyfF/pBTA5h/nMq2LJmoxAhWliWe9 | Uhyy3N//5A2zvw25uxZNFIf33GE2sF/iG3s+db2VTr8sh9KQ29JbiXSR77Kx | |||
| hms2qMiHx9CR9cajJY+StLPd91Y4Jr5qrbztjcZRDa+2t8zi2MjQK+TDu3CN | FjaMCIQLJu5X7ZW1dFDEWb7SWkufWnNajBPuMZ3Pk0kao1drdRVVo10OxfQ3 | |||
| GOfm2N9wr3VzRIASQJHz0rAH+6C7g47p7hj0QjA5/dgCs3K3iGrAAw0JaSD+ | ygnk6Km+uhnWNS0fsjstXAMb62LQ8Qpx2JM6GlSKpxDtYFXlU3e5XP+8lfIp | |||
| c8QnTag5kf64+CCeJYXucb2rfu26Oo4KDdAt/bNlJ0rAmzHCQYczauLehz1n | UN/JCFFb5l5NkFY712V3xrxtzuBJyLy1F8w2WBfYhLe3iNdlFHRCbjwRDze+ | |||
| VibOYr/rhAQk6cUlSsIbNoo49hH1RQ6CUNPcGQzp3M6EX8vdoGIy2t/ZfHie | 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 | akMji1JjLwOCdlbZA/tB9/4dyX4Hjd/RA9/z87OQNSeZ7DbUC3lACUvDxKpz | |||
| tyWVqi1GFd8B1leUMZ+QPbhkMsRHYMvqq/itl5NVQiILIu4uV9fhnPHUtXTu | i1qv8ac/1H/8ZNGSynMKIJSC/uWE9NDTaMxpi2vWKKIY0lFC08fUwo8lJ4FK | |||
| 3rIDAheiFxYRoO270oXoYF6SSMiG+mnmwZNiGpwNJ0e2M8uttDLt2Zh16qjr | voSnLw2q4NIvWmtFHyV7KjW5eL6Vr04u4iu565o3uNZot7t89a3l5DOpRWzH | |||
| y6RSdamd5ZDbhjg8QAQQuOUdODMOpXTCIe2c0FRngd9/sD5prUzg3pk1EU4+ | +riqk3L1r6+TSXab76tLWNbVP58WaZMM9dw5JaM1faHsEKEOtxaxvKVkO7yN | |||
| BeUTv54Kd4vr5pRYsHMEOSDI8iWzeXXzTcftJQycrGKoWFoLxrzPHQRqhwFB | 8jwis7RNTdg52CGRvw6K7UbP3JhKPlBFIVPoGTuxrpvZmvgQOT3256gF/wLC | |||
| 5lOcvbD2b4TPxsreD0K521UxGgBCZ41LqoNxjreQnOQMn4VdGY7hibh3H712 | dsW/pxsHxe0eTN8Wt7cQ6SqFpLXiW4p+Rvq3nS2PTNBms5o8VB8OdZPhUP82 | |||
| HoM2FH5SST0Nc6Kjd0tKa6FSWrNLJ32Rqias1v9wKRP4nu4+2LaLEl+lncJX | 0r9t69929G+7+rc9ZxAvMaQ1mjN3kc+CpiCZDm9LpkxAT3XuSFtUe5cWgm7/ | |||
| gmZVQSa862hPtXV8Jfepxoouf24hxE3ukAZKgfvcbEkREQ1/I4NGWvpaVjBV | kUPZTqYkp3If36sAaMyGkGoS6v4jvBuOQM8TP4KtriKpr0KdQ/+ehSFMur3c | |||
| PP7opyveGcGfBfdG8Cd8d8SliEV3SHji3j0S9/MFBBVS/VYmqtDHX5qwgvHi | pBFJPKaPdDgswfLs6A7xFnezvbUHbBFLUlsopevlnmtb3ZGzCRRpBDK4tXew | |||
| /5LE1UJbCwPiLdJoDYq3CcQNjG+hEgscyVkviozxLiSVq8/oN8jXVtdqzNKz | lDxGAfKIjR/hlJFGnOvQrM6ypbErxumbu4r3TFhZWzfZSiqntoLDj/AYAvnY | |||
| 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 | ||||
| --> | --> | |||
| </rfc> | </rfc> | |||
| End of changes. 243 change blocks. | ||||
| 1375 lines changed or deleted | 1115 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||