<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE rfc [ <!ENTITY nbsp " "> <!ENTITY zwsp "​"> <!ENTITY nbhy "‑"> <!ENTITY wj "⁠"> ]> <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> <!-- generated by https://github.com/cabo/kramdown-rfc version1.7.291.7.30 (Ruby3.4.4)2.5.9) --> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902"docName="draft-ietf-netmod-schedule-yang-10"docName="draft-ietf-netmod-schedule-yang-rfceditor-latest" category="std" consensus="true" submissionType="IETF" xml:lang="en" number="9922" tocInclude="true" sortRefs="true" symRefs="true" version="3"> <!-- xml2rfc v2v3 conversion3.30.03.31.0 --> <link href="https://datatracker.ietf.org/doc/draft-ietf-netmod-schedule-yang-rfceditor-latest" rel="prev"/> <front> <titleabbrev="Common Schedule YANG">Aabbrev="YANG Scheduling">A Common YANG Data Model for Scheduling</title> <seriesInfoname="Internet-Draft" value="draft-ietf-netmod-schedule-yang-10"/>name="RFC" value="9922"/> <author fullname="Qiufang Ma" role="editor"> <organization>Huawei</organization> <address> <postal> <street>101 Software Avenue, Yuhua District</street> <city>Jiangsu</city> <code>210012</code> <country>China</country> </postal> <email>maqiufang1@huawei.com</email> </address> </author> <author fullname="Qin Wu"> <organization>Huawei</organization> <address> <postal> <street>101 Software Avenue, Yuhua District</street> <city>Jiangsu</city> <code>210012</code> <country>China</country> </postal> <email>bill.wu@huawei.com</email> </address> </author> <author fullname="Mohamed Boucadair" role="editor"> <organization>Orange</organization> <address> <postal> <city>Rennes</city> <code>35000</code> <country>France</country> </postal> <email>mohamed.boucadair@orange.com</email> </address> </author> <author fullname="Daniel King"> <organization>Lancaster University</organization> <address> <postal> <country>United Kingdom</country> </postal> <email>d.king@lancaster.ac.uk</email> </address> </author> <dateyear="2025" month="August" day="07"/> <area>Operations and Management</area>year="2026" month="February"/> <area>OPS</area> <workgroup>netmod</workgroup> <keyword>calendaring</keyword> <keyword>scheduling</keyword> <keyword>YANG</keyword> <keyword>groupings</keyword> <abstract> <?line57?>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 for schedulingpurposespurposes, such asevent, policy,events, policies, services, or resources based on date and time. For the sake of better modularity, the YANG module includes a set of recurrence-related groupings with varying levels of representation (i.e., from basic to advanced) to accommodate a variety of requirements. It also defines groupings for validating requested schedules and reporting schedulingstatus.</t>statuses.</t> </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> <middle> <?line66?>110?> <section anchor="intro"> <name>Introduction</name> <t>This document defines a common schedule YANG module ("ietf-schedule") that can 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-scheduling-oam-tests"/>, and <xref target="I-D.ietf-tvr-schedule-yang"/>. The module includes a set of reusable groupingswhichthat are designed to be applicable for schedulingpurposespurposes, such asevent, policy, servicesevents, policies, services, or resources based on date and time. It also defines groupings for validating requested schedules and reporting schedulingstatus.</t>statuses.</t> <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 are beyond the scope of this document.</t> <t><xref target="sec-mib"/> discusses the relationship with the Management Information Base (MIB) managed objects for scheduling management operations defined in <xref target="RFC3231"/>.</t> <t><xref target="usage"/> describes a set of examples to illustrate the use 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 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><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 publication.</t> <t>This document contains placeholder values that need to be replaced with finalized values at the time of publication. This note summarizes all of the substitutions that are needed. No other RFC Editor instructions are specified 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 document</t> </li> </ul> </section></section> <section anchor="conventions-and-definitions"> <name>Conventions and Definitions</name> <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>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t> <?line -18?> <t>The meanings of the symbols in tree diagrams are defined in <xref target="RFC8340"/>.</t> <t>This document uses the YANG terminology defined in <xref section="3" sectionFormat="of" target="RFC7950"/>.</t><t>The<t>This document makes use of the following terms:</t> <dl> <dt>Recurrence rule:</dt> <dd> <t>Refers to a rule or repeating pattern for recurring events. See also <xref section="3.8.5.3" sectionFormat="of" target="RFC5545"/> for a comprehensive iCalendar recurrence rule specification.</t> </dd> <dt>Recurrence instance (or Recurrence, for short):</dt> <dd> <t>Refers to an instance that matches a recurrence rule.</t> </dd> <dt>Recurrence set:</dt> <dd> <t>Refers to a set of recurrence instances.</t> </dd> <dt>Frequency:</dt> <dd> <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> <dt/> <dd> <t>For example, repeating events based on an interval of a second or more are classified as recurrence with a frequency value of "SECONDLY". Frequency values defined as identities in the YANG module are used in lowercase.</t> </dd> <dt>iCalendar:</dt> <dd> <t>Refers to Internet Calendaring per <xref target="RFC5545"/>.</t> </dd> <dt>Interval:</dt> <dd> <t>Refers to an integer that specifies the interval at which a recurrence rule repeats. Values are taken from the "INTERVAL" rule in <xref section="3.3.10" sectionFormat="of" target="RFC5545"/>.</t> </dd> <dt/> <dd> <t>For example,"1","1" means every second for a secondly rule, every minute for a minutely rule, every hour for an hourly rule, etc.</t> </dd> <dt>System:</dt> <dd> <t>Refers to an entity that hosts a schedule that is managed using the YANG module defined in this document.</t> </dd> </dl> <t>"schedule-status-*" refers to any of "schedule-status", "schedule-status-with-time-zone", and "schedule-status-with-name".</t> </section> <section anchor="sec-overview"> <name>Module Overview</name> <section anchor="sec-features"> <name>Features</name> <t>The "ietf-schedule" data model defines therecurrence relatedrecurrence-related groupings using a modular approach. To that aim, a variety of representations of recurrence groupings ranging from basic to advanced (iCalender-like) are defined. To allow for different options, two features are defined in the data model:</t> <ul spacing="normal"> <li> <t>"basic-recurrence"</t> </li> <li> <t>"icalendar-recurrence"</t> </li> </ul> <t>Refer toSections<xrefformat="counter"target="sec-aug"/> and <xrefformat="counter"target="features"/> for the use of these features.</t> </section> <section anchor="sec-types"> <name>Types and Identities</name> <t>The "ietf-schedule" module (<xref target="sec-schedule"/>) defines the following identities:</t> <ul spacing="normal"> <li> <t>"schedule-type": Indicates the type ofaschedule. The following types are defined so far: </t> <ul spacing="normal"> <li> <t>one-shot:TheThis type is used for a schedulewill triggerthat triggers an action that has either the duration specified as 0 or the end time specified as the same as the start time, and then the schedule will disable itself (<xref section="3.3" sectionFormat="of" target="RFC3231"/>).</t> </li> <li> <t>period:The scheduleThis type is used for a period-based schedule consisting 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> <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 five minutes) or not (i.e., repeat in a non-regular manner, e.g., every day at 8 and 9 AM).</t> </li> </ul> </li> <li> <t>"frequency-type": Characterizes the repeating interval rule of a recurrence schedule (secondly, minutely, etc.).</t> </li> <li> <t>"schedule-state": Indicates the status of a schedule (enabled, disabled, conflicted, finished, etc.). This identity can also be used to manage the state of individual instances of a recurrence-based schedule.</t> </li> <li> <t>"discard-action-type": Specifies the action for the responder to take (e.g., generate a warning or an error message) when a requested schedule cannot be accepted for any reason and is discarded.</t> </li> </ul> </section> <section anchor="sec-grp"> <name>Scheduling Groupings</name> <t>The "ietf-schedule" module (<xref target="sec-schedule"/>) defines the following groupings:</t> <ul spacing="normal"> <li> <t>"generic-schedule-params" (<xref target="sec-gen"/>)</t> </li> <li> <t>"period-of-time" (<xref target="sec-period"/>)</t> </li> <li> <t>"recurrence-basic" (<xref target="sec-rec"/>)</t> </li> <li> <t>"recurrence-utc" (<xref target="sec-rec-utc"/>)</t> </li> <li> <t>"recurrence-with-time-zone" (<xref target="sec-rec-tz"/>)</t> </li> <li> <t>"recurrence-utc-with-periods" (<xref target="sec-rec-utc-dt"/>)</t> </li> <li> <t>"recurrence-time-zone-with-periods" (<xref target="sec-rec-tz-dt"/>)</t> </li> <li> <t>"icalendar-recurrence" (<xref target="sec-ical-rec"/>)</t> </li> <li> <t>"schedule-status", "schedule-status-with-time-zone", and "schedule-status-with-name" (<xref target="sec-schedule-status"/>)</t> </li> </ul> <t>Examples are provided in <xref target="usage"/>.</t> <section anchor="sec-gen"> <name>The "generic-schedule-params" Grouping</name> <t>A system accepts and handles schedule requests, which may help further automate the scheduling process of events,policy,policies, services, or resources 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 validating requested schedules.</t> <figure anchor="gsp-tree"> <name>'generic-schedule-params' Grouping Tree Structure</name><artwork><![CDATA[<sourcecode type="yangtree"><![CDATA[ grouping generic-schedule-params: +-- description? string +-- time-zone-identifier? sys:timezone-name +-- validity? yang:date-and-time +-- max-allowed-start? yang:date-and-time +-- min-allowed-start? yang:date-and-time +-- max-allowed-end? yang:date-and-time +-- discard-action? identityref]]></artwork>]]></sourcecode> </figure> <t>The "description" parameter includes a description of the schedule. No constraint is imposed on the structure nor the use of this parameter.</t> <t>The "time-zone-identifier" parameter, if provided, specifies the time zone reference <xref target="RFC7317"/> of the local date and time values. This parameter <bcp14>MUST</bcp14> be specified if any of the date and time values are in the format of local time. It <bcp14>MUST NOT</bcp14> be applied to date and time valueswhichthat are specified in the format of UTC or time zone offset to UTC.</t> <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 schedule can be startedto execute independent ofand thus executed independently from when itendsends, and it takes precedence over similar attributes that are provided at the schedule instance itself. A requested schedule may still beacceptedaccepted, 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 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> <t>The "max-allowed-end" parameter specifies the maximum allowed end time of the last occurrence. A requested schedule will be rejected if the end time 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 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, conflicting with existing schedules, or being out-of-date (e.g., the expected startishas already passed).</t> <t>These parameters apply to all schedules on a system and are meant to provide guards against stale configuration,too shortschedule requests that are too short and that would thus prevent validation by admins of some critical systems, etc.</t> </section> <section anchor="sec-period"> <name>The "period-of-time" Grouping</name> <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"),("period-end") or a start date and time ("period-start") and a non-negative time duration ("duration"). 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") nor a duration ("duration") is indicated, the period is considered to last forever. 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-start") is specified, the period is considered to start immediately.</t> <t>The "time-zone-identifier" parameter indicates the identifier for the time zone. This parameter <bcp14>MUST</bcp14> be specified if either the "period-start" or "period-end" value is reported in local time format. It <bcp14>MUST NOT</bcp14> be applied to date and time valueswhichthat are specified in the format of UTC or time zone offset to UTC.</t> <t>The "period-description" parameter includes a description of the period. No constraint is imposed on the structure nor the use of this parameter.</t> <figure anchor="pt-tree"> <name>'period-of-time' Grouping Tree Structure</name><artwork><![CDATA[<sourcecode type="yangtree"><![CDATA[ grouping period-of-time: +-- period-description? string +-- period-start? yang:date-and-time +-- time-zone-identifier? sys:timezone-name +-- (period-type)? +--:(explicit) | +-- period-end? yang:date-and-time +--:(duration) +-- duration? duration]]></artwork>]]></sourcecode> </figure> </section> <section anchor="sec-rec"> <name>The "recurrence-basic" Grouping</name> <t>The "recurrence-basic" grouping (<xref target="rec-grp-tree"/>) specifies a simple recurrence rulewhichthat starts immediately and repeats forever.</t> <figure anchor="rec-grp-tree"> <name>'recurrence-basic' Grouping Tree Structure</name><artwork><![CDATA[<sourcecode type="yangtree"><![CDATA[ grouping recurrence-basic: +-- recurrence-description? string +-- frequency? identityref +-- interval? uint32]]></artwork>]]></sourcecode> </figure> <t>The frequency parameter ("frequency") identifies the type ofarecurrence rule. For example, 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="RFC5545"/>, 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 days.</t> <t>Notethatthat, per <xref section="4.13" sectionFormat="of" target="I-D.ietf-netmod-rfc8407bis"/>,neither ano "default"nor a "mandatory"substatement is defined here for both "frequency" and "interval" parameters because there are cases (e.g., profiling) where using these statements is problematic. No "mandatory" substatement is defined here for the same reason. YANG modules using this grouping <bcp14>SHOULD</bcp14> refine these two nodes with either a "mandatory" or a "default"statement,statement if they always need to be configured or have default values. This recommendation <bcp14>MAY</bcp14> be ignored in cases such as when this grouping is used by another grouping.</t> <t>The "recurrence-description" parameter includes a description of the period. No constraint is imposed on the structure nor the use of this parameter.</t> </section> <section anchor="sec-rec-utc"> <name>The "recurrence-utc" Grouping</name> <t>The "recurrence-utc" grouping (<xref target="rec-utc-grp-tree"/>) uses the "recurrence-basic" grouping (<xref target="sec-rec"/>) and specifies a simple recurrence rule in UTC format.</t> <figure anchor="rec-utc-grp-tree"> <name>'recurrence-utc' Grouping Tree Structure</name><artwork><![CDATA[<sourcecode type="yangtree"><![CDATA[ grouping recurrence-utc: +-- recurrence-first | +-- start-time-utc? yang:date-and-time | +-- duration? uint32 +-- (recurrence-end)? | +--:(until) | | +-- utc-until? yang:date-and-time | +--:(count) | +-- count? uint32 +-- recurrence-description? string +-- frequency? identityref +-- interval? uint32]]></artwork>]]></sourcecode> </figure> <t>The "start-time-utc" parameter indicates the start time in UTC format.</t> <t>The "duration" parameter specifies, in units of seconds, the time period of the first occurrence. Unless specified otherwise (e.g., through additional augmented parameters), the "duration" also applies to subsequent recurrence instances. When unspecified, each occurrence is considered as 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 analysis script whose execution time may depend on the data volume and computation resource availability). The behavior to follow when a task takes more time than specified by the "duration" is out of scope. Such considerations belong to task management, not schedule management.</t> <t>Note that the "interval" and "duration" cover two distinct properties of a schedule event. The interval specifies when a schedule will occur, combined with the frequencyparameter;parameter, while the duration indicates how long an occurrence will last. This document allows the interval between occurrences to be shorter than the duration of each occurrence (e.g., a recurring event is scheduled 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, 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> <t>The "recurrence-utc" grouping is designed to be reused in scheduling contexts where machine readability is more desirable.</t> </section> <section anchor="sec-rec-tz"> <name>The "recurrence-with-time-zone" Grouping</name> <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> <figure anchor="rec-tz-grp-tree"> <name>'recurrence-with-time-zone' Grouping Tree Structure</name><artwork><![CDATA[<sourcecode type="yangtree"><![CDATA[ grouping recurrence-with-time-zone: +-- recurrence-first | +-- start-time? yang:date-and-time | +-- duration? duration +-- time-zone-identifier? sys:timezone-name +-- (recurrence-end)? | +--:(until) | | +-- until? yang:date-and-time | +--:(count) | +-- count? uint32 +-- recurrence-description? string +-- frequency? identityref +-- interval? uint32]]></artwork>]]></sourcecode> </figure> <t>The "recurrence-first" container includes "start-time" and "duration" parameters to specify the start time and period of the first occurrence. Unless specified otherwise (e.g., through additional augmented parameters), the "duration" also applies to subsequent recurrence instances. When unspecified, each occurrence is considered as 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 analysis script whose execution time may depend on the data volume and computation resource availability).</t> <t>The grouping also includes a "time-zone-identifier"parameterparameter, which <bcp14>MUST</bcp14> be specified if either the "start-time" or "until" value is reported in local time format. It <bcp14>MUST NOT</bcp14> be applied to date and time valueswhichthat 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, 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> <t>The considerations discussed in <xref target="sec-rec-utc"/> for "interval" and "duration" are also applicable to "recurrence-with-time-zone".</t> <t>Unlike the definition of the "recurrence-utc" grouping (<xref target="sec-rec-utc"/>), "recurrence-with-time-zone" is intended to promote human readability over machine readability.</t> </section> <section anchor="sec-rec-utc-dt"> <name>The "recurrence-utc-with-periods" Grouping</name> <t>The "recurrence-utc-with-periods" grouping (<xref target="rec-utc-dt-grp-tree"/>) uses the "recurrence-utc" grouping (<xref target="sec-rec-utc"/>) and adds a "period-timeticks" list to define an aggregate set of repeating occurrences.</t> <figure anchor="rec-utc-dt-grp-tree"> <name>'recurrence-utc-with-periods' Grouping Tree Structure</name><artwork><![CDATA[<sourcecode type="yangtree"><![CDATA[ grouping recurrence-utc-with-periods: +-- recurrence-first | +-- start-time-utc? yang:date-and-time | +-- duration? uint32 +-- (recurrence-end)? | +--:(until) | | +-- utc-until? yang:date-and-time | +--:(count) | +-- count? uint32 +-- recurrence-description? string +-- frequency? identityref +-- interval? uint32 +-- period-timeticks* [period-start] +-- period-start yang:timeticks +-- period-end? yang:timeticks]]></artwork>]]></sourcecode> </figure> <t>The recurrence instances are specified by the union of occurrences defined by both the recurrence rule and "period-timeticks" list. This list uses the "yang:timeticks" type defined in <xreftarget="RFC6991"/>.target="RFC9911"/>. Duplicate instances are ignored. The value of the "period-start" instance <bcp14>MUST NOT</bcp14> exceed the valueindicated by the valueof the "frequency" instance, i.e., thetimeticks"timeticks" 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> </section> <section anchor="sec-rec-tz-dt"> <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 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> <figure anchor="rec-tz-dt-grp-tree"> <name>'recurrence-time-zone-with-periods' Grouping Tree Structure</name><artwork><![CDATA[<sourcecode type="yangtree"><![CDATA[ grouping recurrence-time-zone-with-periods: +-- recurrence-first | +-- start-time? yang:date-and-time | +-- duration? duration +-- time-zone-identifier? sys:timezone-name +-- (recurrence-end)? | +--:(until) | | +-- until? yang:date-and-time | +--:(count) | +-- count? uint32 +-- recurrence-description? string +-- frequency? identityref +-- interval? uint32 +-- period* [period-start] +-- period-description? string +-- period-start yang:date-and-time +-- time-zone-identifier? sys:timezone-name +-- (period-type)? +--:(explicit) | +-- period-end? yang:date-and-time +--:(duration) +-- duration? duration]]></artwork>]]></sourcecode> </figure> <t>The recurrence instances are specified by the union of occurrences defined by both the recurrence rule and "period" list. Duplicate instances are ignored.</t> </section> <section anchor="sec-ical-rec"> <name>The "icalendar-recurrence" Grouping</name> <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 more data nodes to enrich the definition of recurrence. The structure of the "icalendar-recurrence" grouping refers to the definition of the recurrence component defined in Sections <xref target="RFC5545" section="3.3.10" sectionFormat="bare"/> and <xref target="RFC5545" section="3.8.5" sectionFormat="bare"/> of <xref target="RFC5545"/>.</t> <figure anchor="ical-grp-tree"> <name>'icalendar-recurrence' Grouping Tree Structure</name><artwork><![CDATA[<sourcecode type="yangtree"><![CDATA[ grouping icalendar-recurrence: +-- recurrence-first | +-- start-time? yang:date-and-time | +-- duration? duration +-- time-zone-identifier? sys:timezone-name +-- (recurrence-end)? | +--:(until) | | +-- until? yang:date-and-time | +--:(count) | +-- count? uint32 +-- recurrence-description? string +-- frequency? identityref +-- interval? uint32 +-- period* [period-start] | +-- period-description? string | +-- period-start yang:date-and-time | +-- time-zone-identifier? sys:timezone-name | +-- (period-type)? | +--:(explicit) | | +-- period-end? yang:date-and-time | +--:(duration) | +-- duration? duration +-- bysecond* uint32 +-- byminute* uint32 +-- byhour* uint32 +-- byday* [weekday] | +-- direction* int32 | +-- weekday schedule:weekday +-- bymonthday* int32 +-- byyearday* int32 +-- byyearweek* int32 +-- byyearmonth* uint32 +-- bysetpos* int32 +-- workweek-start? schedule:weekday +-- exception-dates* yang:date-and-time]]></artwork>]]></sourcecode> </figure> <t>An array of the "bysecond" (or"byminute","byminute" or "byhour") specifies a list of seconds within a minute (or minutes within anhour,hour or hours of the day). For example, within a "minutely" recurrence rule, the values of "byminute" node "10" and "20"meansmean the occurrences are generated at the 10th and 20th minute 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 directionwhichthat indicates the nth occurrence of a specific day within the "monthly" or "yearly" frequency instance. Valid values of "direction" are 1 to 5 or -5 to -1 within a "monthly" recurrencerule;rule and 1 to 53 or -53 to -1 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" represents the last Monday of the month.</t> <t>An array of the "bymonthday" (or byyearday", "byyearweek", or "byyearmonth") specifies a list of days of the month (or days of the year, weeks of the year, or months of the year). For example, within a "yearly" recurrence rule, the values of "byyearmonth"instanceinstances "1" and "2"meansmean the occurrences are generated in January and February, increasing the "yearly" recurrence from every year to every January and February of the year.</t> <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 "monthly" recurrence rule, the "byday" data node specifies every Monday of the week, and the "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> <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, and a "byday" data node is specified. This is also significant when in a "yearly" rule and a "byyearweek" is specified. Notethatthat, per <xref section="4.13" sectionFormat="of" target="I-D.ietf-netmod-rfc8407bis"/>,neither ano "default"nor a "mandatory"substatement is defined here because there are cases (e.g., profiling) where using these statements is problematic. No "mandatory" substatement is defined here for the same reason. YANG modules using this grouping <bcp14>SHOULD</bcp14> refine the "workweek-start" node with either a "mandatory" or a "default"statement,statement if it always needs to be configured or has a default value. This <bcp14>MAY</bcp14> be ignored in cases such as when this grouping is used by another grouping.</t> <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 values created by any of the specified recurrencerulerules anddate-times,date-times and then excluding any start date and time values specified by "exception-dates" parameter.</t> </section> <section anchor="sec-schedule-status"> <name>The "schedule-status", "schedule-status-with-time-zone", and "schedule-status-with-name" Groupings</name> <t>The "schedule-status", "schedule-status-with-time-zone", and "schedule-status-with-name" groupings (<xref target="sche-status-tree"/>) define common parameters for scheduling management/status exposure. The "schedule-status-with-time-zone" 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 structure as "schedule-status" but with an additional parameter to identify a schedule "schedule-name". These structures are defined in the module to allow for better modularity and flexibility.</t> <figure anchor="sche-status-tree"> <name>'schedule-status-*' Groupings Tree Structure</name><artwork><![CDATA[<sourcecode type="yangtree"><![CDATA[ grouping schedule-status: +-- state? identityref +-- version? uint16 +-- schedule-type? identityref +--ro local-time? yang:date-and-time +--ro last-update? yang:date-and-time +--ro counter? yang:counter32 +--ro last-occurrence? yang:date-and-time +--ro upcoming-occurrence? yang:date-and-time +--ro last-failed-occurrence? yang:date-and-time +--ro failure-counter? yang:counter32 grouping schedule-status-with-time-zone: +--ro time-zone-identifier? sys:timezone-name +-- schedule-name? string +-- state? identityref +-- version? uint16 +-- schedule-type? identityref +--ro local-time? yang:date-and-time +--ro last-update? yang:date-and-time +--ro counter? yang:counter32 +--ro last-occurrence? yang:date-and-time +--ro upcoming-occurrence? yang:date-and-time +--ro last-failed-occurrence? yang:date-and-time +--ro failure-counter? yang:counter32 grouping schedule-status-with-name: +-- schedule-name? string +-- state? identityref +-- version? uint16 +-- schedule-type? identityref +--ro local-time? yang:date-and-time +--ro last-update? yang:date-and-time +--ro counter? yang:counter32 +--ro last-occurrence? yang:date-and-time +--ro upcoming-occurrence? yang:date-and-time +--ro last-failed-occurrence? yang:date-and-time +--ro failure-counter? yang:counter32]]></artwork>]]></sourcecode> </figure> <t>The "schedule-name" parameter is useful to uniquely identify a schedule in a network device or controller if multiple scheduling contexts exist.</t> <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 represents the state of the overall recurrence. The "identityref" type is used for this parameter to allow extensibility in future modules.</t> <t>The "version" parameter is used to track the current schedule version information. The version can be incremented by the entity that created the schedule. The "last-update" parameter identifies when the schedule was last modified. In some contexts, this parameter can be used to track the configuration of a given schedule. In such cases, the "version" may not be used.</t> <t>The "schedule-type" parameter identifies the type of the current schedule. The "counter", "last-occurrence", and "upcoming-occurrence" data nodes are only available when the "schedule-type" is "recurrence".</t> <t>When no time zone is included, "local-time" reports the actual local time as seen by the entity that hosts a schedule. This parameter can be used by a controller to infer the offset to UTC. This use is similar to the use of "schedLocalTime" in <xref target="RFC3231"/>.</t> <t>"last-failed-occurrence" and "failure-counter" report the last failure that occurred and the count of failures for this schedule. Unless new parameters/operations are defined to allow the count of failures to be reset, "failure-counter" is reset by default only when the schedule starts.</t> <t>The current groupings capture common parameters that are applicable to typical scheduling contexts known so far. Future modules can define other useful parameters as needed. For example, in a scheduling context with multiple system sources to feed the schedules, the "source" and "precedence" parameters may be needed to reflect how schedules from different sources should be prioritized.</t> </section> </section> <section anchor="sec-aug"> <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 may support a basic recurrence rule or an advancedoneone, as needed, by declaring different features. Whether only one or both features are supported is implementation 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, <xref target="augments"/> demonstrates how additional parameters can be added to comply with specific schedule needs.</t> </section> </section> <section anchor="some-usage-restrictions"> <name>Some Usage Restrictions</name> <t>There are some restrictions that need to be followed when using groupings defined in the "ietf-schedule" YANG module (<xref target="sec-grp"/>):</t> <ul spacing="normal"> <li> <t>The instant in time represented by "period-start" <bcp14>MUST</bcp14> be before the "period-end" for the "period-of-time" grouping (<xref target="sec-period"/>).</t> </li> <li> <t>The combination of the day, month, and year represented for date and time 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> </li> <li> <t>Unless deployed in contexts where time synchronization is not subject to leap second adjustments (e.g., <xref section="4.3" sectionFormat="of" target="I-D.ietf-ntp-ntpv5"/>), the second for date and time values <bcp14>SHOULD</bcp14> have the value "60" at the end of months in which a leap second occurs.</t> </li> <li> <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 start immediately (e.g., for a period-based schedule) orstartsstart from the date and time when the recurrence pattern is first satisfied from the current time (e.g., for a recurrence-based schedule).</t> </li> </ul> </section> <section anchor="sec-mib"> <name>Relationship to the DISMAN-SCHEDULE-MIB</name> <t><xref target="RFC3231"/> specifies a Management Information Base (MIB) used to schedule management operations periodically or at specified dates and times.</t> <t>Although no data nodes are defined in this document, <xref target="mapping"/> lists how the main objects in the DISMAN-SCHEDULE-MIB can be mapped to YANG parameters.</t> <table anchor="mapping"> <name>YANG/MIB Mapping</name> <thead> <tr> <th align="left">MIB Object</th> <th align="left">YANG</th> </tr> </thead> <tbody> <tr> <td align="left">schedLocalTime</td> <td align="left">local-time</td> </tr> <tr> <td align="left">schedType</td> <td align="left">schedule-type</td> </tr> <tr> <td align="left">schedName</td> <td align="left">schedule-name</td> </tr> <tr> <td align="left">schedOwner</td> <td align="left">Not Supported</td> </tr> <tr> <td align="left">schedDescr</td> <td align="left">description</td> </tr> <tr> <td align="left">schedInterval</td> <td align="left">interval</td> </tr> <tr> <td align="left">schedWeekDay</td> <td align="left">weekday</td> </tr> <tr> <td align="left">schedMonth</td> <td align="left">byyearmonth</td> </tr> <tr> <td align="left">schedDay</td> <td align="left">bymonthday</td> </tr> <tr> <td align="left">schedHour</td> <td align="left">byhour</td> </tr> <tr> <td align="left">schedMinute</td> <td align="left">byminute</td> </tr> <tr> <td align="left">schedContextName</td> <td align="left">Not Supported</td> </tr> <tr> <td align="left">schedAdminStatus</td> <td align="left">state</td> </tr> <tr> <td align="left">schedOperStatus</td> <td align="left">state</td> </tr> <tr> <td align="left">schedFailures</td> <td align="left">failure-counter</td> </tr> <tr> <td align="left">schedLastFailure</td> <td align="left">Not Supported</td> </tr> <tr> <td align="left">schedLastFailed</td> <td align="left">last-failed-occurrence</td> </tr> <tr> <td align="left">schedStorageType</td> <td align="left">Not Supported</td> </tr> <tr> <td align="left">schedVariable</td> <td align="left">Not applicable</td> </tr> <tr> <td align="left">schedValue</td> <td align="left">Not applicable</td> </tr> <tr> <td align="left">schedTriggers</td> <td align="left">counter/failure-counter</td> </tr> </tbody> </table> </section> <section anchor="sec-schedule"> <name>The "ietf-schedule" YANG Module</name> <t>This module imports types defined in <xreftarget="RFC6991"/>target="RFC9911"/> and <xref target="RFC7317"/>.</t> <sourcecodemarkers="true" name="ietf-schedule@2025-05-30.yang"><![CDATA[type="yang" markers="true"><![CDATA[ file "ietf-schedule@2026-02-18.yang" module ietf-schedule { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-schedule"; prefix schedule; import ietf-yang-types { prefix yang; reference "RFC6991:9911: Common YANG Data Types"; } import ietf-system { prefix sys; reference "RFC 7317: A YANG Data Model for System Management"; } organization "IETF NETMOD Working Group"; contact "WG Web: <https://datatracker.ietf.org/wg/netmod/> WG List: <mailto:netmod@ietf.org> Editor: Qiufang Ma<mailto:maqiufang1@huawei.com<mailto:maqiufang1@huawei.com> Author: Qin Wu <mailto:bill.wu@huawei.com> Editor: Mohamed Boucadair <mailto:mohamed.boucadair@orange.com> Author: Daniel King <mailto:d.king@lancaster.ac.uk>"; description "This YANG module defines a set of common types and groupingswhichthat are applicable for schedulingpurposespurposes, such as events,policy,policies, services, or resources based on date and time. The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 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)20252026 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Revised BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info).All revisions of IETF and IANA published modules can be found at the YANG Parameters registry group (https://www.iana.org/assignments/yang-parameters).This version of this YANG module is part of RFCXXXX;9922; see the RFC itself for full legal notices.The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 'MAY',All revisions of IETF and'OPTIONAL' in this document are toIANA-maintained modules can beinterpreted as described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appearfound inall capitals, as shown here.";the 'YANG Parameters' registry group (https://www.iana.org/assignments/yang-parameters)."; revision2025-05-302026-02-18 { description "Initial revision."; reference "RFCXXXX:9922: A Common YANG Data Model for Scheduling"; } feature basic-recurrence { description "Indicates that the server supports configuring a basic scheduled recurrence."; } feature icalendar-recurrence { description "Indicates that the server supports configuring a comprehensive scheduled iCalendarrecurrence";recurrence."; reference "RFC 5545: Internet Calendaring and Scheduling Core Object Specification (iCalendar), Sections 3.3.10 and 3.8.5"; } typedef weekday { type enumeration { enum sunday { value 0; description "Sunday of the week."; } enum monday { value 1; description "Monday of the week."; } enum tuesday { value 2; description "Tuesday of the week."; } enum wednesday { value 3; description "Wednesday of the week."; } enum thursday { value 4; description "Thursday of the week."; } enum friday { value 5; description "Friday of the week."; } enum saturday { value 6; description "Saturday of the week."; } } description "Seven days of the week."; } typedef duration { type string { 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'; } description "Duration of the time. The format can represent nominal durations (weeks designated by 'W' and days designated by 'D') and accurate durations (hours:minutes:seconds follows the designator 'T'). Note that this value type doesn't support the 'Y' and 'M' designators to specify durations in terms of years and months. Negative durations are typically used to schedule an alarm to trigger before an associated time."; reference "RFC 5545: Internet Calendaring and Scheduling Core Object Specification (iCalendar), Sections 3.3.6 and 3.8.6.3"; } identity schedule-type { description "Base identity for schedule type."; } identity one-shot { base schedule-type; description "Indicates a one-shot schedule. That is a schedule that will trigger an action with the duration being specified as 0 or end time being specified as the same as the start time, and then the schedule will disable itself."; } identity period { base schedule-type; description "Indicates a period-based schedule consisting of either a start and end or a start and positive duration of time. If neither an end nor a duration is indicated, the period is considered to last forever."; } identity recurrence { base schedule-type; description "Indicates a recurrence-based schedule."; } identity frequency-type { description "Base identity for frequency type."; } identity secondly { base frequency-type; description "Indicates a repeating rule based on an interval of a second or more."; } identity minutely { base frequency-type; description "Indicates a repeating rule based on an interval of a minute or more."; } identity hourly { base frequency-type; description "Indicates a repeating rule based on an interval of an hour or more."; } identity daily { base frequency-type; description "Indicates a repeating rule based on an interval of a day or more."; } identity weekly { base frequency-type; description "Indicates a repeating rule based on an interval of a week or more."; } identity monthly { base frequency-type; description "Indicates a repeating rule based on an interval of a month or more."; } identity yearly { base frequency-type; description "Indicates a repeating rule based on an interval of a year or more."; } identity schedule-state { description "Base identity for schedule state."; } identity enabled { base schedule-state; description "Indicates a schedule with an enabled state."; } identity finished { base schedule-state; description "Indicates a schedule with a finished state. The finished state indicates that the schedule has ended."; } identity disabled { base schedule-state; description "Indicates a schedule with a disabled state."; } identity out-of-date { base schedule-state; description "Indicates a schedule that is received out-of-date."; } identity conflicted { base schedule-state; description "Indicates a schedule with a conflicted state with other schedules."; } identity discard-action-type { description "Base identity for the action for the responder to take when a requested schedule cannot be accepted for any reason and is discarded."; } identity warning { base discard-action-type; description "Indicates that a warning message is generated when a schedule is discarded."; } identity error { base discard-action-type; description "Indicates that an error message is generated when a schedule is discarded."; } identity silently-discard { base discard-action-type; description "Indicates that a schedule that is not valid is silently discarded."; } grouping generic-schedule-params { description "Includes a set of generic parameters that are followed by the entity that supports schedules. Such parameters are used as guards to prevent, e.g., stale configuration."; leaf description { type string; description "Provides a description of the schedule."; } leaf time-zone-identifier { type sys:timezone-name; description "Indicates the identifier for the time zone. This parameter MUST be specified if any of the date and time values are in the format of local time. It MUST NOT be applied to date and time valueswhichthat are specified in the format of UTC or time zone offset to UTC."; } leaf validity { type yang:date-and-time; description "Specifies the date and time after which a schedule will not be considered as valid. This parameter takes precedence over similar attributes that are provided at the schedule instance itself."; } leaf max-allowed-start { type yang:date-and-time; description "Specifies the maximum scheduled start date and time. A requested schedule whose first instance occurs after this value cannot be accepted by the entity. Specifically, a requested schedule will be rejected if the first occurrence of that schedule exceeds 'max-allowed-start'."; } leaf min-allowed-start { type yang:date-and-time; description "Specifies the minimum scheduled start date and time. A requested schedule whose first instance occurs before this value cannot be accepted by the entity. Specifically, a requested schedule will be rejected if the first occurrence of that schedule is scheduled before 'min-allowed-start'."; } leaf max-allowed-end { type yang:date-and-time; description "A requested schedule will be rejected if the end time of the last occurrence exceeds 'max-allowed-end'."; } leaf discard-action { type identityref { base discard-action-type; } description "Specifies the behavior when a schedule is discarded for any reason, e.g., failing to satisfy the guards in this grouping orit isbeing received out-of-date."; } } grouping period-of-time { description "This grouping is defined for the period of time property."; reference "RFC 5545: Internet Calendaring and Scheduling Core Object Specification (iCalendar), Section 3.3.9"; leaf period-description { type string; description "Provides a description of the period."; } leaf period-start { type yang:date-and-time; description "Period start time."; } leaf time-zone-identifier { type sys:timezone-name; description "Indicates the identifier for the time zone. This parameter MUST be specified if either the 'period-start' or 'period-end' value is reported in local time format. It MUST NOT be applied to date and time valueswhichthat are specified in the format of UTC or time zone offset to UTC."; } choice period-type { description "Indicates the type of the time period. Two types are supported. If no choice is indicated, the period is considered to last forever."; case explicit { description "A period of time is identified by its start and its end. 'period-start' indicates the period start."; leaf period-end { type yang:date-and-time; description "A period of time is defined by a start and end time. The start MUST be no later than the end. The period is considered as a one-shot schedule if the end time is the same as the start time."; } } case duration { description "A period of time is defined by a start and a non-negative duration of time."; leaf duration { type duration { 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'; } description "A non-negative duration of time. This value is equivalent to the format ofduration'duration' type except that the value cannot be negative. The period is considered to be a one-shot schedule if the value is 0."; } } } } grouping recurrence-basic { description "A simple definition of recurrence."; leaf recurrence-description { type string; description "Provides a description of the recurrence."; } leaf frequency { type identityref { base frequency-type; } description "Specifies the frequency type of the recurrence rule."; } leaf interval { type uint32 { range "1..max"; } must '../frequency' { error-message "Frequency must be provided."; } description "A positive integer representing the interval at which the recurrence rule repeats. For example, within a 'daily' recurrence rule, a value of '8' means every eight days."; } } grouping recurrence-utc { description "A simple definition of recurrence with time specified in UTC format."; container recurrence-first { description "Specifies the first instance of the recurrence. If unspecified, the recurrence is considered to start from the date and time when the recurrence pattern is first satisfied."; leaf start-time-utc { type yang:date-and-time; description "Defines the date and time of the first instance in the recurrence set. A UTC format MUST be used."; } leaf duration { type uint32; units "seconds"; description "When specified, it indicates how long the first occurrence lasts. Unless specified otherwise, it also applies to all the other instances in the recurrence set."; } } choice recurrence-end { description "Modes to control the end of a recurrence rule. If no choice is indicated, the recurrence rule is considered to repeat forever."; case until { description "This case defines a way that limits the end of a recurrence rule in an inclusive manner."; leaf utc-until { type yang:date-and-time; description "This parameter specifies a date and time value to inclusively terminate the recurrence in UTC format. That is, if the value specified by this parameter is synchronized with the specified recurrence rule, it becomes the last instance of the recurrence rule."; } } case count { description "This case defines the number of occurrences at which to terminate the recurrence rule."; leaf count { type uint32 { range "1..max"; } description "The positive number of occurrences at which to terminate the recurrence rule."; } } } uses recurrence-basic; } grouping recurrence-with-time-zone { description "A simple definition of recurrence to specify a recurrence rule with a time zone."; container recurrence-first { description "Specifies the first instance of the recurrence. If unspecified, the recurrence is considered to start from the date and time when the recurrence pattern is first satisfied."; leaf start-time { type yang:date-and-time; description "Defines the date and time of the first instance in the recurrence set."; } leaf duration { type duration; description "When specified, it indicates how long the first occurrencelast.lasts. Unless specified otherwise, it also applies to all the other instances in the recurrence set."; } } leaf time-zone-identifier { type sys:timezone-name; description "Indicates the identifier for the time zone in a time zone database. This parameter MUST be specified if either the 'start-time' or 'until' value is reported in local time format. It MUST NOT be applied to date and time valueswhichthat are specified in the format of UTC or time zone offset to UTC."; } choice recurrence-end { description "Modes to terminate the recurrence rule. If no choice is indicated, the recurrence rule is considered to repeat forever."; case until { description "The end of the recurrence rule is indicated by a specific date-and-time value in an inclusive manner."; leaf until { type yang:date-and-time; description "Specifies a date and time value to inclusively terminate the recurrence.ThatsThat is, if the value specified by this parameter is synchronized with the specified recurrence, it becomes the last instance of the recurrence."; } } case count { description "The end of the recurrence is indicated by the number of occurrences."; leaf count { type uint32 { range "1..max"; } description "The positive number of occurrences at which to terminate the recurrence."; } } } uses recurrence-basic; } grouping recurrence-utc-with-periods { description "This grouping defines an aggregate set of repeating occurrences with UTC time format. The recurrence instances are specified by the occurrences defined by both the recurrence rule and 'period-timeticks' list. Duplicate instances are ignored."; uses recurrence-utc; list period-timeticks { key "period-start"; description "A list of periods with timeticks formats."; leaf period-start { type yang:timeticks; must "(not(derived-from(../../frequency," + "'schedule:secondly')) or (current() < 100)) and " + "(not(derived-from(../../frequency," + "'schedule:minutely')) or (current() < 6000)) and " + "(not(derived-from(../../frequency,'schedule:hourly'))" + " or (current() < 360000)) and " + "(not(derived-from(../../frequency,'schedule:daily'))" + " or (current() < 8640000)) and " + "(not(derived-from(../../frequency,'schedule:weekly'))" + " or (current() < 60480000)) and " + "(not(derived-from(../../frequency," + "'schedule:monthly')) or (current() < 267840000)) and " + "(not(derived-from(../../frequency,'schedule:yearly'))" + " or (current() < 3162240000))" { error-message "Theperiod-start'period-start' must not exceed the frequency interval."; } description "Start time of the schedule within one recurrence. Given that the value is in timeticks format (i.e., 1/100 of a second), the values in the must statement translateto:to 100 =1s1 s (secondly), 6000 = 60 s = 1 min (minutely), and so on for all instances in the must statement invariant."; } leaf period-end { type yang:timeticks; description "End time of the schedule within one recurrence. The period start MUST be no later than the period end."; } } } grouping recurrence-time-zone-with-periods { description "This grouping defines an aggregate set of repeating occurrences with local time format and time zone specified. The recurrence instances are specified by the occurrences defined by both the recurrence rule and 'period' list. Duplicate instances are ignored."; uses recurrence-with-time-zone; list period { key "period-start"; description "A list of periods with date-and-time formats."; uses period-of-time; } } grouping icalendar-recurrence { description "This grouping specifies properties of a recurrence rule."; reference "RFC 5545: Internet Calendaring and Scheduling Core Object Specification (iCalendar), Section 3.8.5"; uses recurrence-time-zone-with-periods; leaf-list bysecond { type uint32 { range "0..60"; } description "Specifies a list of seconds within a minute."; } leaf-list byminute { type uint32 { range "0..59"; } description "Specifies a list of minutes within an hour."; } leaf-list byhour { type uint32 { range "0..23"; } description "Specifies a list of hours of the day."; } list byday { key "weekday"; description "Specifies a list of days of the week."; leaf-list direction { when "derived-from(../../frequency, 'schedule:monthly') or " + "(derived-from(../../frequency, 'schedule:yearly') " + " and not(../../byyearweek))"; type int32 { range "-53..-1|1..53"; } description "When specified, it indicates the nth occurrence of a specific day within the monthly or yearly recurrence rule. For example, within a monthly rule, +1 monday represents the firstmondayMonday within the month, whereas -1 monday represents the lastmondayMonday of the month."; } leaf weekday { type schedule:weekday; description "Corresponds to seven days of the week."; } } leaf-list bymonthday { type int32 { range "-31..-1|1..31"; } description "Specifies a list of days of the month."; } leaf-list byyearday { type int32 { range "-366..-1|1..366"; } description "Specifies a list of days of the year."; } leaf-list byyearweek { when "derived-from(../frequency, 'schedule:yearly')"; type int32 { range "-53..-1|1..53"; } description "Specifies a list of weeks of the year."; } leaf-list byyearmonth { type uint32 { range "1..12"; } description "Specifies a list of months of the year."; } leaf-list bysetpos { type int32 { range "-366..-1|1..366"; } description "Specifies a list of values that corresponds to the nth occurrence within the set of recurrence instances specified by the rule. It must only be used in conjunction with another 'byxxx' (bysecond, byminute, etc.) rulepart .";part."; } leaf workweek-start { type schedule:weekday; description "Specifies the day on which the workweek starts."; } leaf-list exception-dates { type yang:date-and-time; description "Defines a list of exceptions for recurrence."; } } grouping schedule-status { description "This grouping defines common properties of scheduling status."; leaf state { type identityref { base schedule-state; } description "Indicates the current state of the schedule."; } leaf version { type uint16; description "Indicates the version number of the schedule."; } leaf schedule-type { type identityref { base schedule-type; } description "Indicates the schedule type."; } leaf local-time { type yang:date-and-time; config false; description "Reports the local time as used by the entity that hosts the schedule."; } leaf last-update { type yang:date-and-time; config false; description "Reports the timestampthatof when the schedule is last updated."; } leaf counter { when "derived-from-or-self(../schedule-type, " + "'schedule:recurrence')"; type yang:counter32; config false; description "The number of occurrences while invoking the scheduled action successfully. The count wraps around when it reaches the maximum value."; } leaf last-occurrence { when "derived-from-or-self(../schedule-type, " + "'schedule:recurrence')"; type yang:date-and-time; config false; description "Indicates the timestamp of last occurrence."; } leaf upcoming-occurrence { when "derived-from-or-self(../schedule-type, " + "'schedule:recurrence')" + "and derived-from-or-self(../state, 'schedule:enabled')"; type yang:date-and-time; config false; description "Indicates the timestamp of next occurrence."; } leaf last-failed-occurrence { when "derived-from-or-self(../schedule-type, " + "'schedule:recurrence')"; type yang:date-and-time; config false; description "Indicates the timestamp of last failed action triggered by the schedule."; } leaf failure-counter { when "derived-from-or-self(../schedule-type, " + "'schedule:recurrence')"; type yang:counter32; config false; description "Counts the number of failures while invoking the scheduled action."; } } grouping schedule-status-with-time-zone { description "This grouping defines common properties of scheduling status, includingtimezone";timezone."; leaf time-zone-identifier { type sys:timezone-name; config false; description "Indicates the identifier for the time zone in a time zone database."; } uses schedule-status; } grouping schedule-status-with-name { description "This grouping defines common properties of scheduling status, including a schedule name."; leaf schedule-name { type string; description "The schedule identifier that uniquely identifies a schedule within a device, controller, network, etc. The unicity scope depends on the implementation."; } uses schedule-status; } } ]]></sourcecode> </section> <section anchor="security-considerations"> <name>Security Considerations</name> <t>This sectionusesis modeled after the template described in <xref section="3.7" sectionFormat="of" target="I-D.ietf-netmod-rfc8407bis"/>.</t> <!--[rfced] *AD - Security Considerations Questions 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 modulespecified in this documentdefinesschema fora data model that is designed to be accessed via YANG-based management protocols, such as NETCONF <xref target="RFC6241"/>orand RESTCONF <xref target="RFC8040"/>. These YANG-based management protocols (1) have to use a secure transport layer (e.g., SSH <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and QUIC <xref target="RFC9000"/>) and (2) have to use mutual authentication.</t> <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/> provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.</t> <t>The "ietf-schedule" module defines a set oftypesidentities, types, and groupings. These nodes are intended to be reused by other YANG modules. The module by itself does not expose any data nodes that are writable, data nodes that contain read-only state, or RPCs. As such, there are no additional security issues related to the "ietf-schedule" module that need to be considered.</t> <t>Modules that use the groupings that are defined in this document should identify the corresponding securityconsiderations, e.g.,:</t>considerations. For example, reuising the following groupings will expose privacy-related information:</t> <ul spacing="normal"> <li> <t>Scheduling depends on reliable and accurate time synchronization. Inaccurate date and time setting can lead to scheduling events being triggered at incorrect intervals, potentially causing system failures or security vulnerabilities.</t> </li> <li> <t>Recurring events may conceal abnormal behavior or security threats, which may be drowned out by normal events, especially when they are triggered frequently.</t> </li> <li> <t>The absence of detailed logs and audit records of each occurrence trigger time and actionresults,results andso on,therefore may make security incidents difficult to trace.</t> </li> <li> <t>Care must be taken when defining recurrences occurring very often and frequent that can be an additional source of attacks by keeping the system permanently busy with the management of scheduling.</t> </li> </ul> </section> <section anchor="iana-considerations"> <name>IANA Considerations</name> <section anchor="the-ietf-xml-registry"> <name>The"IETF XML"IETF XML Registry</name> <t>This documentregistershas registered the following URI in the "IETF XML Registry" <xref target="RFC3688"/>.</t><artwork><![CDATA[ URI: urn:ietf:params:xml:ns:yang:ietf-schedule Registrant Contact: The IESG. XML: N/A,<dl> <dt>URI:</dt> <dd> <t>urn:ietf:params:xml:ns:yang:ietf-schedule</t> </dd> <dt>Registrant Contact:</dt> <dd> <t>The IESG.</t> </dd> <dt>XML:</dt> <dd> <t>N/A; the requested URI is an XMLnamespace. ]]></artwork>namespace.</t> </dd> </dl> </section> <section anchor="the-yang-module-names-registry"> <name>The"YANGYANG ModuleNames"Names Registry</name> <t>This documentregistershas registered the following YANG module in the "YANG Module Names" registry <xref target="RFC6020"/>.</t><artwork><![CDATA[ name: ietf-schedule namespace: urn:ietf:params:xml:ns:yang:ietf-schedule prefix: schedule maintained by IANA? N reference: RFC XXXX ]]></artwork><dl> <dt>Name:</dt> <dd> <t>ietf-schedule</t> </dd> <dt>Maintained by IANA:</dt> <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> </middle> <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-SCHEDULE"/> <references anchor="sec-combined-references"> <name>References</name> <references anchor="sec-normative-references"> <name>Normative References</name><reference anchor="RFC3231"> <front> <title>Definitions of Managed Objects for Scheduling Management Operations</title> <author fullname="D. Levi" initials="D." surname="Levi"/> <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/> <date month="January" year="2002"/> <abstract> <t>This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it describes a set of managed objects that are used to schedule management operations periodically or at specified dates and times. [STANDARDS-TRACK]</t> </abstract> </front> <seriesInfo name="RFC" value="3231"/> <seriesInfo name="DOI" value="10.17487/RFC3231"/> </reference> <reference anchor="RFC2119"> <front> <title>Key words for use in RFCs to Indicate Requirement Levels</title> <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 signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, 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</title> <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 protocol 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 data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the 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 also 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" surname="Desruisseaux"/> <date month="September" year="2009"/> <abstract> <t>This document defines the iCalendar data format for representing and exchanging calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, independent of any particular calendar 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 and identification of some common system properties within a device containing a Network Configuration Protocol (NETCONF) server. This document also includes data node definitions for system identification, time-of-day management, user management, DNS resolver configuration, and some protocol operations for system management.</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" surname="Schoenwaelder"/> <date month="July" year="2013"/> <abstract> <t>This document introduces a collection of common data types to be 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 requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured 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 standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (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 and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t> </abstract> </front> <seriesInfo name="RFC" value="6020"/> <seriesInfo name="DOI" value="10.17487/RFC6020"/> </reference><xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3231.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5545.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7317.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9911.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8341.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml"/> </references> <references anchor="sec-informative-references"> <name>Informative References</name> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-netmod-eca-policy.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-netmod-rfc8407bis.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ntp-ntpv5.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-opsawg-scheduling-oam-tests.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-opsawg-ucl-acl.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tvr-schedule-yang.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.liu-netmod-yang-schedule.xml"/> <referenceanchor="I-D.ietf-opsawg-ucl-acl">anchor="W3C.XML1.0" target="https://www.w3.org/TR/2008/REC-xml-20081126/"> <front><title>A YANG Data Model and RADIUS Extension for Policy-based Network Access Control</title> <author fullname="Qiufang Ma" initials="Q." surname="Ma"> <organization>Huawei</organization> </author> <author fullname="Qin Wu" initials="Q." surname="Wu"> <organization>Huawei</organization> </author> <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair"> <organization>Orange</organization> </author> <author fullname="Daniel King" initials="D." surname="King"> <organization>Lancaster University</organization> </author> <date day="20" month="March" year="2025"/> <abstract> <t> This document defines a YANG data model for policy-based network 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 Sequences of OAM Tests</title> <author fullname="Luis M. Contreras" initials="L. M." surname="Contreras"> <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 diagnosis 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) resources 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 network resource usage at any moment in time, including network usage that is planned for the future. This document provides a framework that describes and discusses the architecture for supporting scheduled reservation of TE resources. This document does not describe specific protocols or protocol extensions needed to realize 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="Berger"/> <date month="March" year="2018"/> <abstract> <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution 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="Boucadair"> <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 Internet protocols that is a profile of the ISO 8601 standard for representation of dates 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 protocol 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" surname="Schoenwaelder"/> <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/> <date month="June" year="2011"/> <abstract> <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible<title>Extensible Markup Language(XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes 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 concepts 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>(XML) 1.0 (Fifth Edition)</title> <authorfullname="T. Ylonen"initials="T."surname="Ylonen"/> <author fullname="C. Lonvick" initials="C." role="editor" surname="Lonvick"/> <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, and host-based client authentication methods. Additional authentication methods are described in separate documents. The SSH authentication protocol runs on top of the SSH transport layer protocol and provides a single authenticated tunnel for 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</title> <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 Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t> <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</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="Iyengar"/> <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/> <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 communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration 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 configuration data, state data, parameters of Remote Procedure Call (RPC) operations or actions, 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, III"/> <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 convergence 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> <title>A YANG Data Model for Configuration Scheduling</title> <author fullname="Xufeng Liu" initials="X." surname="Liu"> <organization>Jabil</organization> </author> <author fullname="Igor Bryskin" initials="I." surname="Bryskin"> <organization>Huawei Technologies</organization>surname="Bray" fullname="Tim Bray" role="editor"> <organization/> </author> <authorfullname="Vishnu Pavan Beeram" initials="V. P." surname="Beeram"> <organization>Juniper Networks</organization>initials="J." surname="Paoli" fullname="Jean Paoli" role="editor"> <organization/> </author> <authorfullname="Tarek Saad" initials="T." surname="Saad"> <organization>Cisco Systems Inc</organization>initials="C. M." surname="Sperberg-McQueen" fullname="C. M. Sperberg-McQueen" role="editor"> <organization/> </author> <authorfullname="Himanshu Shah" initials="H." surname="Shah"> <organization>Ciena</organization>initials="E." surname="Maler" fullname="Eve Maler" role="editor"> <organization/> </author> <authorfullname="Oscar Gonzalez de Dios" initials="O. G." surname="de Dios"> <organization>Telefonica</organization>initials="F." surname="Yergeau" fullname="Francois Yergeau" role="editor"> <organization/> </author> <dateday="1" month="March" year="2018"/> <abstract> <t> This document describes a data model for configuration scheduling. </t> </abstract>year="2008" month="November" day="26"/> </front><seriesInfo name="Internet-Draft" value="draft-liu-netmod-yang-schedule-05"/><refcontent>W3C Recommendation</refcontent> </reference> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8413.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8340.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4252.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9000.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7951.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9657.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8345.xml"/> </references> </references> <?line1637?>1715?> <section anchor="usage"> <name>Examples of Scheduling Format Representation</name> <t>This section provides some examples to illustrate the use of the period and recurrence formats defined in <xref target="sec-schedule"/>. The following modules are used for illustration purposes and make examples verifiable:</t><artwork><![CDATA[<sourcecode type="yang"><![CDATA[ module example-sch-usage-1 { yang-version 1.1; namespace "http://example.com/example-sch-usage-1"; prefix "ex-schu-1"; import ietf-schedule { prefix "schedule"; } container generic-schedule-params { uses schedule:generic-schedule-params; } container schedule-status { uses schedule:schedule-status; } } module example-sch-usage-2 { yang-version 1.1; namespace "http://example.com/example-sch-usage-2"; prefix "ex-schu2"; import ietf-schedule { prefix "schedule"; } container period-of-time { uses schedule:period-of-time; } } module example-sch-usage-3 { yang-version 1.1; namespace "http://example.com/example-sch-usage-3"; prefix "ex-schu-3"; import ietf-schedule { prefix "schedule"; } container recurrence-basic { uses schedule:recurrence-basic { refine frequency { mandatory true; } refine interval { default 1; } } } } module example-sch-usage-4 { yang-version 1.1; namespace "http://example.com/example-sch-usage-4"; prefix "ex-schu-4"; import ietf-schedule { prefix "schedule"; } container recurrence-utc { uses schedule:recurrence-utc; } } module example-sch-usage-5 { yang-version 1.1; namespace "http://example.com/example-sch-usage-5"; prefix "ex-schu-5"; import ietf-schedule { prefix "schedule"; } container recurrence-with-time-zone { uses schedule:recurrence-with-time-zone; } } module example-sch-usage-6 { yang-version 1.1; namespace "http://example.com/example-sch-usage-6"; prefix "ex-schu-6"; import ietf-schedule { prefix "schedule"; } container recurrence-utc-with-date-times { uses schedule:recurrence-utc-with-periods; } } module example-sch-usage-7 { yang-version 1.1; namespace "http://example.com/example-sch-usage-7"; prefix "ex-schu-8"; import ietf-schedule { prefix "schedule"; container recurrence-time-zone-with-date-times { uses schedule:recurrence-time-zone-with-periods; } } module example-sch-usage-8 { yang-version 1.1; namespace "http://example.com/example-sch-usage-8"; prefix "ex-schu-8"; container icalendar-recurrence { uses schedule:icalendar-recurrence { refine workweek-start { default monday; } } } }]]></artwork>]]></sourcecode> <t>For each example, only the message body is provided withJSONJSON, which is used for encoding per the guidance in <xref target="RFC7951"/>.</t> <section anchor="the-generic-schedule-params-grouping"> <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 08:00 AM, January 1, 2025 and end no later than 8:00 PM, January 31, 2025 (Beijing time). Schedule requests that fail to meet the requirements are ignored by thesystemsystem, as indicated by "discard-action".</t> <figure anchor="ex-0"> <name>Generic Parameters with 'max-allowed-end' for Schedule Validation</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-1:generic-schedule-params": { "time-zone-identifier": "China/Beijing", "min-allowed-start": "2025-01-01T08:00:00", "max-allowed-end": "2025-01-31T20:00:00", "discard-action": "ietf-schedule:silently-discard" } }]]></artwork>]]></sourcecode> </figure> <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 start no earlier than 08:00 AM, January 1, 2025 (Beijing time). Schedule requests that fail to meet the requirements are ignored by thesystemsystem, as indicated by "discard-action". The 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> <figure anchor="ex-00"> <name>Generic Parameters with 'validity' for Schedule Validation</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-1:generic-schedule-params": { "time-zone-identifier": "China/Beijing", "validity": "2025-01-31T20:00:00", "min-allowed-start": "2025-01-01T08:00:00", "discard-action": "ietf-schedule:silently-discard" } }]]></artwork>]]></sourcecode> </figure> </section> <section anchor="the-period-of-time-grouping"> <name>The "period-of-time" Grouping</name> <t><xref target="ex-1"/> shows an example of a period that starts at 08:00:00UTC,UTC on January 1, 2025 and ends at 18:00:00 UTC on December 31, 2027.</t> <figure anchor="ex-1"> <name>Simple Start/End Schedule</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-2:period-of-time": { "period-start": "2025-01-01T08:00:00Z", "period-end": "2027-12-31T18:00:00Z" } }]]></artwork>]]></sourcecode> </figure> <t>An example of a period that starts at 08:00:00UTC,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> <figure anchor="ex-2"> <name>Simple Schedule with Duration</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-2:period-of-time": { "period-start": "2025-01-01T08:00:00Z", "duration": "P15DT05:20:00" } }]]></artwork>]]></sourcecode> </figure> <t>An example of a period that starts at 2:00A.M.AM in Los Angeles on November 19, 2025 and lasts 20 weeks is depicted in <xref target="ex-3"/>.</t> <figure anchor="ex-3"> <name>Simple Schedule with Time Zone Indication</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-2:period-of-time": { "period-start": "2025-11-19T02:00:00", "time-zone-identifier": "America/Los_Angeles", "duration": "P20W" } }]]></artwork>]]></sourcecode> </figure> </section> <section anchor="the-recurrence-basic-grouping"> <name>The "recurrence-basic" Grouping</name> <t><xreftarget="ex-6"/>target="ex-4"/> indicates a recurrence of every 2daysdays, which starts immediately and repeats forever:</t> <figure anchor="ex-4"> <name>Simple Schedule with Recurrence</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-3:recurrence-basic": { "recurrence-description": "forever recurrence rule", "frequency": "ietf-schedule:daily", "interval": 2 } }]]></artwork>]]></sourcecode> </figure> </section> <section anchor="the-recurrence-utc-grouping"> <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 December 1 to December 31, 2025 in UTC:</t> <figure anchor="ex-5"> <name>Simple Schedule with Recurrence in UTC</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-4:recurrence-utc": { "recurrence-first": { "start-time-utc": "2025-12-01T08:00:00Z", "duration": 3600 }, "frequency": "ietf-schedule:daily", "interval": 1, "utc-until": "2025-12-31T23:59:59Z" } }]]></artwork>]]></sourcecode> </figure> </section> <section anchor="the-recurrence-with-time-zone-grouping"> <name>The "recurrence-with-time-zone" Grouping</name> <t><xref target="ex-6"/> indicates a recurrence of every 2 hours for 10occurrences, lastingoccurrences that lasts 10minutes,minutes andstartingstarts at 3p.m.PM on December 1, 2025 in New York:</t> <figure anchor="ex-6"> <name>Simple Schedule with Recurrence with Time Zone Indication</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-5:recurrence-with-time-zone": { "recurrence-first": { "start-time": "2025-12-01T15:00:00", "duration": "PT00:10:00", "time-zone-identifier": "America/New_York" }, "frequency": "ietf-schedule:hourly", "interval": 2, "count": 10 } }]]></artwork>]]></sourcecode> </figure> </section> <section anchor="the-recurrence-utc-with-periods-grouping"> <name>The "recurrence-utc-with-periods" Grouping</name> <t><xref target="ex-7"/> indicates a recurrence that occurs every two days starting at 9:00 AM and 3:00 PM for a duration of 30 minutes and 40minutesminutes, respectively, from 2025-06-01 to 2025-06-30 in UTC:</t> <figure anchor="ex-7"> <name>Example of Recurrence With Date Times</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-6:recurrence-utc-with-periods": { "recurrence-first": { "start-time-utc": "2025-06-01T09:00:00Z" }, "frequency": "ietf-schedule:daily", "interval": 2, "utc-until": "2025-06-30T23:59:59Z", "period-timeticks": [ { "period-start": "3240000", "period-end": "3420000" }, { "period-start": "5400000", "period-end": "5640000" } ] } }]]></artwork>]]></sourcecode> </figure> </section> <section anchor="the-recurrence-time-zone-with-periods-grouping"> <name>The "recurrence-time-zone-with-periods" Grouping</name> <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 andan extratwo extra occurrences at 6:00 PM and 6:30 PM with each lasting for 20 minutes on 2025-12-01 (New York):</t> <figure anchor="ex-8"> <name>Example of Advanced Recurrence Schedule</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-7:recurrence-time-zone-with-periods": { "recurrence-first": { "start-time": "2025-12-01T09:00:00", "duration": "PT00:15:00", "time-zone-identifier": "America/New_York" }, "frequency": "ietf-schedule:minutely", "interval": 30, "until": "2025-12-01T17:00:00Z", "period": [ { "period-start": "2025-12-01T18:00:00", "duration": "PT00:20:00" }, { "period-start": "2025-12-01T18:30:00", "duration": "PT00:20:00" } ] } }]]></artwork>]]></sourcecode> </figure> </section> <section anchor="the-icalendar-recurrence-grouping"> <name>The "icalendar-recurrence" Grouping</name> <t><xref target="ex-9"/> indicates 10 occurrencesthat occurat 8:00 AM(EST),(EST) every last Saturday of the month starting in January 2024:</t> <figure anchor="ex-9"> <name>Simple iCalendar Recurrence</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-8:icalendar-recurrence": { "recurrence-first": { "start-time": "2024-01-27T08:00:00", "time-zone-identifier": "America/New_York" }, "frequency": "ietf-schedule:monthly", "count": 10, "byday": [ { "direction": [ -1 ], "weekday": "saturday" } ] } }]]></artwork>]]></sourcecode> </figure> <t><xref target="ex-10"/> is an example of a recurrence that occurs on the last workday of the month until December 25, 2025,fromstarting January 1, 2025:</t> <figure anchor="ex-10"> <name>Example of Advanced iCalendar Recurrence</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-8:icalendar-recurrence": { "recurrence-first": { "start-time": "2025-01-01" }, "frequency": "ietf-schedule:monthly", "until": "2025-12-25", "byday": [ { "weekday": "monday" }, { "weekday": "tuesday" }, { "weekday": "wednesday" }, { "weekday": "thursday" }, { "weekday": "friday" } ], "bysetpos": [ -1 ] } }]]></artwork>]]></sourcecode> </figure> <t><xref target="ex-11"/> indicates a recurrence that occurs every 20 minutes from 9:00 AM to 4:40 PM (UTC), with the exclusion of the occurrence starting at 10:20 AMbeing excludedon 2025-12-01:</t> <figure anchor="ex-11"> <name>Example of Advanced iCalendar Recurrence with Exceptions</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-8:icalendar-recurrence": { "recurrence-first": { "start-time": "2025-12-01T09:00:00Z" }, "until": "2025-12-01T16:40:00Z", "frequency": "ietf-schedule:minutely", "byminute": [ 0, 20, 40 ], "byhour": [ 9, 10, 11, 12, 13, 14, 15, 16 ], "exception-dates": [ "2025-12-01T10:20:00Z" ] } }]]></artwork>]]></sourcecode> </figure> </section> <section anchor="the-schedule-status-grouping"> <name>The "schedule-status" Grouping</name> <t><xref target="ex-12"/> indicates the scheduled recurrence status of <xref target="ex-11"/> at the time of 12:15PM,PM on 2025-12-01 (UTC):</t> <figure anchor="ex-12"> <name>Example of a Schedule Status</name><artwork><![CDATA[<sourcecode type="json"><![CDATA[ { "example-sch-usage-1:schedule-status": { "state": "ietf-schedule:enabled", "version": 1, "schedule-type": "ietf-schedule:recurrence", "counter": 9, "last-occurrence": [ "2025-12-01T12:00:00Z" ], "upcoming-occurrence": [ "2025-12-01T12:20:00Z" ] } }]]></artwork>]]></sourcecode> </figure> <t>At the time of 12:15PM,PM on 2025-12-01 (UTC), the recurring event occurred at (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, and 12:00. The last occurrence was at 12:00, and the upcoming one is at 12:20.</t> </section> </section> <section anchor="sec-ext"> <name>Examples of Using/Extending the "ietf-schedule" Module</name> <t>This non-normative section shows two examples for how the "ietf-schedule" module can be used or extended for scheduled events or attributes based on date and time.</t> <section anchor="features"> <name>Example: Schedule Tasks to Execute Based on a Recurrence Rule</name> <t>Scheduled tasks can be used to execute specific actions based on certain recurrence rules (e.g., every Friday at 8:00 AM). The following examplemodulemodule, which "uses" the "icalendar-recurrence" grouping from the "ietf-schedule"modulemodule, shows how a scheduled task could be defined with different features used for options.</t><artwork><![CDATA[<sourcecode type="yang"><![CDATA[ module example-scheduled-backup { yang-version 1.1; namespace "http://example.com/example-scheduled-backup"; prefix "ex-scback"; import ietf-inet-types { prefix "inet"; } import ietf-schedule { prefix "schedule"; } organization "Example, Inc."; contact "Support at example.com"; description "Example of a module defining ascheduled basedscheduled-based backup operation."; revision"2023-01-19""2026-02-20" { description "InitialVersion.";version."; reference "RFCXXXX:9922: A YANG Data Model for Scheduling."; } container scheduled-backup-tasks { description "A container for backing up all current runningconfigurationconfigurations on the device."; list tasks { key "task-id"; description "The list of backing up tasks on this device."; leaf task-id { type string; description "The task identifier that uniquely identifies a scheduled backup task."; } choice local-or-remote { description "Specifies whether the configuration to be backed up is local or remote."; case local { description "Configuration parameters for the backing up of local devices."; leaf local { type empty; description "The parameter specifies the configuration to be backed up is on the local device."; } } case remote { description "Configuration parameters for backing up of remote devices."; leaf remote { type inet:domain-name; description "The parameter specifies the remote device domain name."; } } } container basic-recurrence-schedules { if-feature schedule:basic-recurrence; description "Basic recurrence schedule specification, which only applies when the schedule:basic-recurrence feature is supported."; leaf schedule-id { type string; description "The schedule identifier for this recurrence rule."; } uses schedule:recurrence-basic { refine frequency { mandatory true; } refine interval { default 1; } } } container icalendar-recurrence-schedules { if-feature schedule:icalendar-recurrence; description "Basic recurrence schedule specification, which only applies when the schedule:icalendar-recurrence feature is supported."; leaf schedule-id { type string; description "The schedule identifier for this recurrence rule."; } uses schedule:icalendar-recurrence { refine workweek-start { default monday; } } } } list schedule-set { key "schedule-name"; description"The list of schedule"Schedule status list for the backup tasks."; uses schedule:schedule-status-with-name; } } }]]></artwork>]]></sourcecode> </section> <section anchor="augments"> <name>Example: Schedule Network Properties to Change Based on Date and Time</name> <t>Network properties may change over a specific period of time or based on a recurrence rule, e.g., <xref target="RFC9657"/>. The following examplemodulemodule, which augments the "recurrence-utc-with-periods" grouping from the "ietf-schedule"modulemodule, shows how a scheduled attribute could bedefined.</t> <artwork><![CDATA[defined. Note that <br/> <xref target="RFC8345"/> and this document are referenced in the module.</t> <sourcecode type="yang"><![CDATA[ module example-scheduled-link-bandwidth { yang-version 1.1; namespace "http://example.com/example-scheduled-link-bandwidth"; prefix "ex-scattr"; import ietf-network { prefix "nw"; reference "RFC 8345: A YANG Data Model for Network Topologies"; } import ietf-schedule { prefix "schedule"; reference "RFCXXXX:9922: A YANG Data Model for Scheduling"; } organization "Example, Inc."; contact "Support at example.com"; description "Example of a module defining a scheduled link bandwidth."; revision"2023-01-19""2026-02-20" { description "InitialVersion.";version."; reference "RFCXXXX:9922: A YANG Data Model forScheduling.";Scheduling"; } grouping link-bandwidth-grouping { description "Grouping of the link bandwidth definition."; leaf scheduled-bandwidth { type uint64; units "Kbps"; description "Bandwidth values, expressed in kilobits per second."; } } container link-attributes { description "Definition of link attributes."; list link { key "source-node destination-node"; description "Definition of link attributes."; leaf source-node { type nw:node-id; description "Indicates the source node identifier."; } leaf destination-node { type nw:node-id; description "Indicates the source node identifier."; } leaf default-bandwidth { type uint64; units "Kbps"; description "Bandwidth value used forperdiodsperiods that don't match a schedule."; } choice time-variant-type { description "Controls the schedule type."; case period { uses schedule:period-of-time; } case recurrence { uses schedule:recurrence-utc-with-periods { augment "period-timeticks" { description "Specifies the attributes inside eachperiod-timeticks'period-timeticks' entry."; uses link-bandwidth-grouping; } } } } } } }]]></artwork>]]></sourcecode> <t><xref target="ex-13"/> shows a configuration example in XML <xref target="W3C.XML1.0"/> of a link's bandwidth that is scheduled between 2025-12-01 0:00 UTC to the end of 2025-12-31 with a daily schedule. 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 value that is not covered by the period above is 1000 Kbps.</t> <figure anchor="ex-13"> <name>Example of Scheduled Link's Bandwidth</name><artwork><![CDATA[<sourcecode type="xml"><![CDATA[ <?xml version="1.0" encoding="utf-8"?> <link-attributes xmlns="http://example.com/example-scheduled-link-bandwidth" xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> <link> <source-node>ne1</source-node> <destination-node>ne2</destination-node> <default-bandwidth>1000</default-bandwidth> <recurrence-first> <utc-start-time>2025-12-01T01:00:00Z</utc-start-time> </recurrence-first> <frequency>schedule:daily</frequency> <utc-until>2025-12-31T23:59:59Z</utc-until> <period-timeticks> <period-start>360000</period-start> <period-end>2160000</period-end> <scheduled-bandwidth>500</scheduled-bandwidth> </period-timeticks> <period-timeticks> <period-start>7920000</period-start> <period-end>8280000</period-end> <scheduled-bandwidth>800</scheduled-bandwidth> </period-timeticks> </link> </link-attributes>]]></artwork>]]></sourcecode> </figure> </section> </section> <section anchor="ex-framework"> <name>Examples of Using the "ietf-schedule" Module for Scheduled Use of Resources Framework</name> <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" grouping defined in the "ietf-schedule" module to implement scheduled use of resources.</t> <t>The following example module shows how a scheduled link capacity reservation could be defined.</t><artwork><![CDATA[<sourcecode type="yang"><![CDATA[ module example-sch-capacity-res { yang-version 1.1; namespace "http://example.com/example-sch-capacity-res"; prefix "ex-schecaparev"; import ietf-network-topology { prefix "nt"; } import ietf-schedule { prefix "schedule"; } container link-capability-reservations { list scheduled-link-capacity { key "schedule-id"; leaf schedule-id { type string; } leaf link-id { type nt:link-id; } leaf reserved-capability { type uint64; units "Mbps"; } uses schedule:period-of-time; } } }]]></artwork>]]></sourcecode> <t><xref section="4" sectionFormat="of" target="RFC8413"/> defines the reference architecture for scheduled use ofresources, theresources. The service requester sends a request to a Path Computation Element (PCE) and includes the parameters of the Label Switched Path (LSP) that the requester wishes tosupply, thesupply. The configuration example to provide the scheduled resource is shown in <xref target="ex-14"/>.</t> <figure anchor="ex-14"> <name>Example of Scheduled Link's Bandwidth Reservation</name><artwork><![CDATA[<sourcecode type="xml"><![CDATA[ <?xml version="1.0" encoding="utf-8"?> <link-capability-reservations xmlns="http://example.com/example-sch-capacity-res" xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> <scheduled-link-capacity> <schedule-id>1</schedule-id> <link-id>1-2-1</link-id> <reserved-capability>500</reserved-capability> <period-start>2025-03-10T08:00:00Z</period-start> <period-end>2025-03-10T09:00:00Z</period-end> </scheduled-link-capacity> <scheduled-link-capacity> <schedule-id>2</schedule-id> <link-id>2-1-1</link-id> <reserved-capability>400</reserved-capability> <period-start>2025-04-01T00:00:00Z</period-start> <duration>PT09:00:00</duration> </scheduled-link-capacity> <scheduled-link-capacity> <schedule-id>3</schedule-id> <link-id>2-1-1</link-id> <reserved-capability>500</reserved-capability> <period-start>2025-04-01T09:00:00Z</period-start> <period-end>2025-04-01T23:59:59Z</period-end> </scheduled-link-capacity> </link-capability-reservations>]]></artwork>]]></sourcecode> </figure> </section> <section numbered="false" anchor="acknowledgments"> <name>Acknowledgments</name> <t>This work is derived fromthe<xref target="I-D.ietf-opsawg-ucl-acl"/>. There is a desire from the OPSAWG to see thismodel bemodule separately defined for wide use in scheduling context.</t> <t>Thanks toAdrian Farrel, Wei Pan, Tianran Zhou, Joe Clarke, Steve Baillargeon, Dhruv Dhody, Robert Wilton, and Italo Busi<contact fullname="Adrian Farrel"/>, <contact fullname="Wei Pan"/>, <contact fullname="Tianran Zhou"/>, <contact fullname="Joe Clarke"/>, <contact fullname="Steve Baillargeon"/>, <contact fullname="Dhruv Dhody"/>, <contact fullname="Robert Wilton"/>, and <contact fullname="Italo Busi"/> 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"/> 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>Thanks toReshad Rahman<contact fullname="Reshad Rahman"/> for the great YANG Doctors review,Mahesh Jethanandani<contact fullname="Mahesh Jethanandani"/> for the AD review,Per Andersson<contact fullname="Per Andersson"/> for the OPSDIR review,Peter Yee<contact fullname="Peter Yee"/> forgenartthe GENART review, andAcee Lindem<contact fullname="Acee Lindem"/> for thertgdirRTGDIR review.</t> <t>Thanks toÉric Vyncke, Erik Kline, and Mike Bishop<contact fullname="Éric Vyncke"/>, <contact fullname="Erik Kline"/>, and <contact fullname="Mike Bishop"/> for the IESG review.</t> </section> </back> <!-- ##markdown-source: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 +YnrivKzIaUtMaqZn8jPKIL/ib8t8ovaLoLLXBlQpX6QHRXKG1bqIx6Kp+Ou lWgwGfSsAzoj0BU4oXsr9wiSU2C9CVqo4voi7OPVxoNwgW2kG6v44xH6rNgo 84VlpEpbjiRpk4Zioxdo23bd0uAS5SPITm0nMfro5CvJYI/ICdwH6RyfAb4y 0xR/2Aez+Y1+0EQ/oeG09kPAFb0yqekR+L5EY4Th0hGaQeYtI1R1UoaG2Fo6 xJl8uXyM62SchUfZXjrKW/3tCnO5BMEbGmZn+WTUp8tHmRRpaIzdpWM85Q+X j1Ditg6NsbecstSnC0b51MYZTlGta9yNGjQ3ic6VZu0SDvnRICtv2Nr6+n99 vfHtx//qb7xeX1//62b/0d++3jje+Hb9bH2T/vo45H+24J/tv22sOdv362jt AJ7v/o3aWL9ubHx8rXp7u/bN4okd2+WcLxOr6KWkGxtRYinxUYMon6VyBYw6 rJW/a52v9HAuThVOvfZ2TaKlbxqvjtd0XgK6Q4A+BdSCrS7pAt+B3GM7UFcA +TChtByQumuQTmtna1qpcRPcpqWQCqeoyZMyW6v0yQvOfe0nBnftxVqz59LO RGiARHWB1FTAH3qL2JBgx7IFh6p8ZD4ktYJPREEbUOEN2qink6K4mBmHsS5W LicW2KIs81HKcRq4bv9U2eKKkj3L32z9oGjZG2xb5r6qBu04BdtFNHli9UeW McbrOgj0rEsacadodLmjfbNcHwgWRjqT9IpW8JSKgcCflgrzOruxZhVcQ80u Lq+6oPpPOj2f306HgbtV5u1tVa1SbD6ENEms+VkoW1qCPp84113wp1GIfuUi 9KqHO9eiVx0sqNxla7waVQ3N8o7oaj3nCK2PWyX+NvvF3Ktt2zA6sZU1HXe8 Feej8jXRYX9L6RhNrfrATYrIBADTSbO+LGDiu18AGEqqLw0WXw5fBBVVufnC uLLLAAVA4juMXxgmumS5iKz45uqXpio6V1oAFl+1/MJQUUzCAqCcuOS7yWn6 MtR3kqFQCgsd+milGVuSjm8+qW5bx8UUReSEu9eBTbc8sMIx6dbOKyd7gl/1 GO97Ub7X4A5nOX7fkOtuW1FmF3y9p7FVsmodWGGNEQJBVai999lbHfPy0HO+ 4arVFBUHElYJ3NLBtxbREnWL+or6U67yc4Qs1hLRWibHiQSq/rZXHVbfthUf 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 --> </rfc>