From 47cfdcbdfdbd40089e170a1c579ce586b5f9b02b Mon Sep 17 00:00:00 2001 From: Joe Clarke Date: Mon, 27 Jan 2025 05:08:03 -0500 Subject: [PATCH] yc.o sync (#1612) --- .../iana-display-hints@2025-01-31.yang | 9 - ...yang => ietf-bfd-opt-auth@2025-06-04.yang} | 8 +- ...ang => ietf-bfd-stability@2025-06-11.yang} | 18 +- .../ietf-bmp-bgp-dependencies@2025-01-02.yang | 348 +++++ .../ietf-bmp-tcp-dependencies@2025-01-02.yang | 122 ++ .../ietf-bmp@2024-04-03.yang | 1120 ----------------- .../ietf-bmp@2025-01-02.yang | 1099 ++++++++++++++++ ...=> ietf-distributed-notif@2025-04-12.yang} | 67 +- ...yang => ietf-layer0-types@2025-06-06.yang} | 235 ++-- ...-network-inventory-sw-ext@2025-06-10.yang} | 8 +- ...ietf-network-slice-service@2025-05-09.yang | 85 +- .../ietf-platform-manifest@2025-02-21.yang | 4 +- .../ietf-telemetry-message@2024-02-20.yang | 320 ----- .../ietf-telemetry-message@2025-04-17.yang | 219 ++++ ...5-03-25.yang => ietf-vrrp@2025-06-09.yang} | 104 +- ...ang-push-telemetry-message@2025-04-17.yang | 276 ++++ .../ietf-yp-current-period@2025-02-21.yang | 10 +- ...-yp-transport-capabilities@2025-06-07.yang | 141 +++ standard/iana/yang-parameters.xml | 16 +- 19 files changed, 2471 insertions(+), 1738 deletions(-) rename experimental/ietf-extracted-YANG-modules/{ietf-bfd-opt-auth@2025-04-16.yang => ietf-bfd-opt-auth@2025-06-04.yang} (97%) rename experimental/ietf-extracted-YANG-modules/{ietf-bfd-stability@2025-04-07.yang => ietf-bfd-stability@2025-06-11.yang} (93%) create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-bmp-bgp-dependencies@2025-01-02.yang create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-bmp-tcp-dependencies@2025-01-02.yang delete mode 100644 experimental/ietf-extracted-YANG-modules/ietf-bmp@2024-04-03.yang create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-bmp@2025-01-02.yang rename experimental/ietf-extracted-YANG-modules/{ietf-distributed-notif@2024-04-21.yang => ietf-distributed-notif@2025-04-12.yang} (61%) rename experimental/ietf-extracted-YANG-modules/{ietf-layer0-types@2025-02-25.yang => ietf-layer0-types@2025-06-06.yang} (93%) rename experimental/ietf-extracted-YANG-modules/{ietf-network-inventory-sw-ext@2024-10-17.yang => ietf-network-inventory-sw-ext@2025-06-10.yang} (97%) delete mode 100644 experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2024-02-20.yang create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2025-04-17.yang rename experimental/ietf-extracted-YANG-modules/{ietf-vrrp@2025-03-25.yang => ietf-vrrp@2025-06-09.yang} (92%) create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-yang-push-telemetry-message@2025-04-17.yang create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-yp-transport-capabilities@2025-06-07.yang diff --git a/experimental/ietf-extracted-YANG-modules/iana-display-hints@2025-01-31.yang b/experimental/ietf-extracted-YANG-modules/iana-display-hints@2025-01-31.yang index 72ed209dd..693bb12dd 100644 --- a/experimental/ietf-extracted-YANG-modules/iana-display-hints@2025-01-31.yang +++ b/experimental/ietf-extracted-YANG-modules/iana-display-hints@2025-01-31.yang @@ -164,15 +164,6 @@ module iana-display-hints { "RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace"; amm:base "//ietf/amm/IDENT/base-bstr"; } - amm:ident display-bstr-uuid { - amm:enum 17; - description - "Interpret byte string values as UUID and display as human-friendly text - according to RFC 4122 conventions."; - reference - "RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace"; - amm:base "//ietf-amm/IDENT/base-bstr"; - } // TIME type (TP or TD built-ins) hints amm:ident base-time { diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bfd-opt-auth@2025-04-16.yang b/experimental/ietf-extracted-YANG-modules/ietf-bfd-opt-auth@2025-06-04.yang similarity index 97% rename from experimental/ietf-extracted-YANG-modules/ietf-bfd-opt-auth@2025-04-16.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bfd-opt-auth@2025-06-04.yang index bc38f2b55..980469bfc 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bfd-opt-auth@2025-04-16.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bfd-opt-auth@2025-06-04.yang @@ -59,9 +59,10 @@ module ietf-bfd-opt-auth { WG List: Authors: Mahesh Jethanandani (mjethanandani@gmail.com) - Ashesh Mishra (mishra.ashesh@gmail.com) + Ashesh Mishra (ashesh@aalyria.com) Ankur Saxena (ankurpsaxena@gmail.com) - Manav Bhatia (mnvbhatia@google.com)."; + Manav Bhatia (mnvbhatia@google.com) + Jeffrey Haas (jhaas@juniper.net)."; description "This YANG module augments the base BFD YANG model to add @@ -87,7 +88,7 @@ module ietf-bfd-opt-auth { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision "2025-04-16" { + revision "2025-06-04" { description "Initial Version."; reference @@ -140,6 +141,7 @@ module ietf-bfd-opt-auth { operations."; } } + augment "/rt:routing/rt:control-plane-protocols" + "/rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh" + "/bfd-ip-sh:sessions/bfd-ip-sh:session" + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bfd-stability@2025-04-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-bfd-stability@2025-06-11.yang similarity index 93% rename from experimental/ietf-extracted-YANG-modules/ietf-bfd-stability@2025-04-07.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bfd-stability@2025-06-11.yang index 7eeee0ea7..01054d3ac 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bfd-stability@2025-04-07.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bfd-stability@2025-06-11.yang @@ -72,15 +72,15 @@ 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. + attributes related to BFD Stability. In particular, it adds a + a per-session count for BFD packets that are lost. - 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 without modification, is permitted pursuant to, and subject to - the license terms contained in, the Revised 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). @@ -95,7 +95,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-04-07" { + revision "2025-06-11" { description "Initial Version."; reference @@ -141,7 +141,7 @@ module ietf-bfd-stability { default false; description "If set to true, this enables the BFD session to monitor - for stability; i.e., to watch how many packets are getting + for stability, i.e., to watch how many packets are getting dropped."; } description @@ -160,7 +160,7 @@ module ietf-bfd-stability { default false; description "If set to true, this enables the BFD session to monitor - for stability; i.e., to watch how many packets are getting + for stability, i.e., to watch how many packets are getting dropped."; } description @@ -179,7 +179,7 @@ module ietf-bfd-stability { default false; description "If set to true, this enables the BFD session to monitor - for stability; i.e., to watch how many packets are getting + for stability, i.e., to watch how many packets are getting dropped."; } description @@ -198,7 +198,7 @@ module ietf-bfd-stability { default false; description "If set to true, this enables the BFD session to monitor - for stability; i.e., to watch how many packets are getting + for stability, i.e., to watch how many packets are getting dropped."; } description diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bmp-bgp-dependencies@2025-01-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-bmp-bgp-dependencies@2025-01-02.yang new file mode 100644 index 000000000..ec0efcc94 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-bmp-bgp-dependencies@2025-01-02.yang @@ -0,0 +1,348 @@ +module ietf-bmp-bgp-dependencies { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-bmp-bgp-dependencies"; + prefix bmp-ietf-dep; + + import ietf-bmp { + prefix bmp; + } + + import ietf-routing { + prefix rt; + reference + "RFC 8349: A YANG Data Model for Routing Management + (NMDA Version)."; + } + + import ietf-bgp { + prefix bgp; + reference + "I-D.draft-ietf-idr-bgp-model-17: + BGP YANG module for Service Provider Network."; + } + + import ietf-bgp-types { + prefix bt; + reference + "RFC AAAA: BGP YANG module for Service Provider Network. + RFC-EDITOR: please update XXX with the RFC ID assigned + to I-D.ietf-idr-bgp-model"; + } + organization + "IETF GROW Working Group"; + contact + "WG Web: + WG List: + + Author: Camilo Cardona + + + Author: Paolo Lucente + + + Author: Thomas Graf + + + Author: Benoit Claise + "; + description + "This module specifies a structure for BMP + (BGP Monitoring Protocol) configuration and monitoring. + + 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 + 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 9196 + (https://www.rfc-editor.org/info/rfc9196); see the RFC itself + for full legal notices."; + + revision 2025-01-02 { + description + "initial version"; + reference + "RFC YYYY: BMP YANG Module + RFC-EDITOR: please update YYYY with this RFC ID"; + } + grouping bmp-ni-peer-ribs-filter { + description + "Containers for configuring RIBs under the ietf-bgp:bgp + container."; + container address-families { + description + "container for lists of address-families"; + list address-family { + key "address-family-id"; + description + "List of address families. + The name of the address family, as defined + in the BGP model is used for keying."; + leaf address-family-id { + type identityref { + base bt:afi-safi-type; + } + description + "Address family id to configure"; + } + leaf enabled { + type boolean; + default "true"; + description + "Enables route monitoring messages + for the address family"; + } + container peers-configurations { + description + "Every peer under the configured network instance can be + at most configured by one of the next containers. If the + peer is not covered by any, then no BMP message should + include information from/to that peer. If the peer is + covered by more than one, then the priority is: + 1. peers + 2. peer-groups + 3. peer-type + 4. bmp-peer-selectors + + New child containers or new bmp-peer-selectors instances + SHOULD provide a way of unambiguously selecting which + configuration container should be selected for a peer in + case multiple matches. + "; + container bmp-peer-selectors { + description + "Generic identification of peers to configure."; + list bmp-peer-selector { + key "bmp-selector-id"; + description + "Identification of peers + for which we send BMP data to the collector + using a peer type defined using a peer-types-bmp. + For instance, to create a default for all + peers use bmp-peer-selectors-all-peers"; + leaf bmp-selector-id { + type identityref { + base bmp:bmp-peer-selectors; + } + description + "Peers to configure using a BMP peer selector"; + } + leaf enabled { + type boolean; + default "true"; + description + "Enables routing monitoring messages + for the peer(s)."; + } + uses bmp:bmp-route-monitoring-peer-configuration; + } + } + container peer-types { + description + "Generic identification of peers to configure."; + list peer-type { + key "peer-type-id"; + description + "Identification of peers + for which we send BMP data to the collector + using BGP peer-type (e.g. internal, external) + "; + leaf peer-type-id { + type bt:peer-type; + description + "BGP Peer type to configure"; + } + } + leaf enabled { + type boolean; + default "true"; + description + "Enables routing monitoring messages + for the peer(s)."; + } + uses bmp:bmp-route-monitoring-peer-configuration; + } + container peer-groups { + description + "Identification of peer-groups + to configure"; + list peer-group { + key "peer-group"; + description + "Identification of peer-groups + for which we send BMP data to the collector"; + leaf peer-group { + type leafref { + path "../../../../../../../../../../../" + + "bgp:peer-groups/bgp:peer-group/" + + "bgp:name"; + } + description + "Peergroup to configure"; + } + leaf enabled { + type boolean; + default "true"; + description + "Enables routing monitoring messages + for the peer-group(s)."; + } + uses bmp:bmp-route-monitoring-peer-configuration; + } + } + container peers { + description + "Identification of peers + for which we send BMP data to the collector"; + list peer { + key "peer-id"; + description + "Identification of peers + for which we send BMP data to the collector"; + leaf peer-id { + type leafref { + path "../../../../../../../../../../../" + + "bgp:neighbors/bgp:neighbor/" + + "bgp:remote-address"; + } + description + "Peer to configure"; + } + leaf enabled { + type boolean; + default "true"; + description + "Enables routing monitoring messages + for the peer(s)."; + } + uses bmp:bmp-route-monitoring-peer-configuration; + } + } + } + } + } + } + + // Augment the BGP module to include data for network instances + + augment "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/bgp:bgp" { + description + "Augments the BGP container under control-plane-protocol. It + can be used to configure the global BGP instance, but also the + network-instances under the module ietf-network-instance"; + container bmp-data { + description + "Container for the configuration of BMP data + related to this BGP instance"; + container bmp-monitoring-stations { + presence + "If this container exists, the network instance must be + configured using this"; + description + "Container for the configuration of BMP data + related to this BGP instance"; + list bmp-monitoring-station { + key "id"; + description + "Container for the configuration of BMP data for this + monitoring-station related to this BGP instance"; + leaf id { + // TODO: We have not been able to configure + // the schema mount to recognize this yet. + // Until we solve it, we will keep it as it is. + //type leafref { + // path "/bmp:bmp/bmp:bmp-monitoring-stations/" + // + "bmp:bmp-monitoring-station/bmp:id"; + //} + type string; + description + "Identification string for the monitoring station"; + } + container bmp-route-monitoring { + presence "The presence of this container means the + Network instance it contains MUST + be configured using it"; + description + "Configuration of the data sources for + route-monitoring messages for this network-instance"; + leaf enabled { + type boolean; + default "true"; + description + "Enables routing monitoring + messages for the network instance."; + } + container adj-rib-in-pre { + description + "Configuration for the adj-rib-in pre-policy"; + reference + "RFC7854: BGP Monitoring Protocol (BMP), Section 2."; + uses bmp-ni-peer-ribs-filter; + } + container adj-rib-in-post { + description + "Configuration for the adj-rib-in post-policy"; + reference + "RFC7854: BGP Monitoring Protocol (BMP), Section 2."; + uses bmp-ni-peer-ribs-filter; + } + container local-rib { + description + "Configuration for the local-rib"; + reference + "RFC9069: Support for Local RIB in the BGP Monitoring + Protocol (BMP), Section 3."; + container address-families { + description + "List of address families to enable for + local-rib."; + list address-family { + key "address-family-id"; + description + "Address family to enable for local-rib"; + leaf address-family-id { + type identityref { + base bt:afi-safi-type; + } + description + "Address family id to enable for local-rib"; + } + uses bmp:bmp-route-monitoring-peer-configuration; + } + } + } + container adj-rib-out-pre { + description + "Configuration for the adj-rib-out pre-policy"; + uses bmp-ni-peer-ribs-filter; + reference + "RFC8671: Support for Adj-RIB-Out in the BGP + Monitoring Protocol (BMP) , Section 3."; + } + container adj-rib-out-post { + description + "Configuration for the adj-rib-out post-policy"; + uses bmp-ni-peer-ribs-filter; + reference + "RFC8671: Support for Adj-RIB-Out in the BGP + Monitoring Protocol (BMP) , Section 3."; + } + } + } + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bmp-tcp-dependencies@2025-01-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-bmp-tcp-dependencies@2025-01-02.yang new file mode 100644 index 000000000..1eff56e54 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-bmp-tcp-dependencies@2025-01-02.yang @@ -0,0 +1,122 @@ +module ietf-bmp-tcp-dependencies { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-bmp-tcp-dependencies"; + prefix bmp-tcp; + + import ietf-bmp { + prefix bmp; + } + + import ietf-tcp-common { + prefix tcpcmn; + reference + "I-D.ietf-netconf-tcp-client-server: YANG Groupings for TCP + Clients and TCP Servers."; + } + import ietf-key-chain { + prefix key-chain; + reference + "RFC 8177: YANG Key Chain."; + } + + organization + "IETF GROW Working Group"; + contact + "WG Web: + WG List: + + Author: Camilo Cardona + + + Author: Paolo Lucente + + + Author: Thomas Graf + + + Author: Benoit Claise + "; + description + "This module specifies a structure for BMP + (BGP Monitoring Protocol) configuration and monitoring. + + 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 + 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 9196 + (https://www.rfc-editor.org/info/rfc9196); see the RFC itself + for full legal notices."; + + revision 2025-01-02 { + description + "initial version"; + reference + "RFC YYYY: BMP YANG Module + RFC-EDITOR: please update YYYY with this RFC ID"; + } + augment "/bmp:bmp/bmp:bmp-monitoring-stations/" + + "bmp:bmp-monitoring-station/bmp:connection/bmp:tcp-options" { + description "Augment the tcp options of the BMP model"; + + uses tcpcmn:tcp-common-grouping; + container secure-session { + presence "Means the session should be secure. "; + description + "Container for describing how a particular BMP session + is to be secured."; + choice authentication { + mandatory true; + case ao { + leaf ao-keychain { + type key-chain:key-chain-ref; + description + "Reference to the key chain that will be used by + this model. Applicable for TCP-AO and TCP-MD5 + only"; + reference + "RFC 8177: YANG Key Chain."; + } + description + "Uses TCP-AO to secure the session. Parameters for + those are defined as a grouping in the TCP YANG + model."; + reference + "RFC 5925 - The TCP Authentication Option."; + } + case md5 { + leaf md5-keychain { + type key-chain:key-chain-ref; + description + "Reference to the key chain that will be used by + this model. Applicable for TCP-AO and TCP-MD5 + only"; + reference + "RFC 8177: YANG Key Chain."; + } + description + "Uses TCP-MD5 to secure the session. Parameters for + those are defined as a grouping in the TCP YANG + model."; + reference + "RFC 5925: The TCP Authentication Option."; + } + description + "Choice of TCP authentication."; + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bmp@2024-04-03.yang b/experimental/ietf-extracted-YANG-modules/ietf-bmp@2024-04-03.yang deleted file mode 100644 index f0a165613..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-bmp@2024-04-03.yang +++ /dev/null @@ -1,1120 +0,0 @@ -module ietf-bmp { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-bmp"; - prefix bmp; - - import ietf-yang-types { - prefix yang; - } - import ietf-routing { - prefix rt; - reference - "RFC 8349: A YANG Data Model for Routing Management - (NMDA Version)."; - } - import ietf-bgp { - prefix bgp; - reference - "I-D.draft-ietf-idr-bgp-model-17: - BGP YANG module for Service Provider Network."; - } - import ietf-inet-types { - prefix inet; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-bgp-types { - prefix bt; - reference - "RFC AAAA: BGP YANG module for Service Provider Network. - RFC-EDITOR: please update XXX with the RFC ID assigned - to I-D.ietf-idr-bgp-model"; - } - import ietf-netconf-acm { - prefix nacm; - reference - "RFC 8341: Network Configuration Access Control Model"; - } - import ietf-tcp-common { - prefix tcpcmn; - reference - "I-D.ietf-netconf-tcp-client-server: YANG Groupings for TCP - Clients and TCP Servers."; - } - import ietf-routing-policy { - prefix rt-pol; - reference - "RFC 9067: A YANG Data Model for Routing Policy"; - } - import ietf-key-chain { - prefix key-chain; - reference - "RFC 8177: YANG Key Chain."; - } - - organization - "IETF GROW Working Group"; - contact - "WG Web: - WG List: - - Author: Camilo Cardona - - - Author: Paolo Lucente - - - Author: Thomas Graf - - - Author: Benoit Claise - "; - description - "This module specifies a structure for BMP - (BGP Monitoring Protocol) configuration and monitoring. - - 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 - 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 9196 - (https://www.rfc-editor.org/info/rfc9196); see the RFC itself - for full legal notices."; - - revision 2024-04-03 { - description - "initial version"; - reference - "RFC YYYY: BMP YANG Module - RFC-EDITOR: please update YYYY with this RFC ID"; - } - - identity bmp-peer-types { - description - "Enum values for selecting peers"; - } - - identity bmp-peer-types-all-peers { - base bmp-peer-types; - description - "This identity selects all peer's RIBs. - When used, it act as a 'default' configuration."; - } - - identity bmp-ni-types { - description - "Enum values for selecting multiple Network instances - for configuration"; - } - - identity bmp-ni-types-all-ni { - base bmp-ni-types; - description - "The identify is an explicit way - of selecting all network instances."; - } - - identity bmp-ni-types-global-ni { - base bmp-ni-types; - description - "Configuring the global one"; - } - - identity bmp-ni-types-non-global-ni { - base bmp-ni-types; - description - "The identify is an explicit way - of selecting all network instances, except th e global-one."; - } - - grouping bmp-tcp-options { - description - "TCP options for the connection to the station"; - leaf maximum-segment-size { - type uint16; - description - "Maximum segment size for the TCP connections. - In the absence of this container, the system - would select the maximum segment size for this - connection"; - } - // Taken from the bgp yang module - leaf mtu-discovery { - type boolean; - default "true"; - description - "Turns path mtu discovery for the TCP sessions - on (true) or off (false)."; - reference - "RFC 1191: Path MTU discovery."; - } - uses tcpcmn:tcp-common-grouping; - // taken from the bgp yang module - leaf secure-session-enable { - type boolean; - default "false"; - description - "Does this session need to be secured?"; - } - container secure-session { - when "../secure-session-enable = 'true'"; - description - "Container for describing how a particular BMP session - is to be secured."; - choice authentication { - mandatory true; - case ao { - leaf ao-keychain { - type key-chain:key-chain-ref; - description - "Reference to the key chain that will be used by - this model. Applicable for TCP-AO and TCP-MD5 - only"; - reference - "RFC 8177: YANG Key Chain."; - } - description - "Uses TCP-AO to secure the session. Parameters for - those are defined as a grouping in the TCP YANG - model."; - reference - "RFC 5925 - The TCP Authentication Option."; - } - case md5 { - leaf md5-keychain { - type key-chain:key-chain-ref; - description - "Reference to the key chain that will be used by - this model. Applicable for TCP-AO and TCP-MD5 - only"; - reference - "RFC 8177: YANG Key Chain."; - } - description - "Uses TCP-MD5 to secure the session. Parameters for - those are defined as a grouping in the TCP YANG - model."; - reference - "RFC 5925: The TCP Authentication Option."; - } - description - "Choice of TCP authentication."; - } - } - } - - grouping bmp-ip-connection { - description - "common elements for defining connectivity - to a BMP monitoring station"; - choice passive-or-active { - mandatory true; - description - "Choice for active or passive connection as described - in section 3.2 of RFC 7854"; - case active { - description - "The device starts the connection to the monitoring - station"; - container active { - description - "The device starts the connection to - the monitoring station"; - leaf network-instance { - // TODO:This will not be supported for - // implementations not supporting schema-mount. - // Should just leave it as a string? - // type leafref { - // path "/ni:network-instances/ni:network-instance/" - // + "ni:name"; - // } - type string; - description - "If present, specifies the network instance - used to reach the monitoring station. - If not provided, the global network - instance is used."; - } - leaf station-address { - type inet:ip-address; - mandatory true; - description - "Destination IP address of monitoring station"; - } - leaf station-port { - type inet:port-number; - mandatory true; - description - "Destination port of the station"; - } - leaf local-address { - type inet:ip-address; - mandatory true; - description - "Local IP address to source active connection"; - } - leaf local-port { - type inet:port-number; - description - "Optional Local port for active connection"; - } - } - } - case passive { - description - "The device waits for the connection - in a local endpoint"; - container passive { - description - "The device waits for the connection - in a local endpoint"; - leaf network-instance { - // TODO:This will not be supported for - // implementations not supporting schema-mount. - // Should just leave it as a string? - // type leafref { - // path "/ni:network-instances/ni:network-instance/" - // + "ni:name"; - // } - type string; - description - "If present, specifies the network instance - used to reach the monitoring station. - If not provided, the global network - instance is used."; - } - leaf station-address { - type inet:ip-address; - mandatory true; - description - "address of the station"; - } - leaf station-port { - type inet:port-number; - description - "Optional value identifying the origin port of - the connection, if provided it MUST match"; - } - leaf local-address { - type inet:ip-address; - mandatory true; - description - "Local IP address to wait for the connection"; - } - leaf local-port { - type inet:port-number; - mandatory true; - description - "Local port to wait for the connection"; - } - } - } - } - } - - grouping bmp-source-configuration { - description - "Group containing some general characteristics for configuring - a BMP source"; - container filters { - description - "Includes containers specifying filters for deciding - which routes to export to the station"; - container policy-filter { - description - "Filter routes based on a policy. - The policy SHOULD NOT perform any action besides - filtering routes. - The policy SHOULD only contain accept and reject - routes, and the matching conditions SHOULD only - match prefix sets."; - leaf-list export-policy { - type leafref { - path "/rt-pol:routing-policy/" - + "rt-pol:policy-definitions/" - + "rt-pol:policy-definition/rt-pol:name"; - require-instance true; - } - ordered-by user; - description - "List of policy names in sequence used to select - routes to be exported to station."; - } - leaf default-export-policy { - type rt-pol:default-policy-type; - default "accept-route"; - description - "Explicitly set a default policy if no policy - definition in the export policy chain - is satisfied."; - } - } - } - } - grouping bmp-ni-peer-ribs-filter { - description - "Leaves for configuring RIBs where under the BGP - container."; - container address-families { - description - "container for lists of address-families"; - list address-family { - key "address-family-id"; - description - "List of address families. - The name of the address family, as defined - in the BGP model is used for keying."; - leaf address-family-id { - type identityref { - base bt:afi-safi-type; - } - description - "Address family id to configure"; - } - leaf enabled { - type boolean; - default "true"; - description - "Enables route monitoring messages - for the address family"; - } - container peers-configurations { - description - "Every peer under the configured network instance can be - at most configured by one of the next containers. If the - peer is not covered by any, then no BMP message should - include information from/to that peer. If the peer is - covered by more than one, then the priority is: - 1. peers - 2. peer-groups - 3. peer-type - 4. bmp-peer-types - - New child containers or new bmp-peer-types instances - SHOULD provide a way of unambiguislly selecting which - configuration container should be selected for a peer in - case mutiple matches. - "; - container bmp-peer-types { - description - "Generic identification of peers to configure."; - list bmp-peer-type { - key "peer-types-bmp"; - description - "Identification of peers - for which we send BMP data to the collector - using a peer type defined using a peer-types-bmp. - For instance, to create a default for all - peers use bmp-peer-types-all-peers"; - leaf peer-types-bmp { - type identityref { - base bmp-peer-types; - } - description - "Peer type to configure"; - } - leaf enabled { - type boolean; - default "true"; - description - "Enables routing monitoring messages - for the peer(s)."; - } - uses bmp-source-configuration; - } - } - container peer-types { - description - "Generic identification of peers to configure."; - list peer-type { - key "peer-type-id"; - description - "Identification of peers - for which we send BMP data to the collector - using BGP peer-type (e.g. internal, external) - "; - leaf peer-type-id { - type bt:peer-type; - description - "BGP Peer type to configure"; - } - } - leaf enabled { - type boolean; - default "true"; - description - "Enables routing monitoring messages - for the peer(s)."; - } - uses bmp-source-configuration; - } - container peer-groups { - description - "Identification of peer-groups - to configure"; - list peer-group { - key "peer-id"; - description - "Identification of peer-groups - for which we send BMP data to the collector"; - leaf peer-id { - type leafref { - path "../../../../../../../../../../../" - + "bgp:peer-groups/bgp:peer-group/" - + "bgp:name"; - } - description - "Peergroup to configure"; - } - leaf enabled { - type boolean; - default "true"; - description - "Enables routing monitoring messages - for the peer-group(s)."; - } - uses bmp-source-configuration; - } - } - container peers { - description - "Identification of peers - for which we send BMP data to the collector"; - list peer { - key "peer-id"; - description - "Identification of peers - for which we send BMP data to the collector"; - leaf peer-id { - type leafref { - path "../../../../../../../../../../../" - + "bgp:neighbors/bgp:neighbor/" - + "bgp:remote-address"; - } - description - "Peer to configure"; - } - leaf enabled { - type boolean; - default "true"; - description - "Enables routing monitoring messages - for the peer(s)."; - } - uses bmp-source-configuration; - } - } - } - } - } - } - - grouping bmp-peer-ribs-filter { - description - "Leaves for configuring RIBs - under the main BMP container"; - container address-families { - description - "container for lists of address-families"; - list address-family { - key "address-family-id"; - description - "List of address families. - The name of the address family, as defined - in the BGP model is used for keying."; - leaf address-family-id { - type identityref { - base bt:afi-safi-type; - } - description - "Address family id to configure"; - } - leaf enabled { - type boolean; - default "true"; - description - "Enables route monitoring messages - for the address family"; - } - container peers-configurations { - description - "Every peer under this BGP instance - can be at most configured by one of the next containers. - If the peer is not covered by any, then no BMP - message should include information from/to that peer. - If the peer is covered by more than one, then the - priority is: - 1. peer - 2. peer-groups - 3. peer-type - 4. bmp-peer-types - - New child containers or new bmp-peer-types instances - SHOULD provide a way of unambiguislly selecting which - configuration container should be selected for a peer in - case mutiple matches. - "; - container peers { - description - "Generic identification of peers to configure."; - list peer { - key "peer-id-str"; - description - "Identification of the peer. It is up to the - implementation to define what to do if no peer - matches this key."; - leaf peer-id-str { - type string; - description - "Peer to configure"; - } - leaf enabled { - type boolean; - default "true"; - description - "Enables routing monitoring messages - for the peer(s)."; - } - uses bmp-source-configuration; - } - } - container peer-groups { - description - "Generic identification of peers to configure."; - list peer-group { - key "peer-group-id-str"; - description - "Identification of the peer-group. It is up to the - implementation to define what to do if no peer-group - with this name exists."; - leaf peer-group-id-str { - type string; - description - "Peer-group to configure"; - } - leaf enabled { - type boolean; - default "true"; - description - "Enables routing monitoring messages - for the peer(s)."; - } - uses bmp-source-configuration; - } - } - container bmp-peer-types { - description - "Generic identification of peers to configure."; - list bmp-peer-type { - key "peer-types-bmp"; - description - "Identification of peers - for which we send BMP data to the collector - using a peer type defined using a peer-types-bmp. - For instance, to create a default for all - peers use bmp-peer-types-all-peers"; - leaf peer-types-bmp { - type identityref { - base bmp-peer-types; - } - description - "Peer type to configure"; - } - leaf enabled { - type boolean; - default "true"; - description - "Enables routing monitoring messages - for the peer(s)."; - } - uses bmp-source-configuration; - } - } - container peer-types { - description - "Generic identification of peers to configure."; - list peer-type { - key "peer-type-id"; - description - "Identification of peers - for which we send BMP data to the collector - using BGP peer-type (e.g. internal, external) - "; - leaf peer-type-id { - type bt:peer-type; - description - "BGP peer-type to configure"; - } - } - leaf enabled { - type boolean; - default "true"; - description - "Enables routing monitoring messages - for the peer(s)."; - } - uses bmp-source-configuration; - } - } - } - } - } - - grouping bmp-route-monitoring-sources { - description - "Route monitoring sources"; - reference - "RFC7854: BGP Monitoring Protocol, Section 5."; - container network-instance-configuration { - description - "This container offers various options for configuring BMP - route-monitoring messages for each network instance. - Additionally, network instances can be configured under the - bmp-data container that this module includes under the - /rt:routing/rt:control-plane-protocols/ - rt:control-plane-protocol/bgp:bgp container. - - This container also holds a way of configuring the network - instance directly. This is redundant , and unfavoured to the - configuration under the bgp container, but it might be used - for implementation not yet supporting schema-mount since - that is required for adding control-plane infromation using - the ietf-network-instance module. - - This container also provides a way of configuring - network-instances by 'bmp-ni-types'. It currently holds two - instances: bmp-ni-types-all-ni to configure all network - instances (serving as a default), and - bmp-ni-types-non-global-ni that configures all non-global - network instances: i.e. providing a default for all network - instances under the ietf-network-instance module. - - A single configuration container Network MUST - be applied to a network instance. If not containe matches a - network instance, the BMP route monitoring messages SHOULD - be disabled for that network instance. If more than one - container matches a network-instance the order of - preference is: - 1. The configuration under the BGP container - 2. The Network-instance under this container - 3. bmp-ni-types: bmp-ni-types-non-global-ni (if it matches). - 4. bmp-ni-types: bmp-ni-types-all-ni - - New identities under bmp-ni-types or augmentations of this - container in the future SHOULD provide a clear way of - selecting the configuration container for a network-instance - without ambiguity."; - list network-instance { - key "network-instance-id"; - description - "Network instance to monitory using BMP."; - leaf network-instance-id { - type union { - type identityref { - base bmp-ni-types; - } - // TODO:This will not be supported for - // implementations not supporting schema-mount. - // Should just leave it as a string to be useful without - // schema-mount?? - //type leafref { - // path "/ni:network-instances/ni:network-instance/" - // + "ni:name"; - //} - type string; - } - description - "Identification of a network-instance. - Network instances can be identified - directly by their path or use an identity to - identify one or a group of them - (e.g. bmp-ni-types-all-ni for all of them)"; - } - leaf enabled { - type boolean; - default "true"; - description - "Enables routing monitoring - messages for the network instance."; - } - container adj-rib-in-pre { - description - "Configuration for the adj-rib-in pre-policy"; - reference - "RFC7854: BGP Monitoring Protocol (BMP), Section 2."; - uses bmp-peer-ribs-filter; - } - container adj-rib-in-post { - description - "Configuration for the adj-rib-in post-policy"; - reference - "RFC7854: BGP Monitoring Protocol (BMP), Section 2."; - uses bmp-peer-ribs-filter; - } - container local-rib { - description - "Configuration for the local-rib"; - reference - "RFC9069: Support for Local RIB in the BGP Monitoring - Protocol (BMP), Section 3."; - container address-families { - description - "List of address families to enable for - local-rib."; - list address-family { - key "address-family-id"; - description - "Address family to enable for local-rib"; - leaf address-family-id { - type identityref { - base bt:afi-safi-type; - } - description - "Address family id to enable for local-rib"; - } - uses bmp-source-configuration; - } - } - } - container adj-rib-out-pre { - description - "Configuration for the adj-rib-out pre-policy"; - uses bmp-peer-ribs-filter; - reference - "RFC8671: Support for Adj-RIB-Out in the BGP Monitoring - Protocol (BMP) , Section 3."; - } - container adj-rib-out-post { - description - "Configuration for the adj-rib-out post-policy"; - uses bmp-peer-ribs-filter; - reference - "RFC8671: Support for Adj-RIB-Out in the BGP Monitoring - Protocol (BMP) , Section 3."; - } - } - } - } - - container bmp { - description - "Main level for BMP configuration "; - container bmp-monitoring-stations { - description - "Container for the list of BMP monitoring stations"; - list bmp-monitoring-station { - key "id"; - description - "Configuration for a BMP monitoring station."; - leaf id { - type string; - description - "Identification string for the monitoring station"; - } - // Connection, missing tcp tuning params - // like keep-alives, segment sizes, etc. - container connection { - description - "Connection details for the monitoring station"; - uses bmp-ip-connection; - container tcp-options { - description - "TCP options for the connection to the monitoring - station"; - uses bmp-tcp-options; - } - leaf initial-delay { - type uint32; - units "seconds"; - default "0"; - description - "Initial delay of the connection to the station"; - } - container backoff { - description - "Configures the backoff strategy after a connection - retry"; - reference - "RFC7854 Section 3.2"; - choice backoff-options { - description - "Options for backoff strategies"; - reference - "RFC7854 Section 3.2"; - case simple-exponential { - description - "Simple exponential backoff with limits."; - container simple-exponential { - description - "Simple exponential backoff with limits. - Starts with the initial backoff and doubles - the backoff of every retry until reaching the - maximum backoff"; - leaf initial-backoff { - type uint32; - units "seconds"; - default "30"; - description - "Initial backoff time"; - } - leaf maximum-backoff { - type uint32; - units "seconds"; - default "720"; - description - "Maximum backoff time"; - } - } - } - } - } - } - container bmp-data { - description - "Configuration of BMP data"; - leaf initiation-message { - type string; - description - "User defined message to append to the - initiation message"; - reference - "RFC7854: BGP Monitoring Protocol, - Section 4.3 and 4.4"; - } - container bmp-statistics-report { - presence "Enables the BMP statistics report"; - description - "Configuration of the statistics report"; - reference - "RFC7854: BGP Monitoring Protocol, - Section 4.8"; - leaf statistics-interval { - type uint32; - units "seconds"; - mandatory true; - description - "Interval for statistic report message."; - } - } - container bmp-route-monitoring { - description - "Configuration of the data sources for - route-monitoring messages"; - uses bmp-route-monitoring-sources; - } - } - container session-stats { - config false; - description - "stats and operational values for the station"; - leaf discontinuity-time { - type yang:date-and-time; - mandatory true; - description - "The time on the most recent occasion at which any - one or more of this station's counters suffered a - discontinuity. If no such discontinuities have - occurred since the last re-initialization of the - local management subsystem, then this node contains - the time the local management subsystem - re-initialized itself."; - } - leaf established-session { - type boolean; - description - "Value indicating if the session is currently - established"; - } - leaf total-route-monitoring-messages { - type uint64; - description - "Number of route-monitoring messages sent since last - successful connection"; - } - leaf total-statistics-messages { - type uint64; - description - "Number of statistics messages sent since last - successful connection"; - } - leaf total-peer-down-messages { - type uint64; - description - "Number of peer-down messages sent since last - successful connection"; - } - leaf total-peer-up-messages { - type uint64; - description - "Number of peer-up messages sent since last successful - connection"; - } - leaf total-initiation-messages { - type uint64; - description - "Number of initiation messages sent since last - successful connection"; - } - leaf total-route-mirroring-messages { - type uint64; - description - "Number of route-mirroring messages sent since last - successful connection"; - } - } - container actions { - nacm:default-deny-all; - description - "Container with the actions for the BMP operation"; - action session-reset { - description - "Resets the session for a station."; - output { - choice outcome { - description - "Output of the reset operation. Either a success or - failure. For the latter, the reason for the - error is provided."; - leaf success { - type empty; - description - "Reset successful"; - } - leaf failure { - type string; - description - "Reset could not be performed. - Reason is included in the field"; - } - } - } - } - } - } - } - } - - // Augment the BGP module to include data for network instances - - augment "/rt:routing/rt:control-plane-protocols/" - + "rt:control-plane-protocol/bgp:bgp" { - description - "Augments the BGP container under control-plane-protocol. It - can be used to configure the global BGP instance, but also the - network-instances under the module ietf-network-instance"; - container bmp-data { - description - "Container for the configuration of BMP data - related to this BGP instance"; - container bmp-monitoring-stations { - presence - "If this container exists, the network instance must be - configured using this"; - description - "Container for the configuration of BMP data - related to this BGP instance"; - list bmp-monitoring-station { - key "id"; - description - "Container for the configuration of BMP data for this - monitoring-station related to this BGP instance"; - leaf id { - // TODO: We have not been able to configure - // the schema mount to recognize this yet. - // Until we solve it, we will keep it as - //type leafref { - // path "/bmp:bmp/bmp:bmp-monitoring-stations/" - // + "bmp:bmp-monitoring-station/bmp:id"; - //} - type string; - description - "Identification string for the monitoring station"; - } - container bmp-route-monitoring { - presence "The presence of this container means the - Network instance it contains MUST - be configured using it"; - description - "Configuration of the data sources for - route-monitoring messages for this network-instance"; - leaf enabled { - type boolean; - default "true"; - description - "Enables routing monitoring - messages for the network instance."; - } - container adj-rib-in-pre { - description - "Configuration for the adj-rib-in pre-policy"; - reference - "RFC7854: BGP Monitoring Protocol (BMP), Section 2."; - uses bmp-ni-peer-ribs-filter; - } - container adj-rib-in-post { - description - "Configuration for the adj-rib-in post-policy"; - reference - "RFC7854: BGP Monitoring Protocol (BMP), Section 2."; - uses bmp-ni-peer-ribs-filter; - } - container local-rib { - description - "Configuration for the local-rib"; - reference - "RFC9069: Support for Local RIB in the BGP Monitoring - Protocol (BMP), Section 3."; - container address-families { - description - "List of address families to enable for - local-rib."; - list address-family { - key "address-family-id"; - description - "Address family to enable for local-rib"; - leaf address-family-id { - type identityref { - base bt:afi-safi-type; - } - description - "Address family id to enable for local-rib"; - } - uses bmp-source-configuration; - } - } - } - container adj-rib-out-pre { - description - "Configuration for the adj-rib-out pre-policy"; - uses bmp-ni-peer-ribs-filter; - reference - "RFC8671: Support for Adj-RIB-Out in the BGP - Monitoring Protocol (BMP) , Section 3."; - } - container adj-rib-out-post { - description - "Configuration for the adj-rib-out post-policy"; - uses bmp-ni-peer-ribs-filter; - reference - "RFC8671: Support for Adj-RIB-Out in the BGP - Monitoring Protocol (BMP) , Section 3."; - } - } - } - } - } - } -} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bmp@2025-01-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-bmp@2025-01-02.yang new file mode 100644 index 000000000..d77d85052 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-bmp@2025-01-02.yang @@ -0,0 +1,1099 @@ +module ietf-bmp { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-bmp"; + prefix bmp; + + import ietf-yang-types { + prefix yang; + } + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-bgp-types { + prefix bt; + description + "The bgp types is a model that contains just types. + Vendors can include it without implications."; + reference + "RFC AAAA: BGP YANG module for Service Provider Network. + RFC-EDITOR: please update XXX with the RFC ID assigned + to I-D.ietf-idr-bgp-model"; + } + import ietf-netconf-acm { + prefix nacm; + reference + "RFC 8341: Network Configuration Access Control Model"; + } + import ietf-routing-policy { + prefix rt-pol; + description + "This module is only needed if the feature + bmp-filter-based-on-route-policy is set"; + reference + "RFC 9067: A YANG Data Model for Routing Policy"; + } + import ietf-network-instance { + prefix ni; + reference + "RFC 8529: YANG Data Model for Network Instances"; + } + import ietf-interfaces { + prefix if; + reference + "RFC 8343: A YANG Data Model for Interface Management"; + } + + organization + "IETF GROW Working Group"; + contact + "WG Web: + WG List: + + Author: Camilo Cardona + + + Author: Paolo Lucente + + + Author: Thomas Graf + + + Author: Benoit Claise + + + Author: Dhananjay Patki + + + Author: Prasad S. Narasimha + "; + + description + "This module defines a YANG data model for configuration and + monitoring of the BGP Monitoring Protocol (BMP). + + 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 + 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 9196 + (https://www.rfc-editor.org/info/rfc9196); see the RFC itself + for full legal notices."; + + revision 2025-01-02 { + description + "initial version"; + reference + "RFC YYYY: BMP YANG Module + RFC-EDITOR: please update YYYY with this RFC ID"; + } + + identity bmp-peer-selectors { + description + "Enum values for selecting peers"; + } + + identity bmp-peer-selectors-all-peers { + base bmp-peer-selectors; + description + "This identity selects all peers under the RIB. + When used, it acts as a default configuration."; + } + + identity bmp-ni-types { + description + "Enum values for selecting one or more network instances for + configuration"; + } + + identity bmp-ni-types-all-ni { + base bmp-ni-types; + description + "This identity is an explicit way + to select all network instances."; + } + + identity bmp-ni-types-global-ni { + base bmp-ni-types; + description + "Selecting the global or main network instance"; + } + + identity bmp-ni-types-non-global-ni { + base bmp-ni-types; + description + "This identity is an explicit way + to select all network instances except the global one."; + } + + feature bmp-filter-based-on-route-policy { + description + "This feature means that the device + is capable of filtering prefixes in BMP monitoring sessions"; + } + + grouping bmp-ip-connection { + description + "Common parameters for establishing connectivity + to a BMP monitoring station."; + choice passive-or-active { + mandatory true; + description + "Selects whether the device initiates + (active) or waits for (passive) + the connection to the monitoring station, + as described in RFC 7854 Section 3.2."; + case active { + description + "Device initiates the connection to + the monitoring station."; + container active { + description + "The device starts the connection to + the monitoring station"; + leaf network-instance { + type leafref { + path "/ni:network-instances/ni:network-instance/" + + "ni:name"; + } + description + "Network instance used to reach the monitoring + station. + Defaults to the global network instance + if not specified."; + } + leaf station-address { + type inet:ip-address; + mandatory true; + description + "IP address of the monitoring station."; + } + leaf station-port { + type inet:port-number; + mandatory true; + description + "Port number of the monitoring station."; + } + choice local-endpoint { + mandatory true; + description "Local endpoint for the connection."; + case monitored-router-address { + leaf monitored-router-address{ + type inet:ip-address; + description + "Local IP address to source the connection."; + } + } + case monitored-router-interface { + leaf monitored-router-interface { + type leafref { + path "/if:interfaces/if:interface/if:name"; + } + description + "Local interface to source the connection."; + } + } + } + leaf monitored-router-port { + type inet:port-number; + description + "Optional local port for the active connection."; + } + } + } + case passive { + description + "Device waits for incoming connection at a local + endpoint."; + container passive { + description + "Parameters for passively accepting + a connection from the monitoring station."; + leaf network-instance { + type leafref { + path "/ni:network-instances/ni:network-instance/" + + "ni:name"; + } + description + "Network instance used for the passive connection. + Defaults to the global network instance if not + specified."; + } + leaf station-address { + type inet:ip-address; + mandatory true; + description + "IP address of the monitoring station."; + } + leaf station-port { + type inet:port-number; + description + "Optional value identifying the origin port of the + connection. If provided, it MUST match the receiving + connection."; + } + choice local-endpoint { + mandatory true; + description "Local endpoint for the connection."; + case monitored-router-address { + leaf monitored-router-address { + type inet:ip-address; + description + "Local IP address to accept the connection."; + } + } + case monitored-router-interface { + leaf monitored-router-interface { + type leafref { + path "/if:interfaces/if:interface/if:name"; + } + description + "Local interface to accept the connection."; + } + } + } + leaf monitored-router-port { + type inet:port-number; + mandatory true; + description + "Local port to accept the connection."; + } + } + } + } + leaf dscp { + type inet:dscp; + description + "DSCP value for marking traffic to the monitoring station."; + reference + "RFC 6991: Common YANG Data Types"; + } + } + + grouping bmp-route-monitoring-peer-configuration { + description + "General configuration options for route monitoring + of a peer."; + container filters { + description + "Filters for selecting which routes to export to + the monitoring station."; + container policy-filter { + if-feature "bmp-filter-based-on-route-policy"; + description + "Filter routes using a routing policy from the + rt-pol module. + The policy should only contain accept/reject actions + and match prefix sets."; + leaf-list export-policy { + type leafref { + path "/rt-pol:routing-policy/" + + "rt-pol:policy-definitions/" + + "rt-pol:policy-definition/rt-pol:name"; + require-instance true; + } + ordered-by user; + description + "Ordered list of policy names used to select + routes for export."; + } + leaf default-export-policy { + type rt-pol:default-policy-type; + default "accept-route"; + description + "Default action if no export policy matches."; + } + } + } + } + + grouping bmp-peer-ribs-filter { + description + "Configuration containers for RIBs under the main + BMP container."; + container address-families { + description + "List of address families for route monitoring."; + list address-family { + key "address-family-id"; + description + "Address family, as defined in the BGP model."; + leaf address-family-id { + type identityref { + base bt:afi-safi-type; + } + description + "Address family identifier."; + } + leaf enabled { + type boolean; + default "true"; + description + "Enables route monitoring messages for this address + family."; + } + container peers-configurations { + description + "Each peer under this BGP instance can be configured by + at most one of the following containers. + If the peer is not covered by any, + then no BMP route monitoring message + should include information from/to that peer. + If the peer is covered by more than one, then the + priority is: + 1. peer + 2. peer-groups + 3. peer-type + 4. bmp-peer-selectors + + New child containers or new bmp-peer-selectors + instances SHOULD provide a way of unambiguously + selecting which configuration container should + be selected + for a peer in case of multiple matches. + + Note that if the implementation supports module + ietf-bmp-bgp-dependencies, the peer configurations + under the BGP container have priority over the + configurations under this container."; + container peers { + description + "Configuration for individual peers."; + list peer { + key "peer-id"; + description + "Peer identifier."; + leaf peer-id { + type string; + description + "Identifier of the peer."; + } + leaf enabled { + type boolean; + default "true"; + description + "Enables route monitoring messages for this peer."; + } + uses bmp-route-monitoring-peer-configuration; + } + } + container peer-groups { + description + "Configuration for peer groups."; + list peer-group { + key "peer-group-id"; + description + "Peer group identifier."; + leaf peer-group-id { + type string; + description + "Identifier of the peer group."; + } + leaf enabled { + type boolean; + default "true"; + description + "Enables route monitoring messages for + this peer group."; + } + uses bmp-route-monitoring-peer-configuration; + } + } + container bmp-peer-selectors { + description + "Configuration for peers selected by BMP peer + selectors."; + list bmp-peer-selector { + key "bmp-selector-id"; + description + "Identification of peers + for which we send BMP data to the collector + using a peer type defined using a peer-types-bmp. + For instance, to create a default for all + peers use bmp-peer-selectors-all-peers"; + leaf bmp-selector-id { + type identityref { + base bmp-peer-selectors; + } + description + "BMP peer selector identity."; + } + leaf enabled { + type boolean; + default "true"; + description + "Enables routing monitoring messages + for the peer(s)."; + } + uses bmp-route-monitoring-peer-configuration; + } + } + container bgp-peer-types { + description + "Generic identification of peers to configure."; + list bgp-peer-type { + key "bgp-peer-type-id"; + description + "Identification of peers + for which we send BMP data to the collector + using BGP peer-type (e.g. internal, external) + "; + leaf bgp-peer-type-id { + type bt:peer-type; + description + "BGP peer type."; + } + } + leaf enabled { + type boolean; + default "true"; + description + "Enables routing monitoring messages + for the peer(s)."; + } + uses bmp-route-monitoring-peer-configuration; + } + } + } + } + } + + grouping generic-network-instance-configuration { + description + "Generic configuration of a network instance."; + leaf enabled { + type boolean; + default "true"; + description + "Enables route monitoring + messages for the network instance."; + } + container adj-rib-in-pre { + description + "Configuration for the adj-rib-in pre-policy."; + reference + "RFC7854: BGP Monitoring Protocol (BMP), Section 2."; + uses bmp-peer-ribs-filter; + } + container adj-rib-in-post { + description + "Configuration for the adj-rib-in post-policy"; + reference + "RFC7854: BGP Monitoring Protocol (BMP), Section 2."; + uses bmp-peer-ribs-filter; + } + container local-rib { + description + "Configuration for the local-rib."; + reference + "RFC9069: Support for Local RIB in the BGP Monitoring + Protocol (BMP), Section 3."; + container address-families { + description + "List of address families to enable for local-rib."; + list address-family { + key "address-family-id"; + description + "Address family to enable for local-rib"; + leaf address-family-id { + type identityref { + base bt:afi-safi-type; + } + description + "Address family id to enable for local-rib"; + } + uses bmp-route-monitoring-peer-configuration; + } + } + } + container adj-rib-out-pre { + description + "Configuration for the adj-rib-out pre-policy"; + uses bmp-peer-ribs-filter; + reference + "RFC8671: Support for Adj-RIB-Out in the BGP Monitoring + Protocol (BMP) , Section 3."; + } + container adj-rib-out-post { + description + "Configuration for the adj-rib-out post-policy"; + uses bmp-peer-ribs-filter; + reference + "RFC8671: Support for Adj-RIB-Out in the BGP Monitoring + Protocol (BMP) , Section 3."; + } + } + + grouping bmp-route-monitoring-sources { + description + "Configuration of route monitoring sources."; + reference + "RFC7854: BGP Monitoring Protocol, Section 5."; + container network-instance-configuration { + description + "This container offers options for configuring BMP + route-monitoring messages for each network instance either + selecting it through its name or through a + network-instance-selectors. + + Network-instance-selectors are instances of bmp-ni-types that + select one or more network instances for configuration. For + instance, bmp-ni-types-all-ni to configure all network + instances (serving as a default). + + Network-instance can be at most configured by one of the + containers. If the network instance is not covered by any, + then no BMP route monitoring message should include that + network instance. If more than one container matches + the network instance, the priority for selecting the + container to use for configuration is: + + 1. The configuration under the BGP container, if supported + by the implementation (see + ietf-bmp-bgp-dependencies.yang) + 2. For any other named network instance, the configuration + under the element listed with its name under the + network-instance container. + 3. The configuration under network-instance-groups of type + bmp-ni-types-non-global-ni if existing and not the global + network instance. + 4. the configuration under network-instance-groups under the + element bmp-ni-types-all-ni. + + If the implementation has a name for the global network + instance (e.g. 'main') it can be configure directly under + the network-instances container. + + New identities under bmp-ni-types or augmentations of this + container in the future SHOULD provide a clear way of + selecting the configuration container for a network-instance + without ambiguity."; + + container network-instances { + description + "Configuration for specific network instances"; + + list network-instance { + key "network-instance-id"; + description + "Network instance to monitor using BMP."; + leaf network-instance-id { + type leafref { + path "/ni:network-instances/ni:network-instance/" + + "ni:name"; + } + description + "Name of the network instance."; + } + uses generic-network-instance-configuration; + } + } + + container network-instance-selectors { + description "Configuration of network instances. Uses + bmp-ni-types to identify one or a group of + network instances to configure."; + list network-instance-selector { + key "network-instance-selector-id"; + description + "Network instance(s) to monitor using BMP."; + leaf network-instance-selector-id { + type identityref { + base bmp-ni-types; + } + description + "Configures one or multiple network instances selected + based on a bmp-ni-types identity (e.g. + bmp-ni-types-all-ni for all of them)."; + } + uses generic-network-instance-configuration; + + } + } + } + } + + container bmp { + description + "Top-level container for BMP configuration."; + container bmp-monitoring-stations { + description + "List of BMP monitoring stations."; + list bmp-monitoring-station { + key "id"; + description + "Configuration for a BMP monitoring station."; + leaf id { + type string; + description + "Unique identifier for the monitoring station."; + } + leaf description { + type string; + description + "Description of the BMP monitoring station."; + } + container connection { + description + "Connection parameters for the monitoring station."; + uses bmp-ip-connection; + container tcp-options { + description + "TCP options for the connection to the monitoring + station."; + leaf maximum-segment-size { + type uint16; + description + "Maximum segment size for the TCP connections. + In the absence of this container, the system + will select the maximum segment size for this + connection."; + } + // Taken from the bgp yang module + leaf mtu-discovery { + type boolean; + default "true"; + description + "Enables path MTU discovery for the TCP sessions + (true) or disables it (false)."; + reference + "RFC 1191: Path MTU discovery."; + } + } + leaf initial-delay { + type uint32; + units "seconds"; + default "0"; + description + "Initial delay before connecting to the monitoring + station. + Useful for allowing BGP sessions to stabilize + before starting BMP."; + } + container backoff { + description + "Configures the backoff strategy after a connection + retry"; + reference + "RFC7854 Section 3.2"; + choice backoff-options { + description + "Options for backoff strategies"; + reference + "RFC7854 Section 3.2"; + case simple-exponential { + description + "Simple exponential backoff with limits."; + container simple-exponential { + description + "Simple exponential backoff with limits. + Starts with the initial backoff and doubles + the backoff after every retry until reaching the + maximum backoff."; + leaf initial-backoff { + type uint32; + units "seconds"; + default "30"; + description + "Initial backoff time"; + } + leaf maximum-backoff { + type uint32; + units "seconds"; + default "720"; + description + "Maximum backoff time"; + } + } + } + } + } + } + container bmp-data { + description + "Configuration of BMP data sent to the monitoring + station."; + leaf initiation-message { + type string; + description + "User-defined message to append to the + initiation message."; + reference + "RFC7854: BGP Monitoring Protocol, + Section 4.3 and 4.4"; + } + container bmp-statistics-report { + presence "Enable BMP statistics report."; + description + "Configuration for periodic statistics reports."; + reference + "RFC7854: BGP Monitoring Protocol, + Section 4.8"; + leaf statistics-interval { + type uint32; + units "seconds"; + mandatory true; + description + "Interval between statistics report messages."; + } + } + container bmp-route-monitoring { + description + "Configuration of the data sources for + route-monitoring messages"; + uses bmp-route-monitoring-sources; + } + container bmp-route-mirroring { + presence + "Enable BMP route mirroring to the monitoring + station."; + description + "Configuration for route mirroring to the + monitoring station."; + } + } + + container session-stats { + config false; + description + "Operational statistics for the monitoring station. + Counters are reset after each successful + connection or reset."; + leaf discontinuity-time { + type yang:date-and-time; + mandatory true; + description + "The time on the most recent occasion at which any + one or more of this station's counters suffered a + discontinuity. If no such discontinuities have + occurred since the last re-initialization of the + local management subsystem, then this node contains + the time the local management subsystem + re-initialized itself."; + } + leaf established-session { + type boolean; + description + "Indicates if the session is currently + established."; + } + leaf total-route-monitoring-messages { + type uint64; + description + "Number of route-monitoring messages sent."; + } + leaf total-statistics-messages { + type uint64; + description + "Number of statistics messages sent."; + } + leaf total-peer-down-messages { + type uint64; + description + "Number of peer-down messages sent."; + } + leaf total-peer-up-messages { + type uint64; + description + "Number of peer-up messages sent."; + } + leaf total-initiation-messages { + type uint64; + description + "Number of initiation messages sent"; + } + leaf total-route-mirroring-messages { + type uint64; + description + "Number of route-mirroring messages sent."; + } + leaf total-termination-messages { + type uint64; + description + "Number of termination messages sent."; + } + + grouping bmp-af-stats-with-peers { + description + "Generic statistics for an address family that can be + disaggregated by peers"; + + container peers-stats { + description + "Peer stats"; + list peer { + key "peer-id"; + + description + "List of peers"; + + leaf peer-id { + type string; + description + "Peer id"; + } + + leaf enabled { + type boolean; + description + "Indicates if route monitoring messages are + currently enabled for the peer under this + network instance, address family, and RIB."; + } + + leaf + total-route-monitoring-updated-prefixes-per-peer { + type uint64; + description + "Number of prefixes updated for this peer."; + } + leaf + total-route-monitoring-withdraw-prefixes-per-peer { + type uint64; + description + "Number of prefixes withdrawn for this peer."; + } + + } + } + } + + grouping bmp-af-stats { + + description + "Group for statistics for an address family."; + leaf enabled { + type boolean; + description + "Indicates if any route monitoring messages + are currently enabled for the address family + within the RIB."; + } + leaf total-route-monitoring-updated-prefixes-per-af { + type uint64; + description + "Number of prefixes updated for this address + family."; + } + leaf total-route-monitoring-withdraw-prefixes-per-af { + type uint64; + description + "Number of prefixes withdrawn for this address + family."; + } + } + + grouping bmp-rib-with-peers-stats { + description + "Generic statistics for a RIB with peers."; + container address-families { + description + "List of address families to list stats."; + list address-family { + key "address-family-id"; + description + "Address family to enable for local-rib"; + leaf address-family-id { + type identityref { + base bt:afi-safi-type; + } + + description + "Address family ID for local-rib."; + } + uses bmp-af-stats; + uses bmp-af-stats-with-peers; + } + } + + } + + grouping bmp-rib-stats { + description + "Generic statistics per RIB."; + leaf enabled { + type boolean; + description + "Indicates if any Route Monitoring messages are + currently enabled for the RIB."; + } + leaf total-route-mirroring-messages-per-rib { + type uint64; + description + "Number of route-mirroring messages sent for + this RIB."; + } + + } + + container route-monitoring-stats { + description + "Statistics of route monitoring messages disaggregated + by RIB and peers where applicable."; + container network-instances-stats { + description + "Stats per network-instance"; + list network-instance { + key 'network-instance-name'; + + description + "Network instance stats list"; + + leaf network-instance-name { + type leafref { + path "/ni:network-instances/ni:network-instance/" + + "ni:name"; + } + description + "Name of the network instance."; + } + leaf enabled { + type boolean; + description + "Indicates if route monitoring messages are + currently enabled for the network instance."; + } + + leaf total-route-mirroring-messages-per-ni { + type uint64; + description + "Number of route-mirroring messages sent for + this network instance."; + } + + container ribs-stats { + description + "Statistics for the different RIBs."; + container adj-rib-in-pre { + description + "Statistics for adj-rib-in-pre."; + uses bmp-rib-stats; + uses bmp-rib-with-peers-stats; + + } + + container adj-rib-in-post { + description + "Statistics for adj-rib-in-post"; + uses bmp-rib-stats; + uses bmp-rib-with-peers-stats; + + } + + container local-rib { + description + "Statistics for local-rib"; + uses bmp-rib-stats; + container address-families { + description + "List of address families to for stats."; + list address-family { + key "address-family-id"; + description + "Address family to enable for local-rib"; + leaf address-family-id { + type identityref { + base bt:afi-safi-type; + } + description + "Address family ID for local-rib"; + } + uses bmp-af-stats; + } + } + + } + + container adj-rib-out-pre { + description + "Statistics for adj-rib-out-pre"; + uses bmp-rib-stats; + uses bmp-rib-with-peers-stats; + + } + + container adj-rib-out-post { + description + "Statistics for adj-rib-out-post"; + uses bmp-rib-stats; + uses bmp-rib-with-peers-stats; + + } + + } + } + + } + + } + } + container actions { + nacm:default-deny-all; + description + "Container with actions for BMP operation."; + action session-reset { + description + "Resets the session for a station."; + output { + choice outcome { + description + "Output of the reset operation. Either a success or + failure. For the latter, the reason for the + error is provided."; + leaf success { + type empty; + description + "Reset successful."; + } + leaf failure { + type string; + description + "Reset could not be performed. + The reason is included in the field."; + } + } + } + } + action session-counter-reset { + description + "Resets the counters of a BMP monitoring station."; + output { + choice outcome { + description + "Output of the reset operation. Either a success or + failure. For the latter, the reason for the + error is provided."; + leaf success { + type empty; + description + "Counter reset successful."; + } + leaf failure { + type string; + description + "Reset could not be performed. + The reason is included in the field."; + } + } + } + } + } + } + } + + } + +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-distributed-notif@2024-04-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-distributed-notif@2025-04-12.yang similarity index 61% rename from experimental/ietf-extracted-YANG-modules/ietf-distributed-notif@2024-04-21.yang rename to experimental/ietf-extracted-YANG-modules/ietf-distributed-notif@2025-04-12.yang index 2f93e2ddd..bc101653b 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-distributed-notif@2024-04-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-distributed-notif@2025-04-12.yang @@ -1,7 +1,6 @@ module ietf-distributed-notif { yang-version 1.1; - namespace - "urn:ietf:params:xml:ns:yang:ietf-distributed-notif"; + namespace "urn:ietf:params:xml:ns:yang:ietf-distributed-notif"; prefix dn; import ietf-subscribed-notifications { @@ -14,7 +13,8 @@ module ietf-distributed-notif { Updates"; } - organization "IETF NETCONF (Network Configuration) Working Group"; + organization + "IETF NETCONF (Network Configuration) Working Group"; contact "WG Web: WG List: @@ -29,25 +29,28 @@ module ietf-distributed-notif { Eric Voit "; - description "Defines augmentation for ietf-subscribed-notifications to - enable the distributed publication with single subscription. + enable the distributed publication with single subscription. + + 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 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). + All revisions of IETF and IANA published modules can be found + at the YANG Parameters registry + (https://www.iana.org/assignments/yang-parameters). - This version of this YANG module is part of RFC XXXX; see the - RFC itself for full legal notices."; + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; - revision 2024-04-21 { + revision 2025-04-12 { description "Initial version"; reference @@ -56,39 +59,36 @@ module ietf-distributed-notif { grouping message-publisher-id { description - "Provides a reusable leaf of te message-publisher-id."; - + "Provides a reusable leaf of the message-publisher-id."; 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."; + message (e.g., processor 1 on line card 1). This field + is used to notify the receiver which publisher process + published which message."; } } grouping message-publisher-ids { description "Provides a reusable leaf-list of message-publisher-id-list."; - - leaf-list message-publisher-ids { + 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."; + message (e.g., processor 1 on line card 1). This field + is used to notify the receiver which publisher processes + are going to publish."; } } augment "/sn:subscriptions/sn:subscription" { description "This augmentation allows the Message - Publisher ID to be exposed for a subscription."; - + Publisher ID to be exposed for a subscription."; uses message-publisher-ids; } @@ -96,7 +96,6 @@ module ietf-distributed-notif { description "This augmentation adds the Message Publisher ID to the subscription-started subscription change notifications."; - uses message-publisher-ids; } @@ -104,27 +103,27 @@ module ietf-distributed-notif { description "This augmentation adds the Message Publisher ID to the subscription-modified subscription change notifications."; - 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 - push-update notification."; + push-update notification."; uses message-publisher-id; } augment "/yp:push-change-update" { description "This augmentation adds the Message Publisher ID in the - push-change-update notification."; - uses message-publisher-id; + push-change-update notification."; + uses message-publisher-id; } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2025-02-25.yang b/experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2025-06-06.yang similarity index 93% rename from experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2025-02-25.yang rename to experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2025-06-06.yang index a941c0f88..5ce78b383 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2025-02-25.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-layer0-types@2025-06-06.yang @@ -59,7 +59,7 @@ module ietf-layer0-types { // replace the revision date with the module publication date // the format is (year-month-day) - revision 2025-02-25 { + revision 2025-06-06 { description "To be updated"; reference @@ -936,7 +936,7 @@ module ietf-layer0-types { description "Valid only when grid type is DWDM."; } - type l0-types:dwdm-n; + type dwdm-n; description "The given value 'N' is used to determine the nominal central frequency."; @@ -952,7 +952,7 @@ module ietf-layer0-types { description "Valid only when grid type is CWDM."; } - type l0-types:cwdm-n; + type cwdm-n; description "The given value 'N' is used to determine the nominal central wavelength."; @@ -962,7 +962,7 @@ module ietf-layer0-types { } } case flexi-grid { - uses l0-types:flexi-grid-label-start-end; + uses flexi-grid-label-start-end; } } reference @@ -1038,7 +1038,7 @@ module ietf-layer0-types { "single or super channel"; case single { leaf dwdm-n { - type l0-types:dwdm-n; + type dwdm-n; description "The given value 'N' is used to determine the nominal central frequency."; @@ -1046,7 +1046,7 @@ module ietf-layer0-types { } case multi { leaf-list subcarrier-dwdm-n { - type l0-types:dwdm-n; + type dwdm-n; min-elements 2; description "The given values 'N' are used to determine the @@ -1061,7 +1061,7 @@ module ietf-layer0-types { } case cwdm { leaf cwdm-n { - type l0-types:cwdm-n; + type cwdm-n; description "The given value 'N' is used to determine the nominal central wavelength."; @@ -1071,7 +1071,7 @@ module ietf-layer0-types { } } case flexi-grid { - uses l0-types:flexi-grid-label-hop; + uses flexi-grid-label-hop; } } reference @@ -1100,9 +1100,9 @@ module ietf-layer0-types { "Minimum space between slot widths. Default is 12.500 GHz."; reference - "RFC 7698: Framework and Requirements for GMPLS-Based - Control of Flexi-Grid Dense Wavelength Division - Multiplexing (DWDM) Networks"; + "RFC 8363: GMPLS OSPF-TE Extensions in Support of Flexi- + Grid Dense Wavelength Division Multiplexing (DWDM) + Networks"; } leaf min-slot-width-factor { type uint16 { @@ -1163,7 +1163,7 @@ module ietf-layer0-types { description "Valid only when grid type is DWDM."; } - type l0-types:dwdm-n; + type dwdm-n; description "The central frequency of DWDM."; reference @@ -1178,7 +1178,7 @@ module ietf-layer0-types { description "Valid only when grid type is CWDM."; } - type l0-types:cwdm-n; + type cwdm-n; description "Channel wavelength computing input."; reference @@ -1204,7 +1204,7 @@ module ietf-layer0-types { "single or super channel"; case single { leaf dwdm-n { - type l0-types:dwdm-n; + type dwdm-n; description "The given value 'N' is used to determine the nominal central frequency."; @@ -1212,7 +1212,7 @@ module ietf-layer0-types { } case super { leaf-list subcarrier-dwdm-n { - type l0-types:dwdm-n; + type dwdm-n; description "The given values 'N' are used to determine the nominal central frequency for each subcarrier @@ -1226,7 +1226,7 @@ module ietf-layer0-types { } case cwdm { leaf cwdm-n { - type l0-types:cwdm-n; + type cwdm-n; description "The given value 'N' is used to determine the nominal central wavelength."; @@ -1321,7 +1321,7 @@ module ietf-layer0-types { "The flexi-grid label-start or label-end used to specify flexi-grid label range."; leaf flexi-n { - type l0-types:flexi-n; + type flexi-n; description "The given value 'N' is used to determine the nominal central frequency. @@ -1345,7 +1345,7 @@ module ietf-layer0-types { "Flexi-grid frequency slot grouping."; uses flexi-grid-label-start-end; leaf flexi-m { - type l0-types:flexi-m; + type flexi-m; description "The given value 'M' is used to determine the slot width."; } @@ -1510,72 +1510,24 @@ module ietf-layer0-types { } } - grouping transceiver-mode { - description - "This grouping is intended to be used for reporting the - information of a transceiver's mode. - - The attributes for the explicit mode shall be augmented when - used with either: - - the proper leafrefs, when explicit mode templates are used; - or, - - the explicit-mode grouping, when explicit mode templates - are not used. - - The compatible-modes container shall be augmented with the - proper leafrefs when used: see for example the - transceiver-capabilities grouping below."; - choice mode { - config false; - mandatory true; - 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 organizational-mode { - container organizational-mode { - config false; - description - "The set of attributes for an organizational mode"; - uses organizational-mode; - uses common-standard-organizational-mode; - uses common-all-modes; - } // container organizational-mode - } - case explicit-mode { - container explicit-mode { - config false; - description - "The set of attributes for an explicit mode"; - // uses explicit-mode; - uses common-all-modes; - container compatible-modes { - description - "Container for all the standard and organizational - modes supported by the transceiver's explicit - mode."; - } // container compatible-modes - } // container explicit-mode - } // end of case explicit-mode - } // end of choice - } - grouping transceiver-capabilities { description "This grouping is intended to be used for reporting the capabilities of a transceiver. - The attributes for the explicit mode shall be augmented when - used with either: - - the proper leafrefs, when explicit mode templates are used; - or, - - the explicit-mode grouping, when explicit mode templates - are not used."; + When this grouping is used, the explicit-mode container shall + be augmented with a leafref to an explicit mode template with + the proper XPath which depends from where this grouping is + actually used. + See for example the ietf-optical-impairment-topology YANG + module in RFC YYYY."; + reference + "RFC YYYY: A YANG Data Model for Optical Impairment-aware + Topology."; +// RFC Ed.: replace YYYY with actual RFC number and remove +// this note after draft-ietf-ccamp-optical-impairment-topology-yang +// is published as an RFC container supported-modes { presence "When present, it indicates that the modes supported by a @@ -1595,45 +1547,73 @@ module ietf-layer0-types { } description "ID for the supported transceiver's mode."; } - uses transceiver-mode { - augment "mode/explicit-mode/explicit-mode/" - + "compatible-modes" { - description - "Augments the compatible modes with the proper - leafrefs."; - leaf-list supported-application-codes { - type leafref { - path "../../../../supported-mode/mode-id"; - } - must "../../../../" - + "supported-mode[mode-id=current()]/" - + "standard-mode" { - description - "The pointer is only for application codes - supported by transceiver."; - } - description - "List of pointers to the application codes - supported by the transceiver's explicit mode."; - } - leaf-list supported-organizational-modes { - type leafref { - path "../../../../supported-mode/mode-id"; - } - must "../../../../" - + "supported-mode[mode-id=current()]/" - + "organizational-mode" { - description - "The pointer is only for organizational modes - supported by transceiver."; - } + choice mode { + config false; + mandatory true; + 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 organizational-mode { + container organizational-mode { + config false; description - "List of pointers to the organizational modes - supported by the transceiver's explicit mode."; - } + "The set of attributes for an organizational mode"; + uses organizational-mode; + uses common-standard-organizational-mode; + uses common-all-modes; + } // container organizational-mode } - } - } // list supported-modes + case explicit-mode { + container explicit-mode { + config false; + description + "The set of attributes for an explicit mode."; + uses common-all-modes; + container compatible-modes { + description + "Container for all the standard and organizational + modes supported by the transceiver's explicit + mode."; + leaf-list supported-application-code { + type leafref { + path "../../../../supported-mode/mode-id"; + } + must "../../../../" + + "supported-mode[mode-id=current()]/" + + "standard-mode" { + description + "The pointer is only for application codes + supported by transceiver."; + } + description + "List of pointers to the application codes + supported by the transceiver's explicit mode."; + } + leaf-list supported-organizational-mode { + type leafref { + path "../../../../supported-mode/mode-id"; + } + must "../../../../" + + "supported-mode[mode-id=current()]/" + + "organizational-mode" { + description + "The pointer is only for organizational modes + supported by transceiver."; + } + description + "List of pointers to the organizational modes + supported by the transceiver's explicit mode."; + } + } // container compatible-modes + } // container explicit-mode + } // end of case explicit-mode + } // end of choice + } // list supported-mode } // container supported-modes } // grouping transceiver-capabilities @@ -2185,7 +2165,7 @@ module ietf-layer0-types { } } // grouping for read-only transceiver attributes out of mode - grouping l0-tunnel-attributes { + grouping tunnel-attributes { description "Parameters for Layer0 (WSON or Flexi-Grid) Tunnels."; @@ -2225,7 +2205,26 @@ module ietf-layer0-types { } } - grouping l0-path-constraints { + grouping frequency-range-with-identifier { + description + "This grouping extends the frequency-range defined in + ietf-layer0-types with an identifier, which used as a key when + it is needed to define different properties (e.g., optical + impairments) for different frequency ranges."; + leaf frequency-range-id { + type uint16; + description + "The identifier of the frequency range."; + } + container frequency-range { + description + "The frequency range for which these optical + impairments apply."; + uses frequency-range; + } + } + + grouping path-constraints { description "Common attribute for Layer 0 path constraints to be used by Layer 0 computation."; @@ -2241,7 +2240,7 @@ module ietf-layer0-types { } } - grouping l0-path-properties { + grouping path-properties { description "Common attribute for reporting the Layer 0 computed path properties."; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-sw-ext@2024-10-17.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-sw-ext@2025-06-10.yang similarity index 97% rename from experimental/ietf-extracted-YANG-modules/ietf-network-inventory-sw-ext@2024-10-17.yang rename to experimental/ietf-extracted-YANG-modules/ietf-network-inventory-sw-ext@2025-06-10.yang index c031b65a0..c16cd19ee 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-sw-ext@2024-10-17.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-network-inventory-sw-ext@2025-06-10.yang @@ -33,7 +33,7 @@ module ietf-network-inventory-sw-ext { "This YANG module defines a model for network inventory software extensions. - Copyright (c) 2024 IETF Trust and the persons + 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 @@ -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 2024-10-17 { + revision 2025-06-10 { description "Initial version"; reference @@ -67,7 +67,8 @@ module ietf-network-inventory-sw-ext { 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."; + server-based virtual machine (VM), or server-based + container."; } identity ne-software { @@ -125,6 +126,7 @@ module ietf-network-inventory-sw-ext { initializing hardware components and first stage boot loader."; } + identity boot-loader { base software-component; description diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2025-05-09.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2025-05-09.yang index 75ca46eb7..82b67a1ca 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2025-05-09.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2025-05-09.yang @@ -163,6 +163,7 @@ module ietf-network-slice-service { Area Networks---Amendment 4: Provider Bridges"; } + identity svlan-id { base attachment-circuit-tag-type; description @@ -509,48 +510,6 @@ module ietf-network-slice-service { other SLOs in the parent SLO-SLE policy still apply."; } - identity ns-computation-error-reason { - description - "Base identity for Network Slice (NS) computation error - reasons."; - } - - identity error-no-resource { - base ns-computation-error-reason; - description - "NS computation has failed because there is no available - resource in one or more domains, e.g., bandwidth, nodes, - are not available to meet the SLO/SLE requirements."; - } - - identity error-path-not-found { - base ns-computation-error-reason; - description - "NS computation has failed because there is no valid path - can be found to satisfy the requested SLO/SLE constraints or - path-constraints."; - } - - identity error-latency-constraint-violation { - base ns-computation-error-reason; - description - "NS computation failed as latency constraint violation."; - } - - identity error-topology-limitation { - base ns-computation-error-reason; - description - "NS computation failed as the network topology cannot support - the requested connectivity construct."; - } - - identity error-domain-specific-failure { - base ns-computation-error-reason; - description - "NS computation failed as a domain-specific issue prevents - the feasibility check from succeeding."; - } - /* Typedef */ typedef percentage { @@ -594,6 +553,7 @@ module ietf-network-slice-service { "This type is used by data models that need to reference Network Slice templates."; } + typedef slice-service-ref { type leafref { path @@ -1479,47 +1439,6 @@ module ietf-network-slice-service { topology."; uses nw:network-ref; } - container compute { - description - "Container for NS computation."; - leaf compute-only { - type empty; - description - "When present, this is a feasibility check. That is, no - resources are reserved in the network."; - } - leaf compute-status { - type ns-compute-status; - config false; - description - "The NS compute state."; - } - container error-info { - config false; - description - "Error information related to the NS."; - leaf error-description { - type string { - length "1..max"; - } - description - "Textual representation of the error occurred during - NS compute."; - } - leaf error-timestamp { - type yang:date-and-time; - description - "Timestamp of the attempt."; - } - leaf error-reason { - type identityref { - base ns-computation-error-reason; - } - description - "Reason for the NS computation error."; - } - } - } } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-platform-manifest@2025-02-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-platform-manifest@2025-02-21.yang index 069072f3c..b35422ae6 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-platform-manifest@2025-02-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-platform-manifest@2025-02-21.yang @@ -30,7 +30,7 @@ module ietf-platform-manifest { The data content of this model should not change except on upgrade or patching of the device. - Copyright (c) 2022 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 @@ -46,7 +46,7 @@ module ietf-platform-manifest { description "Initial revision"; reference - "RFC xxxx: A Data Manifest for Contextualized Telemetry Data"; + "RFC XXXX: A Data Manifest for Contextualized Telemetry Data"; } grouping platform-details { diff --git a/experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2024-02-20.yang b/experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2024-02-20.yang deleted file mode 100644 index d7501b764..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2024-02-20.yang +++ /dev/null @@ -1,320 +0,0 @@ -module ietf-telemetry-message { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:telemetry-message"; - prefix tm; - - import ietf-yang-types { - prefix yang; - } - import ietf-inet-types { - prefix inet; - } - import ietf-subscribed-notifications { - prefix sn; - reference - "RFC 8639: Subscription to YANG Notifications"; - } - - organization - "IETF Draft"; - contact - "Author: Ahmed Elhassany - <mailto:ahmed.elhassany@swisscom.com>"; - description - "This YANG modules defines a model for a telemetry collector to send - collected YANG data from the network. - - 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."; - - revision 2024-02-20 { - description - "Initial revision."; - reference - "RFC XXXX"; - } - - typedef telemetry-message-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 enumeration { - enum "netconf" { - description - "NETCONF RFC8640"; - } - enum "restconf" { - description - "RESTCONF RFC8650"; - } - enum "https" { - description - "HTTPS draft-ietf-netconf-https-notif"; - } - enum "udp-notif" { - description - "UDP draft-ietf-netconf-udp-notif"; - } - } - description - "Session protocol used to deliver the messaget to the collector"; - } - - grouping node-information { - description - "Idenitfy a network node by its hostname/IP Address and port number."; - leaf address { - type inet:host; - mandatory true; - description - "Node address"; - } - leaf port { - type inet:port-number; - mandatory true; - description - "Node port number"; - } - leaf platform-name { - type string; - description - "Model of the platform from which data is collected."; - } - leaf vendor { - type string; - description - "Organization that implements that platform."; - } - leaf vendor-pen { - type uint32; - description - "Vendor''s registered Private Enterprise Number as - described in RFC9371"; - } - leaf software-version { - type string; - description - "Name of the version of software. With respect to most network - device appliances, this will be the operating system version. - But for other YANG module implementation, this would be a - version of appliance software. Ultimately, this should - correspond to a version string that will be recognizable by - the consumers of the platform."; - } - leaf software-flavor { - type string; - description - "A variation of a specific version where YANG model support - may be different. Depending on the vendor, this could be a - license, additional software component, or a feature set."; - } - leaf os-version { - type string; - description - "Version of the operating system using this module. This is - primarily useful if the software implementing the module is - an application that requires a specific operating system - version."; - } - leaf os-type { - type string; - description - "Type of the operating system using this module. This is - primarily useful if the software implementing the module is - an application that requires a specific operating system - type."; - } - } - - container message { - config false; - leaf timestamp { - type yang:date-and-time; - mandatory true; - description - "Timestamp when the collector received the message from the network - element or an update or delete event is triggered"; - } - leaf session-protocol { - type telemetry-session-protocol-type; - mandatory true; - description - "Protocol used to send the message from network node to - the collector"; - } - container node { - description - "Address of network element sent the message"; - uses node-information; - } - container collector { - description - "Address of the telemetry collector"; - uses node-information; - } - container session-metadata { - leaf event-time { - type yang:date-and-time; - mandatory true; - description - "NETCONF eventTime. Redefined in here since NETCONF header is XML - not YANG"; - } - } - container metadata { - description - "Collector added metadata."; - list labels { - key "name"; - description - "arbiterary labels assinged by the collector"; - leaf name { - type string { - length "1..max"; - } - description - "label name"; - } - choice value { - mandatory true; - choice string-value { - leaf string-value { - type string; - } - } - choice anydata-value { - anydata anydata-value { - description - "anydata yang"; - } - } - } - } - } - anydata payload { - description - "message received from network element"; - } - } -} - - - - -
- Telemetry message YANG Module - -module ietf-yang-push-telemetry-message { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:yang-push-telemetry-message"; - prefix yptm; - - import ietf-subscribed-notifications { - prefix sn; - reference - "RFC 8639: Subscription to YANG Notifications"; - } - import ietf-telemetry-message { - prefix tm; - reference - "XXX"; - } - import ietf-yang-push-revision { - prefix ypr; - reference - "XXX"; - } - - organization - "IETF Draft"; - contact - "Author: Ahmed Elhassany - <mailto:ahmed.elhassany@swisscom.com>"; - description - "Augments the ietf-telemetry-message with YANG Push specific - fields. - - 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."; - - revision 2024-02-20 { - description - "Initial revision."; - reference - "RFC XXXX"; - } - - augment "/tm:message/tm:session-metadata" { - container yang-push-subscription { - config false; - leaf id { - type sn:subscription-id; - mandatory true; - description - "This references the affected subscription."; - } - 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 stream-filter { - key "name"; - description - "A list of preconfigured filters that can be applied to - subscriptions."; - leaf name { - type string; - description - "A name to differentiate between filters."; - } - uses sn:stream-filter-elements; - } - } - uses ypr:yang-push-module-version-list; - } - } -} - diff --git a/experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2025-04-17.yang b/experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2025-04-17.yang new file mode 100644 index 000000000..27b734898 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-telemetry-message@2025-04-17.yang @@ -0,0 +1,219 @@ +module ietf-telemetry-message { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-telemetry-message"; + prefix tm; + + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-inet-types { + prefix inet; + } + import ietf-platform-manifest { + prefix p-mf; + reference + "draft-ietf-opsawg-collected-data-manifest: A Data Manifest for + Contextualized Telemetry Data"; + } + + organization + "IETF Draft"; + contact + "Author: Ahmed Elhassany + + + Thomas Graf + "; + description + "This YANG modules defines a model for a telemetry collector to send + collected YANG data from the network. + + 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-17 { + 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 RPC as described in RFC 6241."; + reference + "RFC 6241: NETCONF RPC."; + } + + identity restconf { + base session-protocol; + description + "RESTCONF HTTP as described in RFC 8040."; + reference + "RFC 8040."; + } + + 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 + "Notification protocol used to deliver the notification to the + data collection."; + } + + container message { + config false; + description + "Telemetry message used in Data Mesh"; + leaf timestamp { + type yang:date-and-time; + mandatory true; + description + "Timestamp when the data collection collected the payload + from the network element or an update or delete event is + triggered."; + } + leaf session-protocol { + type telemetry-session-protocol-type; + mandatory true; + description + "Session protocol used to collect the payload of this message + from the network"; + } + container network-node-manifest { + description + "Address of network element from which the payload is + collected."; + uses p-mf:platform-details; + } + container data-collection-manifest { + description + "Address of the telemetry data collection."; + uses p-mf:platform-details; + } + container telemetry-message-metadata { + description + "Extensible message and protocol specific metadata"; + leaf event-time { + type yang:date-and-time; + description + "NETCONF eventTime. Redefined in here since NETCONF header is + XML not YANG."; + } + } + container data-collection-metadata { + description + "Metadata added by data collection."; + leaf remote-address { + type inet:host; + mandatory true; + description + "Network node IP address."; + } + leaf remote-port { + type inet:port-number; + description + "Network node transport port number."; + } + leaf local-address { + type inet:host; + description + "Data collection IP address."; + } + leaf local-port { + type inet:port-number; + description + "Data collection transport port number."; + } + list labels { + key "name"; + description + "Arbiterary labels assinged by the data collection."; + leaf name { + type string { + length "1..max"; + } + description + "Label name."; + } + choice value { + mandatory true; + description + "label value"; + choice string-choice { + description + "String value"; + leaf string-value { + type string; + description + "String value"; + } + } + choice anydata-choice { + description + "YANG anydata value"; + anydata anydata-values { + description + "anydata yang"; + } + } + } + } + } + anydata payload { + description + "Message or notification received from network element."; + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2025-03-25.yang b/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2025-06-09.yang similarity index 92% rename from experimental/ietf-extracted-YANG-modules/ietf-vrrp@2025-03-25.yang rename to experimental/ietf-extracted-YANG-modules/ietf-vrrp@2025-06-09.yang index 1c2647297..54219866b 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2025-03-25.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2025-06-09.yang @@ -5,15 +5,23 @@ module ietf-vrrp { import ietf-inet-types { prefix inet; + reference + "RFC 6991: Common YANG Data Types, Section 4"; } import ietf-yang-types { prefix yang; + reference + "RFC 6991: Common YANG Data Types, Section 3"; } 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 @@ -50,32 +58,42 @@ module ietf-vrrp { 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). 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. - revision 2025-03-25 { + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + + revision 2025-06-09 { description - "Initial revision."; + "This revision includes the following changes: + - Update some identifiers and descriptions to conform + to the changes in RFC 9586 + - Add a new effective-priority leaf + - Update some reference statements"; reference "RFC XXXX: A YANG Data Model for the Virtual Router Redundancy - Protocol (VRRP) - RFC 3768: Virtual Router Redundancy Protocol (VRRP) - RFC 9568: Virtual Router Redundancy Protocol (VRRP) - Version 3 for IPv4 and IPv6 - RFC 6527: Definitions of Managed Objects for the Virtual - Router Redundancy Protocol Version 3 (VRRPv3)"; + Protocol (VRRP)"; + } + revision 2018-03-13 { + description + "Initial revision."; + reference + "RFC 8347: A YANG Data Model for the Virtual Router Redundancy + Protocol (VRRP)"; } /* * Features */ + feature validate-interval-errors { description "This feature indicates that the system validates that the @@ -117,13 +135,17 @@ module ietf-vrrp { } description "Indicates why the virtual router has transitioned to - active state."; + active state. + + The identifier of this typedef is changed to to reflect + the updated terminology used in RFC 9568."; } // new-active-reason-type /* * Identities */ /* vrrp-event-type identity and its derivatives. */ + identity vrrp-event-type { description "Indicates the type of a VRRP protocol event."; @@ -158,7 +180,10 @@ module ietf-vrrp { base vrrp-event-type; description "Indicates that the current active virtual router has not sent - an advertisement within the limit of active-down-interval."; + an advertisement within the limit of active-down-interval. + + The identity is changed to to reflect the updated terminology + used in RFC 9568."; } identity vrrp-event-interface-up { @@ -213,7 +238,10 @@ module ietf-vrrp { identity vrrp-event-lower-priority-active { base vrrp-event-type; description - "Indicates that there is a lower-priority VRRP active router."; + "Indicates that there is a lower-priority VRRP active router. + + The identity is changed to to reflect the updated terminology + used in RFC 9568."; } identity vrrp-event-owner-preempt { @@ -317,7 +345,10 @@ module ietf-vrrp { description "Indicates that the virtual router is forwarding packets for IP addresses that are associated with - this virtual router."; + this virtual router. + + The identity is changed to to reflect the updated terminology + used in RFC 9568."; } /* vrrp-version identity and its derivatives. */ @@ -412,6 +443,7 @@ module ietf-vrrp { is 'false'. Deployments that rely on, for example, pinging the address owner's IPvX address may wish to configure accept-mode to 'true'. + Note: IPv6 Neighbor Solicitations and Neighbor Advertisements MUST NOT be dropped when accept-mode is 'false'."; @@ -554,7 +586,7 @@ module ietf-vrrp { "An IPv4 address associated with a virtual router."; reference "RFC 9568: Virtual Router Redundancy Protocol (VRRP) - Version 3 for IPv4 and IPv6. Section 1.2"; + Version 3 for IPv4 and IPv6, Section 1.3"; } } // virtual-ipv4-address } // virtual-ipv4-addresses @@ -571,7 +603,7 @@ module ietf-vrrp { units "centiseconds"; default "100"; description - "Configures the interval that VRRPv3 advertisements + "Includes the interval that VRRPv3 advertisements are sent from the specified interface."; } container track { @@ -667,7 +699,7 @@ module ietf-vrrp { "An IPv6 address associated with a virtual router."; reference "RFC 9568: Virtual Router Redundancy Protocol (VRRP) - Version 3 for IPv4 and IPv6. Section 1.3"; + Version 3 for IPv4 and IPv6, Section 1.4"; } } // virtual-ipv6-address } // virtual-ipv6-addresses @@ -719,7 +751,10 @@ module ietf-vrrp { config false; description "Time interval for the backup virtual router to declare - 'active down'."; + 'active down'. + + The identifier of this leaf is changed to to reflect + the updated terminology used in RFC 9568."; } leaf skew-time { type uint32; @@ -742,7 +777,10 @@ module ietf-vrrp { config false; description "Indicates why the virtual router has transitioned to - active state."; + active state. + + The identifier of this leaf is changed to to reflect + the updated terminology used in RFC 9568."; } container statistics { config false; @@ -762,7 +800,10 @@ module ietf-vrrp { type yang:counter32; description "The total number of times that this virtual router's - state has transitioned to 'Active'."; + state has transitioned to 'Active'. + + The identifier of this leaf is changed to to reflect + the updated terminology used in RFC 9568."; } leaf advertisement-rcvd { type yang:counter64; @@ -883,7 +924,7 @@ module ietf-vrrp { not equal to 255."; reference "RFC 9568: Virtual Router Redundancy Protocol (VRRP) - Version 3 for IPv4 and IPv6. + Version 3 for IPv4 and IPv6, Sections 5.1.1.3 and 5.1.2.3"; } } // statistics @@ -892,6 +933,7 @@ module ietf-vrrp { /* * Configuration data and operational state data nodes */ + augment "/if:interfaces/if:interface/ip:ipv4" { description "Augments IPv4 interface."; @@ -940,22 +982,32 @@ module ietf-vrrp { /* * Notifications */ + notification vrrp-new-active-event { description "Notification event for the election of a new VRRP - active router."; + active router. + + The identifier of the notification is changed to + reflect the updated terminology used in RFC 9568."; leaf active-ip-address { type inet:ip-address; mandatory true; description - "IPv4 or IPv6 address of the new VRRP active router."; + "IPv4 or IPv6 address of the new VRRP active router. + + The identifier of the leaf is changed to + reflect the updated terminology used in RFC 9568."; } leaf new-active-reason { type new-active-reason-type; mandatory true; description "Indicates why the virtual router has transitioned to - active state."; + active state. + + The identifier of the leaf is changed to + reflect the updated terminology used in RFC 9568."; } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-push-telemetry-message@2025-04-17.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-telemetry-message@2025-04-17.yang new file mode 100644 index 000000000..2ae26ee06 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-push-telemetry-message@2025-04-17.yang @@ -0,0 +1,276 @@ +module ietf-yang-push-telemetry-message { + yang-version 1.1; + namespace + "urn:ietf:params:xml:ns:yang:ietf-yang-push-telemetry-message"; + prefix yptm; + + import ietf-subscribed-notifications { + prefix sn; + reference + "RFC 8639: Subscription to YANG Notifications"; + } + import ietf-telemetry-message { + prefix tm; + reference + "XXX"; + } + import ietf-yang-push { + prefix yp; + reference + "RFC 8641: Subscription to YANG Notifications for Datastore + Updates"; + } + 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-revisions { + prefix rev; + reference + "RFC YYYY: draft-ietf-netmod-yang-module-versioning-11, + Updated YANG Module Revision Handling"; + } + import ietf-yang-semver { + prefix ysver; + reference + "RFC ZZZZ: draft-ietf-netmod-yang-semver-15, YANG Semantic + Versioning"; + } + + organization + "IETF Draft"; + contact + "Author: Ahmed Elhassany + + + Thomas Graf + "; + description + "Augments the ietf-telemetry-message with YANG Push specific + fields. + + 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-04-17 { + description + "Initial revision."; + reference + "RFC XXXX"; + } + + augment "/tm:message/tm:telemetry-message-metadata" { + description + "Augments telemetry-message-metadata with YANG-Push specific + metadata"; + container yang-push-subscription { + config false; + description + "YANG-Push specific metadata"; + leaf id { + type sn:subscription-id; + description + "This references the affected subscription."; + } + choice filter-spec { + description + "The content filter specification for this request."; + anydata subtree-filter { + description + "Event stream evaluation criteria or the parameter + identifies the port of the target datastore encoded in the + syntax of a subtree filter as defined in RFC 6241, + Section 6."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 6."; + } + leaf xpath-filter { + type yang:xpath1.0; + description + "Event stream evaluation criteria or porting of the target + datastore encoded in the syntax of an XPath 1.0 + expression"; + 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"; + } + } + choice 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."; + case stream { + leaf stream { + type string; + description + "Indicates the event stream to be considered for this + subscription."; + } + } + case datastore { + leaf datastore { + type identityref { + base ds:datastore; + } + description + "Datastore from which to retrieve data."; + } + } + } + leaf transport { + type sn:transport; + description + "For a configured subscription, this leaf specifies the + transport used to deliver messages destined for all + receivers of that subscription."; + } + leaf encoding { + type sn:encoding; + 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."; + } + leaf purpose { + type string; + description + "Open text allowing a configuring entity to embed the + originator or other specifics of this subscription."; + } + choice update-trigger { + description + "Defines necessary conditions for sending an event record to + the subscriber."; + case periodic { + container periodic { + presence "indicates a periodic subscription"; + description + "The publisher is requested to notify periodically the + current values of the datastore as defined by the + selection filter."; + leaf period { + type yp:centiseconds; + description + "Duration of time which should occur between periodic + push updates, in one hundredths of a second."; + } + 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 whole multiple interval + from the anchor time. For example, for an anchor time + 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 this subscription is active."; + } + } + } + case on-change { + container on-change { + 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"; + description + "Specifies the minimum interval between the assembly of + successive update records for a single receiver of a + subscription. Whenever subscribed objects change, and + a dampening period interval (which may be zero) has + elapsed since the previous update record creation for + a receiver, then any subscribed objects and properties + which have changed since the previous update record + will have their current values marshalled and placed + into a new update record."; + } + leaf sync-on-start { + type boolean; + default "true"; + description + "When this object is set to false, it restricts an + on-change subscription from sending push-update + notifications. When false, 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 true (default behavior), in order to facilitate a + receiver's synchronization, a full update is sent when + the subscription starts using a push-update + notification. After that, push-change-update + notifications are exclusively sent unless the publisher + chooses to resync the subscription via a new + push-update notification."; + } + } + } + } + list module-version { + key "module-name"; + config false; + description + "List of yang-push-module-version grouping. The revision is + not configurable."; + leaf module-name { + type yang:yang-identifier; + config false; + description + "This references the YANG module name."; + } + leaf revision { + type rev:revision-date; + config false; + description + "This references the YANG module revision of the sent + notification message."; + } + leaf revision-label { + type ysver:version; + description + "This references the YANG module semantic version of the + sent notification message."; + } + } + leaf yang-library-content-id { + type string; + config false; + description + "Contains the YANG library content identifier RFC 8525 + information."; + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yp-current-period@2025-02-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-yp-current-period@2025-02-21.yang index 401dc656e..4b8735238 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yp-current-period@2025-02-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yp-current-period@2025-02-21.yang @@ -7,12 +7,13 @@ module ietf-yp-current-period { prefix sn; reference "RFC 8639: A YANG Data Model for Subscriptions to - Event Notifications"; + Event Notifications"; } import ietf-yang-push { prefix yp; - // RFC Ed.: remove revision-date, needed here because last - // version on the server is not the ratified one + // RFC Ed.: remove revision-date, needed here for datatracker + // to properly validate the module, because the latest version + // on the server is not the ratified one and validation fails. revision-date 2019-09-09; reference "RFC 8641: Subscriptions to YANG Datastores."; @@ -50,7 +51,7 @@ module ietf-yp-current-period { description "Initial revision"; reference - "RFC xxxx: A Data Manifest for Contextualized Telemetry Data"; + "RFC XXXX: A Data Manifest for Contextualized Telemetry Data"; } augment "/sn:subscriptions/sn:subscription" { @@ -59,6 +60,7 @@ module ietf-yp-current-period { leaf current-period { when '../yp:periodic'; type yp:centiseconds; + config false; description "Period during two successive data collections, in the current state. Might differ from the configured period diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yp-transport-capabilities@2025-06-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-yp-transport-capabilities@2025-06-07.yang new file mode 100644 index 000000000..a7e2b0620 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-yp-transport-capabilities@2025-06-07.yang @@ -0,0 +1,141 @@ +module ietf-yp-transport-capabilities { + yang-version 1.1; + namespace + "urn:ietf:params:xml:ns:yang:ietf-yp-transport-capabilities"; + prefix ntc; + + 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-tls-common { + prefix tlscmn; + reference + "RFC 9645: YANG Groupings for TLS Clients and TLS Servers"; + } + + organization + "IETF NETCONF (Network Configuration) Working Group"; + contact + "WG Web: + WG List: + + Authors: Qin Wu + + Qiufang Ma + + Alex Huang Feng + + Thomas Graf + "; + description + "This module defines an extension to YANG-Push + Notification Capabilities model that provides additional + transport specific capabilities for YANG notifications. + + 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 + (http://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-07 { + description + "Initial revision."; + reference + "RFC XXXX: YANG Notifications Transport Capabilities"; + } + + identity security-protocol { + description + "Identity for security protocols."; + } + + identity dtls12 { + base security-protocol; + description + "Indicates DTLS Protocol Version 1.2. DTLS 1.2 is obsolete, + and thus it is NOT RECOMMENDED to enable this feature."; + reference + "RFC 6347: The Datagram Transport Layer Security (DTLS) + Protocol Version 1.2"; + } + + identity dtls13 { + base security-protocol; + description + "Indicates DTLS Protocol Version 1.3."; + reference + "RFC 9147: The Datagram Transport Layer Security (DTLS) + Protocol Version 1.3"; + } + + augment "/sysc:system-capabilities" + + "/notc:subscription-capabilities" { + description + "Adds system level capabilities."; + container transport-capabilities { + 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 sn:transport; + } + description + "Indicates supported transport protocol for YANG-Push."; + } + leaf-list security-protocol { + type union { + type identityref { + base security-protocol; + } + type identityref { + base tlscmn:tls-version-base; + } + } + description + "Indicates transport security protocol."; + } + leaf-list encoding-format { + type identityref { + base sn:encoding; + } + description + "Indicates supported encoding formats."; + } + } + } + } +} diff --git a/standard/iana/yang-parameters.xml b/standard/iana/yang-parameters.xml index 7a893768a..9b1c77116 100644 --- a/standard/iana/yang-parameters.xml +++ b/standard/iana/yang-parameters.xml @@ -4,7 +4,7 @@ YANG Parameters 2010-06-10 - 2025-05-20 + 2025-06-11 YANG Module Names @@ -54,7 +54,7 @@ FTP (ftp://ftp.iana.org/assignments/yang-parameters/). Registration procedure: Expert Review, as described in . Expert(s): Kent Watsen. - + iana-dns-class-rr-type Y iana-dns-class-rr-type@2025-05-20.yang @@ -65,9 +65,9 @@ FTP (ftp://ftp.iana.org/assignments/yang-parameters/). Classes and types of DNS resource records must not be directly added to the "iana-dns-class-rr-type" YANG module. They must instead be added to the "DNS CLASSes" and "Resource Record (RR) - TYPEs" registries, respectively. + TYPEs" registries , respectively. - + iana-dots-signal-channel Y iana-dots-signal-channel@2021-09-02.yang @@ -79,7 +79,7 @@ FTP (ftp://ftp.iana.org/assignments/yang-parameters/). must not be directly added to the iana-dots-signal-channel YANG module. They must instead be respectively added to the "DOTS Status Codes", "DOTS Conflict Status Codes", "DOTS Conflict Cause -Codes", and "DOTS Attack Status Codes" registries. +Codes", and "DOTS Attack Status Codes" registries . iana-hardware @@ -147,7 +147,7 @@ at . Note: the initial module file will be posted upon 's publication as an RFC. - + iana-msd-types Y iana-msd-types@2025-01-10.yang @@ -155,7 +155,9 @@ at . iana-msd-types - + New values must not be directly added to the "iana-msd-types" YANG module. + They must instead be added to the "IGP MSD-Types" registry in the + "Interior Gateway Protocol (IGP) Parameters" registry group . iana-pseudowire-types