<?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, reusing 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"> <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">anchor="W3C.XML1.0" target="https://www.w3.org/TR/2008/REC-xml-20081126/"> <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"; } organization "Example, Inc."; contact "Support at example.com"; description "Example of a module using 'generic-schedule-params' and 'schedule-status' groupings."; revision "2026-02-20" { description "Initial version."; reference "RFC 9922: A YANG Data Model for Scheduling."; } container generic-schedule-params { description "A collection of generic scheduling parameters."; uses schedule:generic-schedule-params; } container schedule-status { description "A collection of scheduling 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"; } organization "Example, Inc."; contact "Support at example.com"; description "Example of a module using the 'period-of-time' grouping."; revision "2026-02-20" { description "Initial version."; reference "RFC 9922: A YANG Data Model for Scheduling."; } container period-of-time { description "A container for a time period."; 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"; } organization "Example, Inc."; contact "Support at example.com"; description "Example of a module using the 'recurrence-basic' grouping."; revision "2026-02-20" { description "Initial version."; reference "RFC 9922: A YANG Data Model for Scheduling."; } container recurrence-basic { description "A container for a simple recurrence rule."; uses schedule:recurrence-basic { refinefrequency { mandatory true; } refineinterval { 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"; } organization "Example, Inc."; contact "Support at example.com"; description "Example of a module using the 'recurrence-utc' grouping."; revision "2026-02-20" { description "Initial version."; reference "RFC 9922: A YANG Data Model for Scheduling."; } container recurrence-utc { description "A container for a simple recurrence rule in UTC format."; 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"; } organization "Example, Inc."; contact "Support at example.com"; description "Example of a module using the 'recurrence-with-time-zone' grouping."; revision "2026-02-20" { description "Initial version."; reference "RFC 9922: A YANG Data Model for Scheduling."; } container recurrence-with-time-zone { description "A container for a simple recurrence rule with a 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"; } organization "Example, Inc."; contact "Support at example.com"; description "Example of a module using the 'recurrence-utc-with-periods' grouping."; revision "2026-02-20" { description "Initial version."; reference "RFC 9922: A YANG Data Model for Scheduling."; } containerrecurrence-utc-with-date-timesrecurrence-utc-with-periods { description "A container for an aggregate set of repeating occurrences in UTC format."; 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"; } organization "Example, Inc."; contact "Support at example.com"; description "Example of a module using the 'recurrence-time-zone-with-periods' grouping."; revision "2026-02-20" { description "Initial version."; reference "RFC 9922: A YANG Data Model for Scheduling."; } containerrecurrence-time-zone-with-date-timesrecurrence-time-zone-with-periods { description "A container for an aggregate set of repeating occurrences with a time zone."; uses schedule:recurrence-time-zone-with-periods; } } module example-sch-usage-8 { yang-version 1.1; namespace "http://example.com/example-sch-usage-8"; prefix "ex-schu-8"; import ietf-schedule { prefix "schedule"; } organization "Example, Inc."; contact "Support at example.com"; description "Example of a module using 'icalendar-recurrence' grouping."; revision "2026-02-20" { description "Initial version."; reference "RFC 9922: A YANG Data Model for Scheduling."; } container icalendar-recurrence { description "A container for a scheduled 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"; } organization "Example, Inc."; contact "Support at example.com"; description "An example to show a scheduled link capacity reservation."; revision "2026-02-20" { description "Initial version."; reference "RFC 9922: A YANG Data Model for Scheduling"; } container link-capability-reservations { description "A container for a scheduled link capability reservations"; list scheduled-link-capacity { key "schedule-id"; description "Definition of scheduled link capacity list"; leaf schedule-id { type string; description "The schedule identifier for this schedule rule."; } leaf link-id { type nt:link-id; description "The identifier of a link in the topology."; } leaf reserved-capability { type uint64; units "Mbps"; description "The reserved capability for a particular link."; } 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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 c2gBAA== --> </rfc>