diff --git a/experimental/ietf-extracted-YANG-modules/draft-relation@2025-03-09.yang b/experimental/ietf-extracted-YANG-modules/draft-relation@2025-08-01.yang similarity index 73% rename from experimental/ietf-extracted-YANG-modules/draft-relation@2025-03-09.yang rename to experimental/ietf-extracted-YANG-modules/draft-relation@2025-08-01.yang index 33f414c47..1022c06e9 100644 --- a/experimental/ietf-extracted-YANG-modules/draft-relation@2025-03-09.yang +++ b/experimental/ietf-extracted-YANG-modules/draft-relation@2025-08-01.yang @@ -30,7 +30,7 @@ module draft-relation { description "relations external of RFC8345"; - revision 2025-03-09 { + revision 2025-08-01 { description "Initial revision"; reference @@ -51,34 +51,35 @@ module draft-relation { } choice network-element-ref { description - "linking to RFC8345"; + "reference to network element"; leaf network-ref { type leafref { path "/nw:networks/nw:network/nw:network-id"; } description - "linking to network"; + "reference to network"; } leaf node-ref { type leafref { path "/nw:networks/nw:network/nw:node/nw:node-id"; } description - "linking to node"; + "reference to node"; } leaf link-ref { type leafref { path "/nw:networks/nw:network/nt:link/nt:link-id"; } description - "linking to link"; + "reference to link"; } leaf tp-ref { type leafref { - path "/nw:networks/nw:network/nw:node/nt:termination-point/nt:tp-id"; + path "/nw:networks/nw:network/nw:node" + + "/nt:termination-point/nt:tp-id"; } description - "linking to termination point"; + "reference to termination point"; } } leaf template-ref { @@ -93,23 +94,28 @@ module draft-relation { base dr-tmp:request-type; } description - "template is generic and may include requests that are not supported by the network element - here, we specify the types of requests that the network element supports - if network element supports all template ALL-REQUEST may be used"; + "template is generic and may include requests + that are not supported by the network element + here, we specify the types of requests + that the network element supports + if network element supports all request types + ALL-REQUEST may be used"; } leaf path { type string; description - "network element can be augmented and may contain containers nested within other containers. - path is used for filtering."; + "network element can be augmented and may contain + containers nested within other containers. + path is used for filtering"; } list parameter-value { key "param-ref request-type"; description - "parameter value from network element"; + "parameter value for network element"; leaf param-ref { type leafref { - path "/dr-tmp:template/dr-tmp:template/dr-tmp:parameter/dr-tmp:param-id"; + path "/dr-tmp:template/dr-tmp:template" + + "/dr-tmp:parameter/dr-tmp:param-id"; } description "reference to template parameter"; diff --git a/experimental/ietf-extracted-YANG-modules/draft-template@2025-03-09.yang b/experimental/ietf-extracted-YANG-modules/draft-template@2025-08-01.yang similarity index 70% rename from experimental/ietf-extracted-YANG-modules/draft-template@2025-03-09.yang rename to experimental/ietf-extracted-YANG-modules/draft-template@2025-08-01.yang index 69fff0323..63c4bdccd 100644 --- a/experimental/ietf-extracted-YANG-modules/draft-template@2025-03-09.yang +++ b/experimental/ietf-extracted-YANG-modules/draft-template@2025-08-01.yang @@ -17,7 +17,7 @@ module draft-template { description "template yang model"; - revision 2025-03-09 { + revision 2025-08-01 { description "Initial revision"; reference @@ -41,36 +41,26 @@ module draft-template { "template used to retrieve operational state data"; } - identity extra-label { + identity METRIC { + base template-type; description - "base identity for extra label"; + "template used to retrieve metrics"; } - identity request-type { + identity label { description - "base identity for request type"; + "base identity for label"; } - identity ALL_REQUEST { - base request-type; + identity request-type { description - "all request"; + "base identity for request type"; } - identity NETCONF { + identity ALL_REQUESTS { base request-type; description - "request that retrieves data using the NETCONF protocol"; - } - - grouping netconf-request { - description - "netconf request"; - leaf xpath { - type string; - description - "netconf xpath for request"; - } + "all requests"; } container template { @@ -92,29 +82,28 @@ module draft-template { } container template-type { description - "template type - used for filtering"; + "template type; + used for filtering template"; leaf base { type identityref { base template-type; } description - "template base - used for filtering"; + "template base type"; } leaf is-historical { type boolean; description - "check is template is used to get historical data or not - used for filtering"; + "check if template is used + to get historical data or not"; } - leaf-list extra-label { + leaf-list label { type identityref { - base extra-label; + base label; } description - "extra label - used for filtering"; + "used to defined which data can + be retrieve with the template"; } } list parameter { @@ -142,24 +131,24 @@ module draft-template { } description "request type"; + } + leaf description { + type string; + description + "request description"; } container request-builder { description - "request container that allows users to retrieve data + "request container that contains + everything needed to build the request; parameters must be enclosed in brackets."; } } - container extra { + anydata extra { description "use for augmentation"; } } } - augment "/template/template/request/request-builder" { - when "derived-from-or-self(../request-type, 'NETCONF')"; - uses netconf-request; - description - "adding netconf request to possible request"; - } } diff --git a/experimental/ietf-extracted-YANG-modules/iana-bgp-community-types@2024-10-21.yang b/experimental/ietf-extracted-YANG-modules/iana-bgp-community-types@2024-10-21.yang deleted file mode 100644 index 19fd85acc..000000000 --- a/experimental/ietf-extracted-YANG-modules/iana-bgp-community-types@2024-10-21.yang +++ /dev/null @@ -1,451 +0,0 @@ -module iana-bgp-community-types { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:iana-bgp-community-types"; - prefix bct; - - import ietf-inet-types { - prefix inet; - } - import ietf-yang-types { - prefix yang; - reference - "RFC 6991: Common YANG Types."; - } - - // meta - - 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 - - - Authors: Mahesh Jethanandani (mjethanandani at gmail.com), - Keyur Patel (keyur at arrcus.com), - Susan Hares (shares at ndzh.com), - Jeffrey Haas (jhaas at juniper.net)."; - - description - "This module contains data definitions for BGP Communities in - their various forms. It can be imported by modules that make - use of BGP attributes. - This YANG module is maintained by IANA and reflects the - 'BGP Identities for Community' and 'BGP definitions for - Community type' registries. - - 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 - (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself - for full legal notices. - - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL - NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', - 'MAY', 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."; - - revision 2024-10-21 { - description - "Initial Version"; - reference - "RFC XXXX: YANG module for Border Gateway Protocol (BGP-4)."; - } - - /* - * Features. - */ - - feature send-communities { - description - "Enable the propagation of communities."; - } - - /* - * Identities. - */ - - /* BGP Well-Known Standard (RFC 1997) Community Identities. */ - - identity bgp-well-known-std-community { - description - "Base identity for reserved communities within the standard - community space defined by RFC 1997. These communities must - fall within the range 0xFFFF0000 to 0xFFFFFFFF"; - reference - "RFC 1997: BGP Communities Attribute."; - } - - identity no-export { - base bgp-well-known-std-community; - description - "Do not export NLRI received carrying this community outside - the bounds of this autonomous system, or this confederation - (if the local autonomous system is a confederation member AS). - This community has a value of 0xFFFFFF01."; - reference - "RFC 1997: BGP Communities Attribute."; - } - - identity no-advertise { - base bgp-well-known-std-community; - description - "All NLRI received carrying this community must not be - advertised to other BGP peers. This community has a value of - 0xFFFFFF02."; - reference - "RFC 1997: BGP Communities Attribute."; - } - - identity no-export-subconfed { - base bgp-well-known-std-community; - description - "All NLRI received carrying this community must not be - advertised to external BGP peers - including over - confederation sub-AS boundaries. This community has a value of - 0xFFFFFF03."; - reference - "RFC 1997: BGP Communities Attribute."; - } - - identity no-peer { - base bgp-well-known-std-community; - description - "An autonomous system receiving NLRI tagged with this community - is advised not to re-advertise the NLRI to external bilateral - peer autonomous systems. An AS may also filter received NLRI - from bilateral peer sessions when they are tagged with this - community value. This community has a value of 0xFFFFFF04."; - reference - "RFC 3765: NOPEER Community for BGP."; - } - - /* BGP Community Send Identities. */ - - identity send-community-feature { - description - "Base identity to identify send-community feature."; - } - - identity standard { - base send-community-feature; - description - "Send standard communities."; - reference - "RFC 1997: BGP Communities Attribute."; - } - - identity extended { - base send-community-feature; - description - "Send extended communities."; - reference - "RFC 4360: BGP Extended Communities Attribute."; - } - - identity large { - base send-community-feature; - description - "Send large communities."; - reference - "RFC 8092: BGP Large Communities Attribute."; - } - - /* - * Typedefs. - */ - - /* BGP Community Types. */ - - typedef bgp-community-regexp-type { - type string; - description - "Type definition for communities specified as regular - expression patterns. - - A compliant implementation of this type MUST accept a POSIX.2 - Extended Regular Expression excluding the following features: - - character class expressions (Section 9.3.5) - - collating symbols (Section 9.3.5) - - equivalence classes (Section 9.3.5) - - back-reference expressions (Section 9.3.6) - - Implementations MAY accept additional forms of regular - expressions as long as the minimally compliant form documented - above is accepted."; - reference - "IEEE Std 1003.1-2017: The Open Group Base Specifications Issue - 7, 2018 edition."; - } - - typedef bgp-std-community-type { - type union { - type uint32; - type string { - pattern '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' - + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' - + '665[0-2][0-9]|6653[0-5]):' - + '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' - + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' - + '665[0-2][0-9]|6653[0-5])'; - } - } - description - "Type definition for standard community attributes."; - reference - "RFC 1997: BGP Communities Attribute."; - } - - typedef bgp-well-known-community-type { - type identityref { - base bgp-well-known-std-community; - } - description - "Type definition for well-known IETF community attribute - values."; - reference - "IANA Border Gateway Protocol (BGP) Well Known Communities"; - } - - /* BGP Large Community Types. */ - - typedef bgp-large-community-type { - type string { - // 4-octets global:4-octets local part-1:4-octets local part-2. - pattern '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|' - + '[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[0-9]):' - + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|' - + '[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[0-9]):' - + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|' - + '[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[0-9])'; - } - description - "Type definition for a large BGP community"; - reference - "RFC 8092: BGP Large Communities Attribute."; - } - - /* IPv6 BGP Exteneded Community Types. */ - - typedef bgp-ipv6-ext-community-type { - type union { - type string { - pattern 'ipv6-route\-target:' - + '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' - + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' - + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' - + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' - + ':' - + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; - pattern 'ipv6-route\-target:' - + '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' - + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' - + ':' - + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; - /* - * description - * "Type 0x00, Sub-Type 0x02: IPv6 Route-Target - * ipv6-route-target:(IPv6 address):(local-admin) - * 16 octets global administrator and 2 octets local - * administrator. - * - * Note: The patterns above are excerpted from RFC 8294."; - * reference - * "RFC 5701: IPv6 Address Specific BGP Extended Community - * Attribute, Section 3."; - */ - } - - type string { - pattern 'ipv6-route\-origin:' - + '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' - + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' - + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' - + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' - + ':' - + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; - pattern 'ipv6-route\-origin:' - + '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' - + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' - + ':' - + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; - /* - * description - * "Type 0x00, Sub-Type 0x03: IPv6 Route-Origin - * ipv6-route-origin:(IPv6 address):(local-admin) - * 16 octets global administrator and 2 octets local - * administrator. - * - * Note: The patterns above are excerpted from RFC 8294."; - * reference - * "RFC 5701: IPv6 Address Specific BGP Extended Community - * Attribute, Section 3."; - */ - } - - type string { - // raw with 20 octets - pattern 'ipv6-raw:' - + '([0-9A-Fa-f][0-9A-Fa-f]:){19}' - + '[0-9A-Fa-f][0-9A-Fa-f]'; - } - } - description - "Type definition for IPv6 extended community attributes. - It includes a way to specify a 'raw' string that - is followed by 20 bytes of octet string to support - new and experimental type definitions."; - reference - "RFC 5701: IPv6 Address Specific BGP Extended Community - Attribute, Section 3."; - } - - /* BGP Extended Community Types. */ - typedef bgp-ext-community-type { - type union { - type string { - pattern 'route\-target:(6[0-5][0-5][0-3][0-5]|' - + '[1-5][0-9]{4}|[1-9][0-9]{1,4}|[0-9]):' - + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|' - + '[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[0-9])'; - /* - * description - * "Type 0x00, Sub-Type 0x02: Route-Target - * route-target:(ASN):(local-admin) - * 2 octets global administrator and 4 octets local - * administrator."; - * reference - * "RFC 4360: BGP Extended Communities Attribute, - * Section 4."; - */ - } - - type string { - pattern 'route\-target:' - + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' - + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|' - + '2[0-4][0-9]|25[0-5]):' - + '(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|' - + '[1-9][0-9]{1,4}|[0-9])'; - /* - * description - * "Type 0x01, Sub-Type 0x02: Route-Target - * route-target:(IPv4):(local-admin) - * 4 octets IP address global administrator and 2 octets - * local administrator."; - * reference - * "RFC 4360: BGP Extended Communities Attribute, - * Section 4."; - */ - } - - type string { - pattern 'route\-target:' - + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|' - + '[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[0-9])' - + '(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|' - + '[1-9][0-9]{1,4}|[0-9])'; - /* - * description - * "Type 0x02, Sub-Type 0x02: Route-Target - * route-target:(ASN):(local-admin) - * 4 octets global administrator and 2 octets local - * administrator."; - * reference - * "RFC 5668: 4-Octet AS Specific BGP Extended Community, - * Section 4."; - */ - } - - type string { - pattern 'route\-origin:(6[0-5][0-5][0-3][0-5]|' - + '[1-5][0-9]{4}|[1-9][0-9]{1,4}|[0-9]):' - + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|' - + '[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[0-9])'; - /* - * description - * "Type 0x01, Sub-Type 0x03: Route-Origin - * route-target:(ASN):(local-admin) - * 2 octets global administrator and 4 octets local - * administrator."; - * reference - * "RFC 4360: BGP Extended Communities Attribute, - * Section 5."; - */ - } - - type string { - pattern 'route\-origin:' - + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' - + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|' - + '2[0-4][0-9]|25[0-5]):' - + '(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|' - + '[1-9][0-9]{1,4}|[0-9])'; - /* - * description - * "Type 0x01, Sub-Type 0x03: Route-Target - * route-target:(IPv4):(local-admin) - * 4 octets IP address global administrator and 2 octets - * local administrator."; - * reference - * "RFC 4360: BGP Extended Communities Attribute, - * Section 5."; - */ - } - - type string { - pattern 'route\-origin:' - + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|' - + '[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[0-9])' - + '(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|' - + '[1-9][0-9]{1,4}|[0-9])'; - /* - * description - * "Type 0x02, Sub-Type 0x03: Route-Origin - * route-origin:(ASN):(local-admin) - * 4 octets global administrator and 2 octets local - * administrator."; - * reference - * "RFC 5668: 4-Octet AS Specific BGP Extended Community, - * Section 4."; - */ - } - - type string { - // raw with 8 octets - pattern 'raw:' - + '([0-9A-Fa-f][0-9A-Fa-f]:){7}' - + '[0-9A-Fa-f][0-9A-Fa-f]'; - } - } - description - "Type definition for extended community attributes. - It includes a way to specify a 'raw' string that - is followed by 8 bytes of octet string to support - new and experimental type definitions."; - reference - "RFC 4360: BGP Extended Communities Attribute."; - } -} diff --git a/experimental/ietf-extracted-YANG-modules/iana-bgp-community-types@2026-03-02.yang b/experimental/ietf-extracted-YANG-modules/iana-bgp-community-types@2026-03-02.yang new file mode 100644 index 000000000..7f0bedd82 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/iana-bgp-community-types@2026-03-02.yang @@ -0,0 +1,1395 @@ +module iana-bgp-community-types { + yang-version 1.1; + namespace + "urn:ietf:params:xml:ns:yang:iana-bgp-community-types"; + prefix bct; + + import ietf-inet-types { + prefix inet; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 9911: Common YANG Types."; + } + + 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 + + + Authors: Mahesh Jethanandani (mjethanandani at gmail.com), + Keyur Patel (keyur at arrcus.com), + Susan Hares (shares at ndzh.com), + Jeffrey Haas (jeffrey.haas at hpe.com)."; + + description + "This module contains data definitions for BGP Communities in + their various forms. It can be imported by modules that make + use of BGP attributes. + + This YANG module is maintained by IANA and reflects the + 'BGP Identities for Community' and 'BGP definitions for + Community type' registries. + + 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 + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + revision 2026-03-02 { + description + "Initial Version"; + reference + "RFC XXXX: YANG module for Border Gateway Protocol (BGP-4)."; + } + + /* + * Features. + */ + + feature send-communities { + description + "Enable the propagation of communities."; + } + + /* + * Identities. + */ + + /* BGP Well-Known Standard (RFC 1997) Community Identities. */ + + identity bgp-well-known-std-community { + description + "Base identity for reserved communities within the standard + community space defined by RFC 1997. These communities must + fall within the range 0xFFFF0000 to 0xFFFFFFFF"; + reference + "RFC 1997: BGP Communities Attribute."; + } + + identity no-export { + base bgp-well-known-std-community; + description + "Do not export NLRI received carrying this community outside + the bounds of this autonomous system, or this confederation + (if the local autonomous system is a confederation member AS). + This community has a value of 0xFFFFFF01."; + reference + "RFC 1997: BGP Communities Attribute."; + } + + identity no-advertise { + base bgp-well-known-std-community; + description + "All NLRI received carrying this community must not be + advertised to other BGP peers. This community has a value of + 0xFFFFFF02."; + reference + "RFC 1997: BGP Communities Attribute."; + } + + identity no-export-subconfed { + base bgp-well-known-std-community; + description + "All NLRI received carrying this community must not be + advertised to external BGP peers - including over + confederation sub-AS boundaries. This community has a value of + 0xFFFFFF03."; + reference + "RFC 1997: BGP Communities Attribute."; + } + + identity no-peer { + base bgp-well-known-std-community; + description + "An autonomous system receiving NLRI tagged with this community + is advised not to re-advertise the NLRI to external bilateral + peer autonomous systems. An AS may also filter received NLRI + from bilateral peer sessions when they are tagged with this + community value. This community has a value of 0xFFFFFF04."; + reference + "RFC 3765: NOPEER Community for BGP."; + } + + /* BGP Community Send Identities. */ + + identity send-community-feature { + description + "Base identity to identify send-community feature."; + } + + identity none { + base send-community-feature; + description + "Send no communities. When used, no other community types + should be present."; + } + + identity standard { + base send-community-feature; + description + "Send standard communities."; + reference + "RFC 1997: BGP Communities Attribute."; + } + + identity extended { + base send-community-feature; + description + "Send extended communities."; + reference + "RFC 4360: BGP Extended Communities Attribute."; + } + + identity large { + base send-community-feature; + description + "Send large communities."; + reference + "RFC 8092: BGP Large Communities Attribute."; + } + + /* + * Typedefs. + */ + + /* BGP Community Types. */ + + typedef bgp-community-regexp-type { + type string; + description + "Type definition for communities specified as regular + expression patterns. + + A compliant implementation of this type MUST accept a POSIX.2 + Extended Regular Expression excluding the following features: + - character class expressions (Section 9.3.5) + - collating symbols (Section 9.3.5) + - equivalence classes (Section 9.3.5) + - back-reference expressions (Section 9.3.6) + + Implementations MAY accept additional forms of regular + expressions as long as the minimally compliant form documented + above is accepted."; + reference + "IEEE Std 1003.1-2017: The Open Group Base Specifications Issue + 7, 2018 edition."; + } + + typedef bgp-std-community-type { + type union { + type uint32; + type string { + pattern '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' + + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' + + '665[0-2][0-9]|6653[0-5])' + + ':' + + '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' + + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' + + '665[0-2][0-9]|6653[0-5])'; + } + } + description + "Type definition for standard community attributes."; + reference + "RFC 1997: BGP Communities Attribute."; + } + + typedef bgp-well-known-community-type { + type identityref { + base bgp-well-known-std-community; + } + description + "Type definition for well-known IETF community attribute + values."; + reference + "IANA Border Gateway Protocol (BGP) Well Known Communities"; + } + + /* BGP Large Community Types. */ + + typedef bgp-large-community-type { + type string { + // 4-octets global:4-octets local part-1:4-octets local part-2. + pattern '([0-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[01][0-9]{8}|' + + '42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|' + + '42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|' + + '4294967[01][0-9]{2}|42949672[0-8][0-9]|' + + '429496729[0-5])' + + ':' + + '([0-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[01][0-9]{8}|' + + '42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|' + + '42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|' + + '4294967[01][0-9]{2}|42949672[0-8][0-9]|' + + '429496729[0-5])' + + ':' + + '([0-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[01][0-9]{8}|' + + '42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|' + + '42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|' + + '4294967[01][0-9]{2}|42949672[0-8][0-9]|' + + '429496729[0-5])'; + } + description + "Type definition for a large BGP community"; + reference + "RFC 8092: BGP Large Communities Attribute."; + } + + /* IPv6 BGP Exteneded Community Types. */ + + typedef bgp-ipv6-ext-community-type { + type union { + type string { + pattern 'ipv6\-route\-target:' + + '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' + + ':' + + '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' + + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' + + '665[0-2][0-9]|6653[0-5])'; + pattern 'ipv6\-route\-target:' + + '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' + + ':' + + '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' + + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' + + '665[0-2][0-9]|6653[0-5])'; + /* + * description + * "Type 0x00, Sub-Type 0x02: IPv6 Route-Target + * ipv6-route-target:(IPv6 address):(local-admin) + * 16 octets global administrator and 2 octets local + * administrator. + * + * Note: The patterns above are excerpted from RFC 8294."; + * reference + * "RFC 5701: IPv6 Address Specific BGP Extended Community + * Attribute, Section 3."; + */ + } + + type string { + pattern 'ipv6\-route\-origin:' + + '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' + + ':' + + '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' + + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' + + '665[0-2][0-9]|6653[0-5])'; + pattern 'ipv6-route\-origin:' + + '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' + + ':' + + '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' + + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' + + '665[0-2][0-9]|6653[0-5])'; + /* + * description + * "Type 0x00, Sub-Type 0x03: IPv6 Route-Origin + * ipv6-route-origin:(IPv6 address):(local-admin) + * 16 octets global administrator and 2 octets local + * administrator. + * + * Note: The patterns above are excerpted from RFC 8294."; + * reference + * "RFC 5701: IPv6 Address Specific BGP Extended Community + * Attribute, Section 3."; + */ + } + + type string { + // raw with 20 octets + pattern 'ipv6-raw:' + + '([0-9A-Fa-f][0-9A-Fa-f]:){19}' + + '[0-9A-Fa-f][0-9A-Fa-f]'; + } + } + description + "Type definition for IPv6 extended community attributes. + It includes a way to specify a 'raw' string that + is followed by 20 bytes of octet string to support + new and experimental type definitions."; + reference + "RFC 5701: IPv6 Address Specific BGP Extended Community + Attribute, Section 3."; + } + + /* BGP Extended Community Types. */ + + typedef bgp-ext-community-type { + type union { + type string { + pattern 'route\-target:' + + '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' + + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' + + '665[0-2][0-9]|6653[0-5])' + + 'L?' + + ':' + + '([0-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[01][0-9]{8}|' + + '42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|' + + '42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|' + + '4294967[01][0-9]{2}|42949672[0-8][0-9]|' + + '429496729[0-5])'; + /* + * description + * "Type 0x00, Sub-Type 0x02: Route-Target + * route-target:(ASN):(local-admin) + * 2 octets global administrator and 4 octets local + * administrator."; + * + * When the 'L' qualifier is used, this community + * represents a Type 0x02, Sub-Type 0x02: Route-Target + * route-target:(ASN):(local-admin) 4 octets global + * administrator with a value < 65536 and 2 octets local + * administrator."; + * reference + * "RFC 4360: BGP Extended Communities Attribute, + * Section 4. + * RFC 5668: 4-Octet AS Specific BGP Extended Community, + * Section 4."; + */ + } + + type string { + pattern 'route\-target:' + + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' + + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|' + + '2[0-4][0-9]|25[0-5])' + + ':' + + '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' + + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' + + '665[0-2][0-9]|6653[0-5])'; + /* + * description + * "Type 0x01, Sub-Type 0x02: Route-Target + * route-target:(IPv4):(local-admin) + * 4 octets IP address global administrator and 2 octets + * local administrator."; + * reference + * "RFC 4360: BGP Extended Communities Attribute, + * Section 4."; + */ + } + + type string { + pattern 'route\-target:' + + '([0-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[01][0-9]{8}|' + + '42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|' + + '42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|' + + '4294967[01][0-9]{2}|42949672[0-8][0-9]|' + + '429496729[0-5])' + + ':' + + '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' + + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' + + '665[0-2][0-9]|6653[0-5])'; + /* + * description + * "Type 0x02, Sub-Type 0x02: Route-Target + * route-target:(ASN):(local-admin) + * 4 octets global administrator and 2 octets local + * administrator."; + * reference + * "RFC 5668: 4-Octet AS Specific BGP Extended Community, + * Section 4."; + */ + } + + type string { + pattern 'route\-origin:' + + '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' + + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' + + '665[0-2][0-9]|6653[0-5])' + + 'L?' + + ':' + + '([0-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[01][0-9]{8}|' + + '42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|' + + '42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|' + + '4294967[01][0-9]{2}|42949672[0-8][0-9]|' + + '429496729[0-5])'; + /* + * description + * "Type 0x00, Sub-Type 0x03: Route-Origin + * route-target:(ASN):(local-admin) + * 2 octets global administrator and 4 octets local + * administrator. + * + * When the 'L' qualifier is used, this community + * represents a Type 0x02, Sub-Type 0x03: Route-Origin + * route-origin:(ASN):(local-admin) 4 octets global + * administrator with a value < 65536 and 2 octets local + * administrator."; + * reference + * "RFC 4360: BGP Extended Communities Attribute, + * Section 5. + * RFC 5668: 4-Octet AS Specific BGP Extended Community, + * Section 4."; + */ + } + + type string { + pattern 'route\-origin:' + + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' + + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|' + + '2[0-4][0-9]|25[0-5])' + + ':' + + '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' + + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' + + '665[0-2][0-9]|6653[0-5])'; + /* + * description + * "Type 0x01, Sub-Type 0x03: Route-Target + * route-target:(IPv4):(local-admin) + * 4 octets IP address global administrator and 2 octets + * local administrator."; + * reference + * "RFC 4360: BGP Extended Communities Attribute, + * Section 5."; + */ + } + + type string { + pattern 'route\-origin:' + + '([0-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[01][0-9]{8}|' + + '42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|' + + '42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|' + + '4294967[01][0-9]{2}|42949672[0-8][0-9]|' + + '429496729[0-5])' + + ':' + + '([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|' + + '6[0-5][0-9]{3}|66[0-4][0-9]{2}|' + + '665[0-2][0-9]|6653[0-5])'; + /* + * description + * "Type 0x02, Sub-Type 0x03: Route-Origin + * route-origin:(ASN):(local-admin) + * 4 octets global administrator and 2 octets local + * administrator."; + * reference + * "RFC 5668: 4-Octet AS Specific BGP Extended Community, + * Section 4."; + */ + } + + type string { + // raw with 8 octets + pattern 'raw:' + + '([0-9A-Fa-f][0-9A-Fa-f]:){7}' + + '[0-9A-Fa-f][0-9A-Fa-f]'; + } + } + description + "Type definition for extended community attributes. + It includes a way to specify a 'raw' string that + is followed by 8 bytes of octet string to support + new and experimental type definitions."; + reference + "RFC 4360: BGP Extended Communities Attribute."; + } +} +module ietf-bgp-policy { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-policy"; + prefix bp; + + // import some basic types + + import ietf-inet-types { + prefix inet; + reference + "RFC 9911: Common YANG Data Types"; + } + import ietf-routing-policy { + prefix rt-pol; + reference + "RFC 9067: A YANG Data Model for Routing Policy"; + } + import iana-bgp-types { + prefix bt; + reference + "RFC XXXX: YANG Model for Border Gateway Protocol (BGP-4)."; + } + import iana-bgp-community-types { + prefix bct; + reference + "RFC XXXX: YANG Model for Border Gateway Protocol (BGP-4)."; + } + + organization + "IETF IDR Working Group"; + contact + "WG Web: + WG List: + + Authors: Mahesh Jethanandani (mjethanandani at gmail.com), + Keyur Patel (keyur at arrcus.com), + Susan Hares (shares at ndzh.com), + Jeffrey Haas (jeffrey.haas at hpe.com)."; + + description + "This module contains data definitions for BGP routing policy. + It augments the base routing-policy module with BGP-specific + options for conditions and actions. + + 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 + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + revision 2026-03-02 { + description + "Initial Version"; + reference + "RFC XXXX: YANG Model for Border Gateway Protocol (BGP-4)."; + } + + /* + * typedef statements + */ + + typedef bgp-set-community-option-type { + type enumeration { + enum add { + description + "Add the specified communities to the existing + community attribute."; + } + enum remove { + description + "Remove the specified communities from the + existing community attribute."; + } + enum replace { + description + "Replace the existing community attribute with + the specified communities. If an empty set is + specified, this removes the community attribute + from the route."; + } + } + description + "Type definition for options when setting the community + attribute in a policy action."; + } + + typedef bgp-next-hop-type { + type union { + type inet:ip-address-no-zone; + type enumeration { + enum self { + description + "Special designation for local router's own + address, i.e., next-hop-self."; + } + } + } + description + "Type definition for specifying next-hop in policy actions."; + } + + typedef bgp-set-med-type { + type union { + type string { + pattern '[+-]' + + '([0-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[01][0-9]{8}|' + + '42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|' + + '42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|' + + '4294967[01][0-9]{2}|42949672[0-8][0-9]|' + + '429496729[0-5])'; + } + type enumeration { + enum igp { + description + "Set the MED value to the IGP cost toward the + next hop for the route."; + } + enum med-plus-igp { + description + "Before comparing MED values for path selection, adds to + the MED the cost of the IGP route to the BGP next-hop + destination. + + This option replaces the MED value for the router, + but does not affect the IGP metric comparison. As a + result, when multiple routes have the same value + after the MED-plus-IPG comparison, and route selection + continues, the IGP route metric is also compared, even + though it was added to the MED value and compared + earlier in the selection process. + + Useful when the downstream AS requires the complete + cost of a certain route that is received across + multiple ASs."; + } + } + type uint32; + } + description + "Type definition for specifying how the BGP MED can + be set in BGP policy actions. The three choices are to set + the MED directly, increment/decrement using +/- notation, + and setting it to the IGP cost (predefined value)."; + } + + grouping equality-operator { + description + "Grouping used for common equality operations in BGP policy."; + choice operation { + case eq { + leaf eq { + type empty; + description + "Check to see if the value is equal."; + } + } + + case lt-or-eq { + leaf lt-or-eq { + type empty; + description + "Check to see if the value is less than or equal."; + } + } + + case gt-or-eq { + leaf gt-or-eq { + type empty; + description + "Check to see if the value is greater than or + equal."; + } + } + description + "Choice of operations on the value"; + } + } + + // Identities + + // augment statements + + augment "/rt-pol:routing-policy/rt-pol:defined-sets" { + description + "Adds BGP defined sets container to routing policy model."; + container bgp-defined-sets { + description + "BGP-related set definitions for policy match conditions."; + container as-path-sets { + description + "Enclosing container for list of define AS path sets."; + list as-path-set { + key "name"; + description + "List of defined AS path sets."; + leaf name { + type string; + description + "Name of the AS path set -- this is used to reference + the set in match conditions."; + } + leaf-list member { + type string; + description + "AS path regular expression using BGP YANG AS_PATH + regular expression syntax. If any of the regular + expressions in the lists are matched, the as-path-set + is considered matched."; + reference + "RFC XXXX: YANG Model for Border Gateway Protocol + (BGP-4), Appendix F.3."; + } + } + } + + container community-sets { + description + "Enclosing container for list of defined BGP community + sets."; + list community-set { + key "name"; + description + "List of defined BGP community sets."; + leaf name { + type string; + description + "Name / label of the community set -- this is used to + reference the set in match conditions."; + } + leaf-list member { + type union { + type bct:bgp-well-known-community-type; + type bct:bgp-std-community-type; + type bct:bgp-community-regexp-type; + } + description + "Members of the community set"; + } + } + } + + container ext-community-sets { + description + "Enclosing container for list of extended BGP community + sets"; + list ext-community-set { + key "name"; + description + "List of defined extended BGP community sets"; + leaf name { + type string; + description + "Name / label of the extended community set -- this is + used to reference the set in match conditions"; + } + leaf-list member { + type union { + type bct:bgp-ext-community-type; + type bct:bgp-community-regexp-type; + } + description + "Members of the extended community set."; + } + } + } + + container ipv6-ext-community-sets { + description + "Enclosing container for list of extended IPv6 BGP + community sets"; + list ipv6-ext-community-set { + key "name"; + description + "List of defined IPv6 extended BGP community sets"; + leaf name { + type string; + description + "Name / label of the IPv6 extended community set -- + this is used to reference the set in match + conditions"; + } + leaf-list member { + type union { + type bct:bgp-ipv6-ext-community-type; + type bct:bgp-community-regexp-type; + } + description + "Members of the IPv6 extended community set."; + } + } + } + + container large-community-sets { + description + "Enclosing container for list of large BGP community + sets"; + list large-community-set { + key "name"; + description + "List of defined large BGP community sets"; + leaf name { + type string; + description + "Name / label of the large community set -- this is + used to reference the set in match conditions"; + } + leaf-list member { + type union { + type bct:bgp-large-community-type; + type bct:bgp-community-regexp-type; + } + description + "Members of the large community set."; + } + } + } + + container next-hop-sets { + description + "Definition of a list of IPv4 or IPv6 next-hops which can + be matched in a routing policy."; + + list next-hop-set { + key "name"; + description + "List of defined next-hop sets for use in policies."; + + leaf name { + type string; + description + "Name of the next-hop set."; + } + leaf-list next-hop { + type bgp-next-hop-type; + description + "List of IP addresses in the next-hop set."; + } + } + } + } + } + + augment "/rt-pol:routing-policy/rt-pol:policy-definitions/" + + "rt-pol:policy-definition/rt-pol:statements/" + + "rt-pol:statement/rt-pol:conditions" { + description + "BGP policy conditions added to routing policy module."; + + container bgp-conditions { + description + "Top-level container for BGP specific policy conditions."; + + container local-pref { + description + "Value and comparison operations for conditions based on + the value of the BGP LOCAL_PREF."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 5.1.5."; + + leaf value { + type uint32; + description + "BGP LOCAL_PREF value for comparison to the entry in the + BGP route."; + } + + uses equality-operator; + } + + container med { + description + "Value and comparison operations for conditions based on + the value of the BGP MULTI_EXIT_DISC (MED)"; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 5.1.4."; + + leaf value { + type uint32; + description + "BGP MED value for comparison to the entry in the BGP + route."; + } + + uses equality-operator; + } + + leaf origin-eq { + type bt:bgp-origin-attr-type; + description + "Condition to check if the route origin is equal to the + specified value."; + } + + container match-afi-safi { + description + "Match an address family according to the logic defined in + the match-set-options leaf."; + leaf-list afi-safi-in { + type identityref { + base bt:afi-safi-type; + } + description + "List of address families which the NLRI may be within."; + } + uses rt-pol:match-set-options-restricted-group; + } + + container match-neighbor { + description + "Match a neighbor according to the logic defined in the + match-set-options leaf."; + + leaf-list neighbor-eq { + type inet:ip-address; + description + "List of neighbor addresses to check for in the ingress + direction."; + } + uses rt-pol:match-set-options-restricted-group; + } + + leaf route-type { + type enumeration { + enum internal { + description + "route type is internal."; + } + enum external { + description + "route type is external."; + } + } + description + "Condition to check the route type in the route update."; + } + + container community-count { + description + "Value and comparison operations for conditions based on + the number of communities in the route update."; + + leaf value { + type uint32; + description + "Value for the number of communities in the route + update."; + } + + uses equality-operator; + } + + container extended-community-count { + description + "Value and comparison operations for conditions based on + the number of extended communities in the route update."; + + leaf value { + type uint32; + description + "Value for the number of communities in the route + update."; + } + + uses equality-operator; + } + + container as-path-length { + description + "Value and comparison operations for conditions based on + the length of the AS path in the route update. + + The as-path-length SHALL be calculated and SHALL follow + RFC 4271 rules."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4)."; + + leaf value { + type uint32; + description + "Value of the AS path length in the route update."; + } + + uses equality-operator; + } + + container match-community-set { + description + "Top-level container for match conditions on communities. + Match a referenced community-set according to the logic + defined in the match-set-options leaf."; + leaf community-set { + type leafref { + path "/rt-pol:routing-policy/rt-pol:defined-sets/" + + "bgp-defined-sets/community-sets/" + + "community-set/name"; + } + description + "References a defined community set."; + } + uses rt-pol:match-set-options-group; + } + + container match-ext-community-set { + description + "Match a referenced extended community-set according to the + logic defined in the match-set-options leaf."; + leaf ext-community-set { + type leafref { + path "/rt-pol:routing-policy/rt-pol:defined-sets/" + + "bgp-defined-sets/ext-community-sets/" + + "ext-community-set/name"; + } + description + "References a defined extended community set."; + } + leaf ext-community-match-kind { + type enumeration { + enum ext-community { + description + "Perform the match against the ext-community RIB + attribute."; + } + enum ext-community-raw { + description + "Perform the match against the ext-community-raw RIB + attribute."; + } + } + default ext-community; + description + "Extended communities may be matched by the ext-community + RIB attribute, or the ext-community-raw RIB attribute. + This leaf selects which leaf to perform the match + operation against."; + } + uses rt-pol:match-set-options-group; + } + + container match-ipv6-ext-community-set { + description + "Match a referenced IPv6 extended community-set according + to the logic defined in the match-set-options leaf."; + leaf ipv6-ext-community-set { + type leafref { + path "/rt-pol:routing-policy/rt-pol:defined-sets/" + + "bgp-defined-sets/ipv6-ext-community-sets/" + + "ipv6-ext-community-set/name"; + } + description + "References a defined IPv6 extended community set."; + } + leaf ipv6-ext-community-match-kind { + type enumeration { + enum ipv6-ext-community { + description + "Perform the match against the IPv6 ext-community RIB + attribute."; + } + enum ipv6-ext-community-raw { + description + "Perform the match against the IPv6 ext-community-raw + RIB attribute."; + } + } + default ipv6-ext-community; + description + "IPv6 Extended communities may be matched by the + ipv6-ext-community RIB attribute, or the + ipv6-ext-community-raw RIB attribute. This leaf selects + which leaf to perform the match operation against."; + } + uses rt-pol:match-set-options-group; + } + + container match-large-community-set { + description + "Match a referenced large community-set according to the + logic defined in the match-set-options leaf."; + leaf large-community-set { + type leafref { + path "/rt-pol:routing-policy/rt-pol:defined-sets/" + + "bgp-defined-sets/large-community-sets/" + + "large-community-set/name"; + } + description + "References a defined large community set."; + } + uses rt-pol:match-set-options-group; + } + + container match-as-path-set { + description + "Match a referenced as-path set according to the logic + defined in the match-set-options leaf."; + leaf as-path-set { + type leafref { + path "/rt-pol:routing-policy/rt-pol:defined-sets/" + + "bgp-defined-sets/as-path-sets/" + + "as-path-set/name"; + } + description + "References a defined AS path set"; + } + uses rt-pol:match-set-options-group; + } + + container match-next-hop-set { + description + "Match a referenced next-hop set according to the logic + defined in the match-set-options leaf."; + leaf next-hop-set { + type leafref { + path "/rt-pol:routing-policy/rt-pol:defined-sets/" + + "bgp-defined-sets/next-hop-sets/" + + "next-hop-set/name"; + } + description + "Reference a defined next-hop set."; + } + uses rt-pol:match-set-options-restricted-group; + } + } + } + + augment "/rt-pol:routing-policy/rt-pol:policy-definitions/" + + "rt-pol:policy-definition/rt-pol:statements/" + + "rt-pol:statement/rt-pol:actions" { + description + "BGP policy actions added to routing policy module."; + container bgp-actions { + description + "Top-level container for BGP-specific actions"; + leaf set-route-origin { + type bt:bgp-origin-attr-type; + description + "Set the origin attribute to the specified value"; + } + leaf set-local-pref { + type uint32; + description + "Set the local pref attribute on the route."; + } + leaf set-next-hop { + type bgp-next-hop-type; + description + "Set the next-hop attribute in the route."; + } + leaf set-med { + type bgp-set-med-type; + description + "Set the med metric attribute in the route."; + } + + container set-as-path-prepend { + description + "Action to prepend local AS number to the AS-path a + specified number of times"; + + leaf repeat-n { + type uint8 { + range "1..max"; + } + description + "Number of times to prepend the AS number to the AS + path. If no value is specified by the asn or use-last-as + leafs, the local AS number is used. The value should be + between 1 and the maximum supported by the + implementation."; + } + leaf asn { + type inet:as-number; + must "../repeat-n and not(../use-last-as)"; + description + "The AS number to prepend to the AS path. If neither this + leaf nor use-last-as leaf is specified, but repeat-n is + set, then the local AS number will be used for + prepending."; + } + leaf use-last-as { + type boolean; + must "../repeat-n and not(../asn)"; + description + "Indicates whether to use the last AS number, which is + also the most recent AS number, to prepend to the AS + path. If neither this leaf, nor asn leaf is specified, + but repeat-n is set, then the local AS number will be + used for prepending."; + } + } + + container set-community { + description + "Action to set the community attributes of the route, along + with options to modify how the community is modified. + Communities may be set using an inline list OR + reference to an existing defined set (not both)."; + + leaf options { + type bgp-set-community-option-type; + description + "Options for modifying the community attribute with + the specified values. These options apply to both + methods of setting the community attribute."; + } + + choice method { + description + "Indicates the method used to specify the extended + communities for the set-community action"; + case inline { + leaf-list communities { + type union { + type bct:bgp-well-known-community-type; + type bct:bgp-std-community-type; + } + description + "Set the community values for the update inline with + a list."; + } + } + + case reference { + leaf community-set-ref { + type leafref { + path "/rt-pol:routing-policy/rt-pol:defined-sets/" + + "bgp-defined-sets/" + + "community-sets/community-set/name"; + } + description + "References a defined community set by name"; + } + } + } + } + + container set-ext-community { + description + "Action to set the extended community attributes of the + route, along with options to modify how the community is + modified. Extended communities may be set using an inline + list OR a reference to an existing defined set (but not + both)."; + + leaf options { + type bgp-set-community-option-type; + description + "Options for modifying the community attribute with + the specified values. These options apply to both + methods of setting the community attribute."; + } + + choice method { + description + "Indicates the method used to specify the extended + communities for the set-ext-community action"; + case inline { + leaf-list communities { + type bct:bgp-ext-community-type; + description + "Set the extended community values for the update + inline with a list."; + } + } + case reference { + leaf ext-community-set-ref { + type leafref { + path "/rt-pol:routing-policy/rt-pol:defined-sets/" + + "bgp-defined-sets/ext-community-sets/" + + "ext-community-set/name"; + } + description + "References a defined extended community set by + name."; + } + } + } + } + + container set-ipv6-ext-community { + description + "Action to set the IPv6 extended community attributes of + the route, along with options to modify how the community + is modified. IPv6 extended communities may be set using an + inline list OR a reference to an existing defined set (but + not both)."; + + leaf options { + type bgp-set-community-option-type; + description + "Options for modifying the community attribute with + the specified values. These options apply to both + methods of setting the community attribute."; + } + + choice method { + description + "Indicates the method used to specify the IPv6 extended + communities for the set-ipv6-ext-community action"; + case inline { + leaf-list communities { + type bct:bgp-ipv6-ext-community-type; + description + "Set the IPv6 extended community values for the + update inline with a list."; + } + } + case reference { + leaf ipv6-ext-community-set-ref { + type leafref { + path "/rt-pol:routing-policy/rt-pol:defined-sets/" + + "bgp-defined-sets/ipv6-ext-community-sets/" + + "ipv6-ext-community-set/name"; + } + description + "References a defined IPv6 extended community set by + name."; + } + } + } + } + + container set-large-community { + description + "Action to set the large community attributes of the + route, along with options to modify how the community is + modified. Large communities may be set using an inline + list OR a reference to an existing defined set (but not + both)."; + leaf options { + type bgp-set-community-option-type; + description + "Options for modifying the community attribute with + the specified values. These options apply to both + methods of setting the community attribute."; + } + + choice method { + description + "Indicates the method used to specify the large + communities for the set-large-community action"; + case inline { + leaf-list communities { + type bct:bgp-large-community-type; + description + "Set the large community values for the update + inline with a list."; + } + } + case reference { + leaf large-community-set-ref { + type leafref { + path "/rt-pol:routing-policy/rt-pol:defined-sets/" + + "bgp-defined-sets/large-community-sets/" + + "large-community-set/name"; + } + description + "References a defined extended community set by + name."; + } + } + } + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/iana-bgp-notification@2024-10-21.yang b/experimental/ietf-extracted-YANG-modules/iana-bgp-notification@2026-03-02.yang similarity index 99% rename from experimental/ietf-extracted-YANG-modules/iana-bgp-notification@2024-10-21.yang rename to experimental/ietf-extracted-YANG-modules/iana-bgp-notification@2026-03-02.yang index ecb7a23fa..d4a422c23 100644 --- a/experimental/ietf-extracted-YANG-modules/iana-bgp-notification@2024-10-21.yang +++ b/experimental/ietf-extracted-YANG-modules/iana-bgp-notification@2026-03-02.yang @@ -3,8 +3,6 @@ module iana-bgp-notification { namespace "urn:ietf:params:xml:ns:yang:iana-bgp-notification"; prefix bn; - // meta - organization "IANA"; contact @@ -20,7 +18,7 @@ module iana-bgp-notification { Authors: Mahesh Jethanandani (mjethanandani at gmail.com), Keyur Patel (keyur at arrcus.com), Susan Hares (shares at ndzh.com), - Jeffrey Haas (jhaas at juniper.net)."; + Jeffrey Haas (jeffrey.haas at hpe.com)."; description "This YANG module is maintained by IANA and contains definitions @@ -49,7 +47,7 @@ module iana-bgp-notification { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2024-10-21 { + revision 2026-03-02 { description "Initial Version"; reference @@ -157,7 +155,6 @@ module iana-bgp-notification { (Unspecific) value is used for the Error Subcode field. The value of the 'Unspecific Error' subcode is 0. - From Section 6.2: If one of the Optional Parameters in the OPEN message is recognized, but is malformed, then the Error Subcode MUST be @@ -217,6 +214,7 @@ module iana-bgp-notification { it is the same as the BGP Identifier of the local BGP speaker and the message is from an internal peer, then the Error Subcode is set to 'Bad BGP Identifier'. + The value of the 'Bad BGP Identifier' Error subcode is 3."; reference "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 6.2. @@ -409,6 +407,7 @@ module iana-bgp-notification { attribute (type, length, and value). Syntactic correctness means that the NEXT_HOP attribute represents a valid IP host address. + The value of the 'Invalid NEXT_HOP Attribute' Error subcode is 8."; reference @@ -635,7 +634,6 @@ module iana-bgp-notification { "RFC 4486: Subcodes for BGP Cease Notification Message, Section 4."; } - identity cease-peer-deconfigured { base cease; description @@ -648,6 +646,7 @@ module iana-bgp-notification { "RFC 4486: Subcodes for BGP Cease Notification Message, Section 4."; } + identity cease-admin-reset { base cease; description @@ -744,11 +743,11 @@ module iana-bgp-notification { into the Down state, the BGP Speaker SHOULD send a NOTIFICATION message with the Error Code Cease and the Error Subcode 'BFD Down'. + The value of the 'BFD Down' Error subocde is 10."; reference - "draft-ietf-idr-bfd-subcode-05: A BGP Cease Notification - Subcode For Bidirectional Forwarding Detection (BFD), Section - 2."; + "RFC 9384: A BGP Cease Notification Subcode For Bidirectional + Forwarding Detection (BFD), Section 2."; } identity route-refresh-message-error { diff --git a/experimental/ietf-extracted-YANG-modules/iana-bgp-rib-types@2024-10-21.yang b/experimental/ietf-extracted-YANG-modules/iana-bgp-rib-types@2026-03-02.yang similarity index 98% rename from experimental/ietf-extracted-YANG-modules/iana-bgp-rib-types@2024-10-21.yang rename to experimental/ietf-extracted-YANG-modules/iana-bgp-rib-types@2026-03-02.yang index fe2686ac8..ba9f3b658 100644 --- a/experimental/ietf-extracted-YANG-modules/iana-bgp-rib-types@2024-10-21.yang +++ b/experimental/ietf-extracted-YANG-modules/iana-bgp-rib-types@2026-03-02.yang @@ -18,7 +18,7 @@ module iana-bgp-rib-types { Authors: Mahesh Jethanandani (mjethanandani at gmail.com), Keyur Patel (keyur at arrcus.com), Susan Hares (shares at ndzh.com), - Jeffrey Haas (jhaas at juniper.net)."; + Jeffrey Haas (jeffrey.haas at hpe.com)."; description "Defines identity and type definitions associated with @@ -44,7 +44,7 @@ module iana-bgp-rib-types { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2024-10-21 { + revision 2026-03-02 { description "Initial Version"; reference diff --git a/experimental/ietf-extracted-YANG-modules/iana-bgp-types@2024-10-21.yang b/experimental/ietf-extracted-YANG-modules/iana-bgp-types@2026-03-02.yang similarity index 89% rename from experimental/ietf-extracted-YANG-modules/iana-bgp-types@2024-10-21.yang rename to experimental/ietf-extracted-YANG-modules/iana-bgp-types@2026-03-02.yang index 9b31da14a..1d3946bc6 100644 --- a/experimental/ietf-extracted-YANG-modules/iana-bgp-types@2024-10-21.yang +++ b/experimental/ietf-extracted-YANG-modules/iana-bgp-types@2026-03-02.yang @@ -6,16 +6,14 @@ module iana-bgp-types { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Types."; + "RFC 9911: Common YANG Types."; } import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Types."; + "RFC 9911: Common YANG Types."; } - // meta - organization "IANA"; contact @@ -31,7 +29,7 @@ module iana-bgp-types { Authors: Mahesh Jethanandani (mjethanandani at gmail.com), Keyur Patel (keyur at arrcus.com), Susan Hares (shares at ndzh.com), - Jeffrey Haas (jhaas at juniper.net)."; + Jeffrey Haas (jeffrey.haas at hpe.com)."; description "This module contains general data definitions for use in BGP. @@ -39,6 +37,7 @@ module iana-bgp-types { 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 @@ -56,7 +55,7 @@ module iana-bgp-types { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2024-10-21 { + revision 2026-03-02 { description "Initial Version"; reference @@ -75,7 +74,6 @@ module iana-bgp-types { reference "RFC 7911: Advertisement of Multiple Paths in BGP."; } - feature bfd { description "Support for BFD detection of BGP neighbor reachability."; @@ -107,6 +105,13 @@ module iana-bgp-types { "Weighted route dampening is supported."; } + feature distance { + description + "BGP distance for implementations that expose routing table + preferences for route selection for internal and external + BGP."; + } + feature graceful-restart { description "Graceful restart as defined in RFC 4724 is supported."; @@ -155,48 +160,46 @@ module iana-bgp-types { /* BGP AS_PATH Segment Type Identities. */ - identity as-path-segment-type { - description - "Base AS Path Segment Type. In [BGP-4], the path segment type - is a 1-octet field with the following values defined."; - reference - "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 4.3."; - } - - identity as-set { - base as-path-segment-type; - description - "Unordered set of autonomous systems that a route in the UPDATE - message has traversed."; - reference - "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 4.3."; - } - - identity as-sequence { - base as-path-segment-type; - description - "Ordered set of autonomous systems that a route in the UPDATE - message has traversed."; - reference - "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 4.3."; - } + typedef as-path-segment-type { + type enumeration { + enum as-set { + value 1; + description + "Unordered set of autonomous systems that a route in the + UPDATE message has traversed."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), + Section 4.3."; } + enum as-sequence { + value 2; + description + "Ordered set of autonomous systems that a route in the + UPDATE message has traversed."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), + Section 4.3."; + } - identity as-confed-sequence { - base as-path-segment-type; - description - "Ordered set of Member Autonomous Systems in the local - confederation that the UPDATE message has traversed."; - reference - "RFC 5065: Autonomous System Configuration for BGP."; - } + enum as-confed-sequence { + value 3; + description + "Ordered set of Member Autonomous Systems in the local + confederation that the UPDATE message has traversed."; + reference + "RFC 5065: Autonomous System Configuration for BGP."; + } - identity as-confed-set { - base as-path-segment-type; + enum as-confed-set { + value 4; + description + "Unordered set of Member Autonomous Systems in the local + confederation that the UPDATE message has traversed."; + reference + "RFC 5065: Autonomous System Configuration for BGP."; + } + } description - "Unordered set of Member Autonomous Systems in the local - confederation that the UPDATE message has traversed."; - reference - "RFC 5065: Autonomous System Configuration for BGP."; + "BGP AS_PATH segment types."; } /* BGP Peer-Types */ @@ -238,7 +241,7 @@ module iana-bgp-types { identity mp-bgp { base bgp-capability; description - "Multi-protocol extensions to BGP"; + "Multi-protocol extensions to BGP."; reference "RFC 4760: Multiprotocol Extentions for BGP-4."; } @@ -279,6 +282,7 @@ module iana-bgp-types { reference "RFC 7911: Advertisement of Multiple Paths in BGP."; } + /* BGP AFI-SAFI Type Identities. */ identity afi-safi-type { @@ -327,6 +331,7 @@ module iana-bgp-types { reference "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)."; } + identity l3vpn-ipv4-multicast { base afi-safi-type; description diff --git a/experimental/ietf-extracted-YANG-modules/iana-igp-algo-types@2025-09-05.yang b/experimental/ietf-extracted-YANG-modules/iana-igp-algo-types@2026-03-30.yang similarity index 96% rename from experimental/ietf-extracted-YANG-modules/iana-igp-algo-types@2025-09-05.yang rename to experimental/ietf-extracted-YANG-modules/iana-igp-algo-types@2026-03-30.yang index 6c2f0e203..5a91e49ec 100644 --- a/experimental/ietf-extracted-YANG-modules/iana-igp-algo-types@2025-09-05.yang +++ b/experimental/ietf-extracted-YANG-modules/iana-igp-algo-types@2026-03-30.yang @@ -22,7 +22,7 @@ module iana-igp-algo-types { This YANG module is maintained by IANA and reflects the 'IGP Algorithm Types' registry. - 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 @@ -46,7 +46,7 @@ module iana-igp-algo-types { The latest version of this YANG module is available at https://www.iana.org/assignments/yang-parameters."; - revision 2025-09-05 { + revision 2026-03-30 { description "Initial Version"; reference diff --git a/experimental/ietf-extracted-YANG-modules/iana-igp-metric-types@2025-09-05.yang b/experimental/ietf-extracted-YANG-modules/iana-igp-metric-types@2026-03-30.yang similarity index 78% rename from experimental/ietf-extracted-YANG-modules/iana-igp-metric-types@2025-09-05.yang rename to experimental/ietf-extracted-YANG-modules/iana-igp-metric-types@2026-03-30.yang index a671cc800..47db438a0 100644 --- a/experimental/ietf-extracted-YANG-modules/iana-igp-metric-types@2025-09-05.yang +++ b/experimental/ietf-extracted-YANG-modules/iana-igp-metric-types@2026-03-30.yang @@ -22,7 +22,7 @@ module iana-igp-metric-types { This YANG module is maintained by IANA and reflects the 'IGP Metric-Type' registry. - 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 @@ -46,7 +46,7 @@ module iana-igp-metric-types { The latest version of this YANG module is available at https://www.iana.org/assignments/yang-parameters."; - revision 2025-09-05 { + revision 2026-03-30 { description "Initial Version"; reference @@ -71,20 +71,24 @@ module iana-igp-metric-types { identity min-unidirectional-link-delay { base metric-type; description - "Min Unidirectional Link Delay as defined in RFC8570 - Section 4.2 and RFC7471 Section 4.2."; + "Min Unidirectional Link Delay as defined in RFC 8570 + and Section 4.2 and RFC 7471 Section 4.2."; reference - "RFC9350: IGP Flexible Algorithm"; + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 9350: IGP Flexible Algorithm"; } identity te-default-metric { base metric-type; description - "Traffic Engineering Default Metric as defined in RFC5305 + "Traffic Engineering Default Metric as defined in RFC 5305 Section 3.7 and Traffic Engineering Metric as defined in RFC3630, Section 2.5.5."; reference - "RFC9350: IGP Flexible Algorithm"; + "RFC 3630: OSPF Traffic Engineering + RFC 5305: IS-IS Traffic Engineering + RFC 9350: IGP Flexible Algorithm"; } identity bandwidth-metric { @@ -92,6 +96,8 @@ module iana-igp-metric-types { description "Bandwidth metric."; reference - "draft-ietf-lsr-flex-algo-bw-con"; + "RFC 9843: IGP Flexible Algorithms: Bandwidth, Delay, + Metrics, and Constraints"; + } } diff --git a/experimental/ietf-extracted-YANG-modules/iana-ioam-integrity-protection-methods@2026-04-15.yang b/experimental/ietf-extracted-YANG-modules/iana-ioam-integrity-protection-methods@2026-04-15.yang new file mode 100644 index 000000000..8cc1f8706 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/iana-ioam-integrity-protection-methods@2026-04-15.yang @@ -0,0 +1,89 @@ +module iana-ioam-integrity-protection-methods { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:iana-ioam-integrity-protection-methods"; + prefix iana-ioam-ipm; + + organization + "Internet Assigned Numbers Authority (IANA)"; + + contact + "Internet Assigned Numbers Authority + + ICANN + 12025 Waterfront Drive, Suite 300 + Los Angeles, CA 90094 + + Tel: +1 310 301 5800 + + "; + + description + "This YANG module is maintained by IANA and reflects + the 'IOAM Integrity Protection Methods' registry. + + Copyright (c) 2026 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + All revisions of IETF and IANA published modules can be found + at the YANG Parameters registry group + (https://www.iana.org/assignments/yang-parameters). + + The initial version of this YANG module is part of RFC XXXX; + see the RFC itself for full legal notices. + + // RFC Ed.: replace the IANA_FOO_URL and remove this note + + The latest version of this YANG module is available at + ."; + + reference + "IOAM Integrity Protection Methods + (https://www.iana.org/assignments/ioam/ioam.xhtml)"; + + revision 2026-04-15 { + description + "Initial version."; + reference + "URL of the published initial version of the module + + // RFC Ed.: replace above with the URL of the module + // and remove this note + + RFC XXXX: A YANG Data Model for In Situ Operations, + Administration, and Maintenance (IOAM) + Integrity-Protected Options"; + } + + /* + * Type definitions + */ + + typedef method-id { + type enumeration { + enum method-0 { + value 0; + description + "AES-GMAC, 16-octet (full) Authentication Tag, + 12-octet Initialization Vector."; + reference + "RFC YYYY: Integrity Protection of In Situ Operations, + Administration, and Maintenance (IOAM) + Data Fields, Section 5"; + } + } + description + "Identifier for an IOAM Integrity Protection Method, + matching the 'IOAM Integrity Protection Methods' + IANA registry."; + reference + "https://www.iana.org/assignments/ioam/ioam.xhtml"; + } +} + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-ac-udp-tunnel@2025-09-18.yang b/experimental/ietf-extracted-YANG-modules/ietf-ac-udp-tunnel@2025-09-18.yang new file mode 100644 index 000000000..36451122d --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-ac-udp-tunnel@2025-09-18.yang @@ -0,0 +1,91 @@ +module ietf-ac-udp-tunnel { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-ac-udp-tunnel"; + prefix ac-udpt; + + import ietf-ac-common { + prefix ac-common; + reference + "RFC 9833: A Common YANG Data Model for Attachment Circuits"; + } + import ietf-ac-svc { + prefix ac-svc; + reference + "RFC 9834: YANG Data Models for Bearers and 'Attachment + Circuits'-as-a-Service (ACaaS)"; + } + import ietf-packet-fields { + prefix packet-fields; + reference + "RFC 8519: YANG Data Model for Network Access + Control Lists (ACLs), Section 4.2"; + } + + organization + "IETF DMM (Distributed Mobility Management)"; + contact + "WG Web: + WG List: + + Author: John Kaippallimalil + "; + description + "This YANG module defines a YANG model for augmenting + the ACaaS service model with UDP Encapsulation as + Layer 3 tunnel service. + + Copyright (c) 2025 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + All revisions of IETF and IANA published modules can be found + at the YANG Parameters registry group + (https://www.iana.org/assignments/yang-parameters). + + This version of this YANG module is part of RFC XXXX; see the + RFC itself for full legal notices."; + + revision 2025-09-18 { + description + "Initial revision."; + reference + "RFC XXXX: A YANG Data Model for Attachment Circuit + as a Service with UDP Tunnel Support"; + } + + identity udp { + base ac-common:l3-tunnel-type; + description + "UDP Encapsulation."; + reference + "RFC 8085: UDP Usage Guidelines, Section 3.1.11"; + } + + augment "/ac-svc:attachment-circuits/ac-svc:ac" + + "/ac-svc:ip-connection/ac-svc:l3-service" + + "/ac-svc:l3-tunnel-service/ac-svc:l3-tunnel-service" { + when "derived-from-or-self(./ac-svc:type, 'ac-udpt:udp')" { + description + "Only applicable if l3 service type is UDP encapsulation."; + } + description + "Augments Layer 3 AC service with required data nodes for + UDP encapsulation support."; + choice udp-port { + description + "Choice of specifying the source port number or referring + to a group of port numbers."; + container source-port-range-or-operator { + description + "Indicates a set of source ports numbers."; + uses packet-fields:port-range-or-operator; + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-altmark@2025-06-30.yang b/experimental/ietf-extracted-YANG-modules/ietf-altmark@2026-01-02.yang similarity index 98% rename from experimental/ietf-extracted-YANG-modules/ietf-altmark@2025-06-30.yang rename to experimental/ietf-extracted-YANG-modules/ietf-altmark@2026-01-02.yang index 099234c27..0d5ee43e5 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-altmark@2025-06-30.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-altmark@2026-01-02.yang @@ -39,7 +39,6 @@ module ietf-altmark { description "This YANG module specifies a vendor-independent data model for the Alternate Marking (AltMark). - 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 @@ -60,7 +59,7 @@ module ietf-altmark { (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself for full legal notices."; - revision 2025-06-30 { + revision 2026-01-02 { description "First revision."; reference "RFC XXXX: A YANG Data Model for Alternate-Marking"; } @@ -88,7 +87,6 @@ module ietf-altmark { "Base identity to represent a filter. A filter is used to specify the flow to which the AltMark method is applied."; } - identity acl-filter { base filter; description @@ -141,8 +139,8 @@ module ietf-altmark { description "The AltMark method is applied to MPLS."; reference - "[I-D.ietf-mpls-inband-pm-encapsulation]: Application of the - Alternate Marking Method to the MPLS Label Stack"; + "RFC 9714: Application of the Alternate Marking Method + to the MPLS Label Stack"; } identity node-action { @@ -372,6 +370,7 @@ module ietf-altmark { description "Type of timestamp, such as Truncated PTP or NTP."; } + list available-interface { key "if-name"; description diff --git a/experimental/ietf-extracted-YANG-modules/ietf-alto-stats@2023-02-23.yang b/experimental/ietf-extracted-YANG-modules/ietf-alto-stats@2026-02-04.yang similarity index 98% rename from experimental/ietf-extracted-YANG-modules/ietf-alto-stats@2023-02-23.yang rename to experimental/ietf-extracted-YANG-modules/ietf-alto-stats@2026-02-04.yang index 67b81ba3f..c68671896 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-alto-stats@2023-02-23.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-alto-stats@2026-02-04.yang @@ -6,10 +6,11 @@ module ietf-alto-stats { import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types, Section 3"; + "RFC 9911: Common YANG Data Types, Section 3"; } import ietf-alto { prefix alto; + revision-date 2026-02-04; reference "RFC XXXX: YANG Data Models for the Application-Layer Traffic Optimization (ALTO) Protocol"; @@ -24,7 +25,7 @@ module ietf-alto-stats { "This YANG module defines a set of statistics of an ALTO server instance. - Copyright (c) 2023 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 @@ -38,7 +39,7 @@ module ietf-alto-stats { (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself for full legal notices."; - revision 2023-02-23 { + revision 2026-02-04 { description "Initial Version."; reference diff --git a/experimental/ietf-extracted-YANG-modules/ietf-alto@2023-02-23.yang b/experimental/ietf-extracted-YANG-modules/ietf-alto@2026-02-04.yang similarity index 97% rename from experimental/ietf-extracted-YANG-modules/ietf-alto@2023-02-23.yang rename to experimental/ietf-extracted-YANG-modules/ietf-alto@2026-02-04.yang index 7a3fb9c17..48e64920b 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-alto@2023-02-23.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-alto@2026-02-04.yang @@ -6,22 +6,22 @@ module ietf-alto { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types, Section 4"; + "RFC 9911: Common YANG Data Types, Section 4"; } import ietf-truststore { prefix ts; reference - "RFC BBBB: A YANG Data Model for a Truststore"; + "RFC 9641: A YANG Data Model for a Truststore"; } import ietf-tcp-server { prefix tcp; reference - "RFC DDDD: YANG Groupings for TCP Clients and TCP Servers"; + "RFC 9643: YANG Groupings for TCP Clients and TCP Servers"; } import ietf-tls-server { prefix tls; reference - "RFC FFFF: YANG Groupings for TLS Clients and TLS Servers"; + "RFC 9645: YANG Groupings for TLS Clients and TLS Servers"; } import ietf-http-server { prefix http; @@ -38,7 +38,7 @@ module ietf-alto { "This YANG module defines a set of configured and operational parameters of an administrated ALTO server instance. - Copyright (c) 2023 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 @@ -52,7 +52,7 @@ module ietf-alto { (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself for full legal notices."; - revision 2023-02-23 { + revision 2026-02-04 { description "Initial Version."; reference @@ -606,7 +606,7 @@ module ietf-alto { + "/alto:name"; } description - "Type to reference a raw pubic key."; + "Type to reference a raw public key."; } typedef resource-ref { @@ -758,10 +758,10 @@ module ietf-alto { "A wrapper around the TCP server parameters to avoid name collisions."; uses tcp:tcp-server-grouping { - refine "local-port" { + refine "local-bind/local-port" { default "80"; description - "The RESTCONF server will listen on the IANA- + "The ALTO server will listen on the IANA- assigned well-known port value for 'http' (80) if no value is specified."; } @@ -776,7 +776,7 @@ module ietf-alto { container alto-server-parameters { description "A wrapper around the ALTO server parameters - to avoid name collisiions."; + to avoid name collisions."; uses alto-server; } } @@ -791,7 +791,7 @@ module ietf-alto { "A wrapper around the TCP server parameters to avoid name collisions."; uses tcp:tcp-server-grouping { - refine "local-port" { + refine "local-bind/local-port" { default "443"; description "The ALTO server will listen on the IANA- @@ -826,7 +826,7 @@ module ietf-alto { grouping alto-server-discovery { description "Grouping for the configuration of how to set up server - discovery for clients or other ALTO servers to discovery the + discovery for clients or other ALTO servers to discover the URI of this ALTO server."; choice method { description @@ -933,7 +933,7 @@ module ietf-alto { case central-truststore { if-feature "ts:central-truststore-supported"; if-feature "ts:certificates"; - uses ts:certificate-ref-grouping; + uses ts:central-certificate-ref-grouping; description "Reference of a CA certificate in the truststore to authenticate the TLS client."; @@ -963,7 +963,7 @@ module ietf-alto { case central-truststore { if-feature "ts:central-truststore-supported"; if-feature "ts:certificates"; - uses ts:certificate-ref-grouping; + uses ts:central-certificate-ref-grouping; description "Reference of a EE certificate in the truststore to authenticate the TLS client."; @@ -993,7 +993,7 @@ module ietf-alto { case central-truststore { if-feature "ts:central-truststore-supported"; if-feature "ts:public-keys"; - uses ts:public-key-ref-grouping; + uses ts:central-public-key-ref-grouping; description "Reference of a raw public key in the truststore to authenticate the TLS client."; @@ -1076,7 +1076,7 @@ module ietf-alto { leaf description { type string; description - "A human-readable description fo the 'cost-mode' and + "A human-readable description for the 'cost-mode' and 'cost-metric'."; } container cost-context { @@ -1174,7 +1174,7 @@ module ietf-alto { container tls-auth-client { if-feature "tls:client-auth-supported"; description - "Parameters to identify na authenticated TLS + "Parameters to identify an authenticated TLS client."; container ca-cert { if-feature "tls:client-auth-x509-cert"; @@ -1201,7 +1201,7 @@ module ietf-alto { if-feature "tls:client-auth-tls12-psk"; type empty; description - "Identicate that the client is authenticated by + "Indicates that the client is authenticated by the TLS server using the configured PSKs (pre-shared or pairwise-symmetric keys)."; } @@ -1209,7 +1209,7 @@ module ietf-alto { if-feature "tls:client-auth-tls13-epsk"; type empty; description - "Identicate that the client is authenticated by + "Indicates that the client is authenticated by the TLS 1.3 server using the configured external PSKs (pre-shared keys)."; } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-amt@2022-11-17.yang b/experimental/ietf-extracted-YANG-modules/ietf-amt@2026-03-10.yang similarity index 53% rename from experimental/ietf-extracted-YANG-modules/ietf-amt@2022-11-17.yang rename to experimental/ietf-extracted-YANG-modules/ietf-amt@2026-03-10.yang index e9d391f06..a8f815430 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-amt@2022-11-17.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-amt@2026-03-10.yang @@ -6,13 +6,13 @@ module ietf-amt { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types, Section 4"; } import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types, Section 3"; } import ietf-routing-types { @@ -33,12 +33,13 @@ module ietf-amt { "RFC 8349: A YANG Data Model for Routing Management (NMDA Version)"; } + organization "IETF Multicast Backbone Deployment (MBONED) Working Group"; contact "WG Web: - WG List: + WG List: MBONED Editor: Yisong Liu @@ -52,13 +53,16 @@ module ietf-amt { "; description - "This module describes a YANG model for configuring and - managing the AMT Protocol. + "This module describes a YANG data model for managing the + Automatic Multicast Tunneling (AMT) protocol. - This YANG model conforms to the Network Management - Datastore Architecture (NMDA) as described in RFC 8342. + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. - Copyright (c) 2022 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 @@ -73,36 +77,28 @@ module ietf-amt { (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. + RFC itself for full legal notices."; - 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."; - revision 2022-11-17 { + revision 2026-03-10 { description "Initial Version"; reference - "RFC XXXX: YANG Data Model for Automatic Multicast Tunneling"; - } - - identity address-family { - description - "Base identity from which identities describing address - families are derived."; + "RFC XXXX: A YANG Data Model for Automatic Multicast + Tunneling (AMT)"; } - identity ipv4 { - base address-family; + feature amt-gateway { description - "This identity represents an IPv4 address family."; + "Indicates support of AMT Gateway functionality."; + reference + "RFC 7450: Automatic Multicast Tunneling, Section 4.1.2"; } - identity ipv6 { - base address-family; + feature amt-relay { description - "This identity represents an IPv6 address family."; + "Indicates support of AMT Relay functionality."; + reference + "RFC 7450: Automatic Multicast Tunneling, Section 4.1.3"; } typedef ip-multicast-source-address { @@ -113,99 +109,318 @@ module ietf-amt { description "This type represents a version-neutral IP multicast source address. The format of the textual representation implies - the IP version."; + the IP address family."; + } + + identity tunnel-state-base { + description + "Base identity for AMT tunnel states."; + } + + identity up { + base tunnel-state-base; + description + "The AMT tunnel has been successfully established."; + } + + identity establishing { + base tunnel-state-base; + description + "The AMT tunnel is being established."; + } + + identity initial { + base tunnel-state-base; + description + "Initial AMT tunnel state."; + } + + identity discovering { + base tunnel-state-base; + description + "The Relay Discovery message has been sent + and is waiting for the Advertisement message."; + } + + identity requesting { + base tunnel-state-base; + description + "The Request message has been sent, waiting for the Query + message."; + } + + identity discovery-method-base { + description + "Base identity for all methods used to discover an + AMT Relay Address. + + New discovery methods should be defined by creating + new identities derived from this base identity."; + } + + identity by-amt-solicit { + base discovery-method-base; + description + "Find the Relay Address by sending an AMT Discovery message. + + This method involves sending an AMT Discovery message to + discover available Relays in the network."; + reference + "RFC 7450: Automatic Multicast Tunneling, Section 5.1.1"; + } + + identity by-dns-reverse-ip { + base discovery-method-base; + description + "Find the Relay Address by DNS reverse IP AMT Discovery. + + This method uses DNS reverse IP lookup to discover AMT + Relays based on the client's IP address."; + reference + "RFC 8777: DNS Reverse IP Automatic Multicast Tunneling (AMT) + Discovery"; } augment "/rt:routing/rt:control-plane-protocols" { description "AMT augmentation to the routing instance model."; container amt { + presence "Enables AMT"; description - "Configuration parameters for the AMT protocol."; + "Management parameters for the AMT protocol."; container relay { + if-feature "amt-relay"; description - "Parameters of AMT relay service."; - container relay-addresses { + "Parameters of the AMT Relay service."; + container addresses { description - "Parameters of AMT relay addresses."; - list relay-address { + "Parameters of AMT Relay Addresses."; + list address { key "family"; description - "Each entry contains parameters for an AMT relay - address identified by the 'family' key."; + "Each entry contains parameters for an AMT Relay + Address identified by the 'family' key. Under + normal operation, these addresses SHOULD belong + to the same address family indicated by 'family'. + Any mismatch is an indication of abnormal + configuration and is therefore allowed to be + reported. + + The 'anycast-prefix' serve as the discovery entry + for AMT Relays, while unicast IP addresses + 'local-address' are the actual communication entities + of AMT Relays. The AMT Gateway first locates the AMT + Relay via the 'anycast-prefix' and then uses its + 'local-address' to complete all subsequent AMT + interactions."; leaf family { type identityref { - base address-family; + base rt:address-family; } - mandatory true; description - "Address family."; + "Indicates the address family for the entry."; } leaf anycast-prefix { type inet:ip-prefix; description - "The anycast IP prefix of AMT relay discovery - address which is used when sending discovery - messages to a relay."; + "An anycast IP prefix of the AMT Relay Discovery + Address which is used when sending discovery + messages to a Relay. + + If 'family' is IPv4, it SHOULD be an IPv4 prefix; + If 'family' is IPv6, it SHOULD be an IPv6 prefix. + + Any mismatch is an indication of abnormal + configuration and is therefore allowed to be + reported."; } leaf local-address { type inet:ip-address; description - "The unicast IP address of AMT relay address - which is obtained as a result of the discovery - process."; + "A unicast IP address of the AMT Relay Address + that is statically configured on the Relay device. + This address is used by the AMT Gateway to establish + tunnels. + + If 'family' is IPv4, it SHOULD be an IPv4 address; + If 'family' is IPv6, it SHOULD be an IPv6 address. + + Any mismatch is an indication of abnormal + configuration and is therefore allowed to be + reported."; } } } leaf tunnel-limit { type uint32; description - "The total number of endpoints"; + "The maximum number of endpoint Gateways that a Relay can + serve simultaneously."; } - leaf secret-key-timeout { + leaf secret-key-rotation-interval { type uint32; + units "minutes"; description - "The timeout interval of secret key."; + "Specifies the interval period for computing a new + private secret. This maximum RECOMMENDED interval + is 120 minutes."; + reference + "RFC 7450: Automatic Multicast Tunneling, + Section 5.3.6"; + } + container relay-dns-resource-records { + description + "The DNS Resource Records (RRs) of the AMT Relay."; + list record { + key "source-address"; + description + "Specifies an RR entry."; + leaf source-address { + type inet:ip-address; + description + "The unicast IP address of multicast sender."; + } + leaf precedence { + type uint32; + description + "The precedence value of this record, used + for Relay selection priority. + + Lower values indicate higher priority. + Relays listed in AMT Relay records with + a lower value for precedence are to be + attempted first."; + reference + "RFC 8777: DNS Reverse IP Automatic Multicast + Tunneling (AMT) Discovery, + Section 4.2.1"; + } + leaf d-bit { + type boolean; + default false; + description + "If the D-bit is set to true, the Gateway MAY + send an AMT Request message directly to the + discovered Relay Address without first + sending an AMT Discovery message. + + If the D-bit is set to false, the Gateway MUST + receive an AMT Relay advertisement message + for an address before sending an AMT + Request message to that address."; + reference + "RFC 8777: DNS Reverse IP Automatic Multicast + Tunneling (AMT) Discovery, + Section 4.2.2"; + } + leaf relay-type { + type enumeration { + enum empty { + value 0; + description + "The relay field is empty."; + } + enum ipv4-address { + value 1; + description + "The relay field contains a 4-octet IPv4 + address."; + } + enum ipv6-address { + value 2; + description + "The relay field contains a 16-octet IPv6 + address."; + } + enum domain-name { + value 3; + description + "The relay field contains a wire-encoded + domain name."; + } + } + description + "Indicates the type of Relay in the AMT Relay RR. + + Value 0 indicates that no AMT Relay should be + used for multicast traffic from this source. + + Values 1 and 2 indicate that the IP address is + used to describe the AMT Relay. + + Value 3 indicates that the domain name is + used to describe the AMT Relay."; + reference + "RFC 8777: DNS Reverse IP Automatic Multicast + Tunneling (AMT) Discovery, + Section 4.2.3"; + } + leaf discovery-address { + type inet:ip-address; + must "(../relay-type = 'ipv4-address' or " + + "../relay-type = 'ipv6-address')" { + error-message + "The 'discovery-address' can only be configured + when the 'relay-type' is ipv4-address or + ipv6-address."; + } + description + "The IP address of AMT Relay Discovery Address. + + When the 'relay-type' value is 1 or 2, this + data node is used to indicate the AMT Relay of + the AMT Relay RR."; + } + leaf domain-name { + type inet:domain-name; + must "../relay-type = 'domain-name'" { + error-message + "The 'domain-name' can only be configured when + the 'relay-type' is domain-name."; + } + description + "The wire-encoded domain name of the AMT Relay. + + When the 'relay-type' value is 3, this data node + is used to indicate the AMT Relay of the AMT + Relay RR."; + } + } } container tunnels { config false; description - "The AMT tunnel information on the relay."; + "AMT tunnel session information, which contains + session parameters, state, and statistics for + all AMT tunnels established between Gateways + and this Relay."; list tunnel { key "gateway-address gateway-port"; description - "An entry of AMT tunnel."; + "Records a tunnel entry."; leaf gateway-address { type inet:ip-address; description - "The IP address of AMT gateway."; + "The IP address of an AMT Gateway."; } leaf gateway-port { type inet:port-number; description - "The UDP port of AMT gateway."; + "The UDP port number of an AMT Gateway."; } leaf local-address { type inet:ip-address; description - "The local IP address of AMT relay."; + "The local IP address of the AMT Relay."; } leaf local-port { type inet:port-number; description - "The local UDP port of AMT relay."; + "The local UDP port number of the AMT Relay."; } leaf state { - type enumeration { - enum up { - description - "The AMT tunnel has been successfully - established."; - } - enum establishing { - description - "The AMT tunnel is being established."; - } + type identityref { + base tunnel-state-base; } description "The state of AMT tunnel."; @@ -213,20 +428,30 @@ module ietf-amt { container multicast-flows { config false; description - "The multicast flow information in the AMT tunnel."; - list multicast-flow { + "The multicast flow information in the AMT tunnel. + + Contains operational data for all multicast + flows being forwarded through AMT tunnels between + this Relay and connected Gateways."; + list flow { key "source-address group-address"; description - "An entry of multicast flow."; + "Records the characteristics of a multicast flow."; leaf source-address { type ip-multicast-source-address; description - "The source IP address of multicast flow."; + "The source IP address of a multicast flow. + + It MUST belong to the same address family as + group-address."; } leaf group-address { type rt-types:ip-multicast-group-address; description - "The group address of multicast flow."; + "The group IP address of a multicast flow. + + It MUST belong to the same address family as + source-address."; } } } @@ -238,142 +463,83 @@ module ietf-amt { leaf request-message-count { type yang:zero-based-counter64; description - "Number of AMT request messages received + "Number of AMT Request messages received in the tunnel."; } leaf membership-query-message-count { type yang:zero-based-counter64; description - "Number of AMT membership query messages sent + "Number of AMT membership Query messages sent in the tunnel."; } leaf membership-update-message-count { type yang:zero-based-counter64; description - "Number of AMT membership update messages received + "Number of AMT membership Update messages received in the tunnel."; } - } - } - container relay-dns-resource-records { - description - "The DNS resource records of AMT relay."; - list relay-dns-resource-record { - key "source-address"; - description - "An entry of AMT relay resource record."; - leaf source-address { - type inet:ip-address; - description - "The IP address of multicast sender."; - } - leaf precedence { - type uint32; - description - "The precedence of this record."; - } - leaf d-flag { - type boolean; - default false; - description - "If the D-bit is set to true, the gateway MAY - send an AMT Request message directly to the - discovered relay address without first - sending an AMT Discovery message. - If the D-bit is set to false, the gateway MUST - receive an AMT relay advertisement message - for an address before sending an AMT - Request message to that address."; - } - leaf relay-type { - type enumeration { - enum empty { - value 0; - description - "The relay field is empty."; - } - enum ipv4-address { - value 1; - description - "The relay field contains a 4-octet IPv4 - address."; - } - enum ipv6-address { - value 2; - description - "The relay field contains a 16-octet IPv6 - address."; - } - enum domain-name { - value 3; - description - "The relay field contains a wire-encoded - domain name."; - } - } - description - "The type of Relay address."; - } - leaf discovery-address { - type inet:ip-address; - description - "The IP address of AMT relay discovery address."; - } - leaf domain-name { - type inet:domain-name; + leaf discontinuity-time { + type yang:date-and-time; description - "The wire-encoded domain name of AMT relay."; + "The time on the most recent occasion at which any + one or more of this AMT tunnel's counters suffered + a discontinuity. + + If no such discontinuities have occurred since the + last re-initialization of the AMT tunnel, then this + node contains the time when the AMT tunnel was last + initialized or the tunnel was established."; } } } container relay-message-statistics { config false; description - "Message statistics of AMT relay."; + "Message statistics of an AMT Relay."; container received { description - "Received message statistics of AMT relay."; + "Received message statistics of AMT Relay."; leaf relay-discovery { type yang:zero-based-counter64; description - "Number of AMT relay discovery messages + "Number of AMT Relay Discovery messages received."; } leaf request { type yang:zero-based-counter64; description - "Number of AMT membership request messages + "Number of AMT membership Request messages received."; } leaf membership-update { type yang:zero-based-counter64; description - "Number of AMT membership update messages + "Number of AMT membership Update messages received."; } leaf teardown { type yang:zero-based-counter64; description - "Number of AMT teardown messages received."; + "Number of AMT Teardown messages received."; } } container sent { description - "Sent message statistics of AMT relay."; + "Sent message statistics of AMT Relay."; leaf relay-advertisement { type yang:zero-based-counter64; description - "Number of AMT relay advertisement messages sent."; + "Number of AMT Relay advertisement messages sent."; } leaf membership-query { type yang:zero-based-counter64; description - "Number of AMT membership query messages sent."; + "Number of AMT membership Query messages sent."; } } container error { description - "Error message statistics of AMT relay."; + "Error message statistics of AMT Relay."; leaf incomplete-packet { type yang:zero-based-counter64; description @@ -385,7 +551,7 @@ module ietf-amt { type yang:zero-based-counter64; description "Number of messages received with an invalid - message authentication code (MAC)."; + Message Authentication Code (MAC)."; } leaf unexpected-type { type yang:zero-based-counter64; @@ -396,7 +562,7 @@ module ietf-amt { leaf invalid-relay-discovery-address { type yang:zero-based-counter64; description - "Number of AMT relay discovery messages + "Number of AMT Relay Discovery messages received with an address other than the configured anycast address."; } @@ -417,7 +583,7 @@ module ietf-amt { leaf incomplete-relay-discovery-messages { type yang:zero-based-counter64; description - "Number of AMT relay discovery messages + "Number of AMT Relay Discovery messages received that are not fully formed."; } leaf incomplete-membership-request-messages { @@ -437,7 +603,7 @@ module ietf-amt { description "Number of AMT membership update messages received for a tunnel that does not exist - for the gateway that sent the message."; + for the Gateway that sent the message."; } leaf invalid-inner-header-checksum { type yang:zero-based-counter64; @@ -446,41 +612,45 @@ module ietf-amt { received with an invalid IP checksum."; } leaf gateways-timed-out { - type yang:gauge64; + type yang:zero-based-counter64; description - "Number of gateways that timed out because + "Number of Gateways that timed out because of inactivity."; } } + leaf discontinuity-time { + type yang:date-and-time; + description + "The time on the most recent occasion at which any + one or more of this AMT tunnel's message counters + suffered a discontinuity. + + If no such discontinuities have occurred since the + last re-initialization of the AMT tunnel, then this + node contains the time when the AMT tunnel was last + initialized or the tunnel was established."; + } } } // relay container gateway { + if-feature "amt-gateway"; description - "Parameters of AMT gateway service."; + "Parameters of AMT Gateway service."; container pseudo-interfaces { description "Parameters of AMT pseudo-interface."; - list pseudo-interface { - key "interface"; + list interface { + key "name"; description "An entry of AMT pseudo-interface."; - leaf interface { + leaf name { type if:interface-ref; description - "Pseudo interface."; + "Indicates the name of a pseudo interface."; } leaf discovery-method { - type enumeration { - enum by-amt-solicit { - description - "Find the relay address by sending an AMT - Discovery message."; - } - enum by-dns-reverse-ip { - description - "Find the relay address by DNS reverse IP - AMT Discovery."; - } + type identityref { + base discovery-method-base; } description "The method used to discover the relay address."; @@ -488,20 +658,39 @@ module ietf-amt { leaf relay-discovery-address { type inet:ip-address; description - "IP address of the AMT relay discovery address."; + "Specifies the AMT Relay Discovery Address."; } leaf relay-address { type inet:ip-address; description - "IP address of the AMT relay address."; + "Specifies the IP address of the AMT Relay."; + } + leaf relay-port { + type inet:port-number; + description + "The UDP port number of the AMT Relay."; + } + leaf local-address { + type inet:ip-address; + config false; + description + "The local IP address of this AMT tunnel."; + } + leaf local-port { + type inet:port-number; + config false; + description + "The local UDP port number of this AMT tunnel."; } leaf upstream-interface { type if:interface-ref; description - "Upstream interface."; + "Indicates the upstream interface to reach the AMT + Relay."; } leaf discovery-timeout { type uint32; + units "seconds"; description "Initial time to wait for a response to a Relay Discovery message."; @@ -510,11 +699,12 @@ module ietf-amt { type uint32; description "Maximum number of Relay Discovery retransmissions - to allow before terminating relay discovery + to allow before terminating Relay Discovery and reporting an error."; } leaf request-timeout { type uint32; + units "seconds"; description "Initial time to wait for a response to a Request message"; @@ -523,54 +713,20 @@ module ietf-amt { type uint32; description "Maximum number of Request retransmissions - to allow before abandoning a relay and restarting - relay discovery or reporting an error."; + to allow before abandoning a Relay and restarting + Relay Discovery or reporting an error."; } leaf dest-unreach-retry-count { type uint32; description - "The maximum number of times a gateway should + "The maximum number of times a Gateway should attempt to send the same Request or Membership Update message after receiving an ICMP Destination Unreachable message."; } - leaf relay-port { - type inet:port-number; - description - "The UDP port of AMT relay."; - } - leaf local-address { - type inet:ip-address; - config false; - description - "The local IP address of this AMT tunnel."; - } - leaf local-port { - type inet:port-number; - config false; - description - "The local UDP port of this AMT tunnel."; - } leaf tunnel-state { - type enumeration { - enum initial { - description - "Initial state."; - } - enum discoverying { - description - "The Relay Discovery message has been sent - and is waiting for the Advertisement message."; - } - enum requesting { - description - "The Request message has been sent, - waiting for the Query message."; - } - enum up { - description - "The AMT tunnel is Established."; - } + type identityref { + base tunnel-state-base; } config false; description @@ -580,14 +736,14 @@ module ietf-amt { type yang:zero-based-counter64; config false; description - "Number of AMT relay discovery messages sent + "Number of AMT Relay Discovery messages sent on the interface."; } leaf relay-advertisement-message-count { type yang:zero-based-counter64; config false; description - "Number of AMT relay advertisement messages received + "Number of AMT Relay advertisement messages received on the interface."; } leaf request-message-count { @@ -611,19 +767,44 @@ module ietf-amt { "Number of AMT membership update messages sent on the interface."; } + leaf discontinuity-time { + type yang:date-and-time; + config false; + description + "The time on the most recent occasion at which any + one or more of this interface's counters suffered + a discontinuity. + + If no such discontinuities have occurred since the + last re-initialization of the AMT tunnel based on + this interface, then this node contains the time + when the AMT tunnel was last initialized or the + tunnel was established."; + } } } container gateway-message-statistics { config false; description - "Message statistics of AMT Gateway."; + "Message statistics of the AMT Gateway."; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time on the most recent occasion at which the AMT + Gateway message counters suffered a discontinuity. + + If no such discontinuities have occurred since the + last re-initialization of the Gateway, then this + data node contains the time when the Gateway was last + initialized."; + } container received { description - "Received message statistics of AMT Gateway."; + "Received message statistics of the AMT Gateway."; leaf relay-advertisement { type yang:zero-based-counter64; description - "Number of AMT relay advertisement messages + "Number of AMT Relay advertisement messages received."; } leaf membership-query { @@ -635,11 +816,11 @@ module ietf-amt { } container sent { description - "Sent message statistics of AMT Gateway."; + "Sent message statistics of the AMT Gateway."; leaf relay-discovery { type yang:zero-based-counter64; description - "Number of AMT relay discovery messages sent."; + "Number of AMT Relay Discovery messages sent."; } leaf request { type yang:zero-based-counter64; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-arp-extension@2026-04-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-arp-extension@2026-04-07.yang new file mode 100644 index 000000000..ec750c012 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-arp-extension@2026-04-07.yang @@ -0,0 +1,226 @@ +module ietf-arp-extension { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-arp-extension"; + prefix arp-ext; + + import ietf-yang-types { + prefix yang; + reference + "RFC 9911: Common YANG Data Types"; + } + import ietf-interfaces { + prefix if; + reference + "RFC 8343: A Yang Data Model for Interface Management"; + } + import ietf-ip { + prefix ip; + reference + "RFC 8344: A Yang Data Model for IP Management"; + } + + organization + "IETF Internet Area Working Group (intarea)"; + contact + "WG Web: + WG List: + + Author: Feng Zheng + + Editor: Bo Wu + + Editor: Robert Wilton + + Editor: Fan Zhang + + Author: Yongqing Zhu + + Author: Xiaojian Ding + "; + description + "This YANG module extends Address Resolution Protocol (ARP) + configuration and management defined in the ietf-ip, which + includes dynamic ARP learning, proxy ARP, gratuitous ARP, + and packet statistics collection. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see the + RFC itself for full legal notices."; + + revision 2026-04-07 { + description + "Initial version."; + reference + "RFC XXXX: A YANG Data Model for ARP Extensions"; + } + + /* Data nodes */ + + augment "/if:interfaces/if:interface/ip:ipv4" { + description + "Augment interfaces with ARP configuration and state."; + container arp { + description + "Address Resolution Protocol (ARP) related configuration + and state"; + leaf expiry-time { + type uint32 { + range "30..86400"; + } + units "seconds"; + description + "Aging time of a received dynamic ARP entry before it is + removed from the cache."; + } + leaf dynamic-learning { + type boolean; + default "true"; + description + "Controls whether dynamic ARP learning is enabled on the + interface. + + true - dynamic learning is enabled + false - dynamic learning is disabled"; + } + container proxy-arp { + description + "Configuration parameters for proxy ARP"; + leaf mode { + type enumeration { + enum disabled { + description + "The system only responds to ARP requests that + specify a target address configured on the local + interface."; + } + enum remote-only { + description + "The system only responds to ARP requests when the + sender and target IP addresses are in different + subnets."; + } + enum all { + description + "The system responds to ARP requests where the sender + and target IP addresses are in different subnets, as + well as those where they are in the same subnet."; + } + } + default "disabled"; + description + "When set to a value other than 'disabled', the local + system should respond to ARP requests that are for + target addresses other than those that are configured on + the local subinterface using its own MAC address as the + target hardware address. If the 'remote-only' value is + specified, replies are only sent when the target address + falls outside the locally configured subnets on the + interface, whereas with the 'all' value, all requests, + regardless of their target address are replied to."; + reference + "RFC1027: Using ARP to Implement Transparent Subnet + Gateways"; + } + } + container gratuitous-arp { + description + "Configure gratuitous ARP."; + reference + "RFC5227: IPv4 Address Conflict Detection"; + leaf enabled { + type boolean; + description + "Enable or disable sending gratuitous ARP packet on the + interface. + + The default behaviour is device specific, and a + deviation could be used to specify a device specific + default."; + } + leaf interval { + type uint32 { + range "1..86400"; + } + units "seconds"; + description + "The interval, in seconds, between sending gratuitous ARP + packets on the interface. + + The default behaviour is device specific, and a + deviation could be used to specify a device specific + default."; + } + } + container statistics { + config false; + description + "ARP per-interface packet statistics + + For all ARP interface counters, discontinuities in the + value can occur at re-initialization of the management + system and at other times as indicated by the value of + '../../statistics/discontinuity-time' in the + ietf-interfaces YANG module."; + leaf in-requests-pkts { + type yang:counter64; + description + "The number of ARP request packets received on this + interface."; + } + leaf in-replies-pkts { + type yang:counter64; + description + "The number of ARP reply packets received on this + interface."; + } + leaf in-gratuitous-pkts { + type yang:counter64; + description + "The number of gratuitous ARP packets received on this + interface."; + } + leaf out-requests-pkts { + type yang:counter64; + description + "The number of ARP request packets sent on this + interface."; + } + leaf out-replies-pkts { + type yang:counter64; + description + "The number of ARP reply packets sent on this + interface."; + } + leaf out-gratuitous-pkts { + type yang:counter64; + description + "The number of gratuitous ARP packets sent on this + interface."; + } + } + } + } + + augment "/if:interfaces/if:interface/ip:ipv4/ip:neighbor" { + description + "Augment IPv4 neighbor list with ARP expiry time."; + leaf remaining-expiry-time { + type uint32; + units "seconds"; + config false; + description + "The number of seconds until the dynamic ARP entry expires + and is removed from the ARP cache."; + } + } +} + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bfd-met-keyed-isaac@2025-09-04.yang b/experimental/ietf-extracted-YANG-modules/ietf-bfd-met-keyed-isaac@2025-10-16.yang similarity index 98% rename from experimental/ietf-extracted-YANG-modules/ietf-bfd-met-keyed-isaac@2025-09-04.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bfd-met-keyed-isaac@2025-10-16.yang index a80f6e960..faf402d93 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bfd-met-keyed-isaac@2025-09-04.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bfd-met-keyed-isaac@2025-10-16.yang @@ -41,7 +41,7 @@ module ietf-bfd-met-keyed-isaac { (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself for full legal notices."; - revision "2025-09-04" { + revision "2025-10-16" { description "Initial Version."; reference diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bfd-opt-auth@2025-09-10.yang b/experimental/ietf-extracted-YANG-modules/ietf-bfd-opt-auth@2025-11-12.yang similarity index 93% rename from experimental/ietf-extracted-YANG-modules/ietf-bfd-opt-auth@2025-09-10.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bfd-opt-auth@2025-11-12.yang index c616f88b3..4b3d991ba 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bfd-opt-auth@2025-09-10.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bfd-opt-auth@2025-11-12.yang @@ -45,12 +45,6 @@ module ietf-bfd-opt-auth { Forwarding Detection (BFD)."; } - import ietf-key-chain { - prefix key-chain; - reference - "RFC 8177: YANG Data Model for Key Chains."; - } - organization "IETF BFD Working Group"; @@ -88,7 +82,8 @@ module ietf-bfd-opt-auth { '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."; - revision "2025-09-10" { + + revision "2025-11-12" { description "Initial Version."; reference @@ -111,11 +106,13 @@ module ietf-bfd-opt-auth { units "seconds"; default "60"; description - "Interval of time after which strong authentication - should be utilized to prevent an on-path-attacker attack. + "Interval of time after which more computationally intensive + authentication should be utilized to prevent an + on-path-attacker attack. A value of zero means that we do not do periodic - reauthentication using the strong authentication method. + reauthentication using the more computationally intensive + authentication method. This value SHOULD have jitter applied to it to avoid self-synchronization during expensive authentication diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bfd-stability@2025-06-11.yang b/experimental/ietf-extracted-YANG-modules/ietf-bfd-stability@2025-10-30.yang similarity index 96% rename from experimental/ietf-extracted-YANG-modules/ietf-bfd-stability@2025-06-11.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bfd-stability@2025-10-30.yang index 01054d3ac..114221428 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bfd-stability@2025-06-11.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bfd-stability@2025-10-30.yang @@ -1,7 +1,7 @@ module ietf-bfd-stability { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-stability"; - prefix "bfds"; + prefix "bfd-s"; import ietf-yang-types { prefix "yang"; @@ -72,8 +72,9 @@ module ietf-bfd-stability { description "This YANG module augments the base BFD YANG model to add - attributes related to BFD Stability. In particular, it adds a - a per-session count for BFD packets that are lost. + experimental attributes related to BFD Stability. + In particular, it adds a per-session count for BFD packets + that are lost. Copyright (c) 2025 IETF Trust and the persons identified as authors of the code. All rights reserved. @@ -95,7 +96,7 @@ module ietf-bfd-stability { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision "2025-06-11" { + revision "2025-10-30" { description "Initial Version."; reference @@ -104,8 +105,8 @@ module ietf-bfd-stability { feature stability { description - "If supported, the feature allows for BFD sessions to be - monitored for packets lost."; + "This feature enables BFD sessions to be monitored for lost + packets."; } identity null-auth { diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-capabilities@2024-10-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-capabilities@2026-03-02.yang similarity index 97% rename from experimental/ietf-extracted-YANG-modules/ietf-bgp-capabilities@2024-10-21.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bgp-capabilities@2026-03-02.yang index 1326e63d6..e4fb1f416 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bgp-capabilities@2024-10-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-capabilities@2026-03-02.yang @@ -18,7 +18,7 @@ submodule ietf-bgp-capabilities { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types."; + "RFC 9911: Common YANG Data Types."; } organization @@ -29,11 +29,11 @@ submodule ietf-bgp-capabilities { Authors: Mahesh Jethanandani (mjethanandani at gmail.com), Keyur Patel (keyur at arrcus.com), - Susan Hares (shares at ndzh.com, - Jeffrey Haas (jhaas at juniper.net)."; + Susan Hares (shares at ndzh.com), + Jeffrey Haas (jeffrey.haas at hpe.com)."; description - "This sub-module contains groupings that used for BGP + "This sub-module contains groupings that are used for BGP Capabilities within the BGP module. Copyright (c) 2023 IETF Trust and the persons identified as @@ -56,7 +56,7 @@ submodule ietf-bgp-capabilities { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2024-10-21 { + revision 2026-03-02 { description "Initial Version"; reference @@ -115,6 +115,7 @@ submodule ietf-bgp-capabilities { "Multi-Protocol BGP-specific values."; reference "RFC 4760: Multiprotocol Extensions for BGP-4, Section 8."; + leaf afi { type iana-rt-types:address-family; description @@ -145,7 +146,8 @@ submodule ietf-bgp-capabilities { } container graceful-restart { - when "derived-from-or-self(../../name, 'bt:graceful-restart')"; + when "derived-from-or-self(../../name, " + + "'bt:graceful-restart')"; description "BGP Graceful Restart-specific values."; reference diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-common-errors@2026-03-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-common-errors@2026-03-02.yang new file mode 100644 index 000000000..122457f4e --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-common-errors@2026-03-02.yang @@ -0,0 +1,180 @@ +submodule ietf-bgp-common-errors { + yang-version 1.1; + belongs-to ietf-bgp { + prefix bgp; + } + + import iana-bgp-notification { + prefix bn; + reference + "RFC XXXX: YANG Model for Border Gateway Protocol (BGP-4)."; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 9911: Common YANG Data Types."; + } + + organization + "IETF IDR Working Group"; + contact + "WG Web: + WG List: + + Authors: Mahesh Jethanandani (mjethanandani at gmail.com), + Keyur Patel (keyur at arrcus.com), + Susan Hares (shares at ndzh.com), + Jeffrey Haas (jeffrey.haas at hpe.com)."; + + description + "This sub-module contains common groupings related to BGP errors + that are common across multiple contexts within the BGP module. + That is to say that they may be application to a subset of + global, peer-group, or neighbor contexts. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices. + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + revision 2026-03-02 { + description + "Initial Version"; + reference + "RFC XXXX: YANG Model for Border Gateway Protocol (BGP-4)."; + } + + /* + * Groupings + */ + + grouping bgp-errors-common { + description + "BGP NOTIFICATION state that is common in the sent and received + direction."; + + leaf last-notification { + type yang:date-and-time; + description + "The timestamp indicates the time that a BGP + NOTIFICATION message was last handled."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 4.5."; + } + leaf last-error { + type identityref { + base bn:bgp-notification; + } + description + "The last NOTIFICATION error for the peer on this + connection. If no identity is registered for the + Error code / Error subcode, this leaf contains the most + applicable identity for the BGP NOTIFICATION base code. + + The last-error-code and last-error-subcode will always have + the information received in the NOTIFICATION PDU."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 4.5."; + } + leaf last-error-code { + type uint8; + description + "The last NOTIFICATION Error code for the peer on + this connection."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 4.5."; + } + leaf last-error-subcode { + type uint8; + description + "The last NOTIFICATION Error subcode for the peer on + this connection."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 4.5."; + } + } + grouping bgp-errors-common-data { + description + "BGP NOTIFICATION data state that is common in the sent and + received direction."; + + leaf last-error-data { + type binary { + length "0..65535"; + } + description + "Content of the BGP NOTIFICATION PDU's Data field. This data + is NOTIFICATION Error code / Error subcode specific."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 4.5."; + } + } + + grouping bgp-encapsulated-errors-common { + description + "BGP NOTIFICATION state that is common in the sent and received + direction that has been encapsulated in a CEASE/HARD RESET + NOTIFICATION. + + Note that these leafs are only present when carrying the RFC + 8538 encapsulated NOTIFICATION state. In this case, + the last-error-data leaf will carry the encapsulated Data."; + + leaf last-encapsulated-error { + type identityref { + base bn:bgp-notification; + } + description + "The last RFC 8538 encapsulated NOTIFICATION error for the + peer on this connection. If no identity is registered for + the Error code / Error subcode, this leaf contains the most + applicable identity for the BGP NOTIFICATION base code. + + The last-encapsulated-error-code and + last-encapsulated-error-subcode will always have the + encapsulated information received in the CEASE/HARD RESET + NOTIFICATION PDU's encapsulated ErrCode and Subcode + fields."; + reference + "RFC 8538: Notification Message Support for BGP Graceful + Restart, Section 3.1."; + } + leaf last-encapsulated-error-code { + type uint8; + description + "The last RFC 8538 encapsulated NOTIFICATION Error code for + the peer on this connection."; + reference + "RFC 8538: Notification Message Support for BGP Graceful + Restart, Section 3.1."; + } + leaf last-encapsulated-error-subcode { + type uint8; + description + "The last RFC 8538 encapsulated NOTIFICATION Error subcode + for the peer on this connection."; + reference + "RFC 8538: Notification Message Support for BGP Graceful + Restart, Section 3.1."; + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-common-multiprotocol@2024-10-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-common-multiprotocol@2026-03-02.yang similarity index 94% rename from experimental/ietf-extracted-YANG-modules/ietf-bgp-common-multiprotocol@2024-10-21.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bgp-common-multiprotocol@2026-03-02.yang index 1631b7d0f..542835bd1 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bgp-common-multiprotocol@2024-10-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-common-multiprotocol@2026-03-02.yang @@ -16,8 +16,6 @@ submodule ietf-bgp-common-multiprotocol { prefix rt-pol; } - // meta - organization "IETF IDR Working Group"; contact @@ -27,7 +25,7 @@ submodule ietf-bgp-common-multiprotocol { Authors: Mahesh Jethanandani (mjethanandani at gmail.com), Keyur Patel (keyur at arrcus.com), Susan Hares (shares at ndzh.com), - Jeffrey Haas (jhaas at juniper.net)."; + Jeffrey Haas (jeffrey.haas at hpe.com)."; description "This sub-module contains groupings that are related to support @@ -54,7 +52,7 @@ submodule ietf-bgp-common-multiprotocol { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2024-10-21 { + revision 2026-03-02 { description "Initial Version"; reference @@ -183,7 +181,8 @@ submodule ietf-bgp-common-multiprotocol { // options } container ipv4-labeled-unicast { - when "derived-from-or-self(../name, 'bt:ipv4-labeled-unicast')" { + when "derived-from-or-self(../name, " + + "'bt:ipv4-labeled-unicast')" { description "Include this container for IPv4 Labeled Unicast specific configuration"; @@ -195,7 +194,8 @@ submodule ietf-bgp-common-multiprotocol { // options } container ipv6-labeled-unicast { - when "derived-from-or-self(../name, 'bt:ipv6-labeled-unicast')" { + when "derived-from-or-self(../name, " + + "'bt:ipv6-labeled-unicast')" { description "Include this container for IPv6 Labeled Unicast specific configuration"; @@ -207,7 +207,8 @@ submodule ietf-bgp-common-multiprotocol { // options. } container l3vpn-ipv4-unicast { - when "derived-from-or-self(../name, 'bt:l3vpn-ipv4-unicast')" { + when "derived-from-or-self(../name, " + + "'bt:l3vpn-ipv4-unicast')" { description "Include this container for IPv4 Unicast L3VPN specific configuration"; @@ -219,7 +220,8 @@ submodule ietf-bgp-common-multiprotocol { // placeholder for IPv4 Unicast L3VPN specific config options. } container l3vpn-ipv6-unicast { - when "derived-from-or-self(../name, 'bt:l3vpn-ipv6-unicast')" { + when "derived-from-or-self(../name, " + + "'bt:l3vpn-ipv6-unicast')" { description "Include this container for unicast IPv6 L3VPN specific configuration"; @@ -232,7 +234,8 @@ submodule ietf-bgp-common-multiprotocol { // options } container l3vpn-ipv4-multicast { - when "derived-from-or-self(../name, 'bt:l3vpn-ipv4-multicast')" { + when "derived-from-or-self(../name, " + + "'bt:l3vpn-ipv4-multicast')" { description "Include this container for multicast IPv6 L3VPN specific configuration"; @@ -245,7 +248,8 @@ submodule ietf-bgp-common-multiprotocol { // options } container l3vpn-ipv6-multicast { - when "derived-from-or-self(../name, 'bt:l3vpn-ipv6-multicast')" { + when "derived-from-or-self(../name, " + + "'bt:l3vpn-ipv6-multicast')" { description "Include this container for multicast IPv6 L3VPN specific configuration"; @@ -298,6 +302,7 @@ submodule ietf-bgp-common-multiprotocol { uses prefix-limit-state-common; } } + grouping mp-ipv4-ipv6-unicast-common { description "Common configuration that is applicable for IPv4 and IPv6 diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-common@2024-10-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-common@2026-03-02.yang similarity index 78% rename from experimental/ietf-extracted-YANG-modules/ietf-bgp-common@2024-10-21.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bgp-common@2026-03-02.yang index 449e71453..e6ebb61ed 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bgp-common@2024-10-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-common@2026-03-02.yang @@ -17,7 +17,7 @@ submodule ietf-bgp-common { import ietf-interfaces { prefix if; reference - "RFC 7223: A YANG Data Model for Interface Management."; + "RFC 8343: A YANG Data Model for Interface Management."; } import ietf-key-chain { prefix key-chain; @@ -27,7 +27,7 @@ submodule ietf-bgp-common { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types."; + "RFC 9911: Common YANG Data Types."; } import ietf-routing-policy { prefix rt-pol; @@ -37,22 +37,18 @@ submodule ietf-bgp-common { import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types."; + "RFC 9911: Common YANG Data Types."; } import ietf-bfd-types { prefix bfd-types; reference - "RFC 9127: YANG Data Model for Bidirectional Forward + "RFC 9314: YANG Data Model for Bidirectional Forward Detection."; } import ietf-tcp { prefix tcp; reference - "I-D.ietf-tcpm-yang-tcp: Transmission Control Protocol (TCP) - YANG Model."; - } - include ietf-bgp-common-structure { - revision-date 2024-10-21; + "RFC 9648: YANG Data Model for TCP."; } organization @@ -63,8 +59,8 @@ submodule ietf-bgp-common { Authors: Mahesh Jethanandani (mjethanandani at gmail.com), Keyur Patel (keyur at arrcus.com), - Susan Hares (shares at ndzh.com, - Jeffrey Haas (jhaas at juniper.net)."; + Susan Hares (shares at ndzh.com), + Jeffrey Haas (jeffrey.haas at hpe.com)."; description "This sub-module contains common groupings that are common across @@ -92,7 +88,7 @@ submodule ietf-bgp-common { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2024-10-21 { + revision 2026-03-02 { description "Initial Version"; reference @@ -101,8 +97,8 @@ submodule ietf-bgp-common { grouping neighbor-group-timers { description - "Config parameters related to timers associated with the BGP - peer"; + "Configuration parameters related to timers associated with + the BGP peer."; leaf connect-retry-interval { type uint16 { range "1..max"; @@ -121,7 +117,6 @@ submodule ietf-bgp-common { range "0 | 3..65535"; } units "seconds"; - default "90"; description "Time interval (in seconds) for the HoldTimer established with the peer. When read as operational data (ro), the @@ -130,8 +125,11 @@ submodule ietf-bgp-common { configured (rw) in the running datastore and the Hold Time received in the OPEN message. + The suggested value for this timer is 90 seconds. + This value must be at least three seconds if it is not zero (0). + If the Hold Timer has not been established with the peer this object MUST have a value of zero (0). @@ -143,15 +141,6 @@ submodule ietf-bgp-common { "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 4.2, RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 10."; } - leaf negotiated-hold-time { - type uint16; - config false; - description - "The negotiated hold-time for the BGP session"; - reference - "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 4.2, - RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 10."; - } leaf keepalive { type uint16 { range "0..21845"; @@ -225,7 +214,7 @@ submodule ietf-bgp-common { } container ebgp { description - "Multi-path configuration for eBGP"; + "Multi-path configuration for eBGP."; leaf allow-multiple-as { type boolean; default "false"; @@ -253,12 +242,45 @@ submodule ietf-bgp-common { establishing sessions with the remote peer or peer group, if this differs from the global BGP router autonomous system number."; + reference + "RFC 7705: Autonomous System Migration Mechanisms and Their + Effects on the BGP AS_PATH Attribute."; + } + leaf treat-as-withdraw { + type boolean; + description + "Specify whether erroneous UPDATE messages for which the NLRI + can be extracted are treated as though the NLRI is withdrawn + - avoiding session reset. The suggested implementation + default is true."; + reference + "RFC 7606: Revised Error Handling for BGP UPDATE Messages."; + } + leaf enforce-first-as { + type boolean; + description + "When set to true, the leftmost AS in the AS_PATH of BGP + UPDATE messages received from external peers MUST be equal + to autonomous system number of the peer that sent the + message. + + If the check determines they are not equal and + treat-as-withdraw is false, a BGP NOTIFICATION is sent. If + treat-as-withdraw is true, the routes will be withdraw + without and no NOTIFICATION is sent."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), + Section 6.3. + RFC 7606: Revised Error Handling for BGP UPDATE Messages."; } leaf remove-private-as { type bt:remove-private-as-option; description "When this leaf is specified, remove private AS numbers from updates sent to peers."; + reference + "RFC 6996: Autonomous System (AS) Reservation for Private + Use."; } container route-flap-damping { if-feature "bt:damping"; @@ -352,7 +374,6 @@ submodule ietf-bgp-common { "An optional textual description (intended primarily for use with a peer or group"; } - container timers { description "Timers related to a BGP neighbor"; @@ -365,17 +386,6 @@ submodule ietf-bgp-common { uses neighbor-group-transport-config; } - leaf treat-as-withdraw { - type boolean; - default "false"; - description - "Specify whether erroneous UPDATE messages for which the NLRI - can be extracted are treated as though the NLRI is withdrawn - - avoiding session reset"; - reference - "RFC 7606: Revised Error Handling for BGP UPDATE Messages."; - } - container logging-options { description "Logging options for events related to the BGP neighbor or @@ -387,15 +397,27 @@ submodule ietf-bgp-common { "Configure logging of peer state changes. Default is to enable logging of peer state changes. - Note: Documenting demotion from ESTABLISHED state is + Note: Documenting demotion from Established state is desirable, but documenting all backward transitions is problematic, and should be avoided."; } } - uses structure-neighbor-group-route-reflector; - uses structure-neighbor-group-as-path-options; - uses structure-add-paths; + uses neighbor-group-route-reflector; + uses neighbor-group-as-path-options; + + leaf advertise-inactive-routes { + type boolean; + default "false"; + description + "Advertise inactive routes to external peers. The default + is to only advertise active routes."; + reference + "I-D.ietf-idr-best-external: Advertisement of the best + external route in BGP."; + } + + uses add-paths; uses bgp-neighbor-use-multiple-paths; uses rt-pol:apply-policy-group; } @@ -559,7 +581,7 @@ submodule ietf-bgp-common { description "BFD client configuration."; reference - "RFC 9127: YANG Data Model for Bidirectional Forwarding + "RFC 9314: YANG Data Model for Bidirectional Forwarding Detection."; } } @@ -629,7 +651,7 @@ submodule ietf-bgp-common { } container ebgp { description - "Multi-Path parameters for eBGP"; + "Multi-Path parameters for eBGP."; leaf allow-multiple-as { type boolean; default "false"; @@ -648,7 +670,7 @@ submodule ietf-bgp-common { } container ibgp { description - "Multi-Path parameters for iBGP"; + "Multi-Path parameters for iBGP."; leaf maximum-paths { type uint32; default "1"; @@ -691,16 +713,6 @@ submodule ietf-bgp-common { peers, use the router-id as a criterion to select the active path."; } - leaf advertise-inactive-routes { - type boolean; - default "false"; - description - "Advertise inactive routes to external peers. The default - is to only advertise active routes."; - reference - "I-D.ietf-idr-best-external: Advertisement of the best - external route in BGP."; - } leaf enable-aigp { type boolean; default "false"; @@ -785,4 +797,147 @@ submodule ietf-bgp-common { } } } + + grouping neighbor-group-route-reflector { + description + "Grouping used to include route reflector configuration and + state for both BGP neighbors and peer groups"; + container route-reflector { + description + "Route reflector parameters for the BGP peer-group"; + reference + "RFC 4456: BGP Route Reflection."; + leaf cluster-id { + type bt:rr-cluster-id-type; + description + "Route Reflector cluster id to use when local router is + configured as a route reflector. Commonly set at the + group level, but allows a different cluster id to be set + for each neighbor."; + reference + "RFC 4456: BGP Route Reflection: An Alternative to + Full Mesh."; + } + leaf client { + type boolean; + default "false"; + description + "Configure the neighbor as a route reflector client."; + reference + "RFC 4456: BGP Route Reflection: An Alternative to + Full Mesh."; + } + } + } + + grouping neighbor-group-as-path-options { + description + "Grouping used to include AS_PATH manipulation configuration + and state for both BGP neighbors and peer groups"; + container as-path-options { + description + "AS_PATH manipulation parameters for the BGP neighbor or + group"; + leaf allow-own-as { + type uint8; + default "0"; + description + "Specify the number of occurrences of the local BGP + speaker's AS that can occur within the AS_PATH before it + is rejected as looped."; + } + leaf replace-peer-as { + type boolean; + default "false"; + description + "Replace occurrences of the peer's AS in the AS_PATH with + the local autonomous system number"; + } + leaf disable-peer-as-filter { + type boolean; + default "false"; + description + "When set to true, the system advertises routes to a peer + even if the peer's AS was in the AS path. The default + behavior (false) suppresses advertisements to peers if + their AS number is in the AS path of the route."; + } + } + } + + grouping add-paths { + description + "Grouping used to include ADD-PATHs configuration and state."; + container add-paths { + if-feature "bt:add-paths"; + description + "Parameters relating to the advertisement and receipt of + multiple paths for a single NLRI (add-paths)"; + reference + "RFC 7911: Advertisements of Multiple Paths in BGP."; + leaf receive { + type boolean; + default "false"; + description + "Enable ability to receive multiple path advertisements for + an NLRI from the neighbor or group"; + } + choice send { + description + "Choice of sending the max. number of paths or to send + all."; + case max { + leaf max { + type uint8; + description + "The maximum number of paths to advertise to neighbors + for a single NLRI"; + } + } + case all { + leaf all { + type empty; + description + "Send all the path advertisements to neighbors for a + single NLRI."; + } + } + } + leaf eligible-prefix-policy { + type leafref { + path "/rt-pol:routing-policy/rt-pol:policy-definitions/" + + "rt-pol:policy-definition/rt-pol:name"; + } + description + "A reference to a routing policy which can be used to + restrict the prefixes for which add-paths is enabled"; + } + } + } + + grouping dynamic-peers { + description + "Grouping to contain dyamic BGP peers. Dynamic peers are + configured from a list of IP prefixes matching the IP source + address of the dynamic peer."; + + container dynamic-peers { + description + "Configuration and operational state for dynamically + configured peers."; + + list dynamic-peer-list { + key "prefix"; + description + "List of peers by IP prefix for this configuration scope + that are dynamically configured."; + + leaf prefix { + type inet:ip-prefix; + description + "Prefix for dynamic peer at this configuration scope."; + } + } + } + } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-communities-annotate@2026-04-14.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-communities-annotate@2026-04-14.yang new file mode 100644 index 000000000..28b448b94 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-communities-annotate@2026-04-14.yang @@ -0,0 +1,112 @@ + +module ietf-bgp-communities-annotate { + yang-version 1.1; + namespace + "urn:ietf:params:xml:ns:yang:ietf-bgp-communities-annotate"; + prefix bgp-comm-an; + + import ietf-bgp-communities { + prefix bgp-comm; + reference + "draft-ietf-grow-yang-bgp-communities-08: A YANG Data + Model for BGP Communities"; + } + import ietf-routing { + prefix rt; + reference + "RFC 8349: A YANG Data Model for Routing Management + (NMDA Version)."; + } + import ietf-bgp { + prefix bgp; + reference + "draft-ietf-idr-bgp-model-19: YANG Model for Border + Gateway Protocol (BGP-4)"; + } + + organization + "IETF GROW Working Group"; + contact + "WG Web: + WG List: + + Author: Martin Pels + "; + description + "This module augments the ietf-bgp module with support for + community annotations. + + Copyright (c) 2025 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 YYYY; see + the RFC itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + // RFC-EDITOR: please update YYYY with this RFC ID + + revision 2026-04-14 { + description + "Initial revision."; + reference + "RFC YYYY: A YANG Data Model for BGP Communities + RFC-EDITOR: please update YYYY with this RFC ID"; + } + + augment "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/bgp:bgp/bgp:rib/" + + "bgp:communities/bgp:community" { + description + "Augments a Regular BGP community from the + ietf-bgp module with an optional annotation."; + container annotation { + presence "true"; + description + "The presence of this container indicates + that a community definition is available"; + uses bgp-comm:regular-community; + } + } + + augment "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/bgp:bgp/bgp:rib/" + + "bgp:ext-communities/bgp:ext-community" { + description + "Augments an Extended BGP community from the + ietf-bgp module with an optional annotation."; + container annotation { + presence "true"; + description + "The presence of this container indicates + that a community definition is available"; + uses bgp-comm:extended-community; + } + } + + augment "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/bgp:bgp/bgp:rib/" + + "bgp:large-communities/bgp:large-community" { + description + "Augments a Large BGP community from the + ietf-bgp module with an optional annotation."; + container annotation { + presence "true"; + description + "The presence of this container indicates + that a community definition is available"; + uses bgp-comm:large-community; + } + } +} \ No newline at end of file diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-communities@2025-07-04.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-communities@2026-01-05.yang similarity index 58% rename from experimental/ietf-extracted-YANG-modules/ietf-bgp-communities@2025-07-04.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bgp-communities@2026-01-05.yang index 11fadaf18..8a72297e8 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bgp-communities@2025-07-04.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-communities@2026-01-05.yang @@ -8,7 +8,7 @@ module ietf-bgp-communities { import ietf-inet-types { prefix inet; reference - "draft-ietf-netmod-rfc6991-bis-18: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } organization @@ -43,7 +43,7 @@ module ietf-bgp-communities { // RFC-EDITOR: please update YYYY with this RFC ID - revision 2025-07-04 { + revision 2026-01-05 { description "Initial revision."; reference @@ -221,13 +221,222 @@ module ietf-bgp-communities { } } + grouping maintainer-contact { + description + "A maintainer contact entry"; + leaf email-address { + type inet:email-address; + description + "Maintainer contact e-mail address"; + } + leaf name { + type string { + length "1..255"; + } + description + "Maintainer contact name"; + } + leaf role { + type string { + length "1..255"; + } + description + "Maintainer contact role"; + } + leaf organization { + type string { + length "1..255"; + } + description + "Maintainer contact organization"; + } + leaf organizational-unit { + type string { + length "1..255"; + } + description + "Maintainer contact organizational unit"; + } + } + + grouping regular-community { + description + "A Regular BGP community definition"; + leaf name { + type community-name; + description + "Community name"; + } + leaf category { + type community-category; + description + "Category of the community"; + } + leaf description { + type community-description; + description + "Description for the community"; + } + leaf global-admin { + type two-octet-as-number; + mandatory true; + description + "Global Administrator field"; + } + container local-admin { + description + "Local Administrator Field"; + leaf format { + type local-admin-format; + default "decimal"; + description + "Format used for parsing Local Administrator subfields"; + } + uses local-admin-fields; + } + reference + "RFC 1997: BGP Communities Attribute"; + } + + grouping extended-community { + description + "An Extended BGP community definition"; + leaf name { + type community-name; + description + "Community name"; + } + leaf category { + type community-category; + description + "Category of the community"; + } + leaf description { + type community-description; + description + "Description for the community"; + } + leaf type { + type uint8 { + range "0|2|64|66"; + } + mandatory true; + description + "High-order Type of the community. Supported values are 0 + (0x00) for Transitive Two-Octet AS-Specific Extended + Communities, 2 (0x02) for Transitive Four-Octet + AS-Specific Extended Communities, 64 (0x40) for + Non-Transitive Two-Octet AS-Specific Extended Communities + and 66 (0x42) for Non-Transitive Four-Octet AS-Specific + Extended Communities."; + } + leaf subtype { + type uint8; + mandatory true; + description + "Low-order Sub-Type of the community"; + } + choice global-admin { + mandatory true; + description + "Global Administrator Field"; + case asn { + leaf asn { + type two-octet-as-number; + must "../type = 0 or ../type = 64" { + error-message + "../type must match Two-Octet AS-Specific Community"; + } + description + "Two-Octet AS"; + } + } + case asn4 { + leaf asn4 { + type inet:as-number; + must "../type = 2 or ../type = 66" { + error-message + "../type must match Four-Octet AS-Specific Community"; + } + description + "Four-Octet AS"; + } + } + } + container local-admin { + description + "Local Administrator Field"; + leaf format { + type local-admin-format; + default "decimal"; + description + "Format used for parsing Local Administrator subfields"; + } + uses local-admin-fields; + } + reference + "RFC 4360: BGP Extended Communities Attribute"; + } + + grouping large-community { + description + "A Large BGP community definition"; + leaf name { + type community-name; + description + "Community name"; + } + leaf category { + type community-category; + description + "Category of the community"; + } + leaf description { + type community-description; + description + "Description for the community"; + } + leaf global-admin { + type inet:as-number; + mandatory true; + description + "Global Administrator field"; + } + container local-data-part-1 { + description + "Local Data Part 1 Field"; + leaf format { + type local-admin-format; + default "decimal"; + description + "Format used for parsing Local Data Part 1 subfields"; + } + uses local-admin-fields; + } + container local-data-part-2 { + description + "Local Data Part 2 Field"; + leaf format { + type local-admin-format; + default "decimal"; + description + "Format used for parsing Local Data Part 2 subfields"; + } + uses local-admin-fields; + } + reference + "RFC 8092: BGP Large Communities Attribute"; + } + container bgp-communities { config false; description "A community set"; leaf serial { type uint32; - must "boolean(.)"; + must ". > 0" { + error-message "serial must not be 0"; + } description "Version number of the community set. This value wraps and should be compared using sequence space arithmetic. @@ -237,6 +446,11 @@ module ietf-bgp-communities { reference "RFC 1912: Common DNS Operational and Configuration Errors"; } + leaf autonomous-system-id { + type inet:as-number; + description + "Autonomous System authoritative for the community set"; + } leaf uri { type inet:uri; description @@ -259,208 +473,56 @@ module ietf-bgp-communities { key "email-address"; description "A list of contacts for the community set maintainer(s)"; - leaf email-address { - type inet:email-address; - description - "Maintainer contact e-mail address"; - } - leaf name { - type string { - length "1..255"; - } - description - "Maintainer contact name"; - } - leaf role { - type string { - length "1..255"; - } - description - "Maintainer contact role"; - } - leaf organization { - type string { - length "1..255"; - } - description - "Maintainer contact organization"; - } - leaf organizational-unit { - type string { - length "1..255"; - } - description - "Maintainer contact organizational unit"; - } + uses maintainer-contact; } list regular { + must + "(./global-admin = ../autonomous-system-id) or + (./global-admin >= 64512 and ./global-admin <= 65534)" { + error-message + "global-admin must be private ASN or match + autonomous-system-id"; + } key "name"; ordered-by user; description "A list of objects describing RFC 1997 BGP Communities"; - leaf name { - type community-name; - description - "Community name"; - } - leaf category { - type community-category; - description - "Category of the community"; - } - leaf description { - type community-description; - description - "Description for the community"; - } - leaf global-admin { - type two-octet-as-number; - mandatory true; - description - "Global Administrator field"; - } - container local-admin { - description - "Local Administrator Field"; - leaf format { - type local-admin-format; - default "decimal"; - description - "Format used for parsing Local Administrator subfields"; - } - uses local-admin-fields; - } - reference - "RFC 1997: BGP Communities Attribute"; + uses regular-community; } list extended { + must + "(./asn = ../autonomous-system-id) or + (./asn4 = ../autonomous-system-id) or + (./asn >= 64512 and ./asn <= 65534) or + (./asn4 >= 4200000000 and ./asn4 <= 4294967294)" { + error-message + "global-admin must be private ASN or match + autonomous-system-id"; + } key "name"; ordered-by user; description "A list of objects describing RFC 4360 Extended BGP Communities. Two-Octet and Four-Octet AS Specific communities are supported by this model."; - leaf name { - type community-name; - description - "Community name"; - } - leaf category { - type community-category; - description - "Category of the community"; - } - leaf description { - type community-description; - description - "Description for the community"; - } - leaf type { - type uint8 { - range "0|2|64|66"; - } - mandatory true; - description - "High-order Type of the community. Supported values are 0 - (0x00) for Transitive Two-Octet AS-Specific Extended - Communities, 2 (0x02) for Transitive Four-Octet - AS-Specific Extended Communities, 64 (0x40) for - Non-Transitive Two-Octet AS-Specific Extended Communities - and 66 (0x42) for Non-Transitive Four-Octet AS-Specific - Extended Communities."; - } - leaf subtype { - type uint8; - mandatory true; - description - "Low-order Sub-Type of the community"; - } - choice global-admin { - mandatory true; - description - "Global Administrator Field"; - case asn { - leaf asn { - type two-octet-as-number; - must "../type = 0 or ../type = 64"; - description - "Two-Octet AS"; - } - } - case asn4 { - leaf asn4 { - type inet:as-number; - must "../type = 2 or ../type = 66"; - description - "Four-Octet AS"; - } - } - } - container local-admin { - description - "Local Administrator Field"; - leaf format { - type local-admin-format; - default "decimal"; - description - "Format used for parsing Local Administrator subfields"; - } - uses local-admin-fields; - } - reference - "RFC 4360: BGP Extended Communities Attribute"; + uses extended-community; } list large { + must + "(./global-admin = ../autonomous-system-id) or + (./global-admin >= 64512 and ./global-admin <= 65534) or + (./global-admin >= 4200000000 and + ./global-admin <= 4294967294)" { + error-message + "global-admin must be private ASN or match + autonomous-system-id"; + } key "name"; ordered-by user; description "A list of objects describing RFC 8092 Large BGP Communities"; - leaf name { - type community-name; - description - "Community name"; - } - leaf category { - type community-category; - description - "Category of the community"; - } - leaf description { - type community-description; - description - "Description for the community"; - } - leaf global-admin { - type inet:as-number; - mandatory true; - description - "Global Administrator field"; - } - container local-data-part-1 { - description - "Local Data Part 1 Field"; - leaf format { - type local-admin-format; - default "decimal"; - description - "Format used for parsing Local Data Part 1 subfields"; - } - uses local-admin-fields; - } - container local-data-part-2 { - description - "Local Data Part 2 Field"; - leaf format { - type local-admin-format; - default "decimal"; - description - "Format used for parsing Local Data Part 2 subfields"; - } - uses local-admin-fields; - } - reference - "RFC 8092: BGP Large Communities Attribute"; + uses large-community; } } } \ No newline at end of file diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-ls@2023-10-10.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-ls@2026-02-09.yang similarity index 59% rename from experimental/ietf-extracted-YANG-modules/ietf-bgp-ls@2023-10-10.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bgp-ls@2026-02-09.yang index 2b2cf34f1..641a2a320 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bgp-ls@2023-10-10.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-ls@2026-02-09.yang @@ -6,7 +6,7 @@ module ietf-bgp-ls { import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types."; + "RFC 9911: Common YANG Data Types."; } import ietf-routing { prefix rt; @@ -20,7 +20,7 @@ module ietf-bgp-ls { "I-D.ietf-idr-bgp-model: BGP YANG Model for Service Provider Networks."; } - import ietf-bgp-types { + import iana-bgp-types { prefix bt; reference "I-D.ietf-idr-bgp-model: BGP YANG Model for Service Provider @@ -36,11 +36,12 @@ module ietf-bgp-ls { organization "IETF LSVR Working Group"; contact - "WG Web: + "WG Web: WG List: Authors: Mahesh Jethanandani (mjethanandani at gmail.com), - Keyur Patel (keyur at arrcus.com)"; + Keyur Patel (keyur at arrcus.com), + Aravind Babu MahendraBabu (aramahen at cisco.com)"; description "This module contains contains management @@ -66,7 +67,7 @@ module ietf-bgp-ls { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2023-10-10 { + revision 2026-02-09 { description "Initial Version"; reference @@ -79,7 +80,8 @@ module ietf-bgp-ls { description "BGP Link-State."; reference - "RFC 7752: Link-State Info Distribution using BGP."; + "RFC 9552: Distribution of Link-State and Traffic Engineering + Information Using BGP."; } identity bgp-ls-vpn { @@ -87,7 +89,8 @@ module ietf-bgp-ls { description "BGP Link-State VPN."; reference - "RFC 7752: Link-State Info Distribution using BGP."; + "RFC 9552: Distribution of Link-State and Traffic Engineering + Information Using BGP."; } identity bgp-ls-spf { @@ -95,7 +98,7 @@ module ietf-bgp-ls { description "BGP Link-State Shortest Path First (BGP-LS-SPF)."; reference - "I-D.ietf-lsvr-bgp-spf: BGP Link-State SPF Routing."; + "RFC 9815: BGP Link-State SPF Routing."; } identity attribute-type { @@ -108,8 +111,8 @@ module ietf-bgp-ls { description "Multi Topology Identifier TLV."; reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic Engineering + Information Using BGP."; } identity node-flag-bits { @@ -117,8 +120,8 @@ module ietf-bgp-ls { description "The Node Flag Bits TLV."; reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic + Engineering Information Using BGP."; } identity opaque-node-attribute { @@ -126,8 +129,8 @@ module ietf-bgp-ls { description "The Opaque Node Attribute TLV."; reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic Engineering + Information Using BGP."; } identity node-name { @@ -135,8 +138,8 @@ module ietf-bgp-ls { description "The Node Name TLV."; reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic Engineering + Information Using BGP."; } identity isis-area-identifier { @@ -144,8 +147,8 @@ module ietf-bgp-ls { description "IS-IS Area Identifier."; reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic Engineering + Information Using BGP."; } identity ipv4-route-id-of-local-node { @@ -153,8 +156,8 @@ module ietf-bgp-ls { description "IPv4 Router-ID of Local Node."; reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic Engineering + Information Using BGP."; } identity ipv6-router-id-of-local-node { @@ -162,9 +165,10 @@ module ietf-bgp-ls { description "IPv6 Router-ID of Local Node."; reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic Engineering + Information Using BGP."; } + // Typedefs typedef spf-algorithm-type { type enumeration { @@ -216,7 +220,8 @@ module ietf-bgp-ls { } enum uncreachable { description - "The link is unreachable in the current SPF topology."; + "The link is unreachable in the current SPF + topology."; } } default reachable; @@ -255,7 +260,8 @@ module ietf-bgp-ls { "Maximum rate at which Link-State NLRIs will be advertised or withdrawn from neighbors."; reference - "RFC 7752: Link-State Info Distribution Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic + Engineering Information Using BGP."; } leaf max-number { @@ -264,319 +270,8 @@ module ietf-bgp-ls { "Maximim number of Link-State NLRIs stored in a router's RIB."; reference - "RFC 7752: Link-State Info Distribution Using BGP."; - } - - leaf instance-id { - type uint64; - description - "64-bit Instance-ID."; - reference - "RFC 7752: Link-State Info Distribution Using BGP."; - } - - leaf asn-plus-bgp-ls-ids { - type uint32; - description - "A pair of ASN and BGP-LS identifiers per flooding set - in which the node participates."; - reference - "RFC 7752: Link-State Info Distribution Using BGP."; - } - } - - container tlvs { - config false; - description - "Container for BGP-LS attribute TLVs."; - - list tlv { - description - "List of all TLVs."; - - container multi-topology-identifier { - description - "Multi Topo Identifier TLV."; - - leaf type { - type identityref { - base attribute-type; - } - description - "Type should be of value 263."; - reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; - } - - leaf length { - type uint16; - units octets; - description - "The length of the TLV in octets."; - reference - "RFC 8654: Extended Message Support for BGP."; - } - - leaf-list value { - type uint16 { - range 0..2048; - } - description - "Leaf list of Multi Topology IDs."; - } - } - - container node-flag-bits { - description - "Node Flag Bits TLV."; - - leaf type { - type identityref { - base attribute-type; - } - description - "The type should be 1024"; - } - - leaf length { - type uint8 { - range 0..1; - } - description - "The length of this TLV in octets."; - } - - leaf value { - type bits { - bit overload { - position 0; - description - "Overload bit."; - reference - "ISO10589: International Organization for - Standardization, Intermediate System to - Intermediate System intra-domain - routeing information exchange protocol for use - in conjunction with the protocol for providing - the connectionless-mode network service - (ISO 8473), ISO/IEC 10589, November 2002."; - } - - bit attached { - position 1; - description - "Attached bit."; - reference - "ISO10589: International Organization for - Standardization, Intermediate System to - Intermediate System intra-domain - routeing information exchange protocol for use - in conjunction with the protocol for providing - the connectionless-mode network service - (ISO 8473), ISO/IEC 10589, November 2002."; - } - - bit external { - position 2; - description - "External bit."; - reference - "RFC 2328: OSPF Version 2."; - } - } - description - "The value of this TLV."; - } - } - - container opaque-node-attribute { - description - "Opaque Node Attribute TLV."; - - leaf type { - type identityref { - base attribute-type; - } - description - "The type should be 1025"; - reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; - } - - leaf length { - type uint16 { - range 0..max; - } - units octets; - description - "The length of the TLV in octets."; - reference - "RFC 8654: Extended Message Support for BGP."; - } - - leaf-list value { - type uint16 { - range 0..2048; - } - description - "Leaf list of Opaque Node Attribute TLV."; - reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; - } - } - - container node-name { - description - "Node Name TLV."; - - leaf type { - type identityref { - base attribute-type; - } - description - "The type should be 1026"; - reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; - } - - leaf length { - type uint16 { - range 0..max; - } - units octets; - description - "The length of the TLV in octets."; - reference - "RFC 8654: Extended Message Support for BGP."; - } - - leaf-list value { - type uint16 { - range 0..2048; - } - description - "Leaf list of Node Name TLV."; - reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; - } - } - - container isis-area-identifier { - description - "IS-IS Area Identifier TLV."; - - leaf type { - type identityref { - base attribute-type; - } - description - "The type should be 1027"; - reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; - } - - leaf length { - type uint16 { - range 0..max; - } - units octets; - description - "The length of the TLV in octets."; - reference - "RFC 8654: Extended Message Support for BGP."; - } - - leaf-list value { - type uint16 { - range 0..2048; - } - description - "Leaf list of IS-IS Area Identifier TLV."; - reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; - } - } - - container ipv4-router-id { - description - "IPv4 Router-ID of Local Node TLV."; - - leaf type { - type identityref { - base attribute-type; - } - description - "The type should be 1028"; - reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; - } - - leaf length { - type uint8 { - range 0..4; - } - description - "4-octet router-id of the router originating the LSP."; - reference - "RFC 5305: IS-IS Extenstions for Traffic Engineering."; - } - - leaf value { - type uint16 { - range 0..max; - } - description - "4-octet router-id of the router originating the LSP."; - reference - "RFC 5305: IS-IS Extenstions for Traffic Engineering."; - } - } - - container ipv6-router-id { - description - "IPv6 Router-ID of Local Node TLV."; - - leaf type { - type identityref { - base attribute-type; - } - description - "The type should be 1029"; - reference - "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution - Using BGP."; - } - - leaf length { - type uint8 { - range 0..16; - } - description - "16-octet router-id of the router originating the LSP."; - reference - "RFC 6119: IPv6 Traffic Engineering in IS-IS."; - } - - leaf value { - type uint16 { - range 0..max; - } - description - "16-octet router-id of the router originating the LSP."; - reference - "RFC 6119: IS-IS Traffic Engineering in IS-IS."; - } - } - - uses unknown-tlvs; + "RFC 9552: Distribution of Link-State and Traffic + Engineering Information Using BGP."; } } } @@ -595,45 +290,6 @@ module ietf-bgp-ls { description "BGP Linkstate-SPF configuration options"; uses bgp:mp-all-afi-safi-common; - - } - } - - grouping tlv { - description - "Generic grouping for all TLVs."; - leaf type { - type identityref { - base attribute-type; - } - description - "TLV type."; - } - - leaf length { - type uint16; - description - "TLV length in octets."; - } - - leaf value { - type yang:hex-string; - description - "TLV value in the form of a hex string."; - } - } - grouping unknown-tlvs { - description - "Unknown TLVs grouping. Used for unknown TLVs or - unknown sub-TLVs."; - container unknown-tlvs { - description - "All unknown TLVs."; - list unknown-tlv { - description - "Unknown TLV."; - uses tlv; - } } } @@ -831,6 +487,7 @@ module ietf-bgp-ls { uses bgp-neighbor-ls-common; } + /* augment "/rt:routing/rt:control-plane-protocols" + "/rt:control-plane-protocol/bgp:bgp/bgp:global" + "/bgp:afi-safis/bgp:afi-safi/bgp:statistics" { @@ -839,15 +496,16 @@ module ietf-bgp-ls { "Include these for BGP Link-State specific statistics."; } description - "Augmentation of the global statistics counter to add BGP-LS - statistics."; + "Augmentation of the global statistics counter to add + BGP-LS statistics."; leaf updates-sent { type yang:zero-based-counter32; description "Total number of Link-State NLRI updates sent."; reference - "RFC 7752: Link-State Info Distribution Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic + Engineering Information Using BGP."; } leaf updates-received { @@ -855,7 +513,8 @@ module ietf-bgp-ls { description "Total number of Link-State NLRI updates received."; reference - "RFC 7752: Link-State Info Distribution Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic + Engineering Information Using BGP."; } leaf local-ls-originated { @@ -863,7 +522,8 @@ module ietf-bgp-ls { description "Total number of locally originated Link-State NLRIs."; reference - "RFC 7752: Link-State Info Distribution Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic + Engineering Information Using BGP."; } action clear { @@ -891,7 +551,6 @@ module ietf-bgp-ls { } } } - augment "/rt:routing/rt:control-plane-protocols" + "/rt:control-plane-protocol/bgp:bgp/bgp:global" + "/bgp:afi-safis/bgp:afi-safi/bgp:statistics" { @@ -900,9 +559,8 @@ module ietf-bgp-ls { "Include these for BGP Link-State SPF specific statistics."; } description - "Augmentation of the global statistics counter to add BGP-LS-SPF - statistics."; - + "Augmentation of the global statistics counter to add + BGP-LS-SPF statistics."; leaf scheduled { type yang:zero-based-counter64; description @@ -946,7 +604,7 @@ module ietf-bgp-ls { address-family"; } } - + */ augment "/rt:routing/rt:control-plane-protocols" + "/rt:control-plane-protocol/bgp:bgp/bgp:neighbors" + "/bgp:neighbor/bgp:statistics" { @@ -962,9 +620,11 @@ module ietf-bgp-ls { leaf updates-sent { type yang:zero-based-counter32; description - "Total number of Link-State NLRIs updates sent per neighbor."; + "Total number of Link-State NLRIs updates sent per + neighbor."; reference - "RFC 7752: Link-State Info Distribution Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic + Engineering Information Using BGP."; } leaf updates-received { @@ -973,7 +633,8 @@ module ietf-bgp-ls { "Total number of Link-State NLRIs updates received per neighbor."; reference - "RFC 7752: Link-State Info Distribution Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic + Engineering Information Using BGP."; } leaf error-updates-received { @@ -982,23 +643,24 @@ module ietf-bgp-ls { "Total number of Link-State NLRIs updates received that were errored, per neighbor."; reference - "RFC 7752: Link-State Info Distribution Using BGP."; + "RFC 9552: Distribution of Link-State and Traffic + Engineering Information Using BGP."; } leaf computations { type yang:zero-based-counter32; description "Count of number of SPF computations made."; - reference - "I-D.ietf-lsvr-bgp-spf: BGP Link-State SPF Routing."; + reference + "RFC 9815: BGP Link-State SPF Routing."; } leaf triggering-events { type yang:zero-based-counter32; description "SPF triggering events."; - reference - "I-D.ietf-lsvr-bgp-spf: BGP Link-State SPF Routing."; + reference + "RFC 9815: BGP Link-State SPF Routing."; } action clear { @@ -1040,7 +702,8 @@ module ietf-bgp-ls { augment "/rt:routing/rt:control-plane-protocols" + "/rt:control-plane-protocol/bgp:bgp/bgp:peer-groups" + - "/bgp:peer-group/bgp:afi-safis/bgp:afi-safi/link-state-spf" { + "/bgp:peer-group/bgp:afi-safis/bgp:afi-safi/" + + "link-state-spf" { description "Augmentation of the BGP peer-groups to add BGL-LS."; uses bgp-neighbor-ls-common; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-lsdb@2023-10-10.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-lsdb@2023-10-10.yang deleted file mode 100644 index a17e6ca7f..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-bgp-lsdb@2023-10-10.yang +++ /dev/null @@ -1,534 +0,0 @@ -module ietf-bgp-lsdb { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-lsdb"; - prefix bgp-lsdb; - - import ietf-yang-types { - prefix yang; - reference - "RFC 6991: Common YANG Data Types."; - } - - import ietf-inet-types { - prefix inet; - reference - "RFC 6991: Common YANG Data Types."; - } - - organization - "IETF LSVR Working Group"; - contact - "WG Web: - WG List: - - Authors: Mahesh Jethanandani (mjethanandani at gmail.com), - Keyur Patel (keyur at arrcus.com)"; - - description - "This module contains contains configuration and management - information for BGP-LS, BGP-LS-SPF. - - 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 - (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself - for full legal notices. - - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL - NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', - 'MAY', 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."; - - revision 2023-10-10 { - description - "Initial Version"; - reference - "RFC XXXX, BGP Model for Link State Distribution."; - } - - // Typedefs - typedef lsdb-proto-id-type { - type enumeration { - enum unknown { - description "Unknown protocol."; - } - enum isis-level1 { - description "IS-IS Level 1."; - } - enum isis-level2 { - description "IS-IS Level 2."; - } - enum ospfv2 { - description "OSPF Version 2."; - } - enum direct { - description "Direct."; - } - enum static { - description "Static"; - } - enum ospfv3 { - description "OSPF Version 3."; - } - enum bgp { - description "BGP."; - } - } - description - "LS database proto id type."; - } - - typedef lsdb-attr-type { - type enumeration { - enum unknown { - description - "Unknown attribute."; - } - enum node-pdu-auth-info { - description - "Node authentication information attribute."; - } - enum node-hostname { - description - "Node Hostname attribute."; - } - enum node-flags { - description - "Node Flags attribute."; - } - enum node-opaque { - description - "Node Opaque attribute."; - } - enum node-as { - description - "Node AS Number attribute."; - } - enum node-isis-node-id { - description - "Node ISIS Node-Id attribute."; - } - enum node-ipv4-rtr-id { - description - "Node IPv4 Router-Id attribute."; - } - enum node-ipv6-rtr-id { - description - "Node IPv6 Router-Id attribute."; - } - enum node-sid-index { - description - "Node SID Index attribute."; - } - enum node-topo-ids { - description - "Node Topology-IDs attribute."; - } - enum node-isis-nlpid { - description - "Node NLPID attribute."; - } - enum node-isis-area-id { - description - "Node ISIS Area-Id attribute."; - } - enum node-ospf-area-id { - description - "Node OSPF Area-Id attribute."; - } - enum node-admin-tag { - description - "Node Admin-Tags attribute."; - } - enum node-srgb-range { - description - "Node SRGB Range attribute."; - } - enum node-spf-status { - description - "Node SPF Status attribute."; - } - enum node-spf-algorithm { - description - "Node SPF Algorithm Type attribute."; - } - enum link-name { - description - "Link Name attribute."; - } - enum link-proto-id { - description - "Link Protocol-Id attribute."; - } - enum link-local-id { - description - "Link Local-Id attribute."; - } - enum link-remote-id { - description - "Node Remote-Id attribute."; - } - enum link-local-isis-node-id { - description - "Link Local ISO Node-Id attribute."; - } - enum link-remote-isis-node-id { - description - "Link Remote ISO Node-Id attribute."; - } - enum link-local-ipv4-rtr-id { - description - "Link Local IPv4 Router-Id attribute."; - } - enum link-remote-ipv4-rtr-id { - description - "Link Remote IPv4 Router-Id attribute."; - } - enum link-local-ipv6-rtr-id { - description - "Link Local IPv6 Router-Id attribute."; - } - enum link-remote-ipv6-rtr-id { - description - "Link Remote IPv6 Router-Id attribute."; - } - enum link-circuit-id { - description - "Link Local Circuit-Id attribute."; - } - enum link-igp-metric { - description - "Link IGP metric attribute."; - } - enum link-mtu { - description - "Link MTU attribute."; - } - enum link-max-bandwidth { - description - "Link Maximum Bandwidth attribute."; - } - enum link-max-reserve-bandwidth { - description - "Link Maximum Reserved Bandwidth attribute."; - } - enum link-unreserve-bandwidth { - description - "Link Unreserved Bandwidth attribute."; - } - enum link-default-te-metric { - description - "Link TE-Default Metric attribute."; - } - enum link-protection-type { - description - "Link Protection-Type attribute."; - } - enum link-opaque { - description - "Link Opaque attribute."; - } - enum link-mpls-proto-mask { - description - "Link MPLS-Protocol-Mask attribute."; - } - enum lsdb-link-local-ipv4-addr { - description - "Link Local IPv4 Address attribute."; - } - enum lsdb-link-local-ipv6-addr { - description - "Link Local IPv6 Address attribute."; - } - enum lsdb-link-remote-ipv4-addr { - description - "Link Remote IPv4 Address attribute."; - } - enum lsdb-link-remote-ipv6-addr { - description - "Link Remote IPv6 Address attribute."; - } - enum lsdb-link-isis-level { - description - "Link ISIS Level attribute."; - } - enum lsdb-link-admin-tag { - description - "Link Admin-Tag attribute."; - } - enum lsdb-link-srlg { - description - "Link SRLGs attribute."; - } - enum lsdb-link-spf-status { - description - "Link SPF Status attribute."; - } - enum lsdb-prefix-igp-flags { - description - "Prefix IGP-Flags attribute."; - } - enum lsdb-prefix-metric { - description - "Prefix Metric attribute."; - } - enum lsdb-prefix-ospf-forwarding-address { - description - "Prefix OSPF-Forwarding-Address attribute."; - } - enum lsdb-prefix-ospf-route-type { - description - "Prefix OSPF-Route-Type attribute."; - } - enum lsdb-prefix-opaque { - description - "Prefix Opaque attribute."; - } - enum lsdb-prefix-route-tags { - description - "Prefix Route-Tags attribute."; - } - enum lsdb-prefix-ext-route-tags { - description - "Prefix Extended-Route-Tags attribute."; - } - enum lsdb-prefix-spf-status { - description - "Prefix SPF Status attribute."; - } - } - description - "Link-State database attribute type."; - } - - typedef lsdb-obj-type { - type enumeration { - enum lsdb-unknown-obj { - description - "Unknown attribute."; - } - enum lsdb-node-obj { - description - "Node Object."; - } - enum lsdb-link-obj { - description - "Link object."; - } - enum lsdb-prefix-obj { - description - "Prefix object."; - } - } - description - "Link-State database object type."; - } - - // Groupings - grouping lsdb-obj-common { - description "Common details for all object types."; - - leaf handle { - type uint64; - description "Handle of the object."; - } - - leaf type { - type lsdb-obj-type; - description "Type of object."; - } - - leaf topology-id { - type uint16; - description "Id of the topology object belongs to."; - } - leaf pdu-id { - type uint32; - description - "Id of the original protocol PDU unit this object belongs - to."; - } - - container attributes { - description - "List of attributes for a given object."; - - list attribute { - key "attribute-handle attribute-type"; - - leaf attribute-handle { - type uint64; - description - "Handle of the attribute."; - } - - leaf attribute-type { - type lsdb-attr-type; - description - "Type of attribute."; - } - - leaf attribute-length { - type uint16; - description - "Length of attribute value in bytes."; - } - - leaf attribute-value { - type union { - type uint8; - type uint16; - type uint32; - type uint64; - type boolean; - type string; - type inet:ip-address; - type yang:hex-string; - } - description - "Actual value of the attribute."; - } - description - "Details of a single attribute."; - } - } - } - - grouping lsdb-top { - description - "Details for all databases under an application instance."; - - container local-databases { - config false; - description - "List of local databases."; - - list database { - key "vrf-name instance protocol-id area-id"; - - description - "Operational state for a given database."; - - leaf vrf-name { - type string; - description - "Name of the VRF this database belongs to."; - } - - leaf instance { - type string; - description - "Name of the application instance this database belongs - to."; - } - - leaf protocol-id { - type lsdb-proto-id-type; - description - "Id of the aplication protocol this database belongs - to."; - } - - leaf area-id { - type uint32; - description - "Id of the protocol area this database belongs to."; - } - - container nodes { - description - "List of node objects for a given database."; - list node { - key "handle"; - - leaf node-id { - type string; - description - "Id of the node object."; - } - - uses lsdb-obj-common; - container links { - description - "List of link objects for a given node object."; - - list link { - key "handle"; - - leaf local-id { - type uint32; - description - "Local identifier of the link object."; - } - - leaf local-address { - type string; - description - "Local address of the link object."; - } - - leaf local-node-id { - type uint32; - description - "Local Node identifier of the link object."; - } - - leaf remote-id { - type uint32; - description - "Remote identifier of the link object."; - } - - leaf remote-address { - type string; - description - "Remote address of the link object."; - } - - leaf remote-node-id { - type uint32; - description - "Remote Node identifier of the link object."; - } - - uses lsdb-obj-common; - description - "Details of a single link object."; - } - } - - container prefixes { - description - "List of prefix objects for a given node object."; - - list prefix { - key "handle"; - - leaf prefix-key { - type string; - description - "Key value for the prefix object."; - } - - uses lsdb-obj-common; - description - "Details of a single prefix object."; - } - } - description - "Details of a single node object."; - } - } - } - } - } -} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-lsdb@2026-02-09.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-lsdb@2026-02-09.yang new file mode 100644 index 000000000..3a30bb4ee --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-lsdb@2026-02-09.yang @@ -0,0 +1,259 @@ +module ietf-bgp-lsdb { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-lsdb"; + prefix bgp-lsdb; + + import ietf-inet-types { + prefix inet; + reference + "RFC 9911: Common YANG Data Types."; + } + + import ietf-yang-types { + prefix yang; + reference + "RFC 9911: Common YANG Data Types."; + } + + import ietf-bgp-ls-topo-types { + prefix bgp-ls-topo-t; + reference + "RFC XXXX: BGP Model for Link State Distribution."; + } + + import ietf-routing-types { + prefix ietf-rt-t; + reference + "RFC 8294: Common YANG Data Types for the Routing Area."; + } + + import ietf-isis { + prefix ietf-isis-t; + reference + "RFC 9130: YANG Data Model for IS-IS Protocol."; + } + + import ietf-ospf { + prefix ietf-ospf-t; + reference + "RFC 9129: YANG Data Model for the OSPF Protocol."; + } + + include ietf-bgp-ls-topo-attr; + + organization + "IETF LSVR Working Group"; + contact + "WG Web: + WG List: + + Authors: Mahesh Jethanandani (mjethanandani at gmail.com), + Keyur Patel (keyur at arrcus.com), + Aravind Babu MahendraBabu (aramahen at cisco.com)"; + + description + "This module contains contains configuration and management + information for BGP-LS, BGP-LS-SPF. + + 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 + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + revision 2026-02-09 { + description + "Initial Version"; + reference + "RFC XXXX, BGP Model for Link State Distribution."; + } + // Groupings + + grouping lsdb-top { + description + "Details for all databases under an application instance."; + + container bgp-ls-topology { + config false; + description + "Top level container for BGP-LS topology entries"; + + container instances { + description + "Enclosing container for instance list"; + + list instance { + key "vrf-name protocol identifier"; + description + "List of instances"; + + leaf vrf-name { + type string; + description + "Name of the VRF this database belongs to."; + } + + leaf protocol { + type bgp-ls-topo-t:protocol; + description + "Protocol originating the NLRI."; + reference + "RFC 9552: Distribution of Link-State and Traffic + Engineering Information Using BGP, Section 5.2."; + } + + leaf identifier { + type uint64; + description + "Instance identifier identifying the IGP routing + domain where the NLRI belongs."; + reference + "RFC 9552: Distribution of Link-State and Traffic + Engineering Information Using BGP, Section 5.2."; + } + + container nodes { + description + "BGP-LS topology entries for nodes"; + list ospf-node { + key "is-as-scoped area-id router-id dr-identifier as"; + description + "List of node types"; + + leaf is-as-scoped { + type boolean; + description + "Is area ID valid?"; + } + + leaf area-id { + type ietf-ospf-t:area-id-type; + description + "Area ID."; + reference + "RFC 9552: Distribution of Link-State and + Traffic Engineering Information Using BGP, + Section 5.2.1."; + } + + leaf router-id { + type ietf-rt-t:router-id; + description + "Router ID."; + reference + "RFC 9552: Distribution of Link-State and + Traffic Engineering Information Using BGP, + Section 5.2.1."; + } + + leaf dr-identifier { + type inet:ipv4-address; + description + "Designated Router (DR) Identifier."; + reference + "RFC 9552: Distribution of Link-State and + Traffic Engineering Information Using BGP, + Section 5.2.1."; + } + + leaf as { + type inet:as-number; + description + "Autonomous System (AS) number associated with the + BGP process originating the NLRI."; + reference + "RFC 9552: Distribution of Link-State and + Traffic Engineering Information Using BGP, + Section 5.2.1."; + } + + uses bgp-ls-topo-node-attr; + } + + list isis-node { + key "system-id psn-id as"; + description + "List of node types"; + + leaf system-id { + type ietf-isis-t:system-id; + description + "System ID."; + reference + "RFC 9552: Distribution of Link-State and + Traffic Engineering Information Using BGP, + Section 5.2.1."; + } + + leaf psn-id { + type uint8; + description + "Pseudo Node Identifier (PSN ID)."; + reference + "RFC 9552: Distribution of Link-State and + Traffic Engineering Information Using BGP, + Section 5.2.1."; + } + + leaf as { + type inet:as-number; + description + "Autonomous System (AS) number associated with the + BGP process originating the NLRI."; + reference + "RFC 9552: Distribution of Link-State and + Traffic Engineering Information Using BGP, + Section 5.2.1."; + } + + uses bgp-ls-topo-node-attr; + } + } + + container unknowns { + description + "BGP-LS topology entries for unknown NLRIs -- active + when the nlri-type is unknown"; + list unknown { + key "nlri"; + description + "List of unknown types"; + + leaf nlri { + type yang:hex-string; + description + "NLRI."; + reference + "RFC 9552: Distribution of Link-State and Traffic + Engineering Information Using BGP, Section 5.2."; + } + + leaf attributes { + type yang:hex-string; + description + "Attributes."; + reference + "RFC 9552: Distribution of Link-State and Traffic + Engineering Information Using BGP, Section 5.3."; + } + } + } + } + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-neighbor@2024-10-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-neighbor@2026-03-02.yang similarity index 52% rename from experimental/ietf-extracted-YANG-modules/ietf-bgp-neighbor@2024-10-21.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bgp-neighbor@2026-03-02.yang index 391d396d4..ea70fc73d 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bgp-neighbor@2024-10-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-neighbor@2026-03-02.yang @@ -7,7 +7,7 @@ submodule ietf-bgp-neighbor { import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types."; + "RFC 9911: Common YANG Data Types."; } import iana-bgp-types { @@ -20,9 +20,6 @@ submodule ietf-bgp-neighbor { include ietf-bgp-common; include ietf-bgp-common-multiprotocol; - include ietf-bgp-common-structure; - - // meta organization "IETF IDR Working Group"; @@ -33,7 +30,7 @@ submodule ietf-bgp-neighbor { Authors: Mahesh Jethanandani (mjethanandani at gmail.com), Keyur Patel (keyur at arrcus.com), Susan Hares (shares at ndzh.com), - Jeffrey Haas (jhaas at juniper.net)."; + Jeffrey Haas (jeffrey.haas at hpe.com)."; description "This sub-module contains groupings that are specific to the @@ -59,7 +56,7 @@ submodule ietf-bgp-neighbor { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2024-10-21 { + revision 2026-03-02 { description "Initial Version"; reference @@ -85,27 +82,60 @@ submodule ietf-bgp-neighbor { a session restart may be required in order to negotiate the new capability."; } + container prefixes { config false; description "Prefix counters for the AFI/SAFI in this BGP session"; + + leaf received-pre-policy { + type yang:zero-based-counter32; + description + "The number of prefixes that are received from the + neighbor before applying any policies. This count is the + number of prefixes present in the pre-policy + adj-rib-in-pre table for this AFI/SAFI."; + } + leaf received { type yang:zero-based-counter32; description - "The number of prefixes received from the neighbor"; + "The number of prefixes that are received from the + neighbor after applying any policies. This count is the + number of prefixes present in the adj-rib-in-post table + for this AFI/SAFI."; } + leaf sent { type yang:zero-based-counter32; description - "The number of prefixes advertised to the neighbor"; + "The number of prefixes that are advertised to the + neighbor after applying any policies. This count is the + number of prefixes present in the adj-rib-out-post table + for this AFI/SAFI."; } + leaf installed { type yang:gauge32; description - "The number of advertised prefixes installed in the - Loc-RIB"; + "The number of prefixes received from the neighbor for + this AFI/SAFI that are installed in loc-rib table."; + } + + leaf installed-multiple-paths { + type yang:gauge32; + description + "The number of prefixes received from the neighbor for + this AFI/SAFI that are used for forwarding. These + include route that are: + + - 'elibigle-route' is true. + - 'best-path' true, or the implementation installs this + route as part of multiple path load balancing + procedures."; } } + container graceful-restart { if-feature "bt:graceful-restart"; description @@ -170,4 +200,99 @@ submodule ietf-bgp-neighbor { uses bgp-neighbor-use-multiple-paths; } } + + grouping bgp-neighbor-messages-common { + description + "BGP neighbor message counters common to received and sent + messages."; + + leaf total { + type yang:zero-based-counter32; + description + "Total number of BGP messages from this neighbor"; + reference + "RFC 4273: Definitions of Managed Objects for BGP-4, + bgpPeerIn/OutTotalMessages."; + } + leaf updates { + type yang:zero-based-counter32; + description + "Number of BGP UPDATE messages for this neighbor."; + reference + "RFC 4273: Definitions of Managed Objects for BGP-4, + bgpPeerIn/OutUpdates."; + } + leaf update-time { + type yang:timeticks; + description + "Timestamp for the last BGP UPDATE message for the peer. + + The value is the timestamp in seconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 4.3 + RFC 4271: A Border Gateway Protocol 4 (BGP-4), Established + state."; + } + leaf notifications { + type yang:zero-based-counter32; + description + "Number of BGP NOTIFICATION messages indicating an error + condition has happend for this peer."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), + Section 4.5."; + } + + list afi-safis { + key "afi-safi-name"; + description + "Per-AFI-SAFI message counters"; + + leaf afi-safi-name { + type identityref { + base bt:afi-safi-type; + } + description + "AFI-SAFI for these message counters."; + } + + leaf updates { + type yang:zero-based-counter32; + description + "Number of BGP UPDATE messages per-AFI-SAFI that may be + carried in UPDATE (AFI-SAFI 1-1), MP_REACH_NLRI or + MP_UNREACH_NLRI. This counter is a subset of the total + updates."; + reference + "RFC 4271, Section 4.3: A Border Gateway Protocol 4 + (BGP-4). + RFC 4760, Sections 3-4: Multiprotocol Extensions for + BGP-4."; + } + leaf route-refresh { + if-feature "bt:route-refresh"; + type yang:zero-based-counter32; + description + "Number of BGP ROUTE-REFRESH messages for this peer for + this AFI/SAFI. When enhanced route refresh is supported, + only subtype 0 is included in this counter."; + reference + "RFC 2918: Route Refresh Capability for BGP-4. + RFC 7313: Enhanced Route Refresh Capability for BGP-4."; + } + + leaf end-of-rib { + type yang:zero-based-counter32; + description + "BGP speakers that are capable of exchanging End-of-RIB + markers for a given AFI-SAFI do so by sending an empty + UPDATE or empty MP_UNREACH_NLRI message. This counter + applies to the subset of BGP updates that are End-of-RIB + markers."; + reference + "RFC 4724, Section 2: Graceful Restart Mechanism for BGP"; + } + } + } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-rib-attributes@2024-10-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-rib-attributes@2026-03-02.yang similarity index 97% rename from experimental/ietf-extracted-YANG-modules/ietf-bgp-rib-attributes@2024-10-21.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bgp-rib-attributes@2026-03-02.yang index dce4c3101..36353dfb0 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bgp-rib-attributes@2024-10-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-rib-attributes@2026-03-02.yang @@ -19,11 +19,9 @@ submodule ietf-bgp-rib-attributes { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types."; + "RFC 9911: Common YANG Data Types."; } - // meta - organization "IETF IDR Working Group"; contact @@ -33,7 +31,7 @@ submodule ietf-bgp-rib-attributes { Authors: Mahesh Jethanandani (mjethanandani at gmail.com), Keyur Patel (keyur at arrcus.com), Susan Hares (shares at ndzh.com), - Jeffrey Haas (jhaas at juniper.net)."; + Jeffrey Haas (jeffrey.haas at hpe.com)."; description "This submodule contains common data definitions for BGP @@ -59,7 +57,7 @@ submodule ietf-bgp-rib-attributes { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2024-10-21 { + revision 2026-03-02 { description "Initial version"; reference @@ -71,9 +69,7 @@ submodule ietf-bgp-rib-attributes { "Data for representing BGP AS-PATH segment"; leaf type { - type identityref { - base bt:as-path-segment-type; - } + type bt:as-path-segment-type; description "The type of AS-PATH segment"; } @@ -83,7 +79,6 @@ submodule ietf-bgp-rib-attributes { "List of the AS numbers in the AS-PATH segment"; } } - grouping bgp-unknown-attr-top { description "Unknown path attributes that are not expected to be shared diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-rib-tables@2024-10-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-rib-tables@2026-03-02.yang similarity index 98% rename from experimental/ietf-extracted-YANG-modules/ietf-bgp-rib-tables@2024-10-21.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bgp-rib-tables@2026-03-02.yang index d042de326..14d7638be 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bgp-rib-tables@2024-10-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-rib-tables@2026-03-02.yang @@ -9,12 +9,12 @@ submodule ietf-bgp-rib-tables { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types."; + "RFC 9911: Common YANG Data Types."; } import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types."; + "RFC 9911: Common YANG Data Types."; } import ietf-routing { prefix rt; @@ -42,7 +42,8 @@ submodule ietf-bgp-rib-tables { Authors: Mahesh Jethanandani (mjethanandani at gmail.com), Keyur Patel (keyur at arrcus.com), Susan Hares (shares at ndzh.com, - Jeffrey Haas (jhaas at juniper.net)."; + Jeffrey Haas (jeffrey.haas at hpe.com)."; + description "This submodule contains structural data definitions for BGP routing tables. @@ -67,7 +68,7 @@ submodule ietf-bgp-rib-tables { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2024-10-21 { + revision 2026-03-02 { description "Initial Version"; reference @@ -139,6 +140,7 @@ submodule ietf-bgp-rib-tables { policy filtering or bestpath selection"; } } + grouping bgp-adj-rib-common-attr-refs { description "Definitions of common references to attribute sets for diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-rib@2024-10-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-rib@2026-03-02.yang similarity index 97% rename from experimental/ietf-extracted-YANG-modules/ietf-bgp-rib@2024-10-21.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bgp-rib@2026-03-02.yang index c95bbf58c..4e417b568 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bgp-rib@2024-10-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-rib@2026-03-02.yang @@ -3,7 +3,6 @@ submodule ietf-bgp-rib { belongs-to ietf-bgp { prefix bgp; } - /* * Import and Include */ @@ -16,12 +15,12 @@ submodule ietf-bgp-rib { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Types."; + "RFC 9911: Common YANG Types."; } import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Types."; + "RFC 9911: Common YANG Types."; } include ietf-bgp-rib-tables; @@ -41,7 +40,7 @@ submodule ietf-bgp-rib { Authors: Mahesh Jethanandani (mjethanandani at gmail.com), Keyur Patel (keyur at arrcus.com), Susan Hares (shares at ndzh.com), - Jeffrey Haas (jhaas at juniper dot net)."; + Jeffrey Haas (jeffrey.haas at hpe.com)."; description "Defines a submodule for representing BGP Routing Information @@ -59,7 +58,7 @@ submodule ietf-bgp-rib { rules has been applied. This can be considered the 'raw' routes from a given neighbor. - adj-rib-in-post: This table is a per-neighbor table containing + adj-rib-in-post: This is a per-neighbor table containing the routes received from the neighbor that are eligible for best-path selection after local input policy rules have been applied. The 'best-path' leaf is attached to the route selected @@ -68,17 +67,12 @@ submodule ietf-bgp-rib { when local configuration determines that the BGP best-path will be used for that destination. - adj-rib-in-post: This is a per-neighbor table containing the - routes received from the neighbor that are eligible for - best-path selection after local input policy rules have been - applied. - adj-rib-out-pre: This is a per-neighbor table containing routes - eligible for sending (advertising) to the neighbor before output + eligible to be sent (advertised) to the neighbor before output policy rules have been applied. adj-rib-out-post: This is a per-neighbor table containing routes - eligible for sending (advertising) to the neighbor after output + eligible to be sent (advertised) to the neighbor after output policy rules have been applied. Copyright (c) 2023 IETF Trust and the persons identified as @@ -101,7 +95,7 @@ submodule ietf-bgp-rib { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2024-10-21 { + revision 2026-03-02 { description "Initial Version"; reference @@ -140,8 +134,26 @@ submodule ietf-bgp-rib { local router is 4-octet capable."; reference "RFC 4271: A Border Gateway Protocol 4 (BGP-4), - RFC 6793: BGP Support for Four-octet AS Number Space - RFC 5065: Autonomous System Confederations for BGP."; + RFC 5065: Autonomous System Confederations for BGP, + RFC 6793: BGP Support for Four-octet AS Number Space."; + list segment { + config false; + uses bgp-as-path-segment; + description + "List of AS PATH segments"; + } + } + container as4-path { + description + "This is the path encoded with 4-octet + AS numbers in the optional transitive AS4_PATH attribute. + This value is populated with the received or sent + attribute in Adj-RIB-In or Adj-RIB-Out, respectively. + It should not be populated in Loc-RIB since the Loc-RIB + is expected to store the effective AS-Path in the + as-path leaf regardless of being 4-octet or 2-octet."; + reference + "RFC 6793: BGP Support for Four-octet AS Number Space"; list segment { config false; uses bgp-as-path-segment; @@ -190,24 +202,6 @@ submodule ietf-bgp-rib { "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 5.1.5."; } - container as4-path { - description - "This is the path encoded with 4-octet - AS numbers in the optional transitive AS4_PATH attribute. - This value is populated with the received or sent - attribute in Adj-RIB-In or Adj-RIB-Out, respectively. - It should not be populated in Loc-RIB since the Loc-RIB - is expected to store the effective AS-Path in the - as-path leaf regardless of being 4-octet or 2-octet."; - reference - "RFC 6793: BGP Support for Four-octet AS Number Space"; - list segment { - config false; - uses bgp-as-path-segment; - description - "List of AS PATH segments"; - } - } container aggregator { config false; description @@ -314,6 +308,7 @@ submodule ietf-bgp-rib { } } } + grouping attr-sets { description "A grouping for all sets of path attributes."; @@ -488,7 +483,6 @@ submodule ietf-bgp-rib { } } } - container neighbors { config false; description diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp@2024-10-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp@2026-03-02.yang similarity index 71% rename from experimental/ietf-extracted-YANG-modules/ietf-bgp@2024-10-21.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bgp@2026-03-02.yang index 7ecd0b231..77544394f 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bgp@2024-10-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp@2026-03-02.yang @@ -18,11 +18,6 @@ module ietf-bgp { reference "RFC 9067: A YANG Data Model for Routing Policy."; } - import iana-bgp-notification { - prefix bn; - reference - "RFC XXXX: YANG Model for Border Gateway Protocol (BGP-4)."; - } import iana-bgp-types { prefix bt; reference @@ -31,36 +26,36 @@ module ietf-bgp { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types."; + "RFC 9911: Common YANG Data Types."; } import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types."; + "RFC 9911: Common YANG Data Types."; } include ietf-bgp-capabilities { - revision-date 2024-10-21; + revision-date 2026-03-02; } include ietf-bgp-common { - revision-date 2024-10-21; + revision-date 2026-03-02; } - include ietf-bgp-common-multiprotocol { - revision-date 2024-10-21; + include ietf-bgp-common-errors { + revision-date 2026-03-02; } - include ietf-bgp-common-structure { - revision-date 2024-10-21; + include ietf-bgp-common-multiprotocol { + revision-date 2026-03-02; } include ietf-bgp-neighbor { - revision-date 2024-10-21; + revision-date 2026-03-02; } include ietf-bgp-rib { - revision-date 2024-10-21; + revision-date 2026-03-02; } include ietf-bgp-rib-attributes { - revision-date 2024-10-21; + revision-date 2026-03-02; } include ietf-bgp-rib-tables { - revision-date 2024-10-21; + revision-date 2026-03-02; } organization @@ -72,7 +67,7 @@ module ietf-bgp { Authors: Mahesh Jethanandani (mjethanandani at gmail.com), Keyur Patel (keyur at arrcus.com), Susan Hares (shares at ndzh.com), - Jeffrey Haas (jhaas at juniper.net)."; + Jeffrey Haas (jeffrey.haas at hpe.com)."; description "This module describes a YANG model for BGP protocol @@ -86,6 +81,7 @@ module ietf-bgp { This model supports the following BGP configuration level hierarchy: + BGP | +-> [ global BGP configuration ] @@ -118,7 +114,7 @@ module ietf-bgp { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2024-10-21 { + revision 2026-03-02 { description "Initial Version"; reference @@ -134,125 +130,6 @@ module ietf-bgp { description "BGP protocol."; } - /* - * Groupings - */ - - grouping bgp-errors-common { - description - "BGP NOTIFICATION state that is common in the sent and received - direction."; - - leaf last-notification { - type yang:date-and-time; - description - "The timestamp indicates the time that a BGP - NOTIFICATION message was last handled."; - reference - "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section - 4.5."; - } - leaf last-error { - type identityref { - base bn:bgp-notification; - } - description - "The last NOTIFICATION error for the peer on this - connection. If no identity is registered for the - Error code / Error subcode, this leaf contains the most - applicable identity for the BGP NOTIFICATION base code. - - The last-error-code and last-error-subcode will always have - the information received in the NOTIFICATION PDU."; - reference - "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section - 4.5."; - } - leaf last-error-code { - type uint8; - description - "The last NOTIFICATION Error code for the peer on - this connection."; - reference - "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section - 4.5."; - } - leaf last-error-subcode { - type uint8; - description - "The last NOTIFICATION Error subcode for the peer on - this connection."; - reference - "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section - 4.5."; - } - } - grouping bgp-errors-common-data { - description - "BGP NOTIFICATION data state that is common in the sent and - received direction."; - - leaf last-error-data { - type binary { - length "0..65535"; - } - description - "Content of the BGP NOTIFICATION PDU's Data field. This data - is NOTIFICATION Error code / Error subcode specific."; - reference - "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section - 4.5."; - } - } - - grouping bgp-encapsulated-errors-common { - description - "BGP NOTIFICATION state that is common in the sent and received - direction that has been encapsulated in a CEASE/HARD RESET - NOTIFICATION. - - Note that these leaves are only present when carrying the RFC - 8538 encapsulated NOTIFICATION state. In this case, - the last-error-data leaf will carry the encapsulated Data."; - - leaf last-encapsulated-error { - type identityref { - base bn:bgp-notification; - } - description - "The last RFC 8538 encapsulated NOTIFICATION error for the - peer on this connection. If no identity is registered for - the Error code / Error subcode, this leaf contains the most - applicable identity for the BGP NOTIFICATION base code. - - The last-encapsulated-error-code and - last-encapsulated-error-subcode will always have the - encapsulated information received in the CEASE/HARD RESET - NOTIFICATION PDU's encapsulated ErrCode and Subcode - fields."; - reference - "RFC 8538: Notification Message Support for BGP Graceful - Restart, Section 3.1."; - } - leaf last-encapsulated-error-code { - type uint8; - description - "The last RFC 8538 encapsulated NOTIFICATION Error code for - the peer on this connection."; - reference - "RFC 8538: Notification Message Support for BGP Graceful - Restart, Section 3.1."; - } - leaf last-encapsulated-error-subcode { - type uint8; - description - "The last RFC 8538 encapsulated NOTIFICATION Error subcode - for the peer on this connection."; - reference - "RFC 8538: Notification Message Support for BGP Graceful - Restart, Section 3.1."; - } - } /* * Containers @@ -272,7 +149,7 @@ module ietf-bgp { description "Top-level configuration for the BGP router."; container global { - presence "Enables global configuration of BGP"; + presence "Enables global configuration of BGP."; description "Global configuration for the BGP router."; leaf as { @@ -280,7 +157,36 @@ module ietf-bgp { mandatory true; description "Local autonomous system number of the router. Uses - the 32-bit as-number type from the model in RFC 6991."; + the 32-bit as-number type from the model in RFC 9911."; + } + leaf treat-as-withdraw { + type boolean; + description + "Specify whether erroneous UPDATE messages for which the + NLRI can be extracted are treated as though the NLRI is + withdrawn - avoiding session reset. The suggested + implementation default is true."; + reference + "RFC 7606: Revised Error Handling for BGP UPDATE + Messages."; + } + leaf enforce-first-as { + type boolean; + description + "When set to true, the leftmost AS in the AS_PATH of BGP + UPDATE messages received from external peers MUST be + equal to autonomous system number of the peer that sent + the message. + + If the check determines they are not equal and + treat-as-withdraw is false, a BGP NOTIFICATION is sent. + If treat-as-withdraw is true, the routes will be + withdraw without and no NOTIFICATION is sent."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), + Section 6.3. + RFC 7606: Revised Error Handling for BGP UPDATE + Messages."; } leaf identifier { type yang:dotted-quad; @@ -294,6 +200,7 @@ module ietf-bgp { "RFC 6286: AS-Wide Unique BGP ID for BGP-4. Section 2.1"; } container distance { + if-feature "bt:distance"; description "Administrative distances (or preferences) assigned to routes received from different sources (external, and @@ -320,22 +227,26 @@ module ietf-bgp { "Configuration options specifying parameters when the local router is within an autonomous system which is part of a BGP confederation."; - leaf enabled { - type boolean; - description - "When this leaf is set to true it indicates that - the local-AS is part of a BGP confederation."; - } + reference + "RFC 5065: Autonomous System Confederations for BGP."; leaf identifier { type inet:as-number; description - "Confederation identifier for the autonomous system."; + "Confederation identifier for the autonomous system. + Setting the identifier indicates that the local-AS is + part of the BGP confederation."; + reference + "RFC 5065: Autonomous System Confederations for BGP, + Section 1.2."; } leaf-list member-as { type inet:as-number; description - "Remote autonomous systems that are to be treated + "Autonomous system numbers that are to be treated as part of the local confederation."; + reference + "RFC 5065: Autonomous System Confederations for BGP, + Section 1.2."; } } container graceful-restart { @@ -369,7 +280,7 @@ module ietf-bgp { uses mp-afi-safi-graceful-restart-config; } uses route-selection-options; - uses structure-add-paths; + uses add-paths; uses global-group-use-multiple-paths; uses mp-all-afi-safi-list-contents; } @@ -449,8 +360,8 @@ module ietf-bgp { description "The BGP Identifier of this entry's BGP peer. This entry MUST be 0.0.0.0 unless the - session state is in the openconfirm or the - established state."; + session state is in the OpenConfirm or the + Established state."; reference "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 4.2, 'BGP Identifier'."; @@ -495,7 +406,7 @@ module ietf-bgp { if-feature "bt:graceful-restart"; description "Parameters relating the graceful restart mechanism for - BGP"; + BGP."; reference "RFC 4724: Graceful Restart Mechanism for BGP."; uses graceful-restart-config; @@ -610,8 +521,7 @@ module ietf-bgp { established."; } } - // notification does not like a non-config statement. - // config false; + config false; description "The BGP peer connection state."; reference @@ -682,115 +592,46 @@ module ietf-bgp { } container messages { description - "Counters for BGP messages sent and received from the - neighbor"; - leaf total-received { - type yang:zero-based-counter32; - description - "Total number of BGP messages received from this - neighbor"; - reference - "RFC 4273: Definitions of Managed Objects for - BGP-4, bgpPeerInTotalMessages."; - } - leaf total-sent { - type yang:zero-based-counter32; + "Counters for BGP messages sent to and received from + the neighbor"; + container received { description - "Total number of BGP messages sent do this - neighbor"; - reference - "RFC 4273: Definitions of Managed Objects for - BGP-4, bgpPeerOutTotalMessages."; - } - leaf updates-received { - type yang:zero-based-counter32; - description - "Number of BGP UPDATE messages received from this + "BGP messages counters received from this neighbor."; - reference - "RFC 4273: Definitions of Managed Objects for - BGP-4, bgpPeerInUpdates."; - } - leaf updates-sent { - type yang:zero-based-counter32; - description - "Number of BGP UPDATE messages sent to this - neighbor"; - reference - "RFC 4273: Definitions of Managed Objects for - BGP-4, bgpPeerOutUpdates."; + uses bgp-neighbor-messages-common; } - leaf erroneous-updates-withdrawn { - type yang:zero-based-counter32; - config false; - description - "The number of BGP UPDATE messages for which the - treat-as-withdraw mechanism has been applied based - on erroneous message contents."; - reference - "RFC 7606: Revised Error Handling for BGP UPDATE - Messages, Section 2."; - } - leaf erroneous-updates-attribute-discarded { - type yang:zero-based-counter32; - config false; - description - "The number of BGP UPDATE messages for which the - attribute discard mechanism has been applied based - on erroneous message contents."; - reference - "RFC 7606: Revised Error Handling for BGP UPDATE - Messages, Section 2."; - } - leaf in-update-elapsed-time { - type yang:gauge32; - units "seconds"; - description - "Elapsed time (in seconds) since the last BGP - UPDATE message was received from the peer. - Each time in-updates is incremented, - the value of this object is set to zero (0)."; - reference - "RFC 4271: A Border Gateway Protocol 4 (BGP-4), - Section 4.3 - RFC 4271: A Border Gateway Protocol 4 (BGP-4), - Established state."; - } - leaf notifications-received { - type yang:zero-based-counter32; - description - "Number of BGP NOTIFICATION messages indicating an - error condition has occurred exchanged received - from this peer."; - reference - "RFC 4271: A Border Gateway Protocol 4 (BGP-4), - Section 4.5."; - } - leaf notifications-sent { - type yang:zero-based-counter32; - description - "Number of BGP NOTIFICATION messages indicating an - error condition has occurred exchanged sent to - this peer."; - reference - "RFC 4271: A Border Gateway Protocol 4 (BGP-4), - Section 4.5."; - } - leaf route-refreshes-received { - type yang:zero-based-counter32; + + container sent { description - "Number of BGP ROUTE-REFRESH messages received from - this peer."; - reference - "RFC 2918: Route Refresh Capability for BGP-4."; + "BGP messages counters sent to this neighbor."; + uses bgp-neighbor-messages-common; } - leaf route-refreshes-sent { - type yang:zero-based-counter32; + + container errors { description - "Number of BGP ROUTE-REFRESH messages sent to - this peer."; - reference - "RFC 2918: Route Refresh Capability for BGP-4."; + "BGP errors counted vs. this neighbor."; + leaf erroneous-updates-withdrawn { + type yang:zero-based-counter32; + config false; + description + "The number of BGP UPDATE messages for which the + treat-as-withdraw mechanism has been applied + based on erroneous message contents."; + reference + "RFC 7606: Revised Error Handling for BGP UPDATE + Messages, Section 2."; + } + leaf erroneous-updates-attribute-discarded { + type yang:zero-based-counter32; + config false; + description + "The number of BGP UPDATE messages for which the + attribute discard mechanism has been applied + based on erroneous message contents."; + reference + "RFC 7606: Revised Error Handling for BGP UPDATE + Messages, Section 2."; + } } } container queues { @@ -843,12 +684,12 @@ module ietf-bgp { path "../../neighbor/remote-address"; } description - "IP address of the neighbor that went into established + "IP address of the neighbor that went into Established state."; } description "The established event is generated - when the BGP FSM enters the established state."; + when the BGP FSM enters the Established state."; } notification backward-transition { @@ -858,7 +699,7 @@ module ietf-bgp { } description "IP address of the neighbor that changed its state from - established state."; + Established state."; } container notification-received { description @@ -880,8 +721,8 @@ module ietf-bgp { } description "The backward-transition event is - generated when the BGP FSM moves from a higher - numbered state to a lower numbered state."; + generated when the BGP FSM moves out of the + Established state."; } action clear { if-feature "bt:clear-neighbors"; @@ -970,13 +811,13 @@ module ietf-bgp { } uses neighbor-group-config; - uses structure-dynamic-peers; + uses dynamic-peers; container graceful-restart { if-feature "bt:graceful-restart"; description "Parameters relating the graceful restart mechanism for - BGP"; + BGP."; reference "RFC 4724: Graceful Restart Mechanism for BGP."; uses graceful-restart-config; @@ -1008,7 +849,7 @@ module ietf-bgp { "Parameters relating to BGP graceful-restart"; uses mp-afi-safi-graceful-restart-config; } - uses structure-add-paths; + uses add-paths; uses bgp-neighbor-use-multiple-paths; uses mp-all-afi-safi-list-contents; } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bmp-bgp-rib-attributes@2026-02-09.yang b/experimental/ietf-extracted-YANG-modules/ietf-bmp-bgp-rib-attributes@2026-02-09.yang new file mode 100644 index 000000000..16d79754d --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-bmp-bgp-rib-attributes@2026-02-09.yang @@ -0,0 +1,506 @@ +submodule ietf-bmp-bgp-rib-attributes { + yang-version 1.1; + belongs-to ietf-bmp-telemetry-message { + prefix bmptm; + } + + // import some basic types + import iana-bgp-types { + prefix bt; + reference + "RFC XXXX: YANG Model for Border Gateway Protocol (BGP-4)."; + } + import iana-bgp-community-types { + prefix bct; + reference + "RFC XXXX: YANG Model for Border Gateway Protocol (BGP-4)."; + } + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types."; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Types."; + } + + // meta + organization + "IETF Draft"; + contact + "Author: Thomas Graf + + Paolo Lucente + + Leonardo Rodoni + "; + + description + "This submodule contains common data definitions for BGP + attributes for use in BGP RIB tables. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + revision 2026-02-09 { + description + "Initial version"; + reference + "RFC XXXX"; + } + + grouping bgp-common-route-attributes { + description + "BGP path attributes and communities."; + uses bgp-path-attributes; + uses bgp-community-attr-state; + uses ext-community-attributes; + uses ipv6-ext-community-attributes; + uses large-community-attributes; + } + + grouping bgp-path-attributes { + description + "A grouping for all BGP Path Attribute parameters."; + + container attributes { + description + "A container for attribute parameters."; + leaf origin { + type bt:bgp-origin-attr-type; + description + "BGP attribute defining the origin of the path + information."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 5.1.1."; + } + container as-path { + description + "Enclosing container for the list of AS path segments. + + In the Adj-RIB-In or Adj-RIB-Out, this list should show + the received or sent AS_PATH, respectively. For + example, if the local router is not 4-byte capable, this + value should consist of 2-octet ASNs or the AS_TRANS + (AS 23456) values received or sent in BGP updates. + + In the Loc-RIB, this list should reflect the effective + AS path for the route, e.g., a 4-octet value if the + local router is 4-octet capable."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), + RFC 6793: BGP Support for Four-octet AS Number Space + RFC 5065: Autonomous System Confederations for BGP."; + list segment { + config false; + uses bgp-as-path-segment; + description + "List of AS PATH segments"; + } + } + leaf next-hop { + type inet:ip-address; + description + "BGP next hop attribute defining the IP address of the + router that should be used as the next hop to the + destination. Used when the BGP routes' nexthop for that + AFI/SAFI can be represented as an IPv4/IPv6 address."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 5.1.3."; + } + leaf link-local-next-hop { + type inet:ipv6-address; + description + "When both a global and a link-local next-hop are sent + when following RFC 2545 procedures, this leaf contains + the link-local next-hop."; + reference + "RFC 2545: Use of BGP-4 Multiprotocol Extensions for IPv6 + Inter-Domain Routing."; + } + leaf med { + type uint32; + description + "BGP multi-exit discriminator attribute used in the BGP + route selection process."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 5.1.4."; + } + leaf local-pref { + type uint32; + description + "BGP local preference attribute sent to internal peers to + indicate the degree of preference for externally learned + routes. The route with the highest local preference + value is preferred."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 5.1.5."; + } + container as4-path { + description + "This is the path encoded with 4-octet + AS numbers in the optional transitive AS4_PATH attribute. + This value is populated with the received or sent + attribute in Adj-RIB-In or Adj-RIB-Out, respectively. + It should not be populated in Loc-RIB since the Loc-RIB + is expected to store the effective AS-Path in the + as-path leaf regardless of being 4-octet or 2-octet."; + reference + "RFC 6793: BGP Support for Four-octet AS Number Space"; + list segment { + config false; + uses bgp-as-path-segment; + description + "List of AS PATH segments"; + } + } + container aggregator { + config false; + description + "BGP attribute indicating the prefix has been + aggregated by the specified AS and router."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 5.1.7, + RFC 6793: BGP Support for Four-octet AS Number Space."; + leaf as { + type inet:as-number; + description + "AS number of the autonomous system that performed the + aggregation."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 4.3, Path Attributes (g)."; + } + leaf identifier { + type yang:dotted-quad; + description + "BGP Identifier of the router that performed the + aggregation."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 4.3, Path Attributes (g)."; + } + } + container aggregator4 { + config false; + description + "BGP attribute indicating the prefix has been + aggregated by the specified AS and router. + This value is populated with the received or sent + attribute in Adj-RIB-In or Adj-RIB-Out, respectively. + It should not be populated in Loc-RIB since the Loc-RIB + is expected to store the effective AGGREGATOR in the + aggregator/as leaf regardless of being 4-octet or + 2-octet."; + reference + "RFC 6793: BGP Support for Four-octet AS Number Space."; + leaf as4 { + type inet:as-number; + description + "AS number of the autonomous system that performed the + aggregation (4-octet representation). This value is + populated if an upstream router is not 4-octet capable. + Its semantics are similar to the AS4_PATH optional + transitive attribute"; + reference + "RFC 6793: BGP Support for Four-octet AS Number Space, + Section 3, + RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 4.3, Path Attributes (g)."; + } + leaf identifier { + type yang:dotted-quad; + description + "BGP Identifier of the router that performed the + aggregation."; + reference + "RFC 6793: BGP Support for Four-octet AS Number Space, + Section 3, + RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 4.3, Path Attributes (g)."; + } + } + leaf atomic-aggregate { + type boolean; + description + "BGP attribute indicating that the prefix is an atomic + aggregate; i.e., the peer selected is a less specific + route without selecting a more specific route that is + subsumed by it."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section + 5.1.6."; + } + leaf originator-id { + type yang:dotted-quad; + description + "BGP attribute that provides the id as an IPv4 address + of the originator of the announcement."; + reference + "RFC 4456: BGP Route Reflection: An Alternative to Full + Mesh Internal BGP (IBGP)."; + } + leaf-list cluster-list { + type yang:dotted-quad; + description + "Represents the reflection path that the route has + passed."; + reference + "RFC 4456: BGP Route Reflection: An Alternative to Full + Mesh Internal BGP (IBGP)."; + } + leaf aigp-metric { + type uint64; + description + "BGP path attribute representing the accumulated IGP + metric for the path"; + reference + "RFC 7311: The Accumulated IGP Metric Attribute for BGP."; + } + } + } + + grouping bgp-as-path-segment { + description + "Data for representing BGP AS-PATH segment"; + + leaf type { + type identityref { + base bt:as-path-segment-type; + } + description + "The type of AS-PATH segment"; + } + leaf-list member { + type inet:as-number; + description + "List of the AS numbers in the AS-PATH segment"; + } + } + + grouping bgp-unknown-attr-top { + description + "Unknown path attributes that are not expected to be shared + across route entries, common to LOC-RIB and Adj-RIB"; + container unknown-attributes { + description + "Unknown path attributes that were received in the UPDATE + message which contained the prefix."; + + list unknown-attribute { + key "attr-type"; + description + "This list contains received attributes that are + unrecognized or unsupported by the local router. The list + may be empty."; + + leaf optional { + type boolean; + description + "Defines whether the attribute is optional (if + set to true) or well-known (if set to false). + Set in the high-order bit of the BGP attribute + flags octet."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4)."; + } + + leaf transitive { + type boolean; + description + "Defines whether an optional attribute is transitive + (if set to true) or non-transitive (if set to false). + For well-known attributes, the transitive flag must be + set to true. Set in the second high-order bit of the BGP + attribute flags octet."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4)."; + } + + leaf partial { + type boolean; + description + "Defines whether the information contained in the + optional transitive attribute is partial (if set to + true) or complete (if set to false). For well-known + attributes and for optional non-transitive attributes, + the partial flag must be set to false. Set in the third + high-order bit of the BGP attribute flags octet."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4)."; + } + + leaf extended { + type boolean; + description + "Defines whether the attribute length is one octet + (if set to false) or two octets (if set to true). Set in + the fourth high-order bit of the BGP attribute flags + octet."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4)."; + } + + leaf attr-type { + type uint8; + description + "1-octet value encoding the attribute type code"; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4)."; + } + + leaf attr-len { + type uint16; + description + "One or two octet attribute length field indicating the + length of the attribute data in octets. If the Extended + Length attribute flag is set, the length field is 2 + octets, otherwise it is 1 octet"; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4)."; + } + + leaf attr-value { + type binary { + length "0..65535"; + } + description + "Raw attribute value, not including the attribute + flags, type, or length. The maximum length + of the attribute value data is 2^16-1 per the max value + of the attr-len field (2 octets)."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4)."; + } + } + } + } + + grouping bgp-adj-rib-attr-state { + description + "Path attributes that are not expected to be shared across + route entries, specific to Adj-RIB"; + leaf path-id { + type uint32; + description + "When the BGP speaker supports advertisement of multiple + paths for a prefix, the path identifier is used to + uniquely identify a route based on the combination of the + prefix and path id. In the Adj-RIB-In, the path-id value is + the value received in the update message. In the Loc-RIB, + if used, it should represent a locally generated path-id + value for the corresponding route. In Adj-RIB-Out, it + should be the value sent to a neighbor when add-paths is + used, i.e., the capability has been negotiated."; + reference + "RFC 7911: Advertisement of Multiple Paths in BGP."; + } + } + + grouping bgp-community-attr-state { + description + "Common definition of BGP community attributes"; + leaf-list community { + type union { + type bct:bgp-well-known-community-type; + type bct:bgp-std-community-type; + } + description + "List of standard or well-known BGP community + attributes."; + } + } + + grouping ext-community-attributes { + description + "A grouping for all extended community parameters."; + + leaf-list ext-community { + type bct:bgp-ext-community-type; + description + "List of BGP extended community attributes. The received + extended community may be an explicitly modeled + type or unknown, represented by an 8-octet value + formatted according to RFC 4360."; + reference + "RFC 4360: BGP Extended Communities Attribute."; + } + + leaf-list ext-community-raw { + type string { + // raw with 8 octets + pattern + 'raw:([0-9A-F][0-9A-F]:){7}[0-9A-F][0-9A-F]'; + } + description + "ext-community type in raw format only."; + } + } + + grouping ipv6-ext-community-attributes { + description + "A grouping for all IPv6 extended community parameters."; + + leaf-list ipv6-ext-community { + type bct:bgp-ipv6-ext-community-type; + description + "List of BGP IPv6 extended community attributes. The received + IPv6 extended community may be an explicitly modeled + type or unknown, represented by an 20-octet value + formatted according to RFC 5701."; + reference + "RFC 5701: IPv6 Address Specific BGP Extended Community + Attribute, Section 3."; + } + + leaf-list ipv6-ext-community-raw { + type string { + // raw with 20 octets + pattern + 'ipv6-raw:' + + '([0-9A-Fa-f][0-9A-Fa-f]:){19}' + + '[0-9A-Fa-f][0-9A-Fa-f]'; + } + description + "IPv6 ext-community type in raw format only."; + } + } + + grouping large-community-attributes { + description + "A grouping for all large community parameters."; + + leaf-list large-community { + type bct:bgp-large-community-type; + description + "List of BGP large community attributes."; + reference + "RFC 8092: BGP Large Communities Attribute."; + } + } +} + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bmp-bgp-rib-tables@2026-02-09.yang b/experimental/ietf-extracted-YANG-modules/ietf-bmp-bgp-rib-tables@2026-02-09.yang new file mode 100644 index 000000000..307b18e6c --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-bmp-bgp-rib-tables@2026-02-09.yang @@ -0,0 +1,296 @@ +submodule ietf-bmp-bgp-rib-tables { + yang-version 1.1; + belongs-to ietf-bmp-telemetry-message { + prefix bmptm; + } + + // import some basic types + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types."; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types."; + } + import ietf-routing { + prefix rt; + reference + "RFC 8022: A YANG Data Model for Routing Management."; + } + import iana-bgp-rib-types { + prefix brt; + reference + "RFC XXXX: YANG module for Border Gateway Protocol (BGP-4)."; + } + + organization + "IETF Draft"; + contact + "Author: Thomas Graf + + Paolo Lucente + + Leonardo Rodoni + "; + + description + "This submodule contains structural data definitions for + BGP routing tables. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + revision 2026-02-09 { + description + "Initial Version"; + reference + "RFC XXXX"; + } + + grouping bgp-common-route-annotations-state { + description + "Data definitions for flags and other information attached + to routes in both LOC-RIB and Adj-RIB"; + leaf last-modified { + type yang:timeticks; + description + "Timestamp when this path was last modified. + + The value is the timestamp in seconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + } + leaf eligible-route { + type boolean; + description + "Indicates that the route is eligible for selection for the + best route in the Loc-Rib in BGP's Decision Process."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), + Section 9.1."; + } + leaf ineligible-reason { + type identityref { + base brt:ineligible-route-reason; + } + description + "If the route is ineligible for selection for the best route + in the Loc-Rib in BGP's Decision process, this indicates the + reason."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), + Section 9.1."; + } + } + + grouping bgp-adj-rib-in-post-route-annotations-state { + description + "Data definitions for information attached to routes in the + Adj-RIB-In post-policy table"; + leaf best-path { + type boolean; + default "false"; + description + "Current path was selected as the best path. Best path + should indicate that the route is present in BGP Loc-RIB."; + } + } + + grouping rib-ext-route-annotations { + description + "Extended annotations for routes in the routing tables"; + leaf reject-reason { + type union { + type identityref { + base brt:bgp-not-selected-bestpath; + } + type identityref { + base brt:bgp-not-selected-policy; + } + } + description + "Indicates the reason the route is not used, either due to + policy filtering or bestpath selection"; + } + } + + grouping bgp-loc-rib-common-keys { + description + "Common references used in keys for IPv4 and IPv6 + Loc-RIB entries."; + leaf origin { + type union { + type inet:ip-address; + type identityref { + base rt:routing-protocol; + } + } + description + "Indicates the origin of the route. If the route is learned + from a neighbor, this value is the neighbor address. If + the route was injected or redistributed from another + protocol, the origin indicates the source protocol for the + route."; + } + leaf path-id { + type uint32; + description + "If the route is learned from a neighbor, the path-id + corresponds to the path-id for the route in the + corresponding adj-rib-in-post table. If the route is + injected from another protocol, or the neighbor does not + support BGP add-paths, the path-id should be set + to zero, also the default value. + + However, YANG does not allow default values to be set + for parameters that form the key, so a default value + cannot be set here."; + } + } + + grouping ipv4-loc-rib-common { + description + "Common structural grouping for the IPv4 Loc-RIB table."; + container route { + config false; + description + "A single route entry in the Loc-RIB."; + leaf prefix { + type inet:ipv4-prefix; + mandatory true; + description + "The IPv4 prefix corresponding to the route."; + } + uses bgp-loc-rib-common-keys; + uses bgp-common-route-attributes; + uses bgp-common-route-annotations-state; + uses bgp-unknown-attr-top; + uses rib-ext-route-annotations; + } + } + + grouping ipv6-loc-rib-common { + description + "Common structural grouping for the IPv6 Loc-RIB table."; + container route { + config false; + description + "A single route entry in the Loc-RIB."; + leaf prefix { + type inet:ipv6-prefix; + mandatory true; + description + "The IPv6 prefix corresponding to the route."; + } + uses bgp-loc-rib-common-keys; + uses bgp-common-route-attributes; + uses bgp-common-route-annotations-state; + uses bgp-unknown-attr-top; + uses rib-ext-route-annotations; + } + } + + grouping ipv4-adj-rib-common { + description + "Common structural grouping for each IPv4 Adj-RIB table."; + container route { + config false; + description + "A single route entry in the IPv4 Adj-RIB table."; + leaf prefix { + type inet:ipv4-prefix; + description + "The IPv4 prefix corresponding to the route."; + } + uses bgp-adj-rib-attr-state; + uses bgp-common-route-attributes; + uses bgp-common-route-annotations-state; + uses bgp-unknown-attr-top; + uses rib-ext-route-annotations; + } + } + + grouping ipv4-adj-rib-in-post { + description + "Common structural grouping for the IPv4 Adj-RIB-In + post-policy table."; + container route { + config false; + description + "A single route entry in the IPv4 Adj-RIB-In post-policy table."; + leaf prefix { + type inet:ipv4-prefix; + description + "The IPv4 prefix corresponding to the route."; + } + uses bgp-adj-rib-attr-state; + uses bgp-common-route-attributes; + uses bgp-common-route-annotations-state; + uses bgp-adj-rib-in-post-route-annotations-state; + uses bgp-unknown-attr-top; + uses rib-ext-route-annotations; + } + } + + grouping ipv6-adj-rib-common { + description + "Common structural grouping for each IPv6 Adj-RIB table."; + container route { + config false; + description + "A single route entry in the IPv6 Adj-RIB table."; + leaf prefix { + type inet:ipv6-prefix; + description + "The IPv6 prefix corresponding to the route."; + } + uses bgp-adj-rib-attr-state; + uses bgp-common-route-attributes; + uses bgp-common-route-annotations-state; + uses bgp-unknown-attr-top; + uses rib-ext-route-annotations; + } + } + + grouping ipv6-adj-rib-in-post { + description + "Common structural grouping for the IPv6 Adj-RIB-In + post-policy table."; + container route { + config false; + description + "A single route entry in the IPv6 Adj-RIB-In post-policy table."; + leaf prefix { + type inet:ipv6-prefix; + description + "The IPv6 prefix corresponding to the route."; + } + uses bgp-adj-rib-attr-state; + uses bgp-common-route-attributes; + uses bgp-common-route-annotations-state; + uses bgp-adj-rib-in-post-route-annotations-state; + uses bgp-unknown-attr-top; + uses rib-ext-route-annotations; + } + } +} + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bmp-telemetry-message@2026-02-09.yang b/experimental/ietf-extracted-YANG-modules/ietf-bmp-telemetry-message@2026-02-09.yang new file mode 100644 index 000000000..bdc6984db --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-bmp-telemetry-message@2026-02-09.yang @@ -0,0 +1,340 @@ +module ietf-bmp-telemetry-message { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-bmp-telemetry-message"; + prefix bmptm; + + import ietf-telemetry-message { + prefix tm; + reference + "draft-netana-nmop-message-broker-telemetry-message: Extensible + YANG Model for Network Telemetry Messages"; + } + import ietf-inet-types { + prefix inet; + reference + "RFC 9911: Common YANG Data Types"; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 9911: Common YANG Data Types"; + } + import ietf-routing-types { + prefix rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area."; + } + import ietf-yang-structure-ext { + prefix sx; + reference + "RFC 8791: YANG Data Structure Extensions"; + } + include ietf-bmp-bgp-rib-entry { + revision-date 2026-02-09; + } + include ietf-bmp-bgp-rib-tables { + revision-date 2026-02-09; + } + include ietf-bmp-bgp-rib-attributes { + revision-date 2026-02-09; + } + + organization + "IETF Draft"; + contact + "Author: Thomas Graf + + Paolo Lucente + + Leonardo Rodoni + "; + + description + "Adds BMP specific subscription metadata to the data collection + protocol provenance of the ietf-telemetry-message envelope. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', + 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', + 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document + are to be interpreted as described in BCP 14 (RFC 2119) + (RFC 8174) when, and only when, they appear in all + capitals, as shown here. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, is permitted pursuant to, and subject to the license + terms contained in, the Revised BSD License set forth in Section + 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see the RFC + itself for full legal notices."; + + revision 2026-02-09 { + description + "Initial revision."; + reference + "RFC XXXX"; + } + + typedef peer-type { + type enumeration { + enum global-instance-peer { + value 0; + description + "Global Instance Peer"; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2."; + } + enum rd-instance-peer { + value 1; + description + "RD Instance Peer"; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2."; + } + enum local-instance-peer { + value 2; + description + "Local Instance Peer"; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2."; + } + enum loc-rib-instance-peer { + value 3; + description + "Loc-RIB Instance Peer"; + reference + "RFC 9069: Support for Local RIB in the BGP Monitoring Protocol (BMP)"; + } + } + description + "BMP Peer Type."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2."; + } + + grouping per-peer { + description + "BMP per-peer header."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2."; + leaf peer-type { + type peer-type; + description + "BMP peer type from per-peer header."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2."; + } + leaf peer-flags { + type uint8; + description + "BMP peer flags from per-peer header."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2."; + } + leaf peer-distinguisher { + type rt-types:route-distinguisher; + description + "BMP peer distinguisher from per-peer header."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2. + The routing instance on which the encapsulated PDU was + received."; + } + leaf peer-address { + type inet:ip-address; + description + "BMP peer IP address from per-peer header."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2. The + remote IP address associated with the TCP session over which + the encapsulated PDU was received."; + } + leaf peer-as { + type uint32; + description + "BMP peer autonomous system number from per-peer header. The + Autonomous System number of the peer from which the + encapsulated PDU was received."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2."; + } + leaf timestamp { + type yang:date-and-time; + description + "BMP timestamp from per-peer header. The time when the + encapsulated routes were received (one may also think of this + as the time when they were installed in the Adj-RIB-In)."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2."; + } + } + + grouping information { + description + "BMP Information."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.4."; + leaf string { + type string { + length "1..65535"; + } + description + "BMP string type. The Information field contains a free-form + UTF-8 string."; + } + leaf sys-descr { + type string { + length "1..65535"; + } + description + "BMP sysDescr type. The Information field contains an ASCII + string whose value MUST be set to be equal to the value of the + sysDescr MIB-II RFC 1213 object."; + } + leaf sys-name { + type string { + length "1..65535"; + } + description + "BMP sysName type. The Information field contains an ASCII + string whose value MUST be set to be equal to the value of the + sysName MIB-II RFC 1213 object."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2."; + } + } + + grouping termination { + description + "BMP Termination."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.5."; + leaf string { + type string { + length "1..65535"; + } + description + "BMP string type. The Information field contains a free-form + UTF-8 string."; + } + leaf reason { + type enumeration { + enum administratively-closed { + value 0; + } + enum unspecified { + value 1; + } + enum out-of-resources { + value 2; + } + enum redundant-connection { + value 3; + } + enum permanently-administratively-closed { + value 4; + } + } + } + } + + grouping mirroring { + description + "BMP Mirroring."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.7."; + leaf information { + type enumeration { + enum error-pdu { + value 0; + } + enum message-lost { + value 1; + } + } + } + } + + grouping statistics { + description + "BMP Statistics."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.8."; + leaf statistics-type { + type string { + } + description + "BMP statistics type. Defines the type of the statistic carried + in the Stat Data field."; + } + leaf statistics-data { + type uint64; + description + "BMP statistics data. Defines the value of the statistic."; + } + } + + sx:structure message { + description + "Augments telemetry-message-metadata with BMP specific + subscription metadata"; + + leaf version { + type uint8; + description + "BMP version from common header."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.1."; + } + choice message-type { + description + "BMP message type from common header."; + reference + "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.1."; + case route-monitoring { + container route-monitoring { + uses per-peer; + uses rib-entry; + } + } + case statistics-report { + container statistics-report { + uses per-peer; + uses statistics; + } + } + case peer-down-notification { + container peer-down-notification { + uses per-peer; + } + } + case peer-up-notification { + container peer-up-notification { + uses per-peer; + } + } + case initiation-message { + container initiation-message { + uses information; + } + } + case termination-message { + container termination-message { + uses termination; + } + } + case route-mirroring-message { + container route-mirroring-message { + uses per-peer; + uses rib-entry; + uses mirroring; + } + } + } + } +} + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-cats@2024-06-20.yang b/experimental/ietf-extracted-YANG-modules/ietf-cats@2024-06-20.yang deleted file mode 100644 index 0a8c85218..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-cats@2024-06-20.yang +++ /dev/null @@ -1,437 +0,0 @@ -module ietf-cats { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-cats"; - prefix cats; - - import ietf-inet-types { - prefix inet; - reference - "RFC 6991: Common YANG Data Types"; - } - - import ietf-routing-types { - prefix "rt-types"; - reference - "RFC 8294: Common YANG Data Types for the Routing Area"; - } - - import ietf-srv6-types { - prefix "srv6-types"; - } - - import ietf-interfaces { - prefix if; - } - - organization "IETF CATS"; - contact - "WG Web: - WG List: - Author: Huijuan Yao - - Author: Changwang Lin - - Author: Zhenqiang Li - - Author: Quan Xiong - - Author: Luis M. Contreras - - "; - - description - "This module describes a YANG model for CATS. - This YANG model conforms to the Network Management - Datastore Architecture (NMDA) as described in RFC 8342. - - 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). - - This version of this YANG module is part of RFC XXXX - (https://www.rfc-editor.org/info/rfcXXXX); - see the RFC itself for full legal notices. - - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', - 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT - RECOMMENDED', 'MAY', 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."; - - revision 2024-06-20 { - description - "Initial Version"; - reference - "RFC XXXX: YANG Data Model for CATS"; - } - - typedef cs-id { - type union { - type uint32; - type inet:ipv4-address; - type inet:ipv6-address; - } - description - "This type is for CATS CS-ID."; - } - - typedef csci-id { - type union { - type uint32; - type inet:ipv4-address; - type inet:ipv6-address; - } - description - "This type is for CATS CSCI-ID."; - } - - grouping service-policy-type { - description - "service policy type"; - leaf policy-type { - type enumeration { - enum base-on-affinity { - value 0; - description "base on affinity"; - } - enum base-on-sm-only { - value 1; - description "base on service metric only"; - } - enum base-on-sm-nm { - value 2; - description "base on service metric and network - metric"; - } - } - description "service policy type"; - } - } - container base { - description - "CATS base configuration."; - leaf enable { - type boolean; - description - "enable CATS"; - } - leaf update-interval { - type uint32; - description - "update-interval of CATS metric"; - } - leaf entry-limits { - type uint64; - description - "CATS metric entry limit"; - } - leaf flow-limits { - type uint64; - description - "CATS flow entry limit"; - } - leaf flow-timeout { - type uint32; - description - "CATS flow timeout when no flow"; - } - container service-policy { - description - "CATS sercice policy"; - leaf cs-id { - type cs-id; - description - "cs-id"; - } - uses service-policy-type; - } - } - - container traffic-classifiers { - description - "CATS traffic-classifier feature"; - list traffic-classifier { - key "cs-id"; - description - "CATS traffic-classifier feature"; - leaf cs-id { - type cs-id; - description - "CATS CS-ID"; - } - leaf description { - type string; - description - "description of this service, example: http"; - } - leaf server-port { - type uint16; - description - "server-port of the service."; - } - leaf protocol { - type uint16; - description - "protocol of the service."; - } - } - } - - container service-metrics { - description - "CATS service metric entry"; - list service-metric { - key "cs-id csci-id source-type"; - description - "CATS service metric entry"; - leaf cs-id { - type cs-id; - description - "CATS cs-id"; - } - leaf csci-id { - type csci-id; - description - "CATS csci-id"; - } - leaf source-type { - type enumeration { - enum static { - value 0; - description "static configuration"; - } - enum bgp { - value 1; - description "bgp protocol"; - } - } - description - "source-type of the service-metric"; - } - leaf priority { - type uint32; - description - "server priority"; - } - leaf affinity { - type uint32; - description - "server affinity"; - } - leaf location { - type inet:ip-address; - description - "server location"; - } - container service-metric { - description - "service metric"; - list metric { - key "metric-type"; - description "Different types of service."; - leaf metric-type { - type enumeration { - enum delay { - value 0; - description " Calculate the metric based on - transmission delay, where the metric value - is the delay time in milliseconds."; - } - enum service-ratio { - value 1; - description "Calculate the metric based on - business capacity, where the metric value is - the current capacity percentage."; - } - enum memory-ratio { - value 2; - description " Calculate the metric based on - memory utilization percentage, where the - metric value is the current memory - utilization percentage"; - } - } - description "metric type"; - } - leaf metric { - type uint32; - description "metric value"; - } - } - } - } - } - - grouping mpls-label-stack { - description - "Grouping for MPLS label stack"; - - list labels { - key "index"; - description - "Stack containing MPLS labels"; - - leaf index { - type uint32; - description "A unique ID of an MPLS label in labels - list"; - } - leaf label { - type rt-types:mpls-label; - description - "MPLS label value"; - } - } - } - - grouping srv6-sid-stack { - description - "Grouping for SRv6 label stack"; - - list sids { - key "index"; - description - "Stack containing SRv6 SIDs"; - - leaf index { - type uint32; - description "A unique ID of an SRv6 sid in sid list"; - } - leaf sid { - type srv6-types:srv6-sid; - description - "SRv6 sid value"; - } - } - } - grouping path-forwarding-info { - description - "cats forwarding path information"; - - leaf next-hop-address { - type inet:ip-address; - description "Nexthop address"; - } - leaf interface { - type if:interface-ref; - description "Outgoing interface handle"; - } - container sid-list { - description - "Outgoing sid stack"; - choice dataplanetype { - description - "Outgoing sids dataplane choice"; - case mpls { - uses mpls-label-stack; - } - case srv6 { - uses srv6-sid-stack; - } - } - } - } - - container forwarding-paths { - description - "Forwarding state of paths"; - list forwarding-path { - key "cs-id csci-id"; - description "Forwarding state of paths"; - leaf cs-id { - type cs-id; - description "CATS cs-id"; - } - leaf csci-id { - type csci-id; - description "CATS csci-id"; - } - uses service-policy-type; - leaf weight { - type uint32; - description "Path's weight for W-ECMP balancing"; - } - list forwarding-path-state { - key "path-id"; - description "CATS Forwarding path state"; - leaf path-id { - type uint8; - description "Primary path id"; - } - uses path-forwarding-info; - } - } - } - - container flow-entrys { - description "flow entry"; - list flow-entry { - key "source-address dest-address source-port dest-port - protocol"; - description "flow entry"; - leaf source-address { - type inet:ip-address; - description "source address of flow"; - } - leaf dest-address { - type inet:ip-address; - description "destination address of flow"; - } - leaf source-port { - type uint16; - description "source port of flow"; - } - leaf dest-port { - type uint16; - description "destination port of flow"; - } - leaf protocol { - type uint16; - description "protocol of flow"; - } - leaf cs-id { - type cs-id; - description "CATS cs-id"; - } - leaf csci-id { - type csci-id; - description "CATS csci-id"; - } - leaf affinity { - type uint32; - description "affinity"; - } - uses path-forwarding-info; - container flow-statistics { - description "flow statistics"; - leaf pkts { - type uint64; - description "pkts"; - } - leaf octets { - type uint64; - description "octets"; - } - } - } - } - - container notify { - description "event notify"; - leaf entry-limit-reached { - type boolean; - description "entry limit reached"; - } - leaf flow-limit-reached { - type boolean; - description "flow entry limit reached"; - } - } -} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-cats@2025-11-05.yang b/experimental/ietf-extracted-YANG-modules/ietf-cats@2025-11-05.yang new file mode 100644 index 000000000..7e114f3b4 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-cats@2025-11-05.yang @@ -0,0 +1,309 @@ +module ietf-cats { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-cats"; + prefix cats; + + import ietf-routing { + prefix rt; + reference + "RFC 8349: A YANG Data Model for Routing + Management (NMDA Version)"; + } + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + + organization + "IETF Computing-Aware Traffic Steering + (CATS) Working Group"; + contact + "WG Web: + WG List: + Author: Huijuan Yao + + Author: Changwang Lin + + Author: Zhenqiang Li + + Author: Quan Xiong + + Author: Luis M. Contreras + + "; + + description + "This module describes a YANG model for CATS. + This YANG model conforms to the Network Management + Datastore Architecture (NMDA) as described in RFC 8342. + + Copyright (c) 2025 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 + (https://www.rfc-editor.org/info/rfcXXXX); + see the RFC itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', + 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT + RECOMMENDED', 'MAY', 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."; + + revision 2025-11-05 { + description + "Initial Version"; + reference + "RFC XXXX: YANG Data Model for CATS"; + } + + typedef cs-id { + type union { + type uint32; + type inet:ipv4-address; + type inet:ipv6-address; + } + description + "This type is for CATS CS-ID."; + reference + "RFC XXXX: YANG Data Model for CATS"; + } + + typedef csci-id { + type union { + type uint32; + type inet:ipv4-address; + type inet:ipv6-address; + } + description + "This type is for CATS CSCI-ID."; + reference + "RFC XXXX: YANG Data Model for CATS"; + } + grouping service-policy-type { + description + "service policy type"; + leaf policy-type { + type enumeration { + enum base-on-affinity { + value 0; + description "base on affinity"; + } + enum base-on-sm-only { + value 1; + description "base on service metric only"; + } + enum base-on-nm-only { + value 2; + description "base on network metric only"; + } + enum base-on-sm-nm { + value 3; + description + "base on the combination of service metric and network + metric"; + } + } + description "service policy type"; + } + } + + augment "/rt:routing" { + description + "This augments the CATS configuration."; + container cats { + description + "Support for the CATS configuration."; + container base { + description + "CATS base configuration."; + leaf enable { + type boolean; + description + "enable CATS"; + } + leaf update-interval { + type uint32; + units "seconds"; + default "30"; + description + "Update interval of CATS metric. A value of 0 + indicates that metrics are sent only when a + significant change occurs and not on a periodic + basis."; + } + leaf metric-limits { + type uint32; + description + "CATS metric entry limit"; + } + leaf flow-limits { + type uint32; + description + "CATS flow entry limit"; + } + leaf flow-timeout { + type uint32; + units "seconds"; + default "120"; + description + "CATS flow timeout when no flow. A value of 0 means + that the flow does not time out due to inactivity + (i.e., infinite timeout), and must be terminated + explicitly (e.g., via signaling or administrative + action)."; + } + container service-policy { + description + "CATS service policy"; + leaf cs-id { + type cs-id; + description + "cs-id"; + } + uses service-policy-type; + } + } + + container traffic-classifiers { + description + "CATS traffic-classifier feature"; + list traffic-classifier { + key "cs-id"; + description + "CATS traffic-classifier feature"; + leaf cs-id { + type cs-id; + description + "CATS CS-ID"; + } + leaf description { + type string; + description + "description of this service, example: http"; + } + leaf server-port { + type uint16; + description + "server-port of the service, matches the + destination port in the IP packets of data + flows destined for the service."; + } + leaf protocol { + type uint8; + description + "protocol of the service."; + } + } + } + + container service-metrics { + description + "CATS service metric entry"; + list service-metric { + key "cs-id csci-id source-type"; + description + "CATS service metric entry"; + leaf cs-id { + type cs-id; + description + "CATS cs-id"; + } + leaf csci-id { + type csci-id; + description + "CATS csci-id"; + } + leaf source-type { + type enumeration { + enum static { + value 0; + description "static configuration"; + } + } + description + "source-type of the service compute-metric"; + } + leaf priority { + type uint8; + description + "server priority, the smaller the value, + the higher the priority."; + } + leaf affinity { + type uint8; + description + "server affinity, the higher the value, + the higher the affinity."; + } + leaf location { + type inet:ip-address; + description + "server location"; + } + container metrics { + description + "service metric"; + list metric { + key "metric-type"; + description "Different types of service."; + leaf metric-type { + type enumeration { + enum delay { + value 0; + description + "Calculate the metric based on transmission + delay, where the metric value is the delay + time in milliseconds."; + } + enum service-ratio { + value 1; + description + "Calculate the metric based on business + capacity, where the metric value is the + current capacity percentage."; + } + enum memory-ratio { + value 2; + description + "Calculate the metric based on memory + utilization percentage, where the metric + value is the current memory utilization + percentage"; + } + } + description "metric type"; + reference + "RFC YYYY: CATS Metrics Definition"; + } + leaf metric-value { + type uint32; + description "metric value"; + } + } + } + } + } + container notify { + description "event notify"; + leaf entry-limit-reached { + type boolean; + description "entry limit reached"; + } + leaf flow-limit-reached { + type boolean; + description "flow entry limit reached"; + } + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-coreconf@2024-03-04.yang b/experimental/ietf-extracted-YANG-modules/ietf-coreconf@2026-03-02.yang similarity index 86% rename from experimental/ietf-extracted-YANG-modules/ietf-coreconf@2024-03-04.yang rename to experimental/ietf-extracted-YANG-modules/ietf-coreconf@2026-03-02.yang index 8961e4358..425b9accc 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-coreconf@2024-03-04.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-coreconf@2026-03-02.yang @@ -10,12 +10,12 @@ module ietf-coreconf { "RFC 8342: Network Management Datastore Architecture (NMDA)"; } - import ietf-restconf { - prefix rc; + import ietf-yang-structure-ext { + prefix sx; description - "This import statement is required to access - the yang-data extension defined in RFC 8040."; - reference "RFC 8040: RESTCONF Protocol"; + "This import statement provides the structure extension + statement of the YANG Data Structure Extension."; + reference "RFC 8791: YANG Data Structure Extension"; } organization @@ -41,7 +41,7 @@ module ietf-coreconf { "This module contains the different definitions required by the CORECONF protocol. - Copyright (c) 2024 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 @@ -54,9 +54,9 @@ module ietf-coreconf { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2024-03-04 { + revision 2026-03-02 { description - "Initial revision."; + "Use sx:, not rc:."; reference "[I-D.ietf-core-comi] CoAP Management Interface"; } @@ -245,40 +245,38 @@ module ietf-coreconf { mandatory choice."; } - rc:yang-data coreconf-error { - container error { - description - "Optional payload of a 4.00 Bad Request CoAP error."; - - leaf error-tag { - type identityref { - base error-tag; - } - mandatory true; - description - "The enumerated error-tag."; - } + sx:structure error { + description + "Optional payload of a 4.00 Bad Request CoAP error."; - leaf error-app-tag { - type identityref { - base error-app-tag; - } - description - "The application-specific error-tag."; + leaf error-tag { + type identityref { + base error-tag; } + mandatory true; + description + "The enumerated error-tag."; + } - leaf error-data-node { - type instance-identifier; - description - "When the error reported is caused by a specific data node, - this leaf identifies the data node in error."; + leaf error-app-tag { + type identityref { + base error-app-tag; } + description + "The application-specific error-tag."; + } - leaf error-message { - type string; - description - "A message describing the error."; - } + leaf error-data-node { + type instance-identifier; + description + "When the error reported is caused by a specific data node, + this leaf identifies the data node in error."; + } + + leaf error-message { + type string; + description + "A message describing the error."; } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-distributed-notif@2025-04-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-distributed-notif@2026-04-13.yang similarity index 74% rename from experimental/ietf-extracted-YANG-modules/ietf-distributed-notif@2025-04-12.yang rename to experimental/ietf-extracted-YANG-modules/ietf-distributed-notif@2026-04-13.yang index bc101653b..70ce99d2d 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-distributed-notif@2025-04-12.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-distributed-notif@2026-04-13.yang @@ -5,6 +5,8 @@ module ietf-distributed-notif { import ietf-subscribed-notifications { prefix sn; + reference + "RFC 8639: Subscription to YANG Notifications"; } import ietf-yang-push { prefix yp; @@ -16,7 +18,7 @@ module ietf-distributed-notif { organization "IETF NETCONF (Network Configuration) Working Group"; contact - "WG Web: + "WG Web: WG List: Authors: Guangying Zheng @@ -33,7 +35,7 @@ module ietf-distributed-notif { "Defines augmentation for ietf-subscribed-notifications to enable the distributed publication with single subscription. - Copyright (c) 2025 IETF Trust and the persons + 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 @@ -50,38 +52,41 @@ module ietf-distributed-notif { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2025-04-12 { + revision 2026-04-13 { description "Initial version"; reference - "RFC XXXX: Subscription to Distributed Notifications"; + "RFC XXXX: Subscription to Notifications in a Distributed + Architecture"; } grouping message-publisher-id { description - "Provides a reusable leaf of the message-publisher-id."; + "Provides a reusable message-publisher-id leaf."; leaf message-publisher-id { type uint32; config false; description - "Identifies the software process which publishes the - message (e.g., processor 1 on line card 1). This field - is used to notify the receiver which publisher process - published which message."; + "Identifies the Component software process which publishes + notification messages (e.g., processor 1 on line card 1). This + field is used to notify the receiver which publisher process + published which message. The identifier is locally unique to + the Network Node."; } } grouping message-publisher-ids { description - "Provides a reusable leaf-list of message-publisher-id-list."; + "Provides a reusable message-publisher-id-list leaf-list."; leaf-list message-publisher-id { type uint32; config false; description - "Identifies the software process which publishes the - message (e.g., processor 1 on line card 1). This field - is used to notify the receiver which publisher processes - are going to publish."; + "Identifies the Component software process which publishes + notification messages (e.g., processor 1 on line card 1). This + field is used to notify the receiver which publisher processes + are going to publish. The identifiers are locally unique to + the Network Node."; } } @@ -106,13 +111,6 @@ module ietf-distributed-notif { uses message-publisher-ids; } - augment "/sn:establish-subscription/sn:output" { - description - "This augmentation adds the Message Publisher ID to the - dynamic establish-subscription output."; - uses message-publisher-ids; - } - augment "/yp:push-update" { description "This augmentation adds the Message Publisher ID in the diff --git a/experimental/ietf-extracted-YANG-modules/ietf-fgotn-topology@2025-06-18.yang b/experimental/ietf-extracted-YANG-modules/ietf-fgotn-topology@2025-06-18.yang deleted file mode 100644 index 58125ab36..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-fgotn-topology@2025-06-18.yang +++ /dev/null @@ -1,174 +0,0 @@ -module ietf-fgotn-topology { - /* TODO: FIXME */ - yang-version 1.1; - - namespace "urn:ietf:params:xml:ns:yang:ietf-fgotn-topology"; - prefix "fgotnt"; - - import ietf-network { - prefix "nw"; - reference - "RFC8345: A YANG Data Model for Network Topologies"; - } - - import ietf-network-topology { - prefix "nt"; - reference - "RFC8345: A YANG Data Model for Network Topologies"; - } - - import ietf-te-topology { - prefix "tet"; - reference - "RFC 8795: YANG Data Model for Traffic Engineering (TE) - Topologies"; - } - - import ietf-layer1-types { - prefix "l1-types"; - reference - "RFC YYYY: A YANG Data Model for Layer 1 Types"; - } - - /* Note: The RFC Editor will replace YYYY with the number assigned - to the RFC once draft-ietf-ccamp-layer1-types becomes an RFC.*/ - - import ietf-otn-topology { - prefix "otnt"; - reference - "RFC ZZZZ: A YANG Data Model for Optical Transport Network - Topology"; - } - - /* Note: The RFC Editor will replace ZZZZ with the number assigned - to the RFC once draft-ietf-ccamp-otn-topo-yang becomes an RFC.*/ - - organization - "Internet Engineering Task Force (IETF) CCAMP WG"; - contact - " - ID-draft editor: - Yanxia Tan (tanyx11@chinaunicom.cn); - Yanlei Zheng (zhengyanlei@chinaunicom.cn); - Italo Busi (italo.busi@huawei.com); - Chaode Yu (yuchaode@huawei.com); - Xing Zhao (zhaoxing@caict.ac.cn); - "; - - description - "This module defines a YANG data model for fgOTN-specific - extension based on existing network topology models. The model - fully conforms to the Network Management Datastore Architecture - (NMDA). - - 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). - - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices."; - - // 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. - - revision 2025-06-18 { - description - "initial version"; - reference - "RFC XXXX: YANG Data Models for fine grain Optical Transport - Network"; - } - - augment "/nw:networks/nw:network/nt:link/tet:te" + - "/tet:te-link-attributes/tet:max-link-bandwidth" + - "/tet:te-bandwidth/otnt:otn-bandwidth/otnt:odulist" { - description - "specific augmentation of fgOTN link on maximum link - bandwidth"; - leaf fgotn-bandwidth { - type uint16; - description - "It is used to indicate how much of the bandwidth has been - allocated for the usage of fgOTN."; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te" + - "/tet:te-link-attributes/tet:unreserved-bandwidth" + - "/tet:te-bandwidth/otnt:otn-bandwidth" { - description - "specific augmentation of fgOTN link on unreserved link - bandwidth"; - list fgotnlist { - key "odu-type odu-ts-number"; - description - "This structure is used to describe the unsreserved - bandwidth of fgOTN in the server ODUk"; - leaf odu-type { - type identityref { - base l1-types:odu-type; - } - description - "The granularity of server ODUk"; - } - - leaf odu-ts-number { - type uint16; - description - "The index of server ODUk channel"; - } - - leaf fgotn-bandwidth { - type uint16; - description - "The unsreserved bandwidth of fgOTN in this server ODUk"; - } - } - } - - augment "/nw:networks/tet:te/tet:templates/tet:link-template"+ - "/tet:te-link-attributes/tet:label-restrictions" + - "/tet:label-restriction/otnt:otn-label-range" { - description - "specific augmentation of fgOTN label"; - list fgts-range { - key "odu-type odu-ts-number"; - description - "This structure is used to describe the availability of - fgOTN timeslot in the server ODUk"; - leaf odu-type { - type identityref { - base l1-types:odu-type; - } - description - "The granularity of server ODUk"; - } - - leaf odu-ts-number { - type uint16; - description - "The index of server ODUk channel"; - } - - leaf fgts-reserved { - type string; - description - "The reserved fgOTN timeslot in this server ODUk"; - } - - leaf fgts-unreserved { - type string; - description - "The unreserved fgOTN timeslot in this server ODUk"; - } - } - } -} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-fgotn-topology@2026-02-27.yang b/experimental/ietf-extracted-YANG-modules/ietf-fgotn-topology@2026-02-27.yang new file mode 100644 index 000000000..8b169419b --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-fgotn-topology@2026-02-27.yang @@ -0,0 +1,219 @@ +module ietf-fgotn-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-fgotn-topology"; + prefix fgotnt; + + import ietf-network { + prefix nw; + reference + "RFC8345: A YANG Data Model for Network Topologies"; + } + import ietf-network-topology { + prefix nt; + reference + "RFC8345: A YANG Data Model for Network Topologies"; + } + import ietf-te-topology { + prefix tet; + reference + "RFC 8795: YANG Data Model for Traffic Engineering (TE) + Topologies"; + } + import ietf-layer1-types { + prefix l1-types; + reference + "RFC YYYY: A YANG Data Model for Layer 1 Types"; + } + import ietf-fgotn-types { + prefix fgotn-types; + reference + "RFC XXXX: YANG Data Models for fine grain Optical Transport + Network"; + } + + /* Note: The RFC Editor will replace YYYY with the number assigned + to the RFC once draft-ietf-ccamp-layer1-types becomes an RFC.*/ + + import ietf-otn-topology { + prefix otnt; + reference + "RFC ZZZZ: A YANG Data Model for Optical Transport Network + Topology"; + } + + /* Note: The RFC Editor will replace ZZZZ with the number assigned + to the RFC once draft-ietf-ccamp-otn-topo-yang becomes an RFC.*/ + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + ID-draft editor: + Yanxia Tan (tanyx11@chinaunicom.cn); + Yanlei Zheng (zhengyanlei@chinaunicom.cn); + Italo Busi (italo.busi@huawei.com); + Chaode Yu (yuchaode@huawei.com); + Xing Zhao (zhaoxing@caict.ac.cn); + "; + description + "This module defines a YANG data model for fgOTN-specific + extension based on existing network topology models. 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. + + 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. + + 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."; + + // 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. + + revision 2026-02-27 { + description + "initial version"; + reference + "RFC XXXX: YANG Data Models for fine grain Optical Transport + Network"; + } + + typedef ts-list { + type string { + pattern '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?' + + '(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)?'; + } + description + "A list of Tributary Slots (TS) ranging between 1 and 4095. + + If multiple values or ranges are given, they all MUST be + disjoint and MUST be in ascending order. + + For example 1-20,25,50-1000."; + reference + "RFC 7139: GMPLS Signaling Extensions for Control + of Evolving G.709 Optical Transport Networks"; + } + + augment "/nw:networks/nw:network/nt:link/tet:te" + + "/tet:te-link-attributes/tet:max-link-bandwidth" + + "/tet:te-bandwidth/otnt:otn-bandwidth/otnt:odulist" { + description + "specific augmentation of fgOTN link on maximum link + bandwidth"; + leaf fgotn-bandwidth { + when 'derived-from-or-self(../otnt:odu-type,' + + '"fgotn-types:fgODUflex")' { + description + "Applicable when odu-type is fgODUflex."; + } + type uint16; + units "megabits per second"; + description + "It is used to indicate how much of the bandwidth has been + allocated for the usage of fgOTN."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te" + + "/tet:te-link-attributes/tet:unreserved-bandwidth" + + "/tet:te-bandwidth/otnt:otn-bandwidth/otnt:odulist" { + description + "specific augmentation of fgOTN link on unreserved link + bandwidth"; + leaf fgotn-bandwidth { + when 'derived-from-or-self(../otnt:odu-type,' + + '"fgotn-types:fgODUflex")' { + description + "Applicable when odu-type is fgODUflex."; + } + type uint16; + units "megabits per second"; + description + "The unreserved bandwidth of fgOTN before the server ODUk + is set up"; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te" + + "/tet:te-link-attributes/tet:unreserved-bandwidth" + + "/tet:te-bandwidth/otnt:otn-bandwidth" { + description + "specific augmentation of fgOTN link on unreserved link + bandwidth"; + list fgotnlist { + key "odu-type odu-ts-number"; + description + "This structure is used to describe the unsreserved + bandwidth of fgOTN in the server ODUk"; + leaf odu-type { + type identityref { + base l1-types:odu-type; + } + description + "The granularity of server ODUk"; + } + leaf odu-ts-number { + type fgotnt:ts-list; + description + "The index of server ODUk channel"; + } + leaf fgotn-bandwidth { + type uint16; + units "megabits per second"; + description + "The unreserved bandwidth of fgOTN in this server ODUk"; + } + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te" + + "/tet:te-link-attributes/tet:label-restrictions" + + "/tet:label-restriction" { + description + "specific augmentation of fgOTN label"; + list fgts-range { + key "odu-type odu-ts-number"; + description + "This structure is used to describe the availability of + fgOTN timeslot in the server ODUk"; + leaf odu-type { + type identityref { + base l1-types:odu-type; + } + description + "The granularity of server ODUk"; + } + leaf odu-ts-number { + type fgotnt:ts-list; + description + "The index of server ODUk channel"; + } + leaf fgts-reserved { + type fgotnt:ts-list; + description + "The reserved fgOTN timeslot in this server ODUk"; + } + leaf fgts-unreserved { + type fgotnt:ts-list; + description + "The unreserved fgOTN timeslot in this server ODUk"; + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-fgotn-tunnel@2025-06-18.yang b/experimental/ietf-extracted-YANG-modules/ietf-fgotn-tunnel@2026-02-27.yang similarity index 68% rename from experimental/ietf-extracted-YANG-modules/ietf-fgotn-tunnel@2025-06-18.yang rename to experimental/ietf-extracted-YANG-modules/ietf-fgotn-tunnel@2026-02-27.yang index 1dd95c836..4d13301f3 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-fgotn-tunnel@2025-06-18.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-fgotn-tunnel@2026-02-27.yang @@ -1,23 +1,28 @@ module ietf-fgotn-tunnel { - /* TODO: FIXME */ yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-fgotn-tunnel"; - prefix "fgotn-tnl"; + prefix fgotn-tnl; import ietf-te { - prefix "te"; + prefix te; reference "RFC KKKK: A YANG Data Model for Traffic Engineering Tunnels, Label Switched Paths and Interfaces"; } + import ietf-fgotn-types { + prefix fgotn-types; + reference + "RFC XXXX: YANG Data Models for fine grain Optical Transport + Network"; + } /* Note: The RFC Editor will replace KKKK with the number assigned to the RFC once draft-ietf-teas-yang-te becomes an RFC.*/ import ietf-otn-tunnel { - prefix "otn-tnl"; - reference "RFC JJJJ: OTN Tunnel YANG Model"; + prefix otn-tnl; + reference + "RFC JJJJ: OTN Tunnel YANG Model"; } /* Note: The RFC Editor will replace JJJJ with the number assigned @@ -35,14 +40,13 @@ module ietf-fgotn-tunnel { Chaode Yu (yuchaode@huawei.com); Xing Zhao (zhaoxing@caict.ac.cn); "; - description - "This module defines a YANG data model for fgOTN-specific - extension based on existing network topology models. The model + "This module defines a YANG data model for fgOTN-specific + extension based on existing network topology models. The model fully conforms to the Network Management Datastore Architecture (NMDA). - Copyright (c) 2024 IETF Trust and the persons + 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 @@ -60,21 +64,27 @@ module ietf-fgotn-tunnel { // RFC Ed.: update the date below with the date of RFC publication // and remove this note. - revision 2025-06-18 { + revision 2026-02-27 { description "initial version"; reference "RFC XXXX: YANG Data Models for fine grain Optical Transport Network"; - } + } augment "/te:te/te:tunnels/te:tunnel/" - + "te:te-bandwidth/te:technology/otn-tnl:otn" { + + "te:te-bandwidth/te:technology/" + + "otn-tnl:otn/otn-tnl:otn-bandwidth" { description "augmentation of fgOTN tunnel on bandwidth structure"; leaf fgoduflex-bandwidth { + when 'derived-from-or-self(../otn-tnl:odu-type,' + + '"fgotn-types:fgODUflex")' { + description + "Applicable when odu-type is fgODUflex."; + } type string; - description + description "Augment TE bandwidth of the fgOTN tunnel"; } } @@ -83,69 +93,69 @@ module ietf-fgotn-tunnel { + "te:primary-paths/te:primary-path/" + "te:explicit-route-objects/" + "te:route-object-include-exclude/te:type/te:label/" - + "te:label-hop/te:te-label/te:technology/otn-tnl:otn" + - "/otn-tnl:otn-label" { + + "te:label-hop/te:te-label/te:technology/otn-tnl:otn" + + "/otn-tnl:otn-label" { description "augmentation of fgOTN label"; leaf fgts-numbers { type string; - description + description "Augment fgOTN timeslot information of this label hop"; } } - augment "/te:te/te:tunnels/te:tunnel/te:primary-paths" + - "/te:primary-path/te:primary-reverse-path" + - "/te:explicit-route-objects" + - "/te:route-object-include-exclude/te:type/te:label" + - "/te:label-hop/te:te-label/te:technology/otn-tnl:otn" + - "/otn-tnl:otn-label" { + augment "/te:te/te:tunnels/te:tunnel/te:primary-paths" + + "/te:primary-path/te:primary-reverse-path" + + "/te:explicit-route-objects" + + "/te:route-object-include-exclude/te:type/te:label" + + "/te:label-hop/te:te-label/te:technology/otn-tnl:otn" + + "/otn-tnl:otn-label" { description "augmentation of fgOTN label"; leaf fgts-numbers { type string; - description + description "Augment fgOTN timeslot information of this label hop"; } } - augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths" + - "/te:secondary-path/te:explicit-route-objects" + - "/te:route-object-include-exclude/te:type/te:label" + - "/te:label-hop/te:te-label/te:technology/otn-tnl:otn" + - "/otn-tnl:otn-label" { + augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths" + + "/te:secondary-path/te:explicit-route-objects" + + "/te:route-object-include-exclude/te:type/te:label" + + "/te:label-hop/te:te-label/te:technology/otn-tnl:otn" + + "/otn-tnl:otn-label" { description "augmentation of fgOTN label"; leaf fgts-numbers { type string; - description + description "fgOTN timeslot information of this label hop"; } - } + } - augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths" + - "/te:secondary-reverse-path/te:explicit-route-objects" + - "/te:route-object-include-exclude/te:type/te:label" + - "/te:label-hop/te:te-label/te:technology/otn-tnl:otn" + - "/otn-tnl:otn-label" { + augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths" + + "/te:secondary-reverse-path/te:explicit-route-objects" + + "/te:route-object-include-exclude/te:type/te:label" + + "/te:label-hop/te:te-label/te:technology/otn-tnl:otn" + + "/otn-tnl:otn-label" { description "augmentation of fgOTN label"; leaf fgts-numbers { type string; - description + description "fgOTN timeslot information of this label hop"; } } - augment "/te:te/te:lsps/te:lsp/te:lsp-actual-route-information" + - "/te:lsp-actual-route-information/te:type/te:label" + - "/te:label-hop/te:te-label/te:technology/otn-tnl:otn" + - "/otn-tnl:otn-label" { + augment "/te:te/te:lsps/te:lsp/te:lsp-actual-route-information" + + "/te:lsp-actual-route-information/te:type/te:label" + + "/te:label-hop/te:te-label/te:technology/otn-tnl:otn" + + "/otn-tnl:otn-label" { description "augmentation of fgOTN label"; leaf fgts-numbers { type string; - description + description "fgOTN timeslot information of this label hop"; } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-fgotn-types@2026-02-27.yang b/experimental/ietf-extracted-YANG-modules/ietf-fgotn-types@2026-02-27.yang new file mode 100644 index 000000000..b80c73919 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-fgotn-types@2026-02-27.yang @@ -0,0 +1,62 @@ +module ietf-fgotn-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-fgotn-types"; + prefix fgotn-types; + + import ietf-layer1-types { + prefix l1-types; + reference + "This module defines Layer 1 YANG types."; + } + + /* Note: The RFC Editor will replace YYYY with the number assigned + to the RFC once draft-ietf-ccamp-layer1-types becomes an RFC.*/ + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + ID-draft editor: + Yanxia Tan (tanyx11@chinaunicom.cn); + Yanlei Zheng (zhengyanlei@chinaunicom.cn); + Italo Busi (italo.busi@huawei.com); + Chaode Yu (yuchaode@huawei.com); + Xing Zhao (zhaoxing@caict.ac.cn); + "; + description + "This module contains a collection of YANG data types considered + generally useful for fine grain Optical Transport Network + (fgOTN) networks. + + Copyright (c) 2026 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + + // 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. + + revision 2026-02-27 { + description + "initial version"; + reference + "RFC XXXX: YANG Data Models for fine grain Optical Transport + Network"; + } + + identity fgODUflex { + base l1-types:odu-type; + description + "fgODUflex type (fine grain flexible bit rate, resizable)."; + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-i2nsf-analytics-interface@2025-02-13.yang b/experimental/ietf-extracted-YANG-modules/ietf-i2nsf-analytics-interface@2025-10-20.yang similarity index 99% rename from experimental/ietf-extracted-YANG-modules/ietf-i2nsf-analytics-interface@2025-02-13.yang rename to experimental/ietf-extracted-YANG-modules/ietf-i2nsf-analytics-interface@2025-10-20.yang index 5829366dd..c93d30a63 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-i2nsf-analytics-interface@2025-02-13.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-i2nsf-analytics-interface@2025-10-20.yang @@ -66,7 +66,7 @@ description // RFC Ed.: replace XXXX with an actual RFC number and remove // this note. -revision "2025-02-13" { +revision "2025-10-20" { description "Initial revision."; reference "RFC XXXX: I2NSF Analytics Interface YANG Data Model"; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-iana-power-and-energy@2026-02-26.yang b/experimental/ietf-extracted-YANG-modules/ietf-iana-power-and-energy@2026-02-26.yang new file mode 100644 index 000000000..ace104a52 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-iana-power-and-energy@2026-02-26.yang @@ -0,0 +1,109 @@ +module ietf-iana-power-and-energy { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-iana-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-incident@2024-06-06.yang b/experimental/ietf-extracted-YANG-modules/ietf-incident@2025-09-16.yang similarity index 79% rename from experimental/ietf-extracted-YANG-modules/ietf-incident@2024-06-06.yang rename to experimental/ietf-extracted-YANG-modules/ietf-incident@2025-09-16.yang index 3acc20a12..a51b9d997 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-incident@2024-06-06.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-incident@2025-09-16.yang @@ -20,6 +20,9 @@ module ietf-incident { } import ietf-yang-structure-ext { prefix sx; + reference + "RFC 8791: YANG Data Structure Extensions"; + } organization "IETF NMOP Working Group"; @@ -28,15 +31,13 @@ module ietf-incident { WG List: Author: Chong Feng - + Author: Tong Hu Author: Luis Miguel Contreras Murillo Author : Qin Wu - Author: Chaode Yu - Author: Nigel Davis "; description @@ -71,7 +72,7 @@ module ietf-incident { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here. "; - revision 2024-06-06 { + revision 2025-09-16 { description "Merge incident yang with incident type yang and fix broken ref."; @@ -90,7 +91,7 @@ module ietf-incident { identity single-domain { base incident-domain; description - "single domain."; + "Single domain."; } identity access { @@ -102,37 +103,45 @@ module ietf-incident { identity ran { base access; description - "radio access network domain."; + "Radio access network domain."; } identity transport { base single-domain; description - "transport domain."; + "Transport domain."; } identity otn { base transport; description - "optical transport network domain."; + "Optical transport network domain."; + reference + "RFC9376: Applicability of GMPLS for beyond 100 Gbit/s Optical Transport Network"; + } identity ip { base single-domain; description - "ip domain."; + "Ip domain."; + reference + "RFC1136: Administrative Domains and Routing Domains A Model for Routing in the Internet"; } identity ptn { base ip; description - "packet transport network domain."; + "Packet transport network domain."; + reference + "RFC6373: MPLS Transport Profile (MPLS-TP) Control Plane Framework"; + } identity cross-domain { base incident-domain; description - "cross domain."; + "Cross domain."; } identity incident-category { @@ -143,90 +152,117 @@ module ietf-incident { identity device { base incident-category; description - "device category."; + "Device category."; + reference + "RFC8348: A YANG Data Model for Hardware Management"; + } identity power-environment { base device; description - "power environment category."; + "Power environment category."; + reference + "RFC8348: A YANG Data Model for Hardware Management"; + } identity device-hardware { base device; description - "hardware of device category."; + "Device hardware category."; + reference + "RFC8348: A YANG Data Model for Hardware Management"; + } identity device-software { base device; description - "software of device category"; + "Device software category"; + reference + "RFC8348: A YANG Data Model for Hardware Management"; + } - identity line { + identity line-card { base device-hardware; description - "line card category."; + "Line card category."; + reference + "RFC8348: A YANG Data Model for Hardware Management"; + } identity maintenance { base incident-category; description - "maintenance category."; + "Maintenance category."; } identity network { base incident-category; description - "network category."; + "Network category."; } identity protocol { base incident-category; description - "protocol category."; + "Protocol category."; } identity overlay { base incident-category; description - "overlay category"; + "Overlay category"; } identity vm { base incident-category; description - "vm category."; + "VM category."; } identity event-type { description "The abstract identity for Event type"; + reference + "RFCXXXX: Some Key Terms for Network Fault and Problem Management"; + } identity alarm { base event-type; description - "alarm event type."; + "Alarm event type."; + reference + "RFC8632: A YANG Data Model for Alarm Management"; + } identity notif { base event-type; description "Notification event type."; + reference + "RFC5277:NETCONF Event Notifications"; } identity log { base event-type; description "Log event type."; + reference + "RFC5424: The Syslog Protocol"; } - identity KPI { + identity kpi { base event-type; description "KPI event type."; + reference + "RFC2330: Framework for IP Performance Metrics"; } identity unknown { @@ -244,8 +280,11 @@ module ietf-incident { base incident-class; description "It indicates the class of the incident is a problem - (i.e.,cause of the incident) for example an interface - fails to work."; + (i.e.,cause of the incident) for example an interface + fails to work."; + reference + "RFCXXXX: Some Key Terms for Network Fault and Problem Management"; + } identity sla-violation { @@ -283,7 +322,7 @@ module ietf-incident { identity probable-cause-unlocated { base diagnose-error; description - "Fails to locate the probable causes when performing the + "Fail to locate the probable causes when performing the diagnosis operation. The detailed reason MUST be included in the 'description'."; } @@ -291,7 +330,7 @@ module ietf-incident { identity probable-cause-unresolved { base resolve-error; description - "Fails to resolve the probable causes when performing the + "Fail to resolve the probable causes when performing the resolution operation. The detailed reason MUST be included in the 'description'"; } @@ -330,28 +369,28 @@ module ietf-incident { type enumeration { enum critical { description - "the incident MUST be handled immediately."; + "The incident MUST be handled immediately."; } enum high { description - "the incident should be handled as soon as + "The incident should be handled as soon as possible."; } enum medium { description - "network services are not affected, or the + "Network services are not affected, or the services are slightly affected,but corrective measures need to be taken."; } enum low { description - "potential or imminent service-affecting + "Potential or imminent service-affecting incidents are detected,but services are not affected currently."; } } description - "define the priority of incident."; + "Define the priority of incident."; } typedef incident-ref { @@ -359,7 +398,7 @@ module ietf-incident { path "/inc:incidents/inc:incident/inc:incident-no"; } description - "reference a network incident."; + "Reference a network incident."; } // Groupings @@ -372,76 +411,76 @@ module ietf-incident { base cause-name; } description - "the name of cause."; + "The name of cause."; } leaf detail { type string; description - "the detail information of the cause."; + "The detail information of the cause."; } } grouping resources-info { description - "the grouping which defines the network + "The grouping which defines the network resources of a node."; uses nw:node-ref; list resource { key "name"; description - "the resources of a network node."; + "The resources of a network node."; leaf name { type al:resource; description - "network resource name."; + "Network resource name."; } } } grouping incident-time-info { description - "the grouping defines incident time information."; + "The grouping defines incident time information."; leaf raise-time { type yang:date-and-time; description - "the time when an incident instance is raised."; + "The time when an incident instance is raised."; } leaf occur-time { type yang:date-and-time; description - "the time when an incident instance occurs. + "The time when an incident instance occurs. It's the occur time of the first event during incident detection."; } leaf clear-time { type yang:date-and-time; description - "the time when an incident instance is + "The time when an incident instance is resolved."; } leaf ack-time { type yang:date-and-time; description - "the time when an incident instance is + "The time when an incident instance is acknowledged."; } leaf last-updated { type yang:date-and-time; description - "the latest time when an incident instance is + "The latest time when an incident instance is updated"; } } grouping incident-info { description - "the grouping defines the information of an + "The grouping defines the information of an incident."; leaf name { type string; mandatory true; description - "the name of an incident."; + "The name of an incident."; } leaf type { type identityref { @@ -462,7 +501,7 @@ module ietf-incident { leaf-list service-instance { type string; description - "the related network service instances of + "The related network service instances of the incident instance."; } leaf domain { @@ -471,28 +510,28 @@ module ietf-incident { } mandatory true; description - "the domain of an incident."; + "The domain of an incident."; } leaf priority { type incident-priority; mandatory true; description - "the priority of an incident instance."; + "The priority of an incident instance."; } leaf status { type enumeration { enum raised { description - "an incident instance is raised."; + "An incident instance is raised."; } enum updated { description - "the information of an incident instance + "The information of an incident instance is updated."; } enum cleared { description - "an incident is cleared."; + "An incident is cleared."; } } default "raised"; @@ -512,7 +551,7 @@ module ietf-incident { } default "unacknowledged"; description - "the acknowledge status of an incident."; + "The acknowledge status of an incident."; } leaf category { type identityref { @@ -525,7 +564,7 @@ module ietf-incident { leaf detail { type string; description - "detail information of this incident."; + "Detailed information of this incident."; } leaf resolve-advice { type string; @@ -549,11 +588,11 @@ module ietf-incident { list probable-cause { key "node-ref"; description - "the probable causes of incident."; + "The probable causes of incident."; uses resources-info { augment "resource" { description - "augment probable cause information."; + "Augment probable cause information."; //if probable cause object is a resource of a node uses probable-cause-info; } @@ -564,17 +603,17 @@ module ietf-incident { } container probable-events { description - "the probable cause related events of the incident."; + "The probable cause related events of the incident."; list probable-event { key "type event-id"; description - "the probable cause related event of the incident."; + "The probable cause related event of the incident."; leaf type { type leafref { path "../../../events/event/type"; } description - "the event type."; + "The event type."; } leaf event-id { type leafref { @@ -582,34 +621,34 @@ module ietf-incident { + "/event-id"; } description - "the event identifier, such as uuid, + "The event identifier, such as uuid, sequence number, etc."; } } } container events { description - "related events."; + "Related events."; list event { key "type event-id"; description - "related events."; + "Related events."; leaf type { type identityref { base event-type; } description - "event type."; + "Event type."; } leaf event-id { type string; description - "the event identifier, such as uuid, + "The event identifier, such as uuid, sequence number, etc."; } choice event-type-info { description - "event type information."; + "Event type information."; case alarm { when "derived-from-or-self(type, 'alarm')" { description @@ -617,14 +656,14 @@ module ietf-incident { } container alarm { description - "alarm type event."; + "Alarm type event."; leaf resource { type leafref { path "/al:alarms/al:alarm-list/al:alarm" + "/al:resource"; } description - "network resource."; + "Network resource."; reference "RFC 8632: A YANG Data Model for Alarm Management"; @@ -636,7 +675,7 @@ module ietf-incident { + "/al:alarm-type-id"; } description - "alarm type id"; + "Alarm type id"; reference "RFC 8632: A YANG Data Model for Alarm Management"; @@ -649,7 +688,7 @@ module ietf-incident { + "/alarm-type-id]/al:alarm-type-qualifier"; } description - "alarm type qualitifier"; + "Alarm type qualifier"; reference "RFC 8632: A YANG Data Model for Alarm Management"; @@ -671,7 +710,7 @@ module ietf-incident { leaf-list incident-no { type incident-ref; description - "the identifier of an incident instance."; + "The identifier of an incident instance."; } } } @@ -685,7 +724,7 @@ module ietf-incident { leaf-list incident-no { type incident-ref; description - "the identifier of an incident instance."; + "The identifier of an incident instance."; } } } @@ -699,7 +738,7 @@ module ietf-incident { leaf-list incident-no { type incident-ref; description - "the identifier of an incident instance."; + "The identifier of an incident instance."; } } } @@ -711,7 +750,7 @@ module ietf-incident { response to indicate the reason for the incident acknowledge failure."; leaf incident-no { - type incident-ref; + type uint64; description "Indicates the incident identifier that fails the operation."; @@ -737,7 +776,7 @@ module ietf-incident { response to indicate the reason for the incident diagnose failure."; leaf incident-no { - type incident-ref; + type uint64; description "Indicates the incident identifier that fails the operation."; @@ -763,7 +802,7 @@ module ietf-incident { response to indicate the reason for the incident resolution failure."; leaf incident-no { - type incident-ref; + type uint64; description "Indicates the incident identifier that fails the operation."; @@ -787,18 +826,18 @@ module ietf-incident { notification incident-notification { description - "incident notification. It will be triggered when + "Incident notification. It will be triggered when the incident is raised, updated or cleared."; leaf incident-no { type incident-ref; description - "the identifier of an incident instance."; + "The identifier of an incident instance."; } uses incident-info; leaf time { type yang:date-and-time; description - "occur time of an incident instance."; + "Occuring time of an incident instance."; } } @@ -807,11 +846,11 @@ module ietf-incident { container incidents { config false; description - "the information of incidents."; + "The information of incidents."; list incident { key "name type incident-id"; description - "the information of incident."; + "The information of incident."; leaf incident-no { type uint64; mandatory true; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-interface-protection@2024-03-03.yang b/experimental/ietf-extracted-YANG-modules/ietf-interface-protection@2026-03-02.yang similarity index 92% rename from experimental/ietf-extracted-YANG-modules/ietf-interface-protection@2024-03-03.yang rename to experimental/ietf-extracted-YANG-modules/ietf-interface-protection@2026-03-02.yang index 398f19546..50ee096b1 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-interface-protection@2024-03-03.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-interface-protection@2026-03-02.yang @@ -21,38 +21,32 @@ module ietf-interface-protection { Daniela Spreafico (daniela.spreafico@nokia.com) Marko Vaupotic (Marko.Vaupotic@aviatnet.com)"; description - "This is a module for the entities in + "This is a YANG module for the entities in a generic interface protection mechanism. - Copyright (c) 2024 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 without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License + 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 (http://trustee.ietf.org/license-info). - 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 8561bis; see the + RFC itself for full legal notices."; - // RFC Ed.: replace XXXX with actual RFC number and remove + // RFC Ed.: replace 8561bis with actual RFC number and remove // this note // replace the revision date with the module publication date // the format is (year-month-day) - revision 2024-03-03 { + revision 2026-03-02 { description - "Updating reference to RFC XXXX. - pretty printing"; + "Canonical Order and copyright updated"; reference - "RFC XXX: A YANG Data Model for Microwave Radio Link"; - } - revision 2020-10-06 { - description - "Updating reference to RFC XXXX."; - reference - "RFC XXX: A YANG Data Model for Microwave Radio Link"; + "RFC XXXX: A YANG Data Model for Microwave Radio Link"; } revision 2019-06-19 { description diff --git a/experimental/ietf-extracted-YANG-modules/ietf-ioam-integrity@2025-08-25.yang b/experimental/ietf-extracted-YANG-modules/ietf-ioam-integrity@2025-08-25.yang deleted file mode 100644 index e5fb560f5..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-ioam-integrity@2025-08-25.yang +++ /dev/null @@ -1,248 +0,0 @@ -module ietf-ioam-integrity { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-ioam-integrity"; - prefix "ioam-int"; - - import ietf-ioam { - prefix ioam; - reference - "RFC 9617: A YANG Data Model for In Situ Operations, - Administration, and Maintenance (IOAM)"; - } - - organization - "IETF IPPM (IP Performance Measurement) Working Group"; - - contact - "WG Web: - WG List: - Author: Tianran Zhou - - Author: Justin Iurman - "; - - description - "This YANG module specifies a vendor-independent data model for - In Situ Operations, Administration, and Maintenance (IOAM) - Integrity Protected Options. - - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL - NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', - 'MAY', and 'OPTIONAL' in this document are to be interpreted as - described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, - they appear in all capitals, as shown here. - - Copyright (c) 2025 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."; - - revision 2025-08-25 { - description - "Initial revision."; - reference - "RFC XXXX: A YANG Data Model for In Situ Operations, - Administration, and Maintenance (IOAM) Integrity Protected - Options"; - } - - /* - * FEATURES - */ - - feature int-incremental-trace - { - description - "This feature indicates that the Integrity Protected - Incremental Trace-Option is supported."; - reference - "RFC YYYY: Integrity Protection of In Situ Operations, - Administration, and Maintenance (IOAM) Data Fields"; - } - - feature int-preallocated-trace - { - description - "This feature indicates that the Integrity Protected - Pre-allocated Trace-Option is supported."; - reference - "RFC YYYY: Integrity Protection of In Situ Operations, - Administration, and Maintenance (IOAM) Data Fields"; - } - - feature int-proof-of-transit - { - description - "This feature indicates that the Integrity Protected Proof of - Transit Option is supported."; - reference - "RFC YYYY: Integrity Protection of In Situ Operations, - Administration, and Maintenance (IOAM) Data Fields"; - } - - feature int-edge-to-edge - { - description - "This feature indicates that the Integrity Protected - Edge-to-Edge Option is supported."; - reference - "RFC YYYY: Integrity Protection of In Situ Operations, - Administration, and Maintenance (IOAM) Data Fields"; - } - - /* - * IDENTITIES - */ - - identity method { - description - "Base identity to represent the Integrity Protection Method."; - } - - identity method-1 { - base method; - description - "The Integrity Protection Method 1 uses AES-GMAC with a 12-byte - Nonce and a 16-byte ICV."; - reference - "RFC YYYY: Integrity Protection of In Situ Operations, - Administration, and Maintenance (IOAM) Data Fields"; - } - - /* - * TYPE DEFINITIONS - */ - - typedef method-type { - type identityref { - base method; - } - description - "It specifies the Integrity Protection Method."; - } - - /* - * DATA NODES - */ - - augment "/ioam:ioam/ioam:profiles/ioam:profile" { - description - "This augmentation adds 4 profiles for the Integrity Protected - Options."; - - container int-incremental-tracing-profile { - if-feature "int-incremental-trace"; - presence - "Enables the Integrity Protected Incremental Trace-Option."; - description - "This container describes the profile for the Integrity - Protected Incremental Trace-Option."; - - uses ioam:ioam-incremental-tracing-profile; - - leaf int-method { - when "derived-from-or-self(../node-action, - 'ioam:action-encapsulate')"; - type method-type; - default "method-1"; - description - "This object indicates the Integrity Protection Method for - this profile."; - } - } - - container int-preallocated-tracing-profile { - if-feature "int-preallocated-trace"; - presence - "Enables the Integrity Protected Pre-allocated - Trace-Option."; - description - "This container describes the profile for the Integrity - Protected Pre-allocated Trace-Option."; - - uses ioam:ioam-preallocated-tracing-profile; - - leaf int-method { - when "derived-from-or-self(../node-action, - 'ioam:action-encapsulate')"; - type method-type; - default "method-1"; - description - "This object indicates the Integrity Protection Method for - this profile."; - } - } - - container int-pot-profile { - if-feature "int-proof-of-transit"; - presence - "Enables the Integrity Protected Proof of Transit Option."; - description - "This container describes the profile for the Integrity - Protected Proof of Transit Option."; - - leaf use-namespace { - type ioam:ioam-namespace; - default "ioam:default-namespace"; - description - "This object indicates the namespace used for the - POT types."; - } - - leaf pot-type { - type ioam:ioam-pot-type; - description - "The type of a particular POT variant that specifies - the POT data that is included."; - } - - leaf node-action { - type ioam:ioam-node-action; - default "ioam:action-transit"; - description - "This object indicates the action the node needs to - take, e.g., encapsulation."; - } - - leaf int-method { - when "derived-from-or-self(../node-action, - 'ioam:action-encapsulate')"; - type method-type; - default "method-1"; - description - "This object indicates the Integrity Protection Method for - this profile."; - } - } - - container int-e2e-profile { - if-feature "int-edge-to-edge"; - presence - "Enables the Integrity Protected Edge-to-Edge Option."; - description - "This container describes the profile for the Integrity - Protected Edge-to-Edge Option."; - - uses ioam:ioam-e2e-profile; - - leaf int-method { - when "derived-from-or-self(../node-action, - 'ioam:action-encapsulate')"; - type method-type; - default "method-1"; - description - "This object indicates the Integrity Protection Method for - this profile."; - } - } - } -} - diff --git a/experimental/ietf-extracted-YANG-modules/ietf-ioam-integrity@2026-04-15.yang b/experimental/ietf-extracted-YANG-modules/ietf-ioam-integrity@2026-04-15.yang new file mode 100644 index 000000000..7d805006c --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-ioam-integrity@2026-04-15.yang @@ -0,0 +1,206 @@ +module ietf-ioam-integrity { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-ioam-integrity"; + prefix ioam-int; + + import ietf-ioam { + prefix ioam; + reference + "RFC 9617: A YANG Data Model for In Situ Operations, + Administration, and Maintenance (IOAM)"; + } + + import iana-ioam-integrity-protection-methods { + prefix iana-ioam-ipm; + reference + "RFC XXXX: A YANG Data Model for In Situ Operations, + Administration, and Maintenance (IOAM) + Integrity-Protected Options"; + } + + organization + "IETF IPPM (IP Performance Measurement) Working Group"; + + contact + "WG Web: + WG List: IPPM + + Editor: Tianran Zhou + + Editor: Justin Iurman + "; + + description + "This YANG module specifies a vendor-independent data model for + In Situ Operations, Administration, and Maintenance (IOAM) + Integrity-Protected Options. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + 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. + + Operational Considerations: + + - This model does not treat as mutually exclusive an IOAM + Option and its integrity protected equivalent (i.e., an IOAM + Integrity-Protected Option). For example, an implementation + may support the simultaneous configuration of an + IOAM-Namespace with the Pre-allocated Trace Option and + another IOAM-Namespace with the Integrity-Protected + Pre-allocated Trace Option. Therefore, the model does not + impose constraints that would prevent such use cases."; + + revision 2026-04-15 { + description + "Initial version."; + reference + "RFC XXXX: A YANG Data Model for In Situ Operations, + Administration, and Maintenance (IOAM) + Integrity-Protected Options"; + } + + /* + * FEATURES + */ + + feature int-incremental-trace { + description + "This feature indicates that the Integrity-Protected + Incremental Trace-Option is supported."; + reference + "RFC YYYY: Integrity Protection of In Situ Operations, + Administration, and Maintenance (IOAM) + Data Fields, Section 4.1"; + } + + feature int-preallocated-trace { + description + "This feature indicates that the Integrity-Protected + Pre-allocated Trace-Option is supported."; + reference + "RFC YYYY: Integrity Protection of In Situ Operations, + Administration, and Maintenance (IOAM) + Data Fields, Section 4.1"; + } + + feature int-proof-of-transit { + description + "This feature indicates that the Integrity-Protected Proof of + Transit Option is supported."; + reference + "RFC YYYY: Integrity Protection of In Situ Operations, + Administration, and Maintenance (IOAM) + Data Fields, Section 4.2"; + } + + feature int-edge-to-edge { + description + "This feature indicates that the Integrity-Protected + Edge-to-Edge Option is supported."; + reference + "RFC YYYY: Integrity Protection of In Situ Operations, + Administration, and Maintenance (IOAM) + Data Fields, Section 4.3"; + } + + /* + * GROUP DEFINITIONS + */ + + grouping int-method-grouping { + description + "A grouping for Integrity Protection Methods."; + leaf int-method { + when "derived-from-or-self(../node-action, + 'ioam:action-encapsulate')"; + type iana-ioam-ipm:method-id; + description + "This object indicates the Integrity Protection Method for + this profile. 'int-method' is only defined at the + encapsulating node."; + } + } + + /* + * DATA NODES + */ + + augment "/ioam:ioam/ioam:profiles/ioam:profile" { + description + "This augmentation adds 4 profiles for the Integrity-Protected + Options."; + container int-incremental-tracing-profile { + if-feature "int-incremental-trace"; + presence "Enables the Integrity-Protected + Incremental Trace-Option."; + description + "This container describes the profile for the + Integrity-Protected Incremental Trace-Option."; + uses ioam:ioam-incremental-tracing-profile; + uses int-method-grouping; + } + container int-preallocated-tracing-profile { + if-feature "int-preallocated-trace"; + presence "Enables the Integrity-Protected + Pre-allocated Trace-Option."; + description + "This container describes the profile for the + Integrity-Protected Pre-allocated Trace-Option."; + uses ioam:ioam-preallocated-tracing-profile; + uses int-method-grouping; + } + container int-pot-profile { + if-feature "int-proof-of-transit"; + presence "Enables the Integrity-Protected + Proof of Transit Option."; + description + "This container describes the profile for the + Integrity-Protected Proof of Transit Option."; + leaf use-namespace { + type ioam:ioam-namespace; + default "ioam:default-namespace"; + description + "This object indicates the namespace used for the + POT types."; + } + leaf pot-type { + type ioam:ioam-pot-type; + description + "The type of a particular POT variant that specifies + the POT data that is included."; + } + leaf node-action { + type ioam:ioam-node-action; + default "ioam:action-transit"; + description + "This object indicates the action the node needs to + take, e.g., encapsulation."; + } + uses int-method-grouping; + } + container int-e2e-profile { + if-feature "int-edge-to-edge"; + presence "Enables the Integrity-Protected + Edge-to-Edge Option."; + description + "This container describes the profile for the + Integrity-Protected Edge-to-Edge Option."; + uses ioam:ioam-e2e-profile; + uses int-method-grouping; + } + } +} + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-ipv6-nd@2025-08-27.yang b/experimental/ietf-extracted-YANG-modules/ietf-ipv6-nd@2026-02-27.yang similarity index 73% rename from experimental/ietf-extracted-YANG-modules/ietf-ipv6-nd@2025-08-27.yang rename to experimental/ietf-extracted-YANG-modules/ietf-ipv6-nd@2026-02-27.yang index c4e64d35e..4140162e6 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-ipv6-nd@2025-08-27.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-ipv6-nd@2026-02-27.yang @@ -3,9 +3,6 @@ module ietf-ipv6-nd { namespace "urn:ietf:params:xml:ns:yang:ietf-ipv6-nd"; prefix v6nd; - import ietf-inet-types { - prefix inet; - } import ietf-yang-types { prefix yang; reference @@ -26,7 +23,7 @@ module ietf-ipv6-nd { "IETF IPv6 Maintenance Working Group (6man)"; contact "WG Web: - WG List: + WG List: Author: Fan Zhang @@ -39,15 +36,15 @@ module ietf-ipv6-nd { description "This YANG module defines a YANG data model to configure and manage IPv6 Neighbor Discovery (ND) and related functions, including - IPv6 address resolution, redirect function, proxy Neighbor + IPv6 address resolution, redirect, proxy Neighbor Advertisement, Neighbor Unreachability Detection (NUD), Duplicate - Address Detection (DAD), and Enhanced Duplicate Address Detection. + Address Detection (DAD), and Enhanced DAD. The model is based on YANG 1.1 as defined in RFC 7950 and conforms to Network Management Datastore Architecture (NMDA) as defined in RFC 8342. - 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 @@ -71,9 +68,9 @@ module ietf-ipv6-nd { RFC4862: IPv6 Stateless Address Autoconfiguration RFC7527: Enhanced Duplicate Address Detection"; - revision 2025-08-27 { + revision 2026-02-27 { description - "Init revision"; + "Initial version"; reference "RFC XXXX: YANG Data Model for IPv6 Neighbor Discovery"; } @@ -85,10 +82,11 @@ module ietf-ipv6-nd { "Global parameters for IPv6 ND."; leaf stale-timeout { type uint32; - units "second"; + units "seconds"; description "The global timeout for Neighbor Cache entry in the STALE - state."; + state. This value applies to all interfaces unless overridden + by a per-interface setting."; reference "RFC4861: Neighbor Discovery for IP version 6 (IPv6) Section 5.3"; @@ -102,59 +100,36 @@ module ietf-ipv6-nd { container nd { description "Parameters of IPv6 ND."; - leaf dynamic-discovery { - type boolean; - default "true"; - description - "Controls whether dynamic link-layer address resolution - for IPv6 on the interface is enabled or disabled. - true - dynamic link-layer address resolution based on - IPv6 ND is enabled, - false - dynamic link-layer address resolution based on - IPv6 ND is disabled."; - reference - "RFC4861: Neighbor Discovery for IP version 6 (IPv6) - Section 7.2"; - } - leaf nud { - type boolean; - default "true"; - description - "Controls whether Neighbor Unreachability Detection (NUD) - on the interface is enabled or disabled. - true - NUD is enabled, - false - NUD is disabled."; - reference - "RFC4861: Neighbor Discovery for IP version 6 (IPv6) - Section 7.3"; - } leaf reachable-time { - type uint32 { - range "0..3600000"; - } - units "millisecond"; + type uint32; + units "milliseconds"; + default "30000"; description "The time to confirm a neighbor's reachability for NUD."; reference "RFC4861: Neighbor Discovery for IP version 6 (IPv6) - - ReachableTime"; + Section 6.3.2 - BaseReachableTime"; } leaf ns-interval { - type uint32; + type uint32 { + range "1..max"; + } units "milliseconds"; + default "1000"; description "The interval of retransmitting Neighbor Solicitations to a neighbor for address resolution, NUD, or DAD."; reference "RFC4861: Neighbor Discovery for IP version 6 (IPv6) - Section 7.3.3"; + Section 6.3.2"; } leaf stale-timeout { type uint32; - units "second"; + units "seconds"; description "The timeout for Neighbor Cache entry in the STALE state on - the interface."; + the interface. If configured, this value overrides the global + stale-timeout."; reference "RFC4861: Neighbor Discovery for IP version 6 (IPv6) Section 5.3"; @@ -171,24 +146,14 @@ module ietf-ipv6-nd { "RFC4861: Neighbor Discovery for IP version 6 (IPv6) Section 8"; } - container proxy-na { + leaf proxy-na { + type boolean; + default "false"; description - "Parameters of proxy Neighbor Advertisements."; - leaf inter-vlan-proxy { - type boolean; - default "false"; - description - "Controls whether the router proxies for hosts in the - same subnet with different VLANs"; - } - leaf all-proxy { - type boolean; - default "false"; - description - "Controls whether the router proxies for all hosts, - that is, responds unconditionally to Neighbor - Solicitation with its own Neighbor Advertisement."; - } + "Controls whether proxies for one or more other nodes by + sending proxy Neighbor Advertisement. + true - Proxy NA is enabled, + false - Proxy NA is disabled."; reference "RFC4861: Neighbor Discovery for IP version 6 (IPv6) Section 7.2.8"; @@ -202,8 +167,12 @@ module ietf-ipv6-nd { description "Controls whether Enhanced DAD algorithm is enabled or disabled."; + reference + "RFC7527: Enhanced Duplicate Address Detection + Section 4"; } - leaf enhanced-dad-auto-resolve { + leaf auto-resolve { + when "../enable = 'true'"; type boolean; default "false"; description @@ -212,6 +181,9 @@ module ietf-ipv6-nd { management message, drop the received ND message, and block the untrusted IPv6 host nodes from which the duplicate NS(DAD) or NA message was received."; + reference + "RFC7527: Enhanced Duplicate Address Detection + Section 5"; } reference "RFC7527: Enhanced Duplicate Address Detection"; @@ -222,52 +194,52 @@ module ietf-ipv6-nd { "A collection of interface-related statistics about IPv6 ND messages."; leaf in-ns-pkts { - type yang:counter32; + type yang:counter64; description "The number of received Neighbor Solicitation packets."; } leaf in-na-pkts { - type yang:counter32; + type yang:counter64; description "The number of received Neighbor Advertisement packets."; } leaf in-rs-pkts { - type yang:counter32; + type yang:counter64; description "The number of received Router Solicitation packets."; } leaf in-ra-pkts { - type yang:counter32; + type yang:counter64; description "The number of received Router Advertisement packets."; } leaf in-redirect-pkts { - type yang:counter32; + type yang:counter64; description "The number of received Redirect packets."; } leaf out-ns-pkts { - type yang:counter32; + type yang:counter64; description "The number of sent Neighbor Solicitation packets."; } leaf out-na-pkts { - type yang:counter32; + type yang:counter64; description "The number of sent Neighbor Advertisement packets."; } leaf out-rs-pkts { - type yang:counter32; + type yang:counter64; description "The number of sent Router Solicitation packets."; } leaf out-ra-pkts { - type yang:counter32; + type yang:counter64; description "The number of sent Router Advertisement packets."; } leaf out-redirect-pkts { - type yang:counter32; + type yang:counter64; description "The number of sent Redirect packets."; } @@ -280,15 +252,17 @@ module ietf-ipv6-nd { "Augments IPv6 neighbor list with parameters of IPv6 address resolution based on IPv6 ND."; leaf age { + when "../ip:origin = 'dynamic'"; type uint32; - units "milliseconds"; + units "seconds"; config false; description "The time that has passed since receipt of the last - reachability confirmation for the neighbor."; + reachability confirmation for the neighbor. Ignored when the + neighbor entry is static."; reference "RFC4861: Neighbor Discovery for IP version 6 (IPv6) - Section 5.1"; + Section 7.3.3"; } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-isis-flex-algo@2025-09-11.yang b/experimental/ietf-extracted-YANG-modules/ietf-isis-flex-algo@2026-03-31.yang similarity index 87% rename from experimental/ietf-extracted-YANG-modules/ietf-isis-flex-algo@2025-09-11.yang rename to experimental/ietf-extracted-YANG-modules/ietf-isis-flex-algo@2026-03-31.yang index 5a6d5756e..853670b98 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-isis-flex-algo@2025-09-11.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-isis-flex-algo@2026-03-31.yang @@ -46,12 +46,12 @@ module ietf-isis-flex-algo { "; description "The YANG module defines the configuration and operational - state for ISIS Flexible Algorithm as defined in RFC 9350. + state for IS-IS Flexible Algorithm as defined in RFC 9350. This YANG model conforms to the Network Management Datastore Architecture (NMDA) as described in RFC 8342. - 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 @@ -70,7 +70,7 @@ module ietf-isis-flex-algo { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2025-09-11 { + revision 2026-03-31 { description "Initial Version"; reference @@ -82,7 +82,7 @@ module ietf-isis-flex-algo { identity fad-flags { description - "Base identity for ISIS FAD flags."; + "Base identity for IS-IS FAD flags."; } identity m-bit { @@ -147,7 +147,7 @@ module ietf-isis-flex-algo { "Flex-algo definition flags list."; } description - "ISIS flex-algo definition flags."; + "IS-IS flex-algo definition flags."; } description "The flex-algo definition flags sub-tlv."; @@ -170,10 +170,11 @@ module ietf-isis-flex-algo { grouping fad-tlvs { container fad-tlvs { list fad-tlv { - leaf flex-algo { + leaf algo-number { type uint8; description - "Flex-algo number, value between 128 and 255 inclusive."; + "Flex-algo number - A value not in the inclusive range + of 128-255 is an invalid FAD TLV specification."; } leaf metric-type { type identityref { @@ -206,20 +207,20 @@ module ietf-isis-flex-algo { "List of flex-algo definition TLVs."; } description - "ISIS Flexible Algorithm Definition TLV."; + "IS-IS Flexible Algorithm Definition TLV."; } description - "ISIS Flexible Algorithm Definition (FAD) TLV."; + "IS-IS Flexible Algorithm Definition (FAD) TLV."; } grouping fapm-sub-tlvs { container fapm-sub-tlvs { list fapm-sub-tlv { - leaf flex-algo { + leaf algo-number { type uint8; description - "Flex-algo number, value between 128 and 255 - inclusive."; + "Flex-algo number - A value not in the inclusive range + of 128-255 is an invalid FAPM sub-TLV specification."; } leaf metric { type uint32; @@ -244,10 +245,10 @@ module ietf-isis-flex-algo { when "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/rt:type = 'isis:isis'" { description - "This augment ISIS routing protocol when used"; + "This augment IS-IS routing protocol when used"; } description - "This augments ISIS protocol configuration + "This augments IS-IS protocol configuration with flexible algorithm."; container isis-flex-algo { list flex-algo { @@ -257,8 +258,8 @@ module ietf-isis-flex-algo { range "128..255"; } description - "An identifier in the range 128-255 that's associated - with the Flexible Algorithm Definition."; + "Flex-algo number - must in in the inclusive range + of 128-255."; } leaf advertise-definition { type boolean; @@ -354,10 +355,10 @@ module ietf-isis-flex-algo { + "rt:control-plane-protocol/" + "rt:type = 'isis:isis'" { description - "This augment ISIS routing protocol when used"; + "This augment IS-IS routing protocol when used"; } description - "This augments ISIS protocol LSDB router capability."; + "This augments IS-IS protocol LSDB router capability."; uses fad-tlvs; } @@ -370,10 +371,10 @@ module ietf-isis-flex-algo { + "rt:control-plane-protocol/" + "rt:type = 'isis:isis'" { description - "This augment ISIS routing protocol when used"; + "This augment IS-IS routing protocol when used"; } description - "This augments ISIS protocol LSDB prefix."; + "This augments IS-IS protocol LSDB prefix."; uses fapm-sub-tlvs; } @@ -385,10 +386,10 @@ module ietf-isis-flex-algo { + "rt:control-plane-protocol/" + "rt:type = 'isis:isis'" { description - "This augment ISIS routing protocol when used"; + "This augment IS-IS routing protocol when used"; } description - "This augments ISIS protocol LSDB prefix."; + "This augments IS-IS protocol LSDB prefix."; uses fapm-sub-tlvs; } @@ -400,10 +401,10 @@ module ietf-isis-flex-algo { + "rt:control-plane-protocol/" + "rt:type = 'isis:isis'" { description - "This augment ISIS routing protocol when used"; + "This augment IS-IS routing protocol when used"; } description - "This augments ISIS protocol LSDB prefix."; + "This augments IS-IS protocol LSDB prefix."; uses fapm-sub-tlvs; } @@ -415,10 +416,10 @@ module ietf-isis-flex-algo { + "rt:control-plane-protocol/" + "rt:type = 'isis:isis'" { description - "This augment ISIS routing protocol when used"; + "This augment IS-IS routing protocol when used"; } description - "This augments ISIS protocol LSDB prefix."; + "This augments IS-IS protocol LSDB prefix."; uses fapm-sub-tlvs; } @@ -426,13 +427,12 @@ module ietf-isis-flex-algo { notification flex-algo-not-supported { uses isis:notification-instance-hdr; - leaf flex-algo-number { - type uint8 { - range "128..255"; - } + leaf algo-number { + type uint8; description - "Flex-algo identifier which is not supported by the IS-IS - instance."; + "Flex-algo identifier which is not supported by the OSPF + instance. A value not in the inclusive range of 128-255 + is indicative of an invalid FAD algorithm specification."; } description "This notification is sent when an IS-IS instance does not diff --git a/experimental/ietf-extracted-YANG-modules/ietf-l3-isis-topology@2022-09-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-l3-isis-topology@2022-09-21.yang index 65b722ccf..2a9c4258b 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-l3-isis-topology@2022-09-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-l3-isis-topology@2022-09-21.yang @@ -79,7 +79,7 @@ module ietf-l3-isis-topology { } grouping isis-link-attributes { - description "Identifies the IS-IS link attributes."; + description "Defines the IS-IS link attributes."; container isis-link-attributes { description "Main Container to identify the ISIS Link Attributes"; @@ -100,12 +100,7 @@ module ietf-l3-isis-topology { } grouping isis-node-attributes { - description "isis node scope attributes"; - container isis-timer-attributes { - description - "Contains node timer attributes"; - uses ietf-isis:lsp-parameters; - } + description "IS-IS node scope attributes"; container isis-node-attributes { description "Main Container to identify the ISIS Node Attributes"; @@ -189,7 +184,7 @@ grouping isis-termination-point-attributes { isis topology"; } description - "isis node-level attributes "; + "Augments L3 topology node attributes for IS-IS"; uses isis-node-attributes; } @@ -200,7 +195,7 @@ grouping isis-termination-point-attributes { IS-IS topology"; } description - "Augments topology link configuration"; + "Augments L3 topology link attributes for IS-IS"; uses isis-link-attributes; } @@ -212,7 +207,7 @@ grouping isis-termination-point-attributes { IS-IS topology"; } description - "Augments topology termination point configuration"; + "Augments L3 topology termination point attributes for IS-IS"; uses isis-termination-point-attributes; } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2025-08-06.yang b/experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2025-11-03.yang similarity index 95% rename from experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2025-08-06.yang rename to experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2025-11-03.yang index a74085dac..f7e31a871 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2025-08-06.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2025-11-03.yang @@ -56,7 +56,7 @@ module ietf-layer0-types { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2025-08-06 { + revision 2025-11-03 { description "This revision adds the following new identities: - cwdm-ch-spc-type; @@ -106,22 +106,23 @@ module ietf-layer0-types { - operational-mode - frequency-thz - frequency-ghz + - unknown-value - snr - - snr-or-null + - snr-or-unknown - decimal-2 - - decimal-2-or-null + - decimal-2-or-unknown - power-gain - - power-gain-or-null + - power-gain-or-unknown - power-loss - - power-loss-or-null + - power-loss-or-unknown - power-ratio - - power-ratio-or-null + - power-ratio-or-unknown - power-dbm - - power-dbm-or-null + - power-dbm-or-unknown - decimal-5 - - decimal-5-or-null + - decimal-5-or-unknown - psd - - psd-or-null. + - psd-or-unknown. This revision adds the following new groupings: - wdm-label-start-end; @@ -790,6 +791,22 @@ module ietf-layer0-types { "The DWDM frequency in GHz, e.g., 193112.500000."; } + typedef unknown-value { + type enumeration { + enum unknown { + description + "The value is unknown."; + } + } + description + "This data type is used to report when a value of an attribute + is 'unknown', to differentiate from the case where the + attribute is not applicable."; + reference + "RFC XXXX: Common YANG Data Types for Layer 0 Optical + Networks, section 2.2.1"; + } + typedef snr { type decimal-2; units "dB@0.1nm"; @@ -802,10 +819,10 @@ module ietf-layer0-types { repeatered optical fibre submarine cable systems"; } - typedef snr-or-null { + typedef snr-or-unknown { type union { type snr; - type empty; + type unknown-value; } description "(Optical) Signal to Noise Ratio measured over 0.1 nm @@ -818,13 +835,13 @@ module ietf-layer0-types { fraction-digits 2; } description - "A decimal64 value with two digits."; + "A decimal64 value with two fractional digits."; } - typedef decimal-2-or-null { + typedef decimal-2-or-unknown { type union { type decimal-2; - type empty; + type unknown-value; } description "A decimal64 value with two digits, when the value is known or @@ -840,10 +857,10 @@ module ietf-layer0-types { "The gain in dB."; } - typedef power-gain-or-null { + typedef power-gain-or-unknown { type union { type power-gain; - type empty; + type unknown-value; } description "The gain in dB, when it is known or an empty @@ -859,10 +876,10 @@ module ietf-layer0-types { "The power attenuation in dB."; } - typedef power-loss-or-null { + typedef power-loss-or-unknown { type union { type power-loss; - type empty; + type unknown-value; } description "The power attenuation in dB, when it is known or an empty @@ -876,10 +893,10 @@ module ietf-layer0-types { "The power difference in dB."; } - typedef power-ratio-or-null { + typedef power-ratio-or-unknown { type union { type power-ratio; - type empty; + type unknown-value; } description "The power difference in dB, when it is known or an empty @@ -893,10 +910,10 @@ module ietf-layer0-types { "The power in dBm."; } - typedef power-dbm-or-null { + typedef power-dbm-or-unknown { type union { type power-dbm; - type empty; + type unknown-value; } description "The power in dBm, when it is known or an empty value when the @@ -908,13 +925,13 @@ module ietf-layer0-types { fraction-digits 5; } description - "A decimal64 value with five digits."; + "A decimal64 value with five fractional digits."; } - typedef decimal-5-or-null { + typedef decimal-5-or-unknown { type union { type decimal-5; - type empty; + type unknown-value; } description "A decimal64 value with five digits, when the value is known @@ -935,10 +952,10 @@ module ietf-layer0-types { (G.fast) - Power spectral density specification"; } - typedef psd-or-null { + typedef psd-or-unknown { type union { type psd; - type empty; + type unknown-value; } description "The PSD, when it is known or an empty value when the PSD is @@ -950,13 +967,13 @@ module ietf-layer0-types { fraction-digits 18; } description - "A decimal64 value with eighteen digits."; + "A decimal64 value with fractional eighteen digits."; } - typedef decimal-18-or-null { + typedef decimal-18-or-unknown { type union { type decimal-18; - type empty; + type unknown-value; } description "A decimal64 value with eighteen digits, when the value is @@ -1685,16 +1702,37 @@ module ietf-layer0-types { description "Indicates whether the transceiver's mode is a standard mode, an organizational mode or an explicit mode."; - case G.698.2 { - uses standard-mode; - uses common-standard-organizational-mode; - uses common-all-modes; + case g.698.2 { + container g.698.2 { + description + "The set of attributes for a standard mode defined + in ITU-T G.698.2."; + reference + "ITU-T G.698.2 v3.0 (11/2018): Amplified multichannel + dense wavelength division multiplexing + applications with single channel optical + interfaces Optical transport network"; + uses standard-mode { + refine "standard-mode" { + mandatory true; + } + } + uses common-standard-organizational-mode; + uses common-all-modes; + } } case organizational-mode { container organizational-mode { description - "The set of attributes for an organizational mode"; - uses organizational-mode; + "The set of attributes for an organizational mode."; + uses organizational-mode { + refine "operational-mode" { + mandatory true; + } + refine "organization-identifier" { + mandatory true; + } + } uses common-standard-organizational-mode; uses common-all-modes; } @@ -1715,7 +1753,7 @@ module ietf-layer0-types { } must '../../../../' + 'supported-mode[mode-id=current()]/' - + 'standard-mode' { + + 'g.698.2' { description "The pointer is only for application codes supported by transceiver."; @@ -1796,7 +1834,7 @@ module ietf-layer0-types { type decimal-2 { range "0..max"; } - type empty; + type unknown-value; } units "dB"; mandatory true; @@ -1809,8 +1847,8 @@ module ietf-layer0-types { grouping explicit-mode { description - "Attributes capabilities related to explicit transceiver's - mode. + "The attributes describing capabilities of an explicit + transceiver's mode. This grouping also contains the list of attributes related to optical impairment limits for explicit mode (min OSNR, @@ -1924,7 +1962,7 @@ module ietf-layer0-types { uses penalty-value; } leaf max-polarization-dependent-loss { - type power-loss-or-null; + type power-loss-or-unknown; config false; mandatory true; description @@ -1966,14 +2004,14 @@ module ietf-layer0-types { "Modulation type the specific transceiver in the list can support."; } - leaf min-OSNR { + leaf min-osnr { type snr; units "dBm"; config false; description "Minimum OSNR measured over 0.1 nm resolution bandwidth: if received OSNR at Rx-power reference point - (rx-ref-channel-power) is lower than MIN-OSNR, an increased + (rx-ref-channel-power) is lower than min-osnr, an increased level of bit-errors post-FEC needs to be expected."; } leaf rx-ref-channel-power { @@ -1981,7 +2019,7 @@ module ietf-layer0-types { config false; description "The channel power used as reference for defining penalties - and min-OSNR."; + and min-osnr."; } list rx-channel-power-penalty { key "rx-channel-power-value"; @@ -2000,7 +2038,7 @@ module ietf-layer0-types { } uses penalty-value; } - leaf min-Q-factor { + leaf min-q-factor { type decimal-2; units "dB"; config false; @@ -2135,8 +2173,8 @@ module ietf-layer0-types { grouping common-standard-organizational-mode { description - "Common attributes used by standard and organizational - transceiver's modes."; + "The attributes describing the capabilities for a standard or + an organizational transceiver's mode."; leaf-list line-coding-bitrate { type identityref { base line-coding; @@ -2181,7 +2219,8 @@ module ietf-layer0-types { grouping common-all-modes { description - "Common attributes used by all transceiver's modes."; + "The attributes describing the capabilities for any type of + transceiver's mode."; container transceiver-tuning-range { config false; description @@ -2250,12 +2289,11 @@ module ietf-layer0-types { transport network, Clause 7.1.2"; } leaf tx-channel-power { - type power-dbm-or-null; + type power-dbm-or-unknown; description - "The current channel transmit power, when the value is - known or an empty value when the value is not known. + "The current channel transmit power. - The empty value MUST NOT be used when this attribute is + The 'unknown' value MUST NOT be used when this attribute is configured."; } } @@ -2265,18 +2303,16 @@ module ietf-layer0-types { "The common read-only parameters of an optical transceiver, that supplement the configured mode."; leaf rx-channel-power { - type power-dbm-or-null; + type power-dbm-or-unknown; config false; description - "The current channel received power, when the value is - known or an empty value when the value is not known."; + "The current channel received power."; } leaf rx-total-power { - type power-dbm-or-null; + type power-dbm-or-unknown; config false; description - "The current total received power, when the value is known - or an empty value when the value is not known."; + "The current total received power."; } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-lifecycle-ext@2026-01-25.yang b/experimental/ietf-extracted-YANG-modules/ietf-lifecycle-ext@2026-01-25.yang new file mode 100644 index 000000000..78acc6307 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-lifecycle-ext@2026-01-25.yang @@ -0,0 +1,90 @@ +module ietf-lifecycle-ext { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-lifecycle-ext"; + prefix ietf-ext; + + organization "IETF NETMOD Working Group"; + + contact + "WG Web: + WG List: + + Editor: Rajesh Tarakkad Venkateswaran + "; + + description + "This module defines a lifecycle extension for recording + migration metadata for deprecated YANG nodes. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + revision 2026-01-25 { + description + "Third revision. + - Removed obsoletion-info extension per IETF 123 working + group feedback. Replacement information is intended for + deprecated nodes only and should be removed when nodes + become obsolete. + - Enhanced deprecation-info extension description with + explicit MUST constraints, substatement restrictions, + and cardinality rules per RFC 8407 best practices. + - Removed Section 3.5 Handling Obsolete Nodes. + - Updated all references to focus solely on deprecated + nodes."; + reference "draft-rtv-netmod-yang-subtree-replacement-03"; + } + + revision 2026-01-15 { + description + "Second revision. Added CODE BEGINS markers for YANG + validation. Restructured sections to separate normative + module from examples."; + reference "draft-rtv-netmod-yang-subtree-replacement-02"; + } + + revision 2025-12-28 { + description "Initial revision."; + reference "draft-rtv-netmod-yang-subtree-replacement-01"; + } + + extension deprecation-info { + argument "tuple"; + description + "Attaches a lifecycle-entry tuple to a deprecated schema + node. + + This extension MUST be used only with nodes that have + 'status deprecated'. The parent node containing this + extension MUST include a 'status deprecated' statement. + + This statement MAY be used as a substatement of container, + list, leaf, leaf-list, choice, case, anydata, and anyxml + statements. It MUST NOT be used as a substatement of rpc, + action, or notification statements. + + Zero or more 'deprecation-info' statements per parent + statement are allowed. Multiple instances represent + different migration paths for the same deprecated node. + + The tuple format and semantics are defined in the body + of the document that defines this extension."; + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-lm-hierarchy@2025-07-06.yang b/experimental/ietf-extracted-YANG-modules/ietf-lm-hierarchy@2026-02-11.yang similarity index 97% rename from experimental/ietf-extracted-YANG-modules/ietf-lm-hierarchy@2025-07-06.yang rename to experimental/ietf-extracted-YANG-modules/ietf-lm-hierarchy@2026-02-11.yang index 06431396c..3ec1c4dbd 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-lm-hierarchy@2025-07-06.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-lm-hierarchy@2026-02-11.yang @@ -21,7 +21,7 @@ module ietf-lm-hierarchy { Model (LM) nodes that coordinate inference, summarization and escalation across tiny/small/large LM tiers. -Copyright (c) 2025 IETF Trust and the persons identified as the +Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal @@ -34,17 +34,17 @@ document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License. -This version of this YANG module is part of draft-williams-netmod-lm-hierarchy-topology-01; +This version of this YANG module is part of draft-williams-netmod-lm-hierarchy-topology-02; see the Internet-Draft itself for full legal notices."; reference "RFC 7950: The YANG 1.1 Data Modeling Language RFC 8407: Guidelines for Authors and Reviewers of YANG Data Model Documents"; - revision 2025-07-06 { + revision 2026-02-11 { description - "Initial revision for I-D draft-williams-netmod-lm-hierarchy-topology-01."; + "Initial revision for I-D draft-williams-netmod-lm-hierarchy-topology-02."; reference - "I-D: draft-williams-netmod-lm-hierarchy-topology-01"; + "I-D: draft-williams-netmod-lm-hierarchy-topology-02"; } feature pluggable-token-validation { diff --git a/experimental/ietf-extracted-YANG-modules/ietf-microwave-radio-link@2025-04-04.yang b/experimental/ietf-extracted-YANG-modules/ietf-microwave-radio-link@2026-03-02.yang similarity index 91% rename from experimental/ietf-extracted-YANG-modules/ietf-microwave-radio-link@2025-04-04.yang rename to experimental/ietf-extracted-YANG-modules/ietf-microwave-radio-link@2026-03-02.yang index 0aee5e5f2..d2f405936 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-microwave-radio-link@2025-04-04.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-microwave-radio-link@2026-03-02.yang @@ -6,7 +6,7 @@ module ietf-microwave-radio-link { import ietf-yang-types { prefix yang; reference - "RFC 6991"; + "RFC 9911"; } import iana-if-type { prefix ianaift; @@ -38,12 +38,19 @@ module ietf-microwave-radio-link { Xi Li (Xi.Li@neclab.eu) Daniela Spreafico (daniela.spreafico@nokia.com) Marko Vaupotic (Marko.Vaupotic@aviatnet.com) - Danilo Pala (danilo.pala@siaemic.com)"; + Danilo Pala (danilo.pala@techmahindra.com)"; description - "This is a module for the entities in - a generic microwave system. + "This YANG module defines a YANG data model for control + and management of radio link interfaces and their + connectivity to packet (typically Ethernet) interfaces + in a microwave/millimeter wave node. The data + nodes for management of the interface protection + functionality is broken out into a separate and generic + YANG data model in order to make it available for other + interface types as well. This is a YANG module for the + entities in a generic microwave system. - 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 @@ -53,21 +60,25 @@ module ietf-microwave-radio-link { Relating to IETF Documents (http://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC XXXX; + This version of this YANG module is part of RFC 8561bis; see the RFC itself for full legal notices."; - // RFC Ed.: replace XXXX with actual RFC number and remove + // RFC Ed.: replace 8561bis with actual RFC number and remove // this note // replace the revision date with the module publication date // the format is (year-month-day) - revision 2025-04-04 { + revision 2026-03-02 { description - "Draft - Issue #32 Compression, - Issue #35 grouping common-microwave-properties, - Issue #31 added minimum-nominal-power"; + "TBD"; reference - "RFC XXX: A YANG Data Model for Microwave Radio Link"; + "RFC XXXX: A YANG Data Model for Microwave Radio Link"; + } + revision 2019-06-19 { + description + "Initial revision."; + reference + "RFC 8561: A YANG Data Model for Microwave Radio Link"; } /* @@ -131,7 +142,7 @@ module ietf-microwave-radio-link { " 'true' when the profile can be used to configure the reference-modulation in adaptive coding-modulation-mode. Otherwise the value is 'false' and the reference-modulation - to use cannot be configured + to use cannot be configured (it could be selected automatically by the system). "; } @@ -165,10 +176,27 @@ module ietf-microwave-radio-link { leaf id { type string; description - "Descriptive identity of the radio link terminal used by - far-end RLT to check that it's connected to the correct - near-end RLT. Does not need to be configured if this - check is not used."; + "Descriptive identity of the near-end radio link terminal + transmitted to be used by the far-end RLT for RLT + connectivity check. + Does not need to be configured if RLT connectivity check is + not used by the far-end RLT."; + } + leaf far-end-id-check-enabled { + type boolean; + description + "'true' value when the RLT connectivity check is used. + 'false' if the RLT connectivity check is not used."; + } + leaf expected-far-end-id { + when "../far-end-id-check-enabled = 'true'"; + type string; + description + "Descriptive identity of the radio link terminal expected + from far-end RLT and used for RLT connectivity check + (i.e., to check that the expected value is the same as the + value received from the far-end RLT). + By default it is the same as the 'id'."; } choice mode-option { mandatory true; @@ -280,12 +308,13 @@ module ietf-microwave-radio-link { key "name"; config false; description - "The list of header compression profiles supported by the - RLT. - Header compression is typically vendor proprietary and it is - assumed there is no ambition to change that. For this reason - the list provides only generic attributes to be augmented by - vendor with proprietary implementation attributes."; + "The list of header compression profiles supported by the + RLT. + Header compression is typically vendor proprietary and it + is assumed there is no ambition to change that. For this + reason the list provides only generic attributes to be + augmented by vendor with proprietary implementation + attributes."; leaf name { type string; description @@ -345,12 +374,24 @@ module ietf-microwave-radio-link { type string; default "A"; description - "ID of the carrier (e.g., A, B, C, or D). - Used in XPIC and MIMO configurations to check that - the carrier termination is connected to the correct - far-end carrier termination. Should be the same - carrier ID on both sides of the hop. Left as - default value when MIMO and XPIC are not in use."; + "ID of the carrier (e.g., A, B, C, or D) transmitted + to be used in XPIC and MIMO configurations by the far-end + CT for CT connectivity check."; + } + leaf far-end-carrier-id-check-enabled { + type boolean; + description + "'true' value when the CT connectivity check is used. + 'false' if the CT connectivity check is not used."; + } + leaf expected-far-end-carrier-id { + when "../far-end-carrier-id-check-enabled = 'true'"; + type string; + description + "Descriptive identity of the carrier expected from far-end + CT (e.g., A, B, C, or D) to check that it's connected to + the correct near-end CT. + By default it is the same as the carrier-id."; } leaf tx-enabled { type boolean; @@ -380,9 +421,7 @@ module ietf-microwave-radio-link { description "Shows the operative status of the transmitter."; } - uses mw-types:common-microwave-properties; - choice freq-or-distance { mandatory true; description @@ -565,7 +604,7 @@ module ietf-microwave-radio-link { description "the reference-modulation is the coding modulation to be used in the reference mode, as defined in - ETSI EN 302 217-1 V3.2.2 (2020-02). + ETSI EN 302 217-1 V3.2.2 (2020-02). The reference mode identifies the operative mode which characteristics (i.e. system capacity, spectral efficiency class over a given channel separation) are @@ -573,7 +612,7 @@ module ietf-microwave-radio-link { link per link coordination analysis. Its value has to be between the 'selected-min-acm' and the 'selected-max-acm' attribute's values. - "; + "; } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-microwave-types@2025-04-04.yang b/experimental/ietf-extracted-YANG-modules/ietf-microwave-types@2026-03-02.yang similarity index 92% rename from experimental/ietf-extracted-YANG-modules/ietf-microwave-types@2025-04-04.yang rename to experimental/ietf-extracted-YANG-modules/ietf-microwave-types@2026-03-02.yang index 46da71cc2..05711541a 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-microwave-types@2025-04-04.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-microwave-types@2026-03-02.yang @@ -14,12 +14,12 @@ module ietf-microwave-types { Xi Li (Xi.Li@neclab.eu) Daniela Spreafico (daniela.spreafico@nokia.com) Marko Vaupotic (Marko.Vaupotic@aviatnet.com) - Danilo Pala (danilo.pala@siaemic.com)"; + Danilo Pala (danilo.pala@techmahindra.com)"; description - "This module contains a collection of YANG data types - considered generally useful for microwave interfaces. + "This is a YANG module for the entities in + a generic interface protection mechanism. - 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 @@ -29,19 +29,25 @@ module ietf-microwave-types { Relating to IETF Documents (http://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC 8561; see - the RFC itself for full legal notices."; + This version of this YANG module is part of RFC 8561bis; + see the RFC itself for full legal notices."; - // RFC Ed.: replace XXXX with actual RFC number and remove + // RFC Ed.: replace 8561bis with actual RFC number and remove // this note // replace the revision date with the module publication date // the format is (year-month-day) - revision 2025-04-04 { + revision 2026-03-02 { description - "Draft - Comression #32, new grouping Issue #35"; + "TBD"; reference - "RFC XXX: A YANG Data Model for Microwave Radio Link"; + "RFC XXXX: A YANG Data Model for Microwave Radio Link"; + } + revision 2019-06-19 { + description + "Initial revision."; + reference + "RFC 8561: A YANG Data Model for Microwave Radio Link"; } /* @@ -89,6 +95,12 @@ module ietf-microwave-types { "The coding and modulation schemes."; } + identity fourth-bpsk { + base coding-modulation; + description + "Fourth BPSK coding and modulation scheme."; + } + identity half-bpsk { base coding-modulation; description diff --git a/experimental/ietf-extracted-YANG-modules/ietf-mpls-mldp-extended@2025-07-05.yang b/experimental/ietf-extracted-YANG-modules/ietf-mpls-mldp-extended@2026-02-03.yang similarity index 59% rename from experimental/ietf-extracted-YANG-modules/ietf-mpls-mldp-extended@2025-07-05.yang rename to experimental/ietf-extracted-YANG-modules/ietf-mpls-mldp-extended@2026-02-03.yang index 374e66b7f..a8890b9f7 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-mpls-mldp-extended@2025-07-05.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-mpls-mldp-extended@2026-02-03.yang @@ -6,7 +6,7 @@ module ietf-mpls-mldp-extended { import ietf-inet-types { prefix "inet"; - reference "RFC 6991: Common YANG Data Types"; + reference "RFC 9911: Common YANG Data Types"; } import ietf-interfaces { @@ -55,7 +55,7 @@ module ietf-mpls-mldp-extended { Editor: Xufeng Liu - Editor: Santosh Esale + Editor: Santosh Easale Editor: Loa Andersson @@ -69,11 +69,11 @@ module ietf-mpls-mldp-extended { management of Multiprotocol Label Switching (MPLS) Multipoint LDP (mLDP). - The types and groupings defined in this module are intended exclusively - for use within this module itself or any other module that augments this - module. + The types and groupings defined in this module are intended + exclusively for use within this module itself or any other + module that augments this module. - Copyright (c) 2024 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 @@ -90,6 +90,39 @@ module ietf-mpls-mldp-extended { // RFC Editor: replace XXXX with actual RFC number and remove // this note + revision 2026-02-03 { + // RFC Editor: replace the above date with the date of + // publication and remove this note. + description + "Fixing copytight and authors before publication"; + reference + "RFC XXXX: YANG Data Model for MPLS mLDP"; + // RFC Editor: replace XXXX with actual RFC number and remove + // this note + } + + revision 2025-12-15 { + // RFC Editor: replace the above date with the date of + // publication and remove this note. + description + "Removed static-lsps-leaf from the model"; + reference + "RFC XXXX: YANG Data Model for MPLS mLDP"; + // RFC Editor: replace XXXX with actual RFC number and remove + // this note + } + + revision 2025-10-20 { + // RFC Editor: replace the above date with the date of + // publication and remove this note. + description + "Addressing RtgDir review comments related to recursive FEC"; + reference + "RFC XXXX: Base YANG Data Model for MPLS mLDP"; + // RFC Editor: replace XXXX with actual RFC number and remove + // this note + } + revision 2025-07-05 { // RFC Editor: replace the above date with the date of // publication and remove this note. @@ -100,7 +133,6 @@ module ietf-mpls-mldp-extended { // RFC Editor: replace XXXX with actual RFC number and remove // this note } - revision 2024-12-01 { // RFC Editor: replace the above date 2024-12-01 with the date of // publication and remove this note. @@ -178,14 +210,15 @@ module ietf-mpls-mldp-extended { /* * Groupings */ - grouping mldp-ext-binding-label-peer-state { + grouping mldp-ext-binding-label-peer-state { description "mLDP label binding peer state."; list peer { key "direction peer advertisement-type"; description - "List of peers with bindings exchnaged (sent and/or received)"; + "List of peers with bindings exchnaged (sent and/or + received)"; leaf peer { type leafref { path @@ -197,7 +230,6 @@ module ietf-mpls-mldp-extended { to which this binding is advertised."; } uses mldp:mldp-binding-label-peer-state-attributes; - leaf mofrr-status { when "../direction = 'upstream'" { description @@ -268,7 +300,8 @@ module ietf-mpls-mldp-extended { leaf prefix-list { type ldp-ext:prefix-list-ref; description - "Enables Multicast-only FRR (MoFRR) for the specified prefix-list"; + "Enables Multicast-only FRR (MoFRR) for the specified + prefix-list"; } } // multicast-only-frr @@ -283,6 +316,55 @@ module ietf-mpls-mldp-extended { } // recursive-fec } // mldp-ext-per-af-config-attributes + grouping opaque-value-element-recursive-container { + description + "Container mLDP recursive opaque elements."; + reference + "RFC6512: Using Multipoint LDP When the + Backbone Has No Route to the Root"; + + container opaque-value-element-recursive { + config false; + description + "Recursive opaque type"; + reference + "RFC6512: Using Multipoint LDP When the + Backbone Has No Route to the Root"; + list fec-label { + key + "rd opaque-value"; + description + "List of FEC-label bindings"; + leaf rd { + type rt-types:route-distinguisher; + description + "Route Distinguisher"; + reference + "RFC7246: Multipoint Label Distribution + Protocol In-Band Signaling in a Virtual + Routing and Forwarding (VRF) Table + Context."; + } + leaf opaque-value { + type binary; + description + "The opaque value that is not interpreted at this device."; + } + leaf multipoint-type { + type mldp:multipoint-type; + description "The type of multipoint: p2mp or mp2mp"; + } + leaf opaque-value-element-type { + type identityref + { base mldp:mldp-opaque-value-element-basic-type; } + description "Type of Opaque value element"; + } + + uses mldp-ext-binding-label-peer-state; + } // fec-label + } // opaque-value-element-recursive + } // opaque-value-element-recursive-container + grouping recursive-fec-base-attributes { description "mLDP recursive FEC base attributes."; @@ -325,20 +407,6 @@ module ietf-mpls-mldp-extended { uses mldp-ext-capabilities; } - /* TODO: FIXME - // Peer capability - augment "/rt:routing/rt:control-plane-protocols/" - + "rt:control-plane-protocol/ldp:mpls-ldp/ldp:peers/ldp:peer/" - + "ldp:capability" { - description "Augmentation for mLDP peer capability."; - container mldp { - if-feature per-peer-capability; - description - "mLDP capabilities"; - uses mldp:mldp-capabilities; - } - } */ - // IPv4 config augment "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/ldp:mpls-ldp/ldp:global/mldp:mldp/" @@ -347,120 +415,6 @@ module ietf-mpls-mldp-extended { uses mldp-ext-per-af-config-attributes; } - // IPv4 static-lsps-leaf config - augment "/rt:routing/rt:control-plane-protocols/" - + "rt:control-plane-protocol/ldp:mpls-ldp/ldp:global/mldp:mldp/" - + "mldp:address-families/mldp:ipv4/mldp:static-lsps-leaf/" - + "mldp:opaque-element-lspid/mldp:fec-label" { - description - "Augmentation for mLDP IPv4 static-lsps-leaf - configuration for opaque-element-lspid with recursive-fec"; - list recursive-fec { - key - "recur-root-address"; - description - "List of recursive-fec opaque values"; - uses recursive-fec-base-attributes; - } // recursive-fec - } - - augment "/rt:routing/rt:control-plane-protocols/" - + "rt:control-plane-protocol/ldp:mpls-ldp/ldp:global/mldp:mldp/" - + "mldp:address-families/mldp:ipv4/mldp:static-lsps-leaf" { - description - "Augmentation for mLDP IPv4 static-lsps-leaf - configuration for other opaque types"; - - container opaque-element-transit-source { - description - "Transit IPv4/VPNv4 Source opaque type"; - reference - "RFC6826: Multipoint LDP In-Band Signaling for - Point-to-Multipoint and - Multipoint-to-Multipoint Label Switched Paths."; - list fec-label { - key - "root-address source-address group-address " + - "rd recur-root-address recur-rd"; - description - "List of FEC-label bindings"; - leaf root-address { - type inet:ipv4-address; - description - "Root address"; - } - leaf source-address { - type inet:ipv4-address; - description - "Source address (0.0.0.0 refers to wildcard *)"; - } - leaf group-address { - type inet:ipv4-address; - description - "Group address (0.0.0.0 refers to wildcard *)"; - } - leaf rd { - type rt-types:route-distinguisher; - description - "Route Distinguisher"; - reference - "RFC7246: Multipoint Label Distribution - Protocol In-Band Signaling in a Virtual - Routing and Forwarding (VRF) Table - Context."; - } - uses recursive-fec-attributes; - } // fec-label - } // opaque-element-transit-source - - container opaque-element-transit-bidir { - description - "Transit IPv4/VPNv4 Bidir opaque type"; - reference - "RFC6826: Multipoint LDP In-Band Signaling for - Point-to-Multipoint and - Multipoint-to-Multipoint Label Switched - Paths."; - list fec-label { - key - "root-address masklen rp group-address rd recur-root-address " - + "recur-rd"; - description - "List of FEC-label bindings"; - leaf root-address { - type inet:ipv4-address; - description - "Root address"; - } - leaf masklen { - type uint8; - description "Mask length for the subnet"; - } - leaf rp { - type inet:ipv4-address; - description - "Rendezvous-Point (RP) address"; - } - leaf group-address { - type inet:ipv4-address; - description - "Group address"; - } - leaf rd { - type rt-types:route-distinguisher; - description - "Route Distinguisher"; - reference - "RFC7246: Multipoint Label Distribution - Protocol In-Band Signaling in a Virtual - Routing and Forwarding (VRF) Table - Context."; - } - uses recursive-fec-attributes; - } // fec-label - } // opaque-element-transit-bidir - } - // IPv6 config augment "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/ldp:mpls-ldp/ldp:global/mldp:mldp/" @@ -490,7 +444,7 @@ module ietf-mpls-mldp-extended { augment "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/ldp:mpls-ldp/ldp:global/mldp:mldp/" + "mldp:address-families/mldp:ipv4/mldp:roots/mldp:root/" - + "mldp:bindings/mldp:opaque-element-lspid/mldp:fec-label/" + + "mldp:bindings/mldp:opaque-value-element-lspid/mldp:fec-label/" + "mldp:peer" { description "Augmentation for mLDP IPv4 state"; @@ -513,16 +467,16 @@ module ietf-mpls-mldp-extended { "Augmentation for mLDP received peer state capability."; container hub-and-spoke { description - "Operatiobal state information for the peer's hub-and-spoke-multipoint - capability."; + "Operatiobal state information for the peer's + hub-and-spoke-multipoint capability."; reference "RFC7140: LDP Extensions for Hub and Spoke Multipoint Label Switched Path"; leaf is-capable { type boolean; description - "'true' when hub-and-spoke-multipoint capability is received from - peer"; + "'true' when hub-and-spoke-multipoint capability is + received from peer"; } } container node-protection { @@ -534,14 +488,14 @@ module ietf-mpls-mldp-extended { leaf is-plr-capable { type boolean; description - "'true' when Point of Local Repair (PLR) node-protection capability - is received from peer"; + "'true' when Point of Local Repair (PLR) node-protection + capability is received from peer"; } leaf is-merge-point-capable { type boolean; description - "'true' when Merge-point node-protection capability is received from - peer"; + "'true' when Merge-point node-protection capability is + received from peer"; } // merge-point } // node-protection } @@ -553,7 +507,7 @@ module ietf-mpls-mldp-extended { + "mldp:bindings" { description "Augmentation for mLDP IPv4 bindings extended type."; - container opaque-element-transit-source { + container opaque-value-element-transit-source { description "Transit IPv4/VPNv4 Source opaque type"; reference @@ -562,8 +516,7 @@ module ietf-mpls-mldp-extended { Multipoint-to-Multipoint Label Switched Paths."; list fec-label { key - "source-address group-address " - + "rd recur-root-address recur-rd"; + "source-address group-address rd"; description "List of FEC-label bindings"; leaf source-address { @@ -586,12 +539,21 @@ module ietf-mpls-mldp-extended { Routing and Forwarding (VRF) Table Context."; } - uses recursive-fec-attributes; + leaf multipoint-type { + type mldp:multipoint-type; + description "The type of multipoint: p2mp or mp2mp"; + } + leaf opaque-value-element-type { + type identityref + { base mldp:mldp-opaque-value-element-basic-type; } + description "Type of Opaque value element"; + } + uses mldp-ext-binding-label-peer-state; } // fec-label - } // opaque-element-transit-source + } // opaque-value-element-transit-source - container opaque-element-transit-bidir { + container opaque-value-element-transit-bidir { description "Transit IPv4/VPNv4 Bidir opaque type"; reference @@ -601,7 +563,7 @@ module ietf-mpls-mldp-extended { Paths."; list fec-label { key - "masklen rp group-address rd recur-root-address recur-rd"; + "masklen rp group-address rd"; description "List of FEC-label bindings"; leaf masklen { @@ -628,10 +590,21 @@ module ietf-mpls-mldp-extended { Routing and Forwarding (VRF) Table Context."; } - uses recursive-fec-attributes; + leaf multipoint-type { + type mldp:multipoint-type; + description "The type of multipoint: p2mp or mp2mp"; + } + leaf opaque-value-element-type { + type identityref + { base mldp:mldp-opaque-value-element-basic-type; } + description "Type of Opaque value element"; + } + uses mldp-ext-binding-label-peer-state; } // fec-label - } // opaque-element-transit-bidir + } // opaque-value-element-transit-bidir + + uses opaque-value-element-recursive-container; } // IPv6 bindings state @@ -639,7 +612,7 @@ module ietf-mpls-mldp-extended { + "rt:control-plane-protocol/ldp:mpls-ldp/ldp:global/mldp:mldp/" + "mldp:address-families/ipv6/roots/root/bindings" { description "Augmentation for mLDP IPv6 bindings."; - container opaque-element-transit-source { + container opaque-value-element-transit-source { config false; description "Transit IPv6/VPNv6 Source opaque type"; @@ -650,8 +623,7 @@ module ietf-mpls-mldp-extended { Paths."; list fec-label { key - "source-address group-address " - + "rd recur-root-address recur-rd"; + "source-address group-address rd"; description "List of FEC-label bindings"; leaf source-address { @@ -674,12 +646,21 @@ module ietf-mpls-mldp-extended { Routing and Forwarding (VRF) Table Context."; } - uses recursive-fec-attributes; + leaf multipoint-type { + type mldp:multipoint-type; + description "The type of multipoint: p2mp or mp2mp"; + } + leaf opaque-value-element-type { + type identityref + { base mldp:mldp-opaque-value-element-basic-type; } + description "Type of Opaque value element"; + } + uses mldp-ext-binding-label-peer-state; } // fec-label - } // opaque-element-transit-source + } // opaque-value-element-transit-source - container opaque-element-transit-bidir { + container opaque-value-element-transit-bidir { config false; description "Transit IPv6/VPNv6 Bidir opaque type"; @@ -690,7 +671,7 @@ module ietf-mpls-mldp-extended { Paths."; list fec-label { key - "masklen rp group-address rd recur-root-address recur-rd"; + "masklen rp group-address rd"; description "List of FEC-label bindings"; leaf masklen { @@ -717,42 +698,21 @@ module ietf-mpls-mldp-extended { Routing and Forwarding (VRF) Table Context."; } - uses recursive-fec-attributes; + leaf multipoint-type { + type mldp:multipoint-type; + description "The type of multipoint: p2mp or mp2mp"; + } + leaf opaque-value-element-type { + type identityref + { base mldp:mldp-opaque-value-element-basic-type; } + description "Type of Opaque value element"; + } + uses mldp-ext-binding-label-peer-state; } // fec-label - } // opaque-element-transit-bidir - } + } // opaque-value-element-transit-bidir - // IPv4 bindings opaque-element-lspid state - augment "/rt:routing/rt:control-plane-protocols/" - + "rt:control-plane-protocol/ldp:mpls-ldp/ldp:global/mldp:mldp/" - + "mldp:address-families/mldp:ipv4/mldp:roots/mldp:root/" - + "mldp:bindings/mldp:opaque-element-lspid/mldp:fec-label" { - description - "Augmentation for mLDP IPv4 bindings opaque type LSP ID."; - list recursive-fec { - key - "recur-root-address"; - description - "List of recursive opaque values"; - uses recursive-fec-base-attributes; - } // recursive-fec - } - - // IPv6 bindings opaque-element-lspid state - augment "/rt:routing/rt:control-plane-protocols/" - + "rt:control-plane-protocol/ldp:mpls-ldp/ldp:global/mldp:mldp/" - + "mldp:address-families/ipv6/roots/root/bindings/" - + "opaque-element-lspid/fec-label" { - description - "Augmentation for mLDP IPv6 bindings with opaque type LSP ID."; - list recursive-fec { - key "recur-root-address"; - config false; - description - "List of recursive opaque values"; - uses recursive-fec-base-attributes; - } // recursive-fec + uses opaque-value-element-recursive-container; } /* @@ -770,7 +730,7 @@ module ietf-mpls-mldp-extended { "Containing data related to the IPv6 address family."; leaf enabled { type boolean; - default "true"; // TBD + default "true"; description "'false' to disable the IPv6 address family."; } @@ -799,7 +759,7 @@ module ietf-mpls-mldp-extended { list reachability { key "address interface"; description - "Root reachability information in form of a next-hop"; + "Root reachability information in form of a next-hop"; leaf address { type inet:ipv6-address; description @@ -817,16 +777,18 @@ module ietf-mpls-mldp-extended { + "ldp:peer/ldp:lsr-id"; } description - "LDP peer associated with the nexthop (address, interface)"; + "LDP peer associated with the nexthop (address, + interface)"; } } container bindings { description "mLDP FEC-label bindings"; - container opaque-element-lspid { + container opaque-value-element-lspid { description - "Generic LSP identifier opaque element FEC-label bindings container"; + "Generic LSP identifier opaque element FEC-label + bindings container"; reference "RFC6388: Label Distribution Protocol Extensions for Point-to-Multipoint and @@ -846,144 +808,18 @@ module ietf-mpls-mldp-extended { description "The type of multipoint: p2mp or mp2mp"; } + leaf opaque-value-element-type { + type identityref { + base mldp:mldp-opaque-value-element-basic-type; } + description "Type of Opaque value element"; + } uses mldp-ext-binding-label-peer-state; } // fec-label - } // opaque-element-lspid + } // opaque-value-element-lspid } // bindings } // list root } // roots - - container static-lsps-leaf { - description - "Statically Configured multicast LSPs at leaf node."; - - container opaque-element-lspid { - description - "Generic LSP identifier opaque element FEC-label bindings container"; - reference - "RFC6388: Label Distribution Protocol - Extensions for Point-to-Multipoint and - Multipoint-to-Multipoint Label Switched - Paths."; - list fec-label { - key - "root-address lsp-id"; - description - "List of FEC-label bindings"; - leaf root-address { - type inet:ipv6-address; - description - "Root address"; - } - leaf lsp-id { - type uint32; - description "LSP identifier"; - } - leaf multipoint-type { - type mldp:multipoint-type; - description - "The type of multipoint: p2mp or mp2mp"; - } - list recursive-fec { - key - "recur-root-address"; - description - "List of recursive opaque values"; - uses recursive-fec-base-attributes; - } // recursive-fec - } // fec-label - } // opaque-element-lspid - - container opaque-element-transit-source { - description - "Transit IPv6/VPNv6 Source opaque type"; - reference - "RFC6826: Multipoint LDP In-Band Signaling for - Point-to-Multipoint and - Multipoint-to-Multipoint Label Switched Paths."; - list fec-label { - key - "root-address source-address group-address " - + "rd recur-root-address recur-rd"; - description - "List of FEC-label bindings"; - leaf root-address { - type inet:ipv6-address; - description - "Root address"; - } - leaf source-address { - type inet:ipv6-address; - description - "Source address (::0 refers to wildcard *)"; - } - leaf group-address { - type inet:ipv6-address; - description - "Group address (::0 refers to wildcard *)"; - } - leaf rd { - type rt-types:route-distinguisher; - description - "Route Distinguisher"; - reference - "RFC7246: Multipoint Label Distribution - Protocol In-Band Signaling in a Virtual - Routing and Forwarding (VRF) Table - Context."; - } - uses recursive-fec-attributes; - } // fec-label - } // opaque-element-transit-source - - container opaque-element-transit-bidir { - description - "Transit IPv6/VPNv6 Bidir opaque type"; - reference - "RFC6826: Multipoint LDP In-Band Signaling for - Point-to-Multipoint and - Multipoint-to-Multipoint Label Switched - Paths."; - list fec-label { - key - "root-address masklen rp group-address rd recur-root-address " - + "recur-rd"; - description - "List of FEC-label bindings."; - leaf root-address { - type inet:ipv6-address; - description - "Root address"; - } - leaf masklen { - type uint8; - description "Mask length for the subnet"; - } - leaf rp { - type inet:ipv6-address; - description - "Rendezvous Point (RP) address"; - } - leaf group-address { - type inet:ipv6-address; - description - "Group address"; - } - leaf rd { - type rt-types:route-distinguisher; - description - "Route Distinguisher"; - reference - "RFC7246: Multipoint Label Distribution - Protocol In-Band Signaling in a Virtual - Routing and Forwarding (VRF) Table - Context."; - } - uses recursive-fec-attributes; - } // fec-label - } // opaque-element-transit-bidir - } // static-lsps-leaf } // ipv6 } @@ -993,97 +829,98 @@ module ietf-mpls-mldp-extended { /* * Notifications */ - augment "/mldp:mpls-mldp-fec-event/mldp:opaque-element/" - + "mldp:opaque-element-lspid/mldp:opaque-element-lspid" { - description - "Augmentation for mLDP notification for opaque-element-lspid."; - container recursive-fec { - description - "Container of recursive opaque values"; - uses recursive-fec-base-attributes; - } // recursive-fec - } - - augment "/mldp:mpls-mldp-fec-event/mldp:opaque-element" { - description - "Augmentation for mLDP notification for opaque types other than lspid."; - case opaque-element-transit-source { - container opaque-element-transit-source { - description - "Transit IP/VPN Source opaque type"; - reference - "RFC6826: Multipoint LDP In-Band Signaling for - Point-to-Multipoint and - Multipoint-to-Multipoint Label Switched Paths."; - leaf root-address { - type inet:ip-address; - description - "Root address"; - } - leaf source-address { - type inet:ip-address; - description - "Source address"; - } - leaf group-address { - type inet:ip-address; - description - "Group address"; - } - leaf rd { - type rt-types:route-distinguisher; - description - "Route Distinguisher"; - reference - "RFC7246: Multipoint Label Distribution - Protocol In-Band Signaling in a Virtual - Routing and Forwarding (VRF) Table - Context."; - } - uses recursive-fec-attributes; - } // opaque-element-transit-source container - } // opaque-element-transit-source case - - case opaque-element-transit-bidir { - container opaque-element-transit-bidir { - description - "Transit IP/VPN Bidir opaque type"; - reference - "RFC6826: Multipoint LDP In-Band Signaling for - Point-to-Multipoint and - Multipoint-to-Multipoint Label Switched - Paths."; - leaf root-address { - type inet:ip-address; - description - "Root address"; - } - leaf masklen { - type uint8; - description "Mask length for the subnet"; - } - leaf rp { - type inet:ip-address; - description - "Rendezvous Point (RP) address"; - } - leaf group-address { - type inet:ip-address; - description - "Group address"; - } - leaf rd { - type rt-types:route-distinguisher; - description - "Route Distinguisher"; - reference - "RFC7246: Multipoint Label Distribution - Protocol In-Band Signaling in a Virtual - Routing and Forwarding (VRF) Table - Context."; - } - uses recursive-fec-attributes; - } // opaque-element-transit-bidir container - } // opaque-element-transit-bidir case - } // augment -} // module +augment "/mldp:mpls-mldp-fec-event/mldp:opaque-value-element/" + + "mldp:opaque-value-element-lspid/mldp:opaque-value-element-lspid" { + description + "Augmentation for mLDP notification for opaque-value-element-lspid."; + container recursive-fec { + description + "Container of recursive opaque values"; + uses recursive-fec-base-attributes; + } // recursive-fec + } + + augment "/mldp:mpls-mldp-fec-event/mldp:opaque-value-element" { + description + "Augmentation for mLDP notification for opaque types other + than lspid."; + case opaque-value-element-transit-source { + container opaque-value-element-transit-source { + description + "Transit IP/VPN Source opaque type"; + reference + "RFC6826: Multipoint LDP In-Band Signaling for + Point-to-Multipoint and + Multipoint-to-Multipoint Label Switched Paths."; + leaf root-address { + type inet:ip-address; + description + "Root address"; + } + leaf source-address { + type inet:ip-address; + description + "Source address"; + } + leaf group-address { + type inet:ip-address; + description + "Group address"; + } + leaf rd { + type rt-types:route-distinguisher; + description + "Route Distinguisher"; + reference + "RFC7246: Multipoint Label Distribution + Protocol In-Band Signaling in a Virtual + Routing and Forwarding (VRF) Table + Context."; + } + uses recursive-fec-attributes; + } // opaque-value-element-transit-source container + } // opaque-value-element-transit-source case + + case opaque-value-element-transit-bidir { + container opaque-value-element-transit-bidir { + description + "Transit IP/VPN Bidir opaque type"; + reference + "RFC6826: Multipoint LDP In-Band Signaling for + Point-to-Multipoint and + Multipoint-to-Multipoint Label Switched + Paths."; + leaf root-address { + type inet:ip-address; + description + "Root address"; + } + leaf masklen { + type uint8; + description "Mask length for the subnet"; + } + leaf rp { + type inet:ip-address; + description + "Rendezvous Point (RP) address"; + } + leaf group-address { + type inet:ip-address; + description + "Group address"; + } + leaf rd { + type rt-types:route-distinguisher; + description + "Route Distinguisher"; + reference + "RFC7246: Multipoint Label Distribution + Protocol In-Band Signaling in a Virtual + Routing and Forwarding (VRF) Table + Context."; + } + uses recursive-fec-attributes; + } // opaque-value-element-transit-bidir container + } // opaque-value-element-transit-bidir case + } // augment + } // module diff --git a/experimental/ietf-extracted-YANG-modules/ietf-mpls-mldp@2025-07-05.yang b/experimental/ietf-extracted-YANG-modules/ietf-mpls-mldp@2026-02-03.yang similarity index 72% rename from experimental/ietf-extracted-YANG-modules/ietf-mpls-mldp@2025-07-05.yang rename to experimental/ietf-extracted-YANG-modules/ietf-mpls-mldp@2026-02-03.yang index 060e6c4e3..155388795 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-mpls-mldp@2025-07-05.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-mpls-mldp@2026-02-03.yang @@ -6,7 +6,7 @@ module ietf-mpls-mldp { import ietf-inet-types { prefix "inet"; - reference "RFC 6991: Common YANG Data Types"; + reference "RFC 9911: Common YANG Data Types"; } import ietf-interfaces { @@ -44,7 +44,7 @@ module ietf-mpls-mldp { Editor: Xufeng Liu - Editor: Santosh Esale + Editor: Santosh Easale Editor: Loa Andersson @@ -58,11 +58,11 @@ module ietf-mpls-mldp { management of Multiprotocol Label Switching (MPLS) Multipoint LDP (mLDP). - The types and groupings defined in this module are intended exclusively - for use within this module itself or any other module that augments this - module. + The types and groupings defined in this module are intended + exclusively for use within this module itself or any other + module that augments this module. - Copyright (c) 2024 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 @@ -79,6 +79,39 @@ module ietf-mpls-mldp { // RFC Editor: replace XXXX with actual RFC number and remove // this note + revision 2026-02-03 { + // RFC Editor: replace the above date with the date of + // publication and remove this note. + description + "Fixing copytight and authors before publication"; + reference + "RFC XXXX: YANG Data Model for MPLS mLDP"; + // RFC Editor: replace XXXX with actual RFC number and remove + // this note + } + + revision 2025-12-15 { + // RFC Editor: replace the above date with the date of + // publication and remove this note. + description + "Removed static-lsps-leaf from the model"; + reference + "RFC XXXX: YANG Data Model for MPLS mLDP"; + // RFC Editor: replace XXXX with actual RFC number and remove + // this note + } + + revision 2025-10-20 { + // RFC Editor: replace the above date with the date of + // publication and remove this note. + description + "Addressing RtgDir review comments related to recursive FEC"; + reference + "RFC XXXX: YANG Data Model for MPLS mLDP"; + // RFC Editor: replace XXXX with actual RFC number and remove + // this note + } + revision 2025-07-05 { // RFC Editor: replace the above date with the date of // publication and remove this note. @@ -144,13 +177,94 @@ module ietf-mpls-mldp { role of an LSP."; } + /* + * Identities + */ + + // IANA: LDP MP Opaque Value Element basic type + identity mldp-opaque-value-element-basic-type { + description + "Base identity from which specific Opaque value element + basic types are derived."; + reference + "LDP MP Opaque Value Element basic type IANA registry at + https://www.iana.org/assignments/ldp-namespaces/ + ldp-namespaces.xhtml#ldp-namespaces-11"; + } + + identity lspid { + base mldp-opaque-value-element-basic-type; + description "Generic LSP identifier type"; + reference "RFC 6388"; + } + + identity transit-source-v4 { + base mldp-opaque-value-element-basic-type; + description "Transit IPv4 Source TLV type"; + reference "RFC 6826"; + } + + identity transit-source-v6 { + base mldp-opaque-value-element-basic-type; + description "Transit IPv6 Source TLV type"; + reference "RFC 6826"; + } + + identity transit-bidir-v4 { + base mldp-opaque-value-element-basic-type; + description "Transit IPv4 Bidir TLV type"; + reference "RFC 6826"; + } + + identity transit-bidir-v6 { + base mldp-opaque-value-element-basic-type; + description "Transit IPv6 Bidir TLV type"; + reference "RFC 6826"; + } + + identity recur-opaque { + base mldp-opaque-value-element-basic-type; + description "Recursive Opaque value"; + reference "RFC 6512"; + } + + identity transit-source-vpnv4 { + base mldp-opaque-value-element-basic-type; + description "Transit VPNv4 Source TLV type"; + reference "RFC 7246"; + } + + identity transit-source-vpnv6 { + base mldp-opaque-value-element-basic-type; + description "Transit VPNv6 Source TLV type"; + reference "RFC 7246"; + } + + identity transit-bidir-vpnv4 { + base mldp-opaque-value-element-basic-type; + description "Transit VPNv4 Bidir TLV type"; + reference "RFC 7246"; + } + + identity transit-bidir-vpnv6 { + base mldp-opaque-value-element-basic-type; + description "Transit VPNv6 Bidir TLV type"; + reference "RFC 7246"; + } + + identity recur-opaque-vpn { + base mldp-opaque-value-element-basic-type; + description "VPN-Recursive Opaque value"; + reference "RFC 6512"; + } + /* * Groupings */ grouping mldp-capabilities-base { description - "A grouping describing the protocol capabilities of mLDP as specified - in RFC6388"; + "A grouping describing the protocol capabilities of mLDP as + specified in RFC6388"; container p2mp { description @@ -185,21 +299,23 @@ module ietf-mpls-mldp { type uint16; units seconds; description - "Switchover delay (in seconds) for activating an inactive element"; + "Switchover delay (in seconds) for activating an inactive + element"; } leaf timeout { type uint16; units seconds; description - "To prevent waiting indefinitely for the MBB Notification to arrive, - a timeout should be applied. As soon as the timer expires, - the MBB procedures, same as those applied at the receipt of an MBB - notification, are applied on the inactive element."; + "To prevent waiting indefinitely for the MBB Notification + to arrive, a timeout should be applied. As soon as the + timer expires, the MBB procedures, same as those applied + at the receipt of an MBB notification, are applied on + the inactive element."; } } } // mldp-capabilities-base - grouping mldp-binding-label-peer-state-attributes { + grouping mldp-binding-label-peer-state-attributes { description "mLDP label binding per peer attributes"; leaf direction { @@ -228,13 +344,14 @@ module ietf-mpls-mldp { } } // mldp-binding-label-peer-state-attributes - grouping mldp-binding-label-state-attributes { + grouping mldp-binding-label-state-attributes { description "mLDP label binding attributes"; list peer { key "direction peer advertisement-type"; description - "List of peers with bindings exchnaged (sent and/or received)"; + "List of peers with bindings exchnaged (sent and/or + received)"; leaf peer { type leafref { path @@ -284,7 +401,8 @@ module ietf-mpls-mldp { leaf is-capable { type boolean; description - "'true' when point-to-multipoint capability is received from peer"; + "'true' when point-to-multipoint capability is received + from peer"; } } container mp2mp { @@ -294,7 +412,8 @@ module ietf-mpls-mldp { leaf is-capable { type boolean; description - "'true' when multipoint-to-multipoint capability is received from peer"; + "'true' when multipoint-to-multipoint capability is + received from peer"; } } container make-before-break { @@ -304,7 +423,8 @@ module ietf-mpls-mldp { leaf is-capable { type boolean; description - "'true' when make-before-break capability is received from peer"; + "'true' when make-before-break capability is received + from peer"; } } } // mldp @@ -338,10 +458,10 @@ module ietf-mpls-mldp { presence "Enables IPv4 mLDP support unless the 'enabled' leaf is set to 'false'."; description - "Containing data related to the IPv4 address family."; + "Containing data related to the IPv4 address family."; leaf enabled { type boolean; - default "true"; // TBD + default "true"; description "'false' to disable the IPv4 address family."; } @@ -370,7 +490,8 @@ module ietf-mpls-mldp { list reachability { key "address interface"; description - "Root reachability information in form of a next-hop"; + "Root reachability information in form of a + next-hop"; leaf address { type inet:ipv4-address; description @@ -388,16 +509,18 @@ module ietf-mpls-mldp { + "ldp:peer/ldp:lsr-id"; } description - "LDP peer associated with the nexthop (address, interface)"; + "LDP peer associated with the nexthop (address, + interface)"; } } container bindings { description "mLDP FEC-label bindings"; - container opaque-element-lspid { + container opaque-value-element-lspid { description - "Generic LSP identifier opaque element FEC-label bindings container"; + "Generic LSP identifier opaque element FEC-label + bindings container"; reference "RFC6388: Label Distribution Protocol Extensions for Point-to-Multipoint and @@ -417,53 +540,24 @@ module ietf-mpls-mldp { description "The type of multipoint: p2mp or mp2mp"; } + leaf opaque-value-element-type { + type identityref { + base mldp-opaque-value-element-basic-type; } + description "Type of Opaque value element"; + } + uses mldp-binding-label-state-attributes; } // fec-label - } // opaque-element-lspid + } // opaque-value-element-lspid } // bindings + } // list root } // roots - - container static-lsps-leaf { - description - "Statically Configured multicast LSPs at leaf node."; - container opaque-element-lspid { - description - "Generic LSP identifier opaque element FEC-label bindings container"; - reference - "RFC6388: Label Distribution Protocol - Extensions for Point-to-Multipoint and - Multipoint-to-Multipoint Label Switched - Paths."; - list fec-label { - key - "root-address lsp-id"; - description - "List of FEC to label bindings."; - leaf root-address { - type inet:ipv4-address; - description - "Root address"; - } - leaf lsp-id { - type uint32; - description "LSP identifier"; - } - leaf multipoint-type { - type multipoint-type; - description - "The type of multipoint: p2mp or mp2mp"; - } - } // fec-label - } // opaque-element-lspid - } // static-lsps-leaf } // ipv4 } // list address-family } // mldp } - // KAMI: TODO REVIEW - /* * Notifications */ @@ -474,11 +568,11 @@ module ietf-mpls-mldp { type ldp:oper-status-event-type; description "Event type"; } - choice opaque-element { + choice opaque-value-element { description "The type of opaque value element"; - case opaque-element-lspid { - container opaque-element-lspid { + case opaque-value-element-lspid { + container opaque-value-element-lspid { description "Generic LSP identifier opaque element"; reference @@ -500,7 +594,7 @@ module ietf-mpls-mldp { description "The type of multipoint: p2mp or mp2mp"; } - } // container opaque-element-lspid + } // container opaque-value-element-lspid } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-mpted-jct@2026-03-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-mpted-jct@2026-03-02.yang new file mode 100644 index 000000000..130be35fb --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-mpted-jct@2026-03-02.yang @@ -0,0 +1,384 @@ +module ietf-mpted-jct { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-mpted-jct"; + prefix mpted-jct; + + import ietf-te { + prefix te; + reference + "draft-ietf-teas-yang-te: A YANG Data Model for Traffic + Engineering Tunnels and Interfaces"; + } + import ietf-inet-types { + prefix inet; + reference + "RFC6991: Common YANG Data Types"; + } + import ietf-routing-types { + prefix rt-types; + reference + "RFC8294: Common YANG Data Types for the Routing Area"; + } + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group."; + contact + "WG Web: + WG List: + + Editor: Vishnu Pavan Beeram + + + Kireeti Kompella + "; + description + "This module defines a YANG data model for Multipath Traffic + Engineering Directed Acyclic Graph (MPTED) Junctions. It is + intended to be used as part of the IETF TEAS framework to + enable the configuration and management of MPTED Junctions on + an MPTED junction node. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of the module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC + itself for full legal notices."; + + revision 2026-03-02 { + description + "Initial revision. + This revision introduces the YANG data model for + Multipath Traffic Engineering Directed Acyclic Graph + (MPTED) Junctions."; + reference + "RFC XXXX: A YANG Data Model for Multipath Traffic + Engineering Directed Acyclic Graph (MPTED) Tunnels and + Junctions"; + } + + identity mpted-tunnel-type { + description + "Base identity of MPTED tunnel type."; + } + + identity mpted-tunnel-type-mpls-siglab { + base mpted-tunnel-type; + description + "MPLS MPTED Tunnel with signaled label switching."; + } + + identity mpted-signaling-type { + description + "Base identity for MPTED signaling type."; + } + + identity mpted-signaling-rsvp { + base mpted-signaling-type; + description + "MPTED RSVP signaling."; + } + + identity mpted-signaling-pcep { + base mpted-signaling-type; + description + "MPTED PCEP signaling."; + } + + identity mpted-signaling-bgp { + base mpted-signaling-type; + description + "MPTED BGP signaling."; + } + + identity mpted-signaling-grpc { + base mpted-signaling-type; + description + "MPTED gRPC signaling."; + } + + identity mpted-junction-status { + description + "Base identity for MPTED JUNCTION status."; + } + + identity mpted-junction-up { + base mpted-junction-status; + description + "MPTED JUNCTION Up."; + } + + identity mpted-junction-down { + base mpted-junction-status; + description + "MPTED JUNCTION Down."; + } + + identity mpted-junction-degraded { + base mpted-junction-status; + description + "MPTED JUNCTION Degraded."; + } + + identity mpted-jct-phop-status { + description + "Base identity for MPTED JCT-PHOP status."; + } + + identity mpted-jct-phop-up { + base mpted-jct-phop-status; + description + "MPTED JCT-PHOP Up."; + } + + identity mpted-jct-phop-down { + base mpted-jct-phop-status; + description + "MPTED JCT-PHOP Down."; + } + + identity mpted-jct-nhop-status { + description + "Base identity for MPTED JCT-NHOP status."; + } + + identity mpted-jct-nhop-up { + base mpted-jct-nhop-status; + description + "MPTED JCT-NHOP Up."; + } + identity mpted-jct-nhop-down { + base mpted-jct-nhop-status; + description + "MPTED JCT-NHOP Down."; + } + + identity mpted-jct-nhop-degraded { + base mpted-jct-nhop-status; + description + "MPTED JCT-NHOP Degraded."; + } + + grouping mpted-jct-info { + description + "Grouping for junction information."; + leaf current_jct_version { + type uint32; + description + "Current instance identifier of the MPTED tunnel + junction."; + } + leaf bandwidth-requested { + type uint64; + description + "Amount of bandwidth requested for the junction."; + } + } + + grouping mpted-jct-status-info { + description + "Grouping for junction status information."; + uses mpted-jct-info; + leaf mtu { + type uint16; + config false; + description + "MTU at the junction node. This is the smallest MTU value + among the MTUs received from all JCT-NHOPs."; + } + leaf status { + type identityref { + base mpted-junction-status; + } + config false; + description + "Status of the JUNCTION."; + } + } + grouping mpted-jct-hop-info { + description + "Grouping for MPTED junction hop information."; + leaf hop-address { + type inet:ip-address; + description + "IP-address of the peer."; + } + leaf hop-index { + type uint32; + description + "Index of the peer interface."; + } + leaf hop-version { + type uint32; + description + "Version of the Hop."; + } + } + + grouping mpted-jct-nhop-info { + description + "Grouping for MPTED junction next-hop information."; + uses mpted-jct-hop-info; + leaf load-share { + type uint16; + description + "Relative load share."; + } + leaf bandwidth-requested { + type uint64; + description + "Amount of bandwidth requested for the hop."; + } + } + + augment "/te:te" { + description + "Augmentation for MPTED junctions."; + container mpted-junctions { + description + "Container for MPTED junctions."; + list junction { + key "node-id originator tnl-id tnl-vers sig-src"; + unique "name"; + description + "MPTED junction entry."; + leaf node-id { + type inet:ip-address; + description + "IP-address of the junction node."; + } + leaf originator { + type inet:ip-address; + description + "IP address of the associated MPTED tunnel + originator."; + } + leaf tnl-id { + type uint32; + description + "Identifier of the associated MPTED tunnel."; + } + leaf tnl-vers { + type uint32; + description + "Version of the MPTED tunnel."; + } + leaf sig-src { + type inet:ip-address; + description + "IP-address of the MPTED tunnel signaling source."; + } + leaf name { + type string; + description + "Name of the associated MPTED tunnel."; + } + leaf-list ingress { + type inet:ip-address; + description + "List of ingress nodes of the associated MPTED + tunnel."; + } + leaf-list egress { + type inet:ip-address; + description + "List of egress nodes of the associated MPTED + tunnel."; + } + leaf type { + type identityref { + base mpted-tunnel-type; + } + description + "Type of associated tunnel."; + } + leaf setup-priority { + type uint8 { + range "0..7"; + } + default "7"; + description + "The priority of the associated MPTED tunnel with + respect to taking resources, in the range of 0 to 7. + The value 0 is the highest priority."; + } + leaf hold-priority { + type uint8 { + range "0..7"; + } + default "7"; + description + "The priority of the associated MPTED tunnel with + respect to holding resources, in the range of 0 to 7. + The value 0 is the highest priority."; + } + uses mpted-jct-status-info; + container phops { + description + "Container for associated JCT-PHOPs."; + list phop { + key "hop-address hop-index hop-version"; + uses mpted-jct-hop-info; + description + "JCT-PHOP entry."; + leaf in-label { + type rt-types:mpls-label; + config false; + description + "Label used by incoming packets + on the JCT-PHOP."; + } + leaf status { + type identityref { + base mpted-jct-phop-status; + } + config false; + description + "Status of the JCT-PHOP."; + } + } + } + container nhops { + description + "Container for associated JCT-NHOPs."; + list nhop { + key "hop-address hop-index hop-version"; + description + "JCT-NHOP entry."; + uses mpted-jct-nhop-info; + leaf bandwidth-reserved { + type uint64; + config false; + description + "Amount of bandwidth reserved on the TE link + associated with the JCT-NHOP."; + } + leaf out-label { + type rt-types:mpls-label; + config false; + description + "Label used by outgoing packets + on the JCT-NHOP."; + } + leaf status { + type identityref { + base mpted-jct-nhop-status; + } + config false; + description + "Status of the JCT-NHOP."; + } + } + } + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-mpted@2026-03-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-mpted@2026-03-02.yang new file mode 100644 index 000000000..7d5adb4c5 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-mpted@2026-03-02.yang @@ -0,0 +1,690 @@ +module ietf-mpted { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-mpted"; + prefix mpted; + + import ietf-te { + prefix te; + reference + "draft-ietf-teas-yang-te: A YANG Data Model for Traffic + Engineering Tunnels and Interfaces"; + } + import ietf-routing-types { + prefix rt-types; + reference + "RFC8294: Common YANG Data Types for the Routing Area"; + } + import ietf-inet-types { + prefix inet; + reference + "RFC6991: Common YANG Data Types"; + } + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group."; + contact + "WG Web: + WG List: + + Editor: Vishnu Pavan Beeram + + + Editor: Kireeti Kompella + "; + description + "This module defines a YANG data model for Multipath Traffic + Engineering Directed Acyclic Graph (MPTED) Tunnels. It is + intended to be used as part of the IETF TEAS framework to + enable the configuration and management of MPTED Tunnels on + an MPTED Tunnel Originator. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of the module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC + itself for full legal notices."; + + revision 2026-03-02 { + description + "Initial revision. + This revision introduces the YANG data model for + Multipath Traffic Engineering Directed Acyclic Graph + (MPTED) Tunnels."; + reference + "RFC XXXX: A YANG Data Model for Multipath Traffic + Engineering Directed Acyclic Graph (MPTED) Tunnels and + Junctions"; + } + + identity mpted-tunnel-type { + description + "Base identity of MPTED tunnel type."; + } + + identity mpted-tunnel-type-mpls-siglab { + base mpted-tunnel-type; + description + "MPLS MPTED Tunnel with signaled label switching."; + } + + identity mpted-signaling-type { + description + "Base identity for MPTED signaling type."; + } + + identity mpted-signaling-rsvp { + base mpted-signaling-type; + description + "MPTED RSVP signaling."; + } + + identity mpted-signaling-pcep { + base mpted-signaling-type; + description + "MPTED PCEP signaling."; + } + + identity mpted-signaling-bgp { + base mpted-signaling-type; + description + "MPTED BGP signaling."; + } + + identity mpted-signaling-grpc { + base mpted-signaling-type; + description + "MPTED gRPC signaling."; + } + + identity mpted-tunnel-status { + description + "Base identity for MPTED Tunnel status."; + } + + identity mpted-tunnel-up { + base mpted-tunnel-status; + description + "MPTED Tunnel Up."; + } + + identity mpted-tunnel-down { + base mpted-tunnel-status; + description + "MPTED Tunnel Down."; + } + + identity mpted-tunnel-degraded { + base mpted-tunnel-status; + description + "MPTED Tunnel Degraded."; + } + + identity mpted-junction-status { + description + "Base identity for MPTED JUNCTION status."; + } + + identity mpted-junction-up { + base mpted-junction-status; + description + "MPTED JUNCTION Up."; + } + + identity mpted-junction-down { + base mpted-junction-status; + description + "MPTED JUNCTION Down."; + } + + identity mpted-junction-degraded { + base mpted-junction-status; + description + "MPTED JUNCTION Degraded."; + } + + identity mpted-jct-phop-status { + description + "Base identity for MPTED JCT-PHOP status."; + } + + identity mpted-jct-phop-up { + base mpted-jct-phop-status; + description + "MPTED JCT-PHOP Up."; + } + + identity mpted-jct-phop-down { + base mpted-jct-phop-status; + description + "MPTED JCT-PHOP Down."; + } + + identity mpted-jct-nhop-status { + description + "Base identity for MPTED JCT-NHOP status."; + } + + identity mpted-jct-nhop-up { + base mpted-jct-nhop-status; + description + "MPTED JCT-NHOP Up."; + } + + identity mpted-jct-nhop-down { + base mpted-jct-nhop-status; + description + "MPTED JCT-NHOP Down."; + } + + identity mpted-jct-nhop-degraded { + base mpted-jct-nhop-status; + description + "MPTED JCT-NHOP Degraded."; + } + + identity mpted-opt-metric-type { + description + "Base identity of MPTED optimization metric type."; + } + + identity mpted-opt-metric-te { + base mpted-opt-metric-type; + description + "TE Metric."; + } + + identity mpted-opt-metric-igp { + base mpted-opt-metric-type; + description + "IGP Metric."; + } + + identity mpted-opt-metric-delay { + base mpted-opt-metric-type; + description + "Delay Metric."; + } + + identity mpted-bw-spec-type { + description + "Base identity for MPTED bandwidth specification type."; + } + + identity mpted-bw-spec-explicit { + base mpted-bw-spec-type; + description + "Explicit MPTED bandwidth specification type."; + } + + identity mpted-bw-spec-auto { + base mpted-bw-spec-type; + description + "Automatic MPTED bandwidth specification type."; + } + + grouping mpted-ingress { + description + "Grouping for MPTED ingress information."; + leaf ingress-id { + type inet:ip-address; + description + "IP-address of the ingress node."; + } + leaf set-bandwidth { + when "/te:te/mpted-tunnels/tunnel/bandwidth-spec-type = " + + "'mpted-bw-spec-explicit'" { + description + "Applicable only when bandwidth specification + type is explicit."; + } + type uint64; + description + "Explicitly specified bandwidth at the ingress of + the MPTED tunnel."; + } + container auto-bandwidth { + when "/te:te/mpted-tunnels/tunnel/bandwidth-spec-type = " + + "'mpted-bw-spec-auto'" { + description + "Applicable only when bandwidth specification + type is automatic."; + } + description + "Container for auto-bandwidth parameters."; + uses mpted-ingress-autobw-config; + container overflow { + description + "Autobandwidth overflow parameters."; + uses mpted-autobw-overflow-config; + } + container underflow { + description + "Autobandwidth underflow parameters."; + uses mpted-autobw-underflow-config; + } + } + } + + grouping mpted-ingress-autobw-config { + description + "MPTED tunnel ingress autobandwidth parameters"; + leaf min-bw { + type uint64; + description + "Minimum bandwidth at the ingress of the + autobandwidth enabled MPTED tunnel."; + } + leaf max-bw { + type uint64; + description + "Maximum bandwidth at the ingress of the + autobandwidth enabled MPTED tunnel"; + } + leaf adjust-threshold { + type rt-types:percentage; + description + "Bandwidth demand at the ingress for the current + bandwidth adjustment interval is compared to the + current bandwidth allocation for the ingress of + the MPTED tunnel. If the percentage difference + in bandwidth is greater than or equal to the percentage + specified by this leaf, the bandwidth allocation + for the ingress is adjusted to the current bandwidth + demand."; + } + } + + grouping mpted-autobw-overflow-config { + description + "MPTED Tunnel ingress autobandwidth overflow parameters."; + leaf enabled { + type boolean; + default "false"; + description + "Enables autobandwidth overflow adjustment on the + MPTED tunnel ingress"; + } + leaf overflow-threshold { + type rt-types:percentage; + description + "Bandwidth percentage change to trigger + an overflow event"; + } + leaf trigger-event-count { + type uint16; + description + "Number of consecutive overflow sample + events needed to trigger an overflow adjustment"; + } + } + + grouping mpted-autobw-underflow-config { + description + "MPTED Tunnel ingress autobandwidth underflow parameters."; + leaf enabled { + type boolean; + default "false"; + description + "Enables autobandwidth underflow adjustment on the + MPTED tunnel ingress"; + } + leaf underflow-threshold { + type rt-types:percentage; + description + "Bandwidth percentage change to trigger + and underflow event"; + } + leaf trigger-event-count { + type uint16; + description + "Number of consecutive underflow sample + events needed to trigger an underflow adjustment"; + } + } + + grouping tunnel-status-info { + description + "Grouping for tunnel status information."; + leaf current-version { + type uint32; + config false; + description + "Current version of the MPTED tunnel."; + } + leaf status { + type identityref { + base mpted-tunnel-status; + } + config false; + description + "Status of the MPTED tunnel"; + } + } + + grouping tunnel-instance-status-info { + description + "Grouping for tunnel instance status information."; + leaf version { + type uint32; + config false; + description + "Identifier of the MPTED tunnel instance."; + } + leaf status { + type identityref { + base mpted-tunnel-status; + } + config false; + description + "Status of the MPTED tunnel instance"; + } + } + + grouping junction-info { + description + "Grouping for junction information."; + leaf node-id { + type inet:ip-address; + description + "IP-address of the junction node."; + } + leaf current_jct_version { + type uint32; + description + "Current instance identifier of the MPTED tunnel + junction."; + } + leaf bandwidth-requested { + type uint64; + description + "Amount of bandwidth requested for the junction."; + } + } + + grouping junction-status-info { + description + "Grouping for junction status information."; + uses junction-info; + leaf mtu { + type uint16; + description + "MTU at the junction node. This is the smallest MTU value + among the MTUs received from all JCT-NHOPs."; + } + leaf status { + type identityref { + base mpted-junction-status; + } + description + "Status of the JUNCTION."; + } + } + + grouping mpted-jct-hop-info { + description + "Grouping for junction hop information."; + leaf hop-address { + type inet:ip-address; + description + "IP-address of the peer."; + } + leaf hop-index { + type uint32; + description + "Index of the peer interface."; + } + leaf hop-version { + type uint32; + description + "Version of the Hop."; + } + } + + grouping mpted-jct-phop-status-info { + description + "Grouping for junction phop status information."; + uses mpted-jct-hop-info; + leaf in-label { + type rt-types:mpls-label; + description + "Label used by incoming packets on the JCT-PHOP."; + } + leaf status { + type identityref { + base mpted-jct-phop-status; + } + description + "Status of the JCT-PHOP."; + } + } + + grouping mpted-jct-nhop-info { + description + "Grouping for junction nhop information."; + uses mpted-jct-hop-info; + leaf load-share { + type uint16; + description + "Relative load share."; + } + leaf bandwidth-requested { + type uint64; + description + "Amount of bandwidth requested for the hop."; + } + } + + grouping mpted-jct-nhop-status-info { + description + "Grouping for junction nhop status information."; + uses mpted-jct-nhop-info; + leaf bandwidth-reserved { + type uint64; + description + "Amount of bandwidth reserved on the TE link associated + with the JCT-NHOP."; + } + leaf out-label { + type rt-types:mpls-label; + description + "Label used by outgoing packets on the JCT-NHOP."; + } + leaf status { + type identityref { + base mpted-jct-nhop-status; + } + description + "Status of the JCT-NHOP."; + } + } + + augment "/te:te" { + description + "Augmentation for MPTED tunnels."; + container mpted-tunnels { + description + "Container for MPTED tunnels."; + list tunnel { + key "originator identifier"; + unique "name"; + description + "MPTED tunnel entry."; + leaf originator { + type inet:ip-address; + description + "IP address of the MPTED tunnel originator."; + } + leaf identifier { + type uint32; + description + "Identifier of the MPTED tunnel."; + } + leaf name { + type string; + description + "Name of the MPTED tunnel."; + } + container ingresses { + description + "Container for list of MPTED ingresses."; + list ingress { + key "ingress-id"; + description + "MPTED ingress entry."; + uses mpted-ingress; + } + } + leaf-list egress { + type inet:ip-address; + description + "List of egress nodes associated with the MPTED + tunnel."; + } + leaf type { + type identityref { + base mpted-tunnel-type; + } + description + "Type of tunnel."; + } + leaf setup-priority { + type uint8 { + range "0..7"; + } + default "7"; + description + "The priority of the MPTED tunnel with respect to + taking resources, in the range of 0 to 7. The + value 0 is the highest priority."; + } + leaf hold-priority { + type uint8 { + range "0..7"; + } + default "7"; + description + "The priority of the MPTED tunnel with respect to + holding resources, in the range of 0 to 7. The + value 0 is the highest priority."; + } + leaf optimization-metric { + type identityref { + base mpted-opt-metric-type; + } + description + "Metric type for which the DAG is optimized."; + } + container resource-affinities { + description + "Resource-affinity constraints."; + leaf-list exclude-any { + type string; + description + "Exclude the link if it has any of these + affinities."; + } + leaf-list include-any { + type string; + description + "Include the link if it has any of these + affinities"; + } + leaf-list include-all { + type string; + description + "Include the link if it has all these affinities"; + } + } + leaf bandwidth-spec-type { + type identityref { + base mpted-bw-spec-type; + } + description + "The method used for setting the bandwidth on the + tunnel, either explicitly specified or automatically + derived."; + } + leaf auto-bandwidth-adjust-interval { + when "../bandwidth-spec-type = " + + "'mpted-bw-spec-auto'" { + description + "Applicable only when bandwidth specification + type is automatic."; + } + type uint32; + description + "Time in seconds between autobandwidth adjustments."; + } + leaf mpted-computer { + type inet:ip-address; + description + "IP-address of the MPTED computer."; + } + leaf signaling-type { + type identityref { + base mpted-signaling-type; + } + description + "MPTED tunnel signaling type."; + } + leaf signaling-source { + type inet:ip-address; + description + "IP-address of the MPTED tunnel signaling source."; + } + uses tunnel-status-info; + container instances { + config false; + description + "Container for list of instances of the MPTED tunnel."; + list instance { + key "version"; + description + "MPTED tunnel instance entry."; + uses tunnel-instance-status-info; + container junctions { + description + "Container for list of JUNCTIONs associated + with the MPTED tunnel instance."; + list junction { + key "node-id"; + description + "JUNCTION entry."; + uses junction-status-info; + container phops { + description + "Container for associated JCT-PHOPs."; + list phop { + key "hop-address hop-index hop-version"; + description + "JCT-PHOP entry."; + uses mpted-jct-phop-status-info; + } + } + container nhops { + description + "Container for associated JCT-NHOPs."; + list nhop { + key "hop-address hop-index hop-version"; + description + "JCT-NHOP entry."; + uses mpted-jct-nhop-status-info; + } + } + } + } + } + } + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-multicast@2025-05-06.yang b/experimental/ietf-extracted-YANG-modules/ietf-multicast@2025-05-06.yang deleted file mode 100644 index 231b73151..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-multicast@2025-05-06.yang +++ /dev/null @@ -1,998 +0,0 @@ -module ietf-multicast { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-multicast"; - prefix ietf-multicast; - - import ietf-yang-types { - prefix yang; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-inet-types { - prefix inet; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-routing-types { - prefix rt-types; - reference - "RFC 8294: Common YANG Data Types for the Routing Area"; - } - import ietf-routing { - prefix rt; - reference - "RFC 8349: A YANG Data Model for Routing Management - (NMDA Version)"; - } - import ietf-te-types { - prefix te-types; - reference - "RFC 8776: Common YANG Data Types for Traffic Engineering"; - } - import ietf-bier { - prefix bier; - reference - "I-D.ietf-bier-bier-yang: YANG Data Model for BIER Protocol"; - } - import ietf-sr-policy { - prefix sr-policy; - reference - "I-D.ietf-spring-sr-policy-yang: YANG Data Model for Segment - Routing Policy"; - } - - organization - " IETF MBONED (MBONE Deployment) Working Group"; - contact - "WG List: - - Editor: Zheng Zhang - - Editor: Cui Wang - - Editor: Ying Cheng - - Editor: Xufeng Liu - - Editor: Mahesh Sivakumar - - "; - - // RFC Ed.: replace XXXX with actual RFC number and remove - // this note - - description - "The module defines the YANG definitions for multicast service - management. This model indicates the overlay, transport protocol - used by a multicast flow. And the underlay protocol used for - the transport layer building. - - Copyright (c) 2025 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. - - 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."; - - revision 2025-05-06 { - description - "Initial revision."; - reference - "RFC XXXX: A YANG Data Model for multicast service management - YANG."; - } - - /* - *feature - */ - - feature bier { - description - "Cooperation with BIER technology."; - reference - "RFC 8279: - Multicast Using Bit Index Explicit Replication (BIER)"; - } - - feature sr { - description - "Cooperation with Segment Routing technology."; - reference - "RFC 8402: Segment Routing Architecture"; - } - - feature mldp { - description - "Cooperation with MLDP technology."; - reference - "RFC 6388: - Label Distribution Protocol Extensions - for Point-to-Multipoint and Multipoint-to-Multipoint - Label Switched Paths"; - } - - feature p2mp-te { - description - "Cooperation with RSVP TE P2MP technology."; - reference - "RFC 4875: Extensions to Resource Reservation Protocol - - Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE - Label Switched Paths (LSPs)"; - } - - feature pim { - description - "Cooperation with PIM technology."; - reference - "RFC 7761: Protocol Independent Multicast - Sparse Mode - (PIM-SM): Protocol Specification (Revised)"; - } - - /* - *typedef - */ - - typedef ip-multicast-source-address { - type union { - type enumeration { - enum * { - description - "Any source address."; - } - } - type inet:ipv4-address; - type inet:ipv6-address; - } - description - "Multicast source IP address type."; - } - - typedef tree-sid { - type union { - type rt-types:mpls-label; - type inet:ip-prefix; - } - description - "The type of the Segment Identifier of a Replication segment - is a SR-MPLS label or a SRv6 SID."; - } - /* - * Identities - */ - - identity multicast-service { - base rt:control-plane-protocol; - description - "Identity for the multicast model."; - } - - identity overlay-type { - description - "Base identity for the type of multicast overlay technology."; - } - - identity transport-type { - description - "Identity for the multicast transport technology."; - } - - identity underlay-type { - description - "Identity for the multicast underlay technology."; - } - - identity tunnel-encap-type { - description - "Base identity for the type of multicast flow tunnel - encapsulation."; - } - - identity tunnel-encap-vxlan { - base tunnel-encap-type; - description - "The VXLAN encapsulation is used for flow encapsulation."; - reference - "RFC 7348: Virtual eXtensible Local Area Network (VXLAN): - A Framework for Overlaying Virtualized Layer 2 Networks - over Layer 3 Networks"; - } - - identity tunnel-encap-nvgre { - base tunnel-encap-type; - description - "The NVGRE encapsulation is used for flow encapsulation."; - reference - "RFC 7637: NVGRE: Network Virtualization Using Generic - Routing Encapsulation"; - } - - identity tunnel-encap-geneve { - base tunnel-encap-type; - description - "The GENEVE encapsulation is used for flow encapsulation."; - reference - "RFC 8926: Geneve: Generic Network Virtualization - Encapsulation"; - } - - identity overlay-pim { - base overlay-type; - description - "Using PIM as multicast overlay technology."; - reference - "I-D.ietf-bier-pim-signaling: - PIM Signaling Through BIER Core"; - } - - identity mld { - base overlay-type; - description - "Using MLD as multicast overlay technology."; - reference - "I-D.ietf-bier-mld: - BIER Ingress Multicast Flow Overlay - using Multicast Listener Discovery Protocols"; - } - - identity mld-snooping { - base overlay-type; - description - "Using MLD-snooping as multicast overlay technology."; - reference - "RFC 4541: - Considerations for Internet Group Management - Protocol (IGMP) and Multicast Listener - Discovery (MLD) Snooping Switches"; - } - - identity evpn { - base overlay-type; - description - "Using EVPN as multicast overlay technology."; - reference - "RFC 7432: BGP MPLS-Based Ethernet VPN - RFC 9572: Updates on EVPN BUM Procedures - RFC 9624: EVPN Broadcast, Unknown Unicast, or Multicast - (BUM) Using Bit Index Explicit Replication (BIER)"; - } - - identity mvpn { - base overlay-type; - description - "Using MVPN as multicast overlay technology."; - reference - "RFC 6513: Multicast in MPLS/BGP IP VPNs - RFC 7716: - Global Table Multicast with BGP Multicast VPN - (BGP-MVPN) Procedures - RFC 8556: Multicast VPN Using Bit Index Explicit Replication - (BIER)"; - } - - identity bier { - base transport-type; - description - "Using BIER as multicast transport technology."; - reference - "RFC 8279: - Multicast Using Bit Index Explicit Replication (BIER)"; - } - - identity bier-te { - base transport-type; - description - "Using BIER-TE as multicast transport technology."; - reference - "RFC 9262: - Traffic Engineering for Bit Index Explicit Replication - (BIER-TE)"; - } - - identity mldp { - base transport-type; - description - "Using mLDP as multicast transport technology."; - reference - "RFC 6388: - Label Distribution Protocol Extensions - for Point-to-Multipoint and Multipoint-to-Multipoint - Label Switched Paths"; - } - - identity rsvp-te-p2mp { - base transport-type; - description - "Using P2MP TE as multicast transport technology."; - reference - "RFC 4875: - Extensions to Resource Reservation Protocol - - Traffic Engineering (RSVP-TE) for Point-to-Multipoint - TE Label Switched Paths (LSPs)."; - } - - identity sr-p2mp { - base transport-type; - description - "Using Segment Routing as multicast transport technology."; - reference - "I-D.ietf-pim-sr-p2mp-policy: - Segment Routing Point-to-Multipoint Policy."; - } - - identity pim { - base transport-type; - description - "Using PIM as multicast transport technology."; - reference - "RFC 7761: - Protocol Independent Multicast - Sparse Mode - (PIM-SM): Protocol Specification (Revised)."; - } - - identity bgp { - base underlay-type; - description - "Using BGP as underlay technology to build the multicast - transport layer. For example, using BGP as BIER underlay."; - reference - "I-D.ietf-bier-idr-extensions: BGP Extensions for BIER."; - } - - identity ospf { - base underlay-type; - description - "Using OSPF as multicast underlay technology. - For example, using OSPF as BIER underlay."; - reference - "RFC 8444: - OSPFv2 Extensions for Bit Index Explicit Replication (BIER), - I-D.ietf-bier-ospfv3-extensions: - OSPFv3 Extensions for BIER."; - } - - identity isis { - base underlay-type; - description - "Using IS-IS as multicast underlay technology. - For example, using IS-IS as BIER underlay."; - reference - "RFC 8401: - Bit Index Explicit Replication (BIER) Support via IS-IS"; - } - - identity babel { - base underlay-type; - description - "Using BABEL as multicast underlay technology. - For example, using BABEL as BIER underlay."; - reference - "RFC 8966: The Babel Routing Protocol - I-D.zhang-bier-babel-extensions: BIER in BABEL"; - } - - identity rift { - base underlay-type; - description - "Using RIFT as multicast underlay technology. - For example, using RIFT as BIER underlay."; - reference - "RFC 9692: RIFT: Routing in Fat Trees. - I-D.zzhang-bier-rift: Supporting BIER with RIFT"; - } - - identity event-type { - description - "The events of the multicast service."; - } - - identity event-up { - base event-type; - description - "The multicast service works."; - } - - identity event-down { - base event-type; - description - "There is something wrong with ingress or egress node, - and node can't work properlay."; - } - - identity protocol-enabled { - base event-type; - description - "The protocol that is used for multicast - flows have been enabled."; - } - - identity protocol-disabled { - base event-type; - description - "The protocol that is used by multicast - flows have been disabled."; - } - - grouping general-multicast-key { - description - "The general multicast keys. They are used to differentiate - multicast service."; - leaf source-address { - type ip-multicast-source-address; - description - "The IP source address of the multicast flow. The - value set to * means that the receiver interests - in all source that relevant to one given group."; - } - leaf group-address { - type rt-types:ip-multicast-group-address; - mandatory true; - description - "The IP group address of multicast flow. This - type represents a version-neutral IP multicast group - address. The format of the textual representation - implies the IP version."; - reference - "RFC 8294: Common YANG Data Types for the Routing Area."; - } - } - - grouping optional-multicast-key { - description - "The optional multicast keys. They are used to differentiate - multicast service."; - leaf vpn-rd { - type rt-types:route-distinguisher; - description - "A Route Distinguisher is used to differentiate - routes from different MVPNs."; - reference - "RFC 8294: Common YANG Data Types for the Routing Area. - RFC 6513: Multicast in MPLS/BGP IP VPNs."; - } - leaf mac-address { - type yang:mac-address; - description - "The mac address of flow. In the EVPN situation, the L2 - flow that is called - BUM (Broadcast, Unknown Unicast, Multicast) - can be sent to the other PEs that - are in a same broadcast domain."; - reference - "RFC 6991: Common YANG Data Types. - RFC 7432: BGP MPLS-Based Ethernet VPN."; - } - leaf vni-value { - type uint32; - description - "The value of VXLAN network identifier, virtual subnet ID - or virtual net identifier. This value and vni-type is used - to indicate a specific virtual multicast service."; - } - } - - // multicast-key - - grouping encap-type { - description - "The encapsulation type used for flow forwarding. - This encapsulation acts as the inner encapsulation, - as compare to the outer multicast-transport encapsulation."; - choice encap-type { - case mpls { - description - "The BIER forwarding depends on mpls."; - reference - "RFC 8296: Encapsulation for Bit Index Explicit - Replication (BIER) in MPLS and Non-MPLS Networks."; - } - case eth { - description - "The BIER forwarding depends on ethernet."; - reference - "RFC 8296: Encapsulation for Bit Index Explicit - Replication (BIER) in MPLS and Non-MPLS Networks."; - } - case ipv6 { - description - "The BIER forwarding depends on IPv6."; - reference - "I-D.ietf-bier-bierin6: BIER in IPv6 (BIERin6)"; - } - description - "The encapsulation type in BIER."; - } - } - - // encap-type - grouping bier-key { - description - "The key parameters set for BIER/BIER TE forwarding."; - reference - "RFC 8279: Multicast Using Bit Index Explicit Replication - (BIER)."; - leaf sub-domain { - type uint16; - description - "The subdomain ID that the multicast flow belongs to."; - } - leaf bitstringlength { - type uint16; - description - "The bitstringlength used by BIER forwarding."; - } - leaf set-identifier { - type uint16; - description - "The set identifier used by the multicast flow."; - } - leaf bier-encap-type { - type identityref { - base bier:bier-encapsulation; - } - description - "The BIER encapsulation that can be used in either MPLS - networks or non-MPLS networks."; - } - } - - grouping transport-tech { - description - "The transport technology selected for the multicast service. - For one specific multicast flow."; - leaf type { - type identityref { - base transport-type; - } - description - "The type of transport technology"; - } - choice transport-tech-type { - description - "The type of transport technology"; - case bier { - if-feature "bier"; - description - "Using BIER as the transport technology. - The BIER technology is introduced in RFC8279. - The parameters are consistent with the definition in - BIER YANG data model."; - reference - "RFC 8296: Encapsulation for Bit Index Explicit - Replication (BIER) in MPLS and Non-MPLS Networks - I-D.ietf-bier-bier-yang: - YANG Data Model for BIER Protocol."; - uses bier-key; - } - case bier-te { - if-feature "bier"; - description - "Using BIER-TE as the transport technology. - The BIER-TE technology is introduced in RFC9262. - The parameters are consistent with the definition in - BIER and BIER TE YANG data model."; - reference - "RFC 9262: Tree Engineering for Bit Index Explicit - Replication (BIER-TE) - I-D.ietf-bier-bier-yang: YANG Data Model for BIER Protocol - I-D.ietf-bier-te-yang: A YANG data model for Traffic - Engineering for Bit Index Explicit Replication - (BIER-TE)"; - //uses bier-key; - list bitstring { - key "name"; - leaf name { - type string; - description - "The name of the bitstring"; - } - list bier-te-adj { - key "adj-id"; - leaf adj-id { - type uint16; - description - "The link adjacency ID used for BIER TE forwarding."; - } - description - "The adjacencies ID used for BIER TE bitstring - encapsulation."; - } - description - "The bitstring name and detail used for BIER TE - forwarding encapsulation. One or more bitstring can be - used for backup path."; - } - } - case mldp { - if-feature "mldp"; - description - "Using MLDP as the transport technology."; - reference - "RFC 6388: - Label Distribution Protocol Extensions - for Point-to-Multipoint and Multipoint-to-Multipoint - Label Switched Paths"; - } - case rsvp-te-p2mp { - if-feature "p2mp-te"; - description - "Using RSVP TE P2MP as the transport technology."; - reference - "RFC 4875: Extensions to Resource Reservation Protocol - - Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE - Label Switched Paths (LSPs) - RFC 8776: Common YANG Data Types for Traffic Engineering"; - leaf template-name { - type te-types:te-template-name; - description - "A type for the name of a TE node template or TE link - template."; - } - } - case pim { - if-feature "pim"; - description - "Using PIM as the transport technology."; - reference - "RFC 7761: Protocol Independent Multicast - Sparse Mode - (PIM-SM): Protocol Specification (Revised)"; - uses pim; - } - case sr-p2mp { - if-feature "sr"; - description - "Using SR P2MP as the transport technology. - The ingress replication and the treesid - function will not be used at the same time."; - reference - "RFC 8402: Segment Routing Architecture - RFC 9524: Segment Routing Replication for Multipoint - Service Delivery - I-D.ietf-pim-sr-p2mp-policy: Segment Routing - Point-to-Multipoint Policy - I-D.ietf-spring-sr-policy-yang: YANG Data Model for - Segment Routing Policy"; - leaf-list ir-sr-policies { - type leafref { - path "/rt:routing/" - + "sr-policy:segment-routing/" - + "sr-policy:traffic-engineering/" - + "sr-policy:attributes/" - + "sr-policy:segment-lists/" - + "sr-policy:segment-list/" - + "sr-policy:name"; - } - description - "The segment list used for ingress replication."; - } - } - // sr-p2mp - } - } - - // underlay-tech - - grouping underlay-tech { - description - "The underlay technology selected for the transport layer. - The underlay technology has no straight relationship with - the multicast overlay, it is used for transport path - building, for example BIER forwarding path building."; - leaf type { - type identityref { - base underlay-type; - } - description - "The type of underlay technology"; - } - choice underlay-tech-type { - description - "The type of underlay technology"; - case ospf { - description - "Using OSPF as the underlay technology. - If OSPF protocol supports multiple topology feature, - the associated topology name may be assigned. - In case the topology name is assigned, the specific - OSPF topology is used for underly to building the - transport layer."; - reference - "RFC 4915: Multi-Topology Routing - RFC 9129: YANG Data Model for the OSPF Protocol"; - leaf topology-id { - type uint8; - description - "The MT-ID for the topology enabled in OSPF protocol"; - } - } - case isis { - description - "Using IS-IS as the underlay technology. - If IS-IS protocol supports multiple topology feature, - the associated topology name may be assigned. - In case the topology name is assigned, the specific - IS-IS topology is used for underly to building the - transport layer."; - reference - "RFC 5120: M-IS-IS: Multi Topology Routing in IS-IS - RFC 9130: YANG Data Model for the IS-IS Protocol"; - } - case pim { - description - "Using PIM as the underlay technology."; - reference - "RFC 7761: Protocol Independent Multicast - Sparse Mode - (PIM-SM): Protocol Specification (Revised)"; - uses pim; - } - } - } - - // underlay-tech - - /*overlay*/ - grouping overlay-tech { - container dynamic-overlay { - leaf type { - type identityref { - base overlay-type; - } - description - "The type of overlay technology"; - } - choice overlay-tech-type { - description - "The type of overlay technology"; - case evpn { - description - "EVPN technology is used for multicast overlay."; - reference - "RFC 7432: BGP MPLS-Based Ethernet VPN - RFC 9624: EVPN Broadcast, Unknown Unicast, or - Multicast (BUM) Using Bit Index Explicit Replication - (BIER)"; - } - case mld { - description - "MLD/IGMP can be used as multicast overlay - when BIER is used as transport technology."; - reference - "I-D:ietf-bier-mld: BIER Ingress Multicast Flow Overlay - using Multicast Listener Discovery Protocols"; - leaf mld-instance-group { - type rt-types:ip-multicast-group-address; - description - "The multicast address used for multiple MLD instance - support."; - } - } - case mld-snooping { - description - "MLD/IGMP snooping can be used as multicast overlay - when BIER is used as transport technology."; - reference - "RFC 9166:A YANG Data Model for Internet Group - Management Protocol (IGMP) and Multicast Listener - Discovery (MLD) Snooping"; - leaf mld-snooping-group { - type rt-types:ip-multicast-group-address; - description - "The multicast address used for MLD-snooping."; - } - } - case mvpn { - description - "MVPN technology is used for multicast overlay. - The global table multicast can also be achieved."; - reference - "RFC 6513: Multicast in MPLS/BGP IP VPNs - RFC 7716: Global Table Multicast with BGP Multicast VPN - (BGP-MVPN) Procedures - RFC 8556: Multicast VPN Using Bit Index Explicit - Replication (BIER)"; - } - case pim { - description - "PIM can be used as multicast overlay - when BIER is used as transport technology."; - reference - "RFC 7761: Protocol Independent Multicast - Sparse Mode - (PIM-SM): Protocol Specification (Revised) - I-D.ietf-bier-pim-signaling: PIM Signaling Through BIER - Core"; - } - } - description - "The dynamic overlay technologies and associated parameter - that may be set."; - } - description - "The overlay technology used for multicast service."; - } - - // overlay-tech - /*transport*/ - - grouping pim { - description - "The required information of pim transportion."; - leaf source-address { - type ip-multicast-source-address; - description - "The IP source address of the multicast flow. The - value set to * means that the receiver interests - in all source that relevant to one given group."; - } - leaf group-address { - type rt-types:ip-multicast-group-address; - mandatory true; - description - "The IP group address of multicast flow. This - type represents a version-neutral IP multicast group - address. The format of the textual representation - implies the IP version."; - } - reference - "RFC 7761: Protocol Independent Multicast - Sparse Mode - (PIM-SM): Protocol Specification (Revised)."; - } - - container multicast-service { - description - "The model of multicast YANG data. Include keys, overlay, - transport and underlay."; - list multicast-keys { - key "source-address group-address"; - uses general-multicast-key; - uses optional-multicast-key; - container multicast-overlay { - description - "The overlay information of multicast service. - Overlay technology is used to exchange multicast - flows information. Overlay technology may not be - used in SDN controlled situation. Different overlay - technologies can be chosen according to different - deploy consideration."; - leaf vni-type { - type identityref { - base tunnel-encap-type; - } - description - "The encapsulated type for the multicast flow, - it is used to carry the virtual network identifier - for the multicast service. - When this type is set, the associated vni-value - MUST be set."; - } - container ingress-egress { - description - "The ingress and egress nodes address collection. - The ingress node may use the egress nodes set - directly to encapsulate the multicast flow by - transport technology."; - leaf-list ingress-nodes { - type inet:ip-address; - description - "The ip address of ingress node for one or more - multicast flow. Or the ingress node of MVPN, - EVPN and BIER. - In MVPN, this is the address of ingress - PE; in BIER, this is the BFR-prefix of BFIR. - Two or more ingress nodes may exist for the - redundant ingress node protection."; - } - leaf-list egress-nodes { - type inet:ip-address; - description - "The ip address of egress nodes for the multicast flow. - Or the egress node of MVPN, EVPN and BIER. - In MVPN, this is the address of egress PE; - in BIER, this is the BFR-prefix of BFER."; - } - } - container bier-ids { - if-feature "bier"; - description - "The BFR-ids of ingress and egress BIER nodes for - one or more multicast flows. This overlay is used - with BIER transport technology. The egress nodes - set can be used to encapsulate the multicast flow - directly in the ingress node."; - reference - "RFC 8279: Multicast Using Bit Index Explicit - Replication (BIER)"; - leaf sub-domain { - type uint16; - description - "The sub-domain that this multicast flow belongs to."; - } - leaf-list ingress-nodes { - type uint16; - description - "The BFR-ID of the ingress node."; - } - leaf-list egress-nodes { - type uint16; - description - "The BFR-ID of the egress node."; - } - } - uses overlay-tech; - } - container multicast-transport { - description - "The transportion of multicast service. Transport - protocol is responsible for delivering multicast - flows from ingress nodes to egress nodes with or - without specific encapsulation. Different transport - technology can be chosen according to different - deploy consideration. Once a transport technology - is chosen, associated protocol should be triggered - to run."; - uses transport-tech; - } - container multicast-underlay { - description - "The underlay of multicast service. Underlay protocol - is used to build transport layer. Underlay protocol - need not be assigned in ordinary network since - existed underlay protocol fits well, but it can be - assigned in particular networks for better - controll. Once an underlay technology is chosen, - associated protocol should be triggered to run."; - uses underlay-tech; - } - description - "The model of multicast YANG data. Include keys, - overlay, transport and underlay."; - } - } - - /*Notifications*/ - - notification ingress-egress-event { - leaf event-type { - type identityref { - base event-type; - } - description - "The event type."; - } - container multicast-key { - uses general-multicast-key; - uses optional-multicast-key; - description - "The associated multicast keys that are influenced by - ingress or egress node failure."; - } - uses overlay-tech; - container transport-tech { - description - "The modules can be used to forward multicast flows."; - uses transport-tech; - } - container underlay-tech { - description - "There is something wrong with the module which is - used to build multicast transport layer."; - uses underlay-tech; - } - description - "Notification events for the ingress or egress nodes. Like - node failure, overlay/ transport/ underlay module - loading/ unloading. And the potential failure about some - multicast flows and associated - overlay/ transport/ underlay technologies."; - } -} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-multicast@2026-04-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-multicast@2026-04-12.yang new file mode 100644 index 000000000..dd9b0b16c --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-multicast@2026-04-12.yang @@ -0,0 +1,921 @@ +module ietf-multicast { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-multicast"; + prefix ietf-multicast; + + import ietf-inet-types { + prefix inet; + reference + "RFC 9911: Common YANG Data Types"; + } + import ietf-routing-types { + prefix rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + + organization + " IETF MBONED (MBONE Deployment) Working Group"; + contact + "WG Web: https://datatracker.ietf.org/wg/mboned/ + WG List: + + Editor: Zheng Zhang + + Editor: Cui Wang + + Editor: Ying Cheng + + Editor: Xufeng Liu + + Editor: Mahesh Sivakumar + + "; + + // RFC Ed.: replace XXXX with actual RFC number and remove + // this note + + description + "The module defines the YANG definitions for multicast service + management. This model can be used to send multicast flow + information to or retrieve multicast flow information from + devices, including upstream and downstream node information, + possible signaling protocols, and the multicast transmission + protocol that actually carries the multicast flow. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + revision 2026-04-12 { + description + "Initial revision."; + reference + "RFC XXXX: A YANG Data Model for multicast service management + YANG."; + } + + /* + *feature + */ + + feature bier { + description + "Cooperation with BIER technology."; + reference + "RFC 8279: Multicast Using Bit Index Explicit Replication + (BIER)"; + } + + feature bier-te { + description + "Cooperation with BIER-TE technology."; + reference + "RFC 9262: Tree Engineering for Bit Index Explicit Replication + (BIER-TE)"; + } + + feature sr-p2mp { + description + "Cooperation with multipoint Segment Routing replication + technology."; + reference + "RFC 9524: Segment Routing Replication for Multipoint + Service Delivery"; + } + + feature ir-tunnel { + description + "Cooperation with Ingress Replication tunnel technology."; + reference + "RFC 7988: Ingress Replication Tunnels in Multicast VPN"; + } + + feature mldp { + description + "Cooperation with MLDP technology."; + reference + "RFC 6388: Label Distribution Protocol Extensions + for Point-to-Multipoint and Multipoint-to-Multipoint + Label Switched Paths"; + } + + feature p2mp-te { + description + "Cooperation with RSVP TE P2MP technology."; + reference + "RFC 4875: Extensions to Resource Reservation Protocol - + Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE + Label Switched Paths (LSPs)"; + } + + feature pim { + description + "Cooperation with PIM technology."; + reference + "RFC 7761: Protocol Independent Multicast - Sparse Mode + (PIM-SM): Protocol Specification (Revised)"; + } + + feature bidir { + description + "Cooperation with BIDIR-PIM technology."; + reference + "RFC 5015: Bidirectional Protocol Independent Multicast + (BIDIR-PIM)"; + } + + /* + *typedef + */ + + typedef ip-multicast-source-address { + type union { + type enumeration { + enum * { + description + "Any source address."; + } + } + type inet:ipv4-address; + type inet:ipv6-address; + } + description + "Multicast source IP address type."; + } + + /* + * Identities + */ + + identity dynamic-signaling-type { + description + "Base identity for the dynamic signaling type of multicast + service technology."; + } + + identity transport-type { + description + "Identity for the multicast transport technology."; + } + + identity tunnel-encap-type { + description + "Base identity for the type of multicast flow tunnel + encapsulation."; + } + + identity tunnel-encap-vxlan { + base tunnel-encap-type; + description + "The VXLAN encapsulation is used for flow encapsulation."; + reference + "RFC 7348: Virtual eXtensible Local Area Network (VXLAN): + A Framework for Overlaying Virtualized Layer 2 Networks + over Layer 3 Networks"; + } + identity tunnel-encap-nvgre { + base tunnel-encap-type; + description + "The NVGRE encapsulation is used for flow encapsulation."; + reference + "RFC 7637: NVGRE: Network Virtualization Using Generic + Routing Encapsulation"; + } + + identity tunnel-encap-geneve { + base tunnel-encap-type; + description + "The GENEVE encapsulation is used for flow encapsulation."; + reference + "RFC 8926: Geneve: Generic Network Virtualization + Encapsulation"; + } + + identity bier-encapsulation{ + description + "Base identity for BIER encapsulation."; + } + identity bier-encap-mpls { + base bier-encapsulation; + description + "This identity represents MPLS encapsulation for bier."; + } + identity bier-encap-ipv6 { + base bier-encapsulation; + description + "This identity represents ipv6 encapsulation for bier."; + } + identity bier-encap-ethernet { + base bier-encapsulation; + description + "This identity represents ethernet encapsulation for bier."; + } + + identity signaling-pim { + base dynamic-signaling-type; + description + "Using PIM as multicast service signaling technology. + This signaling protocol needs to be used in conjunction + with the transport protocol set to BIER."; + reference + "I-D.ietf-bier-pim-signaling: PIM Signaling Through BIER + Core"; + } + identity mld { + base dynamic-signaling-type; + description + "Using MLD as multicast service signaling technology. + This signaling protocol needs to be used in conjunction + with the transport protocol set to BIER."; + reference + "I-D.ietf-bier-mld: BIER Ingress Multicast Flow Overlay + using Multicast Listener Discovery Protocols"; + } + + identity mld-snooping { + base dynamic-signaling-type; + description + "Using MLD-snooping as multicast service signaling + technology."; + reference + "RFC 4541: Considerations for Internet Group Management + Protocol (IGMP) and Multicast Listener + Discovery (MLD) Snooping Switches"; + } + + identity evpn { + base dynamic-signaling-type; + description + "Using EVPN as multicast service signaling technology."; + reference + "RFC 7432: BGP MPLS-Based Ethernet VPN + RFC 9572: Updates on EVPN BUM Procedures + RFC 9624: EVPN Broadcast, Unknown Unicast, or Multicast + (BUM) Using Bit Index Explicit Replication (BIER)"; + } + + identity mvpn { + base dynamic-signaling-type; + description + "Using MVPN as multicast service signaling technology."; + reference + "RFC 6513: Multicast in MPLS/BGP IP VPNs + RFC 7716: Global Table Multicast with BGP Multicast VPN + (BGP-MVPN) Procedures + RFC 8556: Multicast VPN Using Bit Index Explicit + Replication (BIER)"; + } + + identity bier { + base transport-type; + description + "Using BIER as multicast transport technology."; + reference + "RFC 8279: Multicast Using Bit Index Explicit Replication + (BIER)"; + } + + identity bier-te { + base transport-type; + description + "Using BIER-TE as multicast transport technology."; + reference + "RFC 9262: Traffic Engineering for Bit Index Explicit + Replication (BIER-TE)"; + } + + identity mldp { + base transport-type; + description + "Using mLDP as multicast transport technology."; + reference + "RFC 6388: Label Distribution Protocol Extensions + for Point-to-Multipoint and Multipoint-to-Multipoint + Label Switched Paths"; + } + + identity rsvp-te-p2mp { + base transport-type; + description + "Using P2MP TE as multicast transport technology."; + reference + "RFC 4875: Extensions to Resource Reservation Protocol + - Traffic Engineering (RSVP-TE) for Point-to-Multipoint + TE Label Switched Paths (LSPs)"; + } + + identity sr-p2mp { + base transport-type; + description + "Using Segment Routing as multicast transport technology."; + reference + "I-D.ietf-pim-sr-p2mp-policy: + Segment Routing Point-to-Multipoint Policy"; + } + + identity pim { + base transport-type; + description + "Using PIM as multicast transport technology."; + reference + "RFC 7761: Protocol Independent Multicast - Sparse Mode + (PIM-SM): Protocol Specification (Revised)"; + } + + identity bidir { + base transport-type; + description + "Using BIDIR-PIM as multicast transport technology."; + reference + "RFC 5015: Bidirectional Protocol Independent Multicast + (BIDIR-PIM)"; + } + + identity event-type { + description + "The events of the multicast service."; + } + + identity service-up { + base event-type; + description + "The multicast service works."; + } + + identity service-down { + base event-type; + description + "There is something wrong with upstream or downstream node, + and node can't work properlay."; + } + + identity protocol-enabled { + base event-type; + description + "The protocol that is used for multicast flows have been + enabled."; + } + + identity protocol-disabled { + base event-type; + description + "The protocol that is used by multicast flows have been + disabled."; + } + + grouping general-multicast-key { + description + "The general multicast keys. They are used to differentiate + multicast service."; + leaf vpn-rd { + type rt-types:route-distinguisher; + description + "A Route Distinguisher is used to differentiate + routes from different MVPNs. + When the value is set to 0, it indicates that it is + Global Table Multicast as described in RFC7716."; + reference + "RFC 8294: Common YANG Data Types for the Routing Area + RFC 6513: Multicast in MPLS/BGP IP VPNs + RFC 7716: Global Table Multicast with BGP Multicast VPN + (BGP-MVPN) Procedures"; + } + leaf source-address { + type ip-multicast-source-address; + description + "The IP source address of the multicast flow. The + value set to * means that the receiver interests + in all source that relevant to one given group."; + } + leaf group-address { + type rt-types:ip-multicast-group-address; + mandatory true; + description + "The IP group address of multicast flow. This + type represents a version-neutral IP multicast group + address. The format of the textual representation + implies the IP version."; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + } + + // multicast-key + + grouping bier-key { + description + "The key parameters set for BIER/BIER TE forwarding."; + reference + "RFC 8279: Multicast Using Bit Index Explicit Replication + (BIER)."; + leaf sub-domain { + type uint16; + description + "The subdomain ID that the multicast flow belongs to."; + } + list tad { + key "mt-id fa-number data-plane"; + description + "The associated Multi-Topology ID, Flex Algo number and + data plane type."; + leaf mt-id { + type uint16; + description + "The multi-topology ID that the multicast flow belongs + to."; + reference + "RFC 4915: Multi-Topology (MT) Routing in OSPF + RFC 5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs)"; + } + leaf fa-number { + type uint8; + description + "Flex-algo number, value between 128 and 255 inclusive."; + reference + "RFC 9350: IGP Flexible Algorithm"; + } + leaf data-plane { + type uint8; + description + "Data plane type used for prefix calculation."; + reference + "RFC 9502: IGP Flexible Algorithm in IP Networks + I-D.ietf-lsr-flex-soft-dataplane: IGP Flex Soft + Dataplane"; + } + } + leaf bitstringlength { + type uint16; + description + "The bitstringlength used by BIER forwarding."; + } + leaf bier-encap-type { + type identityref { + base bier-encapsulation; + } + description + "The BIER encapsulation that can be used in either MPLS + networks or non-MPLS networks."; + } + } + + grouping transport-tech { + description + "The transport technology selected for the multicast service. + For one specific multicast flow. + The same multicast flow may be forwarded using multiple + transport technologies as needed for management purposes."; + leaf transport { + type identityref { + base transport-type; + } + description + "The type of transport technology"; + } + choice transport-tech-type { + description + "The type of transport technology"; + case bier { + if-feature "bier"; + list bier { + key "sub-domain"; + description + "Using BIER as the transport technology. + The BIER technology is introduced in RFC8279."; + reference + "RFC 8296: Encapsulation for Bit Index Explicit + Replication (BIER) in MPLS and Non-MPLS Networks"; + uses bier-key; + } + } + case bier-te { + if-feature "bier-te"; + description + "Using BIER-TE as the transport technology. + The BIER-TE technology is introduced in RFC9262."; + reference + "RFC 9262: Tree Engineering for Bit Index Explicit + Replication (BIER-TE)"; + list bitstring { + key "name"; + leaf name { + type string; + description + "The name of the bitstring"; + } + list bier-te-adj { + key "adj-id"; + leaf adj-id { + type uint16; + description + "The link adjacency ID used for BIER TE + forwarding."; + } + description + "The adjacencies ID used for BIER TE bitstring + encapsulation."; + } + description + "The bitstring name and detail used for BIER TE + forwarding encapsulation. One or more bitstring + can be used for backup path."; + } + } + case mldp { + if-feature "mldp"; + description + "Using MLDP as the transport technology."; + reference + "RFC 6388: Label Distribution Protocol Extensions + for Point-to-Multipoint and Multipoint-to-Multipoint + Label Switched Paths + RFC 9658: + Multipoint LDP Extensions for Multi-Topology Routing"; + leaf mt-id { + type uint16; + description + "The multi-topology ID that the multicast flow + belongs to."; + reference + "RFC 4915: Multi-Topology (MT) Routing in OSPF + RFC 5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs)"; + } + leaf fa-number { + type uint8; + description + "Flex-algo number, value between 128 and 255 + inclusive."; + reference + "RFC 9350: IGP Flexible Algorithm"; + } + } + case rsvp-te-p2mp { + if-feature "p2mp-te"; + description + "Using RSVP TE P2MP as the transport technology."; + reference + "RFC 4875: Extensions to Resource Reservation Protocol - + Traffic Engineering (RSVP-TE) for Point-to-Multipoint + TE Label Switched Paths (LSPs)"; + + leaf tunnel-name { + type string; + description + "The P2MP TE tunnel name."; + } + } + case pim { + if-feature "pim"; + description + "Using PIM as the transport technology. + By setting the corresponding TAD (Multi-Topology ID, + FA number, and data plane type), constraint-based + multicast path establishment can be achieved."; + reference + "RFC 7761: Protocol Independent Multicast - Sparse Mode + (PIM-SM): Protocol Specification (Revised) + I-D: ietf-pim-flex-algo: Multi-Topology in PIM"; + leaf source-address { + type ip-multicast-source-address; + description + "The IP source address of the multicast flow. The + value set to * means that the receiver interests + in all source that relevant to one given group."; + } + leaf group-address { + type rt-types:ip-multicast-group-address; + mandatory true; + description + "The IP group address of multicast flow. This + type represents a version-neutral IP multicast group + address. The format of the textual representation + implies the IP version."; + } + leaf bidir { + if-feature "bidir"; + type boolean; + description + "Using BIDIR-PIM as the transport technology. + When using the bidir technique, only the group address + needs to be considered."; + reference + "RFC 5015: Bidirectional Protocol Independent Multicast + (BIDIR-PIM)"; + } + list tad { + key "mt-id fa-number data-plane"; + description + "The Multi-Topology ID, Flex Algo number and data plane + type are used to construct the logical topology, + which enables constraint-based forwarding."; + leaf mt-id { + type uint16; + description + "The multi-topology ID."; + reference + "RFC 4915: Multi-Topology (MT) Routing in OSPF + RFC 5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems + (IS-ISs)"; + } + leaf fa-number { + type uint8; + description + "Flex-algo number, value between 128 and 255 + inclusive."; + reference + "RFC 9350: IGP Flexible Algorithm"; + } + leaf data-plane { + type uint8; + description + "Data plane type used for prefix calculation."; + reference + "RFC 9502: IGP Flexible Algorithm in IP Networks + I-D.ietf-lsr-flex-soft-dataplane: + IGP Flex Soft Dataplane"; + } + } + } + case ir-tunnel { + if-feature "ir-tunnel"; + description + "Using IR (Ingress Replication) P-tunnel for MVPN as the + transport technology."; + reference + "RFC 7988: Ingress Replication Tunnels in Multicast VPN + RFC 6514: BGP Encodings and Procedures for Multicast + in MPLS/BGP IP VPNs"; + leaf ir-tunnel-type { + type uint8; + description + "The tunnel type used by MVPN ingress replication."; + } + } + case sr-p2mp { + if-feature "sr-p2mp"; + description + "Using SR P2MP as the transport technology. + The ingress replication and the SR P2MP + function should not be used at the same time."; + reference + "RFC 9524: Segment Routing Replication for Multipoint + Service Delivery + I-D.ietf-pim-sr-p2mp-policy: Segment Routing + Point-to-Multipoint Policy"; + } + // sr-p2mp + case native { + description + "When this type is set, it indicates that it is a + normal multicast and no additional transport + forwarding is required."; + } + } + } + + // transport + /*signaling*/ + + grouping signaling-tech { + leaf signaling { + type identityref { + base dynamic-signaling-type; + } + description + "The type of signaling technology."; + } + choice protocol-type { + description + "The type of dynamic signaling technology."; + case evpn { + description + "EVPN technology is used for multicast service + signaling. + When BIER is used as a transport technology, there is + specific draft listed below that explain how to + perform signaling."; + reference + "RFC 7432: BGP MPLS-Based Ethernet VPN + RFC 9624: EVPN Broadcast, Unknown Unicast, or + Multicast (BUM) Using Bit Index Explicit Replication + (BIER)"; + } + case mld { + description + "MLD/IGMP can be used as multicast service signaling. + When BIER is used as a transport technology, there is + specific draft listed below that explain how to + perform signaling."; + reference + "I-D:ietf-bier-mld: BIER Ingress Multicast Flow Overlay + using Multicast Listener Discovery Protocols"; + } + case mld-snooping { + description + "MLD/IGMP snooping can be used as multicast service + signaling."; + reference + "RFC 4541:Considerations for Internet Group Management + Protocol (IGMP) and Multicast Listener Discovery (MLD) + Snooping Switches"; + } + case mvpn { + description + "MVPN technology is used for multicast service signaling. + When BIER is used as a transport technology, there is + specific draft listed below that explain how to + perform signaling."; + reference + "RFC 6513: Multicast in MPLS/BGP IP VPNs + RFC 7716: Global Table Multicast with BGP Multicast VPN + (BGP-MVPN) Procedures + RFC 8556: Multicast VPN Using Bit Index Explicit + Replication (BIER)"; + } + case pim { + description + "PIM can be used as multicast service signaling. + When BIER is used as a transport technology, there is + specific draft listed below that explain how to + perform signaling."; + reference + "RFC 7761: Protocol Independent Multicast - Sparse Mode + (PIM-SM): Protocol Specification (Revised) + I-D.ietf-bier-pim-signaling: PIM Signaling Through BIER + Core"; + } + } + description + "The dynamic signaling protocols."; + } + + // signaling-tech + + container multicast-service { + description + "Multicast service YANG data model. Includes the flow's + key value, upstream and downstream neighbors, + and related information."; + list multicast-flow { + key "vpn-rd source-address group-address"; + description + "Multicast flow information, including keys, upstream and + downstream nodes, possible signaling protocols, and + transport protocols."; + uses general-multicast-key; + container upstream { + description + "Upstream node neighbor information and the signaling + protocol used in the multicast flow."; + list neighbor { + key "neighbor-address"; + description + "The IP address of the upstream node for the multicast + flow. It can be the ingress node for MVPN, EVPN, and + BIER. + In MVPN and EVPN, this is the address of the ingress + PE; in BIER, it is the BFR prefix of the BFIR. + To achieve redundant ingress node protection, two or + more ingress nodes can exist."; + leaf neighbor-address { + type inet:ip-address; + description + "The IP address of the neighbor."; + } + leaf vni-type { + type identityref { + base tunnel-encap-type; + } + description + "The encapsulated type for the multicast flow."; + } + uses signaling-tech; + } + } + // upstream + + list downstream { + key "signaling transport"; + description + "Downstream node neighbor information, the signaling + protocol and transport protocol used by the multicast + flow. For different downstream neighbor, different + signaling and transport technology may be used."; + + list neighbor { + key "neighbor-address"; + description + "The IP address of the downstream node for the multicast + flow. It can be the egress node for MVPN, EVPN, and + BIER. + In MVPN and EVPN, this is the address of the egress PE; + in BIER, it is the BFR prefix of the BFER."; + leaf neighbor-address { + type inet:ip-address; + description + "The IP address of the neighbor."; + } + } + uses signaling-tech; + uses transport-tech; + } + // downstream + } + // multicast-flow + } + + /*Notifications*/ + + notification ingress-egress-event { + leaf event-type { + type identityref { + base event-type; + } + description + "The event type."; + } + list multicast-flow { + key "vpn-rd source-address group-address"; + description + "Multicast flow information, including keys, upstream and + downstream nodes, possible signaling protocols, and + transport protocols."; + + uses general-multicast-key; + container upstream { + description + "Upstream node neighbor information and the signaling + protocol used in the multicast flow."; + + leaf neighbor-address { + type inet:ip-address; + description + "The IP address of the neighbor."; + } + leaf signaling { + type identityref { + base dynamic-signaling-type; + } + description + "The type of signaling technology"; + } + } + // upstream + list downstream { + key "signaling transport"; + description + "Downstream node neighbor information, the signaling + protocol and transport protocol used by the multicast + flow. For different downstream neighbor, different + signaling and transport technology may be used."; + + leaf neighbor-address { + type inet:ip-address; + description + "The IP address of the neighbor."; + } + leaf signaling { + type identityref { + base dynamic-signaling-type; + } + description + "The type of signaling technology"; + } + leaf transport { + type identityref { + base transport-type; + } + description + "The type of transport technology"; + } + } + // downstream + } + // multicast-flow + description + "Notification events for the upstream or downstream nodes. + Like node failure, signaling/ transport module + loading/ unloading. And the potential failure about some + multicast flows and associated + signaling/ transport technologies."; + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-netconf-private-candidate-compare@2026-02-03.yang b/experimental/ietf-extracted-YANG-modules/ietf-netconf-private-candidate-compare@2026-02-03.yang new file mode 100644 index 000000000..5e17b58ec --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-netconf-private-candidate-compare@2026-02-03.yang @@ -0,0 +1,103 @@ +module ietf-netconf-private-candidate-compare { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-private-candidate-compare"; + prefix pccmp; + + import ietf-netconf-private-candidate { + prefix pc; + } + import ietf-nmda-compare { + prefix cmp; + } + + organization + "IETF NETCONF (Network Configuration) Working Group"; + contact + "WG Web: + WG List: + + Editor: James Cumming + + + Editor: Robert Wills + "; + description + "NETCONF private candidate support. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + revision 2026-02-03 { + description + "Introduce private candidate support"; + reference + "draft-ietf-netconf-privcand: + Netconf Private Candidates"; + } + revision 2025-10-30 { + description + "Introduce private candidate support"; + reference + "draft-ietf-netconf-privcand: + Netconf Private Candidates"; + } + revision 2024-09-12 { + description + "Introduce private candidate support"; + reference + "draft-ietf-netconf-privcand: + Netconf Private Candidates"; + } + + augment "/cmp:compare/cmp:input" { + if-feature "pc:private-candidate"; + description + "Augment private candidate extensions into the NETCONF compare + RPC"; + leaf reference-point { + type enumeration { + enum last-update { + description + "Compare using the point the private + candidate configuration datastore was + last updated using the update or commit + RPCs."; + } + enum creation-point { + description + "Compare using the point the private + candidate configuration datastore was + initially created."; + } + } + default "last-update"; + description + "When this leaf is provided and the source or + destination is the candidate datastore, operating + in private candidate mode, the comparison will + either occur between the last-update point of + the private candidate or the creation-point of + the private candidate."; + reference + "draft-ietf-netconf-privcand"; + } + } +} + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-netconf-private-candidate@2024-09-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-netconf-private-candidate@2024-09-12.yang deleted file mode 100644 index 44d1c1288..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-netconf-private-candidate@2024-09-12.yang +++ /dev/null @@ -1,126 +0,0 @@ -module ietf-netconf-private-candidate { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:netconf:private-candidate:1.0"; - prefix pc; - - import ietf-nmda-compare { - prefix cmp; - } - - organization - "IETF NETCONF (Network Configuration) Working Group"; - contact - "WG Web: - WG List: - - Editor: James Cumming - - - Editor: Robert Wills - "; - description - "NETCONF private candidate support. - - 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). - - This version of this YANG module is part of - draft-ietf-netconf-privcand; see these documents for full - legal notices."; - - revision 2024-09-12 { - description - "Introduce private candidate support"; - reference - "draft-ietf-netconf-privcand: - Netconf Private Candidates"; - } - - feature private-candidate { - description - "NETCONF :private-candidate capability; - If the server advertises the :private-candidate - capability for a session, then this feature must - also be enabled for that session. Otherwise, - this feature must not be enabled."; - reference - "draft-ietf-netconf-privcand"; - } - - rpc update { - if-feature "private-candidate"; - description - "Updates the private candidate from the running - configuration."; - reference - "draft-ietf-netconf-privcand"; - input { - leaf resolution-mode { - description - "Mode to resolve conflicts between running and - private-candidate configurations."; - default revert-on-conflict; - type enumeration { - enum revert-on-conflict { - description - "Reject update when any conflicting - node is found and revert the private - candidate configuration datastore to its - state prior to issuing the update."; - } - enum prefer-candidate { - description - "Resolve conflicted node by selecting - the private candidate configuration - datastore version."; - } - enum prefer-running { - description - "Resolve conflicted node by selecting - the running configuration datastore - version."; - } - } - } - } - } - - augment /cmp:compare/cmp:input { - leaf reference-point { - reference "draft-ietf-netconf-privcand"; - if-feature "private-candidate"; - description - "When this leaf is provided and the source or - destination is the candidate datastore, operating - in private candidate mode, the comparison will - either occur between the last-update point of - the private candidate or the creation-point of - the private candidate."; - default last-update; - type enumeration { - enum last-update { - description - "Compare using the point the private - candidate configuration datastore was - last updated using the update or commit - RPCs."; - } - enum creation-point { - description - "Compare using the point the private - candidate configuration datastore was - initially created."; - } - } - } - } - -} - diff --git a/experimental/ietf-extracted-YANG-modules/ietf-netconf-private-candidate@2026-02-03.yang b/experimental/ietf-extracted-YANG-modules/ietf-netconf-private-candidate@2026-02-03.yang new file mode 100644 index 000000000..d197bd0a1 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-netconf-private-candidate@2026-02-03.yang @@ -0,0 +1,111 @@ +module ietf-netconf-private-candidate { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-private-candidate"; + prefix pc; + + organization + "IETF NETCONF (Network Configuration) Working Group"; + contact + "WG Web: + WG List: + + Editor: James Cumming + + + Editor: Robert Wills + "; + description + "NETCONF private candidate support. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + revision 2026-02-03 { + description + "Introduce private candidate support"; + reference + "draft-ietf-netconf-privcand: + Netconf Private Candidates"; + } + revision 2025-10-30 { + description + "Introduce private candidate support"; + reference + "draft-ietf-netconf-privcand: + Netconf Private Candidates"; + } + revision 2024-09-12 { + description + "Introduce private candidate support"; + reference + "draft-ietf-netconf-privcand: + Netconf Private Candidates"; + } + + feature private-candidate { + description + "NETCONF :private-candidate capability; + If the server advertises the :private-candidate + capability for a session, then this feature must + also be enabled for that session. Otherwise, + this feature must not be enabled."; + reference + "draft-ietf-netconf-privcand"; + } + + rpc update { + if-feature "private-candidate"; + description + "Updates the private candidate from the running + configuration."; + reference + "draft-ietf-netconf-privcand"; + input { + leaf resolution-mode { + type enumeration { + enum revert-on-conflict { + description + "Reject update when any conflicting + node is found and revert the private + candidate configuration datastore to its + state prior to issuing the update."; + } + enum prefer-candidate { + description + "Resolve conflicted node by selecting + the private candidate configuration + datastore version."; + } + enum prefer-running { + description + "Resolve conflicted node by selecting + the running configuration datastore + version."; + } + } + default "revert-on-conflict"; + description + "Mode to resolve conflicts between running and + private-candidate configurations."; + } + } + } +} + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-anomaly-service-topology@2025-04-11.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-anomaly-service-topology@2025-11-15.yang similarity index 68% rename from experimental/ietf-extracted-YANG-modules/ietf-network-anomaly-service-topology@2025-04-11.yang rename to experimental/ietf-extracted-YANG-modules/ietf-network-anomaly-service-topology@2025-11-15.yang index f4f1f2dd4..5061671d3 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-network-anomaly-service-topology@2025-04-11.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-network-anomaly-service-topology@2025-11-15.yang @@ -58,18 +58,18 @@ module ietf-network-anomaly-service-topology { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2025-04-11 { + revision 2025-11-15 { description "Initial version"; reference "RFC XXX: Semantic Metadata Annotation for Network Anomaly Detection"; } - grouping vpn-service { + grouping l2vpn-service { description "Connectivity service of type VPN. This grouping is used to augment the relevant-state container."; - list vpn-service { + list l2vpn-service { key "vpn-id"; description "List of VPN connectivity services of interest."; @@ -98,48 +98,123 @@ module ietf-network-anomaly-service-topology { type yang:uuid; description "Unique identifier of VPN connectivity service maintenance - window within the relevant-state window."; + window within the relevant-state window."; } leaf change-start-time { type yang:date-and-time; description "Start date and time of the VPN connectivity service - window within the relevant-state window."; + maintenance window within the relevant-state window."; } leaf change-end-time { type yang:date-and-time; description "End date and time of the VPN connectivity service - window within the relevant-state window."; + maintenance window within the relevant-state window."; + } + } + } + + grouping l3vpn-service { + description + "Connectivity service of type VPN. This grouping is + used to augment the relevant-state container."; + list l3vpn-service { + key "vpn-id"; + description + "List of VPN connectivity services of interest."; + leaf vpn-id { + type string; + mandatory true; + description + "Unique ID of the VPN connectivity service."; + } + leaf uri { + type inet:uri; + description + "URI to viusalize the VPN connectivity service inventory."; + } + leaf vpn-name { + type string; + description + "Name of the VPN connectivity service."; + } + leaf-list site-ids { + type string; + description + "List of unique site ID's of the VPN connectivity service."; + } + leaf change-id { + type yang:uuid; + description + "Unique identifier of VPN connectivity service maintenance + window within the relevant-state window."; + } + leaf change-start-time { + type yang:date-and-time; + description + "Start date and time of the VPN connectivity service + maintenance window within the relevant-state window."; + } + leaf change-end-time { + type yang:date-and-time; + description + "End date and time of the VPN connectivity service + maintenance window within the relevant-state window."; } } } grouping vpn-node-termination { description - "Node Termination for the VPN Service instance. + "Node and Network Termination for the VPN Service instance. This grouping is used to augment the relevant-state container."; list vpn-node-terminations { - key "hostname route-distinguisher"; + key "hostname vrf-name"; description "List of Node Terminations of interest."; leaf hostname { type inet:host; - mandatory true; description - "The hostname of the network node according to - [RFC1213]. This value is usually configured on - the node by the administrator to uniquely - identify the node in the network."; + "The hostname of the network node. This value + is usually configured on the node by the + administrator to uniquely identify the node + in the network."; + } + leaf vrf-id { + type uint32; + description + "The VRF id obtained through IPFIX IE234 + ingressVRFID or IE235 egressVRFID."; + } + leaf vrf-name { + type string; + description + "The VRF name obtained through IPFIX IE236 + VRFname or BMP peer_up VRF Table Name TLV."; } leaf route-distinguisher { type string; - mandatory true; description "The BGP route-distinguisher obtained through IPFIX IE90 mplsVpnRouteDistinguisher or BMP route-monitoring or peer_up message type."; } + leaf-list interface-id { + type uint32; + description + "The interface identifier obtained through + IPFIX IE10 ingressInterface, IE14 + egressInterface or + ietf-interfaces:interfaces/interface/if-index."; + } + leaf-list interface-name { + type string; + description + "The interface name obtained through + IPFIX IE82 interfaceName or + ietf-interfaces:interfaces/interface/name."; + } leaf-list peer-ip { type inet:ip-address; description @@ -153,14 +228,6 @@ module ietf-network-anomaly-service-topology { "The BGP next-hop IP address learned through BMP route-monitoring message type."; } - leaf-list interface-id { - type uint32; - description - "The interface identifier obtained through - IPFIX IE10 ingressInterface, IE14 - egressInterface or - ietf-interfaces:interfaces/interface/if-index."; - } } } @@ -172,12 +239,12 @@ module ietf-network-anomaly-service-topology { case l2vpn { description "Layer 2 VPN connectivity service."; - uses vpn-service; + uses l2vpn-service; } case l3vpn { description "Layer 3 VPN connectivity service."; - uses vpn-service; + uses l3vpn-service; } } @@ -189,12 +256,12 @@ module ietf-network-anomaly-service-topology { case l2vpn { description "Layer 2 VPN connectivity service."; - uses vpn-service; + uses l2vpn-service; } case l3vpn { description "Layer 3 VPN connectivity service."; - uses vpn-service; + uses l3vpn-service; } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-anomaly-symptom-cbl@2025-04-25.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-anomaly-symptom-cbl@2025-11-15.yang similarity index 95% rename from experimental/ietf-extracted-YANG-modules/ietf-network-anomaly-symptom-cbl@2025-04-25.yang rename to experimental/ietf-extracted-YANG-modules/ietf-network-anomaly-symptom-cbl@2025-11-15.yang index 1adf32041..ec28c2042 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-network-anomaly-symptom-cbl@2025-04-25.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-network-anomaly-symptom-cbl@2025-11-15.yang @@ -28,7 +28,7 @@ module ietf-network-anomaly-symptom-cbl { "This module defines the semantic grouping to be used by a Service Disruption Detection Systems. The defined objects is used to augment the anomaly container. Describing the - symptoms action, reason and concern-score. + symptoms action and reason. Copyright (c) 2025 IETF Trust and the persons identified as authors of the code. All rights reserved. @@ -47,7 +47,7 @@ module ietf-network-anomaly-symptom-cbl { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2025-04-25 { + revision 2025-11-15 { description "Initial version"; reference @@ -55,14 +55,6 @@ module ietf-network-anomaly-symptom-cbl { Detection"; } - typedef score { - type uint8 { - range "0..100"; - } - description - "Number indicating a score between 0 and 100."; - } - grouping cbl-symptom { description "Semantic metadata assocaited to a symptom for a detected diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-energy-efficiency@2025-10-20.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-energy-efficiency@2025-10-20.yang new file mode 100644 index 000000000..6ae780dd0 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-network-energy-efficiency@2025-10-20.yang @@ -0,0 +1,215 @@ +module ietf-network-energy-efficiency { + + yang-version 1.1; + + namespace "urn:ietf:params:xml:ns:yang:ietf-network-energy- +efficiency"; + + prefix ntw-eff; + + import ietf-network { + + prefix nw; + + reference + + "RFC 8345: A YANG Data Model for Network Topologies"; + + } + + import ietf-yang-types { + prefix yang; + + reference + + "RFC 6991: Common YANG Types"; + + } + + import iana-hardware { + + prefix ianahw; + + reference + + "https://www.iana.org/assignments/iana-hardware/iana- +hardware.xhtml"; + + } + + organization "IETF NETMOD Working Group"; + + contact + + "WG Web: + + WG List: "; + + description + + "This module augments the ietf-network model to add power + + consumption monitoring capabilities for hardware components. + + Copyright (c) 2025 IETF Trust and the persons identified as + + authors of the code. All rights reserved."; + + revision 2025-10-20 { + + description + + "Initial revision."; + + reference + "RFC XXXX: Power Consumption Extension for Hardware +Management"; + + } + + feature energy-efficiency { + + description + + "Indicates support for energy efficiency monitoring features"; + + } + + // ========== Type Definitions ========== + + identity green-type { + + description "Base identity for energy-efficiency types"; + + } + + identity average { + + base green-type; + + description "Average energy-efficiency over time"; + + } + + identity maximum { + + base green-type; + + description "Maximum energy-efficiency observed"; + + } + + identity real-time { + + base green-type; + description "Real-time energy-efficiency reading"; + + } + + grouping green-energy-efficiency { + + description "Energy Efficiency attributes"; + + leaf value { + + type decimal64 { + + fraction-digits 4; + + } + + units "watts/GB"; + + mandatory true; + + description "Energy Efficiency value"; + + } + + leaf timestamp { + + type yang:date-and-time; + + description "Time when measurement was taken"; + + } + + leaf update-period { + + type uint32; + + units "seconds"; + + description + + "For maximum and real-time values, it indicates the minimum +refresh time when there is a change; if the value remains unchanged, +no refresh occurs. For the average, it represents the sampling +window."; + + } + + } // End of green-energy-efficiency grouping + + // ========== Main Augmentation ========== + + augment "/nw:networks/nw:network/nw:node" { + + if-feature energy-efficiency; + + description + + "Add green consumption to network components"; + + list component { + + key name; + + config false; + + description + + "List of components."; + + leaf name { + + type string; + + description + + "The name assigned to this component. + + This name is not required to be the same as + + entPhysicalName."; + + } + + leaf class { + type identityref { + + base ianahw:hardware-class; + + } + + mandatory true; + + description + + "An indication of the general hardware type of the + + component."; + + reference + + "RFC 6933: Entity MIB (Version 4) - entPhysicalClass"; + + } + + uses green-energy-efficiency; + + } // End of component list + + } // End of augment + +} // End of module diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-sw-ext@2025-06-10.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-sw-ext@2026-04-15.yang similarity index 56% rename from experimental/ietf-extracted-YANG-modules/ietf-network-inventory-sw-ext@2025-06-10.yang rename to experimental/ietf-extracted-YANG-modules/ietf-network-inventory-sw-ext@2026-04-15.yang index c16cd19ee..457c84d7c 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-sw-ext@2025-06-10.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-sw-ext@2026-04-15.yang @@ -7,7 +7,7 @@ module ietf-network-inventory-sw-ext { import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } import ietf-network-inventory { prefix nwi; @@ -33,7 +33,7 @@ module ietf-network-inventory-sw-ext { "This YANG module defines a model for network inventory software extensions. - Copyright (c) 2025 IETF Trust and the persons + 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 @@ -52,7 +52,7 @@ module ietf-network-inventory-sw-ext { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2025-06-10 { + revision 2026-04-15 { description "Initial version"; reference @@ -63,68 +63,53 @@ module ietf-network-inventory-sw-ext { identity ne-nonphysical { base nwi:ne-type; description - "A non-physical network element (NE) is a network device that - support network protocols and functions, e.g., router, - firewall, and controller, which can reside in any network or - compute devices, such as a server in Data Center (DC), - server-based virtual machine (VM), or server-based - container."; + "Any network element implemented purely in software. + It performs protocol or forwarding functions but + does not correspond to a distinguishable hardware + chassis. It can be hosted on a bare-metal server, + VM, container, or cloud instance."; } identity ne-software { base ne-nonphysical; description - "A software NE refers to a a network device residing in any - network or compute devices, such as a physical server - (or 'bare metal') in DC. Examples of software NEs are - network controllers."; + "Software NE that runs directly on a host OS + (a.k.a. bare-metal deployment) or hypervisor. + Examples of software NEs are network controllers."; } identity ne-virtual { base ne-nonphysical; description - "A virtual NE refers to a network device residing within - server-based Virtual Machine (VM) implementing a virtual - network function (VNF). Examples of virtual NEs are - virtual routers, virtual firewalls."; + "Virtual NE instantiated inside a virtual-machine + (VM). Provides virtual network function (VNF) implementations + such as vRouter, vFirewall, vPE."; } identity ne-container { base ne-nonphysical; description - "A container NE refers to a network device residing within - server-based container implementing a Containerized - network function (CNF)."; + "Container NE packaged as CNF (Containerised Network + Function). Runs under Docker/K8s."; } identity software-component { base nwi:non-hardware-component-class; description - "Base identity for software components in a managed - device."; + "Base identity for software components in a managed device."; } identity operating-system { base software-component; description - "OS software type."; - } - - identity operating-system-patch { - base software-component; - description - "An operating system update - which should be a subcomponent - of the `operating-system` running on a component. A patch is - defined to be a set of software changes that are atomically - installed (and uninstalled) together. "; + "Operating system software type."; } identity bios { base software-component; description - "Legacy BIOS or UEFI firmware interface responsible for - initializing hardware components and first stage boot - loader."; + "BIOS or UEFI firmware image responsible for hardware + initialisation and secure boot."; } identity boot-loader { @@ -137,9 +122,8 @@ module ietf-network-inventory-sw-ext { identity software-module { base software-component; description - "A base identity for software modules installed and/or - running on the device. Modules include user-space programs - and kernel modules that provide specific functionality."; + "Installable unit smaller than a full OS image, + e.g. feature package."; } identity software-status { @@ -161,7 +145,7 @@ module ietf-network-inventory-sw-ext { grouping software-info-grouping { description - "Specific attributes applicable to Software."; + "Specific attributes applicable to software."; leaf status { type identityref { base software-status; @@ -172,43 +156,51 @@ module ietf-network-inventory-sw-ext { leaf installation-time { type yang:date-and-time; description - "Date and time the current revision last changed."; + "Time when the software or patch revision was + first installed."; } leaf activation-time { type yang:date-and-time; description - "Date and time the current revision last changed."; + "Time when the currently installed revision became active + (i.e., was rebooted into)."; } } /* Main blocks */ augment "/nwi:network-inventory/nwi:network-elements" - + "/nwi:network-element" { + + "/nwi:network-element/nwi:software-rev" { description - "Augment network element (NE) attributes."; - container software-attributes { - when "derived-from-or-self(../nwi:ne-type,'ne-software')"; - config false; - description - "Container for the attributes applicable only to software - Network Elements (NEs)."; - uses software-info-grouping; - } + "Adds installation-/activation-time, status, etc. to the base + NE software revision."; + uses software-info-grouping; + } + + augment "/nwi:network-inventory/nwi:network-elements" + + "/nwi:network-element/nwi:software-rev/nwi:patch" { + description + "Adds installation-/activation-time, status, etc. to the patch + level."; + uses software-info-grouping; } augment "/nwi:network-inventory/nwi:network-elements/" - + "nwi:network-element/nwi:components/nwi:component" { + + "nwi:network-element/nwi:components/nwi:component/" + + "nwi:software-rev" { description - "Augment software component attributes."; - container software-module-attributes { - when - "derived-from-or-self(../nwi:class,'software-module')"; - config false; - description - "This container contains some attributes belong to - software modules only."; - uses software-info-grouping; - } + "Extends components, such as line-card/CPU/etc. + software revision with timestamp and state information."; + uses software-info-grouping; + } + + augment "/nwi:network-inventory/nwi:network-elements/" + + "nwi:network-element/nwi:components/nwi:component/" + + "nwi:software-rev/nwi:patch" { + description + "Applies the software-info attributes to component-level + patches."; + uses software-info-grouping; } } + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-topology@2025-03-03.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-topology@2025-03-03.yang deleted file mode 100644 index 3c6e4f312..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-topology@2025-03-03.yang +++ /dev/null @@ -1,175 +0,0 @@ -module ietf-network-inventory-topology { - yang-version 1.1; - namespace - "urn:ietf:params:xml:ns:yang:ietf-network-inventory-topology"; - prefix nwit; - - import ietf-network { - prefix nw; - reference - "RFC 8345: A YANG Data Model for Network Topologies, - Section 4.1"; - } - import ietf-network-topology { - prefix nt; - reference - "RFC 8345: A YANG Data Model for Network Topologies, - Section 4.2"; - } - import ietf-network-inventory { - prefix nwi; - reference - "RFC AAAA: A YANG Data Model for Network Inventory"; - } - - organization - "IETF Network Inventory YANG (ivy) Working Group"; - contact - "WG Web: - WG List: - - Editor: Bo Wu - - Editor: Mohamed Boucadair - - Author: Cheng Zhou - - Author: Qin Wu - "; - description - "This YANG module defines a YANG module for network - topology and inventory mapping. - - Copyright (c) 2025 IETF Trust and the persons identified - as authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with - or without modification, is permitted pursuant to, and - subject to the license terms contained in, the Revised - BSD License set forth in Section 4.c of the IETF Trust's - Legal Provisions Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - All revisions of IETF and IANA published modules can be found - at the YANG Parameters registry group - (https://www.iana.org/assignments/yang-parameters). - - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices."; - - revision 2025-03-03 { - description - "Initial revision."; - reference - "RFC XXXX: A Network Data Model for Inventory Topology - Mapping"; - } - - /* features */ - - feature inventory-to-topology-navigate { - description - "Indicates support for navigating from inventory to topology."; - } - - feature topology-to-inventory-navigate { - description - "Indicates support for navigating from topology to inventory."; - } - - /* Groupings */ - /* Node Grouping Feature with 1:1 mapping to NE*/ - - grouping node-inventory-feature-attributes { - description - "Network Inventory mapping node scope attributes"; - container inventory-mapping-attributes { - if-feature "topology-to-inventory-navigate"; - description - "The container node attributes of Network Inventory - mapping."; - leaf ne-ref { - type nwi:ne-ref; - config false; - description - "1:1 mapping to the Network Element (NE) from which this - node is abstracted."; - } - } - } - - grouping tp-inventory-feature-attributes { - description - "Network Inventory mapping Termination Point (TP) scope - attributes."; - container inventory-mapping-attributes { - if-feature "topology-to-inventory-navigate"; - description - "Specifies the TP attributes of Network Inventory mapping."; - /* 1:1 mapping to physical port component */ - uses nwi:port-ref; - leaf physical-interface-name { - type string; - config false; - description - "1:1 mapping to physical interface name (e.g., eth0/1)."; - } - } - } - - grouping link-inventory-feature-attributes { - description - "Network Inventory mapping link scope attributes."; - container inventory-mapping-attributes { - if-feature "topology-to-inventory-navigate"; - description - "Specifies the link attributes of network inventory - mapping."; - leaf cable-name { - type string; - config false; - description - "Reports the reference of the cable inventory from which - this link is abstracted."; - } - leaf link-type { - type string; - config false; - description - "Reports the type of the link."; - } - } - } - - /* Main blocks */ - - augment "/nw:networks/nw:network/nw:node" { - description - "Groups parameters for inventory at the node level."; - uses node-inventory-feature-attributes; - } - - augment "/nw:networks/nw:network/nt:link" { - description - "Augments inventory topology link information."; - uses link-inventory-feature-attributes; - } - - augment "/nw:networks/nw:network/nw:node/nt:termination-point" { - description - "Augments inventory termination point information."; - uses tp-inventory-feature-attributes; - } - - /* Augment the network-inventory to add topology navigate */ - - augment "/nwi:network-inventory/nwi:network-elements" - + "/nwi:network-element" { - if-feature "inventory-to-topology-navigate"; - description - "Augments the network element with 1:1 mapping with the network - the element is part of."; - uses nw:node-ref; - } -} - diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-topology@2026-02-28.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-topology@2026-02-28.yang new file mode 100644 index 000000000..4dff17904 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-topology@2026-02-28.yang @@ -0,0 +1,191 @@ +module ietf-network-inventory-topology { + yang-version 1.1; + namespace + "urn:ietf:params:xml:ns:yang:ietf-network-inventory-topology"; + prefix nwit; + + import ietf-network { + prefix nw; + reference + "RFC 8345: A YANG Data Model for Network Topologies, + Section 4.1"; + } + import ietf-network-topology { + prefix nt; + reference + "RFC 8345: A YANG Data Model for Network Topologies, + Section 4.2"; + } + import ietf-network-inventory { + prefix nwi; + reference + "RFC AAAA: A YANG Data Model for Network Inventory"; + } + + organization + "IETF Network Inventory YANG (ivy) Working Group"; + contact + "WG Web: + WG List: IVY + + Editor: Bo Wu + + Editor: Mohamed Boucadair + + Author: Cheng Zhou + + Author: Qin Wu + "; + description + "This YANG module defines a YANG module for network + topology and inventory mapping. + + Copyright (c) 2026 IETF Trust and the persons identified + as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with + or without modification, is permitted pursuant to, and + subject to the license terms contained in, the Revised + BSD License set forth in Section 4.c of the IETF Trust's + Legal Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + 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 2026-02-28 { + description + "Initial revision."; + reference + "RFC XXXX: A Network Data Model for Inventory Topology + Mapping"; + } + + // Groupings + // Node Grouping with 1:1 mapping to NE + + grouping node-inventory-mapping-attributes { + description + "Attributes for mapping a topology node to a Network Element + (NE) in the physical inventory."; + container inventory-mapping-attributes { + description + "Container for inventory mapping attributes of a node."; + leaf ne-ref { + type nwi:ne-ref; + description + "Reference to the NE in the inventory that corresponds to + this topology node. + + This reference establishes a 1:1 mapping between the + logical node and its physical NE."; + } + } + } + + // TP Grouping with 1:1 mapping to physical port + + grouping tp-inventory-mapping-attributes { + description + "Attributes for mapping a topology termination point (TP) + to a physical port in the network inventory."; + container inventory-mapping-attributes { + description + "Container for inventory mapping attributes of a TP."; + uses nwi:port-ref { + refine "port-ref" { + description + "Reference to the physical port component in the + network inventory. This reference establishes a 1:1 + mapping between the logical TP and its physical port + component."; + } + } + // breakout channels (lightweight, per physical port) + container port-breakout { + presence "Indicates the port supports channel breakout."; + config false; + description + "Breakout capability of the physical port represented by + this TP. One TP maps to one physical port; channels are + listed here. This container is present only when the + underlying hardware supports partitioning the port into + multiple independent channels (e.g., 400G to 4x100G)."; + list breakout-channel { + key "channel-id"; + description + "List of breakout channels available on this port. + Each entry represents an independent lane or sub-port + that can be used for channelized interfaces."; + leaf channel-id { + type uint16; + description + "Unique identifier for the breakout channel within the + scope of the parent port."; + } + } // breakout-channel + } // port-breakout + } + } + + // Link Grouping with placeholder for future augumentation + + grouping link-inventory-mapping-attributes { + description + "Attributes for classifying link media type. + Detailed inventory reference is intentionally omitted from + this model; implementations should use the appropriate + specialized inventory modules based on the indicated + link-type."; + container inventory-mapping-attributes { + description + "Container for inventory-related attributes of a link. + + This container provides lightweight media classification. + The link-type indicates which specialized inventory model + contains detailed resource information: + + - Wired media (fiber, copper): passive network inventory + - Wireless media (microwave, Wi-Fi): wireless-specific + inventory + + Detailed inventory references may be added in future + modules."; + leaf link-type { + type string; + description + "Classification of the link media type at the topology + layer. Example values include 'copper', 'fiber', + 'microwave', or 'wifi'."; + } + } + } + + // Main blocks + + augment "/nw:networks/nw:network/nw:node" { + description + "Augments the network topology node with inventory mapping + attributes. This enables correlation between the logical node + and its physical network element."; + uses node-inventory-mapping-attributes; + } + + augment "/nw:networks/nw:network/nt:link" { + description + "Augments the network topology link with inventory-related + attributes."; + uses link-inventory-mapping-attributes; + } + + augment "/nw:networks/nw:network/nw:node/nt:termination-point" { + description + "Augments the TP with inventory mapping attributes for + physical port correlation and breakout capability reporting."; + uses tp-inventory-mapping-attributes; + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2025-07-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-01-27.yang similarity index 60% rename from experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2025-07-02.yang rename to experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-01-27.yang index 7fe08485a..9754c74ee 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2025-07-02.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-01-27.yang @@ -11,12 +11,12 @@ module ietf-network-inventory { import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } organization @@ -46,7 +46,7 @@ module ietf-network-inventory { The model fully conforms to the Network Management Datastore Architecture (NMDA). - Copyright (c) 2025 IETF Trust and the persons + 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 @@ -65,10 +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."; - // RFC Ed.: update the date below with the date of RFC publication - // and remove this note. - - revision 2025-07-02 { + revision 2026-01-27 { description "Initial version"; reference @@ -87,7 +84,7 @@ module ietf-network-inventory { identity ne-type { description - "Base identity for Network Element (NE) types."; + "Base identity for network element (NE) types."; } identity ne-physical { @@ -96,22 +93,6 @@ module ietf-network-inventory { "A physical network element (NE). "; } - /* - * Editors' Note: This identity may need to be moved to - * iana-hardware update - */ - - identity transceiver-module { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is some sort - of self-contained sub-system which contains one or more - transceivers (e.g., optical or electrical transceivers). - - A transceiver-module component can only be contained by a - port component."; - } - /* * Types */ @@ -155,43 +136,92 @@ module ietf-network-inventory { } } - grouping channel-ref { + grouping basic-common-entity-attributes { description - "This grouping is intended to be used by data models that need - to reference one or more breakout channels within a - transceivers module component."; - leaf ne-ref { - type nwi:ne-ref; + "The set of basic attributes which are common to all the + entities (e.g., component, network elements, location, passive + entities) defined in this module and in other inventory + modules."; + leaf uuid { + type yang:uuid; description - "The reference to the Network Element which contains the - transceiver module to be referenced."; + "The Universally Unique Identifier of the entity + (e.g., component)."; } - leaf transceiver-module-ref { - type leafref { - path "/nwi:network-inventory/nwi:network-elements/" - + "nwi:network-element[nwi:ne-id=current()/../ne-ref]" - + "/nwi:components/nwi:component/nwi:component-id"; - } - must "derived-from-or-self (/nwi:network-inventory/ - nwi:network-elements/nwi:network-element - [nwi:ne-id=../ne-ref]/nwi:components/nwi:component - [nwi:component-id=current()]/nwi:class, - 'nwi:transceiver-module')"; + leaf name { + type string; description - "The reference to the transceivers module component."; + "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 be modified 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 + state."; } - leaf-list channel-ref { - type leafref { - path "/nwi:network-inventory/nwi:network-elements" - + "/nwi:network-element[nwi:ne-id=current()/../ne-ref]/" - + "nwi:components/" - + "nwi:component[nwi:component-id=" - + "current()/../transceiver-module-ref]/" - + "nwi:breakout-channels/nwi:breakout-channel/" - + "nwi:channel-id"; + leaf alias { + type string; + description + "The alias name of the entity (e.g., component). This alias + name can be specified by a network operator."; + } + leaf description { + type string; + description + "The textual description of the entity (e.g., component)."; + } + } + + grouping ne-component-common-entity-attributes { + description + "The set of attributes which are common to all the entities + (e.g., component, network elements) defined in this module."; + uses basic-common-entity-attributes; + list software-rev { + key "name"; + description + "The list of the software modules configured to be active + within the entity (e.g., component)."; + leaf name { + type string; + description + "The vendor-specific name of the software module."; + } + leaf revision { + type string; + description + "The vendor-specific revision string of the software + module when not implicitly defined as part of the name of + the software module."; + } + list patch { + key "revision"; + description + "The list of software patches configured to be active for + the software module."; + leaf revision { + type string; + description + "The vendor-specific revision string of the software + patch when not implicitly defined as part of the name or + revision of the software module."; + } } + } + leaf mfg-name { + type string; + description + "The name of the manufacturer of this entity + (e.g., component)."; + } + leaf product-name { + type string; description - "The references to the breakout channels."; + "The vendor-specific and human-interpretable string + describing the entity (e.g., component) type. It is expected + that vendors assign unique product names to different entity + (e.g., component) types within the scope of the vendor."; } } @@ -213,25 +243,14 @@ module ietf-network-inventory { base ianahw:hardware-class; } type identityref { - base non-hardware-component-class; + base nwi:non-hardware-component-class; } } - config false; mandatory true; description "The type of the component."; } uses ne-component-common-entity-attributes { - refine "hardware-rev" { - description - "The vendor-specific hardware revision string for - the component. The preferred value is the hardware - revision identifier actually printed on the - component itself (if present)."; - reference - "RFC 6933: Entity MIB (Version 4) - - entPhysicalHardwareRev"; - } refine "software-rev" { reference "RFC 6933: Entity MIB (Version 4) - @@ -239,58 +258,65 @@ module ietf-network-inventory { } refine "mfg-name" { description - "The name of the manufacturer of this physical - component. + "The name of the manufacturer of this component. + The preferred value is the manufacturer name string actually printed on the component itself (if present). Note that comparisons between instances of the - 'model-name', 'firmware-rev', 'software-rev', and - 'serial-number' nodes are only meaningful amongst - components with the same value of 'mfg-name'. + 'part-number', 'software-rev', and 'serial-number' nodes + are only meaningful amongst components with the same value + of 'mfg-name'. If the manufacturer name string associated with - the physical component is unknown to the server, - then this node is not instantiated."; + the component is unknown to the server, then this node is + not instantiated."; reference "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgName"; } - refine "mfg-date" { - description - "The date of manufacturing of the managed - component."; - reference - "RFC 6933: Entity MIB (Version 4) - - entPhysicalMfgDate"; - } } - leaf firmware-rev { + leaf hardware-rev { type string; - config false; description - "The vendor-specific firmware revision string for the - component."; + "The vendor-specific hardware revision string for the + component. + + The preferred value is the hardware revision identifier + actually printed on the component itself (if present)."; reference - "RFC 6933: Entity MIB (Version 4) - - entPhysicalFirmwareRev"; + "RFC 6933: Entity MIB (Version 4) - entPhysicalHardwareRev"; + } + leaf mfg-date { + type yang:date-and-time; + description + "The date of manufacturing of the component."; + reference + "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate"; } leaf part-number { type string; - config false; description "The vendor-specific part number of the component type. It is expected that vendors assign unique part numbers to different component types within the scope of the vendor."; } + leaf serial-number { + type string; + description + "The vendor-specific serial number of the component instance. + + It is expected that vendors assign unique serial numbers to + different component instances within the scope of the + 'part-number'."; + } leaf asset-id { type string; - config false; description - "This node is a user-assigned asset tracking - identifier for the component. + "This node is an asset tracking identifier for the component, + as specified by a network operator. A server implementation MAY map this leaf to the entPhysicalAssetID MIB object. Such an @@ -306,7 +332,6 @@ module ietf-network-inventory { } leaf is-fru { type boolean; - config false; description "This node indicates whether or not this component is considered a 'field-replaceable unit' by the vendor. @@ -321,7 +346,6 @@ module ietf-network-inventory { } leaf-list uri { type inet:uri; - config false; description "This node contains identification information about the component."; @@ -330,108 +354,12 @@ module ietf-network-inventory { } } - grouping basic-common-entity-attributes { - description - "The set of basic attributes which are common to all the - entities (e.g., component, network elements, location, passive - entities) defined in this module and in other inventory - modules."; - leaf uuid { - type yang:uuid; - config false; - description - "The Universally Unique Identifier of the entity - (e.g., component)."; - } - leaf name { - type string; - description - "The name of the entity (e.g., component), as specified by - a network manager, that provides a non-volatile 'handle' - for the entity and that can be modified anytime during the - entity lifetime. - - If no configured value exists, the server MAY set the value - of this node to a locally unique value in the operational - state."; - } - leaf description { - type string; - description - "The textual description of the entity (e.g., component)."; - } - leaf alias { - type string; - description - "The alias name of the entity (e.g., component). This alias - name can be specified by network manager."; - } - } - - grouping ne-component-common-entity-attributes { - description - "The set of attributes which are common to all the entities - (e.g., component, network elements) defined in this module."; - uses basic-common-entity-attributes; - leaf hardware-rev { - type string; - config false; - description - "The vendor-specific hardware revision string for the entity - (e.g., component)."; - } - leaf software-rev { - type string; - config false; - description - "The vendor-specific software revision string for the entity - (e.g., component)."; - } - leaf-list software-patch-rev { - type string; - config false; - description - "The vendor-specific patch software revision string for the - entity (e.g., component)."; - } - leaf mfg-name { - type string; - config false; - description - "The name of the manufacturer of this entity - (e.g., component)."; - } - leaf mfg-date { - type yang:date-and-time; - config false; - description - "The date of manufacturing of the entity (e.g., component)."; - } - leaf serial-number { - type string; - config false; - description - "The vendor-specific serial number of the the entity - (e.g., component) instance. It is expected that vendors - assign unique serial numbers to different network element - instances within the scope of the product name."; - } - leaf product-name { - type string; - config false; - description - "The vendor-specific and human-interpretable string - describing the entity (e.g., component) type. It is expected - that vendors assign unique product names to different entity - (e.g., component) types within the scope of the vendor."; - } - } - /* * Data Nodes */ container network-inventory { + config false; description "Top-level container for network inventory."; container network-elements { @@ -453,11 +381,19 @@ module ietf-network-inventory { base nwi:ne-type; } default "nwi:ne-physical"; - config false; description - "The NE type."; + "The network element type."; + reference + "RFC XXXX: A YANG Data Model for Network Inventory, + Section 3."; } uses ne-component-common-entity-attributes; + leaf product-rev { + type string; + description + "The vendor-specific product revision string for the + network-element."; + } container components { description "The top-level container for the list of components @@ -467,55 +403,45 @@ module ietf-network-inventory { description "The list of components within a network element."; uses component-attributes; - container child-component-ref { - config false; - description - "A placeholder for adding the reference to child - component(s): to further discuss whether to define - a child leaf-list as RFC 8348 or a list of - sub-components as openconfig-platform."; - } - leaf parent-rel-pos { - type int32 { - range "0 .. 2147483647"; + leaf-list parent { + type leafref { + path "../../component/component-id"; + require-instance false; } - config false; description - "The relative position with respect to the parent - component among all the sibling components."; + "The identifiers of all the components that + physically contain this component. + + If this list is empty, this component is not + contained in any other component but it is contained + in the network-element."; reference "RFC 6933: Entity MIB (Version 4) - - entPhysicalParentRelPos"; + entPhysicalContainedIn"; } - leaf parent { - type leafref { - path "../../component/component-id"; - require-instance false; + leaf parent-rel-pos { + when 'count(../parent) < 2' { + description + "This data node is applicable only when this + component is contained in the network-element or + in only one parent component."; } - config false; + type string; description - "The identifier of the component that physically - contains this component. - - If this leaf is not instantiated, it indicates that - this component is not contained in any other - component. - - In the event that a physical component is contained - by more than one physical component - (e.g., double-wide modules), this node contains the - identifier of one of these components. - An implementation MUST use the same name every time - this node is instantiated."; + "The relative position with respect to the parent + component among all the sibling components. + + The format of this string is + implementation-specific. It MAY encode an integer + value representing the entPhysicalParentRelPos."; reference "RFC 6933: Entity MIB (Version 4) - - entPhysicalContainedIn"; + entPhysicalParentRelPos"; } leaf is-main { when "derived-from-or-self(../nwi:class, " + "'ianahw:chassis')"; type boolean; - config false; description "This node indicates whether the chassis is taking or not the 'main' role. @@ -525,30 +451,6 @@ module ietf-network-inventory { 'main' role (e.g., multi-chassis network elements), otherwise it is omitted."; } - container breakout-channels { - when "derived-from-or-self(../nwi:class, " - + "'nwi:transceiver-module')"; - presence - "When present, it indicates that port breakout is - supported."; - config false; - description - "Top level container for the list of breakout - channels supported by the transceivers module."; - list breakout-channel { - key "channel-id"; - description - "The list of breakout channels supported by the - transceivers module."; - leaf channel-id { - type uint8; - description - "An identifier that uniquely identifies the - breakout channel within the transceiver - module."; - } - } - } } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-ni-location@2024-08-19.yang b/experimental/ietf-extracted-YANG-modules/ietf-ni-location@2026-02-28.yang similarity index 51% rename from experimental/ietf-extracted-YANG-modules/ietf-ni-location@2024-08-19.yang rename to experimental/ietf-extracted-YANG-modules/ietf-ni-location@2026-02-28.yang index 3681953f6..93dd2572b 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-ni-location@2024-08-19.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-ni-location@2026-02-28.yang @@ -3,6 +3,11 @@ module ietf-ni-location { namespace "urn:ietf:params:xml:ns:yang:ietf-ni-location"; prefix nil; + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } import ietf-network-inventory { prefix nwi; reference @@ -34,7 +39,7 @@ module ietf-ni-location { "This YANG module defines a model for Network Inventory location. - Copyright (c) 2024 IETF Trust and the persons + 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 @@ -47,7 +52,7 @@ module ietf-ni-location { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2024-08-19 { + revision 2026-02-28 { description "Initial version"; reference @@ -57,49 +62,26 @@ module ietf-ni-location { } /* Identities */ - - identity inventory-location-type { - description - "Base identity for network inventory location types, e.g. site, - room, building, and floor."; - } - - identity site { - base inventory-location-type; - description - "Indicates site as location type."; - } - - identity room { - base inventory-location-type; - description - "Indicates equipment room as location type."; - } - - identity building { - base inventory-location-type; - description - "Indicates building as location type."; - } - /* Typedef */ typedef ni-location-ref { type leafref { - path "/nil:locations/nil:location/nil:id"; + path "/nwi:network-inventory/nil:locations/nil:location" + + "/nil:id"; } description "This type is used by data models that need to reference network inventory location."; } + /* Grouping */ - grouping physical-address-grouping { + grouping physical-address { description - "The grouping of the physical address."; + "Grouping for physical address information."; container physical-address { description - "Top level container for the physical address."; + "Top-level container for the physical address."; leaf address { type string; description @@ -133,86 +115,133 @@ module ietf-ni-location { } } - grouping locations-grouping { + grouping locations { description - "The grouping of the locations."; - list location { - key "id"; + "Grouping for locations."; + container locations { + config false; description - "The list of locations within the network."; - leaf id { - type string; + "Container for the location information."; + list location { + key "id"; description - "An identifier of the location."; - } - uses nwi:common-entity-attributes; - leaf type { - type identityref { - base inventory-location-type; + "List of locations within the network."; + leaf id { + type string; + description + "An identifier of the location."; } - description - "The type of network inventory location, e.g. - equipment room, building, or site."; - } - leaf parent { - type leafref { - path "../../location/id"; + uses nwi:basic-common-entity-attributes; + leaf type { + type string; + description + "The type of network inventory location, e.g. + equipment room, building, or site. + This allows operators to flexibly define custom location + types (e.g., 'pole', 'roof', 'floor') based on their + specific network scenarios without requiring model + extensions. String-based types enable dynamic adaptation + to heterogeneous organizational naming conventions."; } - description - "The name of the location that physically contains this - location."; - } - leaf-list child { - type leafref { - path "../../location/id"; + leaf parent { + type leafref { + path "../../location/id"; + } + description + "The identifier of the location that physically contains + this location."; + } + leaf timestamp { + type yang:date-and-time; + description + "Timestamp when the location was recorded."; + } + leaf valid-until { + type yang:date-and-time; + description + "The timestamp for which this location is valid until. + If unspecified, the location has no specific + expiration time."; + } + uses physical-address; + uses geo:geo-location; + list contained-chassis { + key "chassis-id"; + description + "Chassis directly deployed in this location without rack. + Also used for distributed chassis components that are + logically part of a network element but physically + located."; + leaf chassis-id { + type uint32; + description + "Unique identifier for this chassis instance in the + location."; + } + leaf ne-ref { + type leafref { + path "/nwi:network-inventory/nwi:network-elements" + + "/nwi:network-element/nwi:ne-id"; + } + description + "Reference to the network element this chassis + belongs to. Multiple chassis entries may reference + the same ne-ref for distributed systems."; + } + leaf component-ref { + type leafref { + path + "/nwi:network-inventory/nwi:network-elements" + + "/nwi:network-element[nwi:ne-id=current()/../ne-ref]" + + "/nwi:components/nwi:component/nwi:component-id"; + } + description + "Reference to the specific chassis within the + network element."; + } } - description - "The name of the contained child locations."; } - uses physical-address-grouping; - uses geo:geo-location; + uses racks; } } - grouping rack-grouping { + grouping racks { description - "The attributes of the rack."; + "Grouping for rack attributes."; container racks { description - "Top level container for the list of racks."; + "Top-level container for the list of racks."; list rack { key "id"; description - "The list of racks within a location, - e.g. equipment room."; + "List of racks within the inventory (e.g., in an + equipment room)."; leaf id { type string; description - "An identifier that uniquely identifies the rack - within a location, e.g. equipment room."; + "An identifier that uniquely identifies the rack."; } - uses nwi:common-entity-attributes; + uses nwi:basic-common-entity-attributes; container rack-location { description - "The location information of the rack, which - comprises the name of the location, row number, and - column number."; + "The location information of the rack, which comprises + the location reference, row number, and column number."; leaf location-ref { type ni-location-ref; description - "Name of location where this rack is located."; + "Reference to the location where this rack is placed."; } leaf row-number { type uint32; description - "Identifies the row within the equipment room where + "Identifies the row within the location where the rack is located."; } leaf column-number { type uint32; description - "Identifies the physical location of the rack within - the column."; + "Identifies the column within the location where + the rack is located."; } } leaf height { @@ -237,13 +266,13 @@ module ietf-ni-location { type uint16; units "volt"; description - "The maximum voltage could be supported by the rack."; + "The maximum voltage supported by the rack."; } leaf max-allocated-power { type uint16; units "watts"; description - "The maximum allocated power to the rack."; + "The maximum allocated power for the rack."; } list contained-chassis { key "relative-position"; @@ -252,8 +281,8 @@ module ietf-ni-location { leaf relative-position { type uint8; description - "A relative position of chassis within - the rack"; + "Relative position (e.g., U-slot) of chassis within + the rack."; } leaf ne-ref { type leafref { @@ -261,7 +290,7 @@ module ietf-ni-location { + "/nwi:network-element/nwi:ne-id"; } description - "The reference to the network element containing + "Reference to the network element containing the chassis component."; } leaf component-ref { @@ -276,43 +305,26 @@ module ietf-ni-location { the network element and contained by the rack."; } } - } - } - } - - grouping locations-ref-grouping { - description - "The attributes of the locations."; - container locations { - description - "The container for the location."; - leaf-list location { - type ni-location-ref; - description - "The reference of the location."; - } - leaf rack { - type leafref { - path "/nil:locations/nil:racks" - + "/nil:rack/nil:id"; + leaf timestamp { + type yang:date-and-time; + description + "Timestamp when the rack information was recorded."; + } + leaf valid-until { + type yang:date-and-time; + description + "The timestamp for which this rack is valid until. + If unspecified, the rack has no specific + expiration time."; } - description - "The reference to the rack."; } } } - container locations { + augment "/nwi:network-inventory" { description - "The top-level container for the NE location information."; - uses locations-grouping; - uses rack-grouping; - } - - augment - "/nwi:network-inventory/nwi:network-elements/nwi:network-element" { - description - "Provides location information for network inventory."; - uses locations-ref-grouping; + "Provides location information for network inventory."; + uses locations; } } + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-nrp@2025-03-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-nrp@2026-01-22.yang similarity index 78% rename from experimental/ietf-extracted-YANG-modules/ietf-nrp@2025-03-02.yang rename to experimental/ietf-extracted-YANG-modules/ietf-nrp@2026-01-22.yang index af12a0fca..f8c0e2e27 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-nrp@2025-03-02.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-nrp@2026-01-22.yang @@ -34,7 +34,7 @@ module ietf-nrp { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } import ietf-access-control-list { prefix acl; @@ -51,9 +51,10 @@ module ietf-nrp { import ietf-topology-filter { prefix topo-filt; reference - "draft-bestbar-teas-yang-topology-filter: YANG Data Model + "draft-ietf-teas-yang-topology-filter: YANG Data Model for Topology Filter"; } + organization "IETF Traffic Engineering Architecture and Signaling (TEAS) Working Group"; @@ -78,7 +79,7 @@ module ietf-nrp { "This YANG module defines a data model for Network Resource Partitions (NRPs) management. - 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 @@ -92,7 +93,7 @@ module ietf-nrp { (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself for full legal notices."; - revision 2025-03-02 { + revision 2026-01-22 { description "Initial revision."; reference @@ -103,7 +104,6 @@ module ietf-nrp { /* * I D E N T I T I E S */ - identity nrp-partition-mode { description "Base identity for NRP partition type."; @@ -132,7 +132,7 @@ module ietf-nrp { "Base identity for NRP interface partition type."; } - identity virtual-sub-interface-partition { + identity virtual-interface { base nrp-link-partition-type; description "Identity for NRP virtual interface or sub-interface partition, @@ -165,7 +165,7 @@ module ietf-nrp { description "This type is used to reference a Topology Filter."; reference - "draft-bestbar-teas-yang-topology-filter: YANG Data Model + "draft-ietf-teas-yang-topology-filter: YANG Data Model for Topology Filter"; } @@ -243,7 +243,7 @@ module ietf-nrp { Extension Header"; } } - case srv6-sid-derived { + case srv6-derived { leaf-list srv6-sid { type srv6-types:srv6-sid; description @@ -267,8 +267,64 @@ module ietf-nrp { } container mpls { description - "Container for MPLS NRP selector ID. This is a placeholder - for future updates based on the MPLS solutions."; + "Container for MPLS NRP selector ID. Supports both + In-Stack (MNA) and Post-Stack (PSD) encoding mechanisms."; + choice mpls-encapsulation { + description + "Selects the MPLS NRP Selector encoding mechanism."; + case mna-in-stack { + description + "In-Stack NRP Selector action. + Refers to draft-ietf-mpls-mna-nrp-selector."; + leaf in-stack-identifier { + type uint32; + must + "(../identifier-format='nrps13' and . <= 8191) or + (../identifier-format='nrps20' and . <= 1048575) or + (../identifier-format='enrps20' and . <= 1048575)" { + error-message + "NRP Selector value exceeds format range"; + } + description + "The NRP Selector value. The valid range depends on the + encoding format (13-bit or 20-bit) selected."; + } + leaf identifier-format { + type enumeration { + enum nrps13 { + description + "13-bit NRP Selector (NRPS13). + Value range: 0-8191."; + } + enum nrps20 { + description + "20-bit NRP Selector (NRPS20). + Value range: 0-1048575."; + } + enum enrps20 { + description + "20-bit Extended NRP Selector (ENRPS20) compatible + with Entropy Label. Value range: 0-1048575."; + } + } + description + "Specifies the encoding format for the In-Stack + NRP Selector."; + } + } + case post-stack { + description + "Post-Stack NRP Selector (PS-NRP). + Refers to draft-ietf-mpls-mna-psd-nrp-selector."; + leaf post-stack-identifier { + type uint32 { + range "0..4294967295"; // 2^32 - 1 + } + description + "The 32-bit Post-Stack NRP Selector."; + } + } + } } leaf-list acl-ref { type acl-ref; @@ -316,8 +372,8 @@ module ietf-nrp { "Grouping for NRP QoS Per-Hop Behavior (PHB) profile."; leaf phb-profile { type leafref { - path "/nw:networks/nrp-policies/" - + "qos-profiles/phb-profile-identifier/id"; + path "/nw:networks/nrp:nrp-policies/" + + "nrp:qos-profiles/nrp:phb-profile-identifier/nrp:id"; } description "PHB profile identifier, specifying the forwarding treatment @@ -421,24 +477,24 @@ module ietf-nrp { description "The NRP topology group identifier."; } - container base-topology-ref { - description - "Container for the base topology reference."; - uses nw:network-ref; - } + /*The base topology reference. All links in + the list below must belong to this specific + network.*/ + uses nw:network-ref; list link { key "link-ref"; description - "A list of links with common attributes"; + "A list of links with common attributes that are + part of the referenced network"; leaf link-ref { type leafref { - path - "/nw:networks/nw:network[nw:network-id=current()" - + "/../../base-topology-ref/network-ref]" - + "/nt:link/nt:link-id"; + path "/nw:networks/nw:network" + + "[nw:network-id=current()/../../nrp:network-ref]" + + "/nt:link/nt:link-id"; } description - "A reference to a link in the base topology."; + "A reference to a link in the base topology specified + by the 'network-ref' sibling node."; } } uses resource-reservation; @@ -526,7 +582,12 @@ module ietf-nrp { leaf srv6 { type srv6-types:srv6-sid; description - "Indicates the SRv6 SID value as the NRP selector ID."; + "SRv6 SID value."; + } + leaf mpls-nrp-selector { + type uint32; + description + "MPLS NRP selector value."; } } } @@ -550,7 +611,7 @@ module ietf-nrp { * Grouping - NRP node attributes */ - grouping nrp-node-attributes { + grouping node-nrp-attributes { description "NRP node scope attributes."; container nrp-node-attributes { @@ -565,7 +626,7 @@ module ietf-nrp { * Grouping - NRP Link Attributes */ - grouping nrp-link-attributes { + grouping link-nrp-attributes { description "NRP link scope attributes."; container nrp-link-attributes { @@ -617,15 +678,15 @@ module ietf-nrp { * Grouping - NRPs Node Attributes */ - grouping nrps-node-attributes { + grouping node-nrp-list-attributes { description "Grouping for NRPs nodes attributes."; - container nrps-node-attributes { + container node-nrp-list { + config false; description "Containing NRPs attributes."; list nrp { key "nrp-id"; - config false; description "List of NRPs."; leaf nrp-id { @@ -633,7 +694,7 @@ module ietf-nrp { description "NRP identifier"; } - uses nrp-node-attributes; + uses node-nrp-attributes; } } } @@ -642,16 +703,15 @@ module ietf-nrp { * Grouping - NRPs Link Attributes */ - grouping nrps-link-attributes { + grouping link-nrp-list-attributes { description "Grouping for NRPs link attributes."; - container nrps-link-attributes { + container link-nrp-list { config false; description "Contains NRPs link attributes."; list nrp { key "nrp-id"; - config false; description "List of NRPs."; leaf nrp-id { @@ -659,7 +719,7 @@ module ietf-nrp { description "NRP identifier"; } - uses nrp-link-attributes; + uses link-nrp-attributes; } } } @@ -701,46 +761,53 @@ module ietf-nrp { */ augment "/nw:networks/nw:network/nw:node" { - when '../nw:network-types/nrp:nrp' { - description - "Augments only for NRP network topology."; - } description "Augments node with NRP state attributes."; - uses nrp-node-attributes; - } - - /* - * Augment - NRP link operational status. - */ - - augment "/nw:networks/nw:network/nt:link" { - when '../nw:network-types/nrp:nrp' { + choice nrp-attachment-type { description - "Augments only for NRP network topology."; + "Determines how NRP information is attached to node: + single-nrp for NRP-specific topology, multi-nrp for + native topology with multiple NRPs."; + case single-nrp { + when '../nw:network-types/nrp:nrp' { + description + "Condition: only applies to NRP network topologies."; + } + uses node-nrp-attributes; + } + case multi-nrp { + description + "Native topology with NRPs node operational status."; + uses node-nrp-list-attributes; + } } - description - "Augments link with NRP state attributes."; - uses nrp-link-attributes; - } - - /* - * Augment - Native topology with NRPs node operational status. - */ - - augment "/nw:networks/nw:network/nw:node" { - description - "Augments node with NRP list state attributes."; - uses nrps-node-attributes; } /* - * Augment - Native topology with NRPs link operational status. + * Augment - NRP link operational status. */ augment "/nw:networks/nw:network/nt:link" { description - "Augments link with NRP list state attributes."; - uses nrps-link-attributes; + "Augments link with NRP state attributes."; + choice nrp-attachment-type { + description + "Determines how NRP information is attached to link: + single-nrp for NRP-specific topology, multi-nrp for + native topology with multiple NRPs."; + case single-nrp { + when '../nw:network-types/nrp:nrp' { + description + "Condition: only applies to NRP network topology."; + } + uses link-nrp-attributes; + } + case multi-nrp { + /*Native topology with NRPs link operational status.*/ + description + "Native topology with NRPs link operational status."; + uses link-nrp-list-attributes; + } + } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-nvo3-base@2021-03-08.yang b/experimental/ietf-extracted-YANG-modules/ietf-nvo3-base@2025-10-16.yang similarity index 85% rename from experimental/ietf-extracted-YANG-modules/ietf-nvo3-base@2021-03-08.yang rename to experimental/ietf-extracted-YANG-modules/ietf-nvo3-base@2025-10-16.yang index e90750732..df7a9db18 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-nvo3-base@2021-03-08.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-nvo3-base@2025-10-16.yang @@ -27,49 +27,60 @@ module ietf-nvo3-base { prefix ianaift; } - organization "ietf"; - contact "ietf"; - description "Yang model for NVO3."; - revision 2021-03-08 { - description - "Fix the keyword 'must' order issue in the leaf source-nve"; - reference - ""; - } - revision 2020-08-26 { - description - "Clean non ietf-bgp-l3vpn & ietf-l2vpn related errors."; - reference - ""; - } - revision 2020-07-22 { - description - "Solve syntax and norms issues."; - reference - ""; - } + organization + "IETF NVO3(Network Virtualization Overlays) Working Group"; + contact + "WG Web: <https://datatracker.ietf.org/wg/nvo3> + WG List: <mailto:nvo3@ietf.org> - revision 2020-03-09 { - description - "Revise some design in the statitics."; - reference - ""; - } + WG Chair: Matthew Bocci + <mailto:matthew.bocci@nokia.com> - revision 2019-11-04 { - description - "Cleaning non ietf-bgp-l3vpn related errors."; - reference - ""; - } + WG Chair: Sam Aldrin + <mailto:aldrin.ietf@gmail.com> - revision 2019-04-01 { - description - "Init revision."; - reference - ""; - } + Editor: Ran Chen + <mailto:chen.ran@zte.com.cn> + Editor: Kunding Zhao + <mailto:zhaokun.ding@huawei.com> + Editor: Fengwei Qin + <mailto:qinfengwei@chinamobile.com> + Editor: Reshad Rahman + <mailto:reshad@yahoo.com> + Editor: Bing Liu + <mailto:remy.liubing@huawei.com> + "; + description + "This model is focused on the common configuration + requirement of various encapsulation options, + such as VXLAN, NVGRE, GENEVE and VXLAN-GPE. + + Copyright (c) 2025 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 9719 + (https://www.rfc-editor.org/info/rfc9719); see the RFC + itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', + 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', + 'NOT RECOMMENDED','MAY', 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."; + revision 2025-10-16 { + description + "initial version."; + reference + "RFC XXXX: Base YANG Data Model for NVO3 Protocols"; + } typedef vni-status-type { type enumeration { enum "up" { @@ -90,7 +101,7 @@ module ietf-nvo3-base { enum "up" { description "The tunnel is up."; - } +} enum "down" { description "The tunnel is down."; @@ -140,7 +151,8 @@ module ietf-nvo3-base { type enumeration { enum "hub-mode" { description - "Hub mode. The vni instance can't communicate with other hub mode vni instances."; + "Hub mode. The vni instance can't communicate + with other hub mode vni instances."; } enum "spoke-mode" { description @@ -302,7 +314,8 @@ module ietf-nvo3-base { } leaf source-nve { type if:interface-ref; - must "(/if:interfaces/if:interface[if:name=current()]/if:type='Nve')"; + must "(/if:interfaces/if:interface + [if:name=current()]/if:type='Nve')"; mandatory true; description "The name of the local NVE."; @@ -336,13 +349,15 @@ module ietf-nvo3-base { range "1..16777215"; } description - "The ID of VNI for outbound. Do not support separate deletion."; + "The ID of VNI for outbound. + Do not support separate deletion."; } } } container static-ipv6-peers { description - "List of remote NVE IPv6 address created by users in a VNI."; + "List of remote NVE IPv6 address created by users + in a VNI."; list static-ipv6-peer { key "peer-ip"; description @@ -357,7 +372,8 @@ module ietf-nvo3-base { range "1..16777215"; } description - "The ID of VNI for outbound. Do not support separate deletion."; + "The ID of VNI for outbound. Do not support separate + deletion."; } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-oam-test-sequence@2024-07-05.yang b/experimental/ietf-extracted-YANG-modules/ietf-oam-test-sequence@2024-07-05.yang deleted file mode 100644 index a703864d2..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-oam-test-sequence@2024-07-05.yang +++ /dev/null @@ -1,130 +0,0 @@ -module ietf-oam-test-sequence { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-oam-test-sequence"; - prefix "oamts"; - - import ietf-oam-unitary-test { - prefix "oamut"; - // Update the reference with the correct RFC number or other - // reference when assigned - // reference "RFCXXXX"; - } - - // reference ietf-netmod-schedule-yang - import ietf-schedule { prefix "schedule"; } - - organization - "IETF OPSAWG (Operations and Management Area Working Group)"; - - contact - "WG Web: - WG List: - Author: Luis Miguel Contreras Murillo - - Author: Victor Lopez - "; - description - "This module defines the 'oam-unitary-test' YANG model for - activation of network diagnosis procedures. - - 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). - - This version of this YANG module is part of RFC XXXX - (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself - for full legal notices."; - - // RFC Ed.: update the date below with the date of RFC - // publication and remove this note. - // RFC Ed.: replace XXXX with actual RFC number and remove - // this note. - - revision "2024-07-05" { - description "Initial version"; - reference "RFCXXXX"; - // Update with the correct RFC number when assigned - } - - // Data model definition - - container oam-test-sequence { - description - "Container for executing a sequence of ietf-oam-unitary-tests - N times."; - - list test-sequence { - key "name"; - description "List of test sequences."; - - leaf name { - type string; - description "Unique name for the test sequence."; - } - list test-ref { - key "name"; - description "References to the ietf-oam-unitary-tests."; - - uses "oamut:oam-unitary-test"; - - leaf numexecutions { - type uint32; - default 1; - description - "Number of times the test sequence should be - executed."; - } - } - - uses schedule:period-of-time; - - uses schedule:recurrence-utc; - - leaf test-sequence-status { - type enumeration { - enum "planned" { - description - "The test sequence is planned."; - } - enum "configured" { - description - "The test sequence is configured."; - } - enum "ready" { - description - "The test sequence is ready."; - } - enum "ongoing" { - description - "The test sequence status is ongoing."; - } - enum "stop" { - description - "The test sequenceis stopped."; - } - enum "success" { - description - "All tests in the sequence were successful."; - } - enum "failure" { - description - "One or more tests in the sequence got an error."; - } - enum "error" { - description - "The test sequence status has an error."; - } - } - - description - "Status of the test sequence execution."; - } - } - } -} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-oam-test-sequence@2026-01-13.yang b/experimental/ietf-extracted-YANG-modules/ietf-oam-test-sequence@2026-01-13.yang new file mode 100644 index 000000000..c0a22ca05 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-oam-test-sequence@2026-01-13.yang @@ -0,0 +1,169 @@ +module ietf-oam-test-sequence { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-oam-test-sequence"; + prefix "oamts"; + + import ietf-oam-unitary-test { + prefix "oamut"; + // Update the reference with the correct RFC number or other + // reference when assigned + // reference "RFCXXXX"; + } + + // reference ietf-netmod-schedule-yang + import ietf-schedule { prefix "schedule"; } + + organization + "IETF OPSAWG (Operations and Management Area Working Group)"; + + contact + "WG Web: + WG List: + Author: Luis Miguel Contreras Murillo + + Author: Victor Lopez + + Author: Qin Wu + "; + description + "This module defines the 'oam-test-sequence-test' YANG model for + management of network diagnosis procedures. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + // RFC Ed.: update the date below with the date of RFC + // publication and remove this note. + // RFC Ed.: replace XXXX with actual RFC number and remove + // this note. + + revision "2026-01-13" { + description "Initial version"; + reference "RFCXXXX"; + // Update with the correct RFC number when assigned + } + + /* Identities */ + identity test-sequence-status { + description + "Base identity for test-sequence-status."; + } + identity planned { + base test-sequence-status; + description + "Identity for planned."; + } + identity configured { + base test-sequence-status; + description + "Identity for configured."; + } + identity ready { + base test-sequence-status; + description + "Identity for ready."; + } + identity on-going { + base test-sequence-status; + description + "Identity for on-going."; + } + identity stop { + base test-sequence-status; + description + "Identity for stop."; + } + identity success { + base test-sequence-status; + description + "Identity for success."; + } + identity failure { + base test-sequence-status; + description + "Identity for failure"; + } + identity error { + base test-sequence-status; + description + "Identity for error."; + } + identity resource-contention { + base error; + description + "Identity for resource-contention error cause."; + } + identity priority { + base error; + description + "Identity for priority error cause."; + } + /* Data model definition */ + + container oam-test-sequence { + description + "Container for executing a sequence of ietf-oam-unitary-tests + N times."; + + list test-sequence { + key "name"; + description "List of test sequences."; + + leaf name { + type string; + description "Unique name for the test sequence."; + } + + list test-ref { + key "name"; + ordered-by user; + description "References to the ietf-oam-unitary-tests."; + + uses "oamut:oam-unitary-test"; + + leaf numexecutions { + type uint32; + default 1; + description + "Number of times the test sequence should be + executed."; + } + } + uses schedule:schedule-status; + leaf test-sequence-status { + type identityref { + base test-sequence-status; + } + config false; + description + "Status of the test sequence execution."; + } + choice schedule-class { + description + "Choice based on the type of the time range."; + container period { + description + "The OAM Test takes effect based on a precise period of + time."; + uses schedule:period-of-time; + } + container recurrence { + description + "The OAM test takes effect based on a recurrence rule."; + uses schedule:recurrence-basic; + } + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-oam-unitary-test@2024-07-05.yang b/experimental/ietf-extracted-YANG-modules/ietf-oam-unitary-test@2024-07-05.yang deleted file mode 100644 index 07ecd9a0a..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-oam-unitary-test@2024-07-05.yang +++ /dev/null @@ -1,124 +0,0 @@ -module ietf-oam-unitary-test { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-oam-unitary-test"; - prefix "oamut"; - - // Import OAM models from RFCs RFC8531, RFC8532 and RFC8533 - - // reference ietf-netmod-schedule-yang - import ietf-schedule { prefix "schedule"; } - - organization - "IETF OPSAWG (Operations and Management Area Working Group)"; - - contact - "WG Web: - WG List: - Author: Luis Miguel Contreras Murillo - - Author: Victor Lopez - "; - description - "This module defines the 'ietf-oam-unitary-test' YANG model for - activation of network diagnosis procedures. - - 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). - - This version of this YANG module is part of RFC XXXX - (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself - for full legal notices."; - - // RFC Ed.: update the date below with the date of RFC - // publication and remove this note. - // RFC Ed.: replace XXXX with actual RFC number and remove - // this note. - - revision "2024-07-05" { - description - "Initial version"; - reference - "RFCXXXX: A YANG Data Model for Network Diagnosis by Scheduling - Sequences of OAM Tests"; - // Update with the correct RFC number when assigned - } - - grouping oam-unitary-test { - description - "This grouping is defined for OAM unitary test for network - diagnosis procedures."; - leaf name { - type string; - description - "Name for the test."; - } - - choice test-type { - mandatory true; - description - "Choose the type of test."; - // Import OAM models from RFCs RFC8531, RFC8532 and RFC8533 - } - } - - container oam-unitary-tests { - description - "Container for OAM unitary tests activation for network - diagnosis procedures."; - - list oam-unitary-test { - key name; - description - "List of OAM unitary tests activation for network diagnosis - procedures."; - - uses oam-unitary-test; - - uses schedule:period-of-time; - - uses schedule:recurrence; - - leaf unitary-test-status { - type enumeration { - enum "planned" { - description - "The test is planned."; - } - enum "configure" { - description - "The test is configured."; - } - enum "ready" { - description - "The test status is ready."; - } - enum "ongoing" { - description - "The test is ongoing."; - } - enum "stop" { - description - "The test is stopped."; - } - enum "finish" { - description - "The test is finished."; - } - enum "error" { - description - "The test has an error."; - } - } - description - "Status of the test."; - } - } - } -} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-oam-unitary-test@2026-01-13.yang b/experimental/ietf-extracted-YANG-modules/ietf-oam-unitary-test@2026-01-13.yang new file mode 100644 index 000000000..f63917581 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-oam-unitary-test@2026-01-13.yang @@ -0,0 +1,233 @@ +module ietf-oam-unitary-test { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-oam-unitary-test"; + prefix "oamut"; + + // reference ietf-netmod-schedule-yang + import ietf-schedule { + prefix schedule; + reference + "RFC XXXX: A Common YANG Data Model for Scheduling"; + } + + import ietf-routing-types { + prefix rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + + import ietf-yang-schema-mount { + prefix yangmnt; + reference + "RFC 8528: YANG Schema Mount"; + } + + organization + "IETF OPSAWG (Operations and Management Area Working Group)"; + + contact + "WG Web: + WG List: + Author: Luis Miguel Contreras Murillo + + Author: Victor Lopez + + Author: Qin Wu + "; + description + "This module defines the 'ietf-oam-unitary-test' YANG model for + activation of network diagnosis procedures. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + // RFC Ed.: update the date below with the date of RFC + // publication and remove this note. + // RFC Ed.: replace XXXX with actual RFC number and remove + // this note. + + revision "2026-01-13" { + description + "Initial version"; + reference + "RFCXXXX: A YANG Data Model for Network Diagnosis by Scheduling + Sequences of OAM Tests"; + // Update with the correct RFC number when assigned + } + + /* Identities */ + identity unitary-test-status { + description + "Base identity for unitary-test-status."; + } + identity planned { + base unitary-test-status; + description + "Identity for planned."; + } + identity configured { + base unitary-test-status; + description + "Identity for configured."; + } + identity ready { + base unitary-test-status; + description + "Identity for ready."; + } + identity on-going { + base unitary-test-status; + description + "Identity for on-going."; + } + identity stop { + base unitary-test-status; + description + "Identity for stop."; + } + identity success { + base unitary-test-status; + description + "Identity for success."; + } + + identity error { + base unitary-test-status; + description + "Identity for error."; + } + + identity resource-contention { + base error; + description + "Identity for resource contention."; + } + + identity priority { + base error; + description + "Identity for priority."; + } + + identity basic-test-type { + description + "Base identity of basic test type."; + } + + identity twamp { + base basic-test-type; + description + "Identity for twamp protocol."; + } + + grouping oam-unitary-test { + description + "Specifies a grouping for OAM unitary test for network + diagnosis procedures."; + + leaf name { + type string; + description + "Defines the name of the test."; + } + list ne-config { + key ne-id; + description "List of node configurations required to enable the + unitary tests."; + + leaf ne-id { + type rt-types:router-id; + description + "A 32-bit number in the dotted-quad format that is used + to uniquely identify a node within an autonomous system + the ne-id. This identifier is used for both IPv4 and IPv6."; + } + + leaf managed { + type boolean; + default "true"; + description + "True if the host can access oam unitary test + using the root mount point. This value + may not be modifiable in all implementations."; + } + leaf test-type { + type identityref { + base basic-test-type; + } + description + "Choose the type of test."; + } + container root { + description + "Container for mount point."; + yangmnt:mount-point "root" { + description + "Root for models supported per oam unitary test. + This mount point may or may not be inline based on + the server implementation. + + When the associated 'managed' leaf is 'false', any + operation that attempts to access information below + the root SHALL fail with an error-tag of + 'access-denied' and an error-app-tag of + 'oamut-not-managed'."; + } + } + } + } + + container oam-unitary-tests { + description + "Container for OAM unitary tests activation for network + diagnosis procedures."; + list oam-unitary-test { + key name; + description + "List of OAM unitary tests activation for network diagnosis + procedures."; + uses oam-unitary-test; + uses schedule:schedule-status; + leaf unitary-test-status { + type identityref { + base unitary-test-status; + } + config false; + description + "Status of the test."; + } + choice schedule-class { + description + "Choice based on the type of the time range."; + container period { + description + "The OAM Test takes effect based on a precise period of + time."; + uses schedule:period-of-time; + } + container recurrence { + description + "The OAM test takes effect based on a recurrence rule."; + uses schedule:recurrence-basic; + } + } + } +} +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-on-path-telemetry@2025-06-30.yang b/experimental/ietf-extracted-YANG-modules/ietf-on-path-telemetry@2026-01-02.yang similarity index 99% rename from experimental/ietf-extracted-YANG-modules/ietf-on-path-telemetry@2025-06-30.yang rename to experimental/ietf-extracted-YANG-modules/ietf-on-path-telemetry@2026-01-02.yang index a48556bb8..a520acc8e 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-on-path-telemetry@2025-06-30.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-on-path-telemetry@2026-01-02.yang @@ -57,7 +57,7 @@ module ietf-on-path-telemetry { (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself for full legal notices."; - revision 2025-06-30 { + revision 2026-01-02 { description "First revision."; reference "RFC XXXX: A YANG Data Model for On-path Telemetry"; } @@ -171,8 +171,8 @@ module ietf-on-path-telemetry { description "The On-Path Telemetry method is applied to MPLS."; reference - "[I-D.ietf-mpls-inband-pm-encapsulation]: Application of the - Alternate Marking Method to the MPLS Label Stack"; + "RFC 9714: Application of the Alternate Marking Method + to the MPLS Label Stack"; } identity nsh { diff --git a/experimental/ietf-extracted-YANG-modules/ietf-optical-impairment-topology@2025-06-24.yang b/experimental/ietf-extracted-YANG-modules/ietf-optical-impairment-topology@2026-02-26.yang similarity index 74% rename from experimental/ietf-extracted-YANG-modules/ietf-optical-impairment-topology@2025-06-24.yang rename to experimental/ietf-extracted-YANG-modules/ietf-optical-impairment-topology@2026-02-26.yang index 71d430308..f9eaf2a6d 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-optical-impairment-topology@2025-06-24.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-optical-impairment-topology@2026-02-26.yang @@ -18,13 +18,13 @@ module ietf-optical-impairment-topology { prefix tet; reference "RFC 8795: YANG Data Model for Traffic Engineering (TE) - Topologies"; + Topologies"; } import ietf-te-types { prefix te-types; reference "RFC YYYY: Updated Common YANG Data Types for Traffic - Engineering"; + Engineering"; } /* Note: The RFC Editor will replace YYYY with the number assigned @@ -45,25 +45,20 @@ module ietf-optical-impairment-topology { "WG Web: WG List: - Editor: Young Lee - Editor: Haomian Zheng - Editor: Nicola Sambo - Editor: Victor Lopez Editor: Gabriele Galimberti - Editor: Giovanni Martinelli - Editor: Jean-Luc Auge Editor: Le Rouzic Esther Editor: Julien Meuric Editor: Italo Busi Editor: Dieter Beller Editor: Sergio Belotti Editor: Griseri Enrico + Editor: Roberto Manzotti Editor: Gert Grammel "; description "This module contains a collection of YANG definitions for impairment-aware optical networks. - 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 @@ -73,26 +68,30 @@ module ietf-optical-impairment-topology { 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. + All revisions of IETF and IANA published modules can be found + at the YANG Parameters registry group + (https://www.iana.org/assignments/yang-parameters). 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."; + they appear in all capitals, as shown here. + + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; // RFC Ed.: replace XXXX with actual RFC number and remove // this note // replace the revision date with the module publication date // the format is (year-month-day) - revision 2025-06-24 { + revision 2026-02-26 { description "Initial version."; reference - "RFC XXXX: A Yang Data Model for Impairment-aware - Optical Networks"; + "RFC XXXX: A YANG Data Model for Impairment-aware + Optical Networks"; } /* @@ -105,7 +104,7 @@ module ietf-optical-impairment-topology { "Individual OTSi(G) protection LSP protection type."; reference "ITU-T G.873.1 v5.2 (02/2022): Optical transport network: - Linear protection"; + Linear protection, Appendix III"; } /* @@ -114,20 +113,25 @@ module ietf-optical-impairment-topology { grouping amplifier-params { description - "Describes parameters for an amplifier"; + "Describes parameters for an amplifier."; + reference + "RFC XXXX: A YANG Data Model for Impairment-aware + Optical Networks, Section 2.4"; container amplifier { description - "Amplifier type, operational parameters are described."; + "The attributes of an amplifier."; leaf type-variety { type string; mandatory true; description - "String identifier of amplifier type referencing - a specification in a separate equipment catalog"; + "The type of the amplifier. + + It is usually a vendor-specific string referencing + specification in a separate equipment catalog."; } container operational { description - "Amplifier operational parameters"; + "Amplifier operational parameters."; list amplifier-element { key "frequency-range-id stage-order"; description @@ -153,18 +157,22 @@ module ietf-optical-impairment-topology { leaf type-variety { type string; description - "String identifier of amplifier element type - referencing a specification in a separate equipment - catalog. + "The type of the amplifier element. + + It is usually a vendor-specific string referencing + specification in a separate equipment catalog. - This attributes applies only when the type-variety of + This attribute applies only when the type-variety of the amplifier is not sufficient to describe the amplifier element type."; } container power-param { description - "The optical power after the out-voa of each amplifier - element."; + "Amplifier elements typically equalize the optical + power across the amplified channels using one of the + available equalization strategies - either targeting + a specific output power, or a specific power spectral + density (PSD), after the out-voa."; choice power-param { mandatory true; description @@ -172,7 +180,7 @@ module ietf-optical-impairment-topology { density (PSD)."; case channel-power { leaf nominal-carrier-power { - type l0-types:power-dbm-or-null; + type l0-types:power-dbm-or-unknown; mandatory true; description "Reference channel power."; @@ -180,7 +188,7 @@ module ietf-optical-impairment-topology { } case power-spectral-density { leaf nominal-psd { - type l0-types:psd-or-null; + type l0-types:psd-or-unknown; mandatory true; description "Reference power spectral density (PSD)."; @@ -189,9 +197,16 @@ module ietf-optical-impairment-topology { } } // container power-param leaf pdl { - type l0-types:power-loss-or-null; + type l0-types:power-loss-or-unknown; description - "Polarization Dependent Loss (PDL)"; + "Polarization Dependent Loss (PDL)."; + reference + "ITU-T G.671 v9.0 (11/2025): Transmission + characteristics of optical components and + subsystems, clause 3.2.2.35 + ITU-T G.Sup41 v5.0 (07/2024): Design guidelines for + optical fibre submarine cable systems, + clause 8.1.5.2.2"; } choice amplifier-element-type { mandatory true; @@ -202,30 +217,30 @@ module ietf-optical-impairment-topology { container optical-amplifier { description "The attributes applicable only to amplifier - elements"; + elements."; leaf actual-gain { - type l0-types:power-gain-or-null; + type l0-types:power-gain-or-unknown; mandatory true; description "The value of the gain provided by the - amplification stage of the optical amplifier."; + amplification stage of the optical amplifier."; } leaf in-voa { - type l0-types:power-loss-or-null; + type l0-types:power-loss-or-unknown; description "Loss introduced by the Variable Optical Attenuator (VOA) at the input of the amplification stage of - the amplifier, if present"; + the amplifier, if present."; } leaf out-voa { - type l0-types:power-loss-or-null; + type l0-types:power-loss-or-unknown; description "Loss introduced by the Variable Optical Attenuator (VOA) at the output of the amplification stage of the amplifier, if present."; } leaf tilt-target { - type l0-types:decimal-2-or-null; + type l0-types:decimal-2-or-unknown; units "dB"; mandatory true; description @@ -233,11 +248,11 @@ module ietf-optical-impairment-topology { frequency of the amplifier frequency range."; } leaf total-output-power { - type l0-types:power-dbm-or-null; + type l0-types:power-dbm-or-unknown; mandatory true; description - "It represent total output power measured in the - range specified by the frequency-range. + "It represents the total output power measured in + the range specified by the frequency-range. Optical power is especially needed to re-compute/check consistency of span @@ -280,7 +295,7 @@ module ietf-optical-impairment-topology { "The raman pump central frequency."; } leaf power { - type l0-types:decimal-2-or-null; + type l0-types:decimal-2-or-unknown; units "Watts"; description "The total pump power considering a depolarized @@ -291,24 +306,26 @@ module ietf-optical-impairment-topology { container dynamic-gain-equalizer { presence "When present it indicates that the amplifier element - is a Dynamic Gain Equalizer (DGE)"; + is a Dynamic Gain Equalizer (DGE)."; description "The attributes applicable only to DEG amplifier elements."; list media-channel { key "flexi-n"; description - "List of media channels represented as (n,m)"; + "List of media channels represented as (n,m)."; uses l0-types:flexi-grid-frequency-slot { refine "flexi-m" { mandatory true; } } leaf delta-power { - type l0-types:power-ratio-or-null; + type l0-types:power-ratio-or-unknown; description - "Deviation from the reference carrier power - defined for the OMS."; + "Deviation of the carrier power with respect to + the reference carrier power, to account for + power offset related to the carrier signal + spectrum width or baud rate."; } } // media channels list } // container dynamic-gain-equalizer @@ -321,32 +338,40 @@ module ietf-optical-impairment-topology { grouping fiber-params { description "String identifier of fiber type referencing a - specification in a separate equipment catalog"; + specification in a separate equipment catalog."; container fiber { description - "Fiber characteristics"; + "Fiber characteristics."; + reference + "RFC XXXX: A YANG Data Model for Impairment-aware Optical + Networks, Section 2.9"; leaf type-variety { type string; mandatory true; description - "Fiber type"; + "The type of the fiber. + + It can be a string referencing a standard document (e.g., + ITU-T G.652) or a vendor-specific string referencing + specification in a separate equipment catalog."; } leaf length { - type l0-types:decimal-2-or-null; + type l0-types:decimal-2-or-unknown; units "km"; mandatory true; description - "Length of fiber"; + "Length of fiber."; } leaf loss-coef { - type l0-types:decimal-2-or-null; + type l0-types:decimal-2-or-unknown; units "dB/km"; mandatory true; description - "Loss coefficient of the fiber"; + "Loss coefficient of the fiber."; } leaf total-loss { - type l0-types:power-loss-or-null; + type l0-types:power-loss-or-unknown; + config false; description "The measured total loss of the fiber, which includes all possible losses: fiber loss and conn-in and conn-out @@ -356,20 +381,27 @@ module ietf-optical-impairment-topology { be measured."; } leaf pmd { - type l0-types:decimal-2-or-null; + type l0-types:decimal-2-or-unknown; units "ps"; description - "PMD of the fiber"; + "Polarization Mode Dispersion (PMD) of the fiber."; + reference + "ITU-T G.671 v9.0 (11/2025): Transmission characteristics + of optical components and subsystems, + clause 3.2.2.37 + ITU-T G.Sup41 v5.0 (07/2024): Design guidelines for + optical fibre submarine cable systems, + clause 6.2.2.3"; } leaf conn-in { - type l0-types:power-loss-or-null; + type l0-types:power-loss-or-unknown; description - "connector-in"; + "The loss of the connector at the input of the fiber."; } leaf conn-out { - type l0-types:power-loss-or-null; + type l0-types:power-loss-or-unknown; description - "connector-out"; + "The loss of the connector at the output of the fiber."; } } } @@ -378,57 +410,86 @@ module ietf-optical-impairment-topology { description "The optical impairments of a ROADM which are common to all its paths (express path, add path or drop path)."; + reference + "RFC XXXX: A YANG Data Model for Impairment-aware Optical + Networks, Section 2.10.4"; leaf roadm-pmd { type union { type decimal64 { fraction-digits 8; range "0..max"; } - type empty; + type l0-types:unknown-value; } units "ps"; description - "Polarization Mode Dispersion (PMD), when known, or an - empty value when unknown."; + "Polarization Mode Dispersion (PMD)."; + reference + "ITU-T G.671 v9.0 (11/2025): Transmission characteristics of + optical components and subsystems, + clause 3.2.2.37 + ITU-T G.Sup41 v5.0 (07/2024): Design guidelines for optical + fibre submarine cable systems, + clause 6.2.2.3"; } leaf roadm-cd { - type l0-types:decimal-5-or-null; + type l0-types:decimal-5-or-unknown; units "ps/nm"; description - "Chromatic Dispersion (CD)"; + "Chromatic Dispersion (CD)."; + reference + "ITU-T G.Sup41 v5.0 (07/2024): Design guidelines for optical + fibre submarine cable systems, + clause 6.2.2.4"; } leaf roadm-pdl { - type l0-types:power-loss-or-null; + type l0-types:power-loss-or-unknown; description - "Polarization Dependent Loss (PDL)"; + "Polarization Dependent Loss (PDL)."; + reference + "ITU-T G.671 v9.0 (11/2025): Transmission characteristics of + optical components and subsystems, + clause 3.2.2.35 + ITU-T G.Sup41 v5.0 (07/2024): Design guidelines for optical + fibre submarine cable systems, + clause 8.1.5.2.2"; } leaf roadm-inband-crosstalk { - type l0-types:decimal-2-or-null; + type l0-types:decimal-2-or-unknown; units "dB"; description - "In-band crosstalk, or coherent crosstalk, can occur in - components that can have multiple same wavelength inputs - with the inputs either routed to different output ports, - or all but one blocked"; + "One of the basic properties of the key optical device + wavelength selective switch (WSS) is the isolation (i.e., + the ratio between the optical power of a selected optical + channel and the leakage power of unselected channels). + + In the presence of imperfect isolation, the originated + leakage signals, usually known as crosstalk signals, will + interfere with the primary signal at the receiver end, + contributing to degrade the signal quality. + This interference is particularly harmful when both the + signal and interference have the same nominal wavelength + leading to the in-band crosstalk."; + reference + "ISSN 1068-5200: A framework for analyzing in-band crosstalk + accumulation in ROADM-based optical + networks"; } leaf roadm-maxloss { - type l0-types:power-loss-or-null; + type l0-types:power-loss-or-unknown; description "This is the maximum expected path loss from the ROADM ingress to the ROADM egress - assuming no additional path loss is added"; + assuming no additional path loss is added."; } } // grouping roadm-common-path - grouping roadm-express-path { - description - "The optical impairments of a ROADM express path."; - uses roadm-common-path; - } // grouping roadm-express-path - grouping roadm-add-path { description "The optical impairments of a ROADM add path."; + reference + "RFC XXXX: A YANG Data Model for Impairment-aware Optical + Networks, Section 2.10.4"; uses roadm-common-path { refine "roadm-inband-crosstalk" { description @@ -448,31 +509,30 @@ module ietf-optical-impairment-topology { assuming no additional add path loss is added. This is used to establish the minimum required - transponder output power required - to hit the ROADM egress target power - levels and preventing - to hit the WSS attenuation limits. + transponder output power required to hit the ROADM + egress target power levels and preventing to hit + the WSS attenuation limits. If the add path contains an internal amplifier - this loss value MUST be based - on worst case expected amplifier gain due to - ripple or gain uncertainty"; + this loss value MUST be based on worst case expected + amplifier gain due to ripple or gain uncertainty."; } } leaf roadm-pmax { - type l0-types:power-dbm-or-null; + type l0-types:power-dbm-or-unknown; description "This is the maximum (per carrier) power level permitted at the add block input ports, that can be handled by the ROADM node. + This can reflect either add amplifier power constraints or WSS adjustment limits. + Higher power transponders would need to have - their launch power reduced - to this value or lower"; + their launch power reduced to this value or lower."; } leaf roadm-osnr { - type l0-types:snr-or-null; + type l0-types:snr-or-unknown; description "Optical Signal-to-Noise Ratio (OSNR). @@ -485,9 +545,12 @@ module ietf-optical-impairment-topology { The worst case OSNR based on the input power and NF calculation method, and this value, MUST be used (if both are defined)."; + reference + "ITU-T G.Sup41 v5.0 (07/2024): Design guidelines for optical + fibre submarine cable systems, clause 8.1.3"; } leaf roadm-noise-figure { - type l0-types:decimal-5-or-null; + type l0-types:decimal-5-or-unknown; units "dB"; description "Noise Figure. If the add path contains an amplifier, @@ -497,12 +560,15 @@ module ietf-optical-impairment-topology { on the input power levels to the add block without knowing the ROADM path losses to the add amplifier."; + reference + "ITU-T G.Sup41 v5.0 (07/2024): Design guidelines for optical + fibre submarine cable systems, clause 8.1.3"; } } // grouping roadm-add-path grouping roadm-drop-path { description - "The optical impairments of a ROADM drop path"; + "The optical impairments of a ROADM drop path."; uses roadm-common-path { refine "roadm-inband-crosstalk" { description @@ -512,110 +578,110 @@ module ietf-optical-impairment-topology { output ports,or all but one blocked. In the case of drop path it is the total - of the ingress - to drop e.g. WSS and drop block crosstalk - contributions."; + of the ingress to drop, e.g. WSS and drop block + crosstalk contributions."; } refine "roadm-maxloss" { description "The net loss from the ROADM input,to the output of the drop block. + If this ROADM ingress-to-drop path includes an amplifier, the amplifier gain reduces the net loss. This is before any additional drop path attenuation - that may be required - due to drop amplifier power constraints. - The max value correspond to worst case expected loss, - including amplifier gain ripple or uncertainty. - It is the maximum output power of the drop - amplifier."; + that may be required due to drop amplifier power + constraints. + + The max value corresponds to the worst case expected + loss, including amplifier gain ripple or uncertainty. + It is the maximum output power of the drop amplifier."; } } leaf roadm-minloss { - type l0-types:power-loss-or-null; + type l0-types:power-loss-or-unknown; description "The net loss from the ROADM input, to the output of the drop block. + If this ROADM ingress-to-drop path includes an amplifier,the amplifier gain reduces the net loss. This is before any additional drop path attenuation that may be required due to drop amplifier power constraints. + The min value correspond to best case expected loss, including amplifier gain ripple or uncertainty."; } leaf roadm-typloss { - type l0-types:power-loss-or-null; + type l0-types:power-loss-or-unknown; description - "The net loss from the ROADM input, - to the output of the drop block. - If this ROADM ingress-to-drop path - includes an amplifier, + "The net loss from the ROADM input, to the output + of the drop block. + + If this ROADM ingress-to-drop path includes an amplifier, the amplifier gain reduces the net loss. - This is before any additional drop path - attenuation - that may be required due to drop amplifier - power constraints. - The typ value correspond to typical case - expected loss."; + + This is before any additional drop path attenuation + that may be required due to drop amplifier power + constraints. + + The typ value correspond to typical case expected loss."; } leaf roadm-pmin { - type l0-types:power-dbm-or-null; + type l0-types:power-dbm-or-unknown; description - "If the drop path has additional loss - that is added, for example, - to hit target power levels into a - drop path amplifier, or simply, to reduce the - power of a strong carrier - (due to ripple,for example), - then the use of the ROADM input power levels and - the above drop losses is not appropriate. - This parameter corresponds to the min per - carrier power levels - expected at the output of the drop block. - A detail example of the comparison using - these parameters is - detailed in section xxx of the document yyy."; + "If the drop path has additional loss that is added, for + example, to hit target power levels into a drop path + amplifier, or simply, to reduce the power of a strong + carrier (due to ripple, for example), then the use of the + ROADM input power levels and the above drop losses is + not appropriate. + + This parameter corresponds to the minimum value of the Drop + Channel output power range."; + reference + "ITU-T G.680 v1.0 (07/2007): Physical transfer functions of + optical network elements, Table 8-6"; } leaf roadm-pmax { - type l0-types:power-dbm-or-null; + type l0-types:power-dbm-or-unknown; description - "If the drop path has additional loss that is added, - for example, to hit target power levels into a - drop path amplifier,or simply,to reduce the power - of a strong carrier(due to ripple,for example), - then the use of the ROADM input power levels and the - above drop losses is not appropriate. - This parameter corresponds to the best case per - carrier power levels expected at the output of the - drop block. - A detail example of the comparison using - these parameters - is detailed in section xxx of the document yyy"; + "If the drop path has additional loss that is added, for + example, to hit target power levels into a drop path + amplifier, or simply ,to reduce the power of a strong + carrier (due to ripple, for example), then the use of the + ROADM input power levels and the above drop losses is + not appropriate. + + This parameter corresponds to the maximum value of the Drop + Channel output power range."; + reference + "ITU-T G.680 v1.0 (07/2007): Physical transfer functions of + optical network elements, table 8-6"; } leaf roadm-ptyp { - type l0-types:power-dbm-or-null; + type l0-types:power-dbm-or-unknown; description "If the drop path has additional loss that is added, for example, to hit target power levels into a drop path amplifier,or simply,to reduce the - power of a strong carrier(due to ripple,for example), + power of a strong carrier(due to ripple, for example), then the use of the ROADM input power levels and the above drop losses is not appropriate. + This parameter corresponds to the typical case - per carrier power levels expected - at the output of the drop block."; + per carrier power levels expected at the output + of the drop block."; } leaf roadm-osnr { - type l0-types:snr-or-null; + type l0-types:snr-or-unknown; description "Optical Signal-to-Noise Ratio (OSNR). Expected OSNR contribution of the drop path - amplifier(if present) - for the case of additional drop path loss - (before this amplifier) - in order to hit a target power level (per carrier). + amplifier (if present) for the case of additional drop + path loss (before this amplifier) in order to hit + a target power level (per carrier). If both, the OSNR based on the ROADM input power level @@ -623,25 +689,31 @@ module ietf-optical-impairment-topology { Pref+10Log(carrier-baudrate/ref-baud) + delta-power) and the input inferred NF(NF.drop), and this OSNR value, are defined, - the minimum value between these two MUST be used"; + the minimum value between these two MUST be used."; + reference + "ITU-T G.Sup41 v5.0 (07/2024): Design guidelines for optical + fibre submarine cable systems, clause 8.1.3"; } leaf roadm-noise-figure { - type l0-types:decimal-5-or-null; + type l0-types:decimal-5-or-unknown; units "dB"; description "Drop path Noise Figure. - If the drop path contains an amplifier, - this is the noise figure - of that amplifier, inferred to the - ROADM ingress port. - This permits to determine - amplifier OSNR contribution - without having to specify the - ROADM node's losses to that amplifier. - This applies for the case of no - additional drop path loss, + + If the drop path contains an amplifier, this is the noise + figure of that amplifier, inferred to the ROADM ingress + port. + + This permits to determine amplifier OSNR contribution + without having to specify the ROADM node's losses to + that amplifier. + + This applies for the case of no additional drop path loss, before the amplifier, in order to reduce the power - of the carriers to a target value"; + of the carriers to a target value."; + reference + "ITU-T G.Sup41 v5.0 (07/2024): Design guidelines for optical + fibre submarine cable systems, clause 8.1.3"; } } // grouping roadm-drop-path @@ -651,22 +723,32 @@ module ietf-optical-impairment-topology { container concentrated-loss { description "Concentrated loss"; + reference + "RFC XXXX: A YANG Data Model for Impairment-aware Optical + Networks, section 2.3"; leaf loss { - type l0-types:power-loss-or-null; + type l0-types:power-loss-or-unknown; mandatory true; description - "Loss introduced by the concentrated loss element."; + "Loss introduced by the concentrated loss element (e.g., a + fiber connector, a fiber splice)."; } } } grouping oms-general-optical-params { description - "OMS link optical parameters"; + "The optical paramaters of an OMS link."; + reference + "RFC XXXX: A YANG Data Model for Impairment-aware Optical + Networks, Section 2.3"; leaf generalized-snr { type l0-types:snr; description - "Generalized SNR"; + "Generalized SNR."; + reference + "ITU-T G.Sup41 v5.0 (07/2024): Design guidelines for optical + fibre submarine cable systems, clause 8.1.4"; } leaf equalization-mode { type identityref { @@ -675,6 +757,11 @@ module ietf-optical-impairment-topology { description "The equalization mode. + ROADMs typically equalize the optical power across the + channels on the OMS using one of the available equalization + strategies - either targeting a specific output power, or a + specific power spectral density (PSD). + When not present it indicates that the information about the equalization mode is not reported. @@ -688,44 +775,44 @@ module ietf-optical-impairment-topology { leaf nominal-carrier-power { when "derived-from-or-self(../../equalization-mode, " + "'l0-types:carrier-power')"; - type l0-types:power-dbm-or-null; + type l0-types:power-dbm-or-unknown; description "Reference channel power."; } leaf nominal-psd { when "derived-from-or-self(../../equalization-mode, " + "'l0-types:power-spectral-density')"; - type l0-types:psd-or-null; + type l0-types:psd-or-unknown; description - " Reference power spectral density (PSD)."; + "Reference power spectral density (PSD)."; } } // container power-param } // grouping oms-general-optical-params grouping otsi-group { description - "OTSiG definition , representing client - digital information stream supported by one or more OTSi"; + "The list of the OTSis contained in one OTSiG."; + reference + "RFC XXXX: A YANG Data Model for Impairment-aware Optical + Networks, Sections 2.3.1 and 2.3.2"; list otsi { key "carrier-id"; - config false; description - "list of OTSi contained in one OTSiG. - The list could also be of only one element"; + "The list of the OTSis contained in one OTSiG. + The list could also be of only one element."; leaf carrier-id { type uint16; description - "OTSi carrier-id"; + "The identifier of the OTSi within the OTSiG."; } leaf carrier-frequency { type union { type l0-types:frequency-thz; - type empty; + type l0-types:unknown-value; } description "OTSi carrier frequency, equivalent to the - actual configured transmitter frequency, when known, or - an empty value when unknown."; + actual configured transmitter frequency."; } leaf-list e2e-mc-path-id { type uint16; @@ -740,16 +827,23 @@ module ietf-optical-impairment-topology { The list can be empty when the OTSi has only one e2e-MC path."; + reference + "RFC XXXX: A YANG Data Model for Impairment-aware Optical + Networks, Section 2.11.1"; } } // OTSi list } // OTSiG grouping grouping media-channel-groups { description - "media channel groups. + "The list of media channel groups (MCGs) and of their + constituent media channels (MCs). This grouping is not intended to be reused outside of this module."; + reference + "RFC XXXX: A YANG Data Model for Impairment-aware Optical + Networks, Sections 2.3.3 and 2.3.4"; container media-channel-groups { presence "When present, it indicates that the list media channel @@ -774,7 +868,8 @@ module ietf-optical-impairment-topology { key "media-channel-id"; unique "flexi-n"; description - "list of media channels represented as (n,m)"; + "The list of media channels within the media channel + group."; leaf media-channel-id { type int16; description @@ -817,9 +912,9 @@ module ietf-optical-impairment-topology { } } leaf delta-power { - type l0-types:power-ratio-or-null; + type l0-types:power-ratio-or-unknown; description - " Deviation from the reference carrier power defined + "Deviation from the reference carrier power defined for the OMS."; } } // media channels list @@ -829,38 +924,33 @@ module ietf-optical-impairment-topology { grouping oms-element { description - "OMS description"; + "The list of the OMS elements, i.e., the building blocks + (e.g., fibers, amplifiers, concentrated loss) that compose the + OMS between its link termination points."; container oms-elements { presence "When present, it indicates that the list of OMS elements is reported."; - config false; description "The top level container for the list of OMS elements."; list oms-element { key "elt-index"; description - "The building blocks (e.g., fibers, amplifiers, - concentrated loss) that compose the WDM TE-link between - its link termination points."; + "The list of OMS elements."; leaf elt-index { type uint16; description - "An index allowing to sort the elements in their physical + "An index allowing sorting the elements in their physical order along the link without constraining their position in the list."; } leaf oms-element-uid { type union { type string; - type empty; + type l0-types:unknown-value; } description - "Unique id of the element, if it exists and is known. - - When unknown, an empty value is reported. - - When it does not exist, the attribute is not present."; + "Unique identifier of the OMS element, when known."; } container reverse-element-ref { description @@ -917,7 +1007,7 @@ module ietf-optical-impairment-topology { + "otsi-group-id"; } description - "The OTSi generated by the transceiver's transmitter."; + "The OTSiG the referenced OTSi belongs to."; } leaf otsi-ref { type leafref { @@ -926,7 +1016,7 @@ module ietf-optical-impairment-topology { + "carrier-id"; } description - "The OTSi generated by the transceiver's transmitter."; + "The referenced OTSi."; } } @@ -942,7 +1032,7 @@ module ietf-optical-impairment-topology { presence "Indicates an impairment-aware topology of optical networks"; description - "Container to identify impairment-aware topology type"; + "Container to identify impairment-aware topology type."; reference "RFC8345: A YANG Data Model for Network Topologies."; } @@ -960,20 +1050,20 @@ module ietf-optical-impairment-topology { container otsis { presence "When present, it indicates that OTSi information is reported."; + config false; description "The information about the OTSis configured on the WDM-TE link."; list otsi-group { key "otsi-group-id"; - config false; description "the list of possible OTSiG representing client digital - stream"; + stream."; leaf otsi-group-id { type string; description "A network-wide unique identifier of otsi-group element. - It could be structured e.g., as an URI or as an UUID."; + It could be structured, e.g., as a URI or as a UUID."; } uses otsi-group; } // list of OTSiG @@ -995,18 +1085,18 @@ module ietf-optical-impairment-topology { leaf roadm-path-impairments-set-id { type string; description - "The identifier of the set of optical impairments - related to a ROADM path."; + "The identifier of an element in the list of the set of + optical impairments related to a ROADM path."; } leaf description { type string; description - "The textual description of the the set of optical + "The textual description of the set of optical impairments related to a ROADM path."; } choice impairment-type { description - "Type path impairment"; + "Type path impairment."; case roadm-express-path { list roadm-express-path { key "frequency-range-id"; @@ -1017,7 +1107,7 @@ module ietf-optical-impairment-topology { Two elements in the list MUST NOT have the same range or overlapping ranges."; uses l0-types:frequency-range-with-identifier; - uses roadm-express-path; + uses roadm-common-path; } } case roadm-add-path { @@ -1080,17 +1170,17 @@ module ietf-optical-impairment-topology { presence "If present, it indicates that the list of transponders is reported."; + config false; description "The top level container for the list of transponders."; list transponder { key "transponder-id"; - config false; description "The list of transponders."; leaf transponder-id { type uint32; description - "transponder identifier"; + "Transponder identifier."; } leaf termination-type-capabilities { type enumeration { @@ -1106,9 +1196,9 @@ module ietf-optical-impairment-topology { } enum 3r-or-tunnel { description - "The transponder can be configure to be used either - in an Optical Tunnel termination configuration or in - a 3R configuration."; + "The transponder can be used either in an Optical + Tunnel termination configuration or in a 3R + configuration."; } } description @@ -1139,14 +1229,13 @@ module ietf-optical-impairment-topology { } list transceiver { key "transceiver-id"; - config false; min-elements 1; description - "List of transceiver related to a transponder"; + "List of transceiver related to a transponder."; leaf transceiver-id { type uint32; description - "Transceiver identifier"; + "Transceiver identifier."; } uses l0-types:transceiver-capabilities { augment "supported-modes/supported-mode/mode/" @@ -1162,14 +1251,14 @@ module ietf-optical-impairment-topology { + "/oit:explicit-transceiver-mode-id"; } description - "The refernce to the explicit transceiver + "The reference to the explicit transceiver mode template."; } } } leaf configured-mode { type union { - type empty; + type l0-types:unknown-value; type leafref { path "../supported-modes/supported-mode/mode-id"; } @@ -1178,7 +1267,7 @@ module ietf-optical-impairment-topology { "Reference to the configured mode for transceiver compatibility approach. - The empty value is used to report that no mode has + The 'unknown' value is used to report that no mode has been configured and there is no default mode. When not present, the configured-mode is not reported @@ -1202,7 +1291,7 @@ module ietf-optical-impairment-topology { reported."; } description - "The OTSi received by the transceiver's received."; + "The OTSi received by the transceiver's receiver."; uses otsi-ref; } leaf configured-termination-type { @@ -1236,16 +1325,16 @@ module ietf-optical-impairment-topology { container regen-groups { presence "When present, it indicates that the list of 3R groups is reported."; + config false; description "The top level container for the list of 3R groups."; list regen-group { key "group-id"; - config false; description "The list of 3R groups. Any 3R group represent a group of transponder in which an - a an electrical connectivity is either in place or could + electrical connectivity is either in place or could be dynamically provided, to associated transponders used for 3R regeneration."; leaf group-id { @@ -1257,15 +1346,15 @@ module ietf-optical-impairment-topology { leaf regen-metric { type uint32; description - "The cost permits choice among different group of - transponders during path computation"; + "The cost permits choice among different groups of + transponders during path computation."; } leaf-list transponder-ref { type leafref { path "../../../transponders/transponder/transponder-id"; } description - "The list of transponder belonging to this 3R group."; + "The list of transponders belonging to this 3R group."; } } // end 3R-group } @@ -1284,7 +1373,7 @@ module ietf-optical-impairment-topology { container oms-attributes { config false; description - "OMS attributes"; + "OMS attributes."; uses oms-general-optical-params; uses media-channel-groups; uses oms-element; @@ -1337,7 +1426,7 @@ module ietf-optical-impairment-topology { + 'oit:optical-impairment-topology' { description "This augment is only valid for Optical Impairment - topology"; + topology."; } description "Augment LTP"; @@ -1345,6 +1434,7 @@ module ietf-optical-impairment-topology { type identityref { base te-types:lsp-protection-type; } + config false; description "The protection type that this LTP is capable of. @@ -1359,12 +1449,13 @@ module ietf-optical-impairment-topology { + 'oit:optical-impairment-topology' { description "This augment is only valid for Optical Impairment - topology"; + topology."; } description "Augment TE attributes of an LTP"; leaf inter-layer-sequence-number { type uint32; + config false; description "The inter-layer-sequence-number (ILSN) is used to report additional connectivity constraints between a client layer @@ -1386,26 +1477,13 @@ module ietf-optical-impairment-topology { } } - augment "/nw:networks/nw:network/nw:node/tet:te" - + "/tet:te-node-attributes" { - when '../../../nw:network-types/tet:te-topology' - + '/oit:optical-impairment-topology' { - description - "This augment is only valid for Optical Impairment - topology"; - } - description - "node attributes augmentantion for optical-impairment ROADM - node"; - } // augmentation for optical-impairment ROADM - augment "/nw:networks/nw:network/nw:node/tet:te/" + "tet:information-source-entry/tet:connectivity-matrices" { when '../../../../nw:network-types/tet:te-topology/' + 'oit:optical-impairment-topology' { description "This augment is only valid for Optical Impairment - topology "; + topology."; } description "Augment default TE node connectivity matrix information @@ -1419,7 +1497,8 @@ module ietf-optical-impairment-topology { } config false; description - "Pointer to the list set of ROADM optical impairments"; + "Pointer to optical impairments of the associated ROADM + path."; } } // augmentation connectivity-matrices information-source @@ -1430,7 +1509,7 @@ module ietf-optical-impairment-topology { + 'oit:optical-impairment-topology' { description "This augment is only valid for Optical Impairment - topology "; + topology."; } description "Augment TE node connectivity matrix entry information @@ -1444,7 +1523,8 @@ module ietf-optical-impairment-topology { } config false; description - "Pointer to the list set of ROADM optical impairments"; + "Pointer to optical impairments of the associated ROADM + path."; } } // augmentation connectivity-matrix information-source @@ -1454,7 +1534,7 @@ module ietf-optical-impairment-topology { + 'oit:optical-impairment-topology' { description "This augment is only valid for Optical Impairment - topology "; + topology."; } description "Augment default TE node connectivity matrix."; @@ -1465,12 +1545,10 @@ module ietf-optical-impairment-topology { + "/oit:roadm-path-impairments-set" + "/oit:roadm-path-impairments-set-id"; } - config false; /*the identifier in the list */ - /*"roadm-path-impairments" of ROADM optical impairment*/ - /*is read-only as the rest of attributes*/ + config false; description - "Pointer to the list set of ROADM optical - impairments"; + "Pointer to optical impairments of the associated ROADM + path."; } } // augmentation connectivity-matrices @@ -1480,8 +1558,8 @@ module ietf-optical-impairment-topology { when '../../../../../nw:network-types/tet:te-topology/' + 'oit:optical-impairment-topology' { description - "This augment is only valid for - Optical Impairment topology "; + "This augment is only valid for Optical Impairment + topology."; } description "Augment TE node connectivity matrix entry."; @@ -1494,8 +1572,8 @@ module ietf-optical-impairment-topology { } config false; description - "Pointer to the list set of ROADM optical - impairments"; + "Pointer to optical impairments of the associated ROADM + path."; } } // augmentation connectivity-matrix @@ -1505,8 +1583,8 @@ module ietf-optical-impairment-topology { when '../../../../../../nw:network-types/tet:te-topology/' + 'oit:optical-impairment-topology' { description - "This augment is only valid for - Optical Impairment topology "; + "This augment is only valid for Optical Impairment + topology."; } description "Augment the attributes for the 'from' LTP for the TE node @@ -1539,7 +1617,7 @@ module ietf-optical-impairment-topology { description "The reference to the potential secondary LTP that can be selected when the 'from' LTP of this connectivity matrix - entry is selected as a working LTP"; + entry is selected as a working LTP."; } leaf roadm-path-impairments-set { type leafref { @@ -1549,9 +1627,9 @@ module ietf-optical-impairment-topology { + "/oit:roadm-path-impairments-set-id"; } description - "Pointer to ROADM optical impairments of the ROADM path - between this secondary 'from' LTP and the 'to' LTP of - this connectivity matrix entry."; + "Pointer to optical impairments of the ROADM path between + this secondary 'from' LTP and the 'to' LTP of this + connectivity matrix entry."; } } } // augmentation connectivity-matrix from @@ -1562,8 +1640,8 @@ module ietf-optical-impairment-topology { when '../../../../../../nw:network-types/tet:te-topology/' + 'oit:optical-impairment-topology' { description - "This augment is only valid for - Optical Impairment topology "; + "This augment is only valid for Optical Impairment + topology."; } description "Augment the attributes for the 'to' LTP for the TE node @@ -1596,7 +1674,7 @@ module ietf-optical-impairment-topology { description "The reference to the potential secondary LTP that can be selected when the 'to' LTP of this connectivity matrix - entry is selected as a working LTP"; + entry is selected as a working LTP."; } leaf roadm-path-impairments-set { type leafref { @@ -1606,9 +1684,9 @@ module ietf-optical-impairment-topology { + "/oit:roadm-path-impairments-set-id"; } description - "Pointer to ROADM optical impairments of the ROADM path - between the 'from' LTP of this connectivity matrix entry - and this secondary LTP."; + "Pointer to optical impairments of the ROADM path between + the 'from' LTP of this connectivity matrix entry and this + secondary LTP."; } } } // augmentation connectivity-matrix to @@ -1620,7 +1698,7 @@ module ietf-optical-impairment-topology { + 'oit:optical-impairment-topology' { description "This augment is only valid for Optical Impairment - topology."; + topology."; } description "Augment default TTP LLC."; @@ -1633,8 +1711,8 @@ module ietf-optical-impairment-topology { } config false; description - "Pointer to the list set of ROADM optical - impairments"; + "Pointer to optical impairments of the associated ROADM + path."; } leaf drop-path-impairments-set { type leafref { @@ -1645,8 +1723,8 @@ module ietf-optical-impairment-topology { } config false; description - "pointer to the list set of ROADM - optical impairments"; + "Pointer to optical impairments of the associated ROADM + path."; } } // augmentation local-link-connectivities @@ -1657,8 +1735,8 @@ module ietf-optical-impairment-topology { when '../../../../../nw:network-types/tet:te-topology/' + 'oit:optical-impairment-topology' { description - "This augment is only valid for - Optical Impairment topology "; + "This augment is only valid for Optical Impairment + topology."; } description "Augment TTP LLC entry."; @@ -1671,8 +1749,8 @@ module ietf-optical-impairment-topology { } config false; description - "pointer to the list set of ROADM optical - impairments"; + "Pointer to optical impairments of the associated ROADM + path."; } leaf drop-path-impairments-set { type leafref { @@ -1683,14 +1761,14 @@ module ietf-optical-impairment-topology { } config false; description - "pointer to the list set of ROADM optical - impairments"; + "Pointer to optical impairments of the associated ROADM + path."; } list llc-transceiver { key "ttp-transponder-ref ttp-transceiver-ref"; config false; description - "The list of transceivers having a LLC different from the + "The list of transceivers having an LLC different from the default LLC."; leaf ttp-transponder-ref { type leafref { @@ -1705,7 +1783,7 @@ module ietf-optical-impairment-topology { path "../../../../ttp-transceiver/transceiver-ref"; } description - "The reference to the the transceiver of this LLCL entry."; + "The reference to the transceiver of this LLCL entry."; } leaf is-allowed { type boolean; @@ -1722,8 +1800,8 @@ module ietf-optical-impairment-topology { + "/oit:roadm-path-impairments-set-id"; } description - "pointer to the list set of ROADM optical - impairments"; + "Pointer to optical impairments of the associated ROADM + path."; } leaf drop-path-impairments-set { type leafref { @@ -1733,8 +1811,8 @@ module ietf-optical-impairment-topology { + "/oit:roadm-path-impairments-set-id"; } description - "pointer to the list set of ROADM - optical impairments"; + "Pointer to optical impairments of the associated ROADM + path."; } } list additional-ltp { @@ -1760,7 +1838,7 @@ module ietf-optical-impairment-topology { description "The reference to potential secondary LTP that can be selected when the LTP associated with this LLCP entry is - selected as a working LTP"; + selected as a working LTP."; } leaf add-path-impairments-set { type leafref { @@ -1770,8 +1848,8 @@ module ietf-optical-impairment-topology { + "/oit:roadm-path-impairments-set-id"; } description - "pointer to the list set of ROADM optical - impairments"; + "Pointer to optical impairments of the associated ROADM + path."; } leaf drop-path-impairments-set { type leafref { @@ -1781,8 +1859,8 @@ module ietf-optical-impairment-topology { + "/oit:roadm-path-impairments-set-id"; } description - "pointer to the list set of ROADM - optical impairments"; + "Pointer to optical impairments of the associated ROADM + path."; } } } // augmentation local-link-connectivity diff --git a/experimental/ietf-extracted-YANG-modules/ietf-pcep-srpolicy@2025-04-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-pcep-srpolicy@2025-04-21.yang deleted file mode 100644 index 99527d927..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-pcep-srpolicy@2025-04-21.yang +++ /dev/null @@ -1,180 +0,0 @@ -module ietf-pcep-srpolicy { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-pcep-srpolicy"; - prefix pcep-srp; - - import ietf-inet-types { - prefix inet; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-te-types { - prefix te-types; - reference - "RFC 8776: Common YANG Data Types for Traffic Engineering"; - } - import ietf-pcep { - prefix pcep; - reference - "I-D.ietf-pce-pcep-yang: A YANG Data Model for Path - Computation Element Communications Protocol (PCEP)"; - } - import ietf-sr-policy-types { - prefix sr-policy-types; - reference - "I-D.ietf-spring-sr-policy-yang: YANG Data Model for - Segment Routing Policy"; - } - - organization - "IETF PCE (Path Computation Element) Working Group"; - contact - "WG Web: - WG List: - Editor: Cheng Li - - Shuping Peng - "; - description - "The YANG module augments the Path Computation Element - Communications Protocol (PCEP) YANG model with Segment - Routing (SR) Policy. - Copyright (c) 2025 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."; - - revision 2025-04-21 { - description - "Initial revision."; - reference - "RFC XXXX: A YANG Data Model for Segment Routing (SR) Policy - and SRv6 support in Path Computation Element Communications - Protocol (PCEP)"; - } - - /* Features */ - - feature multipath { - description - "Support for multipath ERO."; - reference - "I-D.ietf-pce-multipath: PCEP Extensions for Signaling - Multipath Information"; - } - - /* Identities */ - - identity sr-policy { - base te-types:association-type; - description - "SR Policy Association"; - reference - "I-D.ietf-pce-segment-routing-policy-cp: PCEP extension to - support Segment Routing Policy Candidate Paths"; - } - - /* Groupings */ - - grouping sr-policy { - description - "Segment Routing Policy grouping"; - leaf headend { - type inet:ip-address-no-zone; - description - "SR Policy headend"; - reference - "RFC 9256: Segment Routing Policy Architecture"; - } - leaf color { - type sr-policy-types:color-type; - description - "SR Policy Color"; - reference - "RFC 9256: Segment Routing Policy Architecture"; - } - leaf endpoint { - type inet:ip-address-no-zone; - description - "SR Policy Endpoint"; - reference - "RFC 9256: Segment Routing Policy Architecture"; - } - leaf name { - type sr-policy-types:name-type; - description - "SR Policy name"; - reference - "RFC 9256: Segment Routing Policy Architecture"; - } - } - - grouping sr-policy-cp { - description - "Segment Routing Policy Candidate Path grouping"; - leaf protocol-origin { - type identityref { - base sr-policy-types:protocol-origin-type; - } - description - "SR Policy Candidate Path Protocol"; - reference - "RFC 9256: Segment Routing Policy Architecture"; - } - leaf originator { - type string; - description - "SR Policy Candidate Path Originator"; - reference - "RFC 9256: Segment Routing Policy Architecture"; - } - leaf discriminator { - type uint32 { - range "1..max"; - } - description - "SR Policy Candidate Path Discriminator"; - reference - "RFC 9256: Segment Routing Policy Architecture"; - } - leaf name { - type string; - description - "SR Policy Candidate Path name"; - reference - "RFC 9256: Segment Routing Policy Architecture"; - } - } - - augment "/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp" { - description - "Augmenting SR Policy"; - container sr-policy { - when "derived-from-or-self - (/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp/pcep:pst, - 'path-setup-sr') or - derived-from-or-self - (/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp/pcep:pst, - 'path-setup-srv6')" { - description - "Applicable for SR or SRv6"; - } - uses sr-policy; - container cp { - uses sr-policy-cp; - description - "SR Policy Candidate Path information"; - } - description - "SR Policy information"; - } - } -} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-pcep-srpolicy@2025-10-15.yang b/experimental/ietf-extracted-YANG-modules/ietf-pcep-srpolicy@2025-10-15.yang new file mode 100644 index 000000000..9f5e97914 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-pcep-srpolicy@2025-10-15.yang @@ -0,0 +1,491 @@ +module ietf-pcep-srpolicy { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-pcep-srpolicy"; + prefix pcep-srp; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-te-types { + prefix te-types; + reference + "RFC 8776: Common YANG Data Types for Traffic Engineering"; + } + import ietf-pcep { + prefix pcep; + reference + "RFC 9826: A YANG Data Model for Path + Computation Element Communications Protocol (PCEP)"; + } + import ietf-sr-policy-types { + prefix sr-policy-types; + reference + "I-D.ietf-spring-sr-policy-yang: YANG Data Model for + Segment Routing Policy"; + } + + organization + "IETF PCE (Path Computation Element) Working Group"; + contact + "WG Web: + WG List: + Editor: Cheng Li + + Shuping Peng + "; + description + "The YANG module augments the Path Computation Element + Communications Protocol (PCEP) YANG model with Segment + Routing (SR) Policy. + + Copyright (c) 2025 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."; + + revision 2025-10-15 { + description + "Initial revision."; + reference + "RFC XXXX: A YANG Data Model for Segment Routing (SR) Policy + and SRv6 support in Path Computation Element Communications + Protocol (PCEP)"; + } + + /* Features */ + + feature multipath { + description + "Support for multipath ERO."; + reference + "I-D.ietf-pce-multipath: PCEP Extensions for Signaling + Multipath Information"; + } + + feature algo { + description + "Support for SR Algorithm"; + reference + "I-D.ietf-pce-sid-algo: Carrying SR-Algorithm in Path + Computation Element Communication Protocol (PCEP)"; + } + + /* Identities */ + + identity sr-policy { + base te-types:association-type; + description + "SR Policy Association"; + reference + "I-D.ietf-pce-segment-routing-policy-cp: PCEP extension to + support Segment Routing Policy Candidate Paths"; + } + + identity nai-type { + description + "Base identity for NAI (Node or Adjacency Identifier) Type + (NT)"; + reference + "Derived from the specification of NAI Type (NT) field in + [I-D/related document section]."; + } + + identity nai-type-absent { + base nai-type; + description + "NT=0: The NAI is absent."; + } + + identity nai-type-ipv4-node-id { + base nai-type; + description + "NT=1: The NAI is an IPv4 node ID."; + } + + identity nai-type-ipv6-node-id { + base nai-type; + description + "NT=2: The NAI is an IPv6 node ID."; + } + + identity nai-type-ipv4-adjacency { + base nai-type; + description + "NT=3: The NAI is an IPv4 adjacency."; + } + + identity nai-type-ipv6-adjacency-global { + base nai-type; + description + "NT=4: The NAI is an IPv6 adjacency with global IPv6 + addresses."; + } + + identity nai-type-unnumbered-adjacency-ipv4-node-id { + base nai-type; + description + "NT=5: The NAI is an unnumbered adjacency with IPv4 node + IDs."; + } + + identity nai-type-ipv6-adjacency-linklocal { + base nai-type; + description + "NT=6: The NAI is an IPv6 adjacency with link-local + IPv6 addresses."; + } + + /* Groupings */ + + grouping sr-policy { + description + "Segment Routing Policy grouping"; + leaf headend { + type inet:ip-address-no-zone; + description + "SR Policy headend"; + reference + "RFC 9256: Segment Routing Policy Architecture"; + } + leaf color { + type sr-policy-types:color-type; + description + "SR Policy Color"; + reference + "RFC 9256: Segment Routing Policy Architecture"; + } + leaf endpoint { + type inet:ip-address-no-zone; + description + "SR Policy Endpoint"; + reference + "RFC 9256: Segment Routing Policy Architecture"; + } + leaf name { + type sr-policy-types:name-type; + description + "SR Policy name"; + reference + "RFC 9256: Segment Routing Policy Architecture"; + } + } + + grouping sr-policy-cp { + description + "Segment Routing Policy Candidate Path grouping"; + leaf protocol-origin { + type identityref { + base sr-policy-types:protocol-origin-type; + } + description + "SR Policy Candidate Path Protocol"; + reference + "RFC 9256: Segment Routing Policy Architecture"; + } + leaf originator { + type string; + description + "SR Policy Candidate Path Originator"; + reference + "RFC 9256: Segment Routing Policy Architecture"; + } + leaf discriminator { + type uint32 { + range "1..max"; + } + description + "SR Policy Candidate Path Discriminator"; + reference + "RFC 9256: Segment Routing Policy Architecture"; + } + leaf name { + type string; + description + "SR Policy Candidate Path name"; + reference + "RFC 9256: Segment Routing Policy Architecture"; + } + } + + grouping segment-list { + description + "Segment list grouping"; + container segment-list { + description + "Segments for given segment list"; + list segment { + key "index"; + description + "Configure Segment/hop at the index"; + uses segment-properties; + } + } + } + + grouping segment-properties { + description + "Segment properties grouping"; + leaf index { + type uint32; + description + "Segment index"; + } + leaf sid-value { + type uint32; + description + "SR-MPLS SID value"; + reference + "RFC 8664:Path Computation Element Communication Protocol + (PCEP) Extensions for Segment Routing"; + } + leaf nai-type { + type identityref { + base nai-type; + } + description + "Indicates the type and format of the NAI"; + } + choice nai { + description + "Choice for NAI Types"; + case ipv4-node-id { + when + "derived-from-or-self(./nai-type, + 'pcep-srp:nai-type-ipv4-node-id')"; + leaf ipv4-node-id { + type inet:ipv4-address-no-zone; + mandatory true; + description + "NT=1: IPv4 Node ID."; + } + } + case ipv6-node-id { + when + "derived-from-or-self(./nai-type, + 'pcep-srp:nai-type-ipv6-node-id')"; + leaf ipv6-node-id { + type inet:ipv6-address-no-zone; + mandatory true; + description + "NT=2: IPv6 Node ID."; + } + } + case ipv4-adjacency { + when + "derived-from-or-self(./nai-type, + 'pcep-srp:nai-type-ipv4-adjacency')"; + container ipv4-adjacency { + description + "NT=3: pair of IPv4 addresses (local, remote)."; + leaf local { + type inet:ipv4-address-no-zone; + mandatory true; + description + "local IPv4 address."; + } + leaf remote { + type inet:ipv4-address-no-zone; + mandatory true; + description + "remote IPv4 address."; + } + } + } + case ipv6-adjacency-global { + when + "derived-from-or-self(./nai-type, + 'pcep-srp:nai-type-ipv6-adjacency-global')"; + container ipv6-adjacency-global { + description + "NT=4: pair of global IPv6 addresses (local, remote)."; + leaf local { + type inet:ipv6-address-no-zone; + mandatory true; + description + "local IPv6 address."; + } + leaf remote { + type inet:ipv6-address-no-zone; + mandatory true; + description + "remote IPv6 address."; + } + } + } + case unnumbered-adjacency-ipv4-node-id { + when + "derived-from-or-self(./nai-type, + 'pcep-srp:nai-type-unnumbered-adjacency-ipv4-node-id')"; + container unnumbered-adjacency { + description + "NT=5: (node ID, interface ID) tuples for local and + remote."; + container local { + description + "local"; + leaf node-id { + type inet:ipv4-address-no-zone; + mandatory true; + description + "local node ID."; + } + leaf if-id { + type uint32; + mandatory true; + description + "local interface ID."; + } + } + container remote { + description + "remote"; + leaf node-id { + type inet:ipv4-address-no-zone; + mandatory true; + description + "remote node ID."; + } + leaf if-id { + type uint32; + mandatory true; + description + "remote interface ID."; + } + } + } + } + case ipv6-adjacency-linklocal { + when + "derived-from-or-self(./nai-type, + 'pcep-srp:nai-type-ipv6-adjacency-linklocal')"; + container ipv6-adjacency-linklocal { + description + "NT=6: (global IPv6 address, interface ID) tuples for + local/remote."; + container local { + description + "local"; + leaf global-address { + type inet:ipv6-address-no-zone; + mandatory true; + description + "local global address."; + } + leaf if-id { + type uint32; + mandatory true; + description + "local interface ID."; + } + } + container remote { + description + "remote"; + leaf global-address { + type inet:ipv6-address-no-zone; + mandatory true; + description + "remote global address."; + } + leaf if-id { + type uint32; + mandatory true; + description + "remote interface ID."; + } + } + } + } + case absent { + when + "derived-from-or-self(./nai-type, + 'pcep-srp:nai-type-absent')"; + description + "NT=0: NAI absent; no payload."; + } + } + leaf algorithm { + type uint8; + description + "SRv6 SID algorithm identifier"; + } + } + + augment "/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp" { + description + "Augmenting SR Policy"; + container sr-policy { + when + "derived-from-or-self + (/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp/pcep:pst, + 'path-setup-sr') or + derived-from-or-self + (/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp/pcep:pst, + 'path-setup-srv6')" { + description + "Applicable for SR or SRv6"; + } + uses sr-policy; + container cp { + uses sr-policy-cp; + description + "SR Policy Candidate Path information"; + } + description + "SR Policy information"; + } + } + + augment "/pcep:pcep/pcep:entity/pcep:capabilities" + + "/pcep:sr-mpls" { + description + "Augmenting Algorithm Capability"; + leaf algo { + if-feature "algo"; + type boolean; + default "false"; + description + "Indicates capability for SR-MPLS Algorithm"; + } + } + + augment "/pcep:pcep/pcep:entity/pcep:peers/pcep:peer" + + "/pcep:capabilities/pcep:sr-mpls" { + description + "Augmenting Algorithm Capability"; + leaf algo { + if-feature "algo"; + type boolean; + default "false"; + description + "Indicates capability for SR-MPLS Algorithm"; + } + } + + augment "/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp" { + description + "Augmenting SR-MPLS for LSP"; + container sr-mpls { + when + "derived-from-or-self + (/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp/pcep:pst, + 'path-setup-sr')" { + description + "For SR-MPLS path"; + } + uses segment-list; + description + "SR-MPLS information"; + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-pcep-srv6@2025-04-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-pcep-srv6@2025-10-15.yang similarity index 91% rename from experimental/ietf-extracted-YANG-modules/ietf-pcep-srv6@2025-04-21.yang rename to experimental/ietf-extracted-YANG-modules/ietf-pcep-srv6@2025-10-15.yang index fac72ca86..c27961ffa 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-pcep-srv6@2025-04-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-pcep-srv6@2025-10-15.yang @@ -23,7 +23,7 @@ module ietf-pcep-srv6 { import ietf-pcep { prefix pcep; reference - "I-D.ietf-pce-pcep-yang: A YANG Data Model for Path + "RFC 9826: A YANG Data Model for Path Computation Element Communications Protocol (PCEP)"; } @@ -54,7 +54,7 @@ module ietf-pcep-srv6 { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2025-04-21 { + revision 2025-10-15 { description "Initial revision."; reference @@ -88,6 +88,14 @@ module ietf-pcep-srv6 { (PCEP) Extensions for IPv6 Segment Routing"; } + feature algo { + description + "Support for SR Algorithm"; + reference + "I-D.ietf-pce-sid-algo: Carrying SR-Algorithm in Path + Computation Element Communication Protocol (PCEP)"; + } + /* Identity */ identity path-setup-srv6 { @@ -143,6 +151,13 @@ module ietf-pcep-srv6 { Adjacency Identifier (NAI) to SRv6 Segment Identifier (SID)"; } + leaf algo { + if-feature "algo"; + type boolean; + default "false"; + description + "Indicates capability for SRv6 Algorithm"; + } list srv6-msd { key "msd-type"; config false; @@ -189,6 +204,11 @@ module ietf-pcep-srv6 { description "The behavior associated with the SRv6 SIDs."; } + leaf algorithm { + type uint8; + description + "SRv6 SID algorithm identifier"; + } /*Query: Add NAI?*/ } 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 new file mode 100644 index 000000000..94cf0d065 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-power-and-energy@2026-01-22.yang @@ -0,0 +1,753 @@ +module ietf-power-and-energy { + yang-version 1.1; + + namespace "urn:ietf:params:xml:ns:yang:ietf-power-and-energy"; + prefix eo; + + import ietf-hardware { + prefix hw; + reference + "RFC 8348: A YANG Data Model for Hardware Management"; + } + + import ietf-iana-power-and-energy { + prefix ianaeo; + reference + "IANA-defined identities for power and energy class"; + } + + organization + "IETF GREEN Working Group"; + + contact + "WG Web: + WG List: "; + + description + "This YANG module specifies for Power and Energy monitoring and + control of devices within or connected to communication + networks. + + Copyright (c) 2025 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). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2026-01-22 { + description + "Initial revision"; + reference + "RFC XXXX: Energy Object YANG Data Model"; + } + + identity data-source-accuracy { + description + "Base identity for all possible data accuracy types. + This identity serves as the root for a hierarchy of accuracy + types, allowing for extensibility while maintaining alignment + with current and future industry standards. + + The hierarchy, as defined in this YANG module, is as follows. + Other modules may extend this hierarchy with additional + accuracy base- and sub-types as needed. + + data-source-accuracy + ├── accuracy-like-parent + ├── accuracy-unknown + │ └── accuracy-unavailable + ├── accuracy-estimated + │ ├── accuracy-static + │ ├── accuracy-historic + │ └── accuracy-learned + └── accuracy-measured + ├── accuracy-measured-bronze + │ ├── accuracy-measured-bronze-1 + │ ├── accuracy-measured-bronze-10 + │ ├── accuracy-measured-bronze-100 + │ └── accuracy-measured-bronze-1000 + ├── accuracy-measured-silver + │ └── accuracy-measured-silver-... + ├── accuracy-measured-gold + │ └── accuracy-measured-gold-... + ├── accuracy-measured-red + │ └── accuracy-measured-red-... + └── accuracy-measured-ones + + The accuracy levels under accuracy-measured are based on + percent-wise accuracy classes: + bronze: +/- 30% + silver: +/- 10% + gold: +/- 5% + red: +/- 2% + + In addition, the accuracy-measured-ones identity indicates + a power data measurement with all digits valid, except trailing + zeros. + + Since percent-wise accuracy works poorly for very small + values, standards such as IEC 62053, IEC 61850-7-4 and + IEEE 1451 define accuracy classes based on a combination of + percent-wise accuracy and absolute accuracy thresholds. + E.g. +/-1 % of reading + +/-0.05 absolute units. + + Similarly, for each percent-wise accuracy class, this module + defines a few absolute tolerance classes, indicated by + suffixes to the accuracy identity names. The suffixes indicate + absolute accuracy thresholds: + no suffix: +/-0.5 absolute units + -1: +/-1 absolute unit + -10: +/-10 absolute units + -100: +/-100 absolute units + -1000: +/-1000 absolute units + Thus, for example, accuracy-measured-gold-10 indicates + a power data measurement with an accuracy of either + +/-5% or +/-10 absolute units, whichever is larger. + + For example, a power sensor reading might report a value + of 16250, with unit multiplier of milli (10^-3), under + accuracy-measured-gold-10. This indicates that the actual + power value is between 16.2375 and 16.2625 Watts, since + 5% of 16.250 Watts is 0.8125 Watts, which is greater than + the absolute threshold of 10 milliwatts (0.010 W). + + At another time, the same sensor might report a value + of 150, with unit multiplier of milli (10^-3), under + accuracy-measured-gold-10. This indicates that the actual + power value is between 0.140 and 0.160 Watts, since 5% of + 0.150 Watts is only 0.0075 Watts, which is less than the + absolute threshold of 10 milliwatts (0.010 W)."; + } + identity accuracy-unknown { + base data-source-accuracy; + description + "The accuracy of the power data is unknown."; + } + identity accuracy-unavailable { + base accuracy-unknown; + description + "A power data is not available for some reason, such + as a sensor failure or a component being powered off."; + } + identity accuracy-like-parent { + base data-source-accuracy; + description + "The accuracy of the power/energy data is the same as this energy + object's parent object. This identity is useful for hierarchical + energy objects where child objects inherit the accuracy + characteristics."; + } + identity accuracy-estimated { + base data-source-accuracy; + description + "The power data is estimated, perhaps based on a model, + history or calculation rather than a direct measurement."; + } + identity accuracy-static { + base accuracy-estimated; + description + "The power data is based on static data, such as + manufacturer specifications, datasheet of typical power values + or nameplate ratings, rather than real-time measurements."; + } + identity accuracy-historic { + base accuracy-estimated; + description + "The power data is based on an historic measurement data + for this specific system and usage pattern."; + } + identity accuracy-learned { + base accuracy-estimated; + description + "The power data is based on an machine learning + model prediction."; + } + identity accuracy-measured { + base data-source-accuracy; + description + "The power data is a direct, real-time measurement + from a sensor."; + } + identity accuracy-measured-bronze { + base accuracy-measured; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 30% OR |actual-sensor| ≤ 0.5"; + } + identity accuracy-measured-bronze-1 { + base accuracy-measured-bronze; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 30% OR |actual-sensor| ≤ 1"; + } + identity accuracy-measured-bronze-10 { + base accuracy-measured-bronze; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 30% OR |actual-sensor| ≤ 10"; + } + identity accuracy-measured-bronze-100 { + base accuracy-measured-bronze; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 30% OR |actual-sensor| ≤ 100"; + } + identity accuracy-measured-bronze-1000 { + base accuracy-measured-bronze; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 30% OR |actual-sensor| ≤ 1000"; + } + identity accuracy-measured-silver { + base accuracy-measured; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 10% OR |actual-sensor| ≤ 0.5"; + } + identity accuracy-measured-silver-1 { + base accuracy-measured-silver; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 10% OR |actual-sensor| ≤ 1"; + } + identity accuracy-measured-silver-10 { + base accuracy-measured-silver; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 10% OR |actual-sensor| ≤ 10"; + } + identity accuracy-measured-silver-100 { + base accuracy-measured-silver; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 10% OR |actual-sensor| ≤ 100 "; + } + identity accuracy-measured-silver-1000 { + base accuracy-measured-silver; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 10% OR |actual-sensor| ≤ 1000"; + } + identity accuracy-measured-gold { + base accuracy-measured; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 5% OR |actual-sensor| ≤ 0.5"; + } + identity accuracy-measured-gold-1 { + base accuracy-measured-gold; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 5% OR |actual-sensor| ≤ 1"; + } + identity accuracy-measured-gold-10 { + base accuracy-measured-gold; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 5% OR |actual-sensor| ≤ 10"; + } + identity accuracy-measured-gold-100 { + base accuracy-measured-gold; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 5% OR |actual-sensor| ≤ 100"; + } + identity accuracy-measured-gold-1000 { + base accuracy-measured-gold; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 5% OR |actual-sensor| ≤ 1000"; + } + identity accuracy-measured-red { + base accuracy-measured; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 2% OR |actual-sensor| ≤ 0.5"; + } + identity accuracy-measured-red-1 { + base accuracy-measured-red; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 2% OR |actual-sensor| ≤ 1"; + } + identity accuracy-measured-red-10 { + base accuracy-measured-red; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 2% OR |actual-sensor| ≤ 10"; + } + identity accuracy-measured-red-100 { + base accuracy-measured-red; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 2% OR |actual-sensor| ≤ 100"; + } + identity accuracy-measured-red-1000 { + base accuracy-measured-red; + description + "The power data is a direct, real-time measurement + from a sensor with precision and accuracy such that + |actual-sensor| ≤ sensor * 2% OR |actual-sensor| ≤ 1000"; + } + identity accuracy-measured-ones { + base accuracy-measured; + description + "The power data is a direct, real-time measurement + from a sensor with all digits valid, except trailing zeros. + For example, a sensor reading of 12300 represents + a sensor value between 12250 and 12350."; + } + + typedef power-factor { + type uint8 { + range "0 .. 100"; + } + default 100; + description + "The percent value of the power factor measurement. + Leaf often omitted, implying 100%."; + reference + "Replaces RFC 7460: eoPowerCurrentType object"; + } + + identity power-state { + description + "Base identity for all possible power states. This identity + serves as the root for a hierarchy of power states, allowing + for extensibility while maintaining alignment with the IANA + Power State Set Registry."; + reference + "IANA: Power State Set Registry"; + } + + identity unit-multiplier { + description + "Base identity for unit multipliers as defined in IEC 61850-7-3 + Annex A. These represent exponents of 10 for scaling units + associated with the integer units used to measure the power or + energy. + yocto(-24), -- 10^-24 + zepto(-21), -- 10^-21 + atto(-18), -- 10^-18 + femto(-15), -- 10^-15 + pico(-12), -- 10^-12 + nano(-9), -- 10^-9 + micro(-6), -- 10^-6 + milli(-3), -- 10^-3 + units(0), -- 10^0 + kilo(3), -- 10^3 + mega(6), -- 10^6 + giga(9), -- 10^9 + tera(12), -- 10^12 + peta(15), -- 10^15 + exa(18), -- 10^18 + zetta(21), -- 10^21 + yotta(24) -- 10^24 + "; + reference + "RFC 7460: UnitMultiplier"; + } + identity multiplier-yocto { + description + "Represents a multiplier of 10^-24 associated with the + integer units used to measure the power or energy."; + } + identity multiplier-zepto { + description + "Represents a multiplier of 10^-21 associated with the + integer units used to measure the power or energy."; + } + identity multiplier-atto { + description + "Represents a multiplier of 10^-18 associated with the + integer units used to measure the power or energy."; + } + identity multiplier-femto { + description + "Represents a multiplier of 10^-15 associated with the + integer units used to measure the power or energy."; + } + identity multiplier-pico { + description + "Represents a multiplier of 10^-12 associated with the + integer units used to measure the power or energy."; + } + identity multiplier-nano { + description + "Represents a multiplier of 10^-9 associated with the + integer units used to measure the power or energy."; + } + identity multiplier-micro { + description + "Represents a multiplier of 10^-6 (0.000001) associated with the + integer units used to measure the power or energy."; + } + identity multiplier-milli { + description + "Represents a multiplier of 10^-3 (0.001) associated with the + integer units used to measure the power or energy."; + } + identity multiplier-units { + description + "Represents a multiplier of 10^0 (1) associated with + the integer units used to measure the power or energy."; + } + identity multiplier-kilo { + 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 + "Represents a multiplier of 10^6 (1,000,000) associated with + the integer units used to measure the power or energy."; + } + identity multiplier-giga { + description + "Represents a multiplier of 10^9 (1,000,000,000) associated + with the integer units used to measure the power or energy."; + } + identity multiplier-tera { + description + "Represents a multiplier of 10^12 associated + with the integer units used to measure the power or energy."; + } + identity multiplier-peta { + description + "Represents a multiplier of 10^15 associated + with the integer units used to measure the power or energy."; + } + identity multiplier-exa { + description + "Represents a multiplier of 10^18 associated + with the integer units used to measure the power or energy."; + } + identity multiplier-zetta { + description + "Represents a multiplier of 10^21 associated + with the integer units used to measure the power or energy."; + } + identity multiplier-yotta { + description + "Represents a multiplier of 10^24 associated + with the integer units used to measure the power or energy."; + } + identity energy-relationship-type { + description "Base identity for energy object relationships"; + reference "RFC 7461: IANAEnergyRelationship"; + } + identity powered-by { + base energy-relationship-type; + description "Energy Object A is powered by Energy Object B"; + } + identity powering { + base energy-relationship-type; + description "Energy Object A is powering Energy Object B"; + } + identity metered-by { + base energy-relationship-type; + description "Energy Object A is metered by Energy Object B"; + } + identity metering { + base energy-relationship-type; + description "Energy Object A is metering Energy Object B"; + } + identity aggregated-by { + base energy-relationship-type; + description "Energy Object A is aggregated by Energy Object B"; + } + identity aggregating { + base energy-relationship-type; + description "Energy Object A is aggregating Energy Object B"; + } + + container energy-objects { + config false; + description + "Energy objects container for power and energy attributes."; + reference + "RFC 7460: eoPowerTable"; + + list energy-entry { + key "object-id"; + description + "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."; + } + + leaf source-component-id { + type leafref { + path "/hw:hardware/hw:component/hw:name"; + } + description + "Reference to the component name in the ietf-hardware + model. This leaf creates a direct semantic link between the + power/energy attributes and the physical component they describe. + "; + } + + container power { + description + "Container for power measurement attributes."; + reference + "RFC 7460: eoPowerEntry attributes"; + leaf instantaneous-power { + type int32; + units "Watts"; + mandatory true; + description + "The power usage measurement for the energy object right now. + This value represents the instantaneous power consumption + of the component. This value is specified in SI units of watts + with the magnitude of watts (milliwatts, kilowatts, etc.) indicated + separately as unit-multiplier in this container. Positive values + 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 { + type uint32; + units "Watts"; + description + "The nameplate power rating of an energy object. This is + 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 { + type identityref { + base unit-multiplier; + } + mandatory true; + description + "The unit multiplier used to measure the power. + 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 { + type identityref { + base data-source-accuracy; + } + default accuracy-like-parent; + description + "The accuracy of the power data source. Indicates whether + the data source is a direct measurement, an estimate, or + unavailable and also the accuracy level of the data source. + By default, the accuracy is inherited from the parent energy + object, facilitating hierarchical accuracy definitions + without the need to specify accuracy at every level. + 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 { + type power-factor; + description + "The percent value of the power factor measurement for the + 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 { + type boolean; + description + "Indicates whether the power measurement is local (true) or + remote (false). A local measurement is taken directly at + 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; + units "Watt-hours"; + description + "The total cumulative energy consumed by the energy object + since the last reset. This value is specified as + watt-hours with the magnitude of watt-hours (milliwatt-hours, + kilowatt-hours, etc.) indicated separately as unit-multiplier + 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 { + type uint64; + units "Watt-hours"; + description + "The total cumulative energy delivered by the energy object + since the last reset. This value is specified as + watt-hours with the magnitude of watt-hours (milliwatt-hours, + kilowatt-hours, etc.) indicated separately as unit-multiplier + in this container. This value is relevant for energy objects + 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 { + base unit-multiplier; + } + description + "This multiplier applies to both total-energy-consumed + and total-energy-delivered values. It determines the scale + 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 { + type identityref { + base data-source-accuracy; + } + default accuracy-like-parent; + description + "The accuracy of the energy data source. Indicates whether + the data source is a direct measurement, an estimate, or + unavailable and also the accuracy level of the data source. + By default, the accuracy is inherited from the parent energy + object, facilitating hierarchical accuracy definitions + without the need to specify accuracy at every level. + 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; + description + "Indicates whether the energy measurement is local (true) or + remote (false). A local measurement is taken directly at + 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 { + base ianaeo:certification-type; + } + description + "List of certifications applicable to this energy object. If + this list is empty, the energy object has no certifications."; + } + } + list relationship { + key "type"; + description "Relationships for this energy entry. Replaces + RFC 7461 eoRelationTable."; + reference + "RFC 7461: eoRelationTable, eoRelationEntry"; + + leaf type { + type identityref { + base energy-relationship-type; + // powered-by, powering, metered-by, metering, etc. + } + 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; + description "This id specifies the Universally Unique + Identifier (UUID) of the peer (other) Energy Object that + this energy object is powering/powered-by/metering/ + 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; + description + "Human-readable details of the peer relationship. + Useful when network level UUID of the peer is not + known."; + } + } + } + } + } +} + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-relevant-state@2025-04-25.yang b/experimental/ietf-extracted-YANG-modules/ietf-relevant-state@2026-02-12.yang similarity index 84% rename from experimental/ietf-extracted-YANG-modules/ietf-relevant-state@2025-04-25.yang rename to experimental/ietf-extracted-YANG-modules/ietf-relevant-state@2026-02-12.yang index 897756d9d..21b293f3d 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-relevant-state@2025-04-25.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-relevant-state@2026-02-12.yang @@ -6,12 +6,12 @@ module ietf-relevant-state { import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types"; + "draft-ietf-netmod-rfc6991-bis-18: Common YANG Data Types"; } import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types"; + "draft-ietf-netmod-rfc6991-bis-18: Common YANG Data Types"; } organization @@ -36,7 +36,7 @@ module ietf-relevant-state { analytical problem data equally. Describing the relevant-state of observed symptoms. - Copyright (c) 2025 IETF Trust and the persons + 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 @@ -53,7 +53,7 @@ module ietf-relevant-state { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2025-04-25 { + revision 2026-02-12 { description "Initial version"; reference @@ -69,34 +69,34 @@ module ietf-relevant-state { "Number that indicates a score between 0 and 100."; } - identity network-anomaly-state { + identity network-anomaly-stage { description - "Base identity for representing the state of the network - anomaly."; + "Base identity for representing the of the network anomaly + stage."; reference "Section 6 in draft-ietf-nmop-network-anomaly-lifecycle."; } identity detection { - base network-anomaly-state; + base network-anomaly-stage; description - "A problem reached detection state."; + "A problem is int the detection stage."; reference "Section 6.1 in draft-ietf-nmop-network-anomaly-lifecycle."; } identity validation { - base network-anomaly-state; + base network-anomaly-stage; description - "A problem reached validation state."; + "A problem is int the validation stage."; reference "Section 6.2 in draft-ietf-nmop-network-anomaly-lifecycle."; } identity refinement { - base network-anomaly-state; + base network-anomaly-stage; description - "A problem reached refinement state."; + "A problem is int the refinement stage."; reference "Section 6.3 in draft-ietf-nmop-network-anomaly-lifecycle."; } @@ -226,26 +226,35 @@ module ietf-relevant-state { } leaf strategy { type string; - mandatory false; description "Captures one approach to look at the data (as a human operator does) to observe if an abnormal situation is arising."; reference "Section 3.5.3 in - draft-ietf-nmop-network-anomaly-architecture."; + draft-ietf-nmop-network-anomaly-architecture."; } leaf confidence-score { type score; description - "Score indicating how confident were the detectors - in relation to the overall relevant state."; + "Indicates how confident the detector detected an outlier. The + higher the value the higher the confidence in relation to the + overall relevant state."; } leaf concern-score { type score; mandatory true; description - "Score indicating the degree of concern in - relation to the overall relevant state."; + "Indicates how concerned network operation on connectivity + service degradation should be. The higher the value the higher + the concern in relation to the overall relevant state."; + } + leaf stage { + type identityref { + base network-anomaly-stage; + } + mandatory true; + description + "Stage of the relevant state."; } choice service { description @@ -271,7 +280,6 @@ module ietf-relevant-state { } leaf version { type string; - mandatory false; description "Version of the annotator."; } @@ -293,6 +301,21 @@ module ietf-relevant-state { } } + grouping message-broker-grouping { + description + "References message broker draft-ietf-nmop-yang-message-broker-integration entities."; + leaf topic-name { + type inet:host-name; + description + "From which message broker topic the operational data was consumed from."; + } + leaf subject-name { + type inet:host-name; + description + "To which message broker subject the operational data references to."; + } + } + grouping anomaly-grouping { description "List of anomalies that are part of the relevant state"; @@ -320,13 +343,13 @@ module ietf-relevant-state { "URI to viusalize the analytical metrics of the anomaly."; } - leaf state { + leaf stage { type identityref { - base network-anomaly-state; + base network-anomaly-stage; } mandatory true; description - "State of the anomaly."; + "Stage of the anomaly."; } leaf description { type string; @@ -354,9 +377,9 @@ module ietf-relevant-state { leaf confidence-score { type score; description - "Score indicating how confident was the detector - while considering the given anomaly as part of the - relevant event."; + "Indicates how confident the detector detected an outlier. The + higher the value the higher the confidence in relation to the + anomaly."; } leaf pattern { type identityref { @@ -373,6 +396,11 @@ module ietf-relevant-state { annotation."; uses annotator-grouping; } + container operational-data { + description + "References the operational data from where the anomaly was observed."; + uses message-broker-grouping; + } container symptom { presence "It specifies the symptom for the anomaly"; description @@ -420,7 +448,6 @@ module ietf-relevant-state { } leaf version { type string; - mandatory false; description "Version of the publisher."; } @@ -430,6 +457,7 @@ module ietf-relevant-state { } container relevant-state { + presence "relevant-state"; description "A Relevant State is a state that have relevancy for network operators, as those are states that could lead diff --git a/experimental/ietf-extracted-YANG-modules/ietf-rpki-rtr@2022-10-18.yang b/experimental/ietf-extracted-YANG-modules/ietf-rpki-rtr@2026-03-31.yang similarity index 85% rename from experimental/ietf-extracted-YANG-modules/ietf-rpki-rtr@2022-10-18.yang rename to experimental/ietf-extracted-YANG-modules/ietf-rpki-rtr@2026-03-31.yang index 4a52b9c9b..17ed24ad0 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-rpki-rtr@2022-10-18.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-rpki-rtr@2026-03-31.yang @@ -5,18 +5,18 @@ module ietf-rpki-rtr { import ietf-yang-types { prefix "yang"; reference - "RFC 6991: Common YANG Data Types."; + "RFC 9911: Common YANG Data Types"; } import ietf-inet-types { prefix "inet"; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } import ietf-routing { prefix rt; reference "RFC 8349: A YANG Data Model for Routing Management - (NMDA Version)."; + (NMDA Version)"; } import iana-crypt-hash { prefix "ianach"; @@ -26,48 +26,74 @@ module ietf-rpki-rtr { import ietf-ssh-client { prefix "ssh"; reference - "RFC XXXX: YANG Groupings for SSH Clients and SSH Servers"; + "RFC 9644: YANG Groupings for SSH Clients and SSH Servers"; } import ietf-interfaces { prefix "if"; - reference - "RFC 8343, A YANG Data Model for Interface Management."; + reference + "RFC 8343: A YANG Data Model for Interface Management"; } import ietf-key-chain { prefix key-chain; reference - "RFC 8177: YANG Key Chain."; + "RFC 8177: YANG Data Model for Key Chains"; } + organization - "IETF SIDROPS Working Group"; + "IETF Secure Inter-Domain Routing Operations (SIDROPS) + Working Group"; + contact - "TBD"; + "WG Web: + WG List: SIDROPS + + Editor: Yisong Liu + + Editor: Changwang Lin + + Editor: Haibo Wang + + Editor: Jishnu Roy + + Editor: Jeffrey Haas + + Editor: Hongwei Liu + + Editor: Di Ma + "; + description "This module describes a YANG model for the Resource Public - Key Infrastructure (RPKI) to Router Protocol configuration. - This YANG model conforms to the Network Management - Datastore Architecture (NMDA) as described in RFC 8342. - Copyright (c) 2022 IETF Trust and the persons identified as - authors of the code. All rights reserved. + Key Infrastructure (RPKI) to Router (RTR) protocol management. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Revised BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC XXXX; - see the RFC itself for full legal notices. - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL - NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', - 'MAY', 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."; - reference "RFC 8210"; - revision 2022-10-18 { + + 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 2026-03-31 { description "Initial Version"; reference - "RFC 8210, YANG Data Model for RPKI to Router Protocol"; + "RFC XXXX: YANG Data Model for RPKI to Router Protocol"; } typedef ipv4-pfx-len { type uint8 { @@ -93,7 +119,7 @@ module ietf-rpki-rtr { identity rpki-rtr { base rt:routing-protocol; description - "RPKI to Router protocol."; + "RTR protocol."; } grouping records-limit { description @@ -154,14 +180,14 @@ module ietf-rpki-rtr { when "derived-from-or-self(rt:type, 'rpki-rtr')" { description "This augmentation is valid for a routing protocol - instance of RPKI to Router."; + instance of RTR."; } description - "RPKI to Router protocol augmentation of ietf-routing module + "RTR protocol augmentation of ietf-routing module control-plane-protocol."; container rpki-rtr { description - "Configuration parameters for the RPKI to Router Protocol."; + "Configuration parameters for the RTR protocol."; container sessions { description "Parameters of RPKI sessions to cache servers."; @@ -269,10 +295,10 @@ module ietf-rpki-rtr { "Uses TCP-MD5 to secure the session."; } case ssh { - uses ssh:ssh-client-grouping { + uses ssh:ssh-client-grouping { reference - "RFC XXXX: YANG Groupings for SSH Clients and - SSH Servers"; + "RFC 9644: YANG Groupings for SSH Clients and + SSH Servers"; } description "Uses SSH to secure the session."; @@ -283,7 +309,7 @@ module ietf-rpki-rtr { description "Name of key chain."; reference - "RFC 8177: YANG Key Chain."; + "RFC 8177: YANG Data Model for Key Chains"; } description "Uses key-chain to secure the session."; @@ -298,8 +324,9 @@ module ietf-rpki-rtr { } container aspa-limit { description - "Limit of ASPA records that can be received from the - RPKI cache server."; + "Limit of Autonomous System Provider Authorization + (ASPA) records that can be received from the RPKI + cache server."; uses records-limit; } container statistics { @@ -361,7 +388,8 @@ module ietf-rpki-rtr { in UTC (assuming the session is in the UP state, per the session-state leaf)."; reference - "RFC 6810: The Resource Public Key Infrastructure."; + "RFC 6810: The Resource Public Key Infrastructure + (RPKI) to Router Protocol"; } leaf last-update-sync-timestamp { type yang:timestamp; @@ -420,13 +448,11 @@ module ietf-rpki-rtr { container protocol-data { config false; description - "State parameters related to the RPKI to router - protocol"; + "State parameters related to the RTR protocol"; leaf protocol-version { type uint32; description - "The version number of the RPKI to Router - Protocol."; + "The version number of the RTR protocol."; } leaf refresh-time { type yang:timestamp; @@ -480,10 +506,10 @@ module ietf-rpki-rtr { and to bind it to the sequence of Serial Numbers that cache instance will generate."; reference - "RFC 6810, The Resource Public Key Infrastructure - (RPKI) to Router Protocol - RFC 8210, The Resource Public Key Infrastructure - (RPKI) to Router Protocol, Version 1"; + "RFC 6810: The Resource Public Key Infrastructure + (RPKI) to Router Protocol + RFC 8210: The Resource Public Key Infrastructure + (RPKI) to Router Protocol, Version 1"; } leaf serial-full { type uint32; @@ -494,10 +520,10 @@ module ietf-rpki-rtr { version of a cache. It resembles the latest full query."; reference - "RFC 6810, The Resource Public Key Infrastructure - (RPKI) to Router Protocol - RFC 8210, The Resource Public Key Infrastructure - (RPKI) to Router Protocol, Version 1"; + "RFC 6810: The Resource Public Key Infrastructure + (RPKI) to Router Protocol + RFC 8210: The Resource Public Key Infrastructure + (RPKI) to Router Protocol, Version 1"; } leaf serial-incremental { type uint32; @@ -508,10 +534,10 @@ module ietf-rpki-rtr { version of a cache. It resembles the latest incremental query."; reference - "RFC 6810, The Resource Public Key Infrastructure - (RPKI) to Router Protocol - RFC 8210, The Resource Public Key Infrastructure - (RPKI) to Router Protocol, Version 1"; + "RFC 6810: The Resource Public Key Infrastructure + (RPKI) to Router Protocol + RFC 8210: The Resource Public Key Infrastructure + (RPKI) to Router Protocol, Version 1"; } leaf in-total-messages { type yang:zero-based-counter64; @@ -575,7 +601,7 @@ module ietf-rpki-rtr { config false; description "Counters of error PDUs that originate from router - or cache server"; + or cache server"; leaf corrupt-data { type yang:zero-based-counter64; description diff --git a/experimental/ietf-extracted-YANG-modules/ietf-rpki-table@2022-10-18.yang b/experimental/ietf-extracted-YANG-modules/ietf-rpki-table@2026-03-31.yang similarity index 71% rename from experimental/ietf-extracted-YANG-modules/ietf-rpki-table@2022-10-18.yang rename to experimental/ietf-extracted-YANG-modules/ietf-rpki-table@2026-03-31.yang index 0dab6e475..fe06fb9c6 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-rpki-table@2022-10-18.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-rpki-table@2026-03-31.yang @@ -5,49 +5,76 @@ module ietf-rpki-table { import ietf-yang-types { prefix "yang"; reference - "RFC 6991: Common YANG Data Types."; + "RFC 9911: Common YANG Data Types"; } import ietf-inet-types { prefix "inet"; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } import ietf-routing { prefix rt; reference "RFC 8349: A YANG Data Model for Routing Management - (NMDA Version)."; + (NMDA Version)"; } + organization - "IETF SIDROPS Working Group"; + "IETF Secure Inter-Domain Routing Operations (SIDROPS) + Working Group"; + contact - "TBD"; + "WG Web: + WG List: SIDROPS + + Editor: Yisong Liu + + Editor: Changwang Lin + + Editor: Haibo Wang + + Editor: Jishnu Roy + + Editor: Jeffrey Haas + + Editor: Hongwei Liu + + Editor: Di Ma + "; + description "This module describes a YANG model for the Resource Public - Key Infrastructure (RPKI) to Router Protocol configuration. - This YANG model conforms to the Network Management - Datastore Architecture (NMDA) as described in RFC 8342. - Copyright (c) 2022 IETF Trust and the persons identified as - authors of the code. All rights reserved. + Key Infrastructure (RPKI) to Router (RTR) protocol data + management. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Revised BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC XXXX; - see the RFC itself for full legal notices. - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL - NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', - 'MAY', 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."; - reference "RFC 8210"; - revision 2022-10-18 { + + 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 2026-03-31 { description "Initial Version"; reference - "RFC 8210, YANG Data Model for RPKI to Router Protocol"; + "RFC XXXX: YANG Data Model for RPKI to Router Protocol"; } typedef ipv4-pfx-len { type uint8 { @@ -75,24 +102,23 @@ module ietf-rpki-table { length 32; } description - "Canonical Cache Representation state hash. + "Canonical Cache Representation (CCR) state hash. - This represents a 256-bit SHA-256 hash of - the canonical representation of RPKI data as - defined in draft-ietf-sidrops-rpki-ccr. + This represents a 256-bit SHA-256 hash of the canonical + representation of RPKI data as defined in RFC YYYY. - The hash provides a compact, verifiable - representation of the complete state of RPKI - validation data, enabling efficient synchronization - and consistency verification between caches."; + The hash provides a compact, verifiable representation + of the complete state of RPKI validation data, enabling + efficient synchronization and consistency verification + between caches."; reference - "draft-ietf-sidrops-rpki-ccr: Canonical Cache - Representation for the Resource Public Key - Infrastructure (RPKI)"; + "RFC YYYY: A Profile for Resource Public Key Infrastructure + (RPKI) Canonical Cache Representation (CCR)"; } grouping aspa-overall-records { description - "ASPAs received from all RPKI cache servers."; + "Autonomous System Provider Authorization (ASPA) records + received from all RPKI cache servers."; list aspas { key "customer-asn"; description @@ -143,15 +169,15 @@ module ietf-rpki-table { description "CCR state hash for the ROA payload. - This hash represents the canonical state of - this specific ROA entry as defined in the CCR - specification. It can be used to verify - the integrity and consistency of ROA data - between different RPKI cache implementations."; + This hash represents the canonical state of this + specific ROA entry as defined in the CCR specification. + It is optional and can be used to verify the integrity + and consistency of ROA data originating from the RPKI + cache."; reference - "draft-ietf-sidrops-rpki-ccr: Canonical Cache - Representation for the Resource Public Key - Infrastructure (RPKI)"; + "RFC YYYY: A Profile for Resource Public Key + Infrastructure (RPKI) Canonical Cache + Representation (CCR)"; } container ipv4 { config false; @@ -181,8 +207,8 @@ module ietf-rpki-table { leaf asn { type inet:as-number; description - "The origin AS number of the Validated - ROA Payload."; + "The origin AS number of the Validated ROA + Payload."; } leaf source { type union { @@ -219,8 +245,8 @@ module ietf-rpki-table { container vrps { config false; description - "Validated ROA Payloads received from the RPKI - cache server."; + "Validated ROA Payloads received from the RPKI cache + server."; list vrp { key "prefix max-len asn source"; description @@ -228,8 +254,7 @@ module ietf-rpki-table { leaf prefix { type inet:ipv6-prefix; description - "The IPv6 prefix of the Validated ROA - Payload."; + "The IPv6 prefix of the Validated ROA Payload."; } leaf max-len { type ipv6-pfx-len; @@ -287,7 +312,7 @@ module ietf-rpki-table { leaf name { type string; description - "Name of the router-key-table."; + "Name of the router key table."; } leaf ccr-routerkeystate-hash { type ccr-hash; @@ -296,13 +321,13 @@ module ietf-rpki-table { This hash represents the canonical state of this specific Router Key entry as defined in the CCR - specification. It enables efficient verification - of BGPsec router key data consistency across - different cache implementations."; + specification. It is optional and can effectively + verify the consistency of BGPsec router key data + derived from the RPKI cache."; reference - "draft-ietf-sidrops-rpki-ccr: Canonical Cache - Representation for the Resource Public Key - Infrastructure (RPKI)"; + "RFC YYYY: A Profile for Resource Public Key + Infrastructure (RPKI) Canonical Cache + Representation (CCR)"; } container router-keys { config false; @@ -318,7 +343,7 @@ module ietf-rpki-table { "A router key's Subject Key Identifier (SKI)."; reference "RFC 6487: A Profile for X.509 PKIX Resource - Certificates"; + Certificates"; } leaf asn { type inet:as-number; @@ -332,7 +357,7 @@ module ietf-rpki-table { "A router key's subjectPublicKeyInfo value."; reference "RFC 8608: BGPsec Algorithms, Key Formats, and - Signature Formats"; + Signature Formats"; } leaf server-address { type inet:ip-address; @@ -348,14 +373,14 @@ module ietf-rpki-table { description "List of tables of ASPAs received from all RPKI cache servers."; - list aspa-table { + list aspa-table { key "name"; description "Table of ASPAs received from all RPKI cache servers."; leaf name { type string; description - "Name of the ASPA-table."; + "Name of the ASPA table."; } leaf ccr-aspapayloadstate-hash { type ccr-hash; @@ -363,14 +388,14 @@ module ietf-rpki-table { "CCR state hash for the ASPA payload. This hash represents the canonical state of this - specific ASPA (Autonomous System Provider - Authorization) entry as defined in the CCR - specification. It facilitates consistency - checking for AS path validation data."; + specific ASPA entry as defined in the CCR + specification. It is optional and facilitates + consistency checking for AS path validation data + originating from the RPKI cache."; reference - "draft-ietf-sidrops-rpki-ccr: Canonical Cache - Representation for the Resource Public Key - Infrastructure (RPKI)"; + "RFC YYYY: A Profile for Resource Public Key + Infrastructure (RPKI) Canonical Cache + Representation (CCR)"; } uses aspa-overall-records; } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-rsvp-te-mpls@2021-02-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-rsvp-te-mpls@2026-01-19.yang similarity index 98% rename from experimental/ietf-extracted-YANG-modules/ietf-rsvp-te-mpls@2021-02-21.yang rename to experimental/ietf-extracted-YANG-modules/ietf-rsvp-te-mpls@2026-01-19.yang index 34c601e17..4d98d9f77 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-rsvp-te-mpls@2021-02-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-rsvp-te-mpls@2026-01-19.yang @@ -83,7 +83,7 @@ module ietf-rsvp-te-mpls { // RFC Ed.: update the date below with the date of RFC publication // and remove this note. - revision 2021-02-21 { + revision 2026-01-19 { description "Update to MPLS RSVP-TE YANG initial revision."; reference @@ -105,13 +105,6 @@ module ietf-rsvp-te-mpls { reference "RFC4859: Registry for RSVP-TE Session Flags"; leaf-list session-attribute { - when "../session-attribute = - 'te-types:bandwidth-protection-desired' or - ../session-attribute = - 'te-types:soft-preemption-desired'" { - description - "Session attributes applicable to mpls technology"; - } type identityref { base te-types:session-attributes-flags; } @@ -525,6 +518,7 @@ module ietf-rsvp-te-mpls { uses lsp-properties-mpls; uses lsp-backup-info; } + augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths" + "/te:secondary-path/te:lsps/te:lsp" { when "/te:te/te:tunnels/te:tunnel" diff --git a/experimental/ietf-extracted-YANG-modules/ietf-rsvp-te@2021-02-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-rsvp-te@2026-01-19.yang similarity index 96% rename from experimental/ietf-extracted-YANG-modules/ietf-rsvp-te@2021-02-21.yang rename to experimental/ietf-extracted-YANG-modules/ietf-rsvp-te@2026-01-19.yang index e2f521755..3733bf5fc 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-rsvp-te@2021-02-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-rsvp-te@2026-01-19.yang @@ -91,7 +91,7 @@ module ietf-rsvp-te { // RFC Ed.: update the date below with the date of RFC publication // and remove this note. - revision 2021-02-21 { + revision 2026-01-19 { description "A YANG Data Model for RSVP-TE"; reference @@ -289,14 +289,6 @@ module ietf-rsvp-te { reference "RFC4859: Registry for RSVP-TE Session Flags"; leaf-list session-attribute { - when "../session-attribute != - 'te-types:bandwidth-protection-desired' or - ../session-attribute != - 'te-types:soft-preemption-desired'" { - description - "Session attributes applicable to generic technologies - only."; - } type identityref { base te-types:session-attributes-flags; } @@ -420,19 +412,35 @@ module ietf-rsvp-te { leaf tunnel-endpoint { type inet:ip-address; description - "XX"; + "RFC3209"; } leaf tunnel-id { type uint16; description - "XX"; + "RFC3209"; } leaf extended-tunnel-id { type inet:ip-address; description - "XX"; + "RFC3209"; + } + /* uses rsvp:session-attributes; */ + container psbs { + description + "Path State Block (PSB) container."; + list psb { + description + "List of Path State Blocks."; + } + } + container rsbs { + description + "Reservation State Block (RSB) container."; + list rsb { + description + "List of Reservation State Blocks."; + } } - uses rsvp:session-attributes; } } @@ -533,7 +541,6 @@ module ietf-rsvp-te { "RSVP-TE generic data augmentation pertaining to neighbors"; /* To be added */ } - /** * RSVP-TE generic augmentations of generic TE model. */ diff --git a/experimental/ietf-extracted-YANG-modules/ietf-rsvp@2024-02-28.yang b/experimental/ietf-extracted-YANG-modules/ietf-rsvp@2024-02-28.yang index 06c6de844..b55ae6a9c 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-rsvp@2024-02-28.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-rsvp@2024-02-28.yang @@ -47,7 +47,7 @@ module ietf-rsvp { Editor: Tarek Saad - + Editor: Rakesh Gandhi diff --git a/experimental/ietf-extracted-YANG-modules/ietf-schc-coap-kudos@2026-03-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-schc-coap-kudos@2026-03-02.yang new file mode 100644 index 000000000..8ee157a7a --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-schc-coap-kudos@2026-03-02.yang @@ -0,0 +1,78 @@ +module ietf-schc-coap-kudos { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-schc-coap-kudos"; + prefix schc-coap-kudos; + + import ietf-schc { + prefix schc; + } + + organization + "IETF Constrained RESTful Environments (core) Working Group"; + contact + "WG Web: + WG List: + Editor: Marco Tiloca + "; + description + "Copyright (c) 2021 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). + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices. + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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. + **************************************************************** + + This module extends the ietf-schc module defined in RFC 9363 to + include the extended format of the CoAP OSCORE option for using + Key Update for OSCORE (KUDOS), as defined in RFC YYYY."; + + revision 2026-03-02 { + description + "Extended OSCORE fields for Key Update for OSCORE (KUDOS)."; + reference + "RFC YYYY Key Update for OSCORE (KUDOS) + (see Sections 4.1 and 5)"; + } + + // Field ID + + identity fid-coap-option-oscore-x { + base "schc:fid-coap-option"; + description + "CoAP option OSCORE x field."; + reference + "RFC YYYY Key Update for OSCORE (KUDOS) + (see Sections 4.1 and 5)"; + } + + identity fid-coap-option-oscore-nonce { + base "schc:fid-coap-option"; + description + "CoAP option OSCORE nonce field."; + reference + "RFC YYYY Key Update for OSCORE (KUDOS) + (see Sections 4.1 and 5)"; + } + + // Function Length + + identity fl-oscore-oscore-nonce-length { + base "schc:fl-base-type"; + description + "Size in bytes of the OSCORE nonce corresponding to m+1."; + reference + "RFC YYYY Key Update for OSCORE (KUDOS) (see Section 5)"; + } +} + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-schc-coap@2025-07-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-schc-coap@2025-12-01.yang similarity index 78% rename from experimental/ietf-extracted-YANG-modules/ietf-schc-coap@2025-07-07.yang rename to experimental/ietf-extracted-YANG-modules/ietf-schc-coap@2025-12-01.yang index e958ac997..8ef59d666 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-schc-coap@2025-07-07.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-schc-coap@2025-12-01.yang @@ -36,7 +36,7 @@ module ietf-schc-coap { This module extends the ietf-schc module defined in RFC 9363 to include the new CoAP options as defined in RFC YYYY."; - revision 2025-07-07 { + revision 2025-12-01 { description "New CoAP extensions and extended OSCORE fields."; reference @@ -121,28 +121,6 @@ module ietf-schc-coap { Environments (OSCORE)"; } - identity fid-coap-option-oscore-x { - base "schc:fid-coap-option"; - description - "CoAP option OSCORE x field."; - reference - "RFC YYYY Static Context Header Compression (SCHC) for the - Constrained Application Protocol (CoAP) (see - Section 6.4) - RFC XXXX Key Update for OSCORE (KUDOS)"; - } - - identity fid-coap-option-oscore-nonce { - base "schc:fid-coap-option"; - description - "CoAP option OSCORE nonce field."; - reference - "RFC YYYY Static Context Header Compression (SCHC) for the - Constrained Application Protocol (CoAP) (see - Section 6.4) - RFC XXXX Key Update for OSCORE (KUDOS)"; - } - // Function Length identity fl-oscore-oscore-piv-length { @@ -154,16 +132,5 @@ module ietf-schc-coap { Constrained Application Protocol (CoAP) (see Section 6.4)"; } - - identity fl-oscore-oscore-nonce-length { - base "schc:fl-base-type"; - description - "Size in bytes of the OSCORE nonce corresponding to m+1."; - reference - "RFC YYYY Static Context Header Compression (SCHC) for the - Constrained Application Protocol (CoAP) (see - Section 6.4) - RFC XXXX Key Update for OSCORE (KUDOS)"; - } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2025-05-22.yang b/experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2025-10-20.yang similarity index 97% rename from experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2025-05-22.yang rename to experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2025-10-20.yang index 1ae2ad0b9..ec6efaf1a 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2025-05-22.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2025-10-20.yang @@ -82,10 +82,14 @@ module ietf-sr-policy { // RFC Editor: replace XXXX with actual RFC number and remove // this note - revision "2025-05-22" { - // RFC Editor: replace the above date 2024-11-22 with the date of - // publication and remove this note. + revision 2025-10-20 { + description + "Add the headend-address to the policy key to ensure global + uniqueness across multiple headends, consistent with RFC 9256."; + reference "RFC 9256"; + } + revision "2025-05-22" { description "Update the SR policy YANG model with more alignment with SR policy architecture"; @@ -96,9 +100,6 @@ module ietf-sr-policy { } revision "2024-11-22" { - // RFC Editor: replace the above date 2024-11-22 with the date of - // publication and remove this note. - description "Fix SR policy YANG model"; reference @@ -108,9 +109,6 @@ module ietf-sr-policy { } revision "2024-03-04" { - // RFC Editor: replace the above date 2024-03-04 with the date of - // publication and remove this note. - description "Alignment with SR policy architecture RFC9256"; reference @@ -162,10 +160,9 @@ module ietf-sr-policy { } description "SRv6 BSID behavior"; } - container sid-structure { description "SRv6 BSID structure"; - uses srv6-types:srv6-sid-structure; + uses srv6-types:srv6-sid-structure-grouping; } } @@ -181,7 +178,7 @@ module ietf-sr-policy { container sid-structure { description "SRv6 BSID structure"; - uses srv6-types:srv6-sid-structure; + uses srv6-types:srv6-sid-structure-grouping; } } @@ -547,7 +544,6 @@ module ietf-sr-policy { } } } - grouping segment-lists { description "Segment lists grouping"; @@ -596,7 +592,6 @@ module ietf-sr-policy { type uint32; description "Binding SID index"; } - leaf locator-name { type srv6-types:srv6-locator-name-type; description "Locator name used to allocate SRv6 binding SID"; @@ -1135,6 +1130,15 @@ module ietf-sr-policy { type sr-policy-types:name-type; description "SR policy name"; } + leaf headend { + type inet:ip-address; + description + "The IP address identifying the SR Policy headend node. + This addition ensures global uniqueness of the policy key + across multiple headends"; + reference + "RFC 9256: Section 2.1 - Identification of an SR Policy."; + } leaf color { type sr-policy-types:color-type; description "Color associated with the policy"; @@ -1212,7 +1216,6 @@ module ietf-sr-policy { description "Policy down time in seconds"; } } - grouping policy-properties { description "SR policy properties"; @@ -1330,9 +1333,13 @@ module ietf-sr-policy { description "SR Policy container"; list policy { - key "color endpoint"; + key "headend color endpoint"; unique "name"; - description "SR Policy properties"; + description + "List of SR Policies. Each SR Policy is uniquely identified + by the tuple globally, + as defined in RFC 9256. The headend identifies the ingress + node that instantiates or owns this policy."; uses policy-properties; uses candidate-paths; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-te-device@2024-02-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-te-device@2026-02-28.yang similarity index 93% rename from experimental/ietf-extracted-YANG-modules/ietf-te-device@2024-02-02.yang rename to experimental/ietf-extracted-YANG-modules/ietf-te-device@2026-02-28.yang index 22374521e..57353b47a 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-te-device@2024-02-02.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-te-device@2026-02-28.yang @@ -2,8 +2,6 @@ module ietf-te-device { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-te-device"; - /* Replace with IANA when assigned */ - prefix te-dev; /* Import TE module */ @@ -11,8 +9,8 @@ module ietf-te-device { import ietf-te { prefix te; reference - "RFCXXXX: A YANG Data Model for Traffic Engineering - Tunnels and Interfaces"; + "RFCXXXX: A YANG Data Model for Traffic Engineering Tunnels, + Label Switched Paths, and Interfaces."; } /* Import TE types */ @@ -21,7 +19,7 @@ module ietf-te-device { prefix te-types; reference "draft-ietf-teas-rfc8776-update: Common YANG Data Types - for Traffic Engineering."; + for Traffic Engineering."; } import ietf-interfaces { prefix if; @@ -38,7 +36,7 @@ module ietf-te-device { "IETF Traffic Engineering Architecture and Signaling (TEAS) Working Group"; contact - "WG Web: + "WG Web: WG List: Editor: Tarek Saad @@ -57,17 +55,13 @@ module ietf-te-device { Editor: Igor Bryskin - - - Editor: Oscar Gonzalez de Dios - "; + "; description "This module defines a data model for TE device configurations, - state, and RPCs. The model fully conforms to the - Network Management Datastore Architecture (NMDA). + state, and RPCs. - Copyright (c) 2023 IETF Trust and the persons identified as + Copyright (c) 2025 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or @@ -86,7 +80,7 @@ module ietf-te-device { // RFC Ed.: update the date below with the date of RFC publication // and remove this note. - revision 2024-02-02 { + revision 2026-02-28 { description "Initial revision for the TE device YANG module."; reference @@ -167,7 +161,7 @@ module ietf-te-device { when "../threshold-type = 'threshold-crossed'" { description "The selection of whether mirrored or separate threshold - values are to be used requires user specified thresholds + values are to be used requires user-specified thresholds to be set."; } type enumeration { @@ -280,11 +274,11 @@ module ietf-te-device { case value-admin-groups { choice value-admin-group-type { description - "choice of admin-groups."; + "The type of admin-groups."; case admin-groups { description "Administrative group/Resource - class/Color."; + class."; leaf admin-group { type te-types:admin-group; description @@ -295,7 +289,7 @@ module ietf-te-device { if-feature "te-types:extended-admin-groups"; description "Extended administrative group/Resource - class/Color."; + class."; leaf extended-admin-group { type te-types:extended-admin-group; description @@ -507,8 +501,7 @@ module ietf-te-device { type uint32; units "seconds"; description - "The time remaining for a existing LSP to be deleted - from forwarding."; + "The time remaining for an existing LSP to be torn down."; } } container downstream-info { @@ -517,26 +510,26 @@ module ietf-te-device { "Downstream information of the LSP."; } description - "downstream information."; + "Downstream information."; leaf nhop { type te-types:te-tp-id; description - "downstream next-hop address."; + "Downstream next-hop address."; } leaf outgoing-interface { type if:interface-ref; description - "downstream interface."; + "Downstream interface."; } container neighbor { uses te-types:te-generic-node-id; description - "downstream neighbor address."; + "Downstream neighbor address."; } leaf label { type rt-types:generalized-label; description - "downstream label."; + "Downstream label."; } } container upstream-info { @@ -545,21 +538,21 @@ module ietf-te-device { "Upstream information of the LSP."; } description - "upstream information."; + "Upstream information."; leaf phop { type te-types:te-tp-id; description - "upstream next-hop or previous-hop address."; + "Upstream next-hop or previous-hop address."; } container neighbor { uses te-types:te-generic-node-id; description - "upstream neighbor address."; + "Upstream neighbor address."; } leaf label { type rt-types:generalized-label; description - "upstream label."; + "Upstream label."; } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-te-packet-types@2025-01-24.yang b/experimental/ietf-extracted-YANG-modules/ietf-te-packet-types@2026-01-15.yang similarity index 95% rename from experimental/ietf-extracted-YANG-modules/ietf-te-packet-types@2025-01-24.yang rename to experimental/ietf-extracted-YANG-modules/ietf-te-packet-types@2026-01-15.yang index 67be760a1..54393a9c3 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-te-packet-types@2025-01-24.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-te-packet-types@2026-01-15.yang @@ -6,7 +6,7 @@ module ietf-te-packet-types { import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } import ietf-te-types { prefix te-types; @@ -14,9 +14,6 @@ module ietf-te-packet-types { "RFC XXXX: Common YANG Data Types for Traffic Engineering"; } - // RFC Editor: replace XXXX with actual RFC number - // and remove this note - organization "IETF Traffic Engineering Architecture and Signaling (TEAS) Working Group"; @@ -52,7 +49,7 @@ module ietf-te-packet-types { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here. - 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 @@ -66,7 +63,10 @@ module ietf-te-packet-types { (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself for full legal notices."; - revision 2025-01-24 { + // RFC Ed.: update the date below with the date of RFC publication + // and remove this note. + + revision 2026-01-15 { description "This revision adds the following new identities: - bandwidth-profile-type; @@ -84,10 +84,6 @@ module ietf-te-packet-types { reference "RFC XXXX: Common YANG Data Types for Traffic Engineering"; } - - // RFC Editor: replace XXXX with actual RFC number, update date - // information and remove this note - revision 2020-06-10 { description "Latest revision of TE MPLS types."; @@ -154,7 +150,7 @@ module ietf-te-packet-types { Section 4.4"; } - // Derived identities from te-types:link-metric-type + // Derived identities from te-types:path-metric-type identity path-metric-delay-variation { base te-types:path-metric-type; @@ -311,6 +307,12 @@ module ietf-te-packet-types { grouping performance-metrics-attributes-packet { description "Contains Performance Metrics (PM) information."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; uses te-types:performance-metrics-attributes { augment "performance-metrics-one-way" { description @@ -374,7 +376,7 @@ module ietf-te-packet-types { fraction-digits 6; range "0..50.331642"; } - units "%"; + units "percent"; description "One-way packet loss as a percentage of the total traffic sent over a configurable interval. @@ -486,7 +488,7 @@ module ietf-te-packet-types { fraction-digits 6; range "0..50.331642"; } - units "%"; + units "percent"; default "0"; description "Two-way packet loss as a percentage of the total traffic @@ -539,7 +541,7 @@ module ietf-te-packet-types { fraction-digits 6; range "0..50.331642"; } - units "%"; + units "percent"; default "0"; description "One-way packet loss as a percentage of the total traffic @@ -630,7 +632,7 @@ module ietf-te-packet-types { fraction-digits 6; range "0..50.331642"; } - units "%"; + units "percent"; default "0"; description "Two-way packet loss as a percentage of the total traffic @@ -713,8 +715,15 @@ module ietf-te-packet-types { grouping bandwidth-profile-parameters { description - "Common parameters to define bandwidth profiles in packet - networks."; + "Common parameters to define bandwidth profiles, also known as + traffic profiles in RFC 2475, that may be used to specify the + temporal properties of a packet stream (e.g., MPLS-TE LSPs), + e.g., as specified in MEF 10, RFC 2697 or RFC 2698."; + reference + "RFC 2475: An Architecture for Differentiated Services + MEF 10.3: Ethernet Services Attributes Phase 3 + RFC 2697: A Single Rate Three Color Marker + RFC 2698: A Two Rate Three Color Marker"; leaf cir { type uint64; units "bits per second"; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-te-topology-pwrgrp@2025-03-03.yang b/experimental/ietf-extracted-YANG-modules/ietf-te-topology-pwrgrp@2026-03-02.yang similarity index 89% rename from experimental/ietf-extracted-YANG-modules/ietf-te-topology-pwrgrp@2025-03-03.yang rename to experimental/ietf-extracted-YANG-modules/ietf-te-topology-pwrgrp@2026-03-02.yang index 073e5f59b..33b9fd12b 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-te-topology-pwrgrp@2025-03-03.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-te-topology-pwrgrp@2026-03-02.yang @@ -1,27 +1,24 @@ module ietf-te-topology-pwrgrp { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology-pwrgrp"; - prefix "tet-pg"; + prefix tet-pg; import ietf-network { - prefix "nw"; + prefix nw; reference "RFC 8345: A YANG Data Model for Network Topologies"; } - import ietf-network-topology { - prefix "nt"; + prefix nt; reference "RFC 8345: A YANG Data Model for Network Topologies"; } - import ietf-te-topology { - prefix "tet"; + prefix tet; reference "RFC 8795: YANG Data Model for Traffic Engineering (TE) Topologies"; } - import ietf-te-types { prefix te-types; reference @@ -31,22 +28,20 @@ module ietf-te-topology-pwrgrp { organization "IETF Traffic Engineering Architecture and Signaling (TEAS) Working Group."; - contact "WG Web: WG List: Editor: Colby Barth - + Editor: Vishnu Pavan Beeram - "; - + "; description "YANG data model for representing Power-Group aware TE topology. - 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 @@ -60,8 +55,9 @@ module ietf-te-topology-pwrgrp { (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself for full legal notices."; - revision "2025-03-03" { - description "Initial revision."; + revision 2026-03-02 { + description + "Initial revision."; reference "RFC XXXX: YANG Data Model for Power-Group aware TE Topology"; } @@ -73,8 +69,8 @@ module ietf-te-topology-pwrgrp { typedef pg-ref { type leafref { path "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet-pg:power-groups/" - + "tet-pg:power-group/tet-pg:name"; + + "tet:te-node-attributes/tet-pg:power-groups/" + + "tet-pg:power-group/tet-pg:name"; } description "This type is used to reference a Power-Group on a given node"; @@ -152,27 +148,26 @@ module ietf-te-topology-pwrgrp { is zero. Units are in bytes per second."; } } //pg-leaf-attributes - /* * Augmentations */ augment "/nw:networks/nw:network/nw:network-types/" - + "tet:te-topology" { + + "tet:te-topology" { description "Defines the Power-Group aware TE topology type."; uses pg-topology-type; } augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes" { + + "tet:te-node-attributes" { description "Augmentation for Power-Group specific node attributes."; uses pg-node-attributes; } augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes" { + + "tet:te-link-attributes" { description "Augmentation for Power-Group specific link attributes."; uses pg-link-attributes; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-te-types@2025-01-24.yang b/experimental/ietf-extracted-YANG-modules/ietf-te-types@2026-02-06.yang similarity index 94% rename from experimental/ietf-extracted-YANG-modules/ietf-te-types@2025-01-24.yang rename to experimental/ietf-extracted-YANG-modules/ietf-te-types@2026-02-06.yang index b0e9af256..dc5ed9281 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-te-types@2025-01-24.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-te-types@2026-02-06.yang @@ -6,12 +6,12 @@ module ietf-te-types { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types, Section 4"; } import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types, Section 3"; } import ietf-routing-types { prefix rt-types; @@ -54,16 +54,13 @@ module ietf-te-types { "This YANG module contains a collection of generally useful YANG data type definitions specific to TE. - The model conforms to the Network Management Datastore - Architecture (NMDA). - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document are to be interpreted as described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here. - Copyright (c) 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 @@ -73,11 +70,14 @@ module ietf-te-types { Relating to IETF Documents (https://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC XXXX - (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself - for full legal notices."; + 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 2025-01-24 { + revision 2026-02-06 { description "This revision adds the following new identities: - lsp-provisioning-error-reason; @@ -162,10 +162,6 @@ module ietf-te-types { reference "RFC XXXX: Common YANG Data Types for Traffic Engineering"; } - - // RFC Editor: replace XXXX with actual RFC number, update date - // information and remove this note - revision 2020-06-10 { description "Initial Version of TE types."; @@ -294,7 +290,7 @@ module ietf-te-types { identity path-reevaluation-request { base session-attributes-flags; description - "This flag indicates that a path re-evaluation (of the + "Indicates that a path re-evaluation (of the current path in use) is requested. Note that this does not trigger any LSP reroutes but @@ -502,7 +498,7 @@ module ietf-te-types { identity loopback-desired { base lsp-attributes-flags; description - "This flag indicates that a particular node on the LSP is + "Indicates that a particular node on the LSP is required to enter loopback mode. This can also be used to specify the loopback state of the @@ -533,63 +529,84 @@ module ietf-te-types { identity link-protection-type { description "Base identity for the link protection type."; + reference + "RFC 4202: Routing Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS), + section 2.2 + RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, section 7"; } identity link-protection-unprotected { base link-protection-type; description - "Unprotected link type."; + "'Unprotected' link protection type."; reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + "RFC 4202: Routing Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS), + section 2.2 + RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, section 7"; } identity link-protection-extra-traffic { base link-protection-type; description - "Extra-Traffic protected link type."; + "'Extra-Traffic' link protection type."; reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + "RFC 4202: Routing Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS), + section 2.2 + RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, section 7"; } identity link-protection-shared { base link-protection-type; description - "Shared protected link type."; + "'Shared' link protection type."; reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + "RFC 4202: Routing Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS), + section 2.2 + RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, section 7"; } identity link-protection-1-for-1 { base link-protection-type; description - "One-for-one (1:1) protected link type."; + "'Dedicated 1:1' link protection type."; reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + "RFC 4202: Routing Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS), + section 2.2 + RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, section 7"; } identity link-protection-1-plus-1 { base link-protection-type; description - "One-plus-one (1+1) protected link type."; + "'Dedicated 1+1' link protection type."; reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + "RFC 4202: Routing Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS), + section 2.2 + RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, section 7"; } identity link-protection-enhanced { base link-protection-type; description - "A compound link protection type derived from the underlay - TE tunnel protection configuration supporting the TE link."; + "'Enhanced' link protection type."; + reference + "RFC 4202: Routing Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS), + section 2.2 + RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, section 7"; } identity association-type { @@ -1061,7 +1078,7 @@ module ietf-te-types { reference "RFC 4872: RSVP-TE Extensions in Support of End-to-End Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + Recovery, section 11"; } identity restoration-scheme-preconfigured { @@ -1079,11 +1096,11 @@ module ietf-te-types { This restoration scheme is also known as 'Full LSP Re-routing', with the alternate route being - pre-computed and stored for use when the failure occurs."; + precomputed and stored for use when the failure occurs."; reference "RFC 4872: RSVP-TE Extensions in Support of End-to-End Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + Recovery, section 11"; } identity restoration-scheme-presignaled { @@ -1097,7 +1114,7 @@ module ietf-te-types { reference "RFC 4872: RSVP-TE Extensions in Support of End-to-End Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + Recovery, section 8"; } identity lsp-protection-type { @@ -1126,12 +1143,13 @@ module ietf-te-types { "'(Full) Rerouting' LSP protection type. This identity has been obsoleted: the - 'restoration-scheme-rerouting' identity SHOULD be used + 'restoration-scheme-rerouting' or + 'restoration-scheme-precomputed' identity SHOULD be used instead."; reference "RFC 4872: RSVP-TE Extensions in Support of End-to-End Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + Recovery, section 11"; } identity lsp-protection-reroute { @@ -1141,12 +1159,12 @@ module ietf-te-types { "'Rerouting without Extra-Traffic' LSP protection type. This identity has been obsoleted: the - 'restoration-scheme-rerouting' identity SHOULD be used + 'restoration-scheme-presignaled' identity SHOULD be used instead."; reference "RFC 4872: RSVP-TE Extensions in Support of End-to-End Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + Recovery, section 8"; } identity lsp-protection-1-for-n { @@ -1156,7 +1174,7 @@ module ietf-te-types { reference "RFC 4872: RSVP-TE Extensions in Support of End-to-End Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + Recovery, section 7.3"; } identity lsp-protection-1-for-1 { @@ -1166,7 +1184,7 @@ module ietf-te-types { reference "RFC 4872: RSVP-TE Extensions in Support of End-to-End Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + Recovery, section 7"; } identity lsp-protection-unidir-1-plus-1 { @@ -1176,7 +1194,7 @@ module ietf-te-types { reference "RFC 4872: RSVP-TE Extensions in Support of End-to-End Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + Recovery, section 5"; } identity lsp-protection-bidir-1-plus-1 { @@ -1186,7 +1204,7 @@ module ietf-te-types { reference "RFC 4872: RSVP-TE Extensions in Support of End-to-End Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + Recovery, section 6"; } identity lsp-protection-extra-traffic { @@ -1196,7 +1214,7 @@ module ietf-te-types { reference "RFC 4872: RSVP-TE Extensions in Support of End-to-End Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; + Recovery, section 7"; } identity lsp-protection-state { @@ -1720,6 +1738,14 @@ module ietf-te-types { base route-usage-type; description "'Include route' object."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.3.2 + RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP), Section 7.12 + RFC 7896: Update to the Include Route Object (IRO) + Specification in the Path Computation Element + Communication Protocol (PCEP)"; } identity route-exclude-object { @@ -1889,8 +1915,8 @@ module ietf-te-types { reference "I-D.ietf-pce-sid-algo: Carrying SR-Algorithm information in PCE-based Networks, - draft-ietf-pce-sid-algo-14, - Sections 3.5.1 and 3.5.2"; + draft-ietf-pce-sid-algo-29, + Sections 4.5.1 and 4.5.2"; } identity path-metric-residual-bandwidth { @@ -2639,20 +2665,21 @@ module ietf-te-types { It is a string containing a list of numbers separated by commas, where each of these numbers can be non-negative - decimal, hex integer, or hex float: + decimal, hex integer, or hex float, as defined in + ISO/IEC 9899: (dec | hex | float)[*(','(dec | hex | float))] - For the packet-switching type, the string encoding may follow + For the packet-switching type, the string encoding MUST follow the type 'bandwidth-ieee-float32' as defined in RFC 8294 (e.g., 0x1p10), where the units are in bytes per second. Canonically, the string is represented as all lowercase and in hex, where the prefix '0x' precedes the hex number."; reference - "RFC 8294: Common YANG Data Types for the Routing Area - ITU-T G.709: Interfaces for the optical transport network - - Edition 6.0 (06/2020)"; + "ISO/IEC 9899:2024: Information Technology - Programming + Languages - C, Section 6.4.4.2 + RFC 8294: Common YANG Data Types for the Routing Area"; } typedef te-ds-class { @@ -2712,7 +2739,7 @@ module ietf-te-types { } } description - "Defines a type representing the access type of a TE link."; + "The access types of a TE link."; reference "RFC 3630: Traffic Engineering (TE) Extensions to OSPF Version 2"; @@ -3131,12 +3158,16 @@ module ietf-te-types { } units "microseconds"; description - "One-way delay or latency."; + "One-way delay or latency, also known as Unidirectional Link + Delay."; + reference + "RFC 7679: A One-Way Delay Metric for IP Performance + Metrics (IPPM)"; } leaf one-way-delay-normality { type te-types:performance-metrics-normality; description - "One-way delay normality."; + "The normality of the 'one-way-delay' metric."; } } @@ -3147,24 +3178,26 @@ module ietf-te-types { PM defined in this grouping are applicable to generic TE PM as well as packet TE PM."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions - RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions - RFC 7823: Performance-Based Path Selection for Explicitly - Routed Label Switched Paths (LSPs) Using TE Metric - Extensions"; leaf two-way-delay { type uint32 { range "0..16777215"; } units "microseconds"; description - "Two-way delay or latency."; + "Two-way delay or latency, also known as Roudn-trip Delay."; + reference + "RFC 2681: A Round-trip Delay Metric for IPPM"; } leaf two-way-delay-normality { type te-types:performance-metrics-normality; description - "Two-way delay normality."; + "The normality of the 'two-way-delay' metric."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; } } @@ -3238,6 +3271,12 @@ module ietf-te-types { grouping one-way-performance-metrics { description "One-way Performance Metrics (PM) throttle grouping."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; leaf one-way-delay { type uint32 { range "0..16777215"; @@ -3245,7 +3284,11 @@ module ietf-te-types { units "microseconds"; default "0"; description - "One-way delay or latency."; + "One-way delay or latency, also known as Unidirectional Link + Delay."; + reference + "RFC 7679: A One-Way Delay Metric for IP Performance + Metrics (IPPM)"; } leaf one-way-residual-bandwidth { type rt-types:bandwidth-ieee-float32; @@ -3286,6 +3329,12 @@ module ietf-te-types { grouping two-way-performance-metrics { description "Two-way Performance Metrics (PM) throttle grouping."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; leaf two-way-delay { type uint32 { range "0..16777215"; @@ -3293,7 +3342,9 @@ module ietf-te-types { units "microseconds"; default "0"; description - "Two-way delay or latency."; + "Two-way delay or latency, also known as Roudn-trip Delay."; + reference + "RFC 2681: A Round-trip Delay Metric for IPPM"; } } @@ -3543,7 +3594,7 @@ module ietf-te-types { case as-number { container as-number-hop { description - "AS explicit route hop."; + "Autonomous System (AS) explicit route hop."; leaf as-number { type inet:as-number; mandatory true; @@ -3794,7 +3845,8 @@ module ietf-te-types { must "(not(../label-start/te-label/direction) and" + " not(te-label/direction))" + " or " - + "(../label-start/te-label/direction = te-label/direction)" + + "(../label-start/te-label/direction = " + + "te-label/direction)" + " or " + "(not(te-label/direction) and" + " (../label-start/te-label/direction = 'forward'))" @@ -4013,7 +4065,20 @@ module ietf-te-types { The order of entries is defined by the user without relying on key values."; } - uses explicit-route-hop; + uses explicit-route-hop { + refine "type/numbered-node-hop/numbered-node-hop" + + "/hop-type" { + must '. = "strict"' { + description + "Loose hops can only be used for 'include' route + objects."; + reference + "RFC 4874: Exclude Routes - Extension to Resource + ReserVation Protocol-Traffic Engineering + (RSVP-TE), Section 3.1"; + } + } + } } list route-object-include-exclude { key "index"; @@ -4042,7 +4107,22 @@ module ietf-te-types { The order of entries is defined by the user without relying on key values."; } - uses explicit-route-hop-with-srlg; + uses explicit-route-hop-with-srlg { + refine "type/numbered-node-hop/numbered-node-hop" + + "/hop-type" { + must '(. = "strict") or ' + + 'derived-from-or-self(../../explicit-route-usage,' + + '"te-types:route-include-object")' { + description + "Loose hops can only be used for 'include' route + objects."; + reference + "RFC 4874: Exclude Routes - Extension to Resource + ReserVation Protocol-Traffic Engineering + (RSVP-TE), Section 3.1"; + } + } + } } } } @@ -4447,7 +4527,7 @@ module ietf-te-types { "The identifier of the node. It can be represented as IP address or dotted quad address - or as an URI. + or as a URI. The type data node disambiguates the union type."; } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2025-06-10.yang b/experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2025-10-19.yang similarity index 82% rename from experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2025-06-10.yang rename to experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2025-10-19.yang index e7ca446f7..0b275597b 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2025-06-10.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2025-10-19.yang @@ -19,6 +19,11 @@ module ietf-telemetry-message { "draft-ietf-opsawg-collected-data-manifest: A Data Manifest for Contextualized Telemetry Data"; } + import ietf-yang-structure-ext { + prefix sx; + reference + "RFC 8791: YANG Data Structure Extensions"; + } organization "IETF Draft"; @@ -45,92 +50,19 @@ module ietf-telemetry-message { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2025-06-10 { + revision 2025-10-19 { description "Initial revision."; reference "RFC XXXX"; } - identity session-protocol { - description - "Base identity to represent session protocols."; - } - - identity yp-push { - base session-protocol; - description - "YANG-Push in RFC 8640 or RFC 8641 or RFC 8650."; - reference - "RFC 8640, RFC 8641, RFC 8650: YANG-Push Events and Notifications - for Datastores."; - } - - identity netconf { - base session-protocol; - description - "NETCONF GET RPC as described in RFC 6241."; - reference - "RFC 6241: NETCONF GET RPC."; - } - - identity restconf { - base session-protocol; - description - "RESTCONF HTTP GET as described in RFC 8040."; - reference - "RFC 8040: HTTP GET."; - } - - feature network-node-manifest { - description - "This feature indicates the network node manifest support."; - } - - feature data-collection-manifest { - description - "This feature indicates the data collection manifest support."; - } - - typedef telemetry-notification-event-type { - type enumeration { - enum log { - description - "Collector is reporting the event as it arrived from the - network element."; - } - enum update { - description - "Collector has updated an entry inside its local cache. - This could be triggered by an event from the network for - instance interface operational status changed or an internal - event in the collector, such as a timer triggered to referesh - old enteries."; - } - enum delete { - description - "Collector has deleted an entry from its local cache."; - } - } - description - "Type of event reported by the collector."; - } - - typedef telemetry-session-protocol-type { - type identityref { - base session-protocol; - } - description - "Network Telemetry protocol used to deliver the notification - between the network node and the data collector."; - } - - container message { - config false; + sx:structure "message" { description "Telemetry message used within the Data Mesh"; container network-node-manifest { - if-feature "network-node-manifest"; + if-feature + "network-node-manifest"; description "Contains the Data Manifest about the network node that exported Network Telemetry data."; @@ -139,7 +71,8 @@ module ietf-telemetry-message { container telemetry-message-metadata { description "contains the session information about the session between the - collector and the network node."; + collector and the network node and the publishing process + of the collector."; leaf node-export-timestamp { type yang:date-and-time; description @@ -157,6 +90,22 @@ module ietf-telemetry-message { "Timestamp when the data collector collected the Network Telemetry data from the network element."; } + leaf notification-event { + type telemetry-notification-event-type; + mandatory true; + description + "Describes wherever the notification was received and forwarded + from the network node or generated or removed from the data + collector state cache."; + } + leaf sequence-number { + type yang:counter32; + description + "Unique unique sequence number for each published telemetry + message by the collector. The initial number is 1 and + counts up by 1 at every published telemetry message + until it reaches 4294967295 and wraps around."; + } leaf session-protocol { type telemetry-session-protocol-type; mandatory true; @@ -191,7 +140,8 @@ module ietf-telemetry-message { } } container data-collection-manifest { - if-feature "data-collection-manifest"; + if-feature + "data-collection-manifest"; description "Contains the Data Manifest of the data collector which collected the Network Telemetry data."; @@ -202,12 +152,14 @@ module ietf-telemetry-message { "Network operator specific metadata added by the Network Telemetry data collection."; list labels { - key "name"; + key + "name"; description "Abritrary labels assigned by the data collector."; leaf name { type string { - length "1..max"; + length + "1..max"; } description "Label name."; @@ -216,6 +168,15 @@ module ietf-telemetry-message { mandatory true; description "label value"; + choice number-choice { + description + "Number value"; + leaf number-value { + type uint64; + description + "Number value"; + } + } choice string-choice { description "String value"; @@ -241,4 +202,77 @@ module ietf-telemetry-message { "Message or notification received from network element."; } } + + feature network-node-manifest { + description + "This feature indicates the network node manifest support."; + } + + feature data-collection-manifest { + description + "This feature indicates the data collection manifest support."; + } + + identity session-protocol { + description + "Base identity to represent session protocols."; + } + + identity yang-push { + base session-protocol; + description + "YANG-Push in RFC 8640 or RFC 8641 or RFC 8650."; + reference + "RFC 8640, RFC 8641, RFC 8650: YANG-Push Events and Notifications + for Datastores."; + } + + identity netconf { + base session-protocol; + description + "NETCONF GET RPC as described in RFC 6241."; + reference + "RFC 6241: NETCONF GET RPC."; + } + + identity restconf { + base session-protocol; + description + "RESTCONF HTTP GET as described in RFC 8040."; + reference + "RFC 8040: HTTP GET."; + } + + typedef telemetry-notification-event-type { + type enumeration { + enum "log" { + description + "Collector is reporting the event as it arrived from the + network element."; + } + enum "update" { + description + "Collector has updated an entry inside its local cache. + This could be triggered by an event from the network for + instance interface operational status changed or an internal + event in the collector, such as a timer triggered to referesh + old enteries."; + } + enum "delete" { + description + "Collector has deleted an entry from its local cache."; + } + } + description + "Type of event reported by the collector."; + } + + typedef telemetry-session-protocol-type { + type identityref { + base session-protocol; + } + description + "Network Telemetry protocol used to deliver the notification + between the network node and the data collector."; + } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-topology-filter@2025-07-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-topology-filter@2025-10-19.yang similarity index 97% rename from experimental/ietf-extracted-YANG-modules/ietf-topology-filter@2025-07-07.yang rename to experimental/ietf-extracted-YANG-modules/ietf-topology-filter@2025-10-19.yang index 11add8ae8..2f6326143 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-topology-filter@2025-07-07.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-topology-filter@2025-10-19.yang @@ -41,7 +41,6 @@ module ietf-topology-filter { Editor: Xufeng Liu "; - description "This YANG module defines data definitions for managing topology filters. @@ -51,7 +50,7 @@ module ietf-topology-filter { 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 + 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). @@ -59,7 +58,7 @@ module ietf-topology-filter { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2025-07-07 { + revision 2025-10-19 { description "Initial revision."; reference @@ -112,7 +111,8 @@ module ietf-topology-filter { leaf division-id { type uint32; description - "Information Source Division."; + "Information Source Division + (e.g., OSPF Area, ISIS Level)."; } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-trace-context@2024-11-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-trace-context@2024-11-07.yang index 8ccff9f68..a09ff7f51 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-trace-context@2024-11-07.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-trace-context@2024-11-07.yang @@ -1,6 +1,7 @@ module ietf-trace-context { yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-trace-context"; + namespace + "urn:ietf:params:xml:ns:yang:ietf-trace-context"; prefix ietf-trace-context; import ietf-yang-structure-ext { @@ -31,6 +32,8 @@ module ietf-trace-context { protocols to the W3C trace-context document: https://www.w3.org/TR/2021/REC-trace-context-1-20211123 + This document has a normative reference to RFC 8791. + Copyright (c) 2024 IETF Trust and the persons identified as authors of the code. All rights reserved. @@ -95,42 +98,40 @@ module ietf-trace-context { } sx:structure trace-context-error-info { - container trace-context-error-info { + description + "This error is returned by a NETCONF or RESTCONF server + when a client sends a NETCONF RPC with additonal + attributes or RESTCONF RPC with additional headers + for trace context processing, and there is an error + related to them. The server has aborted the RPC."; + leaf meta-name { + type string; + description + "The name of the problematic or missing meta information. + In NETCONF, the qualified XML attribute name. + In RESTCONF, the HTTP header name. + If a client sent a NETCONF RPC with the attribute + w3ctc:traceparent='incorrect-format' + this leaf would have the value 'w3ctc:traceparent'"; + } + leaf meta-value { + type string; + description + "The value of the problematic meta information received + by the server. + If a client sent a NETCONF RPC with the attribute + w3ctc:traceparent='incorrect-format' + this leaf would have the value 'incorrect-format'."; + } + leaf error-type { + type meta-error-type; description - "This error is returned by a NETCONF or RESTCONF server - when a client sends a NETCONF RPC with additonal - attributes or RESTCONF RPC with additional headers - for trace context processing, and there is an error - related to them. The server has aborted the RPC."; - leaf meta-name { - type string; - description - "The name of the problematic or missing meta information. - In NETCONF, the qualified XML attribute name. - In RESTCONF, the HTTP header name. - If a client sent a NETCONF RPC with the attribute - w3ctc:traceparent='incorrect-format' - this leaf would have the value 'w3ctc:traceparent'"; - } - leaf meta-value { - type string; - description - "The value of the problematic meta information received - by the server. - If a client sent a NETCONF RPC with the attribute - w3ctc:traceparent='incorrect-format' - this leaf would have the value 'incorrect-format'."; - } - leaf error-type { - type meta-error-type; - description - "Indicates the type of meta information problem - detected by the server. - If a client sent an RPC annotated with the attribute - w3ctc:traceparent='incorrect-format' - this leaf might have the value - 'ietf-trace-context:bad-format'."; - } + "Indicates the type of meta information problem + detected by the server. + If a client sent an RPC annotated with the attribute + w3ctc:traceparent='incorrect-format' + this leaf might have the value + 'ietf-trace-context:bad-format'."; } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-tvr-topology@2025-06-30.yang b/experimental/ietf-extracted-YANG-modules/ietf-tvr-topology@2026-02-09.yang similarity index 90% rename from experimental/ietf-extracted-YANG-modules/ietf-tvr-topology@2025-06-30.yang rename to experimental/ietf-extracted-YANG-modules/ietf-tvr-topology@2026-02-09.yang index 470c13f58..554fe01c2 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-tvr-topology@2025-06-30.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-tvr-topology@2026-02-09.yang @@ -6,13 +6,13 @@ module ietf-tvr-topology { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } import ietf-yang-types { prefix "yang"; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } import ietf-tvr-schedule { @@ -39,9 +39,9 @@ module ietf-tvr-topology { description "This YANG module contains YANG definitions for describing - network topology with an time-variant availability schedule. + network topology with a time-variant availability schedule. - 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 @@ -60,7 +60,7 @@ module ietf-tvr-topology { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2025-06-30 { + revision 2026-02-09 { description "Initial revision"; reference @@ -77,7 +77,7 @@ module ietf-tvr-topology { leaf node-id { type inet:uri; description - "Identifier for a node, uniquely identifies a node. This + "Identifier for a node; uniquely identifies a node. This may be the same as the node-id defined in the ietf-network module defined in RFC 8345."; } @@ -122,7 +122,7 @@ module ietf-tvr-topology { } container available { description - "The time at which this link becomes available."; + "The time at which this link becomes available."; uses tvr-schd:tvr-schedule { augment "schedule" { description @@ -166,8 +166,8 @@ module ietf-tvr-topology { type boolean; default "false"; description - "The default link availibility. During times when the - schedule does not specifiy an availability, this value + "The default link availability. During times when the + schedule does not specify an availability, this value is used."; } leaf default-bandwidth { @@ -183,8 +183,7 @@ module ietf-tvr-topology { range "0..16777215"; } description - "The default link capacity specified in a - generic format."; + "The default one-way delay in microseconds."; } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-udp-client@2025-05-14.yang b/experimental/ietf-extracted-YANG-modules/ietf-udp-client@2025-12-16.yang similarity index 71% rename from experimental/ietf-extracted-YANG-modules/ietf-udp-client@2025-05-14.yang rename to experimental/ietf-extracted-YANG-modules/ietf-udp-client@2025-12-16.yang index d23022904..cd3a66781 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-udp-client@2025-05-14.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-udp-client@2025-12-16.yang @@ -6,12 +6,12 @@ module ietf-udp-client { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } organization "IETF NETCONF (Network Configuration) Working Group"; contact - "WG Web: + "WG Web: WG List: Authors: Alex Huang Feng @@ -31,14 +31,24 @@ module ietf-udp-client { 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-to-be; see the RFC - itself for full legal notices."; + All revisions of IETF and IANA published modules can be found + at the YANG Parameters registry group + (https://www.iana.org/assignments/yang-parameters). - revision 2025-05-14 { + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + revision 2025-12-16 { description "Initial revision"; reference - "RFC-to-be: YANG Groupings for UDP Clients and UDP Servers"; + "RFC XXXX: YANG Groupings for UDP Clients and UDP Servers"; } feature local-binding { @@ -65,13 +75,7 @@ module ietf-udp-client { type inet:host; mandatory true; description - "The IP address or hostname of the remote UDP server. - If a domain name is configured, then the name resolution - should happen before each datagram is sent, unless a - previously resolved address is cached and still valid. - If the name resolution results in multiple IP addresses, - the IP addresses are tried until a connection has been - established or until all IP addresses have failed. "; + "The IP address or hostname of the remote UDP server."; } leaf remote-port { @@ -87,7 +91,12 @@ module ietf-udp-client { "The local IP address to bind to when sending UDP datagrams to the remote server. INADDR_ANY ('0.0.0.0') or INADDR6_ANY ('0:0:0:0:0:0:0:0' a.k.a. '::') may be used - so that the client can bind to any IPv4 or IPv6 address."; + so that the client can bind to any IPv4 or IPv6 address. + In normal operation, the local and configured + remote addresses SHOULD be from the same address family. + Differences between address families may occur in + abnormal or error conditions and are therefore allowed to + be reported."; } leaf local-port { diff --git a/experimental/ietf-extracted-YANG-modules/ietf-udp-server@2025-05-14.yang b/experimental/ietf-extracted-YANG-modules/ietf-udp-server@2025-12-16.yang similarity index 61% rename from experimental/ietf-extracted-YANG-modules/ietf-udp-server@2025-05-14.yang rename to experimental/ietf-extracted-YANG-modules/ietf-udp-server@2025-12-16.yang index 2ce5ef391..773aa1607 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-udp-server@2025-05-14.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-udp-server@2025-12-16.yang @@ -6,13 +6,13 @@ module ietf-udp-server { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } organization "IETF NETCONF (Network Configuration) Working Group"; contact - "WG Web: + "WG Web: WG List: Authors: Alex Huang Feng @@ -22,28 +22,32 @@ module ietf-udp-server { description "Defines a generic grouping for UDP-based server applications. - Copyright (c) 2025 IETF Trust and the persons identified as - authors of the code. All rights reserved. + Copyright (c) 2025 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). - This version of this YANG module is part of RFC-to-be; see the RFC - itself for full legal notices."; + All revisions of IETF and IANA published modules can be found + at the YANG Parameters registry group + (https://www.iana.org/assignments/yang-parameters). - revision 2025-05-14 { + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + + revision 2025-12-16 { description "Initial revision"; reference - "RFC-to-be: YANG Groupings for UDP Clients and UDP Servers"; + "RFC XXXX: YANG Groupings for UDP Clients and UDP Servers"; } grouping udp-server { description - "Provides a reusable grouping for configuring UDP servers. + "Provides a reusable grouping for managing UDP servers. Note that this grouping uses fairly typical descendant node names such that a stack of 'uses' statements will @@ -67,10 +71,9 @@ module ietf-udp-server { mandatory true; description "The local IP address to listen on for incoming - UDP datagrams. To configure listening - on all IPv4 addresses the value must be '0.0.0.0' - (INADDR_ANY). To configure listening on all IPv6 - addresses the value must be '::' (INADDR6_ANY)."; + UDP datagrams. INADDR_ANY ('0.0.0.0') or + INADDR6_ANY ('0:0:0:0:0:0:0:0' a.k.a. '::') may be used + so that the server can listen to any IPv4 or IPv6 address."; } leaf local-port { type inet:port-number; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-voucher-request@2023-01-10.yang b/experimental/ietf-extracted-YANG-modules/ietf-voucher-request@2025-12-18.yang similarity index 91% rename from experimental/ietf-extracted-YANG-modules/ietf-voucher-request@2023-01-10.yang rename to experimental/ietf-extracted-YANG-modules/ietf-voucher-request@2025-12-18.yang index 9d8e36640..b4f795964 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-voucher-request@2023-01-10.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-voucher-request@2025-12-18.yang @@ -5,6 +5,8 @@ module ietf-voucher-request { import ietf-yang-structure-ext { prefix sx; + reference + "RFC 8791: YANG Data Structure Extensions"; } import ietf-voucher { prefix vch; @@ -28,8 +30,6 @@ module ietf-voucher-request { Author: Michael Richardson - Author: Max Pritikin - Author: Toerless Eckert Author: Qiufang Ma @@ -43,7 +43,7 @@ module ietf-voucher-request { during a voucher request procedure and subsequent Voucher creation. - Copyright (c) 2023 IETF Trust and the persons identified as + Copyright (c) 2023-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 @@ -66,7 +66,7 @@ module ietf-voucher-request { // RFCEDITOR: please replace XXXX in this entire code fragment // with the RFC number assigned and remove this notice. - revision 2023-01-10 { + revision 2025-12-18 { description "Updates and additions described by RFC XXXX"; reference @@ -80,10 +80,10 @@ module ietf-voucher-request { (BRSKI)"; } - grouping voucher-request-grouping { + grouping voucher-request { description "Grouping to allow reuse/extensions in future work."; - uses vch:voucher-artifact-grouping { + uses vch:voucher-artifact { refine "last-renewal-date" { description "A last-renewal-date field @@ -101,6 +101,13 @@ module ietf-voucher-request { "Any assertion included in registrar voucher requests SHOULD be ignored by the MASA."; } + refine "idevid-issuer" { + description + "The idevid-issuer field MUST be included in + a Registrar Voucher Request (RVR) (unless + specified otherwise) per Section 6.1 of + RFC XXXX."; + } } leaf prior-signed-voucher-request { type binary; @@ -130,7 +137,7 @@ module ietf-voucher-request { "An X.509 v3 certificate structure as specified by RFC 5280, Section 4 encoded using the ASN.1 distinguished encoding rules (DER), as specified - in [ITU.X690.1994]. + in [ITU-T.X690.2015]. The first certificate in the Registrar TLS server certificate_list sequence (the end-entity TLS @@ -147,13 +154,7 @@ module ietf-voucher-request { the voucher-request. The proximity-registrar-pubk is the Raw Public Key of the Registrar. This field is encoded - as specified in RFC7250, section 3. - The ECDSA algorithm MUST be supported. - The EdDSA algorithm as specified in - draft-ietf-tls-rfc4492bis-17 SHOULD be supported. - Support for the DSA algorithm is not recommended. - Support for the RSA algorithm is a MAY, but due to - size is discouraged."; + as specified in RFC7250, section 3."; } leaf proximity-registrar-pubk-sha256 { type binary; @@ -194,7 +195,7 @@ module ietf-voucher-request { "An X.509 v3 certificate structure, as specified by RFC 5280, Section 4, encoded using the ASN.1 distinguished encoding rules (DER), as specified - in ITU X.690. + in ITU-T X.690. The first certificate in the registrar TLS server certificate_list sequence (the end-entity TLS certificate; see RFC 8446) presented by the @@ -203,7 +204,7 @@ module ietf-voucher-request { This MUST be populated in a pledge's voucher-request when an agent-proximity assertion is requested."; reference - "ITU X.690: Information Technology - ASN.1 encoding + "ITU-T X.690: Information Technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER) @@ -219,7 +220,7 @@ module ietf-voucher-request { "An X.509 v3 certificate structure, as specified by RFC 5280, Section 4, encoded using the ASN.1 distinguished encoding rules (DER), as specified - in ITU X.690. + in ITU-T X.690. This certificate can be used by the pledge, the registrar, and the MASA to verify the signature of agent-signed-data. It is an optional component @@ -228,7 +229,7 @@ module ietf-voucher-request { voucher-request when an agent-proximity assertion is requested."; reference - "ITU X.690: Information Technology - ASN.1 encoding + "ITU-T.X690.2015: Information Technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER) @@ -240,6 +241,6 @@ module ietf-voucher-request { // Top-level statement: called "voucher" to match RFC8995 sx:structure voucher { - uses voucher-request-grouping; + uses voucher-request; } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-voucher@2023-01-10.yang b/experimental/ietf-extracted-YANG-modules/ietf-voucher@2025-12-18.yang similarity index 92% rename from experimental/ietf-extracted-YANG-modules/ietf-voucher@2023-01-10.yang rename to experimental/ietf-extracted-YANG-modules/ietf-voucher@2025-12-18.yang index 943e671c9..10448c3e9 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-voucher@2023-01-10.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-voucher@2025-12-18.yang @@ -6,15 +6,17 @@ module ietf-voucher { import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } import ietf-inet-types { prefix ietf; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } import ietf-yang-structure-ext { prefix sx; + reference + "RFC 8791: YANG Data Structure Extensions"; } organization @@ -26,8 +28,6 @@ module ietf-voucher { Author: Michael Richardson - Author: Max Pritikin - Author: Toerless Eckert Author: Qiufang Ma @@ -41,7 +41,7 @@ module ietf-voucher { pledge may establish a secure connection to the owner's network infrastructure. - Copyright (c) 2023 IETF Trust and the persons identified as + Copyright (c) 2023-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 @@ -64,11 +64,11 @@ module ietf-voucher { // RFCEDITOR: please replace XXXX in this entire code fragment // with the RFC number assigned and remove this notice. - revision 2023-01-10 { + revision 2025-12-18 { description "Updates and additions described by RFC XXXX"; reference - "RFC XXXX A Voucher Profile for Bootstrapping Protocols"; + "RFC XXXX: A Voucher Profile for Bootstrapping Protocols"; } revision 2018-05-09 { description @@ -77,7 +77,7 @@ module ietf-voucher { "RFC 8366: Voucher Profile for Bootstrapping Protocols"; } - grouping voucher-artifact-grouping { + grouping voucher-artifact { description "Grouping to allow reuse/extensions in future work."; leaf created-on { @@ -167,11 +167,11 @@ module ietf-voucher { description "The Authority Key Identifier OCTET STRING (as defined in Section 4.2.1.1 of RFC 5280) from the pledge's IDevID - certificate. Optional since some serial-numbers are - already unique within the scope of a MASA. - Inclusion of the statistically unique key identifier - ensures statistically unique identification of the - hardware. + certificate. In the voucher, it is optional + as some manufacturers know that all serial-numbers + are unique within the scope of a MASA. + In the voucher request, whether it is mandatory or optional depends + upon the which protocol is used, such as RFC8995 and variations. When processing a voucher, a pledge MUST ensure that its IDevID Authority Key Identifier matches this value. If no match occurs, then the pledge MUST NOT process this @@ -188,7 +188,7 @@ module ietf-voucher { description "An X.509 v3 certificate structure, as specified by RFC 5280, using Distinguished Encoding Rules (DER) - encoding, as defined in ITU-T X.690. + encoding, as defined in [ITU-T.X690.2015]. This certificate is used by a pledge to trust a Public Key Infrastructure in order to verify a domain certificate @@ -215,12 +215,7 @@ module ietf-voucher { the voucher. The pinned-domain-pubk is the Raw Public Key of the registrar. This field is encoded as a Subject Public Key Info block - as specified in RFC7250, in section 3. - The ECDSA algorithm MUST be supported. - The EdDSA algorithm as specified in - draft-ietf-tls-rfc4492bis-17 SHOULD be supported. - Support for the DSA algorithm is not recommended. - Support for the RSA algorithm is a MAY."; + as specified in RFC7250, in section 3."; } leaf pinned-domain-pubk-sha256 { type binary; @@ -322,6 +317,6 @@ module ietf-voucher { // Top-level statement sx:structure voucher { - uses voucher-artifact-grouping; + uses voucher-artifact; } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2025-06-09.yang b/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-02-13.yang similarity index 96% rename from experimental/ietf-extracted-YANG-modules/ietf-vrrp@2025-06-09.yang rename to experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-02-13.yang index 54219866b..82f39a520 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2025-06-09.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-02-13.yang @@ -6,12 +6,12 @@ module ietf-vrrp { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Data Types, Section 4"; + "RFC 9911: Common YANG Data Types, Section 4"; } import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types, Section 3"; + "RFC 9911: Common YANG Data Types, Section 3"; } import ietf-interfaces { prefix if; @@ -44,11 +44,12 @@ module ietf-vrrp { Editor: Mingui Zhang "; + description "This YANG module defines a model for managing Virtual Router Redundancy Protocol (VRRP) versions 2 and 3. - 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 @@ -71,7 +72,7 @@ module ietf-vrrp { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2025-06-09 { + revision 2026-02-13 { description "This revision includes the following changes: - Update some identifiers and descriptions to conform @@ -130,14 +131,14 @@ module ietf-vrrp { } enum no-response { description - "Previous active virutal router did not respond."; + "Previous active virtual router did not respond."; } } description "Indicates why the virtual router has transitioned to active state. - The identifier of this typedef is changed to to reflect + The identifier of this typedef is changed to reflect the updated terminology used in RFC 9568."; } // new-active-reason-type @@ -182,7 +183,7 @@ module ietf-vrrp { "Indicates that the current active virtual router has not sent an advertisement within the limit of active-down-interval. - The identity is changed to to reflect the updated terminology + The identity is changed to reflect the updated terminology used in RFC 9568."; } @@ -240,7 +241,7 @@ module ietf-vrrp { description "Indicates that there is a lower-priority VRRP active router. - The identity is changed to to reflect the updated terminology + The identity is changed to reflect the updated terminology used in RFC 9568."; } @@ -265,7 +266,6 @@ module ietf-vrrp { "A packet has been received with an invalid VRRP checksum value."; } - identity ip-ttl-error { base vrrp-error-global; description @@ -347,7 +347,7 @@ module ietf-vrrp { packets for IP addresses that are associated with this virtual router. - The identity is changed to to reflect the updated terminology + The identity is changed to reflect the updated terminology used in RFC 9568."; } @@ -430,7 +430,8 @@ module ietf-vrrp { virtual router."; } leaf accept-mode { - when "derived-from-or-self(current()/../version, 'vrrp-v3')" { + when "derived-from-or-self(current()/../version, + 'vrrp:vrrp-v3')" { description "Applicable only to version 3."; } @@ -460,7 +461,7 @@ module ietf-vrrp { or VRRPv3 advertisements are sent from the specified interface."; case v2 { - when "derived-from-or-self(version, 'vrrp-v2')" { + when "derived-from-or-self(version, 'vrrp:vrrp-v2')" { description "Applicable only to version 2."; } @@ -476,7 +477,7 @@ module ietf-vrrp { } } case v3 { - when "derived-from-or-self(version, 'vrrp-v3')" { + when "derived-from-or-self(version, 'vrrp:vrrp-v3')" { description "Applicable only to version 3."; } @@ -753,7 +754,7 @@ module ietf-vrrp { "Time interval for the backup virtual router to declare 'active down'. - The identifier of this leaf is changed to to reflect + The identifier of this leaf is changed to reflect the updated terminology used in RFC 9568."; } leaf skew-time { @@ -762,7 +763,7 @@ module ietf-vrrp { config false; description "Calculated based on the priority and advertisement - interval configuration command parameters. See RFC 3768."; + interval configuration command parameters. See RFC 9568."; } leaf last-event { type identityref { @@ -779,7 +780,7 @@ module ietf-vrrp { "Indicates why the virtual router has transitioned to active state. - The identifier of this leaf is changed to to reflect + The identifier of this leaf is changed to reflect the updated terminology used in RFC 9568."; } container statistics { @@ -802,7 +803,7 @@ module ietf-vrrp { "The total number of times that this virtual router's state has transitioned to 'Active'. - The identifier of this leaf is changed to to reflect + The identifier of this leaf is changed to reflect the updated terminology used in RFC 9568."; } leaf advertisement-rcvd { @@ -896,7 +897,7 @@ module ietf-vrrp { VRRP checksum value."; reference "RFC 9568: Virtual Router Redundancy Protocol (VRRP) - Version 3 for IPv4 and IPv6. Section 5.2.8"; + Version 3 for IPv4 and IPv6, Section 5.2.8."; } leaf version-errors { type yang:counter64; @@ -905,7 +906,7 @@ module ietf-vrrp { or unsupported version number."; reference "RFC 9568: Virtual Router Redundancy Protocol (VRRP) - Version 3 for IPv4 and IPv6. Section 5.2.1"; + Version 3 for IPv4 and IPv6, Section 5.2.1."; } leaf vrid-errors { type yang:counter64; @@ -914,7 +915,7 @@ module ietf-vrrp { is not valid for any virtual router on this router."; reference "RFC 9568: Virtual Router Redundancy Protocol (VRRP) - Version 3 for IPv4 and IPv6. Section 5.2.3"; + Version 3 for IPv4 and IPv6, Section 5.2.3."; } leaf ip-ttl-errors { type yang:counter64; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-wdm-interface@2025-02-10.yang b/experimental/ietf-extracted-YANG-modules/ietf-wdm-interface@2025-02-10.yang deleted file mode 100644 index ac30c0a27..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-wdm-interface@2025-02-10.yang +++ /dev/null @@ -1,304 +0,0 @@ -module ietf-wdm-interface { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-wdm-interface"; - prefix wdm-if; - - import ietf-interfaces { - prefix if; - } - - import ietf-layer0-types { - prefix "l0-types"; - } - - organization - "IETF CCAMP Working Group"; - - contact - "WG Web: - WG List: - - Editor: Dharini Hiremagalur - Editor: Gabriele Galimberti - Editor: Gert Grammel - Editor: Roberto Manzotti "; - - description - "This module contains a collection of YANG definitions for - configuring DWDM Optical interfaces. - - 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). - - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices."; - -// RFC Ed.: replace XXXX with actual RFC number and remove -// this note -// replace the revision date with the module publication date -// the format is (year-month-day) - - revision "2025-02-10" { - description - "v1.0 Initial Version"; - reference - "RFC XXXX: YANG model to manage the optical interface - parameters for an external transponder in a WDM network"; - // RFC Ed.: replace XXXX with actual RFC number, update date - // information and remove this note - - } - - // Need to verify if the enumeration is the proper approach for - // the tca-types, since the list is not fully standardized adn - // subject to change. - typedef wdm-if-tca-types { - type enumeration { - enum laser-linewdt-tca { - description "The laser linewidth TCA"; - } - enum tx-power-tca { - description "The tx power TCA"; - } - enum rx-power-tca { - description "The tx power TCA"; - } - enum pol-power-diff-tca { - description - "The power difference between polarization TCA"; - } - enum pol-skew-diff-tca { - description - "The skew between the two polarization TCA"; - } - enum cd-tca { - description "The chromatic dispersion TCA"; - } - enum frequency-offset-tca { - description "Frequency offset TCA"; - } - enum osnr-tca { - description "OSNR TCA"; - } - enum laser-temperature-tca { - description "Laser temperature TCA"; - } - enum pre-fec-ber-tca { - description "Pre Fec BER TCA"; - } - enum uncorrected-words-tca { - description "Uncorrected words TCA"; - } - enum q-factor-tca{ - description "Q Factor TCA"; - } - } - description - "The different types of TCA's for DWDM Interfaces"; - } - - grouping wdm-if-tca-thresholds { - description "Thresholds for TCA's"; - leaf tca-type { - type wdm-if-tca-types; - description - "type of the TCA that identify the - performance measurement, eg TX Power"; - } - leaf tca-name { - type string; - description - "A name of the TCA that explain the TCA scope - eg 'Low TX Power'"; - } - leaf raise-threshold { - type int32; - description - "A TCA is raised if the variable cross this threshold: - - if raise-threshold is greater than clear-threshold - (or clear threshold is not defined), the TCA - is raised when the value exceed the threshold - - if raise-threshold is smaller that clear-threshold, the - TCA is raised when the value fall below the threshold"; - } - leaf clear-threshold { - type int32; - description - "A TCA cleared when the variable cross the threshold in the - direction defined for raise-threshold"; - } - } - - grouping wdm-if-tca-list { - description "List of TCA's"; - leaf number-of-tcas-supported { - type uint32; - config false; - description "Number of TCAs supported by this interface"; - } - list tca-list { - key "tca-type"; - description "List of the TCAs"; - uses wdm-if-tca-thresholds; - } - } - - grouping wdm-if-mode-params { - description "OCh mode parameters"; - - leaf min-osnr-margin { - type l0-types:snr-or-null; - units "dB"; - config false; - description "OSNR margin to FEC threshold"; - } - leaf q-margin { - type int32; - units "dB"; - config false; - description "Q-Factor margin to FEC threshold"; - } - leaf central-frequency { - type l0-types:frequency-thz; - description - "This parameter indicates the interface Central Frequency"; - } -// uses wdm-if-fec-tca-thresholds; - uses wdm-if-tca-list; - } - - grouping wdm-if-statistics { - description "OCh statistics"; - leaf cur-osnr { - type l0-types:snr; - units "dB"; - config false; - description "OSNR margin to FEC threshold"; - } - leaf cur-q-factor { - type int32; - units "dB"; - config false; - description "Q-Factor of the interface"; - } - leaf uncorrected-words { - type uint64; - config false; - description "Post-FEC errored words"; - } - leaf pre-fec-ber { - type decimal64 { - fraction-digits 18; - } - config false; - description "Pre-FEC errored words"; - } - } - - notification wdm-if-tca { - description "A output TCA notification"; - - leaf "if-name" { - type leafref { path "/if:interfaces/if:interface/if:name"; } - mandatory true; - description "Interface name"; - } - leaf tca-type { - type wdm-if-tca-types; - mandatory true; - description "Type of TCA for eg min tx power TCA"; - } - leaf tca-name { - type string; - description - "A name of the TCA that explain the TCA scope - eg 'Low TX Power'"; - } - } - - augment "/if:interfaces" { - description - "Template definition for Optical Interface explicit-modes"; - container "wdm-if-templates" { - config false; - description "Optical Interface explicit-mode templates"; - container explicit-transceiver-modes { - description - "The top level container for the list of the - transceivers' explicit modes."; - list explicit-transceiver-mode { - key explicit-transceiver-mode-id; - description - "The list of the transceivers' explicit modes."; - leaf explicit-transceiver-mode-id { - type string; - description - "The identifier of the transceivers' explicit mode."; - } - uses l0-types:explicit-mode; - } // list explicit-transceiver-mode - } // container explicit-transceiver-modes - } // container dwdm-if-templates - } // augment interfaces - - augment "/if:interfaces/if:interface" { - description "Parameters for an optical interface"; - - container wdm-interface { - description - "Container for capabilities, configuration, - current operational data for a DWDM interface"; - - uses l0-types:transceiver-capabilities { - augment "supported-modes/supported-mode/mode/" - + "explicit-mode/explicit-mode" { - description - "Augment the explicit-mode container with the - proper leafref."; - leaf explicit-transceiver-mode-ref { - type leafref { - path "../../../../../../wdm-if:wdm-if-templates" - + "/wdm-if:explicit-transceiver-modes" - + "/wdm-if:explicit-transceiver-mode" - + "/wdm-if:explicit-transceiver-mode-id"; - } - description - "The reference to the explicit transceiver - mode template."; - } - } - } - - container current-wdm-if-parameters { - leaf configured-mode { - type union { - type empty; - type leafref { - path "../../supported-modes/supported-mode/mode-id"; - } - } - description - "Reference to the configured mode for transceiver - compatibility approach. - - The empty value is used to report that no mode has - been configured and there is no default mode. - - When not present, the configured-mode is not reported - by the server."; - } - uses l0-types:common-transceiver-param; - description "Current parameters of this interface"; - uses wdm-if-mode-params; - uses wdm-if-statistics; - } - } - } -} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-wdm-interface@2026-03-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-wdm-interface@2026-03-02.yang new file mode 100644 index 000000000..6332e5cce --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-wdm-interface@2026-03-02.yang @@ -0,0 +1,509 @@ +module ietf-wdm-interface { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-wdm-interface"; + prefix wdm-if; + + import ietf-yang-revisions { + prefix "rev"; + } + import ietf-interfaces { + prefix if; + } + import ietf-layer0-types { + prefix l0-types; + rev:recommended-min-date 2025-11-03; + } + + organization + "IETF CCAMP Working Group"; + contact + "WG Web: + WG List: + + Editor: Dharini Hiremagalur + Editor: Gabriele Galimberti + Editor: Gert Grammel + Editor: Roberto Manzotti "; + description + "This module contains a collection of YANG definitions for + configuring DWDM Optical interfaces. + + Copyright (c) 2025 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. + + 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."; + + // RFC Ed. please: + // - replace XXXX with actual RFC number of this document + // - replace ZZZZ with the RFC number assigned to + // draft-ietf-ccamp-optical-impairment-topology-yang + // - replace the revision date with the module publication date + // the format is (year-month-day) + // + // and finally delete this note. + + revision 2026-03-02 { + description + "Initial Version"; + reference + "RFC XXXX: A YANG data model to manage configurable DWDM + optical interfaces"; + } + + identity wdm-if-tca-type { + description + "The different types of Threshold Crossing Alert (TCA's) + for DWDM Interfaces. Any augmentation of the list of + tca-type MUST use this identity as base"; + } + + identity laser-linewdt-tca { + base wdm-if-tca-type; + description + "The laser linewidth TCA"; + } + + identity tx-power-tca { + base wdm-if-tca-type; + description + "The Interface Transmit power TCA"; + } + + identity rx-power-tca { + base wdm-if-tca-type; + description + "The Interface Receive power TCA"; + } + + identity rx-pol-power-diff-tca { + base wdm-if-tca-type; + description + "The X-Y power difference between the two polarizations TCA + on the receiver interface"; + } + + identity rx-pol-skew-diff-tca { + base wdm-if-tca-type; + description + "The X-Y skew between the two polarizations TCA on the + receiver interface"; + } + + identity rx-cd-tca { + base wdm-if-tca-type; + description + "The fiber chromatic dispersion (CD) TCA on the receiver + interface"; + } + + identity rx-pmd-tca { + base wdm-if-tca-type; + description + "The polarization mode dispersion (PMD) TCA on the receiver + interface"; + } + + identity rx-pdl-tca { + base wdm-if-tca-type; + description + "The polarization dependent loss (PDL) TCA on the receiver + interface"; + } + + identity rx-frequency-offset-tca { + base wdm-if-tca-type; + description + "The Frequency offset TCA "; + } + + identity rx-osnr-tca { + base wdm-if-tca-type; + description + "Optical Signal to Noise Ratio (OSNR) TCA on the receiver + interface"; + } + + identity laser-temperature-tca { + base wdm-if-tca-type; + description + "Laser temperature TCA on the transmiter laser"; + } + + identity rx-pre-fec-ber-tca { + base wdm-if-tca-type; + description + "Pre-FEC Bit Error Rate (BER) TCA on the receiver + interface"; + } + + identity rx-uncorrected-words-tca { + base wdm-if-tca-type; + description + "Counter of Post-FEC uncorrected words TCA on the receiver + interface"; + } + + identity rx-q-factor-tca { + base wdm-if-tca-type; + description + "Q-factor TCA on the receiver interface"; + } + + grouping wdm-if-tca-thresholds { + description + "Thresholds for TCA's"; + leaf tca-type { + type identityref { + base wdm-if-tca-type; + } + mandatory true; + description + "type of the TCA that identify the + performance measurement, eg tx-power-tca"; + } + leaf tca-name { + type string; + mandatory true; + description + "A textual name of the TCA that explain its scope + eg 'High-RX-Power'"; + } + leaf raise-threshold { + type l0-types:decimal-5; + must 'current() != ../clear-threshold' { + error-message + "TCA raise and clear thresholds must be different"; + } + mandatory true; + description + "A TCA is raised if the variable cross this threshold: + - if raise-threshold is greater than clear-threshold + the TCA is raised when the value exceed this threshold + - if raise-threshold is smaller than clear-threshold, the + TCA is raised when the value fall below this threshold"; + } + leaf clear-threshold { + type l0-types:decimal-5; + must 'current() != ../raise-threshold' { + error-message + "TCA raise and clear thresholds must be different"; + } + mandatory true; + description + "A TCA cleared when the variable cross this threshold: + - if clear-threshold is smaller than raise-threshold + the TCA is cleared when the value fall below this threshold + - if clear-threshold is grater than raise-threshold, the + TCA is cleared when the value exceed this threshold"; + } + } // end grouping wdm-if-tca-threshold + + grouping wdm-if-tca-list { + description + "List of TCA's"; + leaf number-of-tcas-supported { + type uint32; + default "0"; + config false; + description + "Number of TCAs supported by this interface, + if the implementation do not suport TCAs it SHALL leave this + value to defualt = 0"; + } + list tca-list { + key "tca-id"; + description + "List of the TCAs"; + leaf tca-id { + type string; + mandatory true; + description + "Unique Identifier of the TCA defined for the interface"; + } + uses wdm-if-tca-thresholds; + } + } // end grouping wdm-if-tca-list + + grouping wdm-if-config { + description + "DWDM Interface Configuration parameters"; + leaf target-central-frequency { + type l0-types:frequency-thz; + description + "This parameter indicates the interface Central Frequency + configuration."; + reference + "ITU-T G.694.1 (10/2020): Spectral grids for WDM + applications: DWDM frequency grid"; + } + leaf target-tx-channel-power { + type l0-types:power-dbm; + description + "This parameter indicates the terget configured TX channel + optical power."; + } + } // end grouping wdm-if-node-params + + grouping wdm-if-operational { + description + "DWDM Interface Operational status data"; + leaf central-frequency { + type l0-types:frequency-thz; + config false; + description + "This parameter indicates the current interface Central + Frequency."; + reference + "ITU-T G.694.1 (10/2020): Spectral grids for WDM + applications: DWDM frequency grid"; + } + leaf cur-osnr { + type l0-types:snr-or-unknown; + units "dB"; + default "unknown"; + config false; + description + "Current measured Optical Signal to Noise Ratio (OSNR), + if not supported by the implementation SHALL + not be present"; + } + leaf min-osnr-margin { + type l0-types:snr-or-unknown; + default "unknown"; + config false; + description + "Optical Signal to Noise (OSNR) margin to FEC threshold, if + not supported by the implementation SHALL remain undefined"; + } + leaf q-margin { + type l0-types:decimal-2-or-unknown; + units "dB"; + default "unknown"; + config false; + description + "Q-factor margin to FEC threshold, if not supported by the + implementationp SHALL remain undefined"; + reference + "ITU-T O.201 (07/2003): Q-factor test equipment to estimate + the transmission performance of optical channels"; + } + leaf q-factor { + type l0-types:decimal-2-or-unknown; + units "dB"; + default "unknown"; + config false; + description + "Current measured Q-factor of the interface, + if not supported by the implementation SHALL + not be present"; + reference + "ITU-T O.201 (07/2003): Q-factor test equipment to estimate + the transmission performance of optical channels"; + } + leaf uncorrected-words { + type uint64; + config false; + description + "Counter of Post-FEC uncorrected errored words, + if not supported by the implementation SHALL + not be present"; + } + leaf pre-fec-ber { + type l0-types:decimal-18-or-unknown; + default "unknown"; + config false; + description + "Current measured Pre-FEC error rate, + if not supported by the implementation SHALL + not be present"; + } + leaf chromatic-dispersion { + type l0-types:decimal-2-or-unknown; + units "ps/nm"; + default "unknown"; + config false; + description + "Chromatic ispersion (CD) on the receive, + if not supported by the implementation SHALL + not be present"; + reference + "RFC ZZZZ: A YANG Data Model for Optical Impairment-aware + Topology, Section 2.4.6"; + } + leaf polarization-mode-dispersion { + type l0-types:decimal-2-or-unknown; + units "ps"; + default "unknown"; + config false; + description + "Current polarization mode dispersion (PMD) on the receive, + if not supported by the implementation SHALL + not be present"; + reference + "ITU-T G.666 (02/2011): Characteristics of polarization + mode dispersion compensators and of receivers that + compensate for polarization mode dispersion + RFC ZZZZ: A YANG Data Model for Optical Impairment-aware + Topology, Section 2.4.6"; + } + leaf polarization-dependent-loss { + type l0-types:power-loss-or-unknown; + default "unknown"; + config false; + description + "Current polarization dependent loss (PDL) on the receive, + if not supported by the implementation SHALL + not be present"; + reference + "RFC ZZZZ: A YANG Data Model for Optical Impairment-aware + Topology, Section 2.4.6"; + } + } // end grouping wdm-if-operational + + notification wdm-if-tca { + description + "A notification for a Threshold Crossing Alert (TCA)"; + leaf if-name { + type leafref { + path "/if:interfaces/if:interface/if:name"; + } + mandatory true; + description + "Interface name"; + } + leaf tca-type { + type identityref { + base wdm-if-tca-type; + } + mandatory true; + description + "The Type of TCA that have triggered the notification, + e.g, tx-power-tca"; + } + leaf tca-name { + type string; + mandatory true; + description + "A textual name of the TCA that have triggered the + notification that explain its scope, eg 'TX Power Degrade'"; + } + } // end notification wdm-if-tca + + augment "/if:interfaces" { + description + "Template definition for Optical Interface explicit-modes"; + container wdm-if-templates { + config false; + description + "Optical Interface explicit-mode templates"; + container explicit-transceiver-modes { + description + "The top level container for the list of the + transceivers' explicit modes."; + list explicit-transceiver-mode { + key "explicit-transceiver-mode-id"; + description + "The list of the transceivers' explicit modes."; + leaf explicit-transceiver-mode-id { + type string { + length "64"; + } + description + "The identifier of the transceivers' explicit mode."; + } + uses l0-types:explicit-mode; + } // end list explicit-transceiver-mode + } // end container explicit-transceiver-modes + } // end container wdm-if-templates + } // end augmentation interfaces + + augment "/if:interfaces/if:interface" { + description + "Parameters for an optical interface"; + container wdm-interface { + description + "Container for capabilities, configuration, + current operational data for a DWDM interface"; + uses l0-types:transceiver-capabilities { + augment "supported-modes/supported-mode/mode/" + + "explicit-mode/explicit-mode" { + description + "Augment the explicit-mode container with the + proper leafref."; + leaf explicit-transceiver-mode-ref { + type leafref { + path "../../../../../../wdm-if:wdm-if-templates" + + "/wdm-if:explicit-transceiver-modes" + + "/wdm-if:explicit-transceiver-mode" + + "/wdm-if:explicit-transceiver-mode-id"; + } + config false; + mandatory true; + description + "The reference to the explicit transceiver + mode template."; + } // end explicit-transceiver-mode-ref + } // end augmentation explicit-mode + } // end uses l0-types:transceiver-capabilities + container wdm-if-config { + description + "Configuration parameters of this interface"; + leaf configured-mode { + type union { + type empty; + type leafref { + path "../../supported-modes/supported-mode/mode-id"; + require-instance false; + } + } + default "empty"; + description + "Reference to the configured mode for transceiver + compatibility approach. + + The empty value is used to report that no mode has + been configured and there is no default mode. + + When not present, the configured-mode is not reported + by the server, this means the interface is not + configured"; + } + uses wdm-if-config; + } // end container wdm-if-config + container wdm-if-tcas { + description + "Threshold Crossing Alerts definition and configuration"; + uses wdm-if-tca-list; + } // end of container wdm-if-tcas + container wdm-if-status { + config false; + description + "Current operationa status parameters of this interface"; + uses l0-types:common-transceiver-param { + refine "tx-channel-power" { + config false; + } + refine "line-coding-bitrate" { + config false; + } + } + uses wdm-if-operational; + } // end container wdm-if-status + } // end container wdm-interface + } // end augmentation interface + +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-wdm-path-computation@2024-02-29.yang b/experimental/ietf-extracted-YANG-modules/ietf-wdm-path-computation@2026-02-27.yang similarity index 82% rename from experimental/ietf-extracted-YANG-modules/ietf-wdm-path-computation@2024-02-29.yang rename to experimental/ietf-extracted-YANG-modules/ietf-wdm-path-computation@2026-02-27.yang index ae8d12620..6331041e3 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-wdm-path-computation@2024-02-29.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-wdm-path-computation@2026-02-27.yang @@ -1,32 +1,28 @@ module ietf-wdm-path-computation { yang-version 1.1; - namespace - "urn:ietf:params:xml:ns:yang:ietf-wdm-path-computation"; - prefix "wdm-pc"; - - import ietf-te-path-computation { - prefix "tepc"; - reference - "I-D.ietf-teas-yang-path-computation-22: Yang model - for requesting Path Computation."; - } + namespace "urn:ietf:params:xml:ns:yang:ietf-wdm-path-computation"; + prefix wdm-pc; import ietf-te { - prefix "te"; + prefix te; reference "I-D.ietf-teas-yang-te-36: A YANG Data Model for Traffic - Engineering Tunnels and Interfaces."; + Engineering Tunnels and Interfaces."; + } + import ietf-te-path-computation { + prefix tepc; + reference + "I-D.ietf-teas-yang-path-computation-22: Yang model + for requesting Path Computation."; } - import ietf-layer0-types { - prefix "l0-types"; + prefix l0-types; reference "I-D.ietf-ccamp-rfc9093-bis: A YANG Data Model for Layer 0 - Types."; + Types."; } - import ietf-wdm-tunnel { - prefix "wdm-tnl"; + prefix wdm-tnl; reference "I-D.ietf-wdm-tunnel: A YANG Data Model for WDM Tunnels."; } @@ -45,49 +41,44 @@ module ietf-wdm-path-computation { Editor: Sergio Belotti "; - description "This module defines a model for requesting - WDM Path Computation. - - The model fully conforms to the Network Management - Datastore Architecture (NMDA). + WDM Path Computation. - Copyright (c) 2022 IETF Trust and the persons - identified as authors of the code. All rights reserved. + Copyright (c) 2026 IETF Trust and the persons + identified as authors of the code. All rights reserved. - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Revised BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). + 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."; + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; - revision "2024-02-29" { + revision 2026-02-27 { description "Initial version."; reference "RFC XXXX: YANG Data Models for requesting Path Computation - in Optical Networks."; + in Optical Networks."; // RFC Ed.: replace XXXX with actual RFC number, update date // information and remove this note } - /* - * Data nodes - */ - + /* + * Data nodes + */ /* * Augment tunnel attributes */ + augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" + "tepc:tunnel-attributes" { description - "Augment with WDM tunnel-specific constraints."; - + "Augment with WDM tunnel-specific constraints."; uses wdm-tnl:wdm-constraint; } @@ -103,11 +94,11 @@ module ietf-wdm-path-computation { + "tepc:numbered-node-hop" { description "Augment with transceiver configurations."; - uses wdm-tnl:path-transceiver-config; } //??? + augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" + "tepc:path-request/tepc:optimizations/tepc:algorithm/" + "tepc:metric/tepc:optimization-metric/" @@ -115,16 +106,16 @@ module ietf-wdm-path-computation { + "tepc:route-object-exclude-object/tepc:type" { description "Augment the route 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 oms-element { + description + "The OMS element route hop type"; leaf oms-element-uid { type string; description "The unique id of the OMS element."; } - description - "The OMS element route hop type"; } } @@ -136,11 +127,11 @@ module ietf-wdm-path-computation { + "tepc:numbered-node-hop" { description "Augment with transceiver configurations."; - uses wdm-tnl:path-transceiver-config; } //??? + augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" + "tepc:path-request/tepc:optimizations/tepc:algorithm/" + "tepc:metric/tepc:optimization-metric/" @@ -148,16 +139,16 @@ module ietf-wdm-path-computation { + "tepc:route-object-include-object/tepc:type" { description "Augment the route 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 oms-element { + description + "The OMS element route hop type"; leaf oms-element-uid { type string; description "The unique id of the OMS element."; } - description - "The OMS element route hop type"; } } @@ -167,25 +158,25 @@ module ietf-wdm-path-computation { + "tepc:numbered-node-hop" { description "Augment with transceiver configurations."; - uses wdm-tnl:path-transceiver-config; } //??? + augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" + "tepc:path-request/tepc:explicit-route-objects/" + "tepc:route-object-exclude-always/tepc:type" { description "Augment the route 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 oms-element { + description + "The OMS element route hop type"; leaf oms-element-uid { type string; description "The unique id of the OMS element."; } - description - "The OMS element route hop type"; } } @@ -195,52 +186,51 @@ module ietf-wdm-path-computation { + "tepc:numbered-node-hop" { description "Augment with transceiver configurations."; - uses wdm-tnl:path-transceiver-config; } //??? + augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" + "tepc:path-request/tepc:explicit-route-objects/" + "tepc:route-object-include-exclude/tepc:type" { description "Augment the route 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 oms-element { + description + "The OMS element route hop type"; leaf oms-element-uid { type string; description "The unique id of the OMS element."; } - description - "The OMS element route hop type"; } } - augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" - + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/" - + "tepc:type/tepc:numbered-node-hop" { + augment "/te:tunnels-path-compute/te:input/" + + "te:path-compute-info/tepc:synchronization/" + + "tepc:exclude-objects/tepc:excludes/tepc:type/" + + "tepc:numbered-node-hop" { description "Augment with transceiver configurations."; - uses wdm-tnl:path-transceiver-config; } //??? - augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" - + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/" - + "tepc:type" { + + augment "/te:tunnels-path-compute/te:input/" + + "te:path-compute-info/tepc:synchronization/" + + "tepc:exclude-objects/tepc:excludes/tepc:type" { description "Augment the route hop for the explicit route objects to always - exclude from synchronized path computation."; + exclude from synchronized path computation."; case oms-element { leaf oms-element-uid { type string; description "The unique id of the OMS element."; } - description - "The OMS element route hop type"; } } @@ -253,9 +243,8 @@ module ietf-wdm-path-computation { + "tepc:computed-paths-properties/" + "tepc:computed-path-properties/tepc:path-properties" { description - "Augment with additional properties for WDM paths."; - - uses l0-types:l0-path-properties; + "Augment with additional properties for WDM paths."; + uses l0-types:path-properties; } augment "/te:tunnels-path-compute/te:output/" @@ -266,11 +255,11 @@ module ietf-wdm-path-computation { + "tepc:type/tepc:numbered-node-hop" { description "Augment with transceiver configurations."; - uses wdm-tnl:path-transceiver-config; } //??? + augment "/te:tunnels-path-compute/te:output/" + "te:path-compute-result/tepc:response/" + "tepc:computed-paths-properties/" @@ -279,15 +268,15 @@ module ietf-wdm-path-computation { + "tepc:type" { description "Augment the route hop for the route object of the computed - path."; + path."; case oms-element { + description + "The OMS element route hop type"; leaf oms-element-uid { type string; description "The unique id of the OMS element."; } - description - "The OMS element route hop type"; } } @@ -300,7 +289,7 @@ module ietf-wdm-path-computation { + "tepc:label-restrictions/tepc:label-restriction" { description "Augment TE label range information for the ingress segment - of the requested path."; + of the requested path."; uses l0-types:wdm-label-range-info; } @@ -309,7 +298,7 @@ module ietf-wdm-path-computation { + "tepc:label-restrictions/tepc:label-restriction" { description "Augment TE label range information for the egress segment - of the requested path."; + of the requested path."; uses l0-types:wdm-label-range-info; } @@ -325,8 +314,8 @@ module ietf-wdm-path-computation { + "tepc:label-hop/tepc:te-label/tepc: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 wdm { uses l0-types:wdm-label-hop; } @@ -340,8 +329,8 @@ module ietf-wdm-path-computation { + "tepc:label-hop/tepc:te-label/tepc: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 wdm { uses l0-types:wdm-label-hop; } @@ -353,7 +342,7 @@ module ietf-wdm-path-computation { + "tepc:label-hop/tepc:te-label/tepc: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 wdm { uses l0-types:wdm-label-hop; } @@ -365,7 +354,7 @@ module ietf-wdm-path-computation { + "tepc:label-hop/tepc:te-label/tepc: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 wdm { uses l0-types:wdm-label-hop; } @@ -377,7 +366,7 @@ module ietf-wdm-path-computation { + "tepc:label-start/tepc:te-label/tepc:technology" { description "Augment TE label range start for the ingress segment - of the requested path."; + of the requested path."; case wdm { uses l0-types:wdm-label-start-end; } @@ -389,7 +378,7 @@ module ietf-wdm-path-computation { + "tepc:label-end/tepc:te-label/tepc:technology" { description "Augment TE label range end for the ingress segment - of the requested path."; + of the requested path."; case wdm { uses l0-types:wdm-label-start-end; } @@ -401,7 +390,7 @@ module ietf-wdm-path-computation { + "tepc:label-step/tepc:technology" { description "Augment TE label range step for the ingress segment - of the requested path."; + of the requested path."; case wdm { uses l0-types:wdm-label-step; } @@ -413,7 +402,7 @@ module ietf-wdm-path-computation { + "tepc:label-start/tepc:te-label/tepc:technology" { description "Augment TE label range start for the egress segment - of the requested path."; + of the requested path."; case wdm { uses l0-types:wdm-label-start-end; } @@ -425,7 +414,7 @@ module ietf-wdm-path-computation { + "tepc:label-end/tepc:te-label/tepc:technology" { description "Augment TE label range end for the egress segment - of the requested path."; + of the requested path."; case wdm { uses l0-types:wdm-label-start-end; } @@ -437,19 +426,19 @@ module ietf-wdm-path-computation { + "tepc:label-step/tepc:technology" { description "Augment TE label range end for the egress segment - of the requested path."; + of the requested path."; case wdm { uses l0-types:wdm-label-step; } } augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" - + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/" - + "tepc:type/tepc:label/tepc:label-hop/" + + "tepc:synchronization/tepc:exclude-objects/" + + "tepc:excludes/tepc:type/tepc:label/tepc:label-hop/" + "tepc:te-label/tepc:technology" { description "Augment TE label hop for the explicit route objects to always - exclude from synchronized path computation."; + exclude from synchronized path computation."; case wdm { uses l0-types:wdm-label-hop; } @@ -464,7 +453,7 @@ module ietf-wdm-path-computation { + "tepc:label-hop/tepc:te-label/tepc:technology" { description "Augment TE label hop for the route object of the computed - path."; + path."; case wdm { uses l0-types:wdm-label-hop; } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-wdm-tunnel@2024-07-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-wdm-tunnel@2025-10-20.yang similarity index 65% rename from experimental/ietf-extracted-YANG-modules/ietf-wdm-tunnel@2024-07-02.yang rename to experimental/ietf-extracted-YANG-modules/ietf-wdm-tunnel@2025-10-20.yang index 0b747d3da..6ff1a8c0a 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-wdm-tunnel@2024-07-02.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-wdm-tunnel@2025-10-20.yang @@ -63,7 +63,7 @@ module ietf-wdm-tunnel { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision "2024-07-02" { + revision "2025-10-20" { description "Updated revision with combined WSON and Flexi-grid tunnel YANG model"; @@ -74,6 +74,36 @@ module ietf-wdm-tunnel { // information and remove this note } + /* + * Identities + */ + identity otsig-termination-type { + description + "Digital termination type applicable to OTSiG"; + } + identity otsi-lane-termination-type { + description + "Digital termination type applicable to a single OTSi. + The termination of an optical signal occurs at the + reference point immediately before inverse multiplexing + in the transmitting direction or immediately after + inverse multiplexing in the receiving direction."; + } + identity digital-mapping-type { + description + "Digital mapping type for the client payload of + transceivers"; + } + identity inverse-mux-type { + description + "Inverse multiplexing type"; + } + identity otsig-regeneration-layer { + description + "Level of 3R regeneration"; + } + //TBD: types to be added + /* * Groupings */ @@ -133,15 +163,6 @@ module ietf-wdm-tunnel { "The preferred channel received power."; } - /* - leaf inverse-multiplexing-mode { - //type l0-types:inverse-multiplexing-mode; - type string; - description - "The inverse multiplexing mode."; - } - */ - uses l0-types:path-constraints; } @@ -161,37 +182,256 @@ module ietf-wdm-tunnel { uses additional-transceiver-configuration-constraints; } - grouping transceiver-config { + grouping transceiver-common-config { description - "This grouping defines explicit transceiver - configurations."; + "This grouping specifies common configurations + for transceivers."; - leaf transponder-id { + leaf transceiver-id { type uint32; - description "transponder identifier"; + description + "Transceiver identifier"; + } + leaf otsi-carrier-id { + type uint16; + description + "OTSi carrier identifier associated with the + transceiver."; + } + leaf otsi-carrier-frequency { + type l0-types:frequency-thz; + description + "OTSi carrier frequency, i.e. configured transmitter + frequency."; } + leaf tx-channel-power { + type l0-types:power-dbm; + description + "The preferred channel transmit power."; + } + } - list transceivers { - key "transceiver-id"; + grouping regenerator-incoming-outgoing-common-state { + description + "This grouping specifies common states + for incoming and outgoing transceivers + associated with a regenerator group."; + + leaf operational-mode { + type string { + length "1..255"; + } description - "List of transceivers used within the transponder."; + "Operational mode of the transceiver."; + } - leaf transceiver-id { - type uint32; + leaf line-coding-bitrate { + type identityref { + base l0-types:line-coding; + } + description + "The bit rate/line coding of the optical tributary + signal that constrains the configuration of + the transceiver."; + reference + "ITU-T G.698.2 section 7.1.2"; + } + } + + grouping regenerator-incoming-outgoing-common-config { + description + "This grouping specifies common configurations + for incoming and outgoing transceivers + associated with a regenerator group."; + + uses regenerator-incoming-outgoing-common-state; + + leaf preferred-rx-channel-power { + type l0-types:power-dbm; + description + "The preferred channel received power."; + } + + uses l0-types:path-constraints; + } + + grouping transponder-digital-termination-config { + description + "This grouping specifies the configuration of + digital layer termination applicable to the + transceivers."; + + container digital-terminations { + description + "Digital layer termination applicable to the transceivers."; + + list digital-termination { + key "index"; description - "transceiver identifier"; + "Sequence of digital layer terminations."; + + leaf index { + type uint8; + description + "An index number used to identify entries in the list, + organized in ascending order of their values."; + } + + leaf termination-type { + type identityref { + base otsig-termination-type; + } + description + "Digital layer termination before/after inverse + multiplexing in the tx/rx direction of the transceiver, + that applies to the whole OTSiG, also applicable to + the special case when there is a single OTSi in the + OTSiG, i.e. without inverse multiplexing."; + } + + leaf mapping-type { + type identityref { + base digital-mapping-type; + } + description + "Identifies the type of digital mapping of the + client payload."; + } } - leaf otsi-carrier-id { - type uint16; + } + } + + grouping transceiver-inverse-multiplexing-config { + description + "This grouping specifies inverse-multiplexing configurations + applicable to multi-carrier transceivers."; + + container inverse-multiplexing { + presence + "When present, it indicates that the transceiver + supports inverse multiplexing."; + + description + "Transceiver configuration for inverse multiplexing."; + + leaf inverse-mux-type { + type identityref { + base inverse-mux-type; + } description - "OTSi carrier identifier associated with the - transceiver."; + "Type of inverse multiplexing."; } - uses transceiver-constraints; + leaf otsi-lane-termination-type { + type identityref { + base otsi-lane-termination-type; + } + description + "Digital layer termination before/after inverse + multiplexing in the rx/tx direction of the + transceiver, that applies to a single OTSi within + the inverse multiplexing group."; + } + + container additional-transceivers { + description + "Configuration for additional transceivers with + an index value 1 and higher within the same + inverse multiplexing group."; + + leaf index { + type uint8 { + range "1..max"; + } + description + "The index of the transceiver in the inverse + multiplexing group starting from value 1."; + } + + uses transceiver-common-config; + } } } + grouping transceiver-config { + description + "This grouping specifies configurations for transceivers + at source, destination nodes, as well as at regenerator + nodes with a single pair of regenerator."; + + leaf transponder-id { + type uint32; + description "transponder identifier"; + } + + uses transponder-digital-termination-config; + + container transceiver { + description + "Specifies transceiver configurations. The attributes + specified in this container, excluding those within + the inverse-multiplexing container, apply to a single + transceiver when inverse multiplexing is not supported, + as well as to the first transceiver, identified by an + index value of 0 when inverse multiplexing is enabled. + + Attributes within the inverse-multiplexing container + are applicable exclusively to transceivers with an + index value of 1 or higher, belonging to the same + inverse multiplexing group."; + + uses transceiver-common-config; + + uses regenerator-incoming-outgoing-common-config; + + uses transceiver-inverse-multiplexing-config; + } + } + + grouping multi-regen-transceiver-config { + description + "This grouping specifies configurations for transceivers + at at regenerator nodes with multiple pairs of + regenerators."; + + leaf transponder-id { + type uint32; + description "transponder identifier"; + } + container transceiver { + description + "Specifies transceiver configurations at a regenerator + node with multiple pairs of regenerators."; + + uses transceiver-common-config; + } + } + + grouping regenerator-common-config { + description + "This grouping defines a set of common attributes + applicable to 3R regenerators."; + + leaf regen-group-id { + type uint32; + description + "3R group identifier."; + } + leaf regeneration-layer { + type identityref { + base otsig-regeneration-layer; + } + description + "Indicate the chosen level of digital layer + regeneration, e.g. ODU, FlexOnM, before/after inverse + multiplexing in the tx/rx direction, that applies to + the whole OTSiG. It also applies to the case when + there is only one OTSi in the OTSiG, i.e. without + inverse multiplexing, in which case the number of + OTSis in the OTSiGs before/after the regenerator + may be different."; + } + } grouping path-transceiver-config { description "This grouping defines a set of transceivers on a node, @@ -202,58 +442,145 @@ module ietf-wdm-tunnel { description "The relative position of the node within the path."; case source { - container source-transceiver { + container source-transponder { description - "Constraints for transceiver configurations at the - source node"; + "Constraints for configuring transceivers at the + source node transponder."; uses transceiver-config; } } case destination { - container destination-transceiver { + container destination-transponder { description - "Constraints for transceiver configurations at the - destination node"; + "Constraints for configuring transceivers at the + source node transponder."; uses transceiver-config; } } - case transit { - container regen-transceivers { + case regenerator { + container regenerator { description - "Constraints for transceiver configurations at the - transit node equipped with regenerators"; - - leaf regen-group-id { - type uint32; + "Constraints for configuring transponders at the + regenerator node with a pair of transponder as + regenerator. + + The forward direction refers to the direction of + the optical path traversing from the source to the + destination, while the reverse direction refers to + direction of the optical path, traveling from the + destination back to the source. + + For uni-directional regenerators, one transponder, + labeled 'incoming', regenerates signals in the + forward direction, while another transponder, + labeled 'outgoing', handles signal regeneration + in the reverse direction. + + For bi-directional, or back-to-back regenerators, + one transponder, labeled 'incoming', receives and + transmits signal from/to the same segment of the + optical path toward the source, while another + transponder, labeled 'outgoing', receives and + transmits signal from/to the same segment of the + optical path toward the destination."; + + uses regenerator-common-config; + + container incoming-transponder { description - "3R regen group identifier."; - } + "Constraints for transceiver configurations in the + incoming direction of the regenerator."; - /* - leaf regen-level { - //type l0-types:regen-level; - type string; - description - "Indicate the chosen level of 3R regeneration."; + uses transceiver-config; } - */ - container incoming-transceiver { + container outgoing-transponder { description "Constraints for transceiver configurations at the - incoming direction of the regenerator"; + outgoing direction of the regenerator"; uses transceiver-config; } + } + } + case regenerators { + container regenerators { + description + "Constraints for configuring transponders at the + regenerator node with multiple transponder pairs + (therefore, in multiple regenerator groups) as + regenerators. A such example is described in + ITU-T G.798 Amd.3 for FlexOxR. + + The forward direction refers to the direction of + the optical path traversing from the source to the + destination, while the reverse direction refers to + direction of the optical path, traveling from the + destination back to the source. + + For uni-directional regenerators, mulitple + transponders, labeled 'incoming', together regenerate + signals in the forward direction, while another + multiple transponders, labeled 'outgoing', handles + signal regeneration in the reverse direction. + + For bi-directional, or back-to-back regenerators, + mulitple transponder, labeled 'incoming', receive and + transmits signal from/to the same segment of the + optical path toward the source, while another + multiple transponder, labeled 'outgoing', receives and + transmits signal from/to the same segment of the + optical path toward the destination."; + + container common-incoming { + description + "Common configuration for transponders in the incoming + direction."; - container outgoing-transceiver { + uses regenerator-incoming-outgoing-common-config; + } + + container common-outgoing { description - "Constraints for transceiver configurations at the - outgoing direction of the regenerator"; + "Common configuration for transponders in the outgoing + direction."; - uses transceiver-config; + uses regenerator-incoming-outgoing-common-config; + } + + list regenerator { + key "index"; + + description + "A list of regenerators used at the regenerator + node."; + + leaf index { + type uint8; + description + "An index number used to identify a regenerator + in the list, organized in ascending order of their + values."; + } + uses regenerator-common-config; + + container incoming-transponder { + description + "Constraints for transceiver configurations in the + incoming direction of the regenerator."; + + uses multi-regen-transceiver-config; + } + + container outgoing-transponder { + description + "Constraints for transceiver configurations at the + outgoing direction of the regenerator"; + + uses multi-regen-transceiver-config; + } } } } @@ -296,7 +623,7 @@ module ietf-wdm-tunnel { } leaf value { - type l0-types:decimal-2-or-null; + type l0-types:decimal-2-or-unknown; units "dB"; description "Estimated Q-factor based on the pre-FEC BER."; @@ -306,43 +633,38 @@ module ietf-wdm-tunnel { grouping transceiver-state { description - "This grouping includes common transceiver state - information."; + "This grouping specifies transceiver state parameters + at source, destination nodes, as well as at regenerator + nodes with a single pair of regenerator."; leaf transponder-id { type uint32; description "transponder identifier"; } - list transceivers { - key "transceiver-id"; + uses transponder-digital-termination-config; + + container transceiver { description - "List of transceivers used within the transponder."; + "Specifies transceiver states. The attributes + specified in this container, excluding those within + the inverse-multiplexing container, apply to a single + transceiver when inverse multiplexing is not supported, + as well as to the first transceiver, identified by an + index value of 0 when inverse multiplexing is enabled. - leaf otsi-carrier-id { - type uint16; - description - "OTSi carrier identifier associated with the - transceiver."; - } - leaf transceiver-id { - type uint32; - description - "transceiver identifier"; - } + Attributes within the inverse-multiplexing container + are applicable exclusively to transceivers with an + index value of 1 or higher, belonging to the same + inverse multiplexing group."; - leaf otsi-carrier-frequency { - type union { - type l0-types:frequency-thz; - type empty; - } - description - "OTSi carrier frequency, equivalent to the - actual configured transmitter frequency, when known, or - an empty value when unknown."; - } + uses transceiver-common-config; + + uses regenerator-incoming-outgoing-common-state; uses l0-types:common-transceiver-readonly-param; + + uses transceiver-inverse-multiplexing-config; } } @@ -369,64 +691,149 @@ module ietf-wdm-tunnel { grouping path-transceiver-state { description - "This grouping defines the state of transceivers on a - node functioning as starting, terminating transceivers, - or regenerators."; + "This grouping defines a set of transceivers on a node, + serving as either source transceivers, destination + transceivers, or regenerators."; choice node-position { description "The relative position of the node within the path."; case source { - container source-transceiver { + container source-transponder { description - "Transceiver state at the source node."; + "Transceiver states at the source node transponder."; uses transceiver-state; } } case destination { - container destination-transceiver { + container destination-transponder { description - "Transceiver state at the destination node."; + "Transceiver states at the destination node + transponder."; uses transceiver-state; } } - case transit { - container regen-transceivers { + case regenerator { + container regenerator { description - "Transceiver state at the transit node equipped - with regenerators."; - - leaf regen-group-id { - type uint32; + "The states of a regenerator node with a pair of + transponder as regenerator. + + The forward direction refers to the direction of + the optical path traversing from the source to the + destination, while the reverse direction refers to + direction of the optical path, traveling from the + destination back to the source. + + For uni-directional regenerators, one transponder, + labeled 'incoming', regenerates signals in the + forward direction, while another transponder, + labeled 'outgoing', handles signal regeneration + in the reverse direction. + + For bi-directional, or back-to-back regenerators, + one transponder, labeled 'incoming', receives and + transmits signal from/to the same segment of the + optical path toward the source, while another + transponder, labeled 'outgoing', receives and + transmits signal from/to the same segment of the + optical path toward the destination."; + + uses regenerator-common-config; + + container incoming-transponder { description - "3R regen group identifier."; - } + "Constraints for transceiver configurations in the + incoming direction of the regenerator."; - /* - leaf regen-level { - //type l0-types:regen-level; - type string; - description - "Indicate the chosen level of 3R regeneration."; + uses transceiver-state; } - */ - container incoming-transceiver { + container outgoing-transponder { description - "Transceiver state on the incoming direction of - the regenerator."; + "Constraints for transceiver configurations at the + outgoing direction of the regenerator"; uses transceiver-state; } + } + } + case regenerators { + container regenerators { + description + "Regenerator states at a regenerator node formed by + multiple parallel regenerators. A such example is + described in ITU-T G.798 Amd.3 for FlexOxR. + + The forward direction refers to the direction of + the optical path traversing from the source to the + destination, while the reverse direction refers to + direction of the optical path, traveling from the + destination back to the source. + + For uni-directional regenerators, mulitple + transponders, labeled 'incoming', together regenerate + signals in the forward direction, while another + multiple transponders, labeled 'outgoing', handles + signal regeneration in the reverse direction. + + For bi-directional, or back-to-back regenerators, + mulitple transponder, labeled 'incoming', receive and + transmits signal from/to the same segment of the + optical path toward the source, while another + multiple transponder, labeled 'outgoing', receives and + transmits signal from/to the same segment of the + optical path toward the destination."; + + container common-incoming { + description + "Common configuration for transponders in the incoming + direction."; + + uses regenerator-incoming-outgoing-common-state; + } - container outgoing-transceiver { + container common-outgoing { description - "Transceiver state on the outgoing direction of - the regenerator."; + "Common configuration for transponders in the outgoing + direction."; - uses transceiver-state; + uses regenerator-incoming-outgoing-common-state; + } + + list regenerator { + key "index"; + + description + "A list of regenerators used at the + regenerator node."; + + leaf index { + type uint8; + description + "An index number used to identify a regenerator + in the list, organized in ascending order of their + values."; + } + uses regenerator-common-config; + + container incoming-transponder { + description + "Constraints for transceiver configurations in the + incoming direction of the regenerator."; + + uses multi-regen-transceiver-config; + } + + container outgoing-transponder { + description + "Constraints for transceiver configurations at the + outgoing direction of the regenerator"; + + uses multi-regen-transceiver-config; + } } } } @@ -530,33 +937,6 @@ module ietf-wdm-tunnel { } } - /* - grouping digital-layer-constraint { - description - "Grouping for digital layer constraints"; - - container digital-constraint { - description - "Digital layer constraints."; - - leaf digital-termination { - //type l0-types:digital-termination-type; - type string; - description - "Identifies how digital signal is terminated."; - } - - leaf multiplexing-label-type { - //type l0-types:multiplexing-label-type; - type string; - description - "Identifies the type of multiplexing technology - used (e.g. ODUj,k)."; - } - } - } - */ - /* * Data nodes */ @@ -577,12 +957,24 @@ module ietf-wdm-tunnel { * Applicable to starting, terminating and regenerator * transceivers. */ + augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/" + + "te:primary-path/te:explicit-route-objects/" + + "te:route-object-include-exclude/te:type/" + + "te:numbered-node-hop/te:numbered-node-hop" { + description + "Augment TE primary explicit path (include or exclude) + with transceiver configurations."; + + uses path-transceiver-config; + } + augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/" + "te:primary-path/te:explicit-route-objects/" + "te:route-object-exclude-always/te:type/" + "te:numbered-node-hop/te:numbered-node-hop" { description - "Augment TE primary path with transceiver configurations."; + "Augment TE primary explicit path (exclude always) + with transceiver configurations."; uses path-transceiver-config; } @@ -592,14 +984,26 @@ module ietf-wdm-tunnel { * Applicable to starting, terminating and regenerator * transceivers. */ + augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/" + + "te:primary-path/te:primary-reverse-path/" + + "te:explicit-route-objects/" + + "te:route-object-include-exclude/te:type/" + + "te:numbered-node-hop/te:numbered-node-hop" { + description + "Augment TE primary reverse explicit path (include or exclude) + with transceiver configurations."; + + uses path-transceiver-config; + } + augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/" + "te:primary-path/te:primary-reverse-path/" + "te:explicit-route-objects/" + "te:route-object-exclude-always/te:type/" + "te:numbered-node-hop/te:numbered-node-hop" { description - "Augment TE primary reverse path with transceiver - configurations."; + "Augment TE primary reverse explicit path (exclude always) + with transceiver configurations."; uses path-transceiver-config; } @@ -609,12 +1013,24 @@ module ietf-wdm-tunnel { * Applicable to starting, terminating and regenerator * transceivers. */ + augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/" + + "te:secondary-path/te:explicit-route-objects/" + + "te:route-object-include-exclude/te:type/" + + "te:numbered-node-hop/te:numbered-node-hop" { + description + "Augment TE secondary explicit path (include or exclude) + with transceiver configurations."; + + uses path-transceiver-config; + } + augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/" + "te:secondary-path/te:explicit-route-objects/" + "te:route-object-exclude-always/te:type/" + "te:numbered-node-hop/te:numbered-node-hop" { description - "Augment TE secondary path with transceiver configurations."; + "Augment TE secondary explicit path (exclude always) + with transceiver configurations."; uses path-transceiver-config; } @@ -624,6 +1040,19 @@ module ietf-wdm-tunnel { * Applicable to starting, terminating and regenerator * transceivers. */ + augment "/te:te/te:tunnels/te:tunnel/" + + "te:secondary-reverse-paths/" + + "te:secondary-reverse-path/" + + "te:explicit-route-objects/" + + "te:route-object-include-exclude/te:type/" + + "te:numbered-node-hop/te:numbered-node-hop" { + description + "Augment TE secondary reverse explicit path (include or + exclude) with transceiver configurations."; + + uses path-transceiver-config; + } + augment "/te:te/te:tunnels/te:tunnel/" + "te:secondary-reverse-paths/" + "te:secondary-reverse-path/" @@ -631,8 +1060,8 @@ module ietf-wdm-tunnel { + "te:route-object-exclude-always/te:type/" + "te:numbered-node-hop/te:numbered-node-hop" { description - "Augment TE secondary reverse path with transceiver - configurations."; + "Augment TE secondary reverse explicit path (exclude always) + with transceiver configurations."; uses path-transceiver-config; } @@ -658,7 +1087,7 @@ module ietf-wdm-tunnel { + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + "wdm-tnl:node-position/wdm-tnl:source/" - + "wdm-tnl:source-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:source-transponder/wdm-tnl:transceiver" { description "Augment source transceiver with additional estimated parameters."; @@ -672,7 +1101,7 @@ module ietf-wdm-tunnel { + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + "wdm-tnl:node-position/wdm-tnl:destination/" - + "wdm-tnl:destination-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:destination-transponder/wdm-tnl:transceiver" { description "Augment destination transceiver with additional estimated parameters."; @@ -685,9 +1114,9 @@ module ietf-wdm-tunnel { + "te:computed-path-properties/te:path-properties/" + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" - + "wdm-tnl:node-position/wdm-tnl:transit/" - + "wdm-tnl:regen-transceivers/" - + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:node-position/wdm-tnl:regenerator/" + + "wdm-tnl:regenerator/" + + "wdm-tnl:incoming-transponder/wdm-tnl:transceiver" { description "Augment regen incoming transceiver with additional estimated parameters."; @@ -700,9 +1129,37 @@ module ietf-wdm-tunnel { + "te:computed-path-properties/te:path-properties/" + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" - + "wdm-tnl:node-position/wdm-tnl:transit/" - + "wdm-tnl:regen-transceivers/" - + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:node-position/wdm-tnl:regenerator/" + + "wdm-tnl:regenerator/" + + "wdm-tnl:outgoing-transponder/wdm-tnl:transceiver" { + description + "Augment regen outgoing transceiver with additional estimated + parameters."; + + uses l0-types:path-properties; + } + + augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/" + + "te:primary-path/te:computed-paths-properties/" + + "te:computed-path-properties/te:path-properties/" + + "te:path-route-objects/te:path-route-object/" + + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + + "wdm-tnl:node-position/wdm-tnl:regenerators/" + + "wdm-tnl:regenerators/wdm-tnl:common-incoming" { + description + "Augment regen incoming transceiver with additional estimated + parameters."; + + uses l0-types:path-properties; + } + + augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/" + + "te:primary-path/te:computed-paths-properties/" + + "te:computed-path-properties/te:path-properties/" + + "te:path-route-objects/te:path-route-object/" + + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + + "wdm-tnl:node-position/wdm-tnl:regenerators/" + + "wdm-tnl:regenerators/wdm-tnl:common-outgoing" { description "Augment regen outgoing transceiver with additional estimated parameters."; @@ -733,7 +1190,7 @@ module ietf-wdm-tunnel { + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + "wdm-tnl:node-position/wdm-tnl:source/" - + "wdm-tnl:source-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:source-transponder/wdm-tnl:transceiver" { description "Augment source transceiver with additional estimated parameters."; @@ -748,7 +1205,7 @@ module ietf-wdm-tunnel { + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + "wdm-tnl:node-position/wdm-tnl:destination/" - + "wdm-tnl:destination-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:destination-transponder/wdm-tnl:transceiver" { description "Augment destination transceiver with additional estimated parameters."; @@ -762,9 +1219,9 @@ module ietf-wdm-tunnel { + "te:computed-path-properties/te:path-properties/" + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" - + "wdm-tnl:node-position/wdm-tnl:transit/" - + "wdm-tnl:regen-transceivers/" - + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:node-position/wdm-tnl:regenerator/" + + "wdm-tnl:regenerator/" + + "wdm-tnl:incoming-transponder/wdm-tnl:transceiver" { description "Augment regen incoming transceiver with additional estimated parameters."; @@ -778,9 +1235,39 @@ module ietf-wdm-tunnel { + "te:computed-path-properties/te:path-properties/" + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" - + "wdm-tnl:node-position/wdm-tnl:transit/" - + "wdm-tnl:regen-transceivers/" - + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:node-position/wdm-tnl:regenerator/" + + "wdm-tnl:regenerator/" + + "wdm-tnl:outgoing-transponder/wdm-tnl:transceiver" { + description + "Augment regen outgoing transceiver with additional estimated + parameters."; + + uses l0-types:path-properties; + } + + 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:numbered-node-hop/te:numbered-node-hop/" + + "wdm-tnl:node-position/wdm-tnl:regenerators/" + + "wdm-tnl:regenerators/wdm-tnl:common-incoming" { + description + "Augment regen incoming transceiver with additional estimated + parameters."; + + uses l0-types:path-properties; + } + + 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:numbered-node-hop/te:numbered-node-hop/" + + "wdm-tnl:node-position/wdm-tnl:regenerators/" + + "wdm-tnl:regenerators/wdm-tnl:common-outgoing" { description "Augment regen outgoing transceiver with additional estimated parameters."; @@ -809,7 +1296,7 @@ module ietf-wdm-tunnel { + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + "wdm-tnl:node-position/wdm-tnl:source/" - + "wdm-tnl:source-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:source-transponder/wdm-tnl:transceiver" { description "Augment source transceiver with additional estimated parameters."; @@ -823,7 +1310,7 @@ module ietf-wdm-tunnel { + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + "wdm-tnl:node-position/wdm-tnl:destination/" - + "wdm-tnl:destination-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:destination-transponder/wdm-tnl:transceiver" { description "Augment destination transceiver with additional estimated parameters."; @@ -836,9 +1323,9 @@ module ietf-wdm-tunnel { + "te:computed-path-properties/te:path-properties/" + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" - + "wdm-tnl:node-position/wdm-tnl:transit/" - + "wdm-tnl:regen-transceivers/" - + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:node-position/wdm-tnl:regenerator/" + + "wdm-tnl:regenerator/" + + "wdm-tnl:incoming-transponder/wdm-tnl:transceiver" { description "Augment regen incoming transceiver with additional estimated parameters."; @@ -851,9 +1338,37 @@ module ietf-wdm-tunnel { + "te:computed-path-properties/te:path-properties/" + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" - + "wdm-tnl:node-position/wdm-tnl:transit/" - + "wdm-tnl:regen-transceivers/" - + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:node-position/wdm-tnl:regenerator/" + + "wdm-tnl:regenerator/" + + "wdm-tnl:outgoing-transponder/wdm-tnl:transceiver" { + description + "Augment regen outgoing transceiver with additional estimated + parameters."; + + uses l0-types:path-properties; + } + + augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/" + + "te:secondary-path/te:computed-paths-properties/" + + "te:computed-path-properties/te:path-properties/" + + "te:path-route-objects/te:path-route-object/" + + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + + "wdm-tnl:node-position/wdm-tnl:regenerators/" + + "wdm-tnl:regenerators/wdm-tnl:common-incoming" { + description + "Augment regen incoming transceiver with additional estimated + parameters."; + + uses l0-types:path-properties; + } + + augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/" + + "te:secondary-path/te:computed-paths-properties/" + + "te:computed-path-properties/te:path-properties/" + + "te:path-route-objects/te:path-route-object/" + + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + + "wdm-tnl:node-position/wdm-tnl:regenerators/" + + "wdm-tnl:regenerators/wdm-tnl:common-outgoing" { description "Augment regen outgoing transceiver with additional estimated parameters."; @@ -882,7 +1397,7 @@ module ietf-wdm-tunnel { + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + "wdm-tnl:node-position/wdm-tnl:source/" - + "wdm-tnl:source-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:source-transponder/wdm-tnl:transceiver" { description "Augment source transceiver with additional estimated parameters."; @@ -896,7 +1411,7 @@ module ietf-wdm-tunnel { + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + "wdm-tnl:node-position/wdm-tnl:destination/" - + "wdm-tnl:destination-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:destination-transponder/wdm-tnl:transceiver" { description "Augment destination transceiver with additional estimated parameters."; @@ -909,9 +1424,38 @@ module ietf-wdm-tunnel { + "te:computed-path-properties/te:path-properties/" + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" - + "wdm-tnl:node-position/wdm-tnl:transit/" - + "wdm-tnl:regen-transceivers/" - + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:node-position/wdm-tnl:regenerator/" + + "wdm-tnl:regenerator/" + + "wdm-tnl:incoming-transponder/wdm-tnl:transceiver" { + description + "Augment regen incoming transceiver with additional estimated + parameters."; + + uses l0-types:path-properties; + } + + augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/" + + "te:secondary-reverse-path/te:computed-paths-properties/" + + "te:computed-path-properties/te:path-properties/" + + "te:path-route-objects/te:path-route-object/" + + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + + "wdm-tnl:node-position/wdm-tnl:regenerator/" + + "wdm-tnl:regenerator/" + + "wdm-tnl:outgoing-transponder/wdm-tnl:transceiver" { + description + "Augment regen outgoing transceiver with additional estimated + parameters."; + + uses l0-types:path-properties; + } + + augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/" + + "te:secondary-reverse-path/te:computed-paths-properties/" + + "te:computed-path-properties/te:path-properties/" + + "te:path-route-objects/te:path-route-object/" + + "te:type/te:numbered-node-hop/te:numbered-node-hop/" + + "wdm-tnl:node-position/wdm-tnl:regenerators/" + + "wdm-tnl:regenerators/wdm-tnl:common-incoming" { description "Augment regen incoming transceiver with additional estimated parameters."; @@ -924,9 +1468,8 @@ module ietf-wdm-tunnel { + "te:computed-path-properties/te:path-properties/" + "te:path-route-objects/te:path-route-object/" + "te:type/te:numbered-node-hop/te:numbered-node-hop/" - + "wdm-tnl:node-position/wdm-tnl:transit/" - + "wdm-tnl:regen-transceivers/" - + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:node-position/wdm-tnl:regenerators/" + + "wdm-tnl:regenerators/wdm-tnl:common-outgoing" { description "Augment regen outgoing transceiver with additional estimated parameters."; @@ -952,7 +1495,7 @@ module ietf-wdm-tunnel { + "te:lsp-actual-route-information/te:type/" + "te:numbered-node-hop/te:numbered-node-hop/" + "wdm-tnl:node-position/wdm-tnl:source/" - + "wdm-tnl:source-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:source-transponder/wdm-tnl:transceiver" { description "Augment source transceiver with additional measured parameters."; @@ -965,7 +1508,7 @@ module ietf-wdm-tunnel { + "te:lsp-actual-route-information/te:type/" + "te:numbered-node-hop/te:numbered-node-hop/" + "wdm-tnl:node-position/wdm-tnl:destination/" - + "wdm-tnl:destination-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:destination-transponder/wdm-tnl:transceiver" { description "Augment destination transceiver with additional measured parameters."; @@ -977,9 +1520,36 @@ module ietf-wdm-tunnel { + "te:lsp-actual-route-information/" + "te:lsp-actual-route-information/te:type/" + "te:numbered-node-hop/te:numbered-node-hop/" - + "wdm-tnl:node-position/wdm-tnl:transit/" - + "wdm-tnl:regen-transceivers/" - + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:node-position/wdm-tnl:regenerator/" + + "wdm-tnl:regenerator/" + + "wdm-tnl:incoming-transponder/wdm-tnl:transceiver" { + description + "Augment regen incoming transceiver with additional measured + parameters."; + + uses transceiver-measured-parameters; + } + + augment "/te:te/te:lsps/te:lsp/" + + "te:lsp-actual-route-information/" + + "te:lsp-actual-route-information/te:type/" + + "te:numbered-node-hop/te:numbered-node-hop/" + + "wdm-tnl:node-position/wdm-tnl:regenerator/" + + "wdm-tnl:regenerator/" + + "wdm-tnl:outgoing-transponder/wdm-tnl:transceiver" { + description + "Augment regen outgoing transceiver with additional measured + parameters."; + + uses transceiver-measured-parameters; + } + + augment "/te:te/te:lsps/te:lsp/" + + "te:lsp-actual-route-information/" + + "te:lsp-actual-route-information/te:type/" + + "te:numbered-node-hop/te:numbered-node-hop/" + + "wdm-tnl:node-position/wdm-tnl:regenerators/" + + "wdm-tnl:regenerators/wdm-tnl:common-incoming" { description "Augment regen incoming transceiver with additional measured parameters."; @@ -991,9 +1561,8 @@ module ietf-wdm-tunnel { + "te:lsp-actual-route-information/" + "te:lsp-actual-route-information/te:type/" + "te:numbered-node-hop/te:numbered-node-hop/" - + "wdm-tnl:node-position/wdm-tnl:transit/" - + "wdm-tnl:regen-transceivers/" - + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" { + + "wdm-tnl:node-position/wdm-tnl:regenerators/" + + "wdm-tnl:regenerators/wdm-tnl:common-outgoing" { description "Augment regen outgoing transceiver with additional measured parameters."; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-inst-data-pkg@2025-03-03.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-inst-data-pkg@2026-01-30.yang similarity index 95% rename from experimental/ietf-extracted-YANG-modules/ietf-yang-inst-data-pkg@2025-03-03.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yang-inst-data-pkg@2026-01-30.yang index be72c8292..e753895d3 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yang-inst-data-pkg@2025-03-03.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-inst-data-pkg@2026-01-30.yang @@ -10,7 +10,7 @@ module ietf-yang-inst-data-pkg { import ietf-yang-package-types { prefix pkg-types; - ys:recommended-min-version 0.5.0; + ys:recommended-min-version 0.8.0; reference "RFC XXX: this RFC."; } @@ -39,7 +39,7 @@ module ietf-yang-inst-data-pkg { definitions to be used to define content schema in YANG instance data documents. - 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 @@ -62,8 +62,8 @@ module ietf-yang-inst-data-pkg { // and remove this note. // RFC Ed.: replace XXXX with actual RFC number and remove this // note. - revision 2025-03-03 { - ys:version 0.5.0; + revision 2026-01-30 { + ys:version 0.8.0; description "Initial revision"; reference diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-library-semver@2025-07-13.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-library-semver@2025-09-29.yang similarity index 95% rename from experimental/ietf-extracted-YANG-modules/ietf-yang-library-semver@2025-07-13.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yang-library-semver@2025-09-29.yang index 549e107e5..a58fb1623 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yang-library-semver@2025-07-13.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-library-semver@2025-09-29.yang @@ -22,18 +22,16 @@ module ietf-yang-library-semver { Author: Joe Clarke - - Author: Reshad Rahman - - Author: Robert Wilton - + Author: Reshad Rahman + Author: Balazs Lengyel - Author: Jason Sterne - "; + + Author: Benoit Claise + "; description "This module contains augmentations to YANG Library to add module and submodule level version identifiers. @@ -64,8 +62,8 @@ module ietf-yang-library-semver { // RFC Ed.: please replace ysv:version with 1.0.0 and // remove this note. - revision 2025-07-13 { - ysv:version "0.21.0"; + revision 2025-09-29 { + ysv:version "0.24.0"; description "Initial revision"; reference diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-library-status@2025-01-24.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-library-status@2025-09-16.yang similarity index 97% rename from experimental/ietf-extracted-YANG-modules/ietf-yang-library-status@2025-01-24.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yang-library-status@2025-09-16.yang index 1ef9058b6..d38ebcc18 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yang-library-status@2025-01-24.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-library-status@2025-09-16.yang @@ -34,7 +34,7 @@ module ietf-yang-library-status { indication of how deprecated and obsolete nodes are handled by the server. - Copyright (c) 2024 IETF Trust and the persons identified as + Copyright (c) 2025 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or @@ -58,7 +58,7 @@ module ietf-yang-library-status { // RFC Ed.: replace XXXX (including in the imports above) with // actual RFC number and remove this note. - revision 2025-01-24 { + revision 2025-09-16 { description "Initial revision"; reference diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-package-instance@2025-03-03.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-package-instance@2026-01-30.yang similarity index 93% rename from experimental/ietf-extracted-YANG-modules/ietf-yang-package-instance@2025-03-03.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yang-package-instance@2026-01-30.yang index 874e06b67..180dd4e90 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yang-package-instance@2025-03-03.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-package-instance@2026-01-30.yang @@ -10,7 +10,7 @@ module ietf-yang-package-instance { import ietf-yang-package-types { prefix pkg-types; - ys:recommended-min-version 0.5.0; + ys:recommended-min-version 0.8.0; reference "RFC XXX: this RFC."; } @@ -34,7 +34,7 @@ module ietf-yang-package-instance { used as the content schema for an YANG instance data document specifying a YANG package. - 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 @@ -58,8 +58,8 @@ module ietf-yang-package-instance { // and remove this note. // RFC Ed.: replace XXXX with actual RFC number and remove this // note. - revision 2025-03-03 { - ys:version 0.5.0; + revision 2026-01-30 { + ys:version 0.8.0; description "Initial revision"; reference @@ -69,6 +69,7 @@ module ietf-yang-package-instance { /* * Top-level structure */ + sx:structure package { description "Defines the YANG package structure for use in a YANG instance diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-package-types@2025-07-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-package-types@2026-01-30.yang similarity index 64% rename from experimental/ietf-extracted-YANG-modules/ietf-yang-package-types@2025-07-07.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yang-package-types@2026-01-30.yang index 469f2fa72..923fa0170 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yang-package-types@2025-07-07.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-package-types@2026-01-30.yang @@ -18,6 +18,7 @@ module ietf-yang-package-types { rev:recommended-min-date 2019-07-21; reference "RFC 6991bis: Common YANG Data Types."; } + import ietf-inet-types { prefix inet; rev:recommended-min-date 2013-07-15; @@ -38,7 +39,7 @@ module ietf-yang-package-types { "This module provides type and grouping definitions for YANG packages. - 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 @@ -61,8 +62,8 @@ module ietf-yang-package-types { // and remove this note. // RFC Ed.: replace XXXX with actual RFC number and remove this // note. - revision 2025-07-07 { - ys:version 0.6.0; + revision 2026-01-30 { + ys:version 0.8.0; description "Initial revision"; reference @@ -82,7 +83,13 @@ module ietf-yang-package-types { typedef pkg-version { type ys:version; description - "Packages are versioning used YANG Semver version labels."; + "Packages are versioning using YANG Semver version labels."; + } + + typedef module-name { + type yang:yang-identifier; + description + "Module names are typed as YANG identifiers."; } typedef version-or-rev-date { @@ -91,7 +98,8 @@ module ietf-yang-package-types { type ys:version; } description - "Identifies a module by YANG semantic version or revision date"; + "Identifies a module by YANG semantic version or revision + date"; } typedef scoped-feature { @@ -149,7 +157,6 @@ module ietf-yang-package-types { draft-verdt-nemod-yang-module-versioning, section XXX"; } } - grouping yang-pkg-exclusions { description "Parameters for excluding modules and packages from a YANG @@ -161,7 +168,7 @@ module ietf-yang-package-types { from a YANG package definition"; leaf-list module { - type pkg-name; + type module-name; description "Lists implemented modules, of any version, that may have have been brought in by included packages, but are @@ -171,19 +178,57 @@ module ietf-yang-package-types { correctness of any included packages that expect that module to be implemented. + Excluding a module also implicitly excludes any submodules + and mandatory-features defined in the excluded module. + It is an error to list a module in both this list and the 'includes/module' list."; } - leaf-list import-only-module { - type pkg-name; + list import-only-module { + key "name"; description - "Lists import-only modules, of any version, that may have - have been brought in by included packages, but are - explicitly excluded from this package definition. + "Lists import-only modules that may have have been brought + in by included packages, but are explicitly excluded from + this package definition. It is an error to list a module in both this list and the 'includes/import-only-module' list."; + + leaf name { + type module-name; + mandatory true; + description + "The name of the import-only module to exclude some + versions of."; + } + + leaf-list version { + type version-or-rev-date; + description + "Lists specific versions of the import-only module being + excluded. If no versions are listed, all versions of + the import-only module are excluded. + + If required, the YANG Semantic Version SHOULD be used to + identify the module version, otherwise the YANG module + revision date is used."; + } + } + + leaf-list feature { + type scoped-feature; + description + "Lists features from the mandatory-features exported by an + included package that are reclassified as being OPTIONAL + to support by any server implementing the package, + overriding the behavior specified by the included package. + + Features MUST NOT be specified both in this list and also + the 'includes/feature' list. + + Features are identified using + :."; } } } @@ -209,6 +254,7 @@ module ietf-yang-package-types { represented either on a server or as a YANG instance data document."; uses yang-pkg-identification-leafs; + leaf timestamp { type yang:date-and-time; description @@ -257,17 +303,17 @@ module ietf-yang-package-types { list package { key "name"; description - "An entry in this list represents a package that is included - as part of the package definition, or to change the version - of a descendent included package. + "An entry in this list represents a package that is + included as part of the package definition, or to change + the version of a descendent included package. - An entry in this list overrides any other package version - 'included' by an included package, which can be used for - resolving conflicting package versions from included - packages. + An entry in this list overrides any other package version + 'included' by an included package, which can be used for + resolving conflicting package versions from included + packages. - A package definition MUST resolve to including only a single - version of any YANG package."; + A package definition MUST resolve to including only a + single version of any YANG package."; uses yang-pkg-identification-leafs; uses yang-pkg-location; @@ -286,7 +332,7 @@ module ietf-yang-package-types { "RFC 7950: The YANG 1.1 Data Modeling Language."; leaf name { - type yang:yang-identifier; + type module-name; mandatory true; description "The YANG module name."; @@ -297,28 +343,29 @@ module ietf-yang-package-types { mandatory true; description "Identifies the module version. If available, the YANG - Semantic Version SHOULD be used, otherwise the YANG module - revision date is used."; + Semantic Version SHOULD be used, otherwise the YANG + module revision date is used."; } leaf-list location { type inet:uri; description "Contains a URL that represents the YANG schema resource - for this module. + for this module. - This leaf will only be present if there is a URL available - for retrieval of the schema for this entry."; + This leaf will only be present if there is a URL + available for retrieval of the schema for this entry."; } list submodule { key "name"; description "Each entry represents one submodule within the - parent module."; + parent module."; leaf name { - type yang:yang-identifier; + type module-name; + mandatory true; description "The YANG submodule name."; } @@ -327,22 +374,25 @@ module ietf-yang-package-types { type version-or-rev-date; mandatory true; description - "The YANG submodule revision date or YANG Semantic version. - - If the parent module include statement for this submodule - includes a revision date then it MUST match the revision - date specified here or it MUST match the revision-date - associated with the version specified here."; + "The YANG submodule revision date or YANG Semantic + version. + + If the parent module include statement for this + submodule includes a revision date then it MUST match + the revision date specified here or it MUST match the + revision-date associated with the version specified + here."; } leaf-list location { type inet:uri; description - "Contains a URL that represents the YANG schema resource - for this submodule. + "Contains a URL that represents the YANG schema + resource for this submodule. - This leaf will only be present if there is a URL - available for retrieval of the schema for this entry."; + This leaf will only be present if there is a URL + available for retrieval of the schema for this + entry."; } } } @@ -351,16 +401,17 @@ module ietf-yang-package-types { key "name version"; description "An entry in this list indicates that the server imports - reusable definitions from the specified revision of the - module, but does not implement any protocol accessible - objects from this revision. + reusable definitions from the specified revision of the + module, but does not implement any protocol accessible + objects from this revision. - Multiple entries for the same module name MAY exist. This - can occur if multiple modules import the same module, but - specify different revision-dates in the import statements."; + Multiple entries for the same module name MAY exist. + This can occur if multiple modules import the same + module, but specify different revision-dates in the + import statements."; leaf name { - type yang:yang-identifier; + type module-name; mandatory true; description "The YANG module name."; @@ -371,36 +422,29 @@ module ietf-yang-package-types { mandatory true; description "Identifies the module version. If available, the YANG - Semantic Version SHOULD be used, otherwise the YANG module - revision date is used."; - } - - leaf-list replaces-version { - type version-or-rev-date; - description - "Gives the version of an import-only-module defined in an - included package that is replaced by this - import-only-module version."; + Semantic Version SHOULD be used, otherwise the YANG + module revision date is used."; } leaf-list location { type inet:uri; description "Contains a URL that represents the YANG schema resource - for this module. + for this module. - This leaf will only be present if there is a URL available - for retrieval of the schema for this entry."; + This leaf will only be present if there is a URL + available for retrieval of the schema for this entry."; } list submodule { key "name"; description "Each entry represents one submodule within the - parent module."; + parent module."; leaf name { - type yang:yang-identifier; + type module-name; + mandatory true; description "The YANG submodule name."; } @@ -409,86 +453,75 @@ module ietf-yang-package-types { type version-or-rev-date; mandatory true; description - "The YANG submodule revision date or YANG Semantic version. - - If the parent module include statement for this submodule - includes a revision date then it MUST match the revision - date specified here or it MUST match the revision-date - associated with the version specified here."; + "The YANG submodule revision date or YANG Semantic + version. + + If the parent module include statement for this + submodule includes a revision date then it MUST match + the revision date specified here or it MUST match the + revision-date associated with the version specified + here."; } leaf-list location { type inet:uri; description "Contains a URL that represents the YANG schema resource - for this submodule. + for this submodule. - This leaf will only be present if there is a URL - available for retrieval of the schema for this entry."; + This leaf will only be present if there is a URL + available for retrieval of the schema for this + entry."; } } } - } - - uses yang-pkg-exclusions; - - container mandatory-features { - description - "Contains parameters for specifying the features that MUST - be supported by any server implementing the package."; - leaf-list include { + leaf-list feature { type scoped-feature; description "Lists features from any modules included in the package that MUST be supported by any server implementing the package. - Mandatory features specified by any directly included + Mandatory-features specified by any directly included packages MUST also be supported by server implementations, unless excluded by an entry in the - 'mandatory-features/excludes' list, and do not - need to be repeated in this list. + 'excludes/feature' list, and do not need to be repeated + in this list. + All other features defined in modules included in the package are OPTIONAL to implement. Features are identified using :."; } - - leaf-list exclude { - type scoped-feature; - description - "Lists features from the mandatory features exported by an - included package that are reclassified as being OPTIONAL - to support by any server implementing the package, - overriding the behavior specified by the included package. - - Features MUST NOT be specified both in this list and also - the 'mandatory-features/includes' list. - - Features are identified using - :."; - } } - list mounts { + uses yang-pkg-exclusions; + + list mount { key "mount-path"; description - "An entry in this list represents a package that will be - found mounted in the schema at the specified mount path. + "An entry in this list represents additions to, or a + replacement of, the schema found at the specified mount + point. + + The full schema at the mount point depends on the + setting of the inherit-packages leaf: - For a given mount path, the set of mounted package - versions is the union of all packages mounted at the - given mount point. Any conflicting package versions - MUST be explicitly resolved via an entry in the - mounted/packages of the package definition. + If set to true (the default) - the schema is defined + as the union of the resolved package schema at the mount + point by any packages in the 'includes/package' list + combined with the resolve package schema of all packages + listed in the 'packages' list. - A mount path with specific keys MUST also includes any - mounted packages without specific keys."; + If set to false - the schema is defined as the union of + only the resolved package schema of all packages + listed in the 'packages' list."; leaf "mount-path" { type mount-ypath; + mandatory true; description "This path identifies a mount point in the schema. @@ -517,49 +550,56 @@ module ietf-yang-package-types { entries in the module list."; } + leaf inherit-packages { + type boolean; + default true; + description + "Indicates whether the packages and parent-references + available at the mount point for this package definition + automatically include all packages and parent-references + mounted at the same mount path in any + 'includes/packages' entries. + + If set to false, then only packages and + parent-references listed here in the 'packages' list are + included. This allows the definitions in the mounted + packages to be modified (e.g., remove or change module + versions). To help conformance, the packages listed + here SHOULD include all the packages that would be have + been automatically included. + "; + } + list package { key "name"; description "The packages that will be mounted at the specified mount - path. - - The set of mounteed packages is the union of all packages - mounted at the given mount by any packages in the - 'includes/package' list, except that each entry in this list - replaces any other versions of the same package at the - same mount point. In addition, other package versions may - be omitted from the mount point via the 'replaces-package' - leaf-list."; + path either in addition to, or instead of, the mounted + packages from the 'included/package' list. + + Also see the 'inherit-packages' leaf."; uses yang-pkg-identification-leafs; uses yang-pkg-location; - - leaf-list replaces-package { - type pkg-name; - description - "Lists other packages that have been explicitly mounted - at the same mount point by included package, that are - replaced by this mounted package. - - The replacing mounted package MUST explicitly include - or exclude the mounted package being replaced. - - Any packages or modules included by the replaced - package are also removed by this mounted package - unless they have also been explicitly mounted at the - same mount point, in which case the replacing package - MUST also explicitly include/exclude them. - - replaces-package is expected to be used if an - implementation does not fully implement a mounted - package and needs to apply deviations or remove - included packages or modules."; - } } leaf-list parent-reference { type mount-ypath; description - "See Mount Point path and parent-reference in Schema Mount"; + "Represents paths in the parent schema that are accessible + from the mounted schema for the evaluation of XPath + expressions. + + See Mount Point path and parent-reference in Schema Mount + (RFC 8528) for a more detailed description. + + Unlike the YANG module defined in RFC 8528, this leaf is + encoded as a JSON style encoded instance-identifier + (regardless of whether the format used to encode the YANG + instance data), as specified in RFC 7951, section 6.11, + except that keys are optional. + + For optional keys, the name and value of the key is + excluded from the key list."; } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-packages@2025-03-03.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-packages@2026-01-30.yang similarity index 96% rename from experimental/ietf-extracted-YANG-modules/ietf-yang-packages@2025-03-03.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yang-packages@2026-01-30.yang index 11903c476..5289ba351 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yang-packages@2025-03-03.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-packages@2026-01-30.yang @@ -15,12 +15,11 @@ module ietf-yang-packages { import ietf-yang-package-types { prefix pkg-types; - ys:recommended-min-version 0.5.0; + ys:recommended-min-version 0.8.0; reference "RFC XXX: this RFC."; } import ietf-inet-types { - prefix inet; rev:recommended-min-date 2013-07-15; reference "RFC 6991: Common YANG Data Types."; @@ -39,7 +38,7 @@ module ietf-yang-packages { description "This module defines YANG packages on a server implementation. - 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 @@ -62,8 +61,8 @@ module ietf-yang-packages { // and remove this note. // RFC Ed.: replace XXXX with actual RFC number and remove this // note. - revision 2025-03-03 { - ys:version 0.5.0; + revision 2026-01-30 { + ys:version 0.8.0; description "Initial revision"; reference diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-push-2-capabilities@2024-11-11.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-2-capabilities@2024-11-11.yang new file mode 100644 index 000000000..93c207785 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-2-capabilities@2024-11-11.yang @@ -0,0 +1,259 @@ +module ietf-yang-push-2-capabilities { + yang-version 1.1; + namespace + "urn:ietf:params:xml:ns:yang:ietf-yang-push-2-capabilities"; + prefix yp2ca; + + import ietf-system-capabilities { + prefix sysc; + reference + "RFC 9196: YANG Modules Describing Capabilities for Systems + and Datastore Update Notifications"; + } + import ietf-yang-push-2 { + prefix yp2; + reference + "RFC XXX: YANG Datastore Telemetry (YANG Push version 2)"; + } + + organization + "IETF NETCONF (Network Configuration) Working Group"; + contact + "WG Web: + WG List: + + Author: Robert Wilton + "; + description + "This module contains YANG specifications for YANG-Push lite. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + + Copyright (c) 2025 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 + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2024-11-11 { + description + "Initial revision."; + reference + "XXX: YANG Datastore Telemetry (YANG Push version 2)"; + } + + /* + * IDENTITIES + */ + + identity security-protocol { + description + "Identity for security protocols."; + } + + identity tls12 { + base security-protocol; + description + "Indicates TLS Protocol Version 1.2. TLS 1.2 is obsolete, + and thus it is NOT RECOMMENDED to enable this feature."; + reference + "RFC 5246: The Transport Layer Security (TLS) Protocol + Version 1.2"; + } + + identity tls13 { + base security-protocol; + description + "Indicates TLS Protocol Version 1.3."; + reference + "RFC 8446: The Transport Layer Security (TLS) + Protocol Version 1.3"; + } + + identity dtls12 { + base security-protocol; + description + "Indicates DTLS Protocol Version 1.2. TLS 1.2 is obsolete, + and thus it is NOT RECOMMENDED to enable this feature."; + reference + "RFC 6347: The Datagram Transport Layer Security (TLS) Protocol + Version 1.2"; + } + + identity dtls13 { + base security-protocol; + description + "Indicates DTLS Protocol Version 1.3."; + reference + "RFC 9147: The Datagram Transport Layer Security (TLS) + Protocol Version 1.3"; + } + + identity ssh { + base security-protocol; + description + "Indicates SSH."; + } + + grouping yp2-capabilities { + description + "Capabilities related to YANG Push Lite subscriptions + and notifications"; + container datastore-telemetry { + description + "Capabilities related to YANG Push List subscriptions + and notifications"; + typedef notification-support { + type bits { + bit config-changes { + description + "The publisher is capable of sending + notifications for 'config true' nodes for the + relevant scope and subscription type."; + } + bit state-changes { + description + "The publisher is capable of sending + notifications for 'config false' nodes for the + relevant scope and subscription type."; + } + } + description + "Type for defining whether 'on-change' or + 'periodic' notifications are supported for all data nodes, + 'config false' data nodes, 'config true' data nodes, or + no data nodes. + + The bits config-changes or state-changes have no effect + when they are set for a datastore or for a set of nodes + that does not contain nodes with the indicated config + value. In those cases, the effect is the same as if no + support was declared. One example of this is indicating + support for state-changes for a candidate datastore that + has no effect."; + } + + leaf periodic-notifications-supported { + type notification-support; + description + "Specifies whether the publisher is capable of + sending 'periodic' notifications for the selected + data nodes, including any subtrees that may exist + below them."; + reference + "RFC 8641: Subscription to YANG Notifications for + Datastore Updates, 'periodic' subscription concept"; + } + choice update-period { + description + "Supported update period value or values for + 'periodic' subscriptions."; + leaf minimum-update-period { + type uint32; + units "centiseconds"; + description + "Indicates the minimal update period that is + supported for a 'periodic' subscription. + + A subscription request to the selected data nodes with + a smaller period than what this leaf specifies is + likely to result in a 'period-unsupported' error."; + } + leaf-list supported-update-period { + type uint32; + units "centiseconds"; + description + "Supported update period values for a 'periodic' + subscription. + + A subscription request to the selected data nodes with a + period not included in the leaf-list will result in a + 'period-unsupported' error."; + } + } + leaf on-change-supported { + type notification-support; + description + "Specifies whether the publisher is capable of + sending 'on-change' notifications for the selected + data nodes and the subtree below them."; + } + } + } + + grouping yp2-transport-capabilities { + description + "Capabilities related to transports supporting Yang Push Lite"; + container transport { + description + "Specifies capabilities related to YANG-Push transports."; + list transport-capability { + key "transport-protocol"; + description + "Indicates a list of capabilities related to notification + transport."; + leaf transport-protocol { + type identityref { + base yp2:transport; + } + description + "Indicates supported transport protocol for YANG-Push."; + } + leaf security-protocol { + type identityref { + base security-protocol; + } + description + "Indicates transport security protocol."; + } + leaf-list encoding-format { + type identityref { + base yp2:encoding; + } + description + "Indicates supported encoding formats."; + } + } + } + } + + // YANG Push Lite Capabilities + augment "/sysc:system-capabilities" { + description + "Adds system level capabilities for YANG Push Lite"; + uses yp2-capabilities; + + leaf distributed-notifications-supported { + type boolean; + description + "Indicates whether the server supports distributed + notifications and may source message from different + Message Publishers."; + } + } + + augment "/sysc:system-capabilities/yp2ca:datastore-telemetry" { + description + "Adds system level Yang Push Lite transport capabilities"; + uses yp2-transport-capabilities; + } + + augment "/sysc:system-capabilities/sysc:datastore-capabilities" + + "/sysc:per-node-capabilities" { + description + "Add datastore and node-level capabilities"; + uses yp2-capabilities; + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-push-2-config@2025-08-03.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-2-config@2025-08-03.yang new file mode 100644 index 000000000..5fc7b36bd --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-2-config@2025-08-03.yang @@ -0,0 +1,534 @@ +module ietf-yang-push-2-config { + yang-version 1.1; + namespace + "urn:ietf:params:xml:ns:yang:ietf-yang-push-2-config"; + prefix yp2co; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-interfaces { + prefix if; + reference + "RFC 8343: A YANG Data Model for Interface Management"; + } + import ietf-network-instance { + prefix ni; + reference + "RFC 8529: YANG Data Model for Network Instances"; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-yang-push-2 { + prefix yp2; + reference + "RFC XXXX: YANG Datastore Telemetry (YANG Push version 2)"; + } + + organization + "IETF NETCONF (Network Configuration) Working Group"; + contact + "WG Web: + WG List: + + Author: Robert Wilton + "; + description + "This module contains YANG specifications for YANG-Push version 2 + configuration and operational state model. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + + Copyright (c) 2025 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 + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2025-08-03 { + description + "Initial revision."; + reference + "XXX: YANG Datastore Telemetry (YANG Push version 2)"; + } + + /* + * FEATURES + */ + + feature interface-designation { + description + "This feature indicates that a publisher supports sourcing all + receiver interactions for a configured subscription from a + single designated egress interface."; + } + + feature supports-vrf { + description + "This feature indicates that a publisher supports VRF + configuration for configured subscriptions. VRF support for + dynamic subscriptions does not require this feature."; + reference + "RFC 8529: YANG Data Model for Network Instances, + Section 6"; + } + + /* + * TYPEDEFs + */ + + typedef filter-ref { + type leafref { + path "/datastore-telemetry/filters/filter/name"; + } + description + "This type is used to reference a selection filter."; + } + + /* + * GROUPINGS + */ + grouping filter-ref { + description + "This grouping is used to reference a selection filter."; + leaf filter-ref { + type filter-ref; + mandatory true; + description + "References an existing selection filter that is to be + applied to the subscription."; + } + } + + /* + * DATA NODES + */ + + container datastore-telemetry { + presence "Enables datastore telemetry"; + description + "YANG Push v2 Datastore Telemetry Configuration and State."; + container filters { + description + "Contains a list of configurable filters that can be applied + to subscriptions. This facilitates the reuse of complex + filters once defined."; + + list filter { + key "name"; + description + "A list of preconfigured filters that can be applied + to datastore subscriptions."; + leaf name { + type string { + length "1..64"; + pattern '[A-Za-z0-9._-]+'; + } + description + "A unique name to identify the selection filters."; + } + uses yp2:filter-choice; + } + } + container subscriptions { + description + "Contains the list of currently active subscriptions, i.e., + subscriptions that are currently in effect, used for + subscription management and monitoring purposes. This + includes subscriptions that have been set up via + RPC primitives as well as subscriptions that have been + established via configuration."; + list subscription { + key "id"; + description + "The identity and specific parameters of a subscription. + Subscriptions in this list can be created using a control + channel or RPC or can be established through configuration. + + If the 'kill-subscription' RPC or configuration operations + are used to delete a subscription, a + 'subscription-terminated' message is sent to any active or + suspended receivers."; + + uses yp2:client-subscription-id; + uses yp2:subscription-common; + + leaf receiver { + type leafref { + path "/datastore-telemetry/receivers/receiver/name"; + } + mandatory true; + description + "Identifies the receiver for a subscription."; + } + + // leaf status { + // type enumeration { + // enum disconnected { + // description + // "This subscription does not have an active session + // with the receiver, and it is not trying to + // connect. + + // E.g., this state may be reported if the + // subscription is not valid, or has not been started + // yet."; + // } + // enum connecting { + // description + // "The publisher is trying to establish a session + // with the receiver for this subscription. + + // For a session less transport, this state may be + // used to indicate that there is no route to the + // receiver. + + // A receiver in connecting state may indicate that + // the transport or associated security session + // could not be established, and the publisher is + // periodically trying to establish the connection."; + // } + // enum active { + // description + // "The publisher has successfully connected (if over + // a session based transport) to the receiver for + // this subscription, and the publisher is able to + // send notifications to the receiver."; + // } + // } + // config false; + // description + // "Specifies the connection status of the receiver for + // this subscription."; + // } + + leaf status { + type yp2:subscription-status; + config false; + description + "The presence of this leaf indicates that the + subscription originated from configuration, not through + a control channel or RPC. The value indicates the state + of the subscription as established by the publisher."; + } + + leaf type { + type yp2:subscription-type; + default "configured"; + config false; + description + "Whether the subscription is configured or dynamic."; + } + + leaf encoding { + type yp2:encoding; + config false; + description + "The type of encoding for notification messages."; + } + + container message-publishers { + config false; + description + "Holds the publisher-ids for all processes + currently associated with the subscription"; + uses yp2:publishers; + } + + leaf last-sequence-number { + type yang:zero-based-counter64; + config false; + description + "The envelope sequence number for the last notification + sent for this subscription. + + The sequence number is initialized to zero when the + subscription first becomes active and the first + subscription-started notification is sent."; + } + + leaf last-notification-time { + type yang:date-and-time; + config false; + description + "The notification envelope event-time timestamp of the + last notification sent for this subscription. + + The timestamp is initialized to the time when the + subscription first becomes active and the first + subscription-started notification is sent."; + } + + leaf last-periodic-collection-time { + type yang:date-and-time; + config false; + description + "The event-time timestamp of the last completed periodic + collection or resynchronization collection for this + subscription, and used as the event-time in the + notification header. + + The timestamp is initialized to the time when the + subscription first becomes active and the first + subscription-started notification is sent."; + } + + leaf last-on-change-notification-time { + type yang:date-and-time; + config false; + description + "The notification envelope event-time timestamp of the + last on-change notification sent for this subscription. + + The timestamp is initialized to the time when the + subscription first becomes active and the first + subscription-started notification is sent."; + } + + container statistics { + config false; + description + "Statistics related to the number of messages generated + for this subscription."; + + leaf started-notifications { + type yang:zero-based-counter64; + config false; + description + "The number of subscription-started notifications + sent for this subscription since the subscription + list entry was created and the configuration + was applied by the publisher."; + } + + leaf terminated-notifications { + type yang:zero-based-counter64; + config false; + description + "The number of subscription-terminated notifications + sent for this subscription since the subscription + list entry was created and the configuration + was applied by the publisher."; + } + + leaf update-notifications { + type yang:zero-based-counter64; + config false; + description + "The number of update records generated for the + subscription, to be queued to one of more active + receivers. + + The count is re-initialized to 0 when the + subscription first becomes active and the + subscription-started notification is sent. + + The count is incremented even if the update + record has been generated, but is not queued to + any receiver."; + } + + leaf periodic-collections { + type yang:zero-based-counter64; + config false; + description + "The number of periodic collections completed for + the subscription. + + The count is re-initialized to 0 when the + subscription first becomes active and the + subscription-started notification is sent. + + The count is incremented even if the update + record has been generated, but is not queued to + any receiver."; + } + + leaf excluded-events { + type yang:zero-based-counter64; + config false; + description + "The number of event records explicitly removed via + either an event stream filter or an access control + filter so that they are not passed to a receiver. + This count is set to zero each time + 'sent-event-records' is initialized."; + } + + leaf receiver-disconnects { + type yang:zero-based-counter64; + config false; + description + "The number of times that the receiver has been + disconnected since the subscription + receiver entry was created and the configuration + was applied by the publisher"; + } + } + + action reset { + description + "Reset the subscription. + + This action will cause a new subscription-started + message to be sent for the subscription"; + } + } + } + container receivers { + description + "A container for all instances of configured receivers."; + + list receiver { + key "name"; + + leaf name { + type string { + length "1..64"; + pattern '[A-Za-z0-9._-]+'; + } + description + "An arbitrary but unique name for this receiver + instance."; + } + + leaf encoding { + /* when 'not(../transport) or derived-from(../transport, + "yp2:configurable-encoding")';*/ + type yp2:encoding; + mandatory true; + description + "The type of encoding for notification messages. For a + dynamic subscription, if not included as part of an + 'establish-subscription' RPC, the encoding will be + populated with the encoding used by that RPC. For a + configured subscription, if not explicitly configured, + the encoding will be the default encoding for an + underlying transport."; + } + + uses yp2:dscp; + + action reset { + description + "Resets all configured subscriptions that reference + this receiver. + + This action is similar to invoking the 'reset' action + on all subscriptions that reference this receiver + configuration."; + } + + choice notification-message-origin { + description + "Identifies the egress interface on the publisher + from which notification messages are to be sent."; + case interface-originated { + description + "When notification messages are to egress a specific, + designated interface on the publisher."; + leaf source-interface { + if-feature "interface-designation"; + type if:interface-ref; + description + "References the interface for notification + messages."; + } + } + case address-originated { + description + "When notification messages are to depart from a + publisher using a specific originating address and/or + routing context information."; + leaf source-vrf { + if-feature "supports-vrf"; + type leafref { + path + '/ni:network-instances/ni:network-instance/' + + 'ni:name'; + } + description + "VRF from which notification messages should egress a + publisher."; + } + leaf source-address { + type inet:ip-address-no-zone; + description + "The source address for the notification messages. + If a source VRF exists but this object doesn't, a + publisher's default address for that VRF must + be used."; + } + } + } + + choice transport-type { + mandatory true; + description + "Choice of different types of transports used to + send notifications. The 'case' statements must + be augmented in by other modules."; + } + + description + "A list of all receiver instances."; + } + } + } + + augment "/yp2:subscription-started/yp2:target" { + + description + "Allow a subscription-started notification to include a + referenced named filter"; + uses filter-ref { + refine "filter-ref" { + mandatory false; + } + } + } + + augment "/yp2:subscription-modified/yp2:target" { + + description + "Allow a subscription-modified notification to include a + referenced named filter"; + uses filter-ref { + refine "filter-ref" { + mandatory false; + } + } + } + + augment "/datastore-telemetry/subscriptions/subscription/" + + "target/filter" { + + description + "Augment the subscription filter to allow + referencing a filter configured separately."; + + case by-reference { + description + "Incorporates a filter that has been configured + separately."; + uses filter-ref; + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-push-2@2025-08-03.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-2@2025-08-03.yang new file mode 100644 index 000000000..78e8443ac --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-2@2025-08-03.yang @@ -0,0 +1,1122 @@ +module ietf-yang-push-2 { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-yang-push-2"; + prefix yp2; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-netconf-acm { + prefix nacm; + reference + "RFC 8341: Network Configuration Access Control Model"; + } + import ietf-yang-structure-ext { + prefix sx; + reference + "RFC 8525: YANG Data Structure Extensions"; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-datastores { + prefix ds; + reference + "RFC 8342: Network Management Datastore Architecture (NMDA)"; + } + import ietf-yang-library { + prefix yanglib; + reference + "RFC 8525: YANG Library"; + } + import ietf-yp-notification { + prefix iypn; + reference + "draft-ietf-netconf-notif-envelope: Extensible YANG Model for + YANG-Push Notifications + + TODO: RFC Editor please replace with latest draft/RFC version + at publication time."; + } + + organization + "IETF NETCONF (Network Configuration) Working Group"; + contact + "WG Web: + WG List: + + Author: Robert Wilton + "; + description + "This module contains YANG specifications for YANG-Push + version 2, a simplified version of the YANG-Push [RFC 8641] + protocol. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + + Copyright (c) 2025 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 + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2025-08-03 { + description + "Initial revision."; + reference + "XXXX: YANG Datastore Telemetry (YANG Push version 2)"; + } + + /* + * FEATURES + */ + + feature dynamic { + description + "This feature indicates that dynamic establishment of + subscriptions is + supported."; + } + + feature on-change { + description + "This feature indicates that on-change triggered subscriptions + are supported."; + } + + feature subtree { + description + "This feature indicates support for YANG subtree filtering."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 6"; + } + + feature xpath { + description + "This feature indicates support for XPath filtering."; + reference + "XML Path Language (XPath) Version 1.0 + (https://www.w3.org/TR/1999/REC-xpath-19991116)"; + } + + /* + * IDENTITIES + */ + /* Identities for RPC and notification errors */ + + identity delete-subscription-error { + description + "Base identity for the problem found while attempting to + fulfill either a 'delete-subscription' RPC request or a + 'kill-subscription' RPC request."; + } + + identity establish-subscription-error { + description + "Base identity for the problem found while attempting to + fulfill an 'establish-subscription' RPC request."; + } + + identity subscription-terminated-reason { + description + "Base identity for the problem condition communicated to a + receiver as part of a 'subscription-terminated' + notification."; + } + + identity dscp-unavailable { + base establish-subscription-error; + description + "The publisher is unable to mark notification messages with + prioritization information in a way that will be respected + during network transit."; + } + + identity encoding-unsupported { + base establish-subscription-error; + description + "Unable to encode notification messages in the desired + format."; + } + + identity filter-unavailable { + base subscription-terminated-reason; + description + "Referenced filter does not exist. This means a receiver is + referencing a filter that doesn't exist or to which it + does not have access permissions."; + } + + identity filter-unsupported { + base establish-subscription-error; + description + "Cannot parse syntax in the filter. This failure can be from + a syntax error or a syntax too complex to be processed by the + publisher."; + } + + identity insufficient-resources { + base establish-subscription-error; + description + "The publisher does not have sufficient resources to support + the requested subscription. An example might be that + allocated CPU is too limited to generate the desired set of + notification messages."; + } + + identity no-such-subscription { + base delete-subscription-error; + base subscription-terminated-reason; + description + "Referenced subscription doesn't exist. This may be as a + result of a nonexistent subscription ID, an ID that belongs to + another subscriber, or an ID for a configured subscription."; + } + + identity stream-unavailable { + base subscription-terminated-reason; + description + "Not a subscribable event stream. This means the referenced + event stream is not available for subscription by the + receiver."; + } + + identity suspension-timeout { + base subscription-terminated-reason; + description + "Termination of a previously suspended subscription. The + publisher has eliminated the subscription, as it exceeded a + time limit for suspension."; + } + + identity unsupportable-volume { + base subscription-terminated-reason; + description + "The publisher does not have the network bandwidth needed to + get the volume of generated information intended for a + receiver."; + } + + identity conflicting-identifier { + base subscription-terminated-reason; + description + "The subscription identifier conflicts with another + subscription. + + This can prevent a dynamic subscription from being + established, or cause a dynamic subscription to be terminated + if a configured subscription with the same id is created."; + + // TODO - Should there be separate error codes for creating a + // subscription vs terminating an existing one? + } + + /* Identities for encodings */ + + identity configurable-encoding { + description + "If a transport identity derives from this identity, it means + that it supports configurable encodings. An example of a + configurable encoding might be a new identity such as + 'encode-cbor'. Such an identity could use + 'configurable-encoding' as its base. This would allow a + dynamic subscription encoded in JSON (RFC 8259) to request + that notification messages be encoded via the Concise Binary + Object Representation (CBOR) (RFC 7049). Further details for + any specific configurable encoding would be explored in a + transport document based on this specification. + + TODO - Clear up this text or use YANG-CBOR reference"; + reference + "RFC 8259: The JavaScript Object Notation (JSON) Data + Interchange Format + RFC 7049: Concise Binary Object Representation (CBOR)"; + } + + identity encoding { + description + "Base identity to represent data encodings."; + } + + identity json { + base encoding; + description + "Encode data using JSON as described in RFC 7951."; + reference + "RFC 7951: JSON Encoding of Data Modeled with YANG"; + } + + identity xml { + base encoding; + description + "Encode data using XML as described in RFC 7950."; + reference + "RFC 7950: The YANG 1.1 Data Modeling Language"; + } + + identity cbor { + base encoding; + description + "Encode data using CBOR as described in RFC 9245, + without using YANG SIDs"; + reference + "RFC 9245: Encoding of Data Modeled with YANG in the + Concise Binary Object Representation (CBOR)."; + } + + identity cbor-sids { + base encoding; + description + "Encode data using JSON as described in RFC 7951, using YANG + SIDs."; + reference + "RFC 9245: Encoding of Data Modeled with YANG in the + Concise Binary Object Representation (CBOR). + + RFC 9595: YANG Schema Item iDentifier (YANG SID)."; + } + + /* Identities for transports */ + + identity transport { + description + "An identity that represents the underlying mechanism for + passing notification messages."; + } + + /* + * TYPEDEFs + */ + + typedef ypath { + type string { + length "1..max"; + } + description + "A type for YANG instance data paths."; + } + + typedef encoding { + type identityref { + base encoding; + } + description + "Specifies a data encoding, e.g., for a data subscription."; + } + + typedef subscription-id { + type string { + length "1..64"; + pattern '[A-Za-z0-9._-]+'; + } + description + "A used friendly string identifier for a subscription."; + } + + typedef transport { + type identityref { + base transport; + } + description + "Specifies the transport used to send notification messages + to a receiver."; + } + +// TODO - Consider changes to list keys or reordering of +// user-ordered lists. + + typedef centiseconds { + type uint32; + description + "A period of time, measured in units of 0.01 seconds."; + } + + typedef subscription-type { + type enumeration { + enum configured { + description + "A subscription that is created and managed via + configuration."; + } + enum dynamic { + description + "A subscription that is created and managed via RPC + primitives."; + } + } + description + "Indicate the type of subscription."; + } + + typedef subscription-status { + type enumeration { + enum invalid { + description + "The subscription as a whole is unsupportable with its + current parameters."; + } + enum inactive { + description + "The subscription is supportable with its current + parameters, but it is not currently connected to a + receiver"; + } + enum active { + description + "The subscription is actively running, and is connected + to at least one receiver. + + A subscription-started notification must have been sent + for a subscription to be in this state, and the receiver + will receive update notifications, as per the + update-trigger selection."; + } + } + description + "Indicates the status of a subscription"; + } + + typedef subscription-change { + type enumeration { + enum new-subscription { + description + "This is a new subscription."; + } + enum deleted { + description + "The subscription has been unconfigured or deleted via + a delete-subscription RPC"; + } + enum killed { + description + "A dynamic subscription has been killed via a + kill-subscription RPC"; + } + enum receiver-added { + description + "A new receiver has been added to a configured + subscription, and has connected successfully."; + } + enum receiver-removed { + description + "A receiver has been removed from a configured + subscription, or has become disconnected."; + } + enum config-changed { + description + "The subscription configuration has been changed, + requiring the subscription to be restarted."; + } + } + + description + "Indicates the reason why a subscription has changed."; + } + + /* + * GROUPINGS + */ + + grouping dscp { + description + "This grouping describes QoS information concerning a + subscription. This information is passed to lower layers + for transport prioritization and treatment."; + leaf dscp { + type inet:dscp; + default "0"; + description + "The desired network transport priority level. This is the + priority set on notification messages encapsulating the + results of the subscription. This transport priority is + shared for all receivers of a given subscription."; + } + } + + grouping publishers { + description + "Grouping describes the list of publisher-ids"; + leaf-list publisher-id { + type uint32; + default 0; + config false; + description + "Identifies the software process which publishes notification + messages (e.g., processor 1 on line card 1). This field + is used to notify the receiver which publisher processes + are going to publish. The identifiers are locally unique to + the Network Node."; + } + } + + grouping filter-choice { + description + "This grouping defines the types of selectors for objects + from a datastore."; + choice filter { + mandatory true; + description + "The content filter specification for this request."; + + leaf path { + type ypath; + mandatory true; + description + "A basic path filter that allows wildcard, regex, or + fixed value for list keys. Each format is TODO"; + } + anydata subtree { + //if-feature "yp2:subtree"; + mandatory true; + description + "This parameter identifies the portions of the + target datastore to retrieve."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 6"; + } + leaf xpath { + if-feature "yp2:xpath"; + type yang:xpath1.0; + mandatory true; + description + "This parameter contains an XPath expression identifying + the portions of the target datastore to retrieve. + + If the expression returns a node set, all nodes in the + node set are selected by the filter. Otherwise, if the + expression does not return a node set, the filter + doesn't select any nodes. + + The expression is evaluated in the following XPath + context: + + o The set of namespace declarations is the set of prefix + and namespace pairs for all YANG modules implemented + by the server, where the prefix is the YANG module + name and the namespace is as defined by the + 'namespace' statement in the YANG module. + + If the leaf is encoded in XML, all namespace + declarations in scope on the 'stream-xpath-filter' + leaf element are added to the set of namespace + declarations. If a prefix found in the XML is + already present in the set of namespace declarations, + the namespace in the XML is used. + + o The set of variable bindings is empty. + + o The function library is comprised of the core + function library and the XPath functions defined in + Section 10 in RFC 7950. + + o The context node is the root node of the target + datastore."; + reference + "XML Path Language (XPath) Version 1.0 + (https://www.w3.org/TR/1999/REC-xpath-19991116) + RFC 7950: The YANG 1.1 Data Modeling Language, + Section 10"; + } + } + } + + grouping update-policy { + description + "This grouping describes the susbcription update policy"; + + container update-trigger { + description + "This container describes all conditions under which + subscription update messages are generated"; + + container periodic { + presence "indicates a periodic subscription"; + description + "The publisher is requested to periodically notify the + receiver regarding the current values of the datastore + as defined by the selection filter."; + leaf period { + type centiseconds; + mandatory true; + description + "Duration of time that should occur between periodic + push updates, in units of 0.01 seconds."; + } + leaf anchor-time { + type yang:date-and-time; + description + "Designates a timestamp before or after which a series + of periodic push updates are determined. The next + update will take place at a point in time that is a + multiple of a period from the 'anchor-time'. + For example, for an 'anchor-time' that is set for the + top of a particular minute and a period interval of a + minute, updates will be sent at the top of every + minute that this subscription is active."; + } + } + container on-change { + if-feature "on-change"; + presence "indicates an on-change subscription"; + description + "The publisher is requested to notify the receiver + regarding changes in values in the datastore subset as + defined by a selection filter."; + + leaf sync-on-start { + type boolean; + default "true"; + description + "When this object is set to 'false', (1) it restricts an + on-change subscription from sending 'push-update' + notifications and (2) pushing a full selection per the + terms of the selection filter MUST NOT be done for + this subscription. Only updates about changes + (i.e., only 'push-change-update' notifications) + are sent. When set to 'true' (the default behavior), + in order to facilitate a receiver's synchronization, + a full update is sent, via a 'push-update' notification, + when the subscription starts. After that, + 'push-change-update' notifications are exclusively sent, + unless the publisher chooses to resync the subscription + via a new 'push-update' notification."; + } + } + } + } + + grouping subscription-id { + description + "This grouping describes the subscription identifier."; + + leaf id { + type subscription-id; + mandatory true; + description + "The unique identifier for the subscription."; + } + } + + grouping client-subscription-id { + description + "This grouping describes a subscription identifier that + cannot start with 'dyn-', which is reserved for dynamically + created subscriptions."; + + leaf id { + type subscription-id { + pattern "dyn-.*" { + modifier "invert-match"; + } + } + description + "A identifier for the subscription, that MUST be unique + across all configured and dynamic subscriptions. + + MUST NOT start with 'dyn-' which is reserved for + dynamic subscriptions created by the publisher."; + } + } + + grouping subscription-schema { + description + "This grouping describes schema information related to a + subscription."; + + leaf schema-id { + type string; + description + "Indicates the version of the YANG schema used for this + subscription. The schema-id MUST change if the schema + associated with the subscription changes. The schema-id + MAY change if the device schema changes, even if the + change does not affect the subscription."; + } + + leaf yang-library-content-id { + type leafref { + path "/yanglib:yang-library/yanglib:content-id"; + } + description + "Contains the YANG library content identifier."; + } + } + + grouping subscription-common { + description + "Common settings that are shared between dynamic and + configured subscriptions."; + + leaf description { + type string { + length "1..1000"; + } + description + "Open text allowing a configuring entity to embed the + originator or other specifics of this subscription."; + } + + container target { + description + "Identifies the source of information against which a + subscription is being applied as well as specifics on the + subset of information desired from that source."; + leaf datastore { + type identityref { + base ds:datastore; + } + default "ds:operational"; + description + "Datastore from which to retrieve data, defaults to + operational"; + } + + uses filter-choice; + } + + uses update-policy; + } + + /* + * RPCs + */ + + rpc establish-subscription { + if-feature "dynamic"; + description + "This RPC allows a subscriber to create (and possibly + negotiate) a subscription on its own behalf. If successful, + the subscription remains in effect for the duration of the + subscriber's association with the publisher or until the + subscription is terminated. If an error occurs or the + publisher cannot meet the terms of a subscription, an RPC + error is returned, and the subscription is not created. + In that case, the RPC reply's 'error-info' MAY include + suggested parameter settings that would have a higher + likelihood of succeeding in a subsequent + 'establish-subscription' request."; + input { + uses client-subscription-id { + refine id { + description + "A optional identifier for a dynamic + subscription, that must be unique across all + configured and dynamic subscriptions. + + MUST NOT start with 'dyn-'. + + If not provided, the publisher MUST generate a unique + identifier for the subscription, with an identifier + that starts with 'dyn-', which is returned to the + client in the RPC reply."; + } + } + uses subscription-common; + + leaf encoding { + type encoding; + mandatory true; + description + "The encoding to use for the subscription notifications."; + } + + uses dscp; + + } + output { + leaf id { + type subscription-id; + mandatory true; + description + "Identifier used for this subscription."; + } + } + } + + rpc modify-subscription { + if-feature "dynamic"; + description + "This RPC allows a subscriber to modify a dynamic + subscription's parameters. If successful, the changed + subscription parameters remain in effect for the duration of + the subscription, until the subscription is again modified, or + until the subscription is terminated. In the case of an error + or an inability to meet the modified parameters, the + subscription is not modified and the original subscription + parameters remain in effect."; + input { + uses subscription-id; + uses subscription-common; + + uses dscp; + + } + //output { + // leaf id { + // type subscription-id; + // mandatory true; + // description + // "Identifier used for this subscription."; + // } + //} + } + + sx:structure establish-subscription-stream-error-info { + container establish-subscription-stream-error-info { + description + "If any 'establish-subscription' RPC parameters are + unsupportable against the event stream, a subscription + is not created and the RPC error response MUST indicate the + reason why the subscription failed to be created. This + yang-data MAY be inserted as structured data in a + subscription's RPC error response to indicate the reason for + the failure. This yang-data MUST be inserted if hints are + to be provided back to the subscriber."; + leaf reason { + type identityref { + base establish-subscription-error; + } + description + "Indicates the reason why the subscription has failed to + be created to a targeted event stream."; + } + leaf filter-failure-hint { + type string; + description + "Information describing where and/or why a provided + filter was unsupportable for a subscription. The + syntax and semantics of this hint are + implementation specific."; + } + } + } + + rpc delete-subscription { + if-feature "dynamic"; + description + "This RPC allows a subscriber to delete a subscription that + was previously created by that same subscriber using the + 'establish-subscription' RPC. + + Only subscriptions that were created using + 'establish-subscription' from the same origin as this RPC + can be deleted via this RPC. // TODO - Why same origin? + + If an error occurs, the server replies with an 'rpc-error' + where the 'error-info' field MAY contain a + 'delete-subscription-error-info' structure."; + input { + leaf id { + type subscription-id; + mandatory true; + description + "The name of the dynamic subscription to be deleted."; + } + } + } + + rpc kill-subscription { + if-feature "dynamic"; + nacm:default-deny-all; + description + "This RPC allows an operator to delete a dynamic subscription + without restrictions on the originating subscriber or + underlying transport session. + + Only dynamic subscriptions, i.e., those that were created + using 'establish-subscription', may be deleted via this RPC. + + If an error occurs, the server replies with an 'rpc-error' + where the 'error-info' field MAY contain a + 'delete-subscription-error-info' structure."; + input { + leaf id { + type subscription-id; + mandatory true; + description + "The name of the dynamic subscription to be deleted."; + } + } + } + + sx:structure delete-subscription-error-info { + container delete-subscription-error-info { + description + "If a 'delete-subscription' RPC or a 'kill-subscription' RPC + fails, the subscription is not deleted and the RPC error + response MUST indicate the reason for this failure. This + yang-data MAY be inserted as structured data in a + subscription's RPC error response to indicate the reason + for the failure."; + leaf reason { + type identityref { + base delete-subscription-error; + } + mandatory true; + description + "Indicates the reason why the subscription has failed to be + deleted."; + } + } + } + + /* + * NOTIFICATIONS + */ + + grouping subscription-update-common { + description + "Data nodes common to both subscription-started and + subscription-modified notifications."; + + uses subscription-id; + uses subscription-common { + augment "target" { + description + "Augments fields to identify the target schema."; + uses subscription-schema; + } + } + container message-publishers { + description + "Holds the publisher-ids for all processes currently + associated with the subscription"; + uses yp2:publishers; + } + } + + notification subscription-started { + description + "This notification indicates that a subscription has started + and notifications will now be sent."; + uses subscription-update-common; + } + + notification subscription-modified { + description + "This notification indicates that subscription paramaters have + changed."; + uses subscription-update-common; + + leaf reason { + type subscription-change; + mandatory true; + description + "Gives a hint for the message recipient as to why the + notification has been sent."; + } + } + + notification subscription-terminated { + description + "This notification indicates that a subscription has been + terminated."; + uses subscription-id; + leaf reason { + type identityref { + base subscription-terminated-reason; + } + mandatory true; + description + "Identifies the condition that resulted in the + termination."; + } + } + + notification update { + description + "This notification contains a push update that in turn + contains data subscribed to via a subscription. In the case + of a periodic subscription, this notification is sent for + periodic updates. It can also be used for synchronization + updates of an on-change subscription. This notification + shall only be sent to receivers of a subscription."; + leaf id { + type subscription-id; + description + "The identifier of the subscription that is the source of + this notification."; + } + + leaf path-prefix { + type string; + description + "Specifies the common prefix that all other paths and data + are encoded relative to. + + TODO - This should be a JSONified instance data path."; + } + + leaf snapshot-type { + type enumeration { + enum "periodic" { + description + "The update message is due to a periodic update."; + } + enum "on-change-update" { + description + "The update message is due to an on-change update. This + means that one or more fields have changed under the + snapshot path. + + TODO - Split this into a on-change-delete msg?"; + } + enum "on-change-delete" { + description + "The update message is due to an on-change event where + the data node at the target path has been delete."; + } + enum "resync" { + description + "This indicates that the update is to resynchronize the + state, e.g., after a subscription started notification. + + Ideally, the resync message SHOULD be the first + notification sent when a subscription has started, but + it is not gauranteed or required to be the first + (e.g., if an on-change event occurs). + + These messages can be used to ensure that all state + has been sent to the client, and can be used to purge + stale data. + + TODO - In the distributed notification case, need a + notification to indicate that all child subscriptions + have been sent."; + } + } + mandatory true; + description + "This indicates the type of notification message that is + being sent."; + } + + leaf observation-time { + type yang:date-and-time; + description + "The time that the update was observed by the publisher."; + } + + list updates { + key "target-path"; + description + "This list contains the updated data. It constitutes a + snapshot at the time of update of the set of data that has + been subscribed to. The snapshot corresponds to the same + snapshot that would be returned in a corresponding 'get' + operation with the same selection filter parameters + applied."; + + leaf target-path { + type string; + description + "The target path of the data that is being replaced, i.e., + updated or deleted. The path is given relative to the + path-prefix."; + } + + choice data { + description + "This choice indicates the type of update that is being + performed at the target path."; + anydata merge { + description + "This contains the updated data that is to be merged with + the existing data at the target path. It constitutes a + snapshot at the time of update of the set of data that + has been subscribed to. The snapshot corresponds to the + same snapshot that would be returned in a corresponding + 'get' operation with the same selection filter parameters + applied. + + The snapshot is encoded relative to the combined path + defined by the common path-prefix and target-path"; + } + anydata replaced-by { + description + "This contains the updated data that is to replace all + existing data at the target path. It constitutes a + snapshot at the time of update of the set of data that + has been subscribed to. The snapshot corresponds to the + same snapshot that would be returned in a corresponding + 'get' operation with the same selection filter parameters + applied. + + The snapshot is encoded relative to the combined path + defined by the common path-prefix and target-path"; + } + leaf deleted { + type empty; + description + "This indicates that the data at the target path has been + deleted."; + } + } + } + + leaf complete { + type boolean; + default "false"; + description + "This flag indicates that this is the last + notification in a series of notifications that together + constitute a complete snapshot of the subscribed data at + the event-time. + + The 'update-complete' notification MAY be used as an + alternative to setting this flag, and is semantically + equivalent."; + } + } + + notification update-complete { + description + "This notification indicates the end of a periodic collection + or resync event for an on-change subscription, and can be used + to indicate that the receiver has a complete snapshot of the + subscribed data at the event-time, and hence the client MAY + use this as a signal that it can purge stale state + information. + + Alternatively, the 'complete' flag in the update + notification MAY be used instead of sending this notification + as a separate message, and both are semantically equivalent."; + leaf id { + type subscription-id; + description + "The name of the subscription that is the source of + this notification."; + } + } + + sx:augment-structure "/iypn:envelope" { + leaf publisher-id { + type uint32; + default 0; + description + "Identifies the software process which publishes notification + messages (e.g., processor 1 on line card 1). This field + is used to notify the receiver which publisher process + published which message. The identifier is locally unique to + the Network Node."; + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-push-revision@2025-08-29.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-revision@2025-12-07.yang similarity index 79% rename from experimental/ietf-extracted-YANG-modules/ietf-yang-push-revision@2025-08-29.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yang-push-revision@2025-12-07.yang index 61a5507bf..b714a42f4 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yang-push-revision@2025-08-29.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-revision@2025-12-07.yang @@ -84,7 +84,7 @@ module ietf-yang-push-revision { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2025-08-29 { + revision 2025-12-07 { description "First revision"; reference @@ -92,13 +92,6 @@ module ietf-yang-push-revision { Subscription"; } - feature yang-push-revision-supported { - description - "This feature indicates the YANG Subscription Notifications - support specifying the list of modules, revisions and - versions in the YANG subscription."; - } - // Identities identity revision-unsupported { base sn:establish-subscription-error; @@ -113,7 +106,7 @@ module ietf-yang-push-revision { base sn:establish-subscription-error; base sn:modify-subscription-error; description - "Version not supported. This failure can be due to + "Specific version not supported. This failure can be due to subscribing to a specific version not supported by the publisher."; } @@ -128,7 +121,7 @@ module ietf-yang-push-revision { module supported by the publisher does not support one of them."; } - grouping yang-push-module-version-config { + grouping yang-push-module-version-subs { description "This grouping combines the module name, the revision and version leaves. This grouping is to be used for @@ -138,21 +131,30 @@ module ietf-yang-push-revision { description "This references the YANG module name."; } - leaf revision { - type rev:revision-date; - description - "This references the YANG module revision to be sent in the - subscription."; - } - leaf version { - type ysver:version; + choice revision-version { description - "This references the YANG module semantic version to be sent + "Specifies the revision or version of the YANG module sent in the subscription."; - } + case revision { + leaf revision { + type rev:revision-date; + description + "This references the YANG module revision to be sent in the + subscription."; + } + } + case version { + leaf version { + type ysver:version; + description + "This references the YANG module semantic version to be sent + in the subscription."; + } + } + } } - grouping yang-push-module-version { + grouping yang-push-module-version-notif { description "This grouping combines the module name, the revision and version leaves. This grouping is to be used for @@ -182,9 +184,9 @@ module ietf-yang-push-revision { } } - grouping yang-push-module-version-list { + grouping yang-push-module-version-notif-list { description - "This grouping defines a list of yang-push-module-version + "This grouping defines a list of yang-push-module-version-notif grouping."; list module-version { key "name"; @@ -192,7 +194,7 @@ module ietf-yang-push-revision { description "List of yang-push-module-version grouping. The revision is not configurable."; - uses ypr:yang-push-module-version; + uses ypr:yang-push-module-version-notif; } leaf yang-library-content-id { type leafref { @@ -205,75 +207,72 @@ module ietf-yang-push-revision { } } - grouping yang-push-module-version-config-list { + grouping yang-push-module-version-subs-list { description - "This grouping defines a list of yang-push-module-version-config + "This grouping defines a list of yang-push-module-version-subs grouping."; - list module-version-config { + list module-version-subs { key "name"; description - "List of yang-push-module-version-config grouping. The + "List of yang-push-module-version-subs grouping. The revision is configurable."; - uses ypr:yang-push-module-version-config; + uses ypr:yang-push-module-version-subs; } } // Subscription parameters augment "/sn:establish-subscription/sn:input" { - if-feature "yang-push-revision-supported"; description "Augment the establish-subscription RPC from the ietf-subscribed-notifications YANG module with the - yang-push-module-version-config-list grouping."; - uses ypr:yang-push-module-version-config-list; + yang-push-module-version-subs-list grouping."; + uses ypr:yang-push-module-version-subs-list; } augment "/sn:modify-subscription/sn:input" { - if-feature "yang-push-revision-supported"; description "Augment the modify-subscription RPC from the ietf-subscribed-notifications YANG module with the - yang-push-module-version-config-list grouping."; - uses ypr:yang-push-module-version-config-list; + yang-push-module-version-subs-list grouping."; + uses ypr:yang-push-module-version-subs-list; } // Subscription notifications augment "/sn:subscription-started" { - if-feature "yang-push-revision-supported"; description "Augment the subscription-started notification from the ietf-subscribed-notifications YANG module with the - yang-push-module-version-list grouping."; - uses ypr:yang-push-module-version-list; + yang-push-module-version-notif-list grouping."; + uses ypr:yang-push-module-version-notif-list; } augment "/sn:subscription-modified" { - if-feature "yang-push-revision-supported"; description "Augment the subscription-modified notification from the ietf-subscribed-notifications YANG module with the - yang-push-module-version-list grouping."; - uses ypr:yang-push-module-version-list; + yang-push-module-version-notif-list grouping."; + uses ypr:yang-push-module-version-notif-list; } // Subscription container augment "/sn:subscriptions/sn:subscription" { - if-feature "yang-push-revision-supported"; description "Augment the subscriptions RPC container from the ietf-subscribed-notifications YANG module with the - yang-push-module-version-config-list grouping."; - uses ypr:yang-push-module-version-config-list; + yang-push-module-version-subs-list grouping."; + uses ypr:yang-push-module-version-subs-list; } - // Event capabilities + // Subscription capabilities augment "/sysc:system-capabilities/notc:subscription-capabilities" { description "Add system level capabilities"; leaf yang-push-module-revision-supported { type boolean; + default true; description "Specifies whether the publisher supports exporting revision and version in YANG-Push subscription state change - notifications."; + notifications. If set to true, publisher supports. If set to + false, publisher does not support."; reference "RFC XXXX: Support of Versioning in YANG Notifications Subscription"; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-push-telemetry-message@2025-08-15.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-telemetry-message@2025-10-19.yang similarity index 93% rename from experimental/ietf-extracted-YANG-modules/ietf-yang-push-telemetry-message@2025-08-15.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yang-push-telemetry-message@2025-10-19.yang index c8310d352..ba7faf475 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yang-push-telemetry-message@2025-08-15.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-telemetry-message@2025-10-19.yang @@ -1,7 +1,6 @@ module ietf-yang-push-telemetry-message { yang-version 1.1; - namespace - "urn:ietf:params:xml:ns:yang:ietf-yang-push-telemetry-message"; + namespace "urn:ietf:params:xml:ns:yang:ietf-yang-push-telemetry-message"; prefix yptm; import ietf-subscribed-notifications { @@ -42,6 +41,11 @@ module ietf-yang-push-telemetry-message { reference "draft-ietf-netmod-yang-semver: YANG Semantic Versioning"; } + import ietf-yang-structure-ext { + prefix sx; + reference + "RFC 8791: YANG Data Structure Extensions"; + } organization "IETF Draft"; @@ -75,14 +79,14 @@ module ietf-yang-push-telemetry-message { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2025-08-15 { + revision 2025-10-19 { description "Initial revision."; reference "RFC XXXX"; } - augment "/tm:message/tm:telemetry-message-metadata" { + sx:augment-structure "/tm:message/tm:telemetry-message-metadata" { description "Augments telemetry-message-metadata with YANG-Push specific subscription metadata"; @@ -173,7 +177,8 @@ module ietf-yang-push-telemetry-message { the subscriber."; case periodic { container periodic { - presence "indicates a periodic subscription"; + presence + "indicates a periodic subscription"; description "The publisher is requested to notify periodically the current values of the datastore as defined by the @@ -199,14 +204,16 @@ module ietf-yang-push-telemetry-message { } case on-change { container on-change { - presence "indicates an on-change subscription"; + presence + "indicates an on-change subscription"; description "The publisher is requested to notify changes in values in the datastore subset as defined by a selection filter."; leaf dampening-period { type yp:centiseconds; - default "0"; + default + "0"; description "Specifies the minimum interval between the assembly of successive update records for a single receiver of a @@ -220,7 +227,8 @@ module ietf-yang-push-telemetry-message { } leaf sync-on-start { type boolean; - default "true"; + default + "true"; description "When this object is set to false, it restricts an on-change subscription from sending push-update @@ -240,7 +248,8 @@ module ietf-yang-push-telemetry-message { } } list module { - key "name"; + key + "name"; config false; description "List of yang-push-module-version grouping defined in @@ -265,14 +274,14 @@ module ietf-yang-push-telemetry-message { description "This references the YANG module semantic version, draft-ietf-netmod-yang-semver, of the sent notification - message."; + \t\t\t\t message."; } } leaf yang-library-content-id { type string; config false; description - "Contains the YANG library content identifier RFC 8525 + "Contains the YANG library content identifier, RFC 8525, information."; } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-revisions@2025-01-28.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-revisions@2025-09-16.yang similarity index 92% rename from experimental/ietf-extracted-YANG-modules/ietf-yang-revisions@2025-01-28.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yang-revisions@2025-09-16.yang index 919839681..6eb7695e8 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yang-revisions@2025-01-28.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-revisions@2025-09-16.yang @@ -33,7 +33,7 @@ module ietf-yang-revisions { "This YANG 1.1 module contains definitions and extensions to support updated YANG revision handling. - Copyright (c) 2024 IETF Trust and the persons identified as + Copyright (c) 2025 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or @@ -59,7 +59,7 @@ module ietf-yang-revisions { // RFC Ed.: replace YYYY-draft-ietf-netmod-rfc6991-bis (inc above) with actual RFC number and // remove this note. - revision 2025-01-28 { + revision 2025-09-16 { description "Initial version."; reference @@ -105,6 +105,7 @@ module ietf-yang-revisions { if they believe a change could negatively impact clients even though the backwards compatibility rules defined in RFC-XXXX classify it as a backwards-compatible change. + Add, removing, or changing a 'non-backwards-compatible' statement is a backwards-compatible version change."; reference @@ -124,19 +125,15 @@ module ietf-yang-revisions { type. The statement MUST only be a substatement of the import - statement. Zero, one or more 'recommended-min-date' - statements per parent statement are allowed. No substatements - for this extension have been standardized. - - Zero or one 'recommended-min-date' extension statement is - allowed for each parent 'import' statement. + statement. Zero or one 'recommended-min-date' + extension statement is allowed for each parent 'import' statement. + No substatements for this extension have been standardized. A particular revision of an imported module adheres to an import's 'recommended-min-date' extension statement if the imported module's revision date is equal to or later than the revision date argument of the 'recommended-min-date' extension statement in the importing module. - Adding, removing or updating a 'recommended-min-date' statement to an import is a backwards-compatible change."; reference diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-semver@2025-08-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-semver@2026-03-03.yang similarity index 96% rename from experimental/ietf-extracted-YANG-modules/ietf-yang-semver@2025-08-12.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yang-semver@2026-03-03.yang index 2514bc3a7..934ee968e 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yang-semver@2025-08-12.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-semver@2026-03-03.yang @@ -20,7 +20,7 @@ module ietf-yang-semver { Author: Jason Sterne Author: Benoit Claise - "; + "; description "This module provides type and grouping definitions for YANG packages. @@ -50,8 +50,8 @@ module ietf-yang-semver { // note. // RFC Ed. update the ysv:version to "1.0.0". - revision 2025-08-12 { - ysv:version "0.23.0"; + revision 2026-03-03 { + ysv:version "0.25.0"; description "Initial revision"; reference @@ -132,7 +132,7 @@ module ietf-yang-semver { type string { length "5..128"; pattern '[0-9]+[.][0-9]+[.][0-9]+(_(non_)?compatible)?' - + '(-[A-Za-z0-9.-]+[.-][0-9]+)?([+][A-Za-z0-9.-]+)?'; + + '(-[A-Za-z0-9.-]+)?([+][A-Za-z0-9.-]+)?'; } description "Represents a YANG semantic version. The rules governing the diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-tmf-map@2026-02-23.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-tmf-map@2026-02-23.yang new file mode 100644 index 000000000..1a50ccc8c --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-tmf-map@2026-02-23.yang @@ -0,0 +1,59 @@ +module ietf-yang-tmf-map { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-yang-tmf-map"; + prefix tmf; + + organization + "IETF ONSEN Working Group."; + contact + "Kris Lambrechts + Email: kris@netedge.plus"; + description + "This YANG module defines a set of YANG extensions to annotate + YANG schema nodes with mapping information to TMF Data Models. + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2026-02-23 { + description + "Initial revision."; + reference + "RFC XXXX"; + } + + extension cfs-service { + argument name; + description + "The TMF CFS Service that this YANG subtree maps to."; + } + + extension rfs-service { + argument name; + description + "The TMF RFS Service that this YANG subtree maps to."; + } + + extension resource { + argument name; + description + "The TMF Resource that this YANG subtree maps to."; + } + + extension ignore { + description + "Indicates that the annotated YANG data node and its + subtree are ignored by the mapping mechanism."; + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yl-packages@2025-03-03.yang b/experimental/ietf-extracted-YANG-modules/ietf-yl-packages@2026-01-30.yang similarity index 73% rename from experimental/ietf-extracted-YANG-modules/ietf-yl-packages@2025-03-03.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yl-packages@2026-01-30.yang index bec2aff59..8e93c3653 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yl-packages@2025-03-03.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yl-packages@2026-01-30.yang @@ -13,9 +13,15 @@ module ietf-yl-packages { reference "XXXX: YANG Semantic Versioning"; } + import ietf-yang-package-types { + prefix pkg-types; + ys:recommended-min-version 0.8.0; + reference "RFC XXX: YANG Packages."; + } + import ietf-yang-packages { prefix pkgs; - ys:recommended-min-version 0.5.0; + ys:recommended-min-version 0.8.0; reference "RFC XXX: YANG Packages."; } @@ -39,7 +45,7 @@ module ietf-yl-packages { "This module provides defined augmentations to YANG library to allow a server to report YANG package information. - 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 @@ -56,14 +62,14 @@ module ietf-yl-packages { 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."; + // RFC Ed.: update the date below with the date of RFC publication // and remove this note. // RFC Ed.: replace XXXX with actual RFC number and remove this // note. - revision 2025-03-03 { - ys:version 0.5.0; + revision 2026-01-30 { + ys:version 0.8.0; description "Initial revision"; reference @@ -77,8 +83,23 @@ module ietf-yl-packages { augment "/yanglib:yang-library/yanglib:schema" { description "Allow datastore schema to be related to a set of YANG - packages"; + packages. + + Additional features may be supported by the device listed + in the 'implemented-feature' list. + "; uses pkgs:yang-ds-pkg-ref; + + leaf-list supported-feature { + type pkg-types:scoped-feature; + description + "The name of each YANG feature supported by the + server MUST be identified. Features are + identified using :. + + This list MUST be equivalent to the list of + supported features advertised in YANG library."; + } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yp-notification@2025-06-04.yang b/experimental/ietf-extracted-YANG-modules/ietf-yp-notification@2025-06-04.yang deleted file mode 100644 index b28706b75..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-yp-notification@2025-06-04.yang +++ /dev/null @@ -1,180 +0,0 @@ -module ietf-yp-notification { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-yp-notification"; - prefix iypn; - - import ietf-yang-types { - prefix yang; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-inet-types { - prefix inet; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-subscribed-notifications { - prefix sn; - reference - "RFC 8639: Subscription to YANG Notifications"; - } - import ietf-system-capabilities { - prefix sysc; - reference - "RFC 9196: YANG Modules Describing Capabilities for - Systems and Datastore Update Notifications"; - } - import ietf-notification-capabilities { - prefix notc; - reference - "RFC 9196: YANG Modules Describing Capabilities for - Systems and Datastore Update Notifications"; - } - import ietf-yang-structure-ext { - prefix sx; - reference - "RFC 8791: YANG Data Structure Extensions"; - } - - organization - "IETF NETCONF (Network Configuration) Working Group"; - contact - "WG Web: - WG List: - - Authors: Alex Huang Feng - - Pierre Francois - - Thomas Graf - - Benoit Claise - "; - description - "Defines a notification header for Subscribed Notifications - [RFC8639] and YANG-Push [RFC8641]. When this notification header - is enabled through configuration, the root container of the - notification is encoded as defined in RFCXXX. - - This module can be used to validate XML-encoded notifications - [RFC7950], JSON-encoded messages [RFC7951], and CBOR-encoded - messages [RFC9254]. Refer to Section Y of RFC XXXX for more - details. - - Copyright (c) 2025 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 - (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself - for full legal notices."; - - revision 2025-06-04 { - description - "First revision"; - reference - "RFC XXXX: YANG-Push Notification Envelope"; - } - - identity notif-envelope-error { - description - "Base identity for errors found while attempting to - change the value of the leaf 'enable-notification-envelope'."; - } - - grouping notif-env-capabilities { - description - "This grouping defines the capabilities for - the notification-envelope defined in RFC XXXX - and the different supported metadata."; - leaf notification-envelope { - type boolean; - default "false"; - description - "Supports YANG-Push to use the notification-envelope - defined in RFC XXXX."; - } - container metadata { - description - "Container with the supported optional metadata by the - YANG-Push publisher."; - leaf hostname-sequence-number { - type boolean; - default "false"; - description - "Supports hostname and sequence-number - in the YANG-Push notifications as defined in the - YANG-Push notification-envelope in RFC XXXX."; - } - } - } - - sx:structure envelope { - leaf event-time { - type yang:date-and-time; - mandatory true; - description - "The date and time the event was generated by the event - source. This parameter is of type dateTime and compliant - to [RFC3339]."; - } - leaf hostname { - type inet:host; - description - "The hostname of the network node according to - [RFC1213]. This value is usually configured on the node - by the administrator to identify the node in - the network uniquely."; - } - leaf sequence-number { - type yang:counter32; - description - "Unique sequence number as described in [RFC9187] for each - published message."; - } - anydata contents { - description - "This contains the values defined by the 'notification' - statement unchanged."; - } - } - - // Subscription container - augment "/sn:subscriptions" { - description - "This augmentation adds the configuration switches for - enabling the notification envelope and metadata."; - leaf enable-notification-envelope { - type boolean; - default "false"; - description - "Enables YANG-Push to use the notification-envelope - defined in RFC XXXX."; - } - container metadata { - description - "Container for configuring optional metadata."; - } - } - - // YANG-Push Capabilities extension - augment "/sysc:system-capabilities" - + "/notc:subscription-capabilities" { - description - "Extension to the subscription-capabilities model to enable - clients to learn whether the publisher supports the - notification-envelope"; - container notification-metadata { - description - "Adds the notification metadata capabilities to subscription - capabilities."; - uses notif-env-capabilities; - } - } -} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yp-notification@2025-12-24.yang b/experimental/ietf-extracted-YANG-modules/ietf-yp-notification@2025-12-24.yang new file mode 100644 index 000000000..1a9e8fbb3 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-yp-notification@2025-12-24.yang @@ -0,0 +1,209 @@ +module ietf-yp-notification { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-yp-notification"; + prefix iypn; + + import ietf-yang-types { + prefix yang; + reference + "draft-ietf-netmod-rfc6991-bis-18: Common YANG Data Types"; + } + import ietf-inet-types { + prefix inet; + reference + "draft-ietf-netmod-rfc6991-bis-18: Common YANG Data Types"; + } + import ietf-subscribed-notifications { + prefix sn; + reference + "RFC 8639: Subscription to YANG Notifications"; + } + import ietf-system-capabilities { + prefix sysc; + reference + "RFC 9196: YANG Modules Describing Capabilities for + Systems and Datastore Update Notifications"; + } + import ietf-notification-capabilities { + prefix notc; + reference + "RFC 9196: YANG Modules Describing Capabilities for + Systems and Datastore Update Notifications"; + } + import ietf-yang-structure-ext { + prefix sx; + reference + "RFC 8791: YANG Data Structure Extensions"; + } + + organization + "IETF NETCONF (Network Configuration) Working Group"; + contact + "WG Web: + WG List: + + Authors: Alex Huang Feng + + Pierre Francois + + Thomas Graf + + Benoit Claise + "; + description + "Defines a notification header for Subscribed Notifications + [RFC8639] and YANG-Push [RFC8641]. When this notification header + is enabled through configuration, the root container of the + notification is encoded as defined in RFCXXX. + + This module can be used to validate XML-encoded notifications + [RFC7950], JSON-encoded messages [RFC7951], and CBOR-encoded + messages [RFC9254]. Refer to Section 3.1.2 of RFC XXXX for more + details. + + Copyright (c) 2025 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, is permitted pursuant to, and subject to the license + terms contained in, the Revised BSD License set forth in Section + 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + All revisions of IETF and IANA published modules can be found + at the YANG Parameters registry group + (https://www.iana.org/assignments/yang-parameters). + + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', 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."; + + revision 2025-12-24 { + description + "Initial version."; + reference + "RFC XXXX: Extensible YANG Model for YANG-Push Notifications"; + } + + feature hostname-sequence-number { + description + "This feature indicates that hostname and sequence numbers are + supported."; + } + + grouping notif-env-capabilities { + description + "This grouping defines the capabilities for + the notification-envelope defined in RFC XXXX + and the different supported metadata."; + leaf envelope { + type boolean; + default "true"; + description + "Supports YANG-Push to use the notification-envelope as + defined in RFC XXXX. If set to true, the publisher supports + the notification envelope. If set to false, the + notification envelope is not supported by the publisher."; + } + container metadata { + description + "Container with the supported optional metadata by the + YANG-Push publisher."; + leaf hostname-sequence-number { + if-feature "hostname-sequence-number"; + type boolean; + default "false"; + description + "Supports hostname and sequence-number + in the YANG-Push notifications as defined in the + YANG-Push notification-envelope in RFC XXXX. + If set to true, the publisher supports + sending the hostname and sequence numbers + within the notification envelope. If set to false, + the hostname and sequence numbers are not supported."; + } + } + } + + sx:structure envelope { + leaf event-time { + type yang:date-and-time; + mandatory true; + description + "The date and time the event was generated by the network + node."; + } + leaf hostname { + if-feature "hostname-sequence-number"; + type inet:host-name; + description + "The hostname of the network node. This value is usually + configured on the node by the administrator to identify + the node in the network uniquely."; + } + leaf sequence-number { + if-feature "hostname-sequence-number"; + type yang:counter32; + description + "Unique sequence number for each published message + by the publisher process. The initial number is 1 and + counts up by 1 at every published notification message + until it reaches 4294967295. Then, it wraps around and + restarts at 0. The value 0 is used to detect wrap + arounds."; + } + anydata contents { + description + "This contains the values defined by the 'notification' + statement unchanged."; + } + } + + // Subscription container + augment "/sn:subscriptions" { + description + "This augmentation adds the configuration switches for + enabling the notification envelope and metadata."; + leaf enable-notification-envelope { + type boolean; + default "false"; + description + "Enables YANG-Push to use the notification-envelope + defined in RFC XXXX. + + Enabling or disabling this leaf terminates all + existing active dynamic and configured YANG-Push + subscriptions. The publisher MUST send a + 'subscription-terminated' notification to all the + existing active subscriptions using + the header configured before the change, then the + subscription is terminated. Refer to + Section 4 of RFC XXXX for more details."; + } + container metadata { + description + "Container for configuring optional metadata. + Refer to Section 4 of RFC XXXX for more details."; + } + } + + // YANG-Push Capabilities extension + augment "/sysc:system-capabilities" + + "/notc:subscription-capabilities" { + description + "Extension to the subscription-capabilities model to enable + clients to learn whether the publisher supports the + notification-envelope"; + container notification-metadata { + description + "Adds the notification metadata capabilities to subscription + capabilities."; + uses notif-env-capabilities; + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yp-observation@2025-06-04.yang b/experimental/ietf-extracted-YANG-modules/ietf-yp-observation@2025-12-24.yang similarity index 54% rename from experimental/ietf-extracted-YANG-modules/ietf-yp-observation@2025-06-04.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yp-observation@2025-12-24.yang index 9788076b7..3220ca440 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yp-observation@2025-06-04.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yp-observation@2025-12-24.yang @@ -1,7 +1,7 @@ module ietf-yp-observation { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-yp-observation"; - prefix ypot; + prefix iypo; import ietf-yang-types { prefix yang; @@ -11,7 +11,8 @@ module ietf-yp-observation { import ietf-yang-push { prefix yp; reference - "RFC 8641: Subscription to YANG Notifications for Datastore Updates"; + "RFC 8641: Subscription to YANG Notifications for Datastore + Updates"; } import ietf-system-capabilities { prefix sysc; @@ -35,98 +36,100 @@ module ietf-yp-observation { Authors: Thomas Graf Benoit Claise - + Alex Huang Feng "; description "Defines YANG-Push event notification header with the observation - time in streaming update notifications. + time in streaming update notifications. - Copyright (c) 2025 IETF Trust and the persons identified as - authors of the code. All rights reserved. + Copyright (c) 2025 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). - This version of this YANG module is part of RFC XXXX; see the RFC - itself for full legal notices."; + All revisions of IETF and IANA published modules can be found + at the YANG Parameters registry group + (https://www.iana.org/assignments/yang-parameters). - revision 2025-06-04 { - description - "First revision"; - reference - "RFC XXXX: Extensible YANG Model for Network Telemetry Notifications"; - } + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; - feature yang-push-observation-timestamp { + revision 2025-12-24 { description - "This feature indicates the YANG-push Notifications support - the observation timestamps in streaming update notifications."; + "Initial version."; + reference + "RFC XXXX: Extensible YANG Model for YANG-Push Notifications"; } grouping yang-push-observation { description - "This grouping adds the observation timestamp for the observed metrics."; + "This grouping adds the observation timestamp for the + observed metrics."; leaf timestamp { type yang:date-and-time; description - "This is the time when metrics were observed."; + "This is the time when the metrics were observed."; } leaf point-in-time { type enumeration { enum current-accounting { description - "For periodical subscriptions, the point-in-time + "For periodic subscriptions, the point-in-time where the metrics are being polled and observed."; } enum initial-state { description "For 'on-change sync on start' subscriptions, the - initial point in time when the subscription was established - and the state was observed."; + initial point in time when the subscription was + established and the state was observed."; } enum state-changed { description "For 'on-change sync on start' subscriptions, the - point in time when the state change was observed after the - subscription was established."; + point in time when the state change was observed after + the subscription was established."; } } description - "This describes at which point in time the metrics were observed"; + "This describes at which point in time the metrics were + observed."; } } // Event notifications augment "/yp:push-update" { description - "This augmentation adds the observation timestamp of the accounted - metrics in the push-update notification."; - uses ypot:yang-push-observation; + "This augmentation adds the observation timestamp of the + accounted metrics in the push-update notification."; + uses iypo:yang-push-observation; } augment "/yp:push-change-update" { description - "This augmentation adds the observation timestamp of the event - in the push-change-update notification."; - uses ypot:yang-push-observation; + "This augmentation adds the observation timestamp of the + event in the push-change-update notification."; + uses iypo:yang-push-observation; } // Event capabilities augment "/sysc:system-capabilities" + "/notc:subscription-capabilities" { description - "Add YANG-Push notification capabilities to system-level capability - container."; - leaf yang-push-observation-supported { - if-feature "yang-push-observation-timestamp"; + "Add YANG-Push notification capabilities to system-level + capability container."; + leaf yang-push-observation-time-supported { type boolean; + default "false"; description "Specifies whether the publisher supports exporting - observation-timestamp and point-in-time in notifications."; + observation-timestamp and point-in-time in notifications. + If set to true, publisher supports. If set to false, + the observation-timestamp is not supported."; reference "RFC XXXX: Extensible YANG Model for YANG-Push Notifications"; } diff --git a/standard/iana/yang-parameters.xml b/standard/iana/yang-parameters.xml index 2fec24563..79e8281d6 100644 --- a/standard/iana/yang-parameters.xml +++ b/standard/iana/yang-parameters.xml @@ -4,7 +4,7 @@ YANG Parameters 2010-06-10 - 2026-04-01 + 2026-04-03 YANG Module Names @@ -2688,7 +2688,17 @@ and Subsequent Address Family Identi - + + ietf-ucl-acl + N + + urn:ietf:params:xml:ns:yang:ietf-ucl-acl + ucl + + + 's module file will be posted upon the document's publication as an RFC. + + ietf-udp-client N @@ -2698,7 +2708,7 @@ and Subsequent Address Family Identi 's module file will be posted upon the document's publication as an RFC. - + ietf-udp-server N