diff --git a/experimental/ietf-extracted-YANG-modules/iana-ietf-power-and-energy@2026-02-26.yang b/experimental/ietf-extracted-YANG-modules/iana-ietf-power-and-energy@2026-02-26.yang
new file mode 100644
index 000000000..d778b85b0
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/iana-ietf-power-and-energy@2026-02-26.yang
@@ -0,0 +1,109 @@
+module iana-ietf-power-and-energy {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:iana-ietf-power-and-energy";
+ prefix ianaeo;
+
+ organization "IANA";
+ contact
+ " Internet Assigned Numbers Authority
+
+ Postal: ICANN
+ 12025 Waterfront Drive, Suite 300
+ Los Angeles, CA 90094-2536
+ United States of America
+
+ Tel: +1 310 301 5800
+ E-Mail: iana@iana.org>";
+
+ description
+ "IANA-defined identities for power and energy class.
+
+ The latest revision of this YANG module can be obtained from
+ the IANA website.
+
+ Requests for new values should be made to IANA via
+ email (iana@iana.org).
+
+ 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 Simplified 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).
+
+ The initial version of this YANG module is part of RFC XXX;
+ see the RFC itself for full legal notices.";
+ reference
+ "https://www.iana.org/assignments/yang-parameters";
+
+ revision 2026-02-26 {
+ description
+ "Initial revision.";
+ reference
+ "RFC XXX: A YANG Data Model for Power and Energy monitoring and
+ control of devices within or connected to communication
+ networks";
+ }
+
+ identity certification-type {
+ description
+ "Base identity for certification types applicable to energy
+ objects. This identity serves as the root for a hierarchy of
+ certification types, allowing for extensibility.";
+
+ reference
+ "Industry sustainability and energy efficiency certifications";
+ }
+
+ identity energy-star {
+ base certification-type;
+ description
+ "ENERGY STAR certification for energy efficiency.";
+ reference
+ "https://www.energystar.gov/";
+ }
+
+ identity c80-plus{
+ base certification-type;
+ description
+ "80 PLUS Power Supply Certification";
+ reference
+ "https://www.clearesult.com/80plus/";
+ }
+
+ identity epeat {
+ base certification-type;
+ description
+ "Electronic Product Environmental Assessment Tool ratings (Bronze/Silver/Gold).";
+ reference
+ "https://www.epeat.net/";
+ }
+
+ identity eu-energy-level{
+ base certification-type;
+ description
+ "EU Energy Label: European efficiency ratings";
+ reference
+ "https://eprel.ec.europa.eu/screen/home";
+ }
+
+ identity cn-energy-level{
+ base certification-type;
+ description
+ "CN Energy Label: China efficiency ratings";
+ reference
+ "https://www.energylabel.com.cn";
+ }
+
+ identity cqc{
+ base certification-type;
+ description
+ "China Quality Certification for energy efficiency";
+ reference
+ "https://www.cqc.com.cn/";
+ }
+
+}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-05-13.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-05-27.yang
similarity index 99%
rename from experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-05-13.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-05-27.yang
index dbf74b330..acca60ab1 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-05-13.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-05-27.yang
@@ -65,7 +65,7 @@ module ietf-network-inventory {
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here.";
- revision 2026-05-13 {
+ revision 2026-05-27 {
description
"Initial version";
reference
@@ -176,8 +176,8 @@ module ietf-network-inventory {
description
"The name of the entity (e.g., component), as specified by
a network operator, that provides a non-volatile 'handle'
- for the entity and that can change anytime during the entity
- lifetime.
+ for the entity. The The network operator can specify a
+ different value anytime during the entity lifetime.
If no value is discovered, the server MAY set the value of
this node to a locally unique value in the operational
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2025-05-09.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2026-05-27.yang
similarity index 99%
rename from experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2025-05-09.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2026-05-27.yang
index 82b67a1ca..33e5c7a10 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2025-05-09.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2026-05-27.yang
@@ -7,7 +7,7 @@ module ietf-network-slice-service {
import ietf-inet-types {
prefix inet;
reference
- "RFC 6991: Common YANG Types";
+ "RFC 9911: Common YANG Types";
}
import ietf-routing-types {
prefix rt-types;
@@ -17,7 +17,7 @@ module ietf-network-slice-service {
import ietf-yang-types {
prefix yang;
reference
- "RFC 6991: Common YANG Data Types";
+ "RFC 9911: Common YANG Data Types";
}
import ietf-geo-location {
prefix geo;
@@ -44,12 +44,12 @@ module ietf-network-slice-service {
import ietf-ac-common {
prefix ac-common;
reference
- "RFC BBBB: A Common YANG Data Model for Attachment Circuits";
+ "RFC 9833: A Common YANG Data Model for Attachment Circuits";
}
import ietf-ac-svc {
prefix ac-svc;
reference
- "RFC CCCC: YANG Data Models for Bearers and 'Attachment
+ "RFC 9834: YANG Data Models for Bearers and 'Attachment
Circuits'-as-a-Service (ACaaS)";
}
import ietf-te-types {
@@ -84,7 +84,7 @@ module ietf-network-slice-service {
"This YANG module defines a service model for the RFC 9543
Network Slice Service.
- Copyright (c) 2025 IETF Trust and the persons identified as
+ 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
@@ -97,7 +97,7 @@ module ietf-network-slice-service {
This version of this YANG module is part of RFC AAAA; see the
RFC itself for full legal notices.";
- revision 2025-05-09 {
+ revision 2026-05-27 {
description
"Initial revision.";
reference
@@ -356,6 +356,7 @@ module ietf-network-slice-service {
reference
"RFC 5481: Packet Delay Variation Applicability Statement";
}
+
identity two-way-delay-variation-percentile {
base service-slo-metric-type;
description
@@ -491,7 +492,6 @@ module ietf-network-slice-service {
description
"Base identity for SLO/SLE policy override options.";
}
-
identity full-override {
base slo-sle-policy-override;
description
@@ -1149,7 +1149,7 @@ module ietf-network-slice-service {
"A reference to the ACs that have been created before
the slice creation.";
reference
- "RFC CCCC: YANG Data Models for Bearers and
+ "RFC 9834: YANG Data Models for Bearers and
'Attachment Circuits'-as-a-Service (ACaaS)";
}
leaf ce-mode {
@@ -1182,7 +1182,7 @@ module ietf-network-slice-service {
"A reference to the AC service that has been
created before the slice creation.";
reference
- "RFC CCCC: YANG Data Models for Bearers and
+ "RFC 9834: YANG Data Models for Bearers and
'Attachment Circuits'-as-a-Service (ACaaS)";
}
leaf ac-node-id {
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-nwi-passive-inventory@2025-07-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-nwi-passive-inventory@2026-03-19.yang
similarity index 83%
rename from experimental/ietf-extracted-YANG-modules/ietf-nwi-passive-inventory@2025-07-07.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-nwi-passive-inventory@2026-03-19.yang
index b239eb48e..b06543dd8 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-nwi-passive-inventory@2025-07-07.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-nwi-passive-inventory@2026-03-19.yang
@@ -6,20 +6,16 @@ module ietf-nwi-passive-inventory {
import ietf-network-inventory {
prefix nwi;
reference
- "RFCXXXX: A YANG Data Model for Network Inventory";
- //RFC Editor: replace XXXX with actual RFC number
- //and remove this note
+ "RFC YYYY: A YANG Data Model for Network Inventory";
}
import ietf-ni-location {
prefix nil;
reference
- "RFCYYYY: A YANG Data Model for Network Inventory Location";
- //RFC Editor: replace YYYY with actual RFC number
- //and remove this note
+ "RFC ZZZZ: A YANG Data Model for Network Inventory Location";
}
organization
- "IETF Network Inventory YANG (ivy) Working Group";
+ "IETF Network Inventory YANG (IVY) Working Group";
contact
"WG Web:
WG List:
@@ -32,109 +28,105 @@ module ietf-nwi-passive-inventory {
Editor: Italo Busi
";
-
description
"This YANG module specifies a data model for passive
devices, such as fibers, cables, and passive sites,
deployed within and between network elements.
- The model fully conforms to the Network Management
- Datastore Architecture (NMDA).
-
- Copyright (c) 2023 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 XXXX; see
- the RFC itself for full legal notices.
+ Copyright (c) 2026 IETF Trust and the persons
+ identified as authors of the code. All rights reserved.
- 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.";
+ 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).
- // RFC Ed.: replace XXXX with actual RFC number and remove this
- // note.
- // RFC Ed.: update the date below with the date of RFC publication
- // and remove this note.
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
- revision 2025-07-07 {
+ revision 2026-03-19 {
description
"Initial version";
reference
"RFC XXXX: A YANG Data Model for Passive Device Info in
- Network Inventory.";
- //RFC Editor: replace XXXX with actual RFC number, update date
- //information and remove this note
+ Network Inventory.";
}
/* Identities */
+
identity fiber-type {
description
"Base identity for fiber types.";
}
+
identity G652A {
base fiber-type;
description
"ITU-T G.652A fiber.";
}
+
identity G652B {
base fiber-type;
description
"ITU-T G.652B fiber.";
}
+
identity G652C {
base fiber-type;
description
"ITU-T G.652C fiber.";
}
+
identity G652D {
base fiber-type;
description
"ITU-T G.652D fiber.";
}
+
identity G653 {
base fiber-type;
description
"ITU-T G.653 fiber.";
}
+
identity G654 {
base fiber-type;
description
"ITU-T G.654 fiber.";
}
+
identity G655 {
base fiber-type;
description
"ITU-T G.655 fiber.";
}
+
identity G656 {
base fiber-type;
description
"ITU-T G.656 fiber.";
}
+
identity G657A1 {
base fiber-type;
description
"ITU-T G.657A1 fiber.";
}
+
identity G657A2 {
base fiber-type;
description
"ITU-T G.657A2 fiber.";
}
+
identity G657B {
base fiber-type;
description
"ITU-T G.657B fiber.";
}
+
identity other {
base fiber-type;
description
@@ -145,16 +137,19 @@ module ietf-nwi-passive-inventory {
description
"Base identity for cable types.";
}
+
identity optical-fiber {
base cable-type;
description
"Fiber optic cable.";
}
+
identity electrical-cable {
base cable-type;
description
"Electrical cable.";
}
+
identity coaxial-cable {
base electrical-cable;
description
@@ -165,55 +160,66 @@ module ietf-nwi-passive-inventory {
description
"Base identity for cable roles.";
}
+
identity backbone {
base cable-role;
description
"Backbone cable.";
}
+
identity aggregation {
base cable-role;
description
"Aggregation cable.";
}
+
identity access {
base cable-role;
description
"Access cable.";
}
+
identity trunk {
base cable-role;
description
"Trunk cable.";
}
+
identity distribution {
base cable-role;
description
"Distribution cable.";
}
+
identity branch {
base cable-role;
description
"Branch cable.";
}
+
identity passive-port-type {
description
"Base identity for passive port types.";
}
+
identity service-port {
base passive-port-type;
description
"Service port.";
}
+
identity input-port {
base passive-port-type;
description
"Input port.";
}
+
identity output-port {
base passive-port-type;
description
"Output port.";
}
+
identity p2mp-port {
base passive-port-type;
description
@@ -224,11 +230,13 @@ module ietf-nwi-passive-inventory {
description
"Base identity for connected device types.";
}
+
identity passive-device {
base connected-device-type;
description
"Passive/unmanaged device.";
}
+
identity active-device {
base connected-device-type;
description
@@ -239,26 +247,31 @@ module ietf-nwi-passive-inventory {
description
"Base identity for passive device types.";
}
+
identity ODF {
base passive-device-type;
description
"Optical Distribution Frame.";
}
+
identity WDM {
base passive-device-type;
description
"Wavelength Division Multiplexer.";
}
+
identity FAT {
base passive-device-type;
description
"Fiber Access Terminal.";
}
+
identity FDT {
base passive-device-type;
description
"Fiber Distribution Terminal.";
}
+
identity ATB {
base passive-device-type;
description
@@ -266,10 +279,10 @@ module ietf-nwi-passive-inventory {
}
/* Groupings */
+
grouping connected-device-end {
description
"Attributes applicable to connected device end.";
-
leaf device-type {
type identityref {
base connected-device-type;
@@ -277,7 +290,6 @@ module ietf-nwi-passive-inventory {
description
"Type of connected device.";
}
-
choice connected-device-type {
description
"Device end based on the type of connected device.";
@@ -285,7 +297,7 @@ module ietf-nwi-passive-inventory {
leaf device-id {
type string;
must "derived-from-or-self(../device-type,
- 'nwi-passive:passive-device')";
+ 'nwi-passive:passive-device')";
description
"Connected passive device identifier.";
}
@@ -297,7 +309,7 @@ module ietf-nwi-passive-inventory {
+ "/nwi:network-element/nwi:ne-id";
}
must "derived-from-or-self(../device-type,
- 'nwi-passive:active-device')";
+ 'nwi-passive:active-device')";
description
"Referenced Network Element (NE).";
}
@@ -309,7 +321,7 @@ module ietf-nwi-passive-inventory {
+ "/nwi:component-id";
}
must "derived-from-or-self(../device-type,
- 'nwi-passive:active-device')";
+ 'nwi-passive:active-device')";
description
"Referenced connected active device's component,
e.g. port component.";
@@ -321,13 +333,11 @@ module ietf-nwi-passive-inventory {
grouping connected-device-ref {
description
"Attributes applicable to connected devices.";
-
container a-end {
description
"A-end device reference";
uses connected-device-end;
}
-
container z-end {
description
"Z-end device reference";
@@ -344,29 +354,23 @@ module ietf-nwi-passive-inventory {
description
"Cable identifier.";
}
-
leaf length {
type uint32;
units "meter";
description
"Length of the cable in meter.";
}
-
uses connected-device-ref;
}
grouping optical-cable-attributes {
description
"Attributes applicable to fiber optic cables.";
-
container optical-cable {
- when
- "derived-from-or-self(../cable-type, 'optical-fiber')";
-
+ when "derived-from-or-self(../cable-type, 'optical-fiber')";
description
"Container for attributes associated with fiber
optic cables.";
-
leaf fiber-core-num {
type uint32;
description
@@ -393,10 +397,8 @@ module ietf-nwi-passive-inventory {
grouping cable-attributes {
description
"Attributes of cables.";
-
uses common-cable-attributes;
uses nwi:basic-common-entity-attributes;
-
leaf cable-type {
type identityref {
base cable-type;
@@ -404,7 +406,6 @@ module ietf-nwi-passive-inventory {
description
"Type of cable.";
}
-
leaf cable-role {
type identityref {
base cable-role;
@@ -412,7 +413,6 @@ module ietf-nwi-passive-inventory {
description
"Role of cable.";
}
-
uses optical-cable-attributes;
}
@@ -420,20 +420,17 @@ module ietf-nwi-passive-inventory {
description
"Attributes applicable to child cables that are concatnated
to form the cable.";
-
list child-cable {
key "index";
min-elements 2;
description
"Ordered list of concatenated child cables.";
-
leaf index {
type uint8;
description
"An index number used to identify the concatenation
order of the child cables.";
}
-
uses common-cable-attributes;
}
}
@@ -441,12 +438,10 @@ module ietf-nwi-passive-inventory {
grouping cables {
description
"Attributes applicable to cables.";
-
list cable {
key "id";
description
"List of cables.";
-
uses cable-attributes;
uses child-cables;
}
@@ -455,12 +450,10 @@ module ietf-nwi-passive-inventory {
grouping passive-device-ports {
description
"Attributes applicable to passive device ports.";
-
list passive-port {
key "id";
description
"List of ports on a passive device.";
-
leaf id {
type string;
description
@@ -485,12 +478,10 @@ module ietf-nwi-passive-inventory {
grouping passive-devices {
description
"Attributes applicable to passive devices.";
-
list passive-device {
key "id";
description
"List of passive devices.";
-
leaf id {
type string;
description
@@ -520,11 +511,12 @@ module ietf-nwi-passive-inventory {
}
/* Augmentation */
+
augment "/nwi:network-inventory" {
- description
- "Augment network inventory with information
- for optical cables and passive devices.";
- uses cables;
- uses passive-devices;
+ description
+ "Augment network inventory with information
+ for optical cables and passive devices.";
+ uses cables;
+ uses passive-devices;
}
}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-otn-path-computation@2022-09-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-otn-path-computation@2026-05-19.yang
similarity index 74%
rename from experimental/ietf-extracted-YANG-modules/ietf-otn-path-computation@2022-09-12.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-otn-path-computation@2026-05-19.yang
index fc99ef2d1..a44106f73 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-otn-path-computation@2022-09-12.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-otn-path-computation@2026-05-19.yang
@@ -1,29 +1,23 @@
module ietf-otn-path-computation {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-otn-path-computation";
- prefix "otn-pc";
+ prefix otn-pc;
import ietf-te-path-computation {
- prefix "te-pc";
- revision-date "2021-09-06";
- reference
- "I-D.ietf-teas-yang-path-computation-14: Yang model
- for requesting Path Computation.";
+ prefix te-pc;
+ reference
+ "RFC YYYY: A YANG Data Model for requesting path computation";
}
-
import ietf-te {
- prefix "te";
- revision-date "2021-02-20";
+ prefix te;
reference
- "I-D.ietf-teas-yang-te-19: A YANG Data Model for Traffic
- Engineering Tunnels and Interfaces. ";
+ "RFC KKKK: A YANG Data Model for Traffic Engineering Tunnels,
+ Label Switched Paths, and Interfaces";
}
-
import ietf-layer1-types {
- prefix "l1-types";
- reference
- "I-D.ietf-ccamp-layer1-types:
- A YANG Data Model for Layer 1 Types. ";
+ prefix l1-types;
+ reference
+ "RFC ZZZZ: Common YANG Data Types for Layer 1 Networks";
}
organization
@@ -40,41 +34,38 @@ module ietf-otn-path-computation {
Editor: Sergio Belotti
";
-
description
"This module defines a model for requesting
- OTN Path Computation.
+ OTN Path Computation.
- The model fully conforms to the Network Management
- Datastore Architecture (NMDA).
+ Copyright (c) 2026 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
- Copyright (c) 2022 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).
- Redistribution and use in source and binary forms, with or
- without modification, is permitted pursuant to, and subject
- to the license terms contained in, the Revised BSD License
- set forth in Section 4.c of the IETF Trust's Legal Provisions
- Relating to IETF Documents
- (https://trustee.ietf.org/license-info).
+ All revisions of IETF and IANA published modules can be found
+ at the YANG Parameters registry group
+ (https://www.iana.org/assignments/yang-parameters).
- This version of this YANG module is part of RFC XXXX; see
- the RFC itself for full legal notices.";
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
- revision "2022-09-12" {
+ revision 2026-05-19 {
description
"Initial version.";
reference
"RFC XXXX: A YANG Data Model for requesting Path Computation
- in an Optical Transport Network (OTN)";
- // RFC Ed.: replace XXXX with actual RFC number, update date
- // information and remove this note
+ in an Optical Transport Network (OTN)";
}
- /*
- * Data nodes
- */
-
+ /*
+ * Data nodes
+ */
/*
* Augment TE bandwidth
*/
@@ -119,7 +110,7 @@ module ietf-otn-path-computation {
+ "te-pc:label-restrictions/te-pc:label-restriction" {
description
"Augment TE label range information for the ingress segment
- of the requested path.";
+ of the requested path.";
uses l1-types:otn-label-range-info;
}
@@ -128,7 +119,7 @@ module ietf-otn-path-computation {
+ "te-pc:label-restrictions/te-pc:label-restriction" {
description
"Augment TE label range information for the egress segment
- of the requested path.";
+ of the requested path.";
uses l1-types:otn-label-range-info;
}
@@ -140,12 +131,13 @@ module ietf-otn-path-computation {
+ "te-pc:path-request/te-pc:optimizations/te-pc:algorithm/"
+ "te-pc:metric/te-pc:optimization-metric/"
+ "te-pc:explicit-route-exclude-objects/"
- + "te-pc:route-object-exclude-object/te-pc:type/te-pc:label/"
- + "te-pc:label-hop/te-pc:te-label/te-pc:technology" {
+ + "te-pc:route-object-exclude-object/te-pc:type/"
+ + "te-pc:label/te-pc:label-hop/te-pc:te-label/"
+ + "te-pc:technology" {
description
"Augment TE label hop for the optimization of the explicit
- route objects excluded by the path computation of the requested
- path.";
+ route objects excluded by the path computation of the
+ requested path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -155,37 +147,39 @@ module ietf-otn-path-computation {
+ "te-pc:path-request/te-pc:optimizations/te-pc:algorithm/"
+ "te-pc:metric/te-pc:optimization-metric/"
+ "te-pc:explicit-route-include-objects/"
- + "te-pc:route-object-include-object/te-pc:type/te-pc:label/"
- + "te-pc:label-hop/te-pc:te-label/te-pc:technology" {
+ + "te-pc:route-object-include-object/te-pc:type/"
+ + "te-pc:label/te-pc:label-hop/te-pc:te-label/"
+ + "te-pc:technology" {
description
"Augment TE label hop for the optimization of the explicit
- route objects included by the path computation of the requested
- path.";
+ route objects included by the path computation of the
+ requested path.";
case otn {
uses l1-types:otn-label-hop;
}
}
augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
- + "te-pc:path-request/te-pc:explicit-route-objects-always/"
- + "te-pc:route-object-exclude-always/te-pc:type/te-pc:label/"
- + "te-pc:label-hop/te-pc:te-label/te-pc:technology" {
+ + "te-pc:path-request/te-pc:explicit-route-objects/"
+ + "te-pc:route-object-exclude-always/"
+ + "te-pc:type/te-pc:label/te-pc:label-hop/te-pc:te-label/"
+ + "te-pc:technology" {
description
"Augment TE label hop for the explicit route objects always
- excluded by the path computation of the requested path.";
+ excluded by the path computation of the requested path.";
case otn {
uses l1-types:otn-label-hop;
}
}
augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
- + "te-pc:path-request/te-pc:explicit-route-objects-always/"
+ + "te-pc:path-request/te-pc:explicit-route-objects/"
+ "te-pc:route-object-include-exclude/te-pc:type/"
+ "te-pc:label/te-pc:label-hop/te-pc:te-label/"
+ "te-pc:technology" {
description
"Augment TE label hop for the explicit route objects included
- or excluded by the path computation of the requested path.";
+ or excluded by the path computation of the requested path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -197,7 +191,7 @@ module ietf-otn-path-computation {
+ "te-pc:label-start/te-pc:te-label/te-pc:technology" {
description
"Augment TE label range start for the ingress segment
- of the requested path.";
+ of the requested path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -209,7 +203,7 @@ module ietf-otn-path-computation {
+ "te-pc:label-end/te-pc:te-label/te-pc:technology" {
description
"Augment TE label range end for the ingress segment
- of the requested path.";
+ of the requested path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -221,7 +215,7 @@ module ietf-otn-path-computation {
+ "te-pc:label-step/te-pc:technology" {
description
"Augment TE label range step for the ingress segment
- of the requested path.";
+ of the requested path.";
case otn {
uses l1-types:otn-label-step;
}
@@ -233,7 +227,7 @@ module ietf-otn-path-computation {
+ "te-pc:label-start/te-pc:te-label/te-pc:technology" {
description
"Augment TE label range start for the egress segment
- of the requested path.";
+ of the requested path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -245,7 +239,7 @@ module ietf-otn-path-computation {
+ "te-pc:label-end/te-pc:te-label/te-pc:technology" {
description
"Augment TE label range end for the egress segment
- of the requested path.";
+ of the requested path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -257,7 +251,7 @@ module ietf-otn-path-computation {
+ "te-pc:label-step/te-pc:technology" {
description
"Augment TE label range end for the egress segment
- of the requested path.";
+ of the requested path.";
case otn {
uses l1-types:otn-label-step;
}
@@ -269,7 +263,7 @@ module ietf-otn-path-computation {
+ "te-pc:te-label/te-pc:technology" {
description
"Augment TE label hop for the explicit route objects to always
- exclude from synchronized path computation.";
+ exclude from synchronized path computation.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -284,7 +278,7 @@ module ietf-otn-path-computation {
+ "te-pc:label-hop/te-pc:te-label/te-pc:technology" {
description
"Augment TE label hop for the route object of the computed
- path.";
+ path.";
case otn {
uses l1-types:otn-label-hop;
}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-otn-tunnel@2024-03-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-otn-tunnel@2026-05-19.yang
similarity index 85%
rename from experimental/ietf-extracted-YANG-modules/ietf-otn-tunnel@2024-03-21.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-otn-tunnel@2026-05-19.yang
index a20d869ee..ec73fc956 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-otn-tunnel@2024-03-21.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-otn-tunnel@2026-05-19.yang
@@ -1,24 +1,19 @@
module ietf-otn-tunnel {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-otn-tunnel";
- prefix "otn-tnl";
+ prefix otn-tnl;
import ietf-te {
- prefix "te";
+ prefix te;
reference
"RFC ZZZZ: A YANG Data Model for Traffic Engineering Tunnels
- and Interfaces.";
+ and Interfaces.";
}
- /* Note: The RFC Editor will replace ZZZZ with the number assigned
- to the RFC once draft-ietf-teas-yang-te becomes an RFC.*/
-
import ietf-layer1-types {
- prefix "l1-types";
- reference
+ prefix l1-types;
+ reference
"RFC YYYY: Common YANG Data Types for Layer 1 Networks.";
}
- /* Note: The RFC Editor will replace YYYY with the number assigned
- to the RFC once draft-ietf-ccamp-layer1-types becomes an RFC.*/
organization
"IETF CCAMP Working Group";
@@ -40,40 +35,37 @@ module ietf-otn-tunnel {
Editor: Yunbin Xu
";
-
description
"This module defines a model for OTN Tunnel Services.
- The model fully conforms to the Network Management
- Datastore Architecture (NMDA).
+ Copyright (c) 2026 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
- Copyright (c) 2024 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).
- Redistribution and use in source and binary forms, with or
- without modification, is permitted pursuant to, and subject
- to the license terms contained in, the Revised BSD License
- set forth in Section 4.c of the IETF Trust's Legal Provisions
- Relating to IETF Documents
- (https://trustee.ietf.org/license-info).
+ All revisions of IETF and IANA published modules can be found
+ at the YANG Parameters registry group
+ (https://www.iana.org/assignments/yang-parameters).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.";
- revision "2024-03-21" {
+ revision 2026-05-19 {
description
"Initial version";
reference
"RFC XXXX: A YANG Data Model for Optical Transport Network
- (OTN) Tunnels and Label Switched Paths";
- // RFC Ed.: replace XXXX with actual RFC number, update date
- // information and remove this note
+ (OTN) Tunnels and Label Switched Paths";
}
- /*
- * Data nodes
- */
-
+ /*
+ * Data nodes
+ */
/*
* Augment TE bandwidth
*/
@@ -114,7 +106,7 @@ module ietf-otn-tunnel {
+ "te:te-bandwidth/te:technology" {
description
"Augment TE bandwidth of primary path's computed path
- properties.";
+ properties.";
case otn {
uses l1-types:otn-path-bandwidth;
}
@@ -139,7 +131,7 @@ module ietf-otn-tunnel {
+ "te:te-bandwidth/te:technology" {
description
"Augment TE bandwidth of the primary reverse path's computed
- path properties.";
+ path properties.";
case otn {
uses l1-types:otn-path-bandwidth;
}
@@ -162,7 +154,7 @@ module ietf-otn-tunnel {
+ "te:te-bandwidth/te:technology" {
description
"Augment TE bandwidth of the secondary path's computed path
- properties.";
+ properties.";
case otn {
uses l1-types:otn-path-bandwidth;
}
@@ -187,7 +179,7 @@ module ietf-otn-tunnel {
+ "te:te-bandwidth/te:technology" {
description
"Augment TE bandwidth of the secondary reverse path's computed
- path properties.";
+ path properties.";
case otn {
uses l1-types:otn-path-bandwidth;
}
@@ -202,7 +194,7 @@ module ietf-otn-tunnel {
+ "te:label-restrictions/te:label-restriction" {
description
"Augment TE label range information for the ingress segment
- of the named path constraint.";
+ of the named path constraint.";
uses l1-types:otn-label-range-info;
}
@@ -212,7 +204,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction" {
description
"Augment TE label range information for the egress segment
- of the named path constraint.";
+ of the named path constraint.";
uses l1-types:otn-label-range-info;
}
@@ -222,7 +214,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction" {
description
"Augment TE label range information for the ingress segment
- of the primay path.";
+ of the primary path.";
uses l1-types:otn-label-range-info;
}
@@ -232,7 +224,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction" {
description
"Augment TE label range information for the egress segment
- of the primay path.";
+ of the primary path.";
uses l1-types:otn-label-range-info;
}
@@ -243,7 +235,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction" {
description
"Augment TE label range information for the ingress segment
- of the primay reverse path.";
+ of the primary reverse path.";
uses l1-types:otn-label-range-info;
}
@@ -254,7 +246,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction" {
description
"Augment TE label range information for the egress segment
- of the primay reverse path.";
+ of the primary reverse path.";
uses l1-types:otn-label-range-info;
}
@@ -264,7 +256,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction" {
description
"Augment TE label range information for the ingress segment
- of the secondary path.";
+ of the secondary path.";
uses l1-types:otn-label-range-info;
}
@@ -274,7 +266,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction" {
description
"Augment TE label range information for the egress segment
- of the secondary path.";
+ of the secondary path.";
uses l1-types:otn-label-range-info;
}
@@ -284,7 +276,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction" {
description
"Augment TE label range information for the ingress segment
- of the secondary reverse path.";
+ of the secondary reverse path.";
uses l1-types:otn-label-range-info;
}
@@ -294,7 +286,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction" {
description
"Augment TE label range information for the egress segment
- of the secondary reverse path.";
+ of the secondary reverse path.";
uses l1-types:otn-label-range-info;
}
@@ -309,8 +301,8 @@ module ietf-otn-tunnel {
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the explicit route objects always
- excluded by the path computation with the named path
- constraint.";
+ excluded by the path computation with the named path
+ constraint.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -323,8 +315,8 @@ module ietf-otn-tunnel {
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the explicit route objects included
- or excluded by the path computation with the named path
- constraint.";
+ or excluded by the path computation with the named path
+ constraint.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -337,7 +329,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range start for the ingress segment
- of the named path constraint.";
+ of the named path constraint.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -350,7 +342,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range end for the ingress segment
- of the named path constraint.";
+ of the named path constraint.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -362,7 +354,7 @@ module ietf-otn-tunnel {
+ "te:label-step/te:technology" {
description
"Augment TE label range step for the ingress segment
- of the named path constraint.";
+ of the named path constraint.";
case otn {
uses l1-types:otn-label-step;
}
@@ -375,7 +367,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range start for the egress segment
- of the named path constraint.";
+ of the named path constraint.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -388,7 +380,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range end for the egress segment
- of the named path constraint.";
+ of the named path constraint.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -400,7 +392,7 @@ module ietf-otn-tunnel {
+ "te:label-step/te:technology" {
description
"Augment TE label range step for the egress segment
- of the named path constraint.";
+ of the named path constraint.";
case otn {
uses l1-types:otn-label-step;
}
@@ -409,13 +401,14 @@ module ietf-otn-tunnel {
augment "/te:te/te:tunnels/te:tunnel/"
+ "te:primary-paths/te:primary-path/"
+ "te:optimizations/te:algorithm/te:metric/"
- + "te:optimization-metric/te:explicit-route-exclude-objects/"
+ + "te:optimization-metric/"
+ + "te:explicit-route-exclude-objects/"
+ "te:route-object-exclude-object/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the optimization of the explicit
- route objects excluded by the path computation of the primary
- path.";
+ route objects excluded by the path computation of the primary
+ path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -424,13 +417,14 @@ module ietf-otn-tunnel {
augment "/te:te/te:tunnels/te:tunnel/"
+ "te:primary-paths/te:primary-path/"
+ "te:optimizations/te:algorithm/te:metric/"
- + "te:optimization-metric/te:explicit-route-include-objects/"
+ + "te:optimization-metric/"
+ + "te:explicit-route-include-objects/"
+ "te:route-object-include-object/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the optimization of the explicit
- route objects included by the path computation of the primary
- path.";
+ route objects included by the path computation of the primary
+ path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -443,7 +437,7 @@ module ietf-otn-tunnel {
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the explicit route objects always
- excluded by the path computation of the primary path.";
+ excluded by the path computation of the primary path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -456,7 +450,7 @@ module ietf-otn-tunnel {
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the explicit route objects included
- or excluded by the path computation of the primary path.";
+ or excluded by the path computation of the primary path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -469,7 +463,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range start for the ingress segment
- of the primay path.";
+ of the primary path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -482,7 +476,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range end for the ingress segment
- of the primay path.";
+ of the primary path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -494,7 +488,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction/te:label-step/te:technology" {
description
"Augment TE label range step for the ingress segment
- of the primay path.";
+ of the primary path.";
case otn {
uses l1-types:otn-label-step;
}
@@ -507,7 +501,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range start for the egress segment
- of the primay path.";
+ of the primary path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -520,7 +514,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range end for the egress segment
- of the primay path.";
+ of the primary path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -532,7 +526,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction/te:label-step/te:technology" {
description
"Augment TE label range end for the egress segment
- of the primay path.";
+ of the primary path.";
case otn {
uses l1-types:otn-label-step;
}
@@ -547,7 +541,7 @@ module ietf-otn-tunnel {
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the route object of the computed
- primary path.";
+ primary path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -557,13 +551,14 @@ module ietf-otn-tunnel {
+ "te:primary-paths/te:primary-path/"
+ "te:primary-reverse-path/"
+ "te:optimizations/te:algorithm/te:metric/"
- + "te:optimization-metric/te:explicit-route-exclude-objects/"
+ + "te:optimization-metric/"
+ + "te:explicit-route-exclude-objects/"
+ "te:route-object-exclude-object/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the optimization of the explicit
- route objects excluded by the path computation of the primary
- reverse path.";
+ route objects excluded by the path computation of the primary
+ reverse path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -573,13 +568,14 @@ module ietf-otn-tunnel {
+ "te:primary-paths/te:primary-path/"
+ "te:primary-reverse-path/"
+ "te:optimizations/te:algorithm/te:metric/"
- + "te:optimization-metric/te:explicit-route-include-objects/"
+ + "te:optimization-metric/"
+ + "te:explicit-route-include-objects/"
+ "te:route-object-include-object/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the optimization of the explicit
- route objects included by the path computation of the primary
- reverse path.";
+ route objects included by the path computation of the primary
+ reverse path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -594,8 +590,8 @@ module ietf-otn-tunnel {
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the explicit route objects always
- excluded by the path computation of the primary reverse
- path.";
+ excluded by the path computation of the primary reverse
+ path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -610,8 +606,8 @@ module ietf-otn-tunnel {
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the explicit route objects included
- or excluded by the path computation of the primary reverse
- path.";
+ or excluded by the path computation of the primary reverse
+ path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -625,7 +621,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range start for the ingress segment
- of the primay reverse path.";
+ of the primary reverse path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -639,7 +635,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range end for the ingress segment
- of the primay reverse path.";
+ of the primary reverse path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -652,7 +648,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction/te:label-step/te:technology" {
description
"Augment TE label range step for the ingress segment
- of the primay reverse path.";
+ of the primary reverse path.";
case otn {
uses l1-types:otn-label-step;
}
@@ -666,7 +662,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range start for the egress segment
- of the primay reverse path.";
+ of the primary reverse path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -680,7 +676,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range end for the egress segment
- of the primay reverse path.";
+ of the primary reverse path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -693,7 +689,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction/te:label-step/te:technology" {
description
"Augment TE label range step for the egress segment
- of the primay reverse path.";
+ of the primary reverse path.";
case otn {
uses l1-types:otn-label-step;
}
@@ -702,13 +698,13 @@ module ietf-otn-tunnel {
augment "/te:te/te:tunnels/te:tunnel/"
+ "te:primary-paths/te:primary-path/"
+ "te:primary-reverse-path/"
- + "te:computed-paths-properties/te:computed-path-properties/"
- + "te:path-properties/te:path-route-objects/"
- + "te:path-route-object/te:type/te:label/"
- + "te:label-hop/te:te-label/te:technology" {
+ + "te:computed-paths-properties/"
+ + "te:computed-path-properties/te:path-properties/"
+ + "te:path-route-objects/te:path-route-object/te:type/"
+ + "te:label/te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the route object of the computed
- primary reverse path.";
+ primary reverse path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -717,13 +713,14 @@ module ietf-otn-tunnel {
augment "/te:te/te:tunnels/te:tunnel/"
+ "te:secondary-paths/te:secondary-path/"
+ "te:optimizations/te:algorithm/te:metric/"
- + "te:optimization-metric/te:explicit-route-exclude-objects/"
+ + "te:optimization-metric/"
+ + "te:explicit-route-exclude-objects/"
+ "te:route-object-exclude-object/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the optimization of the explicit
- route objects excluded by the path computation of the
- secondary path.";
+ route objects excluded by the path computation of the
+ secondary path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -732,13 +729,14 @@ module ietf-otn-tunnel {
augment "/te:te/te:tunnels/te:tunnel/"
+ "te:secondary-paths/te:secondary-path/"
+ "te:optimizations/te:algorithm/te:metric/"
- + "te:optimization-metric/te:explicit-route-include-objects/"
+ + "te:optimization-metric/"
+ + "te:explicit-route-include-objects/"
+ "te:route-object-include-object/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the optimization of the explicit
- route objects included by the path computation of the
- secondary path.";
+ route objects included by the path computation of the
+ secondary path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -751,7 +749,7 @@ module ietf-otn-tunnel {
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the explicit route objects always
- excluded by the path computation of the secondary path.";
+ excluded by the path computation of the secondary path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -764,7 +762,7 @@ module ietf-otn-tunnel {
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the explicit route objects included
- or excluded by the path computation of the secondary path.";
+ or excluded by the path computation of the secondary path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -777,7 +775,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range start for the ingress segment
- of the secondary path.";
+ of the secondary path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -790,18 +788,19 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range end for the ingress segment
- of the secondary path.";
+ of the secondary path.";
case otn {
uses l1-types:otn-label-start-end;
}
}
+
augment "/te:te/te:tunnels/te:tunnel/"
+ "te:secondary-paths/te:secondary-path/"
+ "te:path-in-segment/te:label-restrictions/"
+ "te:label-restriction/te:label-step/te:technology" {
description
"Augment TE label range step for the ingress segment
- of the secondary path.";
+ of the secondary path.";
case otn {
uses l1-types:otn-label-step;
}
@@ -814,7 +813,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range start for the egress segment
- of the secondary path.";
+ of the secondary path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -827,7 +826,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range end for the egress segment
- of the secondary path.";
+ of the secondary path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -839,7 +838,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction/te:label-step/te:technology" {
description
"Augment TE label range step for the egress segment
- of the secondary path.";
+ of the secondary path.";
case otn {
uses l1-types:otn-label-step;
}
@@ -854,7 +853,7 @@ module ietf-otn-tunnel {
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the route object of the computed
- secondary path.";
+ secondary path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -863,13 +862,14 @@ module ietf-otn-tunnel {
augment "/te:te/te:tunnels/te:tunnel/"
+ "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ "te:optimizations/te:algorithm/te:metric/"
- + "te:optimization-metric/te:explicit-route-exclude-objects/"
+ + "te:optimization-metric/"
+ + "te:explicit-route-exclude-objects/"
+ "te:route-object-exclude-object/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the optimization of the explicit
- route objects excluded by the path computation of the
- secondary reverse path.";
+ route objects excluded by the path computation of the
+ secondary reverse path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -878,13 +878,14 @@ module ietf-otn-tunnel {
augment "/te:te/te:tunnels/te:tunnel/"
+ "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ "te:optimizations/te:algorithm/te:metric/"
- + "te:optimization-metric/te:explicit-route-include-objects/"
+ + "te:optimization-metric/"
+ + "te:explicit-route-include-objects/"
+ "te:route-object-include-object/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the optimization of the explicit
- route objects included by the path computation of the
- secondary reverse path.";
+ route objects included by the path computation of the
+ secondary reverse path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -897,8 +898,8 @@ module ietf-otn-tunnel {
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the explicit route objects always
- excluded by the path computation of the secondary reverse
- path.";
+ excluded by the path computation of the secondary reverse
+ path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -911,8 +912,8 @@ module ietf-otn-tunnel {
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the explicit route objects included
- or excluded by the path computation of the secondary reverse
- path.";
+ or excluded by the path computation of the secondary reverse
+ path.";
case otn {
uses l1-types:otn-label-hop;
}
@@ -925,7 +926,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range start for the ingress segment
- of the secondary reverse path.";
+ of the secondary reverse path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -938,7 +939,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range end for the ingress segment
- of the secondary reverse path.";
+ of the secondary reverse path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -950,7 +951,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction/te:label-step/te:technology" {
description
"Augment TE label range step for the ingress segment
- of the secondary reverse path.";
+ of the secondary reverse path.";
case otn {
uses l1-types:otn-label-step;
}
@@ -963,7 +964,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range start for the egress segment
- of the secondary reverse path.";
+ of the secondary reverse path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -976,7 +977,7 @@ module ietf-otn-tunnel {
+ "te:te-label/te:technology" {
description
"Augment TE label range end for the egress segment
- of the secondary reverse path.";
+ of the secondary reverse path.";
case otn {
uses l1-types:otn-label-start-end;
}
@@ -988,7 +989,7 @@ module ietf-otn-tunnel {
+ "te:label-restriction/te:label-step/te:technology" {
description
"Augment TE label range step for the egress segment
- of the secondary reverse path.";
+ of the secondary reverse path.";
case otn {
uses l1-types:otn-label-step;
}
@@ -1003,7 +1004,7 @@ module ietf-otn-tunnel {
+ "te:label-hop/te:te-label/te:technology" {
description
"Augment TE label hop for the route object of the computed
- secondary reverse path.";
+ secondary reverse path.";
case otn {
uses l1-types:otn-label-hop;
}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-pm-collection@2026-05-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-pm-collection@2026-05-02.yang
new file mode 100644
index 000000000..d59c9dd1c
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/ietf-pm-collection@2026-05-02.yang
@@ -0,0 +1,715 @@
+module ietf-pm-collection {
+ yang-version 1.1;
+ namespace
+ "urn:ietf:params:xml:ns:yang:ietf-pm-collection";
+ prefix pm-coll;
+
+ import ietf-yang-types {
+ prefix yang;
+ reference "RFC 6991: Common YANG Data Types";
+ }
+
+ organization
+ "IETF Common Control and Measurement Plane (ccamp)
+ Working Group";
+ contact
+ "WG Web:
+ Editor: Bin Yeong Yoon ";
+ description
+ "This YANG module defines a data model for performance
+ management (PM) streaming from network equipment to clients,
+ based on ITU-T G.7710. It supports real-time streaming of
+ performance measurements using three core collection types:
+ counts (cumulative events), snapshot (instantaneous values),
+ and tidemarks (extreme values), as defined in ITU-T G.7710.
+
+ The module enables proactive network monitoring through
+ configurable sampling and measurement intervals, supporting
+ both high-frequency real-time monitoring and long-term trend
+ analysis. It provides threshold event notifications for both
+ periodic measurements and non-periodic events (BUT, EUT,
+ CSES).
+
+ The design supports AI-driven applications, network digital
+ twins, and dynamic network environments by enabling multiple
+ simultaneous views of the same performance parameter with
+ different temporal resolutions. This hierarchical structure
+ allows operators, analytics systems, and digital twin
+ platforms to access performance data at appropriate
+ granularities while maintaining operational efficiency and
+ cross-vendor interoperability.
+
+ The module integrates with IETF YANG-Push protocols for
+ subscription-based streaming, enabling clients to receive
+ continuous performance data and threshold event notifications
+ for real-time monitoring, historical analysis, and automated
+ network management.";
+
+ revision 2026-05-02 {
+ description
+ "Renamed the module from ietf-pm-measurements to
+ ietf-pm-collection (including namespace and prefix).
+
+ Terminology and model alignment: prior wording and the
+ measurement-methods container for counts, snapshot, and
+ tidemarks were replaced by collection types and the
+ collection-types container, per ITU-T G.7710 collection-
+ type concepts.";
+ reference
+ "RFC XXXX: A YANG Data Model of Performance Management
+ Streaming";
+ }
+
+ /*
+ * TYPEDEFs
+ */
+ typedef profile-names {
+ type string {
+ pattern '[a-zA-Z][a-zA-Z0-9_-]*-[a-zA-Z][a-zA-Z0-9_-]*-'
+ + '[a-zA-Z][a-zA-Z0-9_-]*(-[a-zA-Z][a-zA-Z0-9_-]*)?';
+ }
+ description
+ "Parameter profile name following the format:
+ --[-]
+
+ Where:
+ - : Standards body or organization
+ (e.g., itu, ieee, ietf)
+ - : Network domain or layer
+ (e.g., transport, access, core)
+ - : Intended use or function
+ (e.g., maintenance, qos, availability)
+ - : Optional qualifying information
+ (e.g., 15min, 24hr, high-priority)
+
+ Examples:
+ - itu-transport-maintenance-15min
+ - itu-transport-maintenance-24hr
+ - itu-transport-qos-24hr
+ - ieee-access-availability";
+ }
+
+ typedef time-interval-unit {
+ type enumeration {
+ enum millisecond {
+ description "Time interval in milliseconds.";
+ }
+ enum second {
+ description "Time interval in seconds.";
+ }
+ enum minute {
+ description "Time interval in minutes.";
+ }
+ enum hour {
+ description "Time interval in hours.";
+ }
+ }
+ description "Units for expressing time intervals.";
+ }
+
+ /*
+ * IDENTITIES
+ */
+ identity periodic-events {
+ description
+ "Base identity for periodic event notifications.";
+ }
+
+ identity counts-transient {
+ base periodic-events;
+ description
+ "Notification for transient threshold events in counts
+ measurements.";
+ }
+
+ identity counts-standing {
+ base periodic-events;
+ description
+ "Notification for standing threshold events in counts
+ measurements.";
+ }
+
+ identity snapshot {
+ base periodic-events;
+ description
+ "Notification for snapshot measurement threshold events.";
+ }
+
+ identity tidemarks {
+ base periodic-events;
+ description
+ "Notification for tidemarks measurement threshold events.";
+ }
+
+ identity non-periodic-events {
+ description
+ "Base identity for non-periodic event notifications.";
+ }
+
+ identity but {
+ base non-periodic-events;
+ description
+ "Notification for Begin Unavailable Time (BUT) events.";
+ }
+
+ identity eut {
+ base non-periodic-events;
+ description
+ "Notification for End Unavailable Time (EUT) events.";
+ }
+
+ identity cses {
+ base non-periodic-events;
+ description
+ "Notification for Consecutive Severely Errored Seconds
+ (CSES) events.";
+ }
+
+ /*
+ * COMMON GROUPINGS
+ */
+ grouping threshold-config {
+ description
+ "Common threshold configuration for snapshot and tidemarks
+ measurement types (high and low thresholds).";
+ leaf high-threshold {
+ type uint32;
+ description
+ "High threshold that triggers alerts when exceeded.";
+ }
+ leaf low-threshold {
+ type uint32;
+ description
+ "Low threshold that triggers alerts when performance
+ falls below acceptable levels.";
+ }
+ }
+
+ grouping transient-threshold-config {
+ description
+ "Threshold configuration for transient conditions.
+ Transient thresholds only support high threshold crossings
+ and report immediately when the count value reaches or
+ crosses the configured transient threshold value.
+ Transient thresholds do not support low threshold
+ (underflow) conditions, unlike snapshot and tidemarks
+ measurements which support both high and low thresholds.";
+ leaf transient-threshold {
+ type uint32;
+ description
+ "Transient threshold that triggers alerts when exceeded.
+ Transient thresholds report immediately when the count
+ value reaches or crosses this threshold value.";
+ }
+ }
+
+ grouping event-state-info {
+ description
+ "Common event state information for all event types.";
+ leaf event-occurred {
+ type boolean;
+ description
+ "Indicates whether a threshold crossing or performance
+ event has occurred.";
+ }
+ leaf event-time {
+ type yang:date-and-time;
+ description
+ "Precise timestamp of when the event occurred.";
+ }
+ }
+
+ grouping oor-event-type {
+ description
+ "Common out-of-range event type definition.";
+ leaf event-type {
+ type enumeration {
+ enum High-OOR-event {
+ description "High OOR threshold exceeded.";
+ }
+ enum Low-OOR-event {
+ description "Low OOR threshold crossed.";
+ }
+ }
+ description
+ "Specifies whether the high or low OOR threshold was
+ crossed.";
+ }
+ }
+
+ grouping triggered-oor-event-info {
+ description
+ "Combined threshold event type and event information.";
+ uses oor-event-type;
+ uses event-state-info;
+ }
+
+ grouping count-transient-event-type {
+ description
+ "Transient threshold event type definition for counts
+ measurements. Transient thresholds report immediately when
+ the count value reaches or crosses a configured threshold
+ value.";
+ leaf event-type {
+ type enumeration {
+ enum Threshold-Crossed-Event {
+ description
+ "Threshold crossing event generated when count value
+ reaches or crosses the configured threshold value.";
+ }
+ }
+ description
+ "Specifies that a threshold crossing event occurred.";
+ }
+ }
+
+ grouping triggered-count-transient-event-info {
+ description
+ "Combined transient threshold event type and event
+ information for counts measurements. Transient thresholds
+ are independent threshold mechanisms that report
+ immediately when count values cross configured threshold
+ values.";
+ uses count-transient-event-type;
+ uses event-state-info;
+ }
+
+ grouping time-interval-config {
+ description "Common time interval configuration.";
+ leaf interval-value {
+ type uint32;
+ description "Numeric value for the interval.";
+ }
+ leaf unit {
+ type time-interval-unit;
+ description "Time unit for the interval value.";
+ }
+ }
+
+ /*
+ * COLLECTION TYPE GROUPINGS
+ */
+ grouping count-measurement-gr {
+ description
+ "Counts measurement for cumulative event tracking over a
+ measurement interval. Supports transient and standing
+ threshold reporting, as defined in G.7710.";
+ container counts {
+ description
+ "Contains counts measurement values and configuration.";
+ container transient-condition-config {
+ description
+ "Configuration for transient threshold conditions.
+ Transient thresholds report immediately when the
+ count value reaches or crosses the configured
+ transient threshold value. Transient thresholds do
+ not support low threshold (underflow) conditions,
+ unlike snapshot and tidemarks measurements which
+ support both high and low thresholds.";
+ uses transient-threshold-config;
+ }
+ container standing-condition-config {
+ description
+ "Configuration for standing condition monitoring.
+ When both thresholds are set, standing-threshold
+ must be greater than or equal to reset-threshold
+ (hysteresis).";
+ must "not(standing-threshold and reset-threshold) or "
+ + "standing-threshold >= reset-threshold" {
+ error-message
+ "Standing threshold must be >= reset threshold.";
+ }
+ leaf standing-threshold {
+ type uint32;
+ description
+ "Threshold value that triggers standing condition
+ alerts.";
+ }
+ leaf reset-threshold {
+ type uint32;
+ description
+ "Reset threshold value that clears standing
+ conditions.";
+ }
+ }
+ leaf measurement-value {
+ type uint32;
+ config false;
+ description
+ "Current cumulative count value for the measurement
+ interval.";
+ }
+ }
+ }
+
+ grouping snapshot-measurement-gr {
+ description
+ "Snapshot measurements for instantaneous values at uniform
+ time within each measurement interval. Supports high/low
+ OOR threshold reporting, as defined in G.7710.";
+ container snapshot {
+ description
+ "Contains snapshot measurement configuration and values.";
+ container uniform-time-config {
+ description
+ "Configuration for uniform time intervals between
+ snapshots.";
+ leaf interval-value {
+ type uint32;
+ default 1;
+ description
+ "Numeric value for the sampling interval between
+ snapshots.";
+ }
+ leaf unit {
+ type time-interval-unit;
+ description
+ "Time unit for the snapshot sampling interval.";
+ }
+ }
+ container threshold-config {
+ description
+ "Configuration for snapshot threshold monitoring.";
+ uses threshold-config;
+ }
+ leaf measurement-value {
+ type uint32;
+ config false;
+ description
+ "Current instantaneous snapshot value.";
+ }
+ }
+ }
+
+ grouping tidemarks-measurement-gr {
+ description
+ "Tidemarks measurements for maximum and minimum values
+ over the measurement interval. Supports high/low OOR
+ threshold reporting, as defined in G.7710.";
+ container tidemarks {
+ description
+ "Contains tidemarks measurement values and threshold
+ configuration.";
+ container threshold-config {
+ description
+ "Configuration for tidemarks threshold monitoring.";
+ uses threshold-config;
+ }
+ leaf high-measurement-value {
+ type uint32;
+ config false;
+ description
+ "Current maximum value recorded during the measurement
+ interval.";
+ }
+ leaf low-measurement-value {
+ type uint32;
+ config false;
+ description
+ "Current minimum value recorded during the measurement
+ interval.";
+ }
+ }
+ }
+
+ grouping collection-types-gr {
+ description
+ "Grouping for the three core collection types (counts,
+ snapshot, tidemarks) per ITU-T G.7710.";
+ container collection-types {
+ description
+ "Container for the counts, snapshot, and tidemarks
+ collection types.";
+ uses count-measurement-gr;
+ uses snapshot-measurement-gr;
+ uses tidemarks-measurement-gr;
+ }
+ }
+
+ /*
+ * EVENT GROUPINGS
+ */
+ grouping counts-transient-event-gr {
+ description
+ "Transient threshold events for counts measurements.
+ Transient thresholds are independent threshold mechanisms
+ that report immediately when count values cross configured
+ threshold values.";
+ container counts-transient {
+ description
+ "Contains information about transient threshold events
+ for counts.";
+ uses triggered-count-transient-event-info;
+ }
+ }
+
+ grouping counts-standing-event-gr {
+ description
+ "Standing condition events for counts measurements.";
+ container counts-standing {
+ description
+ "Contains information about standing threshold events
+ for counts.";
+ leaf event-type {
+ type enumeration {
+ enum Threshold-Report {
+ description
+ "Threshold Report (TR) generated when the count
+ value reaches or exceeds the standing-threshold
+ configured in standing-condition-config.";
+ }
+ enum Reset-Threshold-Report {
+ description
+ "Reset Threshold Report (RTR) generated at the end
+ of the period when the count value is at or below
+ the reset-threshold (G.7710 standing condition
+ clear).";
+ }
+ }
+ description
+ "Specifies the type of standing threshold event that
+ occurred, as defined in G.7710. A Threshold-Report
+ (TR) is generated when the measurement-value reaches
+ or exceeds the standing-threshold. A
+ Reset-Threshold-Report (RTR) is generated at the end
+ of the period when the measurement-value is at or
+ below the reset-threshold.";
+ }
+ uses event-state-info;
+ }
+ }
+
+ grouping snapshot-events-gr {
+ description
+ "Threshold events for snapshot measurements.";
+ container snapshot {
+ description
+ "Contains snapshot threshold event information.";
+ uses triggered-oor-event-info;
+ }
+ }
+
+ grouping tidemarks-events-gr {
+ description
+ "Threshold events for tidemarks measurements.";
+ container tidemarks {
+ description
+ "Contains tidemarks threshold event information.";
+ uses triggered-oor-event-info;
+ }
+ }
+
+ /*
+ * MEASUREMENT INTERVAL STRUCTURES
+ */
+ grouping periodic-measurement-intervals {
+ description
+ "Hierarchical structure for periodic measurement timing
+ and collection types.";
+ list sampling-interval {
+ key "id";
+ description
+ "List of sampling intervals defining data collection
+ frequency.";
+ leaf id {
+ type string;
+ description
+ "Unique identifier for this sampling interval
+ configuration.";
+ }
+ leaf interval-value {
+ type uint32;
+ default 1;
+ description "Numeric value for the sampling interval.";
+ }
+ leaf unit {
+ type time-interval-unit;
+ default second;
+ description "Time unit for the sampling interval value.";
+ }
+ list measurement-interval {
+ key "id";
+ description
+ "List of measurement intervals defining aggregation
+ periods.";
+ leaf id {
+ type string;
+ description
+ "Unique identifier for this measurement interval
+ configuration.";
+ }
+ leaf interval-value {
+ type uint32;
+ default 15;
+ description
+ "Numeric value for the measurement interval.";
+ }
+ leaf unit {
+ type time-interval-unit;
+ default minute;
+ description
+ "Time unit for the measurement interval value.";
+ }
+ uses collection-types-gr;
+ }
+ }
+ }
+
+ grouping non-periodic-events-gr {
+ description
+ "Grouping for non-periodic performance event parameters
+ (BUT, EUT, CSES).";
+ container BUT-event {
+ description "Begin Unavailable Time (BUT) event.";
+ uses event-state-info;
+ }
+ container EUT-event {
+ description "End Unavailable Time (EUT) event.";
+ uses event-state-info;
+ leaf duration {
+ type uint32;
+ units "seconds";
+ description
+ "Total duration of unavailability in seconds.";
+ }
+ }
+ container CSES-event {
+ description
+ "Consecutive Severely Errored Seconds (CSES) event.";
+ leaf event-occurred {
+ type boolean;
+ description
+ "Indicates whether a CSES event was generated.";
+ }
+ leaf start {
+ type yang:date-and-time;
+ description
+ "Timestamp indicating when the CSES period began.";
+ }
+ leaf end {
+ type yang:date-and-time;
+ description
+ "Timestamp indicating when the CSES period ended.";
+ }
+ leaf duration {
+ type uint32;
+ units "seconds";
+ description "Duration of the CSES period in seconds.";
+ }
+ leaf error-count {
+ type uint32;
+ description
+ "Number of errors during the CSES period.";
+ }
+ }
+ }
+
+ grouping pm-periodic-measurement-gr {
+ description
+ "Hierarchical structure for periodic performance
+ measurements.";
+ list parameter-profile {
+ key "name";
+ description "List of performance parameter profiles.";
+ leaf name {
+ type profile-names;
+ description "Name of the parameter profile.";
+ }
+ list pm-parameter {
+ key "name";
+ description
+ "List of PM parameters within the parameter profile.";
+ leaf name {
+ type string;
+ description
+ "Name of the performance parameter being measured.";
+ }
+ uses periodic-measurement-intervals;
+ }
+ }
+ }
+
+ /*
+ * MAIN CONTAINER
+ */
+ container pm-periodic-measurement {
+ description
+ "Main container for periodic performance measurements.";
+ uses pm-periodic-measurement-gr;
+ }
+
+ /*
+ * NOTIFICATIONS
+ */
+ notification pm-threshold-events {
+ description
+ "Notification for periodic threshold crossing events and
+ non-periodic performance events (BUT, EUT, CSES).";
+ container periodic-events {
+ description "Container for periodic threshold events.";
+ list parameter-profile {
+ key "name";
+ description
+ "List of performance parameter profiles for event
+ monitoring.";
+ leaf name {
+ type profile-names;
+ description "Name of the parameter profile.";
+ }
+ list pm-parameter {
+ key "name";
+ description
+ "List of PM parameters within the parameter
+ profile.";
+ leaf name {
+ type string;
+ description
+ "Name of the performance parameter being
+ monitored.";
+ }
+ list sampling-interval {
+ key "id";
+ description
+ "List of sampling intervals for event monitoring.";
+ leaf id {
+ type string;
+ description
+ "Unique identifier for this sampling interval
+ configuration.";
+ }
+ uses time-interval-config;
+ list measurement-interval {
+ key "id";
+ description
+ "List of measurement intervals for event
+ aggregation.";
+ leaf id {
+ type string;
+ description
+ "Unique identifier for this measurement
+ interval configuration.";
+ }
+ uses time-interval-config;
+ container event-types {
+ description
+ "Container for different threshold event
+ types.";
+ uses counts-transient-event-gr;
+ uses counts-standing-event-gr;
+ uses snapshot-events-gr;
+ uses tidemarks-events-gr;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ container non-periodic-events {
+ description
+ "Container for non-periodic performance events (BUT,
+ EUT, CSES).";
+ uses non-periodic-events-gr;
+ }
+ }
+}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-pm-interval-capabilities@2026-05-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-pm-interval-capabilities@2026-05-02.yang
new file mode 100644
index 000000000..1e12e7505
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/ietf-pm-interval-capabilities@2026-05-02.yang
@@ -0,0 +1,236 @@
+module ietf-pm-interval-capabilities {
+ yang-version 1.1;
+ namespace
+ "urn:ietf:params:xml:ns:yang:ietf-pm-interval-capabilities";
+ prefix ipc;
+
+ import ietf-pm-collection {
+ prefix pm-coll;
+ reference "draft-ietf-ccamp-pm-measurements-yang";
+ }
+
+ organization
+ "IETF Common Control and Measurement Plane (ccamp)
+ Working Group";
+ contact
+ "WG Web:
+ Editor: Bin Yeong Yoon ";
+ description
+ "This YANG module defines a data model for discovering and
+ expressing performance management (PM) interval capabilities
+ in network equipment. The module enables clients to discover
+ what sampling and measurement intervals a server can support
+ for different performance parameters within various
+ parameter profiles.
+
+ This module provides hierarchical interval capability
+ discovery where measurement intervals must be multiples of
+ their corresponding sampling intervals, and each parameter
+ can have different interval capabilities within parameter
+ profiles.
+
+ This module is designed to work with ietf-pm-collection for
+ complete PM streaming solutions and supports both real-time
+ monitoring and long-term trend analysis.";
+
+ revision 2026-05-02 {
+ description
+ "Companion module ietf-pm-collection replaces measurement
+ methods with collection types (counts, snapshot,
+ tidemarks) and renames the grouping and container to
+ collection-types per ITU-T G.7710; this module continues
+ to describe interval capabilities for that design.";
+ reference
+ "RFC XXXX: A YANG Data Model of Performance Management
+ Streaming";
+ }
+
+ /*
+ * TYPEDEFs
+ */
+ typedef interval-unit {
+ type enumeration {
+ enum millisecond {
+ description "Time interval in milliseconds.";
+ }
+ enum second {
+ description "Time interval in seconds.";
+ }
+ enum minute {
+ description "Time interval in minutes.";
+ }
+ enum hour {
+ description "Time interval in hours.";
+ }
+ enum day {
+ description "Time interval in days.";
+ }
+ }
+ description "Supported units for expressing time intervals.";
+ }
+
+ /*
+ * IDENTITIES
+ */
+ identity interval-capability-type {
+ description
+ "Base identity for different types of interval
+ capabilities.";
+ }
+
+ identity sampling-interval-capability {
+ base interval-capability-type;
+ description
+ "Capability for sampling intervals - how frequently data
+ is collected.";
+ }
+
+ identity measurement-interval-capability {
+ base interval-capability-type;
+ description
+ "Capability for measurement intervals - how long
+ measurements are aggregated.";
+ }
+
+ /*
+ * GROUPINGS
+ */
+ grouping interval-constraints {
+ description
+ "Constraints for supported intervals including min/max
+ values and supported units. This grouping defines the
+ capability constraints for both sampling and measurement
+ intervals, allowing devices to express their supported
+ interval ranges, units, and granularity.";
+ leaf min-value {
+ type uint32;
+ description
+ "Minimum supported value for this interval type.";
+ }
+ leaf max-value {
+ type uint32;
+ description
+ "Maximum supported value for this interval type.";
+ }
+ leaf-list units {
+ type interval-unit;
+ description
+ "List of supported time units for this interval type.";
+ }
+ leaf default-value {
+ type uint32;
+ description
+ "Default value recommended for this interval type.";
+ }
+ leaf default-unit {
+ type interval-unit;
+ description
+ "Default unit recommended for this interval type.";
+ }
+ leaf granularity {
+ type uint32;
+ description
+ "Granularity step for interval values. For example, if
+ granularity is 5, then only values that are multiples
+ of 5 are supported.";
+ }
+ }
+
+ grouping parameter-interval-capabilities {
+ description
+ "Interval capabilities for a specific parameter within a
+ profile. This grouping defines the complete interval
+ capability information for a single performance
+ parameter, including its name and hierarchical interval
+ relationships. The structure uses mapping-based discovery
+ where all interval information is contained within the
+ sampling-interval structure.";
+ leaf name {
+ type string;
+ description
+ "Name of the performance parameter (e.g., es, ses,
+ bbe).";
+ }
+ container interval-relationships {
+ description
+ "Defines hierarchical relationships between sampling and
+ measurement intervals for this parameter. Measurement
+ intervals must be multiples of their corresponding
+ sampling intervals.";
+ list sampling-interval {
+ key "id";
+ description
+ "Maps sampling intervals to their compatible
+ measurement intervals with complete capability
+ information.";
+ leaf id {
+ type string;
+ description
+ "Unique identifier for this sampling interval
+ capability.";
+ }
+ uses interval-constraints;
+ list measurement-interval {
+ key "id";
+ description
+ "Detailed information for each compatible
+ measurement interval within the sampling interval
+ structure.";
+ leaf id {
+ type string;
+ description
+ "Unique identifier for this measurement interval
+ capability.";
+ }
+ uses interval-constraints;
+ }
+ }
+ }
+ }
+
+ grouping profile-parameter-capabilities {
+ description
+ "Capabilities for all parameters within a specific
+ parameter profile. This grouping defines the complete
+ capability information for a parameter profile, including
+ the profile name and all performance parameters with
+ their respective interval capabilities.";
+ leaf name {
+ type pm-coll:profile-names;
+ description
+ "Name of the parameter profile (e.g.,
+ itu-transport-maintenance-15min).";
+ }
+ list pm-parameter {
+ key "name";
+ description
+ "List of parameters with their specific interval
+ capabilities within this profile.";
+ uses parameter-interval-capabilities;
+ }
+ }
+
+ /*
+ * MAIN CONTAINER
+ */
+ container pm-interval-capabilities {
+ description
+ "Main container for hierarchical PM interval capabilities.
+ This container provides comprehensive information about
+ the sampling and measurement intervals that a server can
+ support for different parameters within different
+ parameter profiles.";
+ config false;
+
+ list parameter-profile {
+ key "name";
+ description
+ "List of parameter profiles with their parameter-
+ specific interval capabilities. Each profile represents
+ a collection of parameters that share common
+ measurement requirements but may have different
+ interval capabilities.";
+ uses profile-parameter-capabilities;
+ }
+ }
+}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-power-and-energy@2026-01-22.yang b/experimental/ietf-extracted-YANG-modules/ietf-power-and-energy@2026-01-22.yang
index 94cf0d065..7e0feeafe 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-power-and-energy@2026-01-22.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-power-and-energy@2026-01-22.yang
@@ -10,7 +10,7 @@ module ietf-power-and-energy {
"RFC 8348: A YANG Data Model for Hardware Management";
}
- import ietf-iana-power-and-energy {
+ import iana-ietf-power-and-energy {
prefix ianaeo;
reference
"IANA-defined identities for power and energy class";
@@ -333,8 +333,6 @@ module ietf-power-and-energy {
description
"The percent value of the power factor measurement.
Leaf often omitted, implying 100%.";
- reference
- "Replaces RFC 7460: eoPowerCurrentType object";
}
identity power-state {
@@ -344,9 +342,46 @@ module ietf-power-and-energy {
for extensibility while maintaining alignment with the IANA
Power State Set Registry.";
reference
- "IANA: Power State Set Registry";
+ "IANA: Power State Set Registry:
+ https://www.iana.org/assignments/power-state-sets/";
+ }
+ identity power-state-admin {
+ base power-state;
+ description
+ "Base identity for administratively requested power states. The
+ administrative power state indicates the desired power state
+ requested for the Energy Object by a management system.";
+ }
+ identity power-state-oper {
+ base power-state;
+ description
+ "Base identity for operational power states. The operational
+ power state indicates the actual current power state of the
+ Energy Object. A difference between the administrative state
+ and the operational state indicates that the Energy Object is
+ transitioning between power states.";
+ }
+ identity power-state-on {
+ base power-state;
+ description "full power on.";
+ reference
+ "IANA: Power State Set Registry (ieee1621-power-state-set):
+ https://www.iana.org/assignments/power-state-sets/";
+ }
+ identity power-state-off {
+ base power-state;
+ description "power off.";
+ reference
+ "IANA: Power State Set Registry (ieee1621-power-state-set):
+ https://www.iana.org/assignments/power-state-sets/";
+ }
+ identity power-state-sleep {
+ base power-state;
+ description "low-power state.";
+ reference
+ "IANA: Power State Set Registry (ieee1621-power-state-set):
+ https://www.iana.org/assignments/power-state-sets/";
}
-
identity unit-multiplier {
description
"Base identity for unit multipliers as defined in IEC 61850-7-3
@@ -371,8 +406,6 @@ module ietf-power-and-energy {
zetta(21), -- 10^21
yotta(24) -- 10^24
";
- reference
- "RFC 7460: UnitMultiplier";
}
identity multiplier-yocto {
description
@@ -423,8 +456,6 @@ module ietf-power-and-energy {
description
"Represents a multiplier of 10^3 (1,000) associated with the
integer units used to measure the power or energy.";
- reference
- "RFC 7460: UnitMultiplier";
}
identity multiplier-mega {
description
@@ -463,7 +494,6 @@ module ietf-power-and-energy {
}
identity energy-relationship-type {
description "Base identity for energy object relationships";
- reference "RFC 7461: IANAEnergyRelationship";
}
identity powered-by {
base energy-relationship-type;
@@ -494,8 +524,6 @@ module ietf-power-and-energy {
config false;
description
"Energy objects container for power and energy attributes.";
- reference
- "RFC 7460: eoPowerTable";
list energy-entry {
key "object-id";
@@ -503,15 +531,12 @@ module ietf-power-and-energy {
"Power and energy entry for an energy object, indexed by object id.
Each entry contains the complete set of power and energy attributes
for a specific physical component.";
- reference
- "RFC 7460: EoPowerEntry";
leaf object-id {
type string;
description
- "An identifier that uniquely identifies the energy object
- in an energy object.";
- }
+ "An identifier that uniquely identifies the energy object";
+ }
leaf source-component-id {
type leafref {
@@ -527,8 +552,7 @@ module ietf-power-and-energy {
container power {
description
"Container for power measurement attributes.";
- reference
- "RFC 7460: eoPowerEntry attributes";
+
leaf instantaneous-power {
type int32;
units "Watts";
@@ -542,8 +566,6 @@ module ietf-power-and-energy {
indicate power consumption, while negative values can indicate power
generation (e.g., for devices with battery backup or
renewable energy sources).";
- reference
- "RFC 7460: eoPower object";
}
leaf nameplate-power {
@@ -554,8 +576,6 @@ module ietf-power-and-energy {
the maximum power that the energy object is designed to consume or
produce, as specified by the manufacturer. Essential for
power budget calculations and capacity planning.";
- reference
- "RFC 7460: eoPowerNameplate object";
}
leaf unit-multiplier {
@@ -568,8 +588,6 @@ module ietf-power-and-energy {
This multiplier applies to both instantaneous-power and nameplate-power
values, allowing representation of power values from milliwatts
to gigawatts using integer arithmetic.";
- reference
- "RFC 7460: eoPowerUnitMultiplier object";
}
leaf data-source-accuracy {
@@ -587,8 +605,6 @@ module ietf-power-and-energy {
This metadata is crucial for network management
applications to assess the reliability and accuracy of the
power data.";
- reference
- "RFC 7460: eoPowerMeasurementCaliber object";
}
leaf power-factor {
@@ -598,8 +614,6 @@ module ietf-power-and-energy {
energy object. This information is important for
understanding the electrical characteristics of the energy object
and for correctly interpreting the power data.";
- reference
- "Replaces RFC 7460: eoPowerCurrentType object";
}
leaf measurement-local {
@@ -610,15 +624,12 @@ module ietf-power-and-energy {
the energy object, while a remote measurement is collected from
an external source. This information can be useful for
troubleshooting and understanding the data source.";
- reference
- "RFC 7460: eoPowerMeasurementLocal object";
}
}
+
container energy {
description
"Container for energy measurement attributes.";
- reference
- "RFC 7460: eoEnergyEntry attributes";
leaf total-energy-consumed {
type uint64;
@@ -631,8 +642,6 @@ module ietf-power-and-energy {
in this container. This value is useful for tracking
overall energy usage over time for billing, reporting,
or optimization purposes.";
- reference
- "RFC 7460: eoEnergyConsumed object";
}
leaf total-energy-delivered {
@@ -647,8 +656,6 @@ module ietf-power-and-energy {
capable of generating power, such as those with renewable
energy sources or battery backup systems, or capable of providing
energy to other energy objects (e.g., PoE switches).";
- reference
- "RFC 7460: eoEnergyProduced object";
}
leaf unit-multiplier {
type identityref {
@@ -660,8 +667,6 @@ module ietf-power-and-energy {
of the energy measurements, allowing representation of
energy values from milliwatt-hours to gigawatt-hours
using integer arithmetic.";
- reference
- "RFC 7460: eoPowerUnitMultiplier object";
}
leaf data-source-accuracy {
@@ -679,8 +684,6 @@ module ietf-power-and-energy {
This metadata is crucial for network management
applications to assess the reliability and accuracy of the
energy data.";
- reference
- "RFC 7460: eoPowerMeasurementCaliber object";
}
leaf measurement-local {
type boolean;
@@ -690,8 +693,6 @@ module ietf-power-and-energy {
the energy object, while a remote measurement is collected from
an external source. This information can be useful for
troubleshooting and understanding the data source.";
- reference
- "RFC 7460: eoPowerMeasurementLocal object";
}
leaf-list certifications {
type identityref {
@@ -702,12 +703,29 @@ module ietf-power-and-energy {
this list is empty, the energy object has no certifications.";
}
}
+ container power-state {
+ description
+ "Container for Power state monitoring.";
+ leaf power-state-oper {
+ type identityref {
+ base power-state-oper;
+ }
+ description
+ "The actual operational power state of the Energy Object.
+ This reflects the current state, which may differ from the
+ admin-state during transitions. This leaf is the
+ operational counterpart of the administratively set
+ 'power-state-admin' in /energy-control/energy-entry. The
+ two leaves together form the complete power state
+ management interface.";
+ }
+ }
+
list relationship {
key "type";
+ config false;
description "Relationships for this energy entry. Replaces
RFC 7461 eoRelationTable.";
- reference
- "RFC 7461: eoRelationTable, eoRelationEntry";
leaf type {
type identityref {
@@ -717,15 +735,11 @@ module ietf-power-and-energy {
description
"The type of relationship this energy object has with peer
objects.";
- reference
- "RFC 7461: eoRelationship, IANAEnergyRelationship";
}
list peer {
key "id";
description "Multiple peers for this relationship type.";
- reference
- "RFC 7461: eoRelationID";
leaf id {
type string;
@@ -735,8 +749,6 @@ module ietf-power-and-energy {
metered-by, etc. If the network level UUID is not known,
some other locally unique identifier MAY be used, in
conjunction with a human readable details.";
- reference
- "RFC 7461: eoRelationID (UUIDorZero)";
}
leaf details {
type string;
@@ -749,5 +761,55 @@ module ietf-power-and-energy {
}
}
}
+
+ container energy-control {
+ description
+ "Energy control configuration, mirroring monitored objects. The
+ operational tree ('container energy-objects') will typically
+ contain a significantly larger number of instances than the
+ configuration tree here. The configuration tree represents the
+ administrator's intent and is limited to explicitly provisioned
+ entries.";
+
+ list energy-entry {
+ key "object-id";
+ description
+ "Control entry for a specific energy object.";
+
+ leaf object-id {
+ type string;
+ description
+ "An identifier that uniquely identifies the energy object.";
+ }
+ container power-state {
+ description
+ "Container for Power state management.";
+
+ leaf power-state-oper {
+ type leafref {
+ path "/energy-objects/energy-entry/power-state/power-state-oper";
+ require-instance false;
+ }
+ description
+ "References the corresponding operational energy object
+ instance in the monitoring tree.";
+ }
+
+ leaf power-state-admin {
+ type identityref {
+ base power-state-admin;
+ }
+ description
+ "The administratively requested power state for the
+ Energy Object. This is the state that the management
+ system desires the energy object to be in. This leaf is
+ the administrative counterpart of the operational set
+ 'power-state-oper' in /energy-objects/energy-entry. The
+ two leaves together form the complete power state
+ management interface.";
+ }
+ }
+ }
+ }
}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-sr-policy-types@2025-05-22.yang b/experimental/ietf-extracted-YANG-modules/ietf-sr-policy-types@2026-05-23.yang
similarity index 95%
rename from experimental/ietf-extracted-YANG-modules/ietf-sr-policy-types@2025-05-22.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-sr-policy-types@2026-05-23.yang
index b06dab6d8..8811f5c04 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-sr-policy-types@2025-05-22.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-sr-policy-types@2026-05-23.yang
@@ -24,14 +24,8 @@ module ietf-sr-policy-types {
Editor: Tarik Saleh
- Editor: Robert Sawaya
-
Editor: Zhuang Shunwan
- Editor: Daniel Voyer
-
- Editor: Muhammad Durrani
-
Editor: Satoru Matsushima
Editor: Pavan Vishnu Beeram
@@ -41,7 +35,6 @@ module ietf-sr-policy-types {
description
"This YANG module defines the essential types for the management
of SR policy module.
-
Copyright (c) 2024 IETF Trust and the persons identified as
authors of the code. All rights reserved.
@@ -58,8 +51,15 @@ module ietf-sr-policy-types {
// RFC Editor: replace XXXX with actual RFC number and remove
// this note
+ revision "2026-05-23" {
+ description
+ "Remove the metric type definition. The metric type from
+ te-types will be reused instead.";
+ reference "RFC 9256";
+ }
+
revision "2025-05-22" {
- // RFC Editor: replace the above date 2024-03-04 with the date of
+ // RFC Editor: replace the above date 2025-05-22 with the date of
// publication and remove this note.
description
@@ -361,15 +361,6 @@ module ietf-sr-policy-types {
description "SR policy oper state";
}
- typedef metric-type {
- type enumeration {
- enum te { value 1; description "TE metric"; }
- enum igp { value 2; description "IGP metric"; }
- enum latency { value 3; description "Latency metric"; }
- }
- description "Metric type";
- }
-
typedef margin-type {
type enumeration {
enum absolute { value 1; description "Absolute value"; }
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2025-10-20.yang b/experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2026-05-23.yang
similarity index 98%
rename from experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2025-10-20.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2026-05-23.yang
index ec6efaf1a..ffcaa47dc 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2025-10-20.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2026-05-23.yang
@@ -44,17 +44,11 @@ module ietf-sr-policy {
Editor: Tarik Saleh
- Editor: Robert Sawaya
-
Editor: Zhuang Shunwan
- Editor: Daniel Voyer
-
- Editor: Muhammad Durrani
-
Editor: Satoru Matsushima
- Editor: Pavan Vishnu Beeram
+ Editor: Vishnu Pavan Beeram
";
@@ -82,7 +76,13 @@ module ietf-sr-policy {
// RFC Editor: replace XXXX with actual RFC number and remove
// this note
- revision 2025-10-20 {
+ revision "2026-05-23" {
+ description
+ "Use the path metric type from te-types.";
+ reference "RFC 9256";
+ }
+
+ revision "2025-10-20" {
description
"Add the headend-address to the policy key to ensure global
uniqueness across multiple headends, consistent with RFC 9256.";
@@ -438,7 +438,9 @@ module ietf-sr-policy {
"Path is invalid if its metric exceeds this value";
leaf metric-type {
- type sr-policy-types:metric-type;
+ type identityref {
+ base te-types:path-metric-type;
+ }
description "Metric type";
}
@@ -468,7 +470,6 @@ module ietf-sr-policy {
description "Maximum number of SIDs in a segment-list";
}
}
-
grouping optimization-templates {
description
"Path optimization templates properties";
@@ -517,9 +518,6 @@ module ietf-sr-policy {
description
"Attributes applicable to SR policies";
- /* uses srlg;
- uses affinity-mapping;
- */ // TODO: Beyond the scope of this model
uses segment-lists;
uses explicit-binding-sid-rules;
}
@@ -816,7 +814,9 @@ module ietf-sr-policy {
container minimize-metric {
description "The metric for which the path is optimized";
leaf metric-type {
- type sr-policy-types:metric-type;
+ type identityref {
+ base te-types:path-metric-type;
+ }
description "Metric type";
}
@@ -926,7 +926,9 @@ module ietf-sr-policy {
"Path is invalid if its metric exceeds this value";
leaf metric-type {
- type sr-policy-types:metric-type;
+ type identityref {
+ base te-types:path-metric-type;
+ }
description "Metric type";
}
@@ -1044,7 +1046,6 @@ module ietf-sr-policy {
}
}
}
-
grouping mpls-label-stack {
description
"Grouping for MPLS label stack";
@@ -1683,7 +1684,8 @@ module ietf-sr-policy {
+ "sr-policy:value";
}
description
- "Reference to existing candidate path MPLS binding SID value";
+ "Reference to existing candidate path MPLS binding SID "
+ + "value";
}
}
case srv6 {
@@ -1703,7 +1705,8 @@ module ietf-sr-policy {
+ "sr-policy:value";
}
description
- "Reference to existing candidate path SRv6 binding SID value";
+ "Reference to existing candidate path SRv6 binding SID "
+ + "value";
}
}
}
diff --git a/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-02-13.yang b/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-05-22.yang
similarity index 95%
rename from experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-02-13.yang
rename to experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-05-22.yang
index 82f39a520..0d04a29ff 100644
--- a/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-02-13.yang
+++ b/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-05-22.yang
@@ -40,11 +40,10 @@ module ietf-vrrp {
Editor: Ravi Parikh
-
+
Editor: Mingui Zhang
";
-
description
"This YANG module defines a model for managing Virtual Router
Redundancy Protocol (VRRP) versions 2 and 3.
@@ -72,11 +71,11 @@ module ietf-vrrp {
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.";
- revision 2026-02-13 {
+ revision 2026-05-22 {
description
"This revision includes the following changes:
- Update some identifiers and descriptions to conform
- to the changes in RFC 9586
+ to the changes in RFC 9568
- Add a new effective-priority leaf
- Update some reference statements";
reference
@@ -266,6 +265,7 @@ module ietf-vrrp {
"A packet has been received with an invalid VRRP checksum
value.";
}
+
identity ip-ttl-error {
base vrrp-error-global;
description
@@ -397,8 +397,9 @@ module ietf-vrrp {
default "false";
description
"Generates VRRP state change messages each time the
- VRRP instance changes state (from 'up' to 'down'
- or 'down' to 'up').";
+ VRRP instance changes state from one VRRP state
+ ('initialize', 'backup', or 'active') to another
+ VRRP state.";
}
container preempt {
description
@@ -613,7 +614,7 @@ module ietf-vrrp {
or networks.";
container interfaces {
description
- "Enables the specified VRRPv2 or VRRPv3 instance to track
+ "Enables the specified VRRPv3 instance to track
interfaces. Interface tracking prevents traffic loss by
detecting the availability of interfaces. The operational
states of other interfaces are associated with the
@@ -649,7 +650,7 @@ module ietf-vrrp {
} // interfaces
container networks {
description
- "Enables the VRRPv2 or VRRPv3 router instance to track the
+ "Enables the VRRPv3 router instance to track the
specified networks through their IPv6 network prefixes.
Network tracking prevents traffic loss by detecting
network connectivity failure. The states of
@@ -662,8 +663,8 @@ module ietf-vrrp {
list network {
key "prefix";
description
- "Enables the specified VRRPv2 or VRRPv3 instance to
- track an IPv6 network by specifying the prefix of the
+ "Enables the specified VRRPv3 instance to track an
+ IPv6 network by specifying the prefix of the
IPv6 network.";
leaf prefix {
type inet:ipv6-prefix;
@@ -689,11 +690,15 @@ module ietf-vrrp {
VRRP interface.";
list virtual-ipv6-address {
key "ipv6-address";
- max-elements 2;
+ max-elements 16;
description
- "Two IPv6 addresses are allowed. The first address must
- be a link-local address. The second address can be a
- link-local or global address.";
+ "Virtual IPv6 addresses for a single VRRP instance. The
+ first configured virtual address must be an IPv6
+ link-local address. Subsequent IPv6 addresses can be
+ IPv6 link-local or global addresses. For a VRRP owner
+ router, the virtual address must match one of the IPv6
+ global or link-local addresses associated with the
+ interface corresponding to the virtual router.";
leaf ipv6-address {
type inet:ipv6-address;
description
@@ -729,9 +734,10 @@ module ietf-vrrp {
}
config false;
description
- "The effect priority of the virtual router taking account
- address ownership and any modifications due to
- local policy.";
+ "The effective priority of the virtual router taking
+ account address ownership and any modifications due to
+ local policy. The priority 255 is reserved the virtual
+ router owning the address.";
}
leaf last-adv-source {
type inet:ip-address;
@@ -744,7 +750,7 @@ module ietf-vrrp {
config false;
description
"The date and time when this virtual router
- transitioned out of 'init' state.";
+ transitioned out of 'initialize' state.";
}
leaf active-down-interval {
type uint32;
@@ -763,7 +769,9 @@ module ietf-vrrp {
config false;
description
"Calculated based on the priority and advertisement
- interval configuration command parameters. See RFC 9568.";
+ interval configuration command parameters. Note that
+ the units are microseconds rather than centiseconds units
+ as configured for advertisement-interval. See RFC 9568.";
}
leaf last-event {
type identityref {
@@ -798,7 +806,7 @@ module ietf-vrrp {
local management subsystem re-initialized itself.";
}
leaf active-transitions {
- type yang:counter32;
+ type yang:counter64;
description
"The total number of times that this virtual router's
state has transitioned to 'Active'.
@@ -930,7 +938,6 @@ module ietf-vrrp {
}
} // statistics
} // vrrp-global-state-attributes
-
/*
* Configuration data and operational state data nodes
*/
@@ -959,7 +966,7 @@ module ietf-vrrp {
description
"Configures VRRP version 3 for IPv6.";
list vrrp-instance {
- must "derived-from-or-self(version, 'vrrp-v3')" {
+ must "derived-from-or-self(version, 'vrrp:vrrp-v3')" {
description
"IPv6 is only supported by version 3.";
}
@@ -979,7 +986,6 @@ module ietf-vrrp {
"VRRP data at the global level.";
uses vrrp-global-state-attributes;
}
-
/*
* Notifications
*/
diff --git a/experimental/ietf-extracted-YANG-modules/mvps-telemetry@2026-05-28.yang b/experimental/ietf-extracted-YANG-modules/mvps-telemetry@2026-05-28.yang
new file mode 100644
index 000000000..427ad9e75
--- /dev/null
+++ b/experimental/ietf-extracted-YANG-modules/mvps-telemetry@2026-05-28.yang
@@ -0,0 +1,60 @@
+module mvps-telemetry {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:mvps-telemetry";
+ prefix mvpst;
+
+ import ietf-yang-types { prefix yang; }
+
+ organization "Catellix Research";
+ contact "Leonardo Melegassi ";
+ description
+ "Export notification for MVPS coherence events. Read-only
+ telemetry; carries no configuration or actuation.";
+ revision 2026-05-28 {
+ description "Initial -00 revision.";
+ reference "draft-melegassi-opsawg-mvps-telemetry-export-00";
+ }
+
+ typedef hex64 {
+ type string {
+ pattern '[0-9a-f]{64}';
+ }
+ description "Lowercase hex SHA-256 digest (64 chars).";
+ }
+
+ notification mvps-coherence-event {
+ description "One MVPS operational event.";
+ leaf event-id { type hex64; mandatory true; }
+ leaf event-type {
+ type enumeration {
+ enum alarm; enum byzantine; enum phase;
+ enum vantage; enum anchor;
+ }
+ mandatory true;
+ }
+ leaf severity {
+ type enumeration {
+ enum emergency; enum alert; enum critical; enum error;
+ enum warning; enum notice; enum info; enum debug;
+ }
+ mandatory true;
+ }
+ leaf event-time { type yang:date-and-time; mandatory true; }
+ leaf bundle-seq { type uint64; mandatory true; }
+ leaf d2 { type decimal64 { fraction-digits 3; } }
+ leaf phi-d { type decimal64 { fraction-digits 3; } }
+ leaf vantage-count { type uint16; }
+ leaf byzantine-frac { type decimal64 { fraction-digits 3; } }
+ leaf phase {
+ type enumeration {
+ enum NOMINAL; enum DEGRADED; enum ALARM; enum BYZANTINE;
+ enum MPLS_CAMOUFLAGE_SUSPECTED;
+ }
+ }
+ leaf path-fingerprint { type hex64; }
+ leaf log-seq { type uint64; }
+ leaf log-record-hash { type hex64; }
+ leaf anchor-head { type string; }
+ leaf audit { type boolean; default false; }
+ }
+}
diff --git a/standard/iana/yang-parameters.xml b/standard/iana/yang-parameters.xml
index 7e89d59a0..d3e063d7d 100644
--- a/standard/iana/yang-parameters.xml
+++ b/standard/iana/yang-parameters.xml
@@ -4,7 +4,7 @@
YANG Parameters2010-06-10
- 2026-05-01
+ 2026-05-26YANG Module Names
@@ -1836,15 +1836,15 @@ and Subsequent Address Family Identi
-
+ ietf-ospf-anycast-flagN
-
+ ietf-ospf-anycast-flag@2026-05-19.yangurn:ietf:params:xml:ns:yang:ietf-ospf-anycast-flagospf-anycast-flag
-
- 's module file will be posted upon the document's publication as an RFC.
+
+ ietf-ospf-functional-capability
@@ -2588,6 +2588,16 @@ and Subsequent Address Family Identi
+
+ ietf-te-packet-types
+ N
+
+ urn:ietf:params:xml:ns:yang:ietf-te-packet-types
+ te-packet-types
+
+
+ 's module file will be posted upon the document's publication as an RFC.
+ ietf-te-topologyN
@@ -2618,6 +2628,16 @@ and Subsequent Address Family Identi
+
+ ietf-te-types
+ N
+
+ urn:ietf:params:xml:ns:yang:ietf-te-types
+ te-types
+
+
+ 's module file will be posted upon the document's publication as an RFC.
+ ietf-templateN