[要約] 日付や時刻に基づいてイベント、ポリシー、サービス、リソースなどを管理するための共通のYANGデータモデル(ietf-schedule)を定義しています。単純な繰り返しから高度なiCalendar形式まで対応した再利用可能なグループ(grouping)を提供し、スケジュールの検証やステータス報告の仕組みを共通化しています。ネットワーク管理におけるスケジューリング機能のモジュール性と柔軟性を高め、NETCONFやRESTCONFを介した自動化運用の基盤を提供します。
Internet Engineering Task Force (IETF) Q. Ma, Ed.
Request for Comments: 9922 Q. Wu
Category: Standards Track Huawei
ISSN: 2070-1721 M. Boucadair, Ed.
Orange
D. King
Lancaster University
March 2026
This document defines common types and groupings that are meant to be used for scheduling purposes, such as 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 scheduling statuses.
この文書では、日付と時刻に基づいたイベント、ポリシー、サービス、リソースなどのスケジューリング目的で使用される一般的なタイプとグループを定義します。より良いモジュール性を実現するために、YANG モジュールには、さまざまな要件に対応するために、さまざまな表現レベル (つまり、基本から高度まで) を備えた一連の繰り返し関連のグループが含まれています。また、要求されたスケジュールを検証し、スケジュール ステータスを報告するためのグループも定義します。
This is an Internet Standards Track document.
これはインターネット標準化トラックの文書です。
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.
このドキュメントは Internet Engineering Task Force (IETF) の成果物です。これは IETF コミュニティのコンセンサスを表しています。この文書は公開レビューを受け、Internet Engineering Steering Group (IESG) によって公開が承認されています。インターネット標準の詳細については、RFC 7841 のセクション 2 を参照してください。
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc9922.
この文書の現在のステータス、正誤表、およびそれに対するフィードバックの提供方法に関する情報は、https://www.rfc-editor.org/info/rfc9922 で入手できます。
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.
Copyright (c) 2026 IETF Trust および文書の著者として特定された人物。無断転載を禁じます。
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.
この文書は、BCP 78 およびこの文書の発行日に有効な IETF 文書に関する IETF トラストの法的規定 (https://trustee.ietf.org/license-info) の対象となります。これらの文書には、この文書に関するお客様の権利と制限が記載されているため、注意深くお読みください。このドキュメントから抽出されたコード コンポーネントには、トラスト法的規定のセクション 4.e に記載されている改訂 BSD ライセンス テキストが含まれている必要があり、改訂 BSD ライセンスに記載されているように保証なしで提供されます。
1. Introduction
2. Conventions and Definitions
3. Module Overview
3.1. Features
3.2. Types and Identities
3.3. Scheduling Groupings
3.3.1. The "generic-schedule-params" Grouping
3.3.2. The "period-of-time" Grouping
3.3.3. The "recurrence-basic" Grouping
3.3.4. The "recurrence-utc" Grouping
3.3.5. The "recurrence-with-time-zone" Grouping
3.3.6. The "recurrence-utc-with-periods" Grouping
3.3.7. The "recurrence-time-zone-with-periods" Grouping
3.3.8. The "icalendar-recurrence" Grouping
3.3.9. The "schedule-status",
"schedule-status-with-time-zone", and
"schedule-status-with-name" Groupings
3.4. Features Use and Augmentations
4. Some Usage Restrictions
5. Relationship to the DISMAN-SCHEDULE-MIB
6. The "ietf-schedule" YANG Module
7. Security Considerations
8. IANA Considerations
8.1. The IETF XML Registry
8.2. The YANG Module Names Registry
9. References
9.1. Normative References
9.2. Informative References
Appendix A. Examples of Scheduling Format Representation
A.1. The "generic-schedule-params" Grouping
A.2. The "period-of-time" Grouping
A.3. The "recurrence-basic" Grouping
A.4. The "recurrence-utc" Grouping
A.5. The "recurrence-with-time-zone" Grouping
A.6. The "recurrence-utc-with-periods" Grouping
A.7. The "recurrence-time-zone-with-periods" Grouping
A.8. The "icalendar-recurrence" Grouping
A.9. The "schedule-status" Grouping
Appendix B. Examples of Using/Extending the "ietf-schedule" Module
B.1. Example: Schedule Tasks to Execute Based on a Recurrence
Rule
B.2. Example: Schedule Network Properties to Change Based on
Date and Time
Appendix C. Examples of Using the "ietf-schedule" Module for
Scheduled Use of Resources Framework
Acknowledgments
Authors' Addresses
This document defines a common schedule YANG module ("ietf-schedule") that can be used in several scheduling contexts, e.g., (but not limited to) [YANG-NAC], [YANG-OAM], and [YANG-SCHEDULE]. The module includes a set of reusable groupings that are designed to be applicable for scheduling purposes, such as events, policies, services, or resources based on date and time. It also defines groupings for validating requested schedules and reporting scheduling statuses.
この文書は、[YANG-NAC]、[YANG-OAM]、および [YANG-SCHEDULE] など (ただしこれらに限定されない) いくつかのスケジューリング コンテキストで使用できる共通スケジュール YANG モジュール (「ietf-schedule」) を定義します。このモジュールには、日付と時刻に基づいたイベント、ポリシー、サービス、リソースなどのスケジュール設定に適用できるように設計された再利用可能なグループのセットが含まれています。また、要求されたスケジュールを検証し、スケジュール ステータスを報告するためのグループも定義します。
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.
このドキュメントでは、スケジュールによってトリガーされるアクションの性質については何も想定しません。スケジュールの競合の検出と解決については、このドキュメントの範囲外です。
Section 5 discusses the relationship with the Management Information Base (MIB) managed objects for scheduling management operations defined in [RFC3231].
セクション 5 では、[RFC3231] で定義されている管理操作をスケジュールするための管理情報ベース (MIB) 管理オブジェクトとの関係について説明します。
Appendix A describes a set of examples to illustrate the use of the common schedule groupings (Section 3.3). Appendix B provides sample modules to exemplify how future modules can use the extensibility provisions in the "ietf-schedule" module (Section 6). Also, Appendix C provides an example of using the "ietf-schedule" module for scheduled use of a resources framework (e.g., [RFC8413]).
付録 A では、共通スケジュール グループの使用法を示す一連の例について説明します (セクション 3.3)。付録 B は、将来のモジュールが「ietf-schedule」モジュールの拡張性規定をどのように使用できるかを例示するサンプル モジュールを提供します (セクション 6)。また、付録 C では、リソース フレームワーク ([RFC8413] など) を計画的に使用するための「ietf-schedule」モジュールの使用例を示します。
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 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
このドキュメント内のキーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「NOT RECOMMENDED」、「MAY」、および「OPTIONAL」は、ここに示すようにすべて大文字で表示されている場合にのみ、BCP 14 [RFC2119] [RFC8174] で説明されているように解釈されます。
The meanings of the symbols in tree diagrams are defined in [RFC8340].
樹形図内の記号の意味は [RFC8340] で定義されています。
This document uses the YANG terminology defined in Section 3 of [RFC7950].
この文書では、[RFC7950] のセクション 3 で定義されている YANG 用語を使用します。
This document makes use of the following terms:
この文書では次の用語が使用されています。
Recurrence rule:
再発ルール:
Refers to a rule or repeating pattern for recurring events. See also Section 3.8.5.3 of [RFC5545] for a comprehensive iCalendar recurrence rule specification.
定期的なイベントのルールまたは繰り返しパターンを指します。包括的な iCalendar 繰り返しルール仕様については、[RFC5545] のセクション 3.8.5.3 も参照してください。
Recurrence instance (or Recurrence, for short):
繰り返しインスタンス (または、略して「繰り返し」):
Refers to an instance that matches a recurrence rule.
繰り返しルールに一致するインスタンスを指します。
Recurrence set:
繰り返しセット:
Refers to a set of recurrence instances.
一連の繰り返しインスタンスを指します。
Frequency:
頻度:
Characterizes the type of a recurrence rule. Values are taken from the "FREQ" rule in Section 3.3.10 of [RFC5545].
繰り返しルールのタイプを特徴付けます。値は、[RFC5545] のセクション 3.3.10 の「FREQ」ルールから取得されます。
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.
たとえば、1 秒以上の間隔に基づく繰り返しイベントは、頻度値が「SECONDLY」の再発として分類されます。YANG モジュールで ID として定義された周波数値は小文字で使用されます。
iCalendar:
iカレンダー:
Refers to Internet Calendaring per [RFC5545].
[RFC5545] によるインターネット カレンダーを指します。
Interval:
間隔:
Refers to an integer that specifies the interval at which a recurrence rule repeats. Values are taken from the "INTERVAL" rule in Section 3.3.10 of [RFC5545].
繰り返しルールが繰り返される間隔を指定する整数を指します。値は、[RFC5545] のセクション 3.3.10 の「INTERVAL」ルールから取得されます。
For example, "1" means every second for a secondly rule, every minute for a minutely rule, every hour for an hourly rule, etc.
たとえば、「1」は 2 番目のルールの場合は毎秒、分単位のルールの場合は毎分、毎時ルールの場合は毎時などを意味します。
System:
システム:
Refers to an entity that hosts a schedule that is managed using the YANG module defined in this document.
このドキュメントで定義されている YANG モジュールを使用して管理されるスケジュールをホストするエンティティを指します。
"schedule-status-*" refers to any of "schedule-status", "schedule-status-with-time-zone", and "schedule-status-with-name".
「スケジュール状態-*」は、「スケジュール状態」、「タイムゾーン付きスケジュール状態」、「名前付きスケジュール状態」のいずれかを指します。
The "ietf-schedule" data model defines the recurrence-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:
「ietf-schedule」データ モデルは、モジュラー アプローチを使用して繰り返し関連のグループ化を定義します。その目的のために、基本的なものから高度な (iCalender のような) ものまでのさまざまな繰り返しグループ化の表現が定義されています。さまざまなオプションを可能にするために、データ モデルで 2 つの機能が定義されています。
* "basic-recurrence"
* 「基本回帰」
* "icalendar-recurrence"
* 「カレンダー再発」
Refer to Section 3.4 and Appendix B.1 for the use of these features.
これらの機能の使用方法については、セクション 3.4 および付録 B.1 を参照してください。
The "ietf-schedule" module (Section 6) defines the following identities:
「ietf-schedule」モジュール (セクション 6) は次の ID を定義します。
* "schedule-type": Indicates the type of schedule. The following types are defined so far:
* "schedule-type": スケジュールの種類を示します。これまでに次の型が定義されています。
- one-shot: This type is used for a schedule that 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 (Section 3.3 of [RFC3231]).
- ワンショット: このタイプは、期間が 0 に指定されるか、終了時刻が開始時刻と同じに指定されるアクションをトリガーするスケジュールに使用され、その後、スケジュール自体が無効になります ([RFC3231] のセクション 3.3)。
- period: This 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.
- period: このタイプは、(1) 開始と終了、または (2) 開始と正の期間のいずれかで構成される期間ベースのスケジュールに使用されます。終了も期間も示されていない場合、その期間は永久に続くものとみなされます。
- 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).
- 繰り返し: このタイプは、繰り返しベースのスケジュールに使用されます。再発は周期的(つまり、同じ期間にわたって繰り返す、たとえば 5 分ごと)である場合もあれば、そうでない(つまり、不定期に繰り返す、たとえば毎日午前 8 時と午前 9 時に繰り返す)場合もあります。
* "frequency-type": Characterizes the repeating interval rule of a recurrence schedule (secondly, minutely, etc.).
* "frequency-type": 繰り返しスケジュールの繰り返し間隔ルールを特徴付けます (2 回目、1 分ごとなど)。
* "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.
* 「schedule-state」: スケジュールのステータス (有効、無効、競合、終了など) を示します。この ID は、繰り返しベースのスケジュールの個々のインスタンスの状態を管理するために使用することもできます。
* "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.
* 「discard-action-type」: 要求されたスケジュールが何らかの理由で受け入れられず破棄された場合に、レスポンダーが実行するアクション (警告やエラー メッセージの生成など) を指定します。
The "ietf-schedule" module (Section 6) defines the following groupings:
「ietf-schedule」モジュール (セクション 6) では、次のグループ分けが定義されています。
* "generic-schedule-params" (Section 3.3.1)
* 「generic-schedule-params」(セクション3.3.1)
* "period-of-time" (Section 3.3.2)
* 「期間」(セクション 3.3.2)
* "recurrence-basic" (Section 3.3.3)
* 「recurrence-basic」(セクション3.3.3)
* "recurrence-utc" (Section 3.3.4)
* 「recurrence-utc」 (セクション 3.3.4)
* "recurrence-with-time-zone" (Section 3.3.5)
* 「タイムゾーン付き再発」(セクション 3.3.5)
* "recurrence-utc-with-periods" (Section 3.3.6)
* 「recurrence-utc-with-periods」(セクション 3.3.6)
* "recurrence-time-zone-with-periods" (Section 3.3.7)
* 「期間付き繰り返しタイムゾーン」(セクション 3.3.7)
* "icalendar-recurrence" (Section 3.3.8)
* 「icalendar-recurrence」(セクション3.3.8)
* "schedule-status", "schedule-status-with-time-zone", and "schedule-status-with-name" (Section 3.3.9)
* 「スケジュールステータス」、「タイムゾーン付きスケジュールステータス」、および「名前付きスケジュールステータス」 (セクション 3.3.9)
Examples are provided in Appendix A.
例は付録 A に記載されています。
A system accepts and handles schedule requests, which may help further automate the scheduling process of events, policies, services, or resources based on date and time. The "generic-schedule-params" grouping (Figure 1) specifies a set of configuration parameters that are used by a system for validating requested schedules.
システムはスケジュール要求を受け入れて処理します。これは、日付と時刻に基づいてイベント、ポリシー、サービス、またはリソースのスケジュール設定プロセスをさらに自動化するのに役立ちます。「generic-schedule-params」グループ (図 1) は、要求されたスケジュールを検証するためにシステムによって使用される構成パラメーターのセットを指定します。
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
Figure 1: 'generic-schedule-params' Grouping Tree Structure
図 1: 「generic-schedule-params」のグループ化ツリー構造
The "description" parameter includes a description of the schedule. No constraint is imposed on the structure nor the use of this parameter.
「description」パラメータには、スケジュールの説明が含まれる。このパラメータの構造や使用法には制約はありません。
The "time-zone-identifier" parameter, if provided, specifies the time zone reference [RFC7317] of the local date and time values. 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 values that are specified in the format of UTC or time zone offset to UTC.
"time-zone-identifier" パラメータが指定されている場合、ローカルの日付と時刻の値のタイム ゾーン参照 [RFC7317] を指定します。日付と時刻の値のいずれかが現地時間の形式である場合、このパラメータを指定する必要があります。これは、UTC または UTC へのタイム ゾーン オフセットの形式で指定された日付と時刻の値に適用してはなりません。
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 started and thus executed independently from when it ends, and it takes precedence over similar attributes that are provided at the schedule instance itself. A requested schedule may still be accepted, but any occurrences that start later than the configured value will not be executed.
「validity」パラメータは、スケジュールが有効とみなされなくなる日時を指定します。これは、スケジュールを開始できる最終時刻を決定し、終了時刻とは独立して実行でき、スケジュール インスタンス自体で提供される同様の属性よりも優先されます。要求されたスケジュールは引き続き受け入れられますが、構成された値より後に開始されるオカレンスは実行されません。
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.
「max/min-allowed-start」パラメータは、スケジュールされた開始日時の最大/最小を指定します。スケジュールの最初の発生が設定値よりも遅い/早い場合、要求されたスケジュールは拒否されます。
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.
「max-allowed-end」パラメータは、最後の出現の最大許容終了時間を指定します。最後の発生の終了時間が設定された「max-allowed-end」値よりも遅い場合、要求されたスケジュールは拒否されます。
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 start has already passed).
「discard-action」パラメータは、要求されたスケジュールが何らかの理由で受け入れられず、破棄された場合のアクションを指定します。考えられる理由としては、要求されたスケジュールがこのグループの保護者を満足させられない、既存のスケジュールと競合する、または期限切れである (例: 開始予定時刻がすでに過ぎているなど) が含まれますが、これらに限定されません。
These parameters apply to all schedules on a system and are meant to provide guards against stale configuration, schedule requests that are too short and that would thus prevent validation by admins of some critical systems, etc.
これらのパラメータはシステム上のすべてのスケジュールに適用され、古い設定や、短すぎるために一部の重要なシステムの管理者による検証を妨げるスケジュール要求などに対する保護を提供することを目的としています。
The "period-of-time" grouping (Figure 2) represents a time period using either a start date and time ("period-start") and end date and time ("period-end") or a start date and time ("period-start") and a non-negative time duration ("duration"). For the first format, the start of the period MUST 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.
「期間」グループ (図 2) は、開始日時 (「period-start」) と終了日時 (「period-end」)、または開始日時 (「period-start」) と非負の期間 (「duration」) を使用して期間を表します。最初の形式の場合、期間の開始は期間の終了以降でなければなりません。終了日時 (「期間終了」) も期間 (「期間」) も指定されていない場合、その期間は永久に続くものとみなされます。期間 ("duration") の値が 0 であるか、終了時刻 ("period-end") が開始時刻 ("period-start") と同じである場合、その期間はワンショット スケジュールとみなされます。開始日時 (「period-start」) が指定されていない場合、期間は直ちに開始されるとみなされます。
The "time-zone-identifier" parameter 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 values that are specified in the format of UTC or time zone offset to UTC.
「time-zone-identifier」パラメータは、タイムゾーンの識別子を示します。「period-start」または「period-end」の値が現地時間形式で報告される場合、このパラメータを指定する必要があります。これは、UTC または UTC へのタイム ゾーン オフセットの形式で指定された日付と時刻の値に適用してはなりません。
The "period-description" parameter includes a description of the period. No constraint is imposed on the structure nor the use of this parameter.
「period-description」パラメータには、期間の説明が含まれます。このパラメータの構造や使用法には制約はありません。
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
Figure 2: 'period-of-time' Grouping Tree Structure
図 2: 「期間」グループ化ツリー構造
The "recurrence-basic" grouping (Figure 3) specifies a simple recurrence rule that starts immediately and repeats forever.
「recurrence-basic」グループ (図 3) は、すぐに開始され永久に繰り返される単純な繰り返しルールを指定します。
grouping recurrence-basic:
+-- recurrence-description? string
+-- frequency? identityref
+-- interval? uint32
Figure 3: 'recurrence-basic' Grouping Tree Structure
図 3: 「recurrence-basic」グループ化ツリー構造
The frequency parameter ("frequency") identifies the type of recurrence rule. For example, a "daily" frequency value specifies repeating events based on an interval of a day or more.
頻度パラメーター (「頻度」) は、反復ルールのタイプを識別します。たとえば、「毎日」の頻度値は、1 日以上の間隔に基づいて繰り返しイベントを指定します。
Consistent with Section 3.3.10 of [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.
[RFC5545] のセクション 3.3.10 と一致し、間隔パラメータ (「間隔」) は、繰り返しルールが繰り返される間隔を表します。たとえば、「毎日」の繰り返しルール内では、間隔値「8」は 8 日ごとを意味します。
Note that, per Section 4.13 of [YANG-GUIDE], no "default" 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 SHOULD refine these two nodes with either a "mandatory" or a "default" statement if they always need to be configured or have default values. This recommendation MAY be ignored in cases such as when this grouping is used by another grouping.
[YANG-GUIDE] のセクション 4.13 に従って、ここでは「frequency」パラメータと「interval」パラメータの両方に対して「default」サブステートメントが定義されていないことに注意してください。これは、これらのステートメントの使用に問題がある場合 (プロファイリングなど) があるためです。同じ理由で、ここでは「必須」サブステートメントは定義されていません。このグループ化を使用する YANG モジュールは、これら 2 つのノードを常に構成する必要がある場合、またはデフォルト値を持つ必要がある場合、「必須」または「デフォルト」ステートメントでこれら 2 つのノードを調整する必要があります (SHOULD)。この推奨事項は、このグループ化が別のグループ化によって使用されている場合などには無視されてもよい(MAY)。
The "recurrence-description" parameter includes a description of the period. No constraint is imposed on the structure nor the use of this parameter.
「recurrence-description」パラメータには、期間の説明が含まれます。このパラメータの構造や使用法には制約はありません。
The "recurrence-utc" grouping (Figure 4) uses the "recurrence-basic" grouping (Section 3.3.3) and specifies a simple recurrence rule in UTC format.
「recurrence-utc」グループ (図 4) は、「recurrence-basic」グループ (セクション 3.3.3) を使用し、単純な繰り返しルールを UTC 形式で指定します。
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
Figure 4: 'recurrence-utc' Grouping Tree Structure
図 4: 「recurrence-utc」グループ化ツリー構造
The "start-time-utc" parameter indicates the start time in UTC format.
「start-time-utc」パラメータは、開始時刻を UTC 形式で示します。
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.
「duration」パラメータは、最初の発生の期間を秒単位で指定します。特に指定しない限り(追加の拡張パラメータなどを通じて)、「期間」は後続の繰り返しインスタンスにも適用されます。指定されていない場合、各発生は即時に完了するとみなされるか (たとえば、すぐに完了すると考えられる即時コマンドを実行する)、または正確な期間を計算するのが難しいとみなされます (たとえば、実行時間がデータ量と計算リソースの可用性に依存する可能性があるデータ分析スクリプトを実行する)。タスクに「期間」で指定された時間を超える場合の動作は対象外です。このような考慮事項は、スケジュール管理ではなくタスク管理に属します。
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 frequency 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).
「間隔」と「期間」は、スケジュール イベントの 2 つの異なるプロパティをカバーすることに注意してください。間隔はスケジュールがいつ発生するかを頻度パラメータと組み合わせて指定し、期間はスケジュールが発生する期間を示します。このドキュメントでは、発生間の間隔を各発生の期間よりも短くすることができます (たとえば、定期的なイベントが 2 日間毎日開始されるようにスケジュールされています)。
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 MUST be greater than 1, and the "start-time-utc" value always counts as the first occurrence.
繰り返しの範囲は、指定した終了時間または「繰り返し終了」の選択で示される発生回数によって決まります。「count」値は 1 より大きくなければならず、「start-time-utc」値は常に最初の出現としてカウントされます。
The "recurrence-utc" grouping is designed to be reused in scheduling contexts where machine readability is more desirable.
「recurrence-utc」グループは、機械可読性がより望ましいスケジューリング コンテキストで再利用できるように設計されています。
The "recurrence-with-time-zone" grouping (Figure 5) uses the "recurrence-basic" grouping (Section 3.3.3) and specifies a simple recurrence rule with a time zone.
「recurrence-with-time-zone」グループ化 (図 5) は、「recurrence-basic」グループ化 (セクション 3.3.3) を使用し、タイムゾーンを使用した単純な繰り返しルールを指定します。
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
Figure 5: 'recurrence-with-time-zone' Grouping Tree Structure
図 5: 「recurrence-with-timezone」グループ化ツリー構造
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).
「recurrence-first」コンテナには、最初の発生の開始時刻と期間を指定する「start-time」パラメータと「duration」パラメータが含まれています。特に指定しない限り(追加の拡張パラメータなどを通じて)、「期間」は後続の繰り返しインスタンスにも適用されます。指定されていない場合、各発生は即時に完了するとみなされるか (たとえば、すぐに完了すると考えられる即時コマンドを実行する)、または正確な期間を計算するのが難しいとみなされます (たとえば、実行時間がデータ量と計算リソースの可用性に依存する可能性があるデータ分析スクリプトを実行する)。
The grouping also includes a "time-zone-identifier" parameter, which 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 values that are specified in the format of UTC or time zone offset to UTC.
グループ化には、「time-zone-identifier」パラメータも含まれます。これは、「start-time」または「until」値が現地時間形式で報告される場合に指定する必要があります。これは、UTC または UTC へのタイム ゾーン オフセットの形式で指定された日付と時刻の値に適用してはなりません。
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 MUST be greater than 1, and the "start-time" value always counts as the first occurrence.
繰り返しの範囲は、指定した終了時間または「繰り返し終了」の選択で示される発生回数によって決まります。「count」値は 1 より大きくなければならず、「start-time」値は常に最初の出現としてカウントされます。
The considerations discussed in Section 3.3.4 for "interval" and "duration" are also applicable to "recurrence-with-time-zone".
セクション 3.3.4 で説明した「間隔」と「期間」に関する考慮事項は、「タイムゾーン付きの繰り返し」にも当てはまります。
Unlike the definition of the "recurrence-utc" grouping (Section 3.3.4), "recurrence-with-time-zone" is intended to promote human readability over machine readability.
"recurrence-utc" グループ化の定義 (セクション 3.3.4) とは異なり、"recurrence-with-time-zone" は、機械の可読性よりも人間の可読性を高めることを目的としています。
The "recurrence-utc-with-periods" grouping (Figure 6) uses the "recurrence-utc" grouping (Section 3.3.4) and adds a "period-timeticks" list to define an aggregate set of repeating occurrences.
「recurrence-utc-with-periods」グループ化 (図 6) は、「recurrence-utc」グループ化 (セクション 3.3.4) を使用し、「period-timeticks」リストを追加して、繰り返し発生する集合セットを定義します。
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
Figure 6: 'recurrence-utc-with-periods' Grouping Tree Structure
図 6: 「recurrence-utc-with-periods」のグループ化ツリー構造
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 [RFC9911]. Duplicate instances are ignored. The value of the "period-start" instance MUST NOT exceed the value of the "frequency" instance, i.e., the "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.
繰り返しインスタンスは、繰り返しルールと「period-timeticks」リストの両方で定義された出現の和集合によって指定されます。このリストは、[RFC9911] で定義されている「yang:timeticks」タイプを使用します。重複するインスタンスは無視されます。「period-start」インスタンスの値は、「frequency」インスタンスの値を超えてはなりません。つまり、「timeticks」値は、2 番目の繰り返しルールでは 100 を超えてはならず、1 分ごとの繰り返しルールでは 6000 を超えてはなりません。
The "recurrence-time-zone-with-periods" grouping (Figure 7) uses the "recurrence-with-time-zone" grouping (Section 3.3.5) and adds a "period" list to define an aggregate set of repeating occurrences.
「recurrence-time-zone-with-periods」グループ化 (図 7) は、「recurrence-with-time-zone」グループ化 (セクション 3.3.5) を使用し、「期間」リストを追加して、繰り返し発生する集合セットを定義します。
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
Figure 7: 'recurrence-time-zone-with-periods' Grouping Tree Structure
図 7: 「繰り返しタイムゾーンと期間」のグループ化ツリー構造
The recurrence instances are specified by the union of occurrences defined by both the recurrence rule and "period" list. Duplicate instances are ignored.
繰り返しインスタンスは、繰り返しルールと「期間」リストの両方で定義された出現の和集合によって指定されます。重複するインスタンスは無視されます。
The "icalendar-recurrence" grouping (Figure 8) uses the "recurrence-time-zone-with-periods" grouping (Section 3.3.7) 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 3.3.10 and 3.8.5 of [RFC5545].
「icalendar-recurrence」グループ (図 8) は、「recurrence-time-zone-with-periods」グループ (セクション 3.3.7) を使用し、より多くのデータ ノードを定義して、繰り返しの定義を強化します。"icalendar-recurrence" グループの構造は、[RFC5545] のセクション 3.3.10 および 3.8.5 で定義されている繰り返しコンポーネントの定義を参照します。
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
Figure 8: 'icalendar-recurrence' Grouping Tree Structure
図 8: 「icalendar-recurrence」のグループ化ツリー構造
An array of the "bysecond" (or "byminute" or "byhour") specifies a list of seconds within a minute (or minutes within an hour or hours of the day). For example, within a "minutely" recurrence rule, the values of "byminute" node "10" and "20" mean the occurrences are generated at the 10th and 20th minute within an hour, reducing the number of recurrence instances from all minutes.
「by秒」(または「分ごと」または「時間ごと」)の配列は、1分内の秒(または1時間または1日の時間内の分)のリストを指定します。たとえば、「分ごと」の繰り返しルール内で、「分ごと」ノードの値「10」と「20」は、オカレンスが 1 時間内の 10 分目と 20 分目に生成され、すべての分からの繰り返しインスタンスの数が減少することを意味します。
The parameter "byday" specifies a list of days of the week, with an optional direction that 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" recurrence 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.
パラメータ「byday」は、曜日のリストを指定します。オプションの方向は、「月ごと」または「年ごと」の頻度インスタンス内で特定の日が n 番目に出現することを示します。「方向」の有効な値は、「月次」の繰り返しルールの場合は 1 ~ 5 または -5 ~ -1、「年次」の繰り返しルールの場合は 1 ~ 53 または -53 ~ -1 です。たとえば、「monthly」ルール内では、値が「monday」の「weekday」と値が「-1」の「direction」は月の最後の月曜日を表します。
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" instances "1" and "2" mean the occurrences are generated in January and February, increasing the "yearly" recurrence from every year to every January and February of the year.
"bymonthday" (または byyearday、"byyearweek"、または "byyearmonth") の配列は、月の日 (または年間の日、年間の週、または年間の月) のリストを指定します。たとえば、"yearly" 繰り返しルール内で、"byyearmonth" インスタンスの値 "1" と "2" は、発生が 1 月と 2 月に生成されることを意味し、"yearly" の繰り返しが毎年から毎年 1 月と 2 月に増加します。
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.
「bysetpos」は、指定される一連の繰り返しインスタンス内の n 番目の出現に対応する値のリストを伝えます。たとえば、「毎月」の繰り返しルールでは、「byday」データ ノードは毎週月曜日を指定し、値が「-1」の「bysetpos」は月の最後の月曜日を表します。「bysetpos」データ ノードを設定しない場合は、毎月月曜日を表します。
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. Note that, per Section 4.13 of [YANG-GUIDE], no "default" 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 SHOULD refine the "workweek-start" node with either a "mandatory" or a "default" statement if it always needs to be configured or has a default value. This MAY be ignored in cases such as when this grouping is used by another grouping.
「workweek-start」データ ノードは、週の開始日を指定します。これは、「毎週」の繰り返しルールの間隔が 1 より大きく、「日ごと」のデータ ノードが指定されている場合に重要です。これは、「yearly」ルールで「byyearweek」が指定されている場合にも重要です。[YANG-GUIDE] のセクション 4.13 に従って、これらのステートメントの使用に問題がある場合 (プロファイリングなど) があるため、ここでは「デフォルト」サブステートメントは定義されていないことに注意してください。同じ理由で、ここでは「必須」サブステートメントは定義されていません。このグループ化を使用する YANG モジュールは、常に構成する必要がある場合、またはデフォルト値がある場合、「workweek-start」ノードを「mandatory」または「default」ステートメントで調整する必要があります(SHOULD)。このグループ化が別のグループ化によって使用されている場合などには、これは無視されてもよい(MAY)。
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 recurrence rules and date-times and then excluding any start date and time values specified by "exception-dates" parameter.
「例外日付」データ ノードは、再発の例外のリストを指定します。最終的な繰り返しセットは、指定された繰り返しルールと日付時刻のいずれかによって作成された日付と時刻の値をすべて収集し、「例外日付」パラメータで指定された開始日時の値を除外することによって生成されます。
The "schedule-status", "schedule-status-with-time-zone", and "schedule-status-with-name" groupings (Figure 9) 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.
「schedule-status」、「schedule-status-with-time-zone」、および「schedule-status-with-name」グループ (図 9) は、スケジュール管理/ステータス公開のための共通パラメータを定義します。「schedule-status-with-time-zone」グループは「schedule-status」と同じ構造ですが、タイム ゾーンを識別するための追加パラメーターが含まれています。同様に、「schedule-status-with-name」グループは「schedule-status」と同じ構造を持ちますが、スケジュール「schedule-name」を識別するための追加パラメータが付いています。これらの構造はモジュール内で定義され、モジュール性と柔軟性が向上します。
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
Figure 9: 'schedule-status-*' Groupings Tree Structure
図 9: 「schedule-status-*」グループのツリー構造
The "schedule-name" parameter is useful to uniquely identify a schedule in a network device or controller if multiple scheduling contexts exist.
「schedule-name」パラメータは、複数のスケジューリング コンテキストが存在する場合に、ネットワーク デバイスまたはコントローラ内のスケジュールを一意に識別するのに役立ちます。
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.
「state」パラメータは、グループ化の使用に応じて、スケジューリング状態を構成/公開するために定義されます。繰り返しベースのスケジュールの場合、これは全体的な繰り返しの状態を表します。「identityref」タイプは、将来のモジュールでの拡張性を可能にするためにこのパラメータに使用されます。
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.
「version」パラメータは、現在のスケジュールのバージョン情報を追跡するために使用されます。バージョンは、スケジュールを作成したエンティティによって増分できます。「last-update」パラメータは、スケジュールが最後に変更された時期を識別します。状況によっては、このパラメータを使用して、特定のスケジュールの構成を追跡できます。このような場合、「バージョン」は使用できない場合があります。
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".
「schedule-type」パラメータは、現在のスケジュールのタイプを識別します。「counter」、「last-occurrence」、および「upcoming-occurrence」データ ノードは、「schedule-type」が「recurrence」の場合にのみ使用できます。
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 [RFC3231].
タイム ゾーンが含まれていない場合、「local-time」は、スケジュールをホストするエンティティによって表示される実際の現地時間を報告します。This parameter can be used by a controller to infer the offset to UTC.この使用法は、[RFC3231] の「schedLocalTime」の使用法に似ています。
"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.
「last-failed-occurrence」と「failure-counter」は、最後に発生した障害と、このスケジュールの障害の数を報告します。失敗数をリセットできるように新しいパラメータ/操作が定義されていない限り、「failure-counter」はスケジュールの開始時にのみデフォルトでリセットされます。
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.
現在のグループ化は、これまでに知られている典型的なスケジューリング コンテキストに適用できる共通のパラメーターをキャプチャします。将来のモジュールでは、必要に応じて他の便利なパラメータを定義できます。たとえば、スケジュールを供給する複数のシステム ソースを使用したスケジューリング コンテキストでは、さまざまなソースからのスケジュールの優先順位を反映するために、「source」パラメーターと「precedence」パラメーターが必要になる場合があります。
Appendix B.1 provides an example about how the features defined in Section 3.1 can be used. Implementations may support a basic recurrence rule or an advanced one, as needed, by declaring different features. Whether only one or both features are supported is implementation specific and depends on the specific scheduling context.
付録 B.1 では、セクション 3.1 で定義された機能の使用方法の例を示します。実装では、必要に応じて、さまざまな機能を宣言することで、基本的な繰り返しルールまたは高度なルールをサポートできます。1 つの機能のみがサポートされるか、両方の機能がサポートされるかは実装に固有であり、特定のスケジューリング コンテキストによって異なります。
The common schedule groupings (Section 3.3) can also be augmented to support specific needs. As an example, Appendix B.2 demonstrates how additional parameters can be added to comply with specific schedule needs.
共通のスケジュール グループ (セクション 3.3) を拡張して、特定のニーズをサポートすることもできます。例として、付録 B.2 では、特定のスケジュールのニーズに準拠するためにパラメータを追加する方法を示します。
There are some restrictions that need to be followed when using groupings defined in the "ietf-schedule" YANG module (Section 3.3):
「ietf-schedule」YANG モジュール (セクション 3.3) で定義されたグループ化を使用する場合、従う必要がある制限がいくつかあります。
* The instant in time represented by "period-start" MUST be before the "period-end" for the "period-of-time" grouping (Section 3.3.2).
* "period-start" で表される瞬間は、"period-of-time" グループ (セクション 3.3.2) の "period-end" より前でなければなりません。
* The combination of the day, month, and year represented for date and time values MUST be valid. See Section 5.7 of [RFC3339] for the maximum day number based on the month and year.
* 日付と時刻の値として表される日、月、年の組み合わせは有効でなければなりません。月と年に基づく最大日数については、[RFC3339] のセクション 5.7 を参照してください。
* Unless deployed in contexts where time synchronization is not subject to leap second adjustments (e.g., Section 4.3 of [NTPv5]), the second for date and time values SHOULD have the value "60" at the end of months in which a leap second occurs.
* 時刻同期がうるう秒調整の対象ではないコンテキスト (例: [NTPv5] のセクション 4.3) で展開されていない限り、日付と時刻の値の秒は、うるう秒が発生する月の終わりには値「60」を持つべきです (SHOULD)。
* Schedules received with a starting time in the past with respect to current time SHOULD be ignored. When a local policy is provided, an implementation MAY omit the past occurrences and start immediately (e.g., for a period-based schedule) or start from the date and time when the recurrence pattern is first satisfied from the current time (e.g., for a recurrence-based schedule).
* 現在時刻に対して過去の開始時刻で受信したスケジュールは無視されるべきです(SHOULD)。ローカルポリシーが提供される場合、実装は過去の発生を省略して直ちに開始することもできます(例:期間ベースのスケジュールの場合)、または現在時刻から最初に繰り返しパターンが満たされた日時から開始することもできます(例:繰り返しベースのスケジュールの場合)。
[RFC3231] specifies a Management Information Base (MIB) used to schedule management operations periodically or at specified dates and times.
[RFC3231] は、定期的または指定された日時に管理操作をスケジュールするために使用される管理情報ベース (MIB) を指定します。
Although no data nodes are defined in this document, Table 1 lists how the main objects in the DISMAN-SCHEDULE-MIB can be mapped to YANG parameters.
この文書ではデータ ノードは定義されていませんが、表 1 に、DISMAN-SCHEDULE-MIB の主要オブジェクトを YANG パラメータにマッピングする方法を示します。
+==================+=========================+
| MIB Object | YANG |
+==================+=========================+
| schedLocalTime | local-time |
+------------------+-------------------------+
| schedType | schedule-type |
+------------------+-------------------------+
| schedName | schedule-name |
+------------------+-------------------------+
| schedOwner | Not Supported |
+------------------+-------------------------+
| schedDescr | description |
+------------------+-------------------------+
| schedInterval | interval |
+------------------+-------------------------+
| schedWeekDay | weekday |
+------------------+-------------------------+
| schedMonth | byyearmonth |
+------------------+-------------------------+
| schedDay | bymonthday |
+------------------+-------------------------+
| schedHour | byhour |
+------------------+-------------------------+
| schedMinute | byminute |
+------------------+-------------------------+
| schedContextName | Not Supported |
+------------------+-------------------------+
| schedAdminStatus | state |
+------------------+-------------------------+
| schedOperStatus | state |
+------------------+-------------------------+
| schedFailures | failure-counter |
+------------------+-------------------------+
| schedLastFailure | Not Supported |
+------------------+-------------------------+
| schedLastFailed | last-failed-occurrence |
+------------------+-------------------------+
| schedStorageType | Not Supported |
+------------------+-------------------------+
| schedVariable | Not applicable |
+------------------+-------------------------+
| schedValue | Not applicable |
+------------------+-------------------------+
| schedTriggers | counter/failure-counter |
+------------------+-------------------------+
Table 1: YANG/MIB Mapping
表 1: YANG/MIB マッピング
This module imports types defined in [RFC9911] and [RFC7317].
このモジュールは、[RFC9911] および [RFC7317] で定義されたタイプをインポートします。
file "ietf-schedule@2026-03-10.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
"RFC 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>
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 groupings
that are applicable for scheduling purposes, such as events,
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) 2026 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).
This version of this YANG module is part of RFC 9922; see
the RFC itself for full legal notices.
All revisions of IETF and IANA-maintained modules can be found
in the 'YANG Parameters' registry group
(https://www.iana.org/assignments/yang-parameters).";
revision 2026-03-10 {
description
"Initial revision.";
reference
"RFC 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 iCalendar 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 values that 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 or being 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 values that 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 of '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
occurrence 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
values that 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. That 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-or-self(../../frequency,"
+ "'schedule:secondly')) or (current() < 100)) and "
+ "(not(derived-from-or-self(../../frequency,"
+ "'schedule:minutely')) or (current() < 6000)) and "
+ "(not(derived-from-or-self(../../frequency,"
+ "'schedule:hourly')) or (current() < 360000)) and "
+ "(not(derived-from-or-self(../../frequency,"
+ "'schedule:daily')) or (current() < 8640000)) and "
+ "(not(derived-from-or-self(../../frequency,"
+ "'schedule:weekly')) or (current() < 60480000)) and "
+ "(not(derived-from-or-self(../../frequency,"
+ "'schedule:monthly')) or (current() < 267840000)) and "
+ "(not(derived-from-or-self(../../frequency,"
+ "'schedule:yearly')) or (current() < 3162240000))" {
error-message
"The '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 translate to 100 = 1 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-or-self(../../frequency, "
+ "'schedule:monthly') or "
+ "(derived-from-or-self(../../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 first Monday within the month, whereas
-1 monday represents the last Monday 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-or-self(../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.) rule
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 timestamp of 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, including 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;
}
}
This section is modeled after the template described in Section 3.7 of [YANG-GUIDE].
このセクションは、[YANG-GUIDE] のセクション 3.7 で説明されているテンプレートをモデルにしています。
The "ietf-schedule" YANG module defines a data model that is designed to be accessed via YANG-based management protocols, such as NETCONF [RFC6241] and RESTCONF [RFC8040]. These YANG-based management protocols (1) have to use a secure transport layer (e.g., SSH [RFC4252], TLS [RFC8446], and QUIC [RFC9000]) and (2) have to use mutual authentication.
「ietf-schedule」YANG モジュールは、NETCONF [RFC6241] や RESTCONF [RFC8040] などの YANG ベースの管理プロトコルを介してアクセスできるように設計されたデータ モデルを定義します。これらの YANG ベースの管理プロトコルは、(1) 安全なトランスポート層 (SSH [RFC4252]、TLS [RFC8446]、QUIC [RFC9000] など) を使用する必要があり、(2) 相互認証を使用する必要があります。
The Network Configuration Access Control Model (NACM) [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.
Network Configuration Access Control Model (NACM) [RFC8341] は、特定の NETCONF または RESTCONF ユーザーのアクセスを、利用可能なすべての NETCONF または RESTCONF プロトコルの操作およびコンテンツの事前構成されたサブセットに制限する手段を提供します。
The "ietf-schedule" module defines a set of identities, 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.
「ietf-schedule」モジュールは、一連の ID、タイプ、およびグループ化を定義します。これらのノードは、他の YANG モジュールによって再利用されることを目的としています。このモジュール自体は、書き込み可能なデータ ノード、読み取り専用状態を含むデータ ノード、または RPC を公開しません。そのため、「ietf-schedule」モジュールに関連して考慮する必要のある追加のセキュリティ問題はありません。
Modules that use the groupings that are defined in this document should identify the corresponding security considerations. For example, reusing the following groupings will expose privacy-related information:
この文書で定義されているグループを使用するモジュールは、対応するセキュリティ上の考慮事項を特定する必要があります。たとえば、次のグループを再利用すると、プライバシー関連の情報が公開されます。
* 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.
* スケジューリングは、信頼性が高く正確な時刻同期に依存します。日付と時刻の設定が不正確であると、スケジュール イベントが不正確な間隔でトリガーされ、システム障害やセキュリティの脆弱性が発生する可能性があります。
* Recurring events may conceal abnormal behavior or security threats, which may be drowned out by normal events, especially when they are triggered frequently.
* 繰り返し発生するイベントには、異常な動作やセキュリティ上の脅威が隠されている可能性がありますが、特に頻繁にトリガーされる場合には、通常のイベントによってかき消される可能性があります。
* The absence of detailed logs and audit records of each occurrence trigger time and action results and therefore may make security incidents difficult to trace.
* 各発生のトリガー時間とアクション結果に関する詳細なログと監査記録が存在しないため、セキュリティ インシデントの追跡が困難になる可能性があります。
* 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.
* 非常に頻繁に発生する再発を定義する場合は、スケジュール管理でシステムを永続的にビジー状態に保つことで追加の攻撃源となる可能性があるため、注意が必要です。
This document has registered the following URI in the "IETF XML Registry" [RFC3688].
この文書は、以下の URI を「IETF XML Registry」[RFC3688] に登録しています。
URI:
URI:
urn:ietf:params:xml:ns:yang:ietf-schedule
urn:ietf:params:xml:ns:yang:ietf-schedule
Registrant Contact:
登録者の連絡先:
The IESG.
IESG。
XML:
XML:
N/A; the requested URI is an XML namespace.
該当なし。要求された URI は XML 名前空間です。
This document has registered the following YANG module in the "YANG Module Names" registry [RFC6020].
この文書では、次の YANG モジュールを「YANG Module Names」レジストリ [RFC6020] に登録しています。
Name:
名前:
ietf-schedule
ietf スケジュール
Maintained by IANA:
IANA によって保守されています:
N
N
Namespace:
名前空間:
urn:ietf:params:xml:ns:yang:ietf-schedule
urn:ietf:params:xml:ns:yang:ietf-schedule
Prefix:
プレフィックス:
schedule
スケジュール
Reference:
参照:
RFC 9922
RFC 9922
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC3231] Levi, D. and J. Schoenwaelder, "Definitions of Managed
Objects for Scheduling Management Operations", RFC 3231,
DOI 10.17487/RFC3231, January 2002,
<https://www.rfc-editor.org/info/rfc3231>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>.
[RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and
Scheduling Core Object Specification (iCalendar)",
RFC 5545, DOI 10.17487/RFC5545, September 2009,
<https://www.rfc-editor.org/info/rfc5545>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010,
<https://www.rfc-editor.org/info/rfc6020>.
[RFC7317] Bierman, A. and M. Bjorklund, "A YANG Data Model for
System Management", RFC 7317, DOI 10.17487/RFC7317, August
2014, <https://www.rfc-editor.org/info/rfc7317>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/info/rfc7950>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
Access Control Model", STD 91, RFC 8341,
DOI 10.17487/RFC8341, March 2018,
<https://www.rfc-editor.org/info/rfc8341>.
[RFC9911] Schönwälder, J., Ed., "Common YANG Data Types", RFC 9911,
DOI 10.17487/RFC9911, December 2025,
<https://www.rfc-editor.org/info/rfc9911>.
[NETMOD-ECA-POLICY]
Wu, Q., Bryskin, I., Birkholz, H., Liu, X., and B. Claise,
"A YANG Data model for ECA Policy Management", Work in
Progress, Internet-Draft, draft-ietf-netmod-eca-policy-01,
19 February 2021, <https://datatracker.ietf.org/doc/html/
draft-ietf-netmod-eca-policy-01>.
[NTPv5] Lichvar, M. and T. Mizrahi, "Network Time Protocol Version
5", Work in Progress, Internet-Draft, draft-ietf-ntp-
ntpv5-08, 1 March 2026,
<https://datatracker.ietf.org/doc/html/draft-ietf-ntp-
ntpv5-08>.
[RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet:
Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002,
<https://www.rfc-editor.org/info/rfc3339>.
[RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH)
Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252,
January 2006, <https://www.rfc-editor.org/info/rfc4252>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>.
[RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG",
RFC 7951, DOI 10.17487/RFC7951, August 2016,
<https://www.rfc-editor.org/info/rfc7951>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
<https://www.rfc-editor.org/info/rfc8040>.
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
<https://www.rfc-editor.org/info/rfc8340>.
[RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N.,
Ananthakrishnan, H., and X. Liu, "A YANG Data Model for
Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March
2018, <https://www.rfc-editor.org/info/rfc8345>.
[RFC8413] Zhuang, Y., Wu, Q., Chen, H., and A. Farrel, "Framework
for Scheduled Use of Resources", RFC 8413,
DOI 10.17487/RFC8413, July 2018,
<https://www.rfc-editor.org/info/rfc8413>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>.
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
Multiplexed and Secure Transport", RFC 9000,
DOI 10.17487/RFC9000, May 2021,
<https://www.rfc-editor.org/info/rfc9000>.
[RFC9657] Birrane, III, E., Kuhn, N., Qu, Y., Taylor, R., and L.
Zhang, "Time-Variant Routing (TVR) Use Cases", RFC 9657,
DOI 10.17487/RFC9657, October 2024,
<https://www.rfc-editor.org/info/rfc9657>.
[W3C.XML1.0]
Bray, T., Ed., Paoli, J., Ed., Sperberg-McQueen, C. M.,
Ed., Maler, E., Ed., and F. Yergeau, Ed., "Extensible
Markup Language (XML) 1.0 (Fifth Edition)", W3C
Recommendation, 26 November 2008,
<https://www.w3.org/TR/2008/REC-xml-20081126/>.
[YANG-CONFIG-SCHEDULE]
Liu, X., Bryskin, I., Beeram, V. P., Saad, T., Shah, H.
C., and O. G. de Dios, "A YANG Data Model for
Configuration Scheduling", Work in Progress, Internet-
Draft, draft-liu-netmod-yang-schedule-05, 1 March 2018,
<https://datatracker.ietf.org/doc/html/draft-liu-netmod-
yang-schedule-05>.
[YANG-GUIDE]
Bierman, A., Boucadair, M., and Q. Wu, "Guidelines for
Authors and Reviewers of Documents Containing YANG Data
Models", Work in Progress, Internet-Draft, draft-ietf-
netmod-rfc8407bis-28, 5 June 2025,
<https://datatracker.ietf.org/doc/html/draft-ietf-netmod-
rfc8407bis-28>.
[YANG-NAC] Ma, Q., Wu, Q., Boucadair, M., and D. King, "A YANG Data
Model and RADIUS Extension for Policy-Based Network Access
Control", Work in Progress, Internet-Draft, draft-ietf-
opsawg-ucl-acl-12, 3 February 2026,
<https://datatracker.ietf.org/doc/html/draft-ietf-opsawg-
ucl-acl-12>.
[YANG-OAM] Contreras, L. M., Lopez, V., and Q. Wu, "A YANG Data Model
for Network Diagnosis using Scheduled Sequences of OAM
Tests", Work in Progress, Internet-Draft, draft-ietf-
opsawg-scheduling-oam-tests-04, 28 February 2026,
<https://datatracker.ietf.org/doc/html/draft-ietf-opsawg-
scheduling-oam-tests-04>.
[YANG-SCHEDULE]
Qu, Y., Lindem, A., Kinzie, E., Fedyk, D., and M.
Blanchet, "YANG Data Model for Scheduled Attributes", Work
in Progress, Internet-Draft, draft-ietf-tvr-schedule-yang-
08, 9 February 2026,
<https://datatracker.ietf.org/doc/html/draft-ietf-tvr-
schedule-yang-08>.
This section provides some examples to illustrate the use of the period and recurrence formats defined in Section 6. The following modules are used for illustration purposes and make examples verifiable:
このセクションでは、セクション 6 で定義された期間および繰り返し形式の使用方法を説明するための例をいくつか示します。次のモジュールは説明のために使用されており、例を検証可能にしています。
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 {
refine interval {
default 1;
}
}
}
}
module example-sch-usage-4 {
yang-version 1.1;
namespace "http://example.com/example-sch-usage-4";
prefix "ex-schu-4";
import ietf-schedule {
prefix "schedule";
}
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";
}
container recurrence-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";
}
container recurrence-time-zone-with-periods {
description
"A container for an aggregate set of repeating occurrences
with a time zone.";
uses schedule:recurrence-time-zone-with-periods;
}
}
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;
}
}
}
}
For each example, only the message body is provided with JSON, which is used for encoding per the guidance in [RFC7951].
各例では、メッセージ本文のみが JSON で提供されており、[RFC7951] のガイダンスに従ってエンコードに使用されます。
Figure 10 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 the system, as indicated by "discard-action".
図 10 は、2025 年 1 月 1 日の午前 8 時までに開始し、2025 年 1 月 31 日の午後 8 時までに終了する必要がある要求されたスケジュールの例を示しています (北京時間)。「discard-action」で示されるように、要件を満たさないスケジュール要求はシステムによって無視されます。
{
"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"
}
}
Figure 10: Generic Parameters with 'max-allowed-end' for Schedule Validation
図 10: スケジュール検証用の「max-allowed-end」を含む汎用パラメータ
To illustrate the difference between "max-allowed-end" and "validity" parameters, Figure 11 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 the system, as indicated by "discard-action". The requested schedule may end after 8:00 PM, January 31, 2025, but any occurrences that are generated after that time would not be considered as valid.
「max-allowed-end」パラメータと「validity」パラメータの違いを説明するために、図 11 に、2025 年 1 月 1 日午前 8 時 (北京時間) より早く開始する必要がある、要求されたスケジュールの例を示します。「discard-action」で示されるように、要件を満たさないスケジュール要求はシステムによって無視されます。要求されたスケジュールは、2025 年 1 月 31 日の午後 8 時以降に終了する可能性がありますが、それ以降に生成されたオカレンスは有効とみなされません。
{
"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"
}
}
Figure 11: Generic Parameters with 'validity' for Schedule Validation
図 11: スケジュール検証用の「有効性」を持つ汎用パラメータ
Figure 12 shows an example of a period that starts at 08:00:00 UTC on January 1, 2025 and ends at 18:00:00 UTC on December 31, 2027.
図 12 は、2025 年 1 月 1 日の 08:00:00 UTC に始まり、2027 年 12 月 31 日の 18:00:00 UTC に終了する期間の例を示しています。
{
"example-sch-usage-2:period-of-time": {
"period-start": "2025-01-01T08:00:00Z",
"period-end": "2027-12-31T18:00:00Z"
}
}
Figure 12: Simple Start/End Schedule
図 12: 単純な開始/終了スケジュール
An example of a period that starts at 08:00:00 UTC on January 1, 2025 and lasts 15 days and 5 hours and 20 minutes is encoded as shown in Figure 13.
2025 年 1 月 1 日の 08:00:00 UTC に始まり、15 日と 5 時間 20 分続く期間の例は、図 13 に示すようにエンコードされます。
{
"example-sch-usage-2:period-of-time": {
"period-start": "2025-01-01T08:00:00Z",
"duration": "P15DT05:20:00"
}
}
Figure 13: Simple Schedule with Duration
図 13: 期間付きの単純なスケジュール
An example of a period that starts at 2:00 AM in Los Angeles on November 19, 2025 and lasts 20 weeks is depicted in Figure 14.
2025 年 11 月 19 日のロサンゼルスの午前 2 時に始まり、20 週間続く期間の例を図 14 に示します。
{
"example-sch-usage-2:period-of-time": {
"period-start": "2025-11-19T02:00:00",
"time-zone-identifier": "America/Los_Angeles",
"duration": "P20W"
}
}
Figure 14: Simple Schedule with Time Zone Indication
図 14: タイムゾーンを表示したシンプルなスケジュール
Figure 15 indicates a recurrence of every 2 days, which starts immediately and repeats forever:
図 15 は、2 日ごとの繰り返しを示しています。これはすぐに開始され、永久に繰り返されます。
{
"example-sch-usage-3:recurrence-basic": {
"recurrence-description": "forever recurrence rule",
"frequency": "ietf-schedule:daily",
"interval": 2
}
}
Figure 15: Simple Schedule with Recurrence
図 15: 繰り返しのある単純なスケジュール
Figure 16 indicates a recurrence from 8:00 AM to 9:00 AM every day, from December 1 to December 31, 2025 in UTC:
図 16 は、UTC で 2025 年 12 月 1 日から 12 月 31 日までの毎日午前 8 時から午前 9 時までの繰り返しを示しています。
{
"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"
}
}
Figure 16: Simple Schedule with Recurrence in UTC
図 16: UTC での繰り返しを含む単純なスケジュール
Figure 17 indicates a recurrence of every 2 hours for 10 occurrences that lasts 10 minutes and starts at 3 PM on December 1, 2025 in New York:
図 17 は、ニューヨークで 2025 年 12 月 1 日の午後 3 時に開始され、10 分間続く 10 回の発生が 2 時間ごとに繰り返されることを示しています。
{
"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
}
}
Figure 17: Simple Schedule with Recurrence with Time Zone Indication
図 17: タイムゾーンを示した繰り返しのある単純なスケジュール
Figure 18 indicates a recurrence that occurs every two days starting at 9:00 AM and 3:00 PM for a duration of 30 minutes and 40 minutes, respectively, from 2025-06-01 to 2025-06-30 in UTC:
図 18 は、UTC の 2025 年 6 月 1 日から 2025 年 6 月 30 日まで、2 日ごとに午前 9 時と午後 3 時にそれぞれ 30 分と 40 分間発生する再発を示しています。
{
"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
}
]
}
}
Figure 18: Example of Recurrence With Date Times
図 18: 日時を使用した繰り返しの例
Figure 19 indicates a recurrence that occurs every 30 minutes and lasts for 15 minutes from 9:00 AM to 5:00 PM and two extra occurrences at 6:00 PM and 6:30 PM with each lasting for 20 minutes on 2025-12-01 (New York):
図 19 は、2025 年 12 月 1 日 (ニューヨーク) の、30 分ごとに発生し、午前 9 時から午後 5 時まで 15 分間続く再発と、午後 6 時と午後 6 時 30 分に 2 回の追加の発生がそれぞれ 20 分間続いたことを示しています。
{
"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"
}
]
}
}
Figure 19: Example of Advanced Recurrence Schedule
図 19: 高度な繰り返しスケジュールの例
Figure 20 indicates 10 occurrences at 8:00 AM (EST) every last Saturday of the month starting in January 2024:
図 20 は、2024 年 1 月から毎月最終土曜日の午前 8 時 (EST) における 10 件の発生を示しています。
{
"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"
}
]
}
}
Figure 20: Simple iCalendar Recurrence
図 20: 単純な iCalendar の繰り返し
Figure 21 is an example of a recurrence that occurs on the last workday of the month until December 25, 2025, starting January 1, 2025:
図 21 は、2025 年 1 月 1 日から 2025 年 12 月 25 日までの月の最後の営業日に発生する繰り返しの例です。
{
"example-sch-usage-8:icalendar-recurrence": {
"recurrence-first": {
"start-time": "2025-01-01T00:00:00"
},
"frequency": "ietf-schedule:monthly",
"until": "2025-12-25T23:59:59",
"byday": [
{
"weekday": "monday"
},
{
"weekday": "tuesday"
},
{
"weekday": "wednesday"
},
{
"weekday": "thursday"
},
{
"weekday": "friday"
}
],
"bysetpos": [
-1
]
}
}
Figure 21: Example of Advanced iCalendar Recurrence
図 21: 高度な iCalendar の繰り返しの例
Figure 22 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 AM on 2025-12-01:
図 22 は、2025 年 12 月 1 日の午前 10 時 20 分に始まる発生を除いて、午前 9 時から午後 4 時 40 分 (UTC) まで 20 分ごとに発生する再発を示しています。
{
"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"
]
}
}
Figure 22: Example of Advanced iCalendar Recurrence with Exceptions
図 22: 例外を含む高度な iCalendar の繰り返しの例
Figure 23 indicates the scheduled recurrence status of Figure 22 at the time of 12:15 PM on 2025-12-01 (UTC):
図 23 は、2025 年 12 月 1 日午後 12 時 15 分 (UTC) の時点での図 22 のスケジュールされた再発ステータスを示しています。
{
"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"
}
}
Figure 23: Example of a Schedule Status
図 23: スケジュール ステータスの例
At the time of 12:15 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.
2025-12-01 の午後 12:15 (UTC) の時点で、定期的なイベントは次の時刻に発生しました (午前 10:20 の発生は除外されることに注意してください): 9:00、9:20、9:40、10:00、10:40、11:00、11:20、11:40、および 12:00。前回の発生は 12:00 で、次の発生は 12:20 です。
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.
この非規範的なセクションでは、日付と時刻に基づいてスケジュールされたイベントまたは属性に対して「ietf-schedule」モジュールを使用または拡張する方法の 2 つの例を示します。
Scheduled tasks can be used to execute specific actions based on certain recurrence rules (e.g., every Friday at 8:00 AM). The following example module, which "uses" the "icalendar-recurrence" grouping from the "ietf-schedule" module, shows how a scheduled task could be defined with different features used for options.
スケジュールされたタスクを使用すると、特定の繰り返しルール (毎週金曜日の午前 8 時など) に基づいて特定のアクションを実行できます。次のモジュール例は、「ietf-schedule」モジュールの「icalendar-recurrence」グループを「使用」し、オプションに使用されるさまざまな機能を使用してスケジュールされたタスクを定義する方法を示しています。
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 a scheduled-based backup
operation.";
revision "2026-02-20" {
description
"Initial version.";
reference
"RFC 9922: A YANG Data Model for Scheduling";
}
container scheduled-backup-tasks {
description
"A container for backing up all current running configurations
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
"Schedule status list for the backup tasks.";
uses schedule:schedule-status-with-name;
}
}
}
Network properties may change over a specific period of time or based on a recurrence rule, e.g., [RFC9657]. The following example module, which augments the "recurrence-utc-with-periods" grouping from the "ietf-schedule" module, shows how a scheduled attribute could be defined. Note that [RFC8345] and this document are referenced in the module.
ネットワーク プロパティは、特定の期間にわたって、または [RFC9657] などの反復規則に基づいて変化する場合があります。次のモジュール例は、「ietf-schedule」モジュールの「recurrence-utc-with-periods」グループを拡張するもので、スケジュールされた属性を定義する方法を示しています。[RFC8345] とこのドキュメントがモジュール内で参照されていることに注意してください。
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
"RFC 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 "2026-02-20" {
description
"Initial version.";
reference
"RFC 9922: A YANG Data Model for 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 for periods 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 each
'period-timeticks' entry.";
uses link-bandwidth-grouping;
}
}
}
}
}
}
}
Figure 24 shows a configuration example in XML [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.
図 24 は、2025 年 12 月 1 日 0:00 UTC から 2025 年 12 月 31 日の終わりまでの毎日のスケジュールでスケジュールされたリンクの帯域幅の XML [W3C.XML1.0] の構成例を示しています。毎日、帯域幅の値は、午前 1 時から午前 6 時までは 500 Kbps、午後 10 時から午後 11 時までは 800 Kbps になるようにスケジュールされています。上記の期間に含まれない帯域幅の値は 1000 Kbps です。
<?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>
<start-time-utc>2025-12-01T01:00:00Z</start-time-utc>
</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>
Figure 24: Example of Scheduled Link's Bandwidth
図 24: スケジュールされたリンクの帯域幅の例
This section exemplifies how the architecture for supporting scheduled reservation of Traffic Engineering (TE) resources in [RFC8413] might leverage the "period-of-time" grouping defined in the "ietf-schedule" module to implement scheduled use of resources.
このセクションでは、[RFC8413] のトラフィック エンジニアリング (TE) リソースのスケジュールされた予約をサポートするためのアーキテクチャが、「ietf-schedule」モジュールで定義されている「期間」グループを利用して、リソースのスケジュールされた使用を実装する方法を例示します。
The following example module shows how a scheduled link capacity reservation could be defined.
次のモジュール例は、スケジュールされたリンク容量予約を定義する方法を示しています。
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;
}
}
}
Section 4 of [RFC8413] defines the reference architecture for scheduled use of resources. 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 to supply. The configuration example to provide the scheduled resource is shown in Figure 25.
[RFC8413] のセクション 4 では、リソースのスケジュールされた使用のためのリファレンス アーキテクチャが定義されています。サービス リクエスタは、リクエストをパス計算要素 (PCE) に送信し、リクエスタが提供したいラベル スイッチド パス (LSP) のパラメータを含めます。スケジュールされたリソースを提供する構成例を図 25 に示します。
<?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>
Figure 25: Example of Scheduled Link's Bandwidth Reservation
図 25: スケジュールされたリンクの帯域幅予約の例
This work is derived from [YANG-NAC]. There is a desire from the OPSAWG to see this module separately defined for wide use in scheduling context.
この作品は【YANG-NAC】から派生した作品です。OPSAWG からは、このモジュールをスケジューリングのコンテキストで広く使用するために個別に定義することが望まれています。
Thanks to Adrian Farrel, Wei Pan, Tianran Zhou, Joe Clarke, Steve Baillargeon, Dhruv Dhody, Robert Wilton, and Italo Busi for their valuable comments and inputs to this work.
この研究に対する貴重なコメントと意見をくださった Adrian Farrel、Wei Pan、Tianran Zhou、Joe Clarke、Steve Baillargeon、Dhruv Dhody、Robert Wilton、Italo Busi に感謝します。
Many thanks to the authors of [YANG-SCHEDULE], [YANG-OAM], and [NETMOD-ECA-POLICY] for the constructive discussion during IETF#118.
IETF#118 で建設的な議論をしていただいた [YANG-SCHEDULE]、[YANG-OAM]、および [NETMOD-ECA-POLICY] の作成者に多大な感謝を申し上げます。
Other related efforts were explored in the past, e.g., [YANG-CONFIG-SCHEDULE].
[YANG-CONFIG-SCHEDULE] など、他の関連する取り組みも過去に検討されました。
Thanks to Reshad Rahman for the great YANG Doctors review, Mahesh Jethanandani for the AD review, Per Andersson for the OPSDIR review, Peter Yee for the GENART review, and Acee Lindem for the RTGDIR review.
素晴らしい YANG Doctors レビューの Reshad Rahman 氏、AD レビューの Mahesh Jethanandani 氏、OPSDIR レビューの Per Andersson 氏、GENART レビューの Peter Yee 氏、RTGDIR レビューの Acee Lindem 氏に感謝します。
Thanks to Éric Vyncke, Erik Kline, and Mike Bishop for the IESG review.
IESG のレビューに協力してくれた Éric Vyncke、Erik Kline、Mike Bishop に感謝します。
Qiufang Ma (editor)
Huawei
101 Software Avenue, Yuhua District
Jiangsu
210012
China
Email: maqiufang1@huawei.com
Qin Wu
Huawei
101 Software Avenue, Yuhua District
Jiangsu
210012
China
Email: bill.wu@huawei.com
Mohamed Boucadair (editor)
Orange
35000 Rennes
France
Email: mohamed.boucadair@orange.com
Daniel King
Lancaster University
United Kingdom
Email: d.king@lancaster.ac.uk